<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>41153</bug_id>
          
          <creation_ts>2010-06-24 05:28:30 -0700</creation_ts>
          <short_desc>rebaseline-chromium-webkit-tests should add or remove files to local git repository</short_desc>
          <delta_ts>2010-06-29 01:23:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
    
    <cc>tkent</cc>
    
    <cc>tony</cc>
    
    <cc>victorw</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>242465</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-24 05:28:30 -0700</bug_when>
    <thetext>rebaseline-chromium-webkit-tests add/delete files to svn repository (using svn add/delete).
But files are left untracked when on git repository.
They should be added to the repository as with svn.
to force downloading the zip.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242815</commentid>
    <comment_count>1</comment_count>
      <attachid>59730</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-24 21:29:31 -0700</bug_when>
    <thetext>Created attachment 59730
patch v0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242816</commentid>
    <comment_count>2</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-24 21:31:31 -0700</bug_when>
    <thetext>How to test:
- download layout_test_results.zip
- add or remove some file to the zip file, them make the zip http-reachable
- run rebaseline-chromium-webkit-test with &quot;-U&quot; option pontint the zip url.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242817</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-24 21:31:39 -0700</bug_when>
    <thetext>Attachment 59730 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKitTools/Scripts/webkitpy/common/checkout/scm.py:190:  deprecated form of raising exception  [pep8/W602] [5]
WebKitTools/Scripts/webkitpy/common/checkout/scm.py:353:  at least two spaces before inline comment  [pep8/E261] [5]
Total errors found: 2 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242821</commentid>
    <comment_count>4</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-06-24 22:04:10 -0700</bug_when>
    <thetext>I think Victor is the original author of this file.  Maybe he can do an initial review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242822</commentid>
    <comment_count>5</comment_count>
      <attachid>59732</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-24 22:05:31 -0700</bug_when>
    <thetext>Created attachment 59732
patch v1; fix style violation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242844</commentid>
    <comment_count>6</comment_count>
      <attachid>59732</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-06-24 22:51:42 -0700</bug_when>
    <thetext>Comment on attachment 59732
patch v1; fix style violation

Looks great. Putting r- for some nicpicks.

WebKitTools/Scripts/webkitpy/common/checkout/scm.py: 
 +  
I think we need this blank line:

&quot;Separate top-level function and class definitions with two blank lines.&quot;

http://www.python.org/dev/peps/pep-0008/


WebKitTools/Scripts/webkitpy/common/checkout/scm.py:349
 +      def _add_directories_recursively(self, path):
I would say _add_parent_directories or something. &quot;recursively&quot; sounds you will add a directory and its descendants.

WebKitTools/Scripts/webkitpy/common/checkout/scm.py:352
 +          parent, here = os.path.split(path)
Cannot we just use os.path.dirname here?

WebKitTools/Scripts/webkitpy/common/checkout/scm.py:349
 +      def _add_directories_recursively(self, path):
Also, I would write a docstring here.

WebKitTools/Scripts/webkitpy/common/checkout/scm.py:458
 +      def pset(self, pname, pvalue, path):
I would use propset as the name of this function.

WebKitTools/Scripts/webkitpy/common/checkout/scm.py:462
 +      def pget(self, pname, path):
propget

WebKitTools/ChangeLog:11
 +          - add &quot;-U&quot; and &quot;-q&quot; options to rebaseline_chromium_webkit_tests.py
This can be done in a separate change, but it&apos;s OK for now. Please consider splitting your patch next time.

WebKitTools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:477
 +                      svn_error = True
This variable should be renamed to scm_error?

WebKitTools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:478
 +                  if not svn_error and isinstance(self._scm, scm.SVN):
I will comment on this separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242846</commentid>
    <comment_count>7</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-06-24 22:56:41 -0700</bug_when>
    <thetext>I think we might ask Eric to do a quick review before we land this so I&apos;m adding Eric into the CC list.

Eric, could you tell us what happens if we land PNG without setting svn:mime-type=image/png ? Are there any post-commit hook so we don&apos;t need to mind them? If not, are these info important? I think I landed some PNGs without setting this property and no one complained so far.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242847</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-24 23:05:07 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; I think we might ask Eric to do a quick review before we land this so I&apos;m adding Eric into the CC list.
&gt; 
&gt; Eric, could you tell us what happens if we land PNG without setting svn:mime-type=image/png ? Are there any post-commit hook so we don&apos;t need to mind them? If not, are these info important? I think I landed some PNGs without setting this property and no one complained so far.

git handles mime types automagically.  No need to set svn:mime-type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242849</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-24 23:07:24 -0700</bug_when>
    <thetext>SVN also handles mime types automagically assuming your system is configured correctly. :)  Which it should be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242851</commentid>
    <comment_count>10</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-06-24 23:09:26 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; SVN also handles mime types automagically assuming your system is configured correctly. :)  Which it should be.

Thanks a lot for your clarification! Morita-san, maybe we can just remove the propset/get ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242852</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-24 23:13:41 -0700</bug_when>
    <thetext>You can see http://svnbook.red-bean.com/en/1.5/svn.advanced.props.html#svn.advanced.props.auto for more information on SVN.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243049</commentid>
    <comment_count>12</comment_count>
      <attachid>59732</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-06-25 09:37:27 -0700</bug_when>
    <thetext>Comment on attachment 59732
patch v1; fix style violation

WebKitTools/Scripts/webkitpy/common/checkout/scm.py:190
 +          raise NotImplementedError(&quot;subclasses must implement&quot;)
Changed to &quot;raise NotImplementedError, &quot;subclasses must implement&quot;&quot; to be consistent with others.

WebKitTools/Scripts/webkitpy/common/checkout/scm.py:352
 +          parent, here = os.path.split(path)
os.path.dirname(path)?

WebKitTools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:475
 +                  if 0 != self._scm.add(expected_fullpath, return_exit_code=True):
What if the file is already under  SVN and here try to add it again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243538</commentid>
    <comment_count>13</comment_count>
      <attachid>59869</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-27 20:04:05 -0700</bug_when>
    <thetext>Created attachment 59869
patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243539</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-27 20:06:30 -0700</bug_when>
    <thetext>Attachment 59869 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKitTools/Scripts/webkitpy/common/checkout/scm.py:191:  deprecated form of raising exception  [pep8/W602] [5]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243541</commentid>
    <comment_count>15</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-27 20:08:41 -0700</bug_when>
    <thetext>Hamaji-san, Eric, Victor, thank you for taking a look!
I updated the patch.

&gt; WebKitTools/Scripts/webkitpy/common/checkout/scm.py: 
&gt;  +  
&gt; I think we need this blank line:
Fixed.

&gt; WebKitTools/Scripts/webkitpy/common/checkout/scm.py:349
&gt;  +      def _add_directories_recursively(self, path):
&gt; I would say _add_parent_directories or something. &quot;recursively&quot; sounds you will add a directory and its descendants.
Fixed.

&gt; 
&gt; WebKitTools/Scripts/webkitpy/common/checkout/scm.py:352
&gt;  +          parent, here = os.path.split(path)
&gt; Cannot we just use os.path.dirname here?
Fixed.

&gt; 
&gt; WebKitTools/Scripts/webkitpy/common/checkout/scm.py:349
&gt;  +      def _add_directories_recursively(self, path):
&gt; Also, I would write a docstring here.
This line is gone ...

&gt; 
&gt; WebKitTools/Scripts/webkitpy/common/checkout/scm.py:458
&gt;  +      def pset(self, pname, pvalue, path):
&gt; I would use propset as the name of this function.
Fixed.

&gt; 
&gt; WebKitTools/Scripts/webkitpy/common/checkout/scm.py:462
&gt;  +      def pget(self, pname, path):
&gt; propget
Fixed.

&gt; 
&gt; WebKitTools/ChangeLog:11
&gt;  +          - add &quot;-U&quot; and &quot;-q&quot; options to rebaseline_chromium_webkit_tests.py
&gt; This can be done in a separate change, but it&apos;s OK for now. Please consider splitting your patch next time.
Ah, I agree. I&apos;m sorry for mixing these up.

&gt; 
&gt; WebKitTools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:477
&gt;  +                      svn_error = True
&gt; This variable should be renamed to scm_error?
Fixed.

&gt; 
&gt; WebKitTools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:478
&gt;  +                  if not svn_error and isinstance(self._scm, scm.SVN):
&gt; I will comment on this separately.
This line is gone.

(In reply to comment #12)
&gt; (From update of attachment 59732 [details])
&gt; WebKitTools/Scripts/webkitpy/common/checkout/scm.py:190
&gt;  +          raise NotImplementedError(&quot;subclasses must implement&quot;)
&gt; Changed to &quot;raise NotImplementedError, &quot;subclasses must implement&quot;&quot; to be consistent with others.
&gt; 
Fixed. This will be complained by ews bot, though.

&gt; WebKitTools/Scripts/webkitpy/common/checkout/scm.py:352
&gt;  +          parent, here = os.path.split(path)
&gt; os.path.dirname(path)?
Fixed.

&gt; 
&gt; WebKitTools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:475
&gt;  +                  if 0 != self._scm.add(expected_fullpath, return_exit_code=True):
&gt; What if the file is already under  SVN and here try to add it again?
It&apos; for git. We need to re-add updated files for git.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243542</commentid>
    <comment_count>16</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-27 20:10:07 -0700</bug_when>
    <thetext>&gt; Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
&gt; WebKitTools/Scripts/webkitpy/common/checkout/scm.py:191:  deprecated form of raising exception  [pep8/W602] [5]
&gt; Total errors found: 1 in 4 files
This is intentional. I prefer consistency around the neighboring code than PEP in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243548</commentid>
    <comment_count>17</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-06-27 21:11:21 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
&gt; &gt; WebKitTools/Scripts/webkitpy/common/checkout/scm.py:191:  deprecated form of raising exception  [pep8/W602] [5]
&gt; &gt; Total errors found: 1 in 4 files
&gt; This is intentional. I prefer consistency around the neighboring code than PEP in this case.

I&apos;d just rewrite all lines which use this style in this module.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243550</commentid>
    <comment_count>18</comment_count>
      <attachid>59869</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-27 21:16:22 -0700</bug_when>
    <thetext>Comment on attachment 59869
patch v2

WebKitTools/Scripts/webkitpy/common/checkout/scm.py:528
 +          # path is assumed to be cwd relative?
This is a general problem with this class and part of why we recently add a &quot;run&quot; method which knows how to set the CWD to the webkit root when necessary.

WebKitTools/Scripts/webkitpy/common/checkout/scm.py:575
 +          return self.run_status_and_extract_filenames(self.status_command(), self._status_regexp(&quot;D&quot;))
We should probably add a new abstraction for this soon.  self._files_matching_status(&quot;D&quot;) or similar.  Not needed for this patch.

WebKitTools/Scripts/webkitpy/common/checkout/scm_unittest.py:391
 +      def _shared_test_add_recursively(self):
Eventually I need to figure out a better way to do these &quot;shared&quot; tests.

WebKitTools/Scripts/webkitpy/common/checkout/scm_unittest.py:650
 +          self.scm.propset(&quot;svn:mime-type&quot;, &quot;application/octet-stream&quot;, filepath)
The test would be slightly better if it used an impossible mimetype, so that we knew there was no way SVN would autodetect to that particular type.

WebKitTools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:485
 +                      _log.warn(&apos;  Failed to add baselines to SVN.&apos;)
Not quite true anymore. :)

This is a FANTASTIC step forward.  Thank you for doing this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243551</commentid>
    <comment_count>19</comment_count>
      <attachid>59869</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-27 21:18:44 -0700</bug_when>
    <thetext>Comment on attachment 59869
patch v2

WebKitTools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:910
 +                               help=&apos;Supress result HTML viewing&apos;)
Typo &quot;Suppress&quot; (at least in american english).

WebKitTools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:909
 +                               default=False,
Generally I don&apos;t bother to list default=False, since default=None automatically and I intentionally avoid treating None different from False in my checks (although I don&apos;t know if there is consensus in that approach).

WebKitTools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:923
 +                               default=(&apos;&apos;),
Leaving this out, so that it&apos;s None seems better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243552</commentid>
    <comment_count>20</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-06-27 21:20:58 -0700</bug_when>
    <thetext>WebKitTools/Scripts/webkitpy/common/checkout/scm.py:34
 +  import shutil
Do we need this?

I&apos;d r+ this after a few days if no one objects... Ah, Eric has already done :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243553</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-27 21:24:42 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; &gt; Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
&gt; &gt; &gt; WebKitTools/Scripts/webkitpy/common/checkout/scm.py:191:  deprecated form of raising exception  [pep8/W602] [5]
&gt; &gt; &gt; Total errors found: 1 in 4 files
&gt; &gt; This is intentional. I prefer consistency around the neighboring code than PEP in this case.
&gt; 
&gt; I&apos;d just rewrite all lines which use this style in this module.

I totally agree.  I think that should be a separate patch though.  rs=me to do so, you don&apos;t even need to post it.

Caution, the reason why those are listed that way is to support pylint (which I&apos;m not sure anyone has run in a while).  I expect pylint can parse other syntaxes, but it will get confused if we move them all into a &quot;throw notimplemented&quot; call for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243559</commentid>
    <comment_count>22</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-27 22:16:13 -0700</bug_when>
    <thetext>Committed r61976: &lt;http://trac.webkit.org/changeset/61976&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243560</commentid>
    <comment_count>23</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-27 22:17:45 -0700</bug_when>
    <thetext>Hi Eric, Hamaji-san, thank you for reviewing!
I landed the patch, and I&apos;ll fix the exception syntax and will tackle Bug 38775 soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243567</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-27 23:15:03 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/61977 might have broken GTK Linux 64-bit Debug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243583</commentid>
    <comment_count>25</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-28 00:19:25 -0700</bug_when>
    <thetext>I presume you ran &quot;test-webkitpy --all&quot;

The scm unit tests are off by default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244062</commentid>
    <comment_count>26</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-06-28 21:03:18 -0700</bug_when>
    <thetext>Would you update https://trac.webkit.org/wiki/Rebaseline please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244154</commentid>
    <comment_count>27</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-29 01:23:48 -0700</bug_when>
    <thetext>&gt; Would you update https://trac.webkit.org/wiki/Rebaseline please?
Done. Thank you for pointing this out.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59730</attachid>
            <date>2010-06-24 21:29:31 -0700</date>
            <delta_ts>2010-06-24 22:05:25 -0700</delta_ts>
            <desc>patch v0</desc>
            <filename>bug-41153-20100625132929.patch</filename>
            <type>text/plain</type>
            <size>16224</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAzMjUwZTVmM2ZkNjc5NzBmNzBjODZhNmYzNWZkYTE3MzcyMGY4YzM0Li5jNzMyMzhk
MTRmYWNiODAzYThiNmJiMWFhZjAwMTNhOWRjNGI4MTkwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTAtMDYtMjQgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcmViYXNlbGluZS1jaHJv
bWl1bS13ZWJraXQtdGVzdHMgc2hvdWxkIGFkZCBvciByZW1vdmUgZmlsZXMgdG8gbG9jYWwgZ2l0
IHJlcG9zaXRvcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQxMTUzCisKKyAgICAgICAgLSBBZGRlZCBTQ00uYWRkKCkgYW5kIFNDTS5yZW1vdmUoKQor
ICAgICAgICAtIFJlcGxhY2VkICJzdm4gYWRkIiBhbmQgInN2biByZW1vdmUiCisgICAgICAgICAg
cmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHk6IGluIHdpdGggU0NNIG1ldGhvZCBl
cXVpdmFsZW50cy4KKyAgICAgICAgLSBhZGQgIi1VIiBhbmQgIi1xIiBvcHRpb25zIHRvIHJlYmFz
ZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CisgICAgICAgICAgZm9yIGRlYnVnZ2luZyBw
dXJwb3NlLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2Nt
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbV91bml0
dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2Vs
aW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weToKKwogMjAxMC0wNi0yMyAgS2V2aW4gT2xsaXZp
ZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KIAogICAgICAgICBbd3hdIEJ1aWxkIGZpeCwg
YWRkaW5nIG5ldyBMYXlvdXRUZXN0Q29udHJvbGxlciBtZXRob2RzIGFuZCBlbmFibGluZyBTVkdf
Rk9SRUlHTl9PQkpFQ1QuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9zY20ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9zY20ucHkKaW5kZXggZmM0YzZmZGNlN2U1Y2QyN2U1NDlkMDFiNjkzMGQ4
MWM4ZTZiMTNjNS4uODE3ZDQ5NGNlM2E3MWMxYmQ3ZDM4Y2I3MzU4NmE0YzJlNjRiNDA2OSAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2Nt
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3Nj
bS5weQpAQCAtMzEsMTIgKzMxLDEyIEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHJlCitpbXBvcnQg
c2h1dGlsCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4
ZWN1dGl2ZSwgcnVuX2NvbW1hbmQsIFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0udXNlciBpbXBvcnQgVXNlcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJl
Y2F0ZWRfbG9nZ2luZyBpbXBvcnQgZXJyb3IsIGxvZwogCi0KIGRlZiBkZXRlY3Rfc2NtX3N5c3Rl
bShwYXRoKToKICAgICBhYnNvbHV0ZV9wYXRoID0gb3MucGF0aC5hYnNwYXRoKHBhdGgpCiAKQEAg
LTE4Niw3ICsxODYsMTAgQEAgY2xhc3MgU0NNOgogICAgIGRlZiBzdGF0dXNfY29tbWFuZChzZWxm
KToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBp
bXBsZW1lbnQiCiAKLSAgICBkZWYgYWRkKHNlbGYsIHBhdGgpOgorICAgIGRlZiBhZGQoc2VsZiwg
cGF0aCwgcmV0dXJuX2V4aXRfY29kZT1GYWxzZSk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVu
dGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IgorCisgICAgZGVmIGRlbGV0ZShz
ZWxmLCBwYXRoKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNz
ZXMgbXVzdCBpbXBsZW1lbnQiCiAKICAgICBkZWYgY2hhbmdlZF9maWxlcyhzZWxmLCBnaXRfY29t
bWl0PU5vbmUsIHNxdWFzaD1Ob25lKToKQEAgLTM0Myw5ICszNDYsMjIgQEAgY2xhc3MgU1ZOKFND
TSk6CiAgICAgICAgIGZpZWxkX2NvdW50ID0gNiBpZiBzZWxmLnN2bl92ZXJzaW9uKCkgPiAiMS42
IiBlbHNlIDUKICAgICAgICAgcmV0dXJuICJeKD9QPHN0YXR1cz5bJXNdKS57JXN9ICg/UDxmaWxl
bmFtZT4uKykkIiAlIChleHBlY3RlZF90eXBlcywgZmllbGRfY291bnQpCiAKLSAgICBkZWYgYWRk
KHNlbGYsIHBhdGgpOgorICAgIGRlZiBfYWRkX2RpcmVjdG9yaWVzX3JlY3Vyc2l2ZWx5KHNlbGYs
IHBhdGgpOgorICAgICAgICBpZiBzZWxmLmluX3dvcmtpbmdfZGlyZWN0b3J5KHBhdGgpOgorICAg
ICAgICAgICAgcmV0dXJuCisgICAgICAgIHBhcmVudCwgaGVyZSA9IG9zLnBhdGguc3BsaXQocGF0
aCkKKyAgICAgICAgaWYgcGFyZW50ICE9IHBhdGg6ICMgV2UgaGF2ZSBwYXJlbnQgZGlyZWN0cnkg
LSBlbnN1cmUgaXQgYWRkZWQuCisgICAgICAgICAgICBzZWxmLl9hZGRfZGlyZWN0b3JpZXNfcmVj
dXJzaXZlbHkocGFyZW50KQorICAgICAgICBzZWxmLmFkZChwYXRoKQorCisgICAgZGVmIGFkZChz
ZWxmLCBwYXRoLCByZXR1cm5fZXhpdF9jb2RlPUZhbHNlKToKKyAgICAgICAgc2VsZi5fYWRkX2Rp
cmVjdG9yaWVzX3JlY3Vyc2l2ZWx5KG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgocGF0
aCkpKQogICAgICAgICAjIHBhdGggaXMgYXNzdW1lZCB0byBiZSBjd2QgcmVsYXRpdmU/Ci0gICAg
ICAgIHNlbGYucnVuKFsic3ZuIiwgImFkZCIsIHBhdGhdKQorICAgICAgICByZXR1cm4gc2VsZi5y
dW4oWyJzdm4iLCAiYWRkIiwgcGF0aF0sIHJldHVybl9leGl0X2NvZGU9cmV0dXJuX2V4aXRfY29k
ZSkKKworICAgIGRlZiBkZWxldGUoc2VsZiwgcGF0aCk6CisgICAgICAgIHBhcmVudCwgYmFzZSA9
IG9zLnBhdGguc3BsaXQocGF0aCkKKyAgICAgICAgcmV0dXJuIHNlbGYucnVuKFsic3ZuIiwgImRl
bGV0ZSIsICItLWZvcmNlIiwgYmFzZV0sIGN3ZD1wYXJlbnQpCiAKICAgICBkZWYgY2hhbmdlZF9m
aWxlcyhzZWxmLCBnaXRfY29tbWl0PU5vbmUsIHNxdWFzaD1Ob25lKToKICAgICAgICAgcmV0dXJu
IHNlbGYucnVuX3N0YXR1c19hbmRfZXh0cmFjdF9maWxlbmFtZXMoc2VsZi5zdGF0dXNfY29tbWFu
ZCgpLCBzZWxmLl9zdGF0dXNfcmVnZXhwKCJBQ0RNUiIpKQpAQCAtMzYyLDYgKzM3OCw5IEBAIGNs
YXNzIFNWTihTQ00pOgogICAgIGRlZiBhZGRlZF9maWxlcyhzZWxmKToKICAgICAgICAgcmV0dXJu
IHNlbGYucnVuX3N0YXR1c19hbmRfZXh0cmFjdF9maWxlbmFtZXMoc2VsZi5zdGF0dXNfY29tbWFu
ZCgpLCBzZWxmLl9zdGF0dXNfcmVnZXhwKCJBIikpCiAKKyAgICBkZWYgZGVsZXRlZF9maWxlcyhz
ZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYucnVuX3N0YXR1c19hbmRfZXh0cmFjdF9maWxlbmFt
ZXMoc2VsZi5zdGF0dXNfY29tbWFuZCgpLCBzZWxmLl9zdGF0dXNfcmVnZXhwKCJEIikpCisKICAg
ICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIHN1cHBvcnRzX2xvY2FsX2NvbW1pdHMoKToKICAgICAg
ICAgcmV0dXJuIEZhbHNlCkBAIC00MzUsNiArNDU0LDE0IEBAIGNsYXNzIFNWTihTQ00pOgogICAg
ICAgICAjIGh0dHA6Ly9zdm5ib29rLnJlZC1iZWFuLmNvbS9lbi8xLjAvY2gwM3MwMy5odG1sCiAg
ICAgICAgIHJldHVybiBzZWxmLnN2bl9jb21taXRfbG9nKCdCQVNFJykKIAorICAgIGRlZiBwc2V0
KHNlbGYsIHBuYW1lLCBwdmFsdWUsIHBhdGgpOgorICAgICAgICBkaXIsIGJhc2UgPSBvcy5wYXRo
LnNwbGl0KHBhdGgpCisgICAgICAgIHJldHVybiBzZWxmLnJ1bihbJ3N2bicsICdwc2V0JywgcG5h
bWUsIHB2YWx1ZSwgYmFzZV0sIGN3ZD1kaXIpCisKKyAgICBkZWYgcGdldChzZWxmLCBwbmFtZSwg
cGF0aCk6CisgICAgICAgIGRpciwgYmFzZSA9IG9zLnBhdGguc3BsaXQocGF0aCkKKyAgICAgICAg
cmV0dXJuIHNlbGYucnVuKFsnc3ZuJywgJ3BnZXQnLCBwbmFtZSwgYmFzZV0sIGN3ZD1kaXIpLmVu
Y29kZSgndXRmLTgnKS5yc3RyaXAoIlxuIikKKwogIyBBbGwgZ2l0LXNwZWNpZmljIGxvZ2ljIHNo
b3VsZCBnbyBoZXJlLgogY2xhc3MgR2l0KFNDTSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGN3
ZCk6CkBAIC00OTQsOSArNTIxLDEzIEBAIGNsYXNzIEdpdChTQ00pOgogICAgIGRlZiBfc3RhdHVz
X3JlZ2V4cChzZWxmLCBleHBlY3RlZF90eXBlcyk6CiAgICAgICAgIHJldHVybiAnXig/UDxzdGF0
dXM+WyVzXSlcdCg/UDxmaWxlbmFtZT4uKykkJyAlIGV4cGVjdGVkX3R5cGVzCiAKLSAgICBkZWYg
YWRkKHNlbGYsIHBhdGgpOgorICAgIGRlZiBhZGQoc2VsZiwgcGF0aCwgcmV0dXJuX2V4aXRfY29k
ZT1GYWxzZSk6CiAgICAgICAgICMgcGF0aCBpcyBhc3N1bWVkIHRvIGJlIGN3ZCByZWxhdGl2ZT8K
LSAgICAgICAgc2VsZi5ydW4oWyJnaXQiLCAiYWRkIiwgcGF0aF0pCisgICAgICAgIHJldHVybiBz
ZWxmLnJ1bihbImdpdCIsICJhZGQiLCBwYXRoXSwgcmV0dXJuX2V4aXRfY29kZT1yZXR1cm5fZXhp
dF9jb2RlKQorCisgICAgZGVmIGRlbGV0ZShzZWxmLCBwYXRoKToKKyAgICAgICAgIyBwYXRoIGlz
IGFzc3VtZWQgdG8gYmUgY3dkIHJlbGF0aXZlPworICAgICAgICByZXR1cm4gc2VsZi5ydW4oWyJn
aXQiLCAicm0iLCAiLWYiLCBwYXRoXSkKIAogICAgIGRlZiBfbWVyZ2VfYmFzZShzZWxmLCBnaXRf
Y29tbWl0LCBzcXVhc2gpOgogICAgICAgICBpZiBnaXRfY29tbWl0OgpAQCAtNTM3LDYgKzU2OCw5
IEBAIGNsYXNzIEdpdChTQ00pOgogICAgIGRlZiBhZGRlZF9maWxlcyhzZWxmKToKICAgICAgICAg
cmV0dXJuIHNlbGYucnVuX3N0YXR1c19hbmRfZXh0cmFjdF9maWxlbmFtZXMoc2VsZi5zdGF0dXNf
Y29tbWFuZCgpLCBzZWxmLl9zdGF0dXNfcmVnZXhwKCJBIikpCiAKKyAgICBkZWYgZGVsZXRlZF9m
aWxlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYucnVuX3N0YXR1c19hbmRfZXh0cmFjdF9m
aWxlbmFtZXMoc2VsZi5zdGF0dXNfY29tbWFuZCgpLCBzZWxmLl9zdGF0dXNfcmVnZXhwKCJEIikp
CisKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIHN1cHBvcnRzX2xvY2FsX2NvbW1pdHMoKToK
ICAgICAgICAgcmV0dXJuIFRydWUKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbV91bml0dGVzdC5weQppbmRleCAzNmExZDFj
ZmRiOTQ0NGM3MTU0OTg2YzQ1MmNjM2Q5MTRmNGMxYTU2Li40ZjNlZDkyNGIxYWY3MzM2YjdhMmY4
MDZkN2UzNTBlMjA5ZjMyNDc3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9jaGVja291dC9zY21fdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtX3VuaXR0ZXN0LnB5CkBAIC0zODgsNiAr
Mzg4LDExIEBAIE9jbVlleCZyZUQkO3NPOCpGOUwpQgogICAgICAgICAjIENhbm5vdCBkZWxldGUg
YWdhaW4uCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBzZWxmLmNoZWNr
b3V0LmFwcGx5X3BhdGNoLCBzZWxmLl9jcmVhdGVfcGF0Y2goZ2l0X2JpbmFyeV9kZWxldGlvbikp
CiAKKyAgICBkZWYgX3NoYXJlZF90ZXN0X2FkZF9yZWN1cnNpdmVseShzZWxmKToKKyAgICAgICAg
b3MubWtkaXIoImFkZGVkX2RpciIpCisgICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCJh
ZGRlZF9kaXIvYWRkZWRfZmlsZSIsICJuZXcgc3R1ZmYiKQorICAgICAgICBzZWxmLnNjbS5hZGQo
ImFkZGVkX2Rpci9hZGRlZF9maWxlIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJhZGRlZF9k
aXIvYWRkZWRfZmlsZSIgaW4gc2VsZi5zY20uYWRkZWRfZmlsZXMoKSkKIAogY2xhc3MgU1ZOVGVz
dChTQ01UZXN0KToKIApAQCAtNjMyLDYgKzYzNywxOCBAQCBRMWRUQngwQUFBQjQyaXRnNEdsZ1lK
akd3TUREeU9ETXhNRHczNEdCZ1FFQUpQUURKQT09CiAgICAgZGVmIHRlc3RfY29tbWl0dGVyX2Vt
YWlsX2Zvcl9yZXZpc2lvbihzZWxmKToKICAgICAgICAgc2VsZi5fc2hhcmVkX3Rlc3RfY29tbWl0
dGVyX2VtYWlsX2Zvcl9yZXZpc2lvbigpCiAKKyAgICBkZWYgdGVzdF9hZGRfcmVjdXJzaXZlbHko
c2VsZik6CisgICAgICAgIHNlbGYuX3NoYXJlZF90ZXN0X2FkZF9yZWN1cnNpdmVseSgpCisKKyAg
ICBkZWYgdGVzdF9kZWxldGUoc2VsZik6CisgICAgICAgIG9zLmNoZGlyKHNlbGYuc3ZuX2NoZWNr
b3V0X3BhdGgpCisgICAgICAgIHNlbGYuc2NtLmRlbGV0ZSgidGVzdF9maWxlIikKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKCJ0ZXN0X2ZpbGUiIGluIHNlbGYuc2NtLmRlbGV0ZWRfZmlsZXMoKSkK
KworICAgIGRlZiB0ZXN0X3BzZXRfcGdldChzZWxmKToKKyAgICAgICAgZmlsZXBhdGggPSBvcy5w
YXRoLmpvaW4oc2VsZi5zdm5fY2hlY2tvdXRfcGF0aCwgInRlc3RfZmlsZSIpCisgICAgICAgIHNl
bGYuc2NtLnBzZXQoInN2bjptaW1lLXR5cGUiLCAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwg
ZmlsZXBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImFwcGxpY2F0aW9uL29jdGV0LXN0
cmVhbSIsIHNlbGYuc2NtLnBnZXQoInN2bjptaW1lLXR5cGUiLCBmaWxlcGF0aCkpCiAKIGNsYXNz
IEdpdFRlc3QoU0NNVGVzdCk6CiAKQEAgLTEwOTgsNiArMTExNSwxNCBAQCBjbGFzcyBHaXRTVk5U
ZXN0KFNDTVRlc3QpOgogICAgIGRlZiB0ZXN0X2NvbW1pdHRlcl9lbWFpbF9mb3JfcmV2aXNpb24o
c2VsZik6CiAgICAgICAgIHNlbGYuX3NoYXJlZF90ZXN0X2NvbW1pdHRlcl9lbWFpbF9mb3JfcmV2
aXNpb24oKQogCisgICAgZGVmIHRlc3RfYWRkX3JlY3Vyc2l2ZWx5KHNlbGYpOgorICAgICAgICBz
ZWxmLl9zaGFyZWRfdGVzdF9hZGRfcmVjdXJzaXZlbHkoKQorCisgICAgZGVmIHRlc3RfZGVsZXRl
KHNlbGYpOgorICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCisgICAgICAgIHNlbGYu
c2NtLmRlbGV0ZSgndGVzdF9maWxlX2NvbW1pdDEnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUo
InRlc3RfZmlsZV9jb21taXQxIiBpbiBzZWxmLnNjbS5kZWxldGVkX2ZpbGVzKCkpCisKIAogaWYg
X19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hy
b21pdW1fd2Via2l0X3Rlc3RzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKaW5kZXggZjExYjhh
OThmYmEwNTRiZGY1NzkwOGM4NDk2MzBmMTdlNjBhNTU5NS4uMmRmMmM2OGQ1NWVkODA5NmZhYTA2
YjdhMjI0OGFmNjhjNmI2NjVlMCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9j
aHJvbWl1bV93ZWJraXRfdGVzdHMucHkKQEAgLTU5LDYgKzU5LDggQEAgaW1wb3J0IHdlYmJyb3dz
ZXIKIGltcG9ydCB6aXBmaWxlCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRp
dmUgaW1wb3J0IHJ1bl9jb21tYW5kCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20g
aW1wb3J0IGRldGVjdF9zY21fc3lzdGVtCitpbXBvcnQgd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0
LnNjbSBhcyBzY20KIAogaW1wb3J0IHBvcnQKIGZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRl
c3RfZXhwZWN0YXRpb25zCkBAIC02OCw5ICs3MCw2IEBAIGZyb20gdGVzdF90eXBlcyBpbXBvcnQg
dGV4dF9kaWZmCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0
cy4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgInJlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0
X3Rlc3RzIikKIAotIyBSZXBvc2l0b3J5IHR5cGUgY29uc3RhbnRzLgotUkVQT19TVk4sIFJFUE9f
VU5LTk9XTiA9IHJhbmdlKDIpCi0KIEJBU0VMSU5FX1NVRkZJWEVTID0gWycudHh0JywgJy5wbmcn
LCAnLmNoZWNrc3VtJ10KIFJFQkFTRUxJTkVfUExBVEZPUk1fT1JERVIgPSBbJ21hYycsICd3aW4n
LCAnd2luLXhwJywgJ3dpbi12aXN0YScsICdsaW51eCddCiBBUkNISVZFX0RJUl9OQU1FX0RJQ1Qg
PSB7J3dpbic6ICd3ZWJraXQtcmVsJywKQEAgLTI0MSw4ICsyNDAsNyBAQCBjbGFzcyBSZWJhc2Vs
aW5lcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9wbGF0Zm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZhbHNlKQotCi0gICAgICAgIHNlbGYuX3JlcG9fdHlwZSA9IHNlbGYuX2dldF9y
ZXBvX3R5cGUoKQorICAgICAgICBzZWxmLl9zY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShvcy5nZXRj
d2QoKSkKIAogICAgIGRlZiBydW4oc2VsZiwgYmFja3VwKToKICAgICAgICAgIiIiUnVuIHJlYmFz
ZWxpbmUgcHJvY2Vzcy4iIiIKQEAgLTI4NSwxNSArMjgzLDYgQEAgY2xhc3MgUmViYXNlbGluZXIo
b2JqZWN0KToKICAgICBkZWYgZ2V0X3JlYmFzZWxpbmluZ190ZXN0cyhzZWxmKToKICAgICAgICAg
cmV0dXJuIHNlbGYuX3JlYmFzZWxpbmluZ190ZXN0cwogCi0gICAgIyBGSVhNRTogQ2FsbGVycyBz
aG91bGQgdXNlIHNjbS5weSBpbnN0ZWFkLgotICAgIGRlZiBfZ2V0X3JlcG9fdHlwZShzZWxmKToK
LSAgICAgICAgIiIiR2V0IHRoZSByZXBvc2l0b3J5IHR5cGUgdGhhdCBjbGllbnQgaXMgdXNpbmcu
IiIiCi0gICAgICAgIHJldHVybl9jb2RlID0gcnVuX2NvbW1hbmQoWydzdm4nLCAnaW5mbyddLCBy
ZXR1cm5fZXhpdF9jb2RlPVRydWUpCi0gICAgICAgIGlmIHJldHVybl9jb2RlID09IDA6Ci0gICAg
ICAgICAgICByZXR1cm4gUkVQT19TVk4KLQotICAgICAgICByZXR1cm4gUkVQT19VTktOT1dOCi0K
ICAgICBkZWYgX2NvbXBpbGVfcmViYXNlbGluaW5nX3Rlc3RzKHNlbGYpOgogICAgICAgICAiIiJD
b21waWxlIGxpc3Qgb2YgdGVzdHMgdGhhdCBuZWVkIHJlYmFzZWxpbmluZyBmb3IgdGhlIHBsYXRm
b3JtLgogCkBAIC0zNzEsNiArMzYwLDkgQEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToKICAg
ICAgICAgICBOb25lIG9uIGZhaWx1cmUKICAgICAgICAgIiIiCiAKKyAgICAgICAgaWYgc2VsZi5f
b3B0aW9ucy5mb3JjZV9hcmNoaXZlX3VybDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9vcHRp
b25zLmZvcmNlX2FyY2hpdmVfdXJsCisKICAgICAgICAgZGlyX25hbWUgPSBzZWxmLl9nZXRfYXJj
aGl2ZV9kaXJfbmFtZShzZWxmLl9wbGF0Zm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLndlYmtpdF9jYW5hcnkpCiAgICAgICAg
IGlmIG5vdCBkaXJfbmFtZToKQEAgLTQ4MCw4ICs0NzIsMTIgQEAgY2xhc3MgUmViYXNlbGluZXIo
b2JqZWN0KToKIAogICAgICAgICAgICAgICAgIHNodXRpbC5tb3ZlKHRlbXBfbmFtZSwgZXhwZWN0
ZWRfZnVsbHBhdGgpCiAKLSAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fc3ZuX2FkZChleHBl
Y3RlZF9mdWxscGF0aCk6CisgICAgICAgICAgICAgICAgaWYgMCAhPSBzZWxmLl9zY20uYWRkKGV4
cGVjdGVkX2Z1bGxwYXRoLCByZXR1cm5fZXhpdF9jb2RlPVRydWUpOgorICAgICAgICAgICAgICAg
ICAgICAjIEZJWE1FOiBwcmludCBkZXRhaWxlZCBkaWFnbm9zZSBtZXNzYWdlcwogICAgICAgICAg
ICAgICAgICAgICBzdm5fZXJyb3IgPSBUcnVlCisgICAgICAgICAgICAgICAgaWYgbm90IHN2bl9l
cnJvciBhbmQgaXNpbnN0YW5jZShzZWxmLl9zY20sIHNjbS5TVk4pOgorICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9zdm5fcHJvcF9zZXQoZXhwZWN0ZWRfZnVsbHBhdGgpCisKICAgICAgICAgICAg
ICAgICBlbGlmIHN1ZmZpeCAhPSAnLmNoZWNrc3VtJzoKICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fY3JlYXRlX2h0bWxfYmFzZWxpbmVfZmlsZXMoZXhwZWN0ZWRfZnVsbHBhdGgpCiAKQEAgLTU3
MiwxNSArNTY4LDcgQEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToKIAogICAgICAgICBpZiBu
b3QgZmlsZW5hbWUgb3Igbm90IG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lKToKICAgICAgICAgICAg
IHJldHVybgotCi0gICAgICAgIGlmIHNlbGYuX3JlcG9fdHlwZSA9PSBSRVBPX1NWTjoKLSAgICAg
ICAgICAgIHBhcmVudF9kaXIsIGJhc2VuYW1lID0gb3MucGF0aC5zcGxpdChmaWxlbmFtZSkKLSAg
ICAgICAgICAgIG9yaWdpbmFsX2RpciA9IG9zLmdldGN3ZCgpCi0gICAgICAgICAgICBvcy5jaGRp
cihwYXJlbnRfZGlyKQotICAgICAgICAgICAgcnVuX3NoZWxsKFsnc3ZuJywgJ2RlbGV0ZScsICct
LWZvcmNlJywgYmFzZW5hbWVdLCBGYWxzZSkKLSAgICAgICAgICAgIG9zLmNoZGlyKG9yaWdpbmFs
X2RpcikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9zLnJlbW92ZShmaWxlbmFtZSkKKyAg
ICAgICAgc2VsZi5fc2NtLmRlbGV0ZShmaWxlbmFtZSkKIAogICAgIGRlZiBfdXBkYXRlX3JlYmFz
ZWxpbmVkX3Rlc3RzX2luX2ZpbGUoc2VsZiwgYmFja3VwKToKICAgICAgICAgIiIiVXBkYXRlIHRo
ZSByZWJhc2VsaW5lZCB0ZXN0cyBpbiB0ZXN0IGV4cGVjdGF0aW9ucyBmaWxlLgpAQCAtNjA5LDY0
ICs1OTcsMTAgQEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToKICAgICAgICAgICAgICMgT3Ig
aXMgbmV3X2V4cGVjdGF0aW9ucyBhbHdheXMgYSBieXRlIGFycmF5PwogICAgICAgICAgICAgd2l0
aCBvcGVuKHBhdGgsICJ3IikgYXMgZmlsZToKICAgICAgICAgICAgICAgICBmaWxlLndyaXRlKG5l
d19leHBlY3RhdGlvbnMpCisgICAgICAgICAgICBzZWxmLl9zY20uYWRkKHBhdGgpCiAgICAgICAg
IGVsc2U6CiAgICAgICAgICAgICBfbG9nLmluZm8oJ05vIHRlc3Qgd2FzIHJlYmFzZWxpbmVkIHNv
IG5vdGhpbmcgdG8gcmVtb3ZlLicpCiAKLSAgICAjIEZJWE1FOiBDYWxsZXJzIHNob3VsZCBtb3Zl
IHRvIFNDTS5hZGQgaW5zdGVhZC4KLSAgICBkZWYgX3N2bl9hZGQoc2VsZiwgZmlsZW5hbWUpOgot
ICAgICAgICAiIiJBZGQgdGhlIGZpbGUgdG8gU1ZOIHJlcG9zaXRvcnkuCi0KLSAgICAgICAgQXJn
czoKLSAgICAgICAgICBmaWxlbmFtZTogZnVsbCBwYXRoIG9mIHRoZSBmaWxlIHRvIGFkZC4KLQot
ICAgICAgICBSZXR1cm5zOgotICAgICAgICAgIFRydWUgaWYgdGhlIGZpbGUgYWxyZWFkeSBleGlz
dHMgaW4gU1ZOIG9yIGlzIHN1Y2Vzc2Z1bGx5IGFkZGVkCi0gICAgICAgICAgICAgICB0byBTVk4u
Ci0gICAgICAgICAgRmFsc2Ugb3RoZXJ3aXNlLgotICAgICAgICAiIiIKLQotICAgICAgICBpZiBu
b3QgZmlsZW5hbWU6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICBwYXJlbnRf
ZGlyLCBiYXNlbmFtZSA9IG9zLnBhdGguc3BsaXQoZmlsZW5hbWUpCi0gICAgICAgIGlmIHNlbGYu
X3JlcG9fdHlwZSAhPSBSRVBPX1NWTiBvciBwYXJlbnRfZGlyID09IGZpbGVuYW1lOgotICAgICAg
ICAgICAgX2xvZy5pbmZvKCJObyBzdm4gY2hlY2tvdXQgZm91bmQsIHNraXAgc3ZuIGFkZC4iKQot
ICAgICAgICAgICAgcmV0dXJuIFRydWUKLQotICAgICAgICBvcmlnaW5hbF9kaXIgPSBvcy5nZXRj
d2QoKQotICAgICAgICBvcy5jaGRpcihwYXJlbnRfZGlyKQotICAgICAgICBzdGF0dXNfb3V0cHV0
ID0gcnVuX3NoZWxsKFsnc3ZuJywgJ3N0YXR1cycsIGJhc2VuYW1lXSwgRmFsc2UpCi0gICAgICAg
IG9zLmNoZGlyKG9yaWdpbmFsX2RpcikKLSAgICAgICAgb3V0cHV0ID0gc3RhdHVzX291dHB1dC51
cHBlcigpCi0gICAgICAgIGlmIG91dHB1dC5zdGFydHN3aXRoKCdBJykgb3Igb3V0cHV0LnN0YXJ0
c3dpdGgoJ00nKToKLSAgICAgICAgICAgIF9sb2cuaW5mbygnICBGaWxlIGFscmVhZHkgYWRkZWQg
dG8gU1ZOOiAiJXMiJywgZmlsZW5hbWUpCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAg
ICAgIGlmIG91dHB1dC5maW5kKCdJUyBOT1QgQSBXT1JLSU5HIENPUFknKSA+PSAwOgotICAgICAg
ICAgICAgX2xvZy5pbmZvKCcgIEZpbGUgaXMgbm90IGEgd29ya2luZyBjb3B5LCBhZGQgaXRzIHBh
cmVudDogIiVzIicsCi0gICAgICAgICAgICAgICAgICAgICAgcGFyZW50X2RpcikKLSAgICAgICAg
ICAgIHJldHVybiBzZWxmLl9zdm5fYWRkKHBhcmVudF9kaXIpCi0KLSAgICAgICAgb3MuY2hkaXIo
cGFyZW50X2RpcikKLSAgICAgICAgYWRkX291dHB1dCA9IHJ1bl9zaGVsbChbJ3N2bicsICdhZGQn
LCBiYXNlbmFtZV0sIFRydWUpCi0gICAgICAgIG9zLmNoZGlyKG9yaWdpbmFsX2RpcikKLSAgICAg
ICAgb3V0cHV0ID0gYWRkX291dHB1dC51cHBlcigpLnJzdHJpcCgpCi0gICAgICAgIGlmIG91dHB1
dC5zdGFydHN3aXRoKCdBJykgYW5kIG91dHB1dC5maW5kKGJhc2VuYW1lLnVwcGVyKCkpID49IDA6
Ci0gICAgICAgICAgICBfbG9nLmluZm8oJyAgQWRkZWQgbmV3IGZpbGU6ICIlcyInLCBmaWxlbmFt
ZSkKLSAgICAgICAgICAgIHNlbGYuX3N2bl9wcm9wX3NldChmaWxlbmFtZSkKLSAgICAgICAgICAg
IHJldHVybiBUcnVlCi0KLSAgICAgICAgaWYgKG5vdCBzdGF0dXNfb3V0cHV0KSBhbmQgKGFkZF9v
dXRwdXQudXBwZXIoKS5maW5kKAotICAgICAgICAgICAgJ0FMUkVBRFkgVU5ERVIgVkVSU0lPTiBD
T05UUk9MJykgPj0gMCk6Ci0gICAgICAgICAgICBfbG9nLmluZm8oJyAgRmlsZSBhbHJlYWR5IHVu
ZGVyIFNWTiBhbmQgaGFzIG5vIGNoYW5nZTogIiVzIicsCi0gICAgICAgICAgICAgICAgICAgICAg
ZmlsZW5hbWUpCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgICAgIF9sb2cud2Fybign
ICBGYWlsZWQgdG8gYWRkIGZpbGUgdG8gU1ZOOiAiJXMiJywgZmlsZW5hbWUpCi0gICAgICAgIF9s
b2cud2FybignICBTdm4gc3RhdHVzIG91dHB1dDogIiVzIicsIHN0YXR1c19vdXRwdXQpCi0gICAg
ICAgIF9sb2cud2FybignICBTdm4gYWRkIG91dHB1dDogIiVzIicsIGFkZF9vdXRwdXQpCi0gICAg
ICAgIHJldHVybiBGYWxzZQotCiAgICAgZGVmIF9zdm5fcHJvcF9zZXQoc2VsZiwgZmlsZW5hbWUp
OgogICAgICAgICAiIiJTZXQgdGhlIGJhc2VsaW5lIHByb3BlcnR5CiAKQEAgLTY4MSwxOCArNjE1
LDEyIEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9iamVjdCk6CiAgICAgICAgIGV4dCA9IG9zLnBhdGgu
c3BsaXRleHQoZmlsZW5hbWUpWzFdLnVwcGVyKCkKICAgICAgICAgaWYgZXh0ICE9ICcuVFhUJyBh
bmQgZXh0ICE9ICcuUE5HJyBhbmQgZXh0ICE9ICcuQ0hFQ0tTVU0nOgogICAgICAgICAgICAgcmV0
dXJuCi0KLSAgICAgICAgcGFyZW50X2RpciwgYmFzZW5hbWUgPSBvcy5wYXRoLnNwbGl0KGZpbGVu
YW1lKQotICAgICAgICBvcmlnaW5hbF9kaXIgPSBvcy5nZXRjd2QoKQotICAgICAgICBvcy5jaGRp
cihwYXJlbnRfZGlyKQogICAgICAgICBpZiBleHQgPT0gJy5QTkcnOgotICAgICAgICAgICAgY21k
ID0gWydzdm4nLCAncHNldCcsICdzdm46bWltZS10eXBlJywgJ2ltYWdlL3BuZycsIGJhc2VuYW1l
XQorICAgICAgICAgICAgbmFtZV9hbmRfdmFsdWUgPSBbJ3N2bjptaW1lLXR5cGUnLCAnaW1hZ2Uv
cG5nJ10KICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNtZCA9IFsnc3ZuJywgJ3BzZXQnLCAn
c3ZuOmVvbC1zdHlsZScsICdMRicsIGJhc2VuYW1lXQotCi0gICAgICAgIF9sb2cuZGVidWcoJyAg
U2V0IHN2biBwcm9wOiAlcycsICcgJy5qb2luKGNtZCkpCi0gICAgICAgIHJ1bl9zaGVsbChjbWQs
IEZhbHNlKQotICAgICAgICBvcy5jaGRpcihvcmlnaW5hbF9kaXIpCisgICAgICAgICAgICBuYW1l
X2FuZF92YWx1ZSA9IFsnc3ZuOmVvbC1zdHlsZScsICdMRiddCisgICAgICAgIHNlbGYuX3NjbS5w
c2V0KG5hbWVfYW5kX3ZhbHVlWzBdLCBuYW1lX2FuZF92YWx1ZVsxXSwgZmlsZW5hbWUpCisgICAg
ICAgIF9sb2cuZGVidWcoJyAgU2V0IHN2biBwcm9wOiAlcyBmb3IgJXMnLCAnICcuam9pbihuYW1l
X2FuZF92YWx1ZSksIGZpbGVuYW1lKQogCiAgICAgZGVmIF9jcmVhdGVfaHRtbF9iYXNlbGluZV9m
aWxlcyhzZWxmLCBiYXNlbGluZV9mdWxscGF0aCk6CiAgICAgICAgICIiIkNyZWF0ZSBiYXNlbGlu
ZSBmaWxlcyAob2xkLCBuZXcgYW5kIGRpZmYpIGluIGh0bWwgZGlyZWN0b3J5LgpAQCAtNzY5LDcg
KzY5Nyw2IEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgX2xv
Zy5kZWJ1ZygnICBIdG1sOiByZW1vdmVkIHRlbXAgY29uZmlnIGRpcjogIiVzIi4nLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9ndXNfZGlyKQogCi0KIGNsYXNzIEh0bWxHZW5lcmF0b3Io
b2JqZWN0KToKICAgICAiIiJDbGFzcyB0byBnZW5lcmF0ZSByZWJhc2VsaW5pbmcgcmVzdWx0IGNv
bXBhcmlzb24gaHRtbC4iIiIKIApAQCAtMTAwMSw2ICs5MjgsMTEgQEAgZGVmIG1haW4oKToKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGVscD0naW5jbHVkZSBkZWJ1Zy1sZXZlbCBsb2dnaW5nLicpCiAKKyAg
ICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oJy1xJywgJy0tcXVpZXQnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
ZWxwPSdTdXByZXNzIHJlc3VsdCBIVE1MIHZpZXdpbmcnKQorCiAgICAgb3B0aW9uX3BhcnNlci5h
ZGRfb3B0aW9uKCctcCcsICctLXBsYXRmb3JtcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ9J21hYyx3aW4sd2luLXhwLHdpbi12aXN0YSxsaW51eCcsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGhlbHA9KCdDb21tYSBkZWxpbWl0ZWQgbGlzdCBvZiBwbGF0Zm9y
bXMgJwpAQCAtMTAxMSw2ICs5NDMsMTAgQEAgZGVmIG1haW4oKToKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2xheW91dF90ZXN0X3Jlc3VsdHMnKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGVscD0oJ1VybCB0byBmaW5kIHRoZSBsYXlvdXQgdGVzdCByZXN1
bHQgYXJjaGl2ZScKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBmaWxlLicp
KQorICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbignLVUnLCAnLS1mb3JjZV9hcmNoaXZlX3Vy
bCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9KCcnKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1VybCBvZiByZXN1bHQgemlwIGZpbGUuIFRoaXMg
b3B0aW9uIGlzIGZvciBkZWJ1Z2dpbmcgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAncHVycG9zZXMnKSkKIAogICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbignLXcnLCAn
LS13ZWJraXRfY2FuYXJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdz
dG9yZV90cnVlJywKQEAgLTExMDYsNyArMTA0Miw4IEBAIGRlZiBtYWluKCk6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlYmFzZWxpbmVfcGxhdGZvcm1zLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWJhc2VsaW5pbmdfdGVzdHMpCiAgICAgaHRtbF9n
ZW5lcmF0b3IuZ2VuZXJhdGVfaHRtbCgpCi0gICAgaHRtbF9nZW5lcmF0b3Iuc2hvd19odG1sKCkK
KyAgICBpZiBub3Qgb3B0aW9ucy5xdWlldDoKKyAgICAgICAgaHRtbF9nZW5lcmF0b3Iuc2hvd19o
dG1sKCkKICAgICBsb2dfZGFzaGVkX3N0cmluZygnUmViYXNlbGluaW5nIHJlc3VsdCBjb21wYXJp
c29uIGRvbmUnLCBOb25lKQogCiAgICAgc3lzLmV4aXQoMCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59732</attachid>
            <date>2010-06-24 22:05:31 -0700</date>
            <delta_ts>2010-06-27 20:03:59 -0700</delta_ts>
            <desc>patch v1; fix style violation</desc>
            <filename>bug-41153-20100625140529.patch</filename>
            <type>text/plain</type>
            <size>16233</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAzMjUwZTVmM2ZkNjc5NzBmNzBjODZhNmYzNWZkYTE3MzcyMGY4YzM0Li5jNzMyMzhk
MTRmYWNiODAzYThiNmJiMWFhZjAwMTNhOWRjNGI4MTkwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTAtMDYtMjQgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcmViYXNlbGluZS1jaHJv
bWl1bS13ZWJraXQtdGVzdHMgc2hvdWxkIGFkZCBvciByZW1vdmUgZmlsZXMgdG8gbG9jYWwgZ2l0
IHJlcG9zaXRvcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQxMTUzCisKKyAgICAgICAgLSBBZGRlZCBTQ00uYWRkKCkgYW5kIFNDTS5yZW1vdmUoKQor
ICAgICAgICAtIFJlcGxhY2VkICJzdm4gYWRkIiBhbmQgInN2biByZW1vdmUiCisgICAgICAgICAg
cmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHk6IGluIHdpdGggU0NNIG1ldGhvZCBl
cXVpdmFsZW50cy4KKyAgICAgICAgLSBhZGQgIi1VIiBhbmQgIi1xIiBvcHRpb25zIHRvIHJlYmFz
ZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CisgICAgICAgICAgZm9yIGRlYnVnZ2luZyBw
dXJwb3NlLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2Nt
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbV91bml0
dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2Vs
aW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weToKKwogMjAxMC0wNi0yMyAgS2V2aW4gT2xsaXZp
ZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KIAogICAgICAgICBbd3hdIEJ1aWxkIGZpeCwg
YWRkaW5nIG5ldyBMYXlvdXRUZXN0Q29udHJvbGxlciBtZXRob2RzIGFuZCBlbmFibGluZyBTVkdf
Rk9SRUlHTl9PQkpFQ1QuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9zY20ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9zY20ucHkKaW5kZXggZmM0YzZmZGNlN2U1Y2QyN2U1NDlkMDFiNjkzMGQ4
MWM4ZTZiMTNjNS4uMTYxNmRhNWZiZWUxZWEzOTllYjM2YTdhNGNhZjhmZDYyMzI5MDAwYyAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2Nt
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3Nj
bS5weQpAQCAtMzEsMTIgKzMxLDEyIEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHJlCitpbXBvcnQg
c2h1dGlsCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4
ZWN1dGl2ZSwgcnVuX2NvbW1hbmQsIFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0udXNlciBpbXBvcnQgVXNlcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJl
Y2F0ZWRfbG9nZ2luZyBpbXBvcnQgZXJyb3IsIGxvZwogCi0KIGRlZiBkZXRlY3Rfc2NtX3N5c3Rl
bShwYXRoKToKICAgICBhYnNvbHV0ZV9wYXRoID0gb3MucGF0aC5hYnNwYXRoKHBhdGgpCiAKQEAg
LTE4Niw3ICsxODYsMTAgQEAgY2xhc3MgU0NNOgogICAgIGRlZiBzdGF0dXNfY29tbWFuZChzZWxm
KToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBp
bXBsZW1lbnQiCiAKLSAgICBkZWYgYWRkKHNlbGYsIHBhdGgpOgorICAgIGRlZiBhZGQoc2VsZiwg
cGF0aCwgcmV0dXJuX2V4aXRfY29kZT1GYWxzZSk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVu
dGVkRXJyb3IoInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiKQorCisgICAgZGVmIGRlbGV0ZShz
ZWxmLCBwYXRoKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNz
ZXMgbXVzdCBpbXBsZW1lbnQiCiAKICAgICBkZWYgY2hhbmdlZF9maWxlcyhzZWxmLCBnaXRfY29t
bWl0PU5vbmUsIHNxdWFzaD1Ob25lKToKQEAgLTM0Myw5ICszNDYsMjMgQEAgY2xhc3MgU1ZOKFND
TSk6CiAgICAgICAgIGZpZWxkX2NvdW50ID0gNiBpZiBzZWxmLnN2bl92ZXJzaW9uKCkgPiAiMS42
IiBlbHNlIDUKICAgICAgICAgcmV0dXJuICJeKD9QPHN0YXR1cz5bJXNdKS57JXN9ICg/UDxmaWxl
bmFtZT4uKykkIiAlIChleHBlY3RlZF90eXBlcywgZmllbGRfY291bnQpCiAKLSAgICBkZWYgYWRk
KHNlbGYsIHBhdGgpOgorICAgIGRlZiBfYWRkX2RpcmVjdG9yaWVzX3JlY3Vyc2l2ZWx5KHNlbGYs
IHBhdGgpOgorICAgICAgICBpZiBzZWxmLmluX3dvcmtpbmdfZGlyZWN0b3J5KHBhdGgpOgorICAg
ICAgICAgICAgcmV0dXJuCisgICAgICAgIHBhcmVudCwgaGVyZSA9IG9zLnBhdGguc3BsaXQocGF0
aCkKKyAgICAgICAgIyBXZSBoYXZlIHBhcmVudCBkaXJlY3RyeSAtIGVuc3VyZSBpdCBhZGRlZC4K
KyAgICAgICAgaWYgcGFyZW50ICE9IHBhdGg6CisgICAgICAgICAgICBzZWxmLl9hZGRfZGlyZWN0
b3JpZXNfcmVjdXJzaXZlbHkocGFyZW50KQorICAgICAgICBzZWxmLmFkZChwYXRoKQorCisgICAg
ZGVmIGFkZChzZWxmLCBwYXRoLCByZXR1cm5fZXhpdF9jb2RlPUZhbHNlKToKKyAgICAgICAgc2Vs
Zi5fYWRkX2RpcmVjdG9yaWVzX3JlY3Vyc2l2ZWx5KG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFi
c3BhdGgocGF0aCkpKQogICAgICAgICAjIHBhdGggaXMgYXNzdW1lZCB0byBiZSBjd2QgcmVsYXRp
dmU/Ci0gICAgICAgIHNlbGYucnVuKFsic3ZuIiwgImFkZCIsIHBhdGhdKQorICAgICAgICByZXR1
cm4gc2VsZi5ydW4oWyJzdm4iLCAiYWRkIiwgcGF0aF0sIHJldHVybl9leGl0X2NvZGU9cmV0dXJu
X2V4aXRfY29kZSkKKworICAgIGRlZiBkZWxldGUoc2VsZiwgcGF0aCk6CisgICAgICAgIHBhcmVu
dCwgYmFzZSA9IG9zLnBhdGguc3BsaXQocGF0aCkKKyAgICAgICAgcmV0dXJuIHNlbGYucnVuKFsi
c3ZuIiwgImRlbGV0ZSIsICItLWZvcmNlIiwgYmFzZV0sIGN3ZD1wYXJlbnQpCiAKICAgICBkZWYg
Y2hhbmdlZF9maWxlcyhzZWxmLCBnaXRfY29tbWl0PU5vbmUsIHNxdWFzaD1Ob25lKToKICAgICAg
ICAgcmV0dXJuIHNlbGYucnVuX3N0YXR1c19hbmRfZXh0cmFjdF9maWxlbmFtZXMoc2VsZi5zdGF0
dXNfY29tbWFuZCgpLCBzZWxmLl9zdGF0dXNfcmVnZXhwKCJBQ0RNUiIpKQpAQCAtMzYyLDYgKzM3
OSw5IEBAIGNsYXNzIFNWTihTQ00pOgogICAgIGRlZiBhZGRlZF9maWxlcyhzZWxmKToKICAgICAg
ICAgcmV0dXJuIHNlbGYucnVuX3N0YXR1c19hbmRfZXh0cmFjdF9maWxlbmFtZXMoc2VsZi5zdGF0
dXNfY29tbWFuZCgpLCBzZWxmLl9zdGF0dXNfcmVnZXhwKCJBIikpCiAKKyAgICBkZWYgZGVsZXRl
ZF9maWxlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYucnVuX3N0YXR1c19hbmRfZXh0cmFj
dF9maWxlbmFtZXMoc2VsZi5zdGF0dXNfY29tbWFuZCgpLCBzZWxmLl9zdGF0dXNfcmVnZXhwKCJE
IikpCisKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIHN1cHBvcnRzX2xvY2FsX2NvbW1pdHMo
KToKICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC00MzUsNiArNDU1LDE0IEBAIGNsYXNzIFNWTihT
Q00pOgogICAgICAgICAjIGh0dHA6Ly9zdm5ib29rLnJlZC1iZWFuLmNvbS9lbi8xLjAvY2gwM3Mw
My5odG1sCiAgICAgICAgIHJldHVybiBzZWxmLnN2bl9jb21taXRfbG9nKCdCQVNFJykKIAorICAg
IGRlZiBwc2V0KHNlbGYsIHBuYW1lLCBwdmFsdWUsIHBhdGgpOgorICAgICAgICBkaXIsIGJhc2Ug
PSBvcy5wYXRoLnNwbGl0KHBhdGgpCisgICAgICAgIHJldHVybiBzZWxmLnJ1bihbJ3N2bicsICdw
c2V0JywgcG5hbWUsIHB2YWx1ZSwgYmFzZV0sIGN3ZD1kaXIpCisKKyAgICBkZWYgcGdldChzZWxm
LCBwbmFtZSwgcGF0aCk6CisgICAgICAgIGRpciwgYmFzZSA9IG9zLnBhdGguc3BsaXQocGF0aCkK
KyAgICAgICAgcmV0dXJuIHNlbGYucnVuKFsnc3ZuJywgJ3BnZXQnLCBwbmFtZSwgYmFzZV0sIGN3
ZD1kaXIpLmVuY29kZSgndXRmLTgnKS5yc3RyaXAoIlxuIikKKwogIyBBbGwgZ2l0LXNwZWNpZmlj
IGxvZ2ljIHNob3VsZCBnbyBoZXJlLgogY2xhc3MgR2l0KFNDTSk6CiAgICAgZGVmIF9faW5pdF9f
KHNlbGYsIGN3ZCk6CkBAIC00OTQsOSArNTIyLDEzIEBAIGNsYXNzIEdpdChTQ00pOgogICAgIGRl
ZiBfc3RhdHVzX3JlZ2V4cChzZWxmLCBleHBlY3RlZF90eXBlcyk6CiAgICAgICAgIHJldHVybiAn
Xig/UDxzdGF0dXM+WyVzXSlcdCg/UDxmaWxlbmFtZT4uKykkJyAlIGV4cGVjdGVkX3R5cGVzCiAK
LSAgICBkZWYgYWRkKHNlbGYsIHBhdGgpOgorICAgIGRlZiBhZGQoc2VsZiwgcGF0aCwgcmV0dXJu
X2V4aXRfY29kZT1GYWxzZSk6CiAgICAgICAgICMgcGF0aCBpcyBhc3N1bWVkIHRvIGJlIGN3ZCBy
ZWxhdGl2ZT8KLSAgICAgICAgc2VsZi5ydW4oWyJnaXQiLCAiYWRkIiwgcGF0aF0pCisgICAgICAg
IHJldHVybiBzZWxmLnJ1bihbImdpdCIsICJhZGQiLCBwYXRoXSwgcmV0dXJuX2V4aXRfY29kZT1y
ZXR1cm5fZXhpdF9jb2RlKQorCisgICAgZGVmIGRlbGV0ZShzZWxmLCBwYXRoKToKKyAgICAgICAg
IyBwYXRoIGlzIGFzc3VtZWQgdG8gYmUgY3dkIHJlbGF0aXZlPworICAgICAgICByZXR1cm4gc2Vs
Zi5ydW4oWyJnaXQiLCAicm0iLCAiLWYiLCBwYXRoXSkKIAogICAgIGRlZiBfbWVyZ2VfYmFzZShz
ZWxmLCBnaXRfY29tbWl0LCBzcXVhc2gpOgogICAgICAgICBpZiBnaXRfY29tbWl0OgpAQCAtNTM3
LDYgKzU2OSw5IEBAIGNsYXNzIEdpdChTQ00pOgogICAgIGRlZiBhZGRlZF9maWxlcyhzZWxmKToK
ICAgICAgICAgcmV0dXJuIHNlbGYucnVuX3N0YXR1c19hbmRfZXh0cmFjdF9maWxlbmFtZXMoc2Vs
Zi5zdGF0dXNfY29tbWFuZCgpLCBzZWxmLl9zdGF0dXNfcmVnZXhwKCJBIikpCiAKKyAgICBkZWYg
ZGVsZXRlZF9maWxlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYucnVuX3N0YXR1c19hbmRf
ZXh0cmFjdF9maWxlbmFtZXMoc2VsZi5zdGF0dXNfY29tbWFuZCgpLCBzZWxmLl9zdGF0dXNfcmVn
ZXhwKCJEIikpCisKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIHN1cHBvcnRzX2xvY2FsX2Nv
bW1pdHMoKToKICAgICAgICAgcmV0dXJuIFRydWUKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbV91bml0dGVzdC5weSBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbV91bml0dGVzdC5weQppbmRl
eCAzNmExZDFjZmRiOTQ0NGM3MTU0OTg2YzQ1MmNjM2Q5MTRmNGMxYTU2Li40ZjNlZDkyNGIxYWY3
MzM2YjdhMmY4MDZkN2UzNTBlMjA5ZjMyNDc3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY21fdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtX3VuaXR0ZXN0LnB5CkBA
IC0zODgsNiArMzg4LDExIEBAIE9jbVlleCZyZUQkO3NPOCpGOUwpQgogICAgICAgICAjIENhbm5v
dCBkZWxldGUgYWdhaW4uCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBz
ZWxmLmNoZWNrb3V0LmFwcGx5X3BhdGNoLCBzZWxmLl9jcmVhdGVfcGF0Y2goZ2l0X2JpbmFyeV9k
ZWxldGlvbikpCiAKKyAgICBkZWYgX3NoYXJlZF90ZXN0X2FkZF9yZWN1cnNpdmVseShzZWxmKToK
KyAgICAgICAgb3MubWtkaXIoImFkZGVkX2RpciIpCisgICAgICAgIHdyaXRlX2ludG9fZmlsZV9h
dF9wYXRoKCJhZGRlZF9kaXIvYWRkZWRfZmlsZSIsICJuZXcgc3R1ZmYiKQorICAgICAgICBzZWxm
LnNjbS5hZGQoImFkZGVkX2Rpci9hZGRlZF9maWxlIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KCJhZGRlZF9kaXIvYWRkZWRfZmlsZSIgaW4gc2VsZi5zY20uYWRkZWRfZmlsZXMoKSkKIAogY2xh
c3MgU1ZOVGVzdChTQ01UZXN0KToKIApAQCAtNjMyLDYgKzYzNywxOCBAQCBRMWRUQngwQUFBQjQy
aXRnNEdsZ1lKakd3TUREeU9ETXhNRHczNEdCZ1FFQUpQUURKQT09CiAgICAgZGVmIHRlc3RfY29t
bWl0dGVyX2VtYWlsX2Zvcl9yZXZpc2lvbihzZWxmKToKICAgICAgICAgc2VsZi5fc2hhcmVkX3Rl
c3RfY29tbWl0dGVyX2VtYWlsX2Zvcl9yZXZpc2lvbigpCiAKKyAgICBkZWYgdGVzdF9hZGRfcmVj
dXJzaXZlbHkoc2VsZik6CisgICAgICAgIHNlbGYuX3NoYXJlZF90ZXN0X2FkZF9yZWN1cnNpdmVs
eSgpCisKKyAgICBkZWYgdGVzdF9kZWxldGUoc2VsZik6CisgICAgICAgIG9zLmNoZGlyKHNlbGYu
c3ZuX2NoZWNrb3V0X3BhdGgpCisgICAgICAgIHNlbGYuc2NtLmRlbGV0ZSgidGVzdF9maWxlIikK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJ0ZXN0X2ZpbGUiIGluIHNlbGYuc2NtLmRlbGV0ZWRf
ZmlsZXMoKSkKKworICAgIGRlZiB0ZXN0X3BzZXRfcGdldChzZWxmKToKKyAgICAgICAgZmlsZXBh
dGggPSBvcy5wYXRoLmpvaW4oc2VsZi5zdm5fY2hlY2tvdXRfcGF0aCwgInRlc3RfZmlsZSIpCisg
ICAgICAgIHNlbGYuc2NtLnBzZXQoInN2bjptaW1lLXR5cGUiLCAiYXBwbGljYXRpb24vb2N0ZXQt
c3RyZWFtIiwgZmlsZXBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImFwcGxpY2F0aW9u
L29jdGV0LXN0cmVhbSIsIHNlbGYuc2NtLnBnZXQoInN2bjptaW1lLXR5cGUiLCBmaWxlcGF0aCkp
CiAKIGNsYXNzIEdpdFRlc3QoU0NNVGVzdCk6CiAKQEAgLTEwOTgsNiArMTExNSwxNCBAQCBjbGFz
cyBHaXRTVk5UZXN0KFNDTVRlc3QpOgogICAgIGRlZiB0ZXN0X2NvbW1pdHRlcl9lbWFpbF9mb3Jf
cmV2aXNpb24oc2VsZik6CiAgICAgICAgIHNlbGYuX3NoYXJlZF90ZXN0X2NvbW1pdHRlcl9lbWFp
bF9mb3JfcmV2aXNpb24oKQogCisgICAgZGVmIHRlc3RfYWRkX3JlY3Vyc2l2ZWx5KHNlbGYpOgor
ICAgICAgICBzZWxmLl9zaGFyZWRfdGVzdF9hZGRfcmVjdXJzaXZlbHkoKQorCisgICAgZGVmIHRl
c3RfZGVsZXRlKHNlbGYpOgorICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCisgICAg
ICAgIHNlbGYuc2NtLmRlbGV0ZSgndGVzdF9maWxlX2NvbW1pdDEnKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUoInRlc3RfZmlsZV9jb21taXQxIiBpbiBzZWxmLnNjbS5kZWxldGVkX2ZpbGVzKCkp
CisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFz
ZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKaW5k
ZXggZjExYjhhOThmYmEwNTRiZGY1NzkwOGM4NDk2MzBmMTdlNjBhNTU5NS4uMmRmMmM2OGQ1NWVk
ODA5NmZhYTA2YjdhMjI0OGFmNjhjNmI2NjVlMCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVz
dHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmVi
YXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKQEAgLTU5LDYgKzU5LDggQEAgaW1wb3J0
IHdlYmJyb3dzZXIKIGltcG9ydCB6aXBmaWxlCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5leGVjdXRpdmUgaW1wb3J0IHJ1bl9jb21tYW5kCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVj
a291dC5zY20gaW1wb3J0IGRldGVjdF9zY21fc3lzdGVtCitpbXBvcnQgd2Via2l0cHkuY29tbW9u
LmNoZWNrb3V0LnNjbSBhcyBzY20KIAogaW1wb3J0IHBvcnQKIGZyb20gbGF5b3V0X3BhY2thZ2Ug
aW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCkBAIC02OCw5ICs3MCw2IEBAIGZyb20gdGVzdF90eXBl
cyBpbXBvcnQgdGV4dF9kaWZmCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoIndlYmtpdHB5Lmxh
eW91dF90ZXN0cy4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgInJlYmFzZWxpbmVfY2hyb21p
dW1fd2Via2l0X3Rlc3RzIikKIAotIyBSZXBvc2l0b3J5IHR5cGUgY29uc3RhbnRzLgotUkVQT19T
Vk4sIFJFUE9fVU5LTk9XTiA9IHJhbmdlKDIpCi0KIEJBU0VMSU5FX1NVRkZJWEVTID0gWycudHh0
JywgJy5wbmcnLCAnLmNoZWNrc3VtJ10KIFJFQkFTRUxJTkVfUExBVEZPUk1fT1JERVIgPSBbJ21h
YycsICd3aW4nLCAnd2luLXhwJywgJ3dpbi12aXN0YScsICdsaW51eCddCiBBUkNISVZFX0RJUl9O
QU1FX0RJQ1QgPSB7J3dpbic6ICd3ZWJraXQtcmVsJywKQEAgLTI0MSw4ICsyNDAsNyBAQCBjbGFz
cyBSZWJhc2VsaW5lcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9wbGF0Zm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZhbHNlKQotCi0gICAgICAgIHNlbGYuX3JlcG9fdHlwZSA9IHNl
bGYuX2dldF9yZXBvX3R5cGUoKQorICAgICAgICBzZWxmLl9zY20gPSBkZXRlY3Rfc2NtX3N5c3Rl
bShvcy5nZXRjd2QoKSkKIAogICAgIGRlZiBydW4oc2VsZiwgYmFja3VwKToKICAgICAgICAgIiIi
UnVuIHJlYmFzZWxpbmUgcHJvY2Vzcy4iIiIKQEAgLTI4NSwxNSArMjgzLDYgQEAgY2xhc3MgUmVi
YXNlbGluZXIob2JqZWN0KToKICAgICBkZWYgZ2V0X3JlYmFzZWxpbmluZ190ZXN0cyhzZWxmKToK
ICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYmFzZWxpbmluZ190ZXN0cwogCi0gICAgIyBGSVhNRTog
Q2FsbGVycyBzaG91bGQgdXNlIHNjbS5weSBpbnN0ZWFkLgotICAgIGRlZiBfZ2V0X3JlcG9fdHlw
ZShzZWxmKToKLSAgICAgICAgIiIiR2V0IHRoZSByZXBvc2l0b3J5IHR5cGUgdGhhdCBjbGllbnQg
aXMgdXNpbmcuIiIiCi0gICAgICAgIHJldHVybl9jb2RlID0gcnVuX2NvbW1hbmQoWydzdm4nLCAn
aW5mbyddLCByZXR1cm5fZXhpdF9jb2RlPVRydWUpCi0gICAgICAgIGlmIHJldHVybl9jb2RlID09
IDA6Ci0gICAgICAgICAgICByZXR1cm4gUkVQT19TVk4KLQotICAgICAgICByZXR1cm4gUkVQT19V
TktOT1dOCi0KICAgICBkZWYgX2NvbXBpbGVfcmViYXNlbGluaW5nX3Rlc3RzKHNlbGYpOgogICAg
ICAgICAiIiJDb21waWxlIGxpc3Qgb2YgdGVzdHMgdGhhdCBuZWVkIHJlYmFzZWxpbmluZyBmb3Ig
dGhlIHBsYXRmb3JtLgogCkBAIC0zNzEsNiArMzYwLDkgQEAgY2xhc3MgUmViYXNlbGluZXIob2Jq
ZWN0KToKICAgICAgICAgICBOb25lIG9uIGZhaWx1cmUKICAgICAgICAgIiIiCiAKKyAgICAgICAg
aWYgc2VsZi5fb3B0aW9ucy5mb3JjZV9hcmNoaXZlX3VybDoKKyAgICAgICAgICAgIHJldHVybiBz
ZWxmLl9vcHRpb25zLmZvcmNlX2FyY2hpdmVfdXJsCisKICAgICAgICAgZGlyX25hbWUgPSBzZWxm
Ll9nZXRfYXJjaGl2ZV9kaXJfbmFtZShzZWxmLl9wbGF0Zm9ybSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLndlYmtpdF9jYW5hcnkp
CiAgICAgICAgIGlmIG5vdCBkaXJfbmFtZToKQEAgLTQ4MCw4ICs0NzIsMTIgQEAgY2xhc3MgUmVi
YXNlbGluZXIob2JqZWN0KToKIAogICAgICAgICAgICAgICAgIHNodXRpbC5tb3ZlKHRlbXBfbmFt
ZSwgZXhwZWN0ZWRfZnVsbHBhdGgpCiAKLSAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fc3Zu
X2FkZChleHBlY3RlZF9mdWxscGF0aCk6CisgICAgICAgICAgICAgICAgaWYgMCAhPSBzZWxmLl9z
Y20uYWRkKGV4cGVjdGVkX2Z1bGxwYXRoLCByZXR1cm5fZXhpdF9jb2RlPVRydWUpOgorICAgICAg
ICAgICAgICAgICAgICAjIEZJWE1FOiBwcmludCBkZXRhaWxlZCBkaWFnbm9zZSBtZXNzYWdlcwog
ICAgICAgICAgICAgICAgICAgICBzdm5fZXJyb3IgPSBUcnVlCisgICAgICAgICAgICAgICAgaWYg
bm90IHN2bl9lcnJvciBhbmQgaXNpbnN0YW5jZShzZWxmLl9zY20sIHNjbS5TVk4pOgorICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9zdm5fcHJvcF9zZXQoZXhwZWN0ZWRfZnVsbHBhdGgpCisKICAg
ICAgICAgICAgICAgICBlbGlmIHN1ZmZpeCAhPSAnLmNoZWNrc3VtJzoKICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fY3JlYXRlX2h0bWxfYmFzZWxpbmVfZmlsZXMoZXhwZWN0ZWRfZnVsbHBhdGgp
CiAKQEAgLTU3MiwxNSArNTY4LDcgQEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToKIAogICAg
ICAgICBpZiBub3QgZmlsZW5hbWUgb3Igbm90IG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lKToKICAg
ICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGlmIHNlbGYuX3JlcG9fdHlwZSA9PSBSRVBPX1NW
TjoKLSAgICAgICAgICAgIHBhcmVudF9kaXIsIGJhc2VuYW1lID0gb3MucGF0aC5zcGxpdChmaWxl
bmFtZSkKLSAgICAgICAgICAgIG9yaWdpbmFsX2RpciA9IG9zLmdldGN3ZCgpCi0gICAgICAgICAg
ICBvcy5jaGRpcihwYXJlbnRfZGlyKQotICAgICAgICAgICAgcnVuX3NoZWxsKFsnc3ZuJywgJ2Rl
bGV0ZScsICctLWZvcmNlJywgYmFzZW5hbWVdLCBGYWxzZSkKLSAgICAgICAgICAgIG9zLmNoZGly
KG9yaWdpbmFsX2RpcikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9zLnJlbW92ZShmaWxl
bmFtZSkKKyAgICAgICAgc2VsZi5fc2NtLmRlbGV0ZShmaWxlbmFtZSkKIAogICAgIGRlZiBfdXBk
YXRlX3JlYmFzZWxpbmVkX3Rlc3RzX2luX2ZpbGUoc2VsZiwgYmFja3VwKToKICAgICAgICAgIiIi
VXBkYXRlIHRoZSByZWJhc2VsaW5lZCB0ZXN0cyBpbiB0ZXN0IGV4cGVjdGF0aW9ucyBmaWxlLgpA
QCAtNjA5LDY0ICs1OTcsMTAgQEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToKICAgICAgICAg
ICAgICMgT3IgaXMgbmV3X2V4cGVjdGF0aW9ucyBhbHdheXMgYSBieXRlIGFycmF5PwogICAgICAg
ICAgICAgd2l0aCBvcGVuKHBhdGgsICJ3IikgYXMgZmlsZToKICAgICAgICAgICAgICAgICBmaWxl
LndyaXRlKG5ld19leHBlY3RhdGlvbnMpCisgICAgICAgICAgICBzZWxmLl9zY20uYWRkKHBhdGgp
CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBfbG9nLmluZm8oJ05vIHRlc3Qgd2FzIHJlYmFz
ZWxpbmVkIHNvIG5vdGhpbmcgdG8gcmVtb3ZlLicpCiAKLSAgICAjIEZJWE1FOiBDYWxsZXJzIHNo
b3VsZCBtb3ZlIHRvIFNDTS5hZGQgaW5zdGVhZC4KLSAgICBkZWYgX3N2bl9hZGQoc2VsZiwgZmls
ZW5hbWUpOgotICAgICAgICAiIiJBZGQgdGhlIGZpbGUgdG8gU1ZOIHJlcG9zaXRvcnkuCi0KLSAg
ICAgICAgQXJnczoKLSAgICAgICAgICBmaWxlbmFtZTogZnVsbCBwYXRoIG9mIHRoZSBmaWxlIHRv
IGFkZC4KLQotICAgICAgICBSZXR1cm5zOgotICAgICAgICAgIFRydWUgaWYgdGhlIGZpbGUgYWxy
ZWFkeSBleGlzdHMgaW4gU1ZOIG9yIGlzIHN1Y2Vzc2Z1bGx5IGFkZGVkCi0gICAgICAgICAgICAg
ICB0byBTVk4uCi0gICAgICAgICAgRmFsc2Ugb3RoZXJ3aXNlLgotICAgICAgICAiIiIKLQotICAg
ICAgICBpZiBub3QgZmlsZW5hbWU6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAg
ICBwYXJlbnRfZGlyLCBiYXNlbmFtZSA9IG9zLnBhdGguc3BsaXQoZmlsZW5hbWUpCi0gICAgICAg
IGlmIHNlbGYuX3JlcG9fdHlwZSAhPSBSRVBPX1NWTiBvciBwYXJlbnRfZGlyID09IGZpbGVuYW1l
OgotICAgICAgICAgICAgX2xvZy5pbmZvKCJObyBzdm4gY2hlY2tvdXQgZm91bmQsIHNraXAgc3Zu
IGFkZC4iKQotICAgICAgICAgICAgcmV0dXJuIFRydWUKLQotICAgICAgICBvcmlnaW5hbF9kaXIg
PSBvcy5nZXRjd2QoKQotICAgICAgICBvcy5jaGRpcihwYXJlbnRfZGlyKQotICAgICAgICBzdGF0
dXNfb3V0cHV0ID0gcnVuX3NoZWxsKFsnc3ZuJywgJ3N0YXR1cycsIGJhc2VuYW1lXSwgRmFsc2Up
Ci0gICAgICAgIG9zLmNoZGlyKG9yaWdpbmFsX2RpcikKLSAgICAgICAgb3V0cHV0ID0gc3RhdHVz
X291dHB1dC51cHBlcigpCi0gICAgICAgIGlmIG91dHB1dC5zdGFydHN3aXRoKCdBJykgb3Igb3V0
cHV0LnN0YXJ0c3dpdGgoJ00nKToKLSAgICAgICAgICAgIF9sb2cuaW5mbygnICBGaWxlIGFscmVh
ZHkgYWRkZWQgdG8gU1ZOOiAiJXMiJywgZmlsZW5hbWUpCi0gICAgICAgICAgICByZXR1cm4gVHJ1
ZQotCi0gICAgICAgIGlmIG91dHB1dC5maW5kKCdJUyBOT1QgQSBXT1JLSU5HIENPUFknKSA+PSAw
OgotICAgICAgICAgICAgX2xvZy5pbmZvKCcgIEZpbGUgaXMgbm90IGEgd29ya2luZyBjb3B5LCBh
ZGQgaXRzIHBhcmVudDogIiVzIicsCi0gICAgICAgICAgICAgICAgICAgICAgcGFyZW50X2RpcikK
LSAgICAgICAgICAgIHJldHVybiBzZWxmLl9zdm5fYWRkKHBhcmVudF9kaXIpCi0KLSAgICAgICAg
b3MuY2hkaXIocGFyZW50X2RpcikKLSAgICAgICAgYWRkX291dHB1dCA9IHJ1bl9zaGVsbChbJ3N2
bicsICdhZGQnLCBiYXNlbmFtZV0sIFRydWUpCi0gICAgICAgIG9zLmNoZGlyKG9yaWdpbmFsX2Rp
cikKLSAgICAgICAgb3V0cHV0ID0gYWRkX291dHB1dC51cHBlcigpLnJzdHJpcCgpCi0gICAgICAg
IGlmIG91dHB1dC5zdGFydHN3aXRoKCdBJykgYW5kIG91dHB1dC5maW5kKGJhc2VuYW1lLnVwcGVy
KCkpID49IDA6Ci0gICAgICAgICAgICBfbG9nLmluZm8oJyAgQWRkZWQgbmV3IGZpbGU6ICIlcyIn
LCBmaWxlbmFtZSkKLSAgICAgICAgICAgIHNlbGYuX3N2bl9wcm9wX3NldChmaWxlbmFtZSkKLSAg
ICAgICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAgICAgaWYgKG5vdCBzdGF0dXNfb3V0cHV0KSBh
bmQgKGFkZF9vdXRwdXQudXBwZXIoKS5maW5kKAotICAgICAgICAgICAgJ0FMUkVBRFkgVU5ERVIg
VkVSU0lPTiBDT05UUk9MJykgPj0gMCk6Ci0gICAgICAgICAgICBfbG9nLmluZm8oJyAgRmlsZSBh
bHJlYWR5IHVuZGVyIFNWTiBhbmQgaGFzIG5vIGNoYW5nZTogIiVzIicsCi0gICAgICAgICAgICAg
ICAgICAgICAgZmlsZW5hbWUpCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgICAgIF9s
b2cud2FybignICBGYWlsZWQgdG8gYWRkIGZpbGUgdG8gU1ZOOiAiJXMiJywgZmlsZW5hbWUpCi0g
ICAgICAgIF9sb2cud2FybignICBTdm4gc3RhdHVzIG91dHB1dDogIiVzIicsIHN0YXR1c19vdXRw
dXQpCi0gICAgICAgIF9sb2cud2FybignICBTdm4gYWRkIG91dHB1dDogIiVzIicsIGFkZF9vdXRw
dXQpCi0gICAgICAgIHJldHVybiBGYWxzZQotCiAgICAgZGVmIF9zdm5fcHJvcF9zZXQoc2VsZiwg
ZmlsZW5hbWUpOgogICAgICAgICAiIiJTZXQgdGhlIGJhc2VsaW5lIHByb3BlcnR5CiAKQEAgLTY4
MSwxOCArNjE1LDEyIEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9iamVjdCk6CiAgICAgICAgIGV4dCA9
IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpWzFdLnVwcGVyKCkKICAgICAgICAgaWYgZXh0ICE9
ICcuVFhUJyBhbmQgZXh0ICE9ICcuUE5HJyBhbmQgZXh0ICE9ICcuQ0hFQ0tTVU0nOgogICAgICAg
ICAgICAgcmV0dXJuCi0KLSAgICAgICAgcGFyZW50X2RpciwgYmFzZW5hbWUgPSBvcy5wYXRoLnNw
bGl0KGZpbGVuYW1lKQotICAgICAgICBvcmlnaW5hbF9kaXIgPSBvcy5nZXRjd2QoKQotICAgICAg
ICBvcy5jaGRpcihwYXJlbnRfZGlyKQogICAgICAgICBpZiBleHQgPT0gJy5QTkcnOgotICAgICAg
ICAgICAgY21kID0gWydzdm4nLCAncHNldCcsICdzdm46bWltZS10eXBlJywgJ2ltYWdlL3BuZycs
IGJhc2VuYW1lXQorICAgICAgICAgICAgbmFtZV9hbmRfdmFsdWUgPSBbJ3N2bjptaW1lLXR5cGUn
LCAnaW1hZ2UvcG5nJ10KICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNtZCA9IFsnc3ZuJywg
J3BzZXQnLCAnc3ZuOmVvbC1zdHlsZScsICdMRicsIGJhc2VuYW1lXQotCi0gICAgICAgIF9sb2cu
ZGVidWcoJyAgU2V0IHN2biBwcm9wOiAlcycsICcgJy5qb2luKGNtZCkpCi0gICAgICAgIHJ1bl9z
aGVsbChjbWQsIEZhbHNlKQotICAgICAgICBvcy5jaGRpcihvcmlnaW5hbF9kaXIpCisgICAgICAg
ICAgICBuYW1lX2FuZF92YWx1ZSA9IFsnc3ZuOmVvbC1zdHlsZScsICdMRiddCisgICAgICAgIHNl
bGYuX3NjbS5wc2V0KG5hbWVfYW5kX3ZhbHVlWzBdLCBuYW1lX2FuZF92YWx1ZVsxXSwgZmlsZW5h
bWUpCisgICAgICAgIF9sb2cuZGVidWcoJyAgU2V0IHN2biBwcm9wOiAlcyBmb3IgJXMnLCAnICcu
am9pbihuYW1lX2FuZF92YWx1ZSksIGZpbGVuYW1lKQogCiAgICAgZGVmIF9jcmVhdGVfaHRtbF9i
YXNlbGluZV9maWxlcyhzZWxmLCBiYXNlbGluZV9mdWxscGF0aCk6CiAgICAgICAgICIiIkNyZWF0
ZSBiYXNlbGluZSBmaWxlcyAob2xkLCBuZXcgYW5kIGRpZmYpIGluIGh0bWwgZGlyZWN0b3J5LgpA
QCAtNzY5LDcgKzY5Nyw2IEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9iamVjdCk6CiAgICAgICAgICAg
ICAgICAgX2xvZy5kZWJ1ZygnICBIdG1sOiByZW1vdmVkIHRlbXAgY29uZmlnIGRpcjogIiVzIi4n
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9ndXNfZGlyKQogCi0KIGNsYXNzIEh0bWxH
ZW5lcmF0b3Iob2JqZWN0KToKICAgICAiIiJDbGFzcyB0byBnZW5lcmF0ZSByZWJhc2VsaW5pbmcg
cmVzdWx0IGNvbXBhcmlzb24gaHRtbC4iIiIKIApAQCAtMTAwMSw2ICs5MjgsMTEgQEAgZGVmIG1h
aW4oKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0naW5jbHVkZSBkZWJ1Zy1sZXZlbCBsb2dnaW5n
LicpCiAKKyAgICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oJy1xJywgJy0tcXVpZXQnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBoZWxwPSdTdXByZXNzIHJlc3VsdCBIVE1MIHZpZXdpbmcnKQorCiAgICAgb3B0aW9u
X3BhcnNlci5hZGRfb3B0aW9uKCctcCcsICctLXBsYXRmb3JtcycsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ9J21hYyx3aW4sd2luLXhwLHdpbi12aXN0YSxsaW51eCcsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdDb21tYSBkZWxpbWl0ZWQgbGlzdCBv
ZiBwbGF0Zm9ybXMgJwpAQCAtMTAxMSw2ICs5NDMsMTAgQEAgZGVmIG1haW4oKToKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xheW91dF90ZXN0X3Jlc3VsdHMnKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1VybCB0byBmaW5kIHRoZSBsYXlvdXQg
dGVzdCByZXN1bHQgYXJjaGl2ZScKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JyBmaWxlLicpKQorICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbignLVUnLCAnLS1mb3JjZV9h
cmNoaXZlX3VybCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9KCcnKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1VybCBvZiByZXN1bHQgemlwIGZp
bGUuIFRoaXMgb3B0aW9uIGlzIGZvciBkZWJ1Z2dpbmcgJworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAncHVycG9zZXMnKSkKIAogICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlv
bignLXcnLCAnLS13ZWJraXRfY2FuYXJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YWN0aW9uPSdzdG9yZV90cnVlJywKQEAgLTExMDYsNyArMTA0Miw4IEBAIGRlZiBtYWluKCk6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYmFzZWxpbmVfcGxhdGZvcm1zLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWJhc2VsaW5pbmdfdGVzdHMpCiAg
ICAgaHRtbF9nZW5lcmF0b3IuZ2VuZXJhdGVfaHRtbCgpCi0gICAgaHRtbF9nZW5lcmF0b3Iuc2hv
d19odG1sKCkKKyAgICBpZiBub3Qgb3B0aW9ucy5xdWlldDoKKyAgICAgICAgaHRtbF9nZW5lcmF0
b3Iuc2hvd19odG1sKCkKICAgICBsb2dfZGFzaGVkX3N0cmluZygnUmViYXNlbGluaW5nIHJlc3Vs
dCBjb21wYXJpc29uIGRvbmUnLCBOb25lKQogCiAgICAgc3lzLmV4aXQoMCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59869</attachid>
            <date>2010-06-27 20:04:05 -0700</date>
            <delta_ts>2010-06-27 21:18:44 -0700</delta_ts>
            <desc>patch v2</desc>
            <filename>bug-41153-20100628120403.patch</filename>
            <type>text/plain</type>
            <size>16669</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAzMjUwZTVmM2ZkNjc5NzBmNzBjODZhNmYzNWZkYTE3MzcyMGY4YzM0Li5jNzMyMzhk
MTRmYWNiODAzYThiNmJiMWFhZjAwMTNhOWRjNGI4MTkwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTAtMDYtMjQgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcmViYXNlbGluZS1jaHJv
bWl1bS13ZWJraXQtdGVzdHMgc2hvdWxkIGFkZCBvciByZW1vdmUgZmlsZXMgdG8gbG9jYWwgZ2l0
IHJlcG9zaXRvcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQxMTUzCisKKyAgICAgICAgLSBBZGRlZCBTQ00uYWRkKCkgYW5kIFNDTS5yZW1vdmUoKQor
ICAgICAgICAtIFJlcGxhY2VkICJzdm4gYWRkIiBhbmQgInN2biByZW1vdmUiCisgICAgICAgICAg
cmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHk6IGluIHdpdGggU0NNIG1ldGhvZCBl
cXVpdmFsZW50cy4KKyAgICAgICAgLSBhZGQgIi1VIiBhbmQgIi1xIiBvcHRpb25zIHRvIHJlYmFz
ZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CisgICAgICAgICAgZm9yIGRlYnVnZ2luZyBw
dXJwb3NlLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2Nt
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbV91bml0
dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2Vs
aW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weToKKwogMjAxMC0wNi0yMyAgS2V2aW4gT2xsaXZp
ZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KIAogICAgICAgICBbd3hdIEJ1aWxkIGZpeCwg
YWRkaW5nIG5ldyBMYXlvdXRUZXN0Q29udHJvbGxlciBtZXRob2RzIGFuZCBlbmFibGluZyBTVkdf
Rk9SRUlHTl9PQkpFQ1QuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9zY20ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9zY20ucHkKaW5kZXggZmM0YzZmZGNlN2U1Y2QyN2U1NDlkMDFiNjkzMGQ4
MWM4ZTZiMTNjNS4uMGYxZTZhZGJmZGE0MDE0YmIxZWVmZWFlMzQyNDY5MWNjNjU5NDcwNyAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2Nt
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3Nj
bS5weQpAQCAtMzEsNiArMzEsNyBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCByZQoraW1wb3J0IHNo
dXRpbAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVj
dXRpdmUsIHJ1bl9jb21tYW5kLCBTY3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLnVzZXIgaW1wb3J0IFVzZXIKQEAgLTE4Niw3ICsxODcsMTAgQEAgY2xhc3MgU0NNOgogICAg
IGRlZiBzdGF0dXNfY29tbWFuZChzZWxmKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRF
cnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCiAKLSAgICBkZWYgYWRkKHNlbGYsIHBh
dGgpOgorICAgIGRlZiBhZGQoc2VsZiwgcGF0aCwgcmV0dXJuX2V4aXRfY29kZT1GYWxzZSk6Cisg
ICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1wbGVt
ZW50IgorCisgICAgZGVmIGRlbGV0ZShzZWxmLCBwYXRoKToKICAgICAgICAgcmFpc2UgTm90SW1w
bGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCiAKICAgICBkZWYgY2hh
bmdlZF9maWxlcyhzZWxmLCBnaXRfY29tbWl0PU5vbmUsIHNxdWFzaD1Ob25lKToKQEAgLTM0Myw5
ICszNDcsMjQgQEAgY2xhc3MgU1ZOKFNDTSk6CiAgICAgICAgIGZpZWxkX2NvdW50ID0gNiBpZiBz
ZWxmLnN2bl92ZXJzaW9uKCkgPiAiMS42IiBlbHNlIDUKICAgICAgICAgcmV0dXJuICJeKD9QPHN0
YXR1cz5bJXNdKS57JXN9ICg/UDxmaWxlbmFtZT4uKykkIiAlIChleHBlY3RlZF90eXBlcywgZmll
bGRfY291bnQpCiAKLSAgICBkZWYgYWRkKHNlbGYsIHBhdGgpOgorICAgIGRlZiBfYWRkX3BhcmVu
dF9kaXJlY3RvcmllcyhzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiRG9lcyAnc3ZuIGFkZCcgdG8g
dGhlIHBhdGggYW5kIGl0cyBwYXJlbnRzLiIiIgorICAgICAgICBpZiBzZWxmLmluX3dvcmtpbmdf
ZGlyZWN0b3J5KHBhdGgpOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGRpcm5hbWUgPSBv
cy5wYXRoLmRpcm5hbWUocGF0aCkKKyAgICAgICAgIyBXZSBoYXZlIGRpcm5hbWUgZGlyZWN0cnkg
LSBlbnN1cmUgaXQgYWRkZWQuCisgICAgICAgIGlmIGRpcm5hbWUgIT0gcGF0aDoKKyAgICAgICAg
ICAgIHNlbGYuX2FkZF9wYXJlbnRfZGlyZWN0b3JpZXMoZGlybmFtZSkKKyAgICAgICAgc2VsZi5h
ZGQocGF0aCkKKworICAgIGRlZiBhZGQoc2VsZiwgcGF0aCwgcmV0dXJuX2V4aXRfY29kZT1GYWxz
ZSk6CisgICAgICAgIHNlbGYuX2FkZF9wYXJlbnRfZGlyZWN0b3JpZXMob3MucGF0aC5kaXJuYW1l
KG9zLnBhdGguYWJzcGF0aChwYXRoKSkpCiAgICAgICAgICMgcGF0aCBpcyBhc3N1bWVkIHRvIGJl
IGN3ZCByZWxhdGl2ZT8KLSAgICAgICAgc2VsZi5ydW4oWyJzdm4iLCAiYWRkIiwgcGF0aF0pCisg
ICAgICAgIHJldHVybiBzZWxmLnJ1bihbInN2biIsICJhZGQiLCBwYXRoXSwgcmV0dXJuX2V4aXRf
Y29kZT1yZXR1cm5fZXhpdF9jb2RlKQorCisgICAgZGVmIGRlbGV0ZShzZWxmLCBwYXRoKToKKyAg
ICAgICAgcGFyZW50LCBiYXNlID0gb3MucGF0aC5zcGxpdChvcy5wYXRoLmFic3BhdGgocGF0aCkp
CisgICAgICAgIHJldHVybiBzZWxmLnJ1bihbInN2biIsICJkZWxldGUiLCAiLS1mb3JjZSIsIGJh
c2VdLCBjd2Q9cGFyZW50KQogCiAgICAgZGVmIGNoYW5nZWRfZmlsZXMoc2VsZiwgZ2l0X2NvbW1p
dD1Ob25lLCBzcXVhc2g9Tm9uZSk6CiAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9zdGF0dXNfYW5k
X2V4dHJhY3RfZmlsZW5hbWVzKHNlbGYuc3RhdHVzX2NvbW1hbmQoKSwgc2VsZi5fc3RhdHVzX3Jl
Z2V4cCgiQUNETVIiKSkKQEAgLTM2Miw2ICszODEsOSBAQCBjbGFzcyBTVk4oU0NNKToKICAgICBk
ZWYgYWRkZWRfZmlsZXMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9zdGF0dXNfYW5k
X2V4dHJhY3RfZmlsZW5hbWVzKHNlbGYuc3RhdHVzX2NvbW1hbmQoKSwgc2VsZi5fc3RhdHVzX3Jl
Z2V4cCgiQSIpKQogCisgICAgZGVmIGRlbGV0ZWRfZmlsZXMoc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLnJ1bl9zdGF0dXNfYW5kX2V4dHJhY3RfZmlsZW5hbWVzKHNlbGYuc3RhdHVzX2NvbW1h
bmQoKSwgc2VsZi5fc3RhdHVzX3JlZ2V4cCgiRCIpKQorCiAgICAgQHN0YXRpY21ldGhvZAogICAg
IGRlZiBzdXBwb3J0c19sb2NhbF9jb21taXRzKCk6CiAgICAgICAgIHJldHVybiBGYWxzZQpAQCAt
NDM1LDYgKzQ1NywxNCBAQCBjbGFzcyBTVk4oU0NNKToKICAgICAgICAgIyBodHRwOi8vc3ZuYm9v
ay5yZWQtYmVhbi5jb20vZW4vMS4wL2NoMDNzMDMuaHRtbAogICAgICAgICByZXR1cm4gc2VsZi5z
dm5fY29tbWl0X2xvZygnQkFTRScpCiAKKyAgICBkZWYgcHJvcHNldChzZWxmLCBwbmFtZSwgcHZh
bHVlLCBwYXRoKToKKyAgICAgICAgZGlyLCBiYXNlID0gb3MucGF0aC5zcGxpdChwYXRoKQorICAg
ICAgICByZXR1cm4gc2VsZi5ydW4oWydzdm4nLCAncHNldCcsIHBuYW1lLCBwdmFsdWUsIGJhc2Vd
LCBjd2Q9ZGlyKQorCisgICAgZGVmIHByb3BnZXQoc2VsZiwgcG5hbWUsIHBhdGgpOgorICAgICAg
ICBkaXIsIGJhc2UgPSBvcy5wYXRoLnNwbGl0KHBhdGgpCisgICAgICAgIHJldHVybiBzZWxmLnJ1
bihbJ3N2bicsICdwZ2V0JywgcG5hbWUsIGJhc2VdLCBjd2Q9ZGlyKS5lbmNvZGUoJ3V0Zi04Jyku
cnN0cmlwKCJcbiIpCisKICMgQWxsIGdpdC1zcGVjaWZpYyBsb2dpYyBzaG91bGQgZ28gaGVyZS4K
IGNsYXNzIEdpdChTQ00pOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjd2QpOgpAQCAtNDk0LDkg
KzUyNCwxMyBAQCBjbGFzcyBHaXQoU0NNKToKICAgICBkZWYgX3N0YXR1c19yZWdleHAoc2VsZiwg
ZXhwZWN0ZWRfdHlwZXMpOgogICAgICAgICByZXR1cm4gJ14oP1A8c3RhdHVzPlslc10pXHQoP1A8
ZmlsZW5hbWU+LispJCcgJSBleHBlY3RlZF90eXBlcwogCi0gICAgZGVmIGFkZChzZWxmLCBwYXRo
KToKKyAgICBkZWYgYWRkKHNlbGYsIHBhdGgsIHJldHVybl9leGl0X2NvZGU9RmFsc2UpOgogICAg
ICAgICAjIHBhdGggaXMgYXNzdW1lZCB0byBiZSBjd2QgcmVsYXRpdmU/Ci0gICAgICAgIHNlbGYu
cnVuKFsiZ2l0IiwgImFkZCIsIHBhdGhdKQorICAgICAgICByZXR1cm4gc2VsZi5ydW4oWyJnaXQi
LCAiYWRkIiwgcGF0aF0sIHJldHVybl9leGl0X2NvZGU9cmV0dXJuX2V4aXRfY29kZSkKKworICAg
IGRlZiBkZWxldGUoc2VsZiwgcGF0aCk6CisgICAgICAgICMgcGF0aCBpcyBhc3N1bWVkIHRvIGJl
IGN3ZCByZWxhdGl2ZT8KKyAgICAgICAgcmV0dXJuIHNlbGYucnVuKFsiZ2l0IiwgInJtIiwgIi1m
IiwgcGF0aF0pCiAKICAgICBkZWYgX21lcmdlX2Jhc2Uoc2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNo
KToKICAgICAgICAgaWYgZ2l0X2NvbW1pdDoKQEAgLTUzNyw2ICs1NzEsOSBAQCBjbGFzcyBHaXQo
U0NNKToKICAgICBkZWYgYWRkZWRfZmlsZXMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnJ1
bl9zdGF0dXNfYW5kX2V4dHJhY3RfZmlsZW5hbWVzKHNlbGYuc3RhdHVzX2NvbW1hbmQoKSwgc2Vs
Zi5fc3RhdHVzX3JlZ2V4cCgiQSIpKQogCisgICAgZGVmIGRlbGV0ZWRfZmlsZXMoc2VsZik6Cisg
ICAgICAgIHJldHVybiBzZWxmLnJ1bl9zdGF0dXNfYW5kX2V4dHJhY3RfZmlsZW5hbWVzKHNlbGYu
c3RhdHVzX2NvbW1hbmQoKSwgc2VsZi5fc3RhdHVzX3JlZ2V4cCgiRCIpKQorCiAgICAgQHN0YXRp
Y21ldGhvZAogICAgIGRlZiBzdXBwb3J0c19sb2NhbF9jb21taXRzKCk6CiAgICAgICAgIHJldHVy
biBUcnVlCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
aGVja291dC9zY21fdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9zY21fdW5pdHRlc3QucHkKaW5kZXggMzZhMWQxY2ZkYjk0NDRjNzE1NDk4
NmM0NTJjYzNkOTE0ZjRjMWE1Ni4uMjZmOTFhYzBkYjM5MTY2YjFhNjE0MDliMzQ0MzU4OWE4OGI0
ZDQzNyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hl
Y2tvdXQvc2NtX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L3NjbV91bml0dGVzdC5weQpAQCAtMzg4LDYgKzM4OCwxMSBAQCBPY21Z
ZXgmcmVEJDtzTzgqRjlMKUIKICAgICAgICAgIyBDYW5ub3QgZGVsZXRlIGFnYWluLgogICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2VsZi5jaGVja291dC5hcHBseV9wYXRj
aCwgc2VsZi5fY3JlYXRlX3BhdGNoKGdpdF9iaW5hcnlfZGVsZXRpb24pKQogCisgICAgZGVmIF9z
aGFyZWRfdGVzdF9hZGRfcmVjdXJzaXZlbHkoc2VsZik6CisgICAgICAgIG9zLm1rZGlyKCJhZGRl
ZF9kaXIiKQorICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgiYWRkZWRfZGlyL2FkZGVk
X2ZpbGUiLCAibmV3IHN0dWZmIikKKyAgICAgICAgc2VsZi5zY20uYWRkKCJhZGRlZF9kaXIvYWRk
ZWRfZmlsZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiYWRkZWRfZGlyL2FkZGVkX2ZpbGUi
IGluIHNlbGYuc2NtLmFkZGVkX2ZpbGVzKCkpCiAKIGNsYXNzIFNWTlRlc3QoU0NNVGVzdCk6CiAK
QEAgLTYzMiw2ICs2MzcsMTggQEAgUTFkVEJ4MEFBQUI0Mml0ZzRHbGdZSmpHd01ERHlPRE14TUR3
MzRHQmdRRUFKUFFESkE9PQogICAgIGRlZiB0ZXN0X2NvbW1pdHRlcl9lbWFpbF9mb3JfcmV2aXNp
b24oc2VsZik6CiAgICAgICAgIHNlbGYuX3NoYXJlZF90ZXN0X2NvbW1pdHRlcl9lbWFpbF9mb3Jf
cmV2aXNpb24oKQogCisgICAgZGVmIHRlc3RfYWRkX3JlY3Vyc2l2ZWx5KHNlbGYpOgorICAgICAg
ICBzZWxmLl9zaGFyZWRfdGVzdF9hZGRfcmVjdXJzaXZlbHkoKQorCisgICAgZGVmIHRlc3RfZGVs
ZXRlKHNlbGYpOgorICAgICAgICBvcy5jaGRpcihzZWxmLnN2bl9jaGVja291dF9wYXRoKQorICAg
ICAgICBzZWxmLnNjbS5kZWxldGUoInRlc3RfZmlsZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZSgidGVzdF9maWxlIiBpbiBzZWxmLnNjbS5kZWxldGVkX2ZpbGVzKCkpCisKKyAgICBkZWYgdGVz
dF9wcm9wc2V0X3Byb3BnZXQoc2VsZik6CisgICAgICAgIGZpbGVwYXRoID0gb3MucGF0aC5qb2lu
KHNlbGYuc3ZuX2NoZWNrb3V0X3BhdGgsICJ0ZXN0X2ZpbGUiKQorICAgICAgICBzZWxmLnNjbS5w
cm9wc2V0KCJzdm46bWltZS10eXBlIiwgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsIGZpbGVw
YXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0i
LCBzZWxmLnNjbS5wcm9wZ2V0KCJzdm46bWltZS10eXBlIiwgZmlsZXBhdGgpKQogCiBjbGFzcyBH
aXRUZXN0KFNDTVRlc3QpOgogCkBAIC0xMDk4LDYgKzExMTUsMTQgQEAgY2xhc3MgR2l0U1ZOVGVz
dChTQ01UZXN0KToKICAgICBkZWYgdGVzdF9jb21taXR0ZXJfZW1haWxfZm9yX3JldmlzaW9uKHNl
bGYpOgogICAgICAgICBzZWxmLl9zaGFyZWRfdGVzdF9jb21taXR0ZXJfZW1haWxfZm9yX3Jldmlz
aW9uKCkKIAorICAgIGRlZiB0ZXN0X2FkZF9yZWN1cnNpdmVseShzZWxmKToKKyAgICAgICAgc2Vs
Zi5fc2hhcmVkX3Rlc3RfYWRkX3JlY3Vyc2l2ZWx5KCkKKworICAgIGRlZiB0ZXN0X2RlbGV0ZShz
ZWxmKToKKyAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQorICAgICAgICBzZWxmLnNj
bS5kZWxldGUoJ3Rlc3RfZmlsZV9jb21taXQxJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJ0
ZXN0X2ZpbGVfY29tbWl0MSIgaW4gc2VsZi5zY20uZGVsZXRlZF9maWxlcygpKQorCiAKIGlmIF9f
bmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9t
aXVtX3dlYmtpdF90ZXN0cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CmluZGV4IGYxMWI4YTk4
ZmJhMDU0YmRmNTc5MDhjODQ5NjMwZjE3ZTYwYTU1OTUuLmQ3NWI0M2M0ZDI5YzllMjI0MDFhZTc4
ZmM3Yjk2YjE2YTc2M2EwMDEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hy
b21pdW1fd2Via2l0X3Rlc3RzLnB5CkBAIC01OSw2ICs1OSw4IEBAIGltcG9ydCB3ZWJicm93c2Vy
CiBpbXBvcnQgemlwZmlsZQogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZl
IGltcG9ydCBydW5fY29tbWFuZAorZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtIGlt
cG9ydCBkZXRlY3Rfc2NtX3N5c3RlbQoraW1wb3J0IHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5z
Y20gYXMgc2NtCiAKIGltcG9ydCBwb3J0CiBmcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0
X2V4cGVjdGF0aW9ucwpAQCAtNjgsOSArNzAsNiBAQCBmcm9tIHRlc3RfdHlwZXMgaW1wb3J0IHRl
eHRfZGlmZgogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweS5sYXlvdXRfdGVzdHMu
IgogICAgICAgICAgICAgICAgICAgICAgICAgICJyZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90
ZXN0cyIpCiAKLSMgUmVwb3NpdG9yeSB0eXBlIGNvbnN0YW50cy4KLVJFUE9fU1ZOLCBSRVBPX1VO
S05PV04gPSByYW5nZSgyKQotCiBCQVNFTElORV9TVUZGSVhFUyA9IFsnLnR4dCcsICcucG5nJywg
Jy5jaGVja3N1bSddCiBSRUJBU0VMSU5FX1BMQVRGT1JNX09SREVSID0gWydtYWMnLCAnd2luJywg
J3dpbi14cCcsICd3aW4tdmlzdGEnLCAnbGludXgnXQogQVJDSElWRV9ESVJfTkFNRV9ESUNUID0g
eyd3aW4nOiAnd2Via2l0LXJlbCcsCkBAIC0yNDEsOCArMjQwLDcgQEAgY2xhc3MgUmViYXNlbGlu
ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fcGxhdGZvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGYWxzZSkKLQotICAgICAgICBzZWxmLl9yZXBvX3R5cGUgPSBzZWxmLl9nZXRfcmVw
b190eXBlKCkKKyAgICAgICAgc2VsZi5fc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0ob3MuZ2V0Y3dk
KCkpCiAKICAgICBkZWYgcnVuKHNlbGYsIGJhY2t1cCk6CiAgICAgICAgICIiIlJ1biByZWJhc2Vs
aW5lIHByb2Nlc3MuIiIiCkBAIC0yODUsMTUgKzI4Myw2IEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9i
amVjdCk6CiAgICAgZGVmIGdldF9yZWJhc2VsaW5pbmdfdGVzdHMoc2VsZik6CiAgICAgICAgIHJl
dHVybiBzZWxmLl9yZWJhc2VsaW5pbmdfdGVzdHMKIAotICAgICMgRklYTUU6IENhbGxlcnMgc2hv
dWxkIHVzZSBzY20ucHkgaW5zdGVhZC4KLSAgICBkZWYgX2dldF9yZXBvX3R5cGUoc2VsZik6Ci0g
ICAgICAgICIiIkdldCB0aGUgcmVwb3NpdG9yeSB0eXBlIHRoYXQgY2xpZW50IGlzIHVzaW5nLiIi
IgotICAgICAgICByZXR1cm5fY29kZSA9IHJ1bl9jb21tYW5kKFsnc3ZuJywgJ2luZm8nXSwgcmV0
dXJuX2V4aXRfY29kZT1UcnVlKQotICAgICAgICBpZiByZXR1cm5fY29kZSA9PSAwOgotICAgICAg
ICAgICAgcmV0dXJuIFJFUE9fU1ZOCi0KLSAgICAgICAgcmV0dXJuIFJFUE9fVU5LTk9XTgotCiAg
ICAgZGVmIF9jb21waWxlX3JlYmFzZWxpbmluZ190ZXN0cyhzZWxmKToKICAgICAgICAgIiIiQ29t
cGlsZSBsaXN0IG9mIHRlc3RzIHRoYXQgbmVlZCByZWJhc2VsaW5pbmcgZm9yIHRoZSBwbGF0Zm9y
bS4KIApAQCAtMzcxLDYgKzM2MCw5IEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9iamVjdCk6CiAgICAg
ICAgICAgTm9uZSBvbiBmYWlsdXJlCiAgICAgICAgICIiIgogCisgICAgICAgIGlmIHNlbGYuX29w
dGlvbnMuZm9yY2VfYXJjaGl2ZV91cmw6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fb3B0aW9u
cy5mb3JjZV9hcmNoaXZlX3VybAorCiAgICAgICAgIGRpcl9uYW1lID0gc2VsZi5fZ2V0X2FyY2hp
dmVfZGlyX25hbWUoc2VsZi5fcGxhdGZvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy53ZWJraXRfY2FuYXJ5KQogICAgICAgICBp
ZiBub3QgZGlyX25hbWU6CkBAIC00MzEsNyArNDIzLDcgQEAgY2xhc3MgUmViYXNlbGluZXIob2Jq
ZWN0KToKICAgICAgICAgICAgIF9sb2cuaW5mbygnVGVzdCAlZDogJXMnLCB0ZXN0X25vLCB0ZXN0
KQogCiAgICAgICAgICAgICBmb3VuZCA9IEZhbHNlCi0gICAgICAgICAgICBzdm5fZXJyb3IgPSBG
YWxzZQorICAgICAgICAgICAgc2NtX2Vycm9yID0gRmFsc2UKICAgICAgICAgICAgIHRlc3RfYmFz
ZW5hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KHRlc3QpWzBdCiAgICAgICAgICAgICBmb3Igc3VmZml4
IGluIEJBU0VMSU5FX1NVRkZJWEVTOgogICAgICAgICAgICAgICAgIGFyY2hpdmVfdGVzdF9uYW1l
ID0gKCdsYXlvdXQtdGVzdC1yZXN1bHRzLyVzLWFjdHVhbCVzJyAlCkBAIC00ODAsMTUgKzQ3Miwx
NiBAQCBjbGFzcyBSZWJhc2VsaW5lcihvYmplY3QpOgogCiAgICAgICAgICAgICAgICAgc2h1dGls
Lm1vdmUodGVtcF9uYW1lLCBleHBlY3RlZF9mdWxscGF0aCkKIAotICAgICAgICAgICAgICAgIGlm
IG5vdCBzZWxmLl9zdm5fYWRkKGV4cGVjdGVkX2Z1bGxwYXRoKToKLSAgICAgICAgICAgICAgICAg
ICAgc3ZuX2Vycm9yID0gVHJ1ZQorICAgICAgICAgICAgICAgIGlmIDAgIT0gc2VsZi5fc2NtLmFk
ZChleHBlY3RlZF9mdWxscGF0aCwgcmV0dXJuX2V4aXRfY29kZT1UcnVlKToKKyAgICAgICAgICAg
ICAgICAgICAgIyBGSVhNRTogcHJpbnQgZGV0YWlsZWQgZGlhZ25vc2UgbWVzc2FnZXMKKyAgICAg
ICAgICAgICAgICAgICAgc2NtX2Vycm9yID0gVHJ1ZQogICAgICAgICAgICAgICAgIGVsaWYgc3Vm
Zml4ICE9ICcuY2hlY2tzdW0nOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9jcmVhdGVfaHRt
bF9iYXNlbGluZV9maWxlcyhleHBlY3RlZF9mdWxscGF0aCkKIAogICAgICAgICAgICAgaWYgbm90
IGZvdW5kOgogICAgICAgICAgICAgICAgIF9sb2cud2FybignICBObyBuZXcgYmFzZWxpbmVzIGZv
dW5kIGluIGFyY2hpdmUuJykKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYg
c3ZuX2Vycm9yOgorICAgICAgICAgICAgICAgIGlmIHNjbV9lcnJvcjoKICAgICAgICAgICAgICAg
ICAgICAgX2xvZy53YXJuKCcgIEZhaWxlZCB0byBhZGQgYmFzZWxpbmVzIHRvIFNWTi4nKQogICAg
ICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIF9sb2cuaW5mbygnICBSZWJh
c2VsaW5lIHN1Y2NlZWRlZC4nKQpAQCAtNTcyLDE1ICs1NjUsNyBAQCBjbGFzcyBSZWJhc2VsaW5l
cihvYmplY3QpOgogCiAgICAgICAgIGlmIG5vdCBmaWxlbmFtZSBvciBub3Qgb3MucGF0aC5pc2Zp
bGUoZmlsZW5hbWUpOgogICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgaWYgc2VsZi5fcmVw
b190eXBlID09IFJFUE9fU1ZOOgotICAgICAgICAgICAgcGFyZW50X2RpciwgYmFzZW5hbWUgPSBv
cy5wYXRoLnNwbGl0KGZpbGVuYW1lKQotICAgICAgICAgICAgb3JpZ2luYWxfZGlyID0gb3MuZ2V0
Y3dkKCkKLSAgICAgICAgICAgIG9zLmNoZGlyKHBhcmVudF9kaXIpCi0gICAgICAgICAgICBydW5f
c2hlbGwoWydzdm4nLCAnZGVsZXRlJywgJy0tZm9yY2UnLCBiYXNlbmFtZV0sIEZhbHNlKQotICAg
ICAgICAgICAgb3MuY2hkaXIob3JpZ2luYWxfZGlyKQotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgb3MucmVtb3ZlKGZpbGVuYW1lKQorICAgICAgICBzZWxmLl9zY20uZGVsZXRlKGZpbGVuYW1l
KQogCiAgICAgZGVmIF91cGRhdGVfcmViYXNlbGluZWRfdGVzdHNfaW5fZmlsZShzZWxmLCBiYWNr
dXApOgogICAgICAgICAiIiJVcGRhdGUgdGhlIHJlYmFzZWxpbmVkIHRlc3RzIGluIHRlc3QgZXhw
ZWN0YXRpb25zIGZpbGUuCkBAIC02MDksOTEgKzU5NCwxMCBAQCBjbGFzcyBSZWJhc2VsaW5lcihv
YmplY3QpOgogICAgICAgICAgICAgIyBPciBpcyBuZXdfZXhwZWN0YXRpb25zIGFsd2F5cyBhIGJ5
dGUgYXJyYXk/CiAgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgInciKSBhcyBmaWxlOgogICAg
ICAgICAgICAgICAgIGZpbGUud3JpdGUobmV3X2V4cGVjdGF0aW9ucykKKyAgICAgICAgICAgIHNl
bGYuX3NjbS5hZGQocGF0aCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIF9sb2cuaW5mbygn
Tm8gdGVzdCB3YXMgcmViYXNlbGluZWQgc28gbm90aGluZyB0byByZW1vdmUuJykKIAotICAgICMg
RklYTUU6IENhbGxlcnMgc2hvdWxkIG1vdmUgdG8gU0NNLmFkZCBpbnN0ZWFkLgotICAgIGRlZiBf
c3ZuX2FkZChzZWxmLCBmaWxlbmFtZSk6Ci0gICAgICAgICIiIkFkZCB0aGUgZmlsZSB0byBTVk4g
cmVwb3NpdG9yeS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgIGZpbGVuYW1lOiBmdWxsIHBh
dGggb2YgdGhlIGZpbGUgdG8gYWRkLgotCi0gICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgVHJ1
ZSBpZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cyBpbiBTVk4gb3IgaXMgc3VjZXNzZnVsbHkgYWRk
ZWQKLSAgICAgICAgICAgICAgIHRvIFNWTi4KLSAgICAgICAgICBGYWxzZSBvdGhlcndpc2UuCi0g
ICAgICAgICIiIgotCi0gICAgICAgIGlmIG5vdCBmaWxlbmFtZToKLSAgICAgICAgICAgIHJldHVy
biBGYWxzZQotCi0gICAgICAgIHBhcmVudF9kaXIsIGJhc2VuYW1lID0gb3MucGF0aC5zcGxpdChm
aWxlbmFtZSkKLSAgICAgICAgaWYgc2VsZi5fcmVwb190eXBlICE9IFJFUE9fU1ZOIG9yIHBhcmVu
dF9kaXIgPT0gZmlsZW5hbWU6Ci0gICAgICAgICAgICBfbG9nLmluZm8oIk5vIHN2biBjaGVja291
dCBmb3VuZCwgc2tpcCBzdm4gYWRkLiIpCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAg
ICAgIG9yaWdpbmFsX2RpciA9IG9zLmdldGN3ZCgpCi0gICAgICAgIG9zLmNoZGlyKHBhcmVudF9k
aXIpCi0gICAgICAgIHN0YXR1c19vdXRwdXQgPSBydW5fc2hlbGwoWydzdm4nLCAnc3RhdHVzJywg
YmFzZW5hbWVdLCBGYWxzZSkKLSAgICAgICAgb3MuY2hkaXIob3JpZ2luYWxfZGlyKQotICAgICAg
ICBvdXRwdXQgPSBzdGF0dXNfb3V0cHV0LnVwcGVyKCkKLSAgICAgICAgaWYgb3V0cHV0LnN0YXJ0
c3dpdGgoJ0EnKSBvciBvdXRwdXQuc3RhcnRzd2l0aCgnTScpOgotICAgICAgICAgICAgX2xvZy5p
bmZvKCcgIEZpbGUgYWxyZWFkeSBhZGRlZCB0byBTVk46ICIlcyInLCBmaWxlbmFtZSkKLSAgICAg
ICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAgICAgaWYgb3V0cHV0LmZpbmQoJ0lTIE5PVCBBIFdP
UktJTkcgQ09QWScpID49IDA6Ci0gICAgICAgICAgICBfbG9nLmluZm8oJyAgRmlsZSBpcyBub3Qg
YSB3b3JraW5nIGNvcHksIGFkZCBpdHMgcGFyZW50OiAiJXMiJywKLSAgICAgICAgICAgICAgICAg
ICAgICBwYXJlbnRfZGlyKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3N2bl9hZGQocGFyZW50
X2RpcikKLQotICAgICAgICBvcy5jaGRpcihwYXJlbnRfZGlyKQotICAgICAgICBhZGRfb3V0cHV0
ID0gcnVuX3NoZWxsKFsnc3ZuJywgJ2FkZCcsIGJhc2VuYW1lXSwgVHJ1ZSkKLSAgICAgICAgb3Mu
Y2hkaXIob3JpZ2luYWxfZGlyKQotICAgICAgICBvdXRwdXQgPSBhZGRfb3V0cHV0LnVwcGVyKCku
cnN0cmlwKCkKLSAgICAgICAgaWYgb3V0cHV0LnN0YXJ0c3dpdGgoJ0EnKSBhbmQgb3V0cHV0LmZp
bmQoYmFzZW5hbWUudXBwZXIoKSkgPj0gMDoKLSAgICAgICAgICAgIF9sb2cuaW5mbygnICBBZGRl
ZCBuZXcgZmlsZTogIiVzIicsIGZpbGVuYW1lKQotICAgICAgICAgICAgc2VsZi5fc3ZuX3Byb3Bf
c2V0KGZpbGVuYW1lKQotICAgICAgICAgICAgcmV0dXJuIFRydWUKLQotICAgICAgICBpZiAobm90
IHN0YXR1c19vdXRwdXQpIGFuZCAoYWRkX291dHB1dC51cHBlcigpLmZpbmQoCi0gICAgICAgICAg
ICAnQUxSRUFEWSBVTkRFUiBWRVJTSU9OIENPTlRST0wnKSA+PSAwKToKLSAgICAgICAgICAgIF9s
b2cuaW5mbygnICBGaWxlIGFscmVhZHkgdW5kZXIgU1ZOIGFuZCBoYXMgbm8gY2hhbmdlOiAiJXMi
JywKLSAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSkKLSAgICAgICAgICAgIHJldHVybiBU
cnVlCi0KLSAgICAgICAgX2xvZy53YXJuKCcgIEZhaWxlZCB0byBhZGQgZmlsZSB0byBTVk46ICIl
cyInLCBmaWxlbmFtZSkKLSAgICAgICAgX2xvZy53YXJuKCcgIFN2biBzdGF0dXMgb3V0cHV0OiAi
JXMiJywgc3RhdHVzX291dHB1dCkKLSAgICAgICAgX2xvZy53YXJuKCcgIFN2biBhZGQgb3V0cHV0
OiAiJXMiJywgYWRkX291dHB1dCkKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgX3N2
bl9wcm9wX3NldChzZWxmLCBmaWxlbmFtZSk6Ci0gICAgICAgICIiIlNldCB0aGUgYmFzZWxpbmUg
cHJvcGVydHkKLQotICAgICAgICBBcmdzOgotICAgICAgICAgIGZpbGVuYW1lOiBmdWxsIHBhdGgg
b2YgdGhlIGZpbGUgdG8gYWRkLgotCi0gICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgVHJ1ZSBp
ZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cyBpbiBTVk4gb3IgaXMgc3VjZXNzZnVsbHkgYWRkZWQK
LSAgICAgICAgICAgICAgIHRvIFNWTi4KLSAgICAgICAgICBGYWxzZSBvdGhlcndpc2UuCi0gICAg
ICAgICIiIgotICAgICAgICBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KGZpbGVuYW1lKVsxXS51cHBl
cigpCi0gICAgICAgIGlmIGV4dCAhPSAnLlRYVCcgYW5kIGV4dCAhPSAnLlBORycgYW5kIGV4dCAh
PSAnLkNIRUNLU1VNJzoKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIHBhcmVudF9kaXIs
IGJhc2VuYW1lID0gb3MucGF0aC5zcGxpdChmaWxlbmFtZSkKLSAgICAgICAgb3JpZ2luYWxfZGly
ID0gb3MuZ2V0Y3dkKCkKLSAgICAgICAgb3MuY2hkaXIocGFyZW50X2RpcikKLSAgICAgICAgaWYg
ZXh0ID09ICcuUE5HJzoKLSAgICAgICAgICAgIGNtZCA9IFsnc3ZuJywgJ3BzZXQnLCAnc3ZuOm1p
bWUtdHlwZScsICdpbWFnZS9wbmcnLCBiYXNlbmFtZV0KLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIGNtZCA9IFsnc3ZuJywgJ3BzZXQnLCAnc3ZuOmVvbC1zdHlsZScsICdMRicsIGJhc2VuYW1l
XQotCi0gICAgICAgIF9sb2cuZGVidWcoJyAgU2V0IHN2biBwcm9wOiAlcycsICcgJy5qb2luKGNt
ZCkpCi0gICAgICAgIHJ1bl9zaGVsbChjbWQsIEZhbHNlKQotICAgICAgICBvcy5jaGRpcihvcmln
aW5hbF9kaXIpCi0KICAgICBkZWYgX2NyZWF0ZV9odG1sX2Jhc2VsaW5lX2ZpbGVzKHNlbGYsIGJh
c2VsaW5lX2Z1bGxwYXRoKToKICAgICAgICAgIiIiQ3JlYXRlIGJhc2VsaW5lIGZpbGVzIChvbGQs
IG5ldyBhbmQgZGlmZikgaW4gaHRtbCBkaXJlY3RvcnkuCiAKQEAgLTc2OSw3ICs2NzMsNiBAQCBj
bGFzcyBSZWJhc2VsaW5lcihvYmplY3QpOgogICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoJyAg
SHRtbDogcmVtb3ZlZCB0ZW1wIGNvbmZpZyBkaXI6ICIlcyIuJywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvZ3VzX2RpcikKIAotCiBjbGFzcyBIdG1sR2VuZXJhdG9yKG9iamVjdCk6CiAg
ICAgIiIiQ2xhc3MgdG8gZ2VuZXJhdGUgcmViYXNlbGluaW5nIHJlc3VsdCBjb21wYXJpc29uIGh0
bWwuIiIiCiAKQEAgLTEwMDEsNiArOTA0LDExIEBAIGRlZiBtYWluKCk6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9J2luY2x1ZGUgZGVidWctbGV2ZWwgbG9nZ2luZy4nKQogCisgICAgb3B0aW9uX3Bh
cnNlci5hZGRfb3B0aW9uKCctcScsICctLXF1aWV0JywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nU3VwcmVz
cyByZXN1bHQgSFRNTCB2aWV3aW5nJykKKwogICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbign
LXAnLCAnLS1wbGF0Zm9ybXMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
PSdtYWMsd2luLHdpbi14cCx3aW4tdmlzdGEsbGludXgnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBoZWxwPSgnQ29tbWEgZGVsaW1pdGVkIGxpc3Qgb2YgcGxhdGZvcm1zICcKQEAgLTEw
MTEsNiArOTE5LDEwIEBAIGRlZiBtYWluKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdsYXlvdXRfdGVzdF9yZXN1bHRzJyksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGhlbHA9KCdVcmwgdG8gZmluZCB0aGUgbGF5b3V0IHRlc3QgcmVzdWx0IGFyY2hpdmUn
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgZmlsZS4nKSkKKyAgICBvcHRp
b25fcGFyc2VyLmFkZF9vcHRpb24oJy1VJywgJy0tZm9yY2VfYXJjaGl2ZV91cmwnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PSgnJyksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGhlbHA9KCdVcmwgb2YgcmVzdWx0IHppcCBmaWxlLiBUaGlzIG9wdGlvbiBpcyBm
b3IgZGVidWdnaW5nICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B1cnBv
c2VzJykpCiAKICAgICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oJy13JywgJy0td2Via2l0X2Nh
bmFyeScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScs
CkBAIC0xMTA2LDcgKzEwMTgsOCBAQCBkZWYgbWFpbigpOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWJhc2VsaW5lX3BsYXRmb3JtcywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmViYXNlbGluaW5nX3Rlc3RzKQogICAgIGh0bWxfZ2VuZXJhdG9yLmdl
bmVyYXRlX2h0bWwoKQotICAgIGh0bWxfZ2VuZXJhdG9yLnNob3dfaHRtbCgpCisgICAgaWYgbm90
IG9wdGlvbnMucXVpZXQ6CisgICAgICAgIGh0bWxfZ2VuZXJhdG9yLnNob3dfaHRtbCgpCiAgICAg
bG9nX2Rhc2hlZF9zdHJpbmcoJ1JlYmFzZWxpbmluZyByZXN1bHQgY29tcGFyaXNvbiBkb25lJywg
Tm9uZSkKIAogICAgIHN5cy5leGl0KDApCg==
</data>
<flag name="review"
          id="47000"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>