<?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>55457</bug_id>
          
          <creation_ts>2011-03-01 04:25:32 -0800</creation_ts>
          <short_desc>[NRWT] Add support for reftests to new-run-webkit-tests</short_desc>
          <delta_ts>2011-03-15 03:46:54 -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>36065</blocked>
    
    <blocked>56076</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hayato Ito">hayato</reporter>
          <assigned_to name="Hayato Ito">hayato</assigned_to>
          <cc>dpranke</cc>
    
    <cc>hamaji</cc>
    
    <cc>mihaip</cc>
    
    <cc>ojan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>359799</commentid>
    <comment_count>0</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-03-01 04:25:32 -0800</bug_when>
    <thetext>Please see a master bug for the details:
  https://bugs.webkit.org/show_bug.cgi?id=36065

This is an initial effort to add support for reftests to new-run-webkit-tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359802</commentid>
    <comment_count>1</comment_count>
      <attachid>84209</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-03-01 04:33:31 -0800</bug_when>
    <thetext>Created attachment 84209
in-progress. not-ready-for-review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363859</commentid>
    <comment_count>2</comment_count>
      <attachid>85028</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-03-08 00:02:32 -0800</bug_when>
    <thetext>Created attachment 85028
add-reftests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363868</commentid>
    <comment_count>3</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-03-08 00:19:42 -0800</bug_when>
    <thetext>I guess there are a lot of things remained until we can announce that &apos;Reftests is now available&apos;.
Updating documents, wiki, tweaking (old)-webkit-run-tests and so on.
But as for new-run-webkit-tests, I think this patch is all we have to do.

Could you review the patch?
I&apos;ll split this patch into smaller patches if you prefer. But most changes are tightly related, so I put all into this patch at first.

This patch should not affect existing layout tests at all unless you add &apos;reftest&apos; in LayoutTests directory.
So this patch should be safe to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364315</commentid>
    <comment_count>4</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-03-08 21:43:44 -0800</bug_when>
    <thetext>Hi Dirk, Ojan,

Could you review this?
I am aiming to add reftest supports in this quarter. So I appreciate the reviews.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364335</commentid>
    <comment_count>5</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-03-08 23:38:12 -0800</bug_when>
    <thetext>FYI

I started to write a Wiki page about how to write reftests:
https://trac.webkit.org/wiki/Writing%20Reftests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364336</commentid>
    <comment_count>6</comment_count>
      <attachid>85028</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-03-08 23:38:32 -0800</bug_when>
    <thetext>Comment on attachment 85028
add-reftests

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

This patch looks fine. Just a few nits. We need to figure out whether we need to add reftests support to run-webkit-tests. That seems like a lot of work, so we might be able to get away with adding a mode to new-run-webkit-tests to run just the reftests and then shelling out from run-webkit-tests to new-run-webkit-tests or just requiring people to run both until new-run-webkit-tests replaces old-run-webkit-tests. In either case, that a discussion to be had on webkit-dev. It doesn&apos;t need to block checking this in, but it probably needs to happen before we actually checkin any reftests.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:85
&gt; +                           &apos; expected-html file and expected-mismatch.html file&apos;

nit: s/expected-html/expected.html

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:117
&gt; +                # Returns a dummy TestResult. We don&apos;t have to rebase for reftests.
&gt; +                return TestResult(self._filename)

Should this return None and then the calling code handles None appropriately? That seems cleaner to me at first glance, but I&apos;m not 100% sure how this code is used.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:188
&gt; +              This arg is optional and shoulbe be used only in reftests until we have a better way to know

s/shoulbe/should

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:200
&gt; +            # FIXME: Move this actual file writing code somewhere so that this fucntion doesn&apos;t have any side effects.

s/fucntion/function

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:269
&gt; +        max_test_time = max(driver_output1.test_time, driver_output2.test_time)

This should  probably just be the sum of the test times since we use this information to see how long a test took to run.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:283
&gt; +        else:
&gt; +            if driver_output1.image_hash != driver_output2.image_hash:

This can be an &quot;elif&quot;

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_failures.py:310
&gt; +        uris = [self.relative_output_filename(filename, fn) for
&gt; +                fn in out_names]

fn is not a clear variable name. out_filename perhaps?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_failures.py:328
&gt; +        uris = [self.relative_output_filename(filename, fn) for
&gt; +                fn in out_names]

ditto

&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:350
&gt; +    def expected_html_filename(self, filename):

how about calling this reftest_expected_filename? The fact that it ends in .html is an implementation detail.

&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:354
&gt; +    def expected_mismatch_html_filename(self, filename):

How about calling this reftest_expected_mismatch_filename?

&gt; Tools/Scripts/webkitpy/layout_tests/port/test.py:53
&gt; +        self.without_expectation_files = False

should this just be self.is_reftest?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364367</commentid>
    <comment_count>7</comment_count>
      <attachid>85028</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-03-09 01:37:40 -0800</bug_when>
    <thetext>Comment on attachment 85028
add-reftests

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:85
&gt;&gt; +                           &apos; expected-html file and expected-mismatch.html file&apos;
&gt; 
&gt; nit: s/expected-html/expected.html

Done

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:117
&gt;&gt; +                return TestResult(self._filename)
&gt; 
&gt; Should this return None and then the calling code handles None appropriately? That seems cleaner to me at first glance, but I&apos;m not 100% sure how this code is used.

I don&apos;t think returning None as a TestResult is good idea. That causes the callers burdens and things more complex.
I agree this &apos;Dummy&apos; TestResult is not the best way. That&apos;s ugly.
Ideally we should skip calling single_test_runner itself if the test is a reftest in rebasing. But that requires yet another non-trivial changes.
So I&apos;d like to leave this code as is until we have a better way in rebasing.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:188
&gt;&gt; +              This arg is optional and shoulbe be used only in reftests until we have a better way to know
&gt; 
&gt; s/shoulbe/should

Done

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:200
&gt;&gt; +            # FIXME: Move this actual file writing code somewhere so that this fucntion doesn&apos;t have any side effects.
&gt; 
&gt; s/fucntion/function

Done

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:269
&gt;&gt; +        max_test_time = max(driver_output1.test_time, driver_output2.test_time)
&gt; 
&gt; This should  probably just be the sum of the test times since we use this information to see how long a test took to run.

Done.  I used &apos;sum&apos; instead of &apos;max&apos;.

Let me explain my thought.
Actually I had thought which was better between &apos;max&apos; and &apos;sum&apos;.

I have an concern using &apos;sum&apos;. It might confuse users or flakiness dashboard in the following case:

  - timeout limit: 10s
  - html1 took: 8s (it&apos;s okay because 8s &lt; 10s)
  - html2 took: 7s (it&apos;s okay because 8s &lt; 10s)
  - sum: 15s

Users might be upset because displayed test time is bigger than &apos;10s&apos;, but TIMEOUT didn&apos;t happen.
Ideally, we should preserve both test_time values from both html files and display both values. But that is not realistic due to the current layout tests convention.
We should compromise on this.

If you have any ideas, please let me know.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:283
&gt;&gt; +            if driver_output1.image_hash != driver_output2.image_hash:
&gt; 
&gt; This can be an &quot;elif&quot;

Done

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_failures.py:310
&gt;&gt; +                fn in out_names]
&gt; 
&gt; fn is not a clear variable name. out_filename perhaps?

Done. Thank you. I don&apos;t remember why I chose such a name.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_failures.py:328
&gt;&gt; +                fn in out_names]
&gt; 
&gt; ditto

Done

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:350
&gt;&gt; +    def expected_html_filename(self, filename):
&gt; 
&gt; how about calling this reftest_expected_filename? The fact that it ends in .html is an implementation detail.

Done. Although I don&apos;t think using &apos;html&apos; is so bad because &apos;.html&apos; is only supported in current implementation and it&apos;s intuitive.
But I don&apos;t have a strong opinion. Either is okay for me. Thank you.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:354
&gt;&gt; +    def expected_mismatch_html_filename(self, filename):
&gt; 
&gt; How about calling this reftest_expected_mismatch_filename?

Done. Thank you again.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/test.py:53
&gt;&gt; +        self.without_expectation_files = False
&gt; 
&gt; should this just be self.is_reftest?

That makes sense. Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364380</commentid>
    <comment_count>8</comment_count>
      <attachid>85147</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-03-09 01:59:15 -0800</bug_when>
    <thetext>Created attachment 85147
update</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364387</commentid>
    <comment_count>9</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-03-09 02:12:49 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 85028 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=85028&amp;action=review
&gt; 
&gt; This patch looks fine. Just a few nits. We need to figure out whether we need to add reftests support to run-webkit-tests. That seems like a lot of work, so we might be able to get away with adding a mode to new-run-webkit-tests to run just the reftests and then shelling out from run-webkit-tests to new-run-webkit-tests or just requiring people to run both until new-run-webkit-tests replaces old-run-webkit-tests. In either case, that a discussion to be had on webkit-dev. It doesn&apos;t need to block checking this in, but it probably needs to happen before we actually checkin any reftests.

We&apos;ve discussed that already in the master bug entry. We don&apos;t have a plan to add reftest support to run-webkit-tests. And unfortunately, new-run-webkit-tests has not replaced old-run-webkit-tests yet.

So adding a mode to new-run-webkit-test to run just the reftests might be one of the approaches we should take.

We should find a way to satisfying both new-run-webkit-tests and old-run-webkit-tests users.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364698</commentid>
    <comment_count>10</comment_count>
      <attachid>85147</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-03-09 12:30:24 -0800</bug_when>
    <thetext>Comment on attachment 85147
update

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

Patch generally looks fine. The only substantive concern I have is with the duplication between _compare_output() and _compare_output_with_reference(). Let me know what you think about that.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:92
&gt; +

It would be nice to have a presubmit trigger that checked for this as well. Maybe file a separate bug?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:116
&gt; +                # Returns a dummy TestResult. We don&apos;t have to rebase for reftests.

This reminds me that we&apos;ll want to add something to the rebaseline scripts like rebaseline-chromium-webkit-tests. At the least they should probably complain if asked to rebaseline a reftest.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:263
&gt; +        expected_driver_output = ExpectedDriverOutput(driver_output2.text, driver_output2.image, driver_output2.image_hash)

Do you need to do this? Can&apos;t you just pass driver_output2 to write_test_result?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:268
&gt; +    def _compare_output_with_reference(self, driver_output1, driver_output2):

I&apos;m not real comfortable about the duplication between this and compare_output(). Does it make sense to combine the two?

&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:359
&gt; +        self.assertEqual(res, unexpected_tests_count)

We should probably add a routine in  port/test.py that returns this. Maybe add a #FIXME?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365003</commentid>
    <comment_count>11</comment_count>
      <attachid>85147</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-03-09 22:50:52 -0800</bug_when>
    <thetext>Comment on attachment 85147
update

Hi Dirk,
Thank you for the review.

I am updating the patch. The difference between the previous patch are:
  - Get rid of file writing logic from SingleTestRunner._handle_error(). Now rebaseline also uses test_result_writer.py module and code is shared.
  - Skip image comparison when timeout occurs in reftests.
  - Rename FailureCrash.test_name to TestFailureCrash.reference_filename. Does similar things against FailureTime.test_name too.
  - Fixed a bug: When a crash occurs in reference html in reftests, a wrong stack was written.

  


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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:92
&gt;&gt; +
&gt; 
&gt; It would be nice to have a presubmit trigger that checked for this as well. Maybe file a separate bug?

Nice idea. I am not familiar with how a presubmit checker works. So I&apos;ll file a separate bug.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:116
&gt;&gt; +                # Returns a dummy TestResult. We don&apos;t have to rebase for reftests.
&gt; 
&gt; This reminds me that we&apos;ll want to add something to the rebaseline scripts like rebaseline-chromium-webkit-tests. At the least they should probably complain if asked to rebaseline a reftest.

Yeah. I&apos;ll file a separate bug.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:263
&gt;&gt; +        expected_driver_output = ExpectedDriverOutput(driver_output2.text, driver_output2.image, driver_output2.image_hash)
&gt; 
&gt; Do you need to do this? Can&apos;t you just pass driver_output2 to write_test_result?

Done.

I think it&apos;s time to get rid of ExpectedDriverOutput class.
I introduced an ExpectedDriverOutput once, but now I think it caused unnecessary complexity.

So I&apos;ve removed ExpectedRiverOutput class and reused base.DriverOutput class.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:269
&gt; +        total_test_time = driver_output1.test_time + driver_output2.test_time

Actually I tried it at first. But it turned out that it caused an ugly function which contains many &apos;if  self._is_reftest: .. else..&apos; blocks.
So I&apos;d like to choose two simple functions rather than one complex function until we have a strong need to combine them into one function.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:359
&gt;&gt; +        self.assertEqual(res, unexpected_tests_count)
&gt; 
&gt; We should probably add a routine in  port/test.py that returns this. Maybe add a #FIXME?

Nice idea. I added a #FIXME. It might be better to do it in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365004</commentid>
    <comment_count>12</comment_count>
      <attachid>85285</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-03-09 22:53:07 -0800</bug_when>
    <thetext>Created attachment 85285
update2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365005</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-03-09 22:56:51 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 85147 [details])
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:269
&gt; &gt; +        total_test_time = driver_output1.test_time + driver_output2.test_time
&gt; 
&gt; Actually I tried it at first. But it turned out that it caused an ugly function which contains many &apos;if  self._is_reftest: .. else..&apos; blocks.
&gt; So I&apos;d like to choose two simple functions rather than one complex function until we have a strong need to combine them into one function.
&gt;

Okay. 

The latest patch LGTM :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365916</commentid>
    <comment_count>14</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-03-11 03:46:57 -0800</bug_when>
    <thetext>Hi Dirk, glad to hear that. 

Hi Ojan, could you review the latest patch?

# The earthquake happened today, so I am still working :)

(In reply to comment #13)
&gt; (In reply to comment #11)
&gt; &gt; (From update of attachment 85147 [details] [details])
&gt; &gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:269
&gt; &gt; &gt; +        total_test_time = driver_output1.test_time + driver_output2.test_time
&gt; &gt; 
&gt; &gt; Actually I tried it at first. But it turned out that it caused an ugly function which contains many &apos;if  self._is_reftest: .. else..&apos; blocks.
&gt; &gt; So I&apos;d like to choose two simple functions rather than one complex function until we have a strong need to combine them into one function.
&gt; &gt;
&gt; 
&gt; Okay. 
&gt; 
&gt; The latest patch LGTM :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367455</commentid>
    <comment_count>15</comment_count>
      <attachid>85761</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-03-14 19:28:16 -0700</bug_when>
    <thetext>Created attachment 85761
update3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367463</commentid>
    <comment_count>16</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-03-14 20:03:56 -0700</bug_when>
    <thetext>I&apos;ve updated the patch.

(In reply to comment #10)
&gt; (From update of attachment 85147 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=85147&amp;action=review
&gt; 
&gt; Patch generally looks fine. The only substantive concern I have is with the duplication between _compare_output() and _compare_output_with_reference(). Let me know what you think about that.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:92
&gt; &gt; +
&gt; 
&gt; It would be nice to have a presubmit trigger that checked for this as well. Maybe file a separate bug?

I&apos;ve included this check routine in single_test_runner instead of implementing that as a presubmit trigger.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367536</commentid>
    <comment_count>17</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-03-14 23:47:20 -0700</bug_when>
    <thetext>I appreciate some reviewers could review this patch and marke this as &apos;r+&apos;.
Dirk and Ojan have already reviewed the most part of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367602</commentid>
    <comment_count>18</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-03-15 03:40:26 -0700</bug_when>
    <thetext>Hamaji-san,

Thank you for the &apos;r+&apos;.
I&apos;ll submit the patch after fixing a minor issue about DryRunTest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367607</commentid>
    <comment_count>19</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-03-15 03:46:54 -0700</bug_when>
    <thetext>Committed r81127: &lt;http://trac.webkit.org/changeset/81127&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84209</attachid>
            <date>2011-03-01 04:33:31 -0800</date>
            <delta_ts>2011-03-08 00:02:27 -0800</delta_ts>
            <desc>in-progress. not-ready-for-review</desc>
            <filename>bug-55457-20110301213329.patch</filename>
            <type>text/plain</type>
            <size>18393</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzk4NDAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwZGEyNzkyODQ1YmVmZTI1ZWFjNzllMDI1ZjM4NzUwOWRm
ODdjNzM0Li4xNDE0NzQ0ZTZjZWZhMGY3NTM3YjBhZjY3NWVmYTdkZDJiNjI3MjA0IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDMtMDEgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGFkZC1yZWZ0ZXN0CisK
KyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIGFuZCBidWcgVVJMIChPT1BTISkKKwor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Np
bmdsZV90ZXN0X3J1bm5lci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0X3dyaXRlci5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS90ZXN0X3J1bm5lci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS93b3JrZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlcy5weToKKwogMjAxMS0wMi0yNCAgSGF5YXRvIEl0byAg
PGhheWF0b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwu
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS9zaW5nbGVfdGVzdF9ydW5uZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9zaW5nbGVfdGVzdF9ydW5uZXIucHkKaW5kZXggMjM2
MjNlY2QwYWQyNzkwZDM4MTg0MWU1Nzc2ZjlmYTBhMGRhMGRjZi4uN2YwNzBiYjkzNmM2YjZhZWNj
YTA2MzU5NDc5OWI1YmZkNjA3YmFhYiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Npbmds
ZV90ZXN0X3J1bm5lci5weQpAQCAtNjMsNiArNjMsMzQgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5l
cjoKICAgICAgICAgc2VsZi5fd29ya2VyX25hbWUgPSB3b3JrZXJfbmFtZQogICAgICAgICBzZWxm
Ll90ZXN0bmFtZSA9IHBvcnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZSh0ZXN0X2lucHV0LmZpbGVu
YW1lKQogCisgICAgICAgIHNlbGYuX2lzX3JlZnRlc3QgPSBGYWxzZQorICAgICAgICBzZWxmLl9p
c19taXNtYXRjaF9yZWZ0ZXN0ID0gRmFsc2UKKyAgICAgICAgc2VsZi5fcmVmZXJlbmNlX2h0bWxf
ZmlsZW5hbWUgPSBOb25lCisKKyAgICAgICAgZnMgPSBwb3J0Ll9maWxlc3lzdGVtCisgICAgICAg
ICMgRklYTUU6IERldGVjdCBhbmQgcmVwb3J0IGEgdGVzdCB3aGljaCBoYXMgYSB3cm9uZyBjb21i
aW5hdGlvbiBvZgorICAgICAgICAjIGV4cGVjdGF0aW9uIGZpbGVzLiBGb3IgZXhhbXBsZSwgaWYg
J2Zvby5odG1sJyBoYXMgdHdvIGV4cGVjdGF0aW9uIGZpbGVzLAorICAgICAgICAjICdmb28tZXhw
ZWN0ZWQuaHRtbCcgYW5kICdmb28tZXhwZWN0ZWQudHh0Jywgd2Ugc2hvdWxkIHdhcm4gdXNlcnMu
CisgICAgICAgICMgT25lIHRlc3QgZmlsZSBtdXN0IGJlIHVzZWQgZXhjbHVzaXZlbHkgaW4gZWl0
aGVyIGxheW91dCB0ZXN0cyBvcgorICAgICAgICAjIHJlZnRlc3RzLCBub3QgaW4gYm90aC4KKyAg
ICAgICAgZXhwZWN0ZWRfaHRtbF9maWxlbmFtZSA9IHBvcnQuZXhwZWN0ZWRfaHRtbF9maWxlbmFt
ZShzZWxmLl9maWxlbmFtZSkKKyAgICAgICAgaWYgZnMuZXhpc3RzKGV4cGVjdGVkX2h0bWxfZmls
ZW5hbWUpOgorICAgICAgICAgICAgc2VsZi5faXNfcmVmdGVzdCA9IFRydWUKKyAgICAgICAgICAg
IHNlbGYuX3JlZmVyZW5jZV9odG1sX2ZpbGVuYW1lID0gZXhwZWN0ZWRfaHRtbF9maWxlbmFtZQor
CisgICAgICAgIGV4cGVjdGVkX21pc21hdGNoX2h0bWxfZmlsZW5hbWUgPSBwb3J0LmV4cGVjdGVk
X21pc21hdGNoX2h0bWxfZmlsZW5hbWUoc2VsZi5fZmlsZW5hbWUpCisgICAgICAgIGlmIGZzLmV4
aXN0cyhleHBlY3RlZF9taXNtYXRjaF9odG1sX2ZpbGVuYW1lKToKKyAgICAgICAgICAgIGlmIHNl
bGYuX2lzX3JlZnRlc3Q6CisgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignSXQgaXMgbm90IGFs
bG93ZWQgdGhhdCBvbmUgdGVzdCBmaWxlIGhhcyBib3RoJworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJyBleHBlY3RlZC1odG1sIGZpbGUgYW5kIGV4cGVjdGVkLW1pc21hdGNoLmh0bWwgZmls
ZScKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICcgYXQgdGhlIHNhbWUgdGltZS4gUGxlYXNl
IHJlbW92ZSBlaXRoZXIgJXMgb3IgJXMuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4
cGVjdGVkX2h0bWxfZmlsZW5hbWUsIGV4cGVjdGVkX21pc21hdGNoX2h0bWxfZmlsZW5hbWUpCisg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX2lzX3JlZnRlc3QgPSBUcnVl
CisgICAgICAgICAgICAgICAgc2VsZi5faXNfbWlzbWF0Y2hfcmVmdGVzdCA9IFRydWUKKyAgICAg
ICAgICAgICAgICBzZWxmLl9yZWZlcmVuY2VfaHRtbF9maWxlbmFtZSA9IGV4cGVjdGVkX21pc21h
dGNoX2h0bWxfZmlsZW5hbWUKKworCiAgICAgZGVmIF9leHBlY3RlZF9kcml2ZXJfb3V0cHV0KHNl
bGYpOgogICAgICAgICByZXR1cm4gRXhwZWN0ZWREcml2ZXJPdXRwdXQoc2VsZi5fcG9ydC5leHBl
Y3RlZF90ZXh0KHNlbGYuX2ZpbGVuYW1lKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3BvcnQuZXhwZWN0ZWRfaW1hZ2Uoc2VsZi5fZmlsZW5hbWUpLApAQCAtODQs
NyArMTEyLDEzIEBAIGNsYXNzIFNpbmdsZVRlc3RSdW5uZXI6CiAKICAgICBkZWYgcnVuKHNlbGYp
OgogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm5ld19iYXNlbGluZSBvciBzZWxmLl9vcHRpb25z
LnJlc2V0X3Jlc3VsdHM6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3JlYmFzZWxpbmUo
KQorICAgICAgICAgICAgaWYgc2VsZi5faXNfcmVmdGVzdDoKKyAgICAgICAgICAgICAgICAjIFJl
dHVybnMgYSBkdW1teSBUZXN0UmVzdWx0IGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSB0byByZWJhc2Ug
Zm9yIHJlZnRlc3RzLgorICAgICAgICAgICAgICAgIHJldHVybiBUZXN0UmVzdWx0KHNlbGYuX2Zp
bGVuYW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5f
cnVuX3JlYmFzZWxpbmUoKQorICAgICAgICBpZiBzZWxmLl9pc19yZWZ0ZXN0OgorICAgICAgICAg
ICAgcmV0dXJuIHNlbGYuX3J1bl9yZWZ0ZXN0KCkKICAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl9j
b21wYXJlX3Rlc3QoKQogCiAgICAgZGVmIF9ydW5fY29tcGFyZV90ZXN0KHNlbGYpOgpAQCAtMTQ1
LDE2ICsxNzksMjUgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcjoKIAogICAgICAgICBwb3J0LnVw
ZGF0ZV9iYXNlbGluZShvdXRwdXRfcGF0aCwgZGF0YSkKIAotICAgIGRlZiBfaGFuZGxlX2Vycm9y
KHNlbGYsIGRyaXZlcl9vdXRwdXQpOgorICAgIGRlZiBfaGFuZGxlX2Vycm9yKHNlbGYsIGRyaXZl
cl9vdXRwdXQsIHRlc3RfZmlsZW5hbWU9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgdGVzdCBm
YWlsdXJlcyBpZiBzb21lIHVudXN1YWwgZXJyb3JzIGhhcHBlbiBpbiBkcml2ZXIncyBydW4uCisK
KyAgICAgICAgQXJnczoKKyAgICAgICAgICBkcml2ZXJfb3V0cHV0OiBUaGUgb3V0cHV0IGZyb20g
dGhlIGRyaXZlci4KKyAgICAgICAgICB0ZXN0X2ZpbGVuYW1lOiBUaGUgZnVsbCBwYXRoIHRvIHRo
ZSBmaWxlIGZyb20gd2hlcmUgZHJpdmVyIG91dHB1dCBpcyBnZW5lcmF0ZWQuCisgICAgICAgICAg
ICAgIEN1cnJlbnRseSwgdGhpcyBhcmcgaXMgb25seSB1c2VkIGluIHJlZnRlc3RzIHNvIHRoYXQg
d2UgY2FuIGtub3cgZnJvbSB3aGVyZQorICAgICAgICAgICAgICB0aGUgZHJpdmVyIG91dHB1dCBp
cyBnZW5lcmF0ZWQuCisgICAgICAgICIiIgogICAgICAgICBmYWlsdXJlcyA9IFtdCiAgICAgICAg
IGZzID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbQogICAgICAgICBpZiBkcml2ZXJfb3V0cHV0LnRp
bWVvdXQ6Ci0gICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJl
VGltZW91dCgpKQorICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFp
bHVyZVRpbWVvdXQodGVzdF9maWxlbmFtZSkpCiAgICAgICAgIGlmIGRyaXZlcl9vdXRwdXQuY3Jh
c2g6Ci0gICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlQ3Jh
c2goKSkKKyAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVD
cmFzaCh0ZXN0X2ZpbGVuYW1lKSkKICAgICAgICAgICAgIF9sb2cuZGVidWcoIiVzIFN0YWNrdHJh
Y2UgZm9yICVzOlxuJXMiICUgKHNlbGYuX3dvcmtlcl9uYW1lLCBzZWxmLl90ZXN0bmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZl
cl9vdXRwdXQuZXJyb3IpKQogICAgICAgICAgICAgIyBGSVhNRTogVXNlIHRlc3RfcmVzdWx0X3dy
aXRlciBtb2R1bGUuCisgICAgICAgICAgICAjIEZJWE1FOiBTZXBhcmF0ZSB0aGlzIGFjdHVhbCBm
aWxlIHdyaXRpbmcgbG9naWMgdG8gZWxpbWluYXRlIHNpZGUgZWZmZWN0cyBmcm9tIHRoaXMgZnVj
bnRpb24uCiAgICAgICAgICAgICBzdGFja19maWxlbmFtZSA9IGZzLmpvaW4oc2VsZi5fb3B0aW9u
cy5yZXN1bHRzX2RpcmVjdG9yeSwgc2VsZi5fdGVzdG5hbWUpCiAgICAgICAgICAgICBzdGFja19m
aWxlbmFtZSA9IGZzLnNwbGl0ZXh0KHN0YWNrX2ZpbGVuYW1lKVswXSArICItc3RhY2sudHh0Igog
ICAgICAgICAgICAgZnMubWF5YmVfbWFrZV9kaXJlY3RvcnkoZnMuZGlybmFtZShzdGFja19maWxl
bmFtZSkpCkBAIC0xNzgsNiArMjIxLDcgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcjoKICAgICAg
ICAgICAgIGZhaWx1cmVzLmV4dGVuZChzZWxmLl9jb21wYXJlX2ltYWdlKGRyaXZlcl9vdXRwdXQs
IGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQpKQogICAgICAgICByZXR1cm4gVGVzdFJlc3VsdChzZWxm
Ll9maWxlbmFtZSwgZmFpbHVyZXMsIGRyaXZlcl9vdXRwdXQudGVzdF90aW1lKQogCisKICAgICBk
ZWYgX2NvbXBhcmVfdGV4dChzZWxmLCBhY3R1YWxfdGV4dCwgZXhwZWN0ZWRfdGV4dCk6CiAgICAg
ICAgIGZhaWx1cmVzID0gW10KICAgICAgICAgaWYgc2VsZi5fcG9ydC5jb21wYXJlX3RleHQoc2Vs
Zi5fZ2V0X25vcm1hbGl6ZWRfb3V0cHV0X3RleHQoYWN0dWFsX3RleHQpLApAQCAtMjEwLDMgKzI1
NCwzNyBAQCBjbGFzcyBTaW5nbGVUZXN0UnVubmVyOgogICAgICAgICBlbGlmIGRyaXZlcl9vdXRw
dXQuaW1hZ2VfaGFzaCAhPSBleHBlY3RlZF9kcml2ZXJfb3V0cHV0cy5pbWFnZV9oYXNoOgogICAg
ICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZUltYWdlSGFzaE1p
c21hdGNoKCkpCiAgICAgICAgIHJldHVybiBmYWlsdXJlcworCisgICAgZGVmIF9ydW5fcmVmdGVz
dChzZWxmKToKKyAgICAgICAgYXNzZXJ0IHNlbGYuX2lzX3JlZnRlc3QKKyAgICAgICAgX2xvZy5p
bmZvKCdyZWZ0ZXN0OiAlcycsIHNlbGYuX3Rlc3RuYW1lKQorICAgICAgICBkcml2ZXJfb3V0cHV0
MSA9IHNlbGYuX2RyaXZlci5ydW5fdGVzdChzZWxmLl9kcml2ZXJfaW5wdXQoKSkKKyAgICAgICAg
ZHJpdmVyX291dHB1dDIgPSBzZWxmLl9kcml2ZXIucnVuX3Rlc3QoCisgICAgICAgICAgICBiYXNl
LkRyaXZlcklucHV0KHNlbGYuX3JlZmVyZW5jZV9odG1sX2ZpbGVuYW1lLCBzZWxmLl90aW1lb3V0
LCBkcml2ZXJfb3V0cHV0MS5pbWFnZV9oYXNoKSkKKyAgICAgICAgdGVzdF9yZXN1bHQgPSBzZWxm
Ll9jb21wYXJlX291dHB1dF93aXRoX3JlZmVyZW5jZShkcml2ZXJfb3V0cHV0MSwgZHJpdmVyX291
dHB1dDIpCisKKyAgICAgICAgZXhwZWN0ZWRfZHJpdmVyX291dHB1dCA9IEV4cGVjdGVkRHJpdmVy
T3V0cHV0KGRyaXZlcl9vdXRwdXQyLnRleHQsIGRyaXZlcl9vdXRwdXQyLmltYWdlLCBkcml2ZXJf
b3V0cHV0Mi5pbWFnZV9oYXNoKQorICAgICAgICB0ZXN0X3Jlc3VsdF93cml0ZXIud3JpdGVfdGVz
dF9yZXN1bHQoc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwgc2Vs
Zi5fZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkcml2ZXJfb3V0cHV0MSwgZXhwZWN0ZWRfZHJpdmVyX291dHB1dCwgdGVzdF9yZXN1bHQuZmFp
bHVyZXMpCisgICAgICAgIHJldHVybiB0ZXN0X3Jlc3VsdAorCisgICAgZGVmIF9jb21wYXJlX291
dHB1dF93aXRoX3JlZmVyZW5jZShzZWxmLCBkcml2ZXJfb3V0cHV0MSwgZHJpdmVyX291dHB1dDIp
OgorICAgICAgICBtYXhfdGVzdF90aW1lID0gbWF4KGRyaXZlcl9vdXRwdXQxLnRlc3RfdGltZSwg
ZHJpdmVyX291dHB1dDIudGVzdF90aW1lKQorICAgICAgICBmYWlsdXJlcyA9IFtdCisgICAgICAg
IGZhaWx1cmVzLmV4dGVuZChzZWxmLl9oYW5kbGVfZXJyb3IoZHJpdmVyX291dHB1dDEpKQorICAg
ICAgICBpZiBkcml2ZXJfb3V0cHV0MS5jcmFzaDoKKyAgICAgICAgICAgICMgRklYTUU6IFdoYXQg
c2hvdWxkIHdlIHJlcG9ydCBpbiBjcmFzaCBvZiByZWZ0ZXN0PworICAgICAgICAgICAgcmV0dXJu
IFRlc3RSZXN1bHQoc2VsZi5fZmlsZW5hbWUsIGZhaWx1cmVzLCBtYXhfdGVzdF90aW1lKQorICAg
ICAgICBmYWlsdXJlcy5leHRlbmQoc2VsZi5faGFuZGxlX2Vycm9yKGRyaXZlcl9vdXRwdXQyLCB0
ZXN0X2ZpbGVuYW1lPXNlbGYuX3JlZmVyZW5jZV9odG1sX2ZpbGVuYW1lKSkKKyAgICAgICAgaWYg
ZHJpdmVyX291dHB1dDIuY3Jhc2g6CisgICAgICAgICAgICAjIEZJWE1FOiBXaGF0IHNob3VsZCB3
ZSByZXBvcnQgaW4gY3Jhc2ggb2YgcmVmdGVzdD8KKyAgICAgICAgICAgIHJldHVybiBUZXN0UmVz
dWx0KHNlbGYuX2ZpbGVuYW1lLCBmYWlsdXJlcywgbWF4X3Rlc3RfdGltZSkKKyAgICAgICAgIyBG
SVhNRTogV2hhdCBzaG91bGQgd2UgZG8gaW4gdGltZW91dHMgb2YgcmVmdGVzdD8KKworICAgICAg
ICBpZiBzZWxmLl9pc19taXNtYXRjaF9yZWZ0ZXN0OgorICAgICAgICAgICAgaWYgZHJpdmVyX291
dHB1dDEuaW1hZ2VfaGFzaCA9PSBkcml2ZXJfb3V0cHV0Mi5pbWFnZV9oYXNoOgorICAgICAgICAg
ICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVSZWZ0ZXN0TWlzbWF0
Y2hEaWROb3RIYXBwZW4oKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIGRyaXZlcl9v
dXRwdXQxLmltYWdlX2hhc2ggIT0gZHJpdmVyX291dHB1dDIuaW1hZ2VfaGFzaDoKKyAgICAgICAg
ICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlUmVmdGVzdE1pc21h
dGNoKCkpCisgICAgICAgIHJldHVybiBUZXN0UmVzdWx0KHNlbGYuX2ZpbGVuYW1lLCBmYWlsdXJl
cywgbWF4X3Rlc3RfdGltZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXMucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5Cmlu
ZGV4IGViNTlkMzZhMDg4NjUzNzIwMjQ3ZTNlOTI1OWVmY2QyYmRiNGJhYWUuLjVkZGY1NTY3MjNj
NDNiOWRlMjRmNTNlZWQ0ZGU4OTg4Y2ZiMjM1MWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXMucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVz
dF9mYWlsdXJlcy5weQpAQCAtNjAsMTEgKzYwLDEzIEBAIGRlZiBkZXRlcm1pbmVfcmVzdWx0X3R5
cGUoZmFpbHVyZV9saXN0KToKICAgICAgICAgaXNfdGV4dF9mYWlsdXJlID0gRmFpbHVyZVRleHRN
aXNtYXRjaCBpbiBmYWlsdXJlX3R5cGVzCiAgICAgICAgIGlzX2ltYWdlX2ZhaWx1cmUgPSAoRmFp
bHVyZUltYWdlSGFzaEluY29ycmVjdCBpbiBmYWlsdXJlX3R5cGVzIG9yCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRmFpbHVyZUltYWdlSGFzaE1pc21hdGNoIGluIGZhaWx1cmVfdHlwZXMp
CisgICAgICAgIGlzX3JlZnRlc3RfZmFpbHVyZSA9IChGYWlsdXJlUmVmdGVzdE1pc21hdGNoIGlu
IGZhaWx1cmVfdHlwZXMgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhaWx1cmVS
ZWZ0ZXN0TWlzbWF0Y2hEaWROb3RIYXBwZW4gaW4gZmFpbHVyZV90eXBlcykKICAgICAgICAgaWYg
aXNfdGV4dF9mYWlsdXJlIGFuZCBpc19pbWFnZV9mYWlsdXJlOgogICAgICAgICAgICAgcmV0dXJu
IHRlc3RfZXhwZWN0YXRpb25zLklNQUdFX1BMVVNfVEVYVAogICAgICAgICBlbGlmIGlzX3RleHRf
ZmFpbHVyZToKICAgICAgICAgICAgIHJldHVybiB0ZXN0X2V4cGVjdGF0aW9ucy5URVhUCi0gICAg
ICAgIGVsaWYgaXNfaW1hZ2VfZmFpbHVyZToKKyAgICAgICAgZWxpZiBpc19pbWFnZV9mYWlsdXJl
IG9yIGlzX3JlZnRlc3RfZmFpbHVyZToKICAgICAgICAgICAgIHJldHVybiB0ZXN0X2V4cGVjdGF0
aW9ucy5JTUFHRQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigi
dW5jbGFzc2lmaWFibGUgc2V0IG9mIGZhaWx1cmVzOiAiCkBAIC0xNzcsMTEgKzE3OSwxNyBAQCBj
bGFzcyBGYWlsdXJlVGltZW91dChUZXN0RmFpbHVyZSk6CiAgICAgIiIiVGVzdCB0aW1lZCBvdXQu
ICBXZSBhbHNvIHdhbnQgdG8gcmVzdGFydCBEdW1wUmVuZGVyVHJlZSBpZiB0aGlzCiAgICAgaGFw
cGVucy4iIiIKIAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0X2ZpbGVuYW1lPU5vbmUpOgor
ICAgICAgICBzZWxmLnRlc3RfZmlsZW5hbWUgPSB0ZXN0X2ZpbGVuYW1lCisKICAgICBAc3RhdGlj
bWV0aG9kCiAgICAgZGVmIG1lc3NhZ2UoKToKICAgICAgICAgcmV0dXJuICJUZXN0IHRpbWVkIG91
dCIKIAogICAgIGRlZiByZXN1bHRfaHRtbF9vdXRwdXQoc2VsZiwgZmlsZW5hbWUpOgorICAgICAg
ICBpZiBzZWxmLnRlc3RfZmlsZW5hbWU6CisgICAgICAgICAgICByZXR1cm4gIjxzdHJvbmc+JXM8
L3N0cm9uZz4gKG9jY3VyZWQgaW4gPGEgaHJlZj0lcz5leHBlY3RlZCBodG1sPC9hPikiICUgKAor
ICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgpLCBzZWxmLnRlc3RfZmlsZW5hbWUpCiAgICAg
ICAgIHJldHVybiAiPHN0cm9uZz4lczwvc3Ryb25nPiIgJSBzZWxmLm1lc3NhZ2UoKQogCiAgICAg
ZGVmIHNob3VsZF9raWxsX2R1bXBfcmVuZGVyX3RyZWUoc2VsZik6CkBAIC0xOTEsNiArMTk5LDkg
QEAgY2xhc3MgRmFpbHVyZVRpbWVvdXQoVGVzdEZhaWx1cmUpOgogY2xhc3MgRmFpbHVyZUNyYXNo
KFRlc3RGYWlsdXJlKToKICAgICAiIiJEdW1wUmVuZGVyVHJlZSBjcmFzaGVkLiIiIgogCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfZmlsZW5hbWU9Tm9uZSk6CisgICAgICAgIHNlbGYudGVz
dF9maWxlbmFtZSA9IHRlc3RfZmlsZW5hbWUKKwogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYg
bWVzc2FnZSgpOgogICAgICAgICByZXR1cm4gIkR1bXBSZW5kZXJUcmVlIGNyYXNoZWQiCkBAIC0x
OTgsOCArMjA5LDExIEBAIGNsYXNzIEZhaWx1cmVDcmFzaChUZXN0RmFpbHVyZSk6CiAgICAgZGVm
IHJlc3VsdF9odG1sX291dHB1dChzZWxmLCBmaWxlbmFtZSk6CiAgICAgICAgICMgRklYTUU6IGNy
ZWF0ZSBhIGxpbmsgdG8gdGhlIG1pbmlkdW1wIGZpbGUKICAgICAgICAgc3RhY2sgPSBzZWxmLnJl
bGF0aXZlX291dHB1dF9maWxlbmFtZShmaWxlbmFtZSwgIi1zdGFjay50eHQiKQotICAgICAgICBy
ZXR1cm4gIjxzdHJvbmc+JXM8L3N0cm9uZz4gPGEgaHJlZj0lcz5zdGFjazwvYT4iICUgKHNlbGYu
bWVzc2FnZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YWNrKQorICAgICAgICBpZiBzZWxmLnRlc3RfZmlsZW5hbWU6Cisg
ICAgICAgICAgICByZXR1cm4gIjxzdHJvbmc+JXM8L3N0cm9uZz4gPGEgaHJlZj0lcz5zdGFjazwv
YT4gKG9jY3VyZWQgaW4gPGEgaHJlZj0lcz5leHBlY3RlZCBodG1sPC9hPikiICUgKAorICAgICAg
ICAgICAgICAgIHNlbGYubWVzc2FnZSgpLCBzdGFjaywgc2VsZi50ZXN0X2ZpbGVuYW1lKQorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICI8c3Ryb25nPiVzPC9zdHJvbmc+IDxhIGhy
ZWY9JXM+c3RhY2s8L2E+IiAlIChzZWxmLm1lc3NhZ2UoKSwgc3RhY2spCiAKICAgICBkZWYgc2hv
dWxkX2tpbGxfZHVtcF9yZW5kZXJfdHJlZShzZWxmKToKICAgICAgICAgcmV0dXJuIFRydWUKQEAg
LTI3OSw5ICsyOTMsNDggQEAgY2xhc3MgRmFpbHVyZUltYWdlSGFzaEluY29ycmVjdChGYWlsdXJl
V2l0aFR5cGUpOgogICAgIGRlZiByZXN1bHRfaHRtbF9vdXRwdXQoc2VsZiwgZmlsZW5hbWUpOgog
ICAgICAgICByZXR1cm4gIjxzdHJvbmc+JXM8L3N0cm9uZz4iICUgc2VsZi5tZXNzYWdlKCkKIAor
CitjbGFzcyBGYWlsdXJlUmVmdGVzdE1pc21hdGNoKEZhaWx1cmVXaXRoVHlwZSk6CisgICAgIiIi
VGhlIHJlc3VsdCBkaWRuJ3QgbWF0Y2ggdGhlIHJlZmVyZW5jZSByZW5kZXJpbmcuIiIiCisKKyAg
ICBPVVRfRklMRU5BTUVTID0gKCItZXhwZWN0ZWQuaHRtbCIsICItZXhwZWN0ZWQucG5nIiwgIi1h
Y3R1YWwucG5nIiwKKyAgICAgICAgICAgICAgICAgICAgICItZGlmZi5wbmciLCkKKworICAgIEBz
dGF0aWNtZXRob2QKKyAgICBkZWYgbWVzc2FnZSgpOgorICAgICAgICByZXR1cm4gIk1pc21hdGNo
IHdpdGggcmVmZXJlbmNlLiAiCisKKyAgICBkZWYgb3V0cHV0X2xpbmtzKHNlbGYsIGZpbGVuYW1l
LCBvdXRfbmFtZXMpOgorICAgICAgICBsaW5rcyA9IFsnJ10KKyAgICAgICAgdXJpcyA9IFtzZWxm
LnJlbGF0aXZlX291dHB1dF9maWxlbmFtZShmaWxlbmFtZSwgZm4pIGZvcgorICAgICAgICAgICAg
ICAgIGZuIGluIG91dF9uYW1lc10KKyAgICAgICAgZm9yIHRleHQsIHVyaSBpbiB6aXAoWyctZXhw
ZWN0ZWQuaHRtbCcsICdleHBlY3RlZCcsICdhY3R1YWwnLCAnZGlmZiddLCB1cmlzKToKKyAgICAg
ICAgICAgIGxpbmtzLmFwcGVuZCgiPGEgaHJlZj0nJXMnPiVzPC9hPiIgJSAodXJpLCB0ZXh0KSkK
KyAgICAgICAgcmV0dXJuICcgJy5qb2luKGxpbmtzKQorCisKK2NsYXNzIEZhaWx1cmVSZWZ0ZXN0
TWlzbWF0Y2hEaWROb3RIYXBwZW4oRmFpbHVyZVdpdGhUeXBlKToKKyAgICAiIiJVbmV4cGVjdGVk
IG1hdGNoIGJldHdlZW4gdGhlIHJlc3VsdCBhbmQgdGhlIHJlZmVyZW5jZSByZW5kZXJpbmcuIiIi
CisKKyAgICBPVVRfRklMRU5BTUVTID0gKCItZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbCIsICItYWN0
dWFsLnBuZyIsKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBtZXNzYWdlKCk6CisgICAg
ICAgIHJldHVybiAiTWlzbWF0Y2ggZGlkIG5vdCBoYXBwZW4gd2l0aCByZWZlcmVuY2UuICIKKwor
ICAgIGRlZiBvdXRwdXRfbGlua3Moc2VsZiwgZmlsZW5hbWUsIG91dF9uYW1lcyk6CisgICAgICAg
IGxpbmtzID0gWycnXQorICAgICAgICB1cmlzID0gW3NlbGYucmVsYXRpdmVfb3V0cHV0X2ZpbGVu
YW1lKGZpbGVuYW1lLCBmbikgZm9yCisgICAgICAgICAgICAgICAgZm4gaW4gb3V0X25hbWVzXQor
ICAgICAgICBmb3IgdGV4dCwgdXJpIGluIHppcChbJy1leHBlY3RlZC1taXNtYXRjaC5odG1sJywg
J2ltYWdlJ10sIHVyaXMpOgorICAgICAgICAgICAgbGlua3MuYXBwZW5kKCI8YSBocmVmPSclcyc+
JXM8L2E+IiAlICh1cmksIHRleHQpKQorICAgICAgICByZXR1cm4gJyAnLmpvaW4obGlua3MpCisK
KwogIyBDb252ZW5pZW50IGNvbGxlY3Rpb24gb2YgYWxsIGZhaWx1cmUgY2xhc3NlcyBmb3IgYW55
dGhpbmcgdGhhdCBtaWdodAogIyBuZWVkIHRvIGVudW1lcmF0ZSBvdmVyIHRoZW0gYWxsLgogQUxM
X0ZBSUxVUkVfQ0xBU1NFUyA9IChGYWlsdXJlVGltZW91dCwgRmFpbHVyZUNyYXNoLCBGYWlsdXJl
TWlzc2luZ1Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgRmFpbHVyZVRleHRNaXNtYXRj
aCwgRmFpbHVyZU1pc3NpbmdJbWFnZUhhc2gsCiAgICAgICAgICAgICAgICAgICAgICAgIEZhaWx1
cmVNaXNzaW5nSW1hZ2UsIEZhaWx1cmVJbWFnZUhhc2hNaXNtYXRjaCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgRmFpbHVyZUltYWdlSGFzaEluY29ycmVjdCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgRmFpbHVyZUltYWdlSGFzaEluY29ycmVjdCwgRmFpbHVyZVJlZnRlc3RNaXNtYXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgRmFpbHVyZVJlZnRlc3RNaXNtYXRjaERpZE5vdEhhcHBlbikK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL3Rlc3RfcmVzdWx0X3dyaXRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0X3dyaXRlci5weQppbmRleCA4ODJk
YTkxNzIxNjc3M2Q0YmE3NDNiN2QzZTdkMjUzYmRiMjIzN2FkLi40ZWNmNjM4YWNjN2RlNWE2NjMz
MTkyMWYxMWU3N2IxOTQ4ZDU3NGM1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9y
ZXN1bHRfd3JpdGVyLnB5CkBAIC0yOSw2ICsyOSw4IEBACiAKIGltcG9ydCBsb2dnaW5nCiBpbXBv
cnQgb3MKKyMgRklYTUU6IFVzZSBtb2NrX2ZpbGVzeXN0ZW0KK2ltcG9ydCBzaHV0aWwKIAogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfZmFpbHVy
ZXMKIApAQCAtNjUsNiArNjcsMTMgQEAgZGVmIHdyaXRlX3Rlc3RfcmVzdWx0KHBvcnQsIHJvb3Rf
b3V0cHV0X2RpciwgZmlsZW5hbWUsIGRyaXZlcl9vdXRwdXQsCiAgICAgICAgICAgICAgICAgaW1h
Z2VoYXNoX21pc21hdGNoX2ZhaWx1cmUgPSBmYWlsdXJlCiAgICAgICAgIGVsaWYgaXNpbnN0YW5j
ZShmYWlsdXJlLCB0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVDcmFzaCk6CiAgICAgICAgICAgICB3cml0
ZXIud3JpdGVfY3Jhc2hfcmVwb3J0KGRyaXZlcl9vdXRwdXQuZXJyb3IpCisgICAgICAgIGVsaWYg
aXNpbnN0YW5jZShmYWlsdXJlLCB0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2gp
OgorICAgICAgICAgICAgd3JpdGVyLndyaXRlX2ltYWdlX2ZpbGVzKGRyaXZlcl9vdXRwdXQuaW1h
Z2UsIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQuaW1hZ2UpCisgICAgICAgICAgICB3cml0ZXIuY3Jl
YXRlX2ltYWdlX2RpZmZfYW5kX3dyaXRlX3Jlc3VsdChkcml2ZXJfb3V0cHV0LmltYWdlLCBleHBl
Y3RlZF9kcml2ZXJfb3V0cHV0LmltYWdlKQorICAgICAgICAgICAgd3JpdGVyLmNvcHlfZmlsZShw
b3J0LmV4cGVjdGVkX2h0bWxfZmlsZW5hbWUoZmlsZW5hbWUpLCAnLWV4cGVjdGVkLmh0bWwnKQor
ICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZmFpbHVyZSwgdGVzdF9mYWlsdXJlcy5GYWlsdXJlUmVm
dGVzdE1pc21hdGNoRGlkTm90SGFwcGVuKToKKyAgICAgICAgICAgIHdyaXRlci53cml0ZV9pbWFn
ZV9maWxlcyhkcml2ZXJfb3V0cHV0LmltYWdlLCBleHBlY3RlZF9pbWFnZT1Ob25lKQorICAgICAg
ICAgICAgd3JpdGVyLmNvcHlfZmlsZShwb3J0LmV4cGVjdGVkX21pc21hdGNoX2h0bWxfZmlsZW5h
bWUoZmlsZW5hbWUpLCAnLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwnKQogICAgICAgICBlbHNlOgog
ICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZmFpbHVyZSwgKHRlc3RfZmFpbHVyZXMuRmFp
bHVyZVRpbWVvdXQsKSkKIApAQCAtMTkzLDMgKzIwMiwxMCBAQCBjbGFzcyBUZXN0UmVzdWx0V3Jp
dGVyKG9iamVjdCk6CiAgICAgICAgICMgVG8gZG8gc28sIHdlIGhhdmUgdG8gY2hhbmdlIHBvcnQu
ZGlmZl9pbWFnZSgpIGFzIHdlbGwuCiAgICAgICAgIGRpZmZfZmlsZW5hbWUgPSBzZWxmLm91dHB1
dF9maWxlbmFtZShzZWxmLkZJTEVOQU1FX1NVRkZJWF9JTUFHRV9ESUZGKQogICAgICAgICByZXR1
cm4gc2VsZi5fcG9ydC5kaWZmX2ltYWdlKGFjdHVhbF9pbWFnZSwgZXhwZWN0ZWRfaW1hZ2UsIGRp
ZmZfZmlsZW5hbWUpCisKKyAgICBkZWYgY29weV9maWxlKHNlbGYsIHNyY19maWxlcGF0aCwgZHN0
X2V4dGVuc2lvbik6CisgICAgICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhzcmNfZmlsZXBhdGgp
LCAnc3JjX2ZpbGVwYXRoOiAlcycgJSBzcmNfZmlsZXBhdGgKKyAgICAgICAgc2VsZi5fbWFrZV9v
dXRwdXRfZGlyZWN0b3J5KCkKKyAgICAgICAgZHN0X2ZpbGVuYW1lID0gc2VsZi5vdXRwdXRfZmls
ZW5hbWUoZHN0X2V4dGVuc2lvbikKKyAgICAgICAgIyBGSVhNRTogdXNlIHNvbWUgbW9ja19maWxl
c3lzdGVtIGFwaS4uPworICAgICAgICBzaHV0aWwuY29weWZpbGUoc3JjX2ZpbGVwYXRoLCBkc3Rf
ZmlsZW5hbWUpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyLnB5CmluZGV4IDFiYjg3YzMx
ZTZjMzJmZjk4NGE0NjY1ODUzZWYzOTNlNzRmYmFjMTkuLmFhYmUxZmU5MmNjNDUxYWFkMWI4MDdk
ZjE3YTFkYzgwMjNmYWI4NDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyLnB5CkBA
IC0xMTg1LDYgKzExODUsNyBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICBmb3IgdGVzdF9m
aWxlIGluIHNvcnRlZCh0ZXN0X2ZpbGVzKToKICAgICAgICAgICAgIHRlc3RfbmFtZSA9IHNlbGYu
X3BvcnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZSh0ZXN0X2ZpbGUpCiAgICAgICAgICAgICB0ZXN0
X3VybCA9IHNlbGYuX3BvcnQuZmlsZW5hbWVfdG9fdXJpKHRlc3RfZmlsZSkKKyAgICAgICAgICAg
ICMgRklYTUU6IEZvciByZWZ0ZXN0cywgYWRkICctZXhwZWN0ZWQuaHRtbCcgaGVyZT8/PwogICAg
ICAgICAgICAgcGFnZSArPSB1IjxwPjxhIGhyZWY9JyVzJz4lczwvYT48YnIgLz5cbiIgJSAodGVz
dF91cmwsIHRlc3RfbmFtZSkKICAgICAgICAgICAgIHRlc3RfZmFpbHVyZXMgPSBmYWlsdXJlcy5n
ZXQodGVzdF9maWxlLCBbXSkKICAgICAgICAgICAgIGZvciBmYWlsdXJlIGluIHRlc3RfZmFpbHVy
ZXM6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS93b3JrZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS93b3JrZXIucHkKaW5kZXggOGEyMGE5OGM0MDI2YjZhZjMzM2Y1NGE5
Y2Y2YWI0ODlmNjAzMjA5Ni4uM2MyODI4ZTc1OWI2OTM4OWVkMGRiOWNmNWM5Njk5OTE4YjE3Mzc4
YiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2Uvd29ya2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL3dvcmtlci5weQpAQCAtODUsNiArODUsNyBAQCBjbGFzcyBXb3Jr
ZXIobWFuYWdlcl93b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2VyLCB3b3JrZXJfbWl4aW4uV29y
a2VyTWl4aW4pOgogICAgICAgICAgICAgICAgIGV4Y19pbmZvID0gc3lzLmV4Y19pbmZvKCkKICAg
ICAgICAgICAgICAgICBzdGFja191dGlscy5sb2dfdHJhY2ViYWNrKF9sb2cuZXJyb3IsIGV4Y19p
bmZvWzJdKQogICAgICAgICAgICAgICAgICMgRklYTUU6IEZpZ3VyZSBvdXQgaG93IHRvIHNlbmQg
YSBtZXNzYWdlIHdpdGggYSB0cmFjZWJhY2suCisgICAgICAgICAgICAgICAgcHJpbnQgJyonICog
MTYsIGV4Y19pbmZvCiAgICAgICAgICAgICAgICAgc2VsZi5fd29ya2VyX2Nvbm5lY3Rpb24ucG9z
dF9tZXNzYWdlKCdleGNlcHRpb24nLAogICAgICAgICAgICAgICAgICAgICAoZXhjX2luZm9bMF0s
IGV4Y19pbmZvWzFdLCBOb25lKSkKICAgICAgICAgICAgIHNlbGYuX3dvcmtlcl9jb25uZWN0aW9u
LnBvc3RfbWVzc2FnZSgnZG9uZScpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggM2FhZjMwMjUwMTA3ZTA3MThkNTM4ZjY3N2UwNzJk
NDU1NzExMjJhYS4uYjhjMTFmZWE1ZDM1NzJjMzhmZWUzNmUzMTRjMjhhYjhkMmY0YmE5NSAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpA
QCAtMzQ2LDYgKzM0NiwxNSBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIHRleHQgPSBz
ZWxmLl9maWxlc3lzdGVtLnJlYWRfYmluYXJ5X2ZpbGUocGF0aCkKICAgICAgICAgcmV0dXJuIHRl
eHQucmVwbGFjZSgiXHJcbiIsICJcbiIpCiAKKyAgICBkZWYgZXhwZWN0ZWRfaHRtbF9maWxlbmFt
ZShzZWxmLCBmaWxlbmFtZSk6CisgICAgICAgICIiIlJldHVybiB0aGUgZmlsZW5hbWUgb2YgcmVm
ZXJlbmNlIEhUTUwgd2UgZXhwZWN0IHRoZSB0ZXN0IG1hdGNoZXMuIiIiCisgICAgICAgIHJldHVy
biBzZWxmLmV4cGVjdGVkX2ZpbGVuYW1lKGZpbGVuYW1lLCAnLmh0bWwnKQorCisgICAgZGVmIGV4
cGVjdGVkX21pc21hdGNoX2h0bWxfZmlsZW5hbWUoc2VsZiwgZmlsZW5hbWUpOgorICAgICAgICAi
IiJSZXR1cm4gdGhlIGZpbGVuYW1lIG9mIHJlZmVyZW5jZSBIVE1MIHdlIGRvbid0IGV4cGVjdCB0
aGUgdGVzdAorICAgICAgICBtYXRjaGVzLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5leHBlY3Rl
ZF9maWxlbmFtZShmaWxlbmFtZSwgJy1taXNtYXRjaC5odG1sJykKKwogICAgIGRlZiBmaWxlbmFt
ZV90b191cmkoc2VsZiwgZmlsZW5hbWUpOgogICAgICAgICAiIiJDb252ZXJ0IGEgdGVzdCBmaWxl
ICh3aGljaCBpcyBhbiBhYnNvbHV0ZSBwYXRoKSB0byBhIFVSSS4iIiIKICAgICAgICAgTEFZT1VU
VEVTVF9IVFRQX0RJUiA9ICJodHRwL3Rlc3RzLyIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlcy5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlcy5weQppbmRleCA1MzQ0NjJhN2Vl
NGE2OWI5OGMyMGQ4Mzk3NjdjYjIwOTU1M2U4YTc2Li4zNmU3YWIxNDQ0NGMzZDQ5MDdmZjYzZDIx
NTIzZjYxMDQ2MDYzNWQyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzLnB5CkBAIC0xMDksNyArMTA5LDYgQEAgZGVmIF9p
c19yZWZlcmVuY2VfaHRtbF9maWxlKGZpbGVuYW1lKToKICAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0
aGUgZmlsZW5hbWUgcG9pbnRzIHRvIGEgcmVmZXJlbmNlIEhUTUwgZmlsZS4iIiIKICAgICBpZiAo
ZmlsZW5hbWUuZW5kc3dpdGgoJy1leHBlY3RlZC5odG1sJykgb3IKICAgICAgICAgZmlsZW5hbWUu
ZW5kc3dpdGgoJy1leHBlY3RlZC1taXNtYXRjaC5odG1sJykpOgotICAgICAgICBfbG9nLndhcm4o
IlJlZnRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkIC0gaWdub3JpbmcgJXMiICUgZmlsZW5hbWUpCiAg
ICAgICAgIHJldHVybiBUcnVlCiAgICAgcmV0dXJuIEZhbHNlCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85028</attachid>
            <date>2011-03-08 00:02:32 -0800</date>
            <delta_ts>2011-03-09 01:59:11 -0800</delta_ts>
            <desc>add-reftests</desc>
            <filename>bug-55457-20110308170230.patch</filename>
            <type>text/plain</type>
            <size>24548</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODAyMTEKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxZjNmYThjYmFlODAzN2I3Y2I4OTg0YjZhOGIzZmYyNzlj
OGFkYmU5Li5mNTY5YTFlY2Q0ZDViYzMyY2E3YTVhMzRkNGUxYzAxOWU4YzI1OGIzIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDMtMDcgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtOUldUXSBBZGQgc3Vw
cG9ydCBmb3IgcmVmdGVzdHMgdG8gbmV3LXJ1bi13ZWJraXQtdGVzdHMuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1NDU3CisKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9zaW5nbGVfdGVzdF9y
dW5uZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvdGVzdF9mYWlsdXJlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXMucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVz
dC5weToKKwogMjAxMS0wMy0wMiAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9zaW5nbGVfdGVzdF9ydW5uZXIu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9z
aW5nbGVfdGVzdF9ydW5uZXIucHkKaW5kZXggMjM2MjNlY2QwYWQyNzkwZDM4MTg0MWU1Nzc2Zjlm
YTBhMGRhMGRjZi4uOTNhNjI1ODIyMjQ3ZGEzOWExOWZiYjlhNzAzNmViYjRkZmE1NGVhMSAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2th
Z2Uvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90ZXN0X3J1bm5lci5weQpAQCAtNjMsNiAr
NjMsMzQgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcjoKICAgICAgICAgc2VsZi5fd29ya2VyX25h
bWUgPSB3b3JrZXJfbmFtZQogICAgICAgICBzZWxmLl90ZXN0bmFtZSA9IHBvcnQucmVsYXRpdmVf
dGVzdF9maWxlbmFtZSh0ZXN0X2lucHV0LmZpbGVuYW1lKQogCisgICAgICAgIHNlbGYuX2lzX3Jl
ZnRlc3QgPSBGYWxzZQorICAgICAgICBzZWxmLl9pc19taXNtYXRjaF9yZWZ0ZXN0ID0gRmFsc2UK
KyAgICAgICAgc2VsZi5fcmVmZXJlbmNlX2h0bWxfZmlsZW5hbWUgPSBOb25lCisKKyAgICAgICAg
ZnMgPSBwb3J0Ll9maWxlc3lzdGVtCisgICAgICAgICMgRklYTUU6IERldGVjdCBhbmQgcmVwb3J0
IGEgdGVzdCB3aGljaCBoYXMgYSB3cm9uZyBjb21iaW5hdGlvbiBvZgorICAgICAgICAjIGV4cGVj
dGF0aW9uIGZpbGVzLiBGb3IgZXhhbXBsZSwgaWYgJ2Zvby5odG1sJyBoYXMgdHdvIGV4cGVjdGF0
aW9uIGZpbGVzLAorICAgICAgICAjICdmb28tZXhwZWN0ZWQuaHRtbCcgYW5kICdmb28tZXhwZWN0
ZWQudHh0Jywgd2Ugc2hvdWxkIHdhcm4gdXNlcnMuCisgICAgICAgICMgT25lIHRlc3QgZmlsZSBt
dXN0IGJlIHVzZWQgZXhjbHVzaXZlbHkgaW4gZWl0aGVyIGxheW91dCB0ZXN0cyBvcgorICAgICAg
ICAjIHJlZnRlc3RzLCBidXQgbm90IGluIGJvdGguCisgICAgICAgIGV4cGVjdGVkX2h0bWxfZmls
ZW5hbWUgPSBwb3J0LmV4cGVjdGVkX2h0bWxfZmlsZW5hbWUoc2VsZi5fZmlsZW5hbWUpCisgICAg
ICAgIGlmIGZzLmV4aXN0cyhleHBlY3RlZF9odG1sX2ZpbGVuYW1lKToKKyAgICAgICAgICAgIHNl
bGYuX2lzX3JlZnRlc3QgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9yZWZlcmVuY2VfaHRtbF9m
aWxlbmFtZSA9IGV4cGVjdGVkX2h0bWxfZmlsZW5hbWUKKworICAgICAgICBleHBlY3RlZF9taXNt
YXRjaF9odG1sX2ZpbGVuYW1lID0gcG9ydC5leHBlY3RlZF9taXNtYXRjaF9odG1sX2ZpbGVuYW1l
KHNlbGYuX2ZpbGVuYW1lKQorICAgICAgICBpZiBmcy5leGlzdHMoZXhwZWN0ZWRfbWlzbWF0Y2hf
aHRtbF9maWxlbmFtZSk6CisgICAgICAgICAgICBpZiBzZWxmLl9pc19yZWZ0ZXN0OgorICAgICAg
ICAgICAgICAgIF9sb2cuZXJyb3IoJ0l0IGlzIG5vdCBhbGxvd2VkIHRoYXQgb25lIHRlc3QgZmls
ZSBoYXMgYm90aCcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICcgZXhwZWN0ZWQtaHRtbCBm
aWxlIGFuZCBleHBlY3RlZC1taXNtYXRjaC5odG1sIGZpbGUnCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnIGF0IHRoZSBzYW1lIHRpbWUuIFBsZWFzZSByZW1vdmUgZWl0aGVyICVzIG9yICVz
LicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9odG1sX2ZpbGVuYW1lLCBl
eHBlY3RlZF9taXNtYXRjaF9odG1sX2ZpbGVuYW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICBzZWxmLl9pc19yZWZ0ZXN0ID0gVHJ1ZQorICAgICAgICAgICAgICAgIHNlbGYu
X2lzX21pc21hdGNoX3JlZnRlc3QgPSBUcnVlCisgICAgICAgICAgICAgICAgc2VsZi5fcmVmZXJl
bmNlX2h0bWxfZmlsZW5hbWUgPSBleHBlY3RlZF9taXNtYXRjaF9odG1sX2ZpbGVuYW1lCisKKwog
ICAgIGRlZiBfZXhwZWN0ZWRfZHJpdmVyX291dHB1dChzZWxmKToKICAgICAgICAgcmV0dXJuIEV4
cGVjdGVkRHJpdmVyT3V0cHV0KHNlbGYuX3BvcnQuZXhwZWN0ZWRfdGV4dChzZWxmLl9maWxlbmFt
ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LmV4cGVj
dGVkX2ltYWdlKHNlbGYuX2ZpbGVuYW1lKSwKQEAgLTg0LDcgKzExMiwxMyBAQCBjbGFzcyBTaW5n
bGVUZXN0UnVubmVyOgogCiAgICAgZGVmIHJ1bihzZWxmKToKICAgICAgICAgaWYgc2VsZi5fb3B0
aW9ucy5uZXdfYmFzZWxpbmUgb3Igc2VsZi5fb3B0aW9ucy5yZXNldF9yZXN1bHRzOgotICAgICAg
ICAgICAgcmV0dXJuIHNlbGYuX3J1bl9yZWJhc2VsaW5lKCkKKyAgICAgICAgICAgIGlmIHNlbGYu
X2lzX3JlZnRlc3Q6CisgICAgICAgICAgICAgICAgIyBSZXR1cm5zIGEgZHVtbXkgVGVzdFJlc3Vs
dC4gV2UgZG9uJ3QgaGF2ZSB0byByZWJhc2UgZm9yIHJlZnRlc3RzLgorICAgICAgICAgICAgICAg
IHJldHVybiBUZXN0UmVzdWx0KHNlbGYuX2ZpbGVuYW1lKQorICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3JlYmFzZWxpbmUoKQorICAgICAgICBpZiBz
ZWxmLl9pc19yZWZ0ZXN0OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl9yZWZ0ZXN0KCkK
ICAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl9jb21wYXJlX3Rlc3QoKQogCiAgICAgZGVmIF9ydW5f
Y29tcGFyZV90ZXN0KHNlbGYpOgpAQCAtMTQ1LDE2ICsxNzksMjUgQEAgY2xhc3MgU2luZ2xlVGVz
dFJ1bm5lcjoKIAogICAgICAgICBwb3J0LnVwZGF0ZV9iYXNlbGluZShvdXRwdXRfcGF0aCwgZGF0
YSkKIAotICAgIGRlZiBfaGFuZGxlX2Vycm9yKHNlbGYsIGRyaXZlcl9vdXRwdXQpOgorICAgIGRl
ZiBfaGFuZGxlX2Vycm9yKHNlbGYsIGRyaXZlcl9vdXRwdXQsIHRlc3RfZmlsZW5hbWU9Tm9uZSk6
CisgICAgICAgICIiIlJldHVybnMgdGVzdCBmYWlsdXJlcyBpZiBzb21lIHVudXN1YWwgZXJyb3Jz
IGhhcHBlbiBpbiBkcml2ZXIncyBydW4uCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBkcml2
ZXJfb3V0cHV0OiBUaGUgb3V0cHV0IGZyb20gdGhlIGRyaXZlci4KKyAgICAgICAgICB0ZXN0X2Zp
bGVuYW1lOiBUaGUgZnVsbCBwYXRoIHRvIHRoZSBpbnB1dCBmaWxlIHdoaWNoIHByb2R1Y2VkIHRo
ZSBkcml2ZXJfb3V0cHV0LgorICAgICAgICAgICAgICBUaGlzIGFyZyBpcyBvcHRpb25hbCBhbmQg
c2hvdWxiZSBiZSB1c2VkIG9ubHkgaW4gcmVmdGVzdHMgdW50aWwgd2UgaGF2ZSBhIGJldHRlciB3
YXkgdG8ga25vdworICAgICAgICAgICAgICB3aGljaCBodG1sIGZpbGUgaXMgdXNlZCBmb3IgcHJv
ZHVjaW5nIHRoZSBkcml2ZXJfb3V0cHV0LgorICAgICAgICAiIiIKICAgICAgICAgZmFpbHVyZXMg
PSBbXQogICAgICAgICBmcyA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0KICAgICAgICAgaWYgZHJp
dmVyX291dHB1dC50aW1lb3V0OgotICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFp
bHVyZXMuRmFpbHVyZVRpbWVvdXQoKSkKKyAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0
X2ZhaWx1cmVzLkZhaWx1cmVUaW1lb3V0KHRlc3RfZmlsZW5hbWUpKQogICAgICAgICBpZiBkcml2
ZXJfb3V0cHV0LmNyYXNoOgotICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVy
ZXMuRmFpbHVyZUNyYXNoKCkpCisgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWls
dXJlcy5GYWlsdXJlQ3Jhc2godGVzdF9maWxlbmFtZSkpCiAgICAgICAgICAgICBfbG9nLmRlYnVn
KCIlcyBTdGFja3RyYWNlIGZvciAlczpcbiVzIiAlIChzZWxmLl93b3JrZXJfbmFtZSwgc2VsZi5f
dGVzdG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkcml2ZXJfb3V0cHV0LmVycm9yKSkKICAgICAgICAgICAgICMgRklYTUU6IFVzZSB0
ZXN0X3Jlc3VsdF93cml0ZXIgbW9kdWxlLgorICAgICAgICAgICAgIyBGSVhNRTogTW92ZSB0aGlz
IGFjdHVhbCBmaWxlIHdyaXRpbmcgY29kZSBzb21ld2hlcmUgc28gdGhhdCB0aGlzIGZ1Y250aW9u
IGRvZXNuJ3QgaGF2ZSBhbnkgc2lkZSBlZmZlY3RzLgogICAgICAgICAgICAgc3RhY2tfZmlsZW5h
bWUgPSBmcy5qb2luKHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksIHNlbGYuX3Rlc3Ru
YW1lKQogICAgICAgICAgICAgc3RhY2tfZmlsZW5hbWUgPSBmcy5zcGxpdGV4dChzdGFja19maWxl
bmFtZSlbMF0gKyAiLXN0YWNrLnR4dCIKICAgICAgICAgICAgIGZzLm1heWJlX21ha2VfZGlyZWN0
b3J5KGZzLmRpcm5hbWUoc3RhY2tfZmlsZW5hbWUpKQpAQCAtMjEwLDMgKzI1MywzMyBAQCBjbGFz
cyBTaW5nbGVUZXN0UnVubmVyOgogICAgICAgICBlbGlmIGRyaXZlcl9vdXRwdXQuaW1hZ2VfaGFz
aCAhPSBleHBlY3RlZF9kcml2ZXJfb3V0cHV0cy5pbWFnZV9oYXNoOgogICAgICAgICAgICAgZmFp
bHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZUltYWdlSGFzaE1pc21hdGNoKCkpCiAg
ICAgICAgIHJldHVybiBmYWlsdXJlcworCisgICAgZGVmIF9ydW5fcmVmdGVzdChzZWxmKToKKyAg
ICAgICAgZHJpdmVyX291dHB1dDEgPSBzZWxmLl9kcml2ZXIucnVuX3Rlc3Qoc2VsZi5fZHJpdmVy
X2lucHV0KCkpCisgICAgICAgIGRyaXZlcl9vdXRwdXQyID0gc2VsZi5fZHJpdmVyLnJ1bl90ZXN0
KAorICAgICAgICAgICAgYmFzZS5Ecml2ZXJJbnB1dChzZWxmLl9yZWZlcmVuY2VfaHRtbF9maWxl
bmFtZSwgc2VsZi5fdGltZW91dCwgZHJpdmVyX291dHB1dDEuaW1hZ2VfaGFzaCkpCisgICAgICAg
IHRlc3RfcmVzdWx0ID0gc2VsZi5fY29tcGFyZV9vdXRwdXRfd2l0aF9yZWZlcmVuY2UoZHJpdmVy
X291dHB1dDEsIGRyaXZlcl9vdXRwdXQyKQorCisgICAgICAgIGV4cGVjdGVkX2RyaXZlcl9vdXRw
dXQgPSBFeHBlY3RlZERyaXZlck91dHB1dChkcml2ZXJfb3V0cHV0Mi50ZXh0LCBkcml2ZXJfb3V0
cHV0Mi5pbWFnZSwgZHJpdmVyX291dHB1dDIuaW1hZ2VfaGFzaCkKKyAgICAgICAgdGVzdF9yZXN1
bHRfd3JpdGVyLndyaXRlX3Rlc3RfcmVzdWx0KHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMucmVz
dWx0c19kaXJlY3RvcnksIHNlbGYuX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZHJpdmVyX291dHB1dDEsIGV4cGVjdGVkX2RyaXZlcl9vdXRw
dXQsIHRlc3RfcmVzdWx0LmZhaWx1cmVzKQorICAgICAgICByZXR1cm4gdGVzdF9yZXN1bHQKKwor
ICAgIGRlZiBfY29tcGFyZV9vdXRwdXRfd2l0aF9yZWZlcmVuY2Uoc2VsZiwgZHJpdmVyX291dHB1
dDEsIGRyaXZlcl9vdXRwdXQyKToKKyAgICAgICAgbWF4X3Rlc3RfdGltZSA9IG1heChkcml2ZXJf
b3V0cHV0MS50ZXN0X3RpbWUsIGRyaXZlcl9vdXRwdXQyLnRlc3RfdGltZSkKKyAgICAgICAgZmFp
bHVyZXMgPSBbXQorICAgICAgICBmYWlsdXJlcy5leHRlbmQoc2VsZi5faGFuZGxlX2Vycm9yKGRy
aXZlcl9vdXRwdXQxKSkKKyAgICAgICAgaWYgZHJpdmVyX291dHB1dDEuY3Jhc2g6CisgICAgICAg
ICAgICAjIERvbid0IGNvbnRpbnVlIGFueSBtb3JlIGlmIHdlIGFscmVhZHkgaGF2ZSBhIGNyYXNo
LgorICAgICAgICAgICAgcmV0dXJuIFRlc3RSZXN1bHQoc2VsZi5fZmlsZW5hbWUsIGZhaWx1cmVz
LCBtYXhfdGVzdF90aW1lKQorICAgICAgICBmYWlsdXJlcy5leHRlbmQoc2VsZi5faGFuZGxlX2Vy
cm9yKGRyaXZlcl9vdXRwdXQyLCB0ZXN0X2ZpbGVuYW1lPXNlbGYuX3JlZmVyZW5jZV9odG1sX2Zp
bGVuYW1lKSkKKyAgICAgICAgaWYgZHJpdmVyX291dHB1dDIuY3Jhc2g6CisgICAgICAgICAgICBy
ZXR1cm4gVGVzdFJlc3VsdChzZWxmLl9maWxlbmFtZSwgZmFpbHVyZXMsIG1heF90ZXN0X3RpbWUp
CisKKyAgICAgICAgaWYgc2VsZi5faXNfbWlzbWF0Y2hfcmVmdGVzdDoKKyAgICAgICAgICAgIGlm
IGRyaXZlcl9vdXRwdXQxLmltYWdlX2hhc2ggPT0gZHJpdmVyX291dHB1dDIuaW1hZ2VfaGFzaDoK
KyAgICAgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlUmVm
dGVzdE1pc21hdGNoRGlkTm90T2NjdXIoKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlm
IGRyaXZlcl9vdXRwdXQxLmltYWdlX2hhc2ggIT0gZHJpdmVyX291dHB1dDIuaW1hZ2VfaGFzaDoK
KyAgICAgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlUmVm
dGVzdE1pc21hdGNoKCkpCisgICAgICAgIHJldHVybiBUZXN0UmVzdWx0KHNlbGYuX2ZpbGVuYW1l
LCBmYWlsdXJlcywgbWF4X3Rlc3RfdGltZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXMucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1
cmVzLnB5CmluZGV4IGViNTlkMzZhMDg4NjUzNzIwMjQ3ZTNlOTI1OWVmY2QyYmRiNGJhYWUuLmEz
YzJlNTQ4MWQ5MTA0N2U0MThkYjQyZDM1ZDViNzI5OGYzODRlYmMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVy
ZXMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvdGVzdF9mYWlsdXJlcy5weQpAQCAtNjAsMTEgKzYwLDEzIEBAIGRlZiBkZXRlcm1pbmVf
cmVzdWx0X3R5cGUoZmFpbHVyZV9saXN0KToKICAgICAgICAgaXNfdGV4dF9mYWlsdXJlID0gRmFp
bHVyZVRleHRNaXNtYXRjaCBpbiBmYWlsdXJlX3R5cGVzCiAgICAgICAgIGlzX2ltYWdlX2ZhaWx1
cmUgPSAoRmFpbHVyZUltYWdlSGFzaEluY29ycmVjdCBpbiBmYWlsdXJlX3R5cGVzIG9yCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRmFpbHVyZUltYWdlSGFzaE1pc21hdGNoIGluIGZhaWx1
cmVfdHlwZXMpCisgICAgICAgIGlzX3JlZnRlc3RfZmFpbHVyZSA9IChGYWlsdXJlUmVmdGVzdE1p
c21hdGNoIGluIGZhaWx1cmVfdHlwZXMgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2hEaWROb3RPY2N1ciBpbiBmYWlsdXJlX3R5cGVzKQogICAg
ICAgICBpZiBpc190ZXh0X2ZhaWx1cmUgYW5kIGlzX2ltYWdlX2ZhaWx1cmU6CiAgICAgICAgICAg
ICByZXR1cm4gdGVzdF9leHBlY3RhdGlvbnMuSU1BR0VfUExVU19URVhUCiAgICAgICAgIGVsaWYg
aXNfdGV4dF9mYWlsdXJlOgogICAgICAgICAgICAgcmV0dXJuIHRlc3RfZXhwZWN0YXRpb25zLlRF
WFQKLSAgICAgICAgZWxpZiBpc19pbWFnZV9mYWlsdXJlOgorICAgICAgICBlbGlmIGlzX2ltYWdl
X2ZhaWx1cmUgb3IgaXNfcmVmdGVzdF9mYWlsdXJlOgogICAgICAgICAgICAgcmV0dXJuIHRlc3Rf
ZXhwZWN0YXRpb25zLklNQUdFCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBWYWx1
ZUVycm9yKCJ1bmNsYXNzaWZpYWJsZSBzZXQgb2YgZmFpbHVyZXM6ICIKQEAgLTE3NywxMSArMTc5
LDE3IEBAIGNsYXNzIEZhaWx1cmVUaW1lb3V0KFRlc3RGYWlsdXJlKToKICAgICAiIiJUZXN0IHRp
bWVkIG91dC4gIFdlIGFsc28gd2FudCB0byByZXN0YXJ0IER1bXBSZW5kZXJUcmVlIGlmIHRoaXMK
ICAgICBoYXBwZW5zLiIiIgogCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfZmlsZW5hbWU9
Tm9uZSk6CisgICAgICAgIHNlbGYudGVzdF9maWxlbmFtZSA9IHRlc3RfZmlsZW5hbWUKKwogICAg
IEBzdGF0aWNtZXRob2QKICAgICBkZWYgbWVzc2FnZSgpOgogICAgICAgICByZXR1cm4gIlRlc3Qg
dGltZWQgb3V0IgogCiAgICAgZGVmIHJlc3VsdF9odG1sX291dHB1dChzZWxmLCBmaWxlbmFtZSk6
CisgICAgICAgIGlmIHNlbGYudGVzdF9maWxlbmFtZToKKyAgICAgICAgICAgIHJldHVybiAiPHN0
cm9uZz4lczwvc3Ryb25nPiAob2NjdXJlZCBpbiA8YSBocmVmPSVzPmV4cGVjdGVkIGh0bWw8L2E+
KSIgJSAoCisgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCksIHNlbGYudGVzdF9maWxlbmFt
ZSkKICAgICAgICAgcmV0dXJuICI8c3Ryb25nPiVzPC9zdHJvbmc+IiAlIHNlbGYubWVzc2FnZSgp
CiAKICAgICBkZWYgc2hvdWxkX2tpbGxfZHVtcF9yZW5kZXJfdHJlZShzZWxmKToKQEAgLTE5MSw2
ICsxOTksOSBAQCBjbGFzcyBGYWlsdXJlVGltZW91dChUZXN0RmFpbHVyZSk6CiBjbGFzcyBGYWls
dXJlQ3Jhc2goVGVzdEZhaWx1cmUpOgogICAgICIiIkR1bXBSZW5kZXJUcmVlIGNyYXNoZWQuIiIi
CiAKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdF9maWxlbmFtZT1Ob25lKToKKyAgICAgICAg
c2VsZi50ZXN0X2ZpbGVuYW1lID0gdGVzdF9maWxlbmFtZQorCiAgICAgQHN0YXRpY21ldGhvZAog
ICAgIGRlZiBtZXNzYWdlKCk6CiAgICAgICAgIHJldHVybiAiRHVtcFJlbmRlclRyZWUgY3Jhc2hl
ZCIKQEAgLTE5OCw4ICsyMDksMTEgQEAgY2xhc3MgRmFpbHVyZUNyYXNoKFRlc3RGYWlsdXJlKToK
ICAgICBkZWYgcmVzdWx0X2h0bWxfb3V0cHV0KHNlbGYsIGZpbGVuYW1lKToKICAgICAgICAgIyBG
SVhNRTogY3JlYXRlIGEgbGluayB0byB0aGUgbWluaWR1bXAgZmlsZQogICAgICAgICBzdGFjayA9
IHNlbGYucmVsYXRpdmVfb3V0cHV0X2ZpbGVuYW1lKGZpbGVuYW1lLCAiLXN0YWNrLnR4dCIpCi0g
ICAgICAgIHJldHVybiAiPHN0cm9uZz4lczwvc3Ryb25nPiA8YSBocmVmPSVzPnN0YWNrPC9hPiIg
JSAoc2VsZi5tZXNzYWdlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2spCisgICAgICAgIGlmIHNlbGYudGVzdF9maWxl
bmFtZToKKyAgICAgICAgICAgIHJldHVybiAiPHN0cm9uZz4lczwvc3Ryb25nPiA8YSBocmVmPSVz
PnN0YWNrPC9hPiAob2NjdXJlZCBpbiA8YSBocmVmPSVzPmV4cGVjdGVkIGh0bWw8L2E+KSIgJSAo
CisgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCksIHN0YWNrLCBzZWxmLnRlc3RfZmlsZW5h
bWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gIjxzdHJvbmc+JXM8L3N0cm9u
Zz4gPGEgaHJlZj0lcz5zdGFjazwvYT4iICUgKHNlbGYubWVzc2FnZSgpLCBzdGFjaykKIAogICAg
IGRlZiBzaG91bGRfa2lsbF9kdW1wX3JlbmRlcl90cmVlKHNlbGYpOgogICAgICAgICByZXR1cm4g
VHJ1ZQpAQCAtMjc5LDkgKzI5Myw0OCBAQCBjbGFzcyBGYWlsdXJlSW1hZ2VIYXNoSW5jb3JyZWN0
KEZhaWx1cmVXaXRoVHlwZSk6CiAgICAgZGVmIHJlc3VsdF9odG1sX291dHB1dChzZWxmLCBmaWxl
bmFtZSk6CiAgICAgICAgIHJldHVybiAiPHN0cm9uZz4lczwvc3Ryb25nPiIgJSBzZWxmLm1lc3Nh
Z2UoKQogCisKK2NsYXNzIEZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2goRmFpbHVyZVdpdGhUeXBlKToK
KyAgICAiIiJUaGUgcmVzdWx0IGRpZG4ndCBtYXRjaCB0aGUgcmVmZXJlbmNlIHJlbmRlcmluZy4i
IiIKKworICAgIE9VVF9GSUxFTkFNRVMgPSAoIi1leHBlY3RlZC5odG1sIiwgIi1leHBlY3RlZC5w
bmciLCAiLWFjdHVhbC5wbmciLAorICAgICAgICAgICAgICAgICAgICAgIi1kaWZmLnBuZyIsKQor
CisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBtZXNzYWdlKCk6CisgICAgICAgIHJldHVybiAi
TWlzbWF0Y2ggd2l0aCByZWZlcmVuY2UiCisKKyAgICBkZWYgb3V0cHV0X2xpbmtzKHNlbGYsIGZp
bGVuYW1lLCBvdXRfbmFtZXMpOgorICAgICAgICBsaW5rcyA9IFsnJ10KKyAgICAgICAgdXJpcyA9
IFtzZWxmLnJlbGF0aXZlX291dHB1dF9maWxlbmFtZShmaWxlbmFtZSwgZm4pIGZvcgorICAgICAg
ICAgICAgICAgIGZuIGluIG91dF9uYW1lc10KKyAgICAgICAgZm9yIHRleHQsIHVyaSBpbiB6aXAo
WyctZXhwZWN0ZWQuaHRtbCcsICdleHBlY3RlZCcsICdhY3R1YWwnLCAnZGlmZiddLCB1cmlzKToK
KyAgICAgICAgICAgIGxpbmtzLmFwcGVuZCgiPGEgaHJlZj0nJXMnPiVzPC9hPiIgJSAodXJpLCB0
ZXh0KSkKKyAgICAgICAgcmV0dXJuICcgJy5qb2luKGxpbmtzKQorCisKK2NsYXNzIEZhaWx1cmVS
ZWZ0ZXN0TWlzbWF0Y2hEaWROb3RPY2N1cihGYWlsdXJlV2l0aFR5cGUpOgorICAgICIiIlVuZXhw
ZWN0ZWQgbWF0Y2ggYmV0d2VlbiB0aGUgcmVzdWx0IGFuZCB0aGUgcmVmZXJlbmNlIHJlbmRlcmlu
Zy4iIiIKKworICAgIE9VVF9GSUxFTkFNRVMgPSAoIi1leHBlY3RlZC1taXNtYXRjaC5odG1sIiwg
Ii1hY3R1YWwucG5nIiwpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIG1lc3NhZ2UoKToK
KyAgICAgICAgcmV0dXJuICJNaXNtYXRjaCB3aXRoIHRoZSByZWZlcmVuY2UgZGlkIG5vdCBvY2N1
ciIKKworICAgIGRlZiBvdXRwdXRfbGlua3Moc2VsZiwgZmlsZW5hbWUsIG91dF9uYW1lcyk6Cisg
ICAgICAgIGxpbmtzID0gWycnXQorICAgICAgICB1cmlzID0gW3NlbGYucmVsYXRpdmVfb3V0cHV0
X2ZpbGVuYW1lKGZpbGVuYW1lLCBmbikgZm9yCisgICAgICAgICAgICAgICAgZm4gaW4gb3V0X25h
bWVzXQorICAgICAgICBmb3IgdGV4dCwgdXJpIGluIHppcChbJy1leHBlY3RlZC1taXNtYXRjaC5o
dG1sJywgJ2ltYWdlJ10sIHVyaXMpOgorICAgICAgICAgICAgbGlua3MuYXBwZW5kKCI8YSBocmVm
PSclcyc+JXM8L2E+IiAlICh1cmksIHRleHQpKQorICAgICAgICByZXR1cm4gJyAnLmpvaW4obGlu
a3MpCisKKwogIyBDb252ZW5pZW50IGNvbGxlY3Rpb24gb2YgYWxsIGZhaWx1cmUgY2xhc3NlcyBm
b3IgYW55dGhpbmcgdGhhdCBtaWdodAogIyBuZWVkIHRvIGVudW1lcmF0ZSBvdmVyIHRoZW0gYWxs
LgogQUxMX0ZBSUxVUkVfQ0xBU1NFUyA9IChGYWlsdXJlVGltZW91dCwgRmFpbHVyZUNyYXNoLCBG
YWlsdXJlTWlzc2luZ1Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgRmFpbHVyZVRleHRN
aXNtYXRjaCwgRmFpbHVyZU1pc3NpbmdJbWFnZUhhc2gsCiAgICAgICAgICAgICAgICAgICAgICAg
IEZhaWx1cmVNaXNzaW5nSW1hZ2UsIEZhaWx1cmVJbWFnZUhhc2hNaXNtYXRjaCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgRmFpbHVyZUltYWdlSGFzaEluY29ycmVjdCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgRmFpbHVyZUltYWdlSGFzaEluY29ycmVjdCwgRmFpbHVyZVJlZnRlc3RNaXNtYXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgRmFpbHVyZVJlZnRlc3RNaXNtYXRjaERpZE5vdE9j
Y3VyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRfd3JpdGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRfd3JpdGVyLnB5CmluZGV4
IDg4MmRhOTE3MjE2NzczZDRiYTc0M2I3ZDNlN2QyNTNiZGIyMjM3YWQuLmMyZDEzYjExOTE3ODE2
MzVhNTliZjgxMDZhMWZkOTExNzQ1NTdlYTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0X3dyaXRlci5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90
ZXN0X3Jlc3VsdF93cml0ZXIucHkKQEAgLTY1LDYgKzY1LDEzIEBAIGRlZiB3cml0ZV90ZXN0X3Jl
c3VsdChwb3J0LCByb290X291dHB1dF9kaXIsIGZpbGVuYW1lLCBkcml2ZXJfb3V0cHV0LAogICAg
ICAgICAgICAgICAgIGltYWdlaGFzaF9taXNtYXRjaF9mYWlsdXJlID0gZmFpbHVyZQogICAgICAg
ICBlbGlmIGlzaW5zdGFuY2UoZmFpbHVyZSwgdGVzdF9mYWlsdXJlcy5GYWlsdXJlQ3Jhc2gpOgog
ICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NyYXNoX3JlcG9ydChkcml2ZXJfb3V0cHV0LmVycm9y
KQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZmFpbHVyZSwgdGVzdF9mYWlsdXJlcy5GYWlsdXJl
UmVmdGVzdE1pc21hdGNoKToKKyAgICAgICAgICAgIHdyaXRlci53cml0ZV9pbWFnZV9maWxlcyhk
cml2ZXJfb3V0cHV0LmltYWdlLCBleHBlY3RlZF9kcml2ZXJfb3V0cHV0LmltYWdlKQorICAgICAg
ICAgICAgd3JpdGVyLmNyZWF0ZV9pbWFnZV9kaWZmX2FuZF93cml0ZV9yZXN1bHQoZHJpdmVyX291
dHB1dC5pbWFnZSwgZXhwZWN0ZWRfZHJpdmVyX291dHB1dC5pbWFnZSkKKyAgICAgICAgICAgIHdy
aXRlci5jb3B5X2ZpbGUocG9ydC5leHBlY3RlZF9odG1sX2ZpbGVuYW1lKGZpbGVuYW1lKSwgJy1l
eHBlY3RlZC5odG1sJykKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKGZhaWx1cmUsIHRlc3RfZmFp
bHVyZXMuRmFpbHVyZVJlZnRlc3RNaXNtYXRjaERpZE5vdE9jY3VyKToKKyAgICAgICAgICAgIHdy
aXRlci53cml0ZV9pbWFnZV9maWxlcyhkcml2ZXJfb3V0cHV0LmltYWdlLCBleHBlY3RlZF9pbWFn
ZT1Ob25lKQorICAgICAgICAgICAgd3JpdGVyLmNvcHlfZmlsZShwb3J0LmV4cGVjdGVkX21pc21h
dGNoX2h0bWxfZmlsZW5hbWUoZmlsZW5hbWUpLCAnLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwnKQog
ICAgICAgICBlbHNlOgogICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZmFpbHVyZSwgKHRl
c3RfZmFpbHVyZXMuRmFpbHVyZVRpbWVvdXQsKSkKIApAQCAtMTkzLDMgKzIwMCwxMCBAQCBjbGFz
cyBUZXN0UmVzdWx0V3JpdGVyKG9iamVjdCk6CiAgICAgICAgICMgVG8gZG8gc28sIHdlIGhhdmUg
dG8gY2hhbmdlIHBvcnQuZGlmZl9pbWFnZSgpIGFzIHdlbGwuCiAgICAgICAgIGRpZmZfZmlsZW5h
bWUgPSBzZWxmLm91dHB1dF9maWxlbmFtZShzZWxmLkZJTEVOQU1FX1NVRkZJWF9JTUFHRV9ESUZG
KQogICAgICAgICByZXR1cm4gc2VsZi5fcG9ydC5kaWZmX2ltYWdlKGFjdHVhbF9pbWFnZSwgZXhw
ZWN0ZWRfaW1hZ2UsIGRpZmZfZmlsZW5hbWUpCisKKyAgICBkZWYgY29weV9maWxlKHNlbGYsIHNy
Y19maWxlcGF0aCwgZHN0X2V4dGVuc2lvbik6CisgICAgICAgIGZzID0gc2VsZi5fcG9ydC5fZmls
ZXN5c3RlbQorICAgICAgICBhc3NlcnQgZnMuZXhpc3RzKHNyY19maWxlcGF0aCksICdzcmNfZmls
ZXBhdGg6ICVzJyAlIHNyY19maWxlcGF0aAorICAgICAgICBkc3RfZmlsZW5hbWUgPSBzZWxmLm91
dHB1dF9maWxlbmFtZShkc3RfZXh0ZW5zaW9uKQorICAgICAgICBzZWxmLl9tYWtlX291dHB1dF9k
aXJlY3RvcnkoKQorICAgICAgICBmcy5jb3B5ZmlsZShzcmNfZmlsZXBhdGgsIGRzdF9maWxlbmFt
ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
YmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5w
eQppbmRleCAwYzI4ZDQ0MThkYzJiOThmMmQ0MzBkYTU4NGU1Y2IyMGMxMzExYTcyLi4xZmE3ODI4
MjNkYWI5MmQ1ZWMzY2RjZGJiYmZlZThjZDZhZjE3YWJlIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CkBAIC0zNDcsNiArMzQ3LDE1IEBA
IGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgdGV4dCA9IHNlbGYuX2ZpbGVzeXN0ZW0ucmVh
ZF9iaW5hcnlfZmlsZShwYXRoKQogICAgICAgICByZXR1cm4gdGV4dC5yZXBsYWNlKCJcclxuIiwg
IlxuIikKIAorICAgIGRlZiBleHBlY3RlZF9odG1sX2ZpbGVuYW1lKHNlbGYsIGZpbGVuYW1lKToK
KyAgICAgICAgIiIiUmV0dXJuIHRoZSBmaWxlbmFtZSBvZiByZWZlcmVuY2UgSFRNTCB3ZSBleHBl
Y3QgdGhlIHRlc3QgbWF0Y2hlcy4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuZXhwZWN0ZWRfZmls
ZW5hbWUoZmlsZW5hbWUsICcuaHRtbCcpCisKKyAgICBkZWYgZXhwZWN0ZWRfbWlzbWF0Y2hfaHRt
bF9maWxlbmFtZShzZWxmLCBmaWxlbmFtZSk6CisgICAgICAgICIiIlJldHVybiB0aGUgZmlsZW5h
bWUgb2YgcmVmZXJlbmNlIEhUTUwgd2UgZG9uJ3QgZXhwZWN0IHRoZSB0ZXN0CisgICAgICAgIG1h
dGNoZXMuIiIiCisgICAgICAgIHJldHVybiBzZWxmLmV4cGVjdGVkX2ZpbGVuYW1lKGZpbGVuYW1l
LCAnLW1pc21hdGNoLmh0bWwnKQorCiAgICAgZGVmIGZpbGVuYW1lX3RvX3VyaShzZWxmLCBmaWxl
bmFtZSk6CiAgICAgICAgICIiIkNvbnZlcnQgYSB0ZXN0IGZpbGUgKHdoaWNoIGlzIGFuIGFic29s
dXRlIHBhdGgpIHRvIGEgVVJJLiIiIgogICAgICAgICBMQVlPVVRURVNUX0hUVFBfRElSID0gImh0
dHAvdGVzdHMvIgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC90ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC90ZXN0LnB5CmluZGV4IGQzMjNlZDVlYWNhYWY5ZjE0NWI3NDFkM2M2OWE4ZGVhZTcxODJhN2Eu
LjVjM2QxNDgwZTIwNmE3OWY1MGJhODgxODQzNDM0NmY0OTdjYzNiM2EgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKQEAgLTUwLDYgKzUw
LDcgQEAgY2xhc3MgVGVzdEluc3RhbmNlOgogICAgICAgICBzZWxmLmtleWJvYXJkID0gRmFsc2UK
ICAgICAgICAgc2VsZi5lcnJvciA9ICcnCiAgICAgICAgIHNlbGYudGltZW91dCA9IEZhbHNlCisg
ICAgICAgIHNlbGYud2l0aG91dF9leHBlY3RhdGlvbl9maWxlcyA9IEZhbHNlCiAKICAgICAgICAg
IyBUaGUgdmFsdWVzIG9mIGVhY2ggZmllbGQgYXJlIHRyZWF0ZWQgYXMgcmF3IGJ5dGUgc3RyaW5n
cy4gVGhleQogICAgICAgICAjIHdpbGwgYmUgY29udmVydGVkIHRvIHVuaWNvZGUgc3RyaW5ncyB3
aGVyZSBhcHByb3ByaWF0ZSB1c2luZwpAQCAtNzgsNiArNzksMTMgQEAgY2xhc3MgVGVzdExpc3Q6
CiAgICAgICAgICAgICB0ZXN0Ll9fZGljdF9fW2tleV0gPSB2YWx1ZQogICAgICAgICBzZWxmLnRl
c3RzW25hbWVdID0gdGVzdAogCisgICAgZGVmIGFkZF9yZWZ0ZXN0KHNlbGYsIG5hbWUsIHJlZmVy
ZW5jZV9uYW1lLCBzYW1lX2ltYWdlKToKKyAgICAgICAgc2VsZi5hZGQobmFtZSwgYWN0dWFsX2No
ZWNrc3VtPSd4eHgnLCBhY3R1YWxfaW1hZ2U9J1hYWCcsIHdpdGhvdXRfZXhwZWN0YXRpb25fZmls
ZXM9VHJ1ZSkKKyAgICAgICAgaWYgc2FtZV9pbWFnZToKKyAgICAgICAgICAgIHNlbGYuYWRkKHJl
ZmVyZW5jZV9uYW1lLCBhY3R1YWxfY2hlY2tzdW09J3h4eCcsIGFjdHVhbF9pbWFnZT0nWFhYJywg
d2l0aG91dF9leHBlY3RhdGlvbl9maWxlcz1UcnVlKQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgc2VsZi5hZGQocmVmZXJlbmNlX25hbWUsIGFjdHVhbF9jaGVja3N1bT0neXl5JywgYWN0dWFs
X2ltYWdlPSdZWVknLCB3aXRob3V0X2V4cGVjdGF0aW9uX2ZpbGVzPVRydWUpCisKICAgICBkZWYg
a2V5cyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYudGVzdHMua2V5cygpCiAKQEAgLTEyOSw2
ICsxMzcsMTYgQEAgZGVmIHVuaXRfdGVzdF9saXN0KCk6CiAgICAgIyBoZWxwZnVsbHkgZmlsdGVy
ZWQgdG8gIlxyXHJcbiIgYnkgb3VyIFB5dGhvbi9DeWd3aW4gdG9vbGluZy4KICAgICB0ZXN0cy5h
ZGQoJ3Bhc3Nlcy90ZXh0Lmh0bWwnLAogICAgICAgICAgICAgICBleHBlY3RlZF90ZXh0PSdcbmZv
b1xuXG4nLCBhY3R1YWxfdGV4dD0nXG5mb29cclxuXHJcclxuJykKKworICAgICMgRm9yIHJlZnRl
c3RzLgorICAgIHRlc3RzLmFkZF9yZWZ0ZXN0KCdwYXNzZXMvcmVmdGVzdC5odG1sJywgJ3Bhc3Nl
cy9yZWZ0ZXN0LWV4cGVjdGVkLmh0bWwnLCBzYW1lX2ltYWdlPVRydWUpCisgICAgdGVzdHMuYWRk
X3JlZnRlc3QoJ3Bhc3Nlcy9taXNtYXRjaC5odG1sJywgJ3Bhc3Nlcy9taXNtYXRjaC1leHBlY3Rl
ZC1taXNtYXRjaC5odG1sJywgc2FtZV9pbWFnZT1GYWxzZSkKKyAgICB0ZXN0cy5hZGRfcmVmdGVz
dCgnZmFpbHVyZXMvZXhwZWN0ZWQvcmVmdGVzdC5odG1sJywgJ2ZhaWx1cmVzL2V4cGVjdGVkL3Jl
ZnRlc3QtZXhwZWN0ZWQuaHRtbCcsIHNhbWVfaW1hZ2U9RmFsc2UpCisgICAgdGVzdHMuYWRkX3Jl
ZnRlc3QoJ2ZhaWx1cmVzL2V4cGVjdGVkL21pc21hdGNoLmh0bWwnLCAnZmFpbHVyZXMvZXhwZWN0
ZWQvbWlzbWF0Y2gtZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbCcsIHNhbWVfaW1hZ2U9VHJ1ZSkKKyAg
ICB0ZXN0cy5hZGRfcmVmdGVzdCgnZmFpbHVyZXMvdW5leHBlY3RlZC9yZWZ0ZXN0Lmh0bWwnLCAn
ZmFpbHVyZXMvdW5leHBlY3RlZC9yZWZ0ZXN0LWV4cGVjdGVkLmh0bWwnLCBzYW1lX2ltYWdlPUZh
bHNlKQorICAgIHRlc3RzLmFkZF9yZWZ0ZXN0KCdmYWlsdXJlcy91bmV4cGVjdGVkL21pc21hdGNo
Lmh0bWwnLCAnZmFpbHVyZXMvdW5leHBlY3RlZC9taXNtYXRjaC1leHBlY3RlZC1taXNtYXRjaC5o
dG1sJywgc2FtZV9pbWFnZT1UcnVlKQorICAgICMgRklYTUU6IEFkZCBhIHJlZnRlc3Qgd2hpY2gg
Y3Jhc2hlcy4KKwogICAgIHRlc3RzLmFkZCgnd2Vic29ja2V0L3Rlc3RzL3Bhc3Nlcy90ZXh0Lmh0
bWwnKQogICAgIHJldHVybiB0ZXN0cwogCkBAIC0xNTgsNiArMTc2LDggQEAgZGVmIHVuaXRfdGVz
dF9maWxlc3lzdGVtKGZpbGVzPU5vbmUpOgogICAgICMgQWRkIGVhY2ggdGVzdCBhbmQgdGhlIGV4
cGVjdGVkIG91dHB1dCwgaWYgYW55LgogICAgIGZvciB0ZXN0IGluIHRlc3RfbGlzdC50ZXN0cy52
YWx1ZXMoKToKICAgICAgICAgYWRkX2ZpbGUoZmlsZXMsIHRlc3QsICcuaHRtbCcsICcnKQorICAg
ICAgICBpZiB0ZXN0LndpdGhvdXRfZXhwZWN0YXRpb25fZmlsZXM6CisgICAgICAgICAgICBjb250
aW51ZQogICAgICAgICBhZGRfZmlsZShmaWxlcywgdGVzdCwgJy1leHBlY3RlZC50eHQnLCB0ZXN0
LmV4cGVjdGVkX3RleHQpCiAgICAgICAgIGFkZF9maWxlKGZpbGVzLCB0ZXN0LCAnLWV4cGVjdGVk
LmNoZWNrc3VtJywgdGVzdC5leHBlY3RlZF9jaGVja3N1bSkKICAgICAgICAgYWRkX2ZpbGUoZmls
ZXMsIHRlc3QsICctZXhwZWN0ZWQucG5nJywgdGVzdC5leHBlY3RlZF9pbWFnZSkKQEAgLTE2OSwx
MiArMTg5LDE0IEBAIFdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sID0gQ1JB
U0gKIC8vIFRoaXMgb25lIGFjdHVhbGx5IHBhc3NlcyBiZWNhdXNlIHRoZSBjaGVja3N1bXMgd2ls
bCBtYXRjaC4KIFdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1sID0gUEFTUwog
V09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlX2NoZWNrc3VtLmh0bWwgPSBJTUFHRQor
V09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkL21pc21hdGNoLmh0bWwgPSBJTUFHRQogV09OVEZJ
WCA6IGZhaWx1cmVzL2V4cGVjdGVkL21pc3NpbmdfY2hlY2suaHRtbCA9IE1JU1NJTkcgUEFTUwog
V09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkL21pc3NpbmdfaW1hZ2UuaHRtbCA9IE1JU1NJTkcg
UEFTUwogV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkL21pc3NpbmdfdGV4dC5odG1sID0gTUlT
U0lORyBQQVNTCiBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvbmV3bGluZXNfbGVhZGluZy5o
dG1sID0gVEVYVAogV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkL25ld2xpbmVzX3RyYWlsaW5n
Lmh0bWwgPSBURVhUCiBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvbmV3bGluZXNfd2l0aF9l
eGNlc3NfQ1IuaHRtbCA9IFRFWFQKK1dPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC9yZWZ0ZXN0
Lmh0bWwgPSBJTUFHRQogV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRF
WFQKIFdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC90aW1lb3V0Lmh0bWwgPSBUSU1FT1VUCiBX
T05URklYIFNLSVAgOiBmYWlsdXJlcy9leHBlY3RlZC9oYW5nLmh0bWwgPSBUSU1FT1VUCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmls
ZXMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmls
ZXMucHkKaW5kZXggNTM0NDYyYTdlZTRhNjliOThjMjBkODM5NzY3Y2IyMDk1NTNlOGE3Ni4uZmJi
YmVhNTY1ODEyYTlkZmNlZjFkNmFjMTcwMGU5ZmUxNjRlZjcyYyAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlcy5weQpAQCAt
MTA1LDExICsxMDUsMTAgQEAgZGVmIF9oYXNfc3VwcG9ydGVkX2V4dGVuc2lvbihmaWxlc3lzdGVt
LCBmaWxlbmFtZSk6CiAgICAgcmV0dXJuIGV4dGVuc2lvbiBpbiBfc3VwcG9ydGVkX2ZpbGVfZXh0
ZW5zaW9ucwogCiAKLWRlZiBfaXNfcmVmZXJlbmNlX2h0bWxfZmlsZShmaWxlbmFtZSk6CitkZWYg
aXNfcmVmZXJlbmNlX2h0bWxfZmlsZShmaWxlbmFtZSk6CiAgICAgIiIiUmV0dXJuIHRydWUgaWYg
dGhlIGZpbGVuYW1lIHBvaW50cyB0byBhIHJlZmVyZW5jZSBIVE1MIGZpbGUuIiIiCiAgICAgaWYg
KGZpbGVuYW1lLmVuZHN3aXRoKCctZXhwZWN0ZWQuaHRtbCcpIG9yCiAgICAgICAgIGZpbGVuYW1l
LmVuZHN3aXRoKCctZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbCcpKToKLSAgICAgICAgX2xvZy53YXJu
KCJSZWZ0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZCAtIGlnbm9yaW5nICVzIiAlIGZpbGVuYW1lKQog
ICAgICAgICByZXR1cm4gVHJ1ZQogICAgIHJldHVybiBGYWxzZQogCkBAIC0xMTcsNCArMTE2LDQg
QEAgZGVmIF9pc19yZWZlcmVuY2VfaHRtbF9maWxlKGZpbGVuYW1lKToKIGRlZiBfaXNfdGVzdF9m
aWxlKGZpbGVzeXN0ZW0sIGRpcm5hbWUsIGZpbGVuYW1lKToKICAgICAiIiJSZXR1cm4gdHJ1ZSBp
ZiB0aGUgZmlsZW5hbWUgcG9pbnRzIHRvIGEgdGVzdCBmaWxlLiIiIgogICAgIHJldHVybiAoX2hh
c19zdXBwb3J0ZWRfZXh0ZW5zaW9uKGZpbGVzeXN0ZW0sIGZpbGVuYW1lKSBhbmQKLSAgICAgICAg
ICAgIG5vdCBfaXNfcmVmZXJlbmNlX2h0bWxfZmlsZShmaWxlbmFtZSkpCisgICAgICAgICAgICBu
b3QgaXNfcmVmZXJlbmNlX2h0bWxfZmlsZShmaWxlbmFtZSkpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191
bml0dGVzdC5weQppbmRleCBhZWEyNzg0NjllNDZjZGMzODE4YTVkNzY5NzA1YzA3Y2U4Mjc3ZmI2
Li4xZjdmODcxNTBiNmViMzJjZWJhOWFiMGQzOTg3OTJjYzdlNGRiMmQzIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0
ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJr
aXRfdGVzdHNfdW5pdHRlc3QucHkKQEAgLTU1LDYgKzU1LDcgQEAgZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMgaW1wb3J0IHBvcnQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBy
dW5fd2Via2l0X3Rlc3RzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2Fn
ZSBpbXBvcnQgZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLnBvcnQudGVzdCBpbXBvcnQgVGVzdFBvcnQsIFRlc3REcml2ZXIKK2Zyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLnBvcnQudGVzdF9maWxlcyBpbXBvcnQgaXNfcmVmZXJlbmNlX2h0bWxfZmls
ZQogZnJvbSB3ZWJraXRweS5weXRob24yNC52ZXJzaW9uaW5nIGltcG9ydCBjb21wYXJlX3ZlcnNp
b24KIGZyb20gd2Via2l0cHkudGVzdC5za2lwIGltcG9ydCBza2lwX2lmCiAKQEAgLTEyNCw3ICsx
MjUsOCBAQCBkZWYgcnVuX2FuZF9jYXB0dXJlKHBvcnRfb2JqLCBvcHRpb25zLCBwYXJzZWRfYXJn
cyk6CiAgICAgcmV0dXJuIChyZXMsIGJ1aWxkYm90X291dHB1dCwgcmVndWxhcl9vdXRwdXQpCiAK
IAotZGVmIGdldF90ZXN0c19ydW4oZXh0cmFfYXJncz1Ob25lLCB0ZXN0c19pbmNsdWRlZD1GYWxz
ZSwgZmxhdHRlbl9iYXRjaGVzPUZhbHNlLCBmaWxlc3lzdGVtPU5vbmUpOgorZGVmIGdldF90ZXN0
c19ydW4oZXh0cmFfYXJncz1Ob25lLCB0ZXN0c19pbmNsdWRlZD1GYWxzZSwgZmxhdHRlbl9iYXRj
aGVzPUZhbHNlLAorICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbT1Ob25lLCBpbmNsdWRlX3Jl
ZmVyZW5jZV9odG1sPUZhbHNlKToKICAgICBleHRyYV9hcmdzID0gZXh0cmFfYXJncyBvciBbXQog
ICAgIGlmIG5vdCB0ZXN0c19pbmNsdWRlZDoKICAgICAgICAgIyBOb3QgaW5jbHVkaW5nIGh0dHAg
dGVzdHMgc2luY2UgdGhleSBnZXQgcnVuIG91dCBvZiBvcmRlciAodGhhdApAQCAtMTM2LDYgKzEz
OCw3IEBAIGRlZiBnZXRfdGVzdHNfcnVuKGV4dHJhX2FyZ3M9Tm9uZSwgdGVzdHNfaW5jbHVkZWQ9
RmFsc2UsIGZsYXR0ZW5fYmF0Y2hlcz1GYWxzZSwKIAogICAgIHRlc3RfYmF0Y2hlcyA9IFtdCiAK
KwogICAgIGNsYXNzIFJlY29yZGluZ1Rlc3REcml2ZXIoVGVzdERyaXZlcik6CiAgICAgICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBwb3J0LCB3b3JrZXJfbnVtYmVyKToKICAgICAgICAgICAgIFRlc3RE
cml2ZXIuX19pbml0X18oc2VsZiwgcG9ydCwgd29ya2VyX251bWJlcikKQEAgLTE1Myw3ICsxNTYs
MTEgQEAgZGVmIGdldF90ZXN0c19ydW4oZXh0cmFfYXJncz1Ob25lLCB0ZXN0c19pbmNsdWRlZD1G
YWxzZSwgZmxhdHRlbl9iYXRjaGVzPUZhbHNlLAogICAgICAgICAgICAgICAgIHNlbGYuX2N1cnJl
bnRfdGVzdF9iYXRjaCA9IFtdCiAgICAgICAgICAgICAgICAgdGVzdF9iYXRjaGVzLmFwcGVuZChz
ZWxmLl9jdXJyZW50X3Rlc3RfYmF0Y2gpCiAgICAgICAgICAgICB0ZXN0X25hbWUgPSBzZWxmLl9w
b3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUodGVzdF9pbnB1dC5maWxlbmFtZSkKLSAgICAgICAg
ICAgIHNlbGYuX2N1cnJlbnRfdGVzdF9iYXRjaC5hcHBlbmQodGVzdF9uYW1lKQorICAgICAgICAg
ICAgIyBJbiBjYXNlIG9mIHJlZnRlc3QsIG9uZSB0ZXN0IGNhbGxzIHRoZSBkcml2ZXIncyBydW5f
dGVzdCgpIHR3aWNlLgorICAgICAgICAgICAgIyBXZSBzaG91bGQgbm90IGFkZCBhIHJlZmVyZW5j
ZSBodG1sIHVzZWQgYnkgcmVmdGVzdHMgdG8gdGVzdHMgdW5sZXNzIGluY2x1ZGVfcmVmZXJlbmNl
X2h0bWwgcGFyYW1ldGVyCisgICAgICAgICAgICAjIGlzIGV4cGxpY2l0bHkgZ2l2ZW4uCisgICAg
ICAgICAgICBpZiBpbmNsdWRlX3JlZmVyZW5jZV9odG1sIG9yIG5vdCBpc19yZWZlcmVuY2VfaHRt
bF9maWxlKHRlc3RfaW5wdXQuZmlsZW5hbWUpOgorICAgICAgICAgICAgICAgIHNlbGYuX2N1cnJl
bnRfdGVzdF9iYXRjaC5hcHBlbmQodGVzdF9uYW1lKQogICAgICAgICAgICAgcmV0dXJuIFRlc3RE
cml2ZXIucnVuX3Rlc3Qoc2VsZiwgdGVzdF9pbnB1dCkKIAogICAgIGNsYXNzIFJlY29yZGluZ1Rl
c3RQb3J0KFRlc3RQb3J0KToKQEAgLTM0Nyw3ICszNTQsOSBAQCBjbGFzcyBNYWluVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICMgUnVuIHRlc3RzIGluY2x1ZGluZyB0aGUgdW5leHBl
Y3RlZCBmYWlsdXJlcy4KICAgICAgICAgc2VsZi5fdXJsX29wZW5lZCA9IE5vbmUKICAgICAgICAg
cmVzLCBvdXQsIGVyciwgdXNlciA9IGxvZ2dpbmdfcnVuKHRlc3RzX2luY2x1ZGVkPVRydWUpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCAzKQorICAgICAgICAjIFVwZGF0ZSB0aGlzIG1h
Z2ljIG51bWJlciBpZiB5b3UgYWRkIGFuIHVuZXhwZWN0ZWQgdGVzdCB0byB3ZWJraXRweS5sYXlv
dXRfdGVzdHMucG9ydC50ZXN0CisgICAgICAgIHVuZXhwZWN0ZWRfdGVzdHNfY291bnQgPSA1Cisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCB1bmV4cGVjdGVkX3Rlc3RzX2NvdW50KQogICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKG91dC5lbXB0eSgpKQogICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKGVyci5lbXB0eSgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVzZXIub3BlbmVkX3Vy
bHMsIFsnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Jlc3VsdHMuaHRtbCddKQpAQCAtNTAwLDYg
KzUwOSwyNSBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxvZ2dpbmdfcnVuLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBbJy0td29ya2VyLW1vZGVsJywgJ3Vua25vd24nXSkKIAorICAgIGRlZiB0ZXN0
X3JlZnRlc3RfcnVuKHNlbGYpOgorICAgICAgICB0ZXN0c19ydW4gPSBnZXRfdGVzdHNfcnVuKFsn
cGFzc2VzL3JlZnRlc3QuaHRtbCddLCB0ZXN0c19pbmNsdWRlZD1UcnVlLCBmbGF0dGVuX2JhdGNo
ZXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWydwYXNzZXMvcmVmdGVzdC5odG1s
J10sIHRlc3RzX3J1bikKKworICAgIGRlZiB0ZXN0X3JlZnRlc3RfZXhwZWN0ZWRfaHRtbF9zaG91
bGRfYmVfaWdub3JlZChzZWxmKToKKyAgICAgICAgdGVzdHNfcnVuID0gZ2V0X3Rlc3RzX3J1bihb
J3Bhc3Nlcy9yZWZ0ZXN0LWV4cGVjdGVkLmh0bWwnXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmxh
dHRlbl9iYXRjaGVzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFtdLCB0ZXN0c19y
dW4pCisKKyAgICBkZWYgdGVzdF9yZWZ0ZXN0X2RyaXZlcl9zaG91bGRfcnVuX2V4cGVjdGVkX2h0
bWwoc2VsZik6CisgICAgICAgIHRlc3RzX3J1biA9IGdldF90ZXN0c19ydW4oWydwYXNzZXMvcmVm
dGVzdC5odG1sJ10sIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZsYXR0ZW5fYmF0Y2hlcz1UcnVlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfcmVmZXJlbmNlX2h0bWw9
VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWydwYXNzZXMvcmVmdGVzdC5odG1sJywg
J3Bhc3Nlcy9yZWZ0ZXN0LWV4cGVjdGVkLmh0bWwnXSwgdGVzdHNfcnVuKQorCisgICAgZGVmIHRl
c3RfcmVmdGVzdF9kcml2ZXJfc2hvdWxkX3J1bl9leHBlY3RlZF9taXNtYXRjaF9odG1sKHNlbGYp
OgorICAgICAgICB0ZXN0c19ydW4gPSBnZXRfdGVzdHNfcnVuKFsncGFzc2VzL21pc21hdGNoLmh0
bWwnXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmxhdHRlbl9iYXRjaGVzPVRydWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9yZWZlcmVuY2VfaHRtbD1UcnVlKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbJ3Bhc3Nlcy9taXNtYXRjaC5odG1sJywgJ3Bhc3Nl
cy9taXNtYXRjaC1leHBlY3RlZC1taXNtYXRjaC5odG1sJ10sIHRlc3RzX3J1bikKKworCiBNYWlu
VGVzdCA9IHNraXBfaWYoTWFpblRlc3QsIHN5cy5wbGF0Zm9ybSA9PSAnY3lnd2luJyBhbmQgY29t
cGFyZV92ZXJzaW9uKHN5cywgJzIuNicpWzBdIDwgMCwgJ25ldy1ydW4td2Via2l0LXRlc3RzIHRl
c3RzIGhhbmcgb24gQ3lnd2luIFB5dGhvbiAyLjUuMicpCiAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85147</attachid>
            <date>2011-03-09 01:59:15 -0800</date>
            <delta_ts>2011-03-09 22:53:02 -0800</delta_ts>
            <desc>update</desc>
            <filename>bug-55457-20110309185914.patch</filename>
            <type>text/plain</type>
            <size>24505</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODAyMTEKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxZjNmYThjYmFlODAzN2I3Y2I4OTg0YjZhOGIzZmYyNzlj
OGFkYmU5Li5mNTY5YTFlY2Q0ZDViYzMyY2E3YTVhMzRkNGUxYzAxOWU4YzI1OGIzIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDMtMDcgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtOUldUXSBBZGQgc3Vw
cG9ydCBmb3IgcmVmdGVzdHMgdG8gbmV3LXJ1bi13ZWJraXQtdGVzdHMuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1NDU3CisKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9zaW5nbGVfdGVzdF9y
dW5uZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvdGVzdF9mYWlsdXJlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXMucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVz
dC5weToKKwogMjAxMS0wMy0wMiAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9zaW5nbGVfdGVzdF9ydW5uZXIu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9z
aW5nbGVfdGVzdF9ydW5uZXIucHkKaW5kZXggMjM2MjNlY2QwYWQyNzkwZDM4MTg0MWU1Nzc2Zjlm
YTBhMGRhMGRjZi4uZTVkZDkxZTY5YTgzZWFmMzNmYjliZWZiMzRlMDMzZTIxZGNkZDMwOSAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2th
Z2Uvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90ZXN0X3J1bm5lci5weQpAQCAtNjMsNiAr
NjMsMzQgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcjoKICAgICAgICAgc2VsZi5fd29ya2VyX25h
bWUgPSB3b3JrZXJfbmFtZQogICAgICAgICBzZWxmLl90ZXN0bmFtZSA9IHBvcnQucmVsYXRpdmVf
dGVzdF9maWxlbmFtZSh0ZXN0X2lucHV0LmZpbGVuYW1lKQogCisgICAgICAgIHNlbGYuX2lzX3Jl
ZnRlc3QgPSBGYWxzZQorICAgICAgICBzZWxmLl9pc19taXNtYXRjaF9yZWZ0ZXN0ID0gRmFsc2UK
KyAgICAgICAgc2VsZi5fcmVmZXJlbmNlX2ZpbGVuYW1lID0gTm9uZQorCisgICAgICAgIGZzID0g
cG9ydC5fZmlsZXN5c3RlbQorICAgICAgICAjIEZJWE1FOiBEZXRlY3QgYW5kIHJlcG9ydCBhIHRl
c3Qgd2hpY2ggaGFzIGEgd3JvbmcgY29tYmluYXRpb24gb2YKKyAgICAgICAgIyBleHBlY3RhdGlv
biBmaWxlcy4gRm9yIGV4YW1wbGUsIGlmICdmb28uaHRtbCcgaGFzIHR3byBleHBlY3RhdGlvbiBm
aWxlcywKKyAgICAgICAgIyAnZm9vLWV4cGVjdGVkLmh0bWwnIGFuZCAnZm9vLWV4cGVjdGVkLnR4
dCcsIHdlIHNob3VsZCB3YXJuIHVzZXJzLgorICAgICAgICAjIE9uZSB0ZXN0IGZpbGUgbXVzdCBi
ZSB1c2VkIGV4Y2x1c2l2ZWx5IGluIGVpdGhlciBsYXlvdXQgdGVzdHMgb3IKKyAgICAgICAgIyBy
ZWZ0ZXN0cywgYnV0IG5vdCBpbiBib3RoLgorICAgICAgICByZWZ0ZXN0X2V4cGVjdGVkX2ZpbGVu
YW1lID0gcG9ydC5yZWZ0ZXN0X2V4cGVjdGVkX2ZpbGVuYW1lKHNlbGYuX2ZpbGVuYW1lKQorICAg
ICAgICBpZiBmcy5leGlzdHMocmVmdGVzdF9leHBlY3RlZF9maWxlbmFtZSk6CisgICAgICAgICAg
ICBzZWxmLl9pc19yZWZ0ZXN0ID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fcmVmZXJlbmNlX2Zp
bGVuYW1lID0gcmVmdGVzdF9leHBlY3RlZF9maWxlbmFtZQorCisgICAgICAgIHJlZnRlc3RfZXhw
ZWN0ZWRfbWlzbWF0Y2hfZmlsZW5hbWUgPSBwb3J0LnJlZnRlc3RfZXhwZWN0ZWRfbWlzbWF0Y2hf
ZmlsZW5hbWUoc2VsZi5fZmlsZW5hbWUpCisgICAgICAgIGlmIGZzLmV4aXN0cyhyZWZ0ZXN0X2V4
cGVjdGVkX21pc21hdGNoX2ZpbGVuYW1lKToKKyAgICAgICAgICAgIGlmIHNlbGYuX2lzX3JlZnRl
c3Q6CisgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignSXQgaXMgbm90IGFsbG93ZWQgdGhhdCBv
bmUgdGVzdCBmaWxlIGhhcyBib3RoJworICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBleHBl
Y3RlZC5odG1sIGZpbGUgYW5kIGV4cGVjdGVkLW1pc21hdGNoLmh0bWwgZmlsZScKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICcgYXQgdGhlIHNhbWUgdGltZS4gUGxlYXNlIHJlbW92ZSBlaXRo
ZXIgJXMgb3IgJXMuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnRlc3RfZXhwZWN0
ZWRfZmlsZW5hbWUsIHJlZnRlc3RfZXhwZWN0ZWRfbWlzbWF0Y2hfZmlsZW5hbWUpCisgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX2lzX3JlZnRlc3QgPSBUcnVlCisgICAg
ICAgICAgICAgICAgc2VsZi5faXNfbWlzbWF0Y2hfcmVmdGVzdCA9IFRydWUKKyAgICAgICAgICAg
ICAgICBzZWxmLl9yZWZlcmVuY2VfZmlsZW5hbWUgPSByZWZ0ZXN0X2V4cGVjdGVkX21pc21hdGNo
X2ZpbGVuYW1lCisKKwogICAgIGRlZiBfZXhwZWN0ZWRfZHJpdmVyX291dHB1dChzZWxmKToKICAg
ICAgICAgcmV0dXJuIEV4cGVjdGVkRHJpdmVyT3V0cHV0KHNlbGYuX3BvcnQuZXhwZWN0ZWRfdGV4
dChzZWxmLl9maWxlbmFtZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9wb3J0LmV4cGVjdGVkX2ltYWdlKHNlbGYuX2ZpbGVuYW1lKSwKQEAgLTg0LDcgKzExMiwx
MyBAQCBjbGFzcyBTaW5nbGVUZXN0UnVubmVyOgogCiAgICAgZGVmIHJ1bihzZWxmKToKICAgICAg
ICAgaWYgc2VsZi5fb3B0aW9ucy5uZXdfYmFzZWxpbmUgb3Igc2VsZi5fb3B0aW9ucy5yZXNldF9y
ZXN1bHRzOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl9yZWJhc2VsaW5lKCkKKyAgICAg
ICAgICAgIGlmIHNlbGYuX2lzX3JlZnRlc3Q6CisgICAgICAgICAgICAgICAgIyBSZXR1cm5zIGEg
ZHVtbXkgVGVzdFJlc3VsdC4gV2UgZG9uJ3QgaGF2ZSB0byByZWJhc2UgZm9yIHJlZnRlc3RzLgor
ICAgICAgICAgICAgICAgIHJldHVybiBUZXN0UmVzdWx0KHNlbGYuX2ZpbGVuYW1lKQorICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3JlYmFzZWxpbmUo
KQorICAgICAgICBpZiBzZWxmLl9pc19yZWZ0ZXN0OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYu
X3J1bl9yZWZ0ZXN0KCkKICAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl9jb21wYXJlX3Rlc3QoKQog
CiAgICAgZGVmIF9ydW5fY29tcGFyZV90ZXN0KHNlbGYpOgpAQCAtMTQ1LDE2ICsxNzksMjUgQEAg
Y2xhc3MgU2luZ2xlVGVzdFJ1bm5lcjoKIAogICAgICAgICBwb3J0LnVwZGF0ZV9iYXNlbGluZShv
dXRwdXRfcGF0aCwgZGF0YSkKIAotICAgIGRlZiBfaGFuZGxlX2Vycm9yKHNlbGYsIGRyaXZlcl9v
dXRwdXQpOgorICAgIGRlZiBfaGFuZGxlX2Vycm9yKHNlbGYsIGRyaXZlcl9vdXRwdXQsIHRlc3Rf
ZmlsZW5hbWU9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgdGVzdCBmYWlsdXJlcyBpZiBzb21l
IHVudXN1YWwgZXJyb3JzIGhhcHBlbiBpbiBkcml2ZXIncyBydW4uCisKKyAgICAgICAgQXJnczoK
KyAgICAgICAgICBkcml2ZXJfb3V0cHV0OiBUaGUgb3V0cHV0IGZyb20gdGhlIGRyaXZlci4KKyAg
ICAgICAgICB0ZXN0X2ZpbGVuYW1lOiBUaGUgZnVsbCBwYXRoIHRvIHRoZSBpbnB1dCBmaWxlIHdo
aWNoIHByb2R1Y2VkIHRoZSBkcml2ZXJfb3V0cHV0LgorICAgICAgICAgICAgICBUaGlzIGFyZyBp
cyBvcHRpb25hbCBhbmQgc2hvdWxkIGJlIHVzZWQgb25seSBpbiByZWZ0ZXN0cyB1bnRpbCB3ZSBo
YXZlIGEgYmV0dGVyIHdheSB0byBrbm93CisgICAgICAgICAgICAgIHdoaWNoIGh0bWwgZmlsZSBp
cyB1c2VkIGZvciBwcm9kdWNpbmcgdGhlIGRyaXZlcl9vdXRwdXQuCisgICAgICAgICIiIgogICAg
ICAgICBmYWlsdXJlcyA9IFtdCiAgICAgICAgIGZzID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbQog
ICAgICAgICBpZiBkcml2ZXJfb3V0cHV0LnRpbWVvdXQ6Ci0gICAgICAgICAgICBmYWlsdXJlcy5h
cHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlVGltZW91dCgpKQorICAgICAgICAgICAgZmFpbHVy
ZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZVRpbWVvdXQodGVzdF9maWxlbmFtZSkpCiAg
ICAgICAgIGlmIGRyaXZlcl9vdXRwdXQuY3Jhc2g6Ci0gICAgICAgICAgICBmYWlsdXJlcy5hcHBl
bmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlQ3Jhc2goKSkKKyAgICAgICAgICAgIGZhaWx1cmVzLmFw
cGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVDcmFzaCh0ZXN0X2ZpbGVuYW1lKSkKICAgICAgICAg
ICAgIF9sb2cuZGVidWcoIiVzIFN0YWNrdHJhY2UgZm9yICVzOlxuJXMiICUgKHNlbGYuX3dvcmtl
cl9uYW1lLCBzZWxmLl90ZXN0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRyaXZlcl9vdXRwdXQuZXJyb3IpKQogICAgICAgICAgICAg
IyBGSVhNRTogVXNlIHRlc3RfcmVzdWx0X3dyaXRlciBtb2R1bGUuCisgICAgICAgICAgICAjIEZJ
WE1FOiBNb3ZlIHRoaXMgYWN0dWFsIGZpbGUgd3JpdGluZyBjb2RlIHNvbWV3aGVyZSBzbyB0aGF0
IHRoaXMgZnVuY3Rpb24gZG9lc24ndCBoYXZlIGFueSBzaWRlIGVmZmVjdHMuCiAgICAgICAgICAg
ICBzdGFja19maWxlbmFtZSA9IGZzLmpvaW4oc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9y
eSwgc2VsZi5fdGVzdG5hbWUpCiAgICAgICAgICAgICBzdGFja19maWxlbmFtZSA9IGZzLnNwbGl0
ZXh0KHN0YWNrX2ZpbGVuYW1lKVswXSArICItc3RhY2sudHh0IgogICAgICAgICAgICAgZnMubWF5
YmVfbWFrZV9kaXJlY3RvcnkoZnMuZGlybmFtZShzdGFja19maWxlbmFtZSkpCkBAIC0yMTAsMyAr
MjUzLDMyIEBAIGNsYXNzIFNpbmdsZVRlc3RSdW5uZXI6CiAgICAgICAgIGVsaWYgZHJpdmVyX291
dHB1dC5pbWFnZV9oYXNoICE9IGV4cGVjdGVkX2RyaXZlcl9vdXRwdXRzLmltYWdlX2hhc2g6CiAg
ICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlSW1hZ2VIYXNo
TWlzbWF0Y2goKSkKICAgICAgICAgcmV0dXJuIGZhaWx1cmVzCisKKyAgICBkZWYgX3J1bl9yZWZ0
ZXN0KHNlbGYpOgorICAgICAgICBkcml2ZXJfb3V0cHV0MSA9IHNlbGYuX2RyaXZlci5ydW5fdGVz
dChzZWxmLl9kcml2ZXJfaW5wdXQoKSkKKyAgICAgICAgZHJpdmVyX291dHB1dDIgPSBzZWxmLl9k
cml2ZXIucnVuX3Rlc3QoCisgICAgICAgICAgICBiYXNlLkRyaXZlcklucHV0KHNlbGYuX3JlZmVy
ZW5jZV9maWxlbmFtZSwgc2VsZi5fdGltZW91dCwgZHJpdmVyX291dHB1dDEuaW1hZ2VfaGFzaCkp
CisgICAgICAgIHRlc3RfcmVzdWx0ID0gc2VsZi5fY29tcGFyZV9vdXRwdXRfd2l0aF9yZWZlcmVu
Y2UoZHJpdmVyX291dHB1dDEsIGRyaXZlcl9vdXRwdXQyKQorCisgICAgICAgIGV4cGVjdGVkX2Ry
aXZlcl9vdXRwdXQgPSBFeHBlY3RlZERyaXZlck91dHB1dChkcml2ZXJfb3V0cHV0Mi50ZXh0LCBk
cml2ZXJfb3V0cHV0Mi5pbWFnZSwgZHJpdmVyX291dHB1dDIuaW1hZ2VfaGFzaCkKKyAgICAgICAg
dGVzdF9yZXN1bHRfd3JpdGVyLndyaXRlX3Rlc3RfcmVzdWx0KHNlbGYuX3BvcnQsIHNlbGYuX29w
dGlvbnMucmVzdWx0c19kaXJlY3RvcnksIHNlbGYuX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyX291dHB1dDEsIGV4cGVjdGVkX2Ry
aXZlcl9vdXRwdXQsIHRlc3RfcmVzdWx0LmZhaWx1cmVzKQorICAgICAgICByZXR1cm4gdGVzdF9y
ZXN1bHQKKworICAgIGRlZiBfY29tcGFyZV9vdXRwdXRfd2l0aF9yZWZlcmVuY2Uoc2VsZiwgZHJp
dmVyX291dHB1dDEsIGRyaXZlcl9vdXRwdXQyKToKKyAgICAgICAgdG90YWxfdGVzdF90aW1lID0g
ZHJpdmVyX291dHB1dDEudGVzdF90aW1lICsgZHJpdmVyX291dHB1dDIudGVzdF90aW1lCisgICAg
ICAgIGZhaWx1cmVzID0gW10KKyAgICAgICAgZmFpbHVyZXMuZXh0ZW5kKHNlbGYuX2hhbmRsZV9l
cnJvcihkcml2ZXJfb3V0cHV0MSkpCisgICAgICAgIGlmIGRyaXZlcl9vdXRwdXQxLmNyYXNoOgor
ICAgICAgICAgICAgIyBEb24ndCBjb250aW51ZSBhbnkgbW9yZSBpZiB3ZSBhbHJlYWR5IGhhdmUg
YSBjcmFzaC4KKyAgICAgICAgICAgIHJldHVybiBUZXN0UmVzdWx0KHNlbGYuX2ZpbGVuYW1lLCBm
YWlsdXJlcywgdG90YWxfdGVzdF90aW1lKQorICAgICAgICBmYWlsdXJlcy5leHRlbmQoc2VsZi5f
aGFuZGxlX2Vycm9yKGRyaXZlcl9vdXRwdXQyLCB0ZXN0X2ZpbGVuYW1lPXNlbGYuX3JlZmVyZW5j
ZV9maWxlbmFtZSkpCisgICAgICAgIGlmIGRyaXZlcl9vdXRwdXQyLmNyYXNoOgorICAgICAgICAg
ICAgcmV0dXJuIFRlc3RSZXN1bHQoc2VsZi5fZmlsZW5hbWUsIGZhaWx1cmVzLCB0b3RhbF90ZXN0
X3RpbWUpCisKKyAgICAgICAgaWYgc2VsZi5faXNfbWlzbWF0Y2hfcmVmdGVzdDoKKyAgICAgICAg
ICAgIGlmIGRyaXZlcl9vdXRwdXQxLmltYWdlX2hhc2ggPT0gZHJpdmVyX291dHB1dDIuaW1hZ2Vf
aGFzaDoKKyAgICAgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWls
dXJlUmVmdGVzdE1pc21hdGNoRGlkTm90T2NjdXIoKSkKKyAgICAgICAgZWxpZiBkcml2ZXJfb3V0
cHV0MS5pbWFnZV9oYXNoICE9IGRyaXZlcl9vdXRwdXQyLmltYWdlX2hhc2g6CisgICAgICAgICAg
ICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlUmVmdGVzdE1pc21hdGNoKCkp
CisgICAgICAgIHJldHVybiBUZXN0UmVzdWx0KHNlbGYuX2ZpbGVuYW1lLCBmYWlsdXJlcywgdG90
YWxfdGVzdF90aW1lKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9mYWlsdXJlcy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXMucHkKaW5kZXgg
ZWI1OWQzNmEwODg2NTM3MjAyNDdlM2U5MjU5ZWZjZDJiZGI0YmFhZS4uNDk4YmU3NTVmMjYxODhl
NzgwY2I3MzI2MTA1MTQ4ZTI3ZTVkZGUyZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9mYWlsdXJlcy5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2Zh
aWx1cmVzLnB5CkBAIC02MCwxMSArNjAsMTMgQEAgZGVmIGRldGVybWluZV9yZXN1bHRfdHlwZShm
YWlsdXJlX2xpc3QpOgogICAgICAgICBpc190ZXh0X2ZhaWx1cmUgPSBGYWlsdXJlVGV4dE1pc21h
dGNoIGluIGZhaWx1cmVfdHlwZXMKICAgICAgICAgaXNfaW1hZ2VfZmFpbHVyZSA9IChGYWlsdXJl
SW1hZ2VIYXNoSW5jb3JyZWN0IGluIGZhaWx1cmVfdHlwZXMgb3IKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGYWlsdXJlSW1hZ2VIYXNoTWlzbWF0Y2ggaW4gZmFpbHVyZV90eXBlcykKKyAg
ICAgICAgaXNfcmVmdGVzdF9mYWlsdXJlID0gKEZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2ggaW4gZmFp
bHVyZV90eXBlcyBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFpbHVyZVJlZnRl
c3RNaXNtYXRjaERpZE5vdE9jY3VyIGluIGZhaWx1cmVfdHlwZXMpCiAgICAgICAgIGlmIGlzX3Rl
eHRfZmFpbHVyZSBhbmQgaXNfaW1hZ2VfZmFpbHVyZToKICAgICAgICAgICAgIHJldHVybiB0ZXN0
X2V4cGVjdGF0aW9ucy5JTUFHRV9QTFVTX1RFWFQKICAgICAgICAgZWxpZiBpc190ZXh0X2ZhaWx1
cmU6CiAgICAgICAgICAgICByZXR1cm4gdGVzdF9leHBlY3RhdGlvbnMuVEVYVAotICAgICAgICBl
bGlmIGlzX2ltYWdlX2ZhaWx1cmU6CisgICAgICAgIGVsaWYgaXNfaW1hZ2VfZmFpbHVyZSBvciBp
c19yZWZ0ZXN0X2ZhaWx1cmU6CiAgICAgICAgICAgICByZXR1cm4gdGVzdF9leHBlY3RhdGlvbnMu
SU1BR0UKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVuY2xh
c3NpZmlhYmxlIHNldCBvZiBmYWlsdXJlczogIgpAQCAtMTc3LDExICsxNzksMTcgQEAgY2xhc3Mg
RmFpbHVyZVRpbWVvdXQoVGVzdEZhaWx1cmUpOgogICAgICIiIlRlc3QgdGltZWQgb3V0LiAgV2Ug
YWxzbyB3YW50IHRvIHJlc3RhcnQgRHVtcFJlbmRlclRyZWUgaWYgdGhpcwogICAgIGhhcHBlbnMu
IiIiCiAKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdF9maWxlbmFtZT1Ob25lKToKKyAgICAg
ICAgc2VsZi50ZXN0X2ZpbGVuYW1lID0gdGVzdF9maWxlbmFtZQorCiAgICAgQHN0YXRpY21ldGhv
ZAogICAgIGRlZiBtZXNzYWdlKCk6CiAgICAgICAgIHJldHVybiAiVGVzdCB0aW1lZCBvdXQiCiAK
ICAgICBkZWYgcmVzdWx0X2h0bWxfb3V0cHV0KHNlbGYsIGZpbGVuYW1lKToKKyAgICAgICAgaWYg
c2VsZi50ZXN0X2ZpbGVuYW1lOgorICAgICAgICAgICAgcmV0dXJuICI8c3Ryb25nPiVzPC9zdHJv
bmc+IChvY2N1cmVkIGluIDxhIGhyZWY9JXM+ZXhwZWN0ZWQgaHRtbDwvYT4pIiAlICgKKyAgICAg
ICAgICAgICAgICBzZWxmLm1lc3NhZ2UoKSwgc2VsZi50ZXN0X2ZpbGVuYW1lKQogICAgICAgICBy
ZXR1cm4gIjxzdHJvbmc+JXM8L3N0cm9uZz4iICUgc2VsZi5tZXNzYWdlKCkKIAogICAgIGRlZiBz
aG91bGRfa2lsbF9kdW1wX3JlbmRlcl90cmVlKHNlbGYpOgpAQCAtMTkxLDYgKzE5OSw5IEBAIGNs
YXNzIEZhaWx1cmVUaW1lb3V0KFRlc3RGYWlsdXJlKToKIGNsYXNzIEZhaWx1cmVDcmFzaChUZXN0
RmFpbHVyZSk6CiAgICAgIiIiRHVtcFJlbmRlclRyZWUgY3Jhc2hlZC4iIiIKIAorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCB0ZXN0X2ZpbGVuYW1lPU5vbmUpOgorICAgICAgICBzZWxmLnRlc3RfZmls
ZW5hbWUgPSB0ZXN0X2ZpbGVuYW1lCisKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIG1lc3Nh
Z2UoKToKICAgICAgICAgcmV0dXJuICJEdW1wUmVuZGVyVHJlZSBjcmFzaGVkIgpAQCAtMTk4LDgg
KzIwOSwxMSBAQCBjbGFzcyBGYWlsdXJlQ3Jhc2goVGVzdEZhaWx1cmUpOgogICAgIGRlZiByZXN1
bHRfaHRtbF9vdXRwdXQoc2VsZiwgZmlsZW5hbWUpOgogICAgICAgICAjIEZJWE1FOiBjcmVhdGUg
YSBsaW5rIHRvIHRoZSBtaW5pZHVtcCBmaWxlCiAgICAgICAgIHN0YWNrID0gc2VsZi5yZWxhdGl2
ZV9vdXRwdXRfZmlsZW5hbWUoZmlsZW5hbWUsICItc3RhY2sudHh0IikKLSAgICAgICAgcmV0dXJu
ICI8c3Ryb25nPiVzPC9zdHJvbmc+IDxhIGhyZWY9JXM+c3RhY2s8L2E+IiAlIChzZWxmLm1lc3Nh
Z2UoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGFjaykKKyAgICAgICAgaWYgc2VsZi50ZXN0X2ZpbGVuYW1lOgorICAgICAg
ICAgICAgcmV0dXJuICI8c3Ryb25nPiVzPC9zdHJvbmc+IDxhIGhyZWY9JXM+c3RhY2s8L2E+IChv
Y2N1cmVkIGluIDxhIGhyZWY9JXM+ZXhwZWN0ZWQgaHRtbDwvYT4pIiAlICgKKyAgICAgICAgICAg
ICAgICBzZWxmLm1lc3NhZ2UoKSwgc3RhY2ssIHNlbGYudGVzdF9maWxlbmFtZSkKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIHJldHVybiAiPHN0cm9uZz4lczwvc3Ryb25nPiA8YSBocmVmPSVz
PnN0YWNrPC9hPiIgJSAoc2VsZi5tZXNzYWdlKCksIHN0YWNrKQogCiAgICAgZGVmIHNob3VsZF9r
aWxsX2R1bXBfcmVuZGVyX3RyZWUoc2VsZik6CiAgICAgICAgIHJldHVybiBUcnVlCkBAIC0yNzks
OSArMjkzLDQ4IEBAIGNsYXNzIEZhaWx1cmVJbWFnZUhhc2hJbmNvcnJlY3QoRmFpbHVyZVdpdGhU
eXBlKToKICAgICBkZWYgcmVzdWx0X2h0bWxfb3V0cHV0KHNlbGYsIGZpbGVuYW1lKToKICAgICAg
ICAgcmV0dXJuICI8c3Ryb25nPiVzPC9zdHJvbmc+IiAlIHNlbGYubWVzc2FnZSgpCiAKKworY2xh
c3MgRmFpbHVyZVJlZnRlc3RNaXNtYXRjaChGYWlsdXJlV2l0aFR5cGUpOgorICAgICIiIlRoZSBy
ZXN1bHQgZGlkbid0IG1hdGNoIHRoZSByZWZlcmVuY2UgcmVuZGVyaW5nLiIiIgorCisgICAgT1VU
X0ZJTEVOQU1FUyA9ICgiLWV4cGVjdGVkLmh0bWwiLCAiLWV4cGVjdGVkLnBuZyIsICItYWN0dWFs
LnBuZyIsCisgICAgICAgICAgICAgICAgICAgICAiLWRpZmYucG5nIiwpCisKKyAgICBAc3RhdGlj
bWV0aG9kCisgICAgZGVmIG1lc3NhZ2UoKToKKyAgICAgICAgcmV0dXJuICJNaXNtYXRjaCB3aXRo
IHJlZmVyZW5jZSIKKworICAgIGRlZiBvdXRwdXRfbGlua3Moc2VsZiwgZmlsZW5hbWUsIG91dF9u
YW1lcyk6CisgICAgICAgIGxpbmtzID0gWycnXQorICAgICAgICB1cmlzID0gW3NlbGYucmVsYXRp
dmVfb3V0cHV0X2ZpbGVuYW1lKGZpbGVuYW1lLCBvdXRwdXRfZmlsZW5hbWUpCisgICAgICAgICAg
ICAgICAgZm9yIG91dHB1dF9maWxlbmFtZSBpbiBvdXRfbmFtZXNdCisgICAgICAgIGZvciB0ZXh0
LCB1cmkgaW4gemlwKFsnLWV4cGVjdGVkLmh0bWwnLCAnZXhwZWN0ZWQnLCAnYWN0dWFsJywgJ2Rp
ZmYnXSwgdXJpcyk6CisgICAgICAgICAgICBsaW5rcy5hcHBlbmQoIjxhIGhyZWY9JyVzJz4lczwv
YT4iICUgKHVyaSwgdGV4dCkpCisgICAgICAgIHJldHVybiAnICcuam9pbihsaW5rcykKKworCitj
bGFzcyBGYWlsdXJlUmVmdGVzdE1pc21hdGNoRGlkTm90T2NjdXIoRmFpbHVyZVdpdGhUeXBlKToK
KyAgICAiIiJVbmV4cGVjdGVkIG1hdGNoIGJldHdlZW4gdGhlIHJlc3VsdCBhbmQgdGhlIHJlZmVy
ZW5jZSByZW5kZXJpbmcuIiIiCisKKyAgICBPVVRfRklMRU5BTUVTID0gKCItZXhwZWN0ZWQtbWlz
bWF0Y2guaHRtbCIsICItYWN0dWFsLnBuZyIsKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRl
ZiBtZXNzYWdlKCk6CisgICAgICAgIHJldHVybiAiTWlzbWF0Y2ggd2l0aCB0aGUgcmVmZXJlbmNl
IGRpZCBub3Qgb2NjdXIiCisKKyAgICBkZWYgb3V0cHV0X2xpbmtzKHNlbGYsIGZpbGVuYW1lLCBv
dXRfbmFtZXMpOgorICAgICAgICBsaW5rcyA9IFsnJ10KKyAgICAgICAgdXJpcyA9IFtzZWxmLnJl
bGF0aXZlX291dHB1dF9maWxlbmFtZShmaWxlbmFtZSwgb3V0cHV0X2ZpbGVuYW1lKQorICAgICAg
ICAgICAgICAgIGZvciBvdXRwdXRfZmlsZW5hbWUgaW4gb3V0X25hbWVzXQorICAgICAgICBmb3Ig
dGV4dCwgdXJpIGluIHppcChbJy1leHBlY3RlZC1taXNtYXRjaC5odG1sJywgJ2ltYWdlJ10sIHVy
aXMpOgorICAgICAgICAgICAgbGlua3MuYXBwZW5kKCI8YSBocmVmPSclcyc+JXM8L2E+IiAlICh1
cmksIHRleHQpKQorICAgICAgICByZXR1cm4gJyAnLmpvaW4obGlua3MpCisKKwogIyBDb252ZW5p
ZW50IGNvbGxlY3Rpb24gb2YgYWxsIGZhaWx1cmUgY2xhc3NlcyBmb3IgYW55dGhpbmcgdGhhdCBt
aWdodAogIyBuZWVkIHRvIGVudW1lcmF0ZSBvdmVyIHRoZW0gYWxsLgogQUxMX0ZBSUxVUkVfQ0xB
U1NFUyA9IChGYWlsdXJlVGltZW91dCwgRmFpbHVyZUNyYXNoLCBGYWlsdXJlTWlzc2luZ1Jlc3Vs
dCwKICAgICAgICAgICAgICAgICAgICAgICAgRmFpbHVyZVRleHRNaXNtYXRjaCwgRmFpbHVyZU1p
c3NpbmdJbWFnZUhhc2gsCiAgICAgICAgICAgICAgICAgICAgICAgIEZhaWx1cmVNaXNzaW5nSW1h
Z2UsIEZhaWx1cmVJbWFnZUhhc2hNaXNtYXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgRmFp
bHVyZUltYWdlSGFzaEluY29ycmVjdCkKKyAgICAgICAgICAgICAgICAgICAgICAgRmFpbHVyZUlt
YWdlSGFzaEluY29ycmVjdCwgRmFpbHVyZVJlZnRlc3RNaXNtYXRjaCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgRmFpbHVyZVJlZnRlc3RNaXNtYXRjaERpZE5vdE9jY3VyKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9y
ZXN1bHRfd3JpdGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRfd3JpdGVyLnB5CmluZGV4IDg4MmRhOTE3MjE2NzczZDRi
YTc0M2I3ZDNlN2QyNTNiZGIyMjM3YWQuLjgwOWNjMzMyYTgyNjgyNWFiNjNmZGJmMDU0Y2JjYWJl
MTIwYTg4YjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0X3dyaXRlci5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIu
cHkKQEAgLTY1LDYgKzY1LDEzIEBAIGRlZiB3cml0ZV90ZXN0X3Jlc3VsdChwb3J0LCByb290X291
dHB1dF9kaXIsIGZpbGVuYW1lLCBkcml2ZXJfb3V0cHV0LAogICAgICAgICAgICAgICAgIGltYWdl
aGFzaF9taXNtYXRjaF9mYWlsdXJlID0gZmFpbHVyZQogICAgICAgICBlbGlmIGlzaW5zdGFuY2Uo
ZmFpbHVyZSwgdGVzdF9mYWlsdXJlcy5GYWlsdXJlQ3Jhc2gpOgogICAgICAgICAgICAgd3JpdGVy
LndyaXRlX2NyYXNoX3JlcG9ydChkcml2ZXJfb3V0cHV0LmVycm9yKQorICAgICAgICBlbGlmIGlz
aW5zdGFuY2UoZmFpbHVyZSwgdGVzdF9mYWlsdXJlcy5GYWlsdXJlUmVmdGVzdE1pc21hdGNoKToK
KyAgICAgICAgICAgIHdyaXRlci53cml0ZV9pbWFnZV9maWxlcyhkcml2ZXJfb3V0cHV0LmltYWdl
LCBleHBlY3RlZF9kcml2ZXJfb3V0cHV0LmltYWdlKQorICAgICAgICAgICAgd3JpdGVyLmNyZWF0
ZV9pbWFnZV9kaWZmX2FuZF93cml0ZV9yZXN1bHQoZHJpdmVyX291dHB1dC5pbWFnZSwgZXhwZWN0
ZWRfZHJpdmVyX291dHB1dC5pbWFnZSkKKyAgICAgICAgICAgIHdyaXRlci5jb3B5X2ZpbGUocG9y
dC5yZWZ0ZXN0X2V4cGVjdGVkX2ZpbGVuYW1lKGZpbGVuYW1lKSwgJy1leHBlY3RlZC5odG1sJykK
KyAgICAgICAgZWxpZiBpc2luc3RhbmNlKGZhaWx1cmUsIHRlc3RfZmFpbHVyZXMuRmFpbHVyZVJl
ZnRlc3RNaXNtYXRjaERpZE5vdE9jY3VyKToKKyAgICAgICAgICAgIHdyaXRlci53cml0ZV9pbWFn
ZV9maWxlcyhkcml2ZXJfb3V0cHV0LmltYWdlLCBleHBlY3RlZF9pbWFnZT1Ob25lKQorICAgICAg
ICAgICAgd3JpdGVyLmNvcHlfZmlsZShwb3J0LnJlZnRlc3RfZXhwZWN0ZWRfbWlzbWF0Y2hfZmls
ZW5hbWUoZmlsZW5hbWUpLCAnLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwnKQogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZmFpbHVyZSwgKHRlc3RfZmFpbHVyZXMu
RmFpbHVyZVRpbWVvdXQsKSkKIApAQCAtMTkzLDMgKzIwMCwxMCBAQCBjbGFzcyBUZXN0UmVzdWx0
V3JpdGVyKG9iamVjdCk6CiAgICAgICAgICMgVG8gZG8gc28sIHdlIGhhdmUgdG8gY2hhbmdlIHBv
cnQuZGlmZl9pbWFnZSgpIGFzIHdlbGwuCiAgICAgICAgIGRpZmZfZmlsZW5hbWUgPSBzZWxmLm91
dHB1dF9maWxlbmFtZShzZWxmLkZJTEVOQU1FX1NVRkZJWF9JTUFHRV9ESUZGKQogICAgICAgICBy
ZXR1cm4gc2VsZi5fcG9ydC5kaWZmX2ltYWdlKGFjdHVhbF9pbWFnZSwgZXhwZWN0ZWRfaW1hZ2Us
IGRpZmZfZmlsZW5hbWUpCisKKyAgICBkZWYgY29weV9maWxlKHNlbGYsIHNyY19maWxlcGF0aCwg
ZHN0X2V4dGVuc2lvbik6CisgICAgICAgIGZzID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbQorICAg
ICAgICBhc3NlcnQgZnMuZXhpc3RzKHNyY19maWxlcGF0aCksICdzcmNfZmlsZXBhdGg6ICVzJyAl
IHNyY19maWxlcGF0aAorICAgICAgICBkc3RfZmlsZW5hbWUgPSBzZWxmLm91dHB1dF9maWxlbmFt
ZShkc3RfZXh0ZW5zaW9uKQorICAgICAgICBzZWxmLl9tYWtlX291dHB1dF9kaXJlY3RvcnkoKQor
ICAgICAgICBmcy5jb3B5ZmlsZShzcmNfZmlsZXBhdGgsIGRzdF9maWxlbmFtZSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRleCAwYzI4
ZDQ0MThkYzJiOThmMmQ0MzBkYTU4NGU1Y2IyMGMxMzExYTcyLi44MjY0NzM2YzY1NDcxNjU1MGY1
ZTFjNTg3ODAxZmNlNzc4YTE4OGI1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CkBAIC0zNDcsNiArMzQ3LDE0IEBAIGNsYXNzIFBvcnQo
b2JqZWN0KToKICAgICAgICAgdGV4dCA9IHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlfZmls
ZShwYXRoKQogICAgICAgICByZXR1cm4gdGV4dC5yZXBsYWNlKCJcclxuIiwgIlxuIikKIAorICAg
IGRlZiByZWZ0ZXN0X2V4cGVjdGVkX2ZpbGVuYW1lKHNlbGYsIGZpbGVuYW1lKToKKyAgICAgICAg
IiIiUmV0dXJuIHRoZSBmaWxlbmFtZSBvZiByZWZlcmVuY2Ugd2UgZXhwZWN0IHRoZSB0ZXN0IG1h
dGNoZXMuIiIiCisgICAgICAgIHJldHVybiBzZWxmLmV4cGVjdGVkX2ZpbGVuYW1lKGZpbGVuYW1l
LCAnLmh0bWwnKQorCisgICAgZGVmIHJlZnRlc3RfZXhwZWN0ZWRfbWlzbWF0Y2hfZmlsZW5hbWUo
c2VsZiwgZmlsZW5hbWUpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGZpbGVuYW1lIG9mIHJlZmVy
ZW5jZSB3ZSBkb24ndCBleHBlY3QgdGhlIHRlc3QgbWF0Y2hlcy4iIiIKKyAgICAgICAgcmV0dXJu
IHNlbGYuZXhwZWN0ZWRfZmlsZW5hbWUoZmlsZW5hbWUsICctbWlzbWF0Y2guaHRtbCcpCisKICAg
ICBkZWYgZmlsZW5hbWVfdG9fdXJpKHNlbGYsIGZpbGVuYW1lKToKICAgICAgICAgIiIiQ29udmVy
dCBhIHRlc3QgZmlsZSAod2hpY2ggaXMgYW4gYWJzb2x1dGUgcGF0aCkgdG8gYSBVUkkuIiIiCiAg
ICAgICAgIExBWU9VVFRFU1RfSFRUUF9ESVIgPSAiaHR0cC90ZXN0cy8iCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKaW5kZXggZDMyM2VkNWVh
Y2FhZjlmMTQ1Yjc0MWQzYzY5YThkZWFlNzE4MmE3YS4uNGFlYjhiYmViNjkxNGEyYWIwZWFjNGM4
YmNkNzZhYTEyZjRhYzg5YiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC90ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvdGVzdC5weQpAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBUZXN0SW5zdGFuY2U6
CiAgICAgICAgIHNlbGYua2V5Ym9hcmQgPSBGYWxzZQogICAgICAgICBzZWxmLmVycm9yID0gJycK
ICAgICAgICAgc2VsZi50aW1lb3V0ID0gRmFsc2UKKyAgICAgICAgc2VsZi5pc19yZWZ0ZXN0ID0g
RmFsc2UKIAogICAgICAgICAjIFRoZSB2YWx1ZXMgb2YgZWFjaCBmaWVsZCBhcmUgdHJlYXRlZCBh
cyByYXcgYnl0ZSBzdHJpbmdzLiBUaGV5CiAgICAgICAgICMgd2lsbCBiZSBjb252ZXJ0ZWQgdG8g
dW5pY29kZSBzdHJpbmdzIHdoZXJlIGFwcHJvcHJpYXRlIHVzaW5nCkBAIC03OCw2ICs3OSwxMyBA
QCBjbGFzcyBUZXN0TGlzdDoKICAgICAgICAgICAgIHRlc3QuX19kaWN0X19ba2V5XSA9IHZhbHVl
CiAgICAgICAgIHNlbGYudGVzdHNbbmFtZV0gPSB0ZXN0CiAKKyAgICBkZWYgYWRkX3JlZnRlc3Qo
c2VsZiwgbmFtZSwgcmVmZXJlbmNlX25hbWUsIHNhbWVfaW1hZ2UpOgorICAgICAgICBzZWxmLmFk
ZChuYW1lLCBhY3R1YWxfY2hlY2tzdW09J3h4eCcsIGFjdHVhbF9pbWFnZT0nWFhYJywgaXNfcmVm
dGVzdD1UcnVlKQorICAgICAgICBpZiBzYW1lX2ltYWdlOgorICAgICAgICAgICAgc2VsZi5hZGQo
cmVmZXJlbmNlX25hbWUsIGFjdHVhbF9jaGVja3N1bT0neHh4JywgYWN0dWFsX2ltYWdlPSdYWFgn
LCBpc19yZWZ0ZXN0PVRydWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFkZChy
ZWZlcmVuY2VfbmFtZSwgYWN0dWFsX2NoZWNrc3VtPSd5eXknLCBhY3R1YWxfaW1hZ2U9J1lZWScs
IGlzX3JlZnRlc3Q9VHJ1ZSkKKwogICAgIGRlZiBrZXlzKHNlbGYpOgogICAgICAgICByZXR1cm4g
c2VsZi50ZXN0cy5rZXlzKCkKIApAQCAtMTI5LDYgKzEzNywxNiBAQCBkZWYgdW5pdF90ZXN0X2xp
c3QoKToKICAgICAjIGhlbHBmdWxseSBmaWx0ZXJlZCB0byAiXHJcclxuIiBieSBvdXIgUHl0aG9u
L0N5Z3dpbiB0b29saW5nLgogICAgIHRlc3RzLmFkZCgncGFzc2VzL3RleHQuaHRtbCcsCiAgICAg
ICAgICAgICAgIGV4cGVjdGVkX3RleHQ9J1xuZm9vXG5cbicsIGFjdHVhbF90ZXh0PSdcbmZvb1xy
XG5cclxyXG4nKQorCisgICAgIyBGb3IgcmVmdGVzdHMuCisgICAgdGVzdHMuYWRkX3JlZnRlc3Qo
J3Bhc3Nlcy9yZWZ0ZXN0Lmh0bWwnLCAncGFzc2VzL3JlZnRlc3QtZXhwZWN0ZWQuaHRtbCcsIHNh
bWVfaW1hZ2U9VHJ1ZSkKKyAgICB0ZXN0cy5hZGRfcmVmdGVzdCgncGFzc2VzL21pc21hdGNoLmh0
bWwnLCAncGFzc2VzL21pc21hdGNoLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwnLCBzYW1lX2ltYWdl
PUZhbHNlKQorICAgIHRlc3RzLmFkZF9yZWZ0ZXN0KCdmYWlsdXJlcy9leHBlY3RlZC9yZWZ0ZXN0
Lmh0bWwnLCAnZmFpbHVyZXMvZXhwZWN0ZWQvcmVmdGVzdC1leHBlY3RlZC5odG1sJywgc2FtZV9p
bWFnZT1GYWxzZSkKKyAgICB0ZXN0cy5hZGRfcmVmdGVzdCgnZmFpbHVyZXMvZXhwZWN0ZWQvbWlz
bWF0Y2guaHRtbCcsICdmYWlsdXJlcy9leHBlY3RlZC9taXNtYXRjaC1leHBlY3RlZC1taXNtYXRj
aC5odG1sJywgc2FtZV9pbWFnZT1UcnVlKQorICAgIHRlc3RzLmFkZF9yZWZ0ZXN0KCdmYWlsdXJl
cy91bmV4cGVjdGVkL3JlZnRlc3QuaHRtbCcsICdmYWlsdXJlcy91bmV4cGVjdGVkL3JlZnRlc3Qt
ZXhwZWN0ZWQuaHRtbCcsIHNhbWVfaW1hZ2U9RmFsc2UpCisgICAgdGVzdHMuYWRkX3JlZnRlc3Qo
J2ZhaWx1cmVzL3VuZXhwZWN0ZWQvbWlzbWF0Y2guaHRtbCcsICdmYWlsdXJlcy91bmV4cGVjdGVk
L21pc21hdGNoLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwnLCBzYW1lX2ltYWdlPVRydWUpCisgICAg
IyBGSVhNRTogQWRkIGEgcmVmdGVzdCB3aGljaCBjcmFzaGVzLgorCiAgICAgdGVzdHMuYWRkKCd3
ZWJzb2NrZXQvdGVzdHMvcGFzc2VzL3RleHQuaHRtbCcpCiAgICAgcmV0dXJuIHRlc3RzCiAKQEAg
LTE1OCw2ICsxNzYsOCBAQCBkZWYgdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oZmlsZXM9Tm9uZSk6CiAg
ICAgIyBBZGQgZWFjaCB0ZXN0IGFuZCB0aGUgZXhwZWN0ZWQgb3V0cHV0LCBpZiBhbnkuCiAgICAg
Zm9yIHRlc3QgaW4gdGVzdF9saXN0LnRlc3RzLnZhbHVlcygpOgogICAgICAgICBhZGRfZmlsZShm
aWxlcywgdGVzdCwgJy5odG1sJywgJycpCisgICAgICAgIGlmIHRlc3QuaXNfcmVmdGVzdDoKKyAg
ICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIGFkZF9maWxlKGZpbGVzLCB0ZXN0LCAnLWV4cGVj
dGVkLnR4dCcsIHRlc3QuZXhwZWN0ZWRfdGV4dCkKICAgICAgICAgYWRkX2ZpbGUoZmlsZXMsIHRl
c3QsICctZXhwZWN0ZWQuY2hlY2tzdW0nLCB0ZXN0LmV4cGVjdGVkX2NoZWNrc3VtKQogICAgICAg
ICBhZGRfZmlsZShmaWxlcywgdGVzdCwgJy1leHBlY3RlZC5wbmcnLCB0ZXN0LmV4cGVjdGVkX2lt
YWdlKQpAQCAtMTY5LDEyICsxODksMTQgQEAgV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkL2Ny
YXNoLmh0bWwgPSBDUkFTSAogLy8gVGhpcyBvbmUgYWN0dWFsbHkgcGFzc2VzIGJlY2F1c2UgdGhl
IGNoZWNrc3VtcyB3aWxsIG1hdGNoLgogV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkL2ltYWdl
Lmh0bWwgPSBQQVNTCiBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2VfY2hlY2tzdW0u
aHRtbCA9IElNQUdFCitXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvbWlzbWF0Y2guaHRtbCA9
IElNQUdFCiBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ19jaGVjay5odG1sID0g
TUlTU0lORyBQQVNTCiBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ19pbWFnZS5o
dG1sID0gTUlTU0lORyBQQVNTCiBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ190
ZXh0Lmh0bWwgPSBNSVNTSU5HIFBBU1MKIFdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC9uZXds
aW5lc19sZWFkaW5nLmh0bWwgPSBURVhUCiBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvbmV3
bGluZXNfdHJhaWxpbmcuaHRtbCA9IFRFWFQKIFdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC9u
ZXdsaW5lc193aXRoX2V4Y2Vzc19DUi5odG1sID0gVEVYVAorV09OVEZJWCA6IGZhaWx1cmVzL2V4
cGVjdGVkL3JlZnRlc3QuaHRtbCA9IElNQUdFCiBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQv
dGV4dC5odG1sID0gVEVYVAogV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkL3RpbWVvdXQuaHRt
bCA9IFRJTUVPVVQKIFdPTlRGSVggU0tJUCA6IGZhaWx1cmVzL2V4cGVjdGVkL2hhbmcuaHRtbCA9
IFRJTUVPVVQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvdGVzdF9maWxlcy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvdGVzdF9maWxlcy5weQppbmRleCA1MzQ0NjJhN2VlNGE2OWI5OGMyMGQ4Mzk3NjdjYjIw
OTU1M2U4YTc2Li5mYmJiZWE1NjU4MTJhOWRmY2VmMWQ2YWMxNzAwZTlmZTE2NGVmNzJjIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmls
ZXMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0
X2ZpbGVzLnB5CkBAIC0xMDUsMTEgKzEwNSwxMCBAQCBkZWYgX2hhc19zdXBwb3J0ZWRfZXh0ZW5z
aW9uKGZpbGVzeXN0ZW0sIGZpbGVuYW1lKToKICAgICByZXR1cm4gZXh0ZW5zaW9uIGluIF9zdXBw
b3J0ZWRfZmlsZV9leHRlbnNpb25zCiAKIAotZGVmIF9pc19yZWZlcmVuY2VfaHRtbF9maWxlKGZp
bGVuYW1lKToKK2RlZiBpc19yZWZlcmVuY2VfaHRtbF9maWxlKGZpbGVuYW1lKToKICAgICAiIiJS
ZXR1cm4gdHJ1ZSBpZiB0aGUgZmlsZW5hbWUgcG9pbnRzIHRvIGEgcmVmZXJlbmNlIEhUTUwgZmls
ZS4iIiIKICAgICBpZiAoZmlsZW5hbWUuZW5kc3dpdGgoJy1leHBlY3RlZC5odG1sJykgb3IKICAg
ICAgICAgZmlsZW5hbWUuZW5kc3dpdGgoJy1leHBlY3RlZC1taXNtYXRjaC5odG1sJykpOgotICAg
ICAgICBfbG9nLndhcm4oIlJlZnRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkIC0gaWdub3JpbmcgJXMi
ICUgZmlsZW5hbWUpCiAgICAgICAgIHJldHVybiBUcnVlCiAgICAgcmV0dXJuIEZhbHNlCiAKQEAg
LTExNyw0ICsxMTYsNCBAQCBkZWYgX2lzX3JlZmVyZW5jZV9odG1sX2ZpbGUoZmlsZW5hbWUpOgog
ZGVmIF9pc190ZXN0X2ZpbGUoZmlsZXN5c3RlbSwgZGlybmFtZSwgZmlsZW5hbWUpOgogICAgICIi
IlJldHVybiB0cnVlIGlmIHRoZSBmaWxlbmFtZSBwb2ludHMgdG8gYSB0ZXN0IGZpbGUuIiIiCiAg
ICAgcmV0dXJuIChfaGFzX3N1cHBvcnRlZF9leHRlbnNpb24oZmlsZXN5c3RlbSwgZmlsZW5hbWUp
IGFuZAotICAgICAgICAgICAgbm90IF9pc19yZWZlcmVuY2VfaHRtbF9maWxlKGZpbGVuYW1lKSkK
KyAgICAgICAgICAgIG5vdCBpc19yZWZlcmVuY2VfaHRtbF9maWxlKGZpbGVuYW1lKSkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5f
d2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CmluZGV4IGFlYTI3ODQ2OWU0NmNkYzM4MThhNWQ3Njk3
MDVjMDdjZTgyNzdmYjYuLjFmN2Y4NzE1MGI2ZWIzMmNlYmE5YWIwZDM5ODc5MmNjN2U0ZGIyZDMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJr
aXRfdGVzdHNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQpAQCAtNTUsNiArNTUsNyBAQCBmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcG9ydAogZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMgaW1wb3J0IHJ1bl93ZWJraXRfdGVzdHMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
LmxheW91dF9wYWNrYWdlIGltcG9ydCBkdW1wX3JlbmRlcl90cmVlX3RocmVhZAogZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMucG9ydC50ZXN0IGltcG9ydCBUZXN0UG9ydCwgVGVzdERyaXZlcgor
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC50ZXN0X2ZpbGVzIGltcG9ydCBpc19yZWZl
cmVuY2VfaHRtbF9maWxlCiBmcm9tIHdlYmtpdHB5LnB5dGhvbjI0LnZlcnNpb25pbmcgaW1wb3J0
IGNvbXBhcmVfdmVyc2lvbgogZnJvbSB3ZWJraXRweS50ZXN0LnNraXAgaW1wb3J0IHNraXBfaWYK
IApAQCAtMTI0LDcgKzEyNSw4IEBAIGRlZiBydW5fYW5kX2NhcHR1cmUocG9ydF9vYmosIG9wdGlv
bnMsIHBhcnNlZF9hcmdzKToKICAgICByZXR1cm4gKHJlcywgYnVpbGRib3Rfb3V0cHV0LCByZWd1
bGFyX291dHB1dCkKIAogCi1kZWYgZ2V0X3Rlc3RzX3J1bihleHRyYV9hcmdzPU5vbmUsIHRlc3Rz
X2luY2x1ZGVkPUZhbHNlLCBmbGF0dGVuX2JhdGNoZXM9RmFsc2UsIGZpbGVzeXN0ZW09Tm9uZSk6
CitkZWYgZ2V0X3Rlc3RzX3J1bihleHRyYV9hcmdzPU5vbmUsIHRlc3RzX2luY2x1ZGVkPUZhbHNl
LCBmbGF0dGVuX2JhdGNoZXM9RmFsc2UsCisgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtPU5v
bmUsIGluY2x1ZGVfcmVmZXJlbmNlX2h0bWw9RmFsc2UpOgogICAgIGV4dHJhX2FyZ3MgPSBleHRy
YV9hcmdzIG9yIFtdCiAgICAgaWYgbm90IHRlc3RzX2luY2x1ZGVkOgogICAgICAgICAjIE5vdCBp
bmNsdWRpbmcgaHR0cCB0ZXN0cyBzaW5jZSB0aGV5IGdldCBydW4gb3V0IG9mIG9yZGVyICh0aGF0
CkBAIC0xMzYsNiArMTM4LDcgQEAgZGVmIGdldF90ZXN0c19ydW4oZXh0cmFfYXJncz1Ob25lLCB0
ZXN0c19pbmNsdWRlZD1GYWxzZSwgZmxhdHRlbl9iYXRjaGVzPUZhbHNlLAogCiAgICAgdGVzdF9i
YXRjaGVzID0gW10KIAorCiAgICAgY2xhc3MgUmVjb3JkaW5nVGVzdERyaXZlcihUZXN0RHJpdmVy
KToKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIHdvcmtlcl9udW1iZXIpOgogICAg
ICAgICAgICAgVGVzdERyaXZlci5fX2luaXRfXyhzZWxmLCBwb3J0LCB3b3JrZXJfbnVtYmVyKQpA
QCAtMTUzLDcgKzE1NiwxMSBAQCBkZWYgZ2V0X3Rlc3RzX3J1bihleHRyYV9hcmdzPU5vbmUsIHRl
c3RzX2luY2x1ZGVkPUZhbHNlLCBmbGF0dGVuX2JhdGNoZXM9RmFsc2UsCiAgICAgICAgICAgICAg
ICAgc2VsZi5fY3VycmVudF90ZXN0X2JhdGNoID0gW10KICAgICAgICAgICAgICAgICB0ZXN0X2Jh
dGNoZXMuYXBwZW5kKHNlbGYuX2N1cnJlbnRfdGVzdF9iYXRjaCkKICAgICAgICAgICAgIHRlc3Rf
bmFtZSA9IHNlbGYuX3BvcnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZSh0ZXN0X2lucHV0LmZpbGVu
YW1lKQotICAgICAgICAgICAgc2VsZi5fY3VycmVudF90ZXN0X2JhdGNoLmFwcGVuZCh0ZXN0X25h
bWUpCisgICAgICAgICAgICAjIEluIGNhc2Ugb2YgcmVmdGVzdCwgb25lIHRlc3QgY2FsbHMgdGhl
IGRyaXZlcidzIHJ1bl90ZXN0KCkgdHdpY2UuCisgICAgICAgICAgICAjIFdlIHNob3VsZCBub3Qg
YWRkIGEgcmVmZXJlbmNlIGh0bWwgdXNlZCBieSByZWZ0ZXN0cyB0byB0ZXN0cyB1bmxlc3MgaW5j
bHVkZV9yZWZlcmVuY2VfaHRtbCBwYXJhbWV0ZXIKKyAgICAgICAgICAgICMgaXMgZXhwbGljaXRs
eSBnaXZlbi4KKyAgICAgICAgICAgIGlmIGluY2x1ZGVfcmVmZXJlbmNlX2h0bWwgb3Igbm90IGlz
X3JlZmVyZW5jZV9odG1sX2ZpbGUodGVzdF9pbnB1dC5maWxlbmFtZSk6CisgICAgICAgICAgICAg
ICAgc2VsZi5fY3VycmVudF90ZXN0X2JhdGNoLmFwcGVuZCh0ZXN0X25hbWUpCiAgICAgICAgICAg
ICByZXR1cm4gVGVzdERyaXZlci5ydW5fdGVzdChzZWxmLCB0ZXN0X2lucHV0KQogCiAgICAgY2xh
c3MgUmVjb3JkaW5nVGVzdFBvcnQoVGVzdFBvcnQpOgpAQCAtMzQ3LDcgKzM1NCw5IEBAIGNsYXNz
IE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgIyBSdW4gdGVzdHMgaW5jbHVk
aW5nIHRoZSB1bmV4cGVjdGVkIGZhaWx1cmVzLgogICAgICAgICBzZWxmLl91cmxfb3BlbmVkID0g
Tm9uZQogICAgICAgICByZXMsIG91dCwgZXJyLCB1c2VyID0gbG9nZ2luZ19ydW4odGVzdHNfaW5j
bHVkZWQ9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIDMpCisgICAgICAgICMg
VXBkYXRlIHRoaXMgbWFnaWMgbnVtYmVyIGlmIHlvdSBhZGQgYW4gdW5leHBlY3RlZCB0ZXN0IHRv
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LnRlc3QKKyAgICAgICAgdW5leHBlY3RlZF90ZXN0
c19jb3VudCA9IDUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIHVuZXhwZWN0ZWRfdGVz
dHNfY291bnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3V0LmVtcHR5KCkpCiAgICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UoZXJyLmVtcHR5KCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
dXNlci5vcGVuZWRfdXJscywgWycvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcmVzdWx0cy5odG1s
J10pCkBAIC01MDAsNiArNTA5LDI1IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9nZ2luZ19ydW4sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsnLS13b3JrZXItbW9kZWwnLCAndW5rbm93biddKQog
CisgICAgZGVmIHRlc3RfcmVmdGVzdF9ydW4oc2VsZik6CisgICAgICAgIHRlc3RzX3J1biA9IGdl
dF90ZXN0c19ydW4oWydwYXNzZXMvcmVmdGVzdC5odG1sJ10sIHRlc3RzX2luY2x1ZGVkPVRydWUs
IGZsYXR0ZW5fYmF0Y2hlcz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbJ3Bhc3Nl
cy9yZWZ0ZXN0Lmh0bWwnXSwgdGVzdHNfcnVuKQorCisgICAgZGVmIHRlc3RfcmVmdGVzdF9leHBl
Y3RlZF9odG1sX3Nob3VsZF9iZV9pZ25vcmVkKHNlbGYpOgorICAgICAgICB0ZXN0c19ydW4gPSBn
ZXRfdGVzdHNfcnVuKFsncGFzc2VzL3JlZnRlc3QtZXhwZWN0ZWQuaHRtbCddLCB0ZXN0c19pbmNs
dWRlZD1UcnVlLCBmbGF0dGVuX2JhdGNoZXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoW10sIHRlc3RzX3J1bikKKworICAgIGRlZiB0ZXN0X3JlZnRlc3RfZHJpdmVyX3Nob3VsZF9y
dW5fZXhwZWN0ZWRfaHRtbChzZWxmKToKKyAgICAgICAgdGVzdHNfcnVuID0gZ2V0X3Rlc3RzX3J1
bihbJ3Bhc3Nlcy9yZWZ0ZXN0Lmh0bWwnXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmxhdHRlbl9i
YXRjaGVzPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9y
ZWZlcmVuY2VfaHRtbD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbJ3Bhc3Nlcy9y
ZWZ0ZXN0Lmh0bWwnLCAncGFzc2VzL3JlZnRlc3QtZXhwZWN0ZWQuaHRtbCddLCB0ZXN0c19ydW4p
CisKKyAgICBkZWYgdGVzdF9yZWZ0ZXN0X2RyaXZlcl9zaG91bGRfcnVuX2V4cGVjdGVkX21pc21h
dGNoX2h0bWwoc2VsZik6CisgICAgICAgIHRlc3RzX3J1biA9IGdldF90ZXN0c19ydW4oWydwYXNz
ZXMvbWlzbWF0Y2guaHRtbCddLCB0ZXN0c19pbmNsdWRlZD1UcnVlLCBmbGF0dGVuX2JhdGNoZXM9
VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX3JlZmVyZW5j
ZV9odG1sPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsncGFzc2VzL21pc21hdGNo
Lmh0bWwnLCAncGFzc2VzL21pc21hdGNoLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwnXSwgdGVzdHNf
cnVuKQorCisKIE1haW5UZXN0ID0gc2tpcF9pZihNYWluVGVzdCwgc3lzLnBsYXRmb3JtID09ICdj
eWd3aW4nIGFuZCBjb21wYXJlX3ZlcnNpb24oc3lzLCAnMi42JylbMF0gPCAwLCAnbmV3LXJ1bi13
ZWJraXQtdGVzdHMgdGVzdHMgaGFuZyBvbiBDeWd3aW4gUHl0aG9uIDIuNS4yJykKIAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85285</attachid>
            <date>2011-03-09 22:53:07 -0800</date>
            <delta_ts>2011-03-14 19:28:10 -0700</delta_ts>
            <desc>update2</desc>
            <filename>bug-55457-20110310155305.patch</filename>
            <type>text/plain</type>
            <size>27226</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA2OTAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwMTJjMDY2ODMwNTc2MTdmNDM2ODMzNTE5MmViMWMwN2M1
ZTYzN2EwLi43OGU1YTNhYzE1Y2EyNzEwYmIwY2M5ODYyYWQyMDcxZDM5MDdmYWJhIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDMtMDcgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtOUldUXSBBZGQgc3Vw
cG9ydCBmb3IgcmVmdGVzdHMgdG8gbmV3LXJ1bi13ZWJraXQtdGVzdHMuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1NDU3CisKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9zaW5nbGVfdGVzdF9y
dW5uZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvdGVzdF9mYWlsdXJlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXMucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVz
dC5weToKKwogMjAxMS0wMy0wOSAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgSGlkZSBMZWFrcyBWaWV3ZXIncyBVUkwgcHJvbXB0IGJ5IGRlZmF1bHQKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Np
bmdsZV90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2xheW91dF9wYWNrYWdlL3NpbmdsZV90ZXN0X3J1bm5lci5weQppbmRleCBkNzU1ZjY3ODdhNTEz
ODU4ZWYyNDZiOTVhODU2YWZlYzY2MmYzZmVjLi4xOTRjYzg5MDkxM2RmMDMxNDk2YmY2ZGNjNTEy
ODU4NTNiZGRkMTMxIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS9zaW5nbGVfdGVzdF9ydW5uZXIucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3RfcnVu
bmVyLnB5CkBAIC00NCwxNCArNDQsNiBAQCBkZWYgcnVuX3NpbmdsZV90ZXN0KHBvcnQsIG9wdGlv
bnMsIHRlc3RfaW5wdXQsIGRyaXZlciwgd29ya2VyX25hbWUpOgogICAgIHJldHVybiBydW5uZXIu
cnVuKCkKIAogCi1jbGFzcyBFeHBlY3RlZERyaXZlck91dHB1dDoKLSAgICAiIiJHcm91cHMgaW5m
b3JtYXRpb24gYWJvdXQgYW4gZXhwZWN0ZWQgZHJpdmVyIG91dHB1dC4iIiIKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgdGV4dCwgaW1hZ2UsIGltYWdlX2hhc2gpOgotICAgICAgICBzZWxmLnRleHQg
PSB0ZXh0Ci0gICAgICAgIHNlbGYuaW1hZ2UgPSBpbWFnZQotICAgICAgICBzZWxmLmltYWdlX2hh
c2ggPSBpbWFnZV9oYXNoCi0KLQogY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcjoKIAogICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBvcHRpb25zLCBwb3J0LCBkcml2ZXIsIHRlc3RfaW5wdXQsIHdvcmtlcl9u
YW1lKToKQEAgLTYzLDEwICs1NSwzOCBAQCBjbGFzcyBTaW5nbGVUZXN0UnVubmVyOgogICAgICAg
ICBzZWxmLl93b3JrZXJfbmFtZSA9IHdvcmtlcl9uYW1lCiAgICAgICAgIHNlbGYuX3Rlc3RuYW1l
ID0gcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKHRlc3RfaW5wdXQuZmlsZW5hbWUpCiAKKyAg
ICAgICAgc2VsZi5faXNfcmVmdGVzdCA9IEZhbHNlCisgICAgICAgIHNlbGYuX2lzX21pc21hdGNo
X3JlZnRlc3QgPSBGYWxzZQorICAgICAgICBzZWxmLl9yZWZlcmVuY2VfZmlsZW5hbWUgPSBOb25l
CisKKyAgICAgICAgZnMgPSBwb3J0Ll9maWxlc3lzdGVtCisgICAgICAgICMgRklYTUU6IERldGVj
dCBhbmQgcmVwb3J0IGEgdGVzdCB3aGljaCBoYXMgYSB3cm9uZyBjb21iaW5hdGlvbiBvZgorICAg
ICAgICAjIGV4cGVjdGF0aW9uIGZpbGVzLiBGb3IgZXhhbXBsZSwgaWYgJ2Zvby5odG1sJyBoYXMg
dHdvIGV4cGVjdGF0aW9uIGZpbGVzLAorICAgICAgICAjICdmb28tZXhwZWN0ZWQuaHRtbCcgYW5k
ICdmb28tZXhwZWN0ZWQudHh0Jywgd2Ugc2hvdWxkIHdhcm4gdXNlcnMuCisgICAgICAgICMgT25l
IHRlc3QgZmlsZSBtdXN0IGJlIHVzZWQgZXhjbHVzaXZlbHkgaW4gZWl0aGVyIGxheW91dCB0ZXN0
cyBvcgorICAgICAgICAjIHJlZnRlc3RzLCBidXQgbm90IGluIGJvdGguCisgICAgICAgIHJlZnRl
c3RfZXhwZWN0ZWRfZmlsZW5hbWUgPSBwb3J0LnJlZnRlc3RfZXhwZWN0ZWRfZmlsZW5hbWUoc2Vs
Zi5fZmlsZW5hbWUpCisgICAgICAgIGlmIGZzLmV4aXN0cyhyZWZ0ZXN0X2V4cGVjdGVkX2ZpbGVu
YW1lKToKKyAgICAgICAgICAgIHNlbGYuX2lzX3JlZnRlc3QgPSBUcnVlCisgICAgICAgICAgICBz
ZWxmLl9yZWZlcmVuY2VfZmlsZW5hbWUgPSByZWZ0ZXN0X2V4cGVjdGVkX2ZpbGVuYW1lCisKKyAg
ICAgICAgcmVmdGVzdF9leHBlY3RlZF9taXNtYXRjaF9maWxlbmFtZSA9IHBvcnQucmVmdGVzdF9l
eHBlY3RlZF9taXNtYXRjaF9maWxlbmFtZShzZWxmLl9maWxlbmFtZSkKKyAgICAgICAgaWYgZnMu
ZXhpc3RzKHJlZnRlc3RfZXhwZWN0ZWRfbWlzbWF0Y2hfZmlsZW5hbWUpOgorICAgICAgICAgICAg
aWYgc2VsZi5faXNfcmVmdGVzdDoKKyAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCdJdCBpcyBu
b3QgYWxsb3dlZCB0aGF0IG9uZSB0ZXN0IGZpbGUgaGFzIGJvdGgnCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnIGV4cGVjdGVkLmh0bWwgZmlsZSBhbmQgZXhwZWN0ZWQtbWlzbWF0Y2guaHRt
bCBmaWxlJworICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBhdCB0aGUgc2FtZSB0aW1lLiBQ
bGVhc2UgcmVtb3ZlIGVpdGhlciAlcyBvciAlcy4nLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVmdGVzdF9leHBlY3RlZF9maWxlbmFtZSwgcmVmdGVzdF9leHBlY3RlZF9taXNtYXRjaF9m
aWxlbmFtZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5faXNfcmVm
dGVzdCA9IFRydWUKKyAgICAgICAgICAgICAgICBzZWxmLl9pc19taXNtYXRjaF9yZWZ0ZXN0ID0g
VHJ1ZQorICAgICAgICAgICAgICAgIHNlbGYuX3JlZmVyZW5jZV9maWxlbmFtZSA9IHJlZnRlc3Rf
ZXhwZWN0ZWRfbWlzbWF0Y2hfZmlsZW5hbWUKKworCiAgICAgZGVmIF9leHBlY3RlZF9kcml2ZXJf
b3V0cHV0KHNlbGYpOgotICAgICAgICByZXR1cm4gRXhwZWN0ZWREcml2ZXJPdXRwdXQoc2VsZi5f
cG9ydC5leHBlY3RlZF90ZXh0KHNlbGYuX2ZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQuZXhwZWN0ZWRfaW1hZ2Uoc2VsZi5fZmlsZW5hbWUp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5leHBlY3Rl
ZF9jaGVja3N1bShzZWxmLl9maWxlbmFtZSkpCisgICAgICAgIHJldHVybiBiYXNlLkRyaXZlck91
dHB1dChzZWxmLl9wb3J0LmV4cGVjdGVkX3RleHQoc2VsZi5fZmlsZW5hbWUpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5leHBlY3RlZF9pbWFnZShzZWxmLl9m
aWxlbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LmV4
cGVjdGVkX2NoZWNrc3VtKHNlbGYuX2ZpbGVuYW1lKSkKIAogICAgIGRlZiBfc2hvdWxkX2ZldGNo
X2V4cGVjdGVkX2NoZWNrc3VtKHNlbGYpOgogICAgICAgICByZXR1cm4gKHNlbGYuX29wdGlvbnMu
cGl4ZWxfdGVzdHMgYW5kCkBAIC04NCw3ICsxMDQsMTMgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5l
cjoKIAogICAgIGRlZiBydW4oc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMubmV3X2Jh
c2VsaW5lIG9yIHNlbGYuX29wdGlvbnMucmVzZXRfcmVzdWx0czoKLSAgICAgICAgICAgIHJldHVy
biBzZWxmLl9ydW5fcmViYXNlbGluZSgpCisgICAgICAgICAgICBpZiBzZWxmLl9pc19yZWZ0ZXN0
OgorICAgICAgICAgICAgICAgICMgUmV0dXJucyBhIGR1bW15IFRlc3RSZXN1bHQuIFdlIGRvbid0
IGhhdmUgdG8gcmViYXNlIGZvciByZWZ0ZXN0cy4KKyAgICAgICAgICAgICAgICByZXR1cm4gVGVz
dFJlc3VsdChzZWxmLl9maWxlbmFtZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHNlbGYuX3J1bl9yZWJhc2VsaW5lKCkKKyAgICAgICAgaWYgc2VsZi5faXNfcmVm
dGVzdDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9ydW5fcmVmdGVzdCgpCiAgICAgICAgIHJl
dHVybiBzZWxmLl9ydW5fY29tcGFyZV90ZXN0KCkKIAogICAgIGRlZiBfcnVuX2NvbXBhcmVfdGVz
dChzZWxmKToKQEAgLTk4LDYgKzEyNCw4IEBAIGNsYXNzIFNpbmdsZVRlc3RSdW5uZXI6CiAgICAg
ZGVmIF9ydW5fcmViYXNlbGluZShzZWxmKToKICAgICAgICAgZHJpdmVyX291dHB1dCA9IHNlbGYu
X2RyaXZlci5ydW5fdGVzdChzZWxmLl9kcml2ZXJfaW5wdXQoKSkKICAgICAgICAgZmFpbHVyZXMg
PSBzZWxmLl9oYW5kbGVfZXJyb3IoZHJpdmVyX291dHB1dCkKKyAgICAgICAgdGVzdF9yZXN1bHRf
d3JpdGVyLndyaXRlX3Rlc3RfcmVzdWx0KHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMucmVzdWx0
c19kaXJlY3RvcnksIHNlbGYuX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZHJpdmVyX291dHB1dCwgTm9uZSwgZmFpbHVyZXMpCiAgICAgICAg
ICMgRklYTUU6IEl0IHRoZSB0ZXN0IGNyYXNoZWQgb3IgdGltZWQgb3V0LCBpdCBtaWdodCBiZSBi
ZXR0dGVyIHRvIGF2b2lkCiAgICAgICAgICMgdG8gd3JpdGUgbmV3IGJhc2VsaW5lcy4KICAgICAg
ICAgc2VsZi5fc2F2ZV9iYXNlbGluZXMoZHJpdmVyX291dHB1dCkKQEAgLTE0NSwyMiArMTczLDMx
IEBAIGNsYXNzIFNpbmdsZVRlc3RSdW5uZXI6CiAKICAgICAgICAgcG9ydC51cGRhdGVfYmFzZWxp
bmUob3V0cHV0X3BhdGgsIGRhdGEpCiAKLSAgICBkZWYgX2hhbmRsZV9lcnJvcihzZWxmLCBkcml2
ZXJfb3V0cHV0KToKKyAgICBkZWYgX2hhbmRsZV9lcnJvcihzZWxmLCBkcml2ZXJfb3V0cHV0LCBy
ZWZlcmVuY2VfZmlsZW5hbWU9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgdGVzdCBmYWlsdXJl
cyBpZiBzb21lIHVudXN1YWwgZXJyb3JzIGhhcHBlbiBpbiBkcml2ZXIncyBydW4uCisKKyAgICAg
ICAgQXJnczoKKyAgICAgICAgICBkcml2ZXJfb3V0cHV0OiBUaGUgb3V0cHV0IGZyb20gdGhlIGRy
aXZlci4KKyAgICAgICAgICByZWZlcmVuY2VfZmlsZW5hbWU6IFRoZSBmdWxsIHBhdGggdG8gdGhl
IHJlZmVyZW5jZSBmaWxlIHdoaWNoIHByb2R1Y2VkIHRoZSBkcml2ZXJfb3V0cHV0LgorICAgICAg
ICAgICAgICBUaGlzIGFyZyBpcyBvcHRpb25hbCBhbmQgc2hvdWxkIGJlIHVzZWQgb25seSBpbiBy
ZWZ0ZXN0cyB1bnRpbCB3ZSBoYXZlIGEgYmV0dGVyIHdheSB0byBrbm93CisgICAgICAgICAgICAg
IHdoaWNoIGh0bWwgZmlsZSBpcyB1c2VkIGZvciBwcm9kdWNpbmcgdGhlIGRyaXZlcl9vdXRwdXQu
CisgICAgICAgICIiIgogICAgICAgICBmYWlsdXJlcyA9IFtdCiAgICAgICAgIGZzID0gc2VsZi5f
cG9ydC5fZmlsZXN5c3RlbQogICAgICAgICBpZiBkcml2ZXJfb3V0cHV0LnRpbWVvdXQ6Ci0gICAg
ICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlVGltZW91dCgpKQor
ICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZVRpbWVvdXQo
cmVmZXJlbmNlX2ZpbGVuYW1lKSkKKworICAgICAgICBpZiByZWZlcmVuY2VfZmlsZW5hbWU6Cisg
ICAgICAgICAgICB0ZXN0bmFtZSA9IHNlbGYuX3BvcnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZShy
ZWZlcmVuY2VfZmlsZW5hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0ZXN0bmFtZSA9
IHNlbGYuX3Rlc3RuYW1lCisKICAgICAgICAgaWYgZHJpdmVyX291dHB1dC5jcmFzaDoKLSAgICAg
ICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVDcmFzaCgpKQotICAg
ICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgU3RhY2t0cmFjZSBmb3IgJXM6XG4lcyIgJSAoc2VsZi5f
d29ya2VyX25hbWUsIHNlbGYuX3Rlc3RuYW1lLAorICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5k
KHRlc3RfZmFpbHVyZXMuRmFpbHVyZUNyYXNoKHJlZmVyZW5jZV9maWxlbmFtZSkpCisgICAgICAg
ICAgICBfbG9nLmRlYnVnKCIlcyBTdGFja3RyYWNlIGZvciAlczpcbiVzIiAlIChzZWxmLl93b3Jr
ZXJfbmFtZSwgdGVzdG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkcml2ZXJfb3V0cHV0LmVycm9yKSkKLSAgICAgICAgICAgICMgRklY
TUU6IFVzZSB0ZXN0X3Jlc3VsdF93cml0ZXIgbW9kdWxlLgotICAgICAgICAgICAgc3RhY2tfZmls
ZW5hbWUgPSBmcy5qb2luKHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksIHNlbGYuX3Rl
c3RuYW1lKQotICAgICAgICAgICAgc3RhY2tfZmlsZW5hbWUgPSBmcy5zcGxpdGV4dChzdGFja19m
aWxlbmFtZSlbMF0gKyAiLXN0YWNrLnR4dCIKLSAgICAgICAgICAgIGZzLm1heWJlX21ha2VfZGly
ZWN0b3J5KGZzLmRpcm5hbWUoc3RhY2tfZmlsZW5hbWUpKQotICAgICAgICAgICAgZnMud3JpdGVf
dGV4dF9maWxlKHN0YWNrX2ZpbGVuYW1lLCBkcml2ZXJfb3V0cHV0LmVycm9yKQogICAgICAgICBl
bGlmIGRyaXZlcl9vdXRwdXQuZXJyb3I6Ci0gICAgICAgICAgICBfbG9nLmRlYnVnKCIlcyAlcyBv
dXRwdXQgc3RkZXJyIGxpbmVzOlxuJXMiICUgKHNlbGYuX3dvcmtlcl9uYW1lLCBzZWxmLl90ZXN0
bmFtZSwKKyAgICAgICAgICAgIF9sb2cuZGVidWcoIiVzICVzIG91dHB1dCBzdGRlcnIgbGluZXM6
XG4lcyIgJSAoc2VsZi5fd29ya2VyX25hbWUsIHRlc3RuYW1lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXJfb3V0cHV0LmVy
cm9yKSkKICAgICAgICAgcmV0dXJuIGZhaWx1cmVzCiAKQEAgLTIxMCwzICsyNDcsMzEgQEAgY2xh
c3MgU2luZ2xlVGVzdFJ1bm5lcjoKICAgICAgICAgZWxpZiBkcml2ZXJfb3V0cHV0LmltYWdlX2hh
c2ggIT0gZXhwZWN0ZWRfZHJpdmVyX291dHB1dHMuaW1hZ2VfaGFzaDoKICAgICAgICAgICAgIGZh
aWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVJbWFnZUhhc2hNaXNtYXRjaCgpKQog
ICAgICAgICByZXR1cm4gZmFpbHVyZXMKKworICAgIGRlZiBfcnVuX3JlZnRlc3Qoc2VsZik6Cisg
ICAgICAgIGRyaXZlcl9vdXRwdXQxID0gc2VsZi5fZHJpdmVyLnJ1bl90ZXN0KHNlbGYuX2RyaXZl
cl9pbnB1dCgpKQorICAgICAgICBkcml2ZXJfb3V0cHV0MiA9IHNlbGYuX2RyaXZlci5ydW5fdGVz
dCgKKyAgICAgICAgICAgIGJhc2UuRHJpdmVySW5wdXQoc2VsZi5fcmVmZXJlbmNlX2ZpbGVuYW1l
LCBzZWxmLl90aW1lb3V0LCBkcml2ZXJfb3V0cHV0MS5pbWFnZV9oYXNoKSkKKyAgICAgICAgdGVz
dF9yZXN1bHQgPSBzZWxmLl9jb21wYXJlX291dHB1dF93aXRoX3JlZmVyZW5jZShkcml2ZXJfb3V0
cHV0MSwgZHJpdmVyX291dHB1dDIpCisKKyAgICAgICAgdGVzdF9yZXN1bHRfd3JpdGVyLndyaXRl
X3Rlc3RfcmVzdWx0KHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3Rvcnks
IHNlbGYuX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZHJpdmVyX291dHB1dDEsIGRyaXZlcl9vdXRwdXQyLCB0ZXN0X3Jlc3VsdC5mYWlsdXJl
cykKKyAgICAgICAgcmV0dXJuIHRlc3RfcmVzdWx0CisKKyAgICBkZWYgX2NvbXBhcmVfb3V0cHV0
X3dpdGhfcmVmZXJlbmNlKHNlbGYsIGRyaXZlcl9vdXRwdXQxLCBkcml2ZXJfb3V0cHV0Mik6Cisg
ICAgICAgIHRvdGFsX3Rlc3RfdGltZSA9IGRyaXZlcl9vdXRwdXQxLnRlc3RfdGltZSArIGRyaXZl
cl9vdXRwdXQyLnRlc3RfdGltZQorICAgICAgICBmYWlsdXJlcyA9IFtdCisgICAgICAgIGZhaWx1
cmVzLmV4dGVuZChzZWxmLl9oYW5kbGVfZXJyb3IoZHJpdmVyX291dHB1dDEpKQorICAgICAgICBp
ZiBmYWlsdXJlczoKKyAgICAgICAgICAgICMgRG9uJ3QgY29udGludWUgYW55IG1vcmUgaWYgd2Ug
YWxyZWFkeSBoYXZlIGNyYXNoIG9yIHRpbWVvdXQuCisgICAgICAgICAgICByZXR1cm4gVGVzdFJl
c3VsdChzZWxmLl9maWxlbmFtZSwgZmFpbHVyZXMsIHRvdGFsX3Rlc3RfdGltZSkKKyAgICAgICAg
ZmFpbHVyZXMuZXh0ZW5kKHNlbGYuX2hhbmRsZV9lcnJvcihkcml2ZXJfb3V0cHV0MiwgcmVmZXJl
bmNlX2ZpbGVuYW1lPXNlbGYuX3JlZmVyZW5jZV9maWxlbmFtZSkpCisgICAgICAgIGlmIGZhaWx1
cmVzOgorICAgICAgICAgICAgcmV0dXJuIFRlc3RSZXN1bHQoc2VsZi5fZmlsZW5hbWUsIGZhaWx1
cmVzLCB0b3RhbF90ZXN0X3RpbWUpCisKKyAgICAgICAgaWYgc2VsZi5faXNfbWlzbWF0Y2hfcmVm
dGVzdDoKKyAgICAgICAgICAgIGlmIGRyaXZlcl9vdXRwdXQxLmltYWdlX2hhc2ggPT0gZHJpdmVy
X291dHB1dDIuaW1hZ2VfaGFzaDoKKyAgICAgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVz
dF9mYWlsdXJlcy5GYWlsdXJlUmVmdGVzdE1pc21hdGNoRGlkTm90T2NjdXIoKSkKKyAgICAgICAg
ZWxpZiBkcml2ZXJfb3V0cHV0MS5pbWFnZV9oYXNoICE9IGRyaXZlcl9vdXRwdXQyLmltYWdlX2hh
c2g6CisgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlUmVm
dGVzdE1pc21hdGNoKCkpCisgICAgICAgIHJldHVybiBUZXN0UmVzdWx0KHNlbGYuX2ZpbGVuYW1l
LCBmYWlsdXJlcywgdG90YWxfdGVzdF90aW1lKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9mYWlsdXJlcy5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFp
bHVyZXMucHkKaW5kZXggNGFlNDNjMGJiZWJmNGIyNmZlYjU3ZmJkOGI5Y2Q0MzgyMWQ0MjE1Ni4u
MWZhZDc3MjQ2Yjg1ZTYyZDAwZjM1YTA1ZmQyY2M2OWIyM2U0OTZmMiAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9mYWls
dXJlcy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5CkBAIC02MCwxMSArNjAsMTMgQEAgZGVmIGRldGVybWlu
ZV9yZXN1bHRfdHlwZShmYWlsdXJlX2xpc3QpOgogICAgICAgICBpc190ZXh0X2ZhaWx1cmUgPSBG
YWlsdXJlVGV4dE1pc21hdGNoIGluIGZhaWx1cmVfdHlwZXMKICAgICAgICAgaXNfaW1hZ2VfZmFp
bHVyZSA9IChGYWlsdXJlSW1hZ2VIYXNoSW5jb3JyZWN0IGluIGZhaWx1cmVfdHlwZXMgb3IKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGYWlsdXJlSW1hZ2VIYXNoTWlzbWF0Y2ggaW4gZmFp
bHVyZV90eXBlcykKKyAgICAgICAgaXNfcmVmdGVzdF9mYWlsdXJlID0gKEZhaWx1cmVSZWZ0ZXN0
TWlzbWF0Y2ggaW4gZmFpbHVyZV90eXBlcyBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRmFpbHVyZVJlZnRlc3RNaXNtYXRjaERpZE5vdE9jY3VyIGluIGZhaWx1cmVfdHlwZXMpCiAg
ICAgICAgIGlmIGlzX3RleHRfZmFpbHVyZSBhbmQgaXNfaW1hZ2VfZmFpbHVyZToKICAgICAgICAg
ICAgIHJldHVybiB0ZXN0X2V4cGVjdGF0aW9ucy5JTUFHRV9QTFVTX1RFWFQKICAgICAgICAgZWxp
ZiBpc190ZXh0X2ZhaWx1cmU6CiAgICAgICAgICAgICByZXR1cm4gdGVzdF9leHBlY3RhdGlvbnMu
VEVYVAotICAgICAgICBlbGlmIGlzX2ltYWdlX2ZhaWx1cmU6CisgICAgICAgIGVsaWYgaXNfaW1h
Z2VfZmFpbHVyZSBvciBpc19yZWZ0ZXN0X2ZhaWx1cmU6CiAgICAgICAgICAgICByZXR1cm4gdGVz
dF9leHBlY3RhdGlvbnMuSU1BR0UKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIFZh
bHVlRXJyb3IoInVuY2xhc3NpZmlhYmxlIHNldCBvZiBmYWlsdXJlczogIgpAQCAtMTc3LDExICsx
NzksMTcgQEAgY2xhc3MgRmFpbHVyZVRpbWVvdXQoVGVzdEZhaWx1cmUpOgogICAgICIiIlRlc3Qg
dGltZWQgb3V0LiAgV2UgYWxzbyB3YW50IHRvIHJlc3RhcnQgRHVtcFJlbmRlclRyZWUgaWYgdGhp
cwogICAgIGhhcHBlbnMuIiIiCiAKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVmZXJlbmNlX2Zp
bGVuYW1lPU5vbmUpOgorICAgICAgICBzZWxmLnJlZmVyZW5jZV9maWxlbmFtZSA9IHJlZmVyZW5j
ZV9maWxlbmFtZQorCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBtZXNzYWdlKCk6CiAgICAg
ICAgIHJldHVybiAiVGVzdCB0aW1lZCBvdXQiCiAKICAgICBkZWYgcmVzdWx0X2h0bWxfb3V0cHV0
KHNlbGYsIGZpbGVuYW1lKToKKyAgICAgICAgaWYgc2VsZi5yZWZlcmVuY2VfZmlsZW5hbWU6Cisg
ICAgICAgICAgICByZXR1cm4gIjxzdHJvbmc+JXM8L3N0cm9uZz4gKG9jY3VyZWQgaW4gPGEgaHJl
Zj0lcz5leHBlY3RlZCBodG1sPC9hPikiICUgKAorICAgICAgICAgICAgICAgIHNlbGYubWVzc2Fn
ZSgpLCBzZWxmLnJlZmVyZW5jZV9maWxlbmFtZSkKICAgICAgICAgcmV0dXJuICI8c3Ryb25nPiVz
PC9zdHJvbmc+IiAlIHNlbGYubWVzc2FnZSgpCiAKICAgICBkZWYgc2hvdWxkX2tpbGxfZHVtcF9y
ZW5kZXJfdHJlZShzZWxmKToKQEAgLTE5MSw2ICsxOTksOSBAQCBjbGFzcyBGYWlsdXJlVGltZW91
dChUZXN0RmFpbHVyZSk6CiBjbGFzcyBGYWlsdXJlQ3Jhc2goVGVzdEZhaWx1cmUpOgogICAgICIi
IkR1bXBSZW5kZXJUcmVlIGNyYXNoZWQuIiIiCiAKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVm
ZXJlbmNlX2ZpbGVuYW1lPU5vbmUpOgorICAgICAgICBzZWxmLnJlZmVyZW5jZV9maWxlbmFtZSA9
IHJlZmVyZW5jZV9maWxlbmFtZQorCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBtZXNzYWdl
KCk6CiAgICAgICAgIHJldHVybiAiRHVtcFJlbmRlclRyZWUgY3Jhc2hlZCIKQEAgLTE5OCw4ICsy
MDksMTEgQEAgY2xhc3MgRmFpbHVyZUNyYXNoKFRlc3RGYWlsdXJlKToKICAgICBkZWYgcmVzdWx0
X2h0bWxfb3V0cHV0KHNlbGYsIGZpbGVuYW1lKToKICAgICAgICAgIyBGSVhNRTogY3JlYXRlIGEg
bGluayB0byB0aGUgbWluaWR1bXAgZmlsZQogICAgICAgICBzdGFjayA9IHNlbGYucmVsYXRpdmVf
b3V0cHV0X2ZpbGVuYW1lKGZpbGVuYW1lLCAiLXN0YWNrLnR4dCIpCi0gICAgICAgIHJldHVybiAi
PHN0cm9uZz4lczwvc3Ryb25nPiA8YSBocmVmPSVzPnN0YWNrPC9hPiIgJSAoc2VsZi5tZXNzYWdl
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhY2spCisgICAgICAgIGlmIHNlbGYucmVmZXJlbmNlX2ZpbGVuYW1lOgorICAg
ICAgICAgICAgcmV0dXJuICI8c3Ryb25nPiVzPC9zdHJvbmc+IDxhIGhyZWY9JXM+c3RhY2s8L2E+
IChvY2N1cmVkIGluIDxhIGhyZWY9JXM+ZXhwZWN0ZWQgaHRtbDwvYT4pIiAlICgKKyAgICAgICAg
ICAgICAgICBzZWxmLm1lc3NhZ2UoKSwgc3RhY2ssIHNlbGYucmVmZXJlbmNlX2ZpbGVuYW1lKQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICI8c3Ryb25nPiVzPC9zdHJvbmc+IDxh
IGhyZWY9JXM+c3RhY2s8L2E+IiAlIChzZWxmLm1lc3NhZ2UoKSwgc3RhY2spCiAKICAgICBkZWYg
c2hvdWxkX2tpbGxfZHVtcF9yZW5kZXJfdHJlZShzZWxmKToKICAgICAgICAgcmV0dXJuIFRydWUK
QEAgLTI3OSw5ICsyOTMsNDggQEAgY2xhc3MgRmFpbHVyZUltYWdlSGFzaEluY29ycmVjdChDb21w
YXJpc29uVGVzdEZhaWx1cmUpOgogICAgIGRlZiByZXN1bHRfaHRtbF9vdXRwdXQoc2VsZiwgZmls
ZW5hbWUpOgogICAgICAgICByZXR1cm4gIjxzdHJvbmc+JXM8L3N0cm9uZz4iICUgc2VsZi5tZXNz
YWdlKCkKIAorCitjbGFzcyBGYWlsdXJlUmVmdGVzdE1pc21hdGNoKENvbXBhcmlzb25UZXN0RmFp
bHVyZSk6CisgICAgIiIiVGhlIHJlc3VsdCBkaWRuJ3QgbWF0Y2ggdGhlIHJlZmVyZW5jZSByZW5k
ZXJpbmcuIiIiCisKKyAgICBPVVRfRklMRU5BTUVTID0gKCItZXhwZWN0ZWQuaHRtbCIsICItZXhw
ZWN0ZWQucG5nIiwgIi1hY3R1YWwucG5nIiwKKyAgICAgICAgICAgICAgICAgICAgICItZGlmZi5w
bmciLCkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgbWVzc2FnZSgpOgorICAgICAgICBy
ZXR1cm4gIk1pc21hdGNoIHdpdGggcmVmZXJlbmNlIgorCisgICAgZGVmIG91dHB1dF9saW5rcyhz
ZWxmLCBmaWxlbmFtZSwgb3V0X25hbWVzKToKKyAgICAgICAgbGlua3MgPSBbJyddCisgICAgICAg
IHVyaXMgPSBbc2VsZi5yZWxhdGl2ZV9vdXRwdXRfZmlsZW5hbWUoZmlsZW5hbWUsIG91dHB1dF9m
aWxlbmFtZSkKKyAgICAgICAgICAgICAgICBmb3Igb3V0cHV0X2ZpbGVuYW1lIGluIG91dF9uYW1l
c10KKyAgICAgICAgZm9yIHRleHQsIHVyaSBpbiB6aXAoWyctZXhwZWN0ZWQuaHRtbCcsICdleHBl
Y3RlZCcsICdhY3R1YWwnLCAnZGlmZiddLCB1cmlzKToKKyAgICAgICAgICAgIGxpbmtzLmFwcGVu
ZCgiPGEgaHJlZj0nJXMnPiVzPC9hPiIgJSAodXJpLCB0ZXh0KSkKKyAgICAgICAgcmV0dXJuICcg
Jy5qb2luKGxpbmtzKQorCisKK2NsYXNzIEZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2hEaWROb3RPY2N1
cihDb21wYXJpc29uVGVzdEZhaWx1cmUpOgorICAgICIiIlVuZXhwZWN0ZWQgbWF0Y2ggYmV0d2Vl
biB0aGUgcmVzdWx0IGFuZCB0aGUgcmVmZXJlbmNlIHJlbmRlcmluZy4iIiIKKworICAgIE9VVF9G
SUxFTkFNRVMgPSAoIi1leHBlY3RlZC1taXNtYXRjaC5odG1sIiwgIi1hY3R1YWwucG5nIiwpCisK
KyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIG1lc3NhZ2UoKToKKyAgICAgICAgcmV0dXJuICJN
aXNtYXRjaCB3aXRoIHRoZSByZWZlcmVuY2UgZGlkIG5vdCBvY2N1ciIKKworICAgIGRlZiBvdXRw
dXRfbGlua3Moc2VsZiwgZmlsZW5hbWUsIG91dF9uYW1lcyk6CisgICAgICAgIGxpbmtzID0gWycn
XQorICAgICAgICB1cmlzID0gW3NlbGYucmVsYXRpdmVfb3V0cHV0X2ZpbGVuYW1lKGZpbGVuYW1l
LCBvdXRwdXRfZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgZm9yIG91dHB1dF9maWxlbmFtZSBp
biBvdXRfbmFtZXNdCisgICAgICAgIGZvciB0ZXh0LCB1cmkgaW4gemlwKFsnLWV4cGVjdGVkLW1p
c21hdGNoLmh0bWwnLCAnaW1hZ2UnXSwgdXJpcyk6CisgICAgICAgICAgICBsaW5rcy5hcHBlbmQo
IjxhIGhyZWY9JyVzJz4lczwvYT4iICUgKHVyaSwgdGV4dCkpCisgICAgICAgIHJldHVybiAnICcu
am9pbihsaW5rcykKKworCiAjIENvbnZlbmllbnQgY29sbGVjdGlvbiBvZiBhbGwgZmFpbHVyZSBj
bGFzc2VzIGZvciBhbnl0aGluZyB0aGF0IG1pZ2h0CiAjIG5lZWQgdG8gZW51bWVyYXRlIG92ZXIg
dGhlbSBhbGwuCiBBTExfRkFJTFVSRV9DTEFTU0VTID0gKEZhaWx1cmVUaW1lb3V0LCBGYWlsdXJl
Q3Jhc2gsIEZhaWx1cmVNaXNzaW5nUmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICBGYWls
dXJlVGV4dE1pc21hdGNoLCBGYWlsdXJlTWlzc2luZ0ltYWdlSGFzaCwKICAgICAgICAgICAgICAg
ICAgICAgICAgRmFpbHVyZU1pc3NpbmdJbWFnZSwgRmFpbHVyZUltYWdlSGFzaE1pc21hdGNoLAot
ICAgICAgICAgICAgICAgICAgICAgICBGYWlsdXJlSW1hZ2VIYXNoSW5jb3JyZWN0KQorICAgICAg
ICAgICAgICAgICAgICAgICBGYWlsdXJlSW1hZ2VIYXNoSW5jb3JyZWN0LCBGYWlsdXJlUmVmdGVz
dE1pc21hdGNoLAorICAgICAgICAgICAgICAgICAgICAgICBGYWlsdXJlUmVmdGVzdE1pc21hdGNo
RGlkTm90T2NjdXIpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIu
cHkKaW5kZXggODgyZGE5MTcyMTY3NzNkNGJhNzQzYjdkM2U3ZDI1M2JkYjIyMzdhZC4uZTIwOTUw
MzBmZTg0MDY5YzRhODM1ZjdiYzIyMGQ2ZDJkMDkzYTI5MyAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRfd3Jp
dGVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL3Rlc3RfcmVzdWx0X3dyaXRlci5weQpAQCAtNjQsNyArNjQsMTcgQEAgZGVmIHdyaXRl
X3Rlc3RfcmVzdWx0KHBvcnQsIHJvb3Rfb3V0cHV0X2RpciwgZmlsZW5hbWUsIGRyaXZlcl9vdXRw
dXQsCiAgICAgICAgICAgICAgICAgY2hlY2tzdW1zX21pc21hdGNoX2J1dF9pbWFnZXNfYXJlX3Nh
bWUgPSBUcnVlCiAgICAgICAgICAgICAgICAgaW1hZ2VoYXNoX21pc21hdGNoX2ZhaWx1cmUgPSBm
YWlsdXJlCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShmYWlsdXJlLCB0ZXN0X2ZhaWx1cmVzLkZh
aWx1cmVDcmFzaCk6Ci0gICAgICAgICAgICB3cml0ZXIud3JpdGVfY3Jhc2hfcmVwb3J0KGRyaXZl
cl9vdXRwdXQuZXJyb3IpCisgICAgICAgICAgICBpZiBmYWlsdXJlLnJlZmVyZW5jZV9maWxlbmFt
ZToKKyAgICAgICAgICAgICAgICB3cml0ZXIud3JpdGVfY3Jhc2hfcmVwb3J0KGV4cGVjdGVkX2Ry
aXZlcl9vdXRwdXQuZXJyb3IpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHdy
aXRlci53cml0ZV9jcmFzaF9yZXBvcnQoZHJpdmVyX291dHB1dC5lcnJvcikKKyAgICAgICAgZWxp
ZiBpc2luc3RhbmNlKGZhaWx1cmUsIHRlc3RfZmFpbHVyZXMuRmFpbHVyZVJlZnRlc3RNaXNtYXRj
aCk6CisgICAgICAgICAgICB3cml0ZXIud3JpdGVfaW1hZ2VfZmlsZXMoZHJpdmVyX291dHB1dC5p
bWFnZSwgZXhwZWN0ZWRfZHJpdmVyX291dHB1dC5pbWFnZSkKKyAgICAgICAgICAgIHdyaXRlci5j
cmVhdGVfaW1hZ2VfZGlmZl9hbmRfd3JpdGVfcmVzdWx0KGRyaXZlcl9vdXRwdXQuaW1hZ2UsIGV4
cGVjdGVkX2RyaXZlcl9vdXRwdXQuaW1hZ2UpCisgICAgICAgICAgICB3cml0ZXIuY29weV9maWxl
KHBvcnQucmVmdGVzdF9leHBlY3RlZF9maWxlbmFtZShmaWxlbmFtZSksICctZXhwZWN0ZWQuaHRt
bCcpCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShmYWlsdXJlLCB0ZXN0X2ZhaWx1cmVzLkZhaWx1
cmVSZWZ0ZXN0TWlzbWF0Y2hEaWROb3RPY2N1cik6CisgICAgICAgICAgICB3cml0ZXIud3JpdGVf
aW1hZ2VfZmlsZXMoZHJpdmVyX291dHB1dC5pbWFnZSwgZXhwZWN0ZWRfaW1hZ2U9Tm9uZSkKKyAg
ICAgICAgICAgIHdyaXRlci5jb3B5X2ZpbGUocG9ydC5yZWZ0ZXN0X2V4cGVjdGVkX21pc21hdGNo
X2ZpbGVuYW1lKGZpbGVuYW1lKSwgJy1leHBlY3RlZC1taXNtYXRjaC5odG1sJykKICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGZhaWx1cmUsICh0ZXN0X2ZhaWx1
cmVzLkZhaWx1cmVUaW1lb3V0LCkpCiAKQEAgLTEzNSw5ICsxNDUsOSBAQCBjbGFzcyBUZXN0UmVz
dWx0V3JpdGVyKG9iamVjdCk6CiAgICAgICAgIGV4cGVjdGVkX2ZpbGVuYW1lID0gc2VsZi5vdXRw
dXRfZmlsZW5hbWUoc2VsZi5GSUxFTkFNRV9TVUZGSVhfRVhQRUNURUQgKyBmaWxlX3R5cGUpCiAK
ICAgICAgICAgZnMgPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtCi0gICAgICAgIGlmIG91dHB1dDoK
KyAgICAgICAgaWYgb3V0cHV0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgZnMud3JpdGVfYmlu
YXJ5X2ZpbGUoYWN0dWFsX2ZpbGVuYW1lLCBvdXRwdXQpCi0gICAgICAgIGlmIGV4cGVjdGVkOgor
ICAgICAgICBpZiBleHBlY3RlZCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGZzLndyaXRlX2Jp
bmFyeV9maWxlKGV4cGVjdGVkX2ZpbGVuYW1lLCBleHBlY3RlZCkKIAogICAgIGRlZiB3cml0ZV9j
cmFzaF9yZXBvcnQoc2VsZiwgZXJyb3IpOgpAQCAtMTkzLDMgKzIwMywxMCBAQCBjbGFzcyBUZXN0
UmVzdWx0V3JpdGVyKG9iamVjdCk6CiAgICAgICAgICMgVG8gZG8gc28sIHdlIGhhdmUgdG8gY2hh
bmdlIHBvcnQuZGlmZl9pbWFnZSgpIGFzIHdlbGwuCiAgICAgICAgIGRpZmZfZmlsZW5hbWUgPSBz
ZWxmLm91dHB1dF9maWxlbmFtZShzZWxmLkZJTEVOQU1FX1NVRkZJWF9JTUFHRV9ESUZGKQogICAg
ICAgICByZXR1cm4gc2VsZi5fcG9ydC5kaWZmX2ltYWdlKGFjdHVhbF9pbWFnZSwgZXhwZWN0ZWRf
aW1hZ2UsIGRpZmZfZmlsZW5hbWUpCisKKyAgICBkZWYgY29weV9maWxlKHNlbGYsIHNyY19maWxl
cGF0aCwgZHN0X2V4dGVuc2lvbik6CisgICAgICAgIGZzID0gc2VsZi5fcG9ydC5fZmlsZXN5c3Rl
bQorICAgICAgICBhc3NlcnQgZnMuZXhpc3RzKHNyY19maWxlcGF0aCksICdzcmNfZmlsZXBhdGg6
ICVzJyAlIHNyY19maWxlcGF0aAorICAgICAgICBkc3RfZmlsZW5hbWUgPSBzZWxmLm91dHB1dF9m
aWxlbmFtZShkc3RfZXh0ZW5zaW9uKQorICAgICAgICBzZWxmLl9tYWtlX291dHB1dF9kaXJlY3Rv
cnkoKQorICAgICAgICBmcy5jb3B5ZmlsZShzcmNfZmlsZXBhdGgsIGRzdF9maWxlbmFtZSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRl
eCAxNTkwMmI0MGFkODE4MGRiOWFkZjNjMWY3YTBhNGJjODRjOWNiM2VkLi5iMTg2Zjc1Zjk3ZmMz
NzBiZTdlNTM5MGE1YzA3YzRjMmU3OTE4MTZmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CkBAIC0zNDcsNiArMzQ3LDE0IEBAIGNsYXNz
IFBvcnQob2JqZWN0KToKICAgICAgICAgdGV4dCA9IHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF9iaW5h
cnlfZmlsZShwYXRoKQogICAgICAgICByZXR1cm4gdGV4dC5yZXBsYWNlKCJcclxuIiwgIlxuIikK
IAorICAgIGRlZiByZWZ0ZXN0X2V4cGVjdGVkX2ZpbGVuYW1lKHNlbGYsIGZpbGVuYW1lKToKKyAg
ICAgICAgIiIiUmV0dXJuIHRoZSBmaWxlbmFtZSBvZiByZWZlcmVuY2Ugd2UgZXhwZWN0IHRoZSB0
ZXN0IG1hdGNoZXMuIiIiCisgICAgICAgIHJldHVybiBzZWxmLmV4cGVjdGVkX2ZpbGVuYW1lKGZp
bGVuYW1lLCAnLmh0bWwnKQorCisgICAgZGVmIHJlZnRlc3RfZXhwZWN0ZWRfbWlzbWF0Y2hfZmls
ZW5hbWUoc2VsZiwgZmlsZW5hbWUpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGZpbGVuYW1lIG9m
IHJlZmVyZW5jZSB3ZSBkb24ndCBleHBlY3QgdGhlIHRlc3QgbWF0Y2hlcy4iIiIKKyAgICAgICAg
cmV0dXJuIHNlbGYuZXhwZWN0ZWRfZmlsZW5hbWUoZmlsZW5hbWUsICctbWlzbWF0Y2guaHRtbCcp
CisKICAgICBkZWYgZmlsZW5hbWVfdG9fdXJpKHNlbGYsIGZpbGVuYW1lKToKICAgICAgICAgIiIi
Q29udmVydCBhIHRlc3QgZmlsZSAod2hpY2ggaXMgYW4gYWJzb2x1dGUgcGF0aCkgdG8gYSBVUkku
IiIiCiAgICAgICAgIExBWU9VVFRFU1RfSFRUUF9ESVIgPSAiaHR0cC90ZXN0cy8iCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKaW5kZXggZDMy
M2VkNWVhY2FhZjlmMTQ1Yjc0MWQzYzY5YThkZWFlNzE4MmE3YS4uNGFlYjhiYmViNjkxNGEyYWIw
ZWFjNGM4YmNkNzZhYTEyZjRhYzg5YiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQpAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBUZXN0SW5z
dGFuY2U6CiAgICAgICAgIHNlbGYua2V5Ym9hcmQgPSBGYWxzZQogICAgICAgICBzZWxmLmVycm9y
ID0gJycKICAgICAgICAgc2VsZi50aW1lb3V0ID0gRmFsc2UKKyAgICAgICAgc2VsZi5pc19yZWZ0
ZXN0ID0gRmFsc2UKIAogICAgICAgICAjIFRoZSB2YWx1ZXMgb2YgZWFjaCBmaWVsZCBhcmUgdHJl
YXRlZCBhcyByYXcgYnl0ZSBzdHJpbmdzLiBUaGV5CiAgICAgICAgICMgd2lsbCBiZSBjb252ZXJ0
ZWQgdG8gdW5pY29kZSBzdHJpbmdzIHdoZXJlIGFwcHJvcHJpYXRlIHVzaW5nCkBAIC03OCw2ICs3
OSwxMyBAQCBjbGFzcyBUZXN0TGlzdDoKICAgICAgICAgICAgIHRlc3QuX19kaWN0X19ba2V5XSA9
IHZhbHVlCiAgICAgICAgIHNlbGYudGVzdHNbbmFtZV0gPSB0ZXN0CiAKKyAgICBkZWYgYWRkX3Jl
ZnRlc3Qoc2VsZiwgbmFtZSwgcmVmZXJlbmNlX25hbWUsIHNhbWVfaW1hZ2UpOgorICAgICAgICBz
ZWxmLmFkZChuYW1lLCBhY3R1YWxfY2hlY2tzdW09J3h4eCcsIGFjdHVhbF9pbWFnZT0nWFhYJywg
aXNfcmVmdGVzdD1UcnVlKQorICAgICAgICBpZiBzYW1lX2ltYWdlOgorICAgICAgICAgICAgc2Vs
Zi5hZGQocmVmZXJlbmNlX25hbWUsIGFjdHVhbF9jaGVja3N1bT0neHh4JywgYWN0dWFsX2ltYWdl
PSdYWFgnLCBpc19yZWZ0ZXN0PVRydWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxm
LmFkZChyZWZlcmVuY2VfbmFtZSwgYWN0dWFsX2NoZWNrc3VtPSd5eXknLCBhY3R1YWxfaW1hZ2U9
J1lZWScsIGlzX3JlZnRlc3Q9VHJ1ZSkKKwogICAgIGRlZiBrZXlzKHNlbGYpOgogICAgICAgICBy
ZXR1cm4gc2VsZi50ZXN0cy5rZXlzKCkKIApAQCAtMTI5LDYgKzEzNywxNiBAQCBkZWYgdW5pdF90
ZXN0X2xpc3QoKToKICAgICAjIGhlbHBmdWxseSBmaWx0ZXJlZCB0byAiXHJcclxuIiBieSBvdXIg
UHl0aG9uL0N5Z3dpbiB0b29saW5nLgogICAgIHRlc3RzLmFkZCgncGFzc2VzL3RleHQuaHRtbCcs
CiAgICAgICAgICAgICAgIGV4cGVjdGVkX3RleHQ9J1xuZm9vXG5cbicsIGFjdHVhbF90ZXh0PSdc
bmZvb1xyXG5cclxyXG4nKQorCisgICAgIyBGb3IgcmVmdGVzdHMuCisgICAgdGVzdHMuYWRkX3Jl
ZnRlc3QoJ3Bhc3Nlcy9yZWZ0ZXN0Lmh0bWwnLCAncGFzc2VzL3JlZnRlc3QtZXhwZWN0ZWQuaHRt
bCcsIHNhbWVfaW1hZ2U9VHJ1ZSkKKyAgICB0ZXN0cy5hZGRfcmVmdGVzdCgncGFzc2VzL21pc21h
dGNoLmh0bWwnLCAncGFzc2VzL21pc21hdGNoLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwnLCBzYW1l
X2ltYWdlPUZhbHNlKQorICAgIHRlc3RzLmFkZF9yZWZ0ZXN0KCdmYWlsdXJlcy9leHBlY3RlZC9y
ZWZ0ZXN0Lmh0bWwnLCAnZmFpbHVyZXMvZXhwZWN0ZWQvcmVmdGVzdC1leHBlY3RlZC5odG1sJywg
c2FtZV9pbWFnZT1GYWxzZSkKKyAgICB0ZXN0cy5hZGRfcmVmdGVzdCgnZmFpbHVyZXMvZXhwZWN0
ZWQvbWlzbWF0Y2guaHRtbCcsICdmYWlsdXJlcy9leHBlY3RlZC9taXNtYXRjaC1leHBlY3RlZC1t
aXNtYXRjaC5odG1sJywgc2FtZV9pbWFnZT1UcnVlKQorICAgIHRlc3RzLmFkZF9yZWZ0ZXN0KCdm
YWlsdXJlcy91bmV4cGVjdGVkL3JlZnRlc3QuaHRtbCcsICdmYWlsdXJlcy91bmV4cGVjdGVkL3Jl
ZnRlc3QtZXhwZWN0ZWQuaHRtbCcsIHNhbWVfaW1hZ2U9RmFsc2UpCisgICAgdGVzdHMuYWRkX3Jl
ZnRlc3QoJ2ZhaWx1cmVzL3VuZXhwZWN0ZWQvbWlzbWF0Y2guaHRtbCcsICdmYWlsdXJlcy91bmV4
cGVjdGVkL21pc21hdGNoLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwnLCBzYW1lX2ltYWdlPVRydWUp
CisgICAgIyBGSVhNRTogQWRkIGEgcmVmdGVzdCB3aGljaCBjcmFzaGVzLgorCiAgICAgdGVzdHMu
YWRkKCd3ZWJzb2NrZXQvdGVzdHMvcGFzc2VzL3RleHQuaHRtbCcpCiAgICAgcmV0dXJuIHRlc3Rz
CiAKQEAgLTE1OCw2ICsxNzYsOCBAQCBkZWYgdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oZmlsZXM9Tm9u
ZSk6CiAgICAgIyBBZGQgZWFjaCB0ZXN0IGFuZCB0aGUgZXhwZWN0ZWQgb3V0cHV0LCBpZiBhbnku
CiAgICAgZm9yIHRlc3QgaW4gdGVzdF9saXN0LnRlc3RzLnZhbHVlcygpOgogICAgICAgICBhZGRf
ZmlsZShmaWxlcywgdGVzdCwgJy5odG1sJywgJycpCisgICAgICAgIGlmIHRlc3QuaXNfcmVmdGVz
dDoKKyAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIGFkZF9maWxlKGZpbGVzLCB0ZXN0LCAn
LWV4cGVjdGVkLnR4dCcsIHRlc3QuZXhwZWN0ZWRfdGV4dCkKICAgICAgICAgYWRkX2ZpbGUoZmls
ZXMsIHRlc3QsICctZXhwZWN0ZWQuY2hlY2tzdW0nLCB0ZXN0LmV4cGVjdGVkX2NoZWNrc3VtKQog
ICAgICAgICBhZGRfZmlsZShmaWxlcywgdGVzdCwgJy1leHBlY3RlZC5wbmcnLCB0ZXN0LmV4cGVj
dGVkX2ltYWdlKQpAQCAtMTY5LDEyICsxODksMTQgQEAgV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVj
dGVkL2NyYXNoLmh0bWwgPSBDUkFTSAogLy8gVGhpcyBvbmUgYWN0dWFsbHkgcGFzc2VzIGJlY2F1
c2UgdGhlIGNoZWNrc3VtcyB3aWxsIG1hdGNoLgogV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVk
L2ltYWdlLmh0bWwgPSBQQVNTCiBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2VfY2hl
Y2tzdW0uaHRtbCA9IElNQUdFCitXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvbWlzbWF0Y2gu
aHRtbCA9IElNQUdFCiBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ19jaGVjay5o
dG1sID0gTUlTU0lORyBQQVNTCiBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ19p
bWFnZS5odG1sID0gTUlTU0lORyBQQVNTCiBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvbWlz
c2luZ190ZXh0Lmh0bWwgPSBNSVNTSU5HIFBBU1MKIFdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3Rl
ZC9uZXdsaW5lc19sZWFkaW5nLmh0bWwgPSBURVhUCiBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0
ZWQvbmV3bGluZXNfdHJhaWxpbmcuaHRtbCA9IFRFWFQKIFdPTlRGSVggOiBmYWlsdXJlcy9leHBl
Y3RlZC9uZXdsaW5lc193aXRoX2V4Y2Vzc19DUi5odG1sID0gVEVYVAorV09OVEZJWCA6IGZhaWx1
cmVzL2V4cGVjdGVkL3JlZnRlc3QuaHRtbCA9IElNQUdFCiBXT05URklYIDogZmFpbHVyZXMvZXhw
ZWN0ZWQvdGV4dC5odG1sID0gVEVYVAogV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkL3RpbWVv
dXQuaHRtbCA9IFRJTUVPVVQKIFdPTlRGSVggU0tJUCA6IGZhaWx1cmVzL2V4cGVjdGVkL2hhbmcu
aHRtbCA9IFRJTUVPVVQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvdGVzdF9maWxlcy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvdGVzdF9maWxlcy5weQppbmRleCA1MzQ0NjJhN2VlNGE2OWI5OGMyMGQ4Mzk3
NjdjYjIwOTU1M2U4YTc2Li5mYmJiZWE1NjU4MTJhOWRmY2VmMWQ2YWMxNzAwZTlmZTE2NGVmNzJj
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rl
c3RfZmlsZXMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC90ZXN0X2ZpbGVzLnB5CkBAIC0xMDUsMTEgKzEwNSwxMCBAQCBkZWYgX2hhc19zdXBwb3J0ZWRf
ZXh0ZW5zaW9uKGZpbGVzeXN0ZW0sIGZpbGVuYW1lKToKICAgICByZXR1cm4gZXh0ZW5zaW9uIGlu
IF9zdXBwb3J0ZWRfZmlsZV9leHRlbnNpb25zCiAKIAotZGVmIF9pc19yZWZlcmVuY2VfaHRtbF9m
aWxlKGZpbGVuYW1lKToKK2RlZiBpc19yZWZlcmVuY2VfaHRtbF9maWxlKGZpbGVuYW1lKToKICAg
ICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgZmlsZW5hbWUgcG9pbnRzIHRvIGEgcmVmZXJlbmNlIEhU
TUwgZmlsZS4iIiIKICAgICBpZiAoZmlsZW5hbWUuZW5kc3dpdGgoJy1leHBlY3RlZC5odG1sJykg
b3IKICAgICAgICAgZmlsZW5hbWUuZW5kc3dpdGgoJy1leHBlY3RlZC1taXNtYXRjaC5odG1sJykp
OgotICAgICAgICBfbG9nLndhcm4oIlJlZnRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkIC0gaWdub3Jp
bmcgJXMiICUgZmlsZW5hbWUpCiAgICAgICAgIHJldHVybiBUcnVlCiAgICAgcmV0dXJuIEZhbHNl
CiAKQEAgLTExNyw0ICsxMTYsNCBAQCBkZWYgX2lzX3JlZmVyZW5jZV9odG1sX2ZpbGUoZmlsZW5h
bWUpOgogZGVmIF9pc190ZXN0X2ZpbGUoZmlsZXN5c3RlbSwgZGlybmFtZSwgZmlsZW5hbWUpOgog
ICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBmaWxlbmFtZSBwb2ludHMgdG8gYSB0ZXN0IGZpbGUu
IiIiCiAgICAgcmV0dXJuIChfaGFzX3N1cHBvcnRlZF9leHRlbnNpb24oZmlsZXN5c3RlbSwgZmls
ZW5hbWUpIGFuZAotICAgICAgICAgICAgbm90IF9pc19yZWZlcmVuY2VfaHRtbF9maWxlKGZpbGVu
YW1lKSkKKyAgICAgICAgICAgIG5vdCBpc19yZWZlcmVuY2VfaHRtbF9maWxlKGZpbGVuYW1lKSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJr
aXRfdGVzdHNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CmluZGV4IDNmZTdiMTRmMWU3ODMwZmQxYjlj
Mzk0MGU5MzI3NjFlYjRlMjAwNWQuLmY3NTNmMjMxZGU2Y2JkYzJjZmJhZjNkNzk0OWRmYTI2Mjlm
ZTJlMDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1
bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQpAQCAtNTUsNiArNTUsNyBA
QCBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcG9ydAogZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMgaW1wb3J0IHJ1bl93ZWJraXRfdGVzdHMKIGZyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCBkdW1wX3JlbmRlcl90cmVlX3RocmVhZAogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC50ZXN0IGltcG9ydCBUZXN0UG9ydCwgVGVzdERy
aXZlcgorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC50ZXN0X2ZpbGVzIGltcG9ydCBp
c19yZWZlcmVuY2VfaHRtbF9maWxlCiBmcm9tIHdlYmtpdHB5LnB5dGhvbjI0LnZlcnNpb25pbmcg
aW1wb3J0IGNvbXBhcmVfdmVyc2lvbgogZnJvbSB3ZWJraXRweS50ZXN0LnNraXAgaW1wb3J0IHNr
aXBfaWYKIApAQCAtMTI0LDcgKzEyNSw4IEBAIGRlZiBydW5fYW5kX2NhcHR1cmUocG9ydF9vYmos
IG9wdGlvbnMsIHBhcnNlZF9hcmdzKToKICAgICByZXR1cm4gKHJlcywgYnVpbGRib3Rfb3V0cHV0
LCByZWd1bGFyX291dHB1dCkKIAogCi1kZWYgZ2V0X3Rlc3RzX3J1bihleHRyYV9hcmdzPU5vbmUs
IHRlc3RzX2luY2x1ZGVkPUZhbHNlLCBmbGF0dGVuX2JhdGNoZXM9RmFsc2UsIGZpbGVzeXN0ZW09
Tm9uZSk6CitkZWYgZ2V0X3Rlc3RzX3J1bihleHRyYV9hcmdzPU5vbmUsIHRlc3RzX2luY2x1ZGVk
PUZhbHNlLCBmbGF0dGVuX2JhdGNoZXM9RmFsc2UsCisgICAgICAgICAgICAgICAgICBmaWxlc3lz
dGVtPU5vbmUsIGluY2x1ZGVfcmVmZXJlbmNlX2h0bWw9RmFsc2UpOgogICAgIGV4dHJhX2FyZ3Mg
PSBleHRyYV9hcmdzIG9yIFtdCiAgICAgaWYgbm90IHRlc3RzX2luY2x1ZGVkOgogICAgICAgICAj
IE5vdCBpbmNsdWRpbmcgaHR0cCB0ZXN0cyBzaW5jZSB0aGV5IGdldCBydW4gb3V0IG9mIG9yZGVy
ICh0aGF0CkBAIC0xMzYsNiArMTM4LDcgQEAgZGVmIGdldF90ZXN0c19ydW4oZXh0cmFfYXJncz1O
b25lLCB0ZXN0c19pbmNsdWRlZD1GYWxzZSwgZmxhdHRlbl9iYXRjaGVzPUZhbHNlLAogCiAgICAg
dGVzdF9iYXRjaGVzID0gW10KIAorCiAgICAgY2xhc3MgUmVjb3JkaW5nVGVzdERyaXZlcihUZXN0
RHJpdmVyKToKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIHdvcmtlcl9udW1iZXIp
OgogICAgICAgICAgICAgVGVzdERyaXZlci5fX2luaXRfXyhzZWxmLCBwb3J0LCB3b3JrZXJfbnVt
YmVyKQpAQCAtMTUzLDcgKzE1NiwxMSBAQCBkZWYgZ2V0X3Rlc3RzX3J1bihleHRyYV9hcmdzPU5v
bmUsIHRlc3RzX2luY2x1ZGVkPUZhbHNlLCBmbGF0dGVuX2JhdGNoZXM9RmFsc2UsCiAgICAgICAg
ICAgICAgICAgc2VsZi5fY3VycmVudF90ZXN0X2JhdGNoID0gW10KICAgICAgICAgICAgICAgICB0
ZXN0X2JhdGNoZXMuYXBwZW5kKHNlbGYuX2N1cnJlbnRfdGVzdF9iYXRjaCkKICAgICAgICAgICAg
IHRlc3RfbmFtZSA9IHNlbGYuX3BvcnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZSh0ZXN0X2lucHV0
LmZpbGVuYW1lKQotICAgICAgICAgICAgc2VsZi5fY3VycmVudF90ZXN0X2JhdGNoLmFwcGVuZCh0
ZXN0X25hbWUpCisgICAgICAgICAgICAjIEluIGNhc2Ugb2YgcmVmdGVzdCwgb25lIHRlc3QgY2Fs
bHMgdGhlIGRyaXZlcidzIHJ1bl90ZXN0KCkgdHdpY2UuCisgICAgICAgICAgICAjIFdlIHNob3Vs
ZCBub3QgYWRkIGEgcmVmZXJlbmNlIGh0bWwgdXNlZCBieSByZWZ0ZXN0cyB0byB0ZXN0cyB1bmxl
c3MgaW5jbHVkZV9yZWZlcmVuY2VfaHRtbCBwYXJhbWV0ZXIKKyAgICAgICAgICAgICMgaXMgZXhw
bGljaXRseSBnaXZlbi4KKyAgICAgICAgICAgIGlmIGluY2x1ZGVfcmVmZXJlbmNlX2h0bWwgb3Ig
bm90IGlzX3JlZmVyZW5jZV9odG1sX2ZpbGUodGVzdF9pbnB1dC5maWxlbmFtZSk6CisgICAgICAg
ICAgICAgICAgc2VsZi5fY3VycmVudF90ZXN0X2JhdGNoLmFwcGVuZCh0ZXN0X25hbWUpCiAgICAg
ICAgICAgICByZXR1cm4gVGVzdERyaXZlci5ydW5fdGVzdChzZWxmLCB0ZXN0X2lucHV0KQogCiAg
ICAgY2xhc3MgUmVjb3JkaW5nVGVzdFBvcnQoVGVzdFBvcnQpOgpAQCAtMzUyLDcgKzM1OSwxMiBA
QCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICMgUnVuIHRlc3Rz
IGluY2x1ZGluZyB0aGUgdW5leHBlY3RlZCBmYWlsdXJlcy4KICAgICAgICAgc2VsZi5fdXJsX29w
ZW5lZCA9IE5vbmUKICAgICAgICAgcmVzLCBvdXQsIGVyciwgdXNlciA9IGxvZ2dpbmdfcnVuKHRl
c3RzX2luY2x1ZGVkPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCAzKQorCisg
ICAgICAgICMgVXBkYXRlIHRoaXMgbWFnaWMgbnVtYmVyIGlmIHlvdSBhZGQgYW4gdW5leHBlY3Rl
ZCB0ZXN0IHRvIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LnRlc3QKKyAgICAgICAgIyBGSVhN
RTogSXQncyBuaWNlIHRvIGhhdmUgYSByb3V0aW5lIGluIHBvcnQvdGVzdC5weSB0aGF0IHJldHVy
bnMgdGhpcyBudW1iZXIuCisgICAgICAgIHVuZXhwZWN0ZWRfdGVzdHNfY291bnQgPSA1CisKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIHVuZXhwZWN0ZWRfdGVzdHNfY291bnQpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3V0LmVtcHR5KCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UoZXJyLmVtcHR5KCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXNlci5vcGVuZWRfdXJs
cywgWycvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcmVzdWx0cy5odG1sJ10pCkBAIC01MTYsNiAr
NTI4LDI1IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9nZ2luZ19ydW4sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsnLS13b3JrZXItbW9kZWwnLCAndW5rbm93biddKQogCisgICAgZGVmIHRlc3Rf
cmVmdGVzdF9ydW4oc2VsZik6CisgICAgICAgIHRlc3RzX3J1biA9IGdldF90ZXN0c19ydW4oWydw
YXNzZXMvcmVmdGVzdC5odG1sJ10sIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZsYXR0ZW5fYmF0Y2hl
cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbJ3Bhc3Nlcy9yZWZ0ZXN0Lmh0bWwn
XSwgdGVzdHNfcnVuKQorCisgICAgZGVmIHRlc3RfcmVmdGVzdF9leHBlY3RlZF9odG1sX3Nob3Vs
ZF9iZV9pZ25vcmVkKHNlbGYpOgorICAgICAgICB0ZXN0c19ydW4gPSBnZXRfdGVzdHNfcnVuKFsn
cGFzc2VzL3JlZnRlc3QtZXhwZWN0ZWQuaHRtbCddLCB0ZXN0c19pbmNsdWRlZD1UcnVlLCBmbGF0
dGVuX2JhdGNoZXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoW10sIHRlc3RzX3J1
bikKKworICAgIGRlZiB0ZXN0X3JlZnRlc3RfZHJpdmVyX3Nob3VsZF9ydW5fZXhwZWN0ZWRfaHRt
bChzZWxmKToKKyAgICAgICAgdGVzdHNfcnVuID0gZ2V0X3Rlc3RzX3J1bihbJ3Bhc3Nlcy9yZWZ0
ZXN0Lmh0bWwnXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmxhdHRlbl9iYXRjaGVzPVRydWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9yZWZlcmVuY2VfaHRtbD1U
cnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbJ3Bhc3Nlcy9yZWZ0ZXN0Lmh0bWwnLCAn
cGFzc2VzL3JlZnRlc3QtZXhwZWN0ZWQuaHRtbCddLCB0ZXN0c19ydW4pCisKKyAgICBkZWYgdGVz
dF9yZWZ0ZXN0X2RyaXZlcl9zaG91bGRfcnVuX2V4cGVjdGVkX21pc21hdGNoX2h0bWwoc2VsZik6
CisgICAgICAgIHRlc3RzX3J1biA9IGdldF90ZXN0c19ydW4oWydwYXNzZXMvbWlzbWF0Y2guaHRt
bCddLCB0ZXN0c19pbmNsdWRlZD1UcnVlLCBmbGF0dGVuX2JhdGNoZXM9VHJ1ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX3JlZmVyZW5jZV9odG1sPVRydWUpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsncGFzc2VzL21pc21hdGNoLmh0bWwnLCAncGFzc2Vz
L21pc21hdGNoLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwnXSwgdGVzdHNfcnVuKQorCisKIE1haW5U
ZXN0ID0gc2tpcF9pZihNYWluVGVzdCwgc3lzLnBsYXRmb3JtID09ICdjeWd3aW4nIGFuZCBjb21w
YXJlX3ZlcnNpb24oc3lzLCAnMi42JylbMF0gPCAwLCAnbmV3LXJ1bi13ZWJraXQtdGVzdHMgdGVz
dHMgaGFuZyBvbiBDeWd3aW4gUHl0aG9uIDIuNS4yJykKIAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85761</attachid>
            <date>2011-03-14 19:28:16 -0700</date>
            <delta_ts>2011-03-15 00:49:07 -0700</delta_ts>
            <desc>update3</desc>
            <filename>bug-55457-20110315112814.patch</filename>
            <type>text/plain</type>
            <size>27638</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA2OTAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwMTJjMDY2ODMwNTc2MTdmNDM2ODMzNTE5MmViMWMwN2M1
ZTYzN2EwLi43OGU1YTNhYzE1Y2EyNzEwYmIwY2M5ODYyYWQyMDcxZDM5MDdmYWJhIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDMtMDcgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtOUldUXSBBZGQgc3Vw
cG9ydCBmb3IgcmVmdGVzdHMgdG8gbmV3LXJ1bi13ZWJraXQtdGVzdHMuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1NDU3CisKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9zaW5nbGVfdGVzdF9y
dW5uZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvdGVzdF9mYWlsdXJlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXMucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVz
dC5weToKKwogMjAxMS0wMy0wOSAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgSGlkZSBMZWFrcyBWaWV3ZXIncyBVUkwgcHJvbXB0IGJ5IGRlZmF1bHQKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Np
bmdsZV90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2xheW91dF9wYWNrYWdlL3NpbmdsZV90ZXN0X3J1bm5lci5weQppbmRleCBkNzU1ZjY3ODdhNTEz
ODU4ZWYyNDZiOTVhODU2YWZlYzY2MmYzZmVjLi5hOGM3MTZmOGRjMGMyOGQ5MjY1ZDg3ZDVjYTk1
YzFmMmE3OWJiMDMzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS9zaW5nbGVfdGVzdF9ydW5uZXIucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3RfcnVu
bmVyLnB5CkBAIC00NCwxNCArNDQsNiBAQCBkZWYgcnVuX3NpbmdsZV90ZXN0KHBvcnQsIG9wdGlv
bnMsIHRlc3RfaW5wdXQsIGRyaXZlciwgd29ya2VyX25hbWUpOgogICAgIHJldHVybiBydW5uZXIu
cnVuKCkKIAogCi1jbGFzcyBFeHBlY3RlZERyaXZlck91dHB1dDoKLSAgICAiIiJHcm91cHMgaW5m
b3JtYXRpb24gYWJvdXQgYW4gZXhwZWN0ZWQgZHJpdmVyIG91dHB1dC4iIiIKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgdGV4dCwgaW1hZ2UsIGltYWdlX2hhc2gpOgotICAgICAgICBzZWxmLnRleHQg
PSB0ZXh0Ci0gICAgICAgIHNlbGYuaW1hZ2UgPSBpbWFnZQotICAgICAgICBzZWxmLmltYWdlX2hh
c2ggPSBpbWFnZV9oYXNoCi0KLQogY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcjoKIAogICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBvcHRpb25zLCBwb3J0LCBkcml2ZXIsIHRlc3RfaW5wdXQsIHdvcmtlcl9u
YW1lKToKQEAgLTYzLDEwICs1NSw0MyBAQCBjbGFzcyBTaW5nbGVUZXN0UnVubmVyOgogICAgICAg
ICBzZWxmLl93b3JrZXJfbmFtZSA9IHdvcmtlcl9uYW1lCiAgICAgICAgIHNlbGYuX3Rlc3RuYW1l
ID0gcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKHRlc3RfaW5wdXQuZmlsZW5hbWUpCiAKKyAg
ICAgICAgc2VsZi5faXNfcmVmdGVzdCA9IEZhbHNlCisgICAgICAgIHNlbGYuX2lzX21pc21hdGNo
X3JlZnRlc3QgPSBGYWxzZQorICAgICAgICBzZWxmLl9yZWZlcmVuY2VfZmlsZW5hbWUgPSBOb25l
CisKKyAgICAgICAgZnMgPSBwb3J0Ll9maWxlc3lzdGVtCisgICAgICAgIHJlZnRlc3RfZXhwZWN0
ZWRfZmlsZW5hbWUgPSBwb3J0LnJlZnRlc3RfZXhwZWN0ZWRfZmlsZW5hbWUoc2VsZi5fZmlsZW5h
bWUpCisgICAgICAgIGlmIGZzLmV4aXN0cyhyZWZ0ZXN0X2V4cGVjdGVkX2ZpbGVuYW1lKToKKyAg
ICAgICAgICAgIHNlbGYuX2lzX3JlZnRlc3QgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9yZWZl
cmVuY2VfZmlsZW5hbWUgPSByZWZ0ZXN0X2V4cGVjdGVkX2ZpbGVuYW1lCisKKyAgICAgICAgcmVm
dGVzdF9leHBlY3RlZF9taXNtYXRjaF9maWxlbmFtZSA9IHBvcnQucmVmdGVzdF9leHBlY3RlZF9t
aXNtYXRjaF9maWxlbmFtZShzZWxmLl9maWxlbmFtZSkKKyAgICAgICAgaWYgZnMuZXhpc3RzKHJl
ZnRlc3RfZXhwZWN0ZWRfbWlzbWF0Y2hfZmlsZW5hbWUpOgorICAgICAgICAgICAgaWYgc2VsZi5f
aXNfcmVmdGVzdDoKKyAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCdJdCBpcyBub3QgYWxsb3dl
ZCB0aGF0IG9uZSB0ZXN0IGZpbGUgaGFzIGJvdGgnCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnIGV4cGVjdGVkLmh0bWwgZmlsZSBhbmQgZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbCBmaWxlJwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBhdCB0aGUgc2FtZSB0aW1lLiBQbGVhc2UgcmVt
b3ZlIGVpdGhlciAlcyBvciAlcy4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmdGVz
dF9leHBlY3RlZF9maWxlbmFtZSwgcmVmdGVzdF9leHBlY3RlZF9taXNtYXRjaF9maWxlbmFtZSkK
KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5faXNfcmVmdGVzdCA9IFRy
dWUKKyAgICAgICAgICAgICAgICBzZWxmLl9pc19taXNtYXRjaF9yZWZ0ZXN0ID0gVHJ1ZQorICAg
ICAgICAgICAgICAgIHNlbGYuX3JlZmVyZW5jZV9maWxlbmFtZSA9IHJlZnRlc3RfZXhwZWN0ZWRf
bWlzbWF0Y2hfZmlsZW5hbWUKKworICAgICAgICBpZiBzZWxmLl9pc19yZWZ0ZXN0OgorICAgICAg
ICAgICAgIyBEZXRlY3QgYW5kIHJlcG9ydCBhIHRlc3Qgd2hpY2ggaGFzIGEgd3JvbmcgY29tYmlu
YXRpb24gb2YgZXhwZWN0YXRpb24gZmlsZXMuCisgICAgICAgICAgICAjIEZvciBleGFtcGxlLCBp
ZiAnZm9vLmh0bWwnIGhhcyB0d28gZXhwZWN0YXRpb24gZmlsZXMsICdmb28tZXhwZWN0ZWQuaHRt
bCcgYW5kCisgICAgICAgICAgICAjICdmb28tZXhwZWN0ZWQudHh0Jywgd2Ugc2hvdWxkIHdhcm4g
dXNlcnMuIE9uZSB0ZXN0IGZpbGUgbXVzdCBiZSB1c2VkIGV4Y2x1c2l2ZWx5CisgICAgICAgICAg
ICAjIGluIGVpdGhlciBsYXlvdXQgdGVzdHMgb3IgcmVmdGVzdHMsIGJ1dCBub3QgaW4gYm90aC4K
KyAgICAgICAgICAgIGZvciBzdWZmaXggaW4gWycudHh0JywgJy5jaGVja3N1bScsICcucG5nJ106
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZmlsZW5hbWUgPSBzZWxmLl9wb3J0LmV4cGVjdGVk
X2ZpbGVuYW1lKHNlbGYuX2ZpbGVuYW1lLCBzdWZmaXgpCisgICAgICAgICAgICAgICAgaWYgZnMu
ZXhpc3RzKGV4cGVjdGVkX2ZpbGVuYW1lKToKKyAgICAgICAgICAgICAgICAgICAgX2xvZy5lcnJv
cignVGhlIHJlZnRlc3QgKCVzKSBjYW4gbm90IGhhdmUgYW4gZXhwZWN0YXRpb24gZmlsZSAoJXMp
LicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIFBsZWFzZSByZW1vdmUgdGhhdCBm
aWxlLicsIHNlbGYuX3Rlc3RuYW1lLCBleHBlY3RlZF9maWxlbmFtZSkKKwogICAgIGRlZiBfZXhw
ZWN0ZWRfZHJpdmVyX291dHB1dChzZWxmKToKLSAgICAgICAgcmV0dXJuIEV4cGVjdGVkRHJpdmVy
T3V0cHV0KHNlbGYuX3BvcnQuZXhwZWN0ZWRfdGV4dChzZWxmLl9maWxlbmFtZSksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LmV4cGVjdGVkX2ltYWdlKHNl
bGYuX2ZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X3BvcnQuZXhwZWN0ZWRfY2hlY2tzdW0oc2VsZi5fZmlsZW5hbWUpKQorICAgICAgICByZXR1cm4g
YmFzZS5Ecml2ZXJPdXRwdXQoc2VsZi5fcG9ydC5leHBlY3RlZF90ZXh0KHNlbGYuX2ZpbGVuYW1l
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQuZXhwZWN0ZWRf
aW1hZ2Uoc2VsZi5fZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5fcG9ydC5leHBlY3RlZF9jaGVja3N1bShzZWxmLl9maWxlbmFtZSkpCiAKICAgICBkZWYg
X3Nob3VsZF9mZXRjaF9leHBlY3RlZF9jaGVja3N1bShzZWxmKToKICAgICAgICAgcmV0dXJuIChz
ZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3RzIGFuZApAQCAtODQsNyArMTA5LDEzIEBAIGNsYXNzIFNp
bmdsZVRlc3RSdW5uZXI6CiAKICAgICBkZWYgcnVuKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9v
cHRpb25zLm5ld19iYXNlbGluZSBvciBzZWxmLl9vcHRpb25zLnJlc2V0X3Jlc3VsdHM6Ci0gICAg
ICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3JlYmFzZWxpbmUoKQorICAgICAgICAgICAgaWYgc2Vs
Zi5faXNfcmVmdGVzdDoKKyAgICAgICAgICAgICAgICAjIFJldHVybnMgYSBkdW1teSBUZXN0UmVz
dWx0LiBXZSBkb24ndCBoYXZlIHRvIHJlYmFzZSBmb3IgcmVmdGVzdHMuCisgICAgICAgICAgICAg
ICAgcmV0dXJuIFRlc3RSZXN1bHQoc2VsZi5fZmlsZW5hbWUpCisgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9ydW5fcmViYXNlbGluZSgpCisgICAgICAgIGlm
IHNlbGYuX2lzX3JlZnRlc3Q6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3JlZnRlc3Qo
KQogICAgICAgICByZXR1cm4gc2VsZi5fcnVuX2NvbXBhcmVfdGVzdCgpCiAKICAgICBkZWYgX3J1
bl9jb21wYXJlX3Rlc3Qoc2VsZik6CkBAIC05OCw2ICsxMjksOCBAQCBjbGFzcyBTaW5nbGVUZXN0
UnVubmVyOgogICAgIGRlZiBfcnVuX3JlYmFzZWxpbmUoc2VsZik6CiAgICAgICAgIGRyaXZlcl9v
dXRwdXQgPSBzZWxmLl9kcml2ZXIucnVuX3Rlc3Qoc2VsZi5fZHJpdmVyX2lucHV0KCkpCiAgICAg
ICAgIGZhaWx1cmVzID0gc2VsZi5faGFuZGxlX2Vycm9yKGRyaXZlcl9vdXRwdXQpCisgICAgICAg
IHRlc3RfcmVzdWx0X3dyaXRlci53cml0ZV90ZXN0X3Jlc3VsdChzZWxmLl9wb3J0LCBzZWxmLl9v
cHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5LCBzZWxmLl9maWxlbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlcl9vdXRwdXQsIE5vbmUsIGZhaWx1
cmVzKQogICAgICAgICAjIEZJWE1FOiBJdCB0aGUgdGVzdCBjcmFzaGVkIG9yIHRpbWVkIG91dCwg
aXQgbWlnaHQgYmUgYmV0dHRlciB0byBhdm9pZAogICAgICAgICAjIHRvIHdyaXRlIG5ldyBiYXNl
bGluZXMuCiAgICAgICAgIHNlbGYuX3NhdmVfYmFzZWxpbmVzKGRyaXZlcl9vdXRwdXQpCkBAIC0x
NDUsMjIgKzE3OCwzMSBAQCBjbGFzcyBTaW5nbGVUZXN0UnVubmVyOgogCiAgICAgICAgIHBvcnQu
dXBkYXRlX2Jhc2VsaW5lKG91dHB1dF9wYXRoLCBkYXRhKQogCi0gICAgZGVmIF9oYW5kbGVfZXJy
b3Ioc2VsZiwgZHJpdmVyX291dHB1dCk6CisgICAgZGVmIF9oYW5kbGVfZXJyb3Ioc2VsZiwgZHJp
dmVyX291dHB1dCwgcmVmZXJlbmNlX2ZpbGVuYW1lPU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5z
IHRlc3QgZmFpbHVyZXMgaWYgc29tZSB1bnVzdWFsIGVycm9ycyBoYXBwZW4gaW4gZHJpdmVyJ3Mg
cnVuLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgZHJpdmVyX291dHB1dDogVGhlIG91dHB1
dCBmcm9tIHRoZSBkcml2ZXIuCisgICAgICAgICAgcmVmZXJlbmNlX2ZpbGVuYW1lOiBUaGUgZnVs
bCBwYXRoIHRvIHRoZSByZWZlcmVuY2UgZmlsZSB3aGljaCBwcm9kdWNlZCB0aGUgZHJpdmVyX291
dHB1dC4KKyAgICAgICAgICAgICAgVGhpcyBhcmcgaXMgb3B0aW9uYWwgYW5kIHNob3VsZCBiZSB1
c2VkIG9ubHkgaW4gcmVmdGVzdHMgdW50aWwgd2UgaGF2ZSBhIGJldHRlciB3YXkgdG8ga25vdwor
ICAgICAgICAgICAgICB3aGljaCBodG1sIGZpbGUgaXMgdXNlZCBmb3IgcHJvZHVjaW5nIHRoZSBk
cml2ZXJfb3V0cHV0LgorICAgICAgICAiIiIKICAgICAgICAgZmFpbHVyZXMgPSBbXQogICAgICAg
ICBmcyA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0KICAgICAgICAgaWYgZHJpdmVyX291dHB1dC50
aW1lb3V0OgotICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVy
ZVRpbWVvdXQoKSkKKyAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZh
aWx1cmVUaW1lb3V0KHJlZmVyZW5jZV9maWxlbmFtZSkpCisKKyAgICAgICAgaWYgcmVmZXJlbmNl
X2ZpbGVuYW1lOgorICAgICAgICAgICAgdGVzdG5hbWUgPSBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rl
c3RfZmlsZW5hbWUocmVmZXJlbmNlX2ZpbGVuYW1lKQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgdGVzdG5hbWUgPSBzZWxmLl90ZXN0bmFtZQorCiAgICAgICAgIGlmIGRyaXZlcl9vdXRwdXQu
Y3Jhc2g6Ci0gICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJl
Q3Jhc2goKSkKLSAgICAgICAgICAgIF9sb2cuZGVidWcoIiVzIFN0YWNrdHJhY2UgZm9yICVzOlxu
JXMiICUgKHNlbGYuX3dvcmtlcl9uYW1lLCBzZWxmLl90ZXN0bmFtZSwKKyAgICAgICAgICAgIGZh
aWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVDcmFzaChyZWZlcmVuY2VfZmlsZW5h
bWUpKQorICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgU3RhY2t0cmFjZSBmb3IgJXM6XG4lcyIg
JSAoc2VsZi5fd29ya2VyX25hbWUsIHRlc3RuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyX291dHB1dC5lcnJvcikpCi0gICAg
ICAgICAgICAjIEZJWE1FOiBVc2UgdGVzdF9yZXN1bHRfd3JpdGVyIG1vZHVsZS4KLSAgICAgICAg
ICAgIHN0YWNrX2ZpbGVuYW1lID0gZnMuam9pbihzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGlyZWN0
b3J5LCBzZWxmLl90ZXN0bmFtZSkKLSAgICAgICAgICAgIHN0YWNrX2ZpbGVuYW1lID0gZnMuc3Bs
aXRleHQoc3RhY2tfZmlsZW5hbWUpWzBdICsgIi1zdGFjay50eHQiCi0gICAgICAgICAgICBmcy5t
YXliZV9tYWtlX2RpcmVjdG9yeShmcy5kaXJuYW1lKHN0YWNrX2ZpbGVuYW1lKSkKLSAgICAgICAg
ICAgIGZzLndyaXRlX3RleHRfZmlsZShzdGFja19maWxlbmFtZSwgZHJpdmVyX291dHB1dC5lcnJv
cikKICAgICAgICAgZWxpZiBkcml2ZXJfb3V0cHV0LmVycm9yOgotICAgICAgICAgICAgX2xvZy5k
ZWJ1ZygiJXMgJXMgb3V0cHV0IHN0ZGVyciBsaW5lczpcbiVzIiAlIChzZWxmLl93b3JrZXJfbmFt
ZSwgc2VsZi5fdGVzdG5hbWUsCisgICAgICAgICAgICBfbG9nLmRlYnVnKCIlcyAlcyBvdXRwdXQg
c3RkZXJyIGxpbmVzOlxuJXMiICUgKHNlbGYuX3dvcmtlcl9uYW1lLCB0ZXN0bmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJp
dmVyX291dHB1dC5lcnJvcikpCiAgICAgICAgIHJldHVybiBmYWlsdXJlcwogCkBAIC0yMTAsMyAr
MjUyLDMxIEBAIGNsYXNzIFNpbmdsZVRlc3RSdW5uZXI6CiAgICAgICAgIGVsaWYgZHJpdmVyX291
dHB1dC5pbWFnZV9oYXNoICE9IGV4cGVjdGVkX2RyaXZlcl9vdXRwdXRzLmltYWdlX2hhc2g6CiAg
ICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlSW1hZ2VIYXNo
TWlzbWF0Y2goKSkKICAgICAgICAgcmV0dXJuIGZhaWx1cmVzCisKKyAgICBkZWYgX3J1bl9yZWZ0
ZXN0KHNlbGYpOgorICAgICAgICBkcml2ZXJfb3V0cHV0MSA9IHNlbGYuX2RyaXZlci5ydW5fdGVz
dChzZWxmLl9kcml2ZXJfaW5wdXQoKSkKKyAgICAgICAgZHJpdmVyX291dHB1dDIgPSBzZWxmLl9k
cml2ZXIucnVuX3Rlc3QoCisgICAgICAgICAgICBiYXNlLkRyaXZlcklucHV0KHNlbGYuX3JlZmVy
ZW5jZV9maWxlbmFtZSwgc2VsZi5fdGltZW91dCwgZHJpdmVyX291dHB1dDEuaW1hZ2VfaGFzaCkp
CisgICAgICAgIHRlc3RfcmVzdWx0ID0gc2VsZi5fY29tcGFyZV9vdXRwdXRfd2l0aF9yZWZlcmVu
Y2UoZHJpdmVyX291dHB1dDEsIGRyaXZlcl9vdXRwdXQyKQorCisgICAgICAgIHRlc3RfcmVzdWx0
X3dyaXRlci53cml0ZV90ZXN0X3Jlc3VsdChzZWxmLl9wb3J0LCBzZWxmLl9vcHRpb25zLnJlc3Vs
dHNfZGlyZWN0b3J5LCBzZWxmLl9maWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRyaXZlcl9vdXRwdXQxLCBkcml2ZXJfb3V0cHV0MiwgdGVzdF9y
ZXN1bHQuZmFpbHVyZXMpCisgICAgICAgIHJldHVybiB0ZXN0X3Jlc3VsdAorCisgICAgZGVmIF9j
b21wYXJlX291dHB1dF93aXRoX3JlZmVyZW5jZShzZWxmLCBkcml2ZXJfb3V0cHV0MSwgZHJpdmVy
X291dHB1dDIpOgorICAgICAgICB0b3RhbF90ZXN0X3RpbWUgPSBkcml2ZXJfb3V0cHV0MS50ZXN0
X3RpbWUgKyBkcml2ZXJfb3V0cHV0Mi50ZXN0X3RpbWUKKyAgICAgICAgZmFpbHVyZXMgPSBbXQor
ICAgICAgICBmYWlsdXJlcy5leHRlbmQoc2VsZi5faGFuZGxlX2Vycm9yKGRyaXZlcl9vdXRwdXQx
KSkKKyAgICAgICAgaWYgZmFpbHVyZXM6CisgICAgICAgICAgICAjIERvbid0IGNvbnRpbnVlIGFu
eSBtb3JlIGlmIHdlIGFscmVhZHkgaGF2ZSBjcmFzaCBvciB0aW1lb3V0LgorICAgICAgICAgICAg
cmV0dXJuIFRlc3RSZXN1bHQoc2VsZi5fZmlsZW5hbWUsIGZhaWx1cmVzLCB0b3RhbF90ZXN0X3Rp
bWUpCisgICAgICAgIGZhaWx1cmVzLmV4dGVuZChzZWxmLl9oYW5kbGVfZXJyb3IoZHJpdmVyX291
dHB1dDIsIHJlZmVyZW5jZV9maWxlbmFtZT1zZWxmLl9yZWZlcmVuY2VfZmlsZW5hbWUpKQorICAg
ICAgICBpZiBmYWlsdXJlczoKKyAgICAgICAgICAgIHJldHVybiBUZXN0UmVzdWx0KHNlbGYuX2Zp
bGVuYW1lLCBmYWlsdXJlcywgdG90YWxfdGVzdF90aW1lKQorCisgICAgICAgIGlmIHNlbGYuX2lz
X21pc21hdGNoX3JlZnRlc3Q6CisgICAgICAgICAgICBpZiBkcml2ZXJfb3V0cHV0MS5pbWFnZV9o
YXNoID09IGRyaXZlcl9vdXRwdXQyLmltYWdlX2hhc2g6CisgICAgICAgICAgICAgICAgZmFpbHVy
ZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZVJlZnRlc3RNaXNtYXRjaERpZE5vdE9jY3Vy
KCkpCisgICAgICAgIGVsaWYgZHJpdmVyX291dHB1dDEuaW1hZ2VfaGFzaCAhPSBkcml2ZXJfb3V0
cHV0Mi5pbWFnZV9oYXNoOgorICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVy
ZXMuRmFpbHVyZVJlZnRlc3RNaXNtYXRjaCgpKQorICAgICAgICByZXR1cm4gVGVzdFJlc3VsdChz
ZWxmLl9maWxlbmFtZSwgZmFpbHVyZXMsIHRvdGFsX3Rlc3RfdGltZSkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFp
bHVyZXMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFj
a2FnZS90ZXN0X2ZhaWx1cmVzLnB5CmluZGV4IDRhZTQzYzBiYmViZjRiMjZmZWI1N2ZiZDhiOWNk
NDM4MjFkNDIxNTYuLjFmYWQ3NzI0NmI4NWU2MmQwMGYzNWEwNWZkMmNjNjliMjNlNDk2ZjIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL3Rlc3RfZmFpbHVyZXMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9mYWlsdXJlcy5weQpAQCAtNjAsMTEgKzYwLDEzIEBA
IGRlZiBkZXRlcm1pbmVfcmVzdWx0X3R5cGUoZmFpbHVyZV9saXN0KToKICAgICAgICAgaXNfdGV4
dF9mYWlsdXJlID0gRmFpbHVyZVRleHRNaXNtYXRjaCBpbiBmYWlsdXJlX3R5cGVzCiAgICAgICAg
IGlzX2ltYWdlX2ZhaWx1cmUgPSAoRmFpbHVyZUltYWdlSGFzaEluY29ycmVjdCBpbiBmYWlsdXJl
X3R5cGVzIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFpbHVyZUltYWdlSGFzaE1p
c21hdGNoIGluIGZhaWx1cmVfdHlwZXMpCisgICAgICAgIGlzX3JlZnRlc3RfZmFpbHVyZSA9IChG
YWlsdXJlUmVmdGVzdE1pc21hdGNoIGluIGZhaWx1cmVfdHlwZXMgb3IKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2hEaWROb3RPY2N1ciBpbiBmYWls
dXJlX3R5cGVzKQogICAgICAgICBpZiBpc190ZXh0X2ZhaWx1cmUgYW5kIGlzX2ltYWdlX2ZhaWx1
cmU6CiAgICAgICAgICAgICByZXR1cm4gdGVzdF9leHBlY3RhdGlvbnMuSU1BR0VfUExVU19URVhU
CiAgICAgICAgIGVsaWYgaXNfdGV4dF9mYWlsdXJlOgogICAgICAgICAgICAgcmV0dXJuIHRlc3Rf
ZXhwZWN0YXRpb25zLlRFWFQKLSAgICAgICAgZWxpZiBpc19pbWFnZV9mYWlsdXJlOgorICAgICAg
ICBlbGlmIGlzX2ltYWdlX2ZhaWx1cmUgb3IgaXNfcmVmdGVzdF9mYWlsdXJlOgogICAgICAgICAg
ICAgcmV0dXJuIHRlc3RfZXhwZWN0YXRpb25zLklNQUdFCiAgICAgICAgIGVsc2U6CiAgICAgICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bmNsYXNzaWZpYWJsZSBzZXQgb2YgZmFpbHVyZXM6ICIK
QEAgLTE3NywxMSArMTc5LDE3IEBAIGNsYXNzIEZhaWx1cmVUaW1lb3V0KFRlc3RGYWlsdXJlKToK
ICAgICAiIiJUZXN0IHRpbWVkIG91dC4gIFdlIGFsc28gd2FudCB0byByZXN0YXJ0IER1bXBSZW5k
ZXJUcmVlIGlmIHRoaXMKICAgICBoYXBwZW5zLiIiIgogCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHJlZmVyZW5jZV9maWxlbmFtZT1Ob25lKToKKyAgICAgICAgc2VsZi5yZWZlcmVuY2VfZmlsZW5h
bWUgPSByZWZlcmVuY2VfZmlsZW5hbWUKKwogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgbWVz
c2FnZSgpOgogICAgICAgICByZXR1cm4gIlRlc3QgdGltZWQgb3V0IgogCiAgICAgZGVmIHJlc3Vs
dF9odG1sX291dHB1dChzZWxmLCBmaWxlbmFtZSk6CisgICAgICAgIGlmIHNlbGYucmVmZXJlbmNl
X2ZpbGVuYW1lOgorICAgICAgICAgICAgcmV0dXJuICI8c3Ryb25nPiVzPC9zdHJvbmc+IChvY2N1
cmVkIGluIDxhIGhyZWY9JXM+ZXhwZWN0ZWQgaHRtbDwvYT4pIiAlICgKKyAgICAgICAgICAgICAg
ICBzZWxmLm1lc3NhZ2UoKSwgc2VsZi5yZWZlcmVuY2VfZmlsZW5hbWUpCiAgICAgICAgIHJldHVy
biAiPHN0cm9uZz4lczwvc3Ryb25nPiIgJSBzZWxmLm1lc3NhZ2UoKQogCiAgICAgZGVmIHNob3Vs
ZF9raWxsX2R1bXBfcmVuZGVyX3RyZWUoc2VsZik6CkBAIC0xOTEsNiArMTk5LDkgQEAgY2xhc3Mg
RmFpbHVyZVRpbWVvdXQoVGVzdEZhaWx1cmUpOgogY2xhc3MgRmFpbHVyZUNyYXNoKFRlc3RGYWls
dXJlKToKICAgICAiIiJEdW1wUmVuZGVyVHJlZSBjcmFzaGVkLiIiIgogCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHJlZmVyZW5jZV9maWxlbmFtZT1Ob25lKToKKyAgICAgICAgc2VsZi5yZWZlcmVu
Y2VfZmlsZW5hbWUgPSByZWZlcmVuY2VfZmlsZW5hbWUKKwogICAgIEBzdGF0aWNtZXRob2QKICAg
ICBkZWYgbWVzc2FnZSgpOgogICAgICAgICByZXR1cm4gIkR1bXBSZW5kZXJUcmVlIGNyYXNoZWQi
CkBAIC0xOTgsOCArMjA5LDExIEBAIGNsYXNzIEZhaWx1cmVDcmFzaChUZXN0RmFpbHVyZSk6CiAg
ICAgZGVmIHJlc3VsdF9odG1sX291dHB1dChzZWxmLCBmaWxlbmFtZSk6CiAgICAgICAgICMgRklY
TUU6IGNyZWF0ZSBhIGxpbmsgdG8gdGhlIG1pbmlkdW1wIGZpbGUKICAgICAgICAgc3RhY2sgPSBz
ZWxmLnJlbGF0aXZlX291dHB1dF9maWxlbmFtZShmaWxlbmFtZSwgIi1zdGFjay50eHQiKQotICAg
ICAgICByZXR1cm4gIjxzdHJvbmc+JXM8L3N0cm9uZz4gPGEgaHJlZj0lcz5zdGFjazwvYT4iICUg
KHNlbGYubWVzc2FnZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YWNrKQorICAgICAgICBpZiBzZWxmLnJlZmVyZW5jZV9m
aWxlbmFtZToKKyAgICAgICAgICAgIHJldHVybiAiPHN0cm9uZz4lczwvc3Ryb25nPiA8YSBocmVm
PSVzPnN0YWNrPC9hPiAob2NjdXJlZCBpbiA8YSBocmVmPSVzPmV4cGVjdGVkIGh0bWw8L2E+KSIg
JSAoCisgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCksIHN0YWNrLCBzZWxmLnJlZmVyZW5j
ZV9maWxlbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAiPHN0cm9uZz4l
czwvc3Ryb25nPiA8YSBocmVmPSVzPnN0YWNrPC9hPiIgJSAoc2VsZi5tZXNzYWdlKCksIHN0YWNr
KQogCiAgICAgZGVmIHNob3VsZF9raWxsX2R1bXBfcmVuZGVyX3RyZWUoc2VsZik6CiAgICAgICAg
IHJldHVybiBUcnVlCkBAIC0yNzksOSArMjkzLDQ4IEBAIGNsYXNzIEZhaWx1cmVJbWFnZUhhc2hJ
bmNvcnJlY3QoQ29tcGFyaXNvblRlc3RGYWlsdXJlKToKICAgICBkZWYgcmVzdWx0X2h0bWxfb3V0
cHV0KHNlbGYsIGZpbGVuYW1lKToKICAgICAgICAgcmV0dXJuICI8c3Ryb25nPiVzPC9zdHJvbmc+
IiAlIHNlbGYubWVzc2FnZSgpCiAKKworY2xhc3MgRmFpbHVyZVJlZnRlc3RNaXNtYXRjaChDb21w
YXJpc29uVGVzdEZhaWx1cmUpOgorICAgICIiIlRoZSByZXN1bHQgZGlkbid0IG1hdGNoIHRoZSBy
ZWZlcmVuY2UgcmVuZGVyaW5nLiIiIgorCisgICAgT1VUX0ZJTEVOQU1FUyA9ICgiLWV4cGVjdGVk
Lmh0bWwiLCAiLWV4cGVjdGVkLnBuZyIsICItYWN0dWFsLnBuZyIsCisgICAgICAgICAgICAgICAg
ICAgICAiLWRpZmYucG5nIiwpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIG1lc3NhZ2Uo
KToKKyAgICAgICAgcmV0dXJuICJNaXNtYXRjaCB3aXRoIHJlZmVyZW5jZSIKKworICAgIGRlZiBv
dXRwdXRfbGlua3Moc2VsZiwgZmlsZW5hbWUsIG91dF9uYW1lcyk6CisgICAgICAgIGxpbmtzID0g
WycnXQorICAgICAgICB1cmlzID0gW3NlbGYucmVsYXRpdmVfb3V0cHV0X2ZpbGVuYW1lKGZpbGVu
YW1lLCBvdXRwdXRfZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgZm9yIG91dHB1dF9maWxlbmFt
ZSBpbiBvdXRfbmFtZXNdCisgICAgICAgIGZvciB0ZXh0LCB1cmkgaW4gemlwKFsnLWV4cGVjdGVk
Lmh0bWwnLCAnZXhwZWN0ZWQnLCAnYWN0dWFsJywgJ2RpZmYnXSwgdXJpcyk6CisgICAgICAgICAg
ICBsaW5rcy5hcHBlbmQoIjxhIGhyZWY9JyVzJz4lczwvYT4iICUgKHVyaSwgdGV4dCkpCisgICAg
ICAgIHJldHVybiAnICcuam9pbihsaW5rcykKKworCitjbGFzcyBGYWlsdXJlUmVmdGVzdE1pc21h
dGNoRGlkTm90T2NjdXIoQ29tcGFyaXNvblRlc3RGYWlsdXJlKToKKyAgICAiIiJVbmV4cGVjdGVk
IG1hdGNoIGJldHdlZW4gdGhlIHJlc3VsdCBhbmQgdGhlIHJlZmVyZW5jZSByZW5kZXJpbmcuIiIi
CisKKyAgICBPVVRfRklMRU5BTUVTID0gKCItZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbCIsICItYWN0
dWFsLnBuZyIsKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBtZXNzYWdlKCk6CisgICAg
ICAgIHJldHVybiAiTWlzbWF0Y2ggd2l0aCB0aGUgcmVmZXJlbmNlIGRpZCBub3Qgb2NjdXIiCisK
KyAgICBkZWYgb3V0cHV0X2xpbmtzKHNlbGYsIGZpbGVuYW1lLCBvdXRfbmFtZXMpOgorICAgICAg
ICBsaW5rcyA9IFsnJ10KKyAgICAgICAgdXJpcyA9IFtzZWxmLnJlbGF0aXZlX291dHB1dF9maWxl
bmFtZShmaWxlbmFtZSwgb3V0cHV0X2ZpbGVuYW1lKQorICAgICAgICAgICAgICAgIGZvciBvdXRw
dXRfZmlsZW5hbWUgaW4gb3V0X25hbWVzXQorICAgICAgICBmb3IgdGV4dCwgdXJpIGluIHppcChb
Jy1leHBlY3RlZC1taXNtYXRjaC5odG1sJywgJ2ltYWdlJ10sIHVyaXMpOgorICAgICAgICAgICAg
bGlua3MuYXBwZW5kKCI8YSBocmVmPSclcyc+JXM8L2E+IiAlICh1cmksIHRleHQpKQorICAgICAg
ICByZXR1cm4gJyAnLmpvaW4obGlua3MpCisKKwogIyBDb252ZW5pZW50IGNvbGxlY3Rpb24gb2Yg
YWxsIGZhaWx1cmUgY2xhc3NlcyBmb3IgYW55dGhpbmcgdGhhdCBtaWdodAogIyBuZWVkIHRvIGVu
dW1lcmF0ZSBvdmVyIHRoZW0gYWxsLgogQUxMX0ZBSUxVUkVfQ0xBU1NFUyA9IChGYWlsdXJlVGlt
ZW91dCwgRmFpbHVyZUNyYXNoLCBGYWlsdXJlTWlzc2luZ1Jlc3VsdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgRmFpbHVyZVRleHRNaXNtYXRjaCwgRmFpbHVyZU1pc3NpbmdJbWFnZUhhc2gsCiAg
ICAgICAgICAgICAgICAgICAgICAgIEZhaWx1cmVNaXNzaW5nSW1hZ2UsIEZhaWx1cmVJbWFnZUhh
c2hNaXNtYXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgRmFpbHVyZUltYWdlSGFzaEluY29y
cmVjdCkKKyAgICAgICAgICAgICAgICAgICAgICAgRmFpbHVyZUltYWdlSGFzaEluY29ycmVjdCwg
RmFpbHVyZVJlZnRlc3RNaXNtYXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgRmFpbHVyZVJl
ZnRlc3RNaXNtYXRjaERpZE5vdE9jY3VyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRfd3JpdGVyLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9y
ZXN1bHRfd3JpdGVyLnB5CmluZGV4IDg4MmRhOTE3MjE2NzczZDRiYTc0M2I3ZDNlN2QyNTNiZGIy
MjM3YWQuLmUyMDk1MDMwZmU4NDA2OWM0YTgzNWY3YmMyMjBkNmQyZDA5M2EyOTMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rl
c3RfcmVzdWx0X3dyaXRlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIucHkKQEAgLTY0LDcgKzY0LDE3
IEBAIGRlZiB3cml0ZV90ZXN0X3Jlc3VsdChwb3J0LCByb290X291dHB1dF9kaXIsIGZpbGVuYW1l
LCBkcml2ZXJfb3V0cHV0LAogICAgICAgICAgICAgICAgIGNoZWNrc3Vtc19taXNtYXRjaF9idXRf
aW1hZ2VzX2FyZV9zYW1lID0gVHJ1ZQogICAgICAgICAgICAgICAgIGltYWdlaGFzaF9taXNtYXRj
aF9mYWlsdXJlID0gZmFpbHVyZQogICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZmFpbHVyZSwgdGVz
dF9mYWlsdXJlcy5GYWlsdXJlQ3Jhc2gpOgotICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NyYXNo
X3JlcG9ydChkcml2ZXJfb3V0cHV0LmVycm9yKQorICAgICAgICAgICAgaWYgZmFpbHVyZS5yZWZl
cmVuY2VfZmlsZW5hbWU6CisgICAgICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NyYXNoX3JlcG9y
dChleHBlY3RlZF9kcml2ZXJfb3V0cHV0LmVycm9yKQorICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICB3cml0ZXIud3JpdGVfY3Jhc2hfcmVwb3J0KGRyaXZlcl9vdXRwdXQuZXJyb3Ip
CisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShmYWlsdXJlLCB0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVS
ZWZ0ZXN0TWlzbWF0Y2gpOgorICAgICAgICAgICAgd3JpdGVyLndyaXRlX2ltYWdlX2ZpbGVzKGRy
aXZlcl9vdXRwdXQuaW1hZ2UsIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQuaW1hZ2UpCisgICAgICAg
ICAgICB3cml0ZXIuY3JlYXRlX2ltYWdlX2RpZmZfYW5kX3dyaXRlX3Jlc3VsdChkcml2ZXJfb3V0
cHV0LmltYWdlLCBleHBlY3RlZF9kcml2ZXJfb3V0cHV0LmltYWdlKQorICAgICAgICAgICAgd3Jp
dGVyLmNvcHlfZmlsZShwb3J0LnJlZnRlc3RfZXhwZWN0ZWRfZmlsZW5hbWUoZmlsZW5hbWUpLCAn
LWV4cGVjdGVkLmh0bWwnKQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZmFpbHVyZSwgdGVzdF9m
YWlsdXJlcy5GYWlsdXJlUmVmdGVzdE1pc21hdGNoRGlkTm90T2NjdXIpOgorICAgICAgICAgICAg
d3JpdGVyLndyaXRlX2ltYWdlX2ZpbGVzKGRyaXZlcl9vdXRwdXQuaW1hZ2UsIGV4cGVjdGVkX2lt
YWdlPU5vbmUpCisgICAgICAgICAgICB3cml0ZXIuY29weV9maWxlKHBvcnQucmVmdGVzdF9leHBl
Y3RlZF9taXNtYXRjaF9maWxlbmFtZShmaWxlbmFtZSksICctZXhwZWN0ZWQtbWlzbWF0Y2guaHRt
bCcpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShmYWlsdXJl
LCAodGVzdF9mYWlsdXJlcy5GYWlsdXJlVGltZW91dCwpKQogCkBAIC0xMzUsOSArMTQ1LDkgQEAg
Y2xhc3MgVGVzdFJlc3VsdFdyaXRlcihvYmplY3QpOgogICAgICAgICBleHBlY3RlZF9maWxlbmFt
ZSA9IHNlbGYub3V0cHV0X2ZpbGVuYW1lKHNlbGYuRklMRU5BTUVfU1VGRklYX0VYUEVDVEVEICsg
ZmlsZV90eXBlKQogCiAgICAgICAgIGZzID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbQotICAgICAg
ICBpZiBvdXRwdXQ6CisgICAgICAgIGlmIG91dHB1dCBpcyBub3QgTm9uZToKICAgICAgICAgICAg
IGZzLndyaXRlX2JpbmFyeV9maWxlKGFjdHVhbF9maWxlbmFtZSwgb3V0cHV0KQotICAgICAgICBp
ZiBleHBlY3RlZDoKKyAgICAgICAgaWYgZXhwZWN0ZWQgaXMgbm90IE5vbmU6CiAgICAgICAgICAg
ICBmcy53cml0ZV9iaW5hcnlfZmlsZShleHBlY3RlZF9maWxlbmFtZSwgZXhwZWN0ZWQpCiAKICAg
ICBkZWYgd3JpdGVfY3Jhc2hfcmVwb3J0KHNlbGYsIGVycm9yKToKQEAgLTE5MywzICsyMDMsMTAg
QEAgY2xhc3MgVGVzdFJlc3VsdFdyaXRlcihvYmplY3QpOgogICAgICAgICAjIFRvIGRvIHNvLCB3
ZSBoYXZlIHRvIGNoYW5nZSBwb3J0LmRpZmZfaW1hZ2UoKSBhcyB3ZWxsLgogICAgICAgICBkaWZm
X2ZpbGVuYW1lID0gc2VsZi5vdXRwdXRfZmlsZW5hbWUoc2VsZi5GSUxFTkFNRV9TVUZGSVhfSU1B
R0VfRElGRikKICAgICAgICAgcmV0dXJuIHNlbGYuX3BvcnQuZGlmZl9pbWFnZShhY3R1YWxfaW1h
Z2UsIGV4cGVjdGVkX2ltYWdlLCBkaWZmX2ZpbGVuYW1lKQorCisgICAgZGVmIGNvcHlfZmlsZShz
ZWxmLCBzcmNfZmlsZXBhdGgsIGRzdF9leHRlbnNpb24pOgorICAgICAgICBmcyA9IHNlbGYuX3Bv
cnQuX2ZpbGVzeXN0ZW0KKyAgICAgICAgYXNzZXJ0IGZzLmV4aXN0cyhzcmNfZmlsZXBhdGgpLCAn
c3JjX2ZpbGVwYXRoOiAlcycgJSBzcmNfZmlsZXBhdGgKKyAgICAgICAgZHN0X2ZpbGVuYW1lID0g
c2VsZi5vdXRwdXRfZmlsZW5hbWUoZHN0X2V4dGVuc2lvbikKKyAgICAgICAgc2VsZi5fbWFrZV9v
dXRwdXRfZGlyZWN0b3J5KCkKKyAgICAgICAgZnMuY29weWZpbGUoc3JjX2ZpbGVwYXRoLCBkc3Rf
ZmlsZW5hbWUpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2UucHkKaW5kZXggMTU5MDJiNDBhZDgxODBkYjlhZGYzYzFmN2EwYTRiYzg0YzljYjNlZC4u
YjE4NmY3NWY5N2ZjMzcwYmU3ZTUzOTBhNWMwN2M0YzJlNzkxODE2ZiAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpAQCAtMzQ3LDYgKzM0
NywxNCBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIHRleHQgPSBzZWxmLl9maWxlc3lz
dGVtLnJlYWRfYmluYXJ5X2ZpbGUocGF0aCkKICAgICAgICAgcmV0dXJuIHRleHQucmVwbGFjZSgi
XHJcbiIsICJcbiIpCiAKKyAgICBkZWYgcmVmdGVzdF9leHBlY3RlZF9maWxlbmFtZShzZWxmLCBm
aWxlbmFtZSk6CisgICAgICAgICIiIlJldHVybiB0aGUgZmlsZW5hbWUgb2YgcmVmZXJlbmNlIHdl
IGV4cGVjdCB0aGUgdGVzdCBtYXRjaGVzLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5leHBlY3Rl
ZF9maWxlbmFtZShmaWxlbmFtZSwgJy5odG1sJykKKworICAgIGRlZiByZWZ0ZXN0X2V4cGVjdGVk
X21pc21hdGNoX2ZpbGVuYW1lKHNlbGYsIGZpbGVuYW1lKToKKyAgICAgICAgIiIiUmV0dXJuIHRo
ZSBmaWxlbmFtZSBvZiByZWZlcmVuY2Ugd2UgZG9uJ3QgZXhwZWN0IHRoZSB0ZXN0IG1hdGNoZXMu
IiIiCisgICAgICAgIHJldHVybiBzZWxmLmV4cGVjdGVkX2ZpbGVuYW1lKGZpbGVuYW1lLCAnLW1p
c21hdGNoLmh0bWwnKQorCiAgICAgZGVmIGZpbGVuYW1lX3RvX3VyaShzZWxmLCBmaWxlbmFtZSk6
CiAgICAgICAgICIiIkNvbnZlcnQgYSB0ZXN0IGZpbGUgKHdoaWNoIGlzIGFuIGFic29sdXRlIHBh
dGgpIHRvIGEgVVJJLiIiIgogICAgICAgICBMQVlPVVRURVNUX0hUVFBfRElSID0gImh0dHAvdGVz
dHMvIgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC90ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0
LnB5CmluZGV4IGQzMjNlZDVlYWNhYWY5ZjE0NWI3NDFkM2M2OWE4ZGVhZTcxODJhN2EuLjRhZWI4
YmJlYjY5MTRhMmFiMGVhYzRjOGJjZDc2YWExMmY0YWM4OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKQEAgLTUwLDYgKzUwLDcgQEAg
Y2xhc3MgVGVzdEluc3RhbmNlOgogICAgICAgICBzZWxmLmtleWJvYXJkID0gRmFsc2UKICAgICAg
ICAgc2VsZi5lcnJvciA9ICcnCiAgICAgICAgIHNlbGYudGltZW91dCA9IEZhbHNlCisgICAgICAg
IHNlbGYuaXNfcmVmdGVzdCA9IEZhbHNlCiAKICAgICAgICAgIyBUaGUgdmFsdWVzIG9mIGVhY2gg
ZmllbGQgYXJlIHRyZWF0ZWQgYXMgcmF3IGJ5dGUgc3RyaW5ncy4gVGhleQogICAgICAgICAjIHdp
bGwgYmUgY29udmVydGVkIHRvIHVuaWNvZGUgc3RyaW5ncyB3aGVyZSBhcHByb3ByaWF0ZSB1c2lu
ZwpAQCAtNzgsNiArNzksMTMgQEAgY2xhc3MgVGVzdExpc3Q6CiAgICAgICAgICAgICB0ZXN0Ll9f
ZGljdF9fW2tleV0gPSB2YWx1ZQogICAgICAgICBzZWxmLnRlc3RzW25hbWVdID0gdGVzdAogCisg
ICAgZGVmIGFkZF9yZWZ0ZXN0KHNlbGYsIG5hbWUsIHJlZmVyZW5jZV9uYW1lLCBzYW1lX2ltYWdl
KToKKyAgICAgICAgc2VsZi5hZGQobmFtZSwgYWN0dWFsX2NoZWNrc3VtPSd4eHgnLCBhY3R1YWxf
aW1hZ2U9J1hYWCcsIGlzX3JlZnRlc3Q9VHJ1ZSkKKyAgICAgICAgaWYgc2FtZV9pbWFnZToKKyAg
ICAgICAgICAgIHNlbGYuYWRkKHJlZmVyZW5jZV9uYW1lLCBhY3R1YWxfY2hlY2tzdW09J3h4eCcs
IGFjdHVhbF9pbWFnZT0nWFhYJywgaXNfcmVmdGVzdD1UcnVlKQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgc2VsZi5hZGQocmVmZXJlbmNlX25hbWUsIGFjdHVhbF9jaGVja3N1bT0neXl5Jywg
YWN0dWFsX2ltYWdlPSdZWVknLCBpc19yZWZ0ZXN0PVRydWUpCisKICAgICBkZWYga2V5cyhzZWxm
KToKICAgICAgICAgcmV0dXJuIHNlbGYudGVzdHMua2V5cygpCiAKQEAgLTEyOSw2ICsxMzcsMTYg
QEAgZGVmIHVuaXRfdGVzdF9saXN0KCk6CiAgICAgIyBoZWxwZnVsbHkgZmlsdGVyZWQgdG8gIlxy
XHJcbiIgYnkgb3VyIFB5dGhvbi9DeWd3aW4gdG9vbGluZy4KICAgICB0ZXN0cy5hZGQoJ3Bhc3Nl
cy90ZXh0Lmh0bWwnLAogICAgICAgICAgICAgICBleHBlY3RlZF90ZXh0PSdcbmZvb1xuXG4nLCBh
Y3R1YWxfdGV4dD0nXG5mb29cclxuXHJcclxuJykKKworICAgICMgRm9yIHJlZnRlc3RzLgorICAg
IHRlc3RzLmFkZF9yZWZ0ZXN0KCdwYXNzZXMvcmVmdGVzdC5odG1sJywgJ3Bhc3Nlcy9yZWZ0ZXN0
LWV4cGVjdGVkLmh0bWwnLCBzYW1lX2ltYWdlPVRydWUpCisgICAgdGVzdHMuYWRkX3JlZnRlc3Qo
J3Bhc3Nlcy9taXNtYXRjaC5odG1sJywgJ3Bhc3Nlcy9taXNtYXRjaC1leHBlY3RlZC1taXNtYXRj
aC5odG1sJywgc2FtZV9pbWFnZT1GYWxzZSkKKyAgICB0ZXN0cy5hZGRfcmVmdGVzdCgnZmFpbHVy
ZXMvZXhwZWN0ZWQvcmVmdGVzdC5odG1sJywgJ2ZhaWx1cmVzL2V4cGVjdGVkL3JlZnRlc3QtZXhw
ZWN0ZWQuaHRtbCcsIHNhbWVfaW1hZ2U9RmFsc2UpCisgICAgdGVzdHMuYWRkX3JlZnRlc3QoJ2Zh
aWx1cmVzL2V4cGVjdGVkL21pc21hdGNoLmh0bWwnLCAnZmFpbHVyZXMvZXhwZWN0ZWQvbWlzbWF0
Y2gtZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbCcsIHNhbWVfaW1hZ2U9VHJ1ZSkKKyAgICB0ZXN0cy5h
ZGRfcmVmdGVzdCgnZmFpbHVyZXMvdW5leHBlY3RlZC9yZWZ0ZXN0Lmh0bWwnLCAnZmFpbHVyZXMv
dW5leHBlY3RlZC9yZWZ0ZXN0LWV4cGVjdGVkLmh0bWwnLCBzYW1lX2ltYWdlPUZhbHNlKQorICAg
IHRlc3RzLmFkZF9yZWZ0ZXN0KCdmYWlsdXJlcy91bmV4cGVjdGVkL21pc21hdGNoLmh0bWwnLCAn
ZmFpbHVyZXMvdW5leHBlY3RlZC9taXNtYXRjaC1leHBlY3RlZC1taXNtYXRjaC5odG1sJywgc2Ft
ZV9pbWFnZT1UcnVlKQorICAgICMgRklYTUU6IEFkZCBhIHJlZnRlc3Qgd2hpY2ggY3Jhc2hlcy4K
KwogICAgIHRlc3RzLmFkZCgnd2Vic29ja2V0L3Rlc3RzL3Bhc3Nlcy90ZXh0Lmh0bWwnKQogICAg
IHJldHVybiB0ZXN0cwogCkBAIC0xNTgsNiArMTc2LDggQEAgZGVmIHVuaXRfdGVzdF9maWxlc3lz
dGVtKGZpbGVzPU5vbmUpOgogICAgICMgQWRkIGVhY2ggdGVzdCBhbmQgdGhlIGV4cGVjdGVkIG91
dHB1dCwgaWYgYW55LgogICAgIGZvciB0ZXN0IGluIHRlc3RfbGlzdC50ZXN0cy52YWx1ZXMoKToK
ICAgICAgICAgYWRkX2ZpbGUoZmlsZXMsIHRlc3QsICcuaHRtbCcsICcnKQorICAgICAgICBpZiB0
ZXN0LmlzX3JlZnRlc3Q6CisgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBhZGRfZmlsZShm
aWxlcywgdGVzdCwgJy1leHBlY3RlZC50eHQnLCB0ZXN0LmV4cGVjdGVkX3RleHQpCiAgICAgICAg
IGFkZF9maWxlKGZpbGVzLCB0ZXN0LCAnLWV4cGVjdGVkLmNoZWNrc3VtJywgdGVzdC5leHBlY3Rl
ZF9jaGVja3N1bSkKICAgICAgICAgYWRkX2ZpbGUoZmlsZXMsIHRlc3QsICctZXhwZWN0ZWQucG5n
JywgdGVzdC5leHBlY3RlZF9pbWFnZSkKQEAgLTE2OSwxMiArMTg5LDE0IEBAIFdPTlRGSVggOiBm
YWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sID0gQ1JBU0gKIC8vIFRoaXMgb25lIGFjdHVhbGx5
IHBhc3NlcyBiZWNhdXNlIHRoZSBjaGVja3N1bXMgd2lsbCBtYXRjaC4KIFdPTlRGSVggOiBmYWls
dXJlcy9leHBlY3RlZC9pbWFnZS5odG1sID0gUEFTUwogV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVj
dGVkL2ltYWdlX2NoZWNrc3VtLmh0bWwgPSBJTUFHRQorV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVj
dGVkL21pc21hdGNoLmh0bWwgPSBJTUFHRQogV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkL21p
c3NpbmdfY2hlY2suaHRtbCA9IE1JU1NJTkcgUEFTUwogV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVj
dGVkL21pc3NpbmdfaW1hZ2UuaHRtbCA9IE1JU1NJTkcgUEFTUwogV09OVEZJWCA6IGZhaWx1cmVz
L2V4cGVjdGVkL21pc3NpbmdfdGV4dC5odG1sID0gTUlTU0lORyBQQVNTCiBXT05URklYIDogZmFp
bHVyZXMvZXhwZWN0ZWQvbmV3bGluZXNfbGVhZGluZy5odG1sID0gVEVYVAogV09OVEZJWCA6IGZh
aWx1cmVzL2V4cGVjdGVkL25ld2xpbmVzX3RyYWlsaW5nLmh0bWwgPSBURVhUCiBXT05URklYIDog
ZmFpbHVyZXMvZXhwZWN0ZWQvbmV3bGluZXNfd2l0aF9leGNlc3NfQ1IuaHRtbCA9IFRFWFQKK1dP
TlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC9yZWZ0ZXN0Lmh0bWwgPSBJTUFHRQogV09OVEZJWCA6
IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQKIFdPTlRGSVggOiBmYWlsdXJlcy9l
eHBlY3RlZC90aW1lb3V0Lmh0bWwgPSBUSU1FT1VUCiBXT05URklYIFNLSVAgOiBmYWlsdXJlcy9l
eHBlY3RlZC9oYW5nLmh0bWwgPSBUSU1FT1VUCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXMucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXMucHkKaW5kZXggNTM0NDYyYTdlZTRh
NjliOThjMjBkODM5NzY3Y2IyMDk1NTNlOGE3Ni4uZmJiYmVhNTY1ODEyYTlkZmNlZjFkNmFjMTcw
MGU5ZmUxNjRlZjcyYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC90ZXN0X2ZpbGVzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlcy5weQpAQCAtMTA1LDExICsxMDUsMTAgQEAgZGVmIF9o
YXNfc3VwcG9ydGVkX2V4dGVuc2lvbihmaWxlc3lzdGVtLCBmaWxlbmFtZSk6CiAgICAgcmV0dXJu
IGV4dGVuc2lvbiBpbiBfc3VwcG9ydGVkX2ZpbGVfZXh0ZW5zaW9ucwogCiAKLWRlZiBfaXNfcmVm
ZXJlbmNlX2h0bWxfZmlsZShmaWxlbmFtZSk6CitkZWYgaXNfcmVmZXJlbmNlX2h0bWxfZmlsZShm
aWxlbmFtZSk6CiAgICAgIiIiUmV0dXJuIHRydWUgaWYgdGhlIGZpbGVuYW1lIHBvaW50cyB0byBh
IHJlZmVyZW5jZSBIVE1MIGZpbGUuIiIiCiAgICAgaWYgKGZpbGVuYW1lLmVuZHN3aXRoKCctZXhw
ZWN0ZWQuaHRtbCcpIG9yCiAgICAgICAgIGZpbGVuYW1lLmVuZHN3aXRoKCctZXhwZWN0ZWQtbWlz
bWF0Y2guaHRtbCcpKToKLSAgICAgICAgX2xvZy53YXJuKCJSZWZ0ZXN0cyBhcmUgbm90IHN1cHBv
cnRlZCAtIGlnbm9yaW5nICVzIiAlIGZpbGVuYW1lKQogICAgICAgICByZXR1cm4gVHJ1ZQogICAg
IHJldHVybiBGYWxzZQogCkBAIC0xMTcsNCArMTE2LDQgQEAgZGVmIF9pc19yZWZlcmVuY2VfaHRt
bF9maWxlKGZpbGVuYW1lKToKIGRlZiBfaXNfdGVzdF9maWxlKGZpbGVzeXN0ZW0sIGRpcm5hbWUs
IGZpbGVuYW1lKToKICAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgZmlsZW5hbWUgcG9pbnRzIHRv
IGEgdGVzdCBmaWxlLiIiIgogICAgIHJldHVybiAoX2hhc19zdXBwb3J0ZWRfZXh0ZW5zaW9uKGZp
bGVzeXN0ZW0sIGZpbGVuYW1lKSBhbmQKLSAgICAgICAgICAgIG5vdCBfaXNfcmVmZXJlbmNlX2h0
bWxfZmlsZShmaWxlbmFtZSkpCisgICAgICAgICAgICBub3QgaXNfcmVmZXJlbmNlX2h0bWxfZmls
ZShmaWxlbmFtZSkpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQppbmRleCAzZmU3YjE0
ZjFlNzgzMGZkMWI5YzM5NDBlOTMyNzYxZWI0ZTIwMDVkLi5mNzUzZjIzMWRlNmNiZGMyY2ZiYWYz
ZDc5NDlkZmEyNjI5ZmUyZTA3IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKQEAg
LTU1LDYgKzU1LDcgQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHBvcnQKIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBydW5fd2Via2l0X3Rlc3RzCiBmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgZHVtcF9yZW5kZXJfdHJl
ZV90aHJlYWQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQudGVzdCBpbXBvcnQgVGVz
dFBvcnQsIFRlc3REcml2ZXIKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQudGVzdF9m
aWxlcyBpbXBvcnQgaXNfcmVmZXJlbmNlX2h0bWxfZmlsZQogZnJvbSB3ZWJraXRweS5weXRob24y
NC52ZXJzaW9uaW5nIGltcG9ydCBjb21wYXJlX3ZlcnNpb24KIGZyb20gd2Via2l0cHkudGVzdC5z
a2lwIGltcG9ydCBza2lwX2lmCiAKQEAgLTEyNCw3ICsxMjUsOCBAQCBkZWYgcnVuX2FuZF9jYXB0
dXJlKHBvcnRfb2JqLCBvcHRpb25zLCBwYXJzZWRfYXJncyk6CiAgICAgcmV0dXJuIChyZXMsIGJ1
aWxkYm90X291dHB1dCwgcmVndWxhcl9vdXRwdXQpCiAKIAotZGVmIGdldF90ZXN0c19ydW4oZXh0
cmFfYXJncz1Ob25lLCB0ZXN0c19pbmNsdWRlZD1GYWxzZSwgZmxhdHRlbl9iYXRjaGVzPUZhbHNl
LCBmaWxlc3lzdGVtPU5vbmUpOgorZGVmIGdldF90ZXN0c19ydW4oZXh0cmFfYXJncz1Ob25lLCB0
ZXN0c19pbmNsdWRlZD1GYWxzZSwgZmxhdHRlbl9iYXRjaGVzPUZhbHNlLAorICAgICAgICAgICAg
ICAgICAgZmlsZXN5c3RlbT1Ob25lLCBpbmNsdWRlX3JlZmVyZW5jZV9odG1sPUZhbHNlKToKICAg
ICBleHRyYV9hcmdzID0gZXh0cmFfYXJncyBvciBbXQogICAgIGlmIG5vdCB0ZXN0c19pbmNsdWRl
ZDoKICAgICAgICAgIyBOb3QgaW5jbHVkaW5nIGh0dHAgdGVzdHMgc2luY2UgdGhleSBnZXQgcnVu
IG91dCBvZiBvcmRlciAodGhhdApAQCAtMTM2LDYgKzEzOCw3IEBAIGRlZiBnZXRfdGVzdHNfcnVu
KGV4dHJhX2FyZ3M9Tm9uZSwgdGVzdHNfaW5jbHVkZWQ9RmFsc2UsIGZsYXR0ZW5fYmF0Y2hlcz1G
YWxzZSwKIAogICAgIHRlc3RfYmF0Y2hlcyA9IFtdCiAKKwogICAgIGNsYXNzIFJlY29yZGluZ1Rl
c3REcml2ZXIoVGVzdERyaXZlcik6CiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCB3
b3JrZXJfbnVtYmVyKToKICAgICAgICAgICAgIFRlc3REcml2ZXIuX19pbml0X18oc2VsZiwgcG9y
dCwgd29ya2VyX251bWJlcikKQEAgLTE1Myw3ICsxNTYsMTEgQEAgZGVmIGdldF90ZXN0c19ydW4o
ZXh0cmFfYXJncz1Ob25lLCB0ZXN0c19pbmNsdWRlZD1GYWxzZSwgZmxhdHRlbl9iYXRjaGVzPUZh
bHNlLAogICAgICAgICAgICAgICAgIHNlbGYuX2N1cnJlbnRfdGVzdF9iYXRjaCA9IFtdCiAgICAg
ICAgICAgICAgICAgdGVzdF9iYXRjaGVzLmFwcGVuZChzZWxmLl9jdXJyZW50X3Rlc3RfYmF0Y2gp
CiAgICAgICAgICAgICB0ZXN0X25hbWUgPSBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5h
bWUodGVzdF9pbnB1dC5maWxlbmFtZSkKLSAgICAgICAgICAgIHNlbGYuX2N1cnJlbnRfdGVzdF9i
YXRjaC5hcHBlbmQodGVzdF9uYW1lKQorICAgICAgICAgICAgIyBJbiBjYXNlIG9mIHJlZnRlc3Qs
IG9uZSB0ZXN0IGNhbGxzIHRoZSBkcml2ZXIncyBydW5fdGVzdCgpIHR3aWNlLgorICAgICAgICAg
ICAgIyBXZSBzaG91bGQgbm90IGFkZCBhIHJlZmVyZW5jZSBodG1sIHVzZWQgYnkgcmVmdGVzdHMg
dG8gdGVzdHMgdW5sZXNzIGluY2x1ZGVfcmVmZXJlbmNlX2h0bWwgcGFyYW1ldGVyCisgICAgICAg
ICAgICAjIGlzIGV4cGxpY2l0bHkgZ2l2ZW4uCisgICAgICAgICAgICBpZiBpbmNsdWRlX3JlZmVy
ZW5jZV9odG1sIG9yIG5vdCBpc19yZWZlcmVuY2VfaHRtbF9maWxlKHRlc3RfaW5wdXQuZmlsZW5h
bWUpOgorICAgICAgICAgICAgICAgIHNlbGYuX2N1cnJlbnRfdGVzdF9iYXRjaC5hcHBlbmQodGVz
dF9uYW1lKQogICAgICAgICAgICAgcmV0dXJuIFRlc3REcml2ZXIucnVuX3Rlc3Qoc2VsZiwgdGVz
dF9pbnB1dCkKIAogICAgIGNsYXNzIFJlY29yZGluZ1Rlc3RQb3J0KFRlc3RQb3J0KToKQEAgLTM1
Miw3ICszNTksMTIgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICAjIFJ1biB0ZXN0cyBpbmNsdWRpbmcgdGhlIHVuZXhwZWN0ZWQgZmFpbHVyZXMuCiAgICAgICAg
IHNlbGYuX3VybF9vcGVuZWQgPSBOb25lCiAgICAgICAgIHJlcywgb3V0LCBlcnIsIHVzZXIgPSBs
b2dnaW5nX3J1bih0ZXN0c19pbmNsdWRlZD1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHJlcywgMykKKworICAgICAgICAjIFVwZGF0ZSB0aGlzIG1hZ2ljIG51bWJlciBpZiB5b3UgYWRk
IGFuIHVuZXhwZWN0ZWQgdGVzdCB0byB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC50ZXN0Cisg
ICAgICAgICMgRklYTUU6IEl0J3MgbmljZSB0byBoYXZlIGEgcm91dGluZSBpbiBwb3J0L3Rlc3Qu
cHkgdGhhdCByZXR1cm5zIHRoaXMgbnVtYmVyLgorICAgICAgICB1bmV4cGVjdGVkX3Rlc3RzX2Nv
dW50ID0gNQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCB1bmV4cGVjdGVkX3Rlc3Rz
X2NvdW50KQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG91dC5lbXB0eSgpKQogICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKGVyci5lbXB0eSgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVz
ZXIub3BlbmVkX3VybHMsIFsnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Jlc3VsdHMuaHRtbCdd
KQpAQCAtNTE2LDYgKzUyOCwyNSBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxvZ2dpbmdfcnVuLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBbJy0td29ya2VyLW1vZGVsJywgJ3Vua25vd24nXSkKIAor
ICAgIGRlZiB0ZXN0X3JlZnRlc3RfcnVuKHNlbGYpOgorICAgICAgICB0ZXN0c19ydW4gPSBnZXRf
dGVzdHNfcnVuKFsncGFzc2VzL3JlZnRlc3QuaHRtbCddLCB0ZXN0c19pbmNsdWRlZD1UcnVlLCBm
bGF0dGVuX2JhdGNoZXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWydwYXNzZXMv
cmVmdGVzdC5odG1sJ10sIHRlc3RzX3J1bikKKworICAgIGRlZiB0ZXN0X3JlZnRlc3RfZXhwZWN0
ZWRfaHRtbF9zaG91bGRfYmVfaWdub3JlZChzZWxmKToKKyAgICAgICAgdGVzdHNfcnVuID0gZ2V0
X3Rlc3RzX3J1bihbJ3Bhc3Nlcy9yZWZ0ZXN0LWV4cGVjdGVkLmh0bWwnXSwgdGVzdHNfaW5jbHVk
ZWQ9VHJ1ZSwgZmxhdHRlbl9iYXRjaGVzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KFtdLCB0ZXN0c19ydW4pCisKKyAgICBkZWYgdGVzdF9yZWZ0ZXN0X2RyaXZlcl9zaG91bGRfcnVu
X2V4cGVjdGVkX2h0bWwoc2VsZik6CisgICAgICAgIHRlc3RzX3J1biA9IGdldF90ZXN0c19ydW4o
WydwYXNzZXMvcmVmdGVzdC5odG1sJ10sIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZsYXR0ZW5fYmF0
Y2hlcz1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfcmVm
ZXJlbmNlX2h0bWw9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWydwYXNzZXMvcmVm
dGVzdC5odG1sJywgJ3Bhc3Nlcy9yZWZ0ZXN0LWV4cGVjdGVkLmh0bWwnXSwgdGVzdHNfcnVuKQor
CisgICAgZGVmIHRlc3RfcmVmdGVzdF9kcml2ZXJfc2hvdWxkX3J1bl9leHBlY3RlZF9taXNtYXRj
aF9odG1sKHNlbGYpOgorICAgICAgICB0ZXN0c19ydW4gPSBnZXRfdGVzdHNfcnVuKFsncGFzc2Vz
L21pc21hdGNoLmh0bWwnXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmxhdHRlbl9iYXRjaGVzPVRy
dWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9yZWZlcmVuY2Vf
aHRtbD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbJ3Bhc3Nlcy9taXNtYXRjaC5o
dG1sJywgJ3Bhc3Nlcy9taXNtYXRjaC1leHBlY3RlZC1taXNtYXRjaC5odG1sJ10sIHRlc3RzX3J1
bikKKworCiBNYWluVGVzdCA9IHNraXBfaWYoTWFpblRlc3QsIHN5cy5wbGF0Zm9ybSA9PSAnY3ln
d2luJyBhbmQgY29tcGFyZV92ZXJzaW9uKHN5cywgJzIuNicpWzBdIDwgMCwgJ25ldy1ydW4td2Vi
a2l0LXRlc3RzIHRlc3RzIGhhbmcgb24gQ3lnd2luIFB5dGhvbiAyLjUuMicpCiAKIAo=
</data>
<flag name="review"
          id="77932"
          type_id="1"
          status="+"
          setter="hamaji"
    />
          </attachment>
      

    </bug>

</bugzilla>