<?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>203784</bug_id>
          
          <creation_ts>2019-11-02 11:14:04 -0700</creation_ts>
          <short_desc>Add support for finding test references via &lt;link rel=&quot;match&quot;&gt; and use that in WPT</short_desc>
          <delta_ts>2025-02-21 15:05:16 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=203783</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=203789</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=204004</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=204005</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=204022</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=204469</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=187003</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=207175</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=234510</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=277586</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>204469</dependson>
    
    <dependson>276390</dependson>
          <blocked>203789</blocked>
    
    <blocked>204050</blocked>
    
    <blocked>207734</blocked>
    
    <blocked>246221</blocked>
    
    <blocked>269985</blocked>
    
    <blocked>270794</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Sam Sneddon [:gsnedders]">gsnedders</assigned_to>
          <cc>ap</cc>
    
    <cc>clopez</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gsnedders</cc>
    
    <cc>jbedard</cc>
    
    <cc>koivisto</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rego</cc>
    
    <cc>rniwa</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1586744</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-11-02 11:14:04 -0700</bug_when>
    <thetext>We should parse test files to look for &lt;link rel=&quot;match&quot;&gt; to support WPT-style ref tests. Right now we have to clone a bunch of files on import.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586985</commentid>
    <comment_count>1</comment_count>
      <attachid>382739</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-11-04 07:58:32 -0800</bug_when>
    <thetext>Created attachment 382739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586987</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-11-04 08:01:30 -0800</bug_when>
    <thetext>Also need to:
1. Fix wpt import script to not copy the refs to -expected*
2. Warn about removing existing -expected.html on new imports and/or do the removal.
3. When both a ref and expected exist, compare the file contents?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587688</commentid>
    <comment_count>3</comment_count>
      <attachid>382896</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-11-05 22:20:21 -0800</bug_when>
    <thetext>Created attachment 382896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587699</commentid>
    <comment_count>4</comment_count>
      <attachid>382896</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-11-05 23:29:01 -0800</bug_when>
    <thetext>Comment on attachment 382896
Patch

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

&gt; Tools/ChangeLog:14
&gt; +        as reference files. On import, existing -expected.html files will be removed.

Is it implemented in this patch? If so, can we add a unit test?

&gt; Tools/Scripts/webkitpy/port/base.py:65
&gt; +from webkitpy.thirdparty.BeautifulSoup import BeautifulSoup, SoupStrainer

I believe WPT is computing this in LayoutTests/imported/w3c/web-platform-tests/tools/manifest/sourcefile.py.
They use html5lib. In the long run, maybe we should just copy LayoutTests/imported/w3c/web-platform-tests/tools python scripts directly.

&gt; Tools/Scripts/webkitpy/port/base.py:-538
&gt; -        result = self._get_reftest_list(test_name)

Can we remove def _get_reftest_list?

&gt; Tools/Scripts/webkitpy/port/base.py:550
&gt; +                _log.warning(&apos;Multiple references are not supported. Importing the first ref defined in {}&apos;.format(test_name))

I did not know about the previous reftest list support in webkitpy. Are we able to support testing multiple reference files?
The warning message could be either updated or removed.

&gt; Tools/Scripts/webkitpy/port/base.py:584
&gt; +    def reference_files(self, test_name, device_type=None):

Can we add unit tests for this method?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588565</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-11-07 20:33:56 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #4)
&gt; Comment on attachment 382896 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=382896&amp;action=review
&gt; 
&gt; &gt; Tools/ChangeLog:14
&gt; &gt; +        as reference files. On import, existing -expected.html files will be removed.
&gt; 
&gt; Is it implemented in this patch? If so, can we add a unit test?

That already happens on import (non-tracked filed are deleted).

&gt; &gt; Tools/Scripts/webkitpy/port/base.py:65
&gt; &gt; +from webkitpy.thirdparty.BeautifulSoup import BeautifulSoup, SoupStrainer
&gt; 
&gt; I believe WPT is computing this in
&gt; LayoutTests/imported/w3c/web-platform-tests/tools/manifest/sourcefile.py.
&gt; They use html5lib. In the long run, maybe we should just copy
&gt; LayoutTests/imported/w3c/web-platform-tests/tools python scripts directly.

BeautifulSoup uses html5lib. This is like the code in TestParser, but we don&apos;t need a full DOM for each test, just the &lt;link&gt; tags. We have to run this on every test, so it needs to be efficient, which is why I didn&apos;t just use TestParser.

&gt; &gt; Tools/Scripts/webkitpy/port/base.py:-538
&gt; &gt; -        result = self._get_reftest_list(test_name)
&gt; 
&gt; Can we remove def _get_reftest_list?

Yes: webkit.org/b/203783

&gt; &gt; Tools/Scripts/webkitpy/port/base.py:550
&gt; &gt; +                _log.warning(&apos;Multiple references are not supported. Importing the first ref defined in {}&apos;.format(test_name))
&gt; 
&gt; I did not know about the previous reftest list support in webkitpy. Are we
&gt; able to support testing multiple reference files?

No

&gt; The warning message could be either updated or removed.

This is straight from TestParser.analyze_test()

&gt; &gt; Tools/Scripts/webkitpy/port/base.py:584
&gt; &gt; +    def reference_files(self, test_name, device_type=None):
&gt; 
&gt; Can we add unit tests for this method?

Sure. Ideally this code wouldn&apos;t live in base.py. I tried moving it, and got hung up on some MockDRT stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588566</commentid>
    <comment_count>6</comment_count>
      <attachid>383107</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-11-07 21:30:31 -0800</bug_when>
    <thetext>Created attachment 383107
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588568</commentid>
    <comment_count>7</comment_count>
      <attachid>383108</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-11-07 21:42:12 -0800</bug_when>
    <thetext>Created attachment 383108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588669</commentid>
    <comment_count>8</comment_count>
      <attachid>383132</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-11-08 09:28:55 -0800</bug_when>
    <thetext>Created attachment 383132
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588676</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-08 09:34:46 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #0)
&gt; We should parse test files to look for &lt;link rel=&quot;match&quot;&gt; to support
&gt; WPT-style ref tests. Right now we have to clone a bunch of files on import.

I don&apos;t think we should do this. There was a long discussion about avoiding this so that we don&apos;t have a graph of tests referencing one another.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588791</commentid>
    <comment_count>10</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-11-08 13:17:25 -0800</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #9)
&gt; (In reply to Simon Fraser (smfr) from comment #0)
&gt; &gt; We should parse test files to look for &lt;link rel=&quot;match&quot;&gt; to support
&gt; &gt; WPT-style ref tests. Right now we have to clone a bunch of files on import.
&gt; 
&gt; I don&apos;t think we should do this. There was a long discussion about avoiding
&gt; this so that we don&apos;t have a graph of tests referencing one another.

What is the exact issue here?
Since we will continue running 1-1 only, running the tests seems equivalent.
For instance, we might be running the same test twice (A vs.B and B vs. A) with both approaches but with the patch, it might be easier to detect it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588797</commentid>
    <comment_count>11</comment_count>
      <attachid>383132</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-11-08 13:26:39 -0800</bug_when>
    <thetext>Comment on attachment 383132
Patch

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

&gt; Tools/Scripts/webkitpy/port/base.py:550
&gt; +                _log.warning(&apos;Multiple references are not supported. Importing the first ref defined in {}&apos;.format(test_name))

This code is coming from TestParser whose purpose is to import tests.
The purpose of this code is to run tests, so we should update the message accordingly.
Or maybe just remove the warning altogether since we know this is a limitation of webkitpy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588798</commentid>
    <comment_count>12</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-11-08 13:27:13 -0800</bug_when>
    <thetext>LGTM to me but I&apos;d like to hear about Ryosuke issues before we land the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588801</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-08 13:33:16 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #10)
&gt; (In reply to Ryosuke Niwa from comment #9)
&gt; &gt; (In reply to Simon Fraser (smfr) from comment #0)
&gt; &gt; &gt; We should parse test files to look for &lt;link rel=&quot;match&quot;&gt; to support
&gt; &gt; &gt; WPT-style ref tests. Right now we have to clone a bunch of files on import.
&gt; &gt; 
&gt; &gt; I don&apos;t think we should do this. There was a long discussion about avoiding
&gt; &gt; this so that we don&apos;t have a graph of tests referencing one another.
&gt; 
&gt; What is the exact issue here?

The issue is that this makes it hard to find the expected result, mismatch, and create unwarranted dependency between files. For example, you can use another test as the expected result. If you modified the test due to a code change, a random other test may start failing.

See this thread: https://lists.webkit.org/pipermail/webkit-dev/2011-November/018470.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588802</commentid>
    <comment_count>14</comment_count>
      <attachid>383132</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-08 13:33:31 -0800</bug_when>
    <thetext>Comment on attachment 383132
Patch

I don&apos;t think we should land this patch until a discussion on webkit-dev happens.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588811</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-08 13:36:57 -0800</bug_when>
    <thetext>Also ee https://bugs.webkit.org/show_bug.cgi?id=66295</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588815</commentid>
    <comment_count>16</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-11-08 13:42:53 -0800</bug_when>
    <thetext>We might think of temporary workarounds then.
One of which could be to have the -ref.html file be a redirect to the actual reference file if the reference file is not in the same directory.
This could be done by the test importer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588825</commentid>
    <comment_count>17</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-11-08 14:02:19 -0800</bug_when>
    <thetext>I mailed webkit-dev. Since WPT use &lt;link rel=&gt; so extensively now, I think we should reconsider.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588828</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-08 14:08:17 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #17)
&gt; I mailed webkit-dev. Since WPT use &lt;link rel=&gt; so extensively now, I think
&gt; we should reconsider.

I think reconsidering the decision is good. After all, I was the one who proposed this change last time around. Replied in the thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588968</commentid>
    <comment_count>19</comment_count>
      <attachid>383201</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-11-08 21:56:45 -0800</bug_when>
    <thetext>Created attachment 383201
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589024</commentid>
    <comment_count>20</comment_count>
      <attachid>383201</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-11-09 11:13:10 -0800</bug_when>
    <thetext>Comment on attachment 383201
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589033</commentid>
    <comment_count>21</comment_count>
      <attachid>383201</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2019-11-09 13:14:36 -0800</bug_when>
    <thetext>Comment on attachment 383201
Patch

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

&gt; Tools/ChangeLog:3
&gt; +        Add support for finding test references via &lt;link rel=&quot;match&quot;&gt;

Catching up on e-mail thread, I see that there is a ~3% overhead for test runtime. That&apos;s kind of outrageous, let&apos;s not land this then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589266</commentid>
    <comment_count>22</comment_count>
      <attachid>383201</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2019-11-11 11:05:47 -0800</bug_when>
    <thetext>Comment on attachment 383201
Patch

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

&gt; Tools/ChangeLog:10
&gt; +        When looking for test references, we now check for a &lt;link rel=&quot;match&quot;&gt;
&gt; +        or &lt;link rel=&quot;mismatch&quot;&gt; before looking in the filesystem for &quot;-expected&quot; files.
&gt; +        A warning is logged if both exist.

The performance hit (3%?) is likely to be much lower if the order of searching for expected results is inverted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591638</commentid>
    <comment_count>23</comment_count>
      <attachid>383201</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-11-19 12:07:30 -0800</bug_when>
    <thetext>Comment on attachment 383201
Patch

I think what we should do is generate MANIFEST.json in imported/w3c/web-platform-tests at import time, and commit it, then use it to find references just for wpt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591662</commentid>
    <comment_count>24</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2019-11-19 13:08:15 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #23)
&gt; Comment on attachment 383201 [details]
&gt; Patch
&gt; 
&gt; I think what we should do is generate MANIFEST.json in
&gt; imported/w3c/web-platform-tests at import time, and commit it, then use it
&gt; to find references just for wpt.

I think some people proposed a workflow where we add WPT tests in WebKit and then use the export script to open github PR. I&apos;m not sure this approach is really used, but if that&apos;s the case, these people should also be sure to re-generate MANIFEST.json</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690556</commentid>
    <comment_count>25</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-21 15:38:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/69332113&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708116</commentid>
    <comment_count>26</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-11-16 21:26:56 -0800</bug_when>
    <thetext>FWIW, we&apos;re not using this mechanism for non-WPT tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829819</commentid>
    <comment_count>27</comment_count>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2022-01-11 09:03:55 -0800</bug_when>
    <thetext>Since https://bugs.webkit.org/show_bug.cgi?id=234510 we&apos;re now importing the -ref files too, which makes us to have a lot of duplicated files using -expected.html &amp; -ref.html at the same time.
See for example the following folder: https://github.com/WebKit/WebKit/tree/main/LayoutTests/imported/w3c/web-platform-tests/html/dom/elements/global-attributes

I believe it&apos;d be really nice to fix this bug and get rid of -expected.html files on WPT imported folder. Otherwise we&apos;re going to end up duplicating most of the references as we sync different folders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1921190</commentid>
    <comment_count>28</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2022-12-21 12:57:34 -0800</bug_when>
    <thetext>*** Bug 249720 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2096890</commentid>
    <comment_count>29</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2025-02-21 15:05:16 -0800</bug_when>
    <thetext>*** Bug 288241 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382739</attachid>
            <date>2019-11-04 07:58:32 -0800</date>
            <delta_ts>2019-11-05 22:20:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203784-20191104075831.patch</filename>
            <type>text/plain</type>
            <size>6017</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxOTYyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2Q0NjM3MjE5MGE3ZjIxZTc0YjI1ZGZiZDhjMDEyN2Ji
NmZmOGExZS4uMjRjMTQ4OTc3MzA3YjEwNzA2Y2M0OWQxNTZiNGNhMWVjZTIzMTUyYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDE5LTExLTA0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBmaW5kaW5nIHRlc3QgcmVmZXJlbmNlcyB2aWEgPGxp
bmsgcmVsPSJtYXRjaCI+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDM3ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3Npbmds
ZV90ZXN0X3J1bm5lci5weToKKyAgICAgICAgKFNpbmdsZVRlc3RSdW5uZXIuX3J1bl9yZWZ0ZXN0
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weToKKyAgICAgICAgKFBv
cnQuX2ZpbmRfcmVmX3ZpYV9saW5rKToKKyAgICAgICAgKFBvcnQuX2ZpbmRfcmVmX3ZpYV9saW5r
Ll9yZWZlcmVuY2VfbGlua3Nfb2ZfdHlwZSk6CisgICAgICAgIChQb3J0LnJlZmVyZW5jZV9maWxl
cyk6CisKIDIwMTktMTEtMDEgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgog
CiAgICAgICAgIFB5dGhvbiAzOiBBZGQgc3VwcG9ydCBpbiB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
bW9kZWwKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weQppbmRleCA3MThh
MDg5NDUzMmU1Yjg4MWQxYTBkMWQzMDZjMTNmNGIwNjE2M2NlLi5kZTc0YWQ5ZmUzODNlMmRhZWY5
YWFiMjAxNmE0Y2RiMzk1ZWE2ZjcxIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3Rf
cnVubmVyLnB5CkBAIC0yOTAsNiArMjkwLDcgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcihvYmpl
Y3QpOgogICAgICAgICByZXR1cm4gZmFpbHVyZXMKIAogICAgIGRlZiBfcnVuX3JlZnRlc3Qoc2Vs
Zik6CisgICAgICAgIF9sb2cuZGVidWcoJ3t9IHJ1bm5pbmcgcmVmIHRlc3Qge30nLmZvcm1hdChz
ZWxmLl93b3JrZXJfbmFtZSwgc2VsZi5fdGVzdF9uYW1lKSkKICAgICAgICAgdGVzdF9vdXRwdXQg
PSBzZWxmLl9kcml2ZXIucnVuX3Rlc3Qoc2VsZi5fZHJpdmVyX2lucHV0KCksIHNlbGYuX3N0b3Bf
d2hlbl9kb25lKQogICAgICAgICB0b3RhbF90ZXN0X3RpbWUgPSAwCiAgICAgICAgIHJlZmVyZW5j
ZV9vdXRwdXQgPSBOb25lCkBAIC0zMDYsNiArMzA3LDcgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5l
cihvYmplY3QpOgogICAgICAgICBmb3IgZXhwZWN0YXRpb24sIHJlZmVyZW5jZV9maWxlbmFtZSBp
biBwdXRBbGxNaXNtYXRjaEJlZm9yZU1hdGNoKHNlbGYuX3JlZmVyZW5jZV9maWxlcyk6CiAgICAg
ICAgICAgICByZWZlcmVuY2VfdGVzdF9uYW1lID0gc2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0X2Zp
bGVuYW1lKHJlZmVyZW5jZV9maWxlbmFtZSkKICAgICAgICAgICAgIHJlZmVyZW5jZV90ZXN0X25h
bWVzLmFwcGVuZChyZWZlcmVuY2VfdGVzdF9uYW1lKQorICAgICAgICAgICAgX2xvZy5kZWJ1Zygn
e30gcnVubmluZyByZWZlcmVuY2Uge30nLmZvcm1hdChzZWxmLl93b3JrZXJfbmFtZSwgcmVmZXJl
bmNlX3Rlc3RfbmFtZSkpCiAgICAgICAgICAgICByZWZlcmVuY2Vfb3V0cHV0ID0gc2VsZi5fZHJp
dmVyLnJ1bl90ZXN0KERyaXZlcklucHV0KHJlZmVyZW5jZV90ZXN0X25hbWUsIHNlbGYuX3RpbWVv
dXQsIE5vbmUsIHNob3VsZF9ydW5fcGl4ZWxfdGVzdD1UcnVlKSwgc2VsZi5fc3RvcF93aGVuX2Rv
bmUpCiAgICAgICAgICAgICB0ZXN0X3Jlc3VsdCA9IHNlbGYuX2NvbXBhcmVfb3V0cHV0X3dpdGhf
cmVmZXJlbmNlKHJlZmVyZW5jZV9vdXRwdXQsIHRlc3Rfb3V0cHV0LCByZWZlcmVuY2VfZmlsZW5h
bWUsIGV4cGVjdGF0aW9uID09ICchPScpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkK
aW5kZXggNjgwMGIxN2VkZjhlZDE2N2RhZDJlNjc4Njg5ZGViNTcwZWFjMjk5NS4uNjU4OGE1ZGI5
OTdkYTVjNTA2MzJmNDE2ZWRjNGIzNTJiZDc0YzkyYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2Jhc2UucHkKQEAgLTYyLDYgKzYyLDggQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuc2Vy
dmVycyBpbXBvcnQgYXBhY2hlX2h0dHBfc2VydmVyLCBodHRwX3NlcnZlciwgaHR0cF8KIGZyb20g
d2Via2l0cHkubGF5b3V0X3Rlc3RzLnNlcnZlcnMgaW1wb3J0IHdlYl9wbGF0Zm9ybV90ZXN0X3Nl
cnZlcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuc2VydmVycyBpbXBvcnQgd2Vic29ja2V0
X3NlcnZlcgogCitmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVsU291cCBpbXBvcnQg
QmVhdXRpZnVsU291cCwgU291cFN0cmFpbmVyCisKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihf
X25hbWVfXykKIAogCkBAIC01MjksNiArNTMxLDQwIEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAg
ICAgICAgICAgIHBhcnNlZF9saXN0LnNldGRlZmF1bHQoZmlsZXN5c3RlbS5qb2luKHRlc3RfZGly
cGF0aCwgdGVzdF9maWxlKSwgW10pLmFwcGVuZCgoZXhwZWN0YXRpb25fdHlwZSwgZmlsZXN5c3Rl
bS5qb2luKHRlc3RfZGlycGF0aCwgcmVmX2ZpbGUpKSkKICAgICAgICAgcmV0dXJuIHBhcnNlZF9s
aXN0CiAKKyAgICBkZWYgX2ZpbmRfcmVmX3ZpYV9saW5rKHNlbGYsIHRlc3RfbmFtZSk6CisgICAg
ICAgICMgVGhpcyBjb2RlIG1hdGNoZXMgY29kZSBpbiB3M2MvdGVzdF9wYXJzZXIucHkgYnV0IHVz
aW5nIHRoYXQgaGVyZSB3b3VsZCBiZSBhIGxheWVyaW5nIHZpb2xhdGlvbi4KKyAgICAgICAgIyBJ
ZGVhbGx5IGFsbCB0aGlzIHJlZmVyZW5jZS1maW5kaW5nIGNvZGUgd291bGQgbW92ZSBvdXQgb2Yg
UG9ydC4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbGlua3MgPSBTb3VwU3RyYWluZXIoJ2xp
bmsnKQorICAgICAgICAgICAgbGlua19zZXQgPSBCZWF1dGlmdWxTb3VwKHNlbGYuX2ZpbGVzeXN0
ZW0ucmVhZF9iaW5hcnlfZmlsZShzZWxmLmFic3BhdGhfZm9yX3Rlc3QodGVzdF9uYW1lKSksIHBh
cnNlT25seVRoZXNlPWxpbmtzKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBfbG9nLndh
cm5pbmcoJ0ZhaWxlZCB0byBwYXJzZSB7fSB0byBkZXRlY3QgPGxpbmsgcmVsPT4gcmVmZXJlbmNl
IHRlc3QnLmZvcm1hdCh0ZXN0X25hbWUpKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAg
ICAgICBkZWYgX3JlZmVyZW5jZV9saW5rc19vZl90eXBlKHJlZnRlc3RfdHlwZSk6CisgICAgICAg
ICAgICByZXR1cm4gbGlua19zZXQuZmluZEFsbChyZWw9cmVmdGVzdF90eXBlKQorCisgICAgICAg
IG1hdGNoZXMgPSBfcmVmZXJlbmNlX2xpbmtzX29mX3R5cGUoJ21hdGNoJykgKyBfcmVmZXJlbmNl
X2xpbmtzX29mX3R5cGUoJ21pc21hdGNoJykKKyAgICAgICAgaWYgbWF0Y2hlczoKKyAgICAgICAg
ICAgIGlmIGxlbihtYXRjaGVzKSA+IDE6CisgICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdN
dWx0aXBsZSByZWZlcmVuY2VzIGFyZSBub3Qgc3VwcG9ydGVkLiBJbXBvcnRpbmcgdGhlIGZpcnN0
IHJlZiBkZWZpbmVkIGluIHt9Jy5mb3JtYXQodGVzdF9uYW1lKSkKKyAgICAgICAgICAgIHRyeToK
KyAgICAgICAgICAgICAgICBocmVmX21hdGNoX2ZpbGUgPSBtYXRjaGVzWzBdWydocmVmJ10uc3Ry
aXAoKQorICAgICAgICAgICAgICAgIG1hdGNoX3R5cGUgPSBtYXRjaGVzWzBdWydyZWwnXQorICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoJ0ZvciB7fSBmb3VuZCBy
ZWZlcmVuY2UgZnJvbSA8bGluayByZWw9e30+IHt9Jy5mb3JtYXQodGVzdF9uYW1lLCBtYXRjaF90
eXBlLCBocmVmX21hdGNoX2ZpbGUpKQorICAgICAgICAgICAgICAgIGlmIGhyZWZfbWF0Y2hfZmls
ZS5zdGFydHN3aXRoKCcvJyk6CisgICAgICAgICAgICAgICAgICAgIHJlZl9maWxlID0gc2VsZi5f
ZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCBocmVmX21hdGNoX2ZpbGUu
bHN0cmlwKCcvJykpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAg
cmVmX2ZpbGUgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCks
IHNlbGYuX2ZpbGVzeXN0ZW0uZGlybmFtZSh0ZXN0X25hbWUpLCBocmVmX21hdGNoX2ZpbGUpCisK
KyAgICAgICAgICAgICAgICByZXR1cm4gKCAnPT0nIGlmIG1hdGNoX3R5cGUgPT0gJ21hdGNoJyBl
bHNlICchPScsIHJlZl9maWxlICkKKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvciBhcyBlOgor
ICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ3t9IGhhcyBhIHJlZmVyZW5jZSBsaW5rIGJ1dCBp
cyBtaXNzaW5nIHRoZSAiaHJlZiInLmZvcm1hdCh0ZXN0X25hbWUpKQorICAgICAgICAgICAgICAg
IHJldHVybiBOb25lCisKKyAgICAgICAgcmV0dXJuIE5vbmUKKwogICAgIGRlZiByZWZlcmVuY2Vf
ZmlsZXMoc2VsZiwgdGVzdF9uYW1lLCBkZXZpY2VfdHlwZT1Ob25lKToKICAgICAgICAgIiIiUmV0
dXJuIGEgbGlzdCBvZiBleHBlY3RhdGlvbiAoPT0gb3IgIT0pIGFuZCBmaWxlbmFtZSBwYWlycyIi
IgogCkBAIC01MzksNiArNTc1LDggQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBpZiBy
ZXN1bHQ6CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmdldChzZWxmLl9maWxlc3lzdGVtLmpv
aW4oc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCksIHRlc3RfbmFtZSksIFtdKQogCisgICAgICAgIG1h
dGNoX2xpbmtfcmVzdWx0ID0gc2VsZi5fZmluZF9yZWZfdmlhX2xpbmsodGVzdF9uYW1lKQorCiAg
ICAgICAgIHJlc3VsdCA9IFtdCiAgICAgICAgIHN1ZmZpeGVzID0gW10KICAgICAgICAgZm9yIHBh
cnQxIGluIFsnJywgJy1taXNtYXRjaCddOgpAQCAtNTUxLDYgKzU4OSwxMiBAQCBjbGFzcyBQb3J0
KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgJyE9JyBpZiAnLW1pc21hdGNoLicgaW4gYmFzZWxp
bmVfZmlsZW5hbWUgZWxzZSAnPT0nLAogICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0u
am9pbihwbGF0Zm9ybV9kaXIsIGJhc2VsaW5lX2ZpbGVuYW1lKSwKICAgICAgICAgICAgICkpCisK
KyAgICAgICAgaWYgbWF0Y2hfbGlua19yZXN1bHQgYW5kIGxlbihyZXN1bHQpOgorICAgICAgICAg
ICAgbGlua19yZWZfcGF0aCA9IG9zLnBhdGgucmVscGF0aChtYXRjaF9saW5rX3Jlc3VsdFsxXSwg
c2VsZi5sYXlvdXRfdGVzdHNfZGlyKCkpCisgICAgICAgICAgICBmaWxlX3JlZl9wYXRoID0gb3Mu
cGF0aC5yZWxwYXRoKHJlc3VsdFswXVsxXSwgc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCkpCisgICAg
ICAgICAgICBfbG9nLndhcm5pbmcoJ0ZvciB7fSBmb3VuZCBib3RoICI8bGluayByZWw9PiIge30g
YW5kIHt9Jy5mb3JtYXQodGVzdF9uYW1lLCBsaW5rX3JlZl9wYXRoLCBmaWxlX3JlZl9wYXRoKSkK
KwogICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBkZWYgcG90ZW50aWFsX3Rlc3RfbmFtZXNf
ZnJvbV9leHBlY3RlZF9maWxlKHNlbGYsIHBhdGgpOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382896</attachid>
            <date>2019-11-05 22:20:21 -0800</date>
            <delta_ts>2019-11-07 21:30:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203784-20191105222020.patch</filename>
            <type>text/plain</type>
            <size>19298</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxOTYyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2Q0NjM3MjE5MGE3ZjIxZTc0YjI1ZGZiZDhjMDEyN2Ji
NmZmOGExZS4uOWNiNTZjNGQwZDFlOGI5NDI1YjdhZGE3MmIxMzhjZGJkYWM1MWVhNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2
IEBACisyMDE5LTExLTA0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBmaW5kaW5nIHRlc3QgcmVmZXJlbmNlcyB2aWEgPGxp
bmsgcmVsPSJtYXRjaCI+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDM3ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXaGVuIGxvb2tpbmcgZm9yIHRlc3QgcmVmZXJlbmNlcywgd2Ugbm93IGNoZWNrIGZv
ciBhIDxsaW5rIHJlbD0ibWF0Y2giPgorICAgICAgICBvciA8bGluayByZWw9Im1pc21hdGNoIj4g
YmVmb3JlIGxvb2tpbmcgaW4gdGhlIGZpbGVzeXN0ZW0gZm9yICItZXhwZWN0ZWQiIGZpbGVzLgor
ICAgICAgICBBIHdhcm5pbmcgaXMgbG9nZ2VkIGlmIGJvdGggZXhpc3QuCisKKyAgICAgICAgRml4
IFdQVCBpbXBvcnRpbmcgdG8gbm90IGNsb25lIHJlZmVyZW5jZSBmaWxlcyBmb3VuZCB2aWEgPGxp
bms+IHRhZ3MgaW50bworICAgICAgICAiLWV4cGVjdGVkLmh0bWwiIGZpbGVzLCBhbmQgdG8gdHJl
YXQgZmlsZXMgd2l0aCAiLXJlZiIgb3IgInJlZmVyZW5jZSIgaW4gdGhlIG5hbWUKKyAgICAgICAg
YXMgcmVmZXJlbmNlIGZpbGVzLiBPbiBpbXBvcnQsIGV4aXN0aW5nIC1leHBlY3RlZC5odG1sIGZp
bGVzIHdpbGwgYmUgcmVtb3ZlZC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weToKKyAgICAgICAgKFNpbmds
ZVRlc3RSdW5uZXIuX3J1bl9yZWZ0ZXN0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvYmFzZS5weToKKyAgICAgICAgKFBvcnQuX2ZpbmRfcmVmZXJlbmNlX2ZpbGVfdmlhX2xpbmtf
dGFnKToKKyAgICAgICAgKFBvcnQuX2ZpbmRfcmVmZXJlbmNlX2ZpbGVfdmlhX2xpbmtfdGFnLl9y
ZWZlcmVuY2VfbGlua3Nfb2ZfdHlwZSk6CisgICAgICAgIChQb3J0Ll9maW5kX3JlZmVyZW5jZV9m
aWxlc19pbl9maWxlc3lzdGVtKToKKyAgICAgICAgKFBvcnQpOgorICAgICAgICAoUG9ydC5yZWZl
cmVuY2VfZmlsZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0
ZXIucHk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIuZmluZF9pbXBvcnRhYmxlX3Rlc3RzKToKKyAg
ICAgICAgKFRlc3RJbXBvcnRlci5pbXBvcnRfdGVzdHMpOgorICAgICAgICAoVGVzdEltcG9ydGVy
Ll9pc19pbl9yZXNvdXJjZXNfZGlyZWN0b3J5KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3czYy90ZXN0X2ltcG9ydGVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAodGVzdF93ZWJraXRfdGVz
dF9ydW5uZXJfaW1wb3J0X3JlZnRlc3RzX3dpdGhfYWJzb2x1dGVfcGF0aHNfZG93bmxvYWQpOgor
ICAgICAgICAodGVzdF93ZWJraXRfdGVzdF9ydW5uZXJfaW1wb3J0X3JlZnRlc3RzX3dpdGhfYWJz
b2x1dGVfcGF0aHNfZnJvbV9zb3VyY2VfZGlyKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3czYy90ZXN0X3BhcnNlci5weToKKyAgICAgICAgKFRlc3RQYXJzZXIuaXNfd3B0X3JlZnRlc3Qp
OgorCiAyMDE5LTExLTAxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBQeXRob24gMzogQWRkIHN1cHBvcnQgaW4gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1v
ZGVsCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250
cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkKaW5kZXggNzE4YTA4
OTQ1MzJlNWI4ODFkMWEwZDFkMzA2YzEzZjRiMDYxNjNjZS4uZGU3NGFkOWZlMzgzZTJkYWVmOWFh
YjIwMTZhNGNkYjM5NWVhNmY3MSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1
bm5lci5weQpAQCAtMjkwLDYgKzI5MCw3IEBAIGNsYXNzIFNpbmdsZVRlc3RSdW5uZXIob2JqZWN0
KToKICAgICAgICAgcmV0dXJuIGZhaWx1cmVzCiAKICAgICBkZWYgX3J1bl9yZWZ0ZXN0KHNlbGYp
OgorICAgICAgICBfbG9nLmRlYnVnKCd7fSBydW5uaW5nIHJlZiB0ZXN0IHt9Jy5mb3JtYXQoc2Vs
Zi5fd29ya2VyX25hbWUsIHNlbGYuX3Rlc3RfbmFtZSkpCiAgICAgICAgIHRlc3Rfb3V0cHV0ID0g
c2VsZi5fZHJpdmVyLnJ1bl90ZXN0KHNlbGYuX2RyaXZlcl9pbnB1dCgpLCBzZWxmLl9zdG9wX3do
ZW5fZG9uZSkKICAgICAgICAgdG90YWxfdGVzdF90aW1lID0gMAogICAgICAgICByZWZlcmVuY2Vf
b3V0cHV0ID0gTm9uZQpAQCAtMzA2LDYgKzMwNyw3IEBAIGNsYXNzIFNpbmdsZVRlc3RSdW5uZXIo
b2JqZWN0KToKICAgICAgICAgZm9yIGV4cGVjdGF0aW9uLCByZWZlcmVuY2VfZmlsZW5hbWUgaW4g
cHV0QWxsTWlzbWF0Y2hCZWZvcmVNYXRjaChzZWxmLl9yZWZlcmVuY2VfZmlsZXMpOgogICAgICAg
ICAgICAgcmVmZXJlbmNlX3Rlc3RfbmFtZSA9IHNlbGYuX3BvcnQucmVsYXRpdmVfdGVzdF9maWxl
bmFtZShyZWZlcmVuY2VfZmlsZW5hbWUpCiAgICAgICAgICAgICByZWZlcmVuY2VfdGVzdF9uYW1l
cy5hcHBlbmQocmVmZXJlbmNlX3Rlc3RfbmFtZSkKKyAgICAgICAgICAgIF9sb2cuZGVidWcoJ3t9
IHJ1bm5pbmcgcmVmZXJlbmNlIHt9Jy5mb3JtYXQoc2VsZi5fd29ya2VyX25hbWUsIHJlZmVyZW5j
ZV90ZXN0X25hbWUpKQogICAgICAgICAgICAgcmVmZXJlbmNlX291dHB1dCA9IHNlbGYuX2RyaXZl
ci5ydW5fdGVzdChEcml2ZXJJbnB1dChyZWZlcmVuY2VfdGVzdF9uYW1lLCBzZWxmLl90aW1lb3V0
LCBOb25lLCBzaG91bGRfcnVuX3BpeGVsX3Rlc3Q9VHJ1ZSksIHNlbGYuX3N0b3Bfd2hlbl9kb25l
KQogICAgICAgICAgICAgdGVzdF9yZXN1bHQgPSBzZWxmLl9jb21wYXJlX291dHB1dF93aXRoX3Jl
ZmVyZW5jZShyZWZlcmVuY2Vfb3V0cHV0LCB0ZXN0X291dHB1dCwgcmVmZXJlbmNlX2ZpbGVuYW1l
LCBleHBlY3RhdGlvbiA9PSAnIT0nKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvYmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5Cmlu
ZGV4IDY4MDBiMTdlZGY4ZWQxNjdkYWQyZTY3ODY4OWRlYjU3MGVhYzI5OTUuLmE0ZDgyOWVkYzU1
MzcwMzZmYTBkOWMyYjBkOGY4MGE4YmVjMDI3ZjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9i
YXNlLnB5CkBAIC02Miw2ICs2Miw4IEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnNlcnZl
cnMgaW1wb3J0IGFwYWNoZV9odHRwX3NlcnZlciwgaHR0cF9zZXJ2ZXIsIGh0dHBfCiBmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5zZXJ2ZXJzIGltcG9ydCB3ZWJfcGxhdGZvcm1fdGVzdF9zZXJ2
ZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnNlcnZlcnMgaW1wb3J0IHdlYnNvY2tldF9z
ZXJ2ZXIKIAorZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJl
YXV0aWZ1bFNvdXAsIFNvdXBTdHJhaW5lcgorCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19u
YW1lX18pCiAKIApAQCAtNTI5LDE2ICs1MzEsNDEgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAg
ICAgICAgICAgcGFyc2VkX2xpc3Quc2V0ZGVmYXVsdChmaWxlc3lzdGVtLmpvaW4odGVzdF9kaXJw
YXRoLCB0ZXN0X2ZpbGUpLCBbXSkuYXBwZW5kKChleHBlY3RhdGlvbl90eXBlLCBmaWxlc3lzdGVt
LmpvaW4odGVzdF9kaXJwYXRoLCByZWZfZmlsZSkpKQogICAgICAgICByZXR1cm4gcGFyc2VkX2xp
c3QKIAotICAgIGRlZiByZWZlcmVuY2VfZmlsZXMoc2VsZiwgdGVzdF9uYW1lLCBkZXZpY2VfdHlw
ZT1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBleHBlY3RhdGlvbiAoPT0gb3Ig
IT0pIGFuZCBmaWxlbmFtZSBwYWlycyIiIgorICAgIGRlZiBfZmluZF9yZWZlcmVuY2VfZmlsZV92
aWFfbGlua190YWcoc2VsZiwgdGVzdF9uYW1lKToKKyAgICAgICAgIyBUaGlzIGNvZGUgbWF0Y2hl
cyBjb2RlIGluIHczYy90ZXN0X3BhcnNlci5weSBidXQgdXNpbmcgdGhhdCBoZXJlIHdvdWxkIGJl
IGEgbGF5ZXJpbmcgdmlvbGF0aW9uLgorICAgICAgICAjIElkZWFsbHkgYWxsIHRoaXMgcmVmZXJl
bmNlLWZpbmRpbmcgY29kZSB3b3VsZCBtb3ZlIG91dCBvZiBQb3J0LgorICAgICAgICB0cnk6Cisg
ICAgICAgICAgICBsaW5rcyA9IFNvdXBTdHJhaW5lcignbGluaycpCisgICAgICAgICAgICBsaW5r
X3NldCA9IEJlYXV0aWZ1bFNvdXAoc2VsZi5fZmlsZXN5c3RlbS5yZWFkX2JpbmFyeV9maWxlKHNl
bGYuYWJzcGF0aF9mb3JfdGVzdCh0ZXN0X25hbWUpKSwgcGFyc2VPbmx5VGhlc2U9bGlua3MpCisg
ICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIF9sb2cud2FybmluZygnRmFpbGVkIHRvIHBhcnNl
IHt9IHRvIGRldGVjdCA8bGluayByZWw9PiByZWZlcmVuY2UgdGVzdCcuZm9ybWF0KHRlc3RfbmFt
ZSkpCisgICAgICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgICAgIGlmIHNlbGYuZ2V0X29wdGlv
bigndHJlYXRfcmVmX3Rlc3RzX2FzX3BpeGVsX3Rlc3RzJyk6Ci0gICAgICAgICAgICByZXR1cm4g
W10KKyAgICAgICAgZGVmIF9yZWZlcmVuY2VfbGlua3Nfb2ZfdHlwZShyZWZ0ZXN0X3R5cGUpOgor
ICAgICAgICAgICAgcmV0dXJuIGxpbmtfc2V0LmZpbmRBbGwocmVsPXJlZnRlc3RfdHlwZSkKIAot
ICAgICAgICByZXN1bHQgPSBzZWxmLl9nZXRfcmVmdGVzdF9saXN0KHRlc3RfbmFtZSkKLSAgICAg
ICAgaWYgcmVzdWx0OgotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5nZXQoc2VsZi5fZmlsZXN5
c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCB0ZXN0X25hbWUpLCBbXSkKKyAgICAg
ICAgbWF0Y2hlcyA9IF9yZWZlcmVuY2VfbGlua3Nfb2ZfdHlwZSgnbWF0Y2gnKSArIF9yZWZlcmVu
Y2VfbGlua3Nfb2ZfdHlwZSgnbWlzbWF0Y2gnKQorICAgICAgICBpZiBtYXRjaGVzOgorICAgICAg
ICAgICAgaWYgbGVuKG1hdGNoZXMpID4gMToKKyAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmco
J011bHRpcGxlIHJlZmVyZW5jZXMgYXJlIG5vdCBzdXBwb3J0ZWQuIEltcG9ydGluZyB0aGUgZmly
c3QgcmVmIGRlZmluZWQgaW4ge30nLmZvcm1hdCh0ZXN0X25hbWUpKQorICAgICAgICAgICAgdHJ5
OgorICAgICAgICAgICAgICAgIGhyZWZfbWF0Y2hfZmlsZSA9IG1hdGNoZXNbMF1bJ2hyZWYnXS5z
dHJpcCgpCisgICAgICAgICAgICAgICAgbWF0Y2hfdHlwZSA9IG1hdGNoZXNbMF1bJ3JlbCddCisg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBfbG9nLmRlYnVnKCdGb3Ige30gZm91bmQgcmVm
ZXJlbmNlIGZyb20gPGxpbmsgcmVsPXt9PiB7fScuZm9ybWF0KHRlc3RfbmFtZSwgbWF0Y2hfdHlw
ZSwgaHJlZl9tYXRjaF9maWxlKSkKKyAgICAgICAgICAgICAgICBpZiBocmVmX21hdGNoX2ZpbGUu
c3RhcnRzd2l0aCgnLycpOgorICAgICAgICAgICAgICAgICAgICByZWZfZmlsZSA9IHNlbGYuX2Zp
bGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgaHJlZl9tYXRjaF9maWxlLmxz
dHJpcCgnLycpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJl
Zl9maWxlID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCBz
ZWxmLl9maWxlc3lzdGVtLmRpcm5hbWUodGVzdF9uYW1lKSwgaHJlZl9tYXRjaF9maWxlKQorCisg
ICAgICAgICAgICAgICAgcmV0dXJuIFsoJz09JyBpZiBtYXRjaF90eXBlID09ICdtYXRjaCcgZWxz
ZSAnIT0nLCByZWZfZmlsZSldCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3IgYXMgZToKKyAg
ICAgICAgICAgICAgICBfbG9nLmVycm9yKCd7fSBoYXMgYSByZWZlcmVuY2UgbGluayBidXQgaXMg
bWlzc2luZyB0aGUgImhyZWYiJy5mb3JtYXQodGVzdF9uYW1lKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gTm9uZQogCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgX2ZpbmRfcmVmZXJl
bmNlX2ZpbGVzX2luX2ZpbGVzeXN0ZW0oc2VsZiwgdGVzdF9uYW1lLCBkZXZpY2VfdHlwZT1Ob25l
KToKICAgICAgICAgcmVzdWx0ID0gW10KICAgICAgICAgc3VmZml4ZXMgPSBbXQogICAgICAgICBm
b3IgcGFydDEgaW4gWycnLCAnLW1pc21hdGNoJ106CkBAIC01NTEsOCArNTc4LDMzIEBAIGNsYXNz
IFBvcnQob2JqZWN0KToKICAgICAgICAgICAgICAgICAnIT0nIGlmICctbWlzbWF0Y2guJyBpbiBi
YXNlbGluZV9maWxlbmFtZSBlbHNlICc9PScsCiAgICAgICAgICAgICAgICAgc2VsZi5fZmlsZXN5
c3RlbS5qb2luKHBsYXRmb3JtX2RpciwgYmFzZWxpbmVfZmlsZW5hbWUpLAogICAgICAgICAgICAg
KSkKKwogICAgICAgICByZXR1cm4gcmVzdWx0CiAKKyAgICBkZWYgcmVmZXJlbmNlX2ZpbGVzKHNl
bGYsIHRlc3RfbmFtZSwgZGV2aWNlX3R5cGU9Tm9uZSk6CisgICAgICAgICIiIlJldHVybiBhIGxp
c3Qgb2YgZXhwZWN0YXRpb24gKD09IG9yICE9KSBhbmQgZmlsZW5hbWUgcGFpcnMiIiIKKworICAg
ICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3RyZWF0X3JlZl90ZXN0c19hc19waXhlbF90ZXN0cycp
OgorICAgICAgICAgICAgcmV0dXJuIFtdCisKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5fZ2V0X3Jl
ZnRlc3RfbGlzdCh0ZXN0X25hbWUpCisgICAgICAgIGlmIHJlc3VsdDoKKyAgICAgICAgICAgIHJl
dHVybiByZXN1bHQuZ2V0KHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19k
aXIoKSwgdGVzdF9uYW1lKSwgW10pCisKKyAgICAgICAgbGlua190YWdfcmVmZXJlbmNlX2ZpbGUg
PSBzZWxmLl9maW5kX3JlZmVyZW5jZV9maWxlX3ZpYV9saW5rX3RhZyh0ZXN0X25hbWUpCisgICAg
ICAgICMgRklYTUU6IFN0b3AgaGl0dGluZyB0aGUgZmlsZXN5c3RlbSBsb29raW5nIGZvciByZWZl
cmVuY2UgZmlsZXMgb25jZSB3ZSd2ZSBlbWJyYWNlZCA8bGluayByZWw9IiI+CisgICAgICAgIGZp
bGVzeXN0ZW1fcmVmZXJlbmNlX2ZpbGVzID0gc2VsZi5fZmluZF9yZWZlcmVuY2VfZmlsZXNfaW5f
ZmlsZXN5c3RlbSh0ZXN0X25hbWUsIGRldmljZV90eXBlKQorCisgICAgICAgIGlmIGxpbmtfdGFn
X3JlZmVyZW5jZV9maWxlIGFuZCBmaWxlc3lzdGVtX3JlZmVyZW5jZV9maWxlczoKKyAgICAgICAg
ICAgIGxpbmtfcmVmX3BhdGggPSBvcy5wYXRoLnJlbHBhdGgobGlua190YWdfcmVmZXJlbmNlX2Zp
bGVbMF1bMV0sIHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpKQorICAgICAgICAgICAgZmlsZV9yZWZf
cGF0aCA9IG9zLnBhdGgucmVscGF0aChmaWxlc3lzdGVtX3JlZmVyZW5jZV9maWxlc1swXVsxXSwg
c2VsZi5sYXlvdXRfdGVzdHNfZGlyKCkpCisgICAgICAgICAgICBfbG9nLndhcm5pbmcoJ0ZvciB7
fSBmb3VuZCBib3RoICI8bGluayByZWw9PiIge30gYW5kIHt9Jy5mb3JtYXQodGVzdF9uYW1lLCBs
aW5rX3JlZl9wYXRoLCBmaWxlX3JlZl9wYXRoKSkKKworICAgICAgICBpZiBsaW5rX3RhZ19yZWZl
cmVuY2VfZmlsZToKKyAgICAgICAgICAgIHJldHVybiBsaW5rX3RhZ19yZWZlcmVuY2VfZmlsZQor
CisgICAgICAgIHJldHVybiBmaWxlc3lzdGVtX3JlZmVyZW5jZV9maWxlcworCiAgICAgZGVmIHBv
dGVudGlhbF90ZXN0X25hbWVzX2Zyb21fZXhwZWN0ZWRfZmlsZShzZWxmLCBwYXRoKToKICAgICAg
ICAgIiIiUmV0dXJuIHBvdGVudGlhbCB0ZXN0IG5hbWVzIGlmIGFueSBmcm9tIGEgcG90ZW50aWFs
IGV4cGVjdGVkIGZpbGUgcGF0aCwgcmVsYXRpdmUgdG8gTGF5b3V0VGVzdHMgZGlyZWN0b3J5LiIi
IgogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVy
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weQpvbGQgbW9k
ZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDA1MWIxYmM3YjEyMDMwZTc5YWU4ZTliMDUz
OWFmZTFmMTY0NjQzNWUuLjIwZTM3N2RiNjQ3ZjI4YzE2ODk3ODI4YzU1NGVmMjA3NzE4NmUzNWMK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5CkBAIC0zMjYsNyArMzI2
LDggQEAgY2xhc3MgVGVzdEltcG9ydGVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgIGNv
cHlfbGlzdC5hcHBlbmQoeydzcmMnOiBmdWxscGF0aCwgJ2Rlc3QnOiBmaWxlbmFtZX0pCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgZWxpZiBzZWxmLl9pc19p
bl9yZXNvdXJjZXNfZGlyZWN0b3J5KGZ1bGxwYXRoKToKLSAgICAgICAgICAgICAgICAgICAgX2xv
Zy53YXJuaW5nKCclcyBpcyBhIHRlc3QgbG9jYXRlZCBpbiBhICJyZXNvdXJjZXMiIGZvbGRlci4g
VGhpcyB0ZXN0IHdpbGwgYmUgc2tpcHBlZCBieSBXZWJLaXQgdGVzdCBydW5uZXJzLicsIGZ1bGxw
YXRoKQorICAgICAgICAgICAgICAgICAgICBpZiBub3QgJ3JlZmVyZW5jZWZpbGUnIGluIHRlc3Rf
aW5mby5rZXlzKCk6CisgICAgICAgICAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoJyVzIGlz
IGEgdGVzdCBsb2NhdGVkIGluIGEgInJlc291cmNlcyIgb3IgInJlZmVyZW5jZSIgZm9sZGVyLiBU
aGlzIHRlc3Qgd2lsbCBiZSBza2lwcGVkIGJ5IFdlYktpdCB0ZXN0IHJ1bm5lcnMuJywgZnVsbHBh
dGgpCiAKICAgICAgICAgICAgICAgICBpZiAnbWFudWFsdGVzdCcgaW4gdGVzdF9pbmZvLmtleXMo
KToKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTMzNSwyMyArMzM2LDIwIEBAIGNs
YXNzIFRlc3RJbXBvcnRlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9zbG93
X3Rlc3RzLmFwcGVuZChmdWxscGF0aCkKIAogICAgICAgICAgICAgICAgIGlmICdyZWZlcmVuY2Vm
aWxlJyBpbiB0ZXN0X2luZm8ua2V5cygpOgotICAgICAgICAgICAgICAgICAgICAjIFNraXAgaXQg
c2luY2UsIHRoZSBjb3JyZXNwb25kaW5nIHJlZmVyZW5jZSB0ZXN0IHNob3VsZCBoYXZlIGEgbGlu
ayB0byB0aGlzIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCdDb3B5aW5nIHJl
c291cmNlIGZpbGUgZnJvbSB7fSB0byB7fScuZm9ybWF0KGZ1bGxwYXRoLCBmaWxlbmFtZSkpCisg
ICAgICAgICAgICAgICAgICAgIGNvcHlfbGlzdC5hcHBlbmQoeydzcmMnOiBmdWxscGF0aCwgJ2Rl
c3QnOiBmaWxlbmFtZX0pCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAg
ICAgICAgICBpZiAncmVmZXJlbmNlJyBpbiB0ZXN0X2luZm8ua2V5cygpOgogICAgICAgICAgICAg
ICAgICAgICByZWZ0ZXN0cyArPSAxCiAgICAgICAgICAgICAgICAgICAgIHRvdGFsX3Rlc3RzICs9
IDEKLSAgICAgICAgICAgICAgICAgICAgdGVzdF9iYXNlbmFtZSA9IHNlbGYuZmlsZXN5c3RlbS5i
YXNlbmFtZSh0ZXN0X2luZm9bJ3Rlc3QnXSkKIAotICAgICAgICAgICAgICAgICAgICAjIEFkZCB0
aGUgcmVmIGZpbGUsIGZvbGxvd2luZyBXZWJLaXQgc3R5bGUuCi0gICAgICAgICAgICAgICAgICAg
ICMgRklYTUU6IElkZWFsbHkgd2UnZCBzdXBwb3J0IHJlYWRpbmcgdGhlIG1ldGFkYXRhCi0gICAg
ICAgICAgICAgICAgICAgICMgZGlyZWN0bHkgcmF0aGVyIHRoYW4gcmVseWluZyAgb24gYSBuYW1p
bmcgY29udmVudGlvbi4KLSAgICAgICAgICAgICAgICAgICAgIyBVc2luZyBhIG5hbWluZyBjb252
ZW50aW9uIGNyZWF0ZXMgZHVwbGljYXRlIGNvcGllcyBvZiB0aGUKLSAgICAgICAgICAgICAgICAg
ICAgIyByZWZlcmVuY2UgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgICMgQ2hlY2sgdG8gc2Vl
IGlmIHRoZXJlJ3MgYW4gZXhpc3RpbmcgcmVmZXJlbmNlIHRvIHJlbW92ZS4KKyAgICAgICAgICAg
ICAgICAgICAgdGVzdF9iYXNlbmFtZSA9IHNlbGYuZmlsZXN5c3RlbS5iYXNlbmFtZSh0ZXN0X2lu
Zm9bJ3Rlc3QnXSkKICAgICAgICAgICAgICAgICAgICAgcmVmX2ZpbGUgPSBzZWxmLmZpbGVzeXN0
ZW0uc3BsaXRleHQodGVzdF9iYXNlbmFtZSlbMF0gKyAnLWV4cGVjdGVkJwogICAgICAgICAgICAg
ICAgICAgICByZWZfZmlsZSArPSBzZWxmLmZpbGVzeXN0ZW0uc3BsaXRleHQodGVzdF9pbmZvWydy
ZWZlcmVuY2UnXSlbMV0KKyAgICAgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCdDaGVja2luZyB0
byBzZWUgaWYge30gZXhpc3RzJy5mb3JtYXQocmVmX2ZpbGUpKQogCi0gICAgICAgICAgICAgICAg
ICAgIGNvcHlfbGlzdC5hcHBlbmQoeydzcmMnOiB0ZXN0X2luZm9bJ3JlZmVyZW5jZSddLCAnZGVz
dCc6IHJlZl9maWxlLCAncmVmZXJlbmNlX3N1cHBvcnRfaW5mbyc6IHRlc3RfaW5mb1sncmVmZXJl
bmNlX3N1cHBvcnRfaW5mbyddfSkKICAgICAgICAgICAgICAgICAgICAgY29weV9saXN0LmFwcGVu
ZCh7J3NyYyc6IHRlc3RfaW5mb1sndGVzdCddLCAnZGVzdCc6IGZpbGVuYW1lfSkKIAogICAgICAg
ICAgICAgICAgIGVsaWYgJ2pzdGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKToKQEAgLTU3NSw2ICs1
NzMsNyBAQCBjbGFzcyBUZXN0SW1wb3J0ZXIob2JqZWN0KToKICAgICAgICAgICAgIGZpbGVzID0g
c2VsZi5fdGVzdF9yZXNvdXJjZV9maWxlc1siZmlsZXMiXQogICAgICAgICAgICAgZm9yIGZ1bGxf
cGF0aCBpbiBzZWxmLl9wb3RlbnRpYWxfdGVzdF9yZXNvdXJjZV9maWxlczoKICAgICAgICAgICAg
ICAgICByZXNvdXJjZV9maWxlX3BhdGggPSBzZWxmLmZpbGVzeXN0ZW0ucmVscGF0aChmdWxsX3Bh
dGgsIHNlbGYuc291cmNlX2RpcmVjdG9yeSkKKyAgICAgICAgICAgICAgICBfbG9nLmluZm8oJ1Ry
YWNraW5nIHJlc291cmNlIGZpbGUge30nLmZvcm1hdChyZXNvdXJjZV9maWxlX3BhdGgpKQogICAg
ICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9hbHJlYWR5X2lkZW50aWZpZWRfYXNfcmVzb3VyY2Vf
ZmlsZShyZXNvdXJjZV9maWxlX3BhdGgpOgogICAgICAgICAgICAgICAgICAgICBmaWxlcy5hcHBl
bmQocmVzb3VyY2VfZmlsZV9wYXRoKQogICAgICAgICAgICAgICAgICAgICBzaG91bGRfdXBkYXRl
X2pzb25fZmlsZSA9IFRydWUKQEAgLTU5Myw3ICs1OTIsOCBAQCBjbGFzcyBUZXN0SW1wb3J0ZXIo
b2JqZWN0KToKICAgICAgICAgcmV0dXJuIGFueShbcGF0aC5maW5kKGRpcmVjdG9yeSkgIT0gLTEg
Zm9yIGRpcmVjdG9yeSBpbiBzZWxmLl90ZXN0X3Jlc291cmNlX2ZpbGVzWyJkaXJlY3RvcmllcyJd
XSkKIAogICAgIGRlZiBfaXNfaW5fcmVzb3VyY2VzX2RpcmVjdG9yeShzZWxmLCBwYXRoKToKLSAg
ICAgICAgcmV0dXJuICJyZXNvdXJjZXMiIGluIHBhdGguc3BsaXQoc2VsZi5maWxlc3lzdGVtLnNl
cCkKKyAgICAgICAgZGlycyA9IHBhdGguc3BsaXQoc2VsZi5maWxlc3lzdGVtLnNlcCkKKyAgICAg
ICAgcmV0dXJuICJyZXNvdXJjZXMiIGluIGRpcnMgb3IgInJlZmVyZW5jZSIgaW4gZGlycwogCiAg
ICAgZGVmIHVwZGF0ZV90ZXN0c19vcHRpb25zKHNlbGYpOgogICAgICAgICBzaG91bGRfdXBkYXRl
ID0gc2VsZi5vcHRpb25zLmNsZWFuX2Rlc3RpbmF0aW9uX2RpcmVjdG9yeQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlcl91bml0dGVzdC5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXJfdW5pdHRlc3QucHkKaW5kZXgg
YzBmYzNkMmIyZWQ0MzIzMDNkMGFlMjFlYmUzNTQ5OGJkZjA0NWU5MC4uZjZkOWZhNGMyOWYxOTJm
NGU0ZGM2MWQ5YTc3MDExYTNmZTdkODI5OCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS93M2MvdGVzdF9pbXBvcnRlcl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyX3VuaXR0ZXN0LnB5CkBAIC0zOTgsMjcgKzM5OCwyOSBA
QCBjbGFzcyBUZXN0SW1wb3J0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvV2ViS2l0QnVpbGQvdzNjLXRl
c3RzL3RvLWJlLWltcG9ydGVkL2Nzc3dnLXRlc3RzL3QvdGVzdDEuaHRtbCcpKQogICAgICAgICBz
ZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9XZWJLaXRCdWlsZC93M2Mt
dGVzdHMvdG8tYmUtaW1wb3J0ZWQvY3Nzd2ctdGVzdHMvdC90ZXN0MS1yZWYuaHRtbCcpKQogICAg
ICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0
cy93M2MvY3Nzd2ctdGVzdHMvdC90ZXN0MS5odG1sJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy9jc3N3Zy10ZXN0cy90
L3Rlc3QxLWV4cGVjdGVkLmh0bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0
cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL2Nzc3dnLXRlc3RzL3QvdGVzdDEtcmVm
Lmh0bWwnKSkKICAgICAgICAgIyB0ZXN0MgogICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhp
c3RzKCcvbW9jay1jaGVja291dC9XZWJLaXRCdWlsZC93M2MtdGVzdHMvdG8tYmUtaW1wb3J0ZWQv
Y3Nzd2ctdGVzdHMvdC90ZXN0Mi5odG1sJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5l
eGlzdHMoJy9tb2NrLWNoZWNrb3V0L1dlYktpdEJ1aWxkL3czYy10ZXN0cy90by1iZS1pbXBvcnRl
ZC9jc3N3Zy10ZXN0cy9zb21lL2RpcmVjdG9yeS9pbi9jc3N3Zy1yb290L3Rlc3QyLXJlZi5odG1s
JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9M
YXlvdXRUZXN0cy93M2MvY3Nzd2ctdGVzdHMvdC90ZXN0Mi1leHBlY3RlZC5odG1sJykpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3Rz
L3czYy9jc3N3Zy10ZXN0cy90L3Rlc3QyLmh0bWwnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL2Nzc3dnLXRlc3RzL3Qv
dGVzdDItZXhwZWN0ZWQuaHRtbCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3Rz
KCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93M2MvY3Nzd2ctdGVzdHMvc29tZS9kaXJlY3Rv
cnkvaW4vY3Nzd2ctcm9vdC90ZXN0Mi1yZWYuaHRtbCcpKQogICAgICAgICAjIHRlc3QzCiAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L1dlYktpdEJ1aWxk
L3czYy10ZXN0cy90by1iZS1pbXBvcnRlZC93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFn
ZXMvdGVzdDMuaHRtbCcpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9j
ay1jaGVja291dC9XZWJLaXRCdWlsZC93M2MtdGVzdHMvdG8tYmUtaW1wb3J0ZWQvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL3Rlc3QzLXJlZi5odG1sJykpCiAgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvdGVzdDMuaHRtbCcpKQotICAgICAgICBzZWxm
LmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL3Rlc3QzLWV4cGVjdGVkLmh0bWwnKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVz
dHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy90ZXN0My1yZWYuaHRtbCcp
KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5
b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy90ZXN0My1leHBl
Y3RlZC5odG1sJykpCiAgICAgICAgICMgdGVzdDQKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZz
LmV4aXN0cygnL21vY2stY2hlY2tvdXQvV2ViS2l0QnVpbGQvdzNjLXRlc3RzL3RvLWJlLWltcG9y
dGVkL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy90ZXN0NC5odG1sJykpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L1dlYktpdEJ1aWxk
L3czYy10ZXN0cy90by1iZS1pbXBvcnRlZC93ZWItcGxhdGZvcm0tdGVzdHMvc29tZS9kaXJlY3Rv
cnkvaW4vd3B0LXJvb3QvdGVzdDQtcmVmLmh0bWwnKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWltYWdlcy90ZXN0NC5odG1sJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1pbWFnZXMvdGVzdDQtZXhwZWN0ZWQuaHRtbCcpKQorICAgICAgICBzZWxm
LmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3NvbWUvZGlyZWN0b3J5L2luL3dwdC1yb290L3Rlc3Q0LXJlZi5odG1s
JykpCiAgICAgICAgICMgdGVzdDUKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygn
L21vY2stY2hlY2tvdXQvV2ViS2l0QnVpbGQvdzNjLXRlc3RzL3RvLWJlLWltcG9ydGVkL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy90ZXN0NS5odG1sJykpCiAgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L1dlYktpdEJ1aWxkL3czYy10ZXN0
cy90by1iZS1pbXBvcnRlZC93ZWItcGxhdGZvcm0tdGVzdHMvc29tZS9kaXJlY3RvcnkvaW4vd3B0
LXJvb3QvdGVzdDUtcmVmLmh0bWwnKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0
cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWltYWdlcy90ZXN0NS5odG1sJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlz
dHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1pbWFnZXMvdGVzdDUtZXhwZWN0ZWQuaHRtbCcpKQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3NvbWUvZGlyZWN0b3J5L2luL3dwdC1yb290L3Rlc3Q1LXJlZi5odG1sJykpCiAKICAg
ICBkZWYgdGVzdF93ZWJraXRfdGVzdF9ydW5uZXJfaW1wb3J0X3JlZnRlc3RzX3dpdGhfYWJzb2x1
dGVfcGF0aHNfZnJvbV9zb3VyY2VfZGlyKHNlbGYpOgogICAgICAgICBGQUtFX0ZJTEVTID0gewpA
QCAtNDI4LDE5ICs0MzAsMjkgQEAgY2xhc3MgVGVzdEltcG9ydGVyVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgICAgICAgICAnL2hvbWUvdXNlci93cHQvc29tZS9kaXJlY3RvcnkvaW4vd3B0
LXJvb3QvdGVzdDItcmVmLmh0bWwnOiAnPGh0bWw+PC9odG1sPicsCiAgICAgICAgICAgICAnL2hv
bWUvdXNlci93cHQvY3NzL2Nzcy1pbWFnZXMvdGVzdDMuaHRtbCc6ICc8aHRtbD48aGVhZD48bGlu
ayByZWw9bWF0Y2ggaHJlZj0iICAgICAgICAgICAgIC9zb21lL2RpcmVjdG9yeS9pbi93cHQtcm9v
dC90ZXN0My1yZWYuaHRtbCAgICAiPjwvaGVhZD48L2h0bWw+JywKICAgICAgICAgICAgICcvaG9t
ZS91c2VyL3dwdC9zb21lL2RpcmVjdG9yeS9pbi93cHQtcm9vdC90ZXN0My1yZWYuaHRtbCc6ICc8
aHRtbD48L2h0bWw+JywKKyAgICAgICAgICAgICcvaG9tZS91c2VyL3dwdC9jc3MvY3NzLWltYWdl
cy90ZXN0NC5odG1sJzogJzxodG1sPjxoZWFkPjxsaW5rIHJlbD1tYXRjaCBocmVmPXRlc3Q0LXJl
Zi5odG1sPjwvaGVhZD48L2h0bWw+JywKKyAgICAgICAgICAgICcvaG9tZS91c2VyL3dwdC9jc3Mv
Y3NzLWltYWdlcy90ZXN0NC1yZWYuaHRtbCc6ICc8aHRtbD48L2h0bWw+JywKKyAgICAgICAgICAg
ICcvaG9tZS91c2VyL3dwdC9jc3MvY3NzLXZhbHVlcy90ZXN0MS5odG1sJzogJzxodG1sPjxoZWFk
PjxsaW5rIHJlbD1tYXRjaCBocmVmPXJlZmVyZW5jZS9ncmVlbi1zcXVhcmUuaHRtbD48L2hlYWQ+
PC9odG1sPicsCisgICAgICAgICAgICAnL2hvbWUvdXNlci93cHQvY3NzL2Nzcy12YWx1ZXMvcmVm
ZXJlbmNlL2dyZWVuLXNxdWFyZS5odG1sJzogJzxodG1sPjwvaHRtbD4nLAogICAgICAgICB9CiAg
ICAgICAgIEZBS0VfRklMRVMudXBkYXRlKEZBS0VfUkVQT1NJVE9SSUVTKQogCiAgICAgICAgIGZz
ID0gc2VsZi5pbXBvcnRfZGlyZWN0b3J5KFsnLXMnLCAnL2hvbWUvdXNlci93cHQnLCAnLWQnLCAn
L21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cyddLCBGQUtF
X0ZJTEVTLCAnY3NzL2Nzcy1pbWFnZXMnKQogICAgICAgICAjIHRlc3QxCiAgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvdGVzdDEuaHRtbCcpKQotICAgICAgICBzZWxm
LmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL3Rlc3QxLWV4cGVjdGVkLmh0bWwnKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVz
dHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy90ZXN0MS1yZWYuaHRtbCcp
KQogICAgICAgICAjIHRlc3QyCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9t
b2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1p
bWFnZXMvdGVzdDIuaHRtbCcpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcv
bW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
aW1hZ2VzL3Rlc3QyLWV4cGVjdGVkLmh0bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZz
LmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zb21lL2RpcmVjdG9yeS9pbi93cHQtcm9vdC90ZXN0Mi1yZWYuaHRtbCcpKQogICAgICAgICAj
IHRlc3QzCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0
L0xheW91dFRlc3RzL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvdGVzdDMu
aHRtbCcpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291
dC9MYXlvdXRUZXN0cy93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL3Rlc3Qz
LWV4cGVjdGVkLmh0bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21v
Y2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zb21lL2RpcmVj
dG9yeS9pbi93cHQtcm9vdC90ZXN0My1yZWYuaHRtbCcpKQorICAgICAgICAjIHRlc3Q0CisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3Rz
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvdGVzdDQuaHRtbCcpKQorICAg
ICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0
cy93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL3Rlc3Q0LXJlZi5odG1sJykp
CisgICAgICAgICMgdGVzdDUKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21v
Y2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXZh
bHVlcy90ZXN0MS5odG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9t
b2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy12
YWx1ZXMvcmVmZXJlbmNlL2dyZWVuLXNxdWFyZS5odG1sJykpCiAKICAgICBkZWYgdGVzdF90ZW1w
bGF0ZV90ZXN0KHNlbGYpOgogICAgICAgICBGQUtFX0ZJTEVTID0gewpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXIucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3czYy90ZXN0X3BhcnNlci5weQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1
CmluZGV4IDI5ZWFiOWNhYmMxZGM1YzdkNTEzNmE4ZDc2ZDhjNGMxNDMzZGVlYzguLjc1MzFjNWJk
Y2MxOGE1MmVhYjUxNjBkY2MzMDMxZTA0ZmMxMzAxMTAKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS93M2MvdGVzdF9wYXJzZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2Mv
dGVzdF9wYXJzZXIucHkKQEAgLTE3MCw3ICsxNzAsNiBAQCBjbGFzcyBUZXN0UGFyc2VyKG9iamVj
dCk6CiAKICAgICBkZWYgaXNfd3B0X3JlZnRlc3Qoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMg
d2hldGhlciB0aGUgdGVzdCBpcyBhIHJlZiB0ZXN0IGFjY29yZGluZyBXUFQgcnVsZXMgKGkuZS4g
ZmlsZSBoYXMgYSAtcmVmLmh0bWwgY291bnRlcnBhcnQpLiIiIgotICAgICAgICBwYXJ0cyA9IHNl
bGYuZmlsZXN5c3RlbS5zcGxpdGV4dChzZWxmLmZpbGVuYW1lKQogICAgICAgICByZXR1cm4gIHNl
bGYuZmlsZXN5c3RlbS5pc2ZpbGUoc2VsZi5wb3RlbnRpYWxfcmVmX2ZpbGVuYW1lKCkpCiAKICAg
ICBkZWYgc3VwcG9ydF9maWxlcyhzZWxmLCBkb2MpOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383107</attachid>
            <date>2019-11-07 21:30:31 -0800</date>
            <delta_ts>2019-11-07 21:42:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203784-20191107213031.patch</filename>
            <type>text/plain</type>
            <size>22894</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxOTYyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2Q0NjM3MjE5MGE3ZjIxZTc0YjI1ZGZiZDhjMDEyN2Ji
NmZmOGExZS4uNjBmOGIwMjNlODNhMGFmMTFiZjlhMjhkMDJkODRmZDcxZjBiOGFiYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQx
IEBACisyMDE5LTExLTA3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBmaW5kaW5nIHRlc3QgcmVmZXJlbmNlcyB2aWEgPGxp
bmsgcmVsPSJtYXRjaCI+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDM3ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXaGVuIGxvb2tpbmcgZm9yIHRlc3QgcmVmZXJlbmNlcywgd2Ugbm93IGNoZWNrIGZv
ciBhIDxsaW5rIHJlbD0ibWF0Y2giPgorICAgICAgICBvciA8bGluayByZWw9Im1pc21hdGNoIj4g
YmVmb3JlIGxvb2tpbmcgaW4gdGhlIGZpbGVzeXN0ZW0gZm9yICItZXhwZWN0ZWQiIGZpbGVzLgor
ICAgICAgICBBIHdhcm5pbmcgaXMgbG9nZ2VkIGlmIGJvdGggZXhpc3QuCisKKyAgICAgICAgRml4
IFdQVCBpbXBvcnRpbmcgdG8gbm90IGNsb25lIHJlZmVyZW5jZSBmaWxlcyBmb3VuZCB2aWEgPGxp
bms+IHRhZ3MgaW50bworICAgICAgICAiLWV4cGVjdGVkLmh0bWwiIGZpbGVzLCBhbmQgdG8gdHJl
YXQgZmlsZXMgd2l0aCAiLXJlZiIgb3IgInJlZmVyZW5jZSIgaW4gdGhlIG5hbWUKKyAgICAgICAg
YXMgcmVmZXJlbmNlIGZpbGVzLiBPbiBpbXBvcnQsIGV4aXN0aW5nIC1leHBlY3RlZC5odG1sIGZp
bGVzIHdpbGwgYmUgcmVtb3ZlZC4KKworICAgICAgICBBZGQgc29tZSB1bml0IHRlc3RzLgorCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xl
X3Rlc3RfcnVubmVyLnB5OgorICAgICAgICAoU2luZ2xlVGVzdFJ1bm5lci5fcnVuX3JlZnRlc3Qp
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5OgorICAgICAgICAoUG9y
dC5fZmluZF9yZWZlcmVuY2VfZmlsZV92aWFfbGlua190YWcpOgorICAgICAgICAoUG9ydC5fZmlu
ZF9yZWZlcmVuY2VfZmlsZV92aWFfbGlua190YWcuX3JlZmVyZW5jZV9saW5rc19vZl90eXBlKToK
KyAgICAgICAgKFBvcnQuX2ZpbmRfcmVmZXJlbmNlX2ZpbGVzX2luX2ZpbGVzeXN0ZW0pOgorICAg
ICAgICAoUG9ydC5yZWZlcmVuY2VfZmlsZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
cG9ydC9iYXNlX3VuaXR0ZXN0LnB5OgorICAgICAgICAoUG9ydFRlc3QudGVzdF9yZWZlcmVuY2Vf
ZmlsZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5OgorICAgICAg
ICAoVGVzdEluc3RhbmNlLl9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3cz
Yy90ZXN0X2ltcG9ydGVyLnB5OgorICAgICAgICAoVGVzdEltcG9ydGVyLmZpbmRfaW1wb3J0YWJs
ZV90ZXN0cyk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIuaW1wb3J0X3Rlc3RzKToKKyAgICAgICAg
KFRlc3RJbXBvcnRlci5faXNfaW5fcmVzb3VyY2VzX2RpcmVjdG9yeSk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlcl91bml0dGVzdC5weToKKyAgICAgICAgKHRl
c3Rfd2Via2l0X3Rlc3RfcnVubmVyX2ltcG9ydF9yZWZ0ZXN0c193aXRoX2Fic29sdXRlX3BhdGhz
X2Rvd25sb2FkKToKKyAgICAgICAgKHRlc3Rfd2Via2l0X3Rlc3RfcnVubmVyX2ltcG9ydF9yZWZ0
ZXN0c193aXRoX2Fic29sdXRlX3BhdGhzX2Zyb21fc291cmNlX2Rpcik6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXIucHk6CisgICAgICAgIChUZXN0UGFyc2VyLmlz
X3dwdF9yZWZ0ZXN0KToKKwogMjAxOS0xMS0wMSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBh
cHBsZS5jb20+CiAKICAgICAgICAgUHl0aG9uIDM6IEFkZCBzdXBwb3J0IGluIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cy5tb2RlbApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5
CmluZGV4IDcxOGEwODk0NTMyZTViODgxZDFhMGQxZDMwNmMxM2Y0YjA2MTYzY2UuLmRlNzRhZDlm
ZTM4M2UyZGFlZjlhYWIyMDE2YTRjZGIzOTVlYTZmNzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9z
aW5nbGVfdGVzdF9ydW5uZXIucHkKQEAgLTI5MCw2ICsyOTAsNyBAQCBjbGFzcyBTaW5nbGVUZXN0
UnVubmVyKG9iamVjdCk6CiAgICAgICAgIHJldHVybiBmYWlsdXJlcwogCiAgICAgZGVmIF9ydW5f
cmVmdGVzdChzZWxmKToKKyAgICAgICAgX2xvZy5kZWJ1Zygne30gcnVubmluZyByZWYgdGVzdCB7
fScuZm9ybWF0KHNlbGYuX3dvcmtlcl9uYW1lLCBzZWxmLl90ZXN0X25hbWUpKQogICAgICAgICB0
ZXN0X291dHB1dCA9IHNlbGYuX2RyaXZlci5ydW5fdGVzdChzZWxmLl9kcml2ZXJfaW5wdXQoKSwg
c2VsZi5fc3RvcF93aGVuX2RvbmUpCiAgICAgICAgIHRvdGFsX3Rlc3RfdGltZSA9IDAKICAgICAg
ICAgcmVmZXJlbmNlX291dHB1dCA9IE5vbmUKQEAgLTMwNiw2ICszMDcsNyBAQCBjbGFzcyBTaW5n
bGVUZXN0UnVubmVyKG9iamVjdCk6CiAgICAgICAgIGZvciBleHBlY3RhdGlvbiwgcmVmZXJlbmNl
X2ZpbGVuYW1lIGluIHB1dEFsbE1pc21hdGNoQmVmb3JlTWF0Y2goc2VsZi5fcmVmZXJlbmNlX2Zp
bGVzKToKICAgICAgICAgICAgIHJlZmVyZW5jZV90ZXN0X25hbWUgPSBzZWxmLl9wb3J0LnJlbGF0
aXZlX3Rlc3RfZmlsZW5hbWUocmVmZXJlbmNlX2ZpbGVuYW1lKQogICAgICAgICAgICAgcmVmZXJl
bmNlX3Rlc3RfbmFtZXMuYXBwZW5kKHJlZmVyZW5jZV90ZXN0X25hbWUpCisgICAgICAgICAgICBf
bG9nLmRlYnVnKCd7fSBydW5uaW5nIHJlZmVyZW5jZSB7fScuZm9ybWF0KHNlbGYuX3dvcmtlcl9u
YW1lLCByZWZlcmVuY2VfdGVzdF9uYW1lKSkKICAgICAgICAgICAgIHJlZmVyZW5jZV9vdXRwdXQg
PSBzZWxmLl9kcml2ZXIucnVuX3Rlc3QoRHJpdmVySW5wdXQocmVmZXJlbmNlX3Rlc3RfbmFtZSwg
c2VsZi5fdGltZW91dCwgTm9uZSwgc2hvdWxkX3J1bl9waXhlbF90ZXN0PVRydWUpLCBzZWxmLl9z
dG9wX3doZW5fZG9uZSkKICAgICAgICAgICAgIHRlc3RfcmVzdWx0ID0gc2VsZi5fY29tcGFyZV9v
dXRwdXRfd2l0aF9yZWZlcmVuY2UocmVmZXJlbmNlX291dHB1dCwgdGVzdF9vdXRwdXQsIHJlZmVy
ZW5jZV9maWxlbmFtZSwgZXhwZWN0YXRpb24gPT0gJyE9JykKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvYmFzZS5weQppbmRleCA2ODAwYjE3ZWRmOGVkMTY3ZGFkMmU2Nzg2ODlkZWI1NzBlYWMyOTk1
Li5lZmI4ZjBhMDYxNTg3MTA5MWY0YTAyOGNkZDhlZTU5NTkyZDIxN2JhIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvYmFzZS5weQpAQCAtNjIsNiArNjIsOCBAQCBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5zZXJ2ZXJzIGltcG9ydCBhcGFjaGVfaHR0cF9zZXJ2ZXIsIGh0dHBfc2VydmVyLCBo
dHRwXwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuc2VydmVycyBpbXBvcnQgd2ViX3BsYXRm
b3JtX3Rlc3Rfc2VydmVyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5zZXJ2ZXJzIGltcG9y
dCB3ZWJzb2NrZXRfc2VydmVyCiAKK2Zyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5CZWF1dGlmdWxT
b3VwIGltcG9ydCBCZWF1dGlmdWxTb3VwLCBTb3VwU3RyYWluZXIKKwogX2xvZyA9IGxvZ2dpbmcu
Z2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKQEAgLTUyOSwxNiArNTMxLDQ1IEBAIGNsYXNzIFBvcnQo
b2JqZWN0KToKICAgICAgICAgICAgIHBhcnNlZF9saXN0LnNldGRlZmF1bHQoZmlsZXN5c3RlbS5q
b2luKHRlc3RfZGlycGF0aCwgdGVzdF9maWxlKSwgW10pLmFwcGVuZCgoZXhwZWN0YXRpb25fdHlw
ZSwgZmlsZXN5c3RlbS5qb2luKHRlc3RfZGlycGF0aCwgcmVmX2ZpbGUpKSkKICAgICAgICAgcmV0
dXJuIHBhcnNlZF9saXN0CiAKLSAgICBkZWYgcmVmZXJlbmNlX2ZpbGVzKHNlbGYsIHRlc3RfbmFt
ZSwgZGV2aWNlX3R5cGU9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgZXhwZWN0
YXRpb24gKD09IG9yICE9KSBhbmQgZmlsZW5hbWUgcGFpcnMiIiIKKyAgICBkZWYgX2ZpbmRfcmVm
ZXJlbmNlX2ZpbGVfdmlhX2xpbmtfdGFnKHNlbGYsIHRlc3RfbmFtZSk6CisgICAgICAgICMgVGhp
cyBjb2RlIG1hdGNoZXMgY29kZSBpbiB3M2MvdGVzdF9wYXJzZXIucHkgYnV0IHVzaW5nIHRoYXQg
aGVyZSB3b3VsZCBiZSBhIGxheWVyaW5nIHZpb2xhdGlvbi4KKyAgICAgICAgIyBJZGVhbGx5IGFs
bCB0aGlzIHJlZmVyZW5jZS1maW5kaW5nIGNvZGUgd291bGQgbW92ZSBvdXQgb2YgUG9ydC4KKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgbGlua3MgPSBTb3VwU3RyYWluZXIoJ2xpbmsnKQorICAg
ICAgICAgICAgbGlua19zZXQgPSBCZWF1dGlmdWxTb3VwKHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF9i
aW5hcnlfZmlsZShzZWxmLmFic3BhdGhfZm9yX3Rlc3QodGVzdF9uYW1lKSksIHBhcnNlT25seVRo
ZXNlPWxpbmtzKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBfbG9nLndhcm5pbmcoJ0Zh
aWxlZCB0byBwYXJzZSB7fSB0byBkZXRlY3QgPGxpbmsgcmVsPT4gcmVmZXJlbmNlIHRlc3QnLmZv
cm1hdCh0ZXN0X25hbWUpKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgICAgICBpZiBz
ZWxmLmdldF9vcHRpb24oJ3RyZWF0X3JlZl90ZXN0c19hc19waXhlbF90ZXN0cycpOgotICAgICAg
ICAgICAgcmV0dXJuIFtdCisgICAgICAgIGRlZiBfcmVmZXJlbmNlX2xpbmtzX29mX3R5cGUocmVm
dGVzdF90eXBlKToKKyAgICAgICAgICAgIHJldHVybiBsaW5rX3NldC5maW5kQWxsKHJlbD1yZWZ0
ZXN0X3R5cGUpCiAKLSAgICAgICAgcmVzdWx0ID0gc2VsZi5fZ2V0X3JlZnRlc3RfbGlzdCh0ZXN0
X25hbWUpCi0gICAgICAgIGlmIHJlc3VsdDoKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQuZ2V0
KHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgdGVzdF9uYW1l
KSwgW10pCisgICAgICAgIG1hdGNoZXMgPSBfcmVmZXJlbmNlX2xpbmtzX29mX3R5cGUoJ21hdGNo
JykgKyBfcmVmZXJlbmNlX2xpbmtzX29mX3R5cGUoJ21pc21hdGNoJykKKyAgICAgICAgaWYgbWF0
Y2hlczoKKyAgICAgICAgICAgIGlmIGxlbihtYXRjaGVzKSA+IDE6CisgICAgICAgICAgICAgICAg
X2xvZy53YXJuaW5nKCdNdWx0aXBsZSByZWZlcmVuY2VzIGFyZSBub3Qgc3VwcG9ydGVkLiBJbXBv
cnRpbmcgdGhlIGZpcnN0IHJlZiBkZWZpbmVkIGluIHt9Jy5mb3JtYXQodGVzdF9uYW1lKSkKKyAg
ICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBocmVmX21hdGNoX2ZpbGUgPSBtYXRjaGVz
WzBdWydocmVmJ10uc3RyaXAoKQorICAgICAgICAgICAgICAgIG1hdGNoX3R5cGUgPSBtYXRjaGVz
WzBdWydyZWwnXQorCisgICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygnRm9yIHt9IGZvdW5kIHJl
ZmVyZW5jZSBmcm9tIDxsaW5rIHJlbD17fT4ge30nLmZvcm1hdCh0ZXN0X25hbWUsIG1hdGNoX3R5
cGUsIGhyZWZfbWF0Y2hfZmlsZSkpCisgICAgICAgICAgICAgICAgaWYgaHJlZl9tYXRjaF9maWxl
LnN0YXJ0c3dpdGgoJy8nKToKKyAgICAgICAgICAgICAgICAgICAgcmVmX2ZpbGUgPSBzZWxmLl9m
aWxlc3lzdGVtLmpvaW4oc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCksIGhyZWZfbWF0Y2hfZmlsZS5s
c3RyaXAoJy8nKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBy
ZWZfZmlsZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwg
c2VsZi5fZmlsZXN5c3RlbS5kaXJuYW1lKHRlc3RfbmFtZSksIGhyZWZfbWF0Y2hfZmlsZSkKKwor
ICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhyZWZfZmlsZSk6
CisgICAgICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygne30gc3BlY2lmaWVzIHJlZmVyZW5j
ZSB7fSBidXQgdGhlIGZpbGUgZG9lc25cJ3QgZXhpc3Q7IGlnbm9yaW5nLicuZm9ybWF0KHRlc3Rf
bmFtZSwgbWF0Y2hlc1swXSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAg
ICAgICAgICAgICAgICByZXR1cm4gWygnPT0nIGlmIG1hdGNoX3R5cGUgPT0gJ21hdGNoJyBlbHNl
ICchPScsIHJlZl9maWxlKV0KKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvciBhcyBlOgorICAg
ICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ3t9IGhhcyBhIHJlZmVyZW5jZSBsaW5rIGJ1dCBpcyBt
aXNzaW5nIHRoZSAiaHJlZiInLmZvcm1hdCh0ZXN0X25hbWUpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBOb25lCiAKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBfZmluZF9yZWZlcmVu
Y2VfZmlsZXNfaW5fZmlsZXN5c3RlbShzZWxmLCB0ZXN0X25hbWUsIGRldmljZV90eXBlPU5vbmUp
OgogICAgICAgICByZXN1bHQgPSBbXQogICAgICAgICBzdWZmaXhlcyA9IFtdCiAgICAgICAgIGZv
ciBwYXJ0MSBpbiBbJycsICctbWlzbWF0Y2gnXToKQEAgLTU1MSw4ICs1ODIsMzMgQEAgY2xhc3Mg
UG9ydChvYmplY3QpOgogICAgICAgICAgICAgICAgICchPScgaWYgJy1taXNtYXRjaC4nIGluIGJh
c2VsaW5lX2ZpbGVuYW1lIGVsc2UgJz09JywKICAgICAgICAgICAgICAgICBzZWxmLl9maWxlc3lz
dGVtLmpvaW4ocGxhdGZvcm1fZGlyLCBiYXNlbGluZV9maWxlbmFtZSksCiAgICAgICAgICAgICAp
KQorCiAgICAgICAgIHJldHVybiByZXN1bHQKIAorICAgIGRlZiByZWZlcmVuY2VfZmlsZXMoc2Vs
ZiwgdGVzdF9uYW1lLCBkZXZpY2VfdHlwZT1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJuIGEgbGlz
dCBvZiBleHBlY3RhdGlvbiAoPT0gb3IgIT0pIGFuZCBmaWxlbmFtZSBwYWlycyIiIgorCisgICAg
ICAgIGlmIHNlbGYuZ2V0X29wdGlvbigndHJlYXRfcmVmX3Rlc3RzX2FzX3BpeGVsX3Rlc3RzJyk6
CisgICAgICAgICAgICByZXR1cm4gW10KKworICAgICAgICByZXN1bHQgPSBzZWxmLl9nZXRfcmVm
dGVzdF9saXN0KHRlc3RfbmFtZSkKKyAgICAgICAgaWYgcmVzdWx0OgorICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdC5nZXQoc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2Rp
cigpLCB0ZXN0X25hbWUpLCBbXSkKKworICAgICAgICBsaW5rX3RhZ19yZWZlcmVuY2VfZmlsZSA9
IHNlbGYuX2ZpbmRfcmVmZXJlbmNlX2ZpbGVfdmlhX2xpbmtfdGFnKHRlc3RfbmFtZSkKKyAgICAg
ICAgIyBGSVhNRTogU3RvcCBoaXR0aW5nIHRoZSBmaWxlc3lzdGVtIGxvb2tpbmcgZm9yIHJlZmVy
ZW5jZSBmaWxlcyBvbmNlIHdlJ3ZlIGVtYnJhY2VkIDxsaW5rIHJlbD0iIj4KKyAgICAgICAgZmls
ZXN5c3RlbV9yZWZlcmVuY2VfZmlsZXMgPSBzZWxmLl9maW5kX3JlZmVyZW5jZV9maWxlc19pbl9m
aWxlc3lzdGVtKHRlc3RfbmFtZSwgZGV2aWNlX3R5cGUpCisKKyAgICAgICAgaWYgbGlua190YWdf
cmVmZXJlbmNlX2ZpbGUgYW5kIGZpbGVzeXN0ZW1fcmVmZXJlbmNlX2ZpbGVzOgorICAgICAgICAg
ICAgbGlua19yZWZfcGF0aCA9IG9zLnBhdGgucmVscGF0aChsaW5rX3RhZ19yZWZlcmVuY2VfZmls
ZVswXVsxXSwgc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCkpCisgICAgICAgICAgICBmaWxlX3JlZl9w
YXRoID0gb3MucGF0aC5yZWxwYXRoKGZpbGVzeXN0ZW1fcmVmZXJlbmNlX2ZpbGVzWzBdWzFdLCBz
ZWxmLmxheW91dF90ZXN0c19kaXIoKSkKKyAgICAgICAgICAgIF9sb2cud2FybmluZygnRm9yIHt9
IGZvdW5kIGJvdGggIjxsaW5rIHJlbD0+IiB7fSBhbmQge30nLmZvcm1hdCh0ZXN0X25hbWUsIGxp
bmtfcmVmX3BhdGgsIGZpbGVfcmVmX3BhdGgpKQorCisgICAgICAgIGlmIGxpbmtfdGFnX3JlZmVy
ZW5jZV9maWxlOgorICAgICAgICAgICAgcmV0dXJuIGxpbmtfdGFnX3JlZmVyZW5jZV9maWxlCisK
KyAgICAgICAgcmV0dXJuIGZpbGVzeXN0ZW1fcmVmZXJlbmNlX2ZpbGVzCisKICAgICBkZWYgcG90
ZW50aWFsX3Rlc3RfbmFtZXNfZnJvbV9leHBlY3RlZF9maWxlKHNlbGYsIHBhdGgpOgogICAgICAg
ICAiIiJSZXR1cm4gcG90ZW50aWFsIHRlc3QgbmFtZXMgaWYgYW55IGZyb20gYSBwb3RlbnRpYWwg
ZXhwZWN0ZWQgZmlsZSBwYXRoLCByZWxhdGl2ZSB0byBMYXlvdXRUZXN0cyBkaXJlY3RvcnkuIiIi
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlX3VuaXR0ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKaW5kZXgg
NWRmMWNjNTUwNjllMmE3YmYwZTdmNjdkOTJkZDc5ODdhNGI3NjJmZS4uNGU0Njc5YTg1MDJiNWZl
NWU2NWExMDkyYzQ0ZTQ1NTQ0MTFiNmIyMiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L2Jhc2VfdW5pdHRlc3QucHkKQEAgLTMxNCw2ICszMTQsOCBAQCBjbGFzcyBQb3J0VGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5yZWZlcmVu
Y2VfZmlsZXMoJ3Bhc3Nlcy9zdmdyZWZ0ZXN0LnN2ZycpLCBbKCc9PScsIHBvcnQubGF5b3V0X3Rl
c3RzX2RpcigpICsgJy9wYXNzZXMvc3ZncmVmdGVzdC1leHBlY3RlZC5zdmcnKV0pCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5yZWZlcmVuY2VfZmlsZXMoJ3Bhc3Nlcy94aHRyZWZ0ZXN0
LnN2ZycpLCBbKCc9PScsIHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpICsgJy9wYXNzZXMveGh0cmVm
dGVzdC1leHBlY3RlZC5odG1sJyldKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucmVm
ZXJlbmNlX2ZpbGVzKCdwYXNzZXMvcGhwcmVmdGVzdC5waHAnKSwgWygnIT0nLCBwb3J0LmxheW91
dF90ZXN0c19kaXIoKSArICcvcGFzc2VzL3BocHJlZnRlc3QtZXhwZWN0ZWQtbWlzbWF0Y2guc3Zn
JyldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucmVmZXJlbmNlX2ZpbGVzKCdyZWZ0
ZXN0cy9tb2Rlcm4vbGluay10ZXN0Lmh0bWwnKSwgWygnPT0nLCBwb3J0LmxheW91dF90ZXN0c19k
aXIoKSArICcvcmVmdGVzdHMvbW9kZXJuL3Jlc291cmNlcy9ncmVlbi1zcXVhcmUuaHRtbCcpXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJlZmVyZW5jZV9maWxlcygncmVmdGVzdHMv
bW9kZXJuL2xpbmstbWlzbWF0Y2gtdGVzdC5odG1sJyksIFsoJyE9JywgcG9ydC5sYXlvdXRfdGVz
dHNfZGlyKCkgKyAnL3JlZnRlc3RzL21vZGVybi9yZXNvdXJjZXMvZ3JlZW4tc3F1YXJlLmh0bWwn
KV0pCiAKICAgICBkZWYgdGVzdF9vcGVyYXRpbmdfc3lzdGVtKHNlbGYpOgogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdtYWMnLCBzZWxmLm1ha2VfcG9ydCgpLm9wZXJhdGluZ19zeXN0ZW0oKSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHkKaW5kZXggMzM5YjUzYzUxYWQzYTNiZjYzOGEw
N2ZmOTdlYzE4YzAxMGVkZWFjYS4uOWQ0ODI4ZGUzYTBjYTBjYzVkMTA3ODRlNjcwZmVhM2IzYTA4
NGMwYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHkKQEAgLTU5LDYgKzU5LDcgQEAg
Y2xhc3MgVGVzdEluc3RhbmNlKG9iamVjdCk6CiAgICAgICAgICMgYmVpbmcgdHJlYXRlZCBhcyBV
VEYtOCAodGhlIGNoYXJhY3RlciBpcyBpbnZhbGlkKQogICAgICAgICBzZWxmLmFjdHVhbF9pbWFn
ZSA9IHNlbGYuYmFzZSArICdceDhhJyArICctcG5nJyArICd0RVh0Y2hlY2tzdW1ceDAwJyArIHNl
bGYuYWN0dWFsX2NoZWNrc3VtCiAKKyAgICAgICAgc2VsZi5maWxlX2NvbnRlbnQgPSBOb25lCiAg
ICAgICAgIHNlbGYuZXhwZWN0ZWRfdGV4dCA9IHNlbGYuYWN0dWFsX3RleHQKICAgICAgICAgc2Vs
Zi5leHBlY3RlZF9pbWFnZSA9IHNlbGYuYWN0dWFsX2ltYWdlCiAKQEAgLTI1MCw2ICsyNTEsMTEg
QEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MzQKICAgICB0ZXN0cy5hZGQoJ3JlZnRlc3RzL2Zv
by9yZWZlcmVuY2UvYmFyL2NvbW1vbi5odG1sJykKICAgICB0ZXN0cy5hZGQoJ3JlZnRlc3RzL2Zv
by9yZWZ0ZXN0L2Jhci9zaGFyZWQuaHRtbCcpCiAKKyAgICAjICJtb2Rlcm4iIHJlZiB0ZXN0cyB1
c2UgPGxpbms+IHRhZ3MgdG8gc3BlY2lmeSB0aGUgcmVmZXJlbmNlLgorICAgIHRlc3RzLmFkZCgn
cmVmdGVzdHMvbW9kZXJuL2xpbmstdGVzdC5odG1sJywgaXNfcmVmdGVzdD1UcnVlLCBhY3R1YWxf
Y2hlY2tzdW09J2lqaycsIGFjdHVhbF9pbWFnZT0naWprJywgZmlsZV9jb250ZW50PSc8aHRtbD48
aGVhZD48bGluayByZWw9bWF0Y2ggaHJlZj1yZXNvdXJjZXMvZ3JlZW4tc3F1YXJlLmh0bWw+PC9o
ZWFkPjxib2R5PmhpPC9ib2R5PicpCisgICAgdGVzdHMuYWRkKCdyZWZ0ZXN0cy9tb2Rlcm4vbGlu
ay1taXNtYXRjaC10ZXN0Lmh0bWwnLCBpc19yZWZ0ZXN0PVRydWUsIGFjdHVhbF9jaGVja3N1bT0n
amtsJywgYWN0dWFsX2ltYWdlPSdqa2wnLCBmaWxlX2NvbnRlbnQ9JzxodG1sPjxoZWFkPjxsaW5r
IHJlbD1taXNtYXRjaCBocmVmPXJlc291cmNlcy9ncmVlbi1zcXVhcmUuaHRtbD48L2hlYWQ+PGJv
ZHk+aGk8L2JvZHk+JykKKyAgICB0ZXN0cy5hZGQoJ3JlZnRlc3RzL21vZGVybi9yZXNvdXJjZXMv
Z3JlZW4tc3F1YXJlLmh0bWwnLCBhY3R1YWxfY2hlY2tzdW09J2lqaycsIGFjdHVhbF9pbWFnZT0n
aWprJykKKwogICAgIHRlc3RzLmFkZCgnd2Vic29ja2V0L3Rlc3RzL3Bhc3Nlcy90ZXh0Lmh0bWwn
KQogCiAgICAgIyBGb3IgdGVzdGluZyB0ZXN0IGFyZSBwcm9wZXJseSBpbmNsdWRlZCBmcm9tIHBs
YXRmb3JtIGRpcmVjdG9yaWVzLgpAQCAtMzUxLDcgKzM1Nyw3IEBAIEJ1Zyh0ZXN0KSBwYXNzZXMv
c2tpcHBlZC9za2lwLmh0bWwgWyBTa2lwIF0KICAgICAjIEFkZCBlYWNoIHRlc3QgYW5kIHRoZSBl
eHBlY3RlZCBvdXRwdXQsIGlmIGFueS4KICAgICB0ZXN0X2xpc3QgPSB1bml0X3Rlc3RfbGlzdCgp
CiAgICAgZm9yIHRlc3QgaW4gdGVzdF9saXN0LnRlc3RzLnZhbHVlcygpOgotICAgICAgICBhZGRf
ZmlsZSh0ZXN0LCB0ZXN0Lm5hbWVbdGVzdC5uYW1lLnJmaW5kKCcuJyk6XSwgJycpCisgICAgICAg
IGFkZF9maWxlKHRlc3QsIHRlc3QubmFtZVt0ZXN0Lm5hbWUucmZpbmQoJy4nKTpdLCB0ZXN0LmZp
bGVfY29udGVudCBpZiB0ZXN0LmZpbGVfY29udGVudCBlbHNlICcnKQogICAgICAgICBpZiB0ZXN0
LmlzX3JlZnRlc3Q6CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBpZiB0ZXN0LmFjdHVh
bF9hdWRpbzoKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1w
b3J0ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5Cm9s
ZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggMDUxYjFiYzdiMTIwMzBlNzlhZThl
OWIwNTM5YWZlMWYxNjQ2NDM1ZS4uMjBlMzc3ZGI2NDdmMjhjMTY4OTc4MjhjNTU0ZWYyMDc3MTg2
ZTM1YwotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHkKQEAgLTMyNiw3
ICszMjYsOCBAQCBjbGFzcyBUZXN0SW1wb3J0ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAg
ICAgY29weV9saXN0LmFwcGVuZCh7J3NyYyc6IGZ1bGxwYXRoLCAnZGVzdCc6IGZpbGVuYW1lfSkK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBlbGlmIHNlbGYu
X2lzX2luX3Jlc291cmNlc19kaXJlY3RvcnkoZnVsbHBhdGgpOgotICAgICAgICAgICAgICAgICAg
ICBfbG9nLndhcm5pbmcoJyVzIGlzIGEgdGVzdCBsb2NhdGVkIGluIGEgInJlc291cmNlcyIgZm9s
ZGVyLiBUaGlzIHRlc3Qgd2lsbCBiZSBza2lwcGVkIGJ5IFdlYktpdCB0ZXN0IHJ1bm5lcnMuJywg
ZnVsbHBhdGgpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCAncmVmZXJlbmNlZmlsZScgaW4g
dGVzdF9pbmZvLmtleXMoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygn
JXMgaXMgYSB0ZXN0IGxvY2F0ZWQgaW4gYSAicmVzb3VyY2VzIiBvciAicmVmZXJlbmNlIiBmb2xk
ZXIuIFRoaXMgdGVzdCB3aWxsIGJlIHNraXBwZWQgYnkgV2ViS2l0IHRlc3QgcnVubmVycy4nLCBm
dWxscGF0aCkKIAogICAgICAgICAgICAgICAgIGlmICdtYW51YWx0ZXN0JyBpbiB0ZXN0X2luZm8u
a2V5cygpOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQpAQCAtMzM1LDIzICszMzYsMjAg
QEAgY2xhc3MgVGVzdEltcG9ydGVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X3Nsb3dfdGVzdHMuYXBwZW5kKGZ1bGxwYXRoKQogCiAgICAgICAgICAgICAgICAgaWYgJ3JlZmVy
ZW5jZWZpbGUnIGluIHRlc3RfaW5mby5rZXlzKCk6Ci0gICAgICAgICAgICAgICAgICAgICMgU2tp
cCBpdCBzaW5jZSwgdGhlIGNvcnJlc3BvbmRpbmcgcmVmZXJlbmNlIHRlc3Qgc2hvdWxkIGhhdmUg
YSBsaW5rIHRvIHRoaXMgZmlsZQorICAgICAgICAgICAgICAgICAgICBfbG9nLmluZm8oJ0NvcHlp
bmcgcmVzb3VyY2UgZmlsZSBmcm9tIHt9IHRvIHt9Jy5mb3JtYXQoZnVsbHBhdGgsIGZpbGVuYW1l
KSkKKyAgICAgICAgICAgICAgICAgICAgY29weV9saXN0LmFwcGVuZCh7J3NyYyc6IGZ1bGxwYXRo
LCAnZGVzdCc6IGZpbGVuYW1lfSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAg
ICAgICAgICAgICAgIGlmICdyZWZlcmVuY2UnIGluIHRlc3RfaW5mby5rZXlzKCk6CiAgICAgICAg
ICAgICAgICAgICAgIHJlZnRlc3RzICs9IDEKICAgICAgICAgICAgICAgICAgICAgdG90YWxfdGVz
dHMgKz0gMQotICAgICAgICAgICAgICAgICAgICB0ZXN0X2Jhc2VuYW1lID0gc2VsZi5maWxlc3lz
dGVtLmJhc2VuYW1lKHRlc3RfaW5mb1sndGVzdCddKQogCi0gICAgICAgICAgICAgICAgICAgICMg
QWRkIHRoZSByZWYgZmlsZSwgZm9sbG93aW5nIFdlYktpdCBzdHlsZS4KLSAgICAgICAgICAgICAg
ICAgICAgIyBGSVhNRTogSWRlYWxseSB3ZSdkIHN1cHBvcnQgcmVhZGluZyB0aGUgbWV0YWRhdGEK
LSAgICAgICAgICAgICAgICAgICAgIyBkaXJlY3RseSByYXRoZXIgdGhhbiByZWx5aW5nICBvbiBh
IG5hbWluZyBjb252ZW50aW9uLgotICAgICAgICAgICAgICAgICAgICAjIFVzaW5nIGEgbmFtaW5n
IGNvbnZlbnRpb24gY3JlYXRlcyBkdXBsaWNhdGUgY29waWVzIG9mIHRoZQotICAgICAgICAgICAg
ICAgICAgICAjIHJlZmVyZW5jZSBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgIyBDaGVjayB0
byBzZWUgaWYgdGhlcmUncyBhbiBleGlzdGluZyByZWZlcmVuY2UgdG8gcmVtb3ZlLgorICAgICAg
ICAgICAgICAgICAgICB0ZXN0X2Jhc2VuYW1lID0gc2VsZi5maWxlc3lzdGVtLmJhc2VuYW1lKHRl
c3RfaW5mb1sndGVzdCddKQogICAgICAgICAgICAgICAgICAgICByZWZfZmlsZSA9IHNlbGYuZmls
ZXN5c3RlbS5zcGxpdGV4dCh0ZXN0X2Jhc2VuYW1lKVswXSArICctZXhwZWN0ZWQnCiAgICAgICAg
ICAgICAgICAgICAgIHJlZl9maWxlICs9IHNlbGYuZmlsZXN5c3RlbS5zcGxpdGV4dCh0ZXN0X2lu
Zm9bJ3JlZmVyZW5jZSddKVsxXQorICAgICAgICAgICAgICAgICAgICBfbG9nLmluZm8oJ0NoZWNr
aW5nIHRvIHNlZSBpZiB7fSBleGlzdHMnLmZvcm1hdChyZWZfZmlsZSkpCiAKLSAgICAgICAgICAg
ICAgICAgICAgY29weV9saXN0LmFwcGVuZCh7J3NyYyc6IHRlc3RfaW5mb1sncmVmZXJlbmNlJ10s
ICdkZXN0JzogcmVmX2ZpbGUsICdyZWZlcmVuY2Vfc3VwcG9ydF9pbmZvJzogdGVzdF9pbmZvWydy
ZWZlcmVuY2Vfc3VwcG9ydF9pbmZvJ119KQogICAgICAgICAgICAgICAgICAgICBjb3B5X2xpc3Qu
YXBwZW5kKHsnc3JjJzogdGVzdF9pbmZvWyd0ZXN0J10sICdkZXN0JzogZmlsZW5hbWV9KQogCiAg
ICAgICAgICAgICAgICAgZWxpZiAnanN0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpOgpAQCAtNTc1
LDYgKzU3Myw3IEBAIGNsYXNzIFRlc3RJbXBvcnRlcihvYmplY3QpOgogICAgICAgICAgICAgZmls
ZXMgPSBzZWxmLl90ZXN0X3Jlc291cmNlX2ZpbGVzWyJmaWxlcyJdCiAgICAgICAgICAgICBmb3Ig
ZnVsbF9wYXRoIGluIHNlbGYuX3BvdGVudGlhbF90ZXN0X3Jlc291cmNlX2ZpbGVzOgogICAgICAg
ICAgICAgICAgIHJlc291cmNlX2ZpbGVfcGF0aCA9IHNlbGYuZmlsZXN5c3RlbS5yZWxwYXRoKGZ1
bGxfcGF0aCwgc2VsZi5zb3VyY2VfZGlyZWN0b3J5KQorICAgICAgICAgICAgICAgIF9sb2cuaW5m
bygnVHJhY2tpbmcgcmVzb3VyY2UgZmlsZSB7fScuZm9ybWF0KHJlc291cmNlX2ZpbGVfcGF0aCkp
CiAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX2FscmVhZHlfaWRlbnRpZmllZF9hc19yZXNv
dXJjZV9maWxlKHJlc291cmNlX2ZpbGVfcGF0aCk6CiAgICAgICAgICAgICAgICAgICAgIGZpbGVz
LmFwcGVuZChyZXNvdXJjZV9maWxlX3BhdGgpCiAgICAgICAgICAgICAgICAgICAgIHNob3VsZF91
cGRhdGVfanNvbl9maWxlID0gVHJ1ZQpAQCAtNTkzLDcgKzU5Miw4IEBAIGNsYXNzIFRlc3RJbXBv
cnRlcihvYmplY3QpOgogICAgICAgICByZXR1cm4gYW55KFtwYXRoLmZpbmQoZGlyZWN0b3J5KSAh
PSAtMSBmb3IgZGlyZWN0b3J5IGluIHNlbGYuX3Rlc3RfcmVzb3VyY2VfZmlsZXNbImRpcmVjdG9y
aWVzIl1dKQogCiAgICAgZGVmIF9pc19pbl9yZXNvdXJjZXNfZGlyZWN0b3J5KHNlbGYsIHBhdGgp
OgotICAgICAgICByZXR1cm4gInJlc291cmNlcyIgaW4gcGF0aC5zcGxpdChzZWxmLmZpbGVzeXN0
ZW0uc2VwKQorICAgICAgICBkaXJzID0gcGF0aC5zcGxpdChzZWxmLmZpbGVzeXN0ZW0uc2VwKQor
ICAgICAgICByZXR1cm4gInJlc291cmNlcyIgaW4gZGlycyBvciAicmVmZXJlbmNlIiBpbiBkaXJz
CiAKICAgICBkZWYgdXBkYXRlX3Rlc3RzX29wdGlvbnMoc2VsZik6CiAgICAgICAgIHNob3VsZF91
cGRhdGUgPSBzZWxmLm9wdGlvbnMuY2xlYW5fZGVzdGluYXRpb25fZGlyZWN0b3J5CmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyX3VuaXR0ZXN0LnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlcl91bml0dGVzdC5weQpp
bmRleCBjMGZjM2QyYjJlZDQzMjMwM2QwYWUyMWViZTM1NDk4YmRmMDQ1ZTkwLi5mNmQ5ZmE0YzI5
ZjE5MmY0ZTRkYzYxZDlhNzcwMTFhM2ZlN2Q4Mjk4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXJfdW5pdHRlc3QucHkKQEAgLTM5OCwyNyArMzk4
LDI5IEBAIGNsYXNzIFRlc3RJbXBvcnRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9XZWJLaXRCdWlsZC93
M2MtdGVzdHMvdG8tYmUtaW1wb3J0ZWQvY3Nzd2ctdGVzdHMvdC90ZXN0MS5odG1sJykpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L1dlYktpdEJ1aWxk
L3czYy10ZXN0cy90by1iZS1pbXBvcnRlZC9jc3N3Zy10ZXN0cy90L3Rlc3QxLXJlZi5odG1sJykp
CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91
dFRlc3RzL3czYy9jc3N3Zy10ZXN0cy90L3Rlc3QxLmh0bWwnKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL2Nzc3dnLXRl
c3RzL3QvdGVzdDEtZXhwZWN0ZWQuaHRtbCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMu
ZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93M2MvY3Nzd2ctdGVzdHMvdC90ZXN0
MS1yZWYuaHRtbCcpKQogICAgICAgICAjIHRlc3QyCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShm
cy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L1dlYktpdEJ1aWxkL3czYy10ZXN0cy90by1iZS1pbXBv
cnRlZC9jc3N3Zy10ZXN0cy90L3Rlc3QyLmh0bWwnKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvV2ViS2l0QnVpbGQvdzNjLXRlc3RzL3RvLWJlLWlt
cG9ydGVkL2Nzc3dnLXRlc3RzL3NvbWUvZGlyZWN0b3J5L2luL2Nzc3dnLXJvb3QvdGVzdDItcmVm
Lmh0bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmcy5leGlzdHMoJy9tb2NrLWNoZWNr
b3V0L0xheW91dFRlc3RzL3czYy9jc3N3Zy10ZXN0cy90L3Rlc3QyLWV4cGVjdGVkLmh0bWwnKSkK
ICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0
VGVzdHMvdzNjL2Nzc3dnLXRlc3RzL3QvdGVzdDIuaHRtbCcpKQotICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93M2MvY3Nzd2ctdGVz
dHMvdC90ZXN0Mi1leHBlY3RlZC5odG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5l
eGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy9jc3N3Zy10ZXN0cy9zb21lL2Rp
cmVjdG9yeS9pbi9jc3N3Zy1yb290L3Rlc3QyLXJlZi5odG1sJykpCiAgICAgICAgICMgdGVzdDMK
ICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvV2ViS2l0
QnVpbGQvdzNjLXRlc3RzL3RvLWJlLWltcG9ydGVkL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWltYWdlcy90ZXN0My5odG1sJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMo
Jy9tb2NrLWNoZWNrb3V0L1dlYktpdEJ1aWxkL3czYy10ZXN0cy90by1iZS1pbXBvcnRlZC93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvdGVzdDMtcmVmLmh0bWwnKSkKICAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy90ZXN0My5odG1sJykpCi0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvdGVzdDMtZXhwZWN0ZWQuaHRtbCcp
KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlv
dXRUZXN0cy93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL3Rlc3QzLXJlZi5o
dG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZnMuZXhpc3RzKCcvbW9jay1jaGVja291
dC9MYXlvdXRUZXN0cy93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL3Rlc3Qz
LWV4cGVjdGVkLmh0bWwnKSkKICAgICAgICAgIyB0ZXN0NAogICAgICAgICBzZWxmLmFzc2VydFRy
dWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9XZWJLaXRCdWlsZC93M2MtdGVzdHMvdG8tYmUt
aW1wb3J0ZWQvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL3Rlc3Q0Lmh0bWwnKSkK
ICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvV2ViS2l0
QnVpbGQvdzNjLXRlc3RzL3RvLWJlLWltcG9ydGVkL3dlYi1wbGF0Zm9ybS10ZXN0cy9zb21lL2Rp
cmVjdG9yeS9pbi93cHQtcm9vdC90ZXN0NC1yZWYuaHRtbCcpKQogICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL3Rlc3Q0Lmh0bWwnKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy90ZXN0NC1leHBlY3RlZC5odG1sJykpCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc29tZS9kaXJlY3RvcnkvaW4vd3B0LXJvb3QvdGVzdDQtcmVm
Lmh0bWwnKSkKICAgICAgICAgIyB0ZXN0NQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhp
c3RzKCcvbW9jay1jaGVja291dC9XZWJLaXRCdWlsZC93M2MtdGVzdHMvdG8tYmUtaW1wb3J0ZWQv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL3Rlc3Q1Lmh0bWwnKSkKICAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvV2ViS2l0QnVpbGQvdzNj
LXRlc3RzL3RvLWJlLWltcG9ydGVkL3dlYi1wbGF0Zm9ybS10ZXN0cy9zb21lL2RpcmVjdG9yeS9p
bi93cHQtcm9vdC90ZXN0NS1yZWYuaHRtbCcpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMu
ZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtaW1hZ2VzL3Rlc3Q1Lmh0bWwnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZz
LmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWltYWdlcy90ZXN0NS1leHBlY3RlZC5odG1sJykpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc29tZS9kaXJlY3RvcnkvaW4vd3B0LXJvb3QvdGVzdDUtcmVmLmh0bWwnKSkK
IAogICAgIGRlZiB0ZXN0X3dlYmtpdF90ZXN0X3J1bm5lcl9pbXBvcnRfcmVmdGVzdHNfd2l0aF9h
YnNvbHV0ZV9wYXRoc19mcm9tX3NvdXJjZV9kaXIoc2VsZik6CiAgICAgICAgIEZBS0VfRklMRVMg
PSB7CkBAIC00MjgsMTkgKzQzMCwyOSBAQCBjbGFzcyBUZXN0SW1wb3J0ZXJUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICAgICAgICAgICcvaG9tZS91c2VyL3dwdC9zb21lL2RpcmVjdG9yeS9p
bi93cHQtcm9vdC90ZXN0Mi1yZWYuaHRtbCc6ICc8aHRtbD48L2h0bWw+JywKICAgICAgICAgICAg
ICcvaG9tZS91c2VyL3dwdC9jc3MvY3NzLWltYWdlcy90ZXN0My5odG1sJzogJzxodG1sPjxoZWFk
PjxsaW5rIHJlbD1tYXRjaCBocmVmPSIgICAgICAgICAgICAgL3NvbWUvZGlyZWN0b3J5L2luL3dw
dC1yb290L3Rlc3QzLXJlZi5odG1sICAgICI+PC9oZWFkPjwvaHRtbD4nLAogICAgICAgICAgICAg
Jy9ob21lL3VzZXIvd3B0L3NvbWUvZGlyZWN0b3J5L2luL3dwdC1yb290L3Rlc3QzLXJlZi5odG1s
JzogJzxodG1sPjwvaHRtbD4nLAorICAgICAgICAgICAgJy9ob21lL3VzZXIvd3B0L2Nzcy9jc3Mt
aW1hZ2VzL3Rlc3Q0Lmh0bWwnOiAnPGh0bWw+PGhlYWQ+PGxpbmsgcmVsPW1hdGNoIGhyZWY9dGVz
dDQtcmVmLmh0bWw+PC9oZWFkPjwvaHRtbD4nLAorICAgICAgICAgICAgJy9ob21lL3VzZXIvd3B0
L2Nzcy9jc3MtaW1hZ2VzL3Rlc3Q0LXJlZi5odG1sJzogJzxodG1sPjwvaHRtbD4nLAorICAgICAg
ICAgICAgJy9ob21lL3VzZXIvd3B0L2Nzcy9jc3MtdmFsdWVzL3Rlc3QxLmh0bWwnOiAnPGh0bWw+
PGhlYWQ+PGxpbmsgcmVsPW1hdGNoIGhyZWY9cmVmZXJlbmNlL2dyZWVuLXNxdWFyZS5odG1sPjwv
aGVhZD48L2h0bWw+JywKKyAgICAgICAgICAgICcvaG9tZS91c2VyL3dwdC9jc3MvY3NzLXZhbHVl
cy9yZWZlcmVuY2UvZ3JlZW4tc3F1YXJlLmh0bWwnOiAnPGh0bWw+PC9odG1sPicsCiAgICAgICAg
IH0KICAgICAgICAgRkFLRV9GSUxFUy51cGRhdGUoRkFLRV9SRVBPU0lUT1JJRVMpCiAKICAgICAg
ICAgZnMgPSBzZWxmLmltcG9ydF9kaXJlY3RvcnkoWyctcycsICcvaG9tZS91c2VyL3dwdCcsICct
ZCcsICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzJ10s
IEZBS0VfRklMRVMsICdjc3MvY3NzLWltYWdlcycpCiAgICAgICAgICMgdGVzdDEKICAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy90ZXN0MS5odG1sJykpCi0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvdGVzdDEtZXhwZWN0ZWQuaHRtbCcp
KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlv
dXRUZXN0cy93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL3Rlc3QxLXJlZi5o
dG1sJykpCiAgICAgICAgICMgdGVzdDIKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0
cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWltYWdlcy90ZXN0Mi5odG1sJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlz
dHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1pbWFnZXMvdGVzdDItZXhwZWN0ZWQuaHRtbCcpKQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3NvbWUvZGlyZWN0b3J5L2luL3dwdC1yb290L3Rlc3QyLXJlZi5odG1sJykpCiAgICAg
ICAgICMgdGVzdDMKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hl
Y2tvdXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy90
ZXN0My5odG1sJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNo
ZWNrb3V0L0xheW91dFRlc3RzL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMv
dGVzdDMtZXhwZWN0ZWQuaHRtbCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3Rz
KCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NvbWUv
ZGlyZWN0b3J5L2luL3dwdC1yb290L3Rlc3QzLXJlZi5odG1sJykpCisgICAgICAgICMgdGVzdDQK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0
VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy90ZXN0NC5odG1sJykp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91
dFRlc3RzL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvdGVzdDQtcmVmLmh0
bWwnKSkKKyAgICAgICAgIyB0ZXN0NQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3Rz
KCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtdmFsdWVzL3Rlc3QxLmh0bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0
cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXZhbHVlcy9yZWZlcmVuY2UvZ3JlZW4tc3F1YXJlLmh0bWwnKSkKIAogICAgIGRlZiB0ZXN0
X3RlbXBsYXRlX3Rlc3Qoc2VsZik6CiAgICAgICAgIEZBS0VfRklMRVMgPSB7CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlci5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyLnB5Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAx
MDA3NTUKaW5kZXggMjllYWI5Y2FiYzFkYzVjN2Q1MTM2YThkNzZkOGM0YzE0MzNkZWVjOC4uNzUz
MWM1YmRjYzE4YTUyZWFiNTE2MGRjYzMwMzFlMDRmYzEzMDExMAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3czYy90ZXN0X3BhcnNlci5weQpAQCAtMTcwLDcgKzE3MCw2IEBAIGNsYXNzIFRlc3RQYXJzZXIo
b2JqZWN0KToKIAogICAgIGRlZiBpc193cHRfcmVmdGVzdChzZWxmKToKICAgICAgICAgIiIiUmV0
dXJucyB3aGV0aGVyIHRoZSB0ZXN0IGlzIGEgcmVmIHRlc3QgYWNjb3JkaW5nIFdQVCBydWxlcyAo
aS5lLiBmaWxlIGhhcyBhIC1yZWYuaHRtbCBjb3VudGVycGFydCkuIiIiCi0gICAgICAgIHBhcnRz
ID0gc2VsZi5maWxlc3lzdGVtLnNwbGl0ZXh0KHNlbGYuZmlsZW5hbWUpCiAgICAgICAgIHJldHVy
biAgc2VsZi5maWxlc3lzdGVtLmlzZmlsZShzZWxmLnBvdGVudGlhbF9yZWZfZmlsZW5hbWUoKSkK
IAogICAgIGRlZiBzdXBwb3J0X2ZpbGVzKHNlbGYsIGRvYyk6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383108</attachid>
            <date>2019-11-07 21:42:12 -0800</date>
            <delta_ts>2019-11-08 09:28:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203784-20191107214211.patch</filename>
            <type>text/plain</type>
            <size>23092</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxOTYyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2Q0NjM3MjE5MGE3ZjIxZTc0YjI1ZGZiZDhjMDEyN2Ji
NmZmOGExZS4uNjBmOGIwMjNlODNhMGFmMTFiZjlhMjhkMDJkODRmZDcxZjBiOGFiYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQx
IEBACisyMDE5LTExLTA3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBmaW5kaW5nIHRlc3QgcmVmZXJlbmNlcyB2aWEgPGxp
bmsgcmVsPSJtYXRjaCI+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDM3ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXaGVuIGxvb2tpbmcgZm9yIHRlc3QgcmVmZXJlbmNlcywgd2Ugbm93IGNoZWNrIGZv
ciBhIDxsaW5rIHJlbD0ibWF0Y2giPgorICAgICAgICBvciA8bGluayByZWw9Im1pc21hdGNoIj4g
YmVmb3JlIGxvb2tpbmcgaW4gdGhlIGZpbGVzeXN0ZW0gZm9yICItZXhwZWN0ZWQiIGZpbGVzLgor
ICAgICAgICBBIHdhcm5pbmcgaXMgbG9nZ2VkIGlmIGJvdGggZXhpc3QuCisKKyAgICAgICAgRml4
IFdQVCBpbXBvcnRpbmcgdG8gbm90IGNsb25lIHJlZmVyZW5jZSBmaWxlcyBmb3VuZCB2aWEgPGxp
bms+IHRhZ3MgaW50bworICAgICAgICAiLWV4cGVjdGVkLmh0bWwiIGZpbGVzLCBhbmQgdG8gdHJl
YXQgZmlsZXMgd2l0aCAiLXJlZiIgb3IgInJlZmVyZW5jZSIgaW4gdGhlIG5hbWUKKyAgICAgICAg
YXMgcmVmZXJlbmNlIGZpbGVzLiBPbiBpbXBvcnQsIGV4aXN0aW5nIC1leHBlY3RlZC5odG1sIGZp
bGVzIHdpbGwgYmUgcmVtb3ZlZC4KKworICAgICAgICBBZGQgc29tZSB1bml0IHRlc3RzLgorCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xl
X3Rlc3RfcnVubmVyLnB5OgorICAgICAgICAoU2luZ2xlVGVzdFJ1bm5lci5fcnVuX3JlZnRlc3Qp
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5OgorICAgICAgICAoUG9y
dC5fZmluZF9yZWZlcmVuY2VfZmlsZV92aWFfbGlua190YWcpOgorICAgICAgICAoUG9ydC5fZmlu
ZF9yZWZlcmVuY2VfZmlsZV92aWFfbGlua190YWcuX3JlZmVyZW5jZV9saW5rc19vZl90eXBlKToK
KyAgICAgICAgKFBvcnQuX2ZpbmRfcmVmZXJlbmNlX2ZpbGVzX2luX2ZpbGVzeXN0ZW0pOgorICAg
ICAgICAoUG9ydC5yZWZlcmVuY2VfZmlsZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
cG9ydC9iYXNlX3VuaXR0ZXN0LnB5OgorICAgICAgICAoUG9ydFRlc3QudGVzdF9yZWZlcmVuY2Vf
ZmlsZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5OgorICAgICAg
ICAoVGVzdEluc3RhbmNlLl9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3cz
Yy90ZXN0X2ltcG9ydGVyLnB5OgorICAgICAgICAoVGVzdEltcG9ydGVyLmZpbmRfaW1wb3J0YWJs
ZV90ZXN0cyk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIuaW1wb3J0X3Rlc3RzKToKKyAgICAgICAg
KFRlc3RJbXBvcnRlci5faXNfaW5fcmVzb3VyY2VzX2RpcmVjdG9yeSk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlcl91bml0dGVzdC5weToKKyAgICAgICAgKHRl
c3Rfd2Via2l0X3Rlc3RfcnVubmVyX2ltcG9ydF9yZWZ0ZXN0c193aXRoX2Fic29sdXRlX3BhdGhz
X2Rvd25sb2FkKToKKyAgICAgICAgKHRlc3Rfd2Via2l0X3Rlc3RfcnVubmVyX2ltcG9ydF9yZWZ0
ZXN0c193aXRoX2Fic29sdXRlX3BhdGhzX2Zyb21fc291cmNlX2Rpcik6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXIucHk6CisgICAgICAgIChUZXN0UGFyc2VyLmlz
X3dwdF9yZWZ0ZXN0KToKKwogMjAxOS0xMS0wMSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBh
cHBsZS5jb20+CiAKICAgICAgICAgUHl0aG9uIDM6IEFkZCBzdXBwb3J0IGluIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cy5tb2RlbApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5
CmluZGV4IDcxOGEwODk0NTMyZTViODgxZDFhMGQxZDMwNmMxM2Y0YjA2MTYzY2UuLmRlNzRhZDlm
ZTM4M2UyZGFlZjlhYWIyMDE2YTRjZGIzOTVlYTZmNzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9z
aW5nbGVfdGVzdF9ydW5uZXIucHkKQEAgLTI5MCw2ICsyOTAsNyBAQCBjbGFzcyBTaW5nbGVUZXN0
UnVubmVyKG9iamVjdCk6CiAgICAgICAgIHJldHVybiBmYWlsdXJlcwogCiAgICAgZGVmIF9ydW5f
cmVmdGVzdChzZWxmKToKKyAgICAgICAgX2xvZy5kZWJ1Zygne30gcnVubmluZyByZWYgdGVzdCB7
fScuZm9ybWF0KHNlbGYuX3dvcmtlcl9uYW1lLCBzZWxmLl90ZXN0X25hbWUpKQogICAgICAgICB0
ZXN0X291dHB1dCA9IHNlbGYuX2RyaXZlci5ydW5fdGVzdChzZWxmLl9kcml2ZXJfaW5wdXQoKSwg
c2VsZi5fc3RvcF93aGVuX2RvbmUpCiAgICAgICAgIHRvdGFsX3Rlc3RfdGltZSA9IDAKICAgICAg
ICAgcmVmZXJlbmNlX291dHB1dCA9IE5vbmUKQEAgLTMwNiw2ICszMDcsNyBAQCBjbGFzcyBTaW5n
bGVUZXN0UnVubmVyKG9iamVjdCk6CiAgICAgICAgIGZvciBleHBlY3RhdGlvbiwgcmVmZXJlbmNl
X2ZpbGVuYW1lIGluIHB1dEFsbE1pc21hdGNoQmVmb3JlTWF0Y2goc2VsZi5fcmVmZXJlbmNlX2Zp
bGVzKToKICAgICAgICAgICAgIHJlZmVyZW5jZV90ZXN0X25hbWUgPSBzZWxmLl9wb3J0LnJlbGF0
aXZlX3Rlc3RfZmlsZW5hbWUocmVmZXJlbmNlX2ZpbGVuYW1lKQogICAgICAgICAgICAgcmVmZXJl
bmNlX3Rlc3RfbmFtZXMuYXBwZW5kKHJlZmVyZW5jZV90ZXN0X25hbWUpCisgICAgICAgICAgICBf
bG9nLmRlYnVnKCd7fSBydW5uaW5nIHJlZmVyZW5jZSB7fScuZm9ybWF0KHNlbGYuX3dvcmtlcl9u
YW1lLCByZWZlcmVuY2VfdGVzdF9uYW1lKSkKICAgICAgICAgICAgIHJlZmVyZW5jZV9vdXRwdXQg
PSBzZWxmLl9kcml2ZXIucnVuX3Rlc3QoRHJpdmVySW5wdXQocmVmZXJlbmNlX3Rlc3RfbmFtZSwg
c2VsZi5fdGltZW91dCwgTm9uZSwgc2hvdWxkX3J1bl9waXhlbF90ZXN0PVRydWUpLCBzZWxmLl9z
dG9wX3doZW5fZG9uZSkKICAgICAgICAgICAgIHRlc3RfcmVzdWx0ID0gc2VsZi5fY29tcGFyZV9v
dXRwdXRfd2l0aF9yZWZlcmVuY2UocmVmZXJlbmNlX291dHB1dCwgdGVzdF9vdXRwdXQsIHJlZmVy
ZW5jZV9maWxlbmFtZSwgZXhwZWN0YXRpb24gPT0gJyE9JykKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvYmFzZS5weQppbmRleCA2ODAwYjE3ZWRmOGVkMTY3ZGFkMmU2Nzg2ODlkZWI1NzBlYWMyOTk1
Li5lZmI4ZjBhMDYxNTg3MTA5MWY0YTAyOGNkZDhlZTU5NTkyZDIxN2JhIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvYmFzZS5weQpAQCAtNjIsNiArNjIsOCBAQCBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5zZXJ2ZXJzIGltcG9ydCBhcGFjaGVfaHR0cF9zZXJ2ZXIsIGh0dHBfc2VydmVyLCBo
dHRwXwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuc2VydmVycyBpbXBvcnQgd2ViX3BsYXRm
b3JtX3Rlc3Rfc2VydmVyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5zZXJ2ZXJzIGltcG9y
dCB3ZWJzb2NrZXRfc2VydmVyCiAKK2Zyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5CZWF1dGlmdWxT
b3VwIGltcG9ydCBCZWF1dGlmdWxTb3VwLCBTb3VwU3RyYWluZXIKKwogX2xvZyA9IGxvZ2dpbmcu
Z2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKQEAgLTUyOSwxNiArNTMxLDQ1IEBAIGNsYXNzIFBvcnQo
b2JqZWN0KToKICAgICAgICAgICAgIHBhcnNlZF9saXN0LnNldGRlZmF1bHQoZmlsZXN5c3RlbS5q
b2luKHRlc3RfZGlycGF0aCwgdGVzdF9maWxlKSwgW10pLmFwcGVuZCgoZXhwZWN0YXRpb25fdHlw
ZSwgZmlsZXN5c3RlbS5qb2luKHRlc3RfZGlycGF0aCwgcmVmX2ZpbGUpKSkKICAgICAgICAgcmV0
dXJuIHBhcnNlZF9saXN0CiAKLSAgICBkZWYgcmVmZXJlbmNlX2ZpbGVzKHNlbGYsIHRlc3RfbmFt
ZSwgZGV2aWNlX3R5cGU9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgZXhwZWN0
YXRpb24gKD09IG9yICE9KSBhbmQgZmlsZW5hbWUgcGFpcnMiIiIKKyAgICBkZWYgX2ZpbmRfcmVm
ZXJlbmNlX2ZpbGVfdmlhX2xpbmtfdGFnKHNlbGYsIHRlc3RfbmFtZSk6CisgICAgICAgICMgVGhp
cyBjb2RlIG1hdGNoZXMgY29kZSBpbiB3M2MvdGVzdF9wYXJzZXIucHkgYnV0IHVzaW5nIHRoYXQg
aGVyZSB3b3VsZCBiZSBhIGxheWVyaW5nIHZpb2xhdGlvbi4KKyAgICAgICAgIyBJZGVhbGx5IGFs
bCB0aGlzIHJlZmVyZW5jZS1maW5kaW5nIGNvZGUgd291bGQgbW92ZSBvdXQgb2YgUG9ydC4KKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgbGlua3MgPSBTb3VwU3RyYWluZXIoJ2xpbmsnKQorICAg
ICAgICAgICAgbGlua19zZXQgPSBCZWF1dGlmdWxTb3VwKHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF9i
aW5hcnlfZmlsZShzZWxmLmFic3BhdGhfZm9yX3Rlc3QodGVzdF9uYW1lKSksIHBhcnNlT25seVRo
ZXNlPWxpbmtzKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBfbG9nLndhcm5pbmcoJ0Zh
aWxlZCB0byBwYXJzZSB7fSB0byBkZXRlY3QgPGxpbmsgcmVsPT4gcmVmZXJlbmNlIHRlc3QnLmZv
cm1hdCh0ZXN0X25hbWUpKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgICAgICBpZiBz
ZWxmLmdldF9vcHRpb24oJ3RyZWF0X3JlZl90ZXN0c19hc19waXhlbF90ZXN0cycpOgotICAgICAg
ICAgICAgcmV0dXJuIFtdCisgICAgICAgIGRlZiBfcmVmZXJlbmNlX2xpbmtzX29mX3R5cGUocmVm
dGVzdF90eXBlKToKKyAgICAgICAgICAgIHJldHVybiBsaW5rX3NldC5maW5kQWxsKHJlbD1yZWZ0
ZXN0X3R5cGUpCiAKLSAgICAgICAgcmVzdWx0ID0gc2VsZi5fZ2V0X3JlZnRlc3RfbGlzdCh0ZXN0
X25hbWUpCi0gICAgICAgIGlmIHJlc3VsdDoKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQuZ2V0
KHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgdGVzdF9uYW1l
KSwgW10pCisgICAgICAgIG1hdGNoZXMgPSBfcmVmZXJlbmNlX2xpbmtzX29mX3R5cGUoJ21hdGNo
JykgKyBfcmVmZXJlbmNlX2xpbmtzX29mX3R5cGUoJ21pc21hdGNoJykKKyAgICAgICAgaWYgbWF0
Y2hlczoKKyAgICAgICAgICAgIGlmIGxlbihtYXRjaGVzKSA+IDE6CisgICAgICAgICAgICAgICAg
X2xvZy53YXJuaW5nKCdNdWx0aXBsZSByZWZlcmVuY2VzIGFyZSBub3Qgc3VwcG9ydGVkLiBJbXBv
cnRpbmcgdGhlIGZpcnN0IHJlZiBkZWZpbmVkIGluIHt9Jy5mb3JtYXQodGVzdF9uYW1lKSkKKyAg
ICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBocmVmX21hdGNoX2ZpbGUgPSBtYXRjaGVz
WzBdWydocmVmJ10uc3RyaXAoKQorICAgICAgICAgICAgICAgIG1hdGNoX3R5cGUgPSBtYXRjaGVz
WzBdWydyZWwnXQorCisgICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygnRm9yIHt9IGZvdW5kIHJl
ZmVyZW5jZSBmcm9tIDxsaW5rIHJlbD17fT4ge30nLmZvcm1hdCh0ZXN0X25hbWUsIG1hdGNoX3R5
cGUsIGhyZWZfbWF0Y2hfZmlsZSkpCisgICAgICAgICAgICAgICAgaWYgaHJlZl9tYXRjaF9maWxl
LnN0YXJ0c3dpdGgoJy8nKToKKyAgICAgICAgICAgICAgICAgICAgcmVmX2ZpbGUgPSBzZWxmLl9m
aWxlc3lzdGVtLmpvaW4oc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCksIGhyZWZfbWF0Y2hfZmlsZS5s
c3RyaXAoJy8nKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBy
ZWZfZmlsZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwg
c2VsZi5fZmlsZXN5c3RlbS5kaXJuYW1lKHRlc3RfbmFtZSksIGhyZWZfbWF0Y2hfZmlsZSkKKwor
ICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhyZWZfZmlsZSk6
CisgICAgICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygne30gc3BlY2lmaWVzIHJlZmVyZW5j
ZSB7fSBidXQgdGhlIGZpbGUgZG9lc25cJ3QgZXhpc3Q7IGlnbm9yaW5nLicuZm9ybWF0KHRlc3Rf
bmFtZSwgbWF0Y2hlc1swXSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAg
ICAgICAgICAgICAgICByZXR1cm4gWygnPT0nIGlmIG1hdGNoX3R5cGUgPT0gJ21hdGNoJyBlbHNl
ICchPScsIHJlZl9maWxlKV0KKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvciBhcyBlOgorICAg
ICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ3t9IGhhcyBhIHJlZmVyZW5jZSBsaW5rIGJ1dCBpcyBt
aXNzaW5nIHRoZSAiaHJlZiInLmZvcm1hdCh0ZXN0X25hbWUpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBOb25lCiAKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBfZmluZF9yZWZlcmVu
Y2VfZmlsZXNfaW5fZmlsZXN5c3RlbShzZWxmLCB0ZXN0X25hbWUsIGRldmljZV90eXBlPU5vbmUp
OgogICAgICAgICByZXN1bHQgPSBbXQogICAgICAgICBzdWZmaXhlcyA9IFtdCiAgICAgICAgIGZv
ciBwYXJ0MSBpbiBbJycsICctbWlzbWF0Y2gnXToKQEAgLTU1MSw4ICs1ODIsMzMgQEAgY2xhc3Mg
UG9ydChvYmplY3QpOgogICAgICAgICAgICAgICAgICchPScgaWYgJy1taXNtYXRjaC4nIGluIGJh
c2VsaW5lX2ZpbGVuYW1lIGVsc2UgJz09JywKICAgICAgICAgICAgICAgICBzZWxmLl9maWxlc3lz
dGVtLmpvaW4ocGxhdGZvcm1fZGlyLCBiYXNlbGluZV9maWxlbmFtZSksCiAgICAgICAgICAgICAp
KQorCiAgICAgICAgIHJldHVybiByZXN1bHQKIAorICAgIGRlZiByZWZlcmVuY2VfZmlsZXMoc2Vs
ZiwgdGVzdF9uYW1lLCBkZXZpY2VfdHlwZT1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJuIGEgbGlz
dCBvZiBleHBlY3RhdGlvbiAoPT0gb3IgIT0pIGFuZCBmaWxlbmFtZSBwYWlycyIiIgorCisgICAg
ICAgIGlmIHNlbGYuZ2V0X29wdGlvbigndHJlYXRfcmVmX3Rlc3RzX2FzX3BpeGVsX3Rlc3RzJyk6
CisgICAgICAgICAgICByZXR1cm4gW10KKworICAgICAgICByZXN1bHQgPSBzZWxmLl9nZXRfcmVm
dGVzdF9saXN0KHRlc3RfbmFtZSkKKyAgICAgICAgaWYgcmVzdWx0OgorICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdC5nZXQoc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2Rp
cigpLCB0ZXN0X25hbWUpLCBbXSkKKworICAgICAgICBsaW5rX3RhZ19yZWZlcmVuY2VfZmlsZSA9
IHNlbGYuX2ZpbmRfcmVmZXJlbmNlX2ZpbGVfdmlhX2xpbmtfdGFnKHRlc3RfbmFtZSkKKyAgICAg
ICAgIyBGSVhNRTogU3RvcCBoaXR0aW5nIHRoZSBmaWxlc3lzdGVtIGxvb2tpbmcgZm9yIHJlZmVy
ZW5jZSBmaWxlcyBvbmNlIHdlJ3ZlIGVtYnJhY2VkIDxsaW5rIHJlbD0iIj4KKyAgICAgICAgZmls
ZXN5c3RlbV9yZWZlcmVuY2VfZmlsZXMgPSBzZWxmLl9maW5kX3JlZmVyZW5jZV9maWxlc19pbl9m
aWxlc3lzdGVtKHRlc3RfbmFtZSwgZGV2aWNlX3R5cGUpCisKKyAgICAgICAgaWYgbGlua190YWdf
cmVmZXJlbmNlX2ZpbGUgYW5kIGZpbGVzeXN0ZW1fcmVmZXJlbmNlX2ZpbGVzOgorICAgICAgICAg
ICAgbGlua19yZWZfcGF0aCA9IG9zLnBhdGgucmVscGF0aChsaW5rX3RhZ19yZWZlcmVuY2VfZmls
ZVswXVsxXSwgc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCkpCisgICAgICAgICAgICBmaWxlX3JlZl9w
YXRoID0gb3MucGF0aC5yZWxwYXRoKGZpbGVzeXN0ZW1fcmVmZXJlbmNlX2ZpbGVzWzBdWzFdLCBz
ZWxmLmxheW91dF90ZXN0c19kaXIoKSkKKyAgICAgICAgICAgIF9sb2cud2FybmluZygnRm9yIHt9
IGZvdW5kIGJvdGggIjxsaW5rIHJlbD0+IiB7fSBhbmQge30nLmZvcm1hdCh0ZXN0X25hbWUsIGxp
bmtfcmVmX3BhdGgsIGZpbGVfcmVmX3BhdGgpKQorCisgICAgICAgIGlmIGxpbmtfdGFnX3JlZmVy
ZW5jZV9maWxlOgorICAgICAgICAgICAgcmV0dXJuIGxpbmtfdGFnX3JlZmVyZW5jZV9maWxlCisK
KyAgICAgICAgcmV0dXJuIGZpbGVzeXN0ZW1fcmVmZXJlbmNlX2ZpbGVzCisKICAgICBkZWYgcG90
ZW50aWFsX3Rlc3RfbmFtZXNfZnJvbV9leHBlY3RlZF9maWxlKHNlbGYsIHBhdGgpOgogICAgICAg
ICAiIiJSZXR1cm4gcG90ZW50aWFsIHRlc3QgbmFtZXMgaWYgYW55IGZyb20gYSBwb3RlbnRpYWwg
ZXhwZWN0ZWQgZmlsZSBwYXRoLCByZWxhdGl2ZSB0byBMYXlvdXRUZXN0cyBkaXJlY3RvcnkuIiIi
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlX3VuaXR0ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKaW5kZXgg
NWRmMWNjNTUwNjllMmE3YmYwZTdmNjdkOTJkZDc5ODdhNGI3NjJmZS4uNGU0Njc5YTg1MDJiNWZl
NWU2NWExMDkyYzQ0ZTQ1NTQ0MTFiNmIyMiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L2Jhc2VfdW5pdHRlc3QucHkKQEAgLTMxNCw2ICszMTQsOCBAQCBjbGFzcyBQb3J0VGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5yZWZlcmVu
Y2VfZmlsZXMoJ3Bhc3Nlcy9zdmdyZWZ0ZXN0LnN2ZycpLCBbKCc9PScsIHBvcnQubGF5b3V0X3Rl
c3RzX2RpcigpICsgJy9wYXNzZXMvc3ZncmVmdGVzdC1leHBlY3RlZC5zdmcnKV0pCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5yZWZlcmVuY2VfZmlsZXMoJ3Bhc3Nlcy94aHRyZWZ0ZXN0
LnN2ZycpLCBbKCc9PScsIHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpICsgJy9wYXNzZXMveGh0cmVm
dGVzdC1leHBlY3RlZC5odG1sJyldKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucmVm
ZXJlbmNlX2ZpbGVzKCdwYXNzZXMvcGhwcmVmdGVzdC5waHAnKSwgWygnIT0nLCBwb3J0LmxheW91
dF90ZXN0c19kaXIoKSArICcvcGFzc2VzL3BocHJlZnRlc3QtZXhwZWN0ZWQtbWlzbWF0Y2guc3Zn
JyldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucmVmZXJlbmNlX2ZpbGVzKCdyZWZ0
ZXN0cy9tb2Rlcm4vbGluay10ZXN0Lmh0bWwnKSwgWygnPT0nLCBwb3J0LmxheW91dF90ZXN0c19k
aXIoKSArICcvcmVmdGVzdHMvbW9kZXJuL3Jlc291cmNlcy9ncmVlbi1zcXVhcmUuaHRtbCcpXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJlZmVyZW5jZV9maWxlcygncmVmdGVzdHMv
bW9kZXJuL2xpbmstbWlzbWF0Y2gtdGVzdC5odG1sJyksIFsoJyE9JywgcG9ydC5sYXlvdXRfdGVz
dHNfZGlyKCkgKyAnL3JlZnRlc3RzL21vZGVybi9yZXNvdXJjZXMvZ3JlZW4tc3F1YXJlLmh0bWwn
KV0pCiAKICAgICBkZWYgdGVzdF9vcGVyYXRpbmdfc3lzdGVtKHNlbGYpOgogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdtYWMnLCBzZWxmLm1ha2VfcG9ydCgpLm9wZXJhdGluZ19zeXN0ZW0oKSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHkKaW5kZXggMzM5YjUzYzUxYWQzYTNiZjYzOGEw
N2ZmOTdlYzE4YzAxMGVkZWFjYS4uYWRkMmM5MGE0MzIyNDI4NmVlMmE1YWMyOWRjMjgyZGU5Mzg2
MTY5NCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHkKQEAgLTU5LDYgKzU5LDcgQEAg
Y2xhc3MgVGVzdEluc3RhbmNlKG9iamVjdCk6CiAgICAgICAgICMgYmVpbmcgdHJlYXRlZCBhcyBV
VEYtOCAodGhlIGNoYXJhY3RlciBpcyBpbnZhbGlkKQogICAgICAgICBzZWxmLmFjdHVhbF9pbWFn
ZSA9IHNlbGYuYmFzZSArICdceDhhJyArICctcG5nJyArICd0RVh0Y2hlY2tzdW1ceDAwJyArIHNl
bGYuYWN0dWFsX2NoZWNrc3VtCiAKKyAgICAgICAgc2VsZi5maWxlX2NvbnRlbnQgPSBOb25lCiAg
ICAgICAgIHNlbGYuZXhwZWN0ZWRfdGV4dCA9IHNlbGYuYWN0dWFsX3RleHQKICAgICAgICAgc2Vs
Zi5leHBlY3RlZF9pbWFnZSA9IHNlbGYuYWN0dWFsX2ltYWdlCiAKQEAgLTEwMiw3ICsxMDMsNyBA
QCBjbGFzcyBUZXN0TGlzdChvYmplY3QpOgogIwogIyBUaGVzZSBudW1iZXJzIG1heSBuZWVkIHRv
IGJlIHVwZGF0ZWQgd2hlbmV2ZXIgd2UgYWRkIG9yIGRlbGV0ZSB0ZXN0cy4KICMKLVRPVEFMX1RF
U1RTID0gNzcKK1RPVEFMX1RFU1RTID0gNzkKIFRPVEFMX1NLSVBTID0gOQogVE9UQUxfUkVUUklF
UyA9IDE1CiAKQEAgLTI1MCw2ICsyNTEsMTEgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MzQK
ICAgICB0ZXN0cy5hZGQoJ3JlZnRlc3RzL2Zvby9yZWZlcmVuY2UvYmFyL2NvbW1vbi5odG1sJykK
ICAgICB0ZXN0cy5hZGQoJ3JlZnRlc3RzL2Zvby9yZWZ0ZXN0L2Jhci9zaGFyZWQuaHRtbCcpCiAK
KyAgICAjICJtb2Rlcm4iIHJlZiB0ZXN0cyB1c2UgPGxpbms+IHRhZ3MgdG8gc3BlY2lmeSB0aGUg
cmVmZXJlbmNlLgorICAgIHRlc3RzLmFkZCgncmVmdGVzdHMvbW9kZXJuL2xpbmstdGVzdC5odG1s
JywgaXNfcmVmdGVzdD1UcnVlLCBhY3R1YWxfY2hlY2tzdW09J2lqaycsIGFjdHVhbF9pbWFnZT0n
aWprJywgZmlsZV9jb250ZW50PSc8aHRtbD48aGVhZD48bGluayByZWw9bWF0Y2ggaHJlZj1yZXNv
dXJjZXMvZ3JlZW4tc3F1YXJlLmh0bWw+PC9oZWFkPjxib2R5PmhpPC9ib2R5PicpCisgICAgdGVz
dHMuYWRkKCdyZWZ0ZXN0cy9tb2Rlcm4vbGluay1taXNtYXRjaC10ZXN0Lmh0bWwnLCBpc19yZWZ0
ZXN0PVRydWUsIGFjdHVhbF9jaGVja3N1bT0namtsJywgYWN0dWFsX2ltYWdlPSdqa2wnLCBmaWxl
X2NvbnRlbnQ9JzxodG1sPjxoZWFkPjxsaW5rIHJlbD1taXNtYXRjaCBocmVmPXJlc291cmNlcy9n
cmVlbi1zcXVhcmUuaHRtbD48L2hlYWQ+PGJvZHk+aGk8L2JvZHk+JykKKyAgICB0ZXN0cy5hZGQo
J3JlZnRlc3RzL21vZGVybi9yZXNvdXJjZXMvZ3JlZW4tc3F1YXJlLmh0bWwnLCBhY3R1YWxfY2hl
Y2tzdW09J2lqaycsIGFjdHVhbF9pbWFnZT0naWprJykKKwogICAgIHRlc3RzLmFkZCgnd2Vic29j
a2V0L3Rlc3RzL3Bhc3Nlcy90ZXh0Lmh0bWwnKQogCiAgICAgIyBGb3IgdGVzdGluZyB0ZXN0IGFy
ZSBwcm9wZXJseSBpbmNsdWRlZCBmcm9tIHBsYXRmb3JtIGRpcmVjdG9yaWVzLgpAQCAtMzUxLDcg
KzM1Nyw3IEBAIEJ1Zyh0ZXN0KSBwYXNzZXMvc2tpcHBlZC9za2lwLmh0bWwgWyBTa2lwIF0KICAg
ICAjIEFkZCBlYWNoIHRlc3QgYW5kIHRoZSBleHBlY3RlZCBvdXRwdXQsIGlmIGFueS4KICAgICB0
ZXN0X2xpc3QgPSB1bml0X3Rlc3RfbGlzdCgpCiAgICAgZm9yIHRlc3QgaW4gdGVzdF9saXN0LnRl
c3RzLnZhbHVlcygpOgotICAgICAgICBhZGRfZmlsZSh0ZXN0LCB0ZXN0Lm5hbWVbdGVzdC5uYW1l
LnJmaW5kKCcuJyk6XSwgJycpCisgICAgICAgIGFkZF9maWxlKHRlc3QsIHRlc3QubmFtZVt0ZXN0
Lm5hbWUucmZpbmQoJy4nKTpdLCB0ZXN0LmZpbGVfY29udGVudCBpZiB0ZXN0LmZpbGVfY29udGVu
dCBlbHNlICcnKQogICAgICAgICBpZiB0ZXN0LmlzX3JlZnRlc3Q6CiAgICAgICAgICAgICBjb250
aW51ZQogICAgICAgICBpZiB0ZXN0LmFjdHVhbF9hdWRpbzoKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUK
aW5kZXggMDUxYjFiYzdiMTIwMzBlNzlhZThlOWIwNTM5YWZlMWYxNjQ2NDM1ZS4uMjBlMzc3ZGI2
NDdmMjhjMTY4OTc4MjhjNTU0ZWYyMDc3MTg2ZTM1YwotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNj
L3Rlc3RfaW1wb3J0ZXIucHkKQEAgLTMyNiw3ICszMjYsOCBAQCBjbGFzcyBUZXN0SW1wb3J0ZXIo
b2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgY29weV9saXN0LmFwcGVuZCh7J3NyYyc6IGZ1
bGxwYXRoLCAnZGVzdCc6IGZpbGVuYW1lfSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWUK
ICAgICAgICAgICAgICAgICBlbGlmIHNlbGYuX2lzX2luX3Jlc291cmNlc19kaXJlY3RvcnkoZnVs
bHBhdGgpOgotICAgICAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoJyVzIGlzIGEgdGVzdCBs
b2NhdGVkIGluIGEgInJlc291cmNlcyIgZm9sZGVyLiBUaGlzIHRlc3Qgd2lsbCBiZSBza2lwcGVk
IGJ5IFdlYktpdCB0ZXN0IHJ1bm5lcnMuJywgZnVsbHBhdGgpCisgICAgICAgICAgICAgICAgICAg
IGlmIG5vdCAncmVmZXJlbmNlZmlsZScgaW4gdGVzdF9pbmZvLmtleXMoKToKKyAgICAgICAgICAg
ICAgICAgICAgICAgIF9sb2cud2FybmluZygnJXMgaXMgYSB0ZXN0IGxvY2F0ZWQgaW4gYSAicmVz
b3VyY2VzIiBvciAicmVmZXJlbmNlIiBmb2xkZXIuIFRoaXMgdGVzdCB3aWxsIGJlIHNraXBwZWQg
YnkgV2ViS2l0IHRlc3QgcnVubmVycy4nLCBmdWxscGF0aCkKIAogICAgICAgICAgICAgICAgIGlm
ICdtYW51YWx0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpOgogICAgICAgICAgICAgICAgICAgICBj
b250aW51ZQpAQCAtMzM1LDIzICszMzYsMjAgQEAgY2xhc3MgVGVzdEltcG9ydGVyKG9iamVjdCk6
CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Nsb3dfdGVzdHMuYXBwZW5kKGZ1bGxwYXRoKQog
CiAgICAgICAgICAgICAgICAgaWYgJ3JlZmVyZW5jZWZpbGUnIGluIHRlc3RfaW5mby5rZXlzKCk6
Ci0gICAgICAgICAgICAgICAgICAgICMgU2tpcCBpdCBzaW5jZSwgdGhlIGNvcnJlc3BvbmRpbmcg
cmVmZXJlbmNlIHRlc3Qgc2hvdWxkIGhhdmUgYSBsaW5rIHRvIHRoaXMgZmlsZQorICAgICAgICAg
ICAgICAgICAgICBfbG9nLmluZm8oJ0NvcHlpbmcgcmVzb3VyY2UgZmlsZSBmcm9tIHt9IHRvIHt9
Jy5mb3JtYXQoZnVsbHBhdGgsIGZpbGVuYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgY29weV9s
aXN0LmFwcGVuZCh7J3NyYyc6IGZ1bGxwYXRoLCAnZGVzdCc6IGZpbGVuYW1lfSkKICAgICAgICAg
ICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgICAgIGlmICdyZWZlcmVuY2UnIGlu
IHRlc3RfaW5mby5rZXlzKCk6CiAgICAgICAgICAgICAgICAgICAgIHJlZnRlc3RzICs9IDEKICAg
ICAgICAgICAgICAgICAgICAgdG90YWxfdGVzdHMgKz0gMQotICAgICAgICAgICAgICAgICAgICB0
ZXN0X2Jhc2VuYW1lID0gc2VsZi5maWxlc3lzdGVtLmJhc2VuYW1lKHRlc3RfaW5mb1sndGVzdCdd
KQogCi0gICAgICAgICAgICAgICAgICAgICMgQWRkIHRoZSByZWYgZmlsZSwgZm9sbG93aW5nIFdl
YktpdCBzdHlsZS4KLSAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogSWRlYWxseSB3ZSdkIHN1
cHBvcnQgcmVhZGluZyB0aGUgbWV0YWRhdGEKLSAgICAgICAgICAgICAgICAgICAgIyBkaXJlY3Rs
eSByYXRoZXIgdGhhbiByZWx5aW5nICBvbiBhIG5hbWluZyBjb252ZW50aW9uLgotICAgICAgICAg
ICAgICAgICAgICAjIFVzaW5nIGEgbmFtaW5nIGNvbnZlbnRpb24gY3JlYXRlcyBkdXBsaWNhdGUg
Y29waWVzIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAjIHJlZmVyZW5jZSBmaWxlcy4KKyAg
ICAgICAgICAgICAgICAgICAgIyBDaGVjayB0byBzZWUgaWYgdGhlcmUncyBhbiBleGlzdGluZyBy
ZWZlcmVuY2UgdG8gcmVtb3ZlLgorICAgICAgICAgICAgICAgICAgICB0ZXN0X2Jhc2VuYW1lID0g
c2VsZi5maWxlc3lzdGVtLmJhc2VuYW1lKHRlc3RfaW5mb1sndGVzdCddKQogICAgICAgICAgICAg
ICAgICAgICByZWZfZmlsZSA9IHNlbGYuZmlsZXN5c3RlbS5zcGxpdGV4dCh0ZXN0X2Jhc2VuYW1l
KVswXSArICctZXhwZWN0ZWQnCiAgICAgICAgICAgICAgICAgICAgIHJlZl9maWxlICs9IHNlbGYu
ZmlsZXN5c3RlbS5zcGxpdGV4dCh0ZXN0X2luZm9bJ3JlZmVyZW5jZSddKVsxXQorICAgICAgICAg
ICAgICAgICAgICBfbG9nLmluZm8oJ0NoZWNraW5nIHRvIHNlZSBpZiB7fSBleGlzdHMnLmZvcm1h
dChyZWZfZmlsZSkpCiAKLSAgICAgICAgICAgICAgICAgICAgY29weV9saXN0LmFwcGVuZCh7J3Ny
Yyc6IHRlc3RfaW5mb1sncmVmZXJlbmNlJ10sICdkZXN0JzogcmVmX2ZpbGUsICdyZWZlcmVuY2Vf
c3VwcG9ydF9pbmZvJzogdGVzdF9pbmZvWydyZWZlcmVuY2Vfc3VwcG9ydF9pbmZvJ119KQogICAg
ICAgICAgICAgICAgICAgICBjb3B5X2xpc3QuYXBwZW5kKHsnc3JjJzogdGVzdF9pbmZvWyd0ZXN0
J10sICdkZXN0JzogZmlsZW5hbWV9KQogCiAgICAgICAgICAgICAgICAgZWxpZiAnanN0ZXN0JyBp
biB0ZXN0X2luZm8ua2V5cygpOgpAQCAtNTc1LDYgKzU3Myw3IEBAIGNsYXNzIFRlc3RJbXBvcnRl
cihvYmplY3QpOgogICAgICAgICAgICAgZmlsZXMgPSBzZWxmLl90ZXN0X3Jlc291cmNlX2ZpbGVz
WyJmaWxlcyJdCiAgICAgICAgICAgICBmb3IgZnVsbF9wYXRoIGluIHNlbGYuX3BvdGVudGlhbF90
ZXN0X3Jlc291cmNlX2ZpbGVzOgogICAgICAgICAgICAgICAgIHJlc291cmNlX2ZpbGVfcGF0aCA9
IHNlbGYuZmlsZXN5c3RlbS5yZWxwYXRoKGZ1bGxfcGF0aCwgc2VsZi5zb3VyY2VfZGlyZWN0b3J5
KQorICAgICAgICAgICAgICAgIF9sb2cuaW5mbygnVHJhY2tpbmcgcmVzb3VyY2UgZmlsZSB7fScu
Zm9ybWF0KHJlc291cmNlX2ZpbGVfcGF0aCkpCiAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYu
X2FscmVhZHlfaWRlbnRpZmllZF9hc19yZXNvdXJjZV9maWxlKHJlc291cmNlX2ZpbGVfcGF0aCk6
CiAgICAgICAgICAgICAgICAgICAgIGZpbGVzLmFwcGVuZChyZXNvdXJjZV9maWxlX3BhdGgpCiAg
ICAgICAgICAgICAgICAgICAgIHNob3VsZF91cGRhdGVfanNvbl9maWxlID0gVHJ1ZQpAQCAtNTkz
LDcgKzU5Miw4IEBAIGNsYXNzIFRlc3RJbXBvcnRlcihvYmplY3QpOgogICAgICAgICByZXR1cm4g
YW55KFtwYXRoLmZpbmQoZGlyZWN0b3J5KSAhPSAtMSBmb3IgZGlyZWN0b3J5IGluIHNlbGYuX3Rl
c3RfcmVzb3VyY2VfZmlsZXNbImRpcmVjdG9yaWVzIl1dKQogCiAgICAgZGVmIF9pc19pbl9yZXNv
dXJjZXNfZGlyZWN0b3J5KHNlbGYsIHBhdGgpOgotICAgICAgICByZXR1cm4gInJlc291cmNlcyIg
aW4gcGF0aC5zcGxpdChzZWxmLmZpbGVzeXN0ZW0uc2VwKQorICAgICAgICBkaXJzID0gcGF0aC5z
cGxpdChzZWxmLmZpbGVzeXN0ZW0uc2VwKQorICAgICAgICByZXR1cm4gInJlc291cmNlcyIgaW4g
ZGlycyBvciAicmVmZXJlbmNlIiBpbiBkaXJzCiAKICAgICBkZWYgdXBkYXRlX3Rlc3RzX29wdGlv
bnMoc2VsZik6CiAgICAgICAgIHNob3VsZF91cGRhdGUgPSBzZWxmLm9wdGlvbnMuY2xlYW5fZGVz
dGluYXRpb25fZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3cz
Yy90ZXN0X2ltcG9ydGVyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2Mv
dGVzdF9pbXBvcnRlcl91bml0dGVzdC5weQppbmRleCBjMGZjM2QyYjJlZDQzMjMwM2QwYWUyMWVi
ZTM1NDk4YmRmMDQ1ZTkwLi5mNmQ5ZmE0YzI5ZjE5MmY0ZTRkYzYxZDlhNzcwMTFhM2ZlN2Q4Mjk4
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyX3Vu
aXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXJf
dW5pdHRlc3QucHkKQEAgLTM5OCwyNyArMzk4LDI5IEBAIGNsYXNzIFRlc3RJbXBvcnRlclRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcv
bW9jay1jaGVja291dC9XZWJLaXRCdWlsZC93M2MtdGVzdHMvdG8tYmUtaW1wb3J0ZWQvY3Nzd2ct
dGVzdHMvdC90ZXN0MS5odG1sJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMo
Jy9tb2NrLWNoZWNrb3V0L1dlYktpdEJ1aWxkL3czYy10ZXN0cy90by1iZS1pbXBvcnRlZC9jc3N3
Zy10ZXN0cy90L3Rlc3QxLXJlZi5odG1sJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5l
eGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy9jc3N3Zy10ZXN0cy90L3Rlc3Qx
Lmh0bWwnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tv
dXQvTGF5b3V0VGVzdHMvdzNjL2Nzc3dnLXRlc3RzL3QvdGVzdDEtZXhwZWN0ZWQuaHRtbCcpKQor
ICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRU
ZXN0cy93M2MvY3Nzd2ctdGVzdHMvdC90ZXN0MS1yZWYuaHRtbCcpKQogICAgICAgICAjIHRlc3Qy
CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L1dlYktp
dEJ1aWxkL3czYy10ZXN0cy90by1iZS1pbXBvcnRlZC9jc3N3Zy10ZXN0cy90L3Rlc3QyLmh0bWwn
KSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvV2Vi
S2l0QnVpbGQvdzNjLXRlc3RzL3RvLWJlLWltcG9ydGVkL2Nzc3dnLXRlc3RzL3NvbWUvZGlyZWN0
b3J5L2luL2Nzc3dnLXJvb3QvdGVzdDItcmVmLmh0bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy9jc3N3Zy10ZXN0
cy90L3Rlc3QyLWV4cGVjdGVkLmh0bWwnKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4
aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL2Nzc3dnLXRlc3RzL3QvdGVzdDIu
aHRtbCcpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291
dC9MYXlvdXRUZXN0cy93M2MvY3Nzd2ctdGVzdHMvdC90ZXN0Mi1leHBlY3RlZC5odG1sJykpCisg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRl
c3RzL3czYy9jc3N3Zy10ZXN0cy9zb21lL2RpcmVjdG9yeS9pbi9jc3N3Zy1yb290L3Rlc3QyLXJl
Zi5odG1sJykpCiAgICAgICAgICMgdGVzdDMKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4
aXN0cygnL21vY2stY2hlY2tvdXQvV2ViS2l0QnVpbGQvdzNjLXRlc3RzL3RvLWJlLWltcG9ydGVk
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy90ZXN0My5odG1sJykpCiAgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L1dlYktpdEJ1aWxkL3cz
Yy10ZXN0cy90by1iZS1pbXBvcnRlZC93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMv
dGVzdDMtcmVmLmh0bWwnKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21v
Y2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWlt
YWdlcy90ZXN0My5odG1sJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9t
b2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1p
bWFnZXMvdGVzdDMtZXhwZWN0ZWQuaHRtbCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMu
ZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtaW1hZ2VzL3Rlc3QzLXJlZi5odG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL3Rlc3QzLWV4cGVjdGVkLmh0bWwnKSkKICAgICAgICAgIyB0
ZXN0NAogICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9X
ZWJLaXRCdWlsZC93M2MtdGVzdHMvdG8tYmUtaW1wb3J0ZWQvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtaW1hZ2VzL3Rlc3Q0Lmh0bWwnKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4
aXN0cygnL21vY2stY2hlY2tvdXQvV2ViS2l0QnVpbGQvdzNjLXRlc3RzL3RvLWJlLWltcG9ydGVk
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zb21lL2RpcmVjdG9yeS9pbi93cHQtcm9vdC90ZXN0NC1yZWYu
aHRtbCcpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291
dC9MYXlvdXRUZXN0cy93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL3Rlc3Q0
Lmh0bWwnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tv
dXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy90ZXN0
NC1leHBlY3RlZC5odG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9t
b2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc29tZS9kaXJl
Y3RvcnkvaW4vd3B0LXJvb3QvdGVzdDQtcmVmLmh0bWwnKSkKICAgICAgICAgIyB0ZXN0NQogICAg
ICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9XZWJLaXRCdWls
ZC93M2MtdGVzdHMvdG8tYmUtaW1wb3J0ZWQvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1h
Z2VzL3Rlc3Q1Lmh0bWwnKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21v
Y2stY2hlY2tvdXQvV2ViS2l0QnVpbGQvdzNjLXRlc3RzL3RvLWJlLWltcG9ydGVkL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zb21lL2RpcmVjdG9yeS9pbi93cHQtcm9vdC90ZXN0NS1yZWYuaHRtbCcpKQog
ICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRU
ZXN0cy93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL3Rlc3Q1Lmh0bWwnKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0
VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy90ZXN0NS1leHBlY3Rl
ZC5odG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNr
b3V0L0xheW91dFRlc3RzL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc29tZS9kaXJlY3RvcnkvaW4v
d3B0LXJvb3QvdGVzdDUtcmVmLmh0bWwnKSkKIAogICAgIGRlZiB0ZXN0X3dlYmtpdF90ZXN0X3J1
bm5lcl9pbXBvcnRfcmVmdGVzdHNfd2l0aF9hYnNvbHV0ZV9wYXRoc19mcm9tX3NvdXJjZV9kaXIo
c2VsZik6CiAgICAgICAgIEZBS0VfRklMRVMgPSB7CkBAIC00MjgsMTkgKzQzMCwyOSBAQCBjbGFz
cyBUZXN0SW1wb3J0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICcvaG9t
ZS91c2VyL3dwdC9zb21lL2RpcmVjdG9yeS9pbi93cHQtcm9vdC90ZXN0Mi1yZWYuaHRtbCc6ICc8
aHRtbD48L2h0bWw+JywKICAgICAgICAgICAgICcvaG9tZS91c2VyL3dwdC9jc3MvY3NzLWltYWdl
cy90ZXN0My5odG1sJzogJzxodG1sPjxoZWFkPjxsaW5rIHJlbD1tYXRjaCBocmVmPSIgICAgICAg
ICAgICAgL3NvbWUvZGlyZWN0b3J5L2luL3dwdC1yb290L3Rlc3QzLXJlZi5odG1sICAgICI+PC9o
ZWFkPjwvaHRtbD4nLAogICAgICAgICAgICAgJy9ob21lL3VzZXIvd3B0L3NvbWUvZGlyZWN0b3J5
L2luL3dwdC1yb290L3Rlc3QzLXJlZi5odG1sJzogJzxodG1sPjwvaHRtbD4nLAorICAgICAgICAg
ICAgJy9ob21lL3VzZXIvd3B0L2Nzcy9jc3MtaW1hZ2VzL3Rlc3Q0Lmh0bWwnOiAnPGh0bWw+PGhl
YWQ+PGxpbmsgcmVsPW1hdGNoIGhyZWY9dGVzdDQtcmVmLmh0bWw+PC9oZWFkPjwvaHRtbD4nLAor
ICAgICAgICAgICAgJy9ob21lL3VzZXIvd3B0L2Nzcy9jc3MtaW1hZ2VzL3Rlc3Q0LXJlZi5odG1s
JzogJzxodG1sPjwvaHRtbD4nLAorICAgICAgICAgICAgJy9ob21lL3VzZXIvd3B0L2Nzcy9jc3Mt
dmFsdWVzL3Rlc3QxLmh0bWwnOiAnPGh0bWw+PGhlYWQ+PGxpbmsgcmVsPW1hdGNoIGhyZWY9cmVm
ZXJlbmNlL2dyZWVuLXNxdWFyZS5odG1sPjwvaGVhZD48L2h0bWw+JywKKyAgICAgICAgICAgICcv
aG9tZS91c2VyL3dwdC9jc3MvY3NzLXZhbHVlcy9yZWZlcmVuY2UvZ3JlZW4tc3F1YXJlLmh0bWwn
OiAnPGh0bWw+PC9odG1sPicsCiAgICAgICAgIH0KICAgICAgICAgRkFLRV9GSUxFUy51cGRhdGUo
RkFLRV9SRVBPU0lUT1JJRVMpCiAKICAgICAgICAgZnMgPSBzZWxmLmltcG9ydF9kaXJlY3Rvcnko
WyctcycsICcvaG9tZS91c2VyL3dwdCcsICctZCcsICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0
cy93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzJ10sIEZBS0VfRklMRVMsICdjc3MvY3NzLWltYWdlcycp
CiAgICAgICAgICMgdGVzdDEKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21v
Y2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWlt
YWdlcy90ZXN0MS5odG1sJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9t
b2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1p
bWFnZXMvdGVzdDEtZXhwZWN0ZWQuaHRtbCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMu
ZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtaW1hZ2VzL3Rlc3QxLXJlZi5odG1sJykpCiAgICAgICAgICMgdGVzdDIKICAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy90ZXN0Mi5odG1sJykpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3Rz
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvdGVzdDItZXhwZWN0ZWQuaHRt
bCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9M
YXlvdXRUZXN0cy93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NvbWUvZGlyZWN0b3J5L2luL3dwdC1y
b290L3Rlc3QyLXJlZi5odG1sJykpCiAgICAgICAgICMgdGVzdDMKICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy90ZXN0My5odG1sJykpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvdGVzdDMtZXhwZWN0ZWQuaHRtbCcpKQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NvbWUvZGlyZWN0b3J5L2luL3dwdC1yb290L3Rlc3QzLXJl
Zi5odG1sJykpCisgICAgICAgICMgdGVzdDQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4
aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWltYWdlcy90ZXN0NC5odG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5l
eGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1pbWFnZXMvdGVzdDQtcmVmLmh0bWwnKSkKKyAgICAgICAgIyB0ZXN0NQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdmFsdWVzL3Rlc3QxLmh0bWwnKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXZhbHVlcy9yZWZlcmVuY2UvZ3JlZW4tc3F1
YXJlLmh0bWwnKSkKIAogICAgIGRlZiB0ZXN0X3RlbXBsYXRlX3Rlc3Qoc2VsZik6CiAgICAgICAg
IEZBS0VfRklMRVMgPSB7CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90
ZXN0X3BhcnNlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyLnB5
Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggMjllYWI5Y2FiYzFkYzVjN2Q1
MTM2YThkNzZkOGM0YzE0MzNkZWVjOC4uNzUzMWM1YmRjYzE4YTUyZWFiNTE2MGRjYzMwMzFlMDRm
YzEzMDExMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlci5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlci5weQpAQCAtMTcwLDcg
KzE3MCw2IEBAIGNsYXNzIFRlc3RQYXJzZXIob2JqZWN0KToKIAogICAgIGRlZiBpc193cHRfcmVm
dGVzdChzZWxmKToKICAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHRoZSB0ZXN0IGlzIGEgcmVm
IHRlc3QgYWNjb3JkaW5nIFdQVCBydWxlcyAoaS5lLiBmaWxlIGhhcyBhIC1yZWYuaHRtbCBjb3Vu
dGVycGFydCkuIiIiCi0gICAgICAgIHBhcnRzID0gc2VsZi5maWxlc3lzdGVtLnNwbGl0ZXh0KHNl
bGYuZmlsZW5hbWUpCiAgICAgICAgIHJldHVybiAgc2VsZi5maWxlc3lzdGVtLmlzZmlsZShzZWxm
LnBvdGVudGlhbF9yZWZfZmlsZW5hbWUoKSkKIAogICAgIGRlZiBzdXBwb3J0X2ZpbGVzKHNlbGYs
IGRvYyk6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383132</attachid>
            <date>2019-11-08 09:28:55 -0800</date>
            <delta_ts>2019-11-08 21:56:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203784-20191108092854.patch</filename>
            <type>text/plain</type>
            <size>25987</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxOTYyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2Q0NjM3MjE5MGE3ZjIxZTc0YjI1ZGZiZDhjMDEyN2Ji
NmZmOGExZS4uNjBmOGIwMjNlODNhMGFmMTFiZjlhMjhkMDJkODRmZDcxZjBiOGFiYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQx
IEBACisyMDE5LTExLTA3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBmaW5kaW5nIHRlc3QgcmVmZXJlbmNlcyB2aWEgPGxp
bmsgcmVsPSJtYXRjaCI+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDM3ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXaGVuIGxvb2tpbmcgZm9yIHRlc3QgcmVmZXJlbmNlcywgd2Ugbm93IGNoZWNrIGZv
ciBhIDxsaW5rIHJlbD0ibWF0Y2giPgorICAgICAgICBvciA8bGluayByZWw9Im1pc21hdGNoIj4g
YmVmb3JlIGxvb2tpbmcgaW4gdGhlIGZpbGVzeXN0ZW0gZm9yICItZXhwZWN0ZWQiIGZpbGVzLgor
ICAgICAgICBBIHdhcm5pbmcgaXMgbG9nZ2VkIGlmIGJvdGggZXhpc3QuCisKKyAgICAgICAgRml4
IFdQVCBpbXBvcnRpbmcgdG8gbm90IGNsb25lIHJlZmVyZW5jZSBmaWxlcyBmb3VuZCB2aWEgPGxp
bms+IHRhZ3MgaW50bworICAgICAgICAiLWV4cGVjdGVkLmh0bWwiIGZpbGVzLCBhbmQgdG8gdHJl
YXQgZmlsZXMgd2l0aCAiLXJlZiIgb3IgInJlZmVyZW5jZSIgaW4gdGhlIG5hbWUKKyAgICAgICAg
YXMgcmVmZXJlbmNlIGZpbGVzLiBPbiBpbXBvcnQsIGV4aXN0aW5nIC1leHBlY3RlZC5odG1sIGZp
bGVzIHdpbGwgYmUgcmVtb3ZlZC4KKworICAgICAgICBBZGQgc29tZSB1bml0IHRlc3RzLgorCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xl
X3Rlc3RfcnVubmVyLnB5OgorICAgICAgICAoU2luZ2xlVGVzdFJ1bm5lci5fcnVuX3JlZnRlc3Qp
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5OgorICAgICAgICAoUG9y
dC5fZmluZF9yZWZlcmVuY2VfZmlsZV92aWFfbGlua190YWcpOgorICAgICAgICAoUG9ydC5fZmlu
ZF9yZWZlcmVuY2VfZmlsZV92aWFfbGlua190YWcuX3JlZmVyZW5jZV9saW5rc19vZl90eXBlKToK
KyAgICAgICAgKFBvcnQuX2ZpbmRfcmVmZXJlbmNlX2ZpbGVzX2luX2ZpbGVzeXN0ZW0pOgorICAg
ICAgICAoUG9ydC5yZWZlcmVuY2VfZmlsZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
cG9ydC9iYXNlX3VuaXR0ZXN0LnB5OgorICAgICAgICAoUG9ydFRlc3QudGVzdF9yZWZlcmVuY2Vf
ZmlsZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5OgorICAgICAg
ICAoVGVzdEluc3RhbmNlLl9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3cz
Yy90ZXN0X2ltcG9ydGVyLnB5OgorICAgICAgICAoVGVzdEltcG9ydGVyLmZpbmRfaW1wb3J0YWJs
ZV90ZXN0cyk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIuaW1wb3J0X3Rlc3RzKToKKyAgICAgICAg
KFRlc3RJbXBvcnRlci5faXNfaW5fcmVzb3VyY2VzX2RpcmVjdG9yeSk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlcl91bml0dGVzdC5weToKKyAgICAgICAgKHRl
c3Rfd2Via2l0X3Rlc3RfcnVubmVyX2ltcG9ydF9yZWZ0ZXN0c193aXRoX2Fic29sdXRlX3BhdGhz
X2Rvd25sb2FkKToKKyAgICAgICAgKHRlc3Rfd2Via2l0X3Rlc3RfcnVubmVyX2ltcG9ydF9yZWZ0
ZXN0c193aXRoX2Fic29sdXRlX3BhdGhzX2Zyb21fc291cmNlX2Rpcik6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXIucHk6CisgICAgICAgIChUZXN0UGFyc2VyLmlz
X3dwdF9yZWZ0ZXN0KToKKwogMjAxOS0xMS0wMSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBh
cHBsZS5jb20+CiAKICAgICAgICAgUHl0aG9uIDM6IEFkZCBzdXBwb3J0IGluIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cy5tb2RlbApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5
CmluZGV4IDcxOGEwODk0NTMyZTViODgxZDFhMGQxZDMwNmMxM2Y0YjA2MTYzY2UuLmRlNzRhZDlm
ZTM4M2UyZGFlZjlhYWIyMDE2YTRjZGIzOTVlYTZmNzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9z
aW5nbGVfdGVzdF9ydW5uZXIucHkKQEAgLTI5MCw2ICsyOTAsNyBAQCBjbGFzcyBTaW5nbGVUZXN0
UnVubmVyKG9iamVjdCk6CiAgICAgICAgIHJldHVybiBmYWlsdXJlcwogCiAgICAgZGVmIF9ydW5f
cmVmdGVzdChzZWxmKToKKyAgICAgICAgX2xvZy5kZWJ1Zygne30gcnVubmluZyByZWYgdGVzdCB7
fScuZm9ybWF0KHNlbGYuX3dvcmtlcl9uYW1lLCBzZWxmLl90ZXN0X25hbWUpKQogICAgICAgICB0
ZXN0X291dHB1dCA9IHNlbGYuX2RyaXZlci5ydW5fdGVzdChzZWxmLl9kcml2ZXJfaW5wdXQoKSwg
c2VsZi5fc3RvcF93aGVuX2RvbmUpCiAgICAgICAgIHRvdGFsX3Rlc3RfdGltZSA9IDAKICAgICAg
ICAgcmVmZXJlbmNlX291dHB1dCA9IE5vbmUKQEAgLTMwNiw2ICszMDcsNyBAQCBjbGFzcyBTaW5n
bGVUZXN0UnVubmVyKG9iamVjdCk6CiAgICAgICAgIGZvciBleHBlY3RhdGlvbiwgcmVmZXJlbmNl
X2ZpbGVuYW1lIGluIHB1dEFsbE1pc21hdGNoQmVmb3JlTWF0Y2goc2VsZi5fcmVmZXJlbmNlX2Zp
bGVzKToKICAgICAgICAgICAgIHJlZmVyZW5jZV90ZXN0X25hbWUgPSBzZWxmLl9wb3J0LnJlbGF0
aXZlX3Rlc3RfZmlsZW5hbWUocmVmZXJlbmNlX2ZpbGVuYW1lKQogICAgICAgICAgICAgcmVmZXJl
bmNlX3Rlc3RfbmFtZXMuYXBwZW5kKHJlZmVyZW5jZV90ZXN0X25hbWUpCisgICAgICAgICAgICBf
bG9nLmRlYnVnKCd7fSBydW5uaW5nIHJlZmVyZW5jZSB7fScuZm9ybWF0KHNlbGYuX3dvcmtlcl9u
YW1lLCByZWZlcmVuY2VfdGVzdF9uYW1lKSkKICAgICAgICAgICAgIHJlZmVyZW5jZV9vdXRwdXQg
PSBzZWxmLl9kcml2ZXIucnVuX3Rlc3QoRHJpdmVySW5wdXQocmVmZXJlbmNlX3Rlc3RfbmFtZSwg
c2VsZi5fdGltZW91dCwgTm9uZSwgc2hvdWxkX3J1bl9waXhlbF90ZXN0PVRydWUpLCBzZWxmLl9z
dG9wX3doZW5fZG9uZSkKICAgICAgICAgICAgIHRlc3RfcmVzdWx0ID0gc2VsZi5fY29tcGFyZV9v
dXRwdXRfd2l0aF9yZWZlcmVuY2UocmVmZXJlbmNlX291dHB1dCwgdGVzdF9vdXRwdXQsIHJlZmVy
ZW5jZV9maWxlbmFtZSwgZXhwZWN0YXRpb24gPT0gJyE9JykKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvYmFzZS5weQppbmRleCA2ODAwYjE3ZWRmOGVkMTY3ZGFkMmU2Nzg2ODlkZWI1NzBlYWMyOTk1
Li5lZmI4ZjBhMDYxNTg3MTA5MWY0YTAyOGNkZDhlZTU5NTkyZDIxN2JhIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvYmFzZS5weQpAQCAtNjIsNiArNjIsOCBAQCBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5zZXJ2ZXJzIGltcG9ydCBhcGFjaGVfaHR0cF9zZXJ2ZXIsIGh0dHBfc2VydmVyLCBo
dHRwXwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuc2VydmVycyBpbXBvcnQgd2ViX3BsYXRm
b3JtX3Rlc3Rfc2VydmVyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5zZXJ2ZXJzIGltcG9y
dCB3ZWJzb2NrZXRfc2VydmVyCiAKK2Zyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5CZWF1dGlmdWxT
b3VwIGltcG9ydCBCZWF1dGlmdWxTb3VwLCBTb3VwU3RyYWluZXIKKwogX2xvZyA9IGxvZ2dpbmcu
Z2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKQEAgLTUyOSwxNiArNTMxLDQ1IEBAIGNsYXNzIFBvcnQo
b2JqZWN0KToKICAgICAgICAgICAgIHBhcnNlZF9saXN0LnNldGRlZmF1bHQoZmlsZXN5c3RlbS5q
b2luKHRlc3RfZGlycGF0aCwgdGVzdF9maWxlKSwgW10pLmFwcGVuZCgoZXhwZWN0YXRpb25fdHlw
ZSwgZmlsZXN5c3RlbS5qb2luKHRlc3RfZGlycGF0aCwgcmVmX2ZpbGUpKSkKICAgICAgICAgcmV0
dXJuIHBhcnNlZF9saXN0CiAKLSAgICBkZWYgcmVmZXJlbmNlX2ZpbGVzKHNlbGYsIHRlc3RfbmFt
ZSwgZGV2aWNlX3R5cGU9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgZXhwZWN0
YXRpb24gKD09IG9yICE9KSBhbmQgZmlsZW5hbWUgcGFpcnMiIiIKKyAgICBkZWYgX2ZpbmRfcmVm
ZXJlbmNlX2ZpbGVfdmlhX2xpbmtfdGFnKHNlbGYsIHRlc3RfbmFtZSk6CisgICAgICAgICMgVGhp
cyBjb2RlIG1hdGNoZXMgY29kZSBpbiB3M2MvdGVzdF9wYXJzZXIucHkgYnV0IHVzaW5nIHRoYXQg
aGVyZSB3b3VsZCBiZSBhIGxheWVyaW5nIHZpb2xhdGlvbi4KKyAgICAgICAgIyBJZGVhbGx5IGFs
bCB0aGlzIHJlZmVyZW5jZS1maW5kaW5nIGNvZGUgd291bGQgbW92ZSBvdXQgb2YgUG9ydC4KKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgbGlua3MgPSBTb3VwU3RyYWluZXIoJ2xpbmsnKQorICAg
ICAgICAgICAgbGlua19zZXQgPSBCZWF1dGlmdWxTb3VwKHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF9i
aW5hcnlfZmlsZShzZWxmLmFic3BhdGhfZm9yX3Rlc3QodGVzdF9uYW1lKSksIHBhcnNlT25seVRo
ZXNlPWxpbmtzKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBfbG9nLndhcm5pbmcoJ0Zh
aWxlZCB0byBwYXJzZSB7fSB0byBkZXRlY3QgPGxpbmsgcmVsPT4gcmVmZXJlbmNlIHRlc3QnLmZv
cm1hdCh0ZXN0X25hbWUpKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgICAgICBpZiBz
ZWxmLmdldF9vcHRpb24oJ3RyZWF0X3JlZl90ZXN0c19hc19waXhlbF90ZXN0cycpOgotICAgICAg
ICAgICAgcmV0dXJuIFtdCisgICAgICAgIGRlZiBfcmVmZXJlbmNlX2xpbmtzX29mX3R5cGUocmVm
dGVzdF90eXBlKToKKyAgICAgICAgICAgIHJldHVybiBsaW5rX3NldC5maW5kQWxsKHJlbD1yZWZ0
ZXN0X3R5cGUpCiAKLSAgICAgICAgcmVzdWx0ID0gc2VsZi5fZ2V0X3JlZnRlc3RfbGlzdCh0ZXN0
X25hbWUpCi0gICAgICAgIGlmIHJlc3VsdDoKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQuZ2V0
KHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgdGVzdF9uYW1l
KSwgW10pCisgICAgICAgIG1hdGNoZXMgPSBfcmVmZXJlbmNlX2xpbmtzX29mX3R5cGUoJ21hdGNo
JykgKyBfcmVmZXJlbmNlX2xpbmtzX29mX3R5cGUoJ21pc21hdGNoJykKKyAgICAgICAgaWYgbWF0
Y2hlczoKKyAgICAgICAgICAgIGlmIGxlbihtYXRjaGVzKSA+IDE6CisgICAgICAgICAgICAgICAg
X2xvZy53YXJuaW5nKCdNdWx0aXBsZSByZWZlcmVuY2VzIGFyZSBub3Qgc3VwcG9ydGVkLiBJbXBv
cnRpbmcgdGhlIGZpcnN0IHJlZiBkZWZpbmVkIGluIHt9Jy5mb3JtYXQodGVzdF9uYW1lKSkKKyAg
ICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBocmVmX21hdGNoX2ZpbGUgPSBtYXRjaGVz
WzBdWydocmVmJ10uc3RyaXAoKQorICAgICAgICAgICAgICAgIG1hdGNoX3R5cGUgPSBtYXRjaGVz
WzBdWydyZWwnXQorCisgICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygnRm9yIHt9IGZvdW5kIHJl
ZmVyZW5jZSBmcm9tIDxsaW5rIHJlbD17fT4ge30nLmZvcm1hdCh0ZXN0X25hbWUsIG1hdGNoX3R5
cGUsIGhyZWZfbWF0Y2hfZmlsZSkpCisgICAgICAgICAgICAgICAgaWYgaHJlZl9tYXRjaF9maWxl
LnN0YXJ0c3dpdGgoJy8nKToKKyAgICAgICAgICAgICAgICAgICAgcmVmX2ZpbGUgPSBzZWxmLl9m
aWxlc3lzdGVtLmpvaW4oc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCksIGhyZWZfbWF0Y2hfZmlsZS5s
c3RyaXAoJy8nKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBy
ZWZfZmlsZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwg
c2VsZi5fZmlsZXN5c3RlbS5kaXJuYW1lKHRlc3RfbmFtZSksIGhyZWZfbWF0Y2hfZmlsZSkKKwor
ICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhyZWZfZmlsZSk6
CisgICAgICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygne30gc3BlY2lmaWVzIHJlZmVyZW5j
ZSB7fSBidXQgdGhlIGZpbGUgZG9lc25cJ3QgZXhpc3Q7IGlnbm9yaW5nLicuZm9ybWF0KHRlc3Rf
bmFtZSwgbWF0Y2hlc1swXSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAg
ICAgICAgICAgICAgICByZXR1cm4gWygnPT0nIGlmIG1hdGNoX3R5cGUgPT0gJ21hdGNoJyBlbHNl
ICchPScsIHJlZl9maWxlKV0KKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvciBhcyBlOgorICAg
ICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ3t9IGhhcyBhIHJlZmVyZW5jZSBsaW5rIGJ1dCBpcyBt
aXNzaW5nIHRoZSAiaHJlZiInLmZvcm1hdCh0ZXN0X25hbWUpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBOb25lCiAKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBfZmluZF9yZWZlcmVu
Y2VfZmlsZXNfaW5fZmlsZXN5c3RlbShzZWxmLCB0ZXN0X25hbWUsIGRldmljZV90eXBlPU5vbmUp
OgogICAgICAgICByZXN1bHQgPSBbXQogICAgICAgICBzdWZmaXhlcyA9IFtdCiAgICAgICAgIGZv
ciBwYXJ0MSBpbiBbJycsICctbWlzbWF0Y2gnXToKQEAgLTU1MSw4ICs1ODIsMzMgQEAgY2xhc3Mg
UG9ydChvYmplY3QpOgogICAgICAgICAgICAgICAgICchPScgaWYgJy1taXNtYXRjaC4nIGluIGJh
c2VsaW5lX2ZpbGVuYW1lIGVsc2UgJz09JywKICAgICAgICAgICAgICAgICBzZWxmLl9maWxlc3lz
dGVtLmpvaW4ocGxhdGZvcm1fZGlyLCBiYXNlbGluZV9maWxlbmFtZSksCiAgICAgICAgICAgICAp
KQorCiAgICAgICAgIHJldHVybiByZXN1bHQKIAorICAgIGRlZiByZWZlcmVuY2VfZmlsZXMoc2Vs
ZiwgdGVzdF9uYW1lLCBkZXZpY2VfdHlwZT1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJuIGEgbGlz
dCBvZiBleHBlY3RhdGlvbiAoPT0gb3IgIT0pIGFuZCBmaWxlbmFtZSBwYWlycyIiIgorCisgICAg
ICAgIGlmIHNlbGYuZ2V0X29wdGlvbigndHJlYXRfcmVmX3Rlc3RzX2FzX3BpeGVsX3Rlc3RzJyk6
CisgICAgICAgICAgICByZXR1cm4gW10KKworICAgICAgICByZXN1bHQgPSBzZWxmLl9nZXRfcmVm
dGVzdF9saXN0KHRlc3RfbmFtZSkKKyAgICAgICAgaWYgcmVzdWx0OgorICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdC5nZXQoc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2Rp
cigpLCB0ZXN0X25hbWUpLCBbXSkKKworICAgICAgICBsaW5rX3RhZ19yZWZlcmVuY2VfZmlsZSA9
IHNlbGYuX2ZpbmRfcmVmZXJlbmNlX2ZpbGVfdmlhX2xpbmtfdGFnKHRlc3RfbmFtZSkKKyAgICAg
ICAgIyBGSVhNRTogU3RvcCBoaXR0aW5nIHRoZSBmaWxlc3lzdGVtIGxvb2tpbmcgZm9yIHJlZmVy
ZW5jZSBmaWxlcyBvbmNlIHdlJ3ZlIGVtYnJhY2VkIDxsaW5rIHJlbD0iIj4KKyAgICAgICAgZmls
ZXN5c3RlbV9yZWZlcmVuY2VfZmlsZXMgPSBzZWxmLl9maW5kX3JlZmVyZW5jZV9maWxlc19pbl9m
aWxlc3lzdGVtKHRlc3RfbmFtZSwgZGV2aWNlX3R5cGUpCisKKyAgICAgICAgaWYgbGlua190YWdf
cmVmZXJlbmNlX2ZpbGUgYW5kIGZpbGVzeXN0ZW1fcmVmZXJlbmNlX2ZpbGVzOgorICAgICAgICAg
ICAgbGlua19yZWZfcGF0aCA9IG9zLnBhdGgucmVscGF0aChsaW5rX3RhZ19yZWZlcmVuY2VfZmls
ZVswXVsxXSwgc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCkpCisgICAgICAgICAgICBmaWxlX3JlZl9w
YXRoID0gb3MucGF0aC5yZWxwYXRoKGZpbGVzeXN0ZW1fcmVmZXJlbmNlX2ZpbGVzWzBdWzFdLCBz
ZWxmLmxheW91dF90ZXN0c19kaXIoKSkKKyAgICAgICAgICAgIF9sb2cud2FybmluZygnRm9yIHt9
IGZvdW5kIGJvdGggIjxsaW5rIHJlbD0+IiB7fSBhbmQge30nLmZvcm1hdCh0ZXN0X25hbWUsIGxp
bmtfcmVmX3BhdGgsIGZpbGVfcmVmX3BhdGgpKQorCisgICAgICAgIGlmIGxpbmtfdGFnX3JlZmVy
ZW5jZV9maWxlOgorICAgICAgICAgICAgcmV0dXJuIGxpbmtfdGFnX3JlZmVyZW5jZV9maWxlCisK
KyAgICAgICAgcmV0dXJuIGZpbGVzeXN0ZW1fcmVmZXJlbmNlX2ZpbGVzCisKICAgICBkZWYgcG90
ZW50aWFsX3Rlc3RfbmFtZXNfZnJvbV9leHBlY3RlZF9maWxlKHNlbGYsIHBhdGgpOgogICAgICAg
ICAiIiJSZXR1cm4gcG90ZW50aWFsIHRlc3QgbmFtZXMgaWYgYW55IGZyb20gYSBwb3RlbnRpYWwg
ZXhwZWN0ZWQgZmlsZSBwYXRoLCByZWxhdGl2ZSB0byBMYXlvdXRUZXN0cyBkaXJlY3RvcnkuIiIi
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlX3VuaXR0ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKaW5kZXgg
NWRmMWNjNTUwNjllMmE3YmYwZTdmNjdkOTJkZDc5ODdhNGI3NjJmZS4uNGU0Njc5YTg1MDJiNWZl
NWU2NWExMDkyYzQ0ZTQ1NTQ0MTFiNmIyMiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L2Jhc2VfdW5pdHRlc3QucHkKQEAgLTMxNCw2ICszMTQsOCBAQCBjbGFzcyBQb3J0VGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5yZWZlcmVu
Y2VfZmlsZXMoJ3Bhc3Nlcy9zdmdyZWZ0ZXN0LnN2ZycpLCBbKCc9PScsIHBvcnQubGF5b3V0X3Rl
c3RzX2RpcigpICsgJy9wYXNzZXMvc3ZncmVmdGVzdC1leHBlY3RlZC5zdmcnKV0pCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5yZWZlcmVuY2VfZmlsZXMoJ3Bhc3Nlcy94aHRyZWZ0ZXN0
LnN2ZycpLCBbKCc9PScsIHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpICsgJy9wYXNzZXMveGh0cmVm
dGVzdC1leHBlY3RlZC5odG1sJyldKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucmVm
ZXJlbmNlX2ZpbGVzKCdwYXNzZXMvcGhwcmVmdGVzdC5waHAnKSwgWygnIT0nLCBwb3J0LmxheW91
dF90ZXN0c19kaXIoKSArICcvcGFzc2VzL3BocHJlZnRlc3QtZXhwZWN0ZWQtbWlzbWF0Y2guc3Zn
JyldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucmVmZXJlbmNlX2ZpbGVzKCdyZWZ0
ZXN0cy9tb2Rlcm4vbGluay10ZXN0Lmh0bWwnKSwgWygnPT0nLCBwb3J0LmxheW91dF90ZXN0c19k
aXIoKSArICcvcmVmdGVzdHMvbW9kZXJuL3Jlc291cmNlcy9ncmVlbi1zcXVhcmUuaHRtbCcpXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJlZmVyZW5jZV9maWxlcygncmVmdGVzdHMv
bW9kZXJuL2xpbmstbWlzbWF0Y2gtdGVzdC5odG1sJyksIFsoJyE9JywgcG9ydC5sYXlvdXRfdGVz
dHNfZGlyKCkgKyAnL3JlZnRlc3RzL21vZGVybi9yZXNvdXJjZXMvZ3JlZW4tc3F1YXJlLmh0bWwn
KV0pCiAKICAgICBkZWYgdGVzdF9vcGVyYXRpbmdfc3lzdGVtKHNlbGYpOgogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdtYWMnLCBzZWxmLm1ha2VfcG9ydCgpLm9wZXJhdGluZ19zeXN0ZW0oKSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHkKaW5kZXggMzM5YjUzYzUxYWQzYTNiZjYzOGEw
N2ZmOTdlYzE4YzAxMGVkZWFjYS4uYWRkMmM5MGE0MzIyNDI4NmVlMmE1YWMyOWRjMjgyZGU5Mzg2
MTY5NCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHkKQEAgLTU5LDYgKzU5LDcgQEAg
Y2xhc3MgVGVzdEluc3RhbmNlKG9iamVjdCk6CiAgICAgICAgICMgYmVpbmcgdHJlYXRlZCBhcyBV
VEYtOCAodGhlIGNoYXJhY3RlciBpcyBpbnZhbGlkKQogICAgICAgICBzZWxmLmFjdHVhbF9pbWFn
ZSA9IHNlbGYuYmFzZSArICdceDhhJyArICctcG5nJyArICd0RVh0Y2hlY2tzdW1ceDAwJyArIHNl
bGYuYWN0dWFsX2NoZWNrc3VtCiAKKyAgICAgICAgc2VsZi5maWxlX2NvbnRlbnQgPSBOb25lCiAg
ICAgICAgIHNlbGYuZXhwZWN0ZWRfdGV4dCA9IHNlbGYuYWN0dWFsX3RleHQKICAgICAgICAgc2Vs
Zi5leHBlY3RlZF9pbWFnZSA9IHNlbGYuYWN0dWFsX2ltYWdlCiAKQEAgLTEwMiw3ICsxMDMsNyBA
QCBjbGFzcyBUZXN0TGlzdChvYmplY3QpOgogIwogIyBUaGVzZSBudW1iZXJzIG1heSBuZWVkIHRv
IGJlIHVwZGF0ZWQgd2hlbmV2ZXIgd2UgYWRkIG9yIGRlbGV0ZSB0ZXN0cy4KICMKLVRPVEFMX1RF
U1RTID0gNzcKK1RPVEFMX1RFU1RTID0gNzkKIFRPVEFMX1NLSVBTID0gOQogVE9UQUxfUkVUUklF
UyA9IDE1CiAKQEAgLTI1MCw2ICsyNTEsMTEgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MzQK
ICAgICB0ZXN0cy5hZGQoJ3JlZnRlc3RzL2Zvby9yZWZlcmVuY2UvYmFyL2NvbW1vbi5odG1sJykK
ICAgICB0ZXN0cy5hZGQoJ3JlZnRlc3RzL2Zvby9yZWZ0ZXN0L2Jhci9zaGFyZWQuaHRtbCcpCiAK
KyAgICAjICJtb2Rlcm4iIHJlZiB0ZXN0cyB1c2UgPGxpbms+IHRhZ3MgdG8gc3BlY2lmeSB0aGUg
cmVmZXJlbmNlLgorICAgIHRlc3RzLmFkZCgncmVmdGVzdHMvbW9kZXJuL2xpbmstdGVzdC5odG1s
JywgaXNfcmVmdGVzdD1UcnVlLCBhY3R1YWxfY2hlY2tzdW09J2lqaycsIGFjdHVhbF9pbWFnZT0n
aWprJywgZmlsZV9jb250ZW50PSc8aHRtbD48aGVhZD48bGluayByZWw9bWF0Y2ggaHJlZj1yZXNv
dXJjZXMvZ3JlZW4tc3F1YXJlLmh0bWw+PC9oZWFkPjxib2R5PmhpPC9ib2R5PicpCisgICAgdGVz
dHMuYWRkKCdyZWZ0ZXN0cy9tb2Rlcm4vbGluay1taXNtYXRjaC10ZXN0Lmh0bWwnLCBpc19yZWZ0
ZXN0PVRydWUsIGFjdHVhbF9jaGVja3N1bT0namtsJywgYWN0dWFsX2ltYWdlPSdqa2wnLCBmaWxl
X2NvbnRlbnQ9JzxodG1sPjxoZWFkPjxsaW5rIHJlbD1taXNtYXRjaCBocmVmPXJlc291cmNlcy9n
cmVlbi1zcXVhcmUuaHRtbD48L2hlYWQ+PGJvZHk+aGk8L2JvZHk+JykKKyAgICB0ZXN0cy5hZGQo
J3JlZnRlc3RzL21vZGVybi9yZXNvdXJjZXMvZ3JlZW4tc3F1YXJlLmh0bWwnLCBhY3R1YWxfY2hl
Y2tzdW09J2lqaycsIGFjdHVhbF9pbWFnZT0naWprJykKKwogICAgIHRlc3RzLmFkZCgnd2Vic29j
a2V0L3Rlc3RzL3Bhc3Nlcy90ZXh0Lmh0bWwnKQogCiAgICAgIyBGb3IgdGVzdGluZyB0ZXN0IGFy
ZSBwcm9wZXJseSBpbmNsdWRlZCBmcm9tIHBsYXRmb3JtIGRpcmVjdG9yaWVzLgpAQCAtMzUxLDcg
KzM1Nyw3IEBAIEJ1Zyh0ZXN0KSBwYXNzZXMvc2tpcHBlZC9za2lwLmh0bWwgWyBTa2lwIF0KICAg
ICAjIEFkZCBlYWNoIHRlc3QgYW5kIHRoZSBleHBlY3RlZCBvdXRwdXQsIGlmIGFueS4KICAgICB0
ZXN0X2xpc3QgPSB1bml0X3Rlc3RfbGlzdCgpCiAgICAgZm9yIHRlc3QgaW4gdGVzdF9saXN0LnRl
c3RzLnZhbHVlcygpOgotICAgICAgICBhZGRfZmlsZSh0ZXN0LCB0ZXN0Lm5hbWVbdGVzdC5uYW1l
LnJmaW5kKCcuJyk6XSwgJycpCisgICAgICAgIGFkZF9maWxlKHRlc3QsIHRlc3QubmFtZVt0ZXN0
Lm5hbWUucmZpbmQoJy4nKTpdLCB0ZXN0LmZpbGVfY29udGVudCBpZiB0ZXN0LmZpbGVfY29udGVu
dCBlbHNlICcnKQogICAgICAgICBpZiB0ZXN0LmlzX3JlZnRlc3Q6CiAgICAgICAgICAgICBjb250
aW51ZQogICAgICAgICBpZiB0ZXN0LmFjdHVhbF9hdWRpbzoKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUK
aW5kZXggMDUxYjFiYzdiMTIwMzBlNzlhZThlOWIwNTM5YWZlMWYxNjQ2NDM1ZS4uMjBlMzc3ZGI2
NDdmMjhjMTY4OTc4MjhjNTU0ZWYyMDc3MTg2ZTM1YwotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNj
L3Rlc3RfaW1wb3J0ZXIucHkKQEAgLTMyNiw3ICszMjYsOCBAQCBjbGFzcyBUZXN0SW1wb3J0ZXIo
b2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgY29weV9saXN0LmFwcGVuZCh7J3NyYyc6IGZ1
bGxwYXRoLCAnZGVzdCc6IGZpbGVuYW1lfSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWUK
ICAgICAgICAgICAgICAgICBlbGlmIHNlbGYuX2lzX2luX3Jlc291cmNlc19kaXJlY3RvcnkoZnVs
bHBhdGgpOgotICAgICAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoJyVzIGlzIGEgdGVzdCBs
b2NhdGVkIGluIGEgInJlc291cmNlcyIgZm9sZGVyLiBUaGlzIHRlc3Qgd2lsbCBiZSBza2lwcGVk
IGJ5IFdlYktpdCB0ZXN0IHJ1bm5lcnMuJywgZnVsbHBhdGgpCisgICAgICAgICAgICAgICAgICAg
IGlmIG5vdCAncmVmZXJlbmNlZmlsZScgaW4gdGVzdF9pbmZvLmtleXMoKToKKyAgICAgICAgICAg
ICAgICAgICAgICAgIF9sb2cud2FybmluZygnJXMgaXMgYSB0ZXN0IGxvY2F0ZWQgaW4gYSAicmVz
b3VyY2VzIiBvciAicmVmZXJlbmNlIiBmb2xkZXIuIFRoaXMgdGVzdCB3aWxsIGJlIHNraXBwZWQg
YnkgV2ViS2l0IHRlc3QgcnVubmVycy4nLCBmdWxscGF0aCkKIAogICAgICAgICAgICAgICAgIGlm
ICdtYW51YWx0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpOgogICAgICAgICAgICAgICAgICAgICBj
b250aW51ZQpAQCAtMzM1LDIzICszMzYsMjAgQEAgY2xhc3MgVGVzdEltcG9ydGVyKG9iamVjdCk6
CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Nsb3dfdGVzdHMuYXBwZW5kKGZ1bGxwYXRoKQog
CiAgICAgICAgICAgICAgICAgaWYgJ3JlZmVyZW5jZWZpbGUnIGluIHRlc3RfaW5mby5rZXlzKCk6
Ci0gICAgICAgICAgICAgICAgICAgICMgU2tpcCBpdCBzaW5jZSwgdGhlIGNvcnJlc3BvbmRpbmcg
cmVmZXJlbmNlIHRlc3Qgc2hvdWxkIGhhdmUgYSBsaW5rIHRvIHRoaXMgZmlsZQorICAgICAgICAg
ICAgICAgICAgICBfbG9nLmluZm8oJ0NvcHlpbmcgcmVzb3VyY2UgZmlsZSBmcm9tIHt9IHRvIHt9
Jy5mb3JtYXQoZnVsbHBhdGgsIGZpbGVuYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgY29weV9s
aXN0LmFwcGVuZCh7J3NyYyc6IGZ1bGxwYXRoLCAnZGVzdCc6IGZpbGVuYW1lfSkKICAgICAgICAg
ICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgICAgIGlmICdyZWZlcmVuY2UnIGlu
IHRlc3RfaW5mby5rZXlzKCk6CiAgICAgICAgICAgICAgICAgICAgIHJlZnRlc3RzICs9IDEKICAg
ICAgICAgICAgICAgICAgICAgdG90YWxfdGVzdHMgKz0gMQotICAgICAgICAgICAgICAgICAgICB0
ZXN0X2Jhc2VuYW1lID0gc2VsZi5maWxlc3lzdGVtLmJhc2VuYW1lKHRlc3RfaW5mb1sndGVzdCdd
KQogCi0gICAgICAgICAgICAgICAgICAgICMgQWRkIHRoZSByZWYgZmlsZSwgZm9sbG93aW5nIFdl
YktpdCBzdHlsZS4KLSAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogSWRlYWxseSB3ZSdkIHN1
cHBvcnQgcmVhZGluZyB0aGUgbWV0YWRhdGEKLSAgICAgICAgICAgICAgICAgICAgIyBkaXJlY3Rs
eSByYXRoZXIgdGhhbiByZWx5aW5nICBvbiBhIG5hbWluZyBjb252ZW50aW9uLgotICAgICAgICAg
ICAgICAgICAgICAjIFVzaW5nIGEgbmFtaW5nIGNvbnZlbnRpb24gY3JlYXRlcyBkdXBsaWNhdGUg
Y29waWVzIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAjIHJlZmVyZW5jZSBmaWxlcy4KKyAg
ICAgICAgICAgICAgICAgICAgIyBDaGVjayB0byBzZWUgaWYgdGhlcmUncyBhbiBleGlzdGluZyBy
ZWZlcmVuY2UgdG8gcmVtb3ZlLgorICAgICAgICAgICAgICAgICAgICB0ZXN0X2Jhc2VuYW1lID0g
c2VsZi5maWxlc3lzdGVtLmJhc2VuYW1lKHRlc3RfaW5mb1sndGVzdCddKQogICAgICAgICAgICAg
ICAgICAgICByZWZfZmlsZSA9IHNlbGYuZmlsZXN5c3RlbS5zcGxpdGV4dCh0ZXN0X2Jhc2VuYW1l
KVswXSArICctZXhwZWN0ZWQnCiAgICAgICAgICAgICAgICAgICAgIHJlZl9maWxlICs9IHNlbGYu
ZmlsZXN5c3RlbS5zcGxpdGV4dCh0ZXN0X2luZm9bJ3JlZmVyZW5jZSddKVsxXQorICAgICAgICAg
ICAgICAgICAgICBfbG9nLmluZm8oJ0NoZWNraW5nIHRvIHNlZSBpZiB7fSBleGlzdHMnLmZvcm1h
dChyZWZfZmlsZSkpCiAKLSAgICAgICAgICAgICAgICAgICAgY29weV9saXN0LmFwcGVuZCh7J3Ny
Yyc6IHRlc3RfaW5mb1sncmVmZXJlbmNlJ10sICdkZXN0JzogcmVmX2ZpbGUsICdyZWZlcmVuY2Vf
c3VwcG9ydF9pbmZvJzogdGVzdF9pbmZvWydyZWZlcmVuY2Vfc3VwcG9ydF9pbmZvJ119KQogICAg
ICAgICAgICAgICAgICAgICBjb3B5X2xpc3QuYXBwZW5kKHsnc3JjJzogdGVzdF9pbmZvWyd0ZXN0
J10sICdkZXN0JzogZmlsZW5hbWV9KQogCiAgICAgICAgICAgICAgICAgZWxpZiAnanN0ZXN0JyBp
biB0ZXN0X2luZm8ua2V5cygpOgpAQCAtNTc1LDYgKzU3Myw3IEBAIGNsYXNzIFRlc3RJbXBvcnRl
cihvYmplY3QpOgogICAgICAgICAgICAgZmlsZXMgPSBzZWxmLl90ZXN0X3Jlc291cmNlX2ZpbGVz
WyJmaWxlcyJdCiAgICAgICAgICAgICBmb3IgZnVsbF9wYXRoIGluIHNlbGYuX3BvdGVudGlhbF90
ZXN0X3Jlc291cmNlX2ZpbGVzOgogICAgICAgICAgICAgICAgIHJlc291cmNlX2ZpbGVfcGF0aCA9
IHNlbGYuZmlsZXN5c3RlbS5yZWxwYXRoKGZ1bGxfcGF0aCwgc2VsZi5zb3VyY2VfZGlyZWN0b3J5
KQorICAgICAgICAgICAgICAgIF9sb2cuaW5mbygnVHJhY2tpbmcgcmVzb3VyY2UgZmlsZSB7fScu
Zm9ybWF0KHJlc291cmNlX2ZpbGVfcGF0aCkpCiAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYu
X2FscmVhZHlfaWRlbnRpZmllZF9hc19yZXNvdXJjZV9maWxlKHJlc291cmNlX2ZpbGVfcGF0aCk6
CiAgICAgICAgICAgICAgICAgICAgIGZpbGVzLmFwcGVuZChyZXNvdXJjZV9maWxlX3BhdGgpCiAg
ICAgICAgICAgICAgICAgICAgIHNob3VsZF91cGRhdGVfanNvbl9maWxlID0gVHJ1ZQpAQCAtNTkz
LDcgKzU5Miw4IEBAIGNsYXNzIFRlc3RJbXBvcnRlcihvYmplY3QpOgogICAgICAgICByZXR1cm4g
YW55KFtwYXRoLmZpbmQoZGlyZWN0b3J5KSAhPSAtMSBmb3IgZGlyZWN0b3J5IGluIHNlbGYuX3Rl
c3RfcmVzb3VyY2VfZmlsZXNbImRpcmVjdG9yaWVzIl1dKQogCiAgICAgZGVmIF9pc19pbl9yZXNv
dXJjZXNfZGlyZWN0b3J5KHNlbGYsIHBhdGgpOgotICAgICAgICByZXR1cm4gInJlc291cmNlcyIg
aW4gcGF0aC5zcGxpdChzZWxmLmZpbGVzeXN0ZW0uc2VwKQorICAgICAgICBkaXJzID0gcGF0aC5z
cGxpdChzZWxmLmZpbGVzeXN0ZW0uc2VwKQorICAgICAgICByZXR1cm4gInJlc291cmNlcyIgaW4g
ZGlycyBvciAicmVmZXJlbmNlIiBpbiBkaXJzCiAKICAgICBkZWYgdXBkYXRlX3Rlc3RzX29wdGlv
bnMoc2VsZik6CiAgICAgICAgIHNob3VsZF91cGRhdGUgPSBzZWxmLm9wdGlvbnMuY2xlYW5fZGVz
dGluYXRpb25fZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3cz
Yy90ZXN0X2ltcG9ydGVyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2Mv
dGVzdF9pbXBvcnRlcl91bml0dGVzdC5weQppbmRleCBjMGZjM2QyYjJlZDQzMjMwM2QwYWUyMWVi
ZTM1NDk4YmRmMDQ1ZTkwLi5mNmQ5ZmE0YzI5ZjE5MmY0ZTRkYzYxZDlhNzcwMTFhM2ZlN2Q4Mjk4
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyX3Vu
aXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXJf
dW5pdHRlc3QucHkKQEAgLTM5OCwyNyArMzk4LDI5IEBAIGNsYXNzIFRlc3RJbXBvcnRlclRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcv
bW9jay1jaGVja291dC9XZWJLaXRCdWlsZC93M2MtdGVzdHMvdG8tYmUtaW1wb3J0ZWQvY3Nzd2ct
dGVzdHMvdC90ZXN0MS5odG1sJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMo
Jy9tb2NrLWNoZWNrb3V0L1dlYktpdEJ1aWxkL3czYy10ZXN0cy90by1iZS1pbXBvcnRlZC9jc3N3
Zy10ZXN0cy90L3Rlc3QxLXJlZi5odG1sJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5l
eGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy9jc3N3Zy10ZXN0cy90L3Rlc3Qx
Lmh0bWwnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tv
dXQvTGF5b3V0VGVzdHMvdzNjL2Nzc3dnLXRlc3RzL3QvdGVzdDEtZXhwZWN0ZWQuaHRtbCcpKQor
ICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRU
ZXN0cy93M2MvY3Nzd2ctdGVzdHMvdC90ZXN0MS1yZWYuaHRtbCcpKQogICAgICAgICAjIHRlc3Qy
CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L1dlYktp
dEJ1aWxkL3czYy10ZXN0cy90by1iZS1pbXBvcnRlZC9jc3N3Zy10ZXN0cy90L3Rlc3QyLmh0bWwn
KSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvV2Vi
S2l0QnVpbGQvdzNjLXRlc3RzL3RvLWJlLWltcG9ydGVkL2Nzc3dnLXRlc3RzL3NvbWUvZGlyZWN0
b3J5L2luL2Nzc3dnLXJvb3QvdGVzdDItcmVmLmh0bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy9jc3N3Zy10ZXN0
cy90L3Rlc3QyLWV4cGVjdGVkLmh0bWwnKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4
aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL2Nzc3dnLXRlc3RzL3QvdGVzdDIu
aHRtbCcpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291
dC9MYXlvdXRUZXN0cy93M2MvY3Nzd2ctdGVzdHMvdC90ZXN0Mi1leHBlY3RlZC5odG1sJykpCisg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRl
c3RzL3czYy9jc3N3Zy10ZXN0cy9zb21lL2RpcmVjdG9yeS9pbi9jc3N3Zy1yb290L3Rlc3QyLXJl
Zi5odG1sJykpCiAgICAgICAgICMgdGVzdDMKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4
aXN0cygnL21vY2stY2hlY2tvdXQvV2ViS2l0QnVpbGQvdzNjLXRlc3RzL3RvLWJlLWltcG9ydGVk
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy90ZXN0My5odG1sJykpCiAgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L1dlYktpdEJ1aWxkL3cz
Yy10ZXN0cy90by1iZS1pbXBvcnRlZC93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMv
dGVzdDMtcmVmLmh0bWwnKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21v
Y2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWlt
YWdlcy90ZXN0My5odG1sJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9t
b2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1p
bWFnZXMvdGVzdDMtZXhwZWN0ZWQuaHRtbCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMu
ZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtaW1hZ2VzL3Rlc3QzLXJlZi5odG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL3Rlc3QzLWV4cGVjdGVkLmh0bWwnKSkKICAgICAgICAgIyB0
ZXN0NAogICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9X
ZWJLaXRCdWlsZC93M2MtdGVzdHMvdG8tYmUtaW1wb3J0ZWQvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtaW1hZ2VzL3Rlc3Q0Lmh0bWwnKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4
aXN0cygnL21vY2stY2hlY2tvdXQvV2ViS2l0QnVpbGQvdzNjLXRlc3RzL3RvLWJlLWltcG9ydGVk
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zb21lL2RpcmVjdG9yeS9pbi93cHQtcm9vdC90ZXN0NC1yZWYu
aHRtbCcpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291
dC9MYXlvdXRUZXN0cy93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL3Rlc3Q0
Lmh0bWwnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tv
dXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy90ZXN0
NC1leHBlY3RlZC5odG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9t
b2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc29tZS9kaXJl
Y3RvcnkvaW4vd3B0LXJvb3QvdGVzdDQtcmVmLmh0bWwnKSkKICAgICAgICAgIyB0ZXN0NQogICAg
ICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9XZWJLaXRCdWls
ZC93M2MtdGVzdHMvdG8tYmUtaW1wb3J0ZWQvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1h
Z2VzL3Rlc3Q1Lmh0bWwnKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21v
Y2stY2hlY2tvdXQvV2ViS2l0QnVpbGQvdzNjLXRlc3RzL3RvLWJlLWltcG9ydGVkL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zb21lL2RpcmVjdG9yeS9pbi93cHQtcm9vdC90ZXN0NS1yZWYuaHRtbCcpKQog
ICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRU
ZXN0cy93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL3Rlc3Q1Lmh0bWwnKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0
VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy90ZXN0NS1leHBlY3Rl
ZC5odG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNr
b3V0L0xheW91dFRlc3RzL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc29tZS9kaXJlY3RvcnkvaW4v
d3B0LXJvb3QvdGVzdDUtcmVmLmh0bWwnKSkKIAogICAgIGRlZiB0ZXN0X3dlYmtpdF90ZXN0X3J1
bm5lcl9pbXBvcnRfcmVmdGVzdHNfd2l0aF9hYnNvbHV0ZV9wYXRoc19mcm9tX3NvdXJjZV9kaXIo
c2VsZik6CiAgICAgICAgIEZBS0VfRklMRVMgPSB7CkBAIC00MjgsMTkgKzQzMCwyOSBAQCBjbGFz
cyBUZXN0SW1wb3J0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICcvaG9t
ZS91c2VyL3dwdC9zb21lL2RpcmVjdG9yeS9pbi93cHQtcm9vdC90ZXN0Mi1yZWYuaHRtbCc6ICc8
aHRtbD48L2h0bWw+JywKICAgICAgICAgICAgICcvaG9tZS91c2VyL3dwdC9jc3MvY3NzLWltYWdl
cy90ZXN0My5odG1sJzogJzxodG1sPjxoZWFkPjxsaW5rIHJlbD1tYXRjaCBocmVmPSIgICAgICAg
ICAgICAgL3NvbWUvZGlyZWN0b3J5L2luL3dwdC1yb290L3Rlc3QzLXJlZi5odG1sICAgICI+PC9o
ZWFkPjwvaHRtbD4nLAogICAgICAgICAgICAgJy9ob21lL3VzZXIvd3B0L3NvbWUvZGlyZWN0b3J5
L2luL3dwdC1yb290L3Rlc3QzLXJlZi5odG1sJzogJzxodG1sPjwvaHRtbD4nLAorICAgICAgICAg
ICAgJy9ob21lL3VzZXIvd3B0L2Nzcy9jc3MtaW1hZ2VzL3Rlc3Q0Lmh0bWwnOiAnPGh0bWw+PGhl
YWQ+PGxpbmsgcmVsPW1hdGNoIGhyZWY9dGVzdDQtcmVmLmh0bWw+PC9oZWFkPjwvaHRtbD4nLAor
ICAgICAgICAgICAgJy9ob21lL3VzZXIvd3B0L2Nzcy9jc3MtaW1hZ2VzL3Rlc3Q0LXJlZi5odG1s
JzogJzxodG1sPjwvaHRtbD4nLAorICAgICAgICAgICAgJy9ob21lL3VzZXIvd3B0L2Nzcy9jc3Mt
dmFsdWVzL3Rlc3QxLmh0bWwnOiAnPGh0bWw+PGhlYWQ+PGxpbmsgcmVsPW1hdGNoIGhyZWY9cmVm
ZXJlbmNlL2dyZWVuLXNxdWFyZS5odG1sPjwvaGVhZD48L2h0bWw+JywKKyAgICAgICAgICAgICcv
aG9tZS91c2VyL3dwdC9jc3MvY3NzLXZhbHVlcy9yZWZlcmVuY2UvZ3JlZW4tc3F1YXJlLmh0bWwn
OiAnPGh0bWw+PC9odG1sPicsCiAgICAgICAgIH0KICAgICAgICAgRkFLRV9GSUxFUy51cGRhdGUo
RkFLRV9SRVBPU0lUT1JJRVMpCiAKICAgICAgICAgZnMgPSBzZWxmLmltcG9ydF9kaXJlY3Rvcnko
WyctcycsICcvaG9tZS91c2VyL3dwdCcsICctZCcsICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0
cy93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzJ10sIEZBS0VfRklMRVMsICdjc3MvY3NzLWltYWdlcycp
CiAgICAgICAgICMgdGVzdDEKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21v
Y2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWlt
YWdlcy90ZXN0MS5odG1sJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9t
b2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1p
bWFnZXMvdGVzdDEtZXhwZWN0ZWQuaHRtbCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMu
ZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtaW1hZ2VzL3Rlc3QxLXJlZi5odG1sJykpCiAgICAgICAgICMgdGVzdDIKICAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy90ZXN0Mi5odG1sJykpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3Rz
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvdGVzdDItZXhwZWN0ZWQuaHRt
bCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9M
YXlvdXRUZXN0cy93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NvbWUvZGlyZWN0b3J5L2luL3dwdC1y
b290L3Rlc3QyLXJlZi5odG1sJykpCiAgICAgICAgICMgdGVzdDMKICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy90ZXN0My5odG1sJykpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvdGVzdDMtZXhwZWN0ZWQuaHRtbCcpKQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NvbWUvZGlyZWN0b3J5L2luL3dwdC1yb290L3Rlc3QzLXJl
Zi5odG1sJykpCisgICAgICAgICMgdGVzdDQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4
aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWltYWdlcy90ZXN0NC5odG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5l
eGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1pbWFnZXMvdGVzdDQtcmVmLmh0bWwnKSkKKyAgICAgICAgIyB0ZXN0NQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdmFsdWVzL3Rlc3QxLmh0bWwnKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXZhbHVlcy9yZWZlcmVuY2UvZ3JlZW4tc3F1
YXJlLmh0bWwnKSkKIAogICAgIGRlZiB0ZXN0X3RlbXBsYXRlX3Rlc3Qoc2VsZik6CiAgICAgICAg
IEZBS0VfRklMRVMgPSB7CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90
ZXN0X3BhcnNlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyLnB5
Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggMjllYWI5Y2FiYzFkYzVjN2Q1
MTM2YThkNzZkOGM0YzE0MzNkZWVjOC4uNzUzMWM1YmRjYzE4YTUyZWFiNTE2MGRjYzMwMzFlMDRm
YzEzMDExMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlci5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlci5weQpAQCAtMTcwLDcg
KzE3MCw2IEBAIGNsYXNzIFRlc3RQYXJzZXIob2JqZWN0KToKIAogICAgIGRlZiBpc193cHRfcmVm
dGVzdChzZWxmKToKICAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHRoZSB0ZXN0IGlzIGEgcmVm
IHRlc3QgYWNjb3JkaW5nIFdQVCBydWxlcyAoaS5lLiBmaWxlIGhhcyBhIC1yZWYuaHRtbCBjb3Vu
dGVycGFydCkuIiIiCi0gICAgICAgIHBhcnRzID0gc2VsZi5maWxlc3lzdGVtLnNwbGl0ZXh0KHNl
bGYuZmlsZW5hbWUpCiAgICAgICAgIHJldHVybiAgc2VsZi5maWxlc3lzdGVtLmlzZmlsZShzZWxm
LnBvdGVudGlhbF9yZWZfZmlsZW5hbWUoKSkKIAogICAgIGRlZiBzdXBwb3J0X2ZpbGVzKHNlbGYs
IGRvYyk6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggMTZiYTdkYTNiNDJmOGMwYmQwOTMxZjI3YWQ1YTcwM2NiY2EzNTE1Mi4u
MjVmMzEwNDI3ZGIwMTgzMDg2M2Y2MzA1OGY3ZmYxYjcxZjE2OTU1OCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDE5LTExLTA4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBmaW5kaW5nIHRlc3QgcmVmZXJlbmNlcyB2aWEg
PGxpbmsgcmVsPSJtYXRjaCI+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDM3ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTb21lIENTUyAyLjEgYW5kIFNWRyB0ZXN0cyBmYWlsIG5vdyB0aGF0IHdlJ3Jl
IGNvbXBhcmluZyB0aGVtIHRvIHRoZSBjb3JyZWN0IHJlZmVyZW5jZXMuCisKKyAgICAgICAgKiBU
ZXN0RXhwZWN0YXRpb25zOgorCiAyMDE5LTExLTAxICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBUaW1lbGluZXM6IGFkZCBhIHRpbWVs
aW5lIHRoYXQgc2hvd3MgaW5mb3JtYXRpb24gYWJvdXQgYW55IHJlY29yZGVkIENTUyBhbmltYXRp
b24vdHJhbnNpdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZjUzZjBmMDMxMDIwMzIwMTNhOTNj
YTliMjhkZGIxYTYyNTJmY2VmOS4uZWU1N2U5YzVjMzUzYmQ2MGFmMzdkZWY0MzQyMDFmMzZiODFi
MjZkNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC05NjYsNiArOTY2LDEwIEBAIHdlYmtpdC5vcmcv
Yi84ODA0NSBmYXN0L2RvbS9nYy1hdHRyaWJ1dGUtbm9kZS5odG1sIFsgRmFpbHVyZSBQYXNzIF0K
IGNzczIuMS8yMDExMDMyMy9yZXBsYWNlZC1pbnRyaW5zaWMtMDAxLmh0bSBbIEZhaWx1cmUgXQog
Y3NzMi4xLzIwMTEwMzIzL3JlcGxhY2VkLWludHJpbnNpYy0wMDIuaHRtIFsgRmFpbHVyZSBdCiAK
KyMgVGVzdHMgZmFpbCB3aGVuIHJ1biBhcyByZWYgdGVzdHMKK3dlYmtpdC5vcmcvYi8yMDQwMDQg
Y3NzMi4xLzIwMTEwMzIzL2Fic3Bvcy1jb250YWluaW5nLWJsb2NrLWluaXRpYWwtMDA0Yi5odG0g
WyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMDQwMDQgY3NzMi4xLzIwMTEwMzIz
L2Fic3Bvcy1jb250YWluaW5nLWJsb2NrLWluaXRpYWwtMDA0ZC5odG0gWyBJbWFnZU9ubHlGYWls
dXJlIF0KKwogd2Via2l0Lm9yZy9iLzEzMjc5MSBzdmcvYXMtb2JqZWN0L3NpemluZy9zdmctaW4t
b2JqZWN0LXBsYWNlaG9sZGVyLWhlaWdodC1maXhlZC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3Jn
L2IvMTMyNzkxIHN2Zy9hcy1vYmplY3Qvc2l6aW5nL3N2Zy1pbi1vYmplY3QtcGxhY2Vob2xkZXIt
aGVpZ2h0LXBlcmNlbnRhZ2UuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMjc5MSBzdmcv
YXMtb2JqZWN0L3NpemluZy9zdmctaW4tb2JqZWN0LXBsYWNlaG9sZGVyLWhlaWdodC1hdXRvLmh0
bWwgWyBTa2lwIF0KQEAgLTE1MjgsNiArMTUzMiwxMiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N2Zy9zaGFwZXMvZWxsaXBzZS0wNy5zdmcgWyBTa2lwIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3ZnL3NoYXBlcy9lbGxpcHNlLTA4LnN2ZyBbIFNraXAgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvdGV4dC9yZWZ0ZXN0cy90ZXh0LWNs
aXBwZWQtb2Zmc2NyZWVuLW1vdmUtb25zY3JlZW4uaHRtbCBbIFNraXAgXQogCit3ZWJraXQub3Jn
L2IvMjA0MDA1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3ZnL3BhaW50aW5nL2N1
cnJlbnRDb2xvci1vdmVycmlkZS1wc2VydmVyLWZhbGxiYWNrLnN2ZyBbIEltYWdlT25seUZhaWx1
cmUgXQord2Via2l0Lm9yZy9iLzIwNDAwNSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N2Zy9wYWludGluZy9jdXJyZW50Q29sb3Itb3ZlcnJpZGUtcHNlcnZlci1maWxsLnN2ZyBbIElt
YWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIwNDAwNSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N2Zy9wYXRoL2JlYXJpbmcvYWJzb2x1dGUuc3ZnIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCit3ZWJraXQub3JnL2IvMjA0MDA1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3ZnL3BhdGgvYmVhcmluZy9yZWxhdGl2ZS5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dl
YmtpdC5vcmcvYi8yMDQwMDUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvcGF0
aC9iZWFyaW5nL3plcm8uc3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCisKIHdlYmtpdC5vcmcvYi8x
Mzk1OTUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1wb3J0L2FuaW1hdGUt
ZG9tLTAyLWYtbWFudWFsLnN2ZyBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzIwMTExMCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9leHRlbnNpYmlsaXR5L2ZvcmVpZ25PYmplY3Qv
c3RhY2tpbmctY29udGV4dC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMjAxMTEwIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3ZnL2V4dGVuc2liaWxpdHkvZm9yZWlnbk9iamVj
dC9wb3NpdGlvbi1zdmctcm9vdC1pbi1mb3JlaWduLW9iamVjdC5odG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383201</attachid>
            <date>2019-11-08 21:56:45 -0800</date>
            <delta_ts>2019-11-21 13:28:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203784-20191108215644.patch</filename>
            <type>text/plain</type>
            <size>29324</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxOTYyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2Q0NjM3MjE5MGE3ZjIxZTc0YjI1ZGZiZDhjMDEyN2Ji
NmZmOGExZS4uMmQ1OTI2NDIyMWE4ZTkyYTc3NGJkMGE4YTM3YTgzYzE1ZDY2YTcwNyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUx
IEBACisyMDE5LTExLTA4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBmaW5kaW5nIHRlc3QgcmVmZXJlbmNlcyB2aWEgPGxp
bmsgcmVsPSJtYXRjaCI+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDM3ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXaGVuIGxvb2tpbmcgZm9yIHRlc3QgcmVmZXJlbmNlcywgd2Ugbm93IGNoZWNrIGZv
ciBhIDxsaW5rIHJlbD0ibWF0Y2giPgorICAgICAgICBvciA8bGluayByZWw9Im1pc21hdGNoIj4g
YmVmb3JlIGxvb2tpbmcgaW4gdGhlIGZpbGVzeXN0ZW0gZm9yICItZXhwZWN0ZWQiIGZpbGVzLgor
ICAgICAgICBBIHdhcm5pbmcgaXMgbG9nZ2VkIGlmIGJvdGggZXhpc3QuCisKKyAgICAgICAgQWxz
byBzaG93IGEgd2FybmluZyBpZiBhIHJlZmVyZW5jZSBmaWxlIGlzIGFsc28gaW4gdGhlIGxpc3Qg
b2YgdGVzdHMsIHdoaWNoCisgICAgICAgIGluZGljYXRlcyBhIHRlc3QgYmVpbmcgdXNlZCBhcyBh
IHJlZmVyZW5jZS4gV2Ugb25seSBrbm93IHRoZSB0ZXN0IHJlZmVyZW5jZQorICAgICAgICB3aGVu
IHRoZSB3b3JrZXIgc3RhcnRzIGEgdGVzdCwgc28gdGhpcyBjaGVjayBpcyBkb25lIGluIHRoZSBf
aGFuZGxlX3N0YXJ0ZWRfdGVzdCgpCisgICAgICAgIGNhbGxiYWNrLgorCisgICAgICAgIEZpeCBX
UFQgaW1wb3J0aW5nIHRvIG5vdCBjbG9uZSByZWZlcmVuY2UgZmlsZXMgZm91bmQgdmlhIDxsaW5r
PiB0YWdzIGludG8KKyAgICAgICAgIi1leHBlY3RlZC5odG1sIiBmaWxlcywgYW5kIHRvIHRyZWF0
IGZpbGVzIHdpdGggIi1yZWYiIG9yICJyZWZlcmVuY2UiIGluIHRoZSBuYW1lCisgICAgICAgIGFz
IHJlZmVyZW5jZSBmaWxlcy4gT24gaW1wb3J0LCBleGlzdGluZyAtZXhwZWN0ZWQuaHRtbCBmaWxl
cyB3aWxsIGJlIHJlbW92ZWQuCisKKyAgICAgICAgQWRkIHNvbWUgdW5pdCB0ZXN0cy4KKworICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90
ZXN0X3J1bm5lci5weToKKyAgICAgICAgKExheW91dFRlc3RSdW5uZXIuX2NoZWNrX2Zvcl9yZWZl
cmVuY2VfdGhhdF9pc19hbHNvX2FfdGVzdCk6CisgICAgICAgIChMYXlvdXRUZXN0UnVubmVyLl9o
YW5kbGVfc3RhcnRlZF90ZXN0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHk6CisgICAgICAgIChTaW5nbGVU
ZXN0UnVubmVyLl9ydW5fcmVmdGVzdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zLnB5OgorICAgICAgICAoVGVzdEV4cGVj
dGF0aW9ucy5oYXNfdGVzdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2Uu
cHk6CisgICAgICAgIChQb3J0Ll9maW5kX3JlZmVyZW5jZV9maWxlX3ZpYV9saW5rX3RhZyk6Cisg
ICAgICAgIChQb3J0Ll9maW5kX3JlZmVyZW5jZV9maWxlX3ZpYV9saW5rX3RhZy5fcmVmZXJlbmNl
X2xpbmtzX29mX3R5cGUpOgorICAgICAgICAoUG9ydC5fZmluZF9yZWZlcmVuY2VfZmlsZXNfaW5f
ZmlsZXN5c3RlbSk6CisgICAgICAgIChQb3J0LnJlZmVyZW5jZV9maWxlcyk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2VfdW5pdHRlc3QucHk6CisgICAgICAgIChQb3J0VGVz
dC50ZXN0X3JlZmVyZW5jZV9maWxlcyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0
L3Rlc3QucHk6CisgICAgICAgIChUZXN0SW5zdGFuY2UuX19pbml0X18pOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHk6CisgICAgICAgIChUZXN0SW1wb3J0
ZXIuZmluZF9pbXBvcnRhYmxlX3Rlc3RzKToKKyAgICAgICAgKFRlc3RJbXBvcnRlci5pbXBvcnRf
dGVzdHMpOgorICAgICAgICAoVGVzdEltcG9ydGVyLl9pc19pbl9yZXNvdXJjZXNfZGlyZWN0b3J5
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyX3VuaXR0ZXN0
LnB5OgorICAgICAgICAodGVzdF93ZWJraXRfdGVzdF9ydW5uZXJfaW1wb3J0X3JlZnRlc3RzX3dp
dGhfYWJzb2x1dGVfcGF0aHNfZG93bmxvYWQpOgorICAgICAgICAodGVzdF93ZWJraXRfdGVzdF9y
dW5uZXJfaW1wb3J0X3JlZnRlc3RzX3dpdGhfYWJzb2x1dGVfcGF0aHNfZnJvbV9zb3VyY2VfZGly
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlci5weToKKyAgICAg
ICAgKFRlc3RQYXJzZXIuaXNfd3B0X3JlZnRlc3QpOgorCiAyMDE5LTExLTAxICBKb25hdGhhbiBC
ZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBQeXRob24gMzogQWRkIHN1cHBv
cnQgaW4gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVsCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXIu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlv
dXRfdGVzdF9ydW5uZXIucHkKaW5kZXggNTQyODQyNmUxNTc1YWU5NjJjZmYyODA5ODI5MGVmZDcw
MjUwZjdjNy4uOWU3OWQ0M2IyNjBiZmJmMTFiNTEwZTU4YTFiZmQ0MDJjMWI2MDAwNyAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5
b3V0X3Rlc3RfcnVubmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lci5weQpAQCAtMjksNiArMjksNyBAQAog
aW1wb3J0IGF0ZXhpdAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBtYXRoCitpbXBvcnQgb3MKIGlt
cG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0aW1lCiAKQEAgLTIwOSw2ICsyMTAsMTMgQEAgY2xhc3Mg
TGF5b3V0VGVzdFJ1bm5lcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgVGVzdEV4
cGVjdGF0aW9ucy5FWFBFQ1RBVElPTl9ERVNDUklQVElPTltuZXdfcmVzdWx0LnR5cGVdLCAnZXhw
ZWN0ZWQnIGlmIG5vd19leHBlY3RlZCBlbHNlICd1bmV4cGVjdGVkJykpCiAgICAgICAgICAgICAg
ICAgcnVuX3Jlc3VsdHMuY2hhbmdlX3Jlc3VsdF90b19mYWlsdXJlKGV4aXN0aW5nX3Jlc3VsdCwg
bmV3X3Jlc3VsdCwgd2FzX2V4cGVjdGVkLCBub3dfZXhwZWN0ZWQpCiAKKyAgICBkZWYgX2NoZWNr
X2Zvcl9yZWZlcmVuY2VfdGhhdF9pc19hbHNvX2FfdGVzdChzZWxmLCB0ZXN0X2lucHV0KToKKyAg
ICAgICAgZm9yIHJlZmVyZW5jZV9maWxlIGluIHRlc3RfaW5wdXQucmVmZXJlbmNlX2ZpbGVzOgor
ICAgICAgICAgICAgcmVmZXJlbmNlX2Z1bGxfcGF0aCA9IHJlZmVyZW5jZV9maWxlWzFdCisgICAg
ICAgICAgICByZWZlcmVuY2VfbGF5b3V0X2Rpcl9wYXRoID0gb3MucGF0aC5yZWxwYXRoKHJlZmVy
ZW5jZV9mdWxsX3BhdGgsIHNlbGYuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpKQorICAgICAgICAg
ICAgaWYgc2VsZi5fZXhwZWN0YXRpb25zLmhhc190ZXN0KHJlZmVyZW5jZV9sYXlvdXRfZGlyX3Bh
dGgpOgorICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygne30gaGFzIHJlZmVyZW5jZSB7fSB3
aGljaCBpcyBhbHNvIGEgdGVzdCcuZm9ybWF0KHRlc3RfaW5wdXQudGVzdF9uYW1lLCByZWZlcmVu
Y2VfbGF5b3V0X2Rpcl9wYXRoKSkKKwogICAgIGRlZiBzdGFydF9zZXJ2ZXJzKHNlbGYpOgogICAg
ICAgICBpZiBzZWxmLl9uZWVkc19odHRwIGFuZCBub3Qgc2VsZi5fZGlkX3N0YXJ0X2h0dHBfc2Vy
dmVyIGFuZCBub3Qgc2VsZi5fcG9ydC5pc19odHRwX3NlcnZlcl9ydW5uaW5nKCk6CiAgICAgICAg
ICAgICBzZWxmLl9wcmludGVyLndyaXRlX3VwZGF0ZSgnU3RhcnRpbmcgSFRUUCBzZXJ2ZXIgLi4u
JykKQEAgLTI0NCw2ICsyNTIsNyBAQCBjbGFzcyBMYXlvdXRUZXN0UnVubmVyKG9iamVjdCk6CiAg
ICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCd1bmtub3duIG1lc3NhZ2UgJXMgcmVjZWl2ZWQg
ZnJvbSAlcywgYXJncz0lcycgJSAobmFtZSwgc291cmNlLCByZXByKGFyZ3MpKSkKIAogICAgIGRl
ZiBfaGFuZGxlX3N0YXJ0ZWRfdGVzdChzZWxmLCB3b3JrZXJfbmFtZSwgdGVzdF9pbnB1dCwgdGVz
dF90aW1lb3V0X3NlYyk6CisgICAgICAgIHNlbGYuX2NoZWNrX2Zvcl9yZWZlcmVuY2VfdGhhdF9p
c19hbHNvX2FfdGVzdCh0ZXN0X2lucHV0KQogICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3N0
YXJ0ZWRfdGVzdCh0ZXN0X2lucHV0LnRlc3RfbmFtZSkKIAogICAgIGRlZiBfaGFuZGxlX2Zpbmlz
aGVkX3Rlc3Qoc2VsZiwgd29ya2VyX25hbWUsIHJlc3VsdCwgbG9nX21lc3NhZ2VzPVtdKToKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L3NpbmdsZV90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weQppbmRleCA3MThhMDg5NDUzMmU1
Yjg4MWQxYTBkMWQzMDZjMTNmNGIwNjE2M2NlLi5kZTc0YWQ5ZmUzODNlMmRhZWY5YWFiMjAxNmE0
Y2RiMzk1ZWE2ZjcxIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5
CkBAIC0yOTAsNiArMjkwLDcgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcihvYmplY3QpOgogICAg
ICAgICByZXR1cm4gZmFpbHVyZXMKIAogICAgIGRlZiBfcnVuX3JlZnRlc3Qoc2VsZik6CisgICAg
ICAgIF9sb2cuZGVidWcoJ3t9IHJ1bm5pbmcgcmVmIHRlc3Qge30nLmZvcm1hdChzZWxmLl93b3Jr
ZXJfbmFtZSwgc2VsZi5fdGVzdF9uYW1lKSkKICAgICAgICAgdGVzdF9vdXRwdXQgPSBzZWxmLl9k
cml2ZXIucnVuX3Rlc3Qoc2VsZi5fZHJpdmVyX2lucHV0KCksIHNlbGYuX3N0b3Bfd2hlbl9kb25l
KQogICAgICAgICB0b3RhbF90ZXN0X3RpbWUgPSAwCiAgICAgICAgIHJlZmVyZW5jZV9vdXRwdXQg
PSBOb25lCkBAIC0zMDYsNiArMzA3LDcgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcihvYmplY3Qp
OgogICAgICAgICBmb3IgZXhwZWN0YXRpb24sIHJlZmVyZW5jZV9maWxlbmFtZSBpbiBwdXRBbGxN
aXNtYXRjaEJlZm9yZU1hdGNoKHNlbGYuX3JlZmVyZW5jZV9maWxlcyk6CiAgICAgICAgICAgICBy
ZWZlcmVuY2VfdGVzdF9uYW1lID0gc2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKHJl
ZmVyZW5jZV9maWxlbmFtZSkKICAgICAgICAgICAgIHJlZmVyZW5jZV90ZXN0X25hbWVzLmFwcGVu
ZChyZWZlcmVuY2VfdGVzdF9uYW1lKQorICAgICAgICAgICAgX2xvZy5kZWJ1Zygne30gcnVubmlu
ZyByZWZlcmVuY2Uge30nLmZvcm1hdChzZWxmLl93b3JrZXJfbmFtZSwgcmVmZXJlbmNlX3Rlc3Rf
bmFtZSkpCiAgICAgICAgICAgICByZWZlcmVuY2Vfb3V0cHV0ID0gc2VsZi5fZHJpdmVyLnJ1bl90
ZXN0KERyaXZlcklucHV0KHJlZmVyZW5jZV90ZXN0X25hbWUsIHNlbGYuX3RpbWVvdXQsIE5vbmUs
IHNob3VsZF9ydW5fcGl4ZWxfdGVzdD1UcnVlKSwgc2VsZi5fc3RvcF93aGVuX2RvbmUpCiAgICAg
ICAgICAgICB0ZXN0X3Jlc3VsdCA9IHNlbGYuX2NvbXBhcmVfb3V0cHV0X3dpdGhfcmVmZXJlbmNl
KHJlZmVyZW5jZV9vdXRwdXQsIHRlc3Rfb3V0cHV0LCByZWZlcmVuY2VfZmlsZW5hbWUsIGV4cGVj
dGF0aW9uID09ICchPScpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9ucy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9ucy5weQppbmRleCA5ZmJm
NTNlYmNhYjY3ZmQ3NjNiMmNkOGU1Y2U2MjBiOTY1OWZjMjhhLi40NjI2NjgxMTFlZGQ4MTAyMGEx
M2ZhNDk2ZTgxNTA2NTQ3ODkxMzI5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnMucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zLnB5CkBA
IC05MzksNiArOTM5LDkgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9ucyhvYmplY3QpOgogICAgICAg
ICBzZWxmLl9pbmNsdWRlX292ZXJyaWRlcyA9IGluY2x1ZGVfb3ZlcnJpZGVzCiAgICAgICAgIHNl
bGYuX2V4cGVjdGF0aW9uc190b19saW50ID0gZXhwZWN0YXRpb25zX3RvX2xpbnQKIAorICAgIGRl
ZiBoYXNfdGVzdChzZWxmLCB0ZXN0X25hbWUpOgorICAgICAgICByZXR1cm4gdGVzdF9uYW1lIGlu
IHNlbGYuX2Z1bGxfdGVzdF9saXN0CisKICAgICBkZWYgcmVhZGFibGVfZmlsZW5hbWVfYW5kX2xp
bmVfbnVtYmVyKHNlbGYsIGxpbmUpOgogICAgICAgICBpZiBsaW5lLm5vdF9hcHBsaWNhYmxlX3Rv
X2N1cnJlbnRfcGxhdGZvcm06CiAgICAgICAgICAgICByZXR1cm4gIihza2lwcGVkIGZvciB0aGlz
IHBsYXRmb3JtKSIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNl
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKaW5kZXggNjgwMGIxN2Vk
ZjhlZDE2N2RhZDJlNjc4Njg5ZGViNTcwZWFjMjk5NS4uZWZiOGYwYTA2MTU4NzEwOTFmNGEwMjhj
ZGQ4ZWU1OTU5MmQyMTdiYSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKQEAgLTYy
LDYgKzYyLDggQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuc2VydmVycyBpbXBvcnQgYXBh
Y2hlX2h0dHBfc2VydmVyLCBodHRwX3NlcnZlciwgaHR0cF8KIGZyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLnNlcnZlcnMgaW1wb3J0IHdlYl9wbGF0Zm9ybV90ZXN0X3NlcnZlcgogZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMuc2VydmVycyBpbXBvcnQgd2Vic29ja2V0X3NlcnZlcgogCitmcm9t
IHdlYmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVsU291cCBpbXBvcnQgQmVhdXRpZnVsU291cCwg
U291cFN0cmFpbmVyCisKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCkBA
IC01MjksMTYgKzUzMSw0NSBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgICAgICBwYXJz
ZWRfbGlzdC5zZXRkZWZhdWx0KGZpbGVzeXN0ZW0uam9pbih0ZXN0X2RpcnBhdGgsIHRlc3RfZmls
ZSksIFtdKS5hcHBlbmQoKGV4cGVjdGF0aW9uX3R5cGUsIGZpbGVzeXN0ZW0uam9pbih0ZXN0X2Rp
cnBhdGgsIHJlZl9maWxlKSkpCiAgICAgICAgIHJldHVybiBwYXJzZWRfbGlzdAogCi0gICAgZGVm
IHJlZmVyZW5jZV9maWxlcyhzZWxmLCB0ZXN0X25hbWUsIGRldmljZV90eXBlPU5vbmUpOgotICAg
ICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGV4cGVjdGF0aW9uICg9PSBvciAhPSkgYW5kIGZpbGVu
YW1lIHBhaXJzIiIiCisgICAgZGVmIF9maW5kX3JlZmVyZW5jZV9maWxlX3ZpYV9saW5rX3RhZyhz
ZWxmLCB0ZXN0X25hbWUpOgorICAgICAgICAjIFRoaXMgY29kZSBtYXRjaGVzIGNvZGUgaW4gdzNj
L3Rlc3RfcGFyc2VyLnB5IGJ1dCB1c2luZyB0aGF0IGhlcmUgd291bGQgYmUgYSBsYXllcmluZyB2
aW9sYXRpb24uCisgICAgICAgICMgSWRlYWxseSBhbGwgdGhpcyByZWZlcmVuY2UtZmluZGluZyBj
b2RlIHdvdWxkIG1vdmUgb3V0IG9mIFBvcnQuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGxp
bmtzID0gU291cFN0cmFpbmVyKCdsaW5rJykKKyAgICAgICAgICAgIGxpbmtfc2V0ID0gQmVhdXRp
ZnVsU291cChzZWxmLl9maWxlc3lzdGVtLnJlYWRfYmluYXJ5X2ZpbGUoc2VsZi5hYnNwYXRoX2Zv
cl90ZXN0KHRlc3RfbmFtZSkpLCBwYXJzZU9ubHlUaGVzZT1saW5rcykKKyAgICAgICAgZXhjZXB0
OgorICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdGYWlsZWQgdG8gcGFyc2Uge30gdG8gZGV0ZWN0
IDxsaW5rIHJlbD0+IHJlZmVyZW5jZSB0ZXN0Jy5mb3JtYXQodGVzdF9uYW1lKSkKKyAgICAgICAg
ICAgIHJldHVybiBOb25lCiAKLSAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd0cmVhdF9yZWZf
dGVzdHNfYXNfcGl4ZWxfdGVzdHMnKToKLSAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICBk
ZWYgX3JlZmVyZW5jZV9saW5rc19vZl90eXBlKHJlZnRlc3RfdHlwZSk6CisgICAgICAgICAgICBy
ZXR1cm4gbGlua19zZXQuZmluZEFsbChyZWw9cmVmdGVzdF90eXBlKQogCi0gICAgICAgIHJlc3Vs
dCA9IHNlbGYuX2dldF9yZWZ0ZXN0X2xpc3QodGVzdF9uYW1lKQotICAgICAgICBpZiByZXN1bHQ6
Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0LmdldChzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2Vs
Zi5sYXlvdXRfdGVzdHNfZGlyKCksIHRlc3RfbmFtZSksIFtdKQorICAgICAgICBtYXRjaGVzID0g
X3JlZmVyZW5jZV9saW5rc19vZl90eXBlKCdtYXRjaCcpICsgX3JlZmVyZW5jZV9saW5rc19vZl90
eXBlKCdtaXNtYXRjaCcpCisgICAgICAgIGlmIG1hdGNoZXM6CisgICAgICAgICAgICBpZiBsZW4o
bWF0Y2hlcykgPiAxOgorICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygnTXVsdGlwbGUgcmVm
ZXJlbmNlcyBhcmUgbm90IHN1cHBvcnRlZC4gSW1wb3J0aW5nIHRoZSBmaXJzdCByZWYgZGVmaW5l
ZCBpbiB7fScuZm9ybWF0KHRlc3RfbmFtZSkpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAg
ICAgICAgaHJlZl9tYXRjaF9maWxlID0gbWF0Y2hlc1swXVsnaHJlZiddLnN0cmlwKCkKKyAgICAg
ICAgICAgICAgICBtYXRjaF90eXBlID0gbWF0Y2hlc1swXVsncmVsJ10KKworICAgICAgICAgICAg
ICAgIF9sb2cuZGVidWcoJ0ZvciB7fSBmb3VuZCByZWZlcmVuY2UgZnJvbSA8bGluayByZWw9e30+
IHt9Jy5mb3JtYXQodGVzdF9uYW1lLCBtYXRjaF90eXBlLCBocmVmX21hdGNoX2ZpbGUpKQorICAg
ICAgICAgICAgICAgIGlmIGhyZWZfbWF0Y2hfZmlsZS5zdGFydHN3aXRoKCcvJyk6CisgICAgICAg
ICAgICAgICAgICAgIHJlZl9maWxlID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0
X3Rlc3RzX2RpcigpLCBocmVmX21hdGNoX2ZpbGUubHN0cmlwKCcvJykpCisgICAgICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmVmX2ZpbGUgPSBzZWxmLl9maWxlc3lzdGVt
LmpvaW4oc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCksIHNlbGYuX2ZpbGVzeXN0ZW0uZGlybmFtZSh0
ZXN0X25hbWUpLCBocmVmX21hdGNoX2ZpbGUpCisKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2Vs
Zi5fZmlsZXN5c3RlbS5leGlzdHMocmVmX2ZpbGUpOgorICAgICAgICAgICAgICAgICAgICBfbG9n
Lndhcm5pbmcoJ3t9IHNwZWNpZmllcyByZWZlcmVuY2Uge30gYnV0IHRoZSBmaWxlIGRvZXNuXCd0
IGV4aXN0OyBpZ25vcmluZy4nLmZvcm1hdCh0ZXN0X25hbWUsIG1hdGNoZXNbMF0pKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICAgICAgcmV0dXJuIFsoJz09
JyBpZiBtYXRjaF90eXBlID09ICdtYXRjaCcgZWxzZSAnIT0nLCByZWZfZmlsZSldCisgICAgICAg
ICAgICBleGNlcHQgS2V5RXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCd7
fSBoYXMgYSByZWZlcmVuY2UgbGluayBidXQgaXMgbWlzc2luZyB0aGUgImhyZWYiJy5mb3JtYXQo
dGVzdF9uYW1lKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogCisgICAgICAgIHJldHVy
biBOb25lCisKKyAgICBkZWYgX2ZpbmRfcmVmZXJlbmNlX2ZpbGVzX2luX2ZpbGVzeXN0ZW0oc2Vs
ZiwgdGVzdF9uYW1lLCBkZXZpY2VfdHlwZT1Ob25lKToKICAgICAgICAgcmVzdWx0ID0gW10KICAg
ICAgICAgc3VmZml4ZXMgPSBbXQogICAgICAgICBmb3IgcGFydDEgaW4gWycnLCAnLW1pc21hdGNo
J106CkBAIC01NTEsOCArNTgyLDMzIEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgICAg
ICAgICAnIT0nIGlmICctbWlzbWF0Y2guJyBpbiBiYXNlbGluZV9maWxlbmFtZSBlbHNlICc9PScs
CiAgICAgICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS5qb2luKHBsYXRmb3JtX2RpciwgYmFz
ZWxpbmVfZmlsZW5hbWUpLAogICAgICAgICAgICAgKSkKKwogICAgICAgICByZXR1cm4gcmVzdWx0
CiAKKyAgICBkZWYgcmVmZXJlbmNlX2ZpbGVzKHNlbGYsIHRlc3RfbmFtZSwgZGV2aWNlX3R5cGU9
Tm9uZSk6CisgICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgZXhwZWN0YXRpb24gKD09IG9yICE9
KSBhbmQgZmlsZW5hbWUgcGFpcnMiIiIKKworICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3Ry
ZWF0X3JlZl90ZXN0c19hc19waXhlbF90ZXN0cycpOgorICAgICAgICAgICAgcmV0dXJuIFtdCisK
KyAgICAgICAgcmVzdWx0ID0gc2VsZi5fZ2V0X3JlZnRlc3RfbGlzdCh0ZXN0X25hbWUpCisgICAg
ICAgIGlmIHJlc3VsdDoKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQuZ2V0KHNlbGYuX2ZpbGVz
eXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgdGVzdF9uYW1lKSwgW10pCisKKyAg
ICAgICAgbGlua190YWdfcmVmZXJlbmNlX2ZpbGUgPSBzZWxmLl9maW5kX3JlZmVyZW5jZV9maWxl
X3ZpYV9saW5rX3RhZyh0ZXN0X25hbWUpCisgICAgICAgICMgRklYTUU6IFN0b3AgaGl0dGluZyB0
aGUgZmlsZXN5c3RlbSBsb29raW5nIGZvciByZWZlcmVuY2UgZmlsZXMgb25jZSB3ZSd2ZSBlbWJy
YWNlZCA8bGluayByZWw9IiI+CisgICAgICAgIGZpbGVzeXN0ZW1fcmVmZXJlbmNlX2ZpbGVzID0g
c2VsZi5fZmluZF9yZWZlcmVuY2VfZmlsZXNfaW5fZmlsZXN5c3RlbSh0ZXN0X25hbWUsIGRldmlj
ZV90eXBlKQorCisgICAgICAgIGlmIGxpbmtfdGFnX3JlZmVyZW5jZV9maWxlIGFuZCBmaWxlc3lz
dGVtX3JlZmVyZW5jZV9maWxlczoKKyAgICAgICAgICAgIGxpbmtfcmVmX3BhdGggPSBvcy5wYXRo
LnJlbHBhdGgobGlua190YWdfcmVmZXJlbmNlX2ZpbGVbMF1bMV0sIHNlbGYubGF5b3V0X3Rlc3Rz
X2RpcigpKQorICAgICAgICAgICAgZmlsZV9yZWZfcGF0aCA9IG9zLnBhdGgucmVscGF0aChmaWxl
c3lzdGVtX3JlZmVyZW5jZV9maWxlc1swXVsxXSwgc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCkpCisg
ICAgICAgICAgICBfbG9nLndhcm5pbmcoJ0ZvciB7fSBmb3VuZCBib3RoICI8bGluayByZWw9PiIg
e30gYW5kIHt9Jy5mb3JtYXQodGVzdF9uYW1lLCBsaW5rX3JlZl9wYXRoLCBmaWxlX3JlZl9wYXRo
KSkKKworICAgICAgICBpZiBsaW5rX3RhZ19yZWZlcmVuY2VfZmlsZToKKyAgICAgICAgICAgIHJl
dHVybiBsaW5rX3RhZ19yZWZlcmVuY2VfZmlsZQorCisgICAgICAgIHJldHVybiBmaWxlc3lzdGVt
X3JlZmVyZW5jZV9maWxlcworCiAgICAgZGVmIHBvdGVudGlhbF90ZXN0X25hbWVzX2Zyb21fZXhw
ZWN0ZWRfZmlsZShzZWxmLCBwYXRoKToKICAgICAgICAgIiIiUmV0dXJuIHBvdGVudGlhbCB0ZXN0
IG5hbWVzIGlmIGFueSBmcm9tIGEgcG90ZW50aWFsIGV4cGVjdGVkIGZpbGUgcGF0aCwgcmVsYXRp
dmUgdG8gTGF5b3V0VGVzdHMgZGlyZWN0b3J5LiIiIgogCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvYmFzZV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5CmluZGV4IDVkZjFjYzU1MDY5ZTJhN2JmMGU3ZjY3ZDky
ZGQ3OTg3YTRiNzYyZmUuLjRlNDY3OWE4NTAyYjVmZTVlNjVhMTA5MmM0NGU0NTU0NDExYjZiMjIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5CkBAIC0z
MTQsNiArMzE0LDggQEAgY2xhc3MgUG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucmVmZXJlbmNlX2ZpbGVzKCdwYXNzZXMvc3ZncmVmdGVz
dC5zdmcnKSwgWygnPT0nLCBwb3J0LmxheW91dF90ZXN0c19kaXIoKSArICcvcGFzc2VzL3N2Z3Jl
ZnRlc3QtZXhwZWN0ZWQuc3ZnJyldKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucmVm
ZXJlbmNlX2ZpbGVzKCdwYXNzZXMveGh0cmVmdGVzdC5zdmcnKSwgWygnPT0nLCBwb3J0LmxheW91
dF90ZXN0c19kaXIoKSArICcvcGFzc2VzL3hodHJlZnRlc3QtZXhwZWN0ZWQuaHRtbCcpXSkKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJlZmVyZW5jZV9maWxlcygncGFzc2VzL3BocHJl
ZnRlc3QucGhwJyksIFsoJyE9JywgcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkgKyAnL3Bhc3Nlcy9w
aHByZWZ0ZXN0LWV4cGVjdGVkLW1pc21hdGNoLnN2ZycpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChwb3J0LnJlZmVyZW5jZV9maWxlcygncmVmdGVzdHMvbW9kZXJuL2xpbmstdGVzdC5odG1s
JyksIFsoJz09JywgcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkgKyAnL3JlZnRlc3RzL21vZGVybi9y
ZXNvdXJjZXMvZ3JlZW4tc3F1YXJlLmh0bWwnKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cG9ydC5yZWZlcmVuY2VfZmlsZXMoJ3JlZnRlc3RzL21vZGVybi9saW5rLW1pc21hdGNoLXRlc3Qu
aHRtbCcpLCBbKCchPScsIHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpICsgJy9yZWZ0ZXN0cy9tb2Rl
cm4vcmVzb3VyY2VzL2dyZWVuLXNxdWFyZS5odG1sJyldKQogCiAgICAgZGVmIHRlc3Rfb3BlcmF0
aW5nX3N5c3RlbShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnbWFjJywgc2VsZi5t
YWtlX3BvcnQoKS5vcGVyYXRpbmdfc3lzdGVtKCkpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvdGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0
LnB5CmluZGV4IDMzOWI1M2M1MWFkM2EzYmY2MzhhMDdmZjk3ZWMxOGMwMTBlZGVhY2EuLmFkZDJj
OTBhNDMyMjQyODZlZTJhNWFjMjlkYzI4MmRlOTM4NjE2OTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC90ZXN0LnB5CkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIFRlc3RJbnN0YW5jZShvYmplY3Qp
OgogICAgICAgICAjIGJlaW5nIHRyZWF0ZWQgYXMgVVRGLTggKHRoZSBjaGFyYWN0ZXIgaXMgaW52
YWxpZCkKICAgICAgICAgc2VsZi5hY3R1YWxfaW1hZ2UgPSBzZWxmLmJhc2UgKyAnXHg4YScgKyAn
LXBuZycgKyAndEVYdGNoZWNrc3VtXHgwMCcgKyBzZWxmLmFjdHVhbF9jaGVja3N1bQogCisgICAg
ICAgIHNlbGYuZmlsZV9jb250ZW50ID0gTm9uZQogICAgICAgICBzZWxmLmV4cGVjdGVkX3RleHQg
PSBzZWxmLmFjdHVhbF90ZXh0CiAgICAgICAgIHNlbGYuZXhwZWN0ZWRfaW1hZ2UgPSBzZWxmLmFj
dHVhbF9pbWFnZQogCkBAIC0xMDIsNyArMTAzLDcgQEAgY2xhc3MgVGVzdExpc3Qob2JqZWN0KToK
ICMKICMgVGhlc2UgbnVtYmVycyBtYXkgbmVlZCB0byBiZSB1cGRhdGVkIHdoZW5ldmVyIHdlIGFk
ZCBvciBkZWxldGUgdGVzdHMuCiAjCi1UT1RBTF9URVNUUyA9IDc3CitUT1RBTF9URVNUUyA9IDc5
CiBUT1RBTF9TS0lQUyA9IDkKIFRPVEFMX1JFVFJJRVMgPSAxNQogCkBAIC0yNTAsNiArMjUxLDEx
IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDM0CiAgICAgdGVzdHMuYWRkKCdyZWZ0ZXN0cy9m
b28vcmVmZXJlbmNlL2Jhci9jb21tb24uaHRtbCcpCiAgICAgdGVzdHMuYWRkKCdyZWZ0ZXN0cy9m
b28vcmVmdGVzdC9iYXIvc2hhcmVkLmh0bWwnKQogCisgICAgIyAibW9kZXJuIiByZWYgdGVzdHMg
dXNlIDxsaW5rPiB0YWdzIHRvIHNwZWNpZnkgdGhlIHJlZmVyZW5jZS4KKyAgICB0ZXN0cy5hZGQo
J3JlZnRlc3RzL21vZGVybi9saW5rLXRlc3QuaHRtbCcsIGlzX3JlZnRlc3Q9VHJ1ZSwgYWN0dWFs
X2NoZWNrc3VtPSdpamsnLCBhY3R1YWxfaW1hZ2U9J2lqaycsIGZpbGVfY29udGVudD0nPGh0bWw+
PGhlYWQ+PGxpbmsgcmVsPW1hdGNoIGhyZWY9cmVzb3VyY2VzL2dyZWVuLXNxdWFyZS5odG1sPjwv
aGVhZD48Ym9keT5oaTwvYm9keT4nKQorICAgIHRlc3RzLmFkZCgncmVmdGVzdHMvbW9kZXJuL2xp
bmstbWlzbWF0Y2gtdGVzdC5odG1sJywgaXNfcmVmdGVzdD1UcnVlLCBhY3R1YWxfY2hlY2tzdW09
J2prbCcsIGFjdHVhbF9pbWFnZT0namtsJywgZmlsZV9jb250ZW50PSc8aHRtbD48aGVhZD48bGlu
ayByZWw9bWlzbWF0Y2ggaHJlZj1yZXNvdXJjZXMvZ3JlZW4tc3F1YXJlLmh0bWw+PC9oZWFkPjxi
b2R5PmhpPC9ib2R5PicpCisgICAgdGVzdHMuYWRkKCdyZWZ0ZXN0cy9tb2Rlcm4vcmVzb3VyY2Vz
L2dyZWVuLXNxdWFyZS5odG1sJywgYWN0dWFsX2NoZWNrc3VtPSdpamsnLCBhY3R1YWxfaW1hZ2U9
J2lqaycpCisKICAgICB0ZXN0cy5hZGQoJ3dlYnNvY2tldC90ZXN0cy9wYXNzZXMvdGV4dC5odG1s
JykKIAogICAgICMgRm9yIHRlc3RpbmcgdGVzdCBhcmUgcHJvcGVybHkgaW5jbHVkZWQgZnJvbSBw
bGF0Zm9ybSBkaXJlY3Rvcmllcy4KQEAgLTM1MSw3ICszNTcsNyBAQCBCdWcodGVzdCkgcGFzc2Vz
L3NraXBwZWQvc2tpcC5odG1sIFsgU2tpcCBdCiAgICAgIyBBZGQgZWFjaCB0ZXN0IGFuZCB0aGUg
ZXhwZWN0ZWQgb3V0cHV0LCBpZiBhbnkuCiAgICAgdGVzdF9saXN0ID0gdW5pdF90ZXN0X2xpc3Qo
KQogICAgIGZvciB0ZXN0IGluIHRlc3RfbGlzdC50ZXN0cy52YWx1ZXMoKToKLSAgICAgICAgYWRk
X2ZpbGUodGVzdCwgdGVzdC5uYW1lW3Rlc3QubmFtZS5yZmluZCgnLicpOl0sICcnKQorICAgICAg
ICBhZGRfZmlsZSh0ZXN0LCB0ZXN0Lm5hbWVbdGVzdC5uYW1lLnJmaW5kKCcuJyk6XSwgdGVzdC5m
aWxlX2NvbnRlbnQgaWYgdGVzdC5maWxlX2NvbnRlbnQgZWxzZSAnJykKICAgICAgICAgaWYgdGVz
dC5pc19yZWZ0ZXN0OgogICAgICAgICAgICAgY29udGludWUKICAgICAgICAgaWYgdGVzdC5hY3R1
YWxfYXVkaW86CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2lt
cG9ydGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weQpv
bGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDA1MWIxYmM3YjEyMDMwZTc5YWU4
ZTliMDUzOWFmZTFmMTY0NjQzNWUuLjIwZTM3N2RiNjQ3ZjI4YzE2ODk3ODI4YzU1NGVmMjA3NzE4
NmUzNWMKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5CkBAIC0zMjYs
NyArMzI2LDggQEAgY2xhc3MgVGVzdEltcG9ydGVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAg
ICAgIGNvcHlfbGlzdC5hcHBlbmQoeydzcmMnOiBmdWxscGF0aCwgJ2Rlc3QnOiBmaWxlbmFtZX0p
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgZWxpZiBzZWxm
Ll9pc19pbl9yZXNvdXJjZXNfZGlyZWN0b3J5KGZ1bGxwYXRoKToKLSAgICAgICAgICAgICAgICAg
ICAgX2xvZy53YXJuaW5nKCclcyBpcyBhIHRlc3QgbG9jYXRlZCBpbiBhICJyZXNvdXJjZXMiIGZv
bGRlci4gVGhpcyB0ZXN0IHdpbGwgYmUgc2tpcHBlZCBieSBXZWJLaXQgdGVzdCBydW5uZXJzLics
IGZ1bGxwYXRoKQorICAgICAgICAgICAgICAgICAgICBpZiBub3QgJ3JlZmVyZW5jZWZpbGUnIGlu
IHRlc3RfaW5mby5rZXlzKCk6CisgICAgICAgICAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmco
JyVzIGlzIGEgdGVzdCBsb2NhdGVkIGluIGEgInJlc291cmNlcyIgb3IgInJlZmVyZW5jZSIgZm9s
ZGVyLiBUaGlzIHRlc3Qgd2lsbCBiZSBza2lwcGVkIGJ5IFdlYktpdCB0ZXN0IHJ1bm5lcnMuJywg
ZnVsbHBhdGgpCiAKICAgICAgICAgICAgICAgICBpZiAnbWFudWFsdGVzdCcgaW4gdGVzdF9pbmZv
LmtleXMoKToKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTMzNSwyMyArMzM2LDIw
IEBAIGNsYXNzIFRlc3RJbXBvcnRlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9zbG93X3Rlc3RzLmFwcGVuZChmdWxscGF0aCkKIAogICAgICAgICAgICAgICAgIGlmICdyZWZl
cmVuY2VmaWxlJyBpbiB0ZXN0X2luZm8ua2V5cygpOgotICAgICAgICAgICAgICAgICAgICAjIFNr
aXAgaXQgc2luY2UsIHRoZSBjb3JyZXNwb25kaW5nIHJlZmVyZW5jZSB0ZXN0IHNob3VsZCBoYXZl
IGEgbGluayB0byB0aGlzIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCdDb3B5
aW5nIHJlc291cmNlIGZpbGUgZnJvbSB7fSB0byB7fScuZm9ybWF0KGZ1bGxwYXRoLCBmaWxlbmFt
ZSkpCisgICAgICAgICAgICAgICAgICAgIGNvcHlfbGlzdC5hcHBlbmQoeydzcmMnOiBmdWxscGF0
aCwgJ2Rlc3QnOiBmaWxlbmFtZX0pCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAg
ICAgICAgICAgICAgICBpZiAncmVmZXJlbmNlJyBpbiB0ZXN0X2luZm8ua2V5cygpOgogICAgICAg
ICAgICAgICAgICAgICByZWZ0ZXN0cyArPSAxCiAgICAgICAgICAgICAgICAgICAgIHRvdGFsX3Rl
c3RzICs9IDEKLSAgICAgICAgICAgICAgICAgICAgdGVzdF9iYXNlbmFtZSA9IHNlbGYuZmlsZXN5
c3RlbS5iYXNlbmFtZSh0ZXN0X2luZm9bJ3Rlc3QnXSkKIAotICAgICAgICAgICAgICAgICAgICAj
IEFkZCB0aGUgcmVmIGZpbGUsIGZvbGxvd2luZyBXZWJLaXQgc3R5bGUuCi0gICAgICAgICAgICAg
ICAgICAgICMgRklYTUU6IElkZWFsbHkgd2UnZCBzdXBwb3J0IHJlYWRpbmcgdGhlIG1ldGFkYXRh
Ci0gICAgICAgICAgICAgICAgICAgICMgZGlyZWN0bHkgcmF0aGVyIHRoYW4gcmVseWluZyAgb24g
YSBuYW1pbmcgY29udmVudGlvbi4KLSAgICAgICAgICAgICAgICAgICAgIyBVc2luZyBhIG5hbWlu
ZyBjb252ZW50aW9uIGNyZWF0ZXMgZHVwbGljYXRlIGNvcGllcyBvZiB0aGUKLSAgICAgICAgICAg
ICAgICAgICAgIyByZWZlcmVuY2UgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgICMgQ2hlY2sg
dG8gc2VlIGlmIHRoZXJlJ3MgYW4gZXhpc3RpbmcgcmVmZXJlbmNlIHRvIHJlbW92ZS4KKyAgICAg
ICAgICAgICAgICAgICAgdGVzdF9iYXNlbmFtZSA9IHNlbGYuZmlsZXN5c3RlbS5iYXNlbmFtZSh0
ZXN0X2luZm9bJ3Rlc3QnXSkKICAgICAgICAgICAgICAgICAgICAgcmVmX2ZpbGUgPSBzZWxmLmZp
bGVzeXN0ZW0uc3BsaXRleHQodGVzdF9iYXNlbmFtZSlbMF0gKyAnLWV4cGVjdGVkJwogICAgICAg
ICAgICAgICAgICAgICByZWZfZmlsZSArPSBzZWxmLmZpbGVzeXN0ZW0uc3BsaXRleHQodGVzdF9p
bmZvWydyZWZlcmVuY2UnXSlbMV0KKyAgICAgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCdDaGVj
a2luZyB0byBzZWUgaWYge30gZXhpc3RzJy5mb3JtYXQocmVmX2ZpbGUpKQogCi0gICAgICAgICAg
ICAgICAgICAgIGNvcHlfbGlzdC5hcHBlbmQoeydzcmMnOiB0ZXN0X2luZm9bJ3JlZmVyZW5jZSdd
LCAnZGVzdCc6IHJlZl9maWxlLCAncmVmZXJlbmNlX3N1cHBvcnRfaW5mbyc6IHRlc3RfaW5mb1sn
cmVmZXJlbmNlX3N1cHBvcnRfaW5mbyddfSkKICAgICAgICAgICAgICAgICAgICAgY29weV9saXN0
LmFwcGVuZCh7J3NyYyc6IHRlc3RfaW5mb1sndGVzdCddLCAnZGVzdCc6IGZpbGVuYW1lfSkKIAog
ICAgICAgICAgICAgICAgIGVsaWYgJ2pzdGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKToKQEAgLTU3
NSw2ICs1NzMsNyBAQCBjbGFzcyBUZXN0SW1wb3J0ZXIob2JqZWN0KToKICAgICAgICAgICAgIGZp
bGVzID0gc2VsZi5fdGVzdF9yZXNvdXJjZV9maWxlc1siZmlsZXMiXQogICAgICAgICAgICAgZm9y
IGZ1bGxfcGF0aCBpbiBzZWxmLl9wb3RlbnRpYWxfdGVzdF9yZXNvdXJjZV9maWxlczoKICAgICAg
ICAgICAgICAgICByZXNvdXJjZV9maWxlX3BhdGggPSBzZWxmLmZpbGVzeXN0ZW0ucmVscGF0aChm
dWxsX3BhdGgsIHNlbGYuc291cmNlX2RpcmVjdG9yeSkKKyAgICAgICAgICAgICAgICBfbG9nLmlu
Zm8oJ1RyYWNraW5nIHJlc291cmNlIGZpbGUge30nLmZvcm1hdChyZXNvdXJjZV9maWxlX3BhdGgp
KQogICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9hbHJlYWR5X2lkZW50aWZpZWRfYXNfcmVz
b3VyY2VfZmlsZShyZXNvdXJjZV9maWxlX3BhdGgpOgogICAgICAgICAgICAgICAgICAgICBmaWxl
cy5hcHBlbmQocmVzb3VyY2VfZmlsZV9wYXRoKQogICAgICAgICAgICAgICAgICAgICBzaG91bGRf
dXBkYXRlX2pzb25fZmlsZSA9IFRydWUKQEAgLTU5Myw3ICs1OTIsOCBAQCBjbGFzcyBUZXN0SW1w
b3J0ZXIob2JqZWN0KToKICAgICAgICAgcmV0dXJuIGFueShbcGF0aC5maW5kKGRpcmVjdG9yeSkg
IT0gLTEgZm9yIGRpcmVjdG9yeSBpbiBzZWxmLl90ZXN0X3Jlc291cmNlX2ZpbGVzWyJkaXJlY3Rv
cmllcyJdXSkKIAogICAgIGRlZiBfaXNfaW5fcmVzb3VyY2VzX2RpcmVjdG9yeShzZWxmLCBwYXRo
KToKLSAgICAgICAgcmV0dXJuICJyZXNvdXJjZXMiIGluIHBhdGguc3BsaXQoc2VsZi5maWxlc3lz
dGVtLnNlcCkKKyAgICAgICAgZGlycyA9IHBhdGguc3BsaXQoc2VsZi5maWxlc3lzdGVtLnNlcCkK
KyAgICAgICAgcmV0dXJuICJyZXNvdXJjZXMiIGluIGRpcnMgb3IgInJlZmVyZW5jZSIgaW4gZGly
cwogCiAgICAgZGVmIHVwZGF0ZV90ZXN0c19vcHRpb25zKHNlbGYpOgogICAgICAgICBzaG91bGRf
dXBkYXRlID0gc2VsZi5vcHRpb25zLmNsZWFuX2Rlc3RpbmF0aW9uX2RpcmVjdG9yeQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlcl91bml0dGVzdC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXJfdW5pdHRlc3QucHkK
aW5kZXggYzBmYzNkMmIyZWQ0MzIzMDNkMGFlMjFlYmUzNTQ5OGJkZjA0NWU5MC4uZjZkOWZhNGMy
OWYxOTJmNGU0ZGM2MWQ5YTc3MDExYTNmZTdkODI5OCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlcl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyX3VuaXR0ZXN0LnB5CkBAIC0zOTgsMjcgKzM5
OCwyOSBAQCBjbGFzcyBUZXN0SW1wb3J0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvV2ViS2l0QnVpbGQv
dzNjLXRlc3RzL3RvLWJlLWltcG9ydGVkL2Nzc3dnLXRlc3RzL3QvdGVzdDEuaHRtbCcpKQogICAg
ICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9XZWJLaXRCdWls
ZC93M2MtdGVzdHMvdG8tYmUtaW1wb3J0ZWQvY3Nzd2ctdGVzdHMvdC90ZXN0MS1yZWYuaHRtbCcp
KQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlv
dXRUZXN0cy93M2MvY3Nzd2ctdGVzdHMvdC90ZXN0MS5odG1sJykpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy9jc3N3Zy10
ZXN0cy90L3Rlc3QxLWV4cGVjdGVkLmh0bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZz
LmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL2Nzc3dnLXRlc3RzL3QvdGVz
dDEtcmVmLmh0bWwnKSkKICAgICAgICAgIyB0ZXN0MgogICAgICAgICBzZWxmLmFzc2VydFRydWUo
ZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9XZWJLaXRCdWlsZC93M2MtdGVzdHMvdG8tYmUtaW1w
b3J0ZWQvY3Nzd2ctdGVzdHMvdC90ZXN0Mi5odG1sJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L1dlYktpdEJ1aWxkL3czYy10ZXN0cy90by1iZS1p
bXBvcnRlZC9jc3N3Zy10ZXN0cy9zb21lL2RpcmVjdG9yeS9pbi9jc3N3Zy1yb290L3Rlc3QyLXJl
Zi5odG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZnMuZXhpc3RzKCcvbW9jay1jaGVj
a291dC9MYXlvdXRUZXN0cy93M2MvY3Nzd2ctdGVzdHMvdC90ZXN0Mi1leHBlY3RlZC5odG1sJykp
CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91
dFRlc3RzL3czYy9jc3N3Zy10ZXN0cy90L3Rlc3QyLmh0bWwnKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL2Nzc3dnLXRl
c3RzL3QvdGVzdDItZXhwZWN0ZWQuaHRtbCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMu
ZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93M2MvY3Nzd2ctdGVzdHMvc29tZS9k
aXJlY3RvcnkvaW4vY3Nzd2ctcm9vdC90ZXN0Mi1yZWYuaHRtbCcpKQogICAgICAgICAjIHRlc3Qz
CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L1dlYktp
dEJ1aWxkL3czYy10ZXN0cy90by1iZS1pbXBvcnRlZC93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1pbWFnZXMvdGVzdDMuaHRtbCcpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3Rz
KCcvbW9jay1jaGVja291dC9XZWJLaXRCdWlsZC93M2MtdGVzdHMvdG8tYmUtaW1wb3J0ZWQvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL3Rlc3QzLXJlZi5odG1sJykpCiAgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvdGVzdDMuaHRtbCcpKQotICAgICAg
ICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL3Rlc3QzLWV4cGVjdGVkLmh0bWwn
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5
b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy90ZXN0My1yZWYu
aHRtbCcpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZzLmV4aXN0cygnL21vY2stY2hlY2tv
dXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy90ZXN0
My1leHBlY3RlZC5odG1sJykpCiAgICAgICAgICMgdGVzdDQKICAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvV2ViS2l0QnVpbGQvdzNjLXRlc3RzL3RvLWJl
LWltcG9ydGVkL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy90ZXN0NC5odG1sJykp
CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L1dlYktp
dEJ1aWxkL3czYy10ZXN0cy90by1iZS1pbXBvcnRlZC93ZWItcGxhdGZvcm0tdGVzdHMvc29tZS9k
aXJlY3RvcnkvaW4vd3B0LXJvb3QvdGVzdDQtcmVmLmh0bWwnKSkKICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy90ZXN0NC5odG1sJykpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvdGVzdDQtZXhwZWN0ZWQuaHRtbCcpKQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NvbWUvZGlyZWN0b3J5L2luL3dwdC1yb290L3Rlc3Q0LXJl
Zi5odG1sJykpCiAgICAgICAgICMgdGVzdDUKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4
aXN0cygnL21vY2stY2hlY2tvdXQvV2ViS2l0QnVpbGQvdzNjLXRlc3RzL3RvLWJlLWltcG9ydGVk
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy90ZXN0NS5odG1sJykpCiAgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L1dlYktpdEJ1aWxkL3cz
Yy10ZXN0cy90by1iZS1pbXBvcnRlZC93ZWItcGxhdGZvcm0tdGVzdHMvc29tZS9kaXJlY3Rvcnkv
aW4vd3B0LXJvb3QvdGVzdDUtcmVmLmh0bWwnKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZz
LmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWltYWdlcy90ZXN0NS5odG1sJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShm
cy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1pbWFnZXMvdGVzdDUtZXhwZWN0ZWQuaHRtbCcpKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3NvbWUvZGlyZWN0b3J5L2luL3dwdC1yb290L3Rlc3Q1LXJlZi5odG1sJykp
CiAKICAgICBkZWYgdGVzdF93ZWJraXRfdGVzdF9ydW5uZXJfaW1wb3J0X3JlZnRlc3RzX3dpdGhf
YWJzb2x1dGVfcGF0aHNfZnJvbV9zb3VyY2VfZGlyKHNlbGYpOgogICAgICAgICBGQUtFX0ZJTEVT
ID0gewpAQCAtNDI4LDE5ICs0MzAsMjkgQEAgY2xhc3MgVGVzdEltcG9ydGVyVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAnL2hvbWUvdXNlci93cHQvc29tZS9kaXJlY3Rvcnkv
aW4vd3B0LXJvb3QvdGVzdDItcmVmLmh0bWwnOiAnPGh0bWw+PC9odG1sPicsCiAgICAgICAgICAg
ICAnL2hvbWUvdXNlci93cHQvY3NzL2Nzcy1pbWFnZXMvdGVzdDMuaHRtbCc6ICc8aHRtbD48aGVh
ZD48bGluayByZWw9bWF0Y2ggaHJlZj0iICAgICAgICAgICAgIC9zb21lL2RpcmVjdG9yeS9pbi93
cHQtcm9vdC90ZXN0My1yZWYuaHRtbCAgICAiPjwvaGVhZD48L2h0bWw+JywKICAgICAgICAgICAg
ICcvaG9tZS91c2VyL3dwdC9zb21lL2RpcmVjdG9yeS9pbi93cHQtcm9vdC90ZXN0My1yZWYuaHRt
bCc6ICc8aHRtbD48L2h0bWw+JywKKyAgICAgICAgICAgICcvaG9tZS91c2VyL3dwdC9jc3MvY3Nz
LWltYWdlcy90ZXN0NC5odG1sJzogJzxodG1sPjxoZWFkPjxsaW5rIHJlbD1tYXRjaCBocmVmPXRl
c3Q0LXJlZi5odG1sPjwvaGVhZD48L2h0bWw+JywKKyAgICAgICAgICAgICcvaG9tZS91c2VyL3dw
dC9jc3MvY3NzLWltYWdlcy90ZXN0NC1yZWYuaHRtbCc6ICc8aHRtbD48L2h0bWw+JywKKyAgICAg
ICAgICAgICcvaG9tZS91c2VyL3dwdC9jc3MvY3NzLXZhbHVlcy90ZXN0MS5odG1sJzogJzxodG1s
PjxoZWFkPjxsaW5rIHJlbD1tYXRjaCBocmVmPXJlZmVyZW5jZS9ncmVlbi1zcXVhcmUuaHRtbD48
L2hlYWQ+PC9odG1sPicsCisgICAgICAgICAgICAnL2hvbWUvdXNlci93cHQvY3NzL2Nzcy12YWx1
ZXMvcmVmZXJlbmNlL2dyZWVuLXNxdWFyZS5odG1sJzogJzxodG1sPjwvaHRtbD4nLAogICAgICAg
ICB9CiAgICAgICAgIEZBS0VfRklMRVMudXBkYXRlKEZBS0VfUkVQT1NJVE9SSUVTKQogCiAgICAg
ICAgIGZzID0gc2VsZi5pbXBvcnRfZGlyZWN0b3J5KFsnLXMnLCAnL2hvbWUvdXNlci93cHQnLCAn
LWQnLCAnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cydd
LCBGQUtFX0ZJTEVTLCAnY3NzL2Nzcy1pbWFnZXMnKQogICAgICAgICAjIHRlc3QxCiAgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvdGVzdDEuaHRtbCcpKQotICAgICAg
ICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL3Rlc3QxLWV4cGVjdGVkLmh0bWwn
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5
b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy90ZXN0MS1yZWYu
aHRtbCcpKQogICAgICAgICAjIHRlc3QyCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlz
dHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1pbWFnZXMvdGVzdDIuaHRtbCcpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhp
c3RzKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtaW1hZ2VzL3Rlc3QyLWV4cGVjdGVkLmh0bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zb21lL2RpcmVjdG9yeS9pbi93cHQtcm9vdC90ZXN0Mi1yZWYuaHRtbCcpKQogICAg
ICAgICAjIHRlc3QzCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNo
ZWNrb3V0L0xheW91dFRlc3RzL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMv
dGVzdDMuaHRtbCcpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1j
aGVja291dC9MYXlvdXRUZXN0cy93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2Vz
L3Rlc3QzLWV4cGVjdGVkLmh0bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0
cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zb21l
L2RpcmVjdG9yeS9pbi93cHQtcm9vdC90ZXN0My1yZWYuaHRtbCcpKQorICAgICAgICAjIHRlc3Q0
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91
dFRlc3RzL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvdGVzdDQuaHRtbCcp
KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZXhpc3RzKCcvbW9jay1jaGVja291dC9MYXlv
dXRUZXN0cy93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL3Rlc3Q0LXJlZi5o
dG1sJykpCisgICAgICAgICMgdGVzdDUKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmV4aXN0
cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXZhbHVlcy90ZXN0MS5odG1sJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5leGlz
dHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy12YWx1ZXMvcmVmZXJlbmNlL2dyZWVuLXNxdWFyZS5odG1sJykpCiAKICAgICBkZWYgdGVz
dF90ZW1wbGF0ZV90ZXN0KHNlbGYpOgogICAgICAgICBGQUtFX0ZJTEVTID0gewpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXIucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlci5weQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUg
MTAwNzU1CmluZGV4IDI5ZWFiOWNhYmMxZGM1YzdkNTEzNmE4ZDc2ZDhjNGMxNDMzZGVlYzguLjc1
MzFjNWJkY2MxOGE1MmVhYjUxNjBkY2MzMDMxZTA0ZmMxMzAxMTAKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS93M2MvdGVzdF9wYXJzZXIucHkKQEAgLTE3MCw3ICsxNzAsNiBAQCBjbGFzcyBUZXN0UGFyc2Vy
KG9iamVjdCk6CiAKICAgICBkZWYgaXNfd3B0X3JlZnRlc3Qoc2VsZik6CiAgICAgICAgICIiIlJl
dHVybnMgd2hldGhlciB0aGUgdGVzdCBpcyBhIHJlZiB0ZXN0IGFjY29yZGluZyBXUFQgcnVsZXMg
KGkuZS4gZmlsZSBoYXMgYSAtcmVmLmh0bWwgY291bnRlcnBhcnQpLiIiIgotICAgICAgICBwYXJ0
cyA9IHNlbGYuZmlsZXN5c3RlbS5zcGxpdGV4dChzZWxmLmZpbGVuYW1lKQogICAgICAgICByZXR1
cm4gIHNlbGYuZmlsZXN5c3RlbS5pc2ZpbGUoc2VsZi5wb3RlbnRpYWxfcmVmX2ZpbGVuYW1lKCkp
CiAKICAgICBkZWYgc3VwcG9ydF9maWxlcyhzZWxmLCBkb2MpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE2YmE3ZGEzYjQy
ZjhjMGJkMDkzMWYyN2FkNWE3MDNjYmNhMzUxNTIuLjI1ZjMxMDQyN2RiMDE4MzA4NjNmNjMwNThm
N2ZmMWI3MWYxNjk1NTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0xMS0wOCAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBm
b3IgZmluZGluZyB0ZXN0IHJlZmVyZW5jZXMgdmlhIDxsaW5rIHJlbD0ibWF0Y2giPgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNzg0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU29tZSBDU1MgMi4xIGFu
ZCBTVkcgdGVzdHMgZmFpbCBub3cgdGhhdCB3ZSdyZSBjb21wYXJpbmcgdGhlbSB0byB0aGUgY29y
cmVjdCByZWZlcmVuY2VzLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxOS0x
MS0wMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogVGltZWxpbmVzOiBhZGQgYSB0aW1lbGluZSB0aGF0IHNob3dzIGluZm9ybWF0aW9u
IGFib3V0IGFueSByZWNvcmRlZCBDU1MgYW5pbWF0aW9uL3RyYW5zaXRpb24KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IGY1M2YwZjAzMTAyMDMyMDEzYTkzY2E5YjI4ZGRiMWE2MjUyZmNlZjkuLmVlNTdl
OWM1YzM1M2JkNjBhZjM3ZGVmNDM0MjAxZjM2YjgxYjI2ZDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpA
QCAtOTY2LDYgKzk2NiwxMCBAQCB3ZWJraXQub3JnL2IvODgwNDUgZmFzdC9kb20vZ2MtYXR0cmli
dXRlLW5vZGUuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiBjc3MyLjEvMjAxMTAzMjMvcmVwbGFjZWQt
aW50cmluc2ljLTAwMS5odG0gWyBGYWlsdXJlIF0KIGNzczIuMS8yMDExMDMyMy9yZXBsYWNlZC1p
bnRyaW5zaWMtMDAyLmh0bSBbIEZhaWx1cmUgXQogCisjIFRlc3RzIGZhaWwgd2hlbiBydW4gYXMg
cmVmIHRlc3RzCit3ZWJraXQub3JnL2IvMjA0MDA0IGNzczIuMS8yMDExMDMyMy9hYnNwb3MtY29u
dGFpbmluZy1ibG9jay1pbml0aWFsLTAwNGIuaHRtIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJr
aXQub3JnL2IvMjA0MDA0IGNzczIuMS8yMDExMDMyMy9hYnNwb3MtY29udGFpbmluZy1ibG9jay1p
bml0aWFsLTAwNGQuaHRtIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCisKIHdlYmtpdC5vcmcvYi8xMzI3
OTEgc3ZnL2FzLW9iamVjdC9zaXppbmcvc3ZnLWluLW9iamVjdC1wbGFjZWhvbGRlci1oZWlnaHQt
Zml4ZWQuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMjc5MSBzdmcvYXMtb2JqZWN0L3Np
emluZy9zdmctaW4tb2JqZWN0LXBsYWNlaG9sZGVyLWhlaWdodC1wZXJjZW50YWdlLmh0bWwgWyBT
a2lwIF0KIHdlYmtpdC5vcmcvYi8xMzI3OTEgc3ZnL2FzLW9iamVjdC9zaXppbmcvc3ZnLWluLW9i
amVjdC1wbGFjZWhvbGRlci1oZWlnaHQtYXV0by5odG1sIFsgU2tpcCBdCkBAIC0xNTI4LDYgKzE1
MzIsMTIgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvc2hhcGVzL2VsbGlw
c2UtMDcuc3ZnIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9z
aGFwZXMvZWxsaXBzZS0wOC5zdmcgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3ZnL3RleHQvcmVmdGVzdHMvdGV4dC1jbGlwcGVkLW9mZnNjcmVlbi1tb3ZlLW9uc2Ny
ZWVuLmh0bWwgWyBTa2lwIF0KIAord2Via2l0Lm9yZy9iLzIwNDAwNSBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N2Zy9wYWludGluZy9jdXJyZW50Q29sb3Itb3ZlcnJpZGUtcHNlcnZl
ci1mYWxsYmFjay5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMDQwMDUg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvcGFpbnRpbmcvY3VycmVudENvbG9y
LW92ZXJyaWRlLXBzZXJ2ZXItZmlsbC5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5v
cmcvYi8yMDQwMDUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvcGF0aC9iZWFy
aW5nL2Fic29sdXRlLnN2ZyBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIwNDAw
NSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9wYXRoL2JlYXJpbmcvcmVsYXRp
dmUuc3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjA0MDA1IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3ZnL3BhdGgvYmVhcmluZy96ZXJvLnN2ZyBbIEltYWdl
T25seUZhaWx1cmUgXQorCiB3ZWJraXQub3JnL2IvMTM5NTk1IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3ZnL2ltcG9ydC9hbmltYXRlLWRvbS0wMi1mLW1hbnVhbC5zdmcgWyBTa2lw
IF0KIHdlYmtpdC5vcmcvYi8yMDExMTAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dmcvZXh0ZW5zaWJpbGl0eS9mb3JlaWduT2JqZWN0L3N0YWNraW5nLWNvbnRleHQuaHRtbCBbIFNr
aXAgXQogd2Via2l0Lm9yZy9iLzIwMTExMCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N2Zy9leHRlbnNpYmlsaXR5L2ZvcmVpZ25PYmplY3QvcG9zaXRpb24tc3ZnLXJvb3QtaW4tZm9y
ZWlnbi1vYmplY3QuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>