<?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>84762</bug_id>
          
          <creation_ts>2012-04-24 14:04:56 -0700</creation_ts>
          <short_desc>webkit-patch rebaseline-test is retrieving stale expectations</short_desc>
          <delta_ts>2012-05-18 15:09:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>86242</dependson>
          <blocked>86171</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>danakj</cc>
    
    <cc>eric</cc>
    
    <cc>noel.gordon</cc>
    
    <cc>ojan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>609028</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-04-24 14:04:56 -0700</bug_when>
    <thetext>webkit-patch rebaseline-test is fetching individual files from the layout_tests archive directories, rather than fetching them from the most recent zipfile. Since we don&apos;t empty out / clobber the layout_test_results directory before extracting the build into it, it&apos;s easy for there to be stale results in the directory (in fact, the flakiness dashboard leverages this to show you the &quot;last failure on the bot&quot;).

There are probably three different ways to fix this:

The easiest and probably least invasive is to fetch the zip file and then extract the member instead of fetching the member. This is what rebaseline-chromium-webkit-tests used to do, and it&apos;s guaranteed to be correct. It&apos;s also faster if you realize that you can cache the zip file locally and are rebaselining a lot of files at once (although adding caching adds complexity, obviously).

The second would be to clobber the results directory - this would break the &quot;feature&quot; of the flakiness dashboard, which can be confusing but is also useful.

The third would be to modify the tools to be smart enough to realize that the test was only failing with (say) an IMAGE failure and to then ignore the .txt file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609043</commentid>
    <comment_count>1</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-04-24 14:11:31 -0700</bug_when>
    <thetext>As I said offline, my preference would be to do the zip-file + caching approach. In addition to fixing this bug, it would also make bulk rebaselines many orders of magnitude faster. When I was rebaselining for the Chromium Lion port, I would queue up a couple hundred rebaselines, then wait 30-60 minutes for garden-o-matic to catch up.

That said, I think we should also modify garden-o-matic to only try to rebaseline the expectations type that is failing (e.g. only the png if it&apos;s a IMAGE failure), but that&apos;s a separate bug. Notably, I think we want UI in garden-o-matic to just rebaseline one of the txt or the png for cases where one of them is correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609103</commentid>
    <comment_count>2</comment_count>
      <attachid>138655</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-04-24 14:57:16 -0700</bug_when>
    <thetext>Created attachment 138655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609104</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-04-24 14:58:39 -0700</bug_when>
    <thetext>Patch uploaded, but this is intended solely as a workaround until abarth can chime in on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609158</commentid>
    <comment_count>4</comment_count>
      <attachid>138655</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-04-24 15:40:35 -0700</bug_when>
    <thetext>Comment on attachment 138655
Patch

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

&gt; Tools/Scripts/webkitpy/tool/commands/rebaseline.py:143
&gt; +        # correct results. Also, this fetch_from_zip test is really sleazy because it
&gt; +        # is bypassing all of the unit tests ...
&gt; +        fetch_from_zip = self._tool.__class__.__name__ != &apos;MockTool&apos;
&gt; +        if fetch_from_zip:

Can&apos;t we just update the tests with whatever the new output is? I don&apos;t think we should be checking things like this in even temporarily. Some percentage of code rot like this tends to stick around a lot longer than expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609179</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-04-24 15:52:59 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Can&apos;t we just update the tests with whatever the new output is? I don&apos;t think we should be checking things like this in even temporarily.

Bah :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609222</commentid>
    <comment_count>6</comment_count>
      <attachid>138680</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-04-24 16:28:09 -0700</bug_when>
    <thetext>Created attachment 138680
Now with updated tests :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609223</commentid>
    <comment_count>7</comment_count>
      <attachid>138680</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-04-24 16:28:44 -0700</bug_when>
    <thetext>Comment on attachment 138680
Now with updated tests :)

Ojan is a harsh task master.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609233</commentid>
    <comment_count>8</comment_count>
      <attachid>138680</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-04-24 16:38:29 -0700</bug_when>
    <thetext>Comment on attachment 138680
Now with updated tests :)

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

Thanks for fixing up the tests.

&gt; Tools/Scripts/webkitpy/tool/commands/rebaseline.py:144
&gt; +        # correct results. Also, this fetch_from_zip test is really sleazy because it
&gt; +        # is bypassing all of the unit tests ...

Nit: comment outdated.

&gt; Tools/Scripts/webkitpy/tool/commands/rebaseline.py:146
&gt; +        zip_url = self._results_url(builder_name).replace(&apos;results/layout-test-results&apos;, &apos;layout-test-results.zip&apos;)

Now that we don&apos;t have the else clause, this is the only use of this method. Maybe make that method do the right thing? If you hvae it call results_url instead of accumulated_results_url and then append layout-test-results.zip, I think it&apos;ll do what you want.

&gt; Tools/Scripts/webkitpy/tool/commands/rebaseline.py:152
&gt; +            print &quot;  Found &quot; + member_name

In the spirit of keeping the log output minimal, I&apos;m not sure this is really useful. If the rebaseline continues without error, we can assume it&apos;s found. The error-case below is good though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609251</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-04-24 16:51:55 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 138680 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=138680&amp;action=review
&gt; 
&gt; Thanks for fixing up the tests.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/rebaseline.py:144
&gt; &gt; +        # correct results. Also, this fetch_from_zip test is really sleazy because it
&gt; &gt; +        # is bypassing all of the unit tests ...
&gt; 
&gt; Nit: comment outdated.
&gt; 

Good catch.

&gt; &gt; Tools/Scripts/webkitpy/tool/commands/rebaseline.py:146
&gt; &gt; +        zip_url = self._results_url(builder_name).replace(&apos;results/layout-test-results&apos;, &apos;layout-test-results.zip&apos;)
&gt; 
&gt; Now that we don&apos;t have the else clause, this is the only use of this method. Maybe make that method do the right thing? If you hvae it call results_url instead of accumulated_results_url and then append layout-test-results.zip, I think it&apos;ll do what you want.

Done.

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/rebaseline.py:152
&gt; &gt; +            print &quot;  Found &quot; + member_name
&gt; 
&gt; In the spirit of keeping the log output minimal, I&apos;m not sure this is really useful. If the rebaseline continues without error, we can assume it&apos;s found. The error-case below is good though.

The error case is not really an error case (since we look for a &apos;wav&apos; file for every test). If you want to reduce what we log, I think it would be better to only log the ones we do find. (Will be less verbose for text-only tests, at least).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609265</commentid>
    <comment_count>10</comment_count>
      <attachid>138680</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-04-24 16:59:09 -0700</bug_when>
    <thetext>Comment on attachment 138680
Now with updated tests :)

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

&gt;&gt;&gt; Tools/Scripts/webkitpy/tool/commands/rebaseline.py:152
&gt;&gt;&gt; +            print &quot;  Found &quot; + member_name
&gt;&gt; 
&gt;&gt; In the spirit of keeping the log output minimal, I&apos;m not sure this is really useful. If the rebaseline continues without error, we can assume it&apos;s found. The error-case below is good though.
&gt; 
&gt; The error case is not really an error case (since we look for a &apos;wav&apos; file for every test). If you want to reduce what we log, I think it would be better to only log the ones we do find. (Will be less verbose for text-only tests, at least).

oic. I guess this is better output than the old output. I&apos;m fine with it as is. We can always tweak it later if we think it&apos;s too verbose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609270</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-04-24 17:01:57 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; &gt; Tools/Scripts/webkitpy/tool/commands/rebaseline.py:146
&gt; &gt; &gt; +        zip_url = self._results_url(builder_name).replace(&apos;results/layout-test-results&apos;, &apos;layout-test-results.zip&apos;)
&gt; &gt; 
&gt; &gt; Now that we don&apos;t have the else clause, this is the only use of this method. Maybe make that method do the right thing? If you hvae it call results_url instead of accumulated_results_url and then append layout-test-results.zip, I think it&apos;ll do what you want.
&gt;

Actually, it looks like results_url() doesn&apos;t return what you would want (it omits the &quot;f&quot; directive and points you to a &quot;results&quot; dir).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609273</commentid>
    <comment_count>12</comment_count>
      <attachid>138694</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-04-24 17:04:05 -0700</bug_when>
    <thetext>Created attachment 138694
update w/ more review feedback - patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609279</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-04-24 17:11:04 -0700</bug_when>
    <thetext>Committed r115142: &lt;http://trac.webkit.org/changeset/115142&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621290</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-10 22:59:09 -0700</bug_when>
    <thetext>I think the caching mechanism either doesn&apos;t work, or the idea of having to ever download a 34mb zip file in order to rebasline is broken. :)  Or possibly both. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621321</commentid>
    <comment_count>15</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-05-11 00:07:07 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; I think the caching mechanism either doesn&apos;t work, or the idea of having to ever download a 34mb zip file in order to rebasline is broken. :)  Or possibly both. :)

Well there is no caching mechanism yet. The hypothetical caching mechanism could make this a lot faster though. :)

It is a problem though. rebaselines are really slow with these larger zip files. IMO, slow+correct is better than fast+mostly correct. But, it&apos;d be good to get the caching in soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621322</commentid>
    <comment_count>16</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-05-11 00:08:10 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; I think the caching mechanism either doesn&apos;t work, or the idea of having to ever download a 34mb zip file in order to rebasline is broken. :)  Or possibly both. :)
&gt; 
&gt; Well there is no caching mechanism yet. The hypothetical caching mechanism could make this a lot faster though. :)
&gt; 
&gt; It is a problem though. rebaselines are really slow with these larger zip files. IMO, slow+correct is better than fast+mostly correct. But, it&apos;d be good to get the caching in soon.

Also, theoretically, once we have the caching, rebaselines will be much faster than they were in the old scheme, not just faster than the current slowness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621332</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-11 00:15:20 -0700</bug_when>
    <thetext>I suspect that the sydney office may beg to differ with your assessment that the curent situation is better than 2 weeks ago. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621356</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-11 00:37:44 -0700</bug_when>
    <thetext>@noel Perhaps this is what caused Bug 86171</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621417</commentid>
    <comment_count>19</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-05-11 02:21:35 -0700</bug_when>
    <thetext>Yes I believe so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621758</commentid>
    <comment_count>20</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-05-11 10:20:38 -0700</bug_when>
    <thetext>Sounds like we should either revert this, or add a flag to get the old behavior back while we&apos;re waiting for a better solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621763</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-11 10:27:02 -0700</bug_when>
    <thetext>I&apos;d be inclined to roll back the change given the performance impact.  We might want to try a different approach for solving this problem, for example by having garden-o-matic indiciate which results it wants the script to download.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621781</commentid>
    <comment_count>22</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-05-11 10:36:08 -0700</bug_when>
    <thetext>Okay, I will roll it out until I can come up with a better solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621791</commentid>
    <comment_count>23</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-05-11 10:42:36 -0700</bug_when>
    <thetext>Rollout posted in bug 86231 .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621891</commentid>
    <comment_count>24</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-05-11 12:40:03 -0700</bug_when>
    <thetext>Okay, i&apos;ve posted a patch for garden-o-matic to tell webkit-patch which types of results to rebaseline in bug 86242 ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622309</commentid>
    <comment_count>25</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-05-12 03:23:55 -0700</bug_when>
    <thetext>Question: would it be possible to extract needed files from the .zip on the server-side?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622506</commentid>
    <comment_count>26</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-05-13 09:41:28 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; Question: would it be possible to extract needed files from the .zip on the server-side?

Not the way things are currently set up; the server is a dumb file server. However, bug 86242 should fix things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628133</commentid>
    <comment_count>27</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-05-18 15:09:08 -0700</bug_when>
    <thetext>closing ... this should be fixed now.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138655</attachid>
            <date>2012-04-24 14:57:16 -0700</date>
            <delta_ts>2012-04-24 16:28:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84762-20120424145715.patch</filename>
            <type>text/plain</type>
            <size>5968</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MTAyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDljODUxMmVhNDI1NmU5MTdkNzRhMDYyMTBjZWNjMTNl
ODExNDlkNC4uNzY1MjBkY2JjZDlhODFlYmI5OGI4MTg1NDBmNmQ2ZmE0Yjk5OTU0YSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDEyLTA0LTI0ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHdlYmtpdC1wYXRjaCByZWJhc2VsaW5lLXRlc3QgaXMgcmV0cmlldmluZyBzdGFsZSBl
eHBlY3RhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg0NzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgd2Via2l0LXBhdGNoIHJlYmFzZWxpbmUtZXhwZWN0YXRpb25zIGlzIGZldGNoaW5nIGZpbGVz
IGRpcmVjdGx5CisgICAgICAgIGZyb20gdGhlIGxheW91dC10ZXN0LXJlc3VsdHMgZGlyZWN0b3J5
IG9uIHRoZSBidWlsZGJvdHMsIHJhdGhlcgorICAgICAgICB0aGFuIGZldGNoaW5nIHRoZW0gZnJv
bSB0aGUgYXJjaGl2ZS4gVGhpcyBpcyBwcm9ibGVtYXRpYyBiZWNhdXNlCisgICAgICAgIHdlIGRv
bid0IGNsb2JiZXIgdGhlIGRpcmVjdG9yeSBhZnRlciBlYWNoIHJ1biBhbmQgc28geW91IGNhbiBl
bmQKKyAgICAgICAgdXAgZmV0Y2hpbmcgc3RhbGUgZmFpbGluZyByZXN1bHRzLgorCisgICAgICAg
IFRoaXMgY2hhbmdlIHRlbXBvcmFyaWx5IGNoYW5nZXMgdGhlIGNvZGUgdG8gZmV0Y2ggdGhlIHpp
cCBmaWxlCisgICAgICAgIGluc3RlYWQgLS0gbWFraW5nIHRoaW5ncyBtdWNoIHNsb3dlciAtLSB1
bnRpbCBJIGNhbiBjb25mZXIgdy8KKyAgICAgICAgYWJhcnRoIGFuZCBvamFuIG92ZXIgdGhlIGJl
c3Qgd2F5IHRvIGZpeCB0aGlzIGZvciB0aGUgbG9uZy10ZXJtLgorCisgICAgICAgIE5vdGUgdGhh
dCB0aGlzIHBhdGNoIGlzIHBhcnRpY3VsYXJseSBza2V0Y2h5IHNpbmNlIGl0IGlzCisgICAgICAg
IGVmZmVjdGl2ZWx5IGJ5cGFzc2luZyB0aGUgdW5pdCB0ZXN0cyBmb3IgdGhpcyBjb2RlLiBIb3dl
dmVyLCB0aGUKKyAgICAgICAgdW5pdCB0ZXN0cyB3ZXJlIG9ubHkga2luZGEgdGVzdGluZyB0aGlz
IGluIHRoZSBmaXJzdCBwbGFjZSBzaW5jZQorICAgICAgICB3ZSB3ZXJlIHJlbHlpbmcgb24gdGhl
IFVSTHMgdG8gZXhhbXBsZS5jb20gdG8gNDA0IGFuZCBiZQorICAgICAgICBjb252ZXJ0ZWQgdG8g
Tm9uZS4KKyAgICAgICAgCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L3JlYmFzZWxpbmUucHk6CisgICAgICAgIChSZWJhc2VsaW5lVGVzdC5fX2luaXRfXyk6CisgICAg
ICAgIChSZWJhc2VsaW5lVGVzdC5fZmV0Y2hfYmFzZWxpbmUpOgorICAgICAgICAoUmViYXNlbGlu
ZVRlc3QuX3JlYmFzZWxpbmVfdGVzdCk6CisgICAgICAgIChSZWJhc2VsaW5lVGVzdC5leGVjdXRl
KToKKwogMjAxMi0wNC0yNCAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgog
CiAgICAgICAgIFtUZXN0UmVzdWx0c1NlcnZlcl0gQWRkIGEgdW5pdCB0ZXN0IGZvciBjaGFuZ2Vz
IGluIHIxMTQ4NjgKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9yZWJhc2VsaW5lLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L3JlYmFzZWxpbmUucHkKaW5kZXggODNhYTZhNjQwOTk0NjQxODE0YzRjNDk2ZGUwMjRkYWMzNGJk
NjUyMi4uNWY5YWI5MmEzZDEzY2U2NTE1MTk1ZDA4YjMxMjU5ZGEzNTdlZDRmMyAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmUucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmUucHkKQEAg
LTM4LDYgKzM4LDcgQEAgZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1aWxkYm90IGltcG9ydCBC
dWlsZEJvdAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmxheW91dHRlc3RyZXN1bHRzIGltcG9y
dCBMYXlvdXRUZXN0UmVzdWx0cwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2
ZSBpbXBvcnQgU2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS51c2VyIGlt
cG9ydCBVc2VyCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uemlwZmlsZXNldCBpbXBvcnQg
WmlwRmlsZVNldAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMudGVzdF9y
ZXN1bHRfd3JpdGVyIGltcG9ydCBUZXN0UmVzdWx0V3JpdGVyCiBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfZmFpbHVyZXMKIGZyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLm1vZGVscy50ZXN0X2NvbmZpZ3VyYXRpb24gaW1wb3J0IFRlc3RDb25maWd1cmF0aW9u
CkBAIC02MCw2ICs2MSw5IEBAIGNsYXNzIFJlYmFzZWxpbmVUZXN0KEFic3RyYWN0RGVjbGFyYXRp
dmVDb21tYW5kKToKICAgICBoZWxwX3RleHQgPSAiUmViYXNlbGluZSBhIHNpbmdsZSB0ZXN0IGZy
b20gYSBidWlsZGJvdC4gIChDdXJyZW50bHkgd29ya3Mgb25seSB3aXRoIGJ1aWxkLmNocm9taXVt
Lm9yZyBidWlsZGJvdHMuKSIKICAgICBhcmd1bWVudF9uYW1lcyA9ICJCVUlMREVSX05BTUUgVEVT
VF9OQU1FIFtQTEFURk9STVNfVE9fTU9WRV9FWElTVElOR19CQVNFTElORVNfVE9dIgogCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnM9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICBzdXBl
cihSZWJhc2VsaW5lVGVzdCwgc2VsZikuX19pbml0X18ob3B0aW9ucywgKiprd2FyZ3MpCisgICAg
ICAgIHNlbGYuX3ppcF9maWxlX3NldHMgPSB7fQogICAgIGRlZiBfcmVzdWx0c191cmwoc2VsZiwg
YnVpbGRlcl9uYW1lKToKICAgICAgICAgIyBGSVhNRTogR2VuZXJhbGl6ZSB0aGlzIGNvbW1hbmQg
dG8gd29yayB3aXRoIG5vbi1idWlsZC5jaHJvbWl1bS5vcmcgYnVpbGRlcnMuCiAgICAgICAgIGJ1
aWxkZXIgPSBzZWxmLl90b29sLmNocm9taXVtX2J1aWxkYm90KCkuYnVpbGRlcl93aXRoX25hbWUo
YnVpbGRlcl9uYW1lKQpAQCAtMTI5LDE4ICsxMzMsNDAgQEAgY2xhc3MgUmViYXNlbGluZVRlc3Qo
QWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgogICAgIGRlZiBfZmlsZV9uYW1lX2Zvcl9leHBl
Y3RlZF9yZXN1bHQoc2VsZiwgdGVzdF9uYW1lLCBzdWZmaXgpOgogICAgICAgICByZXR1cm4gIiVz
LWV4cGVjdGVkLiVzIiAlIChzZWxmLl90ZXN0X3Jvb3QodGVzdF9uYW1lKSwgc3VmZml4KQogCisg
ICAgZGVmIF9mZXRjaF9iYXNlbGluZShzZWxmLCBidWlsZGVyX25hbWUsIHRlc3RfbmFtZSwgc3Vm
Zml4KToKKyAgICAgICAgIyBGSVhNRTogU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04NDc2MiAuLi4gZmV0Y2hpbmcgdGhlIHdob2xlCisgICAgICAgICMgemlwIGZp
bGUgYW5kIHRoZW4gZXh0cmFjdGluZyBpbmRpdmlkdWFsIHJlc3VsdHMgaXMgbXVjaCBzbG93ZXIg
dGhhbiBqdXN0IGZldGNoaW5nCisgICAgICAgICMgdGhlIHJlc3VsdCBkaXJlY3RseSBmcm9tIHRo
ZSBidWlsZGJvdCwgYnV0IGl0IGd1YXJhbnRlZXMgdGhhdCB3ZSBhcmUgZ2V0dGluZworICAgICAg
ICAjIGNvcnJlY3QgcmVzdWx0cy4gQWxzbywgdGhpcyBmZXRjaF9mcm9tX3ppcCB0ZXN0IGlzIHJl
YWxseSBzbGVhenkgYmVjYXVzZSBpdAorICAgICAgICAjIGlzIGJ5cGFzc2luZyBhbGwgb2YgdGhl
IHVuaXQgdGVzdHMgLi4uCisgICAgICAgIGZldGNoX2Zyb21femlwID0gc2VsZi5fdG9vbC5fX2Ns
YXNzX18uX19uYW1lX18gIT0gJ01vY2tUb29sJworICAgICAgICBpZiBmZXRjaF9mcm9tX3ppcDoK
KyAgICAgICAgICAgIG1lbWJlcl9uYW1lID0gc2VsZi5fZmlsZV9uYW1lX2Zvcl9hY3R1YWxfcmVz
dWx0KHRlc3RfbmFtZSwgc3VmZml4KQorICAgICAgICAgICAgemlwX3VybCA9IHNlbGYuX3Jlc3Vs
dHNfdXJsKGJ1aWxkZXJfbmFtZSkucmVwbGFjZSgncmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRz
JywgJ2xheW91dC10ZXN0LXJlc3VsdHMuemlwJykKKyAgICAgICAgICAgIGlmIG5vdCBidWlsZGVy
X25hbWUgaW4gc2VsZi5femlwX2ZpbGVfc2V0czoKKyAgICAgICAgICAgICAgICBwcmludCAiUmV0
cmlldmluZyAiICsgemlwX3VybAorICAgICAgICAgICAgICAgIHNlbGYuX3ppcF9maWxlX3NldHNb
YnVpbGRlcl9uYW1lXSA9IFppcEZpbGVTZXQoemlwX3VybCkKKyAgICAgICAgICAgIHRyeToKKyAg
ICAgICAgICAgICAgICBkYXRhID0gc2VsZi5femlwX2ZpbGVfc2V0c1tidWlsZGVyX25hbWVdLnJl
YWQoJ2xheW91dC10ZXN0LXJlc3VsdHMvJyArIG1lbWJlcl9uYW1lKQorICAgICAgICAgICAgICAg
IHByaW50ICIgIEZvdW5kICIgKyBtZW1iZXJfbmFtZQorICAgICAgICAgICAgICAgIHJldHVybiBk
YXRhCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3IsIGU6CisgICAgICAgICAgICAgICAgcHJp
bnQgIiAgTm8gIiArIG1lbWJlcl9uYW1lCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIHNvdXJjZV9iYXNlbGluZSA9ICIlcy8lcyIgJSAoc2Vs
Zi5fcmVzdWx0c191cmwoYnVpbGRlcl9uYW1lKSwgc2VsZi5fZmlsZV9uYW1lX2Zvcl9hY3R1YWxf
cmVzdWx0KHRlc3RfbmFtZSwgc3VmZml4KSkKKyAgICAgICAgICAgIHByaW50ICJSZXRyaWV2aW5n
ICVzLiIgJSBzb3VyY2VfYmFzZWxpbmUKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl90b29sLndl
Yi5nZXRfYmluYXJ5KHNvdXJjZV9iYXNlbGluZSwgY29udmVydF80MDRfdG9fTm9uZT1UcnVlKQor
CiAgICAgZGVmIF9yZWJhc2VsaW5lX3Rlc3Qoc2VsZiwgYnVpbGRlcl9uYW1lLCB0ZXN0X25hbWUs
IHBsYXRmb3Jtc190b19tb3ZlX2V4aXN0aW5nX2Jhc2VsaW5lc190bywgc3VmZml4KToKLSAgICAg
ICAgcmVzdWx0c191cmwgPSBzZWxmLl9yZXN1bHRzX3VybChidWlsZGVyX25hbWUpCiAgICAgICAg
IGJhc2VsaW5lX2RpcmVjdG9yeSA9IHNlbGYuX2Jhc2VsaW5lX2RpcmVjdG9yeShidWlsZGVyX25h
bWUpCiAKLSAgICAgICAgc291cmNlX2Jhc2VsaW5lID0gIiVzLyVzIiAlIChyZXN1bHRzX3VybCwg
c2VsZi5fZmlsZV9uYW1lX2Zvcl9hY3R1YWxfcmVzdWx0KHRlc3RfbmFtZSwgc3VmZml4KSkKICAg
ICAgICAgdGFyZ2V0X2Jhc2VsaW5lID0gc2VsZi5fdG9vbC5maWxlc3lzdGVtLmpvaW4oYmFzZWxp
bmVfZGlyZWN0b3J5LCBzZWxmLl9maWxlX25hbWVfZm9yX2V4cGVjdGVkX3Jlc3VsdCh0ZXN0X25h
bWUsIHN1ZmZpeCkpCiAKICAgICAgICAgaWYgcGxhdGZvcm1zX3RvX21vdmVfZXhpc3RpbmdfYmFz
ZWxpbmVzX3RvOgogICAgICAgICAgICAgc2VsZi5fY29weV9leGlzdGluZ19iYXNlbGluZShwbGF0
Zm9ybXNfdG9fbW92ZV9leGlzdGluZ19iYXNlbGluZXNfdG8sIHRlc3RfbmFtZSwgc3VmZml4KQog
Ci0gICAgICAgIHByaW50ICJSZXRyaWV2aW5nICVzLiIgJSBzb3VyY2VfYmFzZWxpbmUKLSAgICAg
ICAgc2VsZi5fc2F2ZV9iYXNlbGluZShzZWxmLl90b29sLndlYi5nZXRfYmluYXJ5KHNvdXJjZV9i
YXNlbGluZSwgY29udmVydF80MDRfdG9fTm9uZT1UcnVlKSwgdGFyZ2V0X2Jhc2VsaW5lKQorICAg
ICAgICBzZWxmLl9zYXZlX2Jhc2VsaW5lKHNlbGYuX2ZldGNoX2Jhc2VsaW5lKGJ1aWxkZXJfbmFt
ZSwgdGVzdF9uYW1lLCBzdWZmaXgpLCB0YXJnZXRfYmFzZWxpbmUpCiAKICAgICBkZWYgX3JlYmFz
ZWxpbmVfdGVzdF9hbmRfdXBkYXRlX2V4cGVjdGF0aW9ucyhzZWxmLCBidWlsZGVyX25hbWUsIHRl
c3RfbmFtZSwgcGxhdGZvcm1zX3RvX21vdmVfZXhpc3RpbmdfYmFzZWxpbmVzX3RvKToKICAgICAg
ICAgZm9yIHN1ZmZpeCBpbiBfYmFzZWxpbmVfc3VmZml4X2xpc3Q6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138680</attachid>
            <date>2012-04-24 16:28:09 -0700</date>
            <delta_ts>2012-04-24 17:04:01 -0700</delta_ts>
            <desc>Now with updated tests :)</desc>
            <filename>bug-84762-20120424162808.patch</filename>
            <type>text/plain</type>
            <size>15993</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MTAyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDljODUxMmVhNDI1NmU5MTdkNzRhMDYyMTBjZWNjMTNl
ODExNDlkNC4uZGViYzljMjFkZTgwMDJmMjQ0OWI1NDhhOTliY2Q3ZTEwOTJjNTM2NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4
IEBACisyMDEyLTA0LTI0ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHdlYmtpdC1wYXRjaCByZWJhc2VsaW5lLXRlc3QgaXMgcmV0cmlldmluZyBzdGFsZSBl
eHBlY3RhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg0NzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgd2Via2l0LXBhdGNoIHJlYmFzZWxpbmUtZXhwZWN0YXRpb25zIGlzIGZldGNoaW5nIGZpbGVz
IGRpcmVjdGx5CisgICAgICAgIGZyb20gdGhlIGxheW91dC10ZXN0LXJlc3VsdHMgZGlyZWN0b3J5
IG9uIHRoZSBidWlsZGJvdHMsIHJhdGhlcgorICAgICAgICB0aGFuIGZldGNoaW5nIHRoZW0gZnJv
bSB0aGUgYXJjaGl2ZS4gVGhpcyBpcyBwcm9ibGVtYXRpYyBiZWNhdXNlCisgICAgICAgIHdlIGRv
bid0IGNsb2JiZXIgdGhlIGRpcmVjdG9yeSBhZnRlciBlYWNoIHJ1biBhbmQgc28geW91IGNhbiBl
bmQKKyAgICAgICAgdXAgZmV0Y2hpbmcgc3RhbGUgZmFpbGluZyByZXN1bHRzLgorCisgICAgICAg
IFRoaXMgY2hhbmdlIHRlbXBvcmFyaWx5IGNoYW5nZXMgdGhlIGNvZGUgdG8gZmV0Y2ggdGhlIHpp
cCBmaWxlCisgICAgICAgIGluc3RlYWQgLS0gbWFraW5nIHRoaW5ncyBtdWNoIHNsb3dlciAtLSB1
bnRpbCBJIGNhbiBjb25mZXIgdy8KKyAgICAgICAgYWJhcnRoIGFuZCBvamFuIG92ZXIgdGhlIGJl
c3Qgd2F5IHRvIGZpeCB0aGlzIGZvciB0aGUgbG9uZy10ZXJtLgorCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmUucHk6CisgICAgICAgIChSZWJhc2Vs
aW5lVGVzdC5fX2luaXRfXyk6CisgICAgICAgIChSZWJhc2VsaW5lVGVzdC5femlwX2ZpbGVfc2V0
KToKKyAgICAgICAgKFJlYmFzZWxpbmVUZXN0KToKKyAgICAgICAgKFJlYmFzZWxpbmVUZXN0Ll9m
ZXRjaF9iYXNlbGluZSk6CisgICAgICAgIChSZWJhc2VsaW5lVGVzdC5fcmViYXNlbGluZV90ZXN0
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZV91
bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RSZWJhc2VsaW5lLnN0dWJfcmViYXNlbGluZV90ZXN0
X2NvbW1hbmRfYW5kX3Rvb2wpOgorICAgICAgICAoVGVzdFJlYmFzZWxpbmUuc3R1Yl9yZWJhc2Vs
aW5lX3Rlc3RfY29tbWFuZF9hbmRfdG9vbC5GYWtlWmlwRmlsZVNldCk6CisgICAgICAgIChUZXN0
UmViYXNlbGluZS5zdHViX3JlYmFzZWxpbmVfdGVzdF9jb21tYW5kX2FuZF90b29sLkZha2VaaXBG
aWxlU2V0LnJlYWQpOgorICAgICAgICAoVGVzdFJlYmFzZWxpbmUudGVzdF9yZWJhc2VsaW5lX3Vw
ZGF0ZXNfZXhwZWN0YXRpb25zX2ZpbGVfbm9vcCk6CisgICAgICAgICh0ZXN0X3JlYmFzZWxpbmVf
dXBkYXRlc19leHBlY3RhdGlvbnNfZmlsZSk6CisgICAgICAgICh0ZXN0X3JlYmFzZWxpbmVfdGVz
dCk6CisgICAgICAgICh0ZXN0X3JlYmFzZWxpbmVfYW5kX2NvcHlfdGVzdCk6CisgICAgICAgICh0
ZXN0X3JlYmFzZWxpbmVfYW5kX2NvcHlfdGVzdF9ub19leGlzdGluZ19yZXN1bHQpOgorICAgICAg
ICAodGVzdF9yZWJhc2VsaW5lX2FuZF9jb3B5X3Rlc3Rfd2l0aF9saW9uX3Jlc3VsdCk6CisgICAg
ICAgICh0ZXN0X3JlYmFzZWxpbmVfYW5kX2NvcHlfbm9fb3ZlcndyaXRlX3Rlc3QpOgorCiAyMDEy
LTA0LTI0ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAgICAg
W1Rlc3RSZXN1bHRzU2VydmVyXSBBZGQgYSB1bml0IHRlc3QgZm9yIGNoYW5nZXMgaW4gcjExNDg2
OApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFz
ZWxpbmUucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGlu
ZS5weQppbmRleCA4M2FhNmE2NDA5OTQ2NDE4MTRjNGM0OTZkZTAyNGRhYzM0YmQ2NTIyLi45YzM5
YTJmY2FmODljMjAwN2YyZWEzYzAxY2VlMGNjOGJlMWJhYzEzIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZS5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZS5weQpAQCAtMzgsNiArMzgs
NyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVpbGRib3QgaW1wb3J0IEJ1aWxkQm90CiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQubGF5b3V0dGVzdHJlc3VsdHMgaW1wb3J0IExheW91dFRl
c3RSZXN1bHRzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBT
Y3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnVzZXIgaW1wb3J0IFVzZXIK
K2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS56aXBmaWxlc2V0IGltcG9ydCBaaXBGaWxlU2V0
CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycy50ZXN0X3Jlc3VsdF93cml0
ZXIgaW1wb3J0IFRlc3RSZXN1bHRXcml0ZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1v
ZGVscyBpbXBvcnQgdGVzdF9mYWlsdXJlcwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9k
ZWxzLnRlc3RfY29uZmlndXJhdGlvbiBpbXBvcnQgVGVzdENvbmZpZ3VyYXRpb24KQEAgLTYwLDYg
KzYxLDkgQEAgY2xhc3MgUmViYXNlbGluZVRlc3QoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQp
OgogICAgIGhlbHBfdGV4dCA9ICJSZWJhc2VsaW5lIGEgc2luZ2xlIHRlc3QgZnJvbSBhIGJ1aWxk
Ym90LiAgKEN1cnJlbnRseSB3b3JrcyBvbmx5IHdpdGggYnVpbGQuY2hyb21pdW0ub3JnIGJ1aWxk
Ym90cy4pIgogICAgIGFyZ3VtZW50X25hbWVzID0gIkJVSUxERVJfTkFNRSBURVNUX05BTUUgW1BM
QVRGT1JNU19UT19NT1ZFX0VYSVNUSU5HX0JBU0VMSU5FU19UT10iCiAKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgb3B0aW9ucz1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIHN1cGVyKFJlYmFzZWxp
bmVUZXN0LCBzZWxmKS5fX2luaXRfXyhvcHRpb25zLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5f
emlwX2ZpbGVfc2V0cyA9IHt9CiAgICAgZGVmIF9yZXN1bHRzX3VybChzZWxmLCBidWlsZGVyX25h
bWUpOgogICAgICAgICAjIEZJWE1FOiBHZW5lcmFsaXplIHRoaXMgY29tbWFuZCB0byB3b3JrIHdp
dGggbm9uLWJ1aWxkLmNocm9taXVtLm9yZyBidWlsZGVycy4KICAgICAgICAgYnVpbGRlciA9IHNl
bGYuX3Rvb2wuY2hyb21pdW1fYnVpbGRib3QoKS5idWlsZGVyX3dpdGhfbmFtZShidWlsZGVyX25h
bWUpCkBAIC0xMjksMTggKzEzMywzNyBAQCBjbGFzcyBSZWJhc2VsaW5lVGVzdChBYnN0cmFjdERl
Y2xhcmF0aXZlQ29tbWFuZCk6CiAgICAgZGVmIF9maWxlX25hbWVfZm9yX2V4cGVjdGVkX3Jlc3Vs
dChzZWxmLCB0ZXN0X25hbWUsIHN1ZmZpeCk6CiAgICAgICAgIHJldHVybiAiJXMtZXhwZWN0ZWQu
JXMiICUgKHNlbGYuX3Rlc3Rfcm9vdCh0ZXN0X25hbWUpLCBzdWZmaXgpCiAKKyAgICBkZWYgX3pp
cF9maWxlX3NldChzZWxmLCB1cmwpOgorICAgICAgICByZXR1cm4gWmlwRmlsZVNldCh1cmwpCisK
KyAgICBkZWYgX2ZldGNoX2Jhc2VsaW5lKHNlbGYsIGJ1aWxkZXJfbmFtZSwgdGVzdF9uYW1lLCBz
dWZmaXgpOgorICAgICAgICAjIEZJWE1FOiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg0NzYyIC4uLiBmZXRjaGluZyB0aGUgd2hvbGUKKyAgICAgICAgIyB6aXAg
ZmlsZSBhbmQgdGhlbiBleHRyYWN0aW5nIGluZGl2aWR1YWwgcmVzdWx0cyBpcyBtdWNoIHNsb3dl
ciB0aGFuIGp1c3QgZmV0Y2hpbmcKKyAgICAgICAgIyB0aGUgcmVzdWx0IGRpcmVjdGx5IGZyb20g
dGhlIGJ1aWxkYm90LCBidXQgaXQgZ3VhcmFudGVlcyB0aGF0IHdlIGFyZSBnZXR0aW5nCisgICAg
ICAgICMgY29ycmVjdCByZXN1bHRzLiBBbHNvLCB0aGlzIGZldGNoX2Zyb21femlwIHRlc3QgaXMg
cmVhbGx5IHNsZWF6eSBiZWNhdXNlIGl0CisgICAgICAgICMgaXMgYnlwYXNzaW5nIGFsbCBvZiB0
aGUgdW5pdCB0ZXN0cyAuLi4KKyAgICAgICAgbWVtYmVyX25hbWUgPSBzZWxmLl9maWxlX25hbWVf
Zm9yX2FjdHVhbF9yZXN1bHQodGVzdF9uYW1lLCBzdWZmaXgpCisgICAgICAgIHppcF91cmwgPSBz
ZWxmLl9yZXN1bHRzX3VybChidWlsZGVyX25hbWUpLnJlcGxhY2UoJ3Jlc3VsdHMvbGF5b3V0LXRl
c3QtcmVzdWx0cycsICdsYXlvdXQtdGVzdC1yZXN1bHRzLnppcCcpCisgICAgICAgIGlmIG5vdCBi
dWlsZGVyX25hbWUgaW4gc2VsZi5femlwX2ZpbGVfc2V0czoKKyAgICAgICAgICAgIHByaW50ICJS
ZXRyaWV2aW5nICIgKyB6aXBfdXJsCisgICAgICAgICAgICBzZWxmLl96aXBfZmlsZV9zZXRzW2J1
aWxkZXJfbmFtZV0gPSBzZWxmLl96aXBfZmlsZV9zZXQoemlwX3VybCkKKyAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgZGF0YSA9IHNlbGYuX3ppcF9maWxlX3NldHNbYnVpbGRlcl9uYW1lXS5yZWFk
KCdsYXlvdXQtdGVzdC1yZXN1bHRzLycgKyBtZW1iZXJfbmFtZSkKKyAgICAgICAgICAgIHByaW50
ICIgIEZvdW5kICIgKyBtZW1iZXJfbmFtZQorICAgICAgICAgICAgcmV0dXJuIGRhdGEKKyAgICAg
ICAgZXhjZXB0IEtleUVycm9yLCBlOgorICAgICAgICAgICAgcHJpbnQgIiAgTm8gIiArIG1lbWJl
cl9uYW1lCisgICAgICAgICAgICByZXR1cm4gTm9uZQorCiAgICAgZGVmIF9yZWJhc2VsaW5lX3Rl
c3Qoc2VsZiwgYnVpbGRlcl9uYW1lLCB0ZXN0X25hbWUsIHBsYXRmb3Jtc190b19tb3ZlX2V4aXN0
aW5nX2Jhc2VsaW5lc190bywgc3VmZml4KToKLSAgICAgICAgcmVzdWx0c191cmwgPSBzZWxmLl9y
ZXN1bHRzX3VybChidWlsZGVyX25hbWUpCiAgICAgICAgIGJhc2VsaW5lX2RpcmVjdG9yeSA9IHNl
bGYuX2Jhc2VsaW5lX2RpcmVjdG9yeShidWlsZGVyX25hbWUpCiAKLSAgICAgICAgc291cmNlX2Jh
c2VsaW5lID0gIiVzLyVzIiAlIChyZXN1bHRzX3VybCwgc2VsZi5fZmlsZV9uYW1lX2Zvcl9hY3R1
YWxfcmVzdWx0KHRlc3RfbmFtZSwgc3VmZml4KSkKICAgICAgICAgdGFyZ2V0X2Jhc2VsaW5lID0g
c2VsZi5fdG9vbC5maWxlc3lzdGVtLmpvaW4oYmFzZWxpbmVfZGlyZWN0b3J5LCBzZWxmLl9maWxl
X25hbWVfZm9yX2V4cGVjdGVkX3Jlc3VsdCh0ZXN0X25hbWUsIHN1ZmZpeCkpCiAKICAgICAgICAg
aWYgcGxhdGZvcm1zX3RvX21vdmVfZXhpc3RpbmdfYmFzZWxpbmVzX3RvOgogICAgICAgICAgICAg
c2VsZi5fY29weV9leGlzdGluZ19iYXNlbGluZShwbGF0Zm9ybXNfdG9fbW92ZV9leGlzdGluZ19i
YXNlbGluZXNfdG8sIHRlc3RfbmFtZSwgc3VmZml4KQogCi0gICAgICAgIHByaW50ICJSZXRyaWV2
aW5nICVzLiIgJSBzb3VyY2VfYmFzZWxpbmUKLSAgICAgICAgc2VsZi5fc2F2ZV9iYXNlbGluZShz
ZWxmLl90b29sLndlYi5nZXRfYmluYXJ5KHNvdXJjZV9iYXNlbGluZSwgY29udmVydF80MDRfdG9f
Tm9uZT1UcnVlKSwgdGFyZ2V0X2Jhc2VsaW5lKQorICAgICAgICBzZWxmLl9zYXZlX2Jhc2VsaW5l
KHNlbGYuX2ZldGNoX2Jhc2VsaW5lKGJ1aWxkZXJfbmFtZSwgdGVzdF9uYW1lLCBzdWZmaXgpLCB0
YXJnZXRfYmFzZWxpbmUpCiAKICAgICBkZWYgX3JlYmFzZWxpbmVfdGVzdF9hbmRfdXBkYXRlX2V4
cGVjdGF0aW9ucyhzZWxmLCBidWlsZGVyX25hbWUsIHRlc3RfbmFtZSwgcGxhdGZvcm1zX3RvX21v
dmVfZXhpc3RpbmdfYmFzZWxpbmVzX3RvKToKICAgICAgICAgZm9yIHN1ZmZpeCBpbiBfYmFzZWxp
bmVfc3VmZml4X2xpc3Q6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvcmViYXNlbGluZV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lX3VuaXR0ZXN0LnB5CmluZGV4IDQ2ZDllZDQ3YmZkZjA2
OTU0NTVkY2FlOThhYzc4N2YyYWNjYzk3OWYuLjQyZTQ0NTg5ZTU2ZDViY2RhODRiZjNkMzRjNWQw
YThmYzhjMWVkMjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9yZWJhc2VsaW5lX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lX3VuaXR0ZXN0LnB5CkBAIC0zNiw2ICszNiwyMCBAQCBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVj
dXRpdmUKIAogCiBjbGFzcyBUZXN0UmViYXNlbGluZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAg
ZGVmIHN0dWJfcmViYXNlbGluZV90ZXN0X2NvbW1hbmRfYW5kX3Rvb2woc2VsZik6CisKKyAgICAg
ICAgY2xhc3MgRmFrZVppcEZpbGVTZXQob2JqZWN0KToKKyAgICAgICAgICAgIGNvbnRlbnRzID0g
e30KKworICAgICAgICAgICAgZGVmIHJlYWQoc2VsZiwgbWVtYmVyKToKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc2VsZi5jb250ZW50c1ttZW1iZXJdCisKKyAgICAgICAgY29tbWFuZCA9IFJlYmFz
ZWxpbmVUZXN0KCkKKyAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKKyAgICAgICAgY29tbWFuZC5i
aW5kX3RvX3Rvb2wodG9vbCkKKyAgICAgICAgY29tbWFuZC5femlwX2ZpbGVfc2V0ID0gbGFtYmRh
IHVybDogRmFrZVppcEZpbGVTZXQoKQorICAgICAgICByZXR1cm4gKGNvbW1hbmQsIHRvb2wpCisK
ICAgICBkZWYgdGVzdF90ZXN0c190b191cGRhdGUoc2VsZik6CiAgICAgICAgIGNvbW1hbmQgPSBS
ZWJhc2VsaW5lKCkKICAgICAgICAgY29tbWFuZC5iaW5kX3RvX3Rvb2woTW9ja1Rvb2woKSkKQEAg
LTQzLDEwICs1Nyw3IEBAIGNsYXNzIFRlc3RSZWJhc2VsaW5lKHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIGNvbW1hbmQuX3Rl
c3RzX3RvX3VwZGF0ZSwgW2J1aWxkXSkKIAogICAgIGRlZiB0ZXN0X3JlYmFzZWxpbmVfdXBkYXRl
c19leHBlY3RhdGlvbnNfZmlsZV9ub29wKHNlbGYpOgotICAgICAgICBjb21tYW5kID0gUmViYXNl
bGluZVRlc3QoKQotICAgICAgICB0b29sID0gTW9ja1Rvb2woKQotICAgICAgICBjb21tYW5kLmJp
bmRfdG9fdG9vbCh0b29sKQotCisgICAgICAgIGNvbW1hbmQsIHRvb2wgPSBzZWxmLnN0dWJfcmVi
YXNlbGluZV90ZXN0X2NvbW1hbmRfYW5kX3Rvb2woKQogICAgICAgICBsaW9uX3BvcnQgPSB0b29s
LnBvcnRfZmFjdG9yeS5nZXRfZnJvbV9idWlsZGVyX25hbWUoIldlYmtpdCBNYWMxMC43IikKICAg
ICAgICAgdG9vbC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShsaW9uX3BvcnQucGF0aF90b190
ZXN0X2V4cGVjdGF0aW9uc19maWxlKCksICIiIkJVR0IgTUFDIExJTlVYIFhQIERFQlVHIDogZmFz
dC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS1yZWFsbHktZGVlcC1hcnJheS5o
dG1sID0gUEFTUwogQlVHQSBERUJVRyA6IGZhc3QvY3NzL2xhcmdlLWxpc3Qtb2YtcnVsZXMtY3Jh
c2guaHRtbCA9IFRFWFQKQEAgLTU1LDkgKzY2LDEwIEBAIEJVR0EgREVCVUcgOiBmYXN0L2Nzcy9s
YXJnZS1saXN0LW9mLXJ1bGVzLWNyYXNoLmh0bWwgPSBURVhUCiAgICAgICAgIHRvb2wuZmlsZXN5
c3RlbS53cml0ZV90ZXh0X2ZpbGUob3MucGF0aC5qb2luKGxpb25fcG9ydC5sYXlvdXRfdGVzdHNf
ZGlyKCksICJmYXN0L2Nzcy9sYXJnZS1saXN0LW9mLXJ1bGVzLWNyYXNoLmh0bWwiKSwgIkR1bW15
IHRlc3QgY29udGVudHMiKQogICAgICAgICB0b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxl
KG9zLnBhdGguam9pbihsaW9uX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLCAidXNlcnNjcmlwdHMv
YW5vdGhlci10ZXN0Lmh0bWwiKSwgIkR1bW15IHRlc3QgY29udGVudHMiKQogCi0gICAgICAgIGV4
cGVjdGVkX3N0ZG91dCA9ICIiIlJldHJpZXZpbmcgaHR0cDovL2V4YW1wbGUuY29tL2YvYnVpbGRl
cnMvV2Via2l0IE1hYzEwLjcvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRz
L2Fub3RoZXItdGVzdC1hY3R1YWwucG5nLgotUmV0cmlldmluZyBodHRwOi8vZXhhbXBsZS5jb20v
Zi9idWlsZGVycy9XZWJraXQgTWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNl
cnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC53YXYuCi1SZXRyaWV2aW5nIGh0dHA6Ly9leGFt
cGxlLmNvbS9mL2J1aWxkZXJzL1dlYmtpdCBNYWMxMC43L3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVz
dWx0cy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLnR4dC4KKyAgICAgICAgZXhwZWN0
ZWRfc3Rkb3V0ID0gIiIiUmV0cmlldmluZyBodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9X
ZWJraXQgTWFjMTAuNy9sYXlvdXQtdGVzdC1yZXN1bHRzLnppcAorICBObyB1c2Vyc2NyaXB0cy9h
bm90aGVyLXRlc3QtYWN0dWFsLnBuZworICBObyB1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0
dWFsLndhdgorICBObyB1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLnR4dAogIiIiCiAg
ICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBjb21tYW5kLl9yZWJh
c2VsaW5lX3Rlc3RfYW5kX3VwZGF0ZV9leHBlY3RhdGlvbnMsIFsiV2Via2l0IE1hYzEwLjciLCAi
dXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLCBOb25lXSwgZXhwZWN0ZWRfc3Rkb3V0PWV4
cGVjdGVkX3N0ZG91dCkKIApAQCAtNjcsMTcgKzc5LDE2IEBAIEJVR0EgREVCVUcgOiBmYXN0L2Nz
cy9sYXJnZS1saXN0LW9mLXJ1bGVzLWNyYXNoLmh0bWwgPSBURVhUCiAiIiIpCiAKICAgICBkZWYg
dGVzdF9yZWJhc2VsaW5lX3VwZGF0ZXNfZXhwZWN0YXRpb25zX2ZpbGUoc2VsZik6Ci0gICAgICAg
IGNvbW1hbmQgPSBSZWJhc2VsaW5lVGVzdCgpCi0gICAgICAgIHRvb2wgPSBNb2NrVG9vbCgpCi0g
ICAgICAgIGNvbW1hbmQuYmluZF90b190b29sKHRvb2wpCisgICAgICAgIGNvbW1hbmQsIHRvb2wg
PSBzZWxmLnN0dWJfcmViYXNlbGluZV90ZXN0X2NvbW1hbmRfYW5kX3Rvb2woKQogCiAgICAgICAg
IGxpb25fcG9ydCA9IHRvb2wucG9ydF9mYWN0b3J5LmdldF9mcm9tX2J1aWxkZXJfbmFtZSgiV2Vi
a2l0IE1hYzEwLjciKQogICAgICAgICB0b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKGxp
b25fcG9ydC5wYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoKSwgIkJVR1ggTUFDIDogdXNl
cnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwgPSBJTUFHRVxuQlVHWiBMSU5VWCA6IHVzZXJzY3Jp
cHRzL2Fub3RoZXItdGVzdC5odG1sID0gSU1BR0VcbiIpCiAgICAgICAgIHRvb2wuZmlsZXN5c3Rl
bS53cml0ZV90ZXh0X2ZpbGUob3MucGF0aC5qb2luKGxpb25fcG9ydC5sYXlvdXRfdGVzdHNfZGly
KCksICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIpLCAiRHVtbXkgdGVzdCBjb250ZW50
cyIpCiAKLSAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0gIiIiUmV0cmlldmluZyBodHRwOi8vZXhh
bXBsZS5jb20vZi9idWlsZGVycy9XZWJraXQgTWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJl
c3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC5wbmcuCi1SZXRyaWV2aW5nIGh0
dHA6Ly9leGFtcGxlLmNvbS9mL2J1aWxkZXJzL1dlYmtpdCBNYWMxMC43L3Jlc3VsdHMvbGF5b3V0
LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLndhdi4KLVJldHJp
ZXZpbmcgaHR0cDovL2V4YW1wbGUuY29tL2YvYnVpbGRlcnMvV2Via2l0IE1hYzEwLjcvcmVzdWx0
cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwudHh0
LgorICAgICAgICBleHBlY3RlZF9zdGRvdXQgPSAiIiJSZXRyaWV2aW5nIGh0dHA6Ly9leGFtcGxl
LmNvbS9mL2J1aWxkZXJzL1dlYmtpdCBNYWMxMC43L2xheW91dC10ZXN0LXJlc3VsdHMuemlwCisg
IE5vIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwucG5nCisgIE5vIHVzZXJzY3JpcHRz
L2Fub3RoZXItdGVzdC1hY3R1YWwud2F2CisgIE5vIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1h
Y3R1YWwudHh0CiAiIiIKICAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNl
bGYsIGNvbW1hbmQuX3JlYmFzZWxpbmVfdGVzdF9hbmRfdXBkYXRlX2V4cGVjdGF0aW9ucywgWyJX
ZWJraXQgTWFjMTAuNyIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIE5vbmVdLCBl
eHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0KQogCkBAIC04NSw1MiArOTYsNDggQEAgUmV0
cmlldmluZyBodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9XZWJraXQgTWFjMTAuNy9yZXN1
bHRzL2xheW91dC10ZXN0LXJlc3UKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfZXhwZWN0
YXRpb25zLCAiQlVHWCBMRU9QQVJEIFNOT1dMRU9QQVJEIDogdXNlcnNjcmlwdHMvYW5vdGhlci10
ZXN0Lmh0bWwgPSBJTUFHRVxuQlVHWiBMSU5VWCA6IHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5o
dG1sID0gSU1BR0VcbiIpCiAKICAgICBkZWYgdGVzdF9yZWJhc2VsaW5lX3Rlc3Qoc2VsZik6Ci0g
ICAgICAgIGNvbW1hbmQgPSBSZWJhc2VsaW5lVGVzdCgpCi0gICAgICAgIGNvbW1hbmQuYmluZF90
b190b29sKE1vY2tUb29sKCkpCi0gICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9ICJSZXRyaWV2aW5n
IGh0dHA6Ly9leGFtcGxlLmNvbS9mL2J1aWxkZXJzL1dlYmtpdCBMaW51eC9yZXN1bHRzL2xheW91
dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC50eHQuXG4iCisg
ICAgICAgIGNvbW1hbmQsIF8gPSBzZWxmLnN0dWJfcmViYXNlbGluZV90ZXN0X2NvbW1hbmRfYW5k
X3Rvb2woKQorICAgICAgICBleHBlY3RlZF9zdGRvdXQgPSAiIiJSZXRyaWV2aW5nIGh0dHA6Ly9l
eGFtcGxlLmNvbS9mL2J1aWxkZXJzL1dlYmtpdCBMaW51eC9sYXlvdXQtdGVzdC1yZXN1bHRzLnpp
cAorICBObyB1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLnR4dAorIiIiCiAgICAgICAg
IE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBjb21tYW5kLl9yZWJhc2VsaW5l
X3Rlc3QsIFsiV2Via2l0IExpbnV4IiwgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwg
Tm9uZSwgInR4dCJdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0KQogCiAgICAgZGVm
IHRlc3RfcmViYXNlbGluZV9hbmRfY29weV90ZXN0KHNlbGYpOgotICAgICAgICBjb21tYW5kID0g
UmViYXNlbGluZVRlc3QoKQotICAgICAgICB0b29sID0gTW9ja1Rvb2woKQotICAgICAgICBjb21t
YW5kLmJpbmRfdG9fdG9vbCh0b29sKQorICAgICAgICBjb21tYW5kLCB0b29sID0gc2VsZi5zdHVi
X3JlYmFzZWxpbmVfdGVzdF9jb21tYW5kX2FuZF90b29sKCkKIAogICAgICAgICBsaW9uX3BvcnQg
PSB0b29sLnBvcnRfZmFjdG9yeS5nZXRfZnJvbV9idWlsZGVyX25hbWUoIldlYmtpdCBNYWMxMC43
IikKICAgICAgICAgdG9vbC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShvcy5wYXRoLmpvaW4o
bGlvbl9wb3J0LmxheW91dF90ZXN0c19kaXIoKSwgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1l
eHBlY3RlZC50eHQiKSwgIkR1bW15IGV4cGVjdGVkIHJlc3VsdCIpCiAKICAgICAgICAgZXhwZWN0
ZWRfc3Rkb3V0ID0gIiIiQ29weWluZyBiYXNlbGluZSBmcm9tIC9tb2NrLWNoZWNrb3V0L0xheW91
dFRlc3RzL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1leHBlY3RlZC50eHQgdG8gL21vY2stY2hl
Y2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjLXNub3dsZW9wYXJkL3VzZXJz
Y3JpcHRzL2Fub3RoZXItdGVzdC1leHBlY3RlZC50eHQuCi1SZXRyaWV2aW5nIGh0dHA6Ly9leGFt
cGxlLmNvbS9mL2J1aWxkZXJzL1dlYmtpdCBNYWMxMC43L3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVz
dWx0cy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLnR4dC4KK1JldHJpZXZpbmcgaHR0
cDovL2V4YW1wbGUuY29tL2YvYnVpbGRlcnMvV2Via2l0IE1hYzEwLjcvbGF5b3V0LXRlc3QtcmVz
dWx0cy56aXAKKyAgTm8gdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC50eHQKICIiIgog
ICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgY29tbWFuZC5fcmVi
YXNlbGluZV90ZXN0LCBbIldlYmtpdCBNYWMxMC43IiwgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVz
dC5odG1sIiwgWyJjaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQiXSwgInR4dCJdLCBleHBlY3RlZF9z
dGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0KQogCiAgICAgZGVmIHRlc3RfcmViYXNlbGluZV9hbmRfY29w
eV90ZXN0X25vX2V4aXN0aW5nX3Jlc3VsdChzZWxmKToKLSAgICAgICAgY29tbWFuZCA9IFJlYmFz
ZWxpbmVUZXN0KCkKLSAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKLSAgICAgICAgY29tbWFuZC5i
aW5kX3RvX3Rvb2wodG9vbCkKKyAgICAgICAgY29tbWFuZCwgXyA9IHNlbGYuc3R1Yl9yZWJhc2Vs
aW5lX3Rlc3RfY29tbWFuZF9hbmRfdG9vbCgpCiAKICAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0g
IiIiTm8gZXhpc3RpbmcgYmFzZWxpbmUgZm9yIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1s
LgotUmV0cmlldmluZyBodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9XZWJraXQgTWFjMTAu
Ny9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFj
dHVhbC50eHQuCitSZXRyaWV2aW5nIGh0dHA6Ly9leGFtcGxlLmNvbS9mL2J1aWxkZXJzL1dlYmtp
dCBNYWMxMC43L2xheW91dC10ZXN0LXJlc3VsdHMuemlwCisgIE5vIHVzZXJzY3JpcHRzL2Fub3Ro
ZXItdGVzdC1hY3R1YWwudHh0CiAiIiIKICAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9v
dXRwdXRzKHNlbGYsIGNvbW1hbmQuX3JlYmFzZWxpbmVfdGVzdCwgWyJXZWJraXQgTWFjMTAuNyIs
ICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIFsiY2hyb21pdW0tbWFjLXNub3dsZW9w
YXJkIl0sICJ0eHQiXSwgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0ZG91dCkKIAogICAgIGRl
ZiB0ZXN0X3JlYmFzZWxpbmVfYW5kX2NvcHlfdGVzdF93aXRoX2xpb25fcmVzdWx0KHNlbGYpOgot
ICAgICAgICBjb21tYW5kID0gUmViYXNlbGluZVRlc3QoKQotICAgICAgICB0b29sID0gTW9ja1Rv
b2woKQotICAgICAgICBjb21tYW5kLmJpbmRfdG9fdG9vbCh0b29sKQorICAgICAgICBjb21tYW5k
LCB0b29sID0gc2VsZi5zdHViX3JlYmFzZWxpbmVfdGVzdF9jb21tYW5kX2FuZF90b29sKCkKIAog
ICAgICAgICBsaW9uX3BvcnQgPSB0b29sLnBvcnRfZmFjdG9yeS5nZXRfZnJvbV9idWlsZGVyX25h
bWUoIldlYmtpdCBNYWMxMC43IikKICAgICAgICAgdG9vbC5maWxlc3lzdGVtLndyaXRlX3RleHRf
ZmlsZShvcy5wYXRoLmpvaW4obGlvbl9wb3J0LmJhc2VsaW5lX3BhdGgoKSwgInVzZXJzY3JpcHRz
L2Fub3RoZXItdGVzdC1leHBlY3RlZC50eHQiKSwgIkR1bW15IGV4cGVjdGVkIHJlc3VsdCIpCiAK
ICAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0gIiIiQ29weWluZyBiYXNlbGluZSBmcm9tIC9tb2Nr
LWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy91c2Vyc2NyaXB0cy9h
bm90aGVyLXRlc3QtZXhwZWN0ZWQudHh0IHRvIC9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZC91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3Qt
ZXhwZWN0ZWQudHh0LgogQ29weWluZyBiYXNlbGluZSBmcm9tIC9tb2NrLWNoZWNrb3V0L0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtZXhw
ZWN0ZWQudHh0IHRvIC9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
LW1hYy1sZW9wYXJkL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1leHBlY3RlZC50eHQuCi1SZXRy
aWV2aW5nIGh0dHA6Ly9leGFtcGxlLmNvbS9mL2J1aWxkZXJzL1dlYmtpdCBNYWMxMC43L3Jlc3Vs
dHMvbGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLnR4
dC4KK1JldHJpZXZpbmcgaHR0cDovL2V4YW1wbGUuY29tL2YvYnVpbGRlcnMvV2Via2l0IE1hYzEw
LjcvbGF5b3V0LXRlc3QtcmVzdWx0cy56aXAKKyAgTm8gdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0
LWFjdHVhbC50eHQKICIiIgogICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMo
c2VsZiwgY29tbWFuZC5fcmViYXNlbGluZV90ZXN0LCBbIldlYmtpdCBNYWMxMC43IiwgInVzZXJz
Y3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwgWyJjaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQiLCAi
Y2hyb21pdW0tbWFjLWxlb3BhcmQiXSwgInR4dCJdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRf
c3Rkb3V0KQogCiAgICAgZGVmIHRlc3RfcmViYXNlbGluZV9hbmRfY29weV9ub19vdmVyd3JpdGVf
dGVzdChzZWxmKToKLSAgICAgICAgY29tbWFuZCA9IFJlYmFzZWxpbmVUZXN0KCkKLSAgICAgICAg
dG9vbCA9IE1vY2tUb29sKCkKLSAgICAgICAgY29tbWFuZC5iaW5kX3RvX3Rvb2wodG9vbCkKKyAg
ICAgICAgY29tbWFuZCwgdG9vbCA9IHNlbGYuc3R1Yl9yZWJhc2VsaW5lX3Rlc3RfY29tbWFuZF9h
bmRfdG9vbCgpCiAKICAgICAgICAgbGlvbl9wb3J0ID0gdG9vbC5wb3J0X2ZhY3RvcnkuZ2V0X2Zy
b21fYnVpbGRlcl9uYW1lKCJXZWJraXQgTWFjMTAuNyIpCiAgICAgICAgIHRvb2wuZmlsZXN5c3Rl
bS53cml0ZV90ZXh0X2ZpbGUob3MucGF0aC5qb2luKGxpb25fcG9ydC5iYXNlbGluZV9wYXRoKCks
ICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtZXhwZWN0ZWQudHh0IiksICJEdW1teSBleHBlY3Rl
ZCByZXN1bHQiKQpAQCAtMTM5LDcgKzE0Niw4IEBAIFJldHJpZXZpbmcgaHR0cDovL2V4YW1wbGUu
Y29tL2YvYnVpbGRlcnMvV2Via2l0IE1hYzEwLjcvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1CiAg
ICAgICAgIHRvb2wuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUob3MucGF0aC5qb2luKHNub3ds
ZW9wYXJkX3BvcnQuYmFzZWxpbmVfcGF0aCgpLCAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWV4
cGVjdGVkLnR4dCIpLCAiRHVtbXkgZXhwZWN0ZWQgcmVzdWx0IikKIAogICAgICAgICBleHBlY3Rl
ZF9zdGRvdXQgPSAiIiJFeGlzdGluZyBiYXNlbGluZSBhdCAvbW9jay1jaGVja291dC9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQvdXNlcnNjcmlwdHMvYW5vdGhl
ci10ZXN0LWV4cGVjdGVkLnR4dCwgbm90IGNvcHlpbmcgb3ZlciBpdC4KLVJldHJpZXZpbmcgaHR0
cDovL2V4YW1wbGUuY29tL2YvYnVpbGRlcnMvV2Via2l0IE1hYzEwLjcvcmVzdWx0cy9sYXlvdXQt
dGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwudHh0LgorUmV0cmll
dmluZyBodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9XZWJraXQgTWFjMTAuNy9sYXlvdXQt
dGVzdC1yZXN1bHRzLnppcAorICBObyB1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLnR4
dAogIiIiCiAgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBjb21t
YW5kLl9yZWJhc2VsaW5lX3Rlc3QsIFsiV2Via2l0IE1hYzEwLjciLCAidXNlcnNjcmlwdHMvYW5v
dGhlci10ZXN0Lmh0bWwiLCBbImNocm9taXVtLW1hYy1zbm93bGVvcGFyZCJdLCAidHh0Il0sIGV4
cGVjdGVkX3N0ZG91dD1leHBlY3RlZF9zdGRvdXQpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138694</attachid>
            <date>2012-04-24 17:04:05 -0700</date>
            <delta_ts>2012-04-24 17:04:05 -0700</delta_ts>
            <desc>update w/ more review feedback - patch for landing</desc>
            <filename>bug-84762-20120424170404.patch</filename>
            <type>text/plain</type>
            <size>15813</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MTAyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDljODUxMmVhNDI1NmU5MTdkNzRhMDYyMTBjZWNjMTNl
ODExNDlkNC4uZGViYzljMjFkZTgwMDJmMjQ0OWI1NDhhOTliY2Q3ZTEwOTJjNTM2NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4
IEBACisyMDEyLTA0LTI0ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHdlYmtpdC1wYXRjaCByZWJhc2VsaW5lLXRlc3QgaXMgcmV0cmlldmluZyBzdGFsZSBl
eHBlY3RhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg0NzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgd2Via2l0LXBhdGNoIHJlYmFzZWxpbmUtZXhwZWN0YXRpb25zIGlzIGZldGNoaW5nIGZpbGVz
IGRpcmVjdGx5CisgICAgICAgIGZyb20gdGhlIGxheW91dC10ZXN0LXJlc3VsdHMgZGlyZWN0b3J5
IG9uIHRoZSBidWlsZGJvdHMsIHJhdGhlcgorICAgICAgICB0aGFuIGZldGNoaW5nIHRoZW0gZnJv
bSB0aGUgYXJjaGl2ZS4gVGhpcyBpcyBwcm9ibGVtYXRpYyBiZWNhdXNlCisgICAgICAgIHdlIGRv
bid0IGNsb2JiZXIgdGhlIGRpcmVjdG9yeSBhZnRlciBlYWNoIHJ1biBhbmQgc28geW91IGNhbiBl
bmQKKyAgICAgICAgdXAgZmV0Y2hpbmcgc3RhbGUgZmFpbGluZyByZXN1bHRzLgorCisgICAgICAg
IFRoaXMgY2hhbmdlIHRlbXBvcmFyaWx5IGNoYW5nZXMgdGhlIGNvZGUgdG8gZmV0Y2ggdGhlIHpp
cCBmaWxlCisgICAgICAgIGluc3RlYWQgLS0gbWFraW5nIHRoaW5ncyBtdWNoIHNsb3dlciAtLSB1
bnRpbCBJIGNhbiBjb25mZXIgdy8KKyAgICAgICAgYWJhcnRoIGFuZCBvamFuIG92ZXIgdGhlIGJl
c3Qgd2F5IHRvIGZpeCB0aGlzIGZvciB0aGUgbG9uZy10ZXJtLgorCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmUucHk6CisgICAgICAgIChSZWJhc2Vs
aW5lVGVzdC5fX2luaXRfXyk6CisgICAgICAgIChSZWJhc2VsaW5lVGVzdC5femlwX2ZpbGVfc2V0
KToKKyAgICAgICAgKFJlYmFzZWxpbmVUZXN0KToKKyAgICAgICAgKFJlYmFzZWxpbmVUZXN0Ll9m
ZXRjaF9iYXNlbGluZSk6CisgICAgICAgIChSZWJhc2VsaW5lVGVzdC5fcmViYXNlbGluZV90ZXN0
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZV91
bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RSZWJhc2VsaW5lLnN0dWJfcmViYXNlbGluZV90ZXN0
X2NvbW1hbmRfYW5kX3Rvb2wpOgorICAgICAgICAoVGVzdFJlYmFzZWxpbmUuc3R1Yl9yZWJhc2Vs
aW5lX3Rlc3RfY29tbWFuZF9hbmRfdG9vbC5GYWtlWmlwRmlsZVNldCk6CisgICAgICAgIChUZXN0
UmViYXNlbGluZS5zdHViX3JlYmFzZWxpbmVfdGVzdF9jb21tYW5kX2FuZF90b29sLkZha2VaaXBG
aWxlU2V0LnJlYWQpOgorICAgICAgICAoVGVzdFJlYmFzZWxpbmUudGVzdF9yZWJhc2VsaW5lX3Vw
ZGF0ZXNfZXhwZWN0YXRpb25zX2ZpbGVfbm9vcCk6CisgICAgICAgICh0ZXN0X3JlYmFzZWxpbmVf
dXBkYXRlc19leHBlY3RhdGlvbnNfZmlsZSk6CisgICAgICAgICh0ZXN0X3JlYmFzZWxpbmVfdGVz
dCk6CisgICAgICAgICh0ZXN0X3JlYmFzZWxpbmVfYW5kX2NvcHlfdGVzdCk6CisgICAgICAgICh0
ZXN0X3JlYmFzZWxpbmVfYW5kX2NvcHlfdGVzdF9ub19leGlzdGluZ19yZXN1bHQpOgorICAgICAg
ICAodGVzdF9yZWJhc2VsaW5lX2FuZF9jb3B5X3Rlc3Rfd2l0aF9saW9uX3Jlc3VsdCk6CisgICAg
ICAgICh0ZXN0X3JlYmFzZWxpbmVfYW5kX2NvcHlfbm9fb3ZlcndyaXRlX3Rlc3QpOgorCiAyMDEy
LTA0LTI0ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAgICAg
W1Rlc3RSZXN1bHRzU2VydmVyXSBBZGQgYSB1bml0IHRlc3QgZm9yIGNoYW5nZXMgaW4gcjExNDg2
OApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFz
ZWxpbmUucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGlu
ZS5weQppbmRleCA4M2FhNmE2NDA5OTQ2NDE4MTRjNGM0OTZkZTAyNGRhYzM0YmQ2NTIyLi5mYzEx
ODk0OWNhMTEyYTcwZjc0YTk3MDFjMWQ3NTcxMDlmM2M1ZTU4IDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZS5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZS5weQpAQCAtMzgsNiArMzgs
NyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVpbGRib3QgaW1wb3J0IEJ1aWxkQm90CiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQubGF5b3V0dGVzdHJlc3VsdHMgaW1wb3J0IExheW91dFRl
c3RSZXN1bHRzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBT
Y3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnVzZXIgaW1wb3J0IFVzZXIK
K2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS56aXBmaWxlc2V0IGltcG9ydCBaaXBGaWxlU2V0
CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycy50ZXN0X3Jlc3VsdF93cml0
ZXIgaW1wb3J0IFRlc3RSZXN1bHRXcml0ZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1v
ZGVscyBpbXBvcnQgdGVzdF9mYWlsdXJlcwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9k
ZWxzLnRlc3RfY29uZmlndXJhdGlvbiBpbXBvcnQgVGVzdENvbmZpZ3VyYXRpb24KQEAgLTYwLDEw
ICs2MSwxMyBAQCBjbGFzcyBSZWJhc2VsaW5lVGVzdChBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFu
ZCk6CiAgICAgaGVscF90ZXh0ID0gIlJlYmFzZWxpbmUgYSBzaW5nbGUgdGVzdCBmcm9tIGEgYnVp
bGRib3QuICAoQ3VycmVudGx5IHdvcmtzIG9ubHkgd2l0aCBidWlsZC5jaHJvbWl1bS5vcmcgYnVp
bGRib3RzLikiCiAgICAgYXJndW1lbnRfbmFtZXMgPSAiQlVJTERFUl9OQU1FIFRFU1RfTkFNRSBb
UExBVEZPUk1TX1RPX01PVkVfRVhJU1RJTkdfQkFTRUxJTkVTX1RPXSIKIAotICAgIGRlZiBfcmVz
dWx0c191cmwoc2VsZiwgYnVpbGRlcl9uYW1lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0
aW9ucz1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIHN1cGVyKFJlYmFzZWxpbmVUZXN0LCBzZWxm
KS5fX2luaXRfXyhvcHRpb25zLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5femlwX2ZpbGVfc2V0
cyA9IHt9CisKKyAgICBkZWYgX3Jlc3VsdHNfemlwX3VybChzZWxmLCBidWlsZGVyX25hbWUpOgog
ICAgICAgICAjIEZJWE1FOiBHZW5lcmFsaXplIHRoaXMgY29tbWFuZCB0byB3b3JrIHdpdGggbm9u
LWJ1aWxkLmNocm9taXVtLm9yZyBidWlsZGVycy4KLSAgICAgICAgYnVpbGRlciA9IHNlbGYuX3Rv
b2wuY2hyb21pdW1fYnVpbGRib3QoKS5idWlsZGVyX3dpdGhfbmFtZShidWlsZGVyX25hbWUpCi0g
ICAgICAgIHJldHVybiBidWlsZGVyLmFjY3VtdWxhdGVkX3Jlc3VsdHNfdXJsKCkKKyAgICAgICAg
cmV0dXJuIHNlbGYuX3Rvb2wuY2hyb21pdW1fYnVpbGRib3QoKS5idWlsZGVyX3dpdGhfbmFtZShi
dWlsZGVyX25hbWUpLmFjY3VtdWxhdGVkX3Jlc3VsdHNfdXJsKCkucmVwbGFjZSgncmVzdWx0cy9s
YXlvdXQtdGVzdC1yZXN1bHRzJywgJ2xheW91dC10ZXN0LXJlc3VsdHMuemlwJykKIAogICAgIGRl
ZiBfYmFzZWxpbmVfZGlyZWN0b3J5KHNlbGYsIGJ1aWxkZXJfbmFtZSk6CiAgICAgICAgIHBvcnQg
PSBzZWxmLl90b29sLnBvcnRfZmFjdG9yeS5nZXRfZnJvbV9idWlsZGVyX25hbWUoYnVpbGRlcl9u
YW1lKQpAQCAtMTI5LDE4ICsxMzMsMzUgQEAgY2xhc3MgUmViYXNlbGluZVRlc3QoQWJzdHJhY3RE
ZWNsYXJhdGl2ZUNvbW1hbmQpOgogICAgIGRlZiBfZmlsZV9uYW1lX2Zvcl9leHBlY3RlZF9yZXN1
bHQoc2VsZiwgdGVzdF9uYW1lLCBzdWZmaXgpOgogICAgICAgICByZXR1cm4gIiVzLWV4cGVjdGVk
LiVzIiAlIChzZWxmLl90ZXN0X3Jvb3QodGVzdF9uYW1lKSwgc3VmZml4KQogCisgICAgZGVmIF96
aXBfZmlsZV9zZXQoc2VsZiwgdXJsKToKKyAgICAgICAgcmV0dXJuIFppcEZpbGVTZXQodXJsKQor
CisgICAgZGVmIF9mZXRjaF9iYXNlbGluZShzZWxmLCBidWlsZGVyX25hbWUsIHRlc3RfbmFtZSwg
c3VmZml4KToKKyAgICAgICAgIyBGSVhNRTogU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04NDc2MiAuLi4gZmV0Y2hpbmcgdGhlIHdob2xlCisgICAgICAgICMgemlw
IGZpbGUgYW5kIHRoZW4gZXh0cmFjdGluZyBpbmRpdmlkdWFsIHJlc3VsdHMgaXMgbXVjaCBzbG93
ZXIgdGhhbiBqdXN0IGZldGNoaW5nCisgICAgICAgICMgdGhlIHJlc3VsdCBkaXJlY3RseSBmcm9t
IHRoZSBidWlsZGJvdCwgYnV0IGl0IGd1YXJhbnRlZXMgdGhhdCB3ZSBhcmUgZ2V0dGluZyBjb3Jy
ZWN0IHJlc3VsdHMuCisgICAgICAgIG1lbWJlcl9uYW1lID0gc2VsZi5fZmlsZV9uYW1lX2Zvcl9h
Y3R1YWxfcmVzdWx0KHRlc3RfbmFtZSwgc3VmZml4KQorICAgICAgICB6aXBfdXJsID0gc2VsZi5f
cmVzdWx0c196aXBfdXJsKGJ1aWxkZXJfbmFtZSkKKyAgICAgICAgaWYgbm90IGJ1aWxkZXJfbmFt
ZSBpbiBzZWxmLl96aXBfZmlsZV9zZXRzOgorICAgICAgICAgICAgcHJpbnQgIlJldHJpZXZpbmcg
IiArIHppcF91cmwKKyAgICAgICAgICAgIHNlbGYuX3ppcF9maWxlX3NldHNbYnVpbGRlcl9uYW1l
XSA9IHNlbGYuX3ppcF9maWxlX3NldCh6aXBfdXJsKQorCisgICAgICAgIHRyeToKKyAgICAgICAg
ICAgIGRhdGEgPSBzZWxmLl96aXBfZmlsZV9zZXRzW2J1aWxkZXJfbmFtZV0ucmVhZCgnbGF5b3V0
LXRlc3QtcmVzdWx0cy8nICsgbWVtYmVyX25hbWUpCisgICAgICAgICAgICBwcmludCAiICBGb3Vu
ZCAiICsgbWVtYmVyX25hbWUKKyAgICAgICAgICAgIHJldHVybiBkYXRhCisgICAgICAgIGV4Y2Vw
dCBLZXlFcnJvciwgZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKICAgICBkZWYgX3JlYmFz
ZWxpbmVfdGVzdChzZWxmLCBidWlsZGVyX25hbWUsIHRlc3RfbmFtZSwgcGxhdGZvcm1zX3RvX21v
dmVfZXhpc3RpbmdfYmFzZWxpbmVzX3RvLCBzdWZmaXgpOgotICAgICAgICByZXN1bHRzX3VybCA9
IHNlbGYuX3Jlc3VsdHNfdXJsKGJ1aWxkZXJfbmFtZSkKICAgICAgICAgYmFzZWxpbmVfZGlyZWN0
b3J5ID0gc2VsZi5fYmFzZWxpbmVfZGlyZWN0b3J5KGJ1aWxkZXJfbmFtZSkKIAotICAgICAgICBz
b3VyY2VfYmFzZWxpbmUgPSAiJXMvJXMiICUgKHJlc3VsdHNfdXJsLCBzZWxmLl9maWxlX25hbWVf
Zm9yX2FjdHVhbF9yZXN1bHQodGVzdF9uYW1lLCBzdWZmaXgpKQogICAgICAgICB0YXJnZXRfYmFz
ZWxpbmUgPSBzZWxmLl90b29sLmZpbGVzeXN0ZW0uam9pbihiYXNlbGluZV9kaXJlY3RvcnksIHNl
bGYuX2ZpbGVfbmFtZV9mb3JfZXhwZWN0ZWRfcmVzdWx0KHRlc3RfbmFtZSwgc3VmZml4KSkKIAog
ICAgICAgICBpZiBwbGF0Zm9ybXNfdG9fbW92ZV9leGlzdGluZ19iYXNlbGluZXNfdG86CiAgICAg
ICAgICAgICBzZWxmLl9jb3B5X2V4aXN0aW5nX2Jhc2VsaW5lKHBsYXRmb3Jtc190b19tb3ZlX2V4
aXN0aW5nX2Jhc2VsaW5lc190bywgdGVzdF9uYW1lLCBzdWZmaXgpCiAKLSAgICAgICAgcHJpbnQg
IlJldHJpZXZpbmcgJXMuIiAlIHNvdXJjZV9iYXNlbGluZQotICAgICAgICBzZWxmLl9zYXZlX2Jh
c2VsaW5lKHNlbGYuX3Rvb2wud2ViLmdldF9iaW5hcnkoc291cmNlX2Jhc2VsaW5lLCBjb252ZXJ0
XzQwNF90b19Ob25lPVRydWUpLCB0YXJnZXRfYmFzZWxpbmUpCisgICAgICAgIHNlbGYuX3NhdmVf
YmFzZWxpbmUoc2VsZi5fZmV0Y2hfYmFzZWxpbmUoYnVpbGRlcl9uYW1lLCB0ZXN0X25hbWUsIHN1
ZmZpeCksIHRhcmdldF9iYXNlbGluZSkKIAogICAgIGRlZiBfcmViYXNlbGluZV90ZXN0X2FuZF91
cGRhdGVfZXhwZWN0YXRpb25zKHNlbGYsIGJ1aWxkZXJfbmFtZSwgdGVzdF9uYW1lLCBwbGF0Zm9y
bXNfdG9fbW92ZV9leGlzdGluZ19iYXNlbGluZXNfdG8pOgogICAgICAgICBmb3Igc3VmZml4IGlu
IF9iYXNlbGluZV9zdWZmaXhfbGlzdDoKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVfdW5pdHRlc3QucHkKaW5kZXggNDZkOWVk
NDdiZmRmMDY5NTQ1NWRjYWU5OGFjNzg3ZjJhY2NjOTc5Zi4uZjVmN2RiNTJhMzhiOTcxNzk3ODJj
ZTRkZWIzZjQ1OTlkYWViNGI3OSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVfdW5pdHRlc3QucHkKQEAgLTM2LDYgKzM2
LDIwIEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQg
TW9ja0V4ZWN1dGl2ZQogCiAKIGNsYXNzIFRlc3RSZWJhc2VsaW5lKHVuaXR0ZXN0LlRlc3RDYXNl
KToKKyAgICBkZWYgc3R1Yl9yZWJhc2VsaW5lX3Rlc3RfY29tbWFuZF9hbmRfdG9vbChzZWxmKToK
KworICAgICAgICBjbGFzcyBGYWtlWmlwRmlsZVNldChvYmplY3QpOgorICAgICAgICAgICAgY29u
dGVudHMgPSB7fQorCisgICAgICAgICAgICBkZWYgcmVhZChzZWxmLCBtZW1iZXIpOgorICAgICAg
ICAgICAgICAgIHJldHVybiBzZWxmLmNvbnRlbnRzW21lbWJlcl0KKworICAgICAgICBjb21tYW5k
ID0gUmViYXNlbGluZVRlc3QoKQorICAgICAgICB0b29sID0gTW9ja1Rvb2woKQorICAgICAgICBj
b21tYW5kLmJpbmRfdG9fdG9vbCh0b29sKQorICAgICAgICBjb21tYW5kLl96aXBfZmlsZV9zZXQg
PSBsYW1iZGEgdXJsOiBGYWtlWmlwRmlsZVNldCgpCisgICAgICAgIHJldHVybiAoY29tbWFuZCwg
dG9vbCkKKwogICAgIGRlZiB0ZXN0X3Rlc3RzX3RvX3VwZGF0ZShzZWxmKToKICAgICAgICAgY29t
bWFuZCA9IFJlYmFzZWxpbmUoKQogICAgICAgICBjb21tYW5kLmJpbmRfdG9fdG9vbChNb2NrVG9v
bCgpKQpAQCAtNDMsMTAgKzU3LDcgQEAgY2xhc3MgVGVzdFJlYmFzZWxpbmUodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgY29t
bWFuZC5fdGVzdHNfdG9fdXBkYXRlLCBbYnVpbGRdKQogCiAgICAgZGVmIHRlc3RfcmViYXNlbGlu
ZV91cGRhdGVzX2V4cGVjdGF0aW9uc19maWxlX25vb3Aoc2VsZik6Ci0gICAgICAgIGNvbW1hbmQg
PSBSZWJhc2VsaW5lVGVzdCgpCi0gICAgICAgIHRvb2wgPSBNb2NrVG9vbCgpCi0gICAgICAgIGNv
bW1hbmQuYmluZF90b190b29sKHRvb2wpCi0KKyAgICAgICAgY29tbWFuZCwgdG9vbCA9IHNlbGYu
c3R1Yl9yZWJhc2VsaW5lX3Rlc3RfY29tbWFuZF9hbmRfdG9vbCgpCiAgICAgICAgIGxpb25fcG9y
dCA9IHRvb2wucG9ydF9mYWN0b3J5LmdldF9mcm9tX2J1aWxkZXJfbmFtZSgiV2Via2l0IE1hYzEw
LjciKQogICAgICAgICB0b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKGxpb25fcG9ydC5w
YXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoKSwgIiIiQlVHQiBNQUMgTElOVVggWFAgREVC
VUcgOiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLXJlYWxseS1kZWVw
LWFycmF5Lmh0bWwgPSBQQVNTCiBCVUdBIERFQlVHIDogZmFzdC9jc3MvbGFyZ2UtbGlzdC1vZi1y
dWxlcy1jcmFzaC5odG1sID0gVEVYVApAQCAtNTUsMTAgKzY2LDcgQEAgQlVHQSBERUJVRyA6IGZh
c3QvY3NzL2xhcmdlLWxpc3Qtb2YtcnVsZXMtY3Jhc2guaHRtbCA9IFRFWFQKICAgICAgICAgdG9v
bC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShvcy5wYXRoLmpvaW4obGlvbl9wb3J0LmxheW91
dF90ZXN0c19kaXIoKSwgImZhc3QvY3NzL2xhcmdlLWxpc3Qtb2YtcnVsZXMtY3Jhc2guaHRtbCIp
LCAiRHVtbXkgdGVzdCBjb250ZW50cyIpCiAgICAgICAgIHRvb2wuZmlsZXN5c3RlbS53cml0ZV90
ZXh0X2ZpbGUob3MucGF0aC5qb2luKGxpb25fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksICJ1c2Vy
c2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIpLCAiRHVtbXkgdGVzdCBjb250ZW50cyIpCiAKLSAg
ICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0gIiIiUmV0cmlldmluZyBodHRwOi8vZXhhbXBsZS5jb20v
Zi9idWlsZGVycy9XZWJraXQgTWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNl
cnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC5wbmcuCi1SZXRyaWV2aW5nIGh0dHA6Ly9leGFt
cGxlLmNvbS9mL2J1aWxkZXJzL1dlYmtpdCBNYWMxMC43L3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVz
dWx0cy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLndhdi4KLVJldHJpZXZpbmcgaHR0
cDovL2V4YW1wbGUuY29tL2YvYnVpbGRlcnMvV2Via2l0IE1hYzEwLjcvcmVzdWx0cy9sYXlvdXQt
dGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwudHh0LgotIiIiCisg
ICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9ICJSZXRyaWV2aW5nIGh0dHA6Ly9leGFtcGxlLmNvbS9m
L2J1aWxkZXJzL1dlYmtpdCBNYWMxMC43L2xheW91dC10ZXN0LXJlc3VsdHMuemlwXG4iCiAgICAg
ICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBjb21tYW5kLl9yZWJhc2Vs
aW5lX3Rlc3RfYW5kX3VwZGF0ZV9leHBlY3RhdGlvbnMsIFsiV2Via2l0IE1hYzEwLjciLCAidXNl
cnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLCBOb25lXSwgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVj
dGVkX3N0ZG91dCkKIAogICAgICAgICBuZXdfZXhwZWN0YXRpb25zID0gdG9vbC5maWxlc3lzdGVt
LnJlYWRfdGV4dF9maWxlKGxpb25fcG9ydC5wYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUo
KSkKQEAgLTY3LDcwICs3NSw1NiBAQCBCVUdBIERFQlVHIDogZmFzdC9jc3MvbGFyZ2UtbGlzdC1v
Zi1ydWxlcy1jcmFzaC5odG1sID0gVEVYVAogIiIiKQogCiAgICAgZGVmIHRlc3RfcmViYXNlbGlu
ZV91cGRhdGVzX2V4cGVjdGF0aW9uc19maWxlKHNlbGYpOgotICAgICAgICBjb21tYW5kID0gUmVi
YXNlbGluZVRlc3QoKQotICAgICAgICB0b29sID0gTW9ja1Rvb2woKQotICAgICAgICBjb21tYW5k
LmJpbmRfdG9fdG9vbCh0b29sKQorICAgICAgICBjb21tYW5kLCB0b29sID0gc2VsZi5zdHViX3Jl
YmFzZWxpbmVfdGVzdF9jb21tYW5kX2FuZF90b29sKCkKIAogICAgICAgICBsaW9uX3BvcnQgPSB0
b29sLnBvcnRfZmFjdG9yeS5nZXRfZnJvbV9idWlsZGVyX25hbWUoIldlYmtpdCBNYWMxMC43IikK
ICAgICAgICAgdG9vbC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShsaW9uX3BvcnQucGF0aF90
b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCksICJCVUdYIE1BQyA6IHVzZXJzY3JpcHRzL2Fub3Ro
ZXItdGVzdC5odG1sID0gSU1BR0VcbkJVR1ogTElOVVggOiB1c2Vyc2NyaXB0cy9hbm90aGVyLXRl
c3QuaHRtbCA9IElNQUdFXG4iKQogICAgICAgICB0b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9m
aWxlKG9zLnBhdGguam9pbihsaW9uX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLCAidXNlcnNjcmlw
dHMvYW5vdGhlci10ZXN0Lmh0bWwiKSwgIkR1bW15IHRlc3QgY29udGVudHMiKQogCi0gICAgICAg
IGV4cGVjdGVkX3N0ZG91dCA9ICIiIlJldHJpZXZpbmcgaHR0cDovL2V4YW1wbGUuY29tL2YvYnVp
bGRlcnMvV2Via2l0IE1hYzEwLjcvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3Jp
cHRzL2Fub3RoZXItdGVzdC1hY3R1YWwucG5nLgotUmV0cmlldmluZyBodHRwOi8vZXhhbXBsZS5j
b20vZi9idWlsZGVycy9XZWJraXQgTWFjMTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMv
dXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC53YXYuCi1SZXRyaWV2aW5nIGh0dHA6Ly9l
eGFtcGxlLmNvbS9mL2J1aWxkZXJzL1dlYmtpdCBNYWMxMC43L3Jlc3VsdHMvbGF5b3V0LXRlc3Qt
cmVzdWx0cy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLnR4dC4KLSIiIgorICAgICAg
ICBleHBlY3RlZF9zdGRvdXQgPSAiUmV0cmlldmluZyBodHRwOi8vZXhhbXBsZS5jb20vZi9idWls
ZGVycy9XZWJraXQgTWFjMTAuNy9sYXlvdXQtdGVzdC1yZXN1bHRzLnppcFxuIgogICAgICAgICBP
dXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgY29tbWFuZC5fcmViYXNlbGluZV90
ZXN0X2FuZF91cGRhdGVfZXhwZWN0YXRpb25zLCBbIldlYmtpdCBNYWMxMC43IiwgInVzZXJzY3Jp
cHRzL2Fub3RoZXItdGVzdC5odG1sIiwgTm9uZV0sIGV4cGVjdGVkX3N0ZG91dD1leHBlY3RlZF9z
dGRvdXQpCiAKICAgICAgICAgbmV3X2V4cGVjdGF0aW9ucyA9IHRvb2wuZmlsZXN5c3RlbS5yZWFk
X3RleHRfZmlsZShsaW9uX3BvcnQucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2V4cGVjdGF0aW9ucywgIkJVR1ggTEVPUEFSRCBT
Tk9XTEVPUEFSRCA6IHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sID0gSU1BR0VcbkJVR1og
TElOVVggOiB1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCA9IElNQUdFXG4iKQogCiAgICAg
ZGVmIHRlc3RfcmViYXNlbGluZV90ZXN0KHNlbGYpOgotICAgICAgICBjb21tYW5kID0gUmViYXNl
bGluZVRlc3QoKQotICAgICAgICBjb21tYW5kLmJpbmRfdG9fdG9vbChNb2NrVG9vbCgpKQotICAg
ICAgICBleHBlY3RlZF9zdGRvdXQgPSAiUmV0cmlldmluZyBodHRwOi8vZXhhbXBsZS5jb20vZi9i
dWlsZGVycy9XZWJraXQgTGludXgvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3Jp
cHRzL2Fub3RoZXItdGVzdC1hY3R1YWwudHh0LlxuIgorICAgICAgICBjb21tYW5kLCBfID0gc2Vs
Zi5zdHViX3JlYmFzZWxpbmVfdGVzdF9jb21tYW5kX2FuZF90b29sKCkKKyAgICAgICAgZXhwZWN0
ZWRfc3Rkb3V0ID0gIlJldHJpZXZpbmcgaHR0cDovL2V4YW1wbGUuY29tL2YvYnVpbGRlcnMvV2Vi
a2l0IExpbnV4L2xheW91dC10ZXN0LXJlc3VsdHMuemlwXG4iCiAgICAgICAgIE91dHB1dENhcHR1
cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBjb21tYW5kLl9yZWJhc2VsaW5lX3Rlc3QsIFsiV2Vi
a2l0IExpbnV4IiwgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwgTm9uZSwgInR4dCJd
LCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0KQogCiAgICAgZGVmIHRlc3RfcmViYXNl
bGluZV9hbmRfY29weV90ZXN0KHNlbGYpOgotICAgICAgICBjb21tYW5kID0gUmViYXNlbGluZVRl
c3QoKQotICAgICAgICB0b29sID0gTW9ja1Rvb2woKQotICAgICAgICBjb21tYW5kLmJpbmRfdG9f
dG9vbCh0b29sKQorICAgICAgICBjb21tYW5kLCB0b29sID0gc2VsZi5zdHViX3JlYmFzZWxpbmVf
dGVzdF9jb21tYW5kX2FuZF90b29sKCkKIAogICAgICAgICBsaW9uX3BvcnQgPSB0b29sLnBvcnRf
ZmFjdG9yeS5nZXRfZnJvbV9idWlsZGVyX25hbWUoIldlYmtpdCBNYWMxMC43IikKICAgICAgICAg
dG9vbC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShvcy5wYXRoLmpvaW4obGlvbl9wb3J0Lmxh
eW91dF90ZXN0c19kaXIoKSwgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1leHBlY3RlZC50eHQi
KSwgIkR1bW15IGV4cGVjdGVkIHJlc3VsdCIpCiAKICAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0g
IiIiQ29weWluZyBiYXNlbGluZSBmcm9tIC9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3VzZXJz
Y3JpcHRzL2Fub3RoZXItdGVzdC1leHBlY3RlZC50eHQgdG8gL21vY2stY2hlY2tvdXQvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjLXNub3dsZW9wYXJkL3VzZXJzY3JpcHRzL2Fub3Ro
ZXItdGVzdC1leHBlY3RlZC50eHQuCi1SZXRyaWV2aW5nIGh0dHA6Ly9leGFtcGxlLmNvbS9mL2J1
aWxkZXJzL1dlYmtpdCBNYWMxMC43L3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vyc2Ny
aXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLnR4dC4KK1JldHJpZXZpbmcgaHR0cDovL2V4YW1wbGUu
Y29tL2YvYnVpbGRlcnMvV2Via2l0IE1hYzEwLjcvbGF5b3V0LXRlc3QtcmVzdWx0cy56aXAKICIi
IgogICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgY29tbWFuZC5f
cmViYXNlbGluZV90ZXN0LCBbIldlYmtpdCBNYWMxMC43IiwgInVzZXJzY3JpcHRzL2Fub3RoZXIt
dGVzdC5odG1sIiwgWyJjaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQiXSwgInR4dCJdLCBleHBlY3Rl
ZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0KQogCiAgICAgZGVmIHRlc3RfcmViYXNlbGluZV9hbmRf
Y29weV90ZXN0X25vX2V4aXN0aW5nX3Jlc3VsdChzZWxmKToKLSAgICAgICAgY29tbWFuZCA9IFJl
YmFzZWxpbmVUZXN0KCkKLSAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKLSAgICAgICAgY29tbWFu
ZC5iaW5kX3RvX3Rvb2wodG9vbCkKKyAgICAgICAgY29tbWFuZCwgXyA9IHNlbGYuc3R1Yl9yZWJh
c2VsaW5lX3Rlc3RfY29tbWFuZF9hbmRfdG9vbCgpCiAKICAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0
ID0gIiIiTm8gZXhpc3RpbmcgYmFzZWxpbmUgZm9yIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5o
dG1sLgotUmV0cmlldmluZyBodHRwOi8vZXhhbXBsZS5jb20vZi9idWlsZGVycy9XZWJraXQgTWFj
MTAuNy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0
LWFjdHVhbC50eHQuCitSZXRyaWV2aW5nIGh0dHA6Ly9leGFtcGxlLmNvbS9mL2J1aWxkZXJzL1dl
YmtpdCBNYWMxMC43L2xheW91dC10ZXN0LXJlc3VsdHMuemlwCiAiIiIKICAgICAgICAgT3V0cHV0
Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIGNvbW1hbmQuX3JlYmFzZWxpbmVfdGVzdCwg
WyJXZWJraXQgTWFjMTAuNyIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIFsiY2hy
b21pdW0tbWFjLXNub3dsZW9wYXJkIl0sICJ0eHQiXSwgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVjdGVk
X3N0ZG91dCkKIAogICAgIGRlZiB0ZXN0X3JlYmFzZWxpbmVfYW5kX2NvcHlfdGVzdF93aXRoX2xp
b25fcmVzdWx0KHNlbGYpOgotICAgICAgICBjb21tYW5kID0gUmViYXNlbGluZVRlc3QoKQotICAg
ICAgICB0b29sID0gTW9ja1Rvb2woKQotICAgICAgICBjb21tYW5kLmJpbmRfdG9fdG9vbCh0b29s
KQorICAgICAgICBjb21tYW5kLCB0b29sID0gc2VsZi5zdHViX3JlYmFzZWxpbmVfdGVzdF9jb21t
YW5kX2FuZF90b29sKCkKIAogICAgICAgICBsaW9uX3BvcnQgPSB0b29sLnBvcnRfZmFjdG9yeS5n
ZXRfZnJvbV9idWlsZGVyX25hbWUoIldlYmtpdCBNYWMxMC43IikKICAgICAgICAgdG9vbC5maWxl
c3lzdGVtLndyaXRlX3RleHRfZmlsZShvcy5wYXRoLmpvaW4obGlvbl9wb3J0LmJhc2VsaW5lX3Bh
dGgoKSwgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1leHBlY3RlZC50eHQiKSwgIkR1bW15IGV4
cGVjdGVkIHJlc3VsdCIpCiAKICAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0gIiIiQ29weWluZyBi
YXNlbGluZSBmcm9tIC9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
LW1hYy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtZXhwZWN0ZWQudHh0IHRvIC9tb2NrLWNoZWNr
b3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZC91c2Vyc2Ny
aXB0cy9hbm90aGVyLXRlc3QtZXhwZWN0ZWQudHh0LgogQ29weWluZyBiYXNlbGluZSBmcm9tIC9t
b2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy91c2Vyc2NyaXB0
cy9hbm90aGVyLXRlc3QtZXhwZWN0ZWQudHh0IHRvIC9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLW1hYy1sZW9wYXJkL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1l
eHBlY3RlZC50eHQuCi1SZXRyaWV2aW5nIGh0dHA6Ly9leGFtcGxlLmNvbS9mL2J1aWxkZXJzL1dl
YmtpdCBNYWMxMC43L3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0cy9hbm90
aGVyLXRlc3QtYWN0dWFsLnR4dC4KK1JldHJpZXZpbmcgaHR0cDovL2V4YW1wbGUuY29tL2YvYnVp
bGRlcnMvV2Via2l0IE1hYzEwLjcvbGF5b3V0LXRlc3QtcmVzdWx0cy56aXAKICIiIgogICAgICAg
ICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgY29tbWFuZC5fcmViYXNlbGlu
ZV90ZXN0LCBbIldlYmtpdCBNYWMxMC43IiwgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1s
IiwgWyJjaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQiLCAiY2hyb21pdW0tbWFjLWxlb3BhcmQiXSwg
InR4dCJdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0KQogCiAgICAgZGVmIHRlc3Rf
cmViYXNlbGluZV9hbmRfY29weV9ub19vdmVyd3JpdGVfdGVzdChzZWxmKToKLSAgICAgICAgY29t
bWFuZCA9IFJlYmFzZWxpbmVUZXN0KCkKLSAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKLSAgICAg
ICAgY29tbWFuZC5iaW5kX3RvX3Rvb2wodG9vbCkKKyAgICAgICAgY29tbWFuZCwgdG9vbCA9IHNl
bGYuc3R1Yl9yZWJhc2VsaW5lX3Rlc3RfY29tbWFuZF9hbmRfdG9vbCgpCiAKICAgICAgICAgbGlv
bl9wb3J0ID0gdG9vbC5wb3J0X2ZhY3RvcnkuZ2V0X2Zyb21fYnVpbGRlcl9uYW1lKCJXZWJraXQg
TWFjMTAuNyIpCiAgICAgICAgIHRvb2wuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUob3MucGF0
aC5qb2luKGxpb25fcG9ydC5iYXNlbGluZV9wYXRoKCksICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRl
c3QtZXhwZWN0ZWQudHh0IiksICJEdW1teSBleHBlY3RlZCByZXN1bHQiKQpAQCAtMTM5LDcgKzEz
Myw3IEBAIFJldHJpZXZpbmcgaHR0cDovL2V4YW1wbGUuY29tL2YvYnVpbGRlcnMvV2Via2l0IE1h
YzEwLjcvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1CiAgICAgICAgIHRvb2wuZmlsZXN5c3RlbS53
cml0ZV90ZXh0X2ZpbGUob3MucGF0aC5qb2luKHNub3dsZW9wYXJkX3BvcnQuYmFzZWxpbmVfcGF0
aCgpLCAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWV4cGVjdGVkLnR4dCIpLCAiRHVtbXkgZXhw
ZWN0ZWQgcmVzdWx0IikKIAogICAgICAgICBleHBlY3RlZF9zdGRvdXQgPSAiIiJFeGlzdGluZyBi
YXNlbGluZSBhdCAvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1t
YWMtc25vd2xlb3BhcmQvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWV4cGVjdGVkLnR4dCwgbm90
IGNvcHlpbmcgb3ZlciBpdC4KLVJldHJpZXZpbmcgaHR0cDovL2V4YW1wbGUuY29tL2YvYnVpbGRl
cnMvV2Via2l0IE1hYzEwLjcvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRz
L2Fub3RoZXItdGVzdC1hY3R1YWwudHh0LgorUmV0cmlldmluZyBodHRwOi8vZXhhbXBsZS5jb20v
Zi9idWlsZGVycy9XZWJraXQgTWFjMTAuNy9sYXlvdXQtdGVzdC1yZXN1bHRzLnppcAogIiIiCiAg
ICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBjb21tYW5kLl9yZWJh
c2VsaW5lX3Rlc3QsIFsiV2Via2l0IE1hYzEwLjciLCAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0
Lmh0bWwiLCBbImNocm9taXVtLW1hYy1zbm93bGVvcGFyZCJdLCAidHh0Il0sIGV4cGVjdGVkX3N0
ZG91dD1leHBlY3RlZF9zdGRvdXQpCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>