<?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>237141</bug_id>
          
          <creation_ts>2022-02-24 09:10:02 -0800</creation_ts>
          <short_desc>Web Inspector: add `IterableWeakSet`</short_desc>
          <delta_ts>2022-02-28 13:03:19 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=236533</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>pangle</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1845629</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-24 09:10:02 -0800</bug_when>
    <thetext>this allows clients to have a way to have an iterable collection (which btw `WeakSet`/`WeakMap` are not) that doesn&apos;t keep the objects in the collection alive (which btw `Set`/`Map`/`Array` do)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845637</commentid>
    <comment_count>1</comment_count>
      <attachid>453107</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-24 09:22:02 -0800</bug_when>
    <thetext>Created attachment 453107
[fast-cq] Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845832</commentid>
    <comment_count>2</comment_count>
      <attachid>453154</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-24 16:31:17 -0800</bug_when>
    <thetext>Created attachment 453154
[fast-cq] Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846163</commentid>
    <comment_count>3</comment_count>
      <attachid>453154</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-02-25 13:35:25 -0800</bug_when>
    <thetext>Comment on attachment 453154
[fast-cq] Patch

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

rs=me Nice!

&gt; Source/WebInspectorUI/UserInterface/Base/IterableWeakSet.js:130
&gt; +        return Array.from(this);

It seems a bit strange to me that it should be possible to mutate the result of `toJSON` as an array (even if those mutations won&apos;t affect the underlying backing). Any reason not to call `toJSON` on the created array to avoid that side effect? (`copy()` would need to change slightly if this does, though)

&gt; LayoutTests/inspector/unit-tests/iterableweakset-expected.txt:13
&gt; +PASS: has should return true if a key exists.

Nit: can we enclose `has` inside back-ticks or some other quote-like character. I read this sentence several times before I realized `has` was a function name, despite the test case header hinting at that 😅. Same throughout below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846230</commentid>
    <comment_count>4</comment_count>
      <attachid>453154</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-25 16:16:14 -0800</bug_when>
    <thetext>Comment on attachment 453154
[fast-cq] Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Base/IterableWeakSet.js:130
&gt;&gt; +        return Array.from(this);
&gt; 
&gt; It seems a bit strange to me that it should be possible to mutate the result of `toJSON` as an array (even if those mutations won&apos;t affect the underlying backing). Any reason not to call `toJSON` on the created array to avoid that side effect? (`copy()` would need to change slightly if this does, though)

As discussed offline, this is intended to support `JSON.stringify` &lt;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#tojson_behavior&gt; and is not required to return a `String`.

&gt;&gt; LayoutTests/inspector/unit-tests/iterableweakset-expected.txt:13
&gt;&gt; +PASS: has should return true if a key exists.
&gt; 
&gt; Nit: can we enclose `has` inside back-ticks or some other quote-like character. I read this sentence several times before I realized `has` was a function name, despite the test case header hinting at that 😅. Same throughout below.

Good idea.  Will change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846543</commentid>
    <comment_count>5</comment_count>
      <attachid>453367</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-27 22:28:11 -0800</bug_when>
    <thetext>Created attachment 453367
[fast-cq] Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846737</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-28 13:02:09 -0800</bug_when>
    <thetext>Committed r290612 (247885@main): &lt;https://commits.webkit.org/247885@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453367.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846739</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-28 13:03:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/89576657&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453107</attachid>
            <date>2022-02-24 09:22:02 -0800</date>
            <delta_ts>2022-02-24 16:31:15 -0800</delta_ts>
            <desc>[fast-cq] Patch</desc>
            <filename>bug-237141-20220224102201.patch</filename>
            <type>text/plain</type>
            <size>23067</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGRjNjEyYmI2Njk3NGFlNTVhOGIzZjUwNjAyOGVl
MTQ1MzY5OWQzZDMuLmRjZTQ2ZWMyNDY0ZTIxYmU0ZGUxMGI0MjlhNzAwYzcwNmY5NTJjYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIyLTAyLTI0ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBh
ZGQgYEl0ZXJhYmxlV2Vha1NldGAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNzE0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgYWxsb3dzIGNsaWVudHMgdG8gaGF2ZSBhIHdheSB0byBoYXZlIGFu
IGl0ZXJhYmxlIGNvbGxlY3Rpb24gdGhhdCBkb2Vzbid0IGtlZXAgdGhlCisgICAgICAgIG9iamVj
dHMgaW4gdGhlIGNvbGxlY3Rpb24gYWxpdmUuIFdlIGNhbm5vdCBqdXN0IHVzZSBgV2Vha1NldGAg
YXMgaXQncyBub3QgaXRlcmFibGUgKHRoZQorICAgICAgICBmb3JtZXIpIG9yIGBBcnJheWAvYFNl
dGAgYXMgaXQga2VlcHMgdGhlIG9iamVjdHMgYWxpdmUgKHRoZSBsYXR0ZXIpLgorCisgICAgICAg
IGBJdGVyYWJsZVdlYWtTZXRgIGlzIGEgY29tYmluYXRpb24gb2Y6CisgICAgICAgIC0gYSBgU2V0
YCBvZiBgV2Vha1JlZmAgZm9yIGVhY2ggb2JqZWN0LCB3aGljaCBnaXZlcyB1cyBpdGVyYWJpbGl0
eSB3aXRoIG9yZGVyIHByZXNlcnZlZAorICAgICAgICAtIGEgYFdlYWtNYXBgIG9mIGVhY2ggb2Jq
ZWN0IG1hcHBpbmcgdG8gdGhlIHdyYXBwZXIgYFdlYWtSZWZgIGluIHRoZSBgU2V0YCAoc2VlIGJl
bG93KQorICAgICAgICAtIGEgYEZpbmFsaXphdGlvblJlZ2lzdHJ5YCB0byByZW1vdmUgdGhlIHdy
YXBwZXIgYFdlYWtSZWZgIHdoZW4gdGhlIG9iamVjdCBpcyBkZXN0cm95ZWQKKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvQmFzZS9JdGVyYWJsZVdlYWtTZXQuanM6IEFkZGVkLgorICAgICAgICAo
SXRlcmFibGVXZWFrU2V0KToKKyAgICAgICAgKEl0ZXJhYmxlV2Vha1NldC5wcm90b3R5cGUuZ2V0
IHNpemUpOgorICAgICAgICAoSXRlcmFibGVXZWFrU2V0LnByb3RvdHlwZS5oYXMpOgorICAgICAg
ICAoSXRlcmFibGVXZWFrU2V0LnByb3RvdHlwZS5hZGQpOgorICAgICAgICAoSXRlcmFibGVXZWFr
U2V0LnByb3RvdHlwZS5kZWxldGUpOgorICAgICAgICAoSXRlcmFibGVXZWFrU2V0LnByb3RvdHlw
ZS50YWtlKToKKyAgICAgICAgKEl0ZXJhYmxlV2Vha1NldC5wcm90b3R5cGUuY2xlYXIpOgorICAg
ICAgICAoSXRlcmFibGVXZWFrU2V0LnByb3RvdHlwZS5rZXlzKToKKyAgICAgICAgKEl0ZXJhYmxl
V2Vha1NldC5wcm90b3R5cGUudmFsdWVzKToKKyAgICAgICAgKEl0ZXJhYmxlV2Vha1NldC5wcm90
b3R5cGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKEl0ZXJhYmxlV2Vha1NldC5wcm90b3R5
cGUuY29weSk6CisgICAgICAgIChJdGVyYWJsZVdlYWtTZXQucHJvdG90eXBlLnRvSlNPTik6Cisg
ICAgICAgIChJdGVyYWJsZVdlYWtTZXQucHJvdG90eXBlLmdldCBfZmluYWxpemF0aW9uUmVnaXN0
cnkpOgorICAgICAgICBXZSBjb3VsZCBqdXN0IGhhdmUgYSBgU2V0YC9gQXJyYXlgIG9mIGBXZWFr
UmVmYCwgYnV0IHRoYXQgd291bGQgcmVxdWlyZSBpdGVyYXRpbmcgdGhlIGVudGlyZQorICAgICAg
ICBhcnJheSB0byBmaW5kIHRoZSBgV2Vha1JlZmAgdGhhdCBtYXRjaGVzIHRoZSBnaXZlbiBvYmpl
Y3QsIHdoaWNoIGlzIGxlc3MgZWZmaWNpZW50LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9HcmlkT3ZlcmxheUNvbmZpZ3VyYXRpb25EaWFnbm9zdGljRXZlbnRSZWNvcmRl
ci5qczoKKyAgICAgICAgKFdJLkdyaWRPdmVybGF5Q29uZmlndXJhdGlvbkRpYWdub3N0aWNFdmVu
dFJlY29yZGVyKToKKyAgICAgICAgRG9uJ3Qga2VlcCBgV0kuRE9NTm9kZWAgdGhhdCBhcmUgYGxh
eW91dE92ZXJsYXlTaG93aW5nYCBhbGl2ZSBpbiBvcmRlciB0byByZWNvcmQgZGlhZ25vc3RpY3Mu
CisKIDIwMjItMDItMjQgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IG1lcmdlIFdJLk92ZXJsYXlNYW5hZ2VyIGludG8gV0kuRE9NTm9k
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9J
dGVyYWJsZVdlYWtTZXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9C
YXNlL0l0ZXJhYmxlV2Vha1NldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmI0ZmQ2NzVkMWY1YTQwNjZmNWFj
MjUxYTllMjhiNTA0NjJmZjg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQmFzZS9JdGVyYWJsZVdlYWtTZXQuanMKQEAgLTAsMCArMSwxNDEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitjbGFzcyBJdGVyYWJsZVdlYWtTZXQKK3sKKyAgICBjb25zdHJ1Y3Rv
cihpdGVtcyA9IFtdKQorICAgIHsKKyAgICAgICAgdGhpcy5fd3JhcHBlcnMgPSBuZXcgU2V0Owor
ICAgICAgICB0aGlzLl93cmFwcGVyRm9ySXRlbSA9IG5ldyBXZWFrTWFwOworCisgICAgICAgIGZv
ciAobGV0IGl0ZW0gb2YgaXRlbXMpCisgICAgICAgICAgICB0aGlzLmFkZChpdGVtKTsKKyAgICB9
CisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCBzaXplKCkKKyAgICB7CisgICAgICAgIGxldCBz
aXplID0gMDsKKyAgICAgICAgZm9yIChsZXQgd3JhcHBlciBvZiB0aGlzLl93cmFwcGVycykgewor
ICAgICAgICAgICAgaWYgKHdyYXBwZXIuZGVyZWYoKSkKKyAgICAgICAgICAgICAgICArK3NpemU7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHNpemU7CisgICAgfQorCisgICAgaGFzKGl0ZW0p
CisgICAgeworICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5fd3JhcHBlckZvckl0ZW0uaGFzKGl0
ZW0pOworICAgICAgICBjb25zb2xlLmFzc2VydChBcnJheS5mcm9tKHRoaXMuX3dyYXBwZXJzKS5z
b21lKCh3cmFwcGVyKSA9PiB3cmFwcGVyLmRlcmVmKCkgPT09IGl0ZW0pID09PSByZXN1bHQsIHRo
aXMsIGl0ZW0pOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGFkZChpdGVt
KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIGl0ZW0gPT09ICJvYmplY3Qi
LCBpdGVtKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoaXRlbSAhPT0gbnVsbCwgaXRlbSk7CisK
KyAgICAgICAgaWYgKHRoaXMuaGFzKGl0ZW0pKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGxldCB3cmFwcGVyID0gbmV3IFdlYWtSZWYoaXRlbSk7CisgICAgICAgIHRoaXMuX3dyYXBw
ZXJzLmFkZCh3cmFwcGVyKTsKKyAgICAgICAgdGhpcy5fd3JhcHBlckZvckl0ZW0uc2V0KGl0ZW0s
IHdyYXBwZXIpOworICAgICAgICB0aGlzLl9maW5hbGl6YXRpb25SZWdpc3RyeS5yZWdpc3Rlcihp
dGVtLCB7d2Vha1RoaXM6IG5ldyBXZWFrUmVmKHRoaXMpLCB3cmFwcGVyfSwgd3JhcHBlcik7Cisg
ICAgfQorCisgICAgZGVsZXRlKGl0ZW0pCisgICAgeworICAgICAgICByZXR1cm4gISF0aGlzLnRh
a2UoaXRlbSk7CisgICAgfQorCisgICAgdGFrZShpdGVtKQorICAgIHsKKyAgICAgICAgbGV0IHdy
YXBwZXIgPSB0aGlzLl93cmFwcGVyRm9ySXRlbS5nZXQoaXRlbSk7CisgICAgICAgIGlmICghd3Jh
cHBlcikKKyAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisKKyAgICAgICAgbGV0IGl0ZW1E
ZWxldGVkID0gdGhpcy5fd3JhcHBlckZvckl0ZW0uZGVsZXRlKGl0ZW0pOworICAgICAgICBjb25z
b2xlLmFzc2VydChpdGVtRGVsZXRlZCwgdGhpcywgaXRlbSk7CisKKyAgICAgICAgbGV0IHdyYXBw
ZXJEZWxldGVkID0gdGhpcy5fd3JhcHBlcnMuZGVsZXRlKHdyYXBwZXIpOworICAgICAgICBjb25z
b2xlLmFzc2VydCh3cmFwcGVyRGVsZXRlZCwgdGhpcywgaXRlbSk7CisKKyAgICAgICAgdGhpcy5f
ZmluYWxpemF0aW9uUmVnaXN0cnkudW5yZWdpc3Rlcih3cmFwcGVyKTsKKworICAgICAgICBjb25z
b2xlLmFzc2VydCh3cmFwcGVyLmRlcmVmKCkgPT09IGl0ZW0sIHRoaXMsIGl0ZW0pOworICAgICAg
ICByZXR1cm4gaXRlbTsKKyAgICB9CisKKyAgICBjbGVhcigpCisgICAgeworICAgICAgICBmb3Ig
KGxldCB3cmFwcGVyIG9mIHRoaXMuX3dyYXBwZXJzKSB7CisgICAgICAgICAgICB0aGlzLl93cmFw
cGVyRm9ySXRlbS5kZWxldGUod3JhcHBlcik7CisgICAgICAgICAgICB0aGlzLl9maW5hbGl6YXRp
b25SZWdpc3RyeS51bnJlZ2lzdGVyKHdyYXBwZXIpOworICAgICAgICB9CisKKyAgICAgICAgdGhp
cy5fd3JhcHBlcnMuY2xlYXIoKTsKKyAgICB9CisKKyAgICBrZXlzKCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLnZhbHVlcygpOworICAgIH0KKworICAgICp2YWx1ZXMoKQorICAgIHsKKyAg
ICAgICAgZm9yIChsZXQgd3JhcHBlciBvZiB0aGlzLl93cmFwcGVycykgeworICAgICAgICAgICAg
bGV0IGl0ZW0gPSB3cmFwcGVyLmRlcmVmKCk7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCgh
aXRlbSA9PT0gIXRoaXMuX3dyYXBwZXJGb3JJdGVtLmhhcyhpdGVtKSwgdGhpcywgaXRlbSk7Cisg
ICAgICAgICAgICBpZiAoaXRlbSkKKyAgICAgICAgICAgICAgICB5aWVsZCBpdGVtOworICAgICAg
ICB9CisgICAgfQorCisgICAgW1N5bWJvbC5pdGVyYXRvcl0oKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMudmFsdWVzKCk7CisgICAgfQorCisgICAgY29weSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gbmV3IEl0ZXJhYmxlV2Vha1NldCh0aGlzLnRvSlNPTigpKTsKKyAgICB9CisKKyAgICB0
b0pTT04oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcyk7CisgICAgfQor
CisgICAgLy8gUHJpdmF0ZQorCisgICAgZ2V0IF9maW5hbGl6YXRpb25SZWdpc3RyeSgpCisgICAg
eworICAgICAgICByZXR1cm4gSXRlcmFibGVXZWFrU2V0Ll9maW5hbGl6YXRpb25SZWdpc3RyeSA/
Pz0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGZ1bmN0aW9uKGhlbGRWYWx1ZSkgeworICAgICAg
ICAgICAgaGVsZFZhbHVlLndlYWtUaGlzLmRlcmVmKCk/Ll93cmFwcGVycy5kZWxldGUoaGVsZFZh
bHVlLndyYXBwZXIpOworICAgICAgICB9KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9HcmlkT3ZlcmxheUNvbmZp
Z3VyYXRpb25EaWFnbm9zdGljRXZlbnRSZWNvcmRlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0dyaWRPdmVybGF5Q29uZmlndXJhdGlvbkRpYWdu
b3N0aWNFdmVudFJlY29yZGVyLmpzCmluZGV4IDE1NjM4MjQxNjJlYTBjZGVlOGFiYzQyZGUwYmZl
NjZjZWVjMmYyYTQuLjIyYjVlMTcxYzk2YTQ4MDI4OGNhM2EyMGFlM2UzZGRlMjgxZjNjODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0dyaWRPdmVybGF5Q29uZmlndXJhdGlvbkRpYWdub3N0aWNFdmVudFJlY29yZGVyLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0dyaWRPdmVy
bGF5Q29uZmlndXJhdGlvbkRpYWdub3N0aWNFdmVudFJlY29yZGVyLmpzCkBAIC0zMiw3ICszMiw3
IEBAIFdJLkdyaWRPdmVybGF5Q29uZmlndXJhdGlvbkRpYWdub3N0aWNFdmVudFJlY29yZGVyID0g
Y2xhc3MgR3JpZE92ZXJsYXlDb25maWd1cmF0CiAgICAgICAgIHRoaXMuX2luc3BlY3Rvckhhc0Zv
Y3VzID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fbGFzdFVzZXJJbnRlcmFjdGlvblRpbWVzdGFtcCA9
IHVuZGVmaW5lZDsKICAgICAgICAgdGhpcy5fZXZlbnRTYW1wbGluZ1RpbWVySWRlbnRpZmllciA9
IHVuZGVmaW5lZDsKLSAgICAgICAgdGhpcy5fbm9kZXNTaG93aW5nR3JpZExheW91dE92ZXJsYXkg
PSBuZXcgU2V0OworICAgICAgICB0aGlzLl9ub2Rlc1Nob3dpbmdHcmlkTGF5b3V0T3ZlcmxheSA9
IG5ldyBJdGVyYWJsZVdlYWtTZXQ7CiAgICAgfQogCiAgICAgLy8gU3RhdGljCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODhk
Nzg2MDJiOTkyMWNiMjg3ZTI4MjRjMmIxMTAwZWYzYzFjYzNmYy4uMDE3ODI1ZDFjYmY0ZTA2Mzc3
NjJlMzkxZjA5M2Q3ZGZiZjIwZDNhNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTAyLTI0
ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBhZGQgYEl0ZXJhYmxlV2Vha1NldGAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNzE0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3VuaXQtdGVzdHMvaXRlcmFibGV3ZWFrc2V0
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci91bml0LXRlc3RzL2l0ZXJhYmxld2Vh
a3NldC1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDIyLTAyLTI0ICBEZXZpbiBSb3Vzc28gIDxk
cm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBtZXJnZSBXSS5PdmVy
bGF5TWFuYWdlciBpbnRvIFdJLkRPTU5vZGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci91bml0LXRlc3RzL2l0ZXJhYmxld2Vha3NldC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9pdGVyYWJsZXdlYWtzZXQtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmYwOWYzNWFmNDhjM2MxMjM1OWQ5YWEwZTllZGE2YWY5ZmZkNDczNDEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9pdGVyYWJsZXdlYWtz
ZXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsODYgQEAKK1Rlc3RpbmcgYWxsIG1ldGhvZHMgb2Yg
SXRlcmFibGVXZWFrU2V0LgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogSXRlcmFibGVXZWFr
U2V0CistLSBSdW5uaW5nIHRlc3QgY2FzZTogSXRlcmFibGVXZWFrU2V0LnByb3RvdHlwZS5jb25z
dHJ1Y3Rvci5FbXB0eQorW10KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEl0ZXJhYmxlV2Vha1Nl
dC5wcm90b3R5cGUuY29uc3RydWN0b3IuTm9uRW1wdHkKK1t7InZhbHVlIjoxfSx7InZhbHVlIjoy
fSx7InZhbHVlIjozfV0KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEl0ZXJhYmxlV2Vha1NldC5w
cm90b3R5cGUuaGFzCitbeyJ2YWx1ZSI6MX0seyJ2YWx1ZSI6Mn0seyJ2YWx1ZSI6M31dCitQQVNT
OiBoYXMgc2hvdWxkIHJldHVybiB0cnVlIGlmIGEga2V5IGV4aXN0cy4KK1BBU1M6IGhhcyBzaG91
bGQgcmV0dXJuIHRydWUgaWYgYSBrZXkgZXhpc3RzIChtb3JlIHRoYW4gb25jZSkuCitQQVNTOiBo
YXMgc2hvdWxkIHJldHVybiB0cnVlIGlmIGEga2V5IGV4aXN0cy4KK1BBU1M6IGhhcyBzaG91bGQg
cmV0dXJuIGZhbHNlIGlmIGEga2V5IGRvZXNuJ3QgZXhpc3QuCisKKy0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBJdGVyYWJsZVdlYWtTZXQucHJvdG90eXBlLmFkZAorW10KK1t7InZhbHVlIjoxfV0KK1t7
InZhbHVlIjoxfSx7InZhbHVlIjoyfV0KK1t7InZhbHVlIjoxfSx7InZhbHVlIjoyfSx7InZhbHVl
IjozfV0KK1t7InZhbHVlIjoxfSx7InZhbHVlIjoyfSx7InZhbHVlIjozfV0KKworLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IEl0ZXJhYmxlV2Vha1NldC5wcm90b3R5cGUuZGVsZXRlCitbeyJ2YWx1ZSI6
MX0seyJ2YWx1ZSI6Mn0seyJ2YWx1ZSI6M31dCitQQVNTOiBkZWxldGUgc2hvdWxkIHJldHVybiB0
cnVlIGZvciBhIGtub3duIGtleS4KK1t7InZhbHVlIjoyfSx7InZhbHVlIjozfV0KK1BBU1M6IGRl
bGV0ZSBzaG91bGQgcmV0dXJuIHRydWUgZm9yIGEga25vd24ga2V5LgorW3sidmFsdWUiOjN9XQor
UEFTUzogZGVsZXRlIHNob3VsZCByZXR1cm4gZmFsc2UgZm9yIGFuIGFscmVhZHkgZGVsZXRlZCBr
ZXkuCitbeyJ2YWx1ZSI6M31dCitQQVNTOiBkZWxldGUgc2hvdWxkIHJldHVybiB0cnVlIGZvciBh
IGtub3duIGtleS4KK1tdCitQQVNTOiBkZWxldGUgc2hvdWxkIHJldHVybiBmYWxzZSBmb3IgYW4g
dW5rbm93biBrZXkuCitbXQorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogSXRlcmFibGVXZWFrU2V0
LnByb3RvdHlwZS50YWtlCitbeyJ2YWx1ZSI6MX0seyJ2YWx1ZSI6Mn0seyJ2YWx1ZSI6M31dCitQ
QVNTOiB0YWtlIHNob3VsZCByZXR1cm4gdGhlIGtleSBmb3IgYSBrbm93biBrZXkuCitbeyJ2YWx1
ZSI6Mn0seyJ2YWx1ZSI6M31dCitQQVNTOiB0YWtlIHNob3VsZCByZXR1cm4gdGhlIGtleSBmb3Ig
YSBrbm93biBrZXkuCitbeyJ2YWx1ZSI6M31dCitQQVNTOiB0YWtlIHNob3VsZCByZXR1cm4gdW5k
ZWZpbmVkIGZvciBhbiBhbHJlYWR5IGRlbGV0ZWQga2V5LgorW3sidmFsdWUiOjN9XQorUEFTUzog
dGFrZSBzaG91bGQgcmV0dXJuIHRoZSBrZXkgZm9yIGEga25vd24ga2V5LgorW10KK1BBU1M6IHRh
a2Ugc2hvdWxkIHJldHVybiB1bmRlZmluZWQgZm9yIGFuIHVua25vd24ga2V5LgorW10KKworLS0g
UnVubmluZyB0ZXN0IGNhc2U6IEl0ZXJhYmxlV2Vha1NldC5wcm90b3R5cGUuY2xlYXIKK1t7InZh
bHVlIjoxfSx7InZhbHVlIjoyfSx7InZhbHVlIjozfV0KK1tdCisKKy0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBJdGVyYWJsZVdlYWtTZXQucHJvdG90eXBlLmtleXMKK1t7InZhbHVlIjoxfSx7InZhbHVl
IjoyfSx7InZhbHVlIjozfV0KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEl0ZXJhYmxlV2Vha1Nl
dC5wcm90b3R5cGUudmFsdWVzCitbeyJ2YWx1ZSI6MX0seyJ2YWx1ZSI6Mn0seyJ2YWx1ZSI6M31d
CisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJdGVyYWJsZVdlYWtTZXQucHJvdG90eXBlLmNvcHkK
K1t7InZhbHVlIjoxfSx7InZhbHVlIjoyfSx7InZhbHVlIjozfV0KK1BBU1M6IENvcHkgc2hvdWxk
IG5vdCByZXR1cm4gdGhlIHNhbWUgb2JqZWN0LgorUEFTUzogQ29weSBzaG91bGQgcmV0dXJuIGEg
ZGVlcCBjb3B5LgorUEFTUzogTW9kaWZ5aW5nIHRoZSBvcmlnaW5hbCBzaG91bGQgbm90IG1vZGlm
eSB0aGUgY29weS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEl0ZXJhYmxlV2Vha1NldC5Eb2Vz
Tm90S2VlcE9iamVjdHNBbGl2ZQorRXZhbHVhdGluZyBgSXRlcmFibGVXZWFrU2V0YCBzb3VyY2Ug
aW4gdGhlIGluc3BlY3RlZCBwYWdlLi4uCitUZXN0aW5nIGBJdGVyYWJsZVdlYWtTZXRgIGluIHRo
ZSBpbnNwZWN0ZWQgcGFnZS4uLgorW3sidmFsdWUiOjF9LHsidmFsdWUiOjJ9LHsidmFsdWUiOjN9
XQorUEFTUzogaGFzIHNob3VsZCByZXR1cm4gdHJ1ZSBmb3IgJ3sidmFsdWUiOjF9JyBhZnRlciBj
b25zdHJ1Y3Rpb24uCitQQVNTOiBoYXMgc2hvdWxkIHJldHVybiB0cnVlIGZvciAneyJ2YWx1ZSI6
Mn0nIGFmdGVyIGNvbnN0cnVjdGlvbi4KK1BBU1M6IGhhcyBzaG91bGQgcmV0dXJuIHRydWUgZm9y
ICd7InZhbHVlIjozfScgYWZ0ZXIgY29uc3RydWN0aW9uLgorW3sidmFsdWUiOjJ9LHsidmFsdWUi
OjN9XQorUEFTUzogU2hvdWxkIG5vdCBjb250YWluICd7InZhbHVlIjogMX0nIGFmdGVyIGBvbmUg
PSBudWxsYC4KK1BBU1M6IGhhcyBzaG91bGQgcmV0dXJuIHRydWUgZm9yICd7InZhbHVlIjoyfScg
YWZ0ZXIgYG9uZSA9IG51bGxgLgorUEFTUzogaGFzIHNob3VsZCByZXR1cm4gdHJ1ZSBmb3IgJ3si
dmFsdWUiOjN9JyBhZnRlciBgb25lID0gbnVsbGAuCitbeyJ2YWx1ZSI6M31dCitQQVNTOiBTaG91
bGQgbm90IGNvbnRhaW4gJ3sidmFsdWUiOiAxfScgYWZ0ZXIgYHR3byA9IG51bGxgLgorUEFTUzog
U2hvdWxkIG5vdCBjb250YWluICd7InZhbHVlIjogMn0nIGFmdGVyIGB0d28gPSBudWxsYC4KK1BB
U1M6IGhhcyBzaG91bGQgcmV0dXJuIHRydWUgZm9yICd7InZhbHVlIjozfScgYWZ0ZXIgYHR3byA9
IG51bGxgLgorW10KK1BBU1M6IFNob3VsZCBub3QgY29udGFpbiAneyJ2YWx1ZSI6IDF9JyBhZnRl
ciBgdGhyZWUgPSBudWxsYC4KK1BBU1M6IFNob3VsZCBub3QgY29udGFpbiAneyJ2YWx1ZSI6IDJ9
JyBhZnRlciBgdGhyZWUgPSBudWxsYC4KK1BBU1M6IFNob3VsZCBub3QgY29udGFpbiAneyJ2YWx1
ZSI6IDN9JyBhZnRlciBgdGhyZWUgPSBudWxsYC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3VuaXQtdGVzdHMvaXRlcmFibGV3ZWFrc2V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvdW5pdC10ZXN0cy9pdGVyYWJsZXdlYWtzZXQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZGZj
YzNlN2ViMjllYWNmMGEwNGFjMmUwOTkyYTEzZTJkM2UyM2YyCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvaXRlcmFibGV3ZWFrc2V0Lmh0bWwKQEAg
LTAsMCArMSwyODEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9nYy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgorYXN5bmMgZnVuY3Rpb24gY2hlY2tEb2VzTm90S2VlcE9iamVjdHNBbGl2
ZSgpCit7CisgICAgbGV0IG9uZSA9IFt7dmFsdWU6IDF9XTsKKyAgICBsZXQgdHdvID0gW3t2YWx1
ZTogMn1dOworICAgIGxldCB0aHJlZSA9IFt7dmFsdWU6IDN9XTsKKworICAgIGxldCBpdGVyYWJs
ZVdlYWtTZXQgPSBuZXcgSXRlcmFibGVXZWFrU2V0KFtvbmVbMF0sIHR3b1swXSwgdGhyZWVbMF0s
IHR3b1swXV0pOworCisgICAgZnVuY3Rpb24gY2hlY2soZGVzY3JpcHRpb24sIGl0ZW1PclZhbHVl
LCBwcmVzZW50KSB7CisgICAgICAgIGlmICh0eXBlb2YgaXRlbU9yVmFsdWUgPT09ICJvYmplY3Qi
KQorICAgICAgICAgICAgVGVzdFBhZ2UuZGlzcGF0Y2hFdmVudFRvRnJvbnRlbmQoIlRlc3RQYWdl
LWNoZWNrRG9lc05vdEtlZXBPYmplY3RzQWxpdmUtbG9nIiwge21lc3NhZ2U6IGAke2l0ZXJhYmxl
V2Vha1NldC5oYXMoaXRlbU9yVmFsdWUpID09PSBwcmVzZW50ID8gIlBBU1MiIDogIkZBSUwifTog
aGFzIHNob3VsZCByZXR1cm4gJHtwcmVzZW50ID8gInRydWUiIDogImZhbHNlIn0gZm9yICcke0pT
T04uc3RyaW5naWZ5KGl0ZW1PclZhbHVlKX0nIGFmdGVyICR7ZGVzY3JpcHRpb259LmB9KTsKKwor
ICAgICAgICBpZiAodHlwZW9mIGl0ZW1PclZhbHVlID09PSAibnVtYmVyIikgeworICAgICAgICAg
ICAgbGV0IGZvdW5kID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIGl0ZXJh
YmxlV2Vha1NldCkgeworICAgICAgICAgICAgICAgIGlmIChpdGVtLnZhbHVlICE9PSBpdGVtT3JW
YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBp
ZiAoZm91bmQpIHsKKyAgICAgICAgICAgICAgICAgICAgVGVzdFBhZ2UuZGlzcGF0Y2hFdmVudFRv
RnJvbnRlbmQoIlRlc3RQYWdlLWNoZWNrRG9lc05vdEtlZXBPYmplY3RzQWxpdmUtbG9nIiwge21l
c3NhZ2U6IGBGQUlMOiBTaG91bGQgbm90IGZpbmQgJyR7SlNPTi5zdHJpbmdpZnkoaXRlbU9yVmFs
dWUpfScgbW9yZSB0aGFuIG9uY2UgYWZ0ZXIgJHtkZXNjcmlwdGlvbn0uYH0pOworICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBmb3VuZCA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFRlc3RQYWdlLmRp
c3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJUZXN0UGFnZS1jaGVja0RvZXNOb3RLZWVwT2JqZWN0c0Fs
aXZlLWxvZyIsIHttZXNzYWdlOiBgJHtmb3VuZCA9PT0gcHJlc2VudCA/ICJQQVNTIiA6ICJGQUlM
In06IFNob3VsZCAke3ByZXNlbnQgPyAiIiA6ICJub3QifSBjb250YWluICd7InZhbHVlIjogJHtp
dGVtT3JWYWx1ZX19JyBhZnRlciAke2Rlc2NyaXB0aW9ufS5gfSk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBUZXN0UGFnZS5kaXNwYXRjaEV2ZW50VG9Gcm9udGVuZCgiVGVzdFBhZ2UtY2hlY2tE
b2VzTm90S2VlcE9iamVjdHNBbGl2ZS1sb2ciLCB7bWVzc2FnZTogSlNPTi5zdHJpbmdpZnkoaXRl
cmFibGVXZWFrU2V0KX0pOworICAgIGNoZWNrKCJjb25zdHJ1Y3Rpb24iLCBvbmVbMF0sIHRydWUp
OworICAgIGNoZWNrKCJjb25zdHJ1Y3Rpb24iLCB0d29bMF0sIHRydWUpOworICAgIGNoZWNrKCJj
b25zdHJ1Y3Rpb24iLCB0aHJlZVswXSwgdHJ1ZSk7CisKKyAgICBudWtlQXJyYXkob25lKTsKKyAg
ICBhd2FpdCBuZXcgUHJvbWlzZShzZXRUaW1lb3V0KTsKKyAgICBnYygpOworICAgIGF3YWl0IG5l
dyBQcm9taXNlKHNldFRpbWVvdXQpOworCisgICAgVGVzdFBhZ2UuZGlzcGF0Y2hFdmVudFRvRnJv
bnRlbmQoIlRlc3RQYWdlLWNoZWNrRG9lc05vdEtlZXBPYmplY3RzQWxpdmUtbG9nIiwge21lc3Nh
Z2U6IEpTT04uc3RyaW5naWZ5KGl0ZXJhYmxlV2Vha1NldCl9KTsKKyAgICBjaGVjaygiYG9uZSA9
IG51bGxgIiwgMSwgZmFsc2UpOworICAgIGNoZWNrKCJgb25lID0gbnVsbGAiLCB0d29bMF0sIHRy
dWUpOworICAgIGNoZWNrKCJgb25lID0gbnVsbGAiLCB0aHJlZVswXSwgdHJ1ZSk7CisKKyAgICBu
dWtlQXJyYXkodHdvKTsKKyAgICBhd2FpdCBuZXcgUHJvbWlzZShzZXRUaW1lb3V0KTsKKyAgICBn
YygpOworICAgIGF3YWl0IG5ldyBQcm9taXNlKHNldFRpbWVvdXQpOworCisgICAgVGVzdFBhZ2Uu
ZGlzcGF0Y2hFdmVudFRvRnJvbnRlbmQoIlRlc3RQYWdlLWNoZWNrRG9lc05vdEtlZXBPYmplY3Rz
QWxpdmUtbG9nIiwge21lc3NhZ2U6IEpTT04uc3RyaW5naWZ5KGl0ZXJhYmxlV2Vha1NldCl9KTsK
KyAgICBjaGVjaygiYHR3byA9IG51bGxgIiwgMSwgZmFsc2UpOworICAgIGNoZWNrKCJgdHdvID0g
bnVsbGAiLCAyLCBmYWxzZSk7CisgICAgY2hlY2soImB0d28gPSBudWxsYCIsIHRocmVlWzBdLCB0
cnVlKTsKKworICAgIG51a2VBcnJheSh0aHJlZSk7CisgICAgYXdhaXQgbmV3IFByb21pc2Uoc2V0
VGltZW91dCk7CisgICAgZ2MoKTsKKyAgICBhd2FpdCBuZXcgUHJvbWlzZShzZXRUaW1lb3V0KTsK
KworICAgIFRlc3RQYWdlLmRpc3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJUZXN0UGFnZS1jaGVja0Rv
ZXNOb3RLZWVwT2JqZWN0c0FsaXZlLWxvZyIsIHttZXNzYWdlOiBKU09OLnN0cmluZ2lmeShpdGVy
YWJsZVdlYWtTZXQpfSk7CisgICAgY2hlY2soImB0aHJlZSA9IG51bGxgIiwgMSwgZmFsc2UpOwor
ICAgIGNoZWNrKCJgdGhyZWUgPSBudWxsYCIsIDIsIGZhbHNlKTsKKyAgICBjaGVjaygiYHRocmVl
ID0gbnVsbGAiLCAzLCBmYWxzZSk7CisKKyAgICBUZXN0UGFnZS5kaXNwYXRjaEV2ZW50VG9Gcm9u
dGVuZCgiVGVzdFBhZ2UtY2hlY2tEb2VzTm90S2VlcE9iamVjdHNBbGl2ZS1kb25lIik7Cit9CisK
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRl
QXN5bmNTdWl0ZSgiSXRlcmFibGVXZWFrU2V0Iik7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJJdGVyYWJsZVdlYWtTZXQucHJvdG90eXBlLmNvbnN0cnVjdG9yLkVt
cHR5IiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBpdGVyYWJsZVdl
YWtTZXQgPSBuZXcgSXRlcmFibGVXZWFrU2V0OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5s
b2coaXRlcmFibGVXZWFrU2V0KTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLmFk
ZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkl0ZXJhYmxlV2Vha1NldC5wcm90b3R5cGUuY29u
c3RydWN0b3IuTm9uRW1wdHkiLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAg
bGV0IG9uZSA9IHt2YWx1ZTogMX07CisgICAgICAgICAgICBsZXQgdHdvID0ge3ZhbHVlOiAyfTsK
KyAgICAgICAgICAgIGxldCB0aHJlZSA9IHt2YWx1ZTogM307CisKKyAgICAgICAgICAgIGxldCBp
dGVyYWJsZVdlYWtTZXQgPSBuZXcgSXRlcmFibGVXZWFrU2V0KFtvbmUsIHR3bywgdGhyZWUsIHR3
b10pOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coaXRlcmFibGVXZWFrU2V0KTsKKyAg
ICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFt
ZTogIkl0ZXJhYmxlV2Vha1NldC5wcm90b3R5cGUuaGFzIiwKKyAgICAgICAgYXN5bmMgdGVzdCgp
IHsKKyAgICAgICAgICAgIGxldCBvbmUgPSB7dmFsdWU6IDF9OworICAgICAgICAgICAgbGV0IHR3
byA9IHt2YWx1ZTogMn07CisgICAgICAgICAgICBsZXQgdGhyZWUgPSB7dmFsdWU6IDN9OworICAg
ICAgICAgICAgbGV0IGZvdXIgPSB7dmFsdWU6IDR9OworCisgICAgICAgICAgICBsZXQgaXRlcmFi
bGVXZWFrU2V0ID0gbmV3IEl0ZXJhYmxlV2Vha1NldChbb25lLCB0d28sIHRocmVlLCB0d29dKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGl0ZXJhYmxlV2Vha1NldCk7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRydWUoaXRlcmFibGVXZWFrU2V0LmhhcyhvbmUpLCAi
aGFzIHNob3VsZCByZXR1cm4gdHJ1ZSBpZiBhIGtleSBleGlzdHMuIik7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdFRydWUoaXRlcmFibGVXZWFrU2V0Lmhhcyh0d28pLCAiaGFzIHNo
b3VsZCByZXR1cm4gdHJ1ZSBpZiBhIGtleSBleGlzdHMgKG1vcmUgdGhhbiBvbmNlKS4iKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VHJ1ZShpdGVyYWJsZVdlYWtTZXQuaGFzKHRo
cmVlKSwgImhhcyBzaG91bGQgcmV0dXJuIHRydWUgaWYgYSBrZXkgZXhpc3RzLiIpOworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShpdGVyYWJsZVdlYWtTZXQuaGFzKGZvdXIp
LCAiaGFzIHNob3VsZCByZXR1cm4gZmFsc2UgaWYgYSBrZXkgZG9lc24ndCBleGlzdC4iKTsKKyAg
ICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFt
ZTogIkl0ZXJhYmxlV2Vha1NldC5wcm90b3R5cGUuYWRkIiwKKyAgICAgICAgYXN5bmMgdGVzdCgp
IHsKKyAgICAgICAgICAgIGxldCBvbmUgPSB7dmFsdWU6IDF9OworICAgICAgICAgICAgbGV0IHR3
byA9IHt2YWx1ZTogMn07CisgICAgICAgICAgICBsZXQgdGhyZWUgPSB7dmFsdWU6IDN9OworCisg
ICAgICAgICAgICBsZXQgaXRlcmFibGVXZWFrU2V0ID0gbmV3IEl0ZXJhYmxlV2Vha1NldDsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGl0ZXJhYmxlV2Vha1NldCk7CisKKyAgICAgICAg
ICAgIGl0ZXJhYmxlV2Vha1NldC5hZGQob25lKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKGl0ZXJhYmxlV2Vha1NldCk7CisKKyAgICAgICAgICAgIGl0ZXJhYmxlV2Vha1NldC5hZGQo
dHdvKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGl0ZXJhYmxlV2Vha1NldCk7CisK
KyAgICAgICAgICAgIGl0ZXJhYmxlV2Vha1NldC5hZGQodGhyZWUpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coaXRlcmFibGVXZWFrU2V0KTsKKworICAgICAgICAgICAgaXRlcmFibGVX
ZWFrU2V0LmFkZCh0d28pOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coaXRlcmFibGVX
ZWFrU2V0KTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
KyAgICAgICAgbmFtZTogIkl0ZXJhYmxlV2Vha1NldC5wcm90b3R5cGUuZGVsZXRlIiwKKyAgICAg
ICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBvbmUgPSB7dmFsdWU6IDF9OworICAg
ICAgICAgICAgbGV0IHR3byA9IHt2YWx1ZTogMn07CisgICAgICAgICAgICBsZXQgdGhyZWUgPSB7
dmFsdWU6IDN9OworICAgICAgICAgICAgbGV0IGZvdXIgPSB7dmFsdWU6IDR9OworCisgICAgICAg
ICAgICBsZXQgaXRlcmFibGVXZWFrU2V0ID0gbmV3IEl0ZXJhYmxlV2Vha1NldChbb25lLCB0d28s
IHRocmVlLCB0d29dKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGl0ZXJhYmxlV2Vh
a1NldCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VHJ1ZShpdGVyYWJsZVdl
YWtTZXQuZGVsZXRlKG9uZSksICJkZWxldGUgc2hvdWxkIHJldHVybiB0cnVlIGZvciBhIGtub3du
IGtleS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGl0ZXJhYmxlV2Vha1NldCk7
CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VHJ1ZShpdGVyYWJsZVdlYWtTZXQu
ZGVsZXRlKHR3byksICJkZWxldGUgc2hvdWxkIHJldHVybiB0cnVlIGZvciBhIGtub3duIGtleS4i
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGl0ZXJhYmxlV2Vha1NldCk7CisKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UoaXRlcmFibGVXZWFrU2V0LmRlbGV0
ZSh0d28pLCAiZGVsZXRlIHNob3VsZCByZXR1cm4gZmFsc2UgZm9yIGFuIGFscmVhZHkgZGVsZXRl
ZCBrZXkuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhpdGVyYWJsZVdlYWtTZXQp
OworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRydWUoaXRlcmFibGVXZWFrU2V0
LmRlbGV0ZSh0aHJlZSksICJkZWxldGUgc2hvdWxkIHJldHVybiB0cnVlIGZvciBhIGtub3duIGtl
eS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGl0ZXJhYmxlV2Vha1NldCk7CisK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UoaXRlcmFibGVXZWFrU2V0LmRl
bGV0ZShmb3VyKSwgImRlbGV0ZSBzaG91bGQgcmV0dXJuIGZhbHNlIGZvciBhbiB1bmtub3duIGtl
eS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGl0ZXJhYmxlV2Vha1NldCk7Cisg
ICAgICAgIH0sCisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5h
bWU6ICJJdGVyYWJsZVdlYWtTZXQucHJvdG90eXBlLnRha2UiLAorICAgICAgICBhc3luYyB0ZXN0
KCkgeworICAgICAgICAgICAgbGV0IG9uZSA9IHt2YWx1ZTogMX07CisgICAgICAgICAgICBsZXQg
dHdvID0ge3ZhbHVlOiAyfTsKKyAgICAgICAgICAgIGxldCB0aHJlZSA9IHt2YWx1ZTogM307Cisg
ICAgICAgICAgICBsZXQgZm91ciA9IHt2YWx1ZTogNH07CisKKyAgICAgICAgICAgIGxldCBpdGVy
YWJsZVdlYWtTZXQgPSBuZXcgSXRlcmFibGVXZWFrU2V0KFtvbmUsIHR3bywgdGhyZWUsIHR3b10p
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coaXRlcmFibGVXZWFrU2V0KTsKKworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChpdGVyYWJsZVdlYWtTZXQudGFrZShv
bmUpPy52YWx1ZSwgMSwgInRha2Ugc2hvdWxkIHJldHVybiB0aGUga2V5IGZvciBhIGtub3duIGtl
eS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGl0ZXJhYmxlV2Vha1NldCk7CisK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoaXRlcmFibGVXZWFrU2V0LnRh
a2UodHdvKT8udmFsdWUsIDIsICJ0YWtlIHNob3VsZCByZXR1cm4gdGhlIGtleSBmb3IgYSBrbm93
biBrZXkuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhpdGVyYWJsZVdlYWtTZXQp
OworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGl0ZXJhYmxlV2Vha1Nl
dC50YWtlKHR3byksIHVuZGVmaW5lZCwgInRha2Ugc2hvdWxkIHJldHVybiB1bmRlZmluZWQgZm9y
IGFuIGFscmVhZHkgZGVsZXRlZCBrZXkuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZyhpdGVyYWJsZVdlYWtTZXQpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVx
dWFsKGl0ZXJhYmxlV2Vha1NldC50YWtlKHRocmVlKT8udmFsdWUsIDMsICJ0YWtlIHNob3VsZCBy
ZXR1cm4gdGhlIGtleSBmb3IgYSBrbm93biBrZXkuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZyhpdGVyYWJsZVdlYWtTZXQpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdEVxdWFsKGl0ZXJhYmxlV2Vha1NldC50YWtlKGZvdXIpLCB1bmRlZmluZWQsICJ0YWtlIHNo
b3VsZCByZXR1cm4gdW5kZWZpbmVkIGZvciBhbiB1bmtub3duIGtleS4iKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QubG9nKGl0ZXJhYmxlV2Vha1NldCk7CisgICAgICAgIH0sCisgICAgfSk7
CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJdGVyYWJsZVdlYWtT
ZXQucHJvdG90eXBlLmNsZWFyIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAg
IGxldCBvbmUgPSB7dmFsdWU6IDF9OworICAgICAgICAgICAgbGV0IHR3byA9IHt2YWx1ZTogMn07
CisgICAgICAgICAgICBsZXQgdGhyZWUgPSB7dmFsdWU6IDN9OworCisgICAgICAgICAgICBsZXQg
aXRlcmFibGVXZWFrU2V0ID0gbmV3IEl0ZXJhYmxlV2Vha1NldChbb25lLCB0d28sIHRocmVlLCB0
d29dKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGl0ZXJhYmxlV2Vha1NldCk7CisK
KyAgICAgICAgICAgIGl0ZXJhYmxlV2Vha1NldC5jbGVhcigpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coaXRlcmFibGVXZWFrU2V0KTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAg
IHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkl0ZXJhYmxlV2Vha1NldC5wcm90
b3R5cGUua2V5cyIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgb25l
ID0ge3ZhbHVlOiAxfTsKKyAgICAgICAgICAgIGxldCB0d28gPSB7dmFsdWU6IDJ9OworICAgICAg
ICAgICAgbGV0IHRocmVlID0ge3ZhbHVlOiAzfTsKKworICAgICAgICAgICAgbGV0IGl0ZXJhYmxl
V2Vha1NldCA9IG5ldyBJdGVyYWJsZVdlYWtTZXQoW29uZSwgdHdvLCB0aHJlZSwgdHdvXSk7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhBcnJheS5mcm9tKGl0ZXJhYmxlV2Vha1NldC5r
ZXlzKCkpKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
KyAgICAgICAgbmFtZTogIkl0ZXJhYmxlV2Vha1NldC5wcm90b3R5cGUudmFsdWVzIiwKKyAgICAg
ICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBvbmUgPSB7dmFsdWU6IDF9OworICAg
ICAgICAgICAgbGV0IHR3byA9IHt2YWx1ZTogMn07CisgICAgICAgICAgICBsZXQgdGhyZWUgPSB7
dmFsdWU6IDN9OworCisgICAgICAgICAgICBsZXQgaXRlcmFibGVXZWFrU2V0ID0gbmV3IEl0ZXJh
YmxlV2Vha1NldChbb25lLCB0d28sIHRocmVlLCB0d29dKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKEFycmF5LmZyb20oaXRlcmFibGVXZWFrU2V0LnZhbHVlcygpKSk7CisgICAgICAg
IH0sCisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJ
dGVyYWJsZVdlYWtTZXQucHJvdG90eXBlLmNvcHkiLAorICAgICAgICBhc3luYyB0ZXN0KCkgewor
ICAgICAgICAgICAgbGV0IG9uZSA9IHt2YWx1ZTogMX07CisgICAgICAgICAgICBsZXQgdHdvID0g
e3ZhbHVlOiAyfTsKKyAgICAgICAgICAgIGxldCB0aHJlZSA9IHt2YWx1ZTogM307CisgICAgICAg
ICAgICBsZXQgZm91ciA9IHt2YWx1ZTogNH07CisKKyAgICAgICAgICAgIGxldCBpdGVyYWJsZVdl
YWtTZXQgPSBuZXcgSXRlcmFibGVXZWFrU2V0KFtvbmUsIHR3bywgdGhyZWUsIHR3b10pOworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coaXRlcmFibGVXZWFrU2V0KTsKKworICAgICAgICAg
ICAgbGV0IGNvcHkgPSBpdGVyYWJsZVdlYWtTZXQuY29weSgpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3ROb3RFcXVhbChpdGVyYWJsZVdlYWtTZXQsIGNvcHksICJDb3B5IHNob3Vs
ZCBub3QgcmV0dXJuIHRoZSBzYW1lIG9iamVjdC4iKQorICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChKU09OLnN0cmluZ2lmeShpdGVyYWJsZVdlYWtTZXQpLCBKU09OLnN0cmlu
Z2lmeShjb3B5KSwgIkNvcHkgc2hvdWxkIHJldHVybiBhIGRlZXAgY29weS4iKTsKKworICAgICAg
ICAgICAgaXRlcmFibGVXZWFrU2V0LmFkZChmb3VyKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0Tm90RXF1YWwoSlNPTi5zdHJpbmdpZnkoaXRlcmFibGVXZWFrU2V0KSwgSlNPTi5z
dHJpbmdpZnkoY29weSksICJNb2RpZnlpbmcgdGhlIG9yaWdpbmFsIHNob3VsZCBub3QgbW9kaWZ5
IHRoZSBjb3B5LiIpOworICAgICAgICB9LAorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENh
c2UoeworICAgICAgICBuYW1lOiAiSXRlcmFibGVXZWFrU2V0LkRvZXNOb3RLZWVwT2JqZWN0c0Fs
aXZlIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIC8vIFNlbmQgYEl0ZXJh
YmxlV2Vha1NldGAgdG8gdGhlIHBhZ2Ugc28gdGhhdCBgR0NDb250cm9sbGVyYCBjYW4gYmUgdXNl
ZC4KKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJFdmFsdWF0aW5nIGBJdGVyYWJsZVdl
YWtTZXRgIHNvdXJjZSBpbiB0aGUgaW5zcGVjdGVkIHBhZ2UuLi4iKTsKKyAgICAgICAgICAgIGF3
YWl0IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoU3RyaW5nKEl0ZXJhYmxlV2Vha1NldCkp
OworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZEV2ZW50TGlzdGVuZXIoIlRlc3RQYWdl
LWNoZWNrRG9lc05vdEtlZXBPYmplY3RzQWxpdmUtbG9nIiwgKGV2ZW50KSA9PiB7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coZXZlbnQuZGF0YS5tZXNzYWdlKTsKKyAgICAgICAg
ICAgIH0pOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVGVzdGluZyBgSXRlcmFi
bGVXZWFrU2V0YCBpbiB0aGUgaW5zcGVjdGVkIHBhZ2UuLi4iKTsKKyAgICAgICAgICAgIGF3YWl0
IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQo
IlRlc3RQYWdlLWNoZWNrRG9lc05vdEtlZXBPYmplY3RzQWxpdmUtZG9uZSIpLAorICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGNoZWNrRG9lc05vdEtlZXBPYmpl
Y3RzQWxpdmUoKWApLAorICAgICAgICAgICAgXSk7CisgICAgICAgIH0sCisgICAgfSk7CisKKyAg
ICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxwPlRlc3RpbmcgYWxsIG1ldGhvZHMgb2Yg
SXRlcmFibGVXZWFrU2V0LjwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453154</attachid>
            <date>2022-02-24 16:31:17 -0800</date>
            <delta_ts>2022-02-27 22:28:11 -0800</delta_ts>
            <desc>[fast-cq] Patch</desc>
            <filename>bug-237141-20220224173116.patch</filename>
            <type>text/plain</type>
            <size>24521</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGRjNjEyYmI2Njk3NGFlNTVhOGIzZjUwNjAyOGVl
MTQ1MzY5OWQzZDMuLmM3YTQyOWJjMThmYjI4NGNmMjM0NDNmZTQwZDkzYTEzYzkzODM1NmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIyLTAyLTI0ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBh
ZGQgYEl0ZXJhYmxlV2Vha1NldGAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNzE0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgYWxsb3dzIGNsaWVudHMgdG8gaGF2ZSBhIHdheSB0byBoYXZlIGFu
IGl0ZXJhYmxlIGNvbGxlY3Rpb24gdGhhdCBkb2Vzbid0IGtlZXAgdGhlCisgICAgICAgIG9iamVj
dHMgaW4gdGhlIGNvbGxlY3Rpb24gYWxpdmUuIFdlIGNhbm5vdCBqdXN0IHVzZSBgV2Vha1NldGAg
YXMgaXQncyBub3QgaXRlcmFibGUgKHRoZQorICAgICAgICBmb3JtZXIpIG9yIGBBcnJheWAvYFNl
dGAgYXMgaXQga2VlcHMgdGhlIG9iamVjdHMgYWxpdmUgKHRoZSBsYXR0ZXIpLgorCisgICAgICAg
IGBJdGVyYWJsZVdlYWtTZXRgIGlzIGEgY29tYmluYXRpb24gb2Y6CisgICAgICAgIC0gYSBgU2V0
YCBvZiBgV2Vha1JlZmAgZm9yIGVhY2ggb2JqZWN0LCB3aGljaCBnaXZlcyB1cyBpdGVyYWJpbGl0
eSB3aXRoIG9yZGVyIHByZXNlcnZlZAorICAgICAgICAtIGEgYFdlYWtNYXBgIG9mIGVhY2ggb2Jq
ZWN0IG1hcHBpbmcgdG8gdGhlIHdyYXBwZXIgYFdlYWtSZWZgIGluIHRoZSBgU2V0YCAoc2VlIGJl
bG93KQorICAgICAgICAtIGEgYEZpbmFsaXphdGlvblJlZ2lzdHJ5YCB0byByZW1vdmUgdGhlIHdy
YXBwZXIgYFdlYWtSZWZgIHdoZW4gdGhlIG9iamVjdCBpcyBkZXN0cm95ZWQKKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvQmFzZS9JdGVyYWJsZVdlYWtTZXQuanM6IEFkZGVkLgorICAgICAgICAo
SXRlcmFibGVXZWFrU2V0KToKKyAgICAgICAgKEl0ZXJhYmxlV2Vha1NldC5wcm90b3R5cGUuZ2V0
IHNpemUpOgorICAgICAgICAoSXRlcmFibGVXZWFrU2V0LnByb3RvdHlwZS5oYXMpOgorICAgICAg
ICAoSXRlcmFibGVXZWFrU2V0LnByb3RvdHlwZS5hZGQpOgorICAgICAgICAoSXRlcmFibGVXZWFr
U2V0LnByb3RvdHlwZS5kZWxldGUpOgorICAgICAgICAoSXRlcmFibGVXZWFrU2V0LnByb3RvdHlw
ZS50YWtlKToKKyAgICAgICAgKEl0ZXJhYmxlV2Vha1NldC5wcm90b3R5cGUuY2xlYXIpOgorICAg
ICAgICAoSXRlcmFibGVXZWFrU2V0LnByb3RvdHlwZS5rZXlzKToKKyAgICAgICAgKEl0ZXJhYmxl
V2Vha1NldC5wcm90b3R5cGUudmFsdWVzKToKKyAgICAgICAgKEl0ZXJhYmxlV2Vha1NldC5wcm90
b3R5cGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKEl0ZXJhYmxlV2Vha1NldC5wcm90b3R5
cGUuY29weSk6CisgICAgICAgIChJdGVyYWJsZVdlYWtTZXQucHJvdG90eXBlLnRvSlNPTik6Cisg
ICAgICAgIChJdGVyYWJsZVdlYWtTZXQucHJvdG90eXBlLmdldCBfZmluYWxpemF0aW9uUmVnaXN0
cnkpOgorICAgICAgICBXZSBjb3VsZCBqdXN0IGhhdmUgYSBgU2V0YC9gQXJyYXlgIG9mIGBXZWFr
UmVmYCwgYnV0IHRoYXQgd291bGQgcmVxdWlyZSBpdGVyYXRpbmcgdGhlIGVudGlyZQorICAgICAg
ICBhcnJheSB0byBmaW5kIHRoZSBgV2Vha1JlZmAgdGhhdCBtYXRjaGVzIHRoZSBnaXZlbiBvYmpl
Y3QsIHdoaWNoIGlzIGxlc3MgZWZmaWNpZW50LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9HcmlkT3ZlcmxheUNvbmZpZ3VyYXRpb25EaWFnbm9zdGljRXZlbnRSZWNvcmRl
ci5qczoKKyAgICAgICAgKFdJLkdyaWRPdmVybGF5Q29uZmlndXJhdGlvbkRpYWdub3N0aWNFdmVu
dFJlY29yZGVyKToKKyAgICAgICAgRG9uJ3Qga2VlcCBgV0kuRE9NTm9kZWAgdGhhdCBhcmUgYGxh
eW91dE92ZXJsYXlTaG93aW5nYCBhbGl2ZSBpbiBvcmRlciB0byByZWNvcmQgZGlhZ25vc3RpY3Mu
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1Rlc3QuaHRtbDoKKwogMjAyMi0wMi0yNCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogbWVyZ2UgV0kuT3ZlcmxheU1hbmFn
ZXIgaW50byBXSS5ET01Ob2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9CYXNlL0l0ZXJhYmxlV2Vha1NldC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0Jhc2UvSXRlcmFibGVXZWFrU2V0LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyYjRm
ZDY3NWQxZjVhNDA2NmY1YWMyNTFhOWUyOGI1MDQ2MmZmODgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL0l0ZXJhYmxlV2Vha1NldC5q
cwpAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2NsYXNzIEl0ZXJhYmxlV2Vha1NldAor
eworICAgIGNvbnN0cnVjdG9yKGl0ZW1zID0gW10pCisgICAgeworICAgICAgICB0aGlzLl93cmFw
cGVycyA9IG5ldyBTZXQ7CisgICAgICAgIHRoaXMuX3dyYXBwZXJGb3JJdGVtID0gbmV3IFdlYWtN
YXA7CisKKyAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBpdGVtcykKKyAgICAgICAgICAgIHRoaXMu
YWRkKGl0ZW0pOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IHNpemUoKQorICAg
IHsKKyAgICAgICAgbGV0IHNpemUgPSAwOworICAgICAgICBmb3IgKGxldCB3cmFwcGVyIG9mIHRo
aXMuX3dyYXBwZXJzKSB7CisgICAgICAgICAgICBpZiAod3JhcHBlci5kZXJlZigpKQorICAgICAg
ICAgICAgICAgICsrc2l6ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICB9
CisKKyAgICBoYXMoaXRlbSkKKyAgICB7CisgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLl93cmFw
cGVyRm9ySXRlbS5oYXMoaXRlbSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KEFycmF5LmZyb20o
dGhpcy5fd3JhcHBlcnMpLnNvbWUoKHdyYXBwZXIpID0+IHdyYXBwZXIuZGVyZWYoKSA9PT0gaXRl
bSkgPT09IHJlc3VsdCwgdGhpcywgaXRlbSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorCisgICAgYWRkKGl0ZW0pCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2Yg
aXRlbSA9PT0gIm9iamVjdCIsIGl0ZW0pOworICAgICAgICBjb25zb2xlLmFzc2VydChpdGVtICE9
PSBudWxsLCBpdGVtKTsKKworICAgICAgICBpZiAodGhpcy5oYXMoaXRlbSkpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgbGV0IHdyYXBwZXIgPSBuZXcgV2Vha1JlZihpdGVtKTsKKyAg
ICAgICAgdGhpcy5fd3JhcHBlcnMuYWRkKHdyYXBwZXIpOworICAgICAgICB0aGlzLl93cmFwcGVy
Rm9ySXRlbS5zZXQoaXRlbSwgd3JhcHBlcik7CisgICAgICAgIHRoaXMuX2ZpbmFsaXphdGlvblJl
Z2lzdHJ5LnJlZ2lzdGVyKGl0ZW0sIHt3ZWFrVGhpczogbmV3IFdlYWtSZWYodGhpcyksIHdyYXBw
ZXJ9LCB3cmFwcGVyKTsKKyAgICB9CisKKyAgICBkZWxldGUoaXRlbSkKKyAgICB7CisgICAgICAg
IHJldHVybiAhIXRoaXMudGFrZShpdGVtKTsKKyAgICB9CisKKyAgICB0YWtlKGl0ZW0pCisgICAg
eworICAgICAgICBsZXQgd3JhcHBlciA9IHRoaXMuX3dyYXBwZXJGb3JJdGVtLmdldChpdGVtKTsK
KyAgICAgICAgaWYgKCF3cmFwcGVyKQorICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKwor
ICAgICAgICBsZXQgaXRlbURlbGV0ZWQgPSB0aGlzLl93cmFwcGVyRm9ySXRlbS5kZWxldGUoaXRl
bSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGl0ZW1EZWxldGVkLCB0aGlzLCBpdGVtKTsKKwor
ICAgICAgICBsZXQgd3JhcHBlckRlbGV0ZWQgPSB0aGlzLl93cmFwcGVycy5kZWxldGUod3JhcHBl
cik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHdyYXBwZXJEZWxldGVkLCB0aGlzLCBpdGVtKTsK
KworICAgICAgICB0aGlzLl9maW5hbGl6YXRpb25SZWdpc3RyeS51bnJlZ2lzdGVyKHdyYXBwZXIp
OworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHdyYXBwZXIuZGVyZWYoKSA9PT0gaXRlbSwgdGhp
cywgaXRlbSk7CisgICAgICAgIHJldHVybiBpdGVtOworICAgIH0KKworICAgIGNsZWFyKCkKKyAg
ICB7CisgICAgICAgIGZvciAobGV0IHdyYXBwZXIgb2YgdGhpcy5fd3JhcHBlcnMpIHsKKyAgICAg
ICAgICAgIHRoaXMuX3dyYXBwZXJGb3JJdGVtLmRlbGV0ZSh3cmFwcGVyKTsKKyAgICAgICAgICAg
IHRoaXMuX2ZpbmFsaXphdGlvblJlZ2lzdHJ5LnVucmVnaXN0ZXIod3JhcHBlcik7CisgICAgICAg
IH0KKworICAgICAgICB0aGlzLl93cmFwcGVycy5jbGVhcigpOworICAgIH0KKworICAgIGtleXMo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzKCk7CisgICAgfQorCisgICAgKnZh
bHVlcygpCisgICAgeworICAgICAgICBmb3IgKGxldCB3cmFwcGVyIG9mIHRoaXMuX3dyYXBwZXJz
KSB7CisgICAgICAgICAgICBsZXQgaXRlbSA9IHdyYXBwZXIuZGVyZWYoKTsKKyAgICAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KCFpdGVtID09PSAhdGhpcy5fd3JhcHBlckZvckl0ZW0uaGFzKGl0ZW0p
LCB0aGlzLCBpdGVtKTsKKyAgICAgICAgICAgIGlmIChpdGVtKQorICAgICAgICAgICAgICAgIHlp
ZWxkIGl0ZW07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBbU3ltYm9sLml0ZXJhdG9yXSgpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXMoKTsKKyAgICB9CisKKyAgICBjb3B5KCkK
KyAgICB7CisgICAgICAgIHJldHVybiBuZXcgSXRlcmFibGVXZWFrU2V0KHRoaXMudG9KU09OKCkp
OworICAgIH0KKworICAgIHRvSlNPTigpCisgICAgeworICAgICAgICByZXR1cm4gQXJyYXkuZnJv
bSh0aGlzKTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBnZXQgX2ZpbmFsaXphdGlv
blJlZ2lzdHJ5KCkKKyAgICB7CisgICAgICAgIHJldHVybiBJdGVyYWJsZVdlYWtTZXQuX2ZpbmFs
aXphdGlvblJlZ2lzdHJ5ID8/PSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoZnVuY3Rpb24oaGVs
ZFZhbHVlKSB7CisgICAgICAgICAgICBoZWxkVmFsdWUud2Vha1RoaXMuZGVyZWYoKT8uX3dyYXBw
ZXJzLmRlbGV0ZShoZWxkVmFsdWUud3JhcHBlcik7CisgICAgICAgIH0pOworICAgIH0KK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0dyaWRPdmVybGF5Q29uZmlndXJhdGlvbkRpYWdub3N0aWNFdmVudFJlY29yZGVyLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvR3JpZE92ZXJsYXlD
b25maWd1cmF0aW9uRGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIuanMKaW5kZXggMTU2MzgyNDE2MmVh
MGNkZWU4YWJjNDJkZTBiZmU2NmNlZWMyZjJhNC4uMjJiNWUxNzFjOTZhNDgwMjg4Y2EzYTIwYWUz
ZTNkZGUyODFmM2M4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvR3JpZE92ZXJsYXlDb25maWd1cmF0aW9uRGlhZ25vc3RpY0V2ZW50
UmVjb3JkZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvR3JpZE92ZXJsYXlDb25maWd1cmF0aW9uRGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIu
anMKQEAgLTMyLDcgKzMyLDcgQEAgV0kuR3JpZE92ZXJsYXlDb25maWd1cmF0aW9uRGlhZ25vc3Rp
Y0V2ZW50UmVjb3JkZXIgPSBjbGFzcyBHcmlkT3ZlcmxheUNvbmZpZ3VyYXQKICAgICAgICAgdGhp
cy5faW5zcGVjdG9ySGFzRm9jdXMgPSB0cnVlOwogICAgICAgICB0aGlzLl9sYXN0VXNlckludGVy
YWN0aW9uVGltZXN0YW1wID0gdW5kZWZpbmVkOwogICAgICAgICB0aGlzLl9ldmVudFNhbXBsaW5n
VGltZXJJZGVudGlmaWVyID0gdW5kZWZpbmVkOwotICAgICAgICB0aGlzLl9ub2Rlc1Nob3dpbmdH
cmlkTGF5b3V0T3ZlcmxheSA9IG5ldyBTZXQ7CisgICAgICAgIHRoaXMuX25vZGVzU2hvd2luZ0dy
aWRMYXlvdXRPdmVybGF5ID0gbmV3IEl0ZXJhYmxlV2Vha1NldDsKICAgICB9CiAKICAgICAvLyBT
dGF0aWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01h
aW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApp
bmRleCBlNDA4ZDJkNjQwYjA2YTkyODAyOWQ0ZmJlZDgyOTc3OTMzZDZkMmRlLi42ZGU1ODBlYTk2
ZjRlNmNiY2JmMjVmYjI3ZjNhNjliNDg4OGNiYjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC0zMTAsNiArMzEwLDcgQEAKICAgICA8c2Ny
aXB0IHNyYz0iQmFzZS9QbGF0Zm9ybS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJh
c2UvRGVib3VuY2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9EZWJ1Z2dh
YmxlVHlwZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkJhc2UvSXRlcmFibGVXZWFr
U2V0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9NdWx0aW1hcC5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvT2JqZWN0LmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iQmFzZS9SZWZlcmVuY2VQYWdlLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbCBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAppbmRleCBjZDIxMzRhZjJmMTY0
ZGM3MTlhZDJjNDJkZjAwZDRiZWUwOTE3MWIxLi41ZjFlZDI1NGEzN2UyNDg5ZjY1MWNiOTI2ZTVi
YTIzYzBhODA2MjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9UZXN0Lmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
VGVzdC5odG1sCkBAIC0zOSw2ICszOSw3IEBACiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvUGxhdGZv
cm0uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL0RlYm91bmNlci5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvRGVidWdnYWJsZVR5cGUuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSJCYXNlL0l0ZXJhYmxlV2Vha1NldC5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IkJhc2UvTXVsdGltYXAuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJCYXNlL09iamVjdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvUmVm
ZXJlbmNlUGFnZS5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTQ1NWU2N2NjOGE0NmM4N2NiMjM2NzU4
Y2IwZTE0MmIyZTk0NjQyYy4uYWFlMmI2MzliZDdiNTFlOGZjOTRjNTgyM2YzOWRiODZmZTIyNzg3
YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTAyLTI0ICBEZXZpbiBSb3Vzc28gIDxkcm91
c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgYEl0ZXJhYmxlV2Vh
a1NldGAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NzE0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aW5zcGVjdG9yL3VuaXQtdGVzdHMvaXRlcmFibGV3ZWFrc2V0Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGluc3BlY3Rvci91bml0LXRlc3RzL2l0ZXJhYmxld2Vha3NldC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorCiAyMDIyLTAyLTI0ICBSb2JlcnQgSmVubmVyICA8SmVubmVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbIEJpZ1N1cisgRVdTIF0gd2ViZ2wvcGVuZGluZy9jb25mb3JtYW5jZS90ZXh0dXJl
cy9taXNjL3RleC1pbWFnZS12aWRlby1yZXBlYXRlZC5odG1sIGlzIGEgZmxha3kgdGltZW91dApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvaXRlcmFibGV3ZWFr
c2V0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2l0ZXJh
Ymxld2Vha3NldC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjA5ZjM1YWY0OGMzYzEyMzU5ZDlh
YTBlOWVkYTZhZjlmZmQ0NzM0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci91bml0LXRlc3RzL2l0ZXJhYmxld2Vha3NldC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4
NiBAQAorVGVzdGluZyBhbGwgbWV0aG9kcyBvZiBJdGVyYWJsZVdlYWtTZXQuCisKKworPT0gUnVu
bmluZyB0ZXN0IHN1aXRlOiBJdGVyYWJsZVdlYWtTZXQKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJ
dGVyYWJsZVdlYWtTZXQucHJvdG90eXBlLmNvbnN0cnVjdG9yLkVtcHR5CitbXQorCistLSBSdW5u
aW5nIHRlc3QgY2FzZTogSXRlcmFibGVXZWFrU2V0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5Ob25F
bXB0eQorW3sidmFsdWUiOjF9LHsidmFsdWUiOjJ9LHsidmFsdWUiOjN9XQorCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogSXRlcmFibGVXZWFrU2V0LnByb3RvdHlwZS5oYXMKK1t7InZhbHVlIjoxfSx7
InZhbHVlIjoyfSx7InZhbHVlIjozfV0KK1BBU1M6IGhhcyBzaG91bGQgcmV0dXJuIHRydWUgaWYg
YSBrZXkgZXhpc3RzLgorUEFTUzogaGFzIHNob3VsZCByZXR1cm4gdHJ1ZSBpZiBhIGtleSBleGlz
dHMgKG1vcmUgdGhhbiBvbmNlKS4KK1BBU1M6IGhhcyBzaG91bGQgcmV0dXJuIHRydWUgaWYgYSBr
ZXkgZXhpc3RzLgorUEFTUzogaGFzIHNob3VsZCByZXR1cm4gZmFsc2UgaWYgYSBrZXkgZG9lc24n
dCBleGlzdC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEl0ZXJhYmxlV2Vha1NldC5wcm90b3R5
cGUuYWRkCitbXQorW3sidmFsdWUiOjF9XQorW3sidmFsdWUiOjF9LHsidmFsdWUiOjJ9XQorW3si
dmFsdWUiOjF9LHsidmFsdWUiOjJ9LHsidmFsdWUiOjN9XQorW3sidmFsdWUiOjF9LHsidmFsdWUi
OjJ9LHsidmFsdWUiOjN9XQorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogSXRlcmFibGVXZWFrU2V0
LnByb3RvdHlwZS5kZWxldGUKK1t7InZhbHVlIjoxfSx7InZhbHVlIjoyfSx7InZhbHVlIjozfV0K
K1BBU1M6IGRlbGV0ZSBzaG91bGQgcmV0dXJuIHRydWUgZm9yIGEga25vd24ga2V5LgorW3sidmFs
dWUiOjJ9LHsidmFsdWUiOjN9XQorUEFTUzogZGVsZXRlIHNob3VsZCByZXR1cm4gdHJ1ZSBmb3Ig
YSBrbm93biBrZXkuCitbeyJ2YWx1ZSI6M31dCitQQVNTOiBkZWxldGUgc2hvdWxkIHJldHVybiBm
YWxzZSBmb3IgYW4gYWxyZWFkeSBkZWxldGVkIGtleS4KK1t7InZhbHVlIjozfV0KK1BBU1M6IGRl
bGV0ZSBzaG91bGQgcmV0dXJuIHRydWUgZm9yIGEga25vd24ga2V5LgorW10KK1BBU1M6IGRlbGV0
ZSBzaG91bGQgcmV0dXJuIGZhbHNlIGZvciBhbiB1bmtub3duIGtleS4KK1tdCisKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBJdGVyYWJsZVdlYWtTZXQucHJvdG90eXBlLnRha2UKK1t7InZhbHVlIjox
fSx7InZhbHVlIjoyfSx7InZhbHVlIjozfV0KK1BBU1M6IHRha2Ugc2hvdWxkIHJldHVybiB0aGUg
a2V5IGZvciBhIGtub3duIGtleS4KK1t7InZhbHVlIjoyfSx7InZhbHVlIjozfV0KK1BBU1M6IHRh
a2Ugc2hvdWxkIHJldHVybiB0aGUga2V5IGZvciBhIGtub3duIGtleS4KK1t7InZhbHVlIjozfV0K
K1BBU1M6IHRha2Ugc2hvdWxkIHJldHVybiB1bmRlZmluZWQgZm9yIGFuIGFscmVhZHkgZGVsZXRl
ZCBrZXkuCitbeyJ2YWx1ZSI6M31dCitQQVNTOiB0YWtlIHNob3VsZCByZXR1cm4gdGhlIGtleSBm
b3IgYSBrbm93biBrZXkuCitbXQorUEFTUzogdGFrZSBzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCBm
b3IgYW4gdW5rbm93biBrZXkuCitbXQorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogSXRlcmFibGVX
ZWFrU2V0LnByb3RvdHlwZS5jbGVhcgorW3sidmFsdWUiOjF9LHsidmFsdWUiOjJ9LHsidmFsdWUi
OjN9XQorW10KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEl0ZXJhYmxlV2Vha1NldC5wcm90b3R5
cGUua2V5cworW3sidmFsdWUiOjF9LHsidmFsdWUiOjJ9LHsidmFsdWUiOjN9XQorCistLSBSdW5u
aW5nIHRlc3QgY2FzZTogSXRlcmFibGVXZWFrU2V0LnByb3RvdHlwZS52YWx1ZXMKK1t7InZhbHVl
IjoxfSx7InZhbHVlIjoyfSx7InZhbHVlIjozfV0KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEl0
ZXJhYmxlV2Vha1NldC5wcm90b3R5cGUuY29weQorW3sidmFsdWUiOjF9LHsidmFsdWUiOjJ9LHsi
dmFsdWUiOjN9XQorUEFTUzogQ29weSBzaG91bGQgbm90IHJldHVybiB0aGUgc2FtZSBvYmplY3Qu
CitQQVNTOiBDb3B5IHNob3VsZCByZXR1cm4gYSBkZWVwIGNvcHkuCitQQVNTOiBNb2RpZnlpbmcg
dGhlIG9yaWdpbmFsIHNob3VsZCBub3QgbW9kaWZ5IHRoZSBjb3B5LgorCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogSXRlcmFibGVXZWFrU2V0LkRvZXNOb3RLZWVwT2JqZWN0c0FsaXZlCitFdmFsdWF0
aW5nIGBJdGVyYWJsZVdlYWtTZXRgIHNvdXJjZSBpbiB0aGUgaW5zcGVjdGVkIHBhZ2UuLi4KK1Rl
c3RpbmcgYEl0ZXJhYmxlV2Vha1NldGAgaW4gdGhlIGluc3BlY3RlZCBwYWdlLi4uCitbeyJ2YWx1
ZSI6MX0seyJ2YWx1ZSI6Mn0seyJ2YWx1ZSI6M31dCitQQVNTOiBoYXMgc2hvdWxkIHJldHVybiB0
cnVlIGZvciAneyJ2YWx1ZSI6MX0nIGFmdGVyIGNvbnN0cnVjdGlvbi4KK1BBU1M6IGhhcyBzaG91
bGQgcmV0dXJuIHRydWUgZm9yICd7InZhbHVlIjoyfScgYWZ0ZXIgY29uc3RydWN0aW9uLgorUEFT
UzogaGFzIHNob3VsZCByZXR1cm4gdHJ1ZSBmb3IgJ3sidmFsdWUiOjN9JyBhZnRlciBjb25zdHJ1
Y3Rpb24uCitbeyJ2YWx1ZSI6Mn0seyJ2YWx1ZSI6M31dCitQQVNTOiBTaG91bGQgbm90IGNvbnRh
aW4gJ3sidmFsdWUiOiAxfScgYWZ0ZXIgYG9uZSA9IG51bGxgLgorUEFTUzogaGFzIHNob3VsZCBy
ZXR1cm4gdHJ1ZSBmb3IgJ3sidmFsdWUiOjJ9JyBhZnRlciBgb25lID0gbnVsbGAuCitQQVNTOiBo
YXMgc2hvdWxkIHJldHVybiB0cnVlIGZvciAneyJ2YWx1ZSI6M30nIGFmdGVyIGBvbmUgPSBudWxs
YC4KK1t7InZhbHVlIjozfV0KK1BBU1M6IFNob3VsZCBub3QgY29udGFpbiAneyJ2YWx1ZSI6IDF9
JyBhZnRlciBgdHdvID0gbnVsbGAuCitQQVNTOiBTaG91bGQgbm90IGNvbnRhaW4gJ3sidmFsdWUi
OiAyfScgYWZ0ZXIgYHR3byA9IG51bGxgLgorUEFTUzogaGFzIHNob3VsZCByZXR1cm4gdHJ1ZSBm
b3IgJ3sidmFsdWUiOjN9JyBhZnRlciBgdHdvID0gbnVsbGAuCitbXQorUEFTUzogU2hvdWxkIG5v
dCBjb250YWluICd7InZhbHVlIjogMX0nIGFmdGVyIGB0aHJlZSA9IG51bGxgLgorUEFTUzogU2hv
dWxkIG5vdCBjb250YWluICd7InZhbHVlIjogMn0nIGFmdGVyIGB0aHJlZSA9IG51bGxgLgorUEFT
UzogU2hvdWxkIG5vdCBjb250YWluICd7InZhbHVlIjogM30nIGFmdGVyIGB0aHJlZSA9IG51bGxg
LgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9pdGVyYWJs
ZXdlYWtzZXQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2l0ZXJhYmxl
d2Vha3NldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkZmNjM2U3ZWIyOWVhY2YwYTA0YWMyZTA5OTJhMTNl
MmQzZTIzZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10
ZXN0cy9pdGVyYWJsZXdlYWtzZXQuaHRtbApAQCAtMCwwICsxLDI4MSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2djLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Cithc3luYyBmdW5jdGlv
biBjaGVja0RvZXNOb3RLZWVwT2JqZWN0c0FsaXZlKCkKK3sKKyAgICBsZXQgb25lID0gW3t2YWx1
ZTogMX1dOworICAgIGxldCB0d28gPSBbe3ZhbHVlOiAyfV07CisgICAgbGV0IHRocmVlID0gW3t2
YWx1ZTogM31dOworCisgICAgbGV0IGl0ZXJhYmxlV2Vha1NldCA9IG5ldyBJdGVyYWJsZVdlYWtT
ZXQoW29uZVswXSwgdHdvWzBdLCB0aHJlZVswXSwgdHdvWzBdXSk7CisKKyAgICBmdW5jdGlvbiBj
aGVjayhkZXNjcmlwdGlvbiwgaXRlbU9yVmFsdWUsIHByZXNlbnQpIHsKKyAgICAgICAgaWYgKHR5
cGVvZiBpdGVtT3JWYWx1ZSA9PT0gIm9iamVjdCIpCisgICAgICAgICAgICBUZXN0UGFnZS5kaXNw
YXRjaEV2ZW50VG9Gcm9udGVuZCgiVGVzdFBhZ2UtY2hlY2tEb2VzTm90S2VlcE9iamVjdHNBbGl2
ZS1sb2ciLCB7bWVzc2FnZTogYCR7aXRlcmFibGVXZWFrU2V0LmhhcyhpdGVtT3JWYWx1ZSkgPT09
IHByZXNlbnQgPyAiUEFTUyIgOiAiRkFJTCJ9OiBoYXMgc2hvdWxkIHJldHVybiAke3ByZXNlbnQg
PyAidHJ1ZSIgOiAiZmFsc2UifSBmb3IgJyR7SlNPTi5zdHJpbmdpZnkoaXRlbU9yVmFsdWUpfScg
YWZ0ZXIgJHtkZXNjcmlwdGlvbn0uYH0pOworCisgICAgICAgIGlmICh0eXBlb2YgaXRlbU9yVmFs
dWUgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICBsZXQgZm91bmQgPSBmYWxzZTsKKyAgICAg
ICAgICAgIGZvciAobGV0IGl0ZW0gb2YgaXRlcmFibGVXZWFrU2V0KSB7CisgICAgICAgICAgICAg
ICAgaWYgKGl0ZW0udmFsdWUgIT09IGl0ZW1PclZhbHVlKQorICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICAgICAgICAgIGlmIChmb3VuZCkgeworICAgICAgICAgICAgICAg
ICAgICBUZXN0UGFnZS5kaXNwYXRjaEV2ZW50VG9Gcm9udGVuZCgiVGVzdFBhZ2UtY2hlY2tEb2Vz
Tm90S2VlcE9iamVjdHNBbGl2ZS1sb2ciLCB7bWVzc2FnZTogYEZBSUw6IFNob3VsZCBub3QgZmlu
ZCAnJHtKU09OLnN0cmluZ2lmeShpdGVtT3JWYWx1ZSl9JyBtb3JlIHRoYW4gb25jZSBhZnRlciAk
e2Rlc2NyaXB0aW9ufS5gfSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgVGVzdFBhZ2UuZGlzcGF0Y2hFdmVudFRvRnJvbnRlbmQoIlRlc3RQ
YWdlLWNoZWNrRG9lc05vdEtlZXBPYmplY3RzQWxpdmUtbG9nIiwge21lc3NhZ2U6IGAke2ZvdW5k
ID09PSBwcmVzZW50ID8gIlBBU1MiIDogIkZBSUwifTogU2hvdWxkICR7cHJlc2VudCA/ICIiIDog
Im5vdCJ9IGNvbnRhaW4gJ3sidmFsdWUiOiAke2l0ZW1PclZhbHVlfX0nIGFmdGVyICR7ZGVzY3Jp
cHRpb259LmB9KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFRlc3RQYWdlLmRpc3BhdGNoRXZl
bnRUb0Zyb250ZW5kKCJUZXN0UGFnZS1jaGVja0RvZXNOb3RLZWVwT2JqZWN0c0FsaXZlLWxvZyIs
IHttZXNzYWdlOiBKU09OLnN0cmluZ2lmeShpdGVyYWJsZVdlYWtTZXQpfSk7CisgICAgY2hlY2so
ImNvbnN0cnVjdGlvbiIsIG9uZVswXSwgdHJ1ZSk7CisgICAgY2hlY2soImNvbnN0cnVjdGlvbiIs
IHR3b1swXSwgdHJ1ZSk7CisgICAgY2hlY2soImNvbnN0cnVjdGlvbiIsIHRocmVlWzBdLCB0cnVl
KTsKKworICAgIG51a2VBcnJheShvbmUpOworICAgIGF3YWl0IG5ldyBQcm9taXNlKHNldFRpbWVv
dXQpOworICAgIGdjKCk7CisgICAgYXdhaXQgbmV3IFByb21pc2Uoc2V0VGltZW91dCk7CisKKyAg
ICBUZXN0UGFnZS5kaXNwYXRjaEV2ZW50VG9Gcm9udGVuZCgiVGVzdFBhZ2UtY2hlY2tEb2VzTm90
S2VlcE9iamVjdHNBbGl2ZS1sb2ciLCB7bWVzc2FnZTogSlNPTi5zdHJpbmdpZnkoaXRlcmFibGVX
ZWFrU2V0KX0pOworICAgIGNoZWNrKCJgb25lID0gbnVsbGAiLCAxLCBmYWxzZSk7CisgICAgY2hl
Y2soImBvbmUgPSBudWxsYCIsIHR3b1swXSwgdHJ1ZSk7CisgICAgY2hlY2soImBvbmUgPSBudWxs
YCIsIHRocmVlWzBdLCB0cnVlKTsKKworICAgIG51a2VBcnJheSh0d28pOworICAgIGF3YWl0IG5l
dyBQcm9taXNlKHNldFRpbWVvdXQpOworICAgIGdjKCk7CisgICAgYXdhaXQgbmV3IFByb21pc2Uo
c2V0VGltZW91dCk7CisKKyAgICBUZXN0UGFnZS5kaXNwYXRjaEV2ZW50VG9Gcm9udGVuZCgiVGVz
dFBhZ2UtY2hlY2tEb2VzTm90S2VlcE9iamVjdHNBbGl2ZS1sb2ciLCB7bWVzc2FnZTogSlNPTi5z
dHJpbmdpZnkoaXRlcmFibGVXZWFrU2V0KX0pOworICAgIGNoZWNrKCJgdHdvID0gbnVsbGAiLCAx
LCBmYWxzZSk7CisgICAgY2hlY2soImB0d28gPSBudWxsYCIsIDIsIGZhbHNlKTsKKyAgICBjaGVj
aygiYHR3byA9IG51bGxgIiwgdGhyZWVbMF0sIHRydWUpOworCisgICAgbnVrZUFycmF5KHRocmVl
KTsKKyAgICBhd2FpdCBuZXcgUHJvbWlzZShzZXRUaW1lb3V0KTsKKyAgICBnYygpOworICAgIGF3
YWl0IG5ldyBQcm9taXNlKHNldFRpbWVvdXQpOworCisgICAgVGVzdFBhZ2UuZGlzcGF0Y2hFdmVu
dFRvRnJvbnRlbmQoIlRlc3RQYWdlLWNoZWNrRG9lc05vdEtlZXBPYmplY3RzQWxpdmUtbG9nIiwg
e21lc3NhZ2U6IEpTT04uc3RyaW5naWZ5KGl0ZXJhYmxlV2Vha1NldCl9KTsKKyAgICBjaGVjaygi
YHRocmVlID0gbnVsbGAiLCAxLCBmYWxzZSk7CisgICAgY2hlY2soImB0aHJlZSA9IG51bGxgIiwg
MiwgZmFsc2UpOworICAgIGNoZWNrKCJgdGhyZWUgPSBudWxsYCIsIDMsIGZhbHNlKTsKKworICAg
IFRlc3RQYWdlLmRpc3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJUZXN0UGFnZS1jaGVja0RvZXNOb3RL
ZWVwT2JqZWN0c0FsaXZlLWRvbmUiKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0
IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJJdGVyYWJsZVdlYWtTZXQi
KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkl0ZXJhYmxlV2Vh
a1NldC5wcm90b3R5cGUuY29uc3RydWN0b3IuRW1wdHkiLAorICAgICAgICBhc3luYyB0ZXN0KCkg
eworICAgICAgICAgICAgbGV0IGl0ZXJhYmxlV2Vha1NldCA9IG5ldyBJdGVyYWJsZVdlYWtTZXQ7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhpdGVyYWJsZVdlYWtTZXQpOworICAgICAg
ICB9LAorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAi
SXRlcmFibGVXZWFrU2V0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5Ob25FbXB0eSIsCisgICAgICAg
IGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgb25lID0ge3ZhbHVlOiAxfTsKKyAgICAg
ICAgICAgIGxldCB0d28gPSB7dmFsdWU6IDJ9OworICAgICAgICAgICAgbGV0IHRocmVlID0ge3Zh
bHVlOiAzfTsKKworICAgICAgICAgICAgbGV0IGl0ZXJhYmxlV2Vha1NldCA9IG5ldyBJdGVyYWJs
ZVdlYWtTZXQoW29uZSwgdHdvLCB0aHJlZSwgdHdvXSk7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZyhpdGVyYWJsZVdlYWtTZXQpOworICAgICAgICB9LAorICAgIH0pOworCisgICAgc3Vp
dGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSXRlcmFibGVXZWFrU2V0LnByb3RvdHlw
ZS5oYXMiLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IG9uZSA9IHt2
YWx1ZTogMX07CisgICAgICAgICAgICBsZXQgdHdvID0ge3ZhbHVlOiAyfTsKKyAgICAgICAgICAg
IGxldCB0aHJlZSA9IHt2YWx1ZTogM307CisgICAgICAgICAgICBsZXQgZm91ciA9IHt2YWx1ZTog
NH07CisKKyAgICAgICAgICAgIGxldCBpdGVyYWJsZVdlYWtTZXQgPSBuZXcgSXRlcmFibGVXZWFr
U2V0KFtvbmUsIHR3bywgdGhyZWUsIHR3b10pOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5s
b2coaXRlcmFibGVXZWFrU2V0KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VHJ1
ZShpdGVyYWJsZVdlYWtTZXQuaGFzKG9uZSksICJoYXMgc2hvdWxkIHJldHVybiB0cnVlIGlmIGEg
a2V5IGV4aXN0cy4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VHJ1ZShpdGVy
YWJsZVdlYWtTZXQuaGFzKHR3byksICJoYXMgc2hvdWxkIHJldHVybiB0cnVlIGlmIGEga2V5IGV4
aXN0cyAobW9yZSB0aGFuIG9uY2UpLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RUcnVlKGl0ZXJhYmxlV2Vha1NldC5oYXModGhyZWUpLCAiaGFzIHNob3VsZCByZXR1cm4gdHJ1
ZSBpZiBhIGtleSBleGlzdHMuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZh
bHNlKGl0ZXJhYmxlV2Vha1NldC5oYXMoZm91ciksICJoYXMgc2hvdWxkIHJldHVybiBmYWxzZSBp
ZiBhIGtleSBkb2Vzbid0IGV4aXN0LiIpOworICAgICAgICB9LAorICAgIH0pOworCisgICAgc3Vp
dGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSXRlcmFibGVXZWFrU2V0LnByb3RvdHlw
ZS5hZGQiLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IG9uZSA9IHt2
YWx1ZTogMX07CisgICAgICAgICAgICBsZXQgdHdvID0ge3ZhbHVlOiAyfTsKKyAgICAgICAgICAg
IGxldCB0aHJlZSA9IHt2YWx1ZTogM307CisKKyAgICAgICAgICAgIGxldCBpdGVyYWJsZVdlYWtT
ZXQgPSBuZXcgSXRlcmFibGVXZWFrU2V0OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
aXRlcmFibGVXZWFrU2V0KTsKKworICAgICAgICAgICAgaXRlcmFibGVXZWFrU2V0LmFkZChvbmUp
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coaXRlcmFibGVXZWFrU2V0KTsKKworICAg
ICAgICAgICAgaXRlcmFibGVXZWFrU2V0LmFkZCh0d28pOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coaXRlcmFibGVXZWFrU2V0KTsKKworICAgICAgICAgICAgaXRlcmFibGVXZWFrU2V0
LmFkZCh0aHJlZSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhpdGVyYWJsZVdlYWtT
ZXQpOworCisgICAgICAgICAgICBpdGVyYWJsZVdlYWtTZXQuYWRkKHR3byk7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZyhpdGVyYWJsZVdlYWtTZXQpOworICAgICAgICB9LAorICAgIH0p
OworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSXRlcmFibGVXZWFr
U2V0LnByb3RvdHlwZS5kZWxldGUiLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAg
ICAgbGV0IG9uZSA9IHt2YWx1ZTogMX07CisgICAgICAgICAgICBsZXQgdHdvID0ge3ZhbHVlOiAy
fTsKKyAgICAgICAgICAgIGxldCB0aHJlZSA9IHt2YWx1ZTogM307CisgICAgICAgICAgICBsZXQg
Zm91ciA9IHt2YWx1ZTogNH07CisKKyAgICAgICAgICAgIGxldCBpdGVyYWJsZVdlYWtTZXQgPSBu
ZXcgSXRlcmFibGVXZWFrU2V0KFtvbmUsIHR3bywgdGhyZWUsIHR3b10pOworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coaXRlcmFibGVXZWFrU2V0KTsKKworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RUcnVlKGl0ZXJhYmxlV2Vha1NldC5kZWxldGUob25lKSwgImRlbGV0ZSBz
aG91bGQgcmV0dXJuIHRydWUgZm9yIGEga25vd24ga2V5LiIpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coaXRlcmFibGVXZWFrU2V0KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RUcnVlKGl0ZXJhYmxlV2Vha1NldC5kZWxldGUodHdvKSwgImRlbGV0ZSBzaG91bGQg
cmV0dXJuIHRydWUgZm9yIGEga25vd24ga2V5LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coaXRlcmFibGVXZWFrU2V0KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RGYWxzZShpdGVyYWJsZVdlYWtTZXQuZGVsZXRlKHR3byksICJkZWxldGUgc2hvdWxkIHJldHVy
biBmYWxzZSBmb3IgYW4gYWxyZWFkeSBkZWxldGVkIGtleS4iKTsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKGl0ZXJhYmxlV2Vha1NldCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0VHJ1ZShpdGVyYWJsZVdlYWtTZXQuZGVsZXRlKHRocmVlKSwgImRlbGV0ZSBzaG91
bGQgcmV0dXJuIHRydWUgZm9yIGEga25vd24ga2V5LiIpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coaXRlcmFibGVXZWFrU2V0KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RGYWxzZShpdGVyYWJsZVdlYWtTZXQuZGVsZXRlKGZvdXIpLCAiZGVsZXRlIHNob3VsZCBy
ZXR1cm4gZmFsc2UgZm9yIGFuIHVua25vd24ga2V5LiIpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coaXRlcmFibGVXZWFrU2V0KTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1
aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkl0ZXJhYmxlV2Vha1NldC5wcm90b3R5
cGUudGFrZSIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgb25lID0g
e3ZhbHVlOiAxfTsKKyAgICAgICAgICAgIGxldCB0d28gPSB7dmFsdWU6IDJ9OworICAgICAgICAg
ICAgbGV0IHRocmVlID0ge3ZhbHVlOiAzfTsKKyAgICAgICAgICAgIGxldCBmb3VyID0ge3ZhbHVl
OiA0fTsKKworICAgICAgICAgICAgbGV0IGl0ZXJhYmxlV2Vha1NldCA9IG5ldyBJdGVyYWJsZVdl
YWtTZXQoW29uZSwgdHdvLCB0aHJlZSwgdHdvXSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmxvZyhpdGVyYWJsZVdlYWtTZXQpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dEVxdWFsKGl0ZXJhYmxlV2Vha1NldC50YWtlKG9uZSk/LnZhbHVlLCAxLCAidGFrZSBzaG91bGQg
cmV0dXJuIHRoZSBrZXkgZm9yIGEga25vd24ga2V5LiIpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coaXRlcmFibGVXZWFrU2V0KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RFcXVhbChpdGVyYWJsZVdlYWtTZXQudGFrZSh0d28pPy52YWx1ZSwgMiwgInRha2Ugc2hv
dWxkIHJldHVybiB0aGUga2V5IGZvciBhIGtub3duIGtleS4iKTsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKGl0ZXJhYmxlV2Vha1NldCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0RXF1YWwoaXRlcmFibGVXZWFrU2V0LnRha2UodHdvKSwgdW5kZWZpbmVkLCAidGFr
ZSBzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCBmb3IgYW4gYWxyZWFkeSBkZWxldGVkIGtleS4iKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGl0ZXJhYmxlV2Vha1NldCk7CisKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoaXRlcmFibGVXZWFrU2V0LnRha2UodGhy
ZWUpPy52YWx1ZSwgMywgInRha2Ugc2hvdWxkIHJldHVybiB0aGUga2V5IGZvciBhIGtub3duIGtl
eS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGl0ZXJhYmxlV2Vha1NldCk7CisK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoaXRlcmFibGVXZWFrU2V0LnRh
a2UoZm91ciksIHVuZGVmaW5lZCwgInRha2Ugc2hvdWxkIHJldHVybiB1bmRlZmluZWQgZm9yIGFu
IHVua25vd24ga2V5LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coaXRlcmFibGVX
ZWFrU2V0KTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
KyAgICAgICAgbmFtZTogIkl0ZXJhYmxlV2Vha1NldC5wcm90b3R5cGUuY2xlYXIiLAorICAgICAg
ICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IG9uZSA9IHt2YWx1ZTogMX07CisgICAg
ICAgICAgICBsZXQgdHdvID0ge3ZhbHVlOiAyfTsKKyAgICAgICAgICAgIGxldCB0aHJlZSA9IHt2
YWx1ZTogM307CisKKyAgICAgICAgICAgIGxldCBpdGVyYWJsZVdlYWtTZXQgPSBuZXcgSXRlcmFi
bGVXZWFrU2V0KFtvbmUsIHR3bywgdGhyZWUsIHR3b10pOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coaXRlcmFibGVXZWFrU2V0KTsKKworICAgICAgICAgICAgaXRlcmFibGVXZWFrU2V0
LmNsZWFyKCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhpdGVyYWJsZVdlYWtTZXQp
OworICAgICAgICB9LAorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAg
ICBuYW1lOiAiSXRlcmFibGVXZWFrU2V0LnByb3RvdHlwZS5rZXlzIiwKKyAgICAgICAgYXN5bmMg
dGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBvbmUgPSB7dmFsdWU6IDF9OworICAgICAgICAgICAg
bGV0IHR3byA9IHt2YWx1ZTogMn07CisgICAgICAgICAgICBsZXQgdGhyZWUgPSB7dmFsdWU6IDN9
OworCisgICAgICAgICAgICBsZXQgaXRlcmFibGVXZWFrU2V0ID0gbmV3IEl0ZXJhYmxlV2Vha1Nl
dChbb25lLCB0d28sIHRocmVlLCB0d29dKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KEFycmF5LmZyb20oaXRlcmFibGVXZWFrU2V0LmtleXMoKSkpOworICAgICAgICB9LAorICAgIH0p
OworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSXRlcmFibGVXZWFr
U2V0LnByb3RvdHlwZS52YWx1ZXMiLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAg
ICAgbGV0IG9uZSA9IHt2YWx1ZTogMX07CisgICAgICAgICAgICBsZXQgdHdvID0ge3ZhbHVlOiAy
fTsKKyAgICAgICAgICAgIGxldCB0aHJlZSA9IHt2YWx1ZTogM307CisKKyAgICAgICAgICAgIGxl
dCBpdGVyYWJsZVdlYWtTZXQgPSBuZXcgSXRlcmFibGVXZWFrU2V0KFtvbmUsIHR3bywgdGhyZWUs
IHR3b10pOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coQXJyYXkuZnJvbShpdGVyYWJs
ZVdlYWtTZXQudmFsdWVzKCkpKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLmFk
ZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkl0ZXJhYmxlV2Vha1NldC5wcm90b3R5cGUuY29w
eSIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgb25lID0ge3ZhbHVl
OiAxfTsKKyAgICAgICAgICAgIGxldCB0d28gPSB7dmFsdWU6IDJ9OworICAgICAgICAgICAgbGV0
IHRocmVlID0ge3ZhbHVlOiAzfTsKKyAgICAgICAgICAgIGxldCBmb3VyID0ge3ZhbHVlOiA0fTsK
KworICAgICAgICAgICAgbGV0IGl0ZXJhYmxlV2Vha1NldCA9IG5ldyBJdGVyYWJsZVdlYWtTZXQo
W29uZSwgdHdvLCB0aHJlZSwgdHdvXSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhp
dGVyYWJsZVdlYWtTZXQpOworCisgICAgICAgICAgICBsZXQgY29weSA9IGl0ZXJhYmxlV2Vha1Nl
dC5jb3B5KCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdE5vdEVxdWFsKGl0ZXJh
YmxlV2Vha1NldCwgY29weSwgIkNvcHkgc2hvdWxkIG5vdCByZXR1cm4gdGhlIHNhbWUgb2JqZWN0
LiIpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKEpTT04uc3RyaW5naWZ5
KGl0ZXJhYmxlV2Vha1NldCksIEpTT04uc3RyaW5naWZ5KGNvcHkpLCAiQ29weSBzaG91bGQgcmV0
dXJuIGEgZGVlcCBjb3B5LiIpOworCisgICAgICAgICAgICBpdGVyYWJsZVdlYWtTZXQuYWRkKGZv
dXIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3ROb3RFcXVhbChKU09OLnN0cmlu
Z2lmeShpdGVyYWJsZVdlYWtTZXQpLCBKU09OLnN0cmluZ2lmeShjb3B5KSwgIk1vZGlmeWluZyB0
aGUgb3JpZ2luYWwgc2hvdWxkIG5vdCBtb2RpZnkgdGhlIGNvcHkuIik7CisgICAgICAgIH0sCisg
ICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJdGVyYWJs
ZVdlYWtTZXQuRG9lc05vdEtlZXBPYmplY3RzQWxpdmUiLAorICAgICAgICBhc3luYyB0ZXN0KCkg
eworICAgICAgICAgICAgLy8gU2VuZCBgSXRlcmFibGVXZWFrU2V0YCB0byB0aGUgcGFnZSBzbyB0
aGF0IGBHQ0NvbnRyb2xsZXJgIGNhbiBiZSB1c2VkLgorICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coIkV2YWx1YXRpbmcgYEl0ZXJhYmxlV2Vha1NldGAgc291cmNlIGluIHRoZSBpbnNwZWN0
ZWQgcGFnZS4uLiIpOworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUlu
UGFnZShTdHJpbmcoSXRlcmFibGVXZWFrU2V0KSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkRXZlbnRMaXN0ZW5lcigiVGVzdFBhZ2UtY2hlY2tEb2VzTm90S2VlcE9iamVjdHNBbGl2
ZS1sb2ciLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhl
dmVudC5kYXRhLm1lc3NhZ2UpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKCJUZXN0aW5nIGBJdGVyYWJsZVdlYWtTZXRgIGluIHRoZSBpbnNwZWN0ZWQg
cGFnZS4uLiIpOworICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXdhaXRFdmVudCgiVGVzdFBhZ2UtY2hlY2tEb2VzTm90S2VlcE9i
amVjdHNBbGl2ZS1kb25lIiksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0
ZUluUGFnZShgY2hlY2tEb2VzTm90S2VlcE9iamVjdHNBbGl2ZSgpYCksCisgICAgICAgICAgICBd
KTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlz
aCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cisg
ICAgPHA+VGVzdGluZyBhbGwgbWV0aG9kcyBvZiBJdGVyYWJsZVdlYWtTZXQuPC9wPgorPC9ib2R5
PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="480427"
          type_id="1"
          status="+"
          setter="pangle"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453367</attachid>
            <date>2022-02-27 22:28:11 -0800</date>
            <delta_ts>2022-02-28 13:02:11 -0800</delta_ts>
            <desc>[fast-cq] Patch</desc>
            <filename>237141.diff</filename>
            <type>text/plain</type>
            <size>24589</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGRjNjEyYmI2Njk3NGFlNTVhOGIzZjUwNjAyOGVl
MTQ1MzY5OWQzZDMuLmM3YTQyOWJjMThmYjI4NGNmMjM0NDNmZTQwZDkzYTEzYzkzODM1NmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIyLTAyLTI0ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBh
ZGQgYEl0ZXJhYmxlV2Vha1NldGAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNzE0MQorCisgICAgICAgIFJldmlld2VkIGJ5IFBhdHJpY2sgQW5nbGUu
CisKKyAgICAgICAgVGhpcyBhbGxvd3MgY2xpZW50cyB0byBoYXZlIGEgd2F5IHRvIGhhdmUgYW4g
aXRlcmFibGUgY29sbGVjdGlvbiB0aGF0IGRvZXNuJ3Qga2VlcCB0aGUKKyAgICAgICAgb2JqZWN0
cyBpbiB0aGUgY29sbGVjdGlvbiBhbGl2ZS4gV2UgY2Fubm90IGp1c3QgdXNlIGBXZWFrU2V0YCBh
cyBpdCdzIG5vdCBpdGVyYWJsZSAodGhlCisgICAgICAgIGZvcm1lcikgb3IgYEFycmF5YC9gU2V0
YCBhcyBpdCBrZWVwcyB0aGUgb2JqZWN0cyBhbGl2ZSAodGhlIGxhdHRlcikuCisKKyAgICAgICAg
YEl0ZXJhYmxlV2Vha1NldGAgaXMgYSBjb21iaW5hdGlvbiBvZjoKKyAgICAgICAgLSBhIGBTZXRg
IG9mIGBXZWFrUmVmYCBmb3IgZWFjaCBvYmplY3QsIHdoaWNoIGdpdmVzIHVzIGl0ZXJhYmlsaXR5
IHdpdGggb3JkZXIgcHJlc2VydmVkCisgICAgICAgIC0gYSBgV2Vha01hcGAgb2YgZWFjaCBvYmpl
Y3QgbWFwcGluZyB0byB0aGUgd3JhcHBlciBgV2Vha1JlZmAgaW4gdGhlIGBTZXRgIChzZWUgYmVs
b3cpCisgICAgICAgIC0gYSBgRmluYWxpemF0aW9uUmVnaXN0cnlgIHRvIHJlbW92ZSB0aGUgd3Jh
cHBlciBgV2Vha1JlZmAgd2hlbiB0aGUgb2JqZWN0IGlzIGRlc3Ryb3llZAorCisgICAgICAgICog
VXNlckludGVyZmFjZS9CYXNlL0l0ZXJhYmxlV2Vha1NldC5qczogQWRkZWQuCisgICAgICAgIChJ
dGVyYWJsZVdlYWtTZXQpOgorICAgICAgICAoSXRlcmFibGVXZWFrU2V0LnByb3RvdHlwZS5nZXQg
c2l6ZSk6CisgICAgICAgIChJdGVyYWJsZVdlYWtTZXQucHJvdG90eXBlLmhhcyk6CisgICAgICAg
IChJdGVyYWJsZVdlYWtTZXQucHJvdG90eXBlLmFkZCk6CisgICAgICAgIChJdGVyYWJsZVdlYWtT
ZXQucHJvdG90eXBlLmRlbGV0ZSk6CisgICAgICAgIChJdGVyYWJsZVdlYWtTZXQucHJvdG90eXBl
LnRha2UpOgorICAgICAgICAoSXRlcmFibGVXZWFrU2V0LnByb3RvdHlwZS5jbGVhcik6CisgICAg
ICAgIChJdGVyYWJsZVdlYWtTZXQucHJvdG90eXBlLmtleXMpOgorICAgICAgICAoSXRlcmFibGVX
ZWFrU2V0LnByb3RvdHlwZS52YWx1ZXMpOgorICAgICAgICAoSXRlcmFibGVXZWFrU2V0LnByb3Rv
dHlwZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoSXRlcmFibGVXZWFrU2V0LnByb3RvdHlw
ZS5jb3B5KToKKyAgICAgICAgKEl0ZXJhYmxlV2Vha1NldC5wcm90b3R5cGUudG9KU09OKToKKyAg
ICAgICAgKEl0ZXJhYmxlV2Vha1NldC5wcm90b3R5cGUuZ2V0IF9maW5hbGl6YXRpb25SZWdpc3Ry
eSk6CisgICAgICAgIFdlIGNvdWxkIGp1c3QgaGF2ZSBhIGBTZXRgL2BBcnJheWAgb2YgYFdlYWtS
ZWZgLCBidXQgdGhhdCB3b3VsZCByZXF1aXJlIGl0ZXJhdGluZyB0aGUgZW50aXJlCisgICAgICAg
IGFycmF5IHRvIGZpbmQgdGhlIGBXZWFrUmVmYCB0aGF0IG1hdGNoZXMgdGhlIGdpdmVuIG9iamVj
dCwgd2hpY2ggaXMgbGVzcyBlZmZpY2llbnQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL0dyaWRPdmVybGF5Q29uZmlndXJhdGlvbkRpYWdub3N0aWNFdmVudFJlY29yZGVy
LmpzOgorICAgICAgICAoV0kuR3JpZE92ZXJsYXlDb25maWd1cmF0aW9uRGlhZ25vc3RpY0V2ZW50
UmVjb3JkZXIpOgorICAgICAgICBEb24ndCBrZWVwIGBXSS5ET01Ob2RlYCB0aGF0IGFyZSBgbGF5
b3V0T3ZlcmxheVNob3dpbmdgIGFsaXZlIGluIG9yZGVyIHRvIHJlY29yZCBkaWFnbm9zdGljcy4K
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVGVzdC5odG1sOgorCiAyMDIyLTAyLTI0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBtZXJnZSBXSS5PdmVybGF5TWFuYWdl
ciBpbnRvIFdJLkRPTU5vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0Jhc2UvSXRlcmFibGVXZWFrU2V0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQmFzZS9JdGVyYWJsZVdlYWtTZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjJiNGZk
Njc1ZDFmNWE0MDY2ZjVhYzI1MWE5ZTI4YjUwNDYyZmY4OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvSXRlcmFibGVXZWFrU2V0Lmpz
CkBAIC0wLDAgKzEsMTQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworY2xhc3MgSXRlcmFibGVXZWFrU2V0Cit7
CisgICAgY29uc3RydWN0b3IoaXRlbXMgPSBbXSkKKyAgICB7CisgICAgICAgIHRoaXMuX3dyYXBw
ZXJzID0gbmV3IFNldDsKKyAgICAgICAgdGhpcy5fd3JhcHBlckZvckl0ZW0gPSBuZXcgV2Vha01h
cDsKKworICAgICAgICBmb3IgKGxldCBpdGVtIG9mIGl0ZW1zKQorICAgICAgICAgICAgdGhpcy5h
ZGQoaXRlbSk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgc2l6ZSgpCisgICAg
eworICAgICAgICBsZXQgc2l6ZSA9IDA7CisgICAgICAgIGZvciAobGV0IHdyYXBwZXIgb2YgdGhp
cy5fd3JhcHBlcnMpIHsKKyAgICAgICAgICAgIGlmICh3cmFwcGVyLmRlcmVmKCkpCisgICAgICAg
ICAgICAgICAgKytzaXplOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzaXplOworICAgIH0K
KworICAgIGhhcyhpdGVtKQorICAgIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuX3dyYXBw
ZXJGb3JJdGVtLmhhcyhpdGVtKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoQXJyYXkuZnJvbSh0
aGlzLl93cmFwcGVycykuc29tZSgod3JhcHBlcikgPT4gd3JhcHBlci5kZXJlZigpID09PSBpdGVt
KSA9PT0gcmVzdWx0LCB0aGlzLCBpdGVtKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKKyAgICBhZGQoaXRlbSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBp
dGVtID09PSAib2JqZWN0IiwgaXRlbSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGl0ZW0gIT09
IG51bGwsIGl0ZW0pOworCisgICAgICAgIGlmICh0aGlzLmhhcyhpdGVtKSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBsZXQgd3JhcHBlciA9IG5ldyBXZWFrUmVmKGl0ZW0pOworICAg
ICAgICB0aGlzLl93cmFwcGVycy5hZGQod3JhcHBlcik7CisgICAgICAgIHRoaXMuX3dyYXBwZXJG
b3JJdGVtLnNldChpdGVtLCB3cmFwcGVyKTsKKyAgICAgICAgdGhpcy5fZmluYWxpemF0aW9uUmVn
aXN0cnkucmVnaXN0ZXIoaXRlbSwge3dlYWtUaGlzOiBuZXcgV2Vha1JlZih0aGlzKSwgd3JhcHBl
cn0sIHdyYXBwZXIpOworICAgIH0KKworICAgIGRlbGV0ZShpdGVtKQorICAgIHsKKyAgICAgICAg
cmV0dXJuICEhdGhpcy50YWtlKGl0ZW0pOworICAgIH0KKworICAgIHRha2UoaXRlbSkKKyAgICB7
CisgICAgICAgIGxldCB3cmFwcGVyID0gdGhpcy5fd3JhcHBlckZvckl0ZW0uZ2V0KGl0ZW0pOwor
ICAgICAgICBpZiAoIXdyYXBwZXIpCisgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworCisg
ICAgICAgIGxldCBpdGVtRGVsZXRlZCA9IHRoaXMuX3dyYXBwZXJGb3JJdGVtLmRlbGV0ZShpdGVt
KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoaXRlbURlbGV0ZWQsIHRoaXMsIGl0ZW0pOworCisg
ICAgICAgIGxldCB3cmFwcGVyRGVsZXRlZCA9IHRoaXMuX3dyYXBwZXJzLmRlbGV0ZSh3cmFwcGVy
KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQod3JhcHBlckRlbGV0ZWQsIHRoaXMsIGl0ZW0pOwor
CisgICAgICAgIHRoaXMuX2ZpbmFsaXphdGlvblJlZ2lzdHJ5LnVucmVnaXN0ZXIod3JhcHBlcik7
CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQod3JhcHBlci5kZXJlZigpID09PSBpdGVtLCB0aGlz
LCBpdGVtKTsKKyAgICAgICAgcmV0dXJuIGl0ZW07CisgICAgfQorCisgICAgY2xlYXIoKQorICAg
IHsKKyAgICAgICAgZm9yIChsZXQgd3JhcHBlciBvZiB0aGlzLl93cmFwcGVycykgeworICAgICAg
ICAgICAgdGhpcy5fd3JhcHBlckZvckl0ZW0uZGVsZXRlKHdyYXBwZXIpOworICAgICAgICAgICAg
dGhpcy5fZmluYWxpemF0aW9uUmVnaXN0cnkudW5yZWdpc3Rlcih3cmFwcGVyKTsKKyAgICAgICAg
fQorCisgICAgICAgIHRoaXMuX3dyYXBwZXJzLmNsZWFyKCk7CisgICAgfQorCisgICAga2V5cygp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXMoKTsKKyAgICB9CisKKyAgICAqdmFs
dWVzKCkKKyAgICB7CisgICAgICAgIGZvciAobGV0IHdyYXBwZXIgb2YgdGhpcy5fd3JhcHBlcnMp
IHsKKyAgICAgICAgICAgIGxldCBpdGVtID0gd3JhcHBlci5kZXJlZigpOworICAgICAgICAgICAg
Y29uc29sZS5hc3NlcnQoIWl0ZW0gPT09ICF0aGlzLl93cmFwcGVyRm9ySXRlbS5oYXMoaXRlbSks
IHRoaXMsIGl0ZW0pOworICAgICAgICAgICAgaWYgKGl0ZW0pCisgICAgICAgICAgICAgICAgeWll
bGQgaXRlbTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLnZhbHVlcygpOworICAgIH0KKworICAgIGNvcHkoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBJdGVyYWJsZVdlYWtTZXQodGhpcy50b0pTT04oKSk7
CisgICAgfQorCisgICAgdG9KU09OKCkKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheS5mcm9t
KHRoaXMpOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIGdldCBfZmluYWxpemF0aW9u
UmVnaXN0cnkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEl0ZXJhYmxlV2Vha1NldC5fZmluYWxp
emF0aW9uUmVnaXN0cnkgPz89IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShmdW5jdGlvbihoZWxk
VmFsdWUpIHsKKyAgICAgICAgICAgIGhlbGRWYWx1ZS53ZWFrVGhpcy5kZXJlZigpPy5fd3JhcHBl
cnMuZGVsZXRlKGhlbGRWYWx1ZS53cmFwcGVyKTsKKyAgICAgICAgfSk7CisgICAgfQorfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
R3JpZE92ZXJsYXlDb25maWd1cmF0aW9uRGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9HcmlkT3ZlcmxheUNv
bmZpZ3VyYXRpb25EaWFnbm9zdGljRXZlbnRSZWNvcmRlci5qcwppbmRleCAxNTYzODI0MTYyZWEw
Y2RlZThhYmM0MmRlMGJmZTY2Y2VlYzJmMmE0Li4yMmI1ZTE3MWM5NmE0ODAyODhjYTNhMjBhZTNl
M2RkZTI4MWYzYzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9HcmlkT3ZlcmxheUNvbmZpZ3VyYXRpb25EaWFnbm9zdGljRXZlbnRS
ZWNvcmRlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9HcmlkT3ZlcmxheUNvbmZpZ3VyYXRpb25EaWFnbm9zdGljRXZlbnRSZWNvcmRlci5q
cwpAQCAtMzIsNyArMzIsNyBAQCBXSS5HcmlkT3ZlcmxheUNvbmZpZ3VyYXRpb25EaWFnbm9zdGlj
RXZlbnRSZWNvcmRlciA9IGNsYXNzIEdyaWRPdmVybGF5Q29uZmlndXJhdAogICAgICAgICB0aGlz
Ll9pbnNwZWN0b3JIYXNGb2N1cyA9IHRydWU7CiAgICAgICAgIHRoaXMuX2xhc3RVc2VySW50ZXJh
Y3Rpb25UaW1lc3RhbXAgPSB1bmRlZmluZWQ7CiAgICAgICAgIHRoaXMuX2V2ZW50U2FtcGxpbmdU
aW1lcklkZW50aWZpZXIgPSB1bmRlZmluZWQ7Ci0gICAgICAgIHRoaXMuX25vZGVzU2hvd2luZ0dy
aWRMYXlvdXRPdmVybGF5ID0gbmV3IFNldDsKKyAgICAgICAgdGhpcy5fbm9kZXNTaG93aW5nR3Jp
ZExheW91dE92ZXJsYXkgPSBuZXcgSXRlcmFibGVXZWFrU2V0OwogICAgIH0KIAogICAgIC8vIFN0
YXRpYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFp
bi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmlu
ZGV4IGU0MDhkMmQ2NDBiMDZhOTI4MDI5ZDRmYmVkODI5Nzc5MzNkNmQyZGUuLjZkZTU4MGVhOTZm
NGU2Y2JjYmYyNWZiMjdmM2E2OWI0ODg4Y2JiNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTMxMCw2ICszMTAsNyBAQAogICAgIDxzY3Jp
cHQgc3JjPSJCYXNlL1BsYXRmb3JtLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFz
ZS9EZWJvdW5jZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL0RlYnVnZ2Fi
bGVUeXBlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQmFzZS9JdGVyYWJsZVdlYWtT
ZXQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL011bHRpbWFwLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9PYmplY3QuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJCYXNlL1JlZmVyZW5jZVBhZ2UuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCmluZGV4IGNkMjEzNGFmMmYxNjRk
YzcxOWFkMmM0MmRmMDBkNGJlZTA5MTcxYjEuLjVmMWVkMjU0YTM3ZTI0ODlmNjUxY2I5MjZlNWJh
MjNjMGE4MDYyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Rlc3QuaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9U
ZXN0Lmh0bWwKQEAgLTM5LDYgKzM5LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iQmFzZS9QbGF0Zm9y
bS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvRGVib3VuY2VyLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9EZWJ1Z2dhYmxlVHlwZS5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9IkJhc2UvSXRlcmFibGVXZWFrU2V0LmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iQmFzZS9NdWx0aW1hcC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IkJhc2UvT2JqZWN0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9SZWZl
cmVuY2VQYWdlLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5NDU1ZTY3Y2M4YTQ2Yzg3Y2IyMzY3NThj
YjBlMTQyYjJlOTQ2NDJjLi5hYWUyYjYzOWJkN2I1MWU4ZmM5NGM1ODIzZjM5ZGI4NmZlMjI3ODdh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDItMjQgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBgSXRlcmFibGVXZWFr
U2V0YAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3
MTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGF0cmljayBBbmdsZS4KKworICAgICAgICAqIGlu
c3BlY3Rvci91bml0LXRlc3RzL2l0ZXJhYmxld2Vha3NldC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBpbnNwZWN0b3IvdW5pdC10ZXN0cy9pdGVyYWJsZXdlYWtzZXQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKwogMjAyMi0wMi0yNCAgUm9iZXJ0IEplbm5lciAgPEplbm5lckBhcHBsZS5jb20+CiAKICAg
ICAgICAgWyBCaWdTdXIrIEVXUyBdIHdlYmdsL3BlbmRpbmcvY29uZm9ybWFuY2UvdGV4dHVyZXMv
bWlzYy90ZXgtaW1hZ2UtdmlkZW8tcmVwZWF0ZWQuaHRtbCBpcyBhIGZsYWt5IHRpbWVvdXQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2l0ZXJhYmxld2Vha3Nl
dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9pdGVyYWJs
ZXdlYWtzZXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwOWYzNWFmNDhjM2MxMjM1OWQ5YWEw
ZTllZGE2YWY5ZmZkNDczNDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvdW5pdC10ZXN0cy9pdGVyYWJsZXdlYWtzZXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsODYg
QEAKK1Rlc3RpbmcgYWxsIG1ldGhvZHMgb2YgSXRlcmFibGVXZWFrU2V0LgorCisKKz09IFJ1bm5p
bmcgdGVzdCBzdWl0ZTogSXRlcmFibGVXZWFrU2V0CistLSBSdW5uaW5nIHRlc3QgY2FzZTogSXRl
cmFibGVXZWFrU2V0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5FbXB0eQorW10KKworLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IEl0ZXJhYmxlV2Vha1NldC5wcm90b3R5cGUuY29uc3RydWN0b3IuTm9uRW1w
dHkKK1t7InZhbHVlIjoxfSx7InZhbHVlIjoyfSx7InZhbHVlIjozfV0KKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IEl0ZXJhYmxlV2Vha1NldC5wcm90b3R5cGUuaGFzCitbeyJ2YWx1ZSI6MX0seyJ2
YWx1ZSI6Mn0seyJ2YWx1ZSI6M31dCitQQVNTOiAnaGFzJyBzaG91bGQgcmV0dXJuIHRydWUgaWYg
YSBrZXkgZXhpc3RzLgorUEFTUzogJ2hhcycgc2hvdWxkIHJldHVybiB0cnVlIGlmIGEga2V5IGV4
aXN0cyAobW9yZSB0aGFuIG9uY2UpLgorUEFTUzogJ2hhcycgc2hvdWxkIHJldHVybiB0cnVlIGlm
IGEga2V5IGV4aXN0cy4KK1BBU1M6ICdoYXMnIHNob3VsZCByZXR1cm4gZmFsc2UgaWYgYSBrZXkg
ZG9lc24ndCBleGlzdC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEl0ZXJhYmxlV2Vha1NldC5w
cm90b3R5cGUuYWRkCitbXQorW3sidmFsdWUiOjF9XQorW3sidmFsdWUiOjF9LHsidmFsdWUiOjJ9
XQorW3sidmFsdWUiOjF9LHsidmFsdWUiOjJ9LHsidmFsdWUiOjN9XQorW3sidmFsdWUiOjF9LHsi
dmFsdWUiOjJ9LHsidmFsdWUiOjN9XQorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogSXRlcmFibGVX
ZWFrU2V0LnByb3RvdHlwZS5kZWxldGUKK1t7InZhbHVlIjoxfSx7InZhbHVlIjoyfSx7InZhbHVl
IjozfV0KK1BBU1M6ICdkZWxldGUnIHNob3VsZCByZXR1cm4gdHJ1ZSBmb3IgYSBrbm93biBrZXku
CitbeyJ2YWx1ZSI6Mn0seyJ2YWx1ZSI6M31dCitQQVNTOiAnZGVsZXRlJyBzaG91bGQgcmV0dXJu
IHRydWUgZm9yIGEga25vd24ga2V5LgorW3sidmFsdWUiOjN9XQorUEFTUzogJ2RlbGV0ZScgc2hv
dWxkIHJldHVybiBmYWxzZSBmb3IgYW4gYWxyZWFkeSBkZWxldGVkIGtleS4KK1t7InZhbHVlIjoz
fV0KK1BBU1M6ICdkZWxldGUnIHNob3VsZCByZXR1cm4gdHJ1ZSBmb3IgYSBrbm93biBrZXkuCitb
XQorUEFTUzogJ2RlbGV0ZScgc2hvdWxkIHJldHVybiBmYWxzZSBmb3IgYW4gdW5rbm93biBrZXku
CitbXQorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogSXRlcmFibGVXZWFrU2V0LnByb3RvdHlwZS50
YWtlCitbeyJ2YWx1ZSI6MX0seyJ2YWx1ZSI6Mn0seyJ2YWx1ZSI6M31dCitQQVNTOiAndGFrZScg
c2hvdWxkIHJldHVybiB0aGUga2V5IGZvciBhIGtub3duIGtleS4KK1t7InZhbHVlIjoyfSx7InZh
bHVlIjozfV0KK1BBU1M6ICd0YWtlJyBzaG91bGQgcmV0dXJuIHRoZSBrZXkgZm9yIGEga25vd24g
a2V5LgorW3sidmFsdWUiOjN9XQorUEFTUzogJ3Rha2UnIHNob3VsZCByZXR1cm4gdW5kZWZpbmVk
IGZvciBhbiBhbHJlYWR5IGRlbGV0ZWQga2V5LgorW3sidmFsdWUiOjN9XQorUEFTUzogJ3Rha2Un
IHNob3VsZCByZXR1cm4gdGhlIGtleSBmb3IgYSBrbm93biBrZXkuCitbXQorUEFTUzogJ3Rha2Un
IHNob3VsZCByZXR1cm4gdW5kZWZpbmVkIGZvciBhbiB1bmtub3duIGtleS4KK1tdCisKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBJdGVyYWJsZVdlYWtTZXQucHJvdG90eXBlLmNsZWFyCitbeyJ2YWx1
ZSI6MX0seyJ2YWx1ZSI6Mn0seyJ2YWx1ZSI6M31dCitbXQorCistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogSXRlcmFibGVXZWFrU2V0LnByb3RvdHlwZS5rZXlzCitbeyJ2YWx1ZSI6MX0seyJ2YWx1ZSI6
Mn0seyJ2YWx1ZSI6M31dCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJdGVyYWJsZVdlYWtTZXQu
cHJvdG90eXBlLnZhbHVlcworW3sidmFsdWUiOjF9LHsidmFsdWUiOjJ9LHsidmFsdWUiOjN9XQor
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogSXRlcmFibGVXZWFrU2V0LnByb3RvdHlwZS5jb3B5Citb
eyJ2YWx1ZSI6MX0seyJ2YWx1ZSI6Mn0seyJ2YWx1ZSI6M31dCitQQVNTOiBDb3B5IHNob3VsZCBu
b3QgcmV0dXJuIHRoZSBzYW1lIG9iamVjdC4KK1BBU1M6IENvcHkgc2hvdWxkIHJldHVybiBhIGRl
ZXAgY29weS4KK1BBU1M6IE1vZGlmeWluZyB0aGUgb3JpZ2luYWwgc2hvdWxkIG5vdCBtb2RpZnkg
dGhlIGNvcHkuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJdGVyYWJsZVdlYWtTZXQuRG9lc05v
dEtlZXBPYmplY3RzQWxpdmUKK0V2YWx1YXRpbmcgYEl0ZXJhYmxlV2Vha1NldGAgc291cmNlIGlu
IHRoZSBpbnNwZWN0ZWQgcGFnZS4uLgorVGVzdGluZyBgSXRlcmFibGVXZWFrU2V0YCBpbiB0aGUg
aW5zcGVjdGVkIHBhZ2UuLi4KK1t7InZhbHVlIjoxfSx7InZhbHVlIjoyfSx7InZhbHVlIjozfV0K
K1BBU1M6ICdoYXMnIHNob3VsZCByZXR1cm4gdHJ1ZSBmb3IgJ3sidmFsdWUiOjF9JyBhZnRlciBj
b25zdHJ1Y3Rpb24uCitQQVNTOiAnaGFzJyBzaG91bGQgcmV0dXJuIHRydWUgZm9yICd7InZhbHVl
IjoyfScgYWZ0ZXIgY29uc3RydWN0aW9uLgorUEFTUzogJ2hhcycgc2hvdWxkIHJldHVybiB0cnVl
IGZvciAneyJ2YWx1ZSI6M30nIGFmdGVyIGNvbnN0cnVjdGlvbi4KK1t7InZhbHVlIjoyfSx7InZh
bHVlIjozfV0KK1BBU1M6IFNob3VsZCBub3QgY29udGFpbiAneyJ2YWx1ZSI6IDF9JyBhZnRlciBg
b25lID0gbnVsbGAuCitQQVNTOiAnaGFzJyBzaG91bGQgcmV0dXJuIHRydWUgZm9yICd7InZhbHVl
IjoyfScgYWZ0ZXIgYG9uZSA9IG51bGxgLgorUEFTUzogJ2hhcycgc2hvdWxkIHJldHVybiB0cnVl
IGZvciAneyJ2YWx1ZSI6M30nIGFmdGVyIGBvbmUgPSBudWxsYC4KK1t7InZhbHVlIjozfV0KK1BB
U1M6IFNob3VsZCBub3QgY29udGFpbiAneyJ2YWx1ZSI6IDF9JyBhZnRlciBgdHdvID0gbnVsbGAu
CitQQVNTOiBTaG91bGQgbm90IGNvbnRhaW4gJ3sidmFsdWUiOiAyfScgYWZ0ZXIgYHR3byA9IG51
bGxgLgorUEFTUzogJ2hhcycgc2hvdWxkIHJldHVybiB0cnVlIGZvciAneyJ2YWx1ZSI6M30nIGFm
dGVyIGB0d28gPSBudWxsYC4KK1tdCitQQVNTOiBTaG91bGQgbm90IGNvbnRhaW4gJ3sidmFsdWUi
OiAxfScgYWZ0ZXIgYHRocmVlID0gbnVsbGAuCitQQVNTOiBTaG91bGQgbm90IGNvbnRhaW4gJ3si
dmFsdWUiOiAyfScgYWZ0ZXIgYHRocmVlID0gbnVsbGAuCitQQVNTOiBTaG91bGQgbm90IGNvbnRh
aW4gJ3sidmFsdWUiOiAzfScgYWZ0ZXIgYHRocmVlID0gbnVsbGAuCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2l0ZXJhYmxld2Vha3NldC5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvaXRlcmFibGV3ZWFrc2V0Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmRmY2MzZTdlYjI5ZWFjZjBhMDRhYzJlMDk5MmExM2UyZDNlMjNmMgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2l0ZXJhYmxld2Vha3Nl
dC5odG1sCkBAIC0wLDAgKzEsMjgxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZ2Mu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2FzeW5jIGZ1bmN0aW9uIGNoZWNrRG9lc05vdEtlZXBP
YmplY3RzQWxpdmUoKQoreworICAgIGxldCBvbmUgPSBbe3ZhbHVlOiAxfV07CisgICAgbGV0IHR3
byA9IFt7dmFsdWU6IDJ9XTsKKyAgICBsZXQgdGhyZWUgPSBbe3ZhbHVlOiAzfV07CisKKyAgICBs
ZXQgaXRlcmFibGVXZWFrU2V0ID0gbmV3IEl0ZXJhYmxlV2Vha1NldChbb25lWzBdLCB0d29bMF0s
IHRocmVlWzBdLCB0d29bMF1dKTsKKworICAgIGZ1bmN0aW9uIGNoZWNrKGRlc2NyaXB0aW9uLCBp
dGVtT3JWYWx1ZSwgcHJlc2VudCkgeworICAgICAgICBpZiAodHlwZW9mIGl0ZW1PclZhbHVlID09
PSAib2JqZWN0IikKKyAgICAgICAgICAgIFRlc3RQYWdlLmRpc3BhdGNoRXZlbnRUb0Zyb250ZW5k
KCJUZXN0UGFnZS1jaGVja0RvZXNOb3RLZWVwT2JqZWN0c0FsaXZlLWxvZyIsIHttZXNzYWdlOiBg
JHtpdGVyYWJsZVdlYWtTZXQuaGFzKGl0ZW1PclZhbHVlKSA9PT0gcHJlc2VudCA/ICJQQVNTIiA6
ICJGQUlMIn06ICdoYXMnIHNob3VsZCByZXR1cm4gJHtwcmVzZW50ID8gInRydWUiIDogImZhbHNl
In0gZm9yICcke0pTT04uc3RyaW5naWZ5KGl0ZW1PclZhbHVlKX0nIGFmdGVyICR7ZGVzY3JpcHRp
b259LmB9KTsKKworICAgICAgICBpZiAodHlwZW9mIGl0ZW1PclZhbHVlID09PSAibnVtYmVyIikg
eworICAgICAgICAgICAgbGV0IGZvdW5kID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKGxldCBp
dGVtIG9mIGl0ZXJhYmxlV2Vha1NldCkgeworICAgICAgICAgICAgICAgIGlmIChpdGVtLnZhbHVl
ICE9PSBpdGVtT3JWYWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgICAgICAgICBpZiAoZm91bmQpIHsKKyAgICAgICAgICAgICAgICAgICAgVGVzdFBhZ2UuZGlz
cGF0Y2hFdmVudFRvRnJvbnRlbmQoIlRlc3RQYWdlLWNoZWNrRG9lc05vdEtlZXBPYmplY3RzQWxp
dmUtbG9nIiwge21lc3NhZ2U6IGBGQUlMOiBTaG91bGQgbm90IGZpbmQgJyR7SlNPTi5zdHJpbmdp
ZnkoaXRlbU9yVmFsdWUpfScgbW9yZSB0aGFuIG9uY2UgYWZ0ZXIgJHtkZXNjcmlwdGlvbn0uYH0p
OworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IFRlc3RQYWdlLmRpc3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJUZXN0UGFnZS1jaGVja0RvZXNOb3RL
ZWVwT2JqZWN0c0FsaXZlLWxvZyIsIHttZXNzYWdlOiBgJHtmb3VuZCA9PT0gcHJlc2VudCA/ICJQ
QVNTIiA6ICJGQUlMIn06IFNob3VsZCAke3ByZXNlbnQgPyAiIiA6ICJub3QifSBjb250YWluICd7
InZhbHVlIjogJHtpdGVtT3JWYWx1ZX19JyBhZnRlciAke2Rlc2NyaXB0aW9ufS5gfSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBUZXN0UGFnZS5kaXNwYXRjaEV2ZW50VG9Gcm9udGVuZCgiVGVz
dFBhZ2UtY2hlY2tEb2VzTm90S2VlcE9iamVjdHNBbGl2ZS1sb2ciLCB7bWVzc2FnZTogSlNPTi5z
dHJpbmdpZnkoaXRlcmFibGVXZWFrU2V0KX0pOworICAgIGNoZWNrKCJjb25zdHJ1Y3Rpb24iLCBv
bmVbMF0sIHRydWUpOworICAgIGNoZWNrKCJjb25zdHJ1Y3Rpb24iLCB0d29bMF0sIHRydWUpOwor
ICAgIGNoZWNrKCJjb25zdHJ1Y3Rpb24iLCB0aHJlZVswXSwgdHJ1ZSk7CisKKyAgICBudWtlQXJy
YXkob25lKTsKKyAgICBhd2FpdCBuZXcgUHJvbWlzZShzZXRUaW1lb3V0KTsKKyAgICBnYygpOwor
ICAgIGF3YWl0IG5ldyBQcm9taXNlKHNldFRpbWVvdXQpOworCisgICAgVGVzdFBhZ2UuZGlzcGF0
Y2hFdmVudFRvRnJvbnRlbmQoIlRlc3RQYWdlLWNoZWNrRG9lc05vdEtlZXBPYmplY3RzQWxpdmUt
bG9nIiwge21lc3NhZ2U6IEpTT04uc3RyaW5naWZ5KGl0ZXJhYmxlV2Vha1NldCl9KTsKKyAgICBj
aGVjaygiYG9uZSA9IG51bGxgIiwgMSwgZmFsc2UpOworICAgIGNoZWNrKCJgb25lID0gbnVsbGAi
LCB0d29bMF0sIHRydWUpOworICAgIGNoZWNrKCJgb25lID0gbnVsbGAiLCB0aHJlZVswXSwgdHJ1
ZSk7CisKKyAgICBudWtlQXJyYXkodHdvKTsKKyAgICBhd2FpdCBuZXcgUHJvbWlzZShzZXRUaW1l
b3V0KTsKKyAgICBnYygpOworICAgIGF3YWl0IG5ldyBQcm9taXNlKHNldFRpbWVvdXQpOworCisg
ICAgVGVzdFBhZ2UuZGlzcGF0Y2hFdmVudFRvRnJvbnRlbmQoIlRlc3RQYWdlLWNoZWNrRG9lc05v
dEtlZXBPYmplY3RzQWxpdmUtbG9nIiwge21lc3NhZ2U6IEpTT04uc3RyaW5naWZ5KGl0ZXJhYmxl
V2Vha1NldCl9KTsKKyAgICBjaGVjaygiYHR3byA9IG51bGxgIiwgMSwgZmFsc2UpOworICAgIGNo
ZWNrKCJgdHdvID0gbnVsbGAiLCAyLCBmYWxzZSk7CisgICAgY2hlY2soImB0d28gPSBudWxsYCIs
IHRocmVlWzBdLCB0cnVlKTsKKworICAgIG51a2VBcnJheSh0aHJlZSk7CisgICAgYXdhaXQgbmV3
IFByb21pc2Uoc2V0VGltZW91dCk7CisgICAgZ2MoKTsKKyAgICBhd2FpdCBuZXcgUHJvbWlzZShz
ZXRUaW1lb3V0KTsKKworICAgIFRlc3RQYWdlLmRpc3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJUZXN0
UGFnZS1jaGVja0RvZXNOb3RLZWVwT2JqZWN0c0FsaXZlLWxvZyIsIHttZXNzYWdlOiBKU09OLnN0
cmluZ2lmeShpdGVyYWJsZVdlYWtTZXQpfSk7CisgICAgY2hlY2soImB0aHJlZSA9IG51bGxgIiwg
MSwgZmFsc2UpOworICAgIGNoZWNrKCJgdGhyZWUgPSBudWxsYCIsIDIsIGZhbHNlKTsKKyAgICBj
aGVjaygiYHRocmVlID0gbnVsbGAiLCAzLCBmYWxzZSk7CisKKyAgICBUZXN0UGFnZS5kaXNwYXRj
aEV2ZW50VG9Gcm9udGVuZCgiVGVzdFBhZ2UtY2hlY2tEb2VzTm90S2VlcE9iamVjdHNBbGl2ZS1k
b25lIik7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3Rv
clRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiSXRlcmFibGVXZWFrU2V0Iik7CisKKyAgICBzdWl0ZS5h
ZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJdGVyYWJsZVdlYWtTZXQucHJvdG90eXBlLmNv
bnN0cnVjdG9yLkVtcHR5IiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxl
dCBpdGVyYWJsZVdlYWtTZXQgPSBuZXcgSXRlcmFibGVXZWFrU2V0OworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coaXRlcmFibGVXZWFrU2V0KTsKKyAgICAgICAgfSwKKyAgICB9KTsKKwor
ICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkl0ZXJhYmxlV2Vha1NldC5w
cm90b3R5cGUuY29uc3RydWN0b3IuTm9uRW1wdHkiLAorICAgICAgICBhc3luYyB0ZXN0KCkgewor
ICAgICAgICAgICAgbGV0IG9uZSA9IHt2YWx1ZTogMX07CisgICAgICAgICAgICBsZXQgdHdvID0g
e3ZhbHVlOiAyfTsKKyAgICAgICAgICAgIGxldCB0aHJlZSA9IHt2YWx1ZTogM307CisKKyAgICAg
ICAgICAgIGxldCBpdGVyYWJsZVdlYWtTZXQgPSBuZXcgSXRlcmFibGVXZWFrU2V0KFtvbmUsIHR3
bywgdGhyZWUsIHR3b10pOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coaXRlcmFibGVX
ZWFrU2V0KTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
KyAgICAgICAgbmFtZTogIkl0ZXJhYmxlV2Vha1NldC5wcm90b3R5cGUuaGFzIiwKKyAgICAgICAg
YXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBvbmUgPSB7dmFsdWU6IDF9OworICAgICAg
ICAgICAgbGV0IHR3byA9IHt2YWx1ZTogMn07CisgICAgICAgICAgICBsZXQgdGhyZWUgPSB7dmFs
dWU6IDN9OworICAgICAgICAgICAgbGV0IGZvdXIgPSB7dmFsdWU6IDR9OworCisgICAgICAgICAg
ICBsZXQgaXRlcmFibGVXZWFrU2V0ID0gbmV3IEl0ZXJhYmxlV2Vha1NldChbb25lLCB0d28sIHRo
cmVlLCB0d29dKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGl0ZXJhYmxlV2Vha1Nl
dCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRydWUoaXRlcmFibGVXZWFrU2V0
LmhhcyhvbmUpLCAiJ2hhcycgc2hvdWxkIHJldHVybiB0cnVlIGlmIGEga2V5IGV4aXN0cy4iKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VHJ1ZShpdGVyYWJsZVdlYWtTZXQuaGFz
KHR3byksICInaGFzJyBzaG91bGQgcmV0dXJuIHRydWUgaWYgYSBrZXkgZXhpc3RzIChtb3JlIHRo
YW4gb25jZSkuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRydWUoaXRlcmFi
bGVXZWFrU2V0Lmhhcyh0aHJlZSksICInaGFzJyBzaG91bGQgcmV0dXJuIHRydWUgaWYgYSBrZXkg
ZXhpc3RzLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShpdGVyYWJs
ZVdlYWtTZXQuaGFzKGZvdXIpLCAiJ2hhcycgc2hvdWxkIHJldHVybiBmYWxzZSBpZiBhIGtleSBk
b2Vzbid0IGV4aXN0LiIpOworICAgICAgICB9LAorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVz
dENhc2UoeworICAgICAgICBuYW1lOiAiSXRlcmFibGVXZWFrU2V0LnByb3RvdHlwZS5hZGQiLAor
ICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IG9uZSA9IHt2YWx1ZTogMX07
CisgICAgICAgICAgICBsZXQgdHdvID0ge3ZhbHVlOiAyfTsKKyAgICAgICAgICAgIGxldCB0aHJl
ZSA9IHt2YWx1ZTogM307CisKKyAgICAgICAgICAgIGxldCBpdGVyYWJsZVdlYWtTZXQgPSBuZXcg
SXRlcmFibGVXZWFrU2V0OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coaXRlcmFibGVX
ZWFrU2V0KTsKKworICAgICAgICAgICAgaXRlcmFibGVXZWFrU2V0LmFkZChvbmUpOworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coaXRlcmFibGVXZWFrU2V0KTsKKworICAgICAgICAgICAg
aXRlcmFibGVXZWFrU2V0LmFkZCh0d28pOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
aXRlcmFibGVXZWFrU2V0KTsKKworICAgICAgICAgICAgaXRlcmFibGVXZWFrU2V0LmFkZCh0aHJl
ZSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhpdGVyYWJsZVdlYWtTZXQpOworCisg
ICAgICAgICAgICBpdGVyYWJsZVdlYWtTZXQuYWRkKHR3byk7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmxvZyhpdGVyYWJsZVdlYWtTZXQpOworICAgICAgICB9LAorICAgIH0pOworCisgICAg
c3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSXRlcmFibGVXZWFrU2V0LnByb3Rv
dHlwZS5kZWxldGUiLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IG9u
ZSA9IHt2YWx1ZTogMX07CisgICAgICAgICAgICBsZXQgdHdvID0ge3ZhbHVlOiAyfTsKKyAgICAg
ICAgICAgIGxldCB0aHJlZSA9IHt2YWx1ZTogM307CisgICAgICAgICAgICBsZXQgZm91ciA9IHt2
YWx1ZTogNH07CisKKyAgICAgICAgICAgIGxldCBpdGVyYWJsZVdlYWtTZXQgPSBuZXcgSXRlcmFi
bGVXZWFrU2V0KFtvbmUsIHR3bywgdGhyZWUsIHR3b10pOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coaXRlcmFibGVXZWFrU2V0KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RUcnVlKGl0ZXJhYmxlV2Vha1NldC5kZWxldGUob25lKSwgIidkZWxldGUnIHNob3VsZCBy
ZXR1cm4gdHJ1ZSBmb3IgYSBrbm93biBrZXkuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmxvZyhpdGVyYWJsZVdlYWtTZXQpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dFRydWUoaXRlcmFibGVXZWFrU2V0LmRlbGV0ZSh0d28pLCAiJ2RlbGV0ZScgc2hvdWxkIHJldHVy
biB0cnVlIGZvciBhIGtub3duIGtleS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KGl0ZXJhYmxlV2Vha1NldCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFs
c2UoaXRlcmFibGVXZWFrU2V0LmRlbGV0ZSh0d28pLCAiJ2RlbGV0ZScgc2hvdWxkIHJldHVybiBm
YWxzZSBmb3IgYW4gYWxyZWFkeSBkZWxldGVkIGtleS4iKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKGl0ZXJhYmxlV2Vha1NldCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0VHJ1ZShpdGVyYWJsZVdlYWtTZXQuZGVsZXRlKHRocmVlKSwgIidkZWxldGUnIHNob3Vs
ZCByZXR1cm4gdHJ1ZSBmb3IgYSBrbm93biBrZXkuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZyhpdGVyYWJsZVdlYWtTZXQpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdEZhbHNlKGl0ZXJhYmxlV2Vha1NldC5kZWxldGUoZm91ciksICInZGVsZXRlJyBzaG91bGQg
cmV0dXJuIGZhbHNlIGZvciBhbiB1bmtub3duIGtleS4iKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKGl0ZXJhYmxlV2Vha1NldCk7CisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBz
dWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJdGVyYWJsZVdlYWtTZXQucHJvdG90
eXBlLnRha2UiLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IG9uZSA9
IHt2YWx1ZTogMX07CisgICAgICAgICAgICBsZXQgdHdvID0ge3ZhbHVlOiAyfTsKKyAgICAgICAg
ICAgIGxldCB0aHJlZSA9IHt2YWx1ZTogM307CisgICAgICAgICAgICBsZXQgZm91ciA9IHt2YWx1
ZTogNH07CisKKyAgICAgICAgICAgIGxldCBpdGVyYWJsZVdlYWtTZXQgPSBuZXcgSXRlcmFibGVX
ZWFrU2V0KFtvbmUsIHR3bywgdGhyZWUsIHR3b10pOworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coaXRlcmFibGVXZWFrU2V0KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RFcXVhbChpdGVyYWJsZVdlYWtTZXQudGFrZShvbmUpPy52YWx1ZSwgMSwgIid0YWtlJyBzaG91
bGQgcmV0dXJuIHRoZSBrZXkgZm9yIGEga25vd24ga2V5LiIpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coaXRlcmFibGVXZWFrU2V0KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChpdGVyYWJsZVdlYWtTZXQudGFrZSh0d28pPy52YWx1ZSwgMiwgIid0YWtl
JyBzaG91bGQgcmV0dXJuIHRoZSBrZXkgZm9yIGEga25vd24ga2V5LiIpOworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coaXRlcmFibGVXZWFrU2V0KTsKKworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RFcXVhbChpdGVyYWJsZVdlYWtTZXQudGFrZSh0d28pLCB1bmRlZmluZWQs
ICIndGFrZScgc2hvdWxkIHJldHVybiB1bmRlZmluZWQgZm9yIGFuIGFscmVhZHkgZGVsZXRlZCBr
ZXkuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhpdGVyYWJsZVdlYWtTZXQpOwor
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGl0ZXJhYmxlV2Vha1NldC50
YWtlKHRocmVlKT8udmFsdWUsIDMsICIndGFrZScgc2hvdWxkIHJldHVybiB0aGUga2V5IGZvciBh
IGtub3duIGtleS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGl0ZXJhYmxlV2Vh
a1NldCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoaXRlcmFibGVX
ZWFrU2V0LnRha2UoZm91ciksIHVuZGVmaW5lZCwgIid0YWtlJyBzaG91bGQgcmV0dXJuIHVuZGVm
aW5lZCBmb3IgYW4gdW5rbm93biBrZXkuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZyhpdGVyYWJsZVdlYWtTZXQpOworICAgICAgICB9LAorICAgIH0pOworCisgICAgc3VpdGUuYWRk
VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSXRlcmFibGVXZWFrU2V0LnByb3RvdHlwZS5jbGVh
ciIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgb25lID0ge3ZhbHVl
OiAxfTsKKyAgICAgICAgICAgIGxldCB0d28gPSB7dmFsdWU6IDJ9OworICAgICAgICAgICAgbGV0
IHRocmVlID0ge3ZhbHVlOiAzfTsKKworICAgICAgICAgICAgbGV0IGl0ZXJhYmxlV2Vha1NldCA9
IG5ldyBJdGVyYWJsZVdlYWtTZXQoW29uZSwgdHdvLCB0aHJlZSwgdHdvXSk7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZyhpdGVyYWJsZVdlYWtTZXQpOworCisgICAgICAgICAgICBpdGVy
YWJsZVdlYWtTZXQuY2xlYXIoKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGl0ZXJh
YmxlV2Vha1NldCk7CisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2Fz
ZSh7CisgICAgICAgIG5hbWU6ICJJdGVyYWJsZVdlYWtTZXQucHJvdG90eXBlLmtleXMiLAorICAg
ICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IG9uZSA9IHt2YWx1ZTogMX07Cisg
ICAgICAgICAgICBsZXQgdHdvID0ge3ZhbHVlOiAyfTsKKyAgICAgICAgICAgIGxldCB0aHJlZSA9
IHt2YWx1ZTogM307CisKKyAgICAgICAgICAgIGxldCBpdGVyYWJsZVdlYWtTZXQgPSBuZXcgSXRl
cmFibGVXZWFrU2V0KFtvbmUsIHR3bywgdGhyZWUsIHR3b10pOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coQXJyYXkuZnJvbShpdGVyYWJsZVdlYWtTZXQua2V5cygpKSk7CisgICAgICAg
IH0sCisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJ
dGVyYWJsZVdlYWtTZXQucHJvdG90eXBlLnZhbHVlcyIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7
CisgICAgICAgICAgICBsZXQgb25lID0ge3ZhbHVlOiAxfTsKKyAgICAgICAgICAgIGxldCB0d28g
PSB7dmFsdWU6IDJ9OworICAgICAgICAgICAgbGV0IHRocmVlID0ge3ZhbHVlOiAzfTsKKworICAg
ICAgICAgICAgbGV0IGl0ZXJhYmxlV2Vha1NldCA9IG5ldyBJdGVyYWJsZVdlYWtTZXQoW29uZSwg
dHdvLCB0aHJlZSwgdHdvXSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhBcnJheS5m
cm9tKGl0ZXJhYmxlV2Vha1NldC52YWx1ZXMoKSkpOworICAgICAgICB9LAorICAgIH0pOworCisg
ICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSXRlcmFibGVXZWFrU2V0LnBy
b3RvdHlwZS5jb3B5IiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBv
bmUgPSB7dmFsdWU6IDF9OworICAgICAgICAgICAgbGV0IHR3byA9IHt2YWx1ZTogMn07CisgICAg
ICAgICAgICBsZXQgdGhyZWUgPSB7dmFsdWU6IDN9OworICAgICAgICAgICAgbGV0IGZvdXIgPSB7
dmFsdWU6IDR9OworCisgICAgICAgICAgICBsZXQgaXRlcmFibGVXZWFrU2V0ID0gbmV3IEl0ZXJh
YmxlV2Vha1NldChbb25lLCB0d28sIHRocmVlLCB0d29dKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKGl0ZXJhYmxlV2Vha1NldCk7CisKKyAgICAgICAgICAgIGxldCBjb3B5ID0gaXRl
cmFibGVXZWFrU2V0LmNvcHkoKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0Tm90
RXF1YWwoaXRlcmFibGVXZWFrU2V0LCBjb3B5LCAiQ29weSBzaG91bGQgbm90IHJldHVybiB0aGUg
c2FtZSBvYmplY3QuIikKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoSlNP
Ti5zdHJpbmdpZnkoaXRlcmFibGVXZWFrU2V0KSwgSlNPTi5zdHJpbmdpZnkoY29weSksICJDb3B5
IHNob3VsZCByZXR1cm4gYSBkZWVwIGNvcHkuIik7CisKKyAgICAgICAgICAgIGl0ZXJhYmxlV2Vh
a1NldC5hZGQoZm91cik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdE5vdEVxdWFs
KEpTT04uc3RyaW5naWZ5KGl0ZXJhYmxlV2Vha1NldCksIEpTT04uc3RyaW5naWZ5KGNvcHkpLCAi
TW9kaWZ5aW5nIHRoZSBvcmlnaW5hbCBzaG91bGQgbm90IG1vZGlmeSB0aGUgY29weS4iKTsKKyAg
ICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFt
ZTogIkl0ZXJhYmxlV2Vha1NldC5Eb2VzTm90S2VlcE9iamVjdHNBbGl2ZSIsCisgICAgICAgIGFz
eW5jIHRlc3QoKSB7CisgICAgICAgICAgICAvLyBTZW5kIGBJdGVyYWJsZVdlYWtTZXRgIHRvIHRo
ZSBwYWdlIHNvIHRoYXQgYEdDQ29udHJvbGxlcmAgY2FuIGJlIHVzZWQuCisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZygiRXZhbHVhdGluZyBgSXRlcmFibGVXZWFrU2V0YCBzb3VyY2UgaW4g
dGhlIGluc3BlY3RlZCBwYWdlLi4uIik7CisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0
LmV2YWx1YXRlSW5QYWdlKFN0cmluZyhJdGVyYWJsZVdlYWtTZXQpKTsKKworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRFdmVudExpc3RlbmVyKCJUZXN0UGFnZS1jaGVja0RvZXNOb3RLZWVw
T2JqZWN0c0FsaXZlLWxvZyIsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKGV2ZW50LmRhdGEubWVzc2FnZSk7CisgICAgICAgICAgICB9KTsKKworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRlc3RpbmcgYEl0ZXJhYmxlV2Vha1NldGAgaW4gdGhl
IGluc3BlY3RlZCBwYWdlLi4uIik7CisgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbCisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJUZXN0UGFnZS1jaGVja0Rv
ZXNOb3RLZWVwT2JqZWN0c0FsaXZlLWRvbmUiKSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV2YWx1YXRlSW5QYWdlKGBjaGVja0RvZXNOb3RLZWVwT2JqZWN0c0FsaXZlKClgKSwKKyAg
ICAgICAgICAgIF0pOworICAgICAgICB9LAorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENh
c2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KKyAgICA8cD5UZXN0aW5nIGFsbCBtZXRob2RzIG9mIEl0ZXJhYmxlV2Vha1NldC48
L3A+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>