<?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>38063</bug_id>
          
          <creation_ts>2010-04-23 15:59:30 -0700</creation_ts>
          <short_desc>new-run-webkit-tests complains about missing pixel results instead of plopping down new expectations</short_desc>
          <delta_ts>2011-06-29 15:26:16 -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>
          
          <blocked>34984</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>216605</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-04-23 15:59:30 -0700</bug_when>
    <thetext>Run a test that does not have any -expected.png or -expected.checksum files checked in with the &quot;-p&quot; option.  old-run-webkit-tests generates a new .png and .checksum file and sticks them into the appropriate place (LayoutTests/platform/mac when running on my mac).  new-run-webkit-tests fails the test and complains about missing expectation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216826</commentid>
    <comment_count>1</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-25 07:57:47 -0700</bug_when>
    <thetext>Moving to the old-run-webkit-tests behavior is fine with me as long as we print something out that we&apos;re doing so. I don&apos;t like that old-run-webkit-tests does so silently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427668</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-26 23:16:11 -0700</bug_when>
    <thetext>*** Bug 62497 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428524</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-27 18:03:57 -0700</bug_when>
    <thetext>NRWT does the same thing for text results.  Do you think we should switch both to match the ORWT behavior, or do you think pixel tests should work different than text tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428702</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-28 01:09:33 -0700</bug_when>
    <thetext>I recommend switching both to the ORWT behavior and adding a --no-new-test-results flag.  Chromium has a wrapper script around NRWT for their bots iirc.  We could add that flag to that wrapper for easy transition.  We could also make the chromium port imply --no-new-test-results for the time-being (or alternatively, make the run-webkit-tests wrapper imply --new-test-results when running new-run-webkit-tests.  That&apos;s part of what it&apos;s there for, to make this migration easier:
http://trac.webkit.org/browser/trunk/Tools/Scripts/run-webkit-tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428833</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-28 06:13:01 -0700</bug_when>
    <thetext>I&apos;d prefer having --no-new-test-results since that behavior seems to be only useful in bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429117</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-28 13:57:35 -0700</bug_when>
    <thetext>Ok.  Will do.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429690</commentid>
    <comment_count>7</comment_count>
      <attachid>99108</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-29 09:58:06 -0700</bug_when>
    <thetext>Created attachment 99108
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429760</commentid>
    <comment_count>8</comment_count>
      <attachid>99121</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-29 12:00:43 -0700</bug_when>
    <thetext>Created attachment 99121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429761</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-29 12:01:46 -0700</bug_when>
    <thetext>There are some niceties missing (as noted in the ChangeLog).  Also the print statements that say which files are being created don&apos;t seem to be appearing.  If I bump the log level, then they show up turning unit testing, which is annoying.  Anyway, more polish required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429805</commentid>
    <comment_count>10</comment_count>
      <attachid>99121</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-06-29 12:57:57 -0700</bug_when>
    <thetext>Comment on attachment 99121
Patch

Generally looks good ... R+&apos;ing it although there are some nits and at least one change that looks correct but unnecessary that I have a question about.

View in context: https://bugs.webkit.org/attachment.cgi?id=99121&amp;action=review

&gt; Tools/Scripts/webkitpy/common/net/layouttestresults.py:164
&gt; +        return [result for result in self._test_results if result.has_failure_matching_types(*failure_types)]

Why make this change (and the one in test_results.py)? It seems unnecessary.

&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:309
&gt; +            dest=&quot;save_missing_results&quot;, default=True,

Nit: might this be better as dest=&quot;new_test_results&quot;? That&apos;s more in keeping with how we normally name options.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager.py:798
&gt; +        failures = self._get_failures(result_summary, include_crashes=False, include_missing=False)

Hm. I&apos;m not sure about this change, given that we can have flaky MISSING results if a text-only test crashes or fails prior to calling dumpAsText(). I agree that there&apos;s no point in retrying a truly missing test, and maybe the flaky case is rare enough that this is the right thing to do.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager.py:936
&gt; +    def _get_failures(self, result_summary, include_crashes=True, include_missing=True):

Nit: I&apos;d probably leave off the default values, since it&apos;s an internal function and it looks like they&apos;re not being used anyway.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:131
&gt; +        if self._options.save_missing_results:

Change to options.new_test_results as per above?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:145
&gt; +    def _add_missing_baselines(self, test_result, driver_output):

Nit: maybe add comments or docstrings indicating which options trigger _add_missing_baselines and _overwrite_baselines? I know you can figure this out from looking at the callers, but it might be helpful to list them here as well.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:150
&gt; +            # than for text tests?

If I remember correctly, with old-run-webkit-tests, all new test results go in the generic directories alongside the test, and you need --add-platform-exceptions to tell it to put the new results in the platform dir instead.

Also, I suppose theoretically at least some render tree dumps could be generic (enough for more platforms, anyway).

Regardless, there&apos;s no way to distinguish a render tree dump from a non-rendertree dump without parsing the text output, and I&apos;d prefer to not have to start doing that. 

Maybe we can modify DRT to output custom headers when dumping the layer tree?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:160
&gt;          # DumpRenderTree may not output utf-8 text (e.g. webarchives).

As an aside, it turns out webarchives are just XML files and I think they&apos;re always UTF-8 as a result. Should probably update this comment at some point ...

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:190
&gt; +            _log.debug(&apos;Writing new baseline result &quot;%s&quot;&apos; % output_path)

I&apos;m tempted to say that these should be _log.info() calls ... that would address Ojan&apos;s comments about the &quot;silent&quot; updates, and probably is generally more useful.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:193
&gt; +            _log.debug(&apos;Resetting baseline result &quot;%s&quot;&apos; % output_path)

Same as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429823</commentid>
    <comment_count>11</comment_count>
      <attachid>99121</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-29 13:29:42 -0700</bug_when>
    <thetext>Comment on attachment 99121
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=99121&amp;action=review

&gt;&gt; Tools/Scripts/webkitpy/common/net/layouttestresults.py:164
&gt;&gt; -        return [result for result in self._test_results if result.has_failure_matching_types(failure_types)]
&gt;&gt; +        return [result for result in self._test_results if result.has_failure_matching_types(*failure_types)]
&gt; 
&gt; Why make this change (and the one in test_results.py)? It seems unnecessary.

I just did that to make the code less ugly.  The varags approach looked prettier than calling the function like foo([ddd]).

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:309
&gt;&gt; +        optparse.make_option(&quot;--no-new-test-results&quot;, action=&quot;store_false&quot;,
&gt;&gt; +            dest=&quot;save_missing_results&quot;, default=True,
&gt; 
&gt; Nit: might this be better as dest=&quot;new_test_results&quot;? That&apos;s more in keeping with how we normally name options.

Fixed.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager.py:798
&gt;&gt; -        failures = self._get_failures(result_summary, include_crashes=False)
&gt;&gt; +        failures = self._get_failures(result_summary, include_crashes=False, include_missing=False)
&gt; 
&gt; Hm. I&apos;m not sure about this change, given that we can have flaky MISSING results if a text-only test crashes or fails prior to calling dumpAsText(). I agree that there&apos;s no point in retrying a truly missing test, and maybe the flaky case is rare enough that this is the right thing to do.

Without this check, the behavior is really braindead because the first pass generates the results and then the second pass thinks the test passes.  If this is a big source of flakiness, we can re-evaluate.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager.py:936
&gt;&gt; -    def _get_failures(self, result_summary, include_crashes):
&gt;&gt; +    def _get_failures(self, result_summary, include_crashes=True, include_missing=True):
&gt; 
&gt; Nit: I&apos;d probably leave off the default values, since it&apos;s an internal function and it looks like they&apos;re not being used anyway.

Ok.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:131
&gt;&gt; +        if self._options.save_missing_results:
&gt; 
&gt; Change to options.new_test_results as per above?

Done.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:145
&gt;&gt; -    def _save_baselines(self, driver_output):
&gt;&gt; +    def _add_missing_baselines(self, test_result, driver_output):
&gt; 
&gt; Nit: maybe add comments or docstrings indicating which options trigger _add_missing_baselines and _overwrite_baselines? I know you can figure this out from looking at the callers, but it might be helpful to list them here as well.

We&apos;ve been trying to follow the WebKit style in document webkitpy, which is to avoid including comments that are redundant with the code and/or can become out of date when the code changes.  Listing who the callers of a function are and why they call this function seems to fall into that category.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:150
&gt;&gt; +            # than for text tests?
&gt; 
&gt; If I remember correctly, with old-run-webkit-tests, all new test results go in the generic directories alongside the test, and you need --add-platform-exceptions to tell it to put the new results in the platform dir instead.
&gt; 
&gt; Also, I suppose theoretically at least some render tree dumps could be generic (enough for more platforms, anyway).
&gt; 
&gt; Regardless, there&apos;s no way to distinguish a render tree dump from a non-rendertree dump without parsing the text output, and I&apos;d prefer to not have to start doing that. 
&gt; 
&gt; Maybe we can modify DRT to output custom headers when dumping the layer tree?

I don&apos;t think your recollection of how old-run-webkit-tests works is correct.  Tests that produce render tree dumps and/or images go into the platform-specific directory by default and normal text tests go into the generic directory.  (Where &quot;generic&quot; means outside the &quot;platform&quot; directory.)  I&apos;m not sure who it figures that out.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:160
&gt;&gt;          # DumpRenderTree may not output utf-8 text (e.g. webarchives).
&gt; 
&gt; As an aside, it turns out webarchives are just XML files and I think they&apos;re always UTF-8 as a result. Should probably update this comment at some point ...

Ok.  I don&apos;t really understand that, so I&apos;ll let you update the comment next time you&apos;re editing this file so folks who &quot;svn blame&quot; will ask you about it instead of me.  :)

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:190
&gt;&gt; +            _log.debug(&apos;Writing new baseline result &quot;%s&quot;&apos; % output_path)
&gt; 
&gt; I&apos;m tempted to say that these should be _log.info() calls ... that would address Ojan&apos;s comments about the &quot;silent&quot; updates, and probably is generally more useful.

Yes.  The trouble was that then they showed up in the test-webkitpy output!  I&apos;ll fix that in a subsequent patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429828</commentid>
    <comment_count>12</comment_count>
      <attachid>99139</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-29 13:37:35 -0700</bug_when>
    <thetext>Created attachment 99139
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429926</commentid>
    <comment_count>13</comment_count>
      <attachid>99139</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-29 15:26:11 -0700</bug_when>
    <thetext>Comment on attachment 99139
Patch for landing

Clearing flags on attachment: 99139

Committed r90055: &lt;http://trac.webkit.org/changeset/90055&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429927</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-29 15:26:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99108</attachid>
            <date>2011-06-29 09:58:06 -0700</date>
            <delta_ts>2011-06-29 12:00:39 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-38063-20110629095805.patch</filename>
            <type>text/plain</type>
            <size>8776</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0
cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5
b3V0dGVzdHJlc3VsdHMucHkJKHJldmlzaW9uIDkwMDE5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0x
NjEsNyArMTYxLDcgQEAgY2xhc3MgTGF5b3V0VGVzdFJlc3VsdHMob2JqZWN0KToKICAgICAgICAg
cmV0dXJuIHNlbGYuX3Rlc3RfcmVzdWx0cwogCiAgICAgZGVmIHJlc3VsdHNfbWF0Y2hpbmdfZmFp
bHVyZV90eXBlcyhzZWxmLCBmYWlsdXJlX3R5cGVzKToKLSAgICAgICAgcmV0dXJuIFtyZXN1bHQg
Zm9yIHJlc3VsdCBpbiBzZWxmLl90ZXN0X3Jlc3VsdHMgaWYgcmVzdWx0Lmhhc19mYWlsdXJlX21h
dGNoaW5nX3R5cGVzKGZhaWx1cmVfdHlwZXMpXQorICAgICAgICByZXR1cm4gW3Jlc3VsdCBmb3Ig
cmVzdWx0IGluIHNlbGYuX3Rlc3RfcmVzdWx0cyBpZiByZXN1bHQuaGFzX2ZhaWx1cmVfbWF0Y2hp
bmdfdHlwZXMoKmZhaWx1cmVfdHlwZXMpXQogCiAgICAgZGVmIHRlc3RzX21hdGNoaW5nX2ZhaWx1
cmVfdHlwZXMoc2VsZiwgZmFpbHVyZV90eXBlcyk6CiAgICAgICAgIHJldHVybiBbcmVzdWx0LmZp
bGVuYW1lIGZvciByZXN1bHQgaW4gc2VsZi5yZXN1bHRzX21hdGNoaW5nX2ZhaWx1cmVfdHlwZXMo
ZmFpbHVyZV90eXBlcyldCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9ydW5fd2Via2l0X3Rlc3RzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkJKHJldmlzaW9uIDkwMDE5KQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQko
d29ya2luZyBjb3B5KQpAQCAtMjc5LDggKzI3OSw2IEBAIGRlZiBwYXJzZV9hcmdzKGFyZ3M9Tm9u
ZSk6CiAgICAgIyBGSVhNRTogTmVlZDogLS1zYW1wbGUtb24tdGltZW91dCBSdW4gc2FtcGxlIG9u
IHRpbWVvdXQKIAogICAgIG9sZF9ydW5fd2Via2l0X3Rlc3RzX2NvbXBhdCA9IFsKLSAgICAgICAg
IyBOUldUIGRvZXNuJ3QgZ2VuZXJhdGUgcmVzdWx0cyBieSBkZWZhdWx0IGFueXdheS4KLSAgICAg
ICAgX2NvbXBhdF9zaGltX29wdGlvbigiLS1uby1uZXctdGVzdC1yZXN1bHRzIiksCiAgICAgICAg
ICMgTlJXVCBkb2Vzbid0IHNhbXBsZSBvbiB0aW1lb3V0IHlldCBhbnl3YXkuCiAgICAgICAgIF9j
b21wYXRfc2hpbV9vcHRpb24oIi0tbm8tc2FtcGxlLW9uLXRpbWVvdXQiKSwKICAgICAgICAgIyBG
SVhNRTogTlJXVCBuZWVkcyB0byBzdXBwb3J0IHJlbW90ZSBsaW5rcyBldmVudHVhbGx5LgpAQCAt
MzA3LDYgKzMwNSw5IEBAIGRlZiBwYXJzZV9hcmdzKGFyZ3M9Tm9uZSk6CiAgICAgICAgIG9wdHBh
cnNlLm1ha2Vfb3B0aW9uKCItLXJlc2V0LXJlc3VsdHMiLCBhY3Rpb249InN0b3JlX3RydWUiLAog
ICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgaGVscD0iUmVzZXQgYW55IGV4aXN0aW5nIGJhc2Vs
aW5lcyB0byB0aGUgIgogICAgICAgICAgICAgICAgICAiZ2VuZXJhdGVkIHJlc3VsdHMiKSwKKyAg
ICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tbm8tbmV3LXRlc3QtcmVzdWx0cyIsIGFjdGlv
bj0ic3RvcmVfZmFsc2UiLAorICAgICAgICAgICAgZGVzdD0ic2F2ZV9taXNzaW5nX3Jlc3VsdHMi
LCBkZWZhdWx0PVRydWUsCisgICAgICAgICAgICBoZWxwPSJEb24ndCBjcmVhdGUgbmV3IGJhc2Vs
aW5lcyB3aGVuIG5vIGV4cGVjdGVkIHJlc3VsdHMgZXhpc3QiKSwKICAgICAgICAgb3B0cGFyc2Uu
bWFrZV9vcHRpb24oIi0tc2tpcC1mYWlsaW5nLXRlc3RzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwK
ICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsIGhlbHA9IlNraXAgdGVzdHMgdGhhdCBhcmUgZXhw
ZWN0ZWQgdG8gZmFpbC4gIgogICAgICAgICAgICAgICAgICAiTm90ZTogV2hlbiB1c2luZyB0aGlz
IG9wdGlvbiwgeW91IG1pZ2h0IG1pc3MgbmV3IGNyYXNoZXMgIgpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlci5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS9tYW5hZ2VyLnB5CShyZXZpc2lvbiA5MDAxOSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXIucHkJKHdvcmtpbmcgY29weSkKQEAg
LTc5NSw3ICs3OTUsNyBAQCBjbGFzcyBNYW5hZ2VyOgogCiAgICAgICAgICMgV2UgZXhjbHVkZSB0
aGUgY3Jhc2hlcyBmcm9tIHRoZSBsaXN0IG9mIHJlc3VsdHMgdG8gcmV0cnksIGJlY2F1c2UKICAg
ICAgICAgIyB3ZSB3YW50IHRvIHRyZWF0IGV2ZW4gYSBwb3RlbnRpYWxseSBmbGFreSBjcmFzaCBh
cyBhbiBlcnJvci4KLSAgICAgICAgZmFpbHVyZXMgPSBzZWxmLl9nZXRfZmFpbHVyZXMocmVzdWx0
X3N1bW1hcnksIGluY2x1ZGVfY3Jhc2hlcz1GYWxzZSkKKyAgICAgICAgZmFpbHVyZXMgPSBzZWxm
Ll9nZXRfZmFpbHVyZXMocmVzdWx0X3N1bW1hcnksIGluY2x1ZGVfY3Jhc2hlcz1GYWxzZSwgaW5j
bHVkZV9taXNzaW5nPUZhbHNlKQogICAgICAgICByZXRyeV9zdW1tYXJ5ID0gcmVzdWx0X3N1bW1h
cnkKICAgICAgICAgd2hpbGUgKGxlbihmYWlsdXJlcykgYW5kIHNlbGYuX29wdGlvbnMucmV0cnlf
ZmFpbHVyZXMgYW5kCiAgICAgICAgICAgICBub3Qgc2VsZi5fcmV0cnlpbmcgYW5kIG5vdCBpbnRl
cnJ1cHRlZCk6CkBAIC04MDYsNyArODA2LDcgQEAgY2xhc3MgTWFuYWdlcjoKICAgICAgICAgICAg
IHJldHJ5X3N1bW1hcnkgPSBSZXN1bHRTdW1tYXJ5KHNlbGYuX2V4cGVjdGF0aW9ucywgZmFpbHVy
ZXMua2V5cygpKQogICAgICAgICAgICAgIyBOb3RlIHRoYXQgd2UgaW50ZW50aW9uYWxseSBpZ25v
cmUgdGhlIHJldHVybiB2YWx1ZSBoZXJlLgogICAgICAgICAgICAgc2VsZi5fcnVuX3Rlc3RzKGZh
aWx1cmVzLmtleXMoKSwgcmV0cnlfc3VtbWFyeSkKLSAgICAgICAgICAgIGZhaWx1cmVzID0gc2Vs
Zi5fZ2V0X2ZhaWx1cmVzKHJldHJ5X3N1bW1hcnksIGluY2x1ZGVfY3Jhc2hlcz1UcnVlKQorICAg
ICAgICAgICAgZmFpbHVyZXMgPSBzZWxmLl9nZXRfZmFpbHVyZXMocmV0cnlfc3VtbWFyeSkKIAog
ICAgICAgICBlbmRfdGltZSA9IHRpbWUudGltZSgpCiAKQEAgLTkzMyw3ICs5MzMsNyBAQCBjbGFz
cyBNYW5hZ2VyOgogICAgICAgICAgICAgaWYgc2VsZi5fZnMuaXNkaXIoc2VsZi5fZnMuam9pbihs
YXlvdXRfdGVzdHNfZGlyLCBkaXJuYW1lKSk6CiAgICAgICAgICAgICAgICAgc2VsZi5fZnMucm10
cmVlKHNlbGYuX2ZzLmpvaW4oc2VsZi5fcmVzdWx0c19kaXJlY3RvcnksIGRpcm5hbWUpKQogCi0g
ICAgZGVmIF9nZXRfZmFpbHVyZXMoc2VsZiwgcmVzdWx0X3N1bW1hcnksIGluY2x1ZGVfY3Jhc2hl
cyk6CisgICAgZGVmIF9nZXRfZmFpbHVyZXMoc2VsZiwgcmVzdWx0X3N1bW1hcnksIGluY2x1ZGVf
Y3Jhc2hlcz1UcnVlLCBpbmNsdWRlX21pc3Npbmc9VHJ1ZSk6CiAgICAgICAgICIiIkZpbHRlcnMg
YSBkaWN0IG9mIHJlc3VsdHMgYW5kIHJldHVybnMgb25seSB0aGUgZmFpbHVyZXMuCiAKICAgICAg
ICAgQXJnczoKQEAgLTk0OCw3ICs5NDgsOCBAQCBjbGFzcyBNYW5hZ2VyOgogICAgICAgICBmYWls
ZWRfcmVzdWx0cyA9IHt9CiAgICAgICAgIGZvciB0ZXN0LCByZXN1bHQgaW4gcmVzdWx0X3N1bW1h
cnkudW5leHBlY3RlZF9yZXN1bHRzLml0ZXJpdGVtcygpOgogICAgICAgICAgICAgaWYgKHJlc3Vs
dC50eXBlID09IHRlc3RfZXhwZWN0YXRpb25zLlBBU1Mgb3IKLSAgICAgICAgICAgICAgICByZXN1
bHQudHlwZSA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5DUkFTSCBhbmQgbm90IGluY2x1ZGVfY3Jhc2hl
cyk6CisgICAgICAgICAgICAgICAgKHJlc3VsdC50eXBlID09IHRlc3RfZXhwZWN0YXRpb25zLkNS
QVNIIGFuZCBub3QgaW5jbHVkZV9jcmFzaGVzKSBvcgorICAgICAgICAgICAgICAgIChyZXN1bHQu
dHlwZSA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5NSVNTSU5HIGFuZCBub3QgaW5jbHVkZV9taXNzaW5n
KSk6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGZhaWxlZF9yZXN1bHRz
W3Rlc3RdID0gcmVzdWx0LnR5cGUKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3RfcnVubmVyLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Np
bmdsZV90ZXN0X3J1bm5lci5weQkocmV2aXNpb24gOTAwMTkpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9zaW5nbGVfdGVzdF9ydW5uZXIucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTEyOCwzMSArMTI4LDM2IEBAIGNsYXNzIFNpbmdsZVRlc3RSdW5u
ZXI6CiAgICAgICAgIGRyaXZlcl9vdXRwdXQgPSBzZWxmLl9kcml2ZXIucnVuX3Rlc3Qoc2VsZi5f
ZHJpdmVyX2lucHV0KCkpCiAgICAgICAgIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQgPSBzZWxmLl9l
eHBlY3RlZF9kcml2ZXJfb3V0cHV0KCkKICAgICAgICAgdGVzdF9yZXN1bHQgPSBzZWxmLl9jb21w
YXJlX291dHB1dChkcml2ZXJfb3V0cHV0LCBleHBlY3RlZF9kcml2ZXJfb3V0cHV0KQotICAgICAg
ICB0ZXN0X3Jlc3VsdF93cml0ZXIud3JpdGVfdGVzdF9yZXN1bHQoc2VsZi5fcG9ydCwgc2VsZi5f
ZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
cml2ZXJfb3V0cHV0LCBleHBlY3RlZF9kcml2ZXJfb3V0cHV0LCB0ZXN0X3Jlc3VsdC5mYWlsdXJl
cykKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5zYXZlX21pc3NpbmdfcmVzdWx0czoKKyAgICAg
ICAgICAgIHNlbGYuX2FkZF9taXNzaW5nX2Jhc2VsaW5lcyh0ZXN0X3Jlc3VsdCwgZHJpdmVyX291
dHB1dCkKKyAgICAgICAgdGVzdF9yZXN1bHRfd3JpdGVyLndyaXRlX3Rlc3RfcmVzdWx0KHNlbGYu
X3BvcnQsIHNlbGYuX2ZpbGVuYW1lLCBkcml2ZXJfb3V0cHV0LCBleHBlY3RlZF9kcml2ZXJfb3V0
cHV0LCB0ZXN0X3Jlc3VsdC5mYWlsdXJlcykKICAgICAgICAgcmV0dXJuIHRlc3RfcmVzdWx0CiAK
ICAgICBkZWYgX3J1bl9yZWJhc2VsaW5lKHNlbGYpOgogICAgICAgICBkcml2ZXJfb3V0cHV0ID0g
c2VsZi5fZHJpdmVyLnJ1bl90ZXN0KHNlbGYuX2RyaXZlcl9pbnB1dCgpKQogICAgICAgICBmYWls
dXJlcyA9IHNlbGYuX2hhbmRsZV9lcnJvcihkcml2ZXJfb3V0cHV0KQotICAgICAgICB0ZXN0X3Jl
c3VsdF93cml0ZXIud3JpdGVfdGVzdF9yZXN1bHQoc2VsZi5fcG9ydCwgc2VsZi5fZmlsZW5hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXJfb3V0
cHV0LCBOb25lLCBmYWlsdXJlcykKKyAgICAgICAgdGVzdF9yZXN1bHRfd3JpdGVyLndyaXRlX3Rl
c3RfcmVzdWx0KHNlbGYuX3BvcnQsIHNlbGYuX2ZpbGVuYW1lLCBkcml2ZXJfb3V0cHV0LCBOb25l
LCBmYWlsdXJlcykKICAgICAgICAgIyBGSVhNRTogSXQgdGhlIHRlc3QgY3Jhc2hlZCBvciB0aW1l
ZCBvdXQsIGl0IG1pZ2h0IGJlIGJldHR0ZXIgdG8gYXZvaWQKICAgICAgICAgIyB0byB3cml0ZSBu
ZXcgYmFzZWxpbmVzLgotICAgICAgICBzZWxmLl9zYXZlX2Jhc2VsaW5lcyhkcml2ZXJfb3V0cHV0
KQorICAgICAgICBzZWxmLl9vdmVyd3JpdGVfYmFzZWxpbmVzKGRyaXZlcl9vdXRwdXQpCiAgICAg
ICAgIHJldHVybiBUZXN0UmVzdWx0KHNlbGYuX2ZpbGVuYW1lLCBmYWlsdXJlcywgZHJpdmVyX291
dHB1dC50ZXN0X3RpbWUsIGRyaXZlcl9vdXRwdXQuaGFzX3N0ZGVycigpKQogCi0gICAgZGVmIF9z
YXZlX2Jhc2VsaW5lcyhzZWxmLCBkcml2ZXJfb3V0cHV0KToKKyAgICBkZWYgX2FkZF9taXNzaW5n
X2Jhc2VsaW5lcyhzZWxmLCB0ZXN0X3Jlc3VsdCwgZHJpdmVyX291dHB1dCk6CisgICAgICAgIGlm
IHRlc3RfcmVzdWx0Lmhhc19mYWlsdXJlX21hdGNoaW5nX3R5cGVzKHRlc3RfZmFpbHVyZXMuRmFp
bHVyZU1pc3NpbmdSZXN1bHQpOgorICAgICAgICAgICAgc2VsZi5fc2F2ZV9iYXNlbGluZV9kYXRh
KGRyaXZlcl9vdXRwdXQudGV4dCwgIi50eHQiKQorICAgICAgICBpZiB0ZXN0X3Jlc3VsdC5oYXNf
ZmFpbHVyZV9tYXRjaGluZ190eXBlcyh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVNaXNzaW5nQXVkaW8p
OgorICAgICAgICAgICAgc2VsZi5fc2F2ZV9iYXNlbGluZV9kYXRhKGRyaXZlcl9vdXRwdXQuYXVk
aW8sICIud2F2IikKKyAgICAgICAgaWYgdGVzdF9yZXN1bHQuaGFzX2ZhaWx1cmVfbWF0Y2hpbmdf
dHlwZXModGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlzc2luZ0ltYWdlLCB0ZXN0X2ZhaWx1cmVzLkZh
aWx1cmVNaXNzaW5nSW1hZ2VIYXNoKToKKyAgICAgICAgICAgIHNlbGYuX3NhdmVfYmFzZWxpbmVf
ZGF0YShkcml2ZXJfb3V0cHV0LmltYWdlLCAiLnBuZyIpCisKKyAgICBkZWYgX292ZXJ3cml0ZV9i
YXNlbGluZXMoc2VsZiwgZHJpdmVyX291dHB1dCk6CiAgICAgICAgICMgQWx0aG91Z2ggYWxsIER1
bXBSZW5kZXJUcmVlIG91dHB1dCBzaG91bGQgYmUgdXRmLTgsCiAgICAgICAgICMgd2UgZG8gbm90
IGV2ZXIgZGVjb2RlIGl0IGluc2lkZSBydW4td2Via2l0LXRlc3RzLiAgRm9yIHNvbWUgdGVzdHMK
ICAgICAgICAgIyBEdW1wUmVuZGVyVHJlZSBtYXkgbm90IG91dHB1dCB1dGYtOCB0ZXh0IChlLmcu
IHdlYmFyY2hpdmVzKS4KLSAgICAgICAgc2VsZi5fc2F2ZV9iYXNlbGluZV9kYXRhKGRyaXZlcl9v
dXRwdXQudGV4dCwgIi50eHQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdGVfbmV3X2Jhc2VsaW5lPXNlbGYuX29wdGlvbnMubmV3X2Jhc2VsaW5lKQotICAgICAgICBz
ZWxmLl9zYXZlX2Jhc2VsaW5lX2RhdGEoZHJpdmVyX291dHB1dC5hdWRpbywgJy53YXYnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVfbmV3X2Jhc2VsaW5lPXNlbGYu
X29wdGlvbnMubmV3X2Jhc2VsaW5lKQorICAgICAgICBzZWxmLl9zYXZlX2Jhc2VsaW5lX2RhdGEo
ZHJpdmVyX291dHB1dC50ZXh0LCAiLnR4dCIsIGdlbmVyYXRlX25ld19iYXNlbGluZT1zZWxmLl9v
cHRpb25zLm5ld19iYXNlbGluZSkKKyAgICAgICAgc2VsZi5fc2F2ZV9iYXNlbGluZV9kYXRhKGRy
aXZlcl9vdXRwdXQuYXVkaW8sICIud2F2IiwgZ2VuZXJhdGVfbmV3X2Jhc2VsaW5lPXNlbGYuX29w
dGlvbnMubmV3X2Jhc2VsaW5lKQogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3Rz
OgotICAgICAgICAgICAgc2VsZi5fc2F2ZV9iYXNlbGluZV9kYXRhKGRyaXZlcl9vdXRwdXQuaW1h
Z2UsICIucG5nIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0
ZV9uZXdfYmFzZWxpbmU9c2VsZi5fb3B0aW9ucy5uZXdfYmFzZWxpbmUpCisgICAgICAgICAgICBz
ZWxmLl9zYXZlX2Jhc2VsaW5lX2RhdGEoZHJpdmVyX291dHB1dC5pbWFnZSwgIi5wbmciLCBnZW5l
cmF0ZV9uZXdfYmFzZWxpbmU9c2VsZi5fb3B0aW9ucy5uZXdfYmFzZWxpbmUpCiAKICAgICBkZWYg
X3NhdmVfYmFzZWxpbmVfZGF0YShzZWxmLCBkYXRhLCBtb2RpZmllciwgZ2VuZXJhdGVfbmV3X2Jh
c2VsaW5lPVRydWUpOgogICAgICAgICAiIiJTYXZlcyBhIG5ldyBiYXNlbGluZSBmaWxlIGludG8g
dGhlIHBvcnQncyBiYXNlbGluZSBkaXJlY3RvcnkuCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdHMucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
dGVzdF9yZXN1bHRzLnB5CShyZXZpc2lvbiA5MDAxOSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0cy5weQkod29ya2luZyBj
b3B5KQpAQCAtNTUsOSArNTUsOSBAQCBjbGFzcyBUZXN0UmVzdWx0KG9iamVjdCk6CiAgICAgZGVm
IF9fbmVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIHJldHVybiBub3QgKHNlbGYgPT0gb3RoZXIp
CiAKLSAgICBkZWYgaGFzX2ZhaWx1cmVfbWF0Y2hpbmdfdHlwZXMoc2VsZiwgdHlwZXMpOgorICAg
IGRlZiBoYXNfZmFpbHVyZV9tYXRjaGluZ190eXBlcyhzZWxmLCAqYXJncywgKiprYXJncyk6CiAg
ICAgICAgIGZvciBmYWlsdXJlIGluIHNlbGYuZmFpbHVyZXM6Ci0gICAgICAgICAgICBpZiB0eXBl
KGZhaWx1cmUpIGluIHR5cGVzOgorICAgICAgICAgICAgaWYgdHlwZShmYWlsdXJlKSBpbiBhcmdz
OgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBGYWxzZQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99121</attachid>
            <date>2011-06-29 12:00:43 -0700</date>
            <delta_ts>2011-06-29 13:37:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38063-20110629120041.patch</filename>
            <type>text/plain</type>
            <size>15025</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDkwMDI5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzAgQEAKKzIwMTEtMDYtMjkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBuZXctcnVuLXdl
YmtpdC10ZXN0cyBjb21wbGFpbnMgYWJvdXQgbWlzc2luZyBwaXhlbCByZXN1bHRzIGluc3RlYWQg
b2YgcGxvcHBpbmcgZG93biBuZXcgZXhwZWN0YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODA2MworCisgICAgICAgIFRoaXMgcGF0Y2ggY2hh
bmdlcyBuZXctcnVuLXdlYmtpdC10ZXN0cyB0byBtYXRjaCBvbGQtcnVuLXdlYmtpdC10ZXN0cwor
ICAgICAgICBpbiBnZW5lcmF0aW5nIG5ldyBleHBlY3RlZCByZXN1bHRzIHdoZW4gdGhlIGV4cGVj
dGVkIHJlc3VsdHMgYXJlCisgICAgICAgIG1pc3NpbmcuCisKKyAgICAgICAgVGhlcmUgYXJlIHN0
aWxsIGEgY291cGxlIGRldGFpbHMgdGhhdCBhcmUgZGlmZmVyZW50OgorCisgICAgICAgIDEpIElt
YWdlIGJhc2VsaW5lcyBhcmVuJ3QgZ2VuZXJhdGVkIHVubGVzcyB5b3UgcnVuIHdpdGggLXAuCisg
ICAgICAgIDIpIFJlbmRlciB0cmVlIGR1bXBzIGFyZSBwbGFjZXMgaW4gdGhlIGNyb3NzLXBsYXRm
b3JtIGRpcmVjdG9yeSBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBk
aXJlY3RvcnkuCisKKyAgICAgICAgSSdtIGluY2xpbmVkIHRvIGRlYWwgd2l0aCBib3RoIG9mIHRo
ZXNlIGlzc3VlcyBpbiBmb2xsb3ctdXAgcGF0Y2hlcy4KKworICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90
ZXN0X3J1bm5lci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdHMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHk6CisK
IDIwMTEtMDYtMjkgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4OTg4OC4KSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMu
cHkJKHJldmlzaW9uIDkwMDE5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L2xheW91dHRlc3RyZXN1bHRzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNyArMTYxLDcgQEAg
Y2xhc3MgTGF5b3V0VGVzdFJlc3VsdHMob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYuX3Rl
c3RfcmVzdWx0cwogCiAgICAgZGVmIHJlc3VsdHNfbWF0Y2hpbmdfZmFpbHVyZV90eXBlcyhzZWxm
LCBmYWlsdXJlX3R5cGVzKToKLSAgICAgICAgcmV0dXJuIFtyZXN1bHQgZm9yIHJlc3VsdCBpbiBz
ZWxmLl90ZXN0X3Jlc3VsdHMgaWYgcmVzdWx0Lmhhc19mYWlsdXJlX21hdGNoaW5nX3R5cGVzKGZh
aWx1cmVfdHlwZXMpXQorICAgICAgICByZXR1cm4gW3Jlc3VsdCBmb3IgcmVzdWx0IGluIHNlbGYu
X3Rlc3RfcmVzdWx0cyBpZiByZXN1bHQuaGFzX2ZhaWx1cmVfbWF0Y2hpbmdfdHlwZXMoKmZhaWx1
cmVfdHlwZXMpXQogCiAgICAgZGVmIHRlc3RzX21hdGNoaW5nX2ZhaWx1cmVfdHlwZXMoc2VsZiwg
ZmFpbHVyZV90eXBlcyk6CiAgICAgICAgIHJldHVybiBbcmVzdWx0LmZpbGVuYW1lIGZvciByZXN1
bHQgaW4gc2VsZi5yZXN1bHRzX21hdGNoaW5nX2ZhaWx1cmVfdHlwZXMoZmFpbHVyZV90eXBlcyld
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rl
c3RzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3J1bl93ZWJraXRfdGVzdHMucHkJKHJldmlzaW9uIDkwMDE5KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQkod29ya2luZyBjb3B5KQpA
QCAtMjc5LDggKzI3OSw2IEBAIGRlZiBwYXJzZV9hcmdzKGFyZ3M9Tm9uZSk6CiAgICAgIyBGSVhN
RTogTmVlZDogLS1zYW1wbGUtb24tdGltZW91dCBSdW4gc2FtcGxlIG9uIHRpbWVvdXQKIAogICAg
IG9sZF9ydW5fd2Via2l0X3Rlc3RzX2NvbXBhdCA9IFsKLSAgICAgICAgIyBOUldUIGRvZXNuJ3Qg
Z2VuZXJhdGUgcmVzdWx0cyBieSBkZWZhdWx0IGFueXdheS4KLSAgICAgICAgX2NvbXBhdF9zaGlt
X29wdGlvbigiLS1uby1uZXctdGVzdC1yZXN1bHRzIiksCiAgICAgICAgICMgTlJXVCBkb2Vzbid0
IHNhbXBsZSBvbiB0aW1lb3V0IHlldCBhbnl3YXkuCiAgICAgICAgIF9jb21wYXRfc2hpbV9vcHRp
b24oIi0tbm8tc2FtcGxlLW9uLXRpbWVvdXQiKSwKICAgICAgICAgIyBGSVhNRTogTlJXVCBuZWVk
cyB0byBzdXBwb3J0IHJlbW90ZSBsaW5rcyBldmVudHVhbGx5LgpAQCAtMzA3LDYgKzMwNSw5IEBA
IGRlZiBwYXJzZV9hcmdzKGFyZ3M9Tm9uZSk6CiAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9u
KCItLXJlc2V0LXJlc3VsdHMiLCBhY3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICAgICAgZGVm
YXVsdD1GYWxzZSwgaGVscD0iUmVzZXQgYW55IGV4aXN0aW5nIGJhc2VsaW5lcyB0byB0aGUgIgog
ICAgICAgICAgICAgICAgICAiZ2VuZXJhdGVkIHJlc3VsdHMiKSwKKyAgICAgICAgb3B0cGFyc2Uu
bWFrZV9vcHRpb24oIi0tbm8tbmV3LXRlc3QtcmVzdWx0cyIsIGFjdGlvbj0ic3RvcmVfZmFsc2Ui
LAorICAgICAgICAgICAgZGVzdD0ic2F2ZV9taXNzaW5nX3Jlc3VsdHMiLCBkZWZhdWx0PVRydWUs
CisgICAgICAgICAgICBoZWxwPSJEb24ndCBjcmVhdGUgbmV3IGJhc2VsaW5lcyB3aGVuIG5vIGV4
cGVjdGVkIHJlc3VsdHMgZXhpc3QiKSwKICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0t
c2tpcC1mYWlsaW5nLXRlc3RzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICAgICAgIGRl
ZmF1bHQ9RmFsc2UsIGhlbHA9IlNraXAgdGVzdHMgdGhhdCBhcmUgZXhwZWN0ZWQgdG8gZmFpbC4g
IgogICAgICAgICAgICAgICAgICAiTm90ZTogV2hlbiB1c2luZyB0aGlzIG9wdGlvbiwgeW91IG1p
Z2h0IG1pc3MgbmV3IGNyYXNoZXMgIgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19p
bnRlZ3JhdGlvbnRlc3QucHkJKHJldmlzaW9uIDkwMDE5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkJKHdv
cmtpbmcgY29weSkKQEAgLTY0MSw5ICs2NDEsOSBAQCBNYWluVGVzdCA9IHNraXBfaWYoTWFpblRl
c3QsIHN5cy5wbGF0Zm9yCiAKIAogY2xhc3MgUmViYXNlbGluZVRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgotICAgIGRlZiBhc3NlcnRCYXNlbGluZXMoc2VsZiwgZmlsZV9saXN0LCBmaWxlKToKKyAg
ICBkZWYgYXNzZXJ0QmFzZWxpbmVzKHNlbGYsIGZpbGVfbGlzdCwgZmlsZSwgZXh0ZW5zaW9ucyk6
CiAgICAgICAgICJhc3NlcnQgdGhhdCB0aGUgZmlsZV9saXN0IGNvbnRhaW5zIHRoZSBiYXNlbGlu
ZXMuIiIiCi0gICAgICAgIGZvciBleHQgaW4gKCIudHh0IiwgIi5wbmciKToKKyAgICAgICAgZm9y
IGV4dCBpbiBleHRlbnNpb25zOgogICAgICAgICAgICAgYmFzZWxpbmUgPSBmaWxlICsgIi1leHBl
Y3RlZCIgKyBleHQKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbnkoZi5maW5kKGJhc2Vs
aW5lKSAhPSAtMSBmb3IgZiBpbiBmaWxlX2xpc3QpKQogCkBAIC02NjIsOCArNjYyLDIzIEBAIGNs
YXNzIFJlYmFzZWxpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgZmlsZV9saXN0
ID0gZnMud3JpdHRlbl9maWxlcy5rZXlzKCkKICAgICAgICAgZmlsZV9saXN0LnJlbW92ZSgnL3Rt
cC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3RzX3J1bjAudHh0JykKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oZmlsZV9saXN0KSwgNCkKLSAgICAgICAgc2VsZi5hc3NlcnRCYXNlbGluZXMo
ZmlsZV9saXN0LCAiL3Bhc3Nlcy9pbWFnZSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0QmFzZWxpbmVz
KGZpbGVfbGlzdCwgIi9mYWlsdXJlcy9leHBlY3RlZC9taXNzaW5nX2ltYWdlIikKKyAgICAgICAg
c2VsZi5hc3NlcnRCYXNlbGluZXMoZmlsZV9saXN0LCAiL3Bhc3Nlcy9pbWFnZSIsIFsiLnR4dCIs
ICIucG5nIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0QmFzZWxpbmVzKGZpbGVfbGlzdCwgIi9mYWls
dXJlcy9leHBlY3RlZC9taXNzaW5nX2ltYWdlIiwgWyIudHh0IiwgIi5wbmciXSkKKworICAgIGRl
ZiB0ZXN0X21pc3NpbmdfcmVzdWx0cyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgd2UgdXBk
YXRlIGV4cGVjdGF0aW9ucyBpbiBwbGFjZS4gSWYgdGhlIGV4cGVjdGF0aW9uCisgICAgICAgICMg
aXMgbWlzc2luZywgdXBkYXRlIHRoZSBleHBlY3RlZCBnZW5lcmljIGxvY2F0aW9uLgorICAgICAg
ICBmcyA9IHBvcnQudW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQorICAgICAgICBwYXNzaW5nX3J1bihb
Jy0tbm8tc2hvdy1yZXN1bHRzJywKKyAgICAgICAgICAgICAgICAgICAgICdmYWlsdXJlcy91bmV4
cGVjdGVkL21pc3NpbmdfdGV4dC5odG1sJywKKyAgICAgICAgICAgICAgICAgICAgICdmYWlsdXJl
cy91bmV4cGVjdGVkL21pc3NpbmdfaW1hZ2UuaHRtbCcsCisgICAgICAgICAgICAgICAgICAgICAn
ZmFpbHVyZXMvdW5leHBlY3RlZC9taXNzaW5nX2F1ZGlvLmh0bWwnXSwKKyAgICAgICAgICAgICAg
ICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZpbGVzeXN0ZW09ZnMpCisgICAgICAgIGZpbGVf
bGlzdCA9IGZzLndyaXR0ZW5fZmlsZXMua2V5cygpCisgICAgICAgIGZpbGVfbGlzdC5yZW1vdmUo
Jy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy90ZXN0c19ydW4wLnR4dCcpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGVuKGZpbGVfbGlzdCksIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0QmFzZWxp
bmVzKGZpbGVfbGlzdCwgIi9mYWlsdXJlcy91bmV4cGVjdGVkL21pc3NpbmdfdGV4dCIsIFsiLnR4
dCJdKQorICAgICAgICBzZWxmLmFzc2VydEJhc2VsaW5lcyhmaWxlX2xpc3QsICIvZmFpbHVyZXMv
dW5leHBlY3RlZC9taXNzaW5nX2ltYWdlIiwgWyIucG5nIl0pCiAKICAgICBkZWYgdGVzdF9uZXdf
YmFzZWxpbmUoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IHdlIHVwZGF0ZSB0aGUgcGxhdGZv
cm0gZXhwZWN0YXRpb25zLiBJZiB0aGUgZXhwZWN0YXRpb24KQEAgLTY3OCw5ICs2OTMsOSBAQCBj
bGFzcyBSZWJhc2VsaW5lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGZpbGVfbGlz
dC5yZW1vdmUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy90ZXN0c19ydW4wLnR4dCcpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGZpbGVfbGlzdCksIDQpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0QmFzZWxpbmVzKGZpbGVfbGlzdCwKLSAgICAgICAgICAgICIvcGxhdGZvcm0vdGVzdC1tYWMt
bGVvcGFyZC9wYXNzZXMvaW1hZ2UiKQorICAgICAgICAgICAgIi9wbGF0Zm9ybS90ZXN0LW1hYy1s
ZW9wYXJkL3Bhc3Nlcy9pbWFnZSIsIFsiLnR4dCIsICIucG5nIl0pCiAgICAgICAgIHNlbGYuYXNz
ZXJ0QmFzZWxpbmVzKGZpbGVfbGlzdCwKLSAgICAgICAgICAgICIvcGxhdGZvcm0vdGVzdC1tYWMt
bGVvcGFyZC9mYWlsdXJlcy9leHBlY3RlZC9taXNzaW5nX2ltYWdlIikKKyAgICAgICAgICAgICIv
cGxhdGZvcm0vdGVzdC1tYWMtbGVvcGFyZC9mYWlsdXJlcy9leHBlY3RlZC9taXNzaW5nX2ltYWdl
IiwgWyIudHh0IiwgIi5wbmciXSkKIAogCiBjbGFzcyBEcnlydW5UZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL21hbmFnZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlci5weQkocmV2aXNpb24gOTAwMTkpCisr
KyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5h
Z2VyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC03OTUsNyArNzk1LDcgQEAgY2xhc3MgTWFuYWdlcjoK
IAogICAgICAgICAjIFdlIGV4Y2x1ZGUgdGhlIGNyYXNoZXMgZnJvbSB0aGUgbGlzdCBvZiByZXN1
bHRzIHRvIHJldHJ5LCBiZWNhdXNlCiAgICAgICAgICMgd2Ugd2FudCB0byB0cmVhdCBldmVuIGEg
cG90ZW50aWFsbHkgZmxha3kgY3Jhc2ggYXMgYW4gZXJyb3IuCi0gICAgICAgIGZhaWx1cmVzID0g
c2VsZi5fZ2V0X2ZhaWx1cmVzKHJlc3VsdF9zdW1tYXJ5LCBpbmNsdWRlX2NyYXNoZXM9RmFsc2Up
CisgICAgICAgIGZhaWx1cmVzID0gc2VsZi5fZ2V0X2ZhaWx1cmVzKHJlc3VsdF9zdW1tYXJ5LCBp
bmNsdWRlX2NyYXNoZXM9RmFsc2UsIGluY2x1ZGVfbWlzc2luZz1GYWxzZSkKICAgICAgICAgcmV0
cnlfc3VtbWFyeSA9IHJlc3VsdF9zdW1tYXJ5CiAgICAgICAgIHdoaWxlIChsZW4oZmFpbHVyZXMp
IGFuZCBzZWxmLl9vcHRpb25zLnJldHJ5X2ZhaWx1cmVzIGFuZAogICAgICAgICAgICAgbm90IHNl
bGYuX3JldHJ5aW5nIGFuZCBub3QgaW50ZXJydXB0ZWQpOgpAQCAtODA2LDcgKzgwNiw3IEBAIGNs
YXNzIE1hbmFnZXI6CiAgICAgICAgICAgICByZXRyeV9zdW1tYXJ5ID0gUmVzdWx0U3VtbWFyeShz
ZWxmLl9leHBlY3RhdGlvbnMsIGZhaWx1cmVzLmtleXMoKSkKICAgICAgICAgICAgICMgTm90ZSB0
aGF0IHdlIGludGVudGlvbmFsbHkgaWdub3JlIHRoZSByZXR1cm4gdmFsdWUgaGVyZS4KICAgICAg
ICAgICAgIHNlbGYuX3J1bl90ZXN0cyhmYWlsdXJlcy5rZXlzKCksIHJldHJ5X3N1bW1hcnkpCi0g
ICAgICAgICAgICBmYWlsdXJlcyA9IHNlbGYuX2dldF9mYWlsdXJlcyhyZXRyeV9zdW1tYXJ5LCBp
bmNsdWRlX2NyYXNoZXM9VHJ1ZSkKKyAgICAgICAgICAgIGZhaWx1cmVzID0gc2VsZi5fZ2V0X2Zh
aWx1cmVzKHJldHJ5X3N1bW1hcnkpCiAKICAgICAgICAgZW5kX3RpbWUgPSB0aW1lLnRpbWUoKQog
CkBAIC05MzMsNyArOTMzLDcgQEAgY2xhc3MgTWFuYWdlcjoKICAgICAgICAgICAgIGlmIHNlbGYu
X2ZzLmlzZGlyKHNlbGYuX2ZzLmpvaW4obGF5b3V0X3Rlc3RzX2RpciwgZGlybmFtZSkpOgogICAg
ICAgICAgICAgICAgIHNlbGYuX2ZzLnJtdHJlZShzZWxmLl9mcy5qb2luKHNlbGYuX3Jlc3VsdHNf
ZGlyZWN0b3J5LCBkaXJuYW1lKSkKIAotICAgIGRlZiBfZ2V0X2ZhaWx1cmVzKHNlbGYsIHJlc3Vs
dF9zdW1tYXJ5LCBpbmNsdWRlX2NyYXNoZXMpOgorICAgIGRlZiBfZ2V0X2ZhaWx1cmVzKHNlbGYs
IHJlc3VsdF9zdW1tYXJ5LCBpbmNsdWRlX2NyYXNoZXM9VHJ1ZSwgaW5jbHVkZV9taXNzaW5nPVRy
dWUpOgogICAgICAgICAiIiJGaWx0ZXJzIGEgZGljdCBvZiByZXN1bHRzIGFuZCByZXR1cm5zIG9u
bHkgdGhlIGZhaWx1cmVzLgogCiAgICAgICAgIEFyZ3M6CkBAIC05NDgsNyArOTQ4LDggQEAgY2xh
c3MgTWFuYWdlcjoKICAgICAgICAgZmFpbGVkX3Jlc3VsdHMgPSB7fQogICAgICAgICBmb3IgdGVz
dCwgcmVzdWx0IGluIHJlc3VsdF9zdW1tYXJ5LnVuZXhwZWN0ZWRfcmVzdWx0cy5pdGVyaXRlbXMo
KToKICAgICAgICAgICAgIGlmIChyZXN1bHQudHlwZSA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5QQVNT
IG9yCi0gICAgICAgICAgICAgICAgcmVzdWx0LnR5cGUgPT0gdGVzdF9leHBlY3RhdGlvbnMuQ1JB
U0ggYW5kIG5vdCBpbmNsdWRlX2NyYXNoZXMpOgorICAgICAgICAgICAgICAgIChyZXN1bHQudHlw
ZSA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5DUkFTSCBhbmQgbm90IGluY2x1ZGVfY3Jhc2hlcykgb3IK
KyAgICAgICAgICAgICAgICAocmVzdWx0LnR5cGUgPT0gdGVzdF9leHBlY3RhdGlvbnMuTUlTU0lO
RyBhbmQgbm90IGluY2x1ZGVfbWlzc2luZykpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAg
ICAgICAgICAgICBmYWlsZWRfcmVzdWx0c1t0ZXN0XSA9IHJlc3VsdC50eXBlCiAKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90
ZXN0X3J1bm5lci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9zaW5nbGVfdGVzdF9ydW5uZXIucHkJKHJldmlzaW9uIDkw
MDE5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2th
Z2Uvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsMzEgKzEyOCw0
MCBAQCBjbGFzcyBTaW5nbGVUZXN0UnVubmVyOgogICAgICAgICBkcml2ZXJfb3V0cHV0ID0gc2Vs
Zi5fZHJpdmVyLnJ1bl90ZXN0KHNlbGYuX2RyaXZlcl9pbnB1dCgpKQogICAgICAgICBleHBlY3Rl
ZF9kcml2ZXJfb3V0cHV0ID0gc2VsZi5fZXhwZWN0ZWRfZHJpdmVyX291dHB1dCgpCiAgICAgICAg
IHRlc3RfcmVzdWx0ID0gc2VsZi5fY29tcGFyZV9vdXRwdXQoZHJpdmVyX291dHB1dCwgZXhwZWN0
ZWRfZHJpdmVyX291dHB1dCkKLSAgICAgICAgdGVzdF9yZXN1bHRfd3JpdGVyLndyaXRlX3Rlc3Rf
cmVzdWx0KHNlbGYuX3BvcnQsIHNlbGYuX2ZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyX291dHB1dCwgZXhwZWN0ZWRfZHJpdmVyX291
dHB1dCwgdGVzdF9yZXN1bHQuZmFpbHVyZXMpCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuc2F2
ZV9taXNzaW5nX3Jlc3VsdHM6CisgICAgICAgICAgICBzZWxmLl9hZGRfbWlzc2luZ19iYXNlbGlu
ZXModGVzdF9yZXN1bHQsIGRyaXZlcl9vdXRwdXQpCisgICAgICAgIHRlc3RfcmVzdWx0X3dyaXRl
ci53cml0ZV90ZXN0X3Jlc3VsdChzZWxmLl9wb3J0LCBzZWxmLl9maWxlbmFtZSwgZHJpdmVyX291
dHB1dCwgZXhwZWN0ZWRfZHJpdmVyX291dHB1dCwgdGVzdF9yZXN1bHQuZmFpbHVyZXMpCiAgICAg
ICAgIHJldHVybiB0ZXN0X3Jlc3VsdAogCiAgICAgZGVmIF9ydW5fcmViYXNlbGluZShzZWxmKToK
ICAgICAgICAgZHJpdmVyX291dHB1dCA9IHNlbGYuX2RyaXZlci5ydW5fdGVzdChzZWxmLl9kcml2
ZXJfaW5wdXQoKSkKICAgICAgICAgZmFpbHVyZXMgPSBzZWxmLl9oYW5kbGVfZXJyb3IoZHJpdmVy
X291dHB1dCkKLSAgICAgICAgdGVzdF9yZXN1bHRfd3JpdGVyLndyaXRlX3Rlc3RfcmVzdWx0KHNl
bGYuX3BvcnQsIHNlbGYuX2ZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZHJpdmVyX291dHB1dCwgTm9uZSwgZmFpbHVyZXMpCisgICAgICAgIHRl
c3RfcmVzdWx0X3dyaXRlci53cml0ZV90ZXN0X3Jlc3VsdChzZWxmLl9wb3J0LCBzZWxmLl9maWxl
bmFtZSwgZHJpdmVyX291dHB1dCwgTm9uZSwgZmFpbHVyZXMpCiAgICAgICAgICMgRklYTUU6IEl0
IHRoZSB0ZXN0IGNyYXNoZWQgb3IgdGltZWQgb3V0LCBpdCBtaWdodCBiZSBiZXR0dGVyIHRvIGF2
b2lkCiAgICAgICAgICMgdG8gd3JpdGUgbmV3IGJhc2VsaW5lcy4KLSAgICAgICAgc2VsZi5fc2F2
ZV9iYXNlbGluZXMoZHJpdmVyX291dHB1dCkKKyAgICAgICAgc2VsZi5fb3ZlcndyaXRlX2Jhc2Vs
aW5lcyhkcml2ZXJfb3V0cHV0KQogICAgICAgICByZXR1cm4gVGVzdFJlc3VsdChzZWxmLl9maWxl
bmFtZSwgZmFpbHVyZXMsIGRyaXZlcl9vdXRwdXQudGVzdF90aW1lLCBkcml2ZXJfb3V0cHV0Lmhh
c19zdGRlcnIoKSkKIAotICAgIGRlZiBfc2F2ZV9iYXNlbGluZXMoc2VsZiwgZHJpdmVyX291dHB1
dCk6CisgICAgZGVmIF9hZGRfbWlzc2luZ19iYXNlbGluZXMoc2VsZiwgdGVzdF9yZXN1bHQsIGRy
aXZlcl9vdXRwdXQpOgorICAgICAgICBpZiB0ZXN0X3Jlc3VsdC5oYXNfZmFpbHVyZV9tYXRjaGlu
Z190eXBlcyh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVNaXNzaW5nUmVzdWx0KToKKyAgICAgICAgICAg
ICMgRklYTUU6IFdlIHNlZW0gdG8gYmUgcHV0dGluZyBuZXcgdGV4dCByZXN1bHRzIGluIG5vbi1w
bGF0Zm9ybQorICAgICAgICAgICAgIyBzcGVjaWZpYyBkaXJlY3RvcmllcyBldmVuIHdoZW4gdGhl
eSdyZSByZW5kZXJ0cmVlIGR1bXBzLiBNYXliZQorICAgICAgICAgICAgIyB3ZSBzaG91bGQgaGF2
ZSBhIGRpZmZlcmVudCBraW5kIG9mIGZhaWx1cmUgZm9yIHJlbmRlciB0cmVlIGR1bXBzCisgICAg
ICAgICAgICAjIHRoYW4gZm9yIHRleHQgdGVzdHM/CisgICAgICAgICAgICBzZWxmLl9zYXZlX2Jh
c2VsaW5lX2RhdGEoZHJpdmVyX291dHB1dC50ZXh0LCAiLnR4dCIsIGdlbmVyYXRlX25ld19iYXNl
bGluZT1GYWxzZSkKKyAgICAgICAgaWYgdGVzdF9yZXN1bHQuaGFzX2ZhaWx1cmVfbWF0Y2hpbmdf
dHlwZXModGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlzc2luZ0F1ZGlvKToKKyAgICAgICAgICAgIHNl
bGYuX3NhdmVfYmFzZWxpbmVfZGF0YShkcml2ZXJfb3V0cHV0LmF1ZGlvLCAiLndhdiIsIGdlbmVy
YXRlX25ld19iYXNlbGluZT1GYWxzZSkKKyAgICAgICAgaWYgdGVzdF9yZXN1bHQuaGFzX2ZhaWx1
cmVfbWF0Y2hpbmdfdHlwZXModGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlzc2luZ0ltYWdlLCB0ZXN0
X2ZhaWx1cmVzLkZhaWx1cmVNaXNzaW5nSW1hZ2VIYXNoKToKKyAgICAgICAgICAgIHNlbGYuX3Nh
dmVfYmFzZWxpbmVfZGF0YShkcml2ZXJfb3V0cHV0LmltYWdlLCAiLnBuZyIsIGdlbmVyYXRlX25l
d19iYXNlbGluZT1GYWxzZSkKKworICAgIGRlZiBfb3ZlcndyaXRlX2Jhc2VsaW5lcyhzZWxmLCBk
cml2ZXJfb3V0cHV0KToKICAgICAgICAgIyBBbHRob3VnaCBhbGwgRHVtcFJlbmRlclRyZWUgb3V0
cHV0IHNob3VsZCBiZSB1dGYtOCwKICAgICAgICAgIyB3ZSBkbyBub3QgZXZlciBkZWNvZGUgaXQg
aW5zaWRlIHJ1bi13ZWJraXQtdGVzdHMuICBGb3Igc29tZSB0ZXN0cwogICAgICAgICAjIER1bXBS
ZW5kZXJUcmVlIG1heSBub3Qgb3V0cHV0IHV0Zi04IHRleHQgKGUuZy4gd2ViYXJjaGl2ZXMpLgot
ICAgICAgICBzZWxmLl9zYXZlX2Jhc2VsaW5lX2RhdGEoZHJpdmVyX291dHB1dC50ZXh0LCAiLnR4
dCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZV9uZXdfYmFzZWxp
bmU9c2VsZi5fb3B0aW9ucy5uZXdfYmFzZWxpbmUpCi0gICAgICAgIHNlbGYuX3NhdmVfYmFzZWxp
bmVfZGF0YShkcml2ZXJfb3V0cHV0LmF1ZGlvLCAnLndhdicsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0ZV9uZXdfYmFzZWxpbmU9c2VsZi5fb3B0aW9ucy5uZXdfYmFz
ZWxpbmUpCisgICAgICAgIHNlbGYuX3NhdmVfYmFzZWxpbmVfZGF0YShkcml2ZXJfb3V0cHV0LnRl
eHQsICIudHh0IiwgZ2VuZXJhdGVfbmV3X2Jhc2VsaW5lPXNlbGYuX29wdGlvbnMubmV3X2Jhc2Vs
aW5lKQorICAgICAgICBzZWxmLl9zYXZlX2Jhc2VsaW5lX2RhdGEoZHJpdmVyX291dHB1dC5hdWRp
bywgIi53YXYiLCBnZW5lcmF0ZV9uZXdfYmFzZWxpbmU9c2VsZi5fb3B0aW9ucy5uZXdfYmFzZWxp
bmUpCiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHM6Ci0gICAgICAgICAgICBz
ZWxmLl9zYXZlX2Jhc2VsaW5lX2RhdGEoZHJpdmVyX291dHB1dC5pbWFnZSwgIi5wbmciLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlX25ld19iYXNlbGluZT1z
ZWxmLl9vcHRpb25zLm5ld19iYXNlbGluZSkKKyAgICAgICAgICAgIHNlbGYuX3NhdmVfYmFzZWxp
bmVfZGF0YShkcml2ZXJfb3V0cHV0LmltYWdlLCAiLnBuZyIsIGdlbmVyYXRlX25ld19iYXNlbGlu
ZT1zZWxmLl9vcHRpb25zLm5ld19iYXNlbGluZSkKIAogICAgIGRlZiBfc2F2ZV9iYXNlbGluZV9k
YXRhKHNlbGYsIGRhdGEsIG1vZGlmaWVyLCBnZW5lcmF0ZV9uZXdfYmFzZWxpbmU9VHJ1ZSk6CiAg
ICAgICAgICIiIlNhdmVzIGEgbmV3IGJhc2VsaW5lIGZpbGUgaW50byB0aGUgcG9ydCdzIGJhc2Vs
aW5lIGRpcmVjdG9yeS4KQEAgLTE3OCwxMCArMTg3LDEwIEBAIGNsYXNzIFNpbmdsZVRlc3RSdW5u
ZXI6CiAgICAgICAgICAgICAgICAgIi1leHBlY3RlZCIgKyBtb2RpZmllcikKICAgICAgICAgICAg
IGZzLm1heWJlX21ha2VfZGlyZWN0b3J5KG91dHB1dF9kaXIpCiAgICAgICAgICAgICBvdXRwdXRf
cGF0aCA9IGZzLmpvaW4ob3V0cHV0X2Rpciwgb3V0cHV0X2ZpbGUpCi0gICAgICAgICAgICBfbG9n
LmRlYnVnKCd3cml0aW5nIG5ldyBiYXNlbGluZSByZXN1bHQgIiVzIicgJSAob3V0cHV0X3BhdGgp
KQorICAgICAgICAgICAgX2xvZy5kZWJ1ZygnV3JpdGluZyBuZXcgYmFzZWxpbmUgcmVzdWx0ICIl
cyInICUgb3V0cHV0X3BhdGgpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBvdXRwdXRfcGF0
aCA9IHBvcnQuZXhwZWN0ZWRfZmlsZW5hbWUoc2VsZi5fZmlsZW5hbWUsIG1vZGlmaWVyKQotICAg
ICAgICAgICAgX2xvZy5kZWJ1ZygncmVzZXR0aW5nIGJhc2VsaW5lIHJlc3VsdCAiJXMiJyAlIG91
dHB1dF9wYXRoKQorICAgICAgICAgICAgX2xvZy5kZWJ1ZygnUmVzZXR0aW5nIGJhc2VsaW5lIHJl
c3VsdCAiJXMiJyAlIG91dHB1dF9wYXRoKQogCiAgICAgICAgIHBvcnQudXBkYXRlX2Jhc2VsaW5l
KG91dHB1dF9wYXRoLCBkYXRhKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdHMucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1
bHRzLnB5CShyZXZpc2lvbiA5MDAxOSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0cy5weQkod29ya2luZyBjb3B5KQpAQCAt
NTUsOSArNTUsOSBAQCBjbGFzcyBUZXN0UmVzdWx0KG9iamVjdCk6CiAgICAgZGVmIF9fbmVfXyhz
ZWxmLCBvdGhlcik6CiAgICAgICAgIHJldHVybiBub3QgKHNlbGYgPT0gb3RoZXIpCiAKLSAgICBk
ZWYgaGFzX2ZhaWx1cmVfbWF0Y2hpbmdfdHlwZXMoc2VsZiwgdHlwZXMpOgorICAgIGRlZiBoYXNf
ZmFpbHVyZV9tYXRjaGluZ190eXBlcyhzZWxmLCAqYXJncywgKiprYXJncyk6CiAgICAgICAgIGZv
ciBmYWlsdXJlIGluIHNlbGYuZmFpbHVyZXM6Ci0gICAgICAgICAgICBpZiB0eXBlKGZhaWx1cmUp
IGluIHR5cGVzOgorICAgICAgICAgICAgaWYgdHlwZShmYWlsdXJlKSBpbiBhcmdzOgogICAgICAg
ICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBGYWxzZQogCkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CShyZXZp
c2lvbiA5MDAxOSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMTM2LDYgKzEzNiw4IEBAIGRlZiB1bml0X3Rlc3Rf
bGlzdCgpOgogICAgIHRlc3RzLmFkZCgnZmFpbHVyZXMvZXhwZWN0ZWQvbmV3bGluZXNfd2l0aF9l
eGNlc3NfQ1IuaHRtbCcsCiAgICAgICAgICAgICAgIGV4cGVjdGVkX3RleHQ9ImZvb1xyXHJcclxu
IiwgYWN0dWFsX3RleHQ9ImZvb1xuIikKICAgICB0ZXN0cy5hZGQoJ2ZhaWx1cmVzL2V4cGVjdGVk
L3RleHQuaHRtbCcsIGFjdHVhbF90ZXh0PSd0ZXh0X2ZhaWwtcG5nJykKKyAgICB0ZXN0cy5hZGQo
J2ZhaWx1cmVzL3VuZXhwZWN0ZWQvbWlzc2luZ190ZXh0Lmh0bWwnLCBleHBlY3RlZF90ZXh0PU5v
bmUpCisgICAgdGVzdHMuYWRkKCdmYWlsdXJlcy91bmV4cGVjdGVkL21pc3NpbmdfaW1hZ2UuaHRt
bCcsIGV4cGVjdGVkX2ltYWdlPU5vbmUpCiAgICAgdGVzdHMuYWRkKCdmYWlsdXJlcy91bmV4cGVj
dGVkL2NyYXNoLmh0bWwnLCBjcmFzaD1UcnVlKQogICAgIHRlc3RzLmFkZCgnZmFpbHVyZXMvdW5l
eHBlY3RlZC9jcmFzaC13aXRoLXN0ZGVyci5odG1sJywgY3Jhc2g9VHJ1ZSwKICAgICAgICAgICAg
ICAgZXJyb3I9Im1vY2stc3RkLWVycm9yLW91dHB1dCIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99139</attachid>
            <date>2011-06-29 13:37:35 -0700</date>
            <delta_ts>2011-06-29 15:26:11 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-38063-20110629133734.patch</filename>
            <type>text/plain</type>
            <size>15496</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDkwMDI5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzAgQEAKKzIwMTEtMDYtMjkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBEaXJrIFByYW5rZS4KKworICAgICAgICBuZXctcnVuLXdlYmtp
dC10ZXN0cyBjb21wbGFpbnMgYWJvdXQgbWlzc2luZyBwaXhlbCByZXN1bHRzIGluc3RlYWQgb2Yg
cGxvcHBpbmcgZG93biBuZXcgZXhwZWN0YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODA2MworCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdl
cyBuZXctcnVuLXdlYmtpdC10ZXN0cyB0byBtYXRjaCBvbGQtcnVuLXdlYmtpdC10ZXN0cworICAg
ICAgICBpbiBnZW5lcmF0aW5nIG5ldyBleHBlY3RlZCByZXN1bHRzIHdoZW4gdGhlIGV4cGVjdGVk
IHJlc3VsdHMgYXJlCisgICAgICAgIG1pc3NpbmcuCisKKyAgICAgICAgVGhlcmUgYXJlIHN0aWxs
IGEgY291cGxlIGRldGFpbHMgdGhhdCBhcmUgZGlmZmVyZW50OgorCisgICAgICAgIDEpIEltYWdl
IGJhc2VsaW5lcyBhcmVuJ3QgZ2VuZXJhdGVkIHVubGVzcyB5b3UgcnVuIHdpdGggLXAuCisgICAg
ICAgIDIpIFJlbmRlciB0cmVlIGR1bXBzIGFyZSBwbGFjZXMgaW4gdGhlIGNyb3NzLXBsYXRmb3Jt
IGRpcmVjdG9yeSBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJl
Y3RvcnkuCisKKyAgICAgICAgSSdtIGluY2xpbmVkIHRvIGRlYWwgd2l0aCBib3RoIG9mIHRoZXNl
IGlzc3VlcyBpbiBmb2xsb3ctdXAgcGF0Y2hlcy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyLnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90ZXN0
X3J1bm5lci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS90ZXN0X3Jlc3VsdHMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHk6CisKIDIw
MTEtMDYtMjkgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4OTg4OC4KSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHkJ
KHJldmlzaW9uIDkwMDE5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xh
eW91dHRlc3RyZXN1bHRzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNyArMTYxLDcgQEAgY2xh
c3MgTGF5b3V0VGVzdFJlc3VsdHMob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3Rf
cmVzdWx0cwogCiAgICAgZGVmIHJlc3VsdHNfbWF0Y2hpbmdfZmFpbHVyZV90eXBlcyhzZWxmLCBm
YWlsdXJlX3R5cGVzKToKLSAgICAgICAgcmV0dXJuIFtyZXN1bHQgZm9yIHJlc3VsdCBpbiBzZWxm
Ll90ZXN0X3Jlc3VsdHMgaWYgcmVzdWx0Lmhhc19mYWlsdXJlX21hdGNoaW5nX3R5cGVzKGZhaWx1
cmVfdHlwZXMpXQorICAgICAgICByZXR1cm4gW3Jlc3VsdCBmb3IgcmVzdWx0IGluIHNlbGYuX3Rl
c3RfcmVzdWx0cyBpZiByZXN1bHQuaGFzX2ZhaWx1cmVfbWF0Y2hpbmdfdHlwZXMoKmZhaWx1cmVf
dHlwZXMpXQogCiAgICAgZGVmIHRlc3RzX21hdGNoaW5nX2ZhaWx1cmVfdHlwZXMoc2VsZiwgZmFp
bHVyZV90eXBlcyk6CiAgICAgICAgIHJldHVybiBbcmVzdWx0LmZpbGVuYW1lIGZvciByZXN1bHQg
aW4gc2VsZi5yZXN1bHRzX21hdGNoaW5nX2ZhaWx1cmVfdHlwZXMoZmFpbHVyZV90eXBlcyldCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3Rz
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1
bl93ZWJraXRfdGVzdHMucHkJKHJldmlzaW9uIDkwMDE5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQkod29ya2luZyBjb3B5KQpAQCAt
Mjc5LDggKzI3OSw2IEBAIGRlZiBwYXJzZV9hcmdzKGFyZ3M9Tm9uZSk6CiAgICAgIyBGSVhNRTog
TmVlZDogLS1zYW1wbGUtb24tdGltZW91dCBSdW4gc2FtcGxlIG9uIHRpbWVvdXQKIAogICAgIG9s
ZF9ydW5fd2Via2l0X3Rlc3RzX2NvbXBhdCA9IFsKLSAgICAgICAgIyBOUldUIGRvZXNuJ3QgZ2Vu
ZXJhdGUgcmVzdWx0cyBieSBkZWZhdWx0IGFueXdheS4KLSAgICAgICAgX2NvbXBhdF9zaGltX29w
dGlvbigiLS1uby1uZXctdGVzdC1yZXN1bHRzIiksCiAgICAgICAgICMgTlJXVCBkb2Vzbid0IHNh
bXBsZSBvbiB0aW1lb3V0IHlldCBhbnl3YXkuCiAgICAgICAgIF9jb21wYXRfc2hpbV9vcHRpb24o
Ii0tbm8tc2FtcGxlLW9uLXRpbWVvdXQiKSwKICAgICAgICAgIyBGSVhNRTogTlJXVCBuZWVkcyB0
byBzdXBwb3J0IHJlbW90ZSBsaW5rcyBldmVudHVhbGx5LgpAQCAtMzA3LDYgKzMwNSw5IEBAIGRl
ZiBwYXJzZV9hcmdzKGFyZ3M9Tm9uZSk6CiAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCIt
LXJlc2V0LXJlc3VsdHMiLCBhY3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICAgICAgZGVmYXVs
dD1GYWxzZSwgaGVscD0iUmVzZXQgYW55IGV4aXN0aW5nIGJhc2VsaW5lcyB0byB0aGUgIgogICAg
ICAgICAgICAgICAgICAiZ2VuZXJhdGVkIHJlc3VsdHMiKSwKKyAgICAgICAgb3B0cGFyc2UubWFr
ZV9vcHRpb24oIi0tbm8tbmV3LXRlc3QtcmVzdWx0cyIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLAor
ICAgICAgICAgICAgZGVzdD0ibmV3X3Rlc3RfcmVzdWx0cyIsIGRlZmF1bHQ9VHJ1ZSwKKyAgICAg
ICAgICAgIGhlbHA9IkRvbid0IGNyZWF0ZSBuZXcgYmFzZWxpbmVzIHdoZW4gbm8gZXhwZWN0ZWQg
cmVzdWx0cyBleGlzdCIpLAogICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1za2lwLWZh
aWxpbmctdGVzdHMiLCBhY3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICAgICAgZGVmYXVsdD1G
YWxzZSwgaGVscD0iU2tpcCB0ZXN0cyB0aGF0IGFyZSBleHBlY3RlZCB0byBmYWlsLiAiCiAgICAg
ICAgICAgICAgICAgICJOb3RlOiBXaGVuIHVzaW5nIHRoaXMgb3B0aW9uLCB5b3UgbWlnaHQgbWlz
cyBuZXcgY3Jhc2hlcyAiCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0
aW9udGVzdC5weQkocmV2aXNpb24gOTAwMTkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQkod29ya2luZyBj
b3B5KQpAQCAtNjQxLDkgKzY0MSw5IEBAIE1haW5UZXN0ID0gc2tpcF9pZihNYWluVGVzdCwgc3lz
LnBsYXRmb3IKIAogCiBjbGFzcyBSZWJhc2VsaW5lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0g
ICAgZGVmIGFzc2VydEJhc2VsaW5lcyhzZWxmLCBmaWxlX2xpc3QsIGZpbGUpOgorICAgIGRlZiBh
c3NlcnRCYXNlbGluZXMoc2VsZiwgZmlsZV9saXN0LCBmaWxlLCBleHRlbnNpb25zKToKICAgICAg
ICAgImFzc2VydCB0aGF0IHRoZSBmaWxlX2xpc3QgY29udGFpbnMgdGhlIGJhc2VsaW5lcy4iIiIK
LSAgICAgICAgZm9yIGV4dCBpbiAoIi50eHQiLCAiLnBuZyIpOgorICAgICAgICBmb3IgZXh0IGlu
IGV4dGVuc2lvbnM6CiAgICAgICAgICAgICBiYXNlbGluZSA9IGZpbGUgKyAiLWV4cGVjdGVkIiAr
IGV4dAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFueShmLmZpbmQoYmFzZWxpbmUpICE9
IC0xIGZvciBmIGluIGZpbGVfbGlzdCkpCiAKQEAgLTY2Miw4ICs2NjIsMjMgQEAgY2xhc3MgUmVi
YXNlbGluZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBmaWxlX2xpc3QgPSBmcy53
cml0dGVuX2ZpbGVzLmtleXMoKQogICAgICAgICBmaWxlX2xpc3QucmVtb3ZlKCcvdG1wL2xheW91
dC10ZXN0LXJlc3VsdHMvdGVzdHNfcnVuMC50eHQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxlbihmaWxlX2xpc3QpLCA0KQotICAgICAgICBzZWxmLmFzc2VydEJhc2VsaW5lcyhmaWxlX2xp
c3QsICIvcGFzc2VzL2ltYWdlIikKLSAgICAgICAgc2VsZi5hc3NlcnRCYXNlbGluZXMoZmlsZV9s
aXN0LCAiL2ZhaWx1cmVzL2V4cGVjdGVkL21pc3NpbmdfaW1hZ2UiKQorICAgICAgICBzZWxmLmFz
c2VydEJhc2VsaW5lcyhmaWxlX2xpc3QsICIvcGFzc2VzL2ltYWdlIiwgWyIudHh0IiwgIi5wbmci
XSkKKyAgICAgICAgc2VsZi5hc3NlcnRCYXNlbGluZXMoZmlsZV9saXN0LCAiL2ZhaWx1cmVzL2V4
cGVjdGVkL21pc3NpbmdfaW1hZ2UiLCBbIi50eHQiLCAiLnBuZyJdKQorCisgICAgZGVmIHRlc3Rf
bWlzc2luZ19yZXN1bHRzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB3ZSB1cGRhdGUgZXhw
ZWN0YXRpb25zIGluIHBsYWNlLiBJZiB0aGUgZXhwZWN0YXRpb24KKyAgICAgICAgIyBpcyBtaXNz
aW5nLCB1cGRhdGUgdGhlIGV4cGVjdGVkIGdlbmVyaWMgbG9jYXRpb24uCisgICAgICAgIGZzID0g
cG9ydC51bml0X3Rlc3RfZmlsZXN5c3RlbSgpCisgICAgICAgIHBhc3NpbmdfcnVuKFsnLS1uby1z
aG93LXJlc3VsdHMnLAorICAgICAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVzL3VuZXhwZWN0ZWQv
bWlzc2luZ190ZXh0Lmh0bWwnLAorICAgICAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVzL3VuZXhw
ZWN0ZWQvbWlzc2luZ19pbWFnZS5odG1sJywKKyAgICAgICAgICAgICAgICAgICAgICdmYWlsdXJl
cy91bmV4cGVjdGVkL21pc3NpbmdfYXVkaW8uaHRtbCddLAorICAgICAgICAgICAgICAgICAgICAg
dGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmlsZXN5c3RlbT1mcykKKyAgICAgICAgZmlsZV9saXN0ID0g
ZnMud3JpdHRlbl9maWxlcy5rZXlzKCkKKyAgICAgICAgZmlsZV9saXN0LnJlbW92ZSgnL3RtcC9s
YXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3RzX3J1bjAudHh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsZW4oZmlsZV9saXN0KSwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRCYXNlbGluZXMoZmls
ZV9saXN0LCAiL2ZhaWx1cmVzL3VuZXhwZWN0ZWQvbWlzc2luZ190ZXh0IiwgWyIudHh0Il0pCisg
ICAgICAgIHNlbGYuYXNzZXJ0QmFzZWxpbmVzKGZpbGVfbGlzdCwgIi9mYWlsdXJlcy91bmV4cGVj
dGVkL21pc3NpbmdfaW1hZ2UiLCBbIi5wbmciXSkKIAogICAgIGRlZiB0ZXN0X25ld19iYXNlbGlu
ZShzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgd2UgdXBkYXRlIHRoZSBwbGF0Zm9ybSBleHBl
Y3RhdGlvbnMuIElmIHRoZSBleHBlY3RhdGlvbgpAQCAtNjc4LDkgKzY5Myw5IEBAIGNsYXNzIFJl
YmFzZWxpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgZmlsZV9saXN0LnJlbW92
ZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3RzX3J1bjAudHh0JykKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsZW4oZmlsZV9saXN0KSwgNCkKICAgICAgICAgc2VsZi5hc3NlcnRCYXNl
bGluZXMoZmlsZV9saXN0LAotICAgICAgICAgICAgIi9wbGF0Zm9ybS90ZXN0LW1hYy1sZW9wYXJk
L3Bhc3Nlcy9pbWFnZSIpCisgICAgICAgICAgICAiL3BsYXRmb3JtL3Rlc3QtbWFjLWxlb3BhcmQv
cGFzc2VzL2ltYWdlIiwgWyIudHh0IiwgIi5wbmciXSkKICAgICAgICAgc2VsZi5hc3NlcnRCYXNl
bGluZXMoZmlsZV9saXN0LAotICAgICAgICAgICAgIi9wbGF0Zm9ybS90ZXN0LW1hYy1sZW9wYXJk
L2ZhaWx1cmVzL2V4cGVjdGVkL21pc3NpbmdfaW1hZ2UiKQorICAgICAgICAgICAgIi9wbGF0Zm9y
bS90ZXN0LW1hYy1sZW9wYXJkL2ZhaWx1cmVzL2V4cGVjdGVkL21pc3NpbmdfaW1hZ2UiLCBbIi50
eHQiLCAiLnBuZyJdKQogCiAKIGNsYXNzIERyeXJ1blRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
bWFuYWdlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyLnB5CShyZXZpc2lvbiA5MDAxOSkKKysrIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXIucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTc5NSw3ICs3OTUsNyBAQCBjbGFzcyBNYW5hZ2VyOgogCiAgICAg
ICAgICMgV2UgZXhjbHVkZSB0aGUgY3Jhc2hlcyBmcm9tIHRoZSBsaXN0IG9mIHJlc3VsdHMgdG8g
cmV0cnksIGJlY2F1c2UKICAgICAgICAgIyB3ZSB3YW50IHRvIHRyZWF0IGV2ZW4gYSBwb3RlbnRp
YWxseSBmbGFreSBjcmFzaCBhcyBhbiBlcnJvci4KLSAgICAgICAgZmFpbHVyZXMgPSBzZWxmLl9n
ZXRfZmFpbHVyZXMocmVzdWx0X3N1bW1hcnksIGluY2x1ZGVfY3Jhc2hlcz1GYWxzZSkKKyAgICAg
ICAgZmFpbHVyZXMgPSBzZWxmLl9nZXRfZmFpbHVyZXMocmVzdWx0X3N1bW1hcnksIGluY2x1ZGVf
Y3Jhc2hlcz1GYWxzZSwgaW5jbHVkZV9taXNzaW5nPUZhbHNlKQogICAgICAgICByZXRyeV9zdW1t
YXJ5ID0gcmVzdWx0X3N1bW1hcnkKICAgICAgICAgd2hpbGUgKGxlbihmYWlsdXJlcykgYW5kIHNl
bGYuX29wdGlvbnMucmV0cnlfZmFpbHVyZXMgYW5kCiAgICAgICAgICAgICBub3Qgc2VsZi5fcmV0
cnlpbmcgYW5kIG5vdCBpbnRlcnJ1cHRlZCk6CkBAIC04MDYsNyArODA2LDcgQEAgY2xhc3MgTWFu
YWdlcjoKICAgICAgICAgICAgIHJldHJ5X3N1bW1hcnkgPSBSZXN1bHRTdW1tYXJ5KHNlbGYuX2V4
cGVjdGF0aW9ucywgZmFpbHVyZXMua2V5cygpKQogICAgICAgICAgICAgIyBOb3RlIHRoYXQgd2Ug
aW50ZW50aW9uYWxseSBpZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBoZXJlLgogICAgICAgICAgICAg
c2VsZi5fcnVuX3Rlc3RzKGZhaWx1cmVzLmtleXMoKSwgcmV0cnlfc3VtbWFyeSkKLSAgICAgICAg
ICAgIGZhaWx1cmVzID0gc2VsZi5fZ2V0X2ZhaWx1cmVzKHJldHJ5X3N1bW1hcnksIGluY2x1ZGVf
Y3Jhc2hlcz1UcnVlKQorICAgICAgICAgICAgZmFpbHVyZXMgPSBzZWxmLl9nZXRfZmFpbHVyZXMo
cmV0cnlfc3VtbWFyeSwgaW5jbHVkZV9jcmFzaGVzPVRydWUsIGluY2x1ZGVfbWlzc2luZz1UcnVl
KQogCiAgICAgICAgIGVuZF90aW1lID0gdGltZS50aW1lKCkKIApAQCAtOTMzLDcgKzkzMyw3IEBA
IGNsYXNzIE1hbmFnZXI6CiAgICAgICAgICAgICBpZiBzZWxmLl9mcy5pc2RpcihzZWxmLl9mcy5q
b2luKGxheW91dF90ZXN0c19kaXIsIGRpcm5hbWUpKToKICAgICAgICAgICAgICAgICBzZWxmLl9m
cy5ybXRyZWUoc2VsZi5fZnMuam9pbihzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSwgZGlybmFtZSkp
CiAKLSAgICBkZWYgX2dldF9mYWlsdXJlcyhzZWxmLCByZXN1bHRfc3VtbWFyeSwgaW5jbHVkZV9j
cmFzaGVzKToKKyAgICBkZWYgX2dldF9mYWlsdXJlcyhzZWxmLCByZXN1bHRfc3VtbWFyeSwgaW5j
bHVkZV9jcmFzaGVzLCBpbmNsdWRlX21pc3NpbmcpOgogICAgICAgICAiIiJGaWx0ZXJzIGEgZGlj
dCBvZiByZXN1bHRzIGFuZCByZXR1cm5zIG9ubHkgdGhlIGZhaWx1cmVzLgogCiAgICAgICAgIEFy
Z3M6CkBAIC05NDgsNyArOTQ4LDggQEAgY2xhc3MgTWFuYWdlcjoKICAgICAgICAgZmFpbGVkX3Jl
c3VsdHMgPSB7fQogICAgICAgICBmb3IgdGVzdCwgcmVzdWx0IGluIHJlc3VsdF9zdW1tYXJ5LnVu
ZXhwZWN0ZWRfcmVzdWx0cy5pdGVyaXRlbXMoKToKICAgICAgICAgICAgIGlmIChyZXN1bHQudHlw
ZSA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5QQVNTIG9yCi0gICAgICAgICAgICAgICAgcmVzdWx0LnR5
cGUgPT0gdGVzdF9leHBlY3RhdGlvbnMuQ1JBU0ggYW5kIG5vdCBpbmNsdWRlX2NyYXNoZXMpOgor
ICAgICAgICAgICAgICAgIChyZXN1bHQudHlwZSA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5DUkFTSCBh
bmQgbm90IGluY2x1ZGVfY3Jhc2hlcykgb3IKKyAgICAgICAgICAgICAgICAocmVzdWx0LnR5cGUg
PT0gdGVzdF9leHBlY3RhdGlvbnMuTUlTU0lORyBhbmQgbm90IGluY2x1ZGVfbWlzc2luZykpOgog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBmYWlsZWRfcmVzdWx0c1t0ZXN0
XSA9IHJlc3VsdC50eXBlCiAKQEAgLTEyOTcsNyArMTI5OCw3IEBAIGNsYXNzIE1hbmFnZXI6CiAg
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZnVsbF9yZXN1bHRzX2h0bWw6CiAgICAgICAgICAgICB0
ZXN0X2ZpbGVzID0gcmVzdWx0X3N1bW1hcnkuZmFpbHVyZXMua2V5cygpCiAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICB1bmV4cGVjdGVkX2ZhaWx1cmVzID0gc2VsZi5fZ2V0X2ZhaWx1cmVzKHJl
c3VsdF9zdW1tYXJ5LCBpbmNsdWRlX2NyYXNoZXM9VHJ1ZSkKKyAgICAgICAgICAgIHVuZXhwZWN0
ZWRfZmFpbHVyZXMgPSBzZWxmLl9nZXRfZmFpbHVyZXMocmVzdWx0X3N1bW1hcnksIGluY2x1ZGVf
Y3Jhc2hlcz1UcnVlLCBpbmNsdWRlX21pc3Npbmc9VHJ1ZSkKICAgICAgICAgICAgIHRlc3RfZmls
ZXMgPSB1bmV4cGVjdGVkX2ZhaWx1cmVzLmtleXMoKQogCiAgICAgICAgIGlmIG5vdCBsZW4odGVz
dF9maWxlcyk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS9zaW5nbGVfdGVzdF9ydW5uZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3RfcnVu
bmVyLnB5CShyZXZpc2lvbiA5MDAxOSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90ZXN0X3J1bm5lci5weQkod29ya2luZyBjb3B5
KQpAQCAtMTI4LDMxICsxMjgsNDAgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcjoKICAgICAgICAg
ZHJpdmVyX291dHB1dCA9IHNlbGYuX2RyaXZlci5ydW5fdGVzdChzZWxmLl9kcml2ZXJfaW5wdXQo
KSkKICAgICAgICAgZXhwZWN0ZWRfZHJpdmVyX291dHB1dCA9IHNlbGYuX2V4cGVjdGVkX2RyaXZl
cl9vdXRwdXQoKQogICAgICAgICB0ZXN0X3Jlc3VsdCA9IHNlbGYuX2NvbXBhcmVfb3V0cHV0KGRy
aXZlcl9vdXRwdXQsIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQpCi0gICAgICAgIHRlc3RfcmVzdWx0
X3dyaXRlci53cml0ZV90ZXN0X3Jlc3VsdChzZWxmLl9wb3J0LCBzZWxmLl9maWxlbmFtZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlcl9vdXRwdXQs
IGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQsIHRlc3RfcmVzdWx0LmZhaWx1cmVzKQorICAgICAgICBp
ZiBzZWxmLl9vcHRpb25zLm5ld190ZXN0X3Jlc3VsdHM6CisgICAgICAgICAgICBzZWxmLl9hZGRf
bWlzc2luZ19iYXNlbGluZXModGVzdF9yZXN1bHQsIGRyaXZlcl9vdXRwdXQpCisgICAgICAgIHRl
c3RfcmVzdWx0X3dyaXRlci53cml0ZV90ZXN0X3Jlc3VsdChzZWxmLl9wb3J0LCBzZWxmLl9maWxl
bmFtZSwgZHJpdmVyX291dHB1dCwgZXhwZWN0ZWRfZHJpdmVyX291dHB1dCwgdGVzdF9yZXN1bHQu
ZmFpbHVyZXMpCiAgICAgICAgIHJldHVybiB0ZXN0X3Jlc3VsdAogCiAgICAgZGVmIF9ydW5fcmVi
YXNlbGluZShzZWxmKToKICAgICAgICAgZHJpdmVyX291dHB1dCA9IHNlbGYuX2RyaXZlci5ydW5f
dGVzdChzZWxmLl9kcml2ZXJfaW5wdXQoKSkKICAgICAgICAgZmFpbHVyZXMgPSBzZWxmLl9oYW5k
bGVfZXJyb3IoZHJpdmVyX291dHB1dCkKLSAgICAgICAgdGVzdF9yZXN1bHRfd3JpdGVyLndyaXRl
X3Rlc3RfcmVzdWx0KHNlbGYuX3BvcnQsIHNlbGYuX2ZpbGVuYW1lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyX291dHB1dCwgTm9uZSwgZmFpbHVy
ZXMpCisgICAgICAgIHRlc3RfcmVzdWx0X3dyaXRlci53cml0ZV90ZXN0X3Jlc3VsdChzZWxmLl9w
b3J0LCBzZWxmLl9maWxlbmFtZSwgZHJpdmVyX291dHB1dCwgTm9uZSwgZmFpbHVyZXMpCiAgICAg
ICAgICMgRklYTUU6IEl0IHRoZSB0ZXN0IGNyYXNoZWQgb3IgdGltZWQgb3V0LCBpdCBtaWdodCBi
ZSBiZXR0dGVyIHRvIGF2b2lkCiAgICAgICAgICMgdG8gd3JpdGUgbmV3IGJhc2VsaW5lcy4KLSAg
ICAgICAgc2VsZi5fc2F2ZV9iYXNlbGluZXMoZHJpdmVyX291dHB1dCkKKyAgICAgICAgc2VsZi5f
b3ZlcndyaXRlX2Jhc2VsaW5lcyhkcml2ZXJfb3V0cHV0KQogICAgICAgICByZXR1cm4gVGVzdFJl
c3VsdChzZWxmLl9maWxlbmFtZSwgZmFpbHVyZXMsIGRyaXZlcl9vdXRwdXQudGVzdF90aW1lLCBk
cml2ZXJfb3V0cHV0Lmhhc19zdGRlcnIoKSkKIAotICAgIGRlZiBfc2F2ZV9iYXNlbGluZXMoc2Vs
ZiwgZHJpdmVyX291dHB1dCk6CisgICAgZGVmIF9hZGRfbWlzc2luZ19iYXNlbGluZXMoc2VsZiwg
dGVzdF9yZXN1bHQsIGRyaXZlcl9vdXRwdXQpOgorICAgICAgICBpZiB0ZXN0X3Jlc3VsdC5oYXNf
ZmFpbHVyZV9tYXRjaGluZ190eXBlcyh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVNaXNzaW5nUmVzdWx0
KToKKyAgICAgICAgICAgICMgRklYTUU6IFdlIHNlZW0gdG8gYmUgcHV0dGluZyBuZXcgdGV4dCBy
ZXN1bHRzIGluIG5vbi1wbGF0Zm9ybQorICAgICAgICAgICAgIyBzcGVjaWZpYyBkaXJlY3Rvcmll
cyBldmVuIHdoZW4gdGhleSdyZSByZW5kZXJ0cmVlIGR1bXBzLiBNYXliZQorICAgICAgICAgICAg
IyB3ZSBzaG91bGQgaGF2ZSBhIGRpZmZlcmVudCBraW5kIG9mIGZhaWx1cmUgZm9yIHJlbmRlciB0
cmVlIGR1bXBzCisgICAgICAgICAgICAjIHRoYW4gZm9yIHRleHQgdGVzdHM/CisgICAgICAgICAg
ICBzZWxmLl9zYXZlX2Jhc2VsaW5lX2RhdGEoZHJpdmVyX291dHB1dC50ZXh0LCAiLnR4dCIsIGdl
bmVyYXRlX25ld19iYXNlbGluZT1GYWxzZSkKKyAgICAgICAgaWYgdGVzdF9yZXN1bHQuaGFzX2Zh
aWx1cmVfbWF0Y2hpbmdfdHlwZXModGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlzc2luZ0F1ZGlvKToK
KyAgICAgICAgICAgIHNlbGYuX3NhdmVfYmFzZWxpbmVfZGF0YShkcml2ZXJfb3V0cHV0LmF1ZGlv
LCAiLndhdiIsIGdlbmVyYXRlX25ld19iYXNlbGluZT1GYWxzZSkKKyAgICAgICAgaWYgdGVzdF9y
ZXN1bHQuaGFzX2ZhaWx1cmVfbWF0Y2hpbmdfdHlwZXModGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlz
c2luZ0ltYWdlLCB0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVNaXNzaW5nSW1hZ2VIYXNoKToKKyAgICAg
ICAgICAgIHNlbGYuX3NhdmVfYmFzZWxpbmVfZGF0YShkcml2ZXJfb3V0cHV0LmltYWdlLCAiLnBu
ZyIsIGdlbmVyYXRlX25ld19iYXNlbGluZT1GYWxzZSkKKworICAgIGRlZiBfb3ZlcndyaXRlX2Jh
c2VsaW5lcyhzZWxmLCBkcml2ZXJfb3V0cHV0KToKICAgICAgICAgIyBBbHRob3VnaCBhbGwgRHVt
cFJlbmRlclRyZWUgb3V0cHV0IHNob3VsZCBiZSB1dGYtOCwKICAgICAgICAgIyB3ZSBkbyBub3Qg
ZXZlciBkZWNvZGUgaXQgaW5zaWRlIHJ1bi13ZWJraXQtdGVzdHMuICBGb3Igc29tZSB0ZXN0cwog
ICAgICAgICAjIER1bXBSZW5kZXJUcmVlIG1heSBub3Qgb3V0cHV0IHV0Zi04IHRleHQgKGUuZy4g
d2ViYXJjaGl2ZXMpLgotICAgICAgICBzZWxmLl9zYXZlX2Jhc2VsaW5lX2RhdGEoZHJpdmVyX291
dHB1dC50ZXh0LCAiLnR4dCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5l
cmF0ZV9uZXdfYmFzZWxpbmU9c2VsZi5fb3B0aW9ucy5uZXdfYmFzZWxpbmUpCi0gICAgICAgIHNl
bGYuX3NhdmVfYmFzZWxpbmVfZGF0YShkcml2ZXJfb3V0cHV0LmF1ZGlvLCAnLndhdicsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZV9uZXdfYmFzZWxpbmU9c2VsZi5f
b3B0aW9ucy5uZXdfYmFzZWxpbmUpCisgICAgICAgIHNlbGYuX3NhdmVfYmFzZWxpbmVfZGF0YShk
cml2ZXJfb3V0cHV0LnRleHQsICIudHh0IiwgZ2VuZXJhdGVfbmV3X2Jhc2VsaW5lPXNlbGYuX29w
dGlvbnMubmV3X2Jhc2VsaW5lKQorICAgICAgICBzZWxmLl9zYXZlX2Jhc2VsaW5lX2RhdGEoZHJp
dmVyX291dHB1dC5hdWRpbywgIi53YXYiLCBnZW5lcmF0ZV9uZXdfYmFzZWxpbmU9c2VsZi5fb3B0
aW9ucy5uZXdfYmFzZWxpbmUpCiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHM6
Ci0gICAgICAgICAgICBzZWxmLl9zYXZlX2Jhc2VsaW5lX2RhdGEoZHJpdmVyX291dHB1dC5pbWFn
ZSwgIi5wbmciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRl
X25ld19iYXNlbGluZT1zZWxmLl9vcHRpb25zLm5ld19iYXNlbGluZSkKKyAgICAgICAgICAgIHNl
bGYuX3NhdmVfYmFzZWxpbmVfZGF0YShkcml2ZXJfb3V0cHV0LmltYWdlLCAiLnBuZyIsIGdlbmVy
YXRlX25ld19iYXNlbGluZT1zZWxmLl9vcHRpb25zLm5ld19iYXNlbGluZSkKIAogICAgIGRlZiBf
c2F2ZV9iYXNlbGluZV9kYXRhKHNlbGYsIGRhdGEsIG1vZGlmaWVyLCBnZW5lcmF0ZV9uZXdfYmFz
ZWxpbmU9VHJ1ZSk6CiAgICAgICAgICIiIlNhdmVzIGEgbmV3IGJhc2VsaW5lIGZpbGUgaW50byB0
aGUgcG9ydCdzIGJhc2VsaW5lIGRpcmVjdG9yeS4KQEAgLTE3OCwxMCArMTg3LDEwIEBAIGNsYXNz
IFNpbmdsZVRlc3RSdW5uZXI6CiAgICAgICAgICAgICAgICAgIi1leHBlY3RlZCIgKyBtb2RpZmll
cikKICAgICAgICAgICAgIGZzLm1heWJlX21ha2VfZGlyZWN0b3J5KG91dHB1dF9kaXIpCiAgICAg
ICAgICAgICBvdXRwdXRfcGF0aCA9IGZzLmpvaW4ob3V0cHV0X2Rpciwgb3V0cHV0X2ZpbGUpCi0g
ICAgICAgICAgICBfbG9nLmRlYnVnKCd3cml0aW5nIG5ldyBiYXNlbGluZSByZXN1bHQgIiVzIicg
JSAob3V0cHV0X3BhdGgpKQorICAgICAgICAgICAgX2xvZy5kZWJ1ZygnV3JpdGluZyBuZXcgYmFz
ZWxpbmUgcmVzdWx0ICIlcyInICUgb3V0cHV0X3BhdGgpCiAgICAgICAgIGVsc2U6CiAgICAgICAg
ICAgICBvdXRwdXRfcGF0aCA9IHBvcnQuZXhwZWN0ZWRfZmlsZW5hbWUoc2VsZi5fZmlsZW5hbWUs
IG1vZGlmaWVyKQotICAgICAgICAgICAgX2xvZy5kZWJ1ZygncmVzZXR0aW5nIGJhc2VsaW5lIHJl
c3VsdCAiJXMiJyAlIG91dHB1dF9wYXRoKQorICAgICAgICAgICAgX2xvZy5kZWJ1ZygnUmVzZXR0
aW5nIGJhc2VsaW5lIHJlc3VsdCAiJXMiJyAlIG91dHB1dF9wYXRoKQogCiAgICAgICAgIHBvcnQu
dXBkYXRlX2Jhc2VsaW5lKG91dHB1dF9wYXRoLCBkYXRhKQogCkluZGV4OiBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdHMucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvdGVzdF9yZXN1bHRzLnB5CShyZXZpc2lvbiA5MDAxOSkKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0cy5weQkod29y
a2luZyBjb3B5KQpAQCAtNTUsOSArNTUsOSBAQCBjbGFzcyBUZXN0UmVzdWx0KG9iamVjdCk6CiAg
ICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIHJldHVybiBub3QgKHNlbGYgPT0g
b3RoZXIpCiAKLSAgICBkZWYgaGFzX2ZhaWx1cmVfbWF0Y2hpbmdfdHlwZXMoc2VsZiwgdHlwZXMp
OgorICAgIGRlZiBoYXNfZmFpbHVyZV9tYXRjaGluZ190eXBlcyhzZWxmLCAqYXJncywgKiprYXJn
cyk6CiAgICAgICAgIGZvciBmYWlsdXJlIGluIHNlbGYuZmFpbHVyZXM6Ci0gICAgICAgICAgICBp
ZiB0eXBlKGZhaWx1cmUpIGluIHR5cGVzOgorICAgICAgICAgICAgaWYgdHlwZShmYWlsdXJlKSBp
biBhcmdzOgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBGYWxz
ZQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3Qu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC90ZXN0LnB5CShyZXZpc2lvbiA5MDAxOSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMTM2LDYgKzEzNiw4IEBA
IGRlZiB1bml0X3Rlc3RfbGlzdCgpOgogICAgIHRlc3RzLmFkZCgnZmFpbHVyZXMvZXhwZWN0ZWQv
bmV3bGluZXNfd2l0aF9leGNlc3NfQ1IuaHRtbCcsCiAgICAgICAgICAgICAgIGV4cGVjdGVkX3Rl
eHQ9ImZvb1xyXHJcclxuIiwgYWN0dWFsX3RleHQ9ImZvb1xuIikKICAgICB0ZXN0cy5hZGQoJ2Zh
aWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsIGFjdHVhbF90ZXh0PSd0ZXh0X2ZhaWwtcG5nJykK
KyAgICB0ZXN0cy5hZGQoJ2ZhaWx1cmVzL3VuZXhwZWN0ZWQvbWlzc2luZ190ZXh0Lmh0bWwnLCBl
eHBlY3RlZF90ZXh0PU5vbmUpCisgICAgdGVzdHMuYWRkKCdmYWlsdXJlcy91bmV4cGVjdGVkL21p
c3NpbmdfaW1hZ2UuaHRtbCcsIGV4cGVjdGVkX2ltYWdlPU5vbmUpCiAgICAgdGVzdHMuYWRkKCdm
YWlsdXJlcy91bmV4cGVjdGVkL2NyYXNoLmh0bWwnLCBjcmFzaD1UcnVlKQogICAgIHRlc3RzLmFk
ZCgnZmFpbHVyZXMvdW5leHBlY3RlZC9jcmFzaC13aXRoLXN0ZGVyci5odG1sJywgY3Jhc2g9VHJ1
ZSwKICAgICAgICAgICAgICAgZXJyb3I9Im1vY2stc3RkLWVycm9yLW91dHB1dCIpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>