<?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>66837</bug_id>
          
          <creation_ts>2011-08-23 22:26:10 -0700</creation_ts>
          <short_desc>Parse reftest.list and extract types of ref tests</short_desc>
          <delta_ts>2011-12-01 17:46:27 -0800</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>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          <dependson>66838</dependson>
          <blocked>71574</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hayato Ito">hayato</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
    
    <cc>kling</cc>
    
    <cc>makabi</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>455973</commentid>
    <comment_count>0</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-23 22:26:10 -0700</bug_when>
    <thetext>To run CSSWG reftests, we need to extract necessary information, such as reference links, from the Retest Test file.
http://wiki.csswg.org/test/css2.1/format#reference-links

Until we encounter a serious problem in parsing the HTML file, I think HTMLParser built in Python is enough to do these kinds of tasks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495916</commentid>
    <comment_count>1</comment_count>
      <attachid>113590</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-03 17:28:41 -0700</bug_when>
    <thetext>Created attachment 113590
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495942</commentid>
    <comment_count>2</comment_count>
      <attachid>113595</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-03 17:40:15 -0700</bug_when>
    <thetext>Created attachment 113595
work in progress 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496210</commentid>
    <comment_count>3</comment_count>
      <attachid>113661</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-04 08:46:42 -0700</bug_when>
    <thetext>Created attachment 113661
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496238</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-04 09:42:41 -0700</bug_when>
    <thetext>I didn&apos;t include a test for _parse_all_reftest_list because that involves mocking a whole bunch of objects and is a bit cumbersome. We can test it easily once hayato&apos;s change is in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496266</commentid>
    <comment_count>5</comment_count>
      <attachid>113661</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-11-04 10:15:16 -0700</bug_when>
    <thetext>Comment on attachment 113661
Patch

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

You should parse the reftest.list files during the initial walk of the LayoutTests directory. That will reduce a lot of processing and minimize disk access. I don&apos;t think it will make the code more complicated.

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:340
&gt; +        self._reftest_list = {}

This isn&apos;t a list. Just call it self._reftests.

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:361
&gt; +            expectation_type, test_file, ref_file = split_line[0], split_line[1], split_line[2]

I believe this can just be:
expectation_type, test_file, ref_file = split_line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496342</commentid>
    <comment_count>6</comment_count>
      <attachid>113686</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-04 11:29:31 -0700</bug_when>
    <thetext>Created attachment 113686
Moved the logic to find reftest.list to test_files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496608</commentid>
    <comment_count>7</comment_count>
      <attachid>113744</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-04 19:08:02 -0700</bug_when>
    <thetext>Created attachment 113744
Fixed a bug in test_files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497666</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-07 18:43:36 -0800</bug_when>
    <thetext>Any reviewer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497669</commentid>
    <comment_count>9</comment_count>
      <attachid>113744</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-11-07 18:48:04 -0800</bug_when>
    <thetext>Comment on attachment 113744
Fixed a bug in test_files

As I said on webkit-dev, I&apos;m not OK with generically adding manifest support. If we&apos;re going to support reftest lists, they should be used exclusively for test suites we import. So, I&apos;d like to see this patch assume we&apos;ll import these test suites to a certain directory (e.g. w3c) and only walk that subtree and if that subtree has a reftest.list file, then it doesn&apos;t do the other walking of that directory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497672</commentid>
    <comment_count>10</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-11-07 18:52:53 -0800</bug_when>
    <thetext>I don&apos;t think we should add manifest support until we hit a case where we *really* need it and have no other (performant) way of doing it. Until then, we should just support link elements.

If you really want to do the manifest approach, I recommend that you get other webkit reviewers to support doing it this way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497788</commentid>
    <comment_count>11</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-11-07 23:49:02 -0800</bug_when>
    <thetext>Just to be clear, I think our initial implementation of reading the link elements can just use the python HTML parser. It may be slow, but we can have a FIXME until we actually encounter the situation where it&apos;s a meaningful percentage of the total test runtime, at which point we can move the logic into DRT. Until then, we should just do the expedient thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498631</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-08 21:10:47 -0800</bug_when>
    <thetext>I&apos;ve asked Ossy and he told me he&apos;s going to talk with other Qt folks and get back to me tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499084</commentid>
    <comment_count>13</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-11-09 09:49:54 -0800</bug_when>
    <thetext>Are you not OK with limiting the reftest support to the w3c directory and having reftest.list mean that we don&apos;t walk that subtree looking for other tests?

If you&apos;re OK with those limitations, then you can modify the patch and we can move on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499279</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-09 13:01:30 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Are you not OK with limiting the reftest support to the w3c directory and having reftest.list mean that we don&apos;t walk that subtree looking for other tests?
&gt; 
&gt; If you&apos;re OK with those limitations, then you can modify the patch and we can move on.

I&apos;m still waiting for Ossy&apos;s response. I couldn&apos;t reach him today. Regardless, I&apos;m probably not going to work on this bug for the rest of week so anyone should feel free to take over this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500088</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-10 11:57:41 -0800</bug_when>
    <thetext>kling says he&apos;s going to talk with other Qt folks tomorrow morning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505091</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-17 12:22:32 -0800</bug_when>
    <thetext>I talked with Ossy and he told me he&apos;s okay with using manifest files for imported tests. So let&apos;s do that for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505403</commentid>
    <comment_count>17</comment_count>
      <attachid>115719</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-17 18:10:12 -0800</bug_when>
    <thetext>Created attachment 115719
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505955</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-18 12:05:52 -0800</bug_when>
    <thetext>Ping reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511947</commentid>
    <comment_count>19</comment_count>
      <attachid>115719</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-30 11:32:22 -0800</bug_when>
    <thetext>Comment on attachment 115719
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:342
&gt; +    def _parse_all_reftest_lists(self):

Why wouldn&apos;t this move onto a separate RefTestListParser object?  (Or something better named).  Why should the manager have this functionality?

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:366
&gt; +    def _parse_reftest_list(self, reftest_list, test_dir):

This name doesnt&apos; convey the fact that it&apos;s going to store the results in some variable on self.  I would expect it to either return something, or be named differently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512117</commentid>
    <comment_count>20</comment_count>
      <attachid>115719</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-11-30 14:01:58 -0800</bug_when>
    <thetext>Comment on attachment 115719
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:775
&gt; +        self.assertEquals(res, 8)

Perhaps just change this to unexpected_tests_count and get rid of the comment?

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:342
&gt;&gt; +    def _parse_all_reftest_lists(self):
&gt; 
&gt; Why wouldn&apos;t this move onto a separate RefTestListParser object?  (Or something better named).  Why should the manager have this functionality?

It&apos;s not clear to me that this shouldn&apos;t be implemented inside of port.tests(), instead. In particular, port.reftest_expected_filename() and port.reftest_expected_mismatch_filename() won&apos;t work correctly with these reftests. We should have one uniform way of handling reftests, regardless of how they are implemented. This suggests that we probably need a port.is_reftest() and to hang the _reftests dict underneath port.

Arguably all of that stuff should be split into a separate object (along the lines of Eric&apos;s suggestion), but I want to keep all of the test-handling logic together, both for reftests and other kinds of tests.

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:609
&gt; +        return TestInput(test_file, self._options.time_out_ms, ref_file, is_mismatch)

same thoughts as above.

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:72
&gt; +            if fs.exists(reftest_expected_filename):

If we make the changes I describe, do we need should_use_naming_convention_for_reftest() or is the old code still more-or-less correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512407</commentid>
    <comment_count>21</comment_count>
      <attachid>117322</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-30 20:56:24 -0800</bug_when>
    <thetext>Created attachment 117322
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513100</commentid>
    <comment_count>22</comment_count>
      <attachid>117322</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-01 14:18:45 -0800</bug_when>
    <thetext>Comment on attachment 117322
Patch

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

Patch generally looks fine, just a few nits and one question that I&apos;m not sure about the answer to but I&apos;m not sure that it should block the patch ...

&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:454
&gt; +        self.assertTrue(json_string.find(&apos;&quot;num_flaky&quot;:0&apos;) != -1)

any particular reason these two lines changed, or was it just to make things more consistent?

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:76
&gt; +        if reftest_expected_mismatch_filename and fs.exists(reftest_expected_mismatch_filename):

Given that we can&apos;t rely on files being named &apos;-expected.html&apos; any more, the error message on line 78+ is slightly misleading. Can you rewrite it to something like &quot;One test file cannot have both match and mismatch references. Please remove either %s or %s&quot; ?

&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:151
&gt; +        self._reftest_list = dict()

Style nit: I&apos;d usually use {} instead of dict() here, but it doesn&apos;t really matter.

&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:449
&gt; +            return None

Should this be either expected_filename(test_name, &apos;.html&apos;) or expected_filename(test_name, &apos;-mismatch.html&apos;) as well for compatibility with the branch in  lines 439-443? I.e., maybe this function should never return None? I&apos;d have to look at the calling code to see if this actually matters.

&gt; Tools/Scripts/webkitpy/layout_tests/port/test_files_unittest.py:87
&gt; +== test-3.html test-ref.html&quot;&quot;&quot;

Style nit: I think these days we usually try to avoid HEREDOC-style multiline strings and instead use string concatenation, so that the indentation is preserved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513112</commentid>
    <comment_count>23</comment_count>
      <attachid>117322</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-01 14:25:37 -0800</bug_when>
    <thetext>Comment on attachment 117322
Patch

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

Thanks for the review. I&apos;m thrilled to get over with this bike-shedding bug.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:454
&gt;&gt; +        self.assertTrue(json_string.find(&apos;&quot;num_flaky&quot;:0&apos;) != -1)
&gt; 
&gt; any particular reason these two lines changed, or was it just to make things more consistent?

They had to be changed because I&apos;ve added new test files.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:76
&gt;&gt; +        if reftest_expected_mismatch_filename and fs.exists(reftest_expected_mismatch_filename):
&gt; 
&gt; Given that we can&apos;t rely on files being named &apos;-expected.html&apos; any more, the error message on line 78+ is slightly misleading. Can you rewrite it to something like &quot;One test file cannot have both match and mismatch references. Please remove either %s or %s&quot; ?

Will do.

Btw, that error message is flawed in the sense W3C reftests allow one test to have multiple reference files to compare to. So we need to fix nrwt.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:151
&gt;&gt; +        self._reftest_list = dict()
&gt; 
&gt; Style nit: I&apos;d usually use {} instead of dict() here, but it doesn&apos;t really matter.

Okay. I wasn&apos;t sure about the convention. Will change (since I prefer {} as well).

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:449

&gt; 
&gt; Should this be either expected_filename(test_name, &apos;.html&apos;) or expected_filename(test_name, &apos;-mismatch.html&apos;) as well for compatibility with the branch in  lines 439-443? I.e., maybe this function should never return None? I&apos;d have to look at the calling code to see if this actually matters.

No, this has to return None. If there&apos;s a reftest.list, we shouldn&apos;t be using the naming convention to find a reference file. This was an explicit request from Ojan based on which he r-ed my previous patch.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/test_files_unittest.py:87

&gt; 
&gt; Style nit: I think these days we usually try to avoid HEREDOC-style multiline strings and instead use string concatenation, so that the indentation is preserved.

Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513121</commentid>
    <comment_count>24</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-01 14:34:26 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; &gt; Given that we can&apos;t rely on files being named &apos;-expected.html&apos; any more, the error message on line 78+ is slightly misleading. Can you rewrite it to something like &quot;One test file cannot have both match and mismatch references. Please remove either %s or %s&quot; ?
&gt; 
&gt; Will do.
&gt; 
&gt; Btw, that error message is flawed in the sense W3C reftests allow one test to have multiple reference files to compare to. So we need to fix nrwt.
&gt;

Good point. 
 
&gt; &gt; 
&gt; &gt; Should this be either expected_filename(test_name, &apos;.html&apos;) or expected_filename(test_name, &apos;-mismatch.html&apos;) as well for compatibility with the branch in  lines 439-443? I.e., maybe this function should never return None? I&apos;d have to look at the calling code to see if this actually matters.
&gt; 
&gt; No, this has to return None. If there&apos;s a reftest.list, we shouldn&apos;t be using the naming convention to find a reference file. This was an explicit request from Ojan based on which he r-ed my previous patch.
&gt;

I understand the concern; my point was rather that I&apos;m not sure what&apos;ll happen to callers of reftest_expected_filename() and reftest_expected_mismatch() if they get back None instead of a (potentially non-existant) filename (since they always got filenames before). Returning None seems like it might be wrong way to signal an error here, and it might be better to either _log.error() or raise an exception ...

Ojan, WDYT?

-- Dirk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513135</commentid>
    <comment_count>25</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-01 14:40:45 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; &gt; No, this has to return None. If there&apos;s a reftest.list, we shouldn&apos;t be using the naming convention to find a reference file. This was an explicit request from Ojan based on which he r-ed my previous patch.
&gt; &gt;
&gt; 
&gt; I understand the concern; my point was rather that I&apos;m not sure what&apos;ll happen to callers of reftest_expected_filename() and reftest_expected_mismatch() if they get back None instead of a (potentially non-existant) filename (since they always got filenames before). Returning None seems like it might be wrong way to signal an error here, and it might be better to either _log.error() or raise an exception ...

I hit an exception in signle_test_runner so I fixed that.

Only other callers are dryrun.py and rebaseline_choromium_webkit_tests.py, both of which just calls fs.exits. I guess I&apos;ll add is_reftest(test_name) to the port object and replace those calls by that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513316</commentid>
    <comment_count>26</comment_count>
      <attachid>117530</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-01 17:22:44 -0800</bug_when>
    <thetext>Created attachment 117530
Addressed the comments and updated for ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513341</commentid>
    <comment_count>27</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-01 17:46:27 -0800</bug_when>
    <thetext>Committed r101727: &lt;http://trac.webkit.org/changeset/101727&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113590</attachid>
            <date>2011-11-03 17:28:41 -0700</date>
            <delta_ts>2011-11-03 17:40:15 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>wip66837</filename>
            <type>text/plain</type>
            <size>3946</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2lu
cHV0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L21vZGVscy90ZXN0X2lucHV0LnB5CShyZXZpc2lvbiA5OTE0MSkKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2lucHV0LnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw3ICszMiw3IEBACiBjbGFzcyBUZXN0SW5wdXQ6CiAgICAgIiIiR3JvdXBzIGluZm9y
bWF0aW9uIGFib3V0IGEgdGVzdCBmb3IgZWFzeSBwYXNzaW5nIG9mIGRhdGEuIiIiCiAKLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgdGVzdF9uYW1lLCB0aW1lb3V0KToKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgdGVzdF9uYW1lLCB0aW1lb3V0LCByZWZfZmlsZT1Ob25lLCBpc19taXNtYXRjaD1GYWxz
ZSk6CiAgICAgICAgICIiIkhvbGRzIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIGZvciBhIHRlc3QuCiAg
ICAgICAgIEFyZ3M6CiAgICAgICAgICAgdGVzdDogbmFtZSBvZiB0ZXN0IChub3QgYW4gYWJzb2x1
dGUgcGF0aCEpCkBAIC00MCw2ICs0MCw4IEBACiAgICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYu
dGVzdF9uYW1lID0gdGVzdF9uYW1lCiAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKKyAg
ICAgICAgc2VsZi5yZWZfZmlsZSA9IHJlZl9maWxlCisgICAgICAgIHNlbGYuaXNfbWlzbWF0Y2gg
PSBpc19taXNtYXRjaAogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4g
IlRlc3RJbnB1dCgnJXMnLCAlZCkiICUgKHNlbGYudGVzdF9uYW1lLCBzZWxmLnRpbWVvdXQpCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5h
Z2VyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2NvbnRyb2xsZXJzL21hbmFnZXIucHkJKHJldmlzaW9uIDk5MTQxKQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQkod29ya2luZyBj
b3B5KQpAQCAtMzE2LDYgKzMxNiwxMyBAQAogICAgICAgICAjIFRoaXMgbWFwcyB3b3JrZXIgbmFt
ZXMgdG8gdGhlIHN0YXRlIHdlIGFyZSB0cmFja2luZyBmb3IgZWFjaCBvZiB0aGVtLgogICAgICAg
ICBzZWxmLl93b3JrZXJfc3RhdGVzID0ge30KIAorICAgIGRlZiBfcGFyc2VfcmVmdGVzdF90ZXN0
cyhzZWxmLCB0ZXN0cyk6CisgICAgICAgICIiIlBhcnNlIGFsbCByZWZ0ZXN0cy5saXN0IGluIHRl
c3RzJyBkaXJlY3RvcmllcyBhbmQgcG9wdWxhdGUgc2VsZi5fcmVmdGVzdHMKKyAgICAgICAgCisg
ICAgICAgIEFyZ3M6CisgICAgICAgICAgdGVzdHM6IGxpc3Qgb2YgdGVzdHMgZm9yIHdoaWNoIHJl
ZmVyZW5jZXMgbWF5IGJlIHBhcnNlZCIiIgorICAgICAgICBwYXNzCisKICAgICBkZWYgY29sbGVj
dF90ZXN0cyhzZWxmLCBhcmdzKToKICAgICAgICAgIiIiRmluZCBhbGwgdGhlIGZpbGVzIHRvIHRl
c3QuCiAKQEAgLTMyNiw4ICszMzMsMjkgQEAKICAgICAgICAgcGF0aHMgPSBzZWxmLl9zdHJpcF90
ZXN0X2Rpcl9wcmVmaXhlcyhhcmdzKQogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnRlc3RfbGlz
dDoKICAgICAgICAgICAgIHBhdGhzICs9IHNlbGYuX3N0cmlwX3Rlc3RfZGlyX3ByZWZpeGVzKHJl
YWRfdGVzdF9maWxlcyhzZWxmLl9mcywgc2VsZi5fb3B0aW9ucy50ZXN0X2xpc3QsIHNlbGYuX3Bv
cnQuVEVTVF9QQVRIX1NFUEFSQVRPUikpCisKICAgICAgICAgc2VsZi5fdGVzdF9maWxlcyA9IHNl
bGYuX3BvcnQudGVzdHMocGF0aHMpCiAKKyAgICAgICAgIyBQYXJzZSByZWZ0ZXN0Lmxpc3QKKyAg
ICAgICAgc2VsZi5fcmVmdGVzdF9saXN0ID0ge30KKyAgICAgICAgdGVzdF9kaXJzID0gc2V0KCkK
KyAgICAgICAgZm9yIHBhdGggaW4gc2VsZi5fdGVzdF9maWxlczoKKyAgICAgICAgICAgIHRlc3Rf
ZGlyID0gc2VsZi5fZnMuZGlybmFtZShwYXRoKQorICAgICAgICAgICAgaWYgdGVzdF9kaXIgaW4g
dGVzdF9kaXJzOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICB0ZXN0X2Rp
cnMuYWRkKHRlc3RfZGlyKQorICAgICAgICAgICAgcmVmdGVzdF9saXN0X3BhdGggPSBzZWxmLl9m
cy5qb2luKHNlbGYuX3BvcnQucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdMYXlvdXRUZXN0cycpLCB0
ZXN0X2RpciwgJ3JlZnRlc3QubGlzdCcpCisgICAgICAgICAgICBpZiBzZWxmLl9mcy5leGlzdHMo
cmVmdGVzdF9saXN0X3BhdGgpOgorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYuX2Zz
LnJlYWRfdGV4dF9maWxlKHJlZnRlc3RfbGlzdF9wYXRoKS5zcGxpdCgnXG4nKToKKyAgICAgICAg
ICAgICAgICAgICAgc3BsaXRfbGluZSA9IGxpbmUuc3BsaXQoKQorICAgICAgICAgICAgICAgICAg
ICBpZiBsZW4oc3BsaXRfbGluZSkgPCAzOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWUKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0YXRpb25fdHlwZSwgdGVzdF9maWxlLCByZWZf
ZmlsZSA9IHNwbGl0X2xpbmVbMF0sIHNwbGl0X2xpbmVbMV0sIHNwbGl0X2xpbmVbMl0KKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fcmVmdGVzdF9saXN0W3NlbGYuX2ZzLmpvaW4odGVzdF9kaXIs
IHRlc3RfZmlsZSldID0gKGV4cGVjdGF0aW9uX3R5cGUsIHNlbGYuX2ZzLmpvaW4odGVzdF9kaXIs
IHJlZl9maWxlKSkKKworICAgICAgICBwcmludCBzZWxmLl9yZWZ0ZXN0X2xpc3QKKworCiAgICAg
ZGVmIF9zdHJpcF90ZXN0X2Rpcl9wcmVmaXhlcyhzZWxmLCBwYXRocyk6CiAgICAgICAgIHJldHVy
biBbc2VsZi5fc3RyaXBfdGVzdF9kaXJfcHJlZml4KHBhdGgpIGZvciBwYXRoIGluIHBhdGhzIGlm
IHBhdGhdCiAKQEAgLTU0NCw5ICs1NzIsMTUgQEAKICAgICAgICAgIiIiUmV0dXJucyB0aGUgYXBw
cm9wcmlhdGUgVGVzdElucHV0IG9iamVjdCBmb3IgdGhlIGZpbGUuIE1vc3RseSB0aGlzCiAgICAg
ICAgIGlzIHVzZWQgZm9yIGxvb2tpbmcgdXAgdGhlIHRpbWVvdXQgdmFsdWUgKGluIG1zKSB0byB1
c2UgZm9yIHRoZSBnaXZlbgogICAgICAgICB0ZXN0LiIiIgorICAgICAgICBpZiB0ZXN0X2ZpbGUg
aW4gc2VsZi5fcmVmdGVzdF9saXN0OgorICAgICAgICAgICAgaXNfbWlzbWF0Y2ggPSBzZWxmLl9y
ZWZ0ZXN0X2xpc3RbdGVzdF9maWxlXVswXSA9PSAnIT0nCisgICAgICAgICAgICByZWZfZmlsZSA9
IHNlbGYuX3JlZnRlc3RfbGlzdFt0ZXN0X2ZpbGVdWzFdCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBpc19taXNtYXRjaCA9IEZhbHNlCisgICAgICAgICAgICByZWZfZmlsZSA9IE5vbmUKICAg
ICAgICAgaWYgc2VsZi5fdGVzdF9pc19zbG93KHRlc3RfZmlsZSk6Ci0gICAgICAgICAgICByZXR1
cm4gVGVzdElucHV0KHRlc3RfZmlsZSwgc2VsZi5fb3B0aW9ucy5zbG93X3RpbWVfb3V0X21zKQot
ICAgICAgICByZXR1cm4gVGVzdElucHV0KHRlc3RfZmlsZSwgc2VsZi5fb3B0aW9ucy50aW1lX291
dF9tcykKKyAgICAgICAgICAgIHJldHVybiBUZXN0SW5wdXQodGVzdF9maWxlLCBzZWxmLl9vcHRp
b25zLnNsb3dfdGltZV9vdXRfbXMsIHJlZl9maWxlLCBpc19taXNtYXRjaCkKKyAgICAgICAgcmV0
dXJuIFRlc3RJbnB1dCh0ZXN0X2ZpbGUsIHNlbGYuX29wdGlvbnMudGltZV9vdXRfbXMsIHJlZl9m
aWxlLCBpc19taXNtYXRjaCkKIAogICAgIGRlZiBfdGVzdF9yZXF1aXJlc19sb2NrKHNlbGYsIHRl
c3RfZmlsZSk6CiAgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSB0ZXN0IG5lZWRzIHRvIGJl
IGxvY2tlZCB3aGVuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113595</attachid>
            <date>2011-11-03 17:40:15 -0700</date>
            <delta_ts>2011-11-04 08:46:35 -0700</delta_ts>
            <desc>work in progress 2</desc>
            <filename>wip66837b</filename>
            <type>text/plain</type>
            <size>4139</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2lu
cHV0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L21vZGVscy90ZXN0X2lucHV0LnB5CShyZXZpc2lvbiA5OTE0MSkKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2lucHV0LnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw3ICszMiw3IEBACiBjbGFzcyBUZXN0SW5wdXQ6CiAgICAgIiIiR3JvdXBzIGluZm9y
bWF0aW9uIGFib3V0IGEgdGVzdCBmb3IgZWFzeSBwYXNzaW5nIG9mIGRhdGEuIiIiCiAKLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgdGVzdF9uYW1lLCB0aW1lb3V0KToKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgdGVzdF9uYW1lLCB0aW1lb3V0LCByZWZfZmlsZT1Ob25lLCBpc19taXNtYXRjaD1GYWxz
ZSk6CiAgICAgICAgICIiIkhvbGRzIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIGZvciBhIHRlc3QuCiAg
ICAgICAgIEFyZ3M6CiAgICAgICAgICAgdGVzdDogbmFtZSBvZiB0ZXN0IChub3QgYW4gYWJzb2x1
dGUgcGF0aCEpCkBAIC00MCw2ICs0MCw4IEBACiAgICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYu
dGVzdF9uYW1lID0gdGVzdF9uYW1lCiAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKKyAg
ICAgICAgc2VsZi5yZWZfZmlsZSA9IHJlZl9maWxlCisgICAgICAgIHNlbGYuaXNfbWlzbWF0Y2gg
PSBpc19taXNtYXRjaAogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4g
IlRlc3RJbnB1dCgnJXMnLCAlZCkiICUgKHNlbGYudGVzdF9uYW1lLCBzZWxmLnRpbWVvdXQpCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5h
Z2VyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2NvbnRyb2xsZXJzL21hbmFnZXIucHkJKHJldmlzaW9uIDk5MTQxKQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQkod29ya2luZyBj
b3B5KQpAQCAtMzE2LDYgKzMxNiwzNSBAQAogICAgICAgICAjIFRoaXMgbWFwcyB3b3JrZXIgbmFt
ZXMgdG8gdGhlIHN0YXRlIHdlIGFyZSB0cmFja2luZyBmb3IgZWFjaCBvZiB0aGVtLgogICAgICAg
ICBzZWxmLl93b3JrZXJfc3RhdGVzID0ge30KIAorICAgIGRlZiBfcGFyc2VfcmVmdGVzdF90ZXN0
cyhzZWxmKToKKyAgICAgICIiIlBhcnNlIGFsbCByZWZ0ZXN0cy5saXN0IGluIHRlc3RzJyBkaXJl
Y3RvcmllcyBhbmQgcG9wdWxhdGUgc2VsZi5fcmVmdGVzdHMKKworICAgICAgQXJnczoKKyAgICAg
ICB0ZXN0czogbGlzdCBvZiB0ZXN0cyBmb3Igd2hpY2ggcmVmZXJlbmNlcyBtYXkgYmUgcGFyc2Vk
CisgICAgICAiIiIKKworICAgICAgc2VsZi5fcmVmdGVzdF9saXN0ID0ge30KKyAgICAgIHRlc3Rf
ZGlycyA9IHNldCgpCisgICAgICBmb3IgcGF0aCBpbiBzZWxmLl90ZXN0X2ZpbGVzOgorICAgICAg
ICAgIHRlc3RfZGlyID0gc2VsZi5fZnMuZGlybmFtZShwYXRoKQorICAgICAgICAgIGlmIHRlc3Rf
ZGlyIGluIHRlc3RfZGlyczoKKyAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICB0ZXN0
X2RpcnMuYWRkKHRlc3RfZGlyKQorICAgICAgICAgIHJlZnRlc3RfbGlzdF9wYXRoID0gc2VsZi5f
ZnMuam9pbihzZWxmLl9wb3J0LnBhdGhfZnJvbV93ZWJraXRfYmFzZSgnTGF5b3V0VGVzdHMnKSwg
dGVzdF9kaXIsICdyZWZ0ZXN0Lmxpc3QnKQorICAgICAgICAgIGlmIHNlbGYuX2ZzLmV4aXN0cyhy
ZWZ0ZXN0X2xpc3RfcGF0aCk6CisgICAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYuX2ZzLnJl
YWRfdGV4dF9maWxlKHJlZnRlc3RfbGlzdF9wYXRoKS5zcGxpdCgnXG4nKToKKyAgICAgICAgICAg
ICAgICAgIHNwbGl0X2xpbmUgPSBsaW5lLnNwbGl0KCkKKyAgICAgICAgICAgICAgICAgIGlmIGxl
bihzcGxpdF9saW5lKSA8IDM6CisgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAg
ICAgICAgICAgICAgIGV4cGVjdGF0aW9uX3R5cGUsIHRlc3RfZmlsZSwgcmVmX2ZpbGUgPSBzcGxp
dF9saW5lWzBdLCBzcGxpdF9saW5lWzFdLCBzcGxpdF9saW5lWzJdCisgICAgICAgICAgICAgICAg
ICByZWZfZmlsZV9wYXRoID0gc2VsZi5fZnMuam9pbih0ZXN0X2RpciwgcmVmX2ZpbGUpCisgICAg
ICAgICAgICAgICAgICBzZWxmLl9yZWZ0ZXN0X2xpc3Rbc2VsZi5fZnMuam9pbih0ZXN0X2Rpciwg
dGVzdF9maWxlKV0gPSAoZXhwZWN0YXRpb25fdHlwZSwgcmVmX2ZpbGVfcGF0aCkKKworICAgICAg
IyBEb24ndCB0cmVhdCByZWZlcmVuY2UgZmlsZXMgYXMgdGVzdCBmaWxlcworICAgICAgZm9yIGV4
cGVjdGF0aW9uX3R5cGUsIHJlZl9maWxlX3BhdGggaW4gc2VsZi5fcmVmdGVzdF9saXN0LnZhbHVl
cygpOgorICAgICAgICAgIGlmIHJlZl9maWxlX3BhdGggaW4gc2VsZi5fdGVzdF9maWxlczoKKyAg
ICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlcy5yZW1vdmUocmVmX2ZpbGVfcGF0aCkKKwogICAg
IGRlZiBjb2xsZWN0X3Rlc3RzKHNlbGYsIGFyZ3MpOgogICAgICAgICAiIiJGaW5kIGFsbCB0aGUg
ZmlsZXMgdG8gdGVzdC4KIApAQCAtMzI2LDggKzM1NSwxMSBAQAogICAgICAgICBwYXRocyA9IHNl
bGYuX3N0cmlwX3Rlc3RfZGlyX3ByZWZpeGVzKGFyZ3MpCiAgICAgICAgIGlmIHNlbGYuX29wdGlv
bnMudGVzdF9saXN0OgogICAgICAgICAgICAgcGF0aHMgKz0gc2VsZi5fc3RyaXBfdGVzdF9kaXJf
cHJlZml4ZXMocmVhZF90ZXN0X2ZpbGVzKHNlbGYuX2ZzLCBzZWxmLl9vcHRpb25zLnRlc3RfbGlz
dCwgc2VsZi5fcG9ydC5URVNUX1BBVEhfU0VQQVJBVE9SKSkKKwogICAgICAgICBzZWxmLl90ZXN0
X2ZpbGVzID0gc2VsZi5fcG9ydC50ZXN0cyhwYXRocykKKyAgICAgICAgc2VsZi5fcGFyc2VfcmVm
dGVzdF90ZXN0cygpCiAKKwogICAgIGRlZiBfc3RyaXBfdGVzdF9kaXJfcHJlZml4ZXMoc2VsZiwg
cGF0aHMpOgogICAgICAgICByZXR1cm4gW3NlbGYuX3N0cmlwX3Rlc3RfZGlyX3ByZWZpeChwYXRo
KSBmb3IgcGF0aCBpbiBwYXRocyBpZiBwYXRoXQogCkBAIC01NDQsOSArNTc2LDE1IEBACiAgICAg
ICAgICIiIlJldHVybnMgdGhlIGFwcHJvcHJpYXRlIFRlc3RJbnB1dCBvYmplY3QgZm9yIHRoZSBm
aWxlLiBNb3N0bHkgdGhpcwogICAgICAgICBpcyB1c2VkIGZvciBsb29raW5nIHVwIHRoZSB0aW1l
b3V0IHZhbHVlIChpbiBtcykgdG8gdXNlIGZvciB0aGUgZ2l2ZW4KICAgICAgICAgdGVzdC4iIiIK
KyAgICAgICAgaWYgdGVzdF9maWxlIGluIHNlbGYuX3JlZnRlc3RfbGlzdDoKKyAgICAgICAgICAg
IGlzX21pc21hdGNoID0gc2VsZi5fcmVmdGVzdF9saXN0W3Rlc3RfZmlsZV1bMF0gPT0gJyE9Jwor
ICAgICAgICAgICAgcmVmX2ZpbGUgPSBzZWxmLl9yZWZ0ZXN0X2xpc3RbdGVzdF9maWxlXVsxXQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgaXNfbWlzbWF0Y2ggPSBGYWxzZQorICAgICAgICAg
ICAgcmVmX2ZpbGUgPSBOb25lCiAgICAgICAgIGlmIHNlbGYuX3Rlc3RfaXNfc2xvdyh0ZXN0X2Zp
bGUpOgotICAgICAgICAgICAgcmV0dXJuIFRlc3RJbnB1dCh0ZXN0X2ZpbGUsIHNlbGYuX29wdGlv
bnMuc2xvd190aW1lX291dF9tcykKLSAgICAgICAgcmV0dXJuIFRlc3RJbnB1dCh0ZXN0X2ZpbGUs
IHNlbGYuX29wdGlvbnMudGltZV9vdXRfbXMpCisgICAgICAgICAgICByZXR1cm4gVGVzdElucHV0
KHRlc3RfZmlsZSwgc2VsZi5fb3B0aW9ucy5zbG93X3RpbWVfb3V0X21zLCByZWZfZmlsZSwgaXNf
bWlzbWF0Y2gpCisgICAgICAgIHJldHVybiBUZXN0SW5wdXQodGVzdF9maWxlLCBzZWxmLl9vcHRp
b25zLnRpbWVfb3V0X21zLCByZWZfZmlsZSwgaXNfbWlzbWF0Y2gpCiAKICAgICBkZWYgX3Rlc3Rf
cmVxdWlyZXNfbG9jayhzZWxmLCB0ZXN0X2ZpbGUpOgogICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBp
ZiB0aGUgdGVzdCBuZWVkcyB0byBiZSBsb2NrZWQgd2hlbgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113661</attachid>
            <date>2011-11-04 08:46:42 -0700</date>
            <delta_ts>2011-11-04 11:29:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66837-20111104084640.patch</filename>
            <type>text/plain</type>
            <size>5975</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk5MjgxKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTEtMTEtMDQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUGFyc2UgcmVmdGVzdC5saXN0IGFuZCBleHRyYWN0IHR5cGVzIG9mIHJlZiB0ZXN0
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4MzcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBh
IGZhY2lsaXR5IHRvIHBhcnNlIHJlZnRlc3QubGlzdCBhbmQgcGFzcyBpdCB0byBUZXN0SW5wdXQg
b2JqZWN0cyB0byBNYW5hZ2VyLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3VuaXR0ZXN0LnB5OiBBZGRlZCBhIHRl
c3QuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3Rf
aW5wdXQucHk6CisKIDIwMTEtMTEtMDQgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0
Ym9Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gRG9uJ3QgYnVpbGQgYWxsIG9mIHdlYmtpdCB3
aGVuIHJ1bm5pbmcgYnVpbGQtanNjCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkJKHJldmlzaW9u
IDk5Mjc4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxl
cnMvbWFuYWdlci5weQkod29ya2luZyBjb3B5KQpAQCAtMzI2LDcgKzMyNiw0MSBAQCBjbGFzcyBN
YW5hZ2VyKG9iamVjdCk6CiAgICAgICAgIHBhdGhzID0gc2VsZi5fc3RyaXBfdGVzdF9kaXJfcHJl
Zml4ZXMoYXJncykKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy50ZXN0X2xpc3Q6CiAgICAgICAg
ICAgICBwYXRocyArPSBzZWxmLl9zdHJpcF90ZXN0X2Rpcl9wcmVmaXhlcyhyZWFkX3Rlc3RfZmls
ZXMoc2VsZi5fZnMsIHNlbGYuX29wdGlvbnMudGVzdF9saXN0LCBzZWxmLl9wb3J0LlRFU1RfUEFU
SF9TRVBBUkFUT1IpKQorCiAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXMgPSBzZWxmLl9wb3J0LnRl
c3RzKHBhdGhzKQorICAgICAgICBzZWxmLl9wYXJzZV9hbGxfcmVmdGVzdF9saXN0cygpCisKKyAg
ICBkZWYgX3BhcnNlX2FsbF9yZWZ0ZXN0X2xpc3RzKHNlbGYpOgorICAgICAgICAiIiJQYXJzZSBh
bGwgcmVmdGVzdHMubGlzdCBpbiB0ZXN0cycgZGlyZWN0b3JpZXMgYW5kIHBvcHVsYXRlIHNlbGYu
X3JlZnRlc3RzCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgdGVzdHM6IGxpc3Qgb2YgdGVzdHMg
Zm9yIHdoaWNoIHJlZmVyZW5jZXMgbWF5IGJlIHBhcnNlZAorICAgICAgICAiIiIKKworICAgICAg
ICBzZWxmLl9yZWZ0ZXN0X2xpc3QgPSB7fQorICAgICAgICB0ZXN0X2RpcnMgPSBzZXQoKQorICAg
ICAgICBmb3IgcGF0aCBpbiBzZWxmLl90ZXN0X2ZpbGVzOgorICAgICAgICAgICAgdGVzdF9kaXIg
PSBzZWxmLl9mcy5kaXJuYW1lKHBhdGgpCisgICAgICAgICAgICBpZiB0ZXN0X2RpciBpbiB0ZXN0
X2RpcnM6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHRlc3RfZGlycy5h
ZGQodGVzdF9kaXIpCisgICAgICAgICAgICByZWZ0ZXN0X2xpc3RfcGF0aCA9IHNlbGYuX2ZzLmpv
aW4oc2VsZi5fcG9ydC5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ0xheW91dFRlc3RzJyksIHRlc3Rf
ZGlyLCAncmVmdGVzdC5saXN0JykKKyAgICAgICAgICAgIGlmIHNlbGYuX2ZzLmV4aXN0cyhyZWZ0
ZXN0X2xpc3RfcGF0aCk6CisgICAgICAgICAgICAgICAgc2VsZi5fcGFyc2VfcmVmdGVzdF9saXN0
KHNlbGYuX2ZzLnJlYWRfdGV4dF9maWxlKHJlZnRlc3RfbGlzdF9wYXRoKSwgdGVzdF9kaXIpCisK
KyAgICAgICAgIyBEb24ndCB0cmVhdCByZWZlcmVuY2UgZmlsZXMgYXMgdGVzdCBmaWxlcworICAg
ICAgICBmb3IgZXhwZWN0YXRpb25fdHlwZSwgcmVmX2ZpbGVfcGF0aCBpbiBzZWxmLl9yZWZ0ZXN0
X2xpc3QudmFsdWVzKCk6CisgICAgICAgICAgICBpZiByZWZfZmlsZV9wYXRoIGluIHNlbGYuX3Rl
c3RfZmlsZXM6CisgICAgICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlcy5yZW1vdmUocmVmX2Zp
bGVfcGF0aCkKKworICAgIGRlZiBfcGFyc2VfcmVmdGVzdF9saXN0KHNlbGYsIHJlZnRlc3RfbGlz
dCwgdGVzdF9kaXIpOgorICAgICAgICBmb3IgbGluZSBpbiByZWZ0ZXN0X2xpc3Quc3BsaXQoJ1xu
Jyk6CisgICAgICAgICAgICBzcGxpdF9saW5lID0gbGluZS5zcGxpdCgpCisgICAgICAgICAgICBp
ZiBsZW4oc3BsaXRfbGluZSkgPCAzOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAg
ICAgICBleHBlY3RhdGlvbl90eXBlLCB0ZXN0X2ZpbGUsIHJlZl9maWxlID0gc3BsaXRfbGluZVsw
XSwgc3BsaXRfbGluZVsxXSwgc3BsaXRfbGluZVsyXQorICAgICAgICAgICAgcmVmX2ZpbGVfcGF0
aCA9IHNlbGYuX2ZzLmpvaW4odGVzdF9kaXIsIHJlZl9maWxlKQorICAgICAgICAgICAgc2VsZi5f
cmVmdGVzdF9saXN0W3NlbGYuX2ZzLmpvaW4odGVzdF9kaXIsIHRlc3RfZmlsZSldID0gKGV4cGVj
dGF0aW9uX3R5cGUsIHJlZl9maWxlX3BhdGgpCiAKICAgICBkZWYgX3N0cmlwX3Rlc3RfZGlyX3By
ZWZpeGVzKHNlbGYsIHBhdGhzKToKICAgICAgICAgcmV0dXJuIFtzZWxmLl9zdHJpcF90ZXN0X2Rp
cl9wcmVmaXgocGF0aCkgZm9yIHBhdGggaW4gcGF0aHMgaWYgcGF0aF0KQEAgLTU0NCw5ICs1Nzgs
MTUgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICAiIiJSZXR1cm5zIHRoZSBhcHBy
b3ByaWF0ZSBUZXN0SW5wdXQgb2JqZWN0IGZvciB0aGUgZmlsZS4gTW9zdGx5IHRoaXMKICAgICAg
ICAgaXMgdXNlZCBmb3IgbG9va2luZyB1cCB0aGUgdGltZW91dCB2YWx1ZSAoaW4gbXMpIHRvIHVz
ZSBmb3IgdGhlIGdpdmVuCiAgICAgICAgIHRlc3QuIiIiCisgICAgICAgIGlmIHRlc3RfZmlsZSBp
biBzZWxmLl9yZWZ0ZXN0X2xpc3Q6CisgICAgICAgICAgICBpc19taXNtYXRjaCA9IHNlbGYuX3Jl
ZnRlc3RfbGlzdFt0ZXN0X2ZpbGVdWzBdID09ICchPScKKyAgICAgICAgICAgIHJlZl9maWxlID0g
c2VsZi5fcmVmdGVzdF9saXN0W3Rlc3RfZmlsZV1bMV0KKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGlzX21pc21hdGNoID0gRmFsc2UKKyAgICAgICAgICAgIHJlZl9maWxlID0gTm9uZQogICAg
ICAgICBpZiBzZWxmLl90ZXN0X2lzX3Nsb3codGVzdF9maWxlKToKLSAgICAgICAgICAgIHJldHVy
biBUZXN0SW5wdXQodGVzdF9maWxlLCBzZWxmLl9vcHRpb25zLnNsb3dfdGltZV9vdXRfbXMpCi0g
ICAgICAgIHJldHVybiBUZXN0SW5wdXQodGVzdF9maWxlLCBzZWxmLl9vcHRpb25zLnRpbWVfb3V0
X21zKQorICAgICAgICAgICAgcmV0dXJuIFRlc3RJbnB1dCh0ZXN0X2ZpbGUsIHNlbGYuX29wdGlv
bnMuc2xvd190aW1lX291dF9tcywgcmVmX2ZpbGUsIGlzX21pc21hdGNoKQorICAgICAgICByZXR1
cm4gVGVzdElucHV0KHRlc3RfZmlsZSwgc2VsZi5fb3B0aW9ucy50aW1lX291dF9tcywgcmVmX2Zp
bGUsIGlzX21pc21hdGNoKQogCiAgICAgZGVmIF90ZXN0X3JlcXVpcmVzX2xvY2soc2VsZiwgdGVz
dF9maWxlKToKICAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIHRlc3QgbmVlZHMgdG8gYmUg
bG9ja2VkIHdoZW4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL21hbmFnZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl91bml0dGVzdC5weQko
cmV2aXNpb24gOTkyNzgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9j
b250cm9sbGVycy9tYW5hZ2VyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNjMsNiAr
MjYzLDEzIEBAIGNsYXNzIE1hbmFnZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAg
ICAgIG1hbmFnZXIgPSBnZXRfbWFuYWdlcl93aXRoX3Rlc3RzKFsnaHR0cFxcdGVzdHNcXG1pbWUn
XSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYW5hZ2VyLm5lZWRzX3NlcnZlcnMoKSkK
IAorICAgIGRlZiB0ZXN0X3BhcnNlX3JlZnRlc3RfbGlzdChzZWxmKToKKyAgICAgICAgbWFuYWdl
ciA9IE1hbmFnZXIocG9ydD1Nb2NrSG9zdCgpLnBvcnRfZmFjdG9yeS5nZXQoJ3Rlc3Qtd2luLXhw
JywgTm9uZSksIG9wdGlvbnM9TW9ja09wdGlvbnMoKSwgcHJpbnRlcj1Nb2NrKCkpCisgICAgICAg
IG1hbmFnZXIuX3JlZnRlc3RfbGlzdCA9IHt9CisgICAgICAgIG1hbmFnZXIuX3BhcnNlX3JlZnRl
c3RfbGlzdCgiIiI9PSB0ZXN0Lmh0bWwgdGVzdC1yZWYuaHRtbAorCishPSB0ZXN0Lmh0bWwgdGVz
dC1ub3JlZi5odG1sIiIiLCAnZm9vLycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1hbmFn
ZXIuX3JlZnRlc3RfbGlzdCwgeydmb28vdGVzdC5odG1sJzogKCc9PScsICdmb28vdGVzdC1yZWYu
aHRtbCcpLCAnZm9vL3Rlc3QuaHRtbCc6ICgnIT0nLCAnZm9vL3Rlc3Qtbm9yZWYuaHRtbCcpfSkK
IAogY2xhc3MgTmF0dXJhbENvbXBhcmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYg
YXNzZXJ0X2NtcChzZWxmLCB4LCB5LCByZXN1bHQpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfaW5wdXQucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfaW5wdXQucHkJKHJl
dmlzaW9uIDk5Mjc4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9k
ZWxzL3Rlc3RfaW5wdXQucHkJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIGNsYXNz
IFRlc3RJbnB1dDoKICAgICAiIiJHcm91cHMgaW5mb3JtYXRpb24gYWJvdXQgYSB0ZXN0IGZvciBl
YXN5IHBhc3Npbmcgb2YgZGF0YS4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0X25h
bWUsIHRpbWVvdXQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0X25hbWUsIHRpbWVvdXQs
IHJlZl9maWxlPU5vbmUsIGlzX21pc21hdGNoPUZhbHNlKToKICAgICAgICAgIiIiSG9sZHMgdGhl
IGlucHV0IHBhcmFtZXRlcnMgZm9yIGEgdGVzdC4KICAgICAgICAgQXJnczoKICAgICAgICAgICB0
ZXN0OiBuYW1lIG9mIHRlc3QgKG5vdCBhbiBhYnNvbHV0ZSBwYXRoISkKQEAgLTQwLDYgKzQwLDgg
QEAgY2xhc3MgVGVzdElucHV0OgogICAgICAgICAgICIiIgogICAgICAgICBzZWxmLnRlc3RfbmFt
ZSA9IHRlc3RfbmFtZQogICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CisgICAgICAgIHNl
bGYucmVmX2ZpbGUgPSByZWZfZmlsZQorICAgICAgICBzZWxmLmlzX21pc21hdGNoID0gaXNfbWlz
bWF0Y2gKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuICJUZXN0SW5w
dXQoJyVzJywgJWQpIiAlIChzZWxmLnRlc3RfbmFtZSwgc2VsZi50aW1lb3V0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113686</attachid>
            <date>2011-11-04 11:29:31 -0700</date>
            <delta_ts>2011-11-04 19:07:58 -0700</delta_ts>
            <desc>Moved the logic to find reftest.list to test_files</desc>
            <filename>bug-66837-20111104112929.patch</filename>
            <type>text/plain</type>
            <size>13578</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk5MzAxKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMTEtMTEtMDQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUGFyc2UgcmVmdGVzdC5saXN0IGFuZCBleHRyYWN0IHR5cGVzIG9mIHJlZiB0ZXN0
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4MzcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBh
IGZhY2lsaXR5IHRvIHBhcnNlIHJlZnRlc3QubGlzdCBhbmQgcGFzcyBpdCB0byBUZXN0SW5wdXQg
b2JqZWN0cyB0byBNYW5hZ2VyLgorCisgICAgICAgIE1vZGlmaWVkIHRlc3RfZmlsZXMgdG8gY29u
c2lkZXIgcmVmdGVzdC5saXN0IGFzIGEgdGVzdCBmaWxlIHNvIHRoYXQgcG9ydC50ZXN0cyBjYW4g
ZmluZAorICAgICAgICByZWZ0ZXN0Lmxpc3QgZmlsZXMgaW4gdGVzdCBkaXJlY3Rvcmllcy4gVGhl
c2UgcmVmdGVzdC5saXN0IGVudHJpZXMgYXJlIHJlbW92ZWQgYnkKKyAgICAgICAgTWFuYWdlci5f
cGFyc2VfYWxsX3JlZnRlc3RfbGlzdHMsIGNhbGxlZCBieSBNYW5hZ2VyLmNvbGxlY3RfdGVzdHMs
IGFzIGl0IGNvbGxlY3RzIHRlc3QKKyAgICAgICAgYW5kIHJlZmVyZW5jZSBmaWxlIG1hcHBpbmcu
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9t
YW5hZ2VyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRy
b2xsZXJzL21hbmFnZXJfdW5pdHRlc3QucHk6IEFkZGVkIGEgdGVzdC4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9pbnB1dC5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlc191bml0dGVz
dC5weTogQWRkZWQgdGVzdCBjYXNlcy4KKwogMjAxMS0xMS0wNCAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIE5QTl9Db252ZXJ0UG9pbnQgcGx1Zy1pbiB0
ZXN0IHNob3VsZCBiZSBjYWxsZWQgZnJvbSBOUFBfU2V0V2luZG93CkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21h
bmFnZXIucHkJKHJldmlzaW9uIDk5Mjc4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQkod29ya2luZyBjb3B5KQpAQCAtMzI2LDcg
KzMyNiw0MiBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgIHBhdGhzID0gc2VsZi5f
c3RyaXBfdGVzdF9kaXJfcHJlZml4ZXMoYXJncykKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy50
ZXN0X2xpc3Q6CiAgICAgICAgICAgICBwYXRocyArPSBzZWxmLl9zdHJpcF90ZXN0X2Rpcl9wcmVm
aXhlcyhyZWFkX3Rlc3RfZmlsZXMoc2VsZi5fZnMsIHNlbGYuX29wdGlvbnMudGVzdF9saXN0LCBz
ZWxmLl9wb3J0LlRFU1RfUEFUSF9TRVBBUkFUT1IpKQorCiAgICAgICAgIHNlbGYuX3Rlc3RfZmls
ZXMgPSBzZWxmLl9wb3J0LnRlc3RzKHBhdGhzKQorICAgICAgICBzZWxmLl9wYXJzZV9hbGxfcmVm
dGVzdF9saXN0cygpCisKKyAgICBkZWYgX3BhcnNlX2FsbF9yZWZ0ZXN0X2xpc3RzKHNlbGYpOgor
ICAgICAgICAiIiJQYXJzZSBhbGwgcmVmdGVzdHMubGlzdCBpbiB0ZXN0cycgZGlyZWN0b3JpZXMg
YW5kIHBvcHVsYXRlIHNlbGYuX3JlZnRlc3RzCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgdGVz
dHM6IGxpc3Qgb2YgdGVzdHMgZm9yIHdoaWNoIHJlZmVyZW5jZXMgbWF5IGJlIHBhcnNlZAorICAg
ICAgICAiIiIKKworICAgICAgICBzZWxmLl9yZWZ0ZXN0cyA9IHt9CisgICAgICAgIHRlc3RfZGly
cyA9IHNldCgpCisgICAgICAgIHJlZnRlc3RfbGlzdHMgPSBbXQorICAgICAgICBmb3IgcGF0aCBp
biBzZWxmLl90ZXN0X2ZpbGVzOgorICAgICAgICAgICAgaWYgJ3JlZnRlc3QubGlzdCcgPT0gc2Vs
Zi5fZnMuYmFzZW5hbWUocGF0aCk6CisgICAgICAgICAgICAgICAgcmVmdGVzdF9saXN0cy5hcHBl
bmQocGF0aCkKKyAgICAgICAgICAgICAgICByZWZ0ZXN0X2xpc3RfYWJzX3BhdGggPSBzZWxmLl9m
cy5qb2luKHNlbGYuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLCBwYXRoKQorICAgICAgICAgICAg
ICAgIHNlbGYuX3BhcnNlX3JlZnRlc3RfbGlzdChzZWxmLl9mcy5yZWFkX3RleHRfZmlsZShyZWZ0
ZXN0X2xpc3RfYWJzX3BhdGgpLCBzZWxmLl9mcy5kaXJuYW1lKHBhdGgpKQorCisgICAgICAgIGZv
ciByZWZ0ZXN0X2xpc3QgaW4gcmVmdGVzdF9saXN0czoKKyAgICAgICAgICAgIHNlbGYuX3Rlc3Rf
ZmlsZXMucmVtb3ZlKHJlZnRlc3RfbGlzdCkKKworICAgICAgICAjIERvbid0IHRyZWF0IHJlZmVy
ZW5jZSBmaWxlcyBhcyB0ZXN0IGZpbGVzCisgICAgICAgIGZvciBleHBlY3RhdGlvbl90eXBlLCBy
ZWZfZmlsZV9wYXRoIGluIHNlbGYuX3JlZnRlc3RzLnZhbHVlcygpOgorICAgICAgICAgICAgaWYg
cmVmX2ZpbGVfcGF0aCBpbiBzZWxmLl90ZXN0X2ZpbGVzOgorICAgICAgICAgICAgICAgIHNlbGYu
X3Rlc3RfZmlsZXMucmVtb3ZlKHJlZl9maWxlX3BhdGgpCisKKyAgICBkZWYgX3BhcnNlX3JlZnRl
c3RfbGlzdChzZWxmLCByZWZ0ZXN0X2xpc3QsIHRlc3RfZGlyKToKKyAgICAgICAgZm9yIGxpbmUg
aW4gcmVmdGVzdF9saXN0LnNwbGl0KCdcbicpOgorICAgICAgICAgICAgc3BsaXRfbGluZSA9IGxp
bmUuc3BsaXQoKQorICAgICAgICAgICAgaWYgbGVuKHNwbGl0X2xpbmUpIDwgMzoKKyAgICAgICAg
ICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZXhwZWN0YXRpb25fdHlwZSwgdGVzdF9maWxl
LCByZWZfZmlsZSA9IHNwbGl0X2xpbmUKKyAgICAgICAgICAgIHJlZl9maWxlX3BhdGggPSBzZWxm
Ll9mcy5qb2luKHRlc3RfZGlyLCByZWZfZmlsZSkKKyAgICAgICAgICAgIHNlbGYuX3JlZnRlc3Rz
W3NlbGYuX2ZzLmpvaW4odGVzdF9kaXIsIHRlc3RfZmlsZSldID0gKGV4cGVjdGF0aW9uX3R5cGUs
IHJlZl9maWxlX3BhdGgpCiAKICAgICBkZWYgX3N0cmlwX3Rlc3RfZGlyX3ByZWZpeGVzKHNlbGYs
IHBhdGhzKToKICAgICAgICAgcmV0dXJuIFtzZWxmLl9zdHJpcF90ZXN0X2Rpcl9wcmVmaXgocGF0
aCkgZm9yIHBhdGggaW4gcGF0aHMgaWYgcGF0aF0KQEAgLTU0NCw5ICs1NzksMTUgQEAgY2xhc3Mg
TWFuYWdlcihvYmplY3QpOgogICAgICAgICAiIiJSZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBUZXN0
SW5wdXQgb2JqZWN0IGZvciB0aGUgZmlsZS4gTW9zdGx5IHRoaXMKICAgICAgICAgaXMgdXNlZCBm
b3IgbG9va2luZyB1cCB0aGUgdGltZW91dCB2YWx1ZSAoaW4gbXMpIHRvIHVzZSBmb3IgdGhlIGdp
dmVuCiAgICAgICAgIHRlc3QuIiIiCisgICAgICAgIGlmIHRlc3RfZmlsZSBpbiBzZWxmLl9yZWZ0
ZXN0czoKKyAgICAgICAgICAgIGlzX21pc21hdGNoID0gc2VsZi5fcmVmdGVzdHNbdGVzdF9maWxl
XVswXSA9PSAnIT0nCisgICAgICAgICAgICByZWZfZmlsZSA9IHNlbGYuX3JlZnRlc3RzW3Rlc3Rf
ZmlsZV1bMV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlzX21pc21hdGNoID0gRmFsc2UK
KyAgICAgICAgICAgIHJlZl9maWxlID0gTm9uZQogICAgICAgICBpZiBzZWxmLl90ZXN0X2lzX3Ns
b3codGVzdF9maWxlKToKLSAgICAgICAgICAgIHJldHVybiBUZXN0SW5wdXQodGVzdF9maWxlLCBz
ZWxmLl9vcHRpb25zLnNsb3dfdGltZV9vdXRfbXMpCi0gICAgICAgIHJldHVybiBUZXN0SW5wdXQo
dGVzdF9maWxlLCBzZWxmLl9vcHRpb25zLnRpbWVfb3V0X21zKQorICAgICAgICAgICAgcmV0dXJu
IFRlc3RJbnB1dCh0ZXN0X2ZpbGUsIHNlbGYuX29wdGlvbnMuc2xvd190aW1lX291dF9tcywgcmVm
X2ZpbGUsIGlzX21pc21hdGNoKQorICAgICAgICByZXR1cm4gVGVzdElucHV0KHRlc3RfZmlsZSwg
c2VsZi5fb3B0aW9ucy50aW1lX291dF9tcywgcmVmX2ZpbGUsIGlzX21pc21hdGNoKQogCiAgICAg
ZGVmIF90ZXN0X3JlcXVpcmVzX2xvY2soc2VsZiwgdGVzdF9maWxlKToKICAgICAgICAgIiIiUmV0
dXJuIFRydWUgaWYgdGhlIHRlc3QgbmVlZHMgdG8gYmUgbG9ja2VkIHdoZW4KSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfdW5pdHRl
c3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
Y29udHJvbGxlcnMvbWFuYWdlcl91bml0dGVzdC5weQkocmV2aXNpb24gOTkyNzgpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3VuaXR0
ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNjMsNiArMjYzLDM1IEBAIGNsYXNzIE1hbmFnZXJU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIG1hbmFnZXIgPSBnZXRfbWFuYWdl
cl93aXRoX3Rlc3RzKFsnaHR0cFxcdGVzdHNcXG1pbWUnXSkKICAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShtYW5hZ2VyLm5lZWRzX3NlcnZlcnMoKSkKIAorICAgIGRlZiB0ZXN0X3BhcnNlX3Jl
ZnRlc3RfbGlzdChzZWxmKToKKyAgICAgICAgbWFuYWdlciA9IE1hbmFnZXIocG9ydD1Nb2NrSG9z
dCgpLnBvcnRfZmFjdG9yeS5nZXQoJ3Rlc3Qtd2luLXhwJywgTm9uZSksIG9wdGlvbnM9TW9ja09w
dGlvbnMoKSwgcHJpbnRlcj1Nb2NrKCkpCisgICAgICAgIG1hbmFnZXIuX3JlZnRlc3RzID0ge30K
KyAgICAgICAgbWFuYWdlci5fcGFyc2VfcmVmdGVzdF9saXN0KCIiIj09IHRlc3QuaHRtbCB0ZXN0
LXJlZi5odG1sCisKKyE9IHRlc3QuaHRtbCB0ZXN0LW5vcmVmLmh0bWwiIiIsICdmb28vJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobWFuYWdlci5fcmVmdGVzdHMsIHsnZm9vL3Rlc3QuaHRt
bCc6ICgnPT0nLCAnZm9vL3Rlc3QtcmVmLmh0bWwnKSwgJ2Zvby90ZXN0Lmh0bWwnOiAoJyE9Jywg
J2Zvby90ZXN0LW5vcmVmLmh0bWwnKX0pCisKKyAgICBkZWYgdGVzdF9jb2xsZWN0X3Rlc3RzX3dp
dGhfcmVmdGVzdHMoc2VsZik6CisgICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBydW5fd2Via2l0X3Rl
c3RzLnBhcnNlX2FyZ3MoWyctLXBsYXRmb3JtPXRlc3QnLCAnLS1wcmludD1ub3RoaW5nJywgJ3Jl
ZnRlc3RzL2ZvbyddKQorICAgICAgICBtYW5hZ2VyID0gTWFuYWdlcihwb3J0PU1vY2tIb3N0KCku
cG9ydF9mYWN0b3J5LmdldCgndGVzdCcpLCBvcHRpb25zPW9wdGlvbnMsIHByaW50ZXI9TW9jaygp
KQorICAgICAgICBtYW5hZ2VyLmNvbGxlY3RfdGVzdHMoYXJncykKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKCdyZWZ0ZXN0cy9mb28vcmVmdGVzdC5saXN0JyBub3QgaW4gbWFuYWdlci5fdGVzdF9m
aWxlcykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdyZWZ0ZXN0cy9mb28vdGVzdC5odG1sJyBp
biBtYW5hZ2VyLl90ZXN0X2ZpbGVzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3JlZnRlc3Rz
L2Zvby90ZXN0LXJlZi5odG1sJyBub3QgaW4gbWFuYWdlci5fdGVzdF9maWxlcykKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKCdyZWZ0ZXN0cy9mb28vdGVzdC5odG1sJyBpbiBtYW5hZ2VyLl9yZWZ0
ZXN0cykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdyZWZ0ZXN0cy9mb28vdGVzdC1yZWYuaHRt
bCcgbm90IGluIG1hbmFnZXIuX3JlZnRlc3RzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1h
bmFnZXIuX3JlZnRlc3RzWydyZWZ0ZXN0cy9mb28vdGVzdC5odG1sJ10sICgnPT0nLCAncmVmdGVz
dHMvZm9vL3Rlc3QtcmVmLmh0bWwnKSkKKworICAgIGRlZiB0ZXN0X2NvbGxlY3RfdGVzdHNfd2l0
aF9yZWZ0ZXN0c19hdF9wYXJlbnRkaXIoc2VsZik6CisgICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBy
dW5fd2Via2l0X3Rlc3RzLnBhcnNlX2FyZ3MoWyctLXBsYXRmb3JtPXRlc3QnLCAnLS1wcmludD1u
b3RoaW5nJywgJ3JlZnRlc3RzJ10pCisgICAgICAgIG1hbmFnZXIgPSBNYW5hZ2VyKHBvcnQ9TW9j
a0hvc3QoKS5wb3J0X2ZhY3RvcnkuZ2V0KCd0ZXN0JyksIG9wdGlvbnM9b3B0aW9ucywgcHJpbnRl
cj1Nb2NrKCkpCisgICAgICAgIG1hbmFnZXIuY29sbGVjdF90ZXN0cyhhcmdzKQorICAgICAgICBz
ZWxmLmFzc2VydFRydWUoJ3JlZnRlc3RzL2Zvby9yZWZ0ZXN0Lmxpc3QnIG5vdCBpbiBtYW5hZ2Vy
Ll90ZXN0X2ZpbGVzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3JlZnRlc3RzL2Zvby90ZXN0
Lmh0bWwnIGluIG1hbmFnZXIuX3Rlc3RfZmlsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgn
cmVmdGVzdHMvZm9vL3Rlc3QtcmVmLmh0bWwnIG5vdCBpbiBtYW5hZ2VyLl90ZXN0X2ZpbGVzKQor
ICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3JlZnRlc3RzL2Zvby90ZXN0Lmh0bWwnIGluIG1hbmFn
ZXIuX3JlZnRlc3RzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3JlZnRlc3RzL2Zvby90ZXN0
LXJlZi5odG1sJyBub3QgaW4gbWFuYWdlci5fcmVmdGVzdHMpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobWFuYWdlci5fcmVmdGVzdHNbJ3JlZnRlc3RzL2Zvby90ZXN0Lmh0bWwnXSwgKCc9PScs
ICdyZWZ0ZXN0cy9mb28vdGVzdC1yZWYuaHRtbCcpKQogCiBjbGFzcyBOYXR1cmFsQ29tcGFyZVRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBhc3NlcnRfY21wKHNlbGYsIHgsIHksIHJl
c3VsdCk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMv
dGVzdF9pbnB1dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9tb2RlbHMvdGVzdF9pbnB1dC5weQkocmV2aXNpb24gOTkyNzgpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9pbnB1dC5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogY2xhc3MgVGVzdElucHV0OgogICAgICIiIkdyb3Vw
cyBpbmZvcm1hdGlvbiBhYm91dCBhIHRlc3QgZm9yIGVhc3kgcGFzc2luZyBvZiBkYXRhLiIiIgog
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfbmFtZSwgdGltZW91dCk6CisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHRlc3RfbmFtZSwgdGltZW91dCwgcmVmX2ZpbGU9Tm9uZSwgaXNfbWlzbWF0
Y2g9RmFsc2UpOgogICAgICAgICAiIiJIb2xkcyB0aGUgaW5wdXQgcGFyYW1ldGVycyBmb3IgYSB0
ZXN0LgogICAgICAgICBBcmdzOgogICAgICAgICAgIHRlc3Q6IG5hbWUgb2YgdGVzdCAobm90IGFu
IGFic29sdXRlIHBhdGghKQpAQCAtNDAsNiArNDAsOCBAQCBjbGFzcyBUZXN0SW5wdXQ6CiAgICAg
ICAgICAgIiIiCiAgICAgICAgIHNlbGYudGVzdF9uYW1lID0gdGVzdF9uYW1lCiAgICAgICAgIHNl
bGYudGltZW91dCA9IHRpbWVvdXQKKyAgICAgICAgc2VsZi5yZWZfZmlsZSA9IHJlZl9maWxlCisg
ICAgICAgIHNlbGYuaXNfbWlzbWF0Y2ggPSBpc19taXNtYXRjaAogCiAgICAgZGVmIF9fcmVwcl9f
KHNlbGYpOgogICAgICAgICByZXR1cm4gIlRlc3RJbnB1dCgnJXMnLCAlZCkiICUgKHNlbGYudGVz
dF9uYW1lLCBzZWxmLnRpbWVvdXQpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3Rlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CShyZXZpc2lvbiA5OTI3OCkKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQkod29ya2luZyBjb3B5KQpA
QCAtMTg1LDYgKzE4NSw4IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDM0CiAgICAgdGVzdHMu
YWRkX3JlZnRlc3QoJ2ZhaWx1cmVzL3VuZXhwZWN0ZWQvcmVmdGVzdC5odG1sJywgJ2ZhaWx1cmVz
L3VuZXhwZWN0ZWQvcmVmdGVzdC1leHBlY3RlZC5odG1sJywgc2FtZV9pbWFnZT1GYWxzZSkKICAg
ICB0ZXN0cy5hZGRfcmVmdGVzdCgnZmFpbHVyZXMvdW5leHBlY3RlZC9taXNtYXRjaC5odG1sJywg
J2ZhaWx1cmVzL3VuZXhwZWN0ZWQvbWlzbWF0Y2gtZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbCcsIHNh
bWVfaW1hZ2U9VHJ1ZSkKICAgICAjIEZJWE1FOiBBZGQgYSByZWZ0ZXN0IHdoaWNoIGNyYXNoZXMu
CisgICAgdGVzdHMuYWRkKCdyZWZ0ZXN0cy9mb28vdGVzdC5odG1sJykKKyAgICB0ZXN0cy5hZGQo
J3JlZnRlc3RzL2Zvby90ZXN0LXJlZi5odG1sJykKIAogICAgIHRlc3RzLmFkZCgnd2Vic29ja2V0
L3Rlc3RzL3Bhc3Nlcy90ZXh0Lmh0bWwnKQogCkBAIC0yMTEsMjMgKzIxMywyNSBAQCBkZWYgdW5p
dF90ZXN0X2ZpbGVzeXN0ZW0oZmlsZXM9Tm9uZSk6CiAgICAgdGVzdF9saXN0ID0gdW5pdF90ZXN0
X2xpc3QoKQogICAgIGZpbGVzID0gZmlsZXMgb3Ige30KIAotICAgIGRlZiBhZGRfZmlsZShmaWxl
cywgdGVzdCwgc3VmZml4LCBjb250ZW50cyk6CisgICAgZGVmIGFkZF90ZXN0X2ZpbGUoZmlsZXMs
IHRlc3QsIHN1ZmZpeCwgY29udGVudHMpOgogICAgICAgICBkaXJuYW1lID0gdGVzdC5uYW1lWzA6
dGVzdC5uYW1lLnJmaW5kKCcvJyldCiAgICAgICAgIGJhc2UgPSB0ZXN0LmJhc2UKLSAgICAgICAg
cGF0aCA9IExBWU9VVF9URVNUX0RJUiArICcvJyArIGRpcm5hbWUgKyAnLycgKyBiYXNlICsgc3Vm
Zml4Ci0gICAgICAgIGZpbGVzW3BhdGhdID0gY29udGVudHMKKyAgICAgICAgYWRkX2ZpbGUoZmls
ZXMsIGRpcm5hbWUgKyAnLycgKyBiYXNlICsgc3VmZml4LCBjb250ZW50cykKKworICAgIGRlZiBh
ZGRfZmlsZShmaWxlcywgZmlsZV9uYW1lLCBjb250ZW50cyk6CisgICAgICAgIGZpbGVzW0xBWU9V
VF9URVNUX0RJUiArICcvJyArIGZpbGVfbmFtZV0gPSBjb250ZW50cwogCiAgICAgIyBBZGQgZWFj
aCB0ZXN0IGFuZCB0aGUgZXhwZWN0ZWQgb3V0cHV0LCBpZiBhbnkuCiAgICAgZm9yIHRlc3QgaW4g
dGVzdF9saXN0LnRlc3RzLnZhbHVlcygpOgotICAgICAgICBhZGRfZmlsZShmaWxlcywgdGVzdCwg
Jy5odG1sJywgJycpCisgICAgICAgIGFkZF90ZXN0X2ZpbGUoZmlsZXMsIHRlc3QsICcuaHRtbCcs
ICcnKQogICAgICAgICBpZiB0ZXN0LmlzX3JlZnRlc3Q6CiAgICAgICAgICAgICBjb250aW51ZQog
ICAgICAgICBpZiB0ZXN0LmFjdHVhbF9hdWRpbzoKLSAgICAgICAgICAgIGFkZF9maWxlKGZpbGVz
LCB0ZXN0LCAnLWV4cGVjdGVkLndhdicsIHRlc3QuZXhwZWN0ZWRfYXVkaW8pCisgICAgICAgICAg
ICBhZGRfdGVzdF9maWxlKGZpbGVzLCB0ZXN0LCAnLWV4cGVjdGVkLndhdicsIHRlc3QuZXhwZWN0
ZWRfYXVkaW8pCiAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgIGFkZF9maWxlKGZpbGVz
LCB0ZXN0LCAnLWV4cGVjdGVkLnR4dCcsIHRlc3QuZXhwZWN0ZWRfdGV4dCkKLSAgICAgICAgYWRk
X2ZpbGUoZmlsZXMsIHRlc3QsICctZXhwZWN0ZWQucG5nJywgdGVzdC5leHBlY3RlZF9pbWFnZSkK
KyAgICAgICAgYWRkX3Rlc3RfZmlsZShmaWxlcywgdGVzdCwgJy1leHBlY3RlZC50eHQnLCB0ZXN0
LmV4cGVjdGVkX3RleHQpCisgICAgICAgIGFkZF90ZXN0X2ZpbGUoZmlsZXMsIHRlc3QsICctZXhw
ZWN0ZWQucG5nJywgdGVzdC5leHBlY3RlZF9pbWFnZSkKIAogCiAgICAgIyBBZGQgdGhlIHRlc3Rf
ZXhwZWN0YXRpb25zIGZpbGUuCkBAIC0yNTMsNiArMjU3LDEwIEBAIFdPTlRGSVggU0tJUCA6IGZh
aWx1cmVzL2V4cGVjdGVkL2tleWJvYXIKIFdPTlRGSVggU0tJUCA6IGZhaWx1cmVzL2V4cGVjdGVk
L2V4Y2VwdGlvbi5odG1sID0gQ1JBU0gKICIiIgogCisgICAgYWRkX2ZpbGUoZmlsZXMsICdyZWZ0
ZXN0cy9mb28vcmVmdGVzdC5saXN0JywgIiIiCis9PSB0ZXN0Lmh0bWwgdGVzdC1yZWYuaHRtbAor
IiIiKQorCiAgICAgIyBGSVhNRTogVGhpcyB0ZXN0IHdhcyBvbmx5IGJlaW5nIGlnbm9yZWQgYmVj
YXVzZSBvZiBtaXNzaW5nIGEgbGVhZGluZyAnLycuCiAgICAgIyBGaXhpbmcgdGhlIHR5cG8gY2F1
c2VzIHNldmVyYWwgdGVzdHMgdG8gYXNzZXJ0LCBzbyBkaXNhYmxpbmcgdGhlIHRlc3QgZW50aXJl
bHkuCiAgICAgIyBBZGQgaW4gYSBmaWxlIHNob3VsZCBiZSBpZ25vcmVkIGJ5IHRlc3RfZmlsZXMu
ZmluZCgpLgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90
ZXN0X2ZpbGVzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvdGVzdF9maWxlcy5weQkocmV2aXNpb24gOTkyNzgpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXMucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTg4LDcgKzg4LDcgQEAgZGVmIG5vcm1hbGl6ZWRfZmluZChmaWxlc3lzdGVtLCBwYXRo
cyk6CiAgICAgIyBGSVhNRTogSSdtIG5vdCBzdXJlIHRoZXJlJ3MgbXVjaCBwb2ludCBpbiB0aGlz
IGJlaW5nIGEgc2V0LiBBIGxpc3Qgd291bGQgcHJvYmFibHkgYmUgZmFzdGVyLgogICAgIHRlc3Rf
ZmlsZXMgPSBzZXQoKQogICAgIGZvciBwYXRoIGluIHBhdGhzX3RvX3dhbGs6Ci0gICAgICAgIGZp
bGVzID0gZmlsZXN5c3RlbS5maWxlc191bmRlcihwYXRoLCBfc2tpcHBlZF9kaXJlY3Rvcmllcywg
X2lzX3Rlc3RfZmlsZSkKKyAgICAgICAgZmlsZXMgPSBmaWxlc3lzdGVtLmZpbGVzX3VuZGVyKHBh
dGgsIF9za2lwcGVkX2RpcmVjdG9yaWVzLCBfaXNfdGVzdF9maWxlX29yX3JlZnRlc3RfbGlzdCkK
ICAgICAgICAgdGVzdF9maWxlcy51cGRhdGUoc2V0KGZpbGVzKSkKIAogICAgIGdhdGhlcl90aW1l
ID0gdGltZS50aW1lKCkgLSBnYXRoZXJfc3RhcnRfdGltZQpAQCAtMTA3LDUgKzEwNyw1IEBAIGRl
ZiBpc19yZWZlcmVuY2VfaHRtbF9maWxlKGZpbGVuYW1lKToKICAgICByZXR1cm4gZmlsZW5hbWUu
ZW5kc3dpdGgoJy1leHBlY3RlZC5odG1sJykgb3IgZmlsZW5hbWUuZW5kc3dpdGgoJy1leHBlY3Rl
ZC1taXNtYXRjaC5odG1sJykKIAogCi1kZWYgX2lzX3Rlc3RfZmlsZShmaWxlc3lzdGVtLCBkaXJu
YW1lLCBmaWxlbmFtZSk6Ci0gICAgcmV0dXJuIF9oYXNfc3VwcG9ydGVkX2V4dGVuc2lvbihmaWxl
c3lzdGVtLCBmaWxlbmFtZSkgYW5kIG5vdCBpc19yZWZlcmVuY2VfaHRtbF9maWxlKGZpbGVuYW1l
KQorZGVmIF9pc190ZXN0X2ZpbGVfb3JfcmVmdGVzdF9saXN0KGZpbGVzeXN0ZW0sIGRpcm5hbWUs
IGZpbGVuYW1lKToKKyAgICByZXR1cm4gKF9oYXNfc3VwcG9ydGVkX2V4dGVuc2lvbihmaWxlc3lz
dGVtLCBmaWxlbmFtZSkgYW5kIG5vdCBpc19yZWZlcmVuY2VfaHRtbF9maWxlKGZpbGVuYW1lKSkg
b3IgZmlsZW5hbWUgPT0gJ3JlZnRlc3QubGlzdCcKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlc191bml0dGVzdC5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXNfdW5p
dHRlc3QucHkJKHJldmlzaW9uIDk5Mjc4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC01
OSwxNCArNTksMTYgQEAgY2xhc3MgVGVzdEZpbGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgICAgIHRlc3RzID0gdGVzdF9maWxlcy5maW5kKHBvcnQsIFsndXNlcnNjcmlwdHMvcmVzb3Vy
Y2VzJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHMsIHNldChbXSkpCiAKLSAgICBk
ZWYgdGVzdF9pc190ZXN0X2ZpbGUoc2VsZik6CisgICAgZGVmIHRlc3RfaXNfdGVzdF9maWxlX29y
X3JlZnRlc3RfbGlzdChzZWxmKToKICAgICAgICAgcG9ydCA9IHRlc3QuVGVzdFBvcnQoKQogICAg
ICAgICBmcyA9IHBvcnQuX2ZpbGVzeXN0ZW0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3Rf
ZmlsZXMuX2lzX3Rlc3RfZmlsZShmcywgJycsICdmb28uaHRtbCcpKQotICAgICAgICBzZWxmLmFz
c2VydFRydWUodGVzdF9maWxlcy5faXNfdGVzdF9maWxlKGZzLCAnJywgJ2Zvby5zaHRtbCcpKQot
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHRlc3RfZmlsZXMuX2lzX3Rlc3RfZmlsZShmcywgJycs
ICdmb28ucG5nJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodGVzdF9maWxlcy5faXNfdGVz
dF9maWxlKGZzLCAnJywgJ2Zvby1leHBlY3RlZC5odG1sJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UodGVzdF9maWxlcy5faXNfdGVzdF9maWxlKGZzLCAnJywgJ2Zvby1leHBlY3RlZC1taXNt
YXRjaC5odG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2ZpbGVzLl9pc190ZXN0
X2ZpbGVfb3JfcmVmdGVzdF9saXN0KGZzLCAnJywgJ2Zvby5odG1sJykpCisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGVfb3JfcmVmdGVzdF9saXN0KGZzLCAn
JywgJ2Zvby5zaHRtbCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodGVzdF9maWxlcy5faXNf
dGVzdF9maWxlX29yX3JlZnRlc3RfbGlzdChmcywgJycsICdyZWZ0ZXN0Lmxpc3QnKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRGYWxzZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGVfb3JfcmVmdGVzdF9s
aXN0KGZzLCAnJywgJ2Zvby5wbmcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0ZXN0X2Zp
bGVzLl9pc190ZXN0X2ZpbGVfb3JfcmVmdGVzdF9saXN0KGZzLCAnJywgJ2Zvby1leHBlY3RlZC5o
dG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodGVzdF9maWxlcy5faXNfdGVzdF9maWxl
X29yX3JlZnRlc3RfbGlzdChmcywgJycsICdmb28tZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbCcpKQor
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHRlc3RfZmlsZXMuX2lzX3Rlc3RfZmlsZV9vcl9yZWZ0
ZXN0X2xpc3QoZnMsICcnLCAnc29tZS5saXN0JykpCiAKIAogY2xhc3MgTW9ja1dpbkZpbGVTeXN0
ZW0ob2JqZWN0KToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113744</attachid>
            <date>2011-11-04 19:08:02 -0700</date>
            <delta_ts>2011-11-17 18:10:04 -0800</delta_ts>
            <desc>Fixed a bug in test_files</desc>
            <filename>bug-66837-20111104190801.patch</filename>
            <type>text/plain</type>
            <size>14757</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk5MzQzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMTEtMTEtMDQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUGFyc2UgcmVmdGVzdC5saXN0IGFuZCBleHRyYWN0IHR5cGVzIG9mIHJlZiB0ZXN0
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4MzcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBh
IGZhY2lsaXR5IHRvIHBhcnNlIHJlZnRlc3QubGlzdCBhbmQgcGFzcyBpdCB0byBUZXN0SW5wdXQg
b2JqZWN0cyB0byBNYW5hZ2VyLgorCisgICAgICAgIE1vZGlmaWVkIHRlc3RfZmlsZXMgdG8gY29u
c2lkZXIgcmVmdGVzdC5saXN0IGFzIGEgdGVzdCBmaWxlIHNvIHRoYXQgcG9ydC50ZXN0cyBjYW4g
ZmluZAorICAgICAgICByZWZ0ZXN0Lmxpc3QgZmlsZXMgaW4gdGVzdCBkaXJlY3Rvcmllcy4gVGhl
c2UgcmVmdGVzdC5saXN0IGVudHJpZXMgYXJlIHJlbW92ZWQgYnkKKyAgICAgICAgTWFuYWdlci5f
cGFyc2VfYWxsX3JlZnRlc3RfbGlzdHMsIGNhbGxlZCBieSBNYW5hZ2VyLmNvbGxlY3RfdGVzdHMs
IGFzIGl0IGNvbGxlY3RzIHRlc3QKKyAgICAgICAgYW5kIHJlZmVyZW5jZSBmaWxlIG1hcHBpbmcu
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9t
YW5hZ2VyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRy
b2xsZXJzL21hbmFnZXJfdW5pdHRlc3QucHk6IEFkZGVkIGEgdGVzdC4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9pbnB1dC5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlc191bml0dGVz
dC5weTogQWRkZWQgdGVzdCBjYXNlcy4KKwogMjAxMS0xMS0wNCAgRXJpYyBTZWlkZWwgIDxlcmlj
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXBncmFkZSB0byB0aGUgbGF0ZXN0IE1lY2hhbml6ZQpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFu
YWdlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CShyZXZpc2lvbiA5OTI4NSkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTMyNiw3ICszMjYsNDIgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAg
ICBwYXRocyA9IHNlbGYuX3N0cmlwX3Rlc3RfZGlyX3ByZWZpeGVzKGFyZ3MpCiAgICAgICAgIGlm
IHNlbGYuX29wdGlvbnMudGVzdF9saXN0OgogICAgICAgICAgICAgcGF0aHMgKz0gc2VsZi5fc3Ry
aXBfdGVzdF9kaXJfcHJlZml4ZXMocmVhZF90ZXN0X2ZpbGVzKHNlbGYuX2ZzLCBzZWxmLl9vcHRp
b25zLnRlc3RfbGlzdCwgc2VsZi5fcG9ydC5URVNUX1BBVEhfU0VQQVJBVE9SKSkKKwogICAgICAg
ICBzZWxmLl90ZXN0X2ZpbGVzID0gc2VsZi5fcG9ydC50ZXN0cyhwYXRocykKKyAgICAgICAgc2Vs
Zi5fcGFyc2VfYWxsX3JlZnRlc3RfbGlzdHMoKQorCisgICAgZGVmIF9wYXJzZV9hbGxfcmVmdGVz
dF9saXN0cyhzZWxmKToKKyAgICAgICAgIiIiUGFyc2UgYWxsIHJlZnRlc3RzLmxpc3QgaW4gdGVz
dHMnIGRpcmVjdG9yaWVzIGFuZCBwb3B1bGF0ZSBzZWxmLl9yZWZ0ZXN0cworCisgICAgICAgIEFy
Z3M6CisgICAgICAgIHRlc3RzOiBsaXN0IG9mIHRlc3RzIGZvciB3aGljaCByZWZlcmVuY2VzIG1h
eSBiZSBwYXJzZWQKKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fcmVmdGVzdHMgPSB7fQor
ICAgICAgICB0ZXN0X2RpcnMgPSBzZXQoKQorICAgICAgICByZWZ0ZXN0X2xpc3RzID0gW10KKyAg
ICAgICAgZm9yIHBhdGggaW4gc2VsZi5fdGVzdF9maWxlczoKKyAgICAgICAgICAgIGlmICdyZWZ0
ZXN0Lmxpc3QnID09IHNlbGYuX2ZzLmJhc2VuYW1lKHBhdGgpOgorICAgICAgICAgICAgICAgIHJl
ZnRlc3RfbGlzdHMuYXBwZW5kKHBhdGgpCisgICAgICAgICAgICAgICAgcmVmdGVzdF9saXN0X2Fi
c19wYXRoID0gc2VsZi5fZnMuam9pbihzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKSwgcGF0
aCkKKyAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZV9yZWZ0ZXN0X2xpc3Qoc2VsZi5fZnMucmVh
ZF90ZXh0X2ZpbGUocmVmdGVzdF9saXN0X2Fic19wYXRoKSwgc2VsZi5fZnMuZGlybmFtZShwYXRo
KSkKKworICAgICAgICBmb3IgcmVmdGVzdF9saXN0IGluIHJlZnRlc3RfbGlzdHM6CisgICAgICAg
ICAgICBzZWxmLl90ZXN0X2ZpbGVzLnJlbW92ZShyZWZ0ZXN0X2xpc3QpCisKKyAgICAgICAgIyBE
b24ndCB0cmVhdCByZWZlcmVuY2UgZmlsZXMgYXMgdGVzdCBmaWxlcworICAgICAgICBmb3IgZXhw
ZWN0YXRpb25fdHlwZSwgcmVmX2ZpbGVfcGF0aCBpbiBzZWxmLl9yZWZ0ZXN0cy52YWx1ZXMoKToK
KyAgICAgICAgICAgIGlmIHJlZl9maWxlX3BhdGggaW4gc2VsZi5fdGVzdF9maWxlczoKKyAgICAg
ICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzLnJlbW92ZShyZWZfZmlsZV9wYXRoKQorCisgICAg
ZGVmIF9wYXJzZV9yZWZ0ZXN0X2xpc3Qoc2VsZiwgcmVmdGVzdF9saXN0LCB0ZXN0X2Rpcik6Cisg
ICAgICAgIGZvciBsaW5lIGluIHJlZnRlc3RfbGlzdC5zcGxpdCgnXG4nKToKKyAgICAgICAgICAg
IHNwbGl0X2xpbmUgPSBsaW5lLnNwbGl0KCkKKyAgICAgICAgICAgIGlmIGxlbihzcGxpdF9saW5l
KSA8IDM6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGV4cGVjdGF0aW9u
X3R5cGUsIHRlc3RfZmlsZSwgcmVmX2ZpbGUgPSBzcGxpdF9saW5lCisgICAgICAgICAgICByZWZf
ZmlsZV9wYXRoID0gc2VsZi5fZnMuam9pbih0ZXN0X2RpciwgcmVmX2ZpbGUpCisgICAgICAgICAg
ICBzZWxmLl9yZWZ0ZXN0c1tzZWxmLl9mcy5qb2luKHRlc3RfZGlyLCB0ZXN0X2ZpbGUpXSA9IChl
eHBlY3RhdGlvbl90eXBlLCByZWZfZmlsZV9wYXRoKQogCiAgICAgZGVmIF9zdHJpcF90ZXN0X2Rp
cl9wcmVmaXhlcyhzZWxmLCBwYXRocyk6CiAgICAgICAgIHJldHVybiBbc2VsZi5fc3RyaXBfdGVz
dF9kaXJfcHJlZml4KHBhdGgpIGZvciBwYXRoIGluIHBhdGhzIGlmIHBhdGhdCkBAIC01NDQsOSAr
NTc5LDE1IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgIiIiUmV0dXJucyB0aGUg
YXBwcm9wcmlhdGUgVGVzdElucHV0IG9iamVjdCBmb3IgdGhlIGZpbGUuIE1vc3RseSB0aGlzCiAg
ICAgICAgIGlzIHVzZWQgZm9yIGxvb2tpbmcgdXAgdGhlIHRpbWVvdXQgdmFsdWUgKGluIG1zKSB0
byB1c2UgZm9yIHRoZSBnaXZlbgogICAgICAgICB0ZXN0LiIiIgorICAgICAgICBpZiB0ZXN0X2Zp
bGUgaW4gc2VsZi5fcmVmdGVzdHM6CisgICAgICAgICAgICBpc19taXNtYXRjaCA9IHNlbGYuX3Jl
ZnRlc3RzW3Rlc3RfZmlsZV1bMF0gPT0gJyE9JworICAgICAgICAgICAgcmVmX2ZpbGUgPSBzZWxm
Ll9yZWZ0ZXN0c1t0ZXN0X2ZpbGVdWzFdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpc19t
aXNtYXRjaCA9IEZhbHNlCisgICAgICAgICAgICByZWZfZmlsZSA9IE5vbmUKICAgICAgICAgaWYg
c2VsZi5fdGVzdF9pc19zbG93KHRlc3RfZmlsZSk6Ci0gICAgICAgICAgICByZXR1cm4gVGVzdElu
cHV0KHRlc3RfZmlsZSwgc2VsZi5fb3B0aW9ucy5zbG93X3RpbWVfb3V0X21zKQotICAgICAgICBy
ZXR1cm4gVGVzdElucHV0KHRlc3RfZmlsZSwgc2VsZi5fb3B0aW9ucy50aW1lX291dF9tcykKKyAg
ICAgICAgICAgIHJldHVybiBUZXN0SW5wdXQodGVzdF9maWxlLCBzZWxmLl9vcHRpb25zLnNsb3df
dGltZV9vdXRfbXMsIHJlZl9maWxlLCBpc19taXNtYXRjaCkKKyAgICAgICAgcmV0dXJuIFRlc3RJ
bnB1dCh0ZXN0X2ZpbGUsIHNlbGYuX29wdGlvbnMudGltZV9vdXRfbXMsIHJlZl9maWxlLCBpc19t
aXNtYXRjaCkKIAogICAgIGRlZiBfdGVzdF9yZXF1aXJlc19sb2NrKHNlbGYsIHRlc3RfZmlsZSk6
CiAgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSB0ZXN0IG5lZWRzIHRvIGJlIGxvY2tlZCB3
aGVuCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVy
cy9tYW5hZ2VyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfdW5pdHRlc3QucHkJKHJldmlzaW9u
IDk5Mjg1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxl
cnMvbWFuYWdlcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjYzLDYgKzI2Myw0MyBA
QCBjbGFzcyBNYW5hZ2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBtYW5h
Z2VyID0gZ2V0X21hbmFnZXJfd2l0aF90ZXN0cyhbJ2h0dHBcXHRlc3RzXFxtaW1lJ10pCiAgICAg
ICAgICAgICBzZWxmLmFzc2VydFRydWUobWFuYWdlci5uZWVkc19zZXJ2ZXJzKCkpCiAKKyAgICBk
ZWYgdGVzdF9wYXJzZV9yZWZ0ZXN0X2xpc3Qoc2VsZik6CisgICAgICAgIG1hbmFnZXIgPSBNYW5h
Z2VyKHBvcnQ9TW9ja0hvc3QoKS5wb3J0X2ZhY3RvcnkuZ2V0KCd0ZXN0LXdpbi14cCcsIE5vbmUp
LCBvcHRpb25zPU1vY2tPcHRpb25zKCksIHByaW50ZXI9TW9jaygpKQorICAgICAgICBtYW5hZ2Vy
Ll9yZWZ0ZXN0cyA9IHt9CisgICAgICAgIG1hbmFnZXIuX3BhcnNlX3JlZnRlc3RfbGlzdCgiIiI9
PSB0ZXN0Lmh0bWwgdGVzdC1yZWYuaHRtbAorCishPSB0ZXN0Lmh0bWwgdGVzdC1ub3JlZi5odG1s
IiIiLCAnZm9vLycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1hbmFnZXIuX3JlZnRlc3Rz
LCB7J2Zvby90ZXN0Lmh0bWwnOiAoJz09JywgJ2Zvby90ZXN0LXJlZi5odG1sJyksICdmb28vdGVz
dC5odG1sJzogKCchPScsICdmb28vdGVzdC1ub3JlZi5odG1sJyl9KQorCisgICAgZGVmIHRlc3Rf
Y29sbGVjdF90ZXN0c193aXRoX3NpbmdsZV9yZWZ0ZXN0KHNlbGYpOgorICAgICAgICBvcHRpb25z
LCBhcmdzID0gcnVuX3dlYmtpdF90ZXN0cy5wYXJzZV9hcmdzKFsnLS1wbGF0Zm9ybT10ZXN0Jywg
Jy0tcHJpbnQ9bm90aGluZycsICdyZWZ0ZXN0cy9mb28vdGVzdC5odG1sJ10pCisgICAgICAgIG1h
bmFnZXIgPSBNYW5hZ2VyKHBvcnQ9TW9ja0hvc3QoKS5wb3J0X2ZhY3RvcnkuZ2V0KCd0ZXN0Jyks
IG9wdGlvbnM9b3B0aW9ucywgcHJpbnRlcj1Nb2NrKCkpCisgICAgICAgIG1hbmFnZXIuY29sbGVj
dF90ZXN0cyhhcmdzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3JlZnRlc3RzL2Zvby9yZWZ0
ZXN0Lmxpc3QnIG5vdCBpbiBtYW5hZ2VyLl90ZXN0X2ZpbGVzKQorICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoJ3JlZnRlc3RzL2Zvby90ZXN0Lmh0bWwnIGluIG1hbmFnZXIuX3Rlc3RfZmlsZXMpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuYWdlci5fcmVmdGVzdHNbJ3JlZnRlc3RzL2Zvby90
ZXN0Lmh0bWwnXSwgKCc9PScsICdyZWZ0ZXN0cy9mb28vdGVzdC1yZWYuaHRtbCcpKQorCisgICAg
ZGVmIHRlc3RfY29sbGVjdF90ZXN0c193aXRoX3JlZnRlc3RzKHNlbGYpOgorICAgICAgICBvcHRp
b25zLCBhcmdzID0gcnVuX3dlYmtpdF90ZXN0cy5wYXJzZV9hcmdzKFsnLS1wbGF0Zm9ybT10ZXN0
JywgJy0tcHJpbnQ9bm90aGluZycsICdyZWZ0ZXN0cy9mb28nXSkKKyAgICAgICAgbWFuYWdlciA9
IE1hbmFnZXIocG9ydD1Nb2NrSG9zdCgpLnBvcnRfZmFjdG9yeS5nZXQoJ3Rlc3QnKSwgb3B0aW9u
cz1vcHRpb25zLCBwcmludGVyPU1vY2soKSkKKyAgICAgICAgbWFuYWdlci5jb2xsZWN0X3Rlc3Rz
KGFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgncmVmdGVzdHMvZm9vL3JlZnRlc3QubGlz
dCcgbm90IGluIG1hbmFnZXIuX3Rlc3RfZmlsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgn
cmVmdGVzdHMvZm9vL3Rlc3QuaHRtbCcgaW4gbWFuYWdlci5fdGVzdF9maWxlcykKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKCdyZWZ0ZXN0cy9mb28vdGVzdC1yZWYuaHRtbCcgbm90IGluIG1hbmFn
ZXIuX3Rlc3RfZmlsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgncmVmdGVzdHMvZm9vL3Rl
c3QuaHRtbCcgaW4gbWFuYWdlci5fcmVmdGVzdHMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgn
cmVmdGVzdHMvZm9vL3Rlc3QtcmVmLmh0bWwnIG5vdCBpbiBtYW5hZ2VyLl9yZWZ0ZXN0cykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYW5hZ2VyLl9yZWZ0ZXN0c1sncmVmdGVzdHMvZm9vL3Rl
c3QuaHRtbCddLCAoJz09JywgJ3JlZnRlc3RzL2Zvby90ZXN0LXJlZi5odG1sJykpCisKKyAgICBk
ZWYgdGVzdF9jb2xsZWN0X3Rlc3RzX3dpdGhfcmVmdGVzdHNfYXRfcGFyZW50ZGlyKHNlbGYpOgor
ICAgICAgICBvcHRpb25zLCBhcmdzID0gcnVuX3dlYmtpdF90ZXN0cy5wYXJzZV9hcmdzKFsnLS1w
bGF0Zm9ybT10ZXN0JywgJy0tcHJpbnQ9bm90aGluZycsICdyZWZ0ZXN0cyddKQorICAgICAgICBt
YW5hZ2VyID0gTWFuYWdlcihwb3J0PU1vY2tIb3N0KCkucG9ydF9mYWN0b3J5LmdldCgndGVzdCcp
LCBvcHRpb25zPW9wdGlvbnMsIHByaW50ZXI9TW9jaygpKQorICAgICAgICBtYW5hZ2VyLmNvbGxl
Y3RfdGVzdHMoYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdyZWZ0ZXN0cy9mb28vcmVm
dGVzdC5saXN0JyBub3QgaW4gbWFuYWdlci5fdGVzdF9maWxlcykKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKCdyZWZ0ZXN0cy9mb28vdGVzdC5odG1sJyBpbiBtYW5hZ2VyLl90ZXN0X2ZpbGVzKQor
ICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3JlZnRlc3RzL2Zvby90ZXN0LXJlZi5odG1sJyBub3Qg
aW4gbWFuYWdlci5fdGVzdF9maWxlcykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdyZWZ0ZXN0
cy9mb28vdGVzdC5odG1sJyBpbiBtYW5hZ2VyLl9yZWZ0ZXN0cykKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKCdyZWZ0ZXN0cy9mb28vdGVzdC1yZWYuaHRtbCcgbm90IGluIG1hbmFnZXIuX3JlZnRl
c3RzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmFnZXIuX3JlZnRlc3RzWydyZWZ0ZXN0
cy9mb28vdGVzdC5odG1sJ10sICgnPT0nLCAncmVmdGVzdHMvZm9vL3Rlc3QtcmVmLmh0bWwnKSkK
IAogY2xhc3MgTmF0dXJhbENvbXBhcmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYg
YXNzZXJ0X2NtcChzZWxmLCB4LCB5LCByZXN1bHQpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfaW5wdXQucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfaW5wdXQucHkJKHJl
dmlzaW9uIDk5Mjg1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9k
ZWxzL3Rlc3RfaW5wdXQucHkJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIGNsYXNz
IFRlc3RJbnB1dDoKICAgICAiIiJHcm91cHMgaW5mb3JtYXRpb24gYWJvdXQgYSB0ZXN0IGZvciBl
YXN5IHBhc3Npbmcgb2YgZGF0YS4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0X25h
bWUsIHRpbWVvdXQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0X25hbWUsIHRpbWVvdXQs
IHJlZl9maWxlPU5vbmUsIGlzX21pc21hdGNoPUZhbHNlKToKICAgICAgICAgIiIiSG9sZHMgdGhl
IGlucHV0IHBhcmFtZXRlcnMgZm9yIGEgdGVzdC4KICAgICAgICAgQXJnczoKICAgICAgICAgICB0
ZXN0OiBuYW1lIG9mIHRlc3QgKG5vdCBhbiBhYnNvbHV0ZSBwYXRoISkKQEAgLTQwLDYgKzQwLDgg
QEAgY2xhc3MgVGVzdElucHV0OgogICAgICAgICAgICIiIgogICAgICAgICBzZWxmLnRlc3RfbmFt
ZSA9IHRlc3RfbmFtZQogICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CisgICAgICAgIHNl
bGYucmVmX2ZpbGUgPSByZWZfZmlsZQorICAgICAgICBzZWxmLmlzX21pc21hdGNoID0gaXNfbWlz
bWF0Y2gKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuICJUZXN0SW5w
dXQoJyVzJywgJWQpIiAlIChzZWxmLnRlc3RfbmFtZSwgc2VsZi50aW1lb3V0KQpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQkocmV2
aXNpb24gOTkyODUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3Rlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw2ICsxODUsOCBAQCBsYXllciBhdCAoMCww
KSBzaXplIDgwMHgzNAogICAgIHRlc3RzLmFkZF9yZWZ0ZXN0KCdmYWlsdXJlcy91bmV4cGVjdGVk
L3JlZnRlc3QuaHRtbCcsICdmYWlsdXJlcy91bmV4cGVjdGVkL3JlZnRlc3QtZXhwZWN0ZWQuaHRt
bCcsIHNhbWVfaW1hZ2U9RmFsc2UpCiAgICAgdGVzdHMuYWRkX3JlZnRlc3QoJ2ZhaWx1cmVzL3Vu
ZXhwZWN0ZWQvbWlzbWF0Y2guaHRtbCcsICdmYWlsdXJlcy91bmV4cGVjdGVkL21pc21hdGNoLWV4
cGVjdGVkLW1pc21hdGNoLmh0bWwnLCBzYW1lX2ltYWdlPVRydWUpCiAgICAgIyBGSVhNRTogQWRk
IGEgcmVmdGVzdCB3aGljaCBjcmFzaGVzLgorICAgIHRlc3RzLmFkZCgncmVmdGVzdHMvZm9vL3Rl
c3QuaHRtbCcpCisgICAgdGVzdHMuYWRkKCdyZWZ0ZXN0cy9mb28vdGVzdC1yZWYuaHRtbCcpCiAK
ICAgICB0ZXN0cy5hZGQoJ3dlYnNvY2tldC90ZXN0cy9wYXNzZXMvdGV4dC5odG1sJykKIApAQCAt
MjExLDIzICsyMTMsMjUgQEAgZGVmIHVuaXRfdGVzdF9maWxlc3lzdGVtKGZpbGVzPU5vbmUpOgog
ICAgIHRlc3RfbGlzdCA9IHVuaXRfdGVzdF9saXN0KCkKICAgICBmaWxlcyA9IGZpbGVzIG9yIHt9
CiAKLSAgICBkZWYgYWRkX2ZpbGUoZmlsZXMsIHRlc3QsIHN1ZmZpeCwgY29udGVudHMpOgorICAg
IGRlZiBhZGRfdGVzdF9maWxlKGZpbGVzLCB0ZXN0LCBzdWZmaXgsIGNvbnRlbnRzKToKICAgICAg
ICAgZGlybmFtZSA9IHRlc3QubmFtZVswOnRlc3QubmFtZS5yZmluZCgnLycpXQogICAgICAgICBi
YXNlID0gdGVzdC5iYXNlCi0gICAgICAgIHBhdGggPSBMQVlPVVRfVEVTVF9ESVIgKyAnLycgKyBk
aXJuYW1lICsgJy8nICsgYmFzZSArIHN1ZmZpeAotICAgICAgICBmaWxlc1twYXRoXSA9IGNvbnRl
bnRzCisgICAgICAgIGFkZF9maWxlKGZpbGVzLCBkaXJuYW1lICsgJy8nICsgYmFzZSArIHN1ZmZp
eCwgY29udGVudHMpCisKKyAgICBkZWYgYWRkX2ZpbGUoZmlsZXMsIGZpbGVfbmFtZSwgY29udGVu
dHMpOgorICAgICAgICBmaWxlc1tMQVlPVVRfVEVTVF9ESVIgKyAnLycgKyBmaWxlX25hbWVdID0g
Y29udGVudHMKIAogICAgICMgQWRkIGVhY2ggdGVzdCBhbmQgdGhlIGV4cGVjdGVkIG91dHB1dCwg
aWYgYW55LgogICAgIGZvciB0ZXN0IGluIHRlc3RfbGlzdC50ZXN0cy52YWx1ZXMoKToKLSAgICAg
ICAgYWRkX2ZpbGUoZmlsZXMsIHRlc3QsICcuaHRtbCcsICcnKQorICAgICAgICBhZGRfdGVzdF9m
aWxlKGZpbGVzLCB0ZXN0LCAnLmh0bWwnLCAnJykKICAgICAgICAgaWYgdGVzdC5pc19yZWZ0ZXN0
OgogICAgICAgICAgICAgY29udGludWUKICAgICAgICAgaWYgdGVzdC5hY3R1YWxfYXVkaW86Ci0g
ICAgICAgICAgICBhZGRfZmlsZShmaWxlcywgdGVzdCwgJy1leHBlY3RlZC53YXYnLCB0ZXN0LmV4
cGVjdGVkX2F1ZGlvKQorICAgICAgICAgICAgYWRkX3Rlc3RfZmlsZShmaWxlcywgdGVzdCwgJy1l
eHBlY3RlZC53YXYnLCB0ZXN0LmV4cGVjdGVkX2F1ZGlvKQogICAgICAgICAgICAgY29udGludWUK
IAotICAgICAgICBhZGRfZmlsZShmaWxlcywgdGVzdCwgJy1leHBlY3RlZC50eHQnLCB0ZXN0LmV4
cGVjdGVkX3RleHQpCi0gICAgICAgIGFkZF9maWxlKGZpbGVzLCB0ZXN0LCAnLWV4cGVjdGVkLnBu
ZycsIHRlc3QuZXhwZWN0ZWRfaW1hZ2UpCisgICAgICAgIGFkZF90ZXN0X2ZpbGUoZmlsZXMsIHRl
c3QsICctZXhwZWN0ZWQudHh0JywgdGVzdC5leHBlY3RlZF90ZXh0KQorICAgICAgICBhZGRfdGVz
dF9maWxlKGZpbGVzLCB0ZXN0LCAnLWV4cGVjdGVkLnBuZycsIHRlc3QuZXhwZWN0ZWRfaW1hZ2Up
CiAKIAogICAgICMgQWRkIHRoZSB0ZXN0X2V4cGVjdGF0aW9ucyBmaWxlLgpAQCAtMjUzLDYgKzI1
NywxMCBAQCBXT05URklYIFNLSVAgOiBmYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyCiBXT05URklY
IFNLSVAgOiBmYWlsdXJlcy9leHBlY3RlZC9leGNlcHRpb24uaHRtbCA9IENSQVNICiAiIiIKIAor
ICAgIGFkZF9maWxlKGZpbGVzLCAncmVmdGVzdHMvZm9vL3JlZnRlc3QubGlzdCcsICIiIgorPT0g
dGVzdC5odG1sIHRlc3QtcmVmLmh0bWwKKyIiIikKKwogICAgICMgRklYTUU6IFRoaXMgdGVzdCB3
YXMgb25seSBiZWluZyBpZ25vcmVkIGJlY2F1c2Ugb2YgbWlzc2luZyBhIGxlYWRpbmcgJy8nLgog
ICAgICMgRml4aW5nIHRoZSB0eXBvIGNhdXNlcyBzZXZlcmFsIHRlc3RzIHRvIGFzc2VydCwgc28g
ZGlzYWJsaW5nIHRoZSB0ZXN0IGVudGlyZWx5LgogICAgICMgQWRkIGluIGEgZmlsZSBzaG91bGQg
YmUgaWdub3JlZCBieSB0ZXN0X2ZpbGVzLmZpbmQoKS4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlcy5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXMucHkJKHJldmlz
aW9uIDk5Mjg1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90
ZXN0X2ZpbGVzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC04OCw4ICs4OCwxMyBAQCBkZWYgbm9ybWFs
aXplZF9maW5kKGZpbGVzeXN0ZW0sIHBhdGhzKToKICAgICAjIEZJWE1FOiBJJ20gbm90IHN1cmUg
dGhlcmUncyBtdWNoIHBvaW50IGluIHRoaXMgYmVpbmcgYSBzZXQuIEEgbGlzdCB3b3VsZCBwcm9i
YWJseSBiZSBmYXN0ZXIuCiAgICAgdGVzdF9maWxlcyA9IHNldCgpCiAgICAgZm9yIHBhdGggaW4g
cGF0aHNfdG9fd2FsazoKLSAgICAgICAgZmlsZXMgPSBmaWxlc3lzdGVtLmZpbGVzX3VuZGVyKHBh
dGgsIF9za2lwcGVkX2RpcmVjdG9yaWVzLCBfaXNfdGVzdF9maWxlKQorICAgICAgICBmaWxlcyA9
IGZpbGVzeXN0ZW0uZmlsZXNfdW5kZXIocGF0aCwgX3NraXBwZWRfZGlyZWN0b3JpZXMsIF9pc190
ZXN0X2ZpbGVfb3JfcmVmdGVzdF9saXN0KQogICAgICAgICB0ZXN0X2ZpbGVzLnVwZGF0ZShzZXQo
ZmlsZXMpKQorICAgICAgICBpZiBmaWxlc3lzdGVtLmlzZmlsZShwYXRoKToKKyAgICAgICAgICAg
IHRlc3RfZGlyID0gZmlsZXN5c3RlbS5kaXJuYW1lKHBhdGgpCisgICAgICAgICAgICByZWZ0ZXN0
X2xpc3QgPSBmaWxlc3lzdGVtLmpvaW4odGVzdF9kaXIsICdyZWZ0ZXN0Lmxpc3QnKQorICAgICAg
ICAgICAgaWYgcmVmdGVzdF9saXN0IG5vdCBpbiB0ZXN0X2ZpbGVzIGFuZCBmaWxlc3lzdGVtLmV4
aXN0cyhyZWZ0ZXN0X2xpc3QpOgorICAgICAgICAgICAgICAgIHRlc3RfZmlsZXMuYWRkKHJlZnRl
c3RfbGlzdCkKIAogICAgIGdhdGhlcl90aW1lID0gdGltZS50aW1lKCkgLSBnYXRoZXJfc3RhcnRf
dGltZQogICAgIF9sb2cuZGVidWcoIlRlc3QgZ2F0aGVyaW5nIHRvb2sgJWYgc2Vjb25kcyIgJSBn
YXRoZXJfdGltZSkKQEAgLTEwNyw1ICsxMTIsNSBAQCBkZWYgaXNfcmVmZXJlbmNlX2h0bWxfZmls
ZShmaWxlbmFtZSk6CiAgICAgcmV0dXJuIGZpbGVuYW1lLmVuZHN3aXRoKCctZXhwZWN0ZWQuaHRt
bCcpIG9yIGZpbGVuYW1lLmVuZHN3aXRoKCctZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbCcpCiAKIAot
ZGVmIF9pc190ZXN0X2ZpbGUoZmlsZXN5c3RlbSwgZGlybmFtZSwgZmlsZW5hbWUpOgotICAgIHJl
dHVybiBfaGFzX3N1cHBvcnRlZF9leHRlbnNpb24oZmlsZXN5c3RlbSwgZmlsZW5hbWUpIGFuZCBu
b3QgaXNfcmVmZXJlbmNlX2h0bWxfZmlsZShmaWxlbmFtZSkKK2RlZiBfaXNfdGVzdF9maWxlX29y
X3JlZnRlc3RfbGlzdChmaWxlc3lzdGVtLCBkaXJuYW1lLCBmaWxlbmFtZSk6CisgICAgcmV0dXJu
IChfaGFzX3N1cHBvcnRlZF9leHRlbnNpb24oZmlsZXN5c3RlbSwgZmlsZW5hbWUpIGFuZCBub3Qg
aXNfcmVmZXJlbmNlX2h0bWxfZmlsZShmaWxlbmFtZSkpIG9yIGZpbGVuYW1lID09ICdyZWZ0ZXN0
Lmxpc3QnCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rl
c3RfZmlsZXNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiA5OTI4
NSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxl
c191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNTksMTQgKzU5LDIxIEBAIGNsYXNzIFRl
c3RGaWxlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICB0ZXN0cyA9IHRlc3RfZmls
ZXMuZmluZChwb3J0LCBbJ3VzZXJzY3JpcHRzL3Jlc291cmNlcyddKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHRlc3RzLCBzZXQoW10pKQogCi0gICAgZGVmIHRlc3RfaXNfdGVzdF9maWxlKHNl
bGYpOgorICAgIGRlZiB0ZXN0X2ZpbmRfd2l0aF9yZWZ0ZXN0cyhzZWxmKToKKyAgICAgICAgcG9y
dCA9IHRlc3QuVGVzdFBvcnQoKQorICAgICAgICB0ZXN0cyA9IHRlc3RfZmlsZXMuZmluZChwb3J0
LCBbJ3JlZnRlc3RzL2Zvby90ZXN0Lmh0bWwnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0
ZXN0cywgc2V0KFtwb3J0LmxheW91dF90ZXN0c19kaXIoKSArICcvcmVmdGVzdHMvZm9vL3JlZnRl
c3QubGlzdCcsIHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpICsgJy9yZWZ0ZXN0cy9mb28vdGVzdC5o
dG1sJ10pKQorCisgICAgZGVmIHRlc3RfaXNfdGVzdF9maWxlX29yX3JlZnRlc3RfbGlzdChzZWxm
KToKICAgICAgICAgcG9ydCA9IHRlc3QuVGVzdFBvcnQoKQogICAgICAgICBmcyA9IHBvcnQuX2Zp
bGVzeXN0ZW0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3RfZmlsZXMuX2lzX3Rlc3RfZmls
ZShmcywgJycsICdmb28uaHRtbCcpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUodGVzdF9maWxl
cy5faXNfdGVzdF9maWxlKGZzLCAnJywgJ2Zvby5zaHRtbCcpKQotICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKHRlc3RfZmlsZXMuX2lzX3Rlc3RfZmlsZShmcywgJycsICdmb28ucG5nJykpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2UodGVzdF9maWxlcy5faXNfdGVzdF9maWxlKGZzLCAnJywgJ2Zv
by1leHBlY3RlZC5odG1sJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodGVzdF9maWxlcy5f
aXNfdGVzdF9maWxlKGZzLCAnJywgJ2Zvby1leHBlY3RlZC1taXNtYXRjaC5odG1sJykpCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGVfb3JfcmVmdGVzdF9s
aXN0KGZzLCAnJywgJ2Zvby5odG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2Zp
bGVzLl9pc190ZXN0X2ZpbGVfb3JfcmVmdGVzdF9saXN0KGZzLCAnJywgJ2Zvby5zaHRtbCcpKQor
ICAgICAgICBzZWxmLmFzc2VydFRydWUodGVzdF9maWxlcy5faXNfdGVzdF9maWxlX29yX3JlZnRl
c3RfbGlzdChmcywgJycsICdyZWZ0ZXN0Lmxpc3QnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGVfb3JfcmVmdGVzdF9saXN0KGZzLCAnJywgJ2Zvby5w
bmcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGVf
b3JfcmVmdGVzdF9saXN0KGZzLCAnJywgJ2Zvby1leHBlY3RlZC5odG1sJykpCisgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UodGVzdF9maWxlcy5faXNfdGVzdF9maWxlX29yX3JlZnRlc3RfbGlzdChm
cywgJycsICdmb28tZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbCcpKQorICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKHRlc3RfZmlsZXMuX2lzX3Rlc3RfZmlsZV9vcl9yZWZ0ZXN0X2xpc3QoZnMsICcnLCAn
c29tZS5saXN0JykpCiAKIAogY2xhc3MgTW9ja1dpbkZpbGVTeXN0ZW0ob2JqZWN0KToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115719</attachid>
            <date>2011-11-17 18:10:12 -0800</date>
            <delta_ts>2011-11-30 20:56:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66837-20111117181011.patch</filename>
            <type>text/plain</type>
            <size>21282</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEwMDcwNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDExLTExLTE4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIFBhcnNlIHJlZnRlc3QubGlzdCBhbmQgZXh0cmFjdCB0eXBlcyBvZiByZWYgdGVz
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2ODM3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQg
YSBmYWNpbGl0eSB0byBwYXJzZSByZWZ0ZXN0Lmxpc3QgYW5kIHBhc3MgaXQgdG8gVGVzdElucHV0
LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
bWFuYWdlci5weTogCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29u
dHJvbGxlcnMvbWFuYWdlcl91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHk6IERvbid0IHVz
ZSBuYW1pbmcgY29udmVudGlvbgorICAgICAgICB0byBmaWd1cmUgb3V0IHJlZmVyZW5jZSBmaWxl
cyB3aGVuIHRoZSB0ZXN0IGRpcmVjdG9yeSBoYXMgcmVmdGVzdC5saXN0LgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHk6IEFkZGVkIHJlZnRlc3RzIGFu
ZCByZWZ0ZXN0Lmxpc3QgZm9yIHRlc3RpbmcuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzLnB5OiBUcmVhdCByZWZ0ZXN0Lmxpc3QgYXMgdGVz
dCBmaWxlcyBhbmQgZG9uJ3QKKyAgICAgICAgZXhjbHVkZSAtZXhwZWN0ZWQuaHRtbCBhbmQgLW1p
c21hdGNoLmh0bWwgd2hlbiB0aGVyZSBpcyBhIHJlZnRlc3QubGlzdC4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXNfdW5pdHRlc3QucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19p
bnRlZ3JhdGlvbnRlc3QucHk6IEFkZGVkIGEgdGVzdCB0byBlbnN1cmUKKyAgICAgICAgdGVzdHMg
dGhhdCBhcmUgbm90IGxpc3RlZCBpbiByZWZ0ZXN0Lmxpc3QgYXJlIHRyZWF0ZWQgYXMgcmVndWxh
ciB0ZXN0IGZpbGVzIGluY2x1ZGluZyAtZXhwZWN0ZWQuaHRtbC4KKwogMjAxMS0xMS0xNyAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBmdXp6eV9tYXRjaCBkb2Vz
bid0IHJlY29nbml6ZSAiRGFuIEIiIG9yICJoeWF0dCIKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJr
aXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CShyZXZpc2lvbiAxMDA3MDUpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9u
dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNDI2LDcgKzQyNiw3IEBAIGNsYXNzIE1haW5UZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICAgICAjIFVwZGF0ZSB0aGlzIG1hZ2ljIG51bWJl
ciBpZiB5b3UgYWRkIGFuIHVuZXhwZWN0ZWQgdGVzdCB0byB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
cG9ydC50ZXN0CiAgICAgICAgICMgRklYTUU6IEl0J3MgbmljZSB0byBoYXZlIGEgcm91dGluZSBp
biBwb3J0L3Rlc3QucHkgdGhhdCByZXR1cm5zIHRoaXMgbnVtYmVyLgotICAgICAgICB1bmV4cGVj
dGVkX3Rlc3RzX2NvdW50ID0gNworICAgICAgICB1bmV4cGVjdGVkX3Rlc3RzX2NvdW50ID0gOAog
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCB1bmV4cGVjdGVkX3Rlc3RzX2NvdW50KQog
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG91dC5lbXB0eSgpKQpAQCAtNDQ4LDEwICs0NDgsMjQg
QEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBleHBlY3RlZF90
b2tlbiA9ICcidW5leHBlY3RlZCI6eyJ0ZXh0LWltYWdlLWNoZWNrc3VtLmh0bWwiOnsiZXhwZWN0
ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCJ9LCJtaXNzaW5nX3RleHQuaHRtbCI6eyJleHBlY3Rl
ZCI6IlBBU1MiLCJpc19taXNzaW5nX3RleHQiOnRydWUsImFjdHVhbCI6Ik1JU1NJTkcifScKICAg
ICAgICAganNvbl9zdHJpbmcgPSBmcy5yZWFkX3RleHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1y
ZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGpzb25f
c3RyaW5nLmZpbmQoZXhwZWN0ZWRfdG9rZW4pICE9IC0xKQotICAgICAgICBzZWxmLmFzc2VydFRy
dWUoanNvbl9zdHJpbmcuZmluZCgnIm51bV9yZWdyZXNzaW9uIjoxJykgPT0gLTEpCi0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShqc29uX3N0cmluZy5maW5kKCcibnVtX2ZsYWt5IjoxJykgPT0gLTEp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShqc29uX3N0cmluZy5maW5kKCcibnVtX3JlZ3Jlc3Np
b25zIjoxJykgIT0gLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShqc29uX3N0cmluZy5maW5k
KCcibnVtX2ZsYWt5IjowJykgIT0gLTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShqc29uX3N0
cmluZy5maW5kKCcibnVtX21pc3NpbmciOjEnKSAhPSAtMSkKIAorICAgIGRlZiB0ZXN0X21pc3Np
bmdfYW5kX3VuZXhwZWN0ZWRfcmVzdWx0cyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgd2Ug
dXBkYXRlIGV4cGVjdGF0aW9ucyBpbiBwbGFjZS4gSWYgdGhlIGV4cGVjdGF0aW9uCisgICAgICAg
ICMgaXMgbWlzc2luZywgdXBkYXRlIHRoZSBleHBlY3RlZCBnZW5lcmljIGxvY2F0aW9uLgorICAg
ICAgICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKKyAgICAgICAgcmVzLCBvdXQsIGVyciwg
XyA9IGxvZ2dpbmdfcnVuKFsnLS1uby1zaG93LXJlc3VsdHMnLCAncmVmdGVzdHMvZm9vLyddLCB0
ZXN0c19pbmNsdWRlZD1UcnVlLCBmaWxlc3lzdGVtPWZzLCByZWNvcmRfcmVzdWx0cz1UcnVlKQor
ICAgICAgICBmaWxlX2xpc3QgPSBmcy53cml0dGVuX2ZpbGVzLmtleXMoKQorICAgICAgICBmaWxl
X2xpc3QucmVtb3ZlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvdGVzdHNfcnVuMC50eHQnKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXMsIDEpCisgICAgICAgIGV4cGVjdGVkX3Rva2Vu
ID0gJyJyZWZ0ZXN0cy9mb28vdW5saXN0ZWR0ZXN0Lmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIiwi
aXNfbWlzc2luZ190ZXh0Ijp0cnVlLCJhY3R1YWwiOiJNSVNTSU5HIn0nCisgICAgICAgIGpzb25f
c3RyaW5nID0gZnMucmVhZF90ZXh0X2ZpbGUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mdWxs
X3Jlc3VsdHMuanNvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShqc29uX3N0cmluZy5maW5k
KCcibnVtX3JlZ3Jlc3Npb25zIjoxJykgIT0gLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShq
c29uX3N0cmluZy5maW5kKCcibnVtX2ZsYWt5IjowJykgIT0gLTEpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShqc29uX3N0cmluZy5maW5kKCcibnVtX21pc3NpbmciOjInKSAhPSAtMSkKKwogICAg
IGRlZiB0ZXN0X21pc3NpbmdfYW5kX3VuZXhwZWN0ZWRfcmVzdWx0c193aXRoX2N1c3RvbV9leGl0
X2NvZGUoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IHdlIHVwZGF0ZSBleHBlY3RhdGlvbnMg
aW4gcGxhY2UuIElmIHRoZSBleHBlY3RhdGlvbgogICAgICAgICAjIGlzIG1pc3NpbmcsIHVwZGF0
ZSB0aGUgZXhwZWN0ZWQgZ2VuZXJpYyBsb2NhdGlvbi4KQEAgLTc1Nyw4ICs3NzEsOCBAQCBjbGFz
cyBFbmRUb0VuZFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBmcyA9IHVuaXRfdGVz
dF9maWxlc3lzdGVtKCkKICAgICAgICAgcmVzLCBvdXQsIGVyciwgdXNlciA9IGxvZ2dpbmdfcnVu
KHJlY29yZF9yZXN1bHRzPVRydWUsIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZpbGVzeXN0ZW09ZnMp
CiAKLSAgICAgICAgIyBTZXZlbiB0ZXN0cyBzaG91bGQgZmFpbCwgc28gdGhlIHJldHVybiBjb2Rl
IHNob3VsZCBiZSA3LgotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXMsIDcpCisgICAgICAg
ICMgRWlnaHQgdGVzdHMgc2hvdWxkIGZhaWwsIHNvIHRoZSByZXR1cm4gY29kZSBzaG91bGQgYmUg
OC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzLCA4KQogICAgICAgICByZXN1bHRzID0g
c2VsZi5wYXJzZV9mdWxsX3Jlc3VsdHMoZnMuZmlsZXNbJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0
cy9mdWxsX3Jlc3VsdHMuanNvbiddKQogCiAgICAgICAgICMgQ2hlY2sgdG8gZW5zdXJlIHdlJ3Jl
IHBhc3NpbmcgYmFjayBpbWFnZSBkaWZmICVhZ2UgY29ycmVjdGx5LgpJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9t
YW5hZ2VyLnB5CShyZXZpc2lvbiAxMDA3MDUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMzUs
NyArMzM1LDQyIEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgcGF0aHMgPSBzZWxm
Ll9zdHJpcF90ZXN0X2Rpcl9wcmVmaXhlcyhhcmdzKQogICAgICAgICBpZiBzZWxmLl9vcHRpb25z
LnRlc3RfbGlzdDoKICAgICAgICAgICAgIHBhdGhzICs9IHNlbGYuX3N0cmlwX3Rlc3RfZGlyX3By
ZWZpeGVzKHJlYWRfdGVzdF9maWxlcyhzZWxmLl9mcywgc2VsZi5fb3B0aW9ucy50ZXN0X2xpc3Qs
IHNlbGYuX3BvcnQuVEVTVF9QQVRIX1NFUEFSQVRPUikpCisKICAgICAgICAgc2VsZi5fdGVzdF9m
aWxlcyA9IHNlbGYuX3BvcnQudGVzdHMocGF0aHMpCisgICAgICAgIHNlbGYuX3BhcnNlX2FsbF9y
ZWZ0ZXN0X2xpc3RzKCkKKworICAgIGRlZiBfcGFyc2VfYWxsX3JlZnRlc3RfbGlzdHMoc2VsZik6
CisgICAgICAgICIiIlBhcnNlIGFsbCByZWZ0ZXN0cy5saXN0IGluIHRlc3RzJyBkaXJlY3Rvcmll
cyBhbmQgcG9wdWxhdGUgc2VsZi5fcmVmdGVzdHMKKworICAgICAgICBBcmdzOgorICAgICAgICB0
ZXN0czogbGlzdCBvZiB0ZXN0cyBmb3Igd2hpY2ggcmVmZXJlbmNlcyBtYXkgYmUgcGFyc2VkCisg
ICAgICAgICIiIgorCisgICAgICAgIHNlbGYuX3JlZnRlc3RzID0ge30KKyAgICAgICAgdGVzdF9k
aXJzID0gc2V0KCkKKyAgICAgICAgcmVmdGVzdF9saXN0cyA9IFtdCisgICAgICAgIGZvciBwYXRo
IGluIHNlbGYuX3Rlc3RfZmlsZXM6CisgICAgICAgICAgICBpZiAncmVmdGVzdC5saXN0JyA9PSBz
ZWxmLl9mcy5iYXNlbmFtZShwYXRoKToKKyAgICAgICAgICAgICAgICByZWZ0ZXN0X2xpc3RzLmFw
cGVuZChwYXRoKQorICAgICAgICAgICAgICAgIHJlZnRlc3RfbGlzdF9hYnNfcGF0aCA9IHNlbGYu
X2ZzLmpvaW4oc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksIHBhdGgpCisgICAgICAgICAg
ICAgICAgc2VsZi5fcGFyc2VfcmVmdGVzdF9saXN0KHNlbGYuX2ZzLnJlYWRfdGV4dF9maWxlKHJl
ZnRlc3RfbGlzdF9hYnNfcGF0aCksIHNlbGYuX2ZzLmRpcm5hbWUocGF0aCkpCisKKyAgICAgICAg
Zm9yIHJlZnRlc3RfbGlzdCBpbiByZWZ0ZXN0X2xpc3RzOgorICAgICAgICAgICAgc2VsZi5fdGVz
dF9maWxlcy5yZW1vdmUocmVmdGVzdF9saXN0KQorCisgICAgICAgICMgRG9uJ3QgdHJlYXQgcmVm
ZXJlbmNlIGZpbGVzIGFzIHRlc3QgZmlsZXMKKyAgICAgICAgZm9yIGV4cGVjdGF0aW9uX3R5cGUs
IHJlZl9maWxlX3BhdGggaW4gc2VsZi5fcmVmdGVzdHMudmFsdWVzKCk6CisgICAgICAgICAgICBp
ZiByZWZfZmlsZV9wYXRoIGluIHNlbGYuX3Rlc3RfZmlsZXM6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fdGVzdF9maWxlcy5yZW1vdmUocmVmX2ZpbGVfcGF0aCkKKworICAgIGRlZiBfcGFyc2VfcmVm
dGVzdF9saXN0KHNlbGYsIHJlZnRlc3RfbGlzdCwgdGVzdF9kaXIpOgorICAgICAgICBmb3IgbGlu
ZSBpbiByZWZ0ZXN0X2xpc3Quc3BsaXQoJ1xuJyk6CisgICAgICAgICAgICBzcGxpdF9saW5lID0g
bGluZS5zcGxpdCgpCisgICAgICAgICAgICBpZiBsZW4oc3BsaXRfbGluZSkgPCAzOgorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBleHBlY3RhdGlvbl90eXBlLCB0ZXN0X2Zp
bGUsIHJlZl9maWxlID0gc3BsaXRfbGluZQorICAgICAgICAgICAgcmVmX2ZpbGVfcGF0aCA9IHNl
bGYuX2ZzLmpvaW4odGVzdF9kaXIsIHJlZl9maWxlKQorICAgICAgICAgICAgc2VsZi5fcmVmdGVz
dHNbc2VsZi5fZnMuam9pbih0ZXN0X2RpciwgdGVzdF9maWxlKV0gPSAoZXhwZWN0YXRpb25fdHlw
ZSwgcmVmX2ZpbGVfcGF0aCkKIAogICAgIGRlZiBfc3RyaXBfdGVzdF9kaXJfcHJlZml4ZXMoc2Vs
ZiwgcGF0aHMpOgogICAgICAgICByZXR1cm4gW3NlbGYuX3N0cmlwX3Rlc3RfZGlyX3ByZWZpeChw
YXRoKSBmb3IgcGF0aCBpbiBwYXRocyBpZiBwYXRoXQpAQCAtNTYzLDkgKzU5OCwxNSBAQCBjbGFz
cyBNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgICIiIlJldHVybnMgdGhlIGFwcHJvcHJpYXRlIFRl
c3RJbnB1dCBvYmplY3QgZm9yIHRoZSBmaWxlLiBNb3N0bHkgdGhpcwogICAgICAgICBpcyB1c2Vk
IGZvciBsb29raW5nIHVwIHRoZSB0aW1lb3V0IHZhbHVlIChpbiBtcykgdG8gdXNlIGZvciB0aGUg
Z2l2ZW4KICAgICAgICAgdGVzdC4iIiIKKyAgICAgICAgaWYgdGVzdF9maWxlIGluIHNlbGYuX3Jl
ZnRlc3RzOgorICAgICAgICAgICAgaXNfbWlzbWF0Y2ggPSBzZWxmLl9yZWZ0ZXN0c1t0ZXN0X2Zp
bGVdWzBdID09ICchPScKKyAgICAgICAgICAgIHJlZl9maWxlID0gc2VsZi5fcmVmdGVzdHNbdGVz
dF9maWxlXVsxXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaXNfbWlzbWF0Y2ggPSBGYWxz
ZQorICAgICAgICAgICAgcmVmX2ZpbGUgPSBOb25lCiAgICAgICAgIGlmIHNlbGYuX3Rlc3RfaXNf
c2xvdyh0ZXN0X2ZpbGUpOgotICAgICAgICAgICAgcmV0dXJuIFRlc3RJbnB1dCh0ZXN0X2ZpbGUs
IHNlbGYuX29wdGlvbnMuc2xvd190aW1lX291dF9tcykKLSAgICAgICAgcmV0dXJuIFRlc3RJbnB1
dCh0ZXN0X2ZpbGUsIHNlbGYuX29wdGlvbnMudGltZV9vdXRfbXMpCisgICAgICAgICAgICByZXR1
cm4gVGVzdElucHV0KHRlc3RfZmlsZSwgc2VsZi5fb3B0aW9ucy5zbG93X3RpbWVfb3V0X21zLCBy
ZWZfZmlsZSwgaXNfbWlzbWF0Y2gpCisgICAgICAgIHJldHVybiBUZXN0SW5wdXQodGVzdF9maWxl
LCBzZWxmLl9vcHRpb25zLnRpbWVfb3V0X21zLCByZWZfZmlsZSwgaXNfbWlzbWF0Y2gpCiAKICAg
ICBkZWYgX3Rlc3RfcmVxdWlyZXNfbG9jayhzZWxmLCB0ZXN0X2ZpbGUpOgogICAgICAgICAiIiJS
ZXR1cm4gVHJ1ZSBpZiB0aGUgdGVzdCBuZWVkcyB0byBiZSBsb2NrZWQgd2hlbgpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl91bml0
dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9jb250cm9sbGVycy9tYW5hZ2VyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxMDA3MDUpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3Vu
aXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNjMsNiArMjYzLDQzIEBAIGNsYXNzIE1hbmFn
ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIG1hbmFnZXIgPSBnZXRfbWFu
YWdlcl93aXRoX3Rlc3RzKFsnaHR0cFxcdGVzdHNcXG1pbWUnXSkKICAgICAgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShtYW5hZ2VyLm5lZWRzX3NlcnZlcnMoKSkKIAorICAgIGRlZiB0ZXN0X3BhcnNl
X3JlZnRlc3RfbGlzdChzZWxmKToKKyAgICAgICAgbWFuYWdlciA9IE1hbmFnZXIocG9ydD1Nb2Nr
SG9zdCgpLnBvcnRfZmFjdG9yeS5nZXQoJ3Rlc3Qtd2luLXhwJywgTm9uZSksIG9wdGlvbnM9TW9j
a09wdGlvbnMoKSwgcHJpbnRlcj1Nb2NrKCkpCisgICAgICAgIG1hbmFnZXIuX3JlZnRlc3RzID0g
e30KKyAgICAgICAgbWFuYWdlci5fcGFyc2VfcmVmdGVzdF9saXN0KCIiIj09IHRlc3QuaHRtbCB0
ZXN0LXJlZi5odG1sCisKKyE9IHRlc3QuaHRtbCB0ZXN0LW5vcmVmLmh0bWwiIiIsICdmb28vJykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobWFuYWdlci5fcmVmdGVzdHMsIHsnZm9vL3Rlc3Qu
aHRtbCc6ICgnPT0nLCAnZm9vL3Rlc3QtcmVmLmh0bWwnKSwgJ2Zvby90ZXN0Lmh0bWwnOiAoJyE9
JywgJ2Zvby90ZXN0LW5vcmVmLmh0bWwnKX0pCisKKyAgICBkZWYgdGVzdF9jb2xsZWN0X3Rlc3Rz
X3dpdGhfc2luZ2xlX3JlZnRlc3Qoc2VsZik6CisgICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBydW5f
d2Via2l0X3Rlc3RzLnBhcnNlX2FyZ3MoWyctLXBsYXRmb3JtPXRlc3QnLCAnLS1wcmludD1ub3Ro
aW5nJywgJ3JlZnRlc3RzL2Zvby90ZXN0Lmh0bWwnXSkKKyAgICAgICAgbWFuYWdlciA9IE1hbmFn
ZXIocG9ydD1Nb2NrSG9zdCgpLnBvcnRfZmFjdG9yeS5nZXQoJ3Rlc3QnKSwgb3B0aW9ucz1vcHRp
b25zLCBwcmludGVyPU1vY2soKSkKKyAgICAgICAgbWFuYWdlci5jb2xsZWN0X3Rlc3RzKGFyZ3Mp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgncmVmdGVzdHMvZm9vL3JlZnRlc3QubGlzdCcgbm90
IGluIG1hbmFnZXIuX3Rlc3RfZmlsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgncmVmdGVz
dHMvZm9vL3Rlc3QuaHRtbCcgaW4gbWFuYWdlci5fdGVzdF9maWxlcykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChtYW5hZ2VyLl9yZWZ0ZXN0c1sncmVmdGVzdHMvZm9vL3Rlc3QuaHRtbCddLCAo
Jz09JywgJ3JlZnRlc3RzL2Zvby90ZXN0LXJlZi5odG1sJykpCisKKyAgICBkZWYgdGVzdF9jb2xs
ZWN0X3Rlc3RzX3dpdGhfcmVmdGVzdHMoc2VsZik6CisgICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBy
dW5fd2Via2l0X3Rlc3RzLnBhcnNlX2FyZ3MoWyctLXBsYXRmb3JtPXRlc3QnLCAnLS1wcmludD1u
b3RoaW5nJywgJ3JlZnRlc3RzL2ZvbyddKQorICAgICAgICBtYW5hZ2VyID0gTWFuYWdlcihwb3J0
PU1vY2tIb3N0KCkucG9ydF9mYWN0b3J5LmdldCgndGVzdCcpLCBvcHRpb25zPW9wdGlvbnMsIHBy
aW50ZXI9TW9jaygpKQorICAgICAgICBtYW5hZ2VyLmNvbGxlY3RfdGVzdHMoYXJncykKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKCdyZWZ0ZXN0cy9mb28vcmVmdGVzdC5saXN0JyBub3QgaW4gbWFu
YWdlci5fdGVzdF9maWxlcykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdyZWZ0ZXN0cy9mb28v
dGVzdC5odG1sJyBpbiBtYW5hZ2VyLl90ZXN0X2ZpbGVzKQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUoJ3JlZnRlc3RzL2Zvby90ZXN0LXJlZi5odG1sJyBub3QgaW4gbWFuYWdlci5fdGVzdF9maWxl
cykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdyZWZ0ZXN0cy9mb28vdGVzdC5odG1sJyBpbiBt
YW5hZ2VyLl9yZWZ0ZXN0cykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdyZWZ0ZXN0cy9mb28v
dGVzdC1yZWYuaHRtbCcgbm90IGluIG1hbmFnZXIuX3JlZnRlc3RzKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKG1hbmFnZXIuX3JlZnRlc3RzWydyZWZ0ZXN0cy9mb28vdGVzdC5odG1sJ10sICgn
PT0nLCAncmVmdGVzdHMvZm9vL3Rlc3QtcmVmLmh0bWwnKSkKKworICAgIGRlZiB0ZXN0X2NvbGxl
Y3RfdGVzdHNfd2l0aF9yZWZ0ZXN0c19hdF9wYXJlbnRkaXIoc2VsZik6CisgICAgICAgIG9wdGlv
bnMsIGFyZ3MgPSBydW5fd2Via2l0X3Rlc3RzLnBhcnNlX2FyZ3MoWyctLXBsYXRmb3JtPXRlc3Qn
LCAnLS1wcmludD1ub3RoaW5nJywgJ3JlZnRlc3RzJ10pCisgICAgICAgIG1hbmFnZXIgPSBNYW5h
Z2VyKHBvcnQ9TW9ja0hvc3QoKS5wb3J0X2ZhY3RvcnkuZ2V0KCd0ZXN0JyksIG9wdGlvbnM9b3B0
aW9ucywgcHJpbnRlcj1Nb2NrKCkpCisgICAgICAgIG1hbmFnZXIuY29sbGVjdF90ZXN0cyhhcmdz
KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3JlZnRlc3RzL2Zvby9yZWZ0ZXN0Lmxpc3QnIG5v
dCBpbiBtYW5hZ2VyLl90ZXN0X2ZpbGVzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3JlZnRl
c3RzL2Zvby90ZXN0Lmh0bWwnIGluIG1hbmFnZXIuX3Rlc3RfZmlsZXMpCisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZSgncmVmdGVzdHMvZm9vL3Rlc3QtcmVmLmh0bWwnIG5vdCBpbiBtYW5hZ2VyLl90
ZXN0X2ZpbGVzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3JlZnRlc3RzL2Zvby90ZXN0Lmh0
bWwnIGluIG1hbmFnZXIuX3JlZnRlc3RzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3JlZnRl
c3RzL2Zvby90ZXN0LXJlZi5odG1sJyBub3QgaW4gbWFuYWdlci5fcmVmdGVzdHMpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobWFuYWdlci5fcmVmdGVzdHNbJ3JlZnRlc3RzL2Zvby90ZXN0Lmh0
bWwnXSwgKCc9PScsICdyZWZ0ZXN0cy9mb28vdGVzdC1yZWYuaHRtbCcpKQogCiBjbGFzcyBOYXR1
cmFsQ29tcGFyZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBhc3NlcnRfY21wKHNl
bGYsIHgsIHksIHJlc3VsdCk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3Rf
cnVubmVyLnB5CShyZXZpc2lvbiAxMDA3MDUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTY3LDIyICs2NywyMyBAQCBjbGFzcyBTaW5nbGVUZXN0UnVubmVyOgogICAgICAgICAg
ICAgc2VsZi5faXNfbWlzbWF0Y2hfcmVmdGVzdCA9IHRlc3RfaW5wdXQuaXNfbWlzbWF0Y2hfcmVm
dGVzdAogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgcmVmdGVzdF9leHBlY3RlZF9maWxl
bmFtZSA9IHBvcnQucmVmdGVzdF9leHBlY3RlZF9maWxlbmFtZShzZWxmLl90ZXN0X25hbWUpCi0g
ICAgICAgIGlmIGZzLmV4aXN0cyhyZWZ0ZXN0X2V4cGVjdGVkX2ZpbGVuYW1lKToKLSAgICAgICAg
ICAgIHNlbGYuX2lzX3JlZnRlc3QgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLl9yZWZlcmVuY2Vf
ZmlsZW5hbWUgPSByZWZ0ZXN0X2V4cGVjdGVkX2ZpbGVuYW1lCi0KLSAgICAgICAgcmVmdGVzdF9l
eHBlY3RlZF9taXNtYXRjaF9maWxlbmFtZSA9IHBvcnQucmVmdGVzdF9leHBlY3RlZF9taXNtYXRj
aF9maWxlbmFtZShzZWxmLl90ZXN0X25hbWUpCi0gICAgICAgIGlmIGZzLmV4aXN0cyhyZWZ0ZXN0
X2V4cGVjdGVkX21pc21hdGNoX2ZpbGVuYW1lKToKLSAgICAgICAgICAgIGlmIHNlbGYuX2lzX3Jl
ZnRlc3Q6Ci0gICAgICAgICAgICAgICAgX2xvZy5lcnJvcignSXQgaXMgbm90IGFsbG93ZWQgdGhh
dCBvbmUgdGVzdCBmaWxlIGhhcyBib3RoJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBl
eHBlY3RlZC5odG1sIGZpbGUgYW5kIGV4cGVjdGVkLW1pc21hdGNoLmh0bWwgZmlsZScKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICcgYXQgdGhlIHNhbWUgdGltZS4gUGxlYXNlIHJlbW92ZSBl
aXRoZXIgJXMgb3IgJXMuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnRlc3RfZXhw
ZWN0ZWRfZmlsZW5hbWUsIHJlZnRlc3RfZXhwZWN0ZWRfbWlzbWF0Y2hfZmlsZW5hbWUpCi0gICAg
ICAgICAgICBlbHNlOgorICAgICAgICBpZiBwb3J0LnNob3VsZF91c2VfbmFtaW5nX2NvbnZlbnRp
b25fZm9yX3JlZnRlc3Qoc2VsZi5fdGVzdF9uYW1lKToKKyAgICAgICAgICAgIHJlZnRlc3RfZXhw
ZWN0ZWRfZmlsZW5hbWUgPSBwb3J0LnJlZnRlc3RfZXhwZWN0ZWRfZmlsZW5hbWUoc2VsZi5fdGVz
dF9uYW1lKQorICAgICAgICAgICAgaWYgZnMuZXhpc3RzKHJlZnRlc3RfZXhwZWN0ZWRfZmlsZW5h
bWUpOgogICAgICAgICAgICAgICAgIHNlbGYuX2lzX3JlZnRlc3QgPSBUcnVlCi0gICAgICAgICAg
ICAgICAgc2VsZi5faXNfbWlzbWF0Y2hfcmVmdGVzdCA9IFRydWUKLSAgICAgICAgICAgICAgICBz
ZWxmLl9yZWZlcmVuY2VfZmlsZW5hbWUgPSByZWZ0ZXN0X2V4cGVjdGVkX21pc21hdGNoX2ZpbGVu
YW1lCisgICAgICAgICAgICAgICAgc2VsZi5fcmVmZXJlbmNlX2ZpbGVuYW1lID0gcmVmdGVzdF9l
eHBlY3RlZF9maWxlbmFtZQorCisgICAgICAgICAgICByZWZ0ZXN0X2V4cGVjdGVkX21pc21hdGNo
X2ZpbGVuYW1lID0gcG9ydC5yZWZ0ZXN0X2V4cGVjdGVkX21pc21hdGNoX2ZpbGVuYW1lKHNlbGYu
X3Rlc3RfbmFtZSkKKyAgICAgICAgICAgIGlmIGZzLmV4aXN0cyhyZWZ0ZXN0X2V4cGVjdGVkX21p
c21hdGNoX2ZpbGVuYW1lKToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9pc19yZWZ0ZXN0Ogor
ICAgICAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCdJdCBpcyBub3QgYWxsb3dlZCB0aGF0IG9u
ZSB0ZXN0IGZpbGUgaGFzIGJvdGgnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBl
eHBlY3RlZC5odG1sIGZpbGUgYW5kIGV4cGVjdGVkLW1pc21hdGNoLmh0bWwgZmlsZScKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnIGF0IHRoZSBzYW1lIHRpbWUuIFBsZWFzZSByZW1v
dmUgZWl0aGVyICVzIG9yICVzLicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVm
dGVzdF9leHBlY3RlZF9maWxlbmFtZSwgcmVmdGVzdF9leHBlY3RlZF9taXNtYXRjaF9maWxlbmFt
ZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9pc19y
ZWZ0ZXN0ID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9pc19taXNtYXRjaF9yZWZ0
ZXN0ID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWZlcmVuY2VfZmlsZW5hbWUg
PSByZWZ0ZXN0X2V4cGVjdGVkX21pc21hdGNoX2ZpbGVuYW1lCiAKICAgICAgICAgaWYgc2VsZi5f
aXNfcmVmdGVzdDoKICAgICAgICAgICAgICMgRGV0ZWN0IGFuZCByZXBvcnQgYSB0ZXN0IHdoaWNo
IGhhcyBhIHdyb25nIGNvbWJpbmF0aW9uIG9mIGV4cGVjdGF0aW9uIGZpbGVzLgpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQkocmV2
aXNpb24gMTAwNzA1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9iYXNlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC00MjQsNiArNDI0LDExIEBAIGNsYXNzIFBvcnQo
b2JqZWN0KToKICAgICAgICAgdGV4dCA9IHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlfZmls
ZShiYXNlbGluZV9wYXRoKQogICAgICAgICByZXR1cm4gdGV4dC5yZXBsYWNlKCJcclxuIiwgIlxu
IikKIAorICAgIGRlZiBzaG91bGRfdXNlX25hbWluZ19jb252ZW50aW9uX2Zvcl9yZWZ0ZXN0KHNl
bGYsIHRlc3RfbmFtZSk6CisgICAgICAgICIiIlJldHVybnMgVHJ1ZSBpZiByZWZ0ZXN0cyBpbiBh
IGdpdmVuIGRpcmVjdG9yeSBzaG91bGQgdXNlIG5hbWluZyBjb252ZW50aW9uIHRvIGRldGVybWlu
ZSBhIHJlZmVyZW5jZSBmaWxlIiIiCisgICAgICAgIGRpcm5hbWUgPSBzZWxmLl9maWxlc3lzdGVt
LmRpcm5hbWUoc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCB0
ZXN0X25hbWUpKQorICAgICAgICByZXR1cm4gbm90IHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKHNl
bGYuX2ZpbGVzeXN0ZW0uam9pbihkaXJuYW1lLCAncmVmdGVzdC5saXN0JykpCisKICAgICBkZWYg
cmVmdGVzdF9leHBlY3RlZF9maWxlbmFtZShzZWxmLCB0ZXN0X25hbWUpOgogICAgICAgICAiIiJS
ZXR1cm4gdGhlIGZpbGVuYW1lIG9mIHJlZmVyZW5jZSB3ZSBleHBlY3QgdGhlIHRlc3QgbWF0Y2hl
cy4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuZXhwZWN0ZWRfZmlsZW5hbWUodGVzdF9uYW1lLCAn
Lmh0bWwnKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90
ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvdGVzdC5weQkocmV2aXNpb24gMTAwNzA1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNiArMTg3
LDkgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MzQKICAgICB0ZXN0cy5hZGRfcmVmdGVzdCgn
ZmFpbHVyZXMvdW5leHBlY3RlZC9yZWZ0ZXN0Lmh0bWwnLCAnZmFpbHVyZXMvdW5leHBlY3RlZC9y
ZWZ0ZXN0LWV4cGVjdGVkLmh0bWwnLCBzYW1lX2ltYWdlPUZhbHNlKQogICAgIHRlc3RzLmFkZF9y
ZWZ0ZXN0KCdmYWlsdXJlcy91bmV4cGVjdGVkL21pc21hdGNoLmh0bWwnLCAnZmFpbHVyZXMvdW5l
eHBlY3RlZC9taXNtYXRjaC1leHBlY3RlZC1taXNtYXRjaC5odG1sJywgc2FtZV9pbWFnZT1UcnVl
KQogICAgICMgRklYTUU6IEFkZCBhIHJlZnRlc3Qgd2hpY2ggY3Jhc2hlcy4KKyAgICB0ZXN0cy5h
ZGQoJ3JlZnRlc3RzL2Zvby90ZXN0Lmh0bWwnKQorICAgIHRlc3RzLmFkZCgncmVmdGVzdHMvZm9v
L3Rlc3QtcmVmLmh0bWwnKQorICAgIHRlc3RzLmFkZF9yZWZ0ZXN0KCdyZWZ0ZXN0cy9mb28vdW5s
aXN0ZWR0ZXN0Lmh0bWwnLCAncmVmdGVzdHMvZm9vL3VubGlzdGVkdGVzdC1leHBlY3RlZC5odG1s
Jywgc2FtZV9pbWFnZT1UcnVlKQogCiAgICAgdGVzdHMuYWRkKCd3ZWJzb2NrZXQvdGVzdHMvcGFz
c2VzL3RleHQuaHRtbCcpCiAKQEAgLTIxMywyMyArMjE2LDI1IEBAIGRlZiB1bml0X3Rlc3RfZmls
ZXN5c3RlbShmaWxlcz1Ob25lKToKICAgICB0ZXN0X2xpc3QgPSB1bml0X3Rlc3RfbGlzdCgpCiAg
ICAgZmlsZXMgPSBmaWxlcyBvciB7fQogCi0gICAgZGVmIGFkZF9maWxlKGZpbGVzLCB0ZXN0LCBz
dWZmaXgsIGNvbnRlbnRzKToKKyAgICBkZWYgYWRkX3Rlc3RfZmlsZShmaWxlcywgdGVzdCwgc3Vm
Zml4LCBjb250ZW50cyk6CiAgICAgICAgIGRpcm5hbWUgPSB0ZXN0Lm5hbWVbMDp0ZXN0Lm5hbWUu
cmZpbmQoJy8nKV0KICAgICAgICAgYmFzZSA9IHRlc3QuYmFzZQotICAgICAgICBwYXRoID0gTEFZ
T1VUX1RFU1RfRElSICsgJy8nICsgZGlybmFtZSArICcvJyArIGJhc2UgKyBzdWZmaXgKLSAgICAg
ICAgZmlsZXNbcGF0aF0gPSBjb250ZW50cworICAgICAgICBhZGRfZmlsZShmaWxlcywgZGlybmFt
ZSArICcvJyArIGJhc2UgKyBzdWZmaXgsIGNvbnRlbnRzKQorCisgICAgZGVmIGFkZF9maWxlKGZp
bGVzLCBmaWxlX25hbWUsIGNvbnRlbnRzKToKKyAgICAgICAgZmlsZXNbTEFZT1VUX1RFU1RfRElS
ICsgJy8nICsgZmlsZV9uYW1lXSA9IGNvbnRlbnRzCiAKICAgICAjIEFkZCBlYWNoIHRlc3QgYW5k
IHRoZSBleHBlY3RlZCBvdXRwdXQsIGlmIGFueS4KICAgICBmb3IgdGVzdCBpbiB0ZXN0X2xpc3Qu
dGVzdHMudmFsdWVzKCk6Ci0gICAgICAgIGFkZF9maWxlKGZpbGVzLCB0ZXN0LCAnLmh0bWwnLCAn
JykKKyAgICAgICAgYWRkX3Rlc3RfZmlsZShmaWxlcywgdGVzdCwgJy5odG1sJywgJycpCiAgICAg
ICAgIGlmIHRlc3QuaXNfcmVmdGVzdDoKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIGlm
IHRlc3QuYWN0dWFsX2F1ZGlvOgotICAgICAgICAgICAgYWRkX2ZpbGUoZmlsZXMsIHRlc3QsICct
ZXhwZWN0ZWQud2F2JywgdGVzdC5leHBlY3RlZF9hdWRpbykKKyAgICAgICAgICAgIGFkZF90ZXN0
X2ZpbGUoZmlsZXMsIHRlc3QsICctZXhwZWN0ZWQud2F2JywgdGVzdC5leHBlY3RlZF9hdWRpbykK
ICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgYWRkX2ZpbGUoZmlsZXMsIHRlc3QsICct
ZXhwZWN0ZWQudHh0JywgdGVzdC5leHBlY3RlZF90ZXh0KQotICAgICAgICBhZGRfZmlsZShmaWxl
cywgdGVzdCwgJy1leHBlY3RlZC5wbmcnLCB0ZXN0LmV4cGVjdGVkX2ltYWdlKQorICAgICAgICBh
ZGRfdGVzdF9maWxlKGZpbGVzLCB0ZXN0LCAnLWV4cGVjdGVkLnR4dCcsIHRlc3QuZXhwZWN0ZWRf
dGV4dCkKKyAgICAgICAgYWRkX3Rlc3RfZmlsZShmaWxlcywgdGVzdCwgJy1leHBlY3RlZC5wbmcn
LCB0ZXN0LmV4cGVjdGVkX2ltYWdlKQogCiAKICAgICAjIEFkZCB0aGUgdGVzdF9leHBlY3RhdGlv
bnMgZmlsZS4KQEAgLTI1NSw2ICsyNjAsMTAgQEAgV09OVEZJWCBTS0lQIDogZmFpbHVyZXMvZXhw
ZWN0ZWQva2V5Ym9hcgogV09OVEZJWCBTS0lQIDogZmFpbHVyZXMvZXhwZWN0ZWQvZXhjZXB0aW9u
Lmh0bWwgPSBDUkFTSAogIiIiCiAKKyAgICBhZGRfZmlsZShmaWxlcywgJ3JlZnRlc3RzL2Zvby9y
ZWZ0ZXN0Lmxpc3QnLCAiIiIKKz09IHRlc3QuaHRtbCB0ZXN0LXJlZi5odG1sCisiIiIpCisKICAg
ICAjIEZJWE1FOiBUaGlzIHRlc3Qgd2FzIG9ubHkgYmVpbmcgaWdub3JlZCBiZWNhdXNlIG9mIG1p
c3NpbmcgYSBsZWFkaW5nICcvJy4KICAgICAjIEZpeGluZyB0aGUgdHlwbyBjYXVzZXMgc2V2ZXJh
bCB0ZXN0cyB0byBhc3NlcnQsIHNvIGRpc2FibGluZyB0aGUgdGVzdCBlbnRpcmVseS4KICAgICAj
IEFkZCBpbiBhIGZpbGUgc2hvdWxkIGJlIGlnbm9yZWQgYnkgdGVzdF9maWxlcy5maW5kKCkuCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXMu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC90ZXN0X2ZpbGVzLnB5CShyZXZpc2lvbiAxMDA3MDUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTg4
LDggKzg4LDEzIEBAIGRlZiBub3JtYWxpemVkX2ZpbmQoZmlsZXN5c3RlbSwgcGF0aHMpOgogICAg
ICMgRklYTUU6IEknbSBub3Qgc3VyZSB0aGVyZSdzIG11Y2ggcG9pbnQgaW4gdGhpcyBiZWluZyBh
IHNldC4gQSBsaXN0IHdvdWxkIHByb2JhYmx5IGJlIGZhc3Rlci4KICAgICB0ZXN0X2ZpbGVzID0g
c2V0KCkKICAgICBmb3IgcGF0aCBpbiBwYXRoc190b193YWxrOgotICAgICAgICBmaWxlcyA9IGZp
bGVzeXN0ZW0uZmlsZXNfdW5kZXIocGF0aCwgX3NraXBwZWRfZGlyZWN0b3JpZXMsIF9pc190ZXN0
X2ZpbGUpCisgICAgICAgIGZpbGVzID0gZmlsZXN5c3RlbS5maWxlc191bmRlcihwYXRoLCBfc2tp
cHBlZF9kaXJlY3RvcmllcywgX2lzX3Rlc3RfZmlsZV9vcl9yZWZ0ZXN0X2xpc3QpCiAgICAgICAg
IHRlc3RfZmlsZXMudXBkYXRlKHNldChmaWxlcykpCisgICAgICAgIGlmIGZpbGVzeXN0ZW0uaXNm
aWxlKHBhdGgpOgorICAgICAgICAgICAgdGVzdF9kaXIgPSBmaWxlc3lzdGVtLmRpcm5hbWUocGF0
aCkKKyAgICAgICAgICAgIHJlZnRlc3RfbGlzdCA9IGZpbGVzeXN0ZW0uam9pbih0ZXN0X2Rpciwg
J3JlZnRlc3QubGlzdCcpCisgICAgICAgICAgICBpZiByZWZ0ZXN0X2xpc3Qgbm90IGluIHRlc3Rf
ZmlsZXMgYW5kIGZpbGVzeXN0ZW0uZXhpc3RzKHJlZnRlc3RfbGlzdCk6CisgICAgICAgICAgICAg
ICAgdGVzdF9maWxlcy5hZGQocmVmdGVzdF9saXN0KQogCiAgICAgZ2F0aGVyX3RpbWUgPSB0aW1l
LnRpbWUoKSAtIGdhdGhlcl9zdGFydF90aW1lCiAgICAgX2xvZy5kZWJ1ZygiVGVzdCBnYXRoZXJp
bmcgdG9vayAlZiBzZWNvbmRzIiAlIGdhdGhlcl90aW1lKQpAQCAtMTA3LDUgKzExMiw5IEBAIGRl
ZiBpc19yZWZlcmVuY2VfaHRtbF9maWxlKGZpbGVuYW1lKToKICAgICByZXR1cm4gZmlsZW5hbWUu
ZW5kc3dpdGgoJy1leHBlY3RlZC5odG1sJykgb3IgZmlsZW5hbWUuZW5kc3dpdGgoJy1leHBlY3Rl
ZC1taXNtYXRjaC5odG1sJykKIAogCi1kZWYgX2lzX3Rlc3RfZmlsZShmaWxlc3lzdGVtLCBkaXJu
YW1lLCBmaWxlbmFtZSk6Ci0gICAgcmV0dXJuIF9oYXNfc3VwcG9ydGVkX2V4dGVuc2lvbihmaWxl
c3lzdGVtLCBmaWxlbmFtZSkgYW5kIG5vdCBpc19yZWZlcmVuY2VfaHRtbF9maWxlKGZpbGVuYW1l
KQorZGVmIF9pc190ZXN0X2ZpbGVfb3JfcmVmdGVzdF9saXN0KGZpbGVzeXN0ZW0sIGRpcm5hbWUs
IGZpbGVuYW1lKToKKyAgICBpZiBmaWxlbmFtZSA9PSAncmVmdGVzdC5saXN0JzoKKyAgICAgICAg
cmV0dXJuIFRydWUKKyAgICBpZiBub3QgX2hhc19zdXBwb3J0ZWRfZXh0ZW5zaW9uKGZpbGVzeXN0
ZW0sIGZpbGVuYW1lKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIG5vdCBpc19y
ZWZlcmVuY2VfaHRtbF9maWxlKGZpbGVuYW1lKSBvciBmaWxlc3lzdGVtLmV4aXN0cyhmaWxlc3lz
dGVtLmpvaW4oZGlybmFtZSwgJ3JlZnRlc3QubGlzdCcpKQpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzX3VuaXR0ZXN0LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxl
c191bml0dGVzdC5weQkocmV2aXNpb24gMTAwNzA1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkp
CkBAIC01OSwxNCArNTksMjQgQEAgY2xhc3MgVGVzdEZpbGVzVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgICAgIHRlc3RzID0gdGVzdF9maWxlcy5maW5kKHBvcnQsIFsndXNlcnNjcmlwdHMv
cmVzb3VyY2VzJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHMsIHNldChbXSkpCiAK
LSAgICBkZWYgdGVzdF9pc190ZXN0X2ZpbGUoc2VsZik6CisgICAgZGVmIHRlc3RfZmluZF93aXRo
X3JlZnRlc3RzKHNlbGYpOgorICAgICAgICBwb3J0ID0gdGVzdC5UZXN0UG9ydCgpCisgICAgICAg
IHRlc3RzID0gdGVzdF9maWxlcy5maW5kKHBvcnQsIFsncmVmdGVzdHMvZm9vL3Rlc3QuaHRtbCdd
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RzLCBzZXQoW3BvcnQubGF5b3V0X3Rlc3Rz
X2RpcigpICsgJy9yZWZ0ZXN0cy9mb28vcmVmdGVzdC5saXN0JywgcG9ydC5sYXlvdXRfdGVzdHNf
ZGlyKCkgKyAnL3JlZnRlc3RzL2Zvby90ZXN0Lmh0bWwnXSkpCisKKyAgICBkZWYgdGVzdF9pc190
ZXN0X2ZpbGVfb3JfcmVmdGVzdF9saXN0KHNlbGYpOgogICAgICAgICBwb3J0ID0gdGVzdC5UZXN0
UG9ydCgpCiAgICAgICAgIGZzID0gcG9ydC5fZmlsZXN5c3RlbQotICAgICAgICBzZWxmLmFzc2Vy
dFRydWUodGVzdF9maWxlcy5faXNfdGVzdF9maWxlKGZzLCAnJywgJ2Zvby5odG1sJykpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoZnMsICcnLCAnZm9v
LnNodG1sJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodGVzdF9maWxlcy5faXNfdGVzdF9m
aWxlKGZzLCAnJywgJ2Zvby5wbmcnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0ZXN0X2Zp
bGVzLl9pc190ZXN0X2ZpbGUoZnMsICcnLCAnZm9vLWV4cGVjdGVkLmh0bWwnKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRGYWxzZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoZnMsICcnLCAnZm9vLWV4
cGVjdGVkLW1pc21hdGNoLmh0bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3RfZmls
ZXMuX2lzX3Rlc3RfZmlsZV9vcl9yZWZ0ZXN0X2xpc3QoZnMsICcnLCAnZm9vLmh0bWwnKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3RfZmlsZXMuX2lzX3Rlc3RfZmlsZV9vcl9yZWZ0ZXN0
X2xpc3QoZnMsICcnLCAnZm9vLnNodG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0
X2ZpbGVzLl9pc190ZXN0X2ZpbGVfb3JfcmVmdGVzdF9saXN0KGZzLCAnJywgJ3JlZnRlc3QubGlz
dCcpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHRlc3RfZmlsZXMuX2lzX3Rlc3RfZmlsZV9v
cl9yZWZ0ZXN0X2xpc3QoZnMsICcnLCAnZm9vLnBuZycpKQorICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKHRlc3RfZmlsZXMuX2lzX3Rlc3RfZmlsZV9vcl9yZWZ0ZXN0X2xpc3QoZnMsICcnLCAnZm9v
LWV4cGVjdGVkLmh0bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0ZXN0X2ZpbGVzLl9p
c190ZXN0X2ZpbGVfb3JfcmVmdGVzdF9saXN0KGZzLCAnJywgJ2Zvby1leHBlY3RlZC1taXNtYXRj
aC5odG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodGVzdF9maWxlcy5faXNfdGVzdF9m
aWxlX29yX3JlZnRlc3RfbGlzdChmcywgJycsICdzb21lLmxpc3QnKSkKKworICAgICAgICBzZWxm
LmFzc2VydFRydWUodGVzdF9maWxlcy5faXNfdGVzdF9maWxlX29yX3JlZnRlc3RfbGlzdChmcywg
J3JlZnRlc3RzL2Zvby8nLCAndW5saXN0ZWR0ZXN0Lmh0bWwnKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKHRlc3RfZmlsZXMuX2lzX3Rlc3RfZmlsZV9vcl9yZWZ0ZXN0X2xpc3QoZnMsICdyZWZ0
ZXN0cy9mb28vJywgJ3VubGlzdGVkdGVzdC1tYXRjaC5odG1sJykpCiAKIAogY2xhc3MgTW9ja1dp
bkZpbGVTeXN0ZW0ob2JqZWN0KToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117322</attachid>
            <date>2011-11-30 20:56:24 -0800</date>
            <delta_ts>2011-12-01 17:22:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66837-20111130205623.patch</filename>
            <type>text/plain</type>
            <size>17946</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEwMTU5NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQxIEBACisyMDExLTExLTMwICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIFBhcnNlIHJlZnRlc3QubGlzdCBhbmQgZXh0cmFjdCB0eXBlcyBvZiByZWYgdGVz
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2ODM3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1
cHBvcnQgZm9yIHJlZnRlc3QubGlzdCB0byBiYXNlIHBvcnQuCisKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHk6
CisgICAgICAgIChTaW5nbGVUZXN0UnVubmVyLl9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgIChQb3J0Ll9faW5p
dF9fKTogSW5pdGlhbGl6ZSBzZWxmLl9yZWZ0ZXN0X2xpc3QuIEl0J3MgYSBkaWN0aW9uYXJ5IG1h
cHBpbmcgZnJvbSBhIHRlc3QgZGlyZWN0b3J5CisgICAgICAgIHRvIGEgZGljdGlvbmFyeSBvZiB7
dGVzdCBwYXRoOiAoIj09IiBvciAiIT0iLCByZWZlcmVuY2UgZmlsZSBwYXRoKX0KKyAgICAgICAg
KFBvcnQuX2dldF9yZWZ0ZXN0X2xpc3QpOiBBZGRlZDsgY2FsbHMgdGVzdF9maWxlLnBhcnNlX3Jl
ZnRlc3RfbGlzdCB0byBmaWxsIHNlbGYuX3JlZnRlc3RfbGlzdC4KKyAgICAgICAgKFBvcnQuX3Jl
ZmVyZW5jZV9maWxlX2Zvcik6IEFkZGVkOyBvYnRhaW5zIHRoZSByZWZlcmVuY2UgZmlsZSBuYW1l
IGdpdmVuIGEgdGVzdCBuYW1lLgorICAgICAgICAoUG9ydC5yZWZ0ZXN0X2V4cGVjdGVkX2ZpbGVu
YW1lKTogQ2FsbHMgX3JlZmVyZW5jZV9maWxlX2Zvci4KKyAgICAgICAgKFBvcnQucmVmdGVzdF9l
eHBlY3RlZF9taXNtYXRjaF9maWxlbmFtZSk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weToKKyAgICAgICAgKHVuaXRfdGVzdF9maWxl
c3lzdGVtLmFkZF90ZXN0X2ZpbGUpOgorICAgICAgICAodW5pdF90ZXN0X2ZpbGVzeXN0ZW0uYWRk
X2ZpbGUpOgorICAgICAgICAodW5pdF90ZXN0X2ZpbGVzeXN0ZW0pOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlcy5weToKKyAgICAgICAgKGlz
X3JlZmVyZW5jZV9odG1sX2ZpbGUpOiBUcmVhdCBhbnkgZmlsZSB0aGF0IHN0YXJ0cyB3aXRoIHJl
Zi0gb3Igbm90cmVmLSBvciBlbmRzIHdpdGggKHJlZ2FyZGxlc3Mgb2YgZXh0ZW5zaW9uKQorICAg
ICAgICAtZXhwZWN0ZWQsIC1leHBlY3RlZC1taXNtYWNoLCAtcmVmLCBvciAtbm90cmVmIGFzIGEg
cmVmZXJlbmNlIGZpbGUuCisgICAgICAgIChfaXNfdGVzdF9maWxlKToKKyAgICAgICAgKHBhcnNl
X3JlZnRlc3RfbGlzdCk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvdGVzdF9maWxlc191bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RGaWxlc1Rl
c3QudGVzdF9maW5kX3dpdGhfc2tpcHBlZF9kaXJlY3Rvcmllcyk6CisgICAgICAgIChUZXN0Rmls
ZXNUZXN0LnRlc3RfaXNfdGVzdF9maWxlKToKKyAgICAgICAgKFRlc3RGaWxlc1Rlc3QpOgorICAg
ICAgICAoVGVzdEZpbGVzVGVzdC50ZXN0X3BhcnNlX3JlZnRlc3RfbGlzdCk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlv
bnRlc3QucHk6CisgICAgICAgIChnZXRfdGVzdHNfcnVuLlJlY29yZGluZ1Rlc3REcml2ZXIucnVu
X3Rlc3QpOgorICAgICAgICAoTWFpblRlc3QudGVzdF91bmV4cGVjdGVkX2ZhaWx1cmVzKToKKyAg
ICAgICAgKE1haW5UZXN0LnRlc3RfbWlzc2luZ19hbmRfdW5leHBlY3RlZF9yZXN1bHRzKToKKyAg
ICAgICAgKEVuZFRvRW5kVGVzdC50ZXN0X2VuZF90b19lbmQpOgorCiAyMDExLTExLTMwICBuZHVj
YUBjaHJvbWl1bS5vcmcgIDxuZHVjYUBjaHJvbWl1bS5vcmdAMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFi
M2MtZDUyNjkxYjRkYmZjPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRW5hYmxlIHRocmVhZGVkIGNv
bXBvc2l0aW5nIHZpYSBDQ1RocmVhZFByb3h5OjpoYXNUaHJlYWQgb25seQpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlv
bnRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkJKHJldmlzaW9uIDEwMTU2MSkK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNf
aW50ZWdyYXRpb250ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsNyArMTY2LDkgQEAgZGVm
IGdldF90ZXN0c19ydW4oZXh0cmFfYXJncz1Ob25lLCB0ZXN0cwogICAgICAgICAgICAgIyBJbiBj
YXNlIG9mIHJlZnRlc3QsIG9uZSB0ZXN0IGNhbGxzIHRoZSBkcml2ZXIncyBydW5fdGVzdCgpIHR3
aWNlLgogICAgICAgICAgICAgIyBXZSBzaG91bGQgbm90IGFkZCBhIHJlZmVyZW5jZSBodG1sIHVz
ZWQgYnkgcmVmdGVzdHMgdG8gdGVzdHMgdW5sZXNzIGluY2x1ZGVfcmVmZXJlbmNlX2h0bWwgcGFy
YW1ldGVyCiAgICAgICAgICAgICAjIGlzIGV4cGxpY2l0bHkgZ2l2ZW4uCi0gICAgICAgICAgICBp
ZiBpbmNsdWRlX3JlZmVyZW5jZV9odG1sIG9yIG5vdCBpc19yZWZlcmVuY2VfaHRtbF9maWxlKHRl
c3RfaW5wdXQudGVzdF9uYW1lKToKKyAgICAgICAgICAgIGZpbGVzeXN0ZW0gPSBzZWxmLl9wb3J0
Lmhvc3QuZmlsZXN5c3RlbQorICAgICAgICAgICAgZGlybmFtZSwgZmlsZW5hbWUgPSBmaWxlc3lz
dGVtLnNwbGl0KHRlc3RfbmFtZSkKKyAgICAgICAgICAgIGlmIGluY2x1ZGVfcmVmZXJlbmNlX2h0
bWwgb3Igbm90IGlzX3JlZmVyZW5jZV9odG1sX2ZpbGUoZmlsZXN5c3RlbSwgZGlybmFtZSwgZmls
ZW5hbWUpOgogICAgICAgICAgICAgICAgIHNlbGYuX2N1cnJlbnRfdGVzdF9iYXRjaC5hcHBlbmQo
dGVzdF9uYW1lKQogICAgICAgICAgICAgcmV0dXJuIFRlc3REcml2ZXIucnVuX3Rlc3Qoc2VsZiwg
dGVzdF9pbnB1dCkKIApAQCAtNDI2LDcgKzQyOCw3IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKIAogICAgICAgICAjIFVwZGF0ZSB0aGlzIG1hZ2ljIG51bWJlciBpZiB5b3Ug
YWRkIGFuIHVuZXhwZWN0ZWQgdGVzdCB0byB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC50ZXN0
CiAgICAgICAgICMgRklYTUU6IEl0J3MgbmljZSB0byBoYXZlIGEgcm91dGluZSBpbiBwb3J0L3Rl
c3QucHkgdGhhdCByZXR1cm5zIHRoaXMgbnVtYmVyLgotICAgICAgICB1bmV4cGVjdGVkX3Rlc3Rz
X2NvdW50ID0gNworICAgICAgICB1bmV4cGVjdGVkX3Rlc3RzX2NvdW50ID0gOAogCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocmVzLCB1bmV4cGVjdGVkX3Rlc3RzX2NvdW50KQogICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKG91dC5lbXB0eSgpKQpAQCAtNDQ4LDggKzQ1MCwyMiBAQCBjbGFzcyBN
YWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGV4cGVjdGVkX3Rva2VuID0gJyJ1
bmV4cGVjdGVkIjp7InRleHQtaW1hZ2UtY2hlY2tzdW0uaHRtbCI6eyJleHBlY3RlZCI6IlBBU1Mi
LCJhY3R1YWwiOiJURVhUIn0sIm1pc3NpbmdfdGV4dC5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyIs
ImlzX21pc3NpbmdfdGV4dCI6dHJ1ZSwiYWN0dWFsIjoiTUlTU0lORyJ9JwogICAgICAgICBqc29u
X3N0cmluZyA9IGZzLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZnVs
bF9yZXN1bHRzLmpzb24nKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoanNvbl9zdHJpbmcuZmlu
ZChleHBlY3RlZF90b2tlbikgIT0gLTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShqc29uX3N0
cmluZy5maW5kKCcibnVtX3JlZ3Jlc3Npb24iOjEnKSA9PSAtMSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKGpzb25fc3RyaW5nLmZpbmQoJyJudW1fZmxha3kiOjEnKSA9PSAtMSkKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGpzb25fc3RyaW5nLmZpbmQoJyJudW1fcmVncmVzc2lvbnMiOjEnKSAh
PSAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGpzb25fc3RyaW5nLmZpbmQoJyJudW1fZmxh
a3kiOjAnKSAhPSAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGpzb25fc3RyaW5nLmZpbmQo
JyJudW1fbWlzc2luZyI6MScpICE9IC0xKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19hbmRfdW5l
eHBlY3RlZF9yZXN1bHRzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB3ZSB1cGRhdGUgZXhw
ZWN0YXRpb25zIGluIHBsYWNlLiBJZiB0aGUgZXhwZWN0YXRpb24KKyAgICAgICAgIyBpcyBtaXNz
aW5nLCB1cGRhdGUgdGhlIGV4cGVjdGVkIGdlbmVyaWMgbG9jYXRpb24uCisgICAgICAgIGZzID0g
dW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQorICAgICAgICByZXMsIG91dCwgZXJyLCBfID0gbG9nZ2lu
Z19ydW4oWyctLW5vLXNob3ctcmVzdWx0cycsICdyZWZ0ZXN0cy9mb28vJ10sIHRlc3RzX2luY2x1
ZGVkPVRydWUsIGZpbGVzeXN0ZW09ZnMsIHJlY29yZF9yZXN1bHRzPVRydWUpCisgICAgICAgIGZp
bGVfbGlzdCA9IGZzLndyaXR0ZW5fZmlsZXMua2V5cygpCisgICAgICAgIGZpbGVfbGlzdC5yZW1v
dmUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy90ZXN0c19ydW4wLnR4dCcpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKHJlcywgMSkKKyAgICAgICAganNvbl9zdHJpbmcgPSBmcy5yZWFkX3Rl
eHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGpzb25fc3RyaW5nLmZpbmQoJyJ1bmxpc3RlZHRlc3QuaHRt
bCI6eyJleHBlY3RlZCI6IlBBU1MiLCJpc19taXNzaW5nX3RleHQiOnRydWUsImFjdHVhbCI6Ik1J
U1NJTkciLCJpc19taXNzaW5nX2ltYWdlIjp0cnVlfScpICE9IC0xKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUoanNvbl9zdHJpbmcuZmluZCgnIm51bV9yZWdyZXNzaW9ucyI6MScpICE9IC0xKQor
ICAgICAgICBzZWxmLmFzc2VydFRydWUoanNvbl9zdHJpbmcuZmluZCgnIm51bV9mbGFreSI6MCcp
ICE9IC0xKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoanNvbl9zdHJpbmcuZmluZCgnIm51bV9t
aXNzaW5nIjoxJykgIT0gLTEpCiAKICAgICBkZWYgdGVzdF9taXNzaW5nX2FuZF91bmV4cGVjdGVk
X3Jlc3VsdHNfd2l0aF9jdXN0b21fZXhpdF9jb2RlKHNlbGYpOgpAQCAtNzU3LDggKzc3Myw3IEBA
IGNsYXNzIEVuZFRvRW5kVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGZzID0gdW5p
dF90ZXN0X2ZpbGVzeXN0ZW0oKQogICAgICAgICByZXMsIG91dCwgZXJyLCB1c2VyID0gbG9nZ2lu
Z19ydW4ocmVjb3JkX3Jlc3VsdHM9VHJ1ZSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmlsZXN5c3Rl
bT1mcykKIAotICAgICAgICAjIFNldmVuIHRlc3RzIHNob3VsZCBmYWlsLCBzbyB0aGUgcmV0dXJu
IGNvZGUgc2hvdWxkIGJlIDcuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlcywgNykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzLCB1bmV4cGVjdGVkX3Rlc3RzX2NvdW50KQogICAg
ICAgICByZXN1bHRzID0gc2VsZi5wYXJzZV9mdWxsX3Jlc3VsdHMoZnMuZmlsZXNbJy90bXAvbGF5
b3V0LXRlc3QtcmVzdWx0cy9mdWxsX3Jlc3VsdHMuanNvbiddKQogCiAgICAgICAgICMgQ2hlY2sg
dG8gZW5zdXJlIHdlJ3JlIHBhc3NpbmcgYmFjayBpbWFnZSBkaWZmICVhZ2UgY29ycmVjdGx5LgpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2lu
Z2xlX3Rlc3RfcnVubmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weQkocmV2aXNpb24g
MTAxNTYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxl
cnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02OCwxMiArNjgsMTIg
QEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcjoKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAg
IHJlZnRlc3RfZXhwZWN0ZWRfZmlsZW5hbWUgPSBwb3J0LnJlZnRlc3RfZXhwZWN0ZWRfZmlsZW5h
bWUoc2VsZi5fdGVzdF9uYW1lKQotICAgICAgICBpZiBmcy5leGlzdHMocmVmdGVzdF9leHBlY3Rl
ZF9maWxlbmFtZSk6CisgICAgICAgIGlmIHJlZnRlc3RfZXhwZWN0ZWRfZmlsZW5hbWUgYW5kIGZz
LmV4aXN0cyhyZWZ0ZXN0X2V4cGVjdGVkX2ZpbGVuYW1lKToKICAgICAgICAgICAgIHNlbGYuX2lz
X3JlZnRlc3QgPSBUcnVlCiAgICAgICAgICAgICBzZWxmLl9yZWZlcmVuY2VfZmlsZW5hbWUgPSBy
ZWZ0ZXN0X2V4cGVjdGVkX2ZpbGVuYW1lCiAKICAgICAgICAgcmVmdGVzdF9leHBlY3RlZF9taXNt
YXRjaF9maWxlbmFtZSA9IHBvcnQucmVmdGVzdF9leHBlY3RlZF9taXNtYXRjaF9maWxlbmFtZShz
ZWxmLl90ZXN0X25hbWUpCi0gICAgICAgIGlmIGZzLmV4aXN0cyhyZWZ0ZXN0X2V4cGVjdGVkX21p
c21hdGNoX2ZpbGVuYW1lKToKKyAgICAgICAgaWYgcmVmdGVzdF9leHBlY3RlZF9taXNtYXRjaF9m
aWxlbmFtZSBhbmQgZnMuZXhpc3RzKHJlZnRlc3RfZXhwZWN0ZWRfbWlzbWF0Y2hfZmlsZW5hbWUp
OgogICAgICAgICAgICAgaWYgc2VsZi5faXNfcmVmdGVzdDoKICAgICAgICAgICAgICAgICBfbG9n
LmVycm9yKCdJdCBpcyBub3QgYWxsb3dlZCB0aGF0IG9uZSB0ZXN0IGZpbGUgaGFzIGJvdGgnCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnIGV4cGVjdGVkLmh0bWwgZmlsZSBhbmQgZXhwZWN0
ZWQtbWlzbWF0Y2guaHRtbCBmaWxlJwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9iYXNlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQkocmV2aXNpb24gMTAxNTYxKQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC01OCw2ICs1OCw3IEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0
IHQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnNlcnZlcnMgaW1wb3J0IGFwYWNoZV9odHRw
X3NlcnZlcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuc2VydmVycyBpbXBvcnQgaHR0cF9z
ZXJ2ZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnNlcnZlcnMgaW1wb3J0IHdlYnNvY2tl
dF9zZXJ2ZXIKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQudGVzdF9maWxlcyBpbXBv
cnQgcGFyc2VfcmVmdGVzdF9saXN0CiAKIF9sb2cgPSBsb2d1dGlscy5nZXRfbG9nZ2VyKF9fZmls
ZV9fKQogCkBAIC0xNDcsNiArMTQ4LDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogCiAgICAgICAg
IHNlbGYuc2V0X29wdGlvbl9kZWZhdWx0KCdjb25maWd1cmF0aW9uJywgc2VsZi5kZWZhdWx0X2Nv
bmZpZ3VyYXRpb24oKSkKICAgICAgICAgc2VsZi5fdGVzdF9jb25maWd1cmF0aW9uID0gTm9uZQor
ICAgICAgICBzZWxmLl9yZWZ0ZXN0X2xpc3QgPSBkaWN0KCkKICAgICAgICAgc2VsZi5fbXVsdGlw
cm9jZXNzaW5nX2lzX2F2YWlsYWJsZSA9IChtdWx0aXByb2Nlc3NpbmcgaXMgbm90IE5vbmUpCiAg
ICAgICAgIHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5ID0gTm9uZQogCkBAIC00MjQsMTMgKzQyNiwz
NiBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIHRleHQgPSBzZWxmLl9maWxlc3lzdGVt
LnJlYWRfYmluYXJ5X2ZpbGUoYmFzZWxpbmVfcGF0aCkKICAgICAgICAgcmV0dXJuIHRleHQucmVw
bGFjZSgiXHJcbiIsICJcbiIpCiAKKyAgICBkZWYgX2dldF9yZWZ0ZXN0X2xpc3Qoc2VsZiwgdGVz
dF9uYW1lKToKKyAgICAgICAgZGlybmFtZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxh
eW91dF90ZXN0c19kaXIoKSwgc2VsZi5fZmlsZXN5c3RlbS5kaXJuYW1lKHRlc3RfbmFtZSkpCisg
ICAgICAgIGlmIGRpcm5hbWUgbm90IGluIHNlbGYuX3JlZnRlc3RfbGlzdDoKKyAgICAgICAgICAg
IHNlbGYuX3JlZnRlc3RfbGlzdFtkaXJuYW1lXSA9IHBhcnNlX3JlZnRlc3RfbGlzdChzZWxmLl9m
aWxlc3lzdGVtLCBkaXJuYW1lKQorICAgICAgICByZXR1cm4gc2VsZi5fcmVmdGVzdF9saXN0W2Rp
cm5hbWVdCisKKyAgICBkZWYgX3JlZmVyZW5jZV9maWxlX2ZvcihzZWxmLCB0ZXN0X25hbWUsIGV4
cGVjdGF0aW9uKToKKyAgICAgICAgZGlybmFtZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxm
LmxheW91dF90ZXN0c19kaXIoKSwgc2VsZi5fZmlsZXN5c3RlbS5kaXJuYW1lKHRlc3RfbmFtZSkp
CisgICAgICAgIGlmIGRpcm5hbWUgbm90IGluIHNlbGYuX3JlZnRlc3RfbGlzdDoKKyAgICAgICAg
ICAgIHNlbGYuX3JlZnRlc3RfbGlzdFtkaXJuYW1lXSA9IHBhcnNlX3JlZnRlc3RfbGlzdChzZWxm
Ll9maWxlc3lzdGVtLCBkaXJuYW1lKQorICAgICAgICBpZiBub3Qgc2VsZi5fcmVmdGVzdF9saXN0
W2Rpcm5hbWVdOgorICAgICAgICAgICAgaWYgZXhwZWN0YXRpb24gPT0gJz09JzoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc2VsZi5leHBlY3RlZF9maWxlbmFtZSh0ZXN0X25hbWUsICcuaHRtbCcp
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmV4cGVjdGVk
X2ZpbGVuYW1lKHRlc3RfbmFtZSwgJy1taXNtYXRjaC5odG1sJykKKworICAgICAgICByZWZ0ZXN0
X2xpc3QgPSBzZWxmLl9yZWZ0ZXN0X2xpc3RbZGlybmFtZV0KKyAgICAgICAgcHJpbnQgcmVmdGVz
dF9saXN0CisgICAgICAgIGZpbGVuYW1lID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5
b3V0X3Rlc3RzX2RpcigpLCB0ZXN0X25hbWUpCisgICAgICAgIGlmIGZpbGVuYW1lIG5vdCBpbiBy
ZWZ0ZXN0X2xpc3Qgb3IgcmVmdGVzdF9saXN0W2ZpbGVuYW1lXVswXSAhPSBleHBlY3RhdGlvbjoK
KyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiByZWZ0ZXN0X2xpc3RbZmls
ZW5hbWVdWzFdCisKICAgICBkZWYgcmVmdGVzdF9leHBlY3RlZF9maWxlbmFtZShzZWxmLCB0ZXN0
X25hbWUpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGZpbGVuYW1lIG9mIHJlZmVyZW5jZSB3ZSBl
eHBlY3QgdGhlIHRlc3QgbWF0Y2hlcy4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuZXhwZWN0ZWRf
ZmlsZW5hbWUodGVzdF9uYW1lLCAnLmh0bWwnKQorICAgICAgICByZXR1cm4gc2VsZi5fcmVmZXJl
bmNlX2ZpbGVfZm9yKHRlc3RfbmFtZSwgJz09JykKIAogICAgIGRlZiByZWZ0ZXN0X2V4cGVjdGVk
X21pc21hdGNoX2ZpbGVuYW1lKHNlbGYsIHRlc3RfbmFtZSk6CiAgICAgICAgICIiIlJldHVybiB0
aGUgZmlsZW5hbWUgb2YgcmVmZXJlbmNlIHdlIGRvbid0IGV4cGVjdCB0aGUgdGVzdCBtYXRjaGVz
LiIiIgotICAgICAgICByZXR1cm4gc2VsZi5leHBlY3RlZF9maWxlbmFtZSh0ZXN0X25hbWUsICct
bWlzbWF0Y2guaHRtbCcpCisgICAgICAgIHJldHVybiBzZWxmLl9yZWZlcmVuY2VfZmlsZV9mb3Io
dGVzdF9uYW1lLCAnIT0nKQogCiAgICAgZGVmIHRlc3RfdG9fdXJpKHNlbGYsIHRlc3RfbmFtZSk6
CiAgICAgICAgICIiIkNvbnZlcnQgYSB0ZXN0IG5hbWUgdG8gYSBVUkkuIiIiCkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CShyZXZp
c2lvbiAxMDE1NjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3Rlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw2ICsxODcsMTMgQEAgbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4MzQKICAgICB0ZXN0cy5hZGRfcmVmdGVzdCgnZmFpbHVyZXMvdW5leHBlY3Rl
ZC9yZWZ0ZXN0Lmh0bWwnLCAnZmFpbHVyZXMvdW5leHBlY3RlZC9yZWZ0ZXN0LWV4cGVjdGVkLmh0
bWwnLCBzYW1lX2ltYWdlPUZhbHNlKQogICAgIHRlc3RzLmFkZF9yZWZ0ZXN0KCdmYWlsdXJlcy91
bmV4cGVjdGVkL21pc21hdGNoLmh0bWwnLCAnZmFpbHVyZXMvdW5leHBlY3RlZC9taXNtYXRjaC1l
eHBlY3RlZC1taXNtYXRjaC5odG1sJywgc2FtZV9pbWFnZT1UcnVlKQogICAgICMgRklYTUU6IEFk
ZCBhIHJlZnRlc3Qgd2hpY2ggY3Jhc2hlcy4KKyAgICB0ZXN0cy5hZGQoJ3JlZnRlc3RzL2Zvby90
ZXN0Lmh0bWwnKQorICAgIHRlc3RzLmFkZCgncmVmdGVzdHMvZm9vL3Rlc3QtcmVmLmh0bWwnKQor
CisgICAgIyBUaGUgZm9sbG93aW5nIGZpbGVzIHNob3VsZG4ndCBiZSB0cmVhdGVkIGFzIHJlZnRl
c3RzCisgICAgdGVzdHMuYWRkX3JlZnRlc3QoJ3JlZnRlc3RzL2Zvby91bmxpc3RlZHRlc3QuaHRt
bCcsICdyZWZ0ZXN0cy9mb28vdW5saXN0ZWR0ZXN0LWV4cGVjdGVkLmh0bWwnLCBzYW1lX2ltYWdl
PVRydWUpCisgICAgdGVzdHMuYWRkKCdyZWZ0ZXN0cy9mb28vcmVmZXJlbmNlL2Jhci9jb21tb24u
aHRtbCcpCisgICAgdGVzdHMuYWRkKCdyZWZ0ZXN0cy9mb28vcmVmdGVzdC9iYXIvc2hhcmVkLmh0
bWwnKQogCiAgICAgdGVzdHMuYWRkKCd3ZWJzb2NrZXQvdGVzdHMvcGFzc2VzL3RleHQuaHRtbCcp
CiAKQEAgLTIxMywyMyArMjIwLDI1IEBAIGRlZiB1bml0X3Rlc3RfZmlsZXN5c3RlbShmaWxlcz1O
b25lKToKICAgICB0ZXN0X2xpc3QgPSB1bml0X3Rlc3RfbGlzdCgpCiAgICAgZmlsZXMgPSBmaWxl
cyBvciB7fQogCi0gICAgZGVmIGFkZF9maWxlKGZpbGVzLCB0ZXN0LCBzdWZmaXgsIGNvbnRlbnRz
KToKKyAgICBkZWYgYWRkX3Rlc3RfZmlsZShmaWxlcywgdGVzdCwgc3VmZml4LCBjb250ZW50cyk6
CiAgICAgICAgIGRpcm5hbWUgPSB0ZXN0Lm5hbWVbMDp0ZXN0Lm5hbWUucmZpbmQoJy8nKV0KICAg
ICAgICAgYmFzZSA9IHRlc3QuYmFzZQotICAgICAgICBwYXRoID0gTEFZT1VUX1RFU1RfRElSICsg
Jy8nICsgZGlybmFtZSArICcvJyArIGJhc2UgKyBzdWZmaXgKLSAgICAgICAgZmlsZXNbcGF0aF0g
PSBjb250ZW50cworICAgICAgICBhZGRfZmlsZShmaWxlcywgZGlybmFtZSArICcvJyArIGJhc2Ug
KyBzdWZmaXgsIGNvbnRlbnRzKQorCisgICAgZGVmIGFkZF9maWxlKGZpbGVzLCBmaWxlX25hbWUs
IGNvbnRlbnRzKToKKyAgICAgICAgZmlsZXNbTEFZT1VUX1RFU1RfRElSICsgJy8nICsgZmlsZV9u
YW1lXSA9IGNvbnRlbnRzCiAKICAgICAjIEFkZCBlYWNoIHRlc3QgYW5kIHRoZSBleHBlY3RlZCBv
dXRwdXQsIGlmIGFueS4KICAgICBmb3IgdGVzdCBpbiB0ZXN0X2xpc3QudGVzdHMudmFsdWVzKCk6
Ci0gICAgICAgIGFkZF9maWxlKGZpbGVzLCB0ZXN0LCAnLmh0bWwnLCAnJykKKyAgICAgICAgYWRk
X3Rlc3RfZmlsZShmaWxlcywgdGVzdCwgJy5odG1sJywgJycpCiAgICAgICAgIGlmIHRlc3QuaXNf
cmVmdGVzdDoKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIGlmIHRlc3QuYWN0dWFsX2F1
ZGlvOgotICAgICAgICAgICAgYWRkX2ZpbGUoZmlsZXMsIHRlc3QsICctZXhwZWN0ZWQud2F2Jywg
dGVzdC5leHBlY3RlZF9hdWRpbykKKyAgICAgICAgICAgIGFkZF90ZXN0X2ZpbGUoZmlsZXMsIHRl
c3QsICctZXhwZWN0ZWQud2F2JywgdGVzdC5leHBlY3RlZF9hdWRpbykKICAgICAgICAgICAgIGNv
bnRpbnVlCiAKLSAgICAgICAgYWRkX2ZpbGUoZmlsZXMsIHRlc3QsICctZXhwZWN0ZWQudHh0Jywg
dGVzdC5leHBlY3RlZF90ZXh0KQotICAgICAgICBhZGRfZmlsZShmaWxlcywgdGVzdCwgJy1leHBl
Y3RlZC5wbmcnLCB0ZXN0LmV4cGVjdGVkX2ltYWdlKQorICAgICAgICBhZGRfdGVzdF9maWxlKGZp
bGVzLCB0ZXN0LCAnLWV4cGVjdGVkLnR4dCcsIHRlc3QuZXhwZWN0ZWRfdGV4dCkKKyAgICAgICAg
YWRkX3Rlc3RfZmlsZShmaWxlcywgdGVzdCwgJy1leHBlY3RlZC5wbmcnLCB0ZXN0LmV4cGVjdGVk
X2ltYWdlKQogCiAKICAgICAjIEFkZCB0aGUgdGVzdF9leHBlY3RhdGlvbnMgZmlsZS4KQEAgLTI1
NSw2ICsyNjQsMTAgQEAgV09OVEZJWCBTS0lQIDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcgog
V09OVEZJWCBTS0lQIDogZmFpbHVyZXMvZXhwZWN0ZWQvZXhjZXB0aW9uLmh0bWwgPSBDUkFTSAog
IiIiCiAKKyAgICBhZGRfZmlsZShmaWxlcywgJ3JlZnRlc3RzL2Zvby9yZWZ0ZXN0Lmxpc3QnLCAi
IiIKKz09IHRlc3QuaHRtbCB0ZXN0LXJlZi5odG1sCisiIiIpCisKICAgICAjIEZJWE1FOiBUaGlz
IHRlc3Qgd2FzIG9ubHkgYmVpbmcgaWdub3JlZCBiZWNhdXNlIG9mIG1pc3NpbmcgYSBsZWFkaW5n
ICcvJy4KICAgICAjIEZpeGluZyB0aGUgdHlwbyBjYXVzZXMgc2V2ZXJhbCB0ZXN0cyB0byBhc3Nl
cnQsIHNvIGRpc2FibGluZyB0aGUgdGVzdCBlbnRpcmVseS4KICAgICAjIEFkZCBpbiBhIGZpbGUg
c2hvdWxkIGJlIGlnbm9yZWQgYnkgdGVzdF9maWxlcy5maW5kKCkuCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXMucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzLnB5
CShyZXZpc2lvbiAxMDE1NjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3Rlc3RfZmlsZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAgaS5l
LiBjYWxsaW5nIGZpbmQoWyJMYXlvdXRUZXN0cy9mYXN0Il0pIAogdW5kZXIgdGhhdCBkaXJlY3Rv
cnkuIiIiCiAKIGltcG9ydCB0aW1lCitpbXBvcnQgcmUKIAogZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtIGltcG9ydCBsb2d1dGlscwogCkBAIC00Niw3ICs0Nyw3IEBAIF9sb2cgPSBsb2d1dGls
cy5nZXRfbG9nZ2VyKF9fZmlsZV9fKQogX3N1cHBvcnRlZF9maWxlX2V4dGVuc2lvbnMgPSBzZXQo
WycuaHRtbCcsICcuc2h0bWwnLCAnLnhtbCcsICcueGh0bWwnLCAnLnBsJywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnLmh0bScsICcucGhwJywgJy5zdmcnLCAnLm1odCddKQog
IyBXaGVuIGNvbGxlY3RpbmcgdGVzdCBjYXNlcywgc2tpcCB0aGVzZSBkaXJlY3RvcmllcwotX3Nr
aXBwZWRfZGlyZWN0b3JpZXMgPSBzZXQoWycuc3ZuJywgJ19zdm4nLCAncmVzb3VyY2VzJywgJ3Nj
cmlwdC10ZXN0cyddKQorX3NraXBwZWRfZGlyZWN0b3JpZXMgPSBzZXQoWycuc3ZuJywgJ19zdm4n
LCAncmVzb3VyY2VzJywgJ3NjcmlwdC10ZXN0cycsICdyZWZlcmVuY2UnLCAncmVmdGVzdCddKQog
CiAKIGRlZiBmaW5kKHBvcnQsIHBhdGhzPU5vbmUpOgpAQCAtMTAzLDkgKzEwNCwzMiBAQCBkZWYg
X2hhc19zdXBwb3J0ZWRfZXh0ZW5zaW9uKGZpbGVzeXN0ZW0sCiAgICAgcmV0dXJuIGV4dGVuc2lv
biBpbiBfc3VwcG9ydGVkX2ZpbGVfZXh0ZW5zaW9ucwogCiAKLWRlZiBpc19yZWZlcmVuY2VfaHRt
bF9maWxlKGZpbGVuYW1lKToKLSAgICByZXR1cm4gZmlsZW5hbWUuZW5kc3dpdGgoJy1leHBlY3Rl
ZC5odG1sJykgb3IgZmlsZW5hbWUuZW5kc3dpdGgoJy1leHBlY3RlZC1taXNtYXRjaC5odG1sJykK
K2RlZiBpc19yZWZlcmVuY2VfaHRtbF9maWxlKGZpbGVzeXN0ZW0sIGRpcm5hbWUsIGZpbGVuYW1l
KToKKyAgICBpZiBmaWxlbmFtZS5zdGFydHN3aXRoKCdyZWYtJykgb3IgZmlsZW5hbWUuZW5kc3dp
dGgoJ25vdHJlZi0nKToKKyAgICAgICAgcmV0dXJuIFRydWUKKyAgICBmaWxlbmFtZV93aWhvdXRf
ZXh0LCB1bnVzZWQgPSBmaWxlc3lzdGVtLnNwbGl0ZXh0KGZpbGVuYW1lKQorICAgIGZvciBzdWZm
aXggaW4gWyctZXhwZWN0ZWQnLCAnLWV4cGVjdGVkLW1pc21hdGNoJywgJy1yZWYnLCAnLW5vdHJl
ZiddOgorICAgICAgICBpZiBmaWxlbmFtZV93aWhvdXRfZXh0LmVuZHN3aXRoKHN1ZmZpeCk6Cisg
ICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgIHJldHVybiBGYWxzZQogCiAKIGRlZiBfaXNfdGVz
dF9maWxlKGZpbGVzeXN0ZW0sIGRpcm5hbWUsIGZpbGVuYW1lKToKLSAgICByZXR1cm4gX2hhc19z
dXBwb3J0ZWRfZXh0ZW5zaW9uKGZpbGVzeXN0ZW0sIGZpbGVuYW1lKSBhbmQgbm90IGlzX3JlZmVy
ZW5jZV9odG1sX2ZpbGUoZmlsZW5hbWUpCisgICAgcmV0dXJuIF9oYXNfc3VwcG9ydGVkX2V4dGVu
c2lvbihmaWxlc3lzdGVtLCBmaWxlbmFtZSkgYW5kIG5vdCBpc19yZWZlcmVuY2VfaHRtbF9maWxl
KGZpbGVzeXN0ZW0sIGRpcm5hbWUsIGZpbGVuYW1lKQorCisKK2RlZiBwYXJzZV9yZWZ0ZXN0X2xp
c3QoZmlsZXN5c3RlbSwgdGVzdF9kaXJwYXRoKToKKyAgICByZWZ0ZXN0X2xpc3RfcGF0aCA9IGZp
bGVzeXN0ZW0uam9pbih0ZXN0X2RpcnBhdGgsICdyZWZ0ZXN0Lmxpc3QnKQorICAgIGlmIG5vdCBm
aWxlc3lzdGVtLmlzZmlsZShyZWZ0ZXN0X2xpc3RfcGF0aCk6CisgICAgICAgIHJldHVybiBOb25l
CisgICAgcmVmdGVzdF9saXN0X2ZpbGUgPSBmaWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKHJlZnRl
c3RfbGlzdF9wYXRoKQorCisgICAgcGFyc2VkX2xpc3QgPSBkaWN0KCkKKyAgICBmb3IgbGluZSBp
biByZWZ0ZXN0X2xpc3RfZmlsZS5zcGxpdCgnXG4nKToKKyAgICAgICAgbGluZSA9IHJlLnN1Yign
Iy4rJCcsICcnLCBsaW5lKQorICAgICAgICBzcGxpdF9saW5lID0gbGluZS5zcGxpdCgpCisgICAg
ICAgIGlmIGxlbihzcGxpdF9saW5lKSA8IDM6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICBleHBlY3RhdGlvbl90eXBlLCB0ZXN0X2ZpbGUsIHJlZl9maWxlID0gc3BsaXRfbGluZQorICAg
ICAgICBwYXJzZWRfbGlzdFtmaWxlc3lzdGVtLmpvaW4odGVzdF9kaXJwYXRoLCB0ZXN0X2ZpbGUp
XSA9IChleHBlY3RhdGlvbl90eXBlLCBmaWxlc3lzdGVtLmpvaW4odGVzdF9kaXJwYXRoLCByZWZf
ZmlsZSkpCisgICAgcmV0dXJuIHBhcnNlZF9saXN0CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXNfdW5pdHRlc3QucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzX3Vu
aXR0ZXN0LnB5CShyZXZpc2lvbiAxMDE1NjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAg
LTU0LDYgKzU0LDkgQEAgY2xhc3MgVGVzdEZpbGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgICAgIHRlc3RzID0gcG9ydC50ZXN0cygndXNlcnNjcmlwdHMnKQogICAgICAgICBzZWxmLmFz
c2VydFRydWUoJ3VzZXJzY3JpcHRzL3Jlc291cmNlcy9pZnJhbWUuaHRtbCcgbm90IGluIHRlc3Rz
KQogCisgICAgICAgIHRlc3RzID0gdGVzdF9maWxlcy5maW5kKHBvcnQsIFsncmVmdGVzdHMvZm9v
J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHMsIHNldChbJy90ZXN0LmNoZWNrb3V0
L0xheW91dFRlc3RzL3JlZnRlc3RzL2Zvby90ZXN0Lmh0bWwnLCAnL3Rlc3QuY2hlY2tvdXQvTGF5
b3V0VGVzdHMvcmVmdGVzdHMvZm9vL3VubGlzdGVkdGVzdC5odG1sJ10pKQorCiAgICAgZGVmIHRl
c3RfZmluZF93aXRoX3NraXBwZWRfZGlyZWN0b3JpZXNfMihzZWxmKToKICAgICAgICAgcG9ydCA9
IHRlc3QuVGVzdFBvcnQoKQogICAgICAgICB0ZXN0cyA9IHRlc3RfZmlsZXMuZmluZChwb3J0LCBb
J3VzZXJzY3JpcHRzL3Jlc291cmNlcyddKQpAQCAtNjQsOSArNjcsMjkgQEAgY2xhc3MgVGVzdEZp
bGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGZzID0gcG9ydC5fZmlsZXN5c3Rl
bQogICAgICAgICBzZWxmLmFzc2VydFRydWUodGVzdF9maWxlcy5faXNfdGVzdF9maWxlKGZzLCAn
JywgJ2Zvby5odG1sJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2ZpbGVzLl9pc190
ZXN0X2ZpbGUoZnMsICcnLCAnZm9vLnNodG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0
ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoZnMsICcnLCAndGVzdC1yZWYtdGVzdC5odG1sJykpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodGVzdF9maWxlcy5faXNfdGVzdF9maWxlKGZzLCAnJywg
J2Zvby5wbmcnKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0ZXN0X2ZpbGVzLl9pc190ZXN0
X2ZpbGUoZnMsICcnLCAnZm9vLWV4cGVjdGVkLmh0bWwnKSkKICAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZSh0ZXN0X2ZpbGVzLl9pc190ZXN0X2ZpbGUoZnMsICcnLCAnZm9vLWV4cGVjdGVkLW1pc21h
dGNoLmh0bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0ZXN0X2ZpbGVzLl9pc190ZXN0
X2ZpbGUoZnMsICcnLCAnZm9vLXJlZi5odG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
dGVzdF9maWxlcy5faXNfdGVzdF9maWxlKGZzLCAnJywgJ2Zvby1ub3RyZWYuaHRtbCcpKQorICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKHRlc3RfZmlsZXMuX2lzX3Rlc3RfZmlsZShmcywgJycsICdm
b28tbm90cmVmLnhodCcpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHRlc3RfZmlsZXMuX2lz
X3Rlc3RfZmlsZShmcywgJycsICdmb28tcmVmLnhodG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UodGVzdF9maWxlcy5faXNfdGVzdF9maWxlKGZzLCAnJywgJ3JlZi1mb28uaHRtbCcpKQor
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHRlc3RfZmlsZXMuX2lzX3Rlc3RfZmlsZShmcywgJycs
ICdub3RyZWYtZm9vLnhocicpKQorCisgICAgZGVmIHRlc3RfcGFyc2VfcmVmdGVzdF9saXN0KHNl
bGYpOgorICAgICAgICBwb3J0ID0gdGVzdC5UZXN0UG9ydCgpCisgICAgICAgIHBvcnQuaG9zdC5m
aWxlc3lzdGVtLmZpbGVzWydiYXIvcmVmdGVzdC5saXN0J10gPSAiIiI9PSB0ZXN0Lmh0bWwgdGVz
dC1yZWYuaHRtbAorCisjIHNvbWUgY29tbWVudAorIT0gdGVzdC0yLmh0bWwgdGVzdC1ub3RyZWYu
aHRtbCAjIG1vcmUgY29tbWVudHMKKz09IHRlc3QtMy5odG1sIHRlc3QtcmVmLmh0bWwiIiIKKwor
ICAgICAgICByZWZ0ZXN0X2xpc3QgPSB0ZXN0X2ZpbGVzLnBhcnNlX3JlZnRlc3RfbGlzdChwb3J0
Lmhvc3QuZmlsZXN5c3RlbSwgJ2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVmdGVz
dF9saXN0LCB7J2Jhci90ZXN0Lmh0bWwnOiAoJz09JywgJ2Jhci90ZXN0LXJlZi5odG1sJyksCisg
ICAgICAgICAgICAnYmFyL3Rlc3QtMi5odG1sJzogKCchPScsICdiYXIvdGVzdC1ub3RyZWYuaHRt
bCcpLAorICAgICAgICAgICAgJ2Jhci90ZXN0LTMuaHRtbCc6ICgnPT0nLCAnYmFyL3Rlc3QtcmVm
Lmh0bWwnKX0pCiAKIAogY2xhc3MgTW9ja1dpbkZpbGVTeXN0ZW0ob2JqZWN0KToK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117530</attachid>
            <date>2011-12-01 17:22:44 -0800</date>
            <delta_ts>2011-12-01 17:40:49 -0800</delta_ts>
            <desc>Addressed the comments and updated for ToT</desc>
            <filename>bug-66837-20111201172243.patch</filename>
            <type>text/plain</type>
            <size>21185</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEwMTcyNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQ2IEBACisyMDExLTEyLTAxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIFBhcnNlIHJlZnRlc3QubGlzdCBhbmQgZXh0cmFjdCB0eXBlcyBvZiByZWYgdGVz
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2ODM3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1
cHBvcnQgZm9yIHJlZnRlc3QubGlzdCB0byBiYXNlIHBvcnQuCisKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9maW5kX2ZpbGVzLnB5OgorICAgICAgICAoZmluZCk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3Rf
cnVubmVyLnB5OgorICAgICAgICAoU2luZ2xlVGVzdFJ1bm5lci5fX2luaXRfXyk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAgICAgICAo
UG9ydC5fX2luaXRfXyk6IEluaXRpYWxpemUgc2VsZi5fcmVmdGVzdF9saXN0LiBJdCdzIGEgZGlj
dGlvbmFyeSBtYXBwaW5nIGZyb20gYSB0ZXN0IGRpcmVjdG9yeQorICAgICAgICB0byBhIGRpY3Rp
b25hcnkgb2Yge3Rlc3QgcGF0aDogKCI9PSIgb3IgIiE9IiwgcmVmZXJlbmNlIGZpbGUgcGF0aCl9
CisgICAgICAgIChQb3J0Ll9nZXRfcmVmdGVzdF9saXN0KTogQWRkZWQ7IGNhbGxzIHRlc3RfZmls
ZS5wYXJzZV9yZWZ0ZXN0X2xpc3QgdG8gZmlsbCBzZWxmLl9yZWZ0ZXN0X2xpc3QuCisgICAgICAg
IChQb3J0Ll9yZWZlcmVuY2VfZmlsZV9mb3IpOiBBZGRlZDsgb2J0YWlucyB0aGUgcmVmZXJlbmNl
IGZpbGUgbmFtZSBnaXZlbiBhIHRlc3QgbmFtZS4KKyAgICAgICAgKFBvcnQuaXNfcmVmdGVzdCk6
IEFkZGVkOyBDYWxscyBfcmVmZXJlbmNlX2ZpbGVfZm9yLgorICAgICAgICAoUG9ydC5yZWZ0ZXN0
X2V4cGVjdGVkX2ZpbGVuYW1lKTogQ2FsbHMgX3JlZmVyZW5jZV9maWxlX2Zvci4KKyAgICAgICAg
KFBvcnQucmVmdGVzdF9leHBlY3RlZF9taXNtYXRjaF9maWxlbmFtZSk6IERpdHRvLgorICAgICAg
ICAoUG9ydC5maW5kX3Rlc3RfZmlsZXMpOgorICAgICAgICAoaXNfcmVmZXJlbmNlX2h0bWxfZmls
ZSk6IFRyZWF0IGFueSBmaWxlIHRoYXQgc3RhcnRzIHdpdGggcmVmLSBvciBub3RyZWYtIG9yIGVu
ZHMgd2l0aAorICAgICAgICAtZXhwZWN0ZWQsIC1leHBlY3RlZC1taXNtYWNoLCAtcmVmLCBvciAt
bm90cmVmIGFzIGEgcmVmZXJlbmNlIGZpbGUuCisgICAgICAgIChfaXNfdGVzdF9maWxlKToKKyAg
ICAgICAgKF9wYXJzZV9yZWZ0ZXN0X2xpc3QpOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHk6CisgICAgICAgIChQb3J0
VGVzdC50ZXN0X2lzX3Rlc3RfZmlsZSk6CisgICAgICAgIChQb3J0VGVzdC50ZXN0X3BhcnNlX3Jl
ZnRlc3RfbGlzdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9kcnlydW4ucHk6CisgICAgICAgIChEcnlydW5Ecml2ZXIucnVuX3Rlc3QpOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weToKKyAgICAgICAgKHVu
aXRfdGVzdF9maWxlc3lzdGVtLmFkZF90ZXN0X2ZpbGUpOgorICAgICAgICAodW5pdF90ZXN0X2Zp
bGVzeXN0ZW0uYWRkX2ZpbGUpOgorICAgICAgICAodW5pdF90ZXN0X2ZpbGVzeXN0ZW0pOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50
ZWdyYXRpb250ZXN0LnB5OgorICAgICAgICAoZ2V0X3Rlc3RzX3J1bi5SZWNvcmRpbmdUZXN0RHJp
dmVyLnJ1bl90ZXN0KToKKyAgICAgICAgKE1haW5UZXN0LnRlc3RfdW5leHBlY3RlZF9mYWlsdXJl
cyk6CisgICAgICAgIChNYWluVGVzdC50ZXN0X21pc3NpbmdfYW5kX3VuZXhwZWN0ZWRfcmVzdWx0
cyk6CisgICAgICAgIChFbmRUb0VuZFRlc3QudGVzdF9lbmRfdG9fZW5kKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rl
c3RzLnB5OgorICAgICAgICAoUmViYXNlbGluZXIuX2NvbXBpbGVfcmViYXNlbGluaW5nX3Rlc3Rz
KToKKwogMjAxMS0xMi0wMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEwMTcxMS4KSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2ZpbmRfZmlsZXMucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vZmluZF9maWxlcy5weQkocmV2aXNpb24gMTAx
NzI1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vZmluZF9maWxlcy5weQkod29y
a2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNiBAQCBkZWYgZmluZChmaWxlc3lzdGVtLCBiYXNlX2Rp
ciwgcGF0aHM9Tm9uCiAgICAgICAgICAgZXZlcnl0aGluZyB1bmRlciB0aGUgYmFzZV9kaXIuCiAg
ICAgIiIiCiAKLSAgICBnbG9iYWwgX3NraXBwZWRfZGlyZWN0b3JpZXMKICAgICBwYXRocyA9IHBh
dGhzIG9yIFsnKiddCiAgICAgc2tpcHBlZF9kaXJlY3RvcmllcyA9IHNraXBwZWRfZGlyZWN0b3Jp
ZXMgb3Igc2V0KFsnLnN2bicsICdfc3ZuJ10pCiAgICAgcmV0dXJuIF9ub3JtYWxpemVkX2ZpbmQo
ZmlsZXN5c3RlbSwgX25vcm1hbGl6ZShmaWxlc3lzdGVtLCBiYXNlX2RpciwgcGF0aHMpLCBza2lw
cGVkX2RpcmVjdG9yaWVzLCBmaWxlX2ZpbHRlcikKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRf
dGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CShyZXZpc2lvbiAxMDE3MjUpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVz
dC5weQkod29ya2luZyBjb3B5KQpAQCAtMzYsOCArMzYsOCBAQCBmcm9tIF9fZnV0dXJlX18gaW1w
b3J0IHdpdGhfc3RhdGVtZW50CiBpbXBvcnQgY29kZWNzCiBpbXBvcnQgaXRlcnRvb2xzCiBpbXBv
cnQgbG9nZ2luZwotaW1wb3J0IG9zCiBpbXBvcnQgUXVldWUKK2ltcG9ydCByZQogaW1wb3J0IHN5
cwogaW1wb3J0IHRocmVhZAogaW1wb3J0IHRpbWUKQEAgLTE2Niw3ICsxNjYsOSBAQCBkZWYgZ2V0
X3Rlc3RzX3J1bihleHRyYV9hcmdzPU5vbmUsIHRlc3RzCiAgICAgICAgICAgICAjIEluIGNhc2Ug
b2YgcmVmdGVzdCwgb25lIHRlc3QgY2FsbHMgdGhlIGRyaXZlcidzIHJ1bl90ZXN0KCkgdHdpY2Uu
CiAgICAgICAgICAgICAjIFdlIHNob3VsZCBub3QgYWRkIGEgcmVmZXJlbmNlIGh0bWwgdXNlZCBi
eSByZWZ0ZXN0cyB0byB0ZXN0cyB1bmxlc3MgaW5jbHVkZV9yZWZlcmVuY2VfaHRtbCBwYXJhbWV0
ZXIKICAgICAgICAgICAgICMgaXMgZXhwbGljaXRseSBnaXZlbi4KLSAgICAgICAgICAgIGlmIGlu
Y2x1ZGVfcmVmZXJlbmNlX2h0bWwgb3Igbm90IGlzX3JlZmVyZW5jZV9odG1sX2ZpbGUodGVzdF9p
bnB1dC50ZXN0X25hbWUpOgorICAgICAgICAgICAgZmlsZXN5c3RlbSA9IHNlbGYuX3BvcnQuaG9z
dC5maWxlc3lzdGVtCisgICAgICAgICAgICBkaXJuYW1lLCBmaWxlbmFtZSA9IGZpbGVzeXN0ZW0u
c3BsaXQodGVzdF9uYW1lKQorICAgICAgICAgICAgaWYgaW5jbHVkZV9yZWZlcmVuY2VfaHRtbCBv
ciBub3QgaXNfcmVmZXJlbmNlX2h0bWxfZmlsZShmaWxlc3lzdGVtLCBkaXJuYW1lLCBmaWxlbmFt
ZSk6CiAgICAgICAgICAgICAgICAgc2VsZi5fY3VycmVudF90ZXN0X2JhdGNoLmFwcGVuZCh0ZXN0
X25hbWUpCiAgICAgICAgICAgICByZXR1cm4gVGVzdERyaXZlci5ydW5fdGVzdChzZWxmLCB0ZXN0
X2lucHV0KQogCkBAIC00MjYsNyArNDI4LDcgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogCiAgICAgICAgICMgVXBkYXRlIHRoaXMgbWFnaWMgbnVtYmVyIGlmIHlvdSBhZGQg
YW4gdW5leHBlY3RlZCB0ZXN0IHRvIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LnRlc3QKICAg
ICAgICAgIyBGSVhNRTogSXQncyBuaWNlIHRvIGhhdmUgYSByb3V0aW5lIGluIHBvcnQvdGVzdC5w
eSB0aGF0IHJldHVybnMgdGhpcyBudW1iZXIuCi0gICAgICAgIHVuZXhwZWN0ZWRfdGVzdHNfY291
bnQgPSA3CisgICAgICAgIHVuZXhwZWN0ZWRfdGVzdHNfY291bnQgPSA4CiAKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChyZXMsIHVuZXhwZWN0ZWRfdGVzdHNfY291bnQpCiAgICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2Uob3V0LmVtcHR5KCkpCkBAIC00NDgsOCArNDUwLDIyIEBAIGNsYXNzIE1haW5U
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgZXhwZWN0ZWRfdG9rZW4gPSAnInVuZXhw
ZWN0ZWQiOnsidGV4dC1pbWFnZS1jaGVja3N1bS5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyIsImFj
dHVhbCI6IlRFWFQifSwibWlzc2luZ190ZXh0Lmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIiwiaXNf
bWlzc2luZ190ZXh0Ijp0cnVlLCJhY3R1YWwiOiJNSVNTSU5HIn0nCiAgICAgICAgIGpzb25fc3Ry
aW5nID0gZnMucmVhZF90ZXh0X2ZpbGUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mdWxsX3Jl
c3VsdHMuanNvbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShqc29uX3N0cmluZy5maW5kKGV4
cGVjdGVkX3Rva2VuKSAhPSAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGpzb25fc3RyaW5n
LmZpbmQoJyJudW1fcmVncmVzc2lvbiI6MScpID09IC0xKQotICAgICAgICBzZWxmLmFzc2VydFRy
dWUoanNvbl9zdHJpbmcuZmluZCgnIm51bV9mbGFreSI6MScpID09IC0xKQorICAgICAgICBzZWxm
LmFzc2VydFRydWUoanNvbl9zdHJpbmcuZmluZCgnIm51bV9yZWdyZXNzaW9ucyI6MScpICE9IC0x
KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoanNvbl9zdHJpbmcuZmluZCgnIm51bV9mbGFreSI6
MCcpICE9IC0xKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoanNvbl9zdHJpbmcuZmluZCgnIm51
bV9taXNzaW5nIjoxJykgIT0gLTEpCisKKyAgICBkZWYgdGVzdF9taXNzaW5nX2FuZF91bmV4cGVj
dGVkX3Jlc3VsdHMoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHdlIHVwZGF0ZSBleHBlY3Rh
dGlvbnMgaW4gcGxhY2UuIElmIHRoZSBleHBlY3RhdGlvbgorICAgICAgICAjIGlzIG1pc3Npbmcs
IHVwZGF0ZSB0aGUgZXhwZWN0ZWQgZ2VuZXJpYyBsb2NhdGlvbi4KKyAgICAgICAgZnMgPSB1bml0
X3Rlc3RfZmlsZXN5c3RlbSgpCisgICAgICAgIHJlcywgb3V0LCBlcnIsIF8gPSBsb2dnaW5nX3J1
bihbJy0tbm8tc2hvdy1yZXN1bHRzJywgJ3JlZnRlc3RzL2Zvby8nXSwgdGVzdHNfaW5jbHVkZWQ9
VHJ1ZSwgZmlsZXN5c3RlbT1mcywgcmVjb3JkX3Jlc3VsdHM9VHJ1ZSkKKyAgICAgICAgZmlsZV9s
aXN0ID0gZnMud3JpdHRlbl9maWxlcy5rZXlzKCkKKyAgICAgICAgZmlsZV9saXN0LnJlbW92ZSgn
L3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3RzX3J1bjAudHh0JykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMocmVzLCAxKQorICAgICAgICBqc29uX3N0cmluZyA9IGZzLnJlYWRfdGV4dF9m
aWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZnVsbF9yZXN1bHRzLmpzb24nKQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUoanNvbl9zdHJpbmcuZmluZCgnInVubGlzdGVkdGVzdC5odG1sIjp7
ImV4cGVjdGVkIjoiUEFTUyIsImlzX21pc3NpbmdfdGV4dCI6dHJ1ZSwiYWN0dWFsIjoiTUlTU0lO
RyIsImlzX21pc3NpbmdfaW1hZ2UiOnRydWV9JykgIT0gLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShqc29uX3N0cmluZy5maW5kKCcibnVtX3JlZ3Jlc3Npb25zIjoxJykgIT0gLTEpCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShqc29uX3N0cmluZy5maW5kKCcibnVtX2ZsYWt5IjowJykgIT0g
LTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShqc29uX3N0cmluZy5maW5kKCcibnVtX21pc3Np
bmciOjEnKSAhPSAtMSkKIAogICAgIGRlZiB0ZXN0X21pc3NpbmdfYW5kX3VuZXhwZWN0ZWRfcmVz
dWx0c193aXRoX2N1c3RvbV9leGl0X2NvZGUoc2VsZik6CkBAIC03NjIsOCArNzc4LDExIEBAIGNs
YXNzIEVuZFRvRW5kVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGZzID0gdW5pdF90
ZXN0X2ZpbGVzeXN0ZW0oKQogICAgICAgICByZXMsIG91dCwgZXJyLCB1c2VyID0gbG9nZ2luZ19y
dW4ocmVjb3JkX3Jlc3VsdHM9VHJ1ZSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmlsZXN5c3RlbT1m
cykKIAotICAgICAgICAjIFNldmVuIHRlc3RzIHNob3VsZCBmYWlsLCBzbyB0aGUgcmV0dXJuIGNv
ZGUgc2hvdWxkIGJlIDcuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlcywgNykKKyAgICAg
ICAgIyBVcGRhdGUgdGhpcyBtYWdpYyBudW1iZXIgaWYgeW91IGFkZCBhbiB1bmV4cGVjdGVkIHRl
c3QgdG8gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQudGVzdAorICAgICAgICAjIEZJWE1FOiBJ
dCdzIG5pY2UgdG8gaGF2ZSBhIHJvdXRpbmUgaW4gcG9ydC90ZXN0LnB5IHRoYXQgcmV0dXJucyB0
aGlzIG51bWJlci4KKyAgICAgICAgdW5leHBlY3RlZF90ZXN0c19jb3VudCA9IDgKKworICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyhyZXMsIHVuZXhwZWN0ZWRfdGVzdHNfY291bnQpCiAgICAgICAg
IHJlc3VsdHMgPSBzZWxmLnBhcnNlX2Z1bGxfcmVzdWx0cyhmcy5maWxlc1snL3RtcC9sYXlvdXQt
dGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJ10pCiAKICAgICAgICAgIyBDaGVjayB0byBl
bnN1cmUgd2UncmUgcGFzc2luZyBiYWNrIGltYWdlIGRpZmYgJWFnZSBjb3JyZWN0bHkuCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVf
dGVzdF9ydW5uZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CShyZXZpc2lvbiAxMDE3
MjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9z
aW5nbGVfdGVzdF9ydW5uZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTY4LDE3ICs2OCwxNSBAQCBj
bGFzcyBTaW5nbGVUZXN0UnVubmVyOgogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgcmVm
dGVzdF9leHBlY3RlZF9maWxlbmFtZSA9IHBvcnQucmVmdGVzdF9leHBlY3RlZF9maWxlbmFtZShz
ZWxmLl90ZXN0X25hbWUpCi0gICAgICAgIGlmIGZzLmV4aXN0cyhyZWZ0ZXN0X2V4cGVjdGVkX2Zp
bGVuYW1lKToKKyAgICAgICAgaWYgcmVmdGVzdF9leHBlY3RlZF9maWxlbmFtZSBhbmQgZnMuZXhp
c3RzKHJlZnRlc3RfZXhwZWN0ZWRfZmlsZW5hbWUpOgogICAgICAgICAgICAgc2VsZi5faXNfcmVm
dGVzdCA9IFRydWUKICAgICAgICAgICAgIHNlbGYuX3JlZmVyZW5jZV9maWxlbmFtZSA9IHJlZnRl
c3RfZXhwZWN0ZWRfZmlsZW5hbWUKIAogICAgICAgICByZWZ0ZXN0X2V4cGVjdGVkX21pc21hdGNo
X2ZpbGVuYW1lID0gcG9ydC5yZWZ0ZXN0X2V4cGVjdGVkX21pc21hdGNoX2ZpbGVuYW1lKHNlbGYu
X3Rlc3RfbmFtZSkKLSAgICAgICAgaWYgZnMuZXhpc3RzKHJlZnRlc3RfZXhwZWN0ZWRfbWlzbWF0
Y2hfZmlsZW5hbWUpOgorICAgICAgICBpZiByZWZ0ZXN0X2V4cGVjdGVkX21pc21hdGNoX2ZpbGVu
YW1lIGFuZCBmcy5leGlzdHMocmVmdGVzdF9leHBlY3RlZF9taXNtYXRjaF9maWxlbmFtZSk6CiAg
ICAgICAgICAgICBpZiBzZWxmLl9pc19yZWZ0ZXN0OgotICAgICAgICAgICAgICAgIF9sb2cuZXJy
b3IoJ0l0IGlzIG5vdCBhbGxvd2VkIHRoYXQgb25lIHRlc3QgZmlsZSBoYXMgYm90aCcKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICcgZXhwZWN0ZWQuaHRtbCBmaWxlIGFuZCBleHBlY3RlZC1t
aXNtYXRjaC5odG1sIGZpbGUnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnIGF0IHRoZSBz
YW1lIHRpbWUuIFBsZWFzZSByZW1vdmUgZWl0aGVyICVzIG9yICVzLicsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWZ0ZXN0X2V4cGVjdGVkX2ZpbGVuYW1lLCByZWZ0ZXN0X2V4cGVjdGVk
X21pc21hdGNoX2ZpbGVuYW1lKQorICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ09uZSB0ZXN0
IGZpbGUgY2Fubm90IGhhdmUgYm90aCBtYXRjaCBhbmQgbWlzbWF0Y2ggcmVmZXJlbmNlcy4gUGxl
YXNlIHJlbW92ZSBlaXRoZXIgJXMgb3IgJXMnLAorICAgICAgICAgICAgICAgICAgICByZWZ0ZXN0
X2V4cGVjdGVkX2ZpbGVuYW1lLCByZWZ0ZXN0X2V4cGVjdGVkX21pc21hdGNoX2ZpbGVuYW1lKQog
ICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLl9pc19yZWZ0ZXN0ID0gVHJ1
ZQogICAgICAgICAgICAgICAgIHNlbGYuX2lzX21pc21hdGNoX3JlZnRlc3QgPSBUcnVlCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5
CShyZXZpc2lvbiAxMDE3MjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Jhc2UucHkJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAgaW1wb3J0IGNn
aQogaW1wb3J0IGRpZmZsaWIKIGltcG9ydCBlcnJubwogaW1wb3J0IG9zCitpbXBvcnQgcmUKIAog
ZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCiAKQEAgLTE0Nyw2
ICsxNDgsNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAKICAgICAgICAgc2VsZi5zZXRfb3B0aW9u
X2RlZmF1bHQoJ2NvbmZpZ3VyYXRpb24nLCBzZWxmLmRlZmF1bHRfY29uZmlndXJhdGlvbigpKQog
ICAgICAgICBzZWxmLl90ZXN0X2NvbmZpZ3VyYXRpb24gPSBOb25lCisgICAgICAgIHNlbGYuX3Jl
ZnRlc3RfbGlzdCA9IHt9CiAgICAgICAgIHNlbGYuX211bHRpcHJvY2Vzc2luZ19pc19hdmFpbGFi
bGUgPSAobXVsdGlwcm9jZXNzaW5nIGlzIG5vdCBOb25lKQogICAgICAgICBzZWxmLl9yZXN1bHRz
X2RpcmVjdG9yeSA9IE5vbmUKIApAQCAtNDI0LDEzICs0MjYsNDAgQEAgY2xhc3MgUG9ydChvYmpl
Y3QpOgogICAgICAgICB0ZXh0ID0gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX2JpbmFyeV9maWxlKGJh
c2VsaW5lX3BhdGgpCiAgICAgICAgIHJldHVybiB0ZXh0LnJlcGxhY2UoIlxyXG4iLCAiXG4iKQog
CisgICAgZGVmIF9nZXRfcmVmdGVzdF9saXN0KHNlbGYsIHRlc3RfbmFtZSk6CisgICAgICAgIGRp
cm5hbWUgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCksIHNl
bGYuX2ZpbGVzeXN0ZW0uZGlybmFtZSh0ZXN0X25hbWUpKQorICAgICAgICBpZiBkaXJuYW1lIG5v
dCBpbiBzZWxmLl9yZWZ0ZXN0X2xpc3Q6CisgICAgICAgICAgICBzZWxmLl9yZWZ0ZXN0X2xpc3Rb
ZGlybmFtZV0gPSBfcGFyc2VfcmVmdGVzdF9saXN0KHNlbGYuX2ZpbGVzeXN0ZW0sIGRpcm5hbWUp
CisgICAgICAgIHJldHVybiBzZWxmLl9yZWZ0ZXN0X2xpc3RbZGlybmFtZV0KKworICAgIGRlZiBf
cmVmZXJlbmNlX2ZpbGVfZm9yKHNlbGYsIHRlc3RfbmFtZSwgZXhwZWN0YXRpb24pOgorICAgICAg
ICByZWZ0ZXN0X2xpc3QgPSBzZWxmLl9nZXRfcmVmdGVzdF9saXN0KHRlc3RfbmFtZSkKKyAgICAg
ICAgaWYgbm90IHJlZnRlc3RfbGlzdDoKKyAgICAgICAgICAgIGlmIGV4cGVjdGF0aW9uID09ICc9
PSc6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXhwZWN0ZWRfZmlsZW5hbWUodGVzdF9u
YW1lLCAnLmh0bWwnKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4g
c2VsZi5leHBlY3RlZF9maWxlbmFtZSh0ZXN0X25hbWUsICctbWlzbWF0Y2guaHRtbCcpCisKKyAg
ICAgICAgZmlsZW5hbWUgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5sYXlvdXRfdGVzdHNf
ZGlyKCksIHRlc3RfbmFtZSkKKyAgICAgICAgaWYgZmlsZW5hbWUgbm90IGluIHJlZnRlc3RfbGlz
dCBvciByZWZ0ZXN0X2xpc3RbZmlsZW5hbWVdWzBdICE9IGV4cGVjdGF0aW9uOgorICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHJlZnRlc3RfbGlzdFtmaWxlbmFtZV1bMV0K
KworICAgIGRlZiBpc19yZWZ0ZXN0KHNlbGYsIHRlc3RfbmFtZSk6CisgICAgICAgIHJlZnRlc3Rf
bGlzdCA9IHNlbGYuX2dldF9yZWZ0ZXN0X2xpc3QodGVzdF9uYW1lKQorICAgICAgICBpZiBub3Qg
cmVmdGVzdF9saXN0OgorICAgICAgICAgICAgaGFzX2V4cGVjdGVkID0gc2VsZi5fZmlsZXN5c3Rl
bS5leGlzdHMoc2VsZi5leHBlY3RlZF9maWxlbmFtZSh0ZXN0X25hbWUsICcuaHRtbCcpKQorICAg
ICAgICAgICAgcmV0dXJuIGhhc19leHBlY3RlZCBvciBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhz
ZWxmLmV4cGVjdGVkX2ZpbGVuYW1lKHRlc3RfbmFtZSwgJy1taXNtYXRjaC5odG1sJykpCisgICAg
ICAgIGZpbGVuYW1lID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2Rp
cigpLCB0ZXN0X25hbWUpCisgICAgICAgIHJldHVybiBmaWxlbmFtZSBpbiByZWZ0ZXN0X2xpc3QK
KwogICAgIGRlZiByZWZ0ZXN0X2V4cGVjdGVkX2ZpbGVuYW1lKHNlbGYsIHRlc3RfbmFtZSk6CiAg
ICAgICAgICIiIlJldHVybiB0aGUgZmlsZW5hbWUgb2YgcmVmZXJlbmNlIHdlIGV4cGVjdCB0aGUg
dGVzdCBtYXRjaGVzLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5leHBlY3RlZF9maWxlbmFtZSh0
ZXN0X25hbWUsICcuaHRtbCcpCisgICAgICAgIHJldHVybiBzZWxmLl9yZWZlcmVuY2VfZmlsZV9m
b3IodGVzdF9uYW1lLCAnPT0nKQogCiAgICAgZGVmIHJlZnRlc3RfZXhwZWN0ZWRfbWlzbWF0Y2hf
ZmlsZW5hbWUoc2VsZiwgdGVzdF9uYW1lKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBmaWxlbmFt
ZSBvZiByZWZlcmVuY2Ugd2UgZG9uJ3QgZXhwZWN0IHRoZSB0ZXN0IG1hdGNoZXMuIiIiCi0gICAg
ICAgIHJldHVybiBzZWxmLmV4cGVjdGVkX2ZpbGVuYW1lKHRlc3RfbmFtZSwgJy1taXNtYXRjaC5o
dG1sJykKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlZmVyZW5jZV9maWxlX2Zvcih0ZXN0X25hbWUs
ICchPScpCiAKICAgICBkZWYgdGVzdF90b191cmkoc2VsZiwgdGVzdF9uYW1lKToKICAgICAgICAg
IiIiQ29udmVydCBhIHRlc3QgbmFtZSB0byBhIFVSSS4iIiIKQEAgLTQ2Niw3ICs0OTUsNyBAQCBj
bGFzcyBQb3J0KG9iamVjdCk6CiAKICAgICBkZWYgZmluZF90ZXN0X2ZpbGVzKHNlbGYsIHBhdGhz
KToKICAgICAgICAgIyBXaGVuIGNvbGxlY3RpbmcgdGVzdCBjYXNlcywgc2tpcCB0aGVzZSBkaXJl
Y3RvcmllcwotICAgICAgICBza2lwcGVkX2RpcmVjdG9yaWVzID0gc2V0KFsnLnN2bicsICdfc3Zu
JywgJ3Jlc291cmNlcycsICdzY3JpcHQtdGVzdHMnXSkKKyAgICAgICAgc2tpcHBlZF9kaXJlY3Rv
cmllcyA9IHNldChbJy5zdm4nLCAnX3N2bicsICdyZXNvdXJjZXMnLCAnc2NyaXB0LXRlc3RzJywg
J3JlZmVyZW5jZScsICdyZWZ0ZXN0J10pCiAgICAgICAgIHJldHVybiBmaW5kX2ZpbGVzLmZpbmQo
c2VsZi5maWxlc3lzdGVtLCBzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgcGF0aHMsIHNraXBwZWRf
ZGlyZWN0b3JpZXMsIF9pc190ZXN0X2ZpbGUpCiAKICAgICBkZWYgdGVzdF9kaXJzKHNlbGYpOgpA
QCAtMTAwMiwxMiArMTAzMSwxNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAKIAogIyBXaGVuIGNv
bGxlY3RpbmcgdGVzdCBjYXNlcywgd2UgaW5jbHVkZSBhbnkgZmlsZSB3aXRoIHRoZXNlIGV4dGVu
c2lvbnMuCi1fc3VwcG9ydGVkX2ZpbGVfZXh0ZW5zaW9ucyA9IHNldChbJy5odG1sJywgJy5zaHRt
bCcsICcueG1sJywgJy54aHRtbCcsICcucGwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJy5odG0nLCAnLnBocCcsICcuc3ZnJywgJy5taHQnXSkKK19zdXBwb3J0ZWRfZmlsZV9l
eHRlbnNpb25zID0gc2V0KFsnLmh0bWwnLCAnLnNodG1sJywgJy54bWwnLCAnLnhodG1sJywgJy5w
bCcsICcuaHRtJywgJy5waHAnLCAnLnN2ZycsICcubWh0J10pCiAKIAotZGVmIGlzX3JlZmVyZW5j
ZV9odG1sX2ZpbGUoZmlsZW5hbWUpOgotICAgIHJldHVybiBmaWxlbmFtZS5lbmRzd2l0aCgnLWV4
cGVjdGVkLmh0bWwnKSBvciBmaWxlbmFtZS5lbmRzd2l0aCgnLWV4cGVjdGVkLW1pc21hdGNoLmh0
bWwnKQorZGVmIGlzX3JlZmVyZW5jZV9odG1sX2ZpbGUoZmlsZXN5c3RlbSwgZGlybmFtZSwgZmls
ZW5hbWUpOgorICAgIGlmIGZpbGVuYW1lLnN0YXJ0c3dpdGgoJ3JlZi0nKSBvciBmaWxlbmFtZS5l
bmRzd2l0aCgnbm90cmVmLScpOgorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIGZpbGVuYW1lX3dp
aG91dF9leHQsIHVudXNlZCA9IGZpbGVzeXN0ZW0uc3BsaXRleHQoZmlsZW5hbWUpCisgICAgZm9y
IHN1ZmZpeCBpbiBbJy1leHBlY3RlZCcsICctZXhwZWN0ZWQtbWlzbWF0Y2gnLCAnLXJlZicsICct
bm90cmVmJ106CisgICAgICAgIGlmIGZpbGVuYW1lX3dpaG91dF9leHQuZW5kc3dpdGgoc3VmZml4
KToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgcmV0dXJuIEZhbHNlCiAKIAogZGVmIF9o
YXNfc3VwcG9ydGVkX2V4dGVuc2lvbihmaWxlc3lzdGVtLCBmaWxlbmFtZSk6CkBAIC0xMDE3LDQg
KzEwNTEsMjEgQEAgZGVmIF9oYXNfc3VwcG9ydGVkX2V4dGVuc2lvbihmaWxlc3lzdGVtLAogCiAK
IGRlZiBfaXNfdGVzdF9maWxlKGZpbGVzeXN0ZW0sIGRpcm5hbWUsIGZpbGVuYW1lKToKLSAgICBy
ZXR1cm4gX2hhc19zdXBwb3J0ZWRfZXh0ZW5zaW9uKGZpbGVzeXN0ZW0sIGZpbGVuYW1lKSBhbmQg
bm90IGlzX3JlZmVyZW5jZV9odG1sX2ZpbGUoZmlsZW5hbWUpCisgICAgcmV0dXJuIF9oYXNfc3Vw
cG9ydGVkX2V4dGVuc2lvbihmaWxlc3lzdGVtLCBmaWxlbmFtZSkgYW5kIG5vdCBpc19yZWZlcmVu
Y2VfaHRtbF9maWxlKGZpbGVzeXN0ZW0sIGRpcm5hbWUsIGZpbGVuYW1lKQorCisKK2RlZiBfcGFy
c2VfcmVmdGVzdF9saXN0KGZpbGVzeXN0ZW0sIHRlc3RfZGlycGF0aCk6CisgICAgcmVmdGVzdF9s
aXN0X3BhdGggPSBmaWxlc3lzdGVtLmpvaW4odGVzdF9kaXJwYXRoLCAncmVmdGVzdC5saXN0JykK
KyAgICBpZiBub3QgZmlsZXN5c3RlbS5pc2ZpbGUocmVmdGVzdF9saXN0X3BhdGgpOgorICAgICAg
ICByZXR1cm4gTm9uZQorICAgIHJlZnRlc3RfbGlzdF9maWxlID0gZmlsZXN5c3RlbS5yZWFkX3Rl
eHRfZmlsZShyZWZ0ZXN0X2xpc3RfcGF0aCkKKworICAgIHBhcnNlZF9saXN0ID0gZGljdCgpCisg
ICAgZm9yIGxpbmUgaW4gcmVmdGVzdF9saXN0X2ZpbGUuc3BsaXQoJ1xuJyk6CisgICAgICAgIGxp
bmUgPSByZS5zdWIoJyMuKyQnLCAnJywgbGluZSkKKyAgICAgICAgc3BsaXRfbGluZSA9IGxpbmUu
c3BsaXQoKQorICAgICAgICBpZiBsZW4oc3BsaXRfbGluZSkgPCAzOgorICAgICAgICAgICAgY29u
dGludWUKKyAgICAgICAgZXhwZWN0YXRpb25fdHlwZSwgdGVzdF9maWxlLCByZWZfZmlsZSA9IHNw
bGl0X2xpbmUKKyAgICAgICAgcGFyc2VkX2xpc3RbZmlsZXN5c3RlbS5qb2luKHRlc3RfZGlycGF0
aCwgdGVzdF9maWxlKV0gPSAoZXhwZWN0YXRpb25fdHlwZSwgZmlsZXN5c3RlbS5qb2luKHRlc3Rf
ZGlycGF0aCwgcmVmX2ZpbGUpKQorICAgIHJldHVybiBwYXJzZWRfbGlzdApJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91
bml0dGVzdC5weQkocmV2aXNpb24gMTAxNzI1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC00Myw2
ICs0Myw3IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW8KIAogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgUG9ydCwgRHJpdmVyLCBEcml2ZXJP
dXRwdXQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuYmFzZSBpbXBvcnQgX2lzX3Rl
c3RfZmlsZQorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5iYXNlIGltcG9ydCBfcGFy
c2VfcmVmdGVzdF9saXN0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LnRlc3QgaW1w
b3J0IFRlc3RQb3J0CiAKIGltcG9ydCBjb25maWcKQEAgLTMwNiwxMCArMzA3LDI5IEBAIGNsYXNz
IFBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgZmlsZXN5c3RlbSA9IE1vY2tG
aWxlU3lzdGVtKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKF9pc190ZXN0X2ZpbGUoZmlsZXN5
c3RlbSwgJycsICdmb28uaHRtbCcpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoX2lzX3Rlc3Rf
ZmlsZShmaWxlc3lzdGVtLCAnJywgJ2Zvby5zaHRtbCcpKQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUoX2lzX3Rlc3RfZmlsZShmaWxlc3lzdGVtLCAnJywgJ3Rlc3QtcmVmLXRlc3QuaHRtbCcpKQog
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKF9pc190ZXN0X2ZpbGUoZmlsZXN5c3RlbSwgJycsICdm
b28ucG5nJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoX2lzX3Rlc3RfZmlsZShmaWxlc3lz
dGVtLCAnJywgJ2Zvby1leHBlY3RlZC5odG1sJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
X2lzX3Rlc3RfZmlsZShmaWxlc3lzdGVtLCAnJywgJ2Zvby1leHBlY3RlZC1taXNtYXRjaC5odG1s
JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoX2lzX3Rlc3RfZmlsZShmaWxlc3lzdGVtLCAn
JywgJ2Zvby1yZWYuaHRtbCcpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKF9pc190ZXN0X2Zp
bGUoZmlsZXN5c3RlbSwgJycsICdmb28tbm90cmVmLmh0bWwnKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZShfaXNfdGVzdF9maWxlKGZpbGVzeXN0ZW0sICcnLCAnZm9vLW5vdHJlZi54aHQnKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShfaXNfdGVzdF9maWxlKGZpbGVzeXN0ZW0sICcnLCAn
Zm9vLXJlZi54aHRtbCcpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKF9pc190ZXN0X2ZpbGUo
ZmlsZXN5c3RlbSwgJycsICdyZWYtZm9vLmh0bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShfaXNfdGVzdF9maWxlKGZpbGVzeXN0ZW0sICcnLCAnbm90cmVmLWZvby54aHInKSkKIAorICAg
IGRlZiB0ZXN0X3BhcnNlX3JlZnRlc3RfbGlzdChzZWxmKToKKyAgICAgICAgcG9ydCA9IFRlc3RQ
b3J0KCkKKyAgICAgICAgcG9ydC5ob3N0LmZpbGVzeXN0ZW0uZmlsZXNbJ2Jhci9yZWZ0ZXN0Lmxp
c3QnXSA9ICJcbiIuam9pbihbIj09IHRlc3QuaHRtbCB0ZXN0LXJlZi5odG1sIiwKKyAgICAgICAg
IiIsCisgICAgICAgICIjIHNvbWUgY29tbWVudCIsCisgICAgICAgICIhPSB0ZXN0LTIuaHRtbCB0
ZXN0LW5vdHJlZi5odG1sICMgbW9yZSBjb21tZW50cyIsCisgICAgICAgICI9PSB0ZXN0LTMuaHRt
bCB0ZXN0LXJlZi5odG1sIl0pCisKKyAgICAgICAgcmVmdGVzdF9saXN0ID0gX3BhcnNlX3JlZnRl
c3RfbGlzdChwb3J0Lmhvc3QuZmlsZXN5c3RlbSwgJ2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocmVmdGVzdF9saXN0LCB7J2Jhci90ZXN0Lmh0bWwnOiAoJz09JywgJ2Jhci90ZXN0LXJl
Zi5odG1sJyksCisgICAgICAgICAgICAnYmFyL3Rlc3QtMi5odG1sJzogKCchPScsICdiYXIvdGVz
dC1ub3RyZWYuaHRtbCcpLAorICAgICAgICAgICAgJ2Jhci90ZXN0LTMuaHRtbCc6ICgnPT0nLCAn
YmFyL3Rlc3QtcmVmLmh0bWwnKX0pCiAKIGNsYXNzIFZpcnR1YWxUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAiIiJUZXN0cyB0aGF0IHZhcmlvdXMgbWV0aG9kcyBleHBlY3RlZCB0byBiZSB2
aXJ0dWFsIGFyZS4iIiIKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvZHJ5cnVuLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5CShyZXZpc2lvbiAxMDE3MjUpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyeXJ1bi5weQkod29ya2luZyBjb3B5KQpA
QCAtMTEyLDkgKzExMiw3IEBAIGNsYXNzIERyeXJ1bkRyaXZlcihEcml2ZXIpOgogICAgIGRlZiBy
dW5fdGVzdChzZWxmLCBkcml2ZXJfaW5wdXQpOgogICAgICAgICBzdGFydF90aW1lID0gdGltZS50
aW1lKCkKICAgICAgICAgZnMgPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtCi0gICAgICAgIGlmIChm
cy5leGlzdHMoc2VsZi5fcG9ydC5yZWZ0ZXN0X2V4cGVjdGVkX2ZpbGVuYW1lKGRyaXZlcl9pbnB1
dC50ZXN0X25hbWUpKSBvcgotICAgICAgICAgICAgZnMuZXhpc3RzKHNlbGYuX3BvcnQucmVmdGVz
dF9leHBlY3RlZF9taXNtYXRjaF9maWxlbmFtZShkcml2ZXJfaW5wdXQudGVzdF9uYW1lKSkgb3IK
LSAgICAgICAgICAgIGRyaXZlcl9pbnB1dC50ZXN0X25hbWUuZW5kc3dpdGgoJy1leHBlY3RlZC5o
dG1sJykpOgorICAgICAgICBpZiAoc2VsZi5fcG9ydC5pc19yZWZ0ZXN0KGRyaXZlcl9pbnB1dC50
ZXN0X25hbWUpIG9yIGRyaXZlcl9pbnB1dC50ZXN0X25hbWUuZW5kc3dpdGgoJy1leHBlY3RlZC5o
dG1sJykpOgogICAgICAgICAgICAgdGV4dCA9ICd0ZXN0LXRleHQnCiAgICAgICAgICAgICBpbWFn
ZSA9ICd0ZXN0LWltYWdlJwogICAgICAgICAgICAgY2hlY2tzdW0gPSAndGVzdC1jaGVja3N1bScK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rl
c3QucHkJKHJldmlzaW9uIDEwMTcyNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvdGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMTg3LDYgKzE4NywxMyBAQCBs
YXllciBhdCAoMCwwKSBzaXplIDgwMHgzNAogICAgIHRlc3RzLmFkZF9yZWZ0ZXN0KCdmYWlsdXJl
cy91bmV4cGVjdGVkL3JlZnRlc3QuaHRtbCcsICdmYWlsdXJlcy91bmV4cGVjdGVkL3JlZnRlc3Qt
ZXhwZWN0ZWQuaHRtbCcsIHNhbWVfaW1hZ2U9RmFsc2UpCiAgICAgdGVzdHMuYWRkX3JlZnRlc3Qo
J2ZhaWx1cmVzL3VuZXhwZWN0ZWQvbWlzbWF0Y2guaHRtbCcsICdmYWlsdXJlcy91bmV4cGVjdGVk
L21pc21hdGNoLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwnLCBzYW1lX2ltYWdlPVRydWUpCiAgICAg
IyBGSVhNRTogQWRkIGEgcmVmdGVzdCB3aGljaCBjcmFzaGVzLgorICAgIHRlc3RzLmFkZCgncmVm
dGVzdHMvZm9vL3Rlc3QuaHRtbCcpCisgICAgdGVzdHMuYWRkKCdyZWZ0ZXN0cy9mb28vdGVzdC1y
ZWYuaHRtbCcpCisKKyAgICAjIFRoZSBmb2xsb3dpbmcgZmlsZXMgc2hvdWxkbid0IGJlIHRyZWF0
ZWQgYXMgcmVmdGVzdHMKKyAgICB0ZXN0cy5hZGRfcmVmdGVzdCgncmVmdGVzdHMvZm9vL3VubGlz
dGVkdGVzdC5odG1sJywgJ3JlZnRlc3RzL2Zvby91bmxpc3RlZHRlc3QtZXhwZWN0ZWQuaHRtbCcs
IHNhbWVfaW1hZ2U9VHJ1ZSkKKyAgICB0ZXN0cy5hZGQoJ3JlZnRlc3RzL2Zvby9yZWZlcmVuY2Uv
YmFyL2NvbW1vbi5odG1sJykKKyAgICB0ZXN0cy5hZGQoJ3JlZnRlc3RzL2Zvby9yZWZ0ZXN0L2Jh
ci9zaGFyZWQuaHRtbCcpCiAKICAgICB0ZXN0cy5hZGQoJ3dlYnNvY2tldC90ZXN0cy9wYXNzZXMv
dGV4dC5odG1sJykKIApAQCAtMjEzLDIzICsyMjAsMjUgQEAgZGVmIHVuaXRfdGVzdF9maWxlc3lz
dGVtKGZpbGVzPU5vbmUpOgogICAgIHRlc3RfbGlzdCA9IHVuaXRfdGVzdF9saXN0KCkKICAgICBm
aWxlcyA9IGZpbGVzIG9yIHt9CiAKLSAgICBkZWYgYWRkX2ZpbGUoZmlsZXMsIHRlc3QsIHN1ZmZp
eCwgY29udGVudHMpOgorICAgIGRlZiBhZGRfdGVzdF9maWxlKGZpbGVzLCB0ZXN0LCBzdWZmaXgs
IGNvbnRlbnRzKToKICAgICAgICAgZGlybmFtZSA9IHRlc3QubmFtZVswOnRlc3QubmFtZS5yZmlu
ZCgnLycpXQogICAgICAgICBiYXNlID0gdGVzdC5iYXNlCi0gICAgICAgIHBhdGggPSBMQVlPVVRf
VEVTVF9ESVIgKyAnLycgKyBkaXJuYW1lICsgJy8nICsgYmFzZSArIHN1ZmZpeAotICAgICAgICBm
aWxlc1twYXRoXSA9IGNvbnRlbnRzCisgICAgICAgIGFkZF9maWxlKGZpbGVzLCBkaXJuYW1lICsg
Jy8nICsgYmFzZSArIHN1ZmZpeCwgY29udGVudHMpCisKKyAgICBkZWYgYWRkX2ZpbGUoZmlsZXMs
IGZpbGVfbmFtZSwgY29udGVudHMpOgorICAgICAgICBmaWxlc1tMQVlPVVRfVEVTVF9ESVIgKyAn
LycgKyBmaWxlX25hbWVdID0gY29udGVudHMKIAogICAgICMgQWRkIGVhY2ggdGVzdCBhbmQgdGhl
IGV4cGVjdGVkIG91dHB1dCwgaWYgYW55LgogICAgIGZvciB0ZXN0IGluIHRlc3RfbGlzdC50ZXN0
cy52YWx1ZXMoKToKLSAgICAgICAgYWRkX2ZpbGUoZmlsZXMsIHRlc3QsICcuaHRtbCcsICcnKQor
ICAgICAgICBhZGRfdGVzdF9maWxlKGZpbGVzLCB0ZXN0LCAnLmh0bWwnLCAnJykKICAgICAgICAg
aWYgdGVzdC5pc19yZWZ0ZXN0OgogICAgICAgICAgICAgY29udGludWUKICAgICAgICAgaWYgdGVz
dC5hY3R1YWxfYXVkaW86Ci0gICAgICAgICAgICBhZGRfZmlsZShmaWxlcywgdGVzdCwgJy1leHBl
Y3RlZC53YXYnLCB0ZXN0LmV4cGVjdGVkX2F1ZGlvKQorICAgICAgICAgICAgYWRkX3Rlc3RfZmls
ZShmaWxlcywgdGVzdCwgJy1leHBlY3RlZC53YXYnLCB0ZXN0LmV4cGVjdGVkX2F1ZGlvKQogICAg
ICAgICAgICAgY29udGludWUKIAotICAgICAgICBhZGRfZmlsZShmaWxlcywgdGVzdCwgJy1leHBl
Y3RlZC50eHQnLCB0ZXN0LmV4cGVjdGVkX3RleHQpCi0gICAgICAgIGFkZF9maWxlKGZpbGVzLCB0
ZXN0LCAnLWV4cGVjdGVkLnBuZycsIHRlc3QuZXhwZWN0ZWRfaW1hZ2UpCisgICAgICAgIGFkZF90
ZXN0X2ZpbGUoZmlsZXMsIHRlc3QsICctZXhwZWN0ZWQudHh0JywgdGVzdC5leHBlY3RlZF90ZXh0
KQorICAgICAgICBhZGRfdGVzdF9maWxlKGZpbGVzLCB0ZXN0LCAnLWV4cGVjdGVkLnBuZycsIHRl
c3QuZXhwZWN0ZWRfaW1hZ2UpCiAKIAogICAgICMgQWRkIHRoZSB0ZXN0X2V4cGVjdGF0aW9ucyBm
aWxlLgpAQCAtMjU1LDYgKzI2NCwxMCBAQCBXT05URklYIFNLSVAgOiBmYWlsdXJlcy9leHBlY3Rl
ZC9rZXlib2FyCiBXT05URklYIFNLSVAgOiBmYWlsdXJlcy9leHBlY3RlZC9leGNlcHRpb24uaHRt
bCA9IENSQVNICiAiIiIKIAorICAgIGFkZF9maWxlKGZpbGVzLCAncmVmdGVzdHMvZm9vL3JlZnRl
c3QubGlzdCcsICIiIgorPT0gdGVzdC5odG1sIHRlc3QtcmVmLmh0bWwKKyIiIikKKwogICAgICMg
RklYTUU6IFRoaXMgdGVzdCB3YXMgb25seSBiZWluZyBpZ25vcmVkIGJlY2F1c2Ugb2YgbWlzc2lu
ZyBhIGxlYWRpbmcgJy8nLgogICAgICMgRml4aW5nIHRoZSB0eXBvIGNhdXNlcyBzZXZlcmFsIHRl
c3RzIHRvIGFzc2VydCwgc28gZGlzYWJsaW5nIHRoZSB0ZXN0IGVudGlyZWx5LgogICAgICMgQWRk
IGluIGEgZmlsZSBzaG91bGQgYmUgaWdub3JlZCBieSBwb3J0LmZpbmRfdGVzdF9maWxlcygpLgpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9yZWJhc2VsaW5lX2Nocm9t
aXVtX3dlYmtpdF90ZXN0cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3RvX2JlX21vdmVkL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CShyZXZpc2lv
biAxMDE3MjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3JlYmFzZWxp
bmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsOSArMjUx
LDcgQEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToKIAogICAgICAgICBmcyA9IHNlbGYuX3Rh
cmdldF9wb3J0Ll9maWxlc3lzdGVtCiAgICAgICAgIGZvciB0ZXN0IGluIHNlbGYuX3JlYmFzZWxp
bmluZ190ZXN0czoKLSAgICAgICAgICAgIHRlc3RfYWJzcGF0aCA9IHNlbGYuX3RhcmdldF9wb3J0
LmFic3BhdGhfZm9yX3Rlc3QodGVzdCkKLSAgICAgICAgICAgIGlmIChmcy5leGlzdHMoc2VsZi5f
dGFyZ2V0X3BvcnQucmVmdGVzdF9leHBlY3RlZF9maWxlbmFtZSh0ZXN0X2Fic3BhdGgpKSBvcgot
ICAgICAgICAgICAgICAgIGZzLmV4aXN0cyhzZWxmLl90YXJnZXRfcG9ydC5yZWZ0ZXN0X2V4cGVj
dGVkX21pc21hdGNoX2ZpbGVuYW1lKHRlc3RfYWJzcGF0aCkpKToKKyAgICAgICAgICAgIGlmIHNl
bGYuX3RhcmdldF9wb3J0LmlzX3JlZnRlc3QodGVzdCk6CiAgICAgICAgICAgICAgICAgX2xvZy5l
cnJvcignJXMgc2VlbXMgdG8gYmUgYSByZWZ0ZXN0LiBXZSBjYW4gbm90IHJlYmFzZSBmb3IgcmVm
dGVzdHMuJywgdGVzdCkKICAgICAgICAgICAgICAgICBzZWxmLl9yZWJhc2VsaW5pbmdfdGVzdHMg
PSBzZXQoKQogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQo=
</data>
<flag name="review"
          id="116985"
          type_id="1"
          status="+"
          setter="dpranke"
    />
          </attachment>
      

    </bug>

</bugzilla>