<?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>152051</bug_id>
          
          <creation_ts>2015-12-09 02:53:58 -0800</creation_ts>
          <short_desc>[Streams API] Import the web-platform-tests directly from the spec</short_desc>
          <delta_ts>2015-12-09 05:09:45 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Xabier Rodríguez Calvar">calvaris</reporter>
          <assigned_to name="Xabier Rodríguez Calvar">calvaris</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1147661</commentid>
    <comment_count>0</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-12-09 02:53:58 -0800</bug_when>
    <thetext>[Streams API] Import the web-platform-tests directly from the spec</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147666</commentid>
    <comment_count>1</comment_count>
      <attachid>266983</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-12-09 03:01:51 -0800</bug_when>
    <thetext>Created attachment 266983
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147679</commentid>
    <comment_count>2</comment_count>
      <attachid>266983</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-12-09 03:23:03 -0800</bug_when>
    <thetext>Comment on attachment 266983
Patch

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

&gt; LayoutTests/imported/w3c/web-platform-tests/service-workers/service-workers/resources/README.txt:2
&gt; +version at the VERSION.txt file.

Update the last sentence?

&gt; LayoutTests/imported/w3c/web-platform-tests/streams-api/README.txt:2
&gt; +file.

Ditto.

&gt; LayoutTests/imported/w3c/web-platform-tests/streams-api/byte-length-queuing-strategy-expected.txt:8
&gt; +PASS ByteLengthQueuingStrategy&apos;s highWaterMark property can be set to anything 

These are regular tests so are passing.

&gt; LayoutTests/imported/w3c/web-platform-tests/streams-api/byte-length-queuing-strategy-expected.txt:9
&gt; +FAIL Load byte-length-queuing-strategy.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code

These are regular tests run in a SharedWorker, hence failing as not supported.

&gt; LayoutTests/imported/w3c/web-platform-tests/streams-api/byte-length-queuing-strategy-expected.txt:10
&gt; +FAIL Untitled undefined is not an object (evaluating &apos;navigator.serviceWorker.getRegistration&apos;)

These are regular tests run in a ServiceWorker, hence failing as not supported.

&gt; LayoutTests/imported/w3c/web-platform-tests/streams-api/byte-length-queuing-strategy-expected.txt:11
&gt; +FAIL Can construct a ByteLengthQueuingStrategy with a valid high water mark Can&apos;t find variable: ByteLengthQueuingStrategy

This is a regular test run in a Worker. It should pass once ReadableStream is exposed to Worker.

&gt; LayoutTests/imported/w3c/web-platform-tests/streams-api/readable-streams/brand-checks-expected.txt:24
&gt; +PASS ReadableStreamReader enforces a brand check on its argument 

A bit strange that this test is passing in Worker?

&gt; LayoutTests/imported/w3c/web-platform-tests/streams-api/readable-streams/brand-checks-expected.txt:29
&gt; +PASS ReadableStreamController enforces a brand check on its argument 

Ditto?

&gt; LayoutTests/imported/w3c/web-platform-tests/streams-api/readable-streams/cancel-expected.txt:2
&gt; +FAIL ReadableStream cancellation: integration test on an infinite stream derived from a random push source promise_test: Unhandled rejection with value: object &quot;Error: forced error&quot;

This is the flaky test that needs more investigation as explained in the logs.

&gt; LayoutTests/imported/w3c/web-platform-tests/streams-api/readable-streams/general-expected.txt:4
&gt; +FAIL ReadableStream instances should have the correct list of properties assert_false: method should be non-enumerable expected false got true

Also failing in past test suite

&gt; LayoutTests/imported/w3c/web-platform-tests/streams-api/readable-streams/general-expected.txt:8
&gt; +FAIL ReadableStream start should be called with the proper parameters assert_false: close should be non-enumerable expected false got true

Also failing in past test suite

&gt; LayoutTests/imported/w3c/web-platform-tests/streams-api/readable-streams/pipe-through-expected.txt:5
&gt; +FAIL ReadableStream.prototype.pipeThrough should rethrow errors from accessing pipeTo, readable, or writable assert_unreached: pipeTo should not be called Reached unreachable code

Why is it failing?
Is the implementation faulty?

&gt; LayoutTests/streams/reference-implementation/readable-stream-templated.html:348
&gt;  templatedRSClosed(&apos;ReadableStream (closed via call in start)&apos;, function() {

We should investigate whether to keep those tests (and their neighbours)  I guess?
Will they be ported at some point or are they redundant?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147688</commentid>
    <comment_count>3</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-12-09 03:36:30 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; LayoutTests/imported/w3c/web-platform-tests/service-workers/service-workers/resources/README.txt:2
&gt; &gt; +version at the VERSION.txt file.
&gt; 
&gt; Update the last sentence?
&gt; 
&gt; &gt; LayoutTests/imported/w3c/web-platform-tests/streams-api/README.txt:2
&gt; &gt; +file.
&gt; 
&gt; Ditto.

I guess we can fix this at landing time, right?

&gt; &gt; LayoutTests/imported/w3c/web-platform-tests/streams-api/byte-length-queuing-strategy-expected.txt:8
&gt; &gt; +PASS ByteLengthQueuingStrategy&apos;s highWaterMark property can be set to anything 
&gt; 
&gt; These are regular tests so are passing.
&gt; 
&gt; &gt; LayoutTests/imported/w3c/web-platform-tests/streams-api/byte-length-queuing-strategy-expected.txt:9
&gt; &gt; +FAIL Load byte-length-queuing-strategy.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
&gt; 
&gt; These are regular tests run in a SharedWorker, hence failing as not
&gt; supported.
&gt; 
&gt; &gt; LayoutTests/imported/w3c/web-platform-tests/streams-api/byte-length-queuing-strategy-expected.txt:10
&gt; &gt; +FAIL Untitled undefined is not an object (evaluating &apos;navigator.serviceWorker.getRegistration&apos;)
&gt; 
&gt; These are regular tests run in a ServiceWorker, hence failing as not
&gt; supported.
&gt; 
&gt; &gt; LayoutTests/imported/w3c/web-platform-tests/streams-api/byte-length-queuing-strategy-expected.txt:11
&gt; &gt; +FAIL Can construct a ByteLengthQueuingStrategy with a valid high water mark Can&apos;t find variable: ByteLengthQueuingStrategy
&gt; 
&gt; This is a regular test run in a Worker. It should pass once ReadableStream
&gt; is exposed to Worker.
&gt; 
&gt; &gt; LayoutTests/imported/w3c/web-platform-tests/streams-api/readable-streams/brand-checks-expected.txt:24
&gt; &gt; +PASS ReadableStreamReader enforces a brand check on its argument 
&gt; 
&gt; A bit strange that this test is passing in Worker?
&gt; 
&gt; &gt; LayoutTests/imported/w3c/web-platform-tests/streams-api/readable-streams/brand-checks-expected.txt:29
&gt; &gt; +PASS ReadableStreamController enforces a brand check on its argument 
&gt; 
&gt; Ditto?
&gt; 
&gt; &gt; LayoutTests/imported/w3c/web-platform-tests/streams-api/readable-streams/cancel-expected.txt:2
&gt; &gt; +FAIL ReadableStream cancellation: integration test on an infinite stream derived from a random push source promise_test: Unhandled rejection with value: object &quot;Error: forced error&quot;
&gt; 
&gt; This is the flaky test that needs more investigation as explained in the
&gt; logs.
&gt; 
&gt; &gt; LayoutTests/imported/w3c/web-platform-tests/streams-api/readable-streams/general-expected.txt:4
&gt; &gt; +FAIL ReadableStream instances should have the correct list of properties assert_false: method should be non-enumerable expected false got true
&gt; 
&gt; Also failing in past test suite
&gt; 
&gt; &gt; LayoutTests/imported/w3c/web-platform-tests/streams-api/readable-streams/general-expected.txt:8
&gt; &gt; +FAIL ReadableStream start should be called with the proper parameters assert_false: close should be non-enumerable expected false got true
&gt; 
&gt; Also failing in past test suite

The answer to all these comments is that yes, that&apos;s the explanation. In the case of the tests in workers that are passing and they shouldn&apos;t, I think we should investigate them when workers are ready, until now, I don&apos;t think we can reach a proper conclusion.

&gt; &gt; LayoutTests/imported/w3c/web-platform-tests/streams-api/readable-streams/pipe-through-expected.txt:5
&gt; &gt; +FAIL ReadableStream.prototype.pipeThrough should rethrow errors from accessing pipeTo, readable, or writable assert_unreached: pipeTo should not be called Reached unreachable code
&gt; 
&gt; Why is it failing?
&gt; Is the implementation faulty?

This is a new test so I don&apos;t know why it is failing. I&apos;ll file a bug and get on it just after landing this.

&gt; &gt; LayoutTests/streams/reference-implementation/readable-stream-templated.html:348
&gt; &gt;  templatedRSClosed(&apos;ReadableStream (closed via call in start)&apos;, function() {
&gt; 
&gt; We should investigate whether to keep those tests (and their neighbours)  I
&gt; guess?
&gt; Will they be ported at some point or are they redundant?

They are not redundant, they remain here basically because they related to piping and writable streams, which are not ported to web platform yet.


Conclusion, I think we could land this, fixing those comments in the txt files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147690</commentid>
    <comment_count>4</comment_count>
      <attachid>266983</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-12-09 03:37:46 -0800</bug_when>
    <thetext>Comment on attachment 266983
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147710</commentid>
    <comment_count>5</comment_count>
      <attachid>266989</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-12-09 04:12:33 -0800</bug_when>
    <thetext>Created attachment 266989
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147723</commentid>
    <comment_count>6</comment_count>
      <attachid>266989</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-09 05:09:42 -0800</bug_when>
    <thetext>Comment on attachment 266989
Patch for landing

Clearing flags on attachment: 266989

Committed r193824: &lt;http://trac.webkit.org/changeset/193824&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147724</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-09 05:09:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266983</attachid>
            <date>2015-12-09 03:01:51 -0800</date>
            <delta_ts>2015-12-09 04:12:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152051-20151209120118.patch</filename>
            <type>text/plain</type>
            <size>379820</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzODEwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWJjZjQwYzkwMTQwNTIxYjc1MDlm
Mjc0NDk0MGU5MTZmNDMzY2I2My4uMTIwMTJiOWYxM2Y0MzY1MmUzNDc1ZWJlMDliNWVhZGE5NGVl
Y2I3NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTEyLTA5ICBYYWJpZXIgUm9kcmlndWV6
IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1N0cmVhbXMgQVBJXSBJ
bXBvcnQgdGhlIHdlYi1wbGF0Zm9ybS10ZXN0cyBkaXJlY3RseSBmcm9tIHRoZSBzcGVjCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIwNTEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVkIHRoZSB0
ZXN0cyB0aGF0IGFyZSBhbHJlYWR5IGltcG9ydGVkIGRpcmVjdGx5IGZyb20gdGhlIHNwZWMuCisK
KyAgICAgICAgKiBzdHJlYW1zL2JyYW5kLWNoZWNrcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHN0cmVhbXMvYnJhbmQtY2hlY2tzLmh0bWw6IEFkZGVkLiBUaGlzIGluY2x1ZGVzIHNv
bWUgdGVzdHMgdGhhdCB2YW5pc2hlZCBmcm9tIHRoZSBzcGVjLgorICAgICAgICAqIHN0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC1zdHJhdGVnaWVzLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtc3RyYXRlZ2llcy5o
dG1sOgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRl
cmx5aW5nLXNvdXJjZXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5j
ZS1pbXBsZW1lbnRhdGlvbi9icmFuZC1jaGVja3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0
cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy5odG1sOgorICAgICAg
ICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2J5dGUtbGVuZ3RoLXF1ZXVpbmct
c3RyYXRlZ3ktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxl
bWVudGF0aW9uL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuaHRtbDoKKyAgICAgICAgKiBz
dHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9j
b3VudC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWw6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWNhbmNlbC5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1y
ZWFkZXIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24v
cmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC5odG1sOgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1sOiBSZW1vdmVkLgorCiAyMDE1
LTEyLTA4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgU2tp
cCBzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1tdWx0aWVudHJ5Lmh0bWwgb25jZSBhZ2FpbgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggYmI2ZTMwNDJkZDllNTExZTk3OTVmOWYxMzEx
Mjk4YWRiODhjMTFhZS4uYzQ0NzM4NTQ1ZDU3MTFkZTIwYTVmMjI0MDJhN2Y5NDU1YzEyOTY0OCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMTUtMTIt
MDkgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KKworICAg
ICAgICBbU3RyZWFtcyBBUEldIEltcG9ydCB0aGUgd2ViLXBsYXRmb3JtLXRlc3RzIGRpcmVjdGx5
IGZyb20gdGhlIHNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MjA1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZXNlIGFyZSB0aGUgd2ViIHBsYXRmb3JtIHRlc3RzIGltcG9ydGVkIGRpcmVjdGx5
IChvciBhbG1vc3QpIGZyb20gdGhlIFN0cmVhbXMgQVBJIHJlcG9zaXRvcnkuIFRlc3RzIHdvcmsg
b3V0CisgICAgICAgIG9mIHRoZSBib3ggKGFsbCBidXQgYSBzbWFsbCBmbGFraW5lc3MgdGhhdCB3
ZSBhcmUgZm9yY2luZyBhcyBmYWlsdXJlIHRvIG5vdCBkaXNydXB0IHRoZSBleGVjdXRpb24gb2Yg
dGhlIHJlc3Qgb2YKKyAgICAgICAgdGVzdHMpLgorCisgICAgICAgIFRvIG1ha2UgdGhlbSB3b3Jr
IHdlIGFyZSBpbXBvcnRpbmcgYWxzbyB0aGUgc2VydmljZSB3b3JrZXIgdGVzdCBoZWxwZXJzIHRo
YXQgaXMgdXNlZCBieSB0aGUgdGVzdHMuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvUkVBRE1FLnR4dDogQWRk
ZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNl
LXdvcmtlcnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qczogQWRkZWQuIEltcG9ydGVkIGZyb20g
dGhlIHdlYi1wbGF0Zm9ybS10ZXN0cy4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy1hcGkvUkVBRE1FLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMtYXBpL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvYnl0ZS1sZW5n
dGgtcXVldWluZy1zdHJhdGVneS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy1hcGkvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5qczogQWRkZWQu
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL2NvdW50LXF1ZXVpbmct
c3RyYXRlZ3ktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy1hcGkvY291bnQtcXVldWluZy1zdHJhdGVneS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvY291bnQtcXVldWluZy1zdHJhdGVn
eS5qczogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3Jl
YWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9iYWQt
c3RyYXRlZ2llcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5qczogQWRkZWQuCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFk
LXVuZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5n
LXNvdXJjZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5qczogQWRkZWQu
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVh
bXMvYnJhbmQtY2hlY2tzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJs
ZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5qczogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxl
LXN0cmVhbXMvY2FuY2VsLmh0bWw6IEFkZGVkLiBUaGVyZSdzIGEgdGVzdCB3aXRoIGEgZm9yY2Vk
IGZhaWx1cmUKKyAgICAgICAgYmVjYXVzZSBpdCBpcyBmbGFreS4KKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuanM6IEFkZGVk
LgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJl
YW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3Ry
ZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2Nv
dW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uanM6IEFkZGVkLgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29s
bGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUt
c3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uanM6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVh
ZGFibGUtc3RyZWFtcy9nZW5lcmFsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuanM6IEFkZGVkLgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1z
L3BpcGUtdGhyb3VnaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3BpcGUtdGhyb3VnaC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUt
c3RyZWFtcy9waXBlLXRocm91Z2guanM6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy1hcGkvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuanM6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3RlZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJs
ZS1zdHJlYW1zL3RlZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy90ZWUuanM6IEFkZGVkLgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
LWFwaS9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQu
anM6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZXNv
dXJjZXMvcnMtdGVzdC10ZW1wbGF0ZXMuanM6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zLWFwaS9yZXNvdXJjZXMvcnMtdXRpbHMuanM6IEFkZGVkLgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZXNvdXJjZXMvdGVzdC1pbml0aWFs
aXplci5qczogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBp
L3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzOiBBZGRlZC4KKwogMjAxNS0xMi0wMiAgUnlhbiBIYWRk
YWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWJhc2VsaW5lIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9kb20vaW50ZXJmYWNlcy5odG1sIGFmdGVyIHIx
OTI5NTMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvUkVBRE1FLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvUkVBRE1FLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
MzhhYmE5MDViNWM2NzRiNzg5YzliYTViNWE2OTQ2MWMwMTNkY2M1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdv
cmtlcnMvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy9SRUFETUUudHh0CkBAIC0wLDAgKzEsNiBA
QAorVGhpcyBmaWxlIGlzIGhlcmUgYmVjYXVzZSBvZiB0aGUgaW1wb3J0YXRpb24gb2YgU3RyZWFt
cyBBUEkgdGVzdHMgdGhhdCBuZWVkIHRoaXMgZmlsZS4gWW91IGNhbiBmaWxlZCB0aGUgaW1wb3J0
ZWQKK3ZlcnNpb24gYXQgdGhlIFZFUlNJT04udHh0IGZpbGUuCisKK1doZW4gU3RyZWFtcyBBUEkg
dGVzdHMgYXJlIG1vdmVkIHRvIHRoZSB3ZWItcGxhdGZvcm0tdGVzdHMgcmVwb3NpdG9yeSwgdGhp
cyBpbXBvcnRhdGlvbiB3aWxsIGJlIGF1dG9tYXRpYy4KKworQ3VycmVudCB2ZXJzaW9uOiBodHRw
czovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ibG9iLzE4OGJiNTY5ZjAzMmIx
ZTc4MTg5YWVmNzI1ZGUzZDg1Yjc1ZDk0NGIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
cy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
cnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vycy9yZXNvdXJj
ZXMvdGVzdC1oZWxwZXJzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0N2VhNjEyYzJmOTliNDEzNzViNjQzMTYw
ZGE0OTU5OGNjNjYwM2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVz
b3VyY2VzL3Rlc3QtaGVscGVycy5qcwpAQCAtMCwwICsxLDIyMiBAQAorLy8gQWRhcHRlciBmb3Ig
dGVzdGhhcm5lc3MuanMtc3R5bGUgdGVzdHMgd2l0aCBTZXJ2aWNlIFdvcmtlcnMKKworZnVuY3Rp
b24gc2VydmljZV93b3JrZXJfdW5yZWdpc3Rlcl9hbmRfcmVnaXN0ZXIodGVzdCwgdXJsLCBzY29w
ZSkgeworICBpZiAoIXNjb3BlIHx8IHNjb3BlLmxlbmd0aCA9PSAwKQorICAgIHJldHVybiBQcm9t
aXNlLnJlamVjdChuZXcgRXJyb3IoJ3Rlc3RzIG11c3QgZGVmaW5lIGEgc2NvcGUnKSk7CisKKyAg
dmFyIG9wdGlvbnMgPSB7IHNjb3BlOiBzY29wZSB9OworICByZXR1cm4gc2VydmljZV93b3JrZXJf
dW5yZWdpc3Rlcih0ZXN0LCBzY29wZSkKKyAgICAudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAg
cmV0dXJuIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKHVybCwgb3B0aW9ucyk7Cisg
ICAgICB9KQorICAgIC5jYXRjaCh1bnJlYWNoZWRfcmVqZWN0aW9uKHRlc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3VucmVnaXN0ZXIgYW5kIHJlZ2lzdGVyIHNob3VsZCBub3Qg
ZmFpbCcpKTsKK30KKworZnVuY3Rpb24gc2VydmljZV93b3JrZXJfdW5yZWdpc3Rlcih0ZXN0LCBk
b2N1bWVudFVybCkgeworICByZXR1cm4gbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0
cmF0aW9uKGRvY3VtZW50VXJsKQorICAgIC50aGVuKGZ1bmN0aW9uKHJlZ2lzdHJhdGlvbikgewor
ICAgICAgICBpZiAocmVnaXN0cmF0aW9uKQorICAgICAgICAgIHJldHVybiByZWdpc3RyYXRpb24u
dW5yZWdpc3RlcigpOworICAgICAgfSkKKyAgICAuY2F0Y2godW5yZWFjaGVkX3JlamVjdGlvbih0
ZXN0LCAndW5yZWdpc3RlciBzaG91bGQgbm90IGZhaWwnKSk7Cit9CisKK2Z1bmN0aW9uIHNlcnZp
Y2Vfd29ya2VyX3VucmVnaXN0ZXJfYW5kX2RvbmUodGVzdCwgc2NvcGUpIHsKKyAgcmV0dXJuIHNl
cnZpY2Vfd29ya2VyX3VucmVnaXN0ZXIodGVzdCwgc2NvcGUpCisgICAgLnRoZW4odGVzdC5kb25l
LmJpbmQodGVzdCkpOworfQorCitmdW5jdGlvbiB1bnJlYWNoZWRfZnVsZmlsbG1lbnQodGVzdCwg
cHJlZml4KSB7CisgIHJldHVybiB0ZXN0LnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsKKyAg
ICAgIHZhciBlcnJvcl9wcmVmaXggPSBwcmVmaXggfHwgJ3VuZXhwZWN0ZWQgZnVsZmlsbG1lbnQn
OworICAgICAgYXNzZXJ0X3VucmVhY2hlZChlcnJvcl9wcmVmaXggKyAnOiAnICsgcmVzdWx0KTsK
KyAgICB9KTsKK30KKworLy8gUmVqZWN0aW9uLXNwZWNpZmljIGhlbHBlciB0aGF0IHByb3ZpZGVz
IG1vcmUgZGV0YWlscworZnVuY3Rpb24gdW5yZWFjaGVkX3JlamVjdGlvbih0ZXN0LCBwcmVmaXgp
IHsKKyAgcmV0dXJuIHRlc3Quc3RlcF9mdW5jKGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICB2YXIg
cmVhc29uID0gZXJyb3IubWVzc2FnZSB8fCBlcnJvci5uYW1lIHx8IGVycm9yOworICAgICAgdmFy
IGVycm9yX3ByZWZpeCA9IHByZWZpeCB8fCAndW5leHBlY3RlZCByZWplY3Rpb24nOworICAgICAg
YXNzZXJ0X3VucmVhY2hlZChlcnJvcl9wcmVmaXggKyAnOiAnICsgcmVhc29uKTsKKyAgICB9KTsK
K30KKworLy8gQWRkcyBhbiBpZnJhbWUgdG8gdGhlIGRvY3VtZW50IGFuZCByZXR1cm5zIGEgcHJv
bWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZQorLy8gaWZyYW1lIHdoZW4gaXQgZmluaXNoZXMgbG9h
ZGluZy4gVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgcmVtb3ZpbmcgdGhlCisvLyBpZnJh
bWUgbGF0ZXIgaWYgbmVlZGVkLgorZnVuY3Rpb24gd2l0aF9pZnJhbWUodXJsKSB7CisgIHJldHVy
biBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7CisgICAgICB2YXIgZnJhbWUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKKyAgICAgIGZyYW1lLnNyYyA9IHVybDsKKyAg
ICAgIGZyYW1lLm9ubG9hZCA9IGZ1bmN0aW9uKCkgeyByZXNvbHZlKGZyYW1lKTsgfTsKKyAgICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUpOworICAgIH0pOworfQorCitmdW5jdGlv
biBub3JtYWxpemVVUkwodXJsKSB7CisgIHJldHVybiBuZXcgVVJMKHVybCwgc2VsZi5sb2NhdGlv
bikudG9TdHJpbmcoKS5yZXBsYWNlKC8jLiokLywgJycpOworfQorCitmdW5jdGlvbiB3YWl0X2Zv
cl91cGRhdGUodGVzdCwgcmVnaXN0cmF0aW9uKSB7CisgIGlmICghcmVnaXN0cmF0aW9uIHx8IHJl
Z2lzdHJhdGlvbi51bnJlZ2lzdGVyID09IHVuZGVmaW5lZCkgeworICAgIHJldHVybiBQcm9taXNl
LnJlamVjdChuZXcgRXJyb3IoCisgICAgICAnd2FpdF9mb3JfdXBkYXRlIG11c3QgYmUgcGFzc2Vk
IGEgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbicpKTsKKyAgfQorCisgIHJldHVybiBuZXcgUHJv
bWlzZSh0ZXN0LnN0ZXBfZnVuYyhmdW5jdGlvbihyZXNvbHZlKSB7CisgICAgICByZWdpc3RyYXRp
b24uYWRkRXZlbnRMaXN0ZW5lcigndXBkYXRlZm91bmQnLCB0ZXN0LnN0ZXBfZnVuYyhmdW5jdGlv
bigpIHsKKyAgICAgICAgICByZXNvbHZlKHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nKTsKKyAgICAg
ICAgfSkpOworICAgIH0pKTsKK30KKworZnVuY3Rpb24gd2FpdF9mb3Jfc3RhdGUodGVzdCwgd29y
a2VyLCBzdGF0ZSkgeworICBpZiAoIXdvcmtlciB8fCB3b3JrZXIuc3RhdGUgPT0gdW5kZWZpbmVk
KSB7CisgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcigKKyAgICAgICd3YWl0X2Zv
cl9zdGF0ZSBtdXN0IGJlIHBhc3NlZCBhIFNlcnZpY2VXb3JrZXInKSk7CisgIH0KKyAgaWYgKHdv
cmtlci5zdGF0ZSA9PT0gc3RhdGUpCisgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShzdGF0ZSk7
CisKKyAgaWYgKHN0YXRlID09PSAnaW5zdGFsbGluZycpIHsKKyAgICBzd2l0Y2ggKHdvcmtlci5z
dGF0ZSkgeworICAgICAgY2FzZSAnaW5zdGFsbGVkJzoKKyAgICAgIGNhc2UgJ2FjdGl2YXRpbmcn
OgorICAgICAgY2FzZSAnYWN0aXZhdGVkJzoKKyAgICAgIGNhc2UgJ3JlZHVuZGFudCc6CisgICAg
ICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoCisgICAgICAgICAgJ3dvcmtlciBp
cyAnICsgd29ya2VyLnN0YXRlICsgJyBidXQgd2FpdGluZyBmb3IgJyArIHN0YXRlKSk7CisgICAg
fQorICB9CisKKyAgaWYgKHN0YXRlID09PSAnaW5zdGFsbGVkJykgeworICAgIHN3aXRjaCAod29y
a2VyLnN0YXRlKSB7CisgICAgICBjYXNlICdhY3RpdmF0aW5nJzoKKyAgICAgIGNhc2UgJ2FjdGl2
YXRlZCc6CisgICAgICBjYXNlICdyZWR1bmRhbnQnOgorICAgICAgICByZXR1cm4gUHJvbWlzZS5y
ZWplY3QobmV3IEVycm9yKAorICAgICAgICAgICd3b3JrZXIgaXMgJyArIHdvcmtlci5zdGF0ZSAr
ICcgYnV0IHdhaXRpbmcgZm9yICcgKyBzdGF0ZSkpOworICAgIH0KKyAgfQorCisgIGlmIChzdGF0
ZSA9PT0gJ2FjdGl2YXRpbmcnKSB7CisgICAgc3dpdGNoICh3b3JrZXIuc3RhdGUpIHsKKyAgICAg
IGNhc2UgJ2FjdGl2YXRlZCc6CisgICAgICBjYXNlICdyZWR1bmRhbnQnOgorICAgICAgICByZXR1
cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKAorICAgICAgICAgICd3b3JrZXIgaXMgJyArIHdv
cmtlci5zdGF0ZSArICcgYnV0IHdhaXRpbmcgZm9yICcgKyBzdGF0ZSkpOworICAgIH0KKyAgfQor
CisgIGlmIChzdGF0ZSA9PT0gJ2FjdGl2YXRlZCcpIHsKKyAgICBzd2l0Y2ggKHdvcmtlci5zdGF0
ZSkgeworICAgICAgY2FzZSAncmVkdW5kYW50JzoKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVq
ZWN0KG5ldyBFcnJvcigKKyAgICAgICAgICAnd29ya2VyIGlzICcgKyB3b3JrZXIuc3RhdGUgKyAn
IGJ1dCB3YWl0aW5nIGZvciAnICsgc3RhdGUpKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gbmV3
IFByb21pc2UodGVzdC5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzb2x2ZSkgeworICAgICAgd29ya2Vy
LmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXRlY2hhbmdlJywgdGVzdC5zdGVwX2Z1bmMoZnVuY3Rpb24o
KSB7CisgICAgICAgICAgaWYgKHdvcmtlci5zdGF0ZSA9PT0gc3RhdGUpCisgICAgICAgICAgICBy
ZXNvbHZlKHN0YXRlKTsKKyAgICAgICAgfSkpOworICAgIH0pKTsKK30KKworLy8gRGVjbGFyZSBh
IHRlc3QgdGhhdCBydW5zIGVudGlyZWx5IGluIHRoZSBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUu
IFRoZSB8dXJsfAorLy8gaXMgdGhlIHNlcnZpY2Ugd29ya2VyIHNjcmlwdCBVUkwuIFRoaXMgZnVu
Y3Rpb246CisvLyAtIEluc3RhbnRpYXRlcyBhIG5ldyB0ZXN0IHdpdGggdGhlIGRlc2NyaXB0aW9u
IHNwZWNpZmllZCBpbiB8ZGVzY3JpcHRpb258LgorLy8gICBUaGUgdGVzdCB3aWxsIHN1Y2NlZWQg
aWYgdGhlIHNwZWNpZmllZCBzZXJ2aWNlIHdvcmtlciBjYW4gYmUgc3VjY2Vzc2Z1bGx5CisvLyAg
IHJlZ2lzdGVyZWQgYW5kIGluc3RhbGxlZC4KKy8vIC0gQ3JlYXRlcyBhIG5ldyBTZXJ2aWNlV29y
a2VyIHJlZ2lzdHJhdGlvbiB3aXRoIGEgc2NvcGUgdW5pcXVlIHRvIHRoZSBjdXJyZW50CisvLyAg
IGRvY3VtZW50IFVSTC4gTm90ZSB0aGF0IHRoaXMgZG9lc24ndCBhbGxvdyBtb3JlIHRoYW4gb25l
CisvLyAgIHNlcnZpY2Vfd29ya2VyX3Rlc3QoKSB0byBiZSBydW4gZnJvbSB0aGUgc2FtZSBkb2N1
bWVudC4KKy8vIC0gV2FpdHMgZm9yIHRoZSBuZXcgd29ya2VyIHRvIGJlZ2luIGluc3RhbGxpbmcu
CisvLyAtIEltcG9ydHMgdGVzdHMgcmVzdWx0cyBmcm9tIHRlc3RzIHJ1bm5pbmcgaW5zaWRlIHRo
ZSBTZXJ2aWNlV29ya2VyLgorZnVuY3Rpb24gc2VydmljZV93b3JrZXJfdGVzdCh1cmwsIGRlc2Ny
aXB0aW9uKSB7CisgIC8vIElmIHRoZSBkb2N1bWVudCBVUkwgaXMgaHR0cHM6Ly9leGFtcGxlLmNv
bS9kb2N1bWVudCBhbmQgdGhlIHNjcmlwdCBVUkwgaXMKKyAgLy8gaHR0cHM6Ly9leGFtcGxlLmNv
bS9zY3JpcHQvd29ya2VyLmpzLCB0aGVuIHRoZSBzY29wZSB3b3VsZCBiZQorICAvLyBodHRwczov
L2V4YW1wbGUuY29tL3NjcmlwdC9zY29wZS9kb2N1bWVudC4KKyAgdmFyIHNjb3BlID0gbmV3IFVS
TCgnc2NvcGUnICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgIG5ldyBVUkwodXJsLCB3aW5kb3cubG9jYXRpb24pKS50b1N0cmluZygpOworICBwcm9taXNl
X3Rlc3QoZnVuY3Rpb24odGVzdCkgeworICAgICAgcmV0dXJuIHNlcnZpY2Vfd29ya2VyX3VucmVn
aXN0ZXJfYW5kX3JlZ2lzdGVyKHRlc3QsIHVybCwgc2NvcGUpCisgICAgICAgIC50aGVuKGZ1bmN0
aW9uKHJlZ2lzdHJhdGlvbikgeworICAgICAgICAgICAgYWRkX2NvbXBsZXRpb25fY2FsbGJhY2so
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgcmVnaXN0cmF0aW9uLnVucmVnaXN0ZXIoKTsK
KyAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm4gd2FpdF9mb3JfdXBkYXRlKHRl
c3QsIHJlZ2lzdHJhdGlvbikKKyAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24od29ya2VyKSB7
CisgICAgICAgICAgICAgICAgICByZXR1cm4gZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIod29ya2Vy
KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKyAgICB9LCBkZXNjcmlwdGlv
bik7Cit9CisKK2Z1bmN0aW9uIGdldF9ob3N0X2luZm8oKSB7CisgIHZhciBPUklHSU5BTF9IT1NU
ID0gJzEyNy4wLjAuMSc7CisgIHZhciBSRU1PVEVfSE9TVCA9ICdsb2NhbGhvc3QnOworICB2YXIg
VU5BVVRIRU5USUNBVEVEX0hPU1QgPSAnZXhhbXBsZS50ZXN0JzsKKyAgdmFyIEhUVFBfUE9SVCA9
IDgwMDA7CisgIHZhciBIVFRQU19QT1JUID0gODQ0MzsKKyAgdHJ5IHsKKyAgICAvLyBJbiBXM0Mg
dGVzdCwgd2UgY2FuIGdldCB0aGUgaG9zdG5hbWUgYW5kIHBvcnQgbnVtYmVyIGluIGNvbmZpZy5q
c29uCisgICAgLy8gdXNpbmcgd3B0c2VydmUncyBidWlsdC1pbiBwaXBlLgorICAgIC8vIGh0dHA6
Ly93cHRzZXJ2ZS5yZWFkdGhlZG9jcy5vcmcvZW4vbGF0ZXN0L3BpcGVzLmh0bWwjYnVpbHQtaW4t
cGlwZXMKKyAgICBIVFRQX1BPUlQgPSBldmFsKCd7e3BvcnRzW2h0dHBdWzBdfX0nKTsKKyAgICBI
VFRQU19QT1JUID0gZXZhbCgne3twb3J0c1todHRwc11bMF19fScpOworICAgIE9SSUdJTkFMX0hP
U1QgPSBldmFsKCdcJ3t7aG9zdH19XCcnKTsKKyAgICBSRU1PVEVfSE9TVCA9ICd3d3cxLicgKyBP
UklHSU5BTF9IT1NUOworICB9IGNhdGNoIChlKSB7CisgIH0KKyAgcmV0dXJuIHsKKyAgICBIVFRQ
X09SSUdJTjogJ2h0dHA6Ly8nICsgT1JJR0lOQUxfSE9TVCArICc6JyArIEhUVFBfUE9SVCwKKyAg
ICBIVFRQU19PUklHSU46ICdodHRwczovLycgKyBPUklHSU5BTF9IT1NUICsgJzonICsgSFRUUFNf
UE9SVCwKKyAgICBIVFRQX1JFTU9URV9PUklHSU46ICdodHRwOi8vJyArIFJFTU9URV9IT1NUICsg
JzonICsgSFRUUF9QT1JULAorICAgIEhUVFBTX1JFTU9URV9PUklHSU46ICdodHRwczovLycgKyBS
RU1PVEVfSE9TVCArICc6JyArIEhUVFBTX1BPUlQsCisgICAgVU5BVVRIRU5USUNBVEVEX09SSUdJ
TjogJ2h0dHA6Ly8nICsgVU5BVVRIRU5USUNBVEVEX0hPU1QgKyAnOicgKyBIVFRQX1BPUlQKKyAg
fTsKK30KKworZnVuY3Rpb24gYmFzZV9wYXRoKCkgeworICByZXR1cm4gbG9jYXRpb24ucGF0aG5h
bWUucmVwbGFjZSgvXC9bXlwvXSokLywgJy8nKTsKK30KKworZnVuY3Rpb24gdGVzdF9sb2dpbih0
ZXN0LCBvcmlnaW4sIHVzZXJuYW1lLCBwYXNzd29yZCwgY29va2llKSB7CisgIHJldHVybiBuZXcg
UHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgIHdpdGhfaWZyYW1lKAor
ICAgICAgICBvcmlnaW4gKworICAgICAgICAnL3NlcnZpY2V3b3JrZXIvcmVzb3VyY2VzL2ZldGNo
LWFjY2Vzcy1jb250cm9sLWxvZ2luLmh0bWwnKQorICAgICAgICAudGhlbih0ZXN0LnN0ZXBfZnVu
YyhmdW5jdGlvbihmcmFtZSkgeworICAgICAgICAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2Fn
ZUNoYW5uZWwoKTsKKyAgICAgICAgICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gdGVzdC5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgZnJhbWUucmVtb3ZlKCk7Cisg
ICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IGZyYW1lLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoCisgICAgICAgICAgICAgIHt1c2VybmFt
ZTogdXNlcm5hbWUsIHBhc3N3b3JkOiBwYXNzd29yZCwgY29va2llOiBjb29raWV9LAorICAgICAg
ICAgICAgICBvcmlnaW4sIFtjaGFubmVsLnBvcnQyXSk7CisgICAgICAgICAgfSkpOworICAgIH0p
OworfQorCitmdW5jdGlvbiBsb2dpbih0ZXN0KSB7CisgIHJldHVybiB0ZXN0X2xvZ2luKHRlc3Qs
ICdodHRwOi8vMTI3LjAuMC4xOjgwMDAnLAorICAgICAgICAgICAgICAgICAgICAndXNlcm5hbWUx
JywgJ3Bhc3N3b3JkMScsICdjb29raWUxJykKKyAgICAudGhlbihmdW5jdGlvbigpIHsKKyAgICAg
ICAgcmV0dXJuIHRlc3RfbG9naW4odGVzdCwgJ2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMCcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICd1c2VybmFtZTInLCAncGFzc3dvcmQyJywgJ2Nvb2tpZTIn
KTsKKyAgICAgIH0pOworfQorCitmdW5jdGlvbiBsb2dpbl9odHRwcyh0ZXN0KSB7CisgIHJldHVy
biB0ZXN0X2xvZ2luKHRlc3QsICdodHRwczovLzEyNy4wLjAuMTo4NDQzJywKKyAgICAgICAgICAg
ICAgICAgICAgJ3VzZXJuYW1lMXMnLCAncGFzc3dvcmQxcycsICdjb29raWUxJykKKyAgICAudGhl
bihmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRlc3RfbG9naW4odGVzdCwgJ2h0dHBzOi8v
bG9jYWxob3N0Ojg0NDMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlcm5hbWUycycs
ICdwYXNzd29yZDJzJywgJ2Nvb2tpZTInKTsKKyAgICAgIH0pOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9SRUFE
TUUudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zLWFwaS9SRUFETUUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhOGQ5MDljOWI3ZjJlNWZkY2Q3NTYyMDYz
ZWVlMTkyMDFkZmJhNjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL1JFQURNRS50eHQKQEAgLTAsMCArMSw3
IEBACitUaGlzIGRpcmVjdG9yeSBpcyBpbXBvcnRlZCBmcm9tIHRoZSB0aGUgU3RyZWFtcyBBUEkg
cmVwb3NpdG9yeSwgd2hvc2UgVVJMIGFuZCB2ZXJzaW9uIHlvdSBjYW4gZmluZCBhdCB0aGUgVkVS
U0lPTi50eHQKK2ZpbGUuCisKK1RoZXJlIGlzIGEgcGxhbiB0byBtb3ZlIHRoZXNlIHRlc3RzIHRv
IHdlYi1wbGF0Zm9ybS10ZXN0cyByZXBvc2l0b3J5IHNvIGZyb20gdGhhdCBtb21lbnQgb24gdGhp
cyBpbXBvcnRhdGlvbiB3aWxsIGJlCithdXRvbWF0aWMuCisKK0N1cnJlbnQgdmVyc2lvbjogaHR0
cHM6Ly9naXRodWIuY29tL3doYXR3Zy9zdHJlYW1zL3RyZWUvMThlZDQ2M2U1MGMxODljMDE5OGUy
MzM2ZGZiZDEwYjE3ZjM3OTA4MS9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vd2ViLXBsYXRmb3Jt
LXRlc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMtYXBpL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
LWFwaS9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yODRjNmQyZDcxOGFhMjdhYWY3NTY5MzRjYWUyNzU1ZDMwNWM2NWY3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
LWFwaS9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE4IEBACisKK1BBU1MgQ2FuIGNvbnN0cnVjdCBhIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kg
d2l0aCBhIHZhbGlkIGhpZ2ggd2F0ZXIgbWFyayAKK1BBU1MgQ2FuIGNvbnN0cnVjdCBhIEJ5dGVM
ZW5ndGhRdWV1aW5nU3RyYXRlZ3kgd2l0aCBhbnkgdmFsdWUgYXMgaXRzIGhpZ2ggd2F0ZXIgbWFy
ayAKK1BBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSBjb25zdHJ1Y3RvciBiZWhhdmVzIGFz
IGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMgCitQQVNTIEJ5dGVMZW5ndGhRdWV1aW5n
U3RyYXRlZ3kgc2l6ZSBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMg
CitQQVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUgc2hvdWxkIHdv
cmsgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMgCitQQVNTIEJ5dGVM
ZW5ndGhRdWV1aW5nU3RyYXRlZ3kgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgcHJvcGVydGll
cyAKK1BBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSdzIGhpZ2hXYXRlck1hcmsgcHJvcGVy
dHkgY2FuIGJlIHNldCB0byBhbnl0aGluZyAKK0ZBSUwgTG9hZCBieXRlLWxlbmd0aC1xdWV1aW5n
LXN0cmF0ZWd5LmpzIHdpdGggU2hhcmVkV29ya2VyIGFzc2VydF91bnJlYWNoZWQ6IFNoYXJlZFdv
cmtlciBpcyB1bmF2YWlsYWJsZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK0ZBSUwgVW50aXRs
ZWQgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ25hdmlnYXRvci5zZXJ2
aWNlV29ya2VyLmdldFJlZ2lzdHJhdGlvbicpCitGQUlMIENhbiBjb25zdHJ1Y3QgYSBCeXRlTGVu
Z3RoUXVldWluZ1N0cmF0ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneQorRkFJTCBDYW4gY29uc3RydWN0
IGEgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSB3aXRoIGFueSB2YWx1ZSBhcyBpdHMgaGlnaCB3
YXRlciBtYXJrIENhbid0IGZpbmQgdmFyaWFibGU6IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kK
K0ZBSUwgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSBjb25zdHJ1Y3RvciBiZWhhdmVzIGFzIGV4
cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMgYXNzZXJ0X3Rocm93czogY29uc3RydWN0aW9u
IGZhaWxzIHdpdGggdW5kZWZpbmVkIGZ1bmN0aW9uICIoKSA9PiBuZXcgQnl0ZUxlbmd0aFF1ZXVp
bmdTdHJhdGVneSgpIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBCeXRlTGVuZ3RoUXVldWluZ1N0ci4uLiIgKCJSZWZlcmVuY2VFcnJvciIpIGV4cGVj
dGVkIG9iamVjdCAiW29iamVjdCBPYmplY3RdIiAoIlR5cGVFcnJvciIpCitGQUlMIEJ5dGVMZW5n
dGhRdWV1aW5nU3RyYXRlZ3kgc2l6ZSBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBh
cmd1bWVudHMgYXNzZXJ0X3Rocm93czogc2l6ZSBmYWlscyB3aXRoIHVuZGVmaW5lZCBmdW5jdGlv
biAiKCkgPT4gQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSgpIiB0aHJl
dyBvYmplY3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBCeXRlTGVuZ3Ro
UXVldWluZ1N0ci4uLiIgKCJSZWZlcmVuY2VFcnJvciIpIGV4cGVjdGVkIG9iamVjdCAiW29iamVj
dCBPYmplY3RdIiAoIlR5cGVFcnJvciIpCitGQUlMIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3ku
cHJvdG90eXBlLnNpemUgc2hvdWxkIHdvcmsgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0
cyBhcmd1bWVudHMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVn
eQorRkFJTCBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IGluc3RhbmNlcyBoYXZlIHRoZSBjb3Jy
ZWN0IHByb3BlcnRpZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJh
dGVneQorRkFJTCBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5J3MgaGlnaFdhdGVyTWFyayBwcm9w
ZXJ0eSBjYW4gYmUgc2V0IHRvIGFueXRoaW5nIENhbid0IGZpbmQgdmFyaWFibGU6IEJ5dGVMZW5n
dGhRdWV1aW5nU3RyYXRlZ3kKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0
ZWd5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMtYXBpL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
M2YxNWFjYjlmZmFiNjhhZTI4NWY1NzgyNjcxNzdiZmI3ZTVkYjIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFw
aS9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29y
a2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOword29ya2VyX3Rlc3QoJ2J5dGUtbGVuZ3RoLXF1ZXVp
bmctc3RyYXRlZ3kuanMnKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9ieXRlLWxlbmd0aC1xdWV1
aW5nLXN0cmF0ZWd5LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zLWFwaS9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU0NDA3YWY5OTEzODg5M2I4YjUyOTJhYTI0ODEwMDQxNjJlNzJlNWEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuanMKQEAgLTAsMCArMSwxMDcgQEAK
Kyd1c2Ugc3RyaWN0JzsKKworaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgeworICBzZWxmLmltcG9y
dFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnKTsKK30KKwordGVzdCgoKSA9PiB7
CisKKyAgbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0p
OworCit9LCAnQ2FuIGNvbnN0cnVjdCBhIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgd2l0aCBh
IHZhbGlkIGhpZ2ggd2F0ZXIgbWFyaycpOworCit0ZXN0KCgpID0+IHsKKworICBmb3IgKGNvbnN0
IGhpZ2hXYXRlck1hcmsgb2YgWy1JbmZpbml0eSwgTmFOLCAnZm9vJywge30sICgpID0+IHt9XSkg
eworICAgIGNvbnN0IHN0cmF0ZWd5ID0gbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koeyBo
aWdoV2F0ZXJNYXJrIH0pOworICAgIGFzc2VydF9lcXVhbHMoc3RyYXRlZ3kuaGlnaFdhdGVyTWFy
aywgaGlnaFdhdGVyTWFyaywgYCR7aGlnaFdhdGVyTWFya30gZ2V0cyBzZXQgY29ycmVjdGx5YCk7
CisgIH0KKworfSwgJ0NhbiBjb25zdHJ1Y3QgYSBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IHdp
dGggYW55IHZhbHVlIGFzIGl0cyBoaWdoIHdhdGVyIG1hcmsnKTsKKwordGVzdCgoKSA9PiB7CisK
KyAgY29uc3QgaGlnaFdhdGVyTWFyayA9IDE7CisgIGNvbnN0IGhpZ2hXYXRlck1hcmtPYmplY3RH
ZXR0ZXIgPSB7CisgICAgZ2V0IGhpZ2hXYXRlck1hcmsoKSB7IHJldHVybiBoaWdoV2F0ZXJNYXJr
OyB9CisgIH07CisgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCd3b3chJyk7CisgIGNvbnN0IGhp
Z2hXYXRlck1hcmtPYmplY3RHZXR0ZXJUaHJvd2luZyA9IHsKKyAgICBnZXQgaGlnaFdhdGVyTWFy
aygpIHsgdGhyb3cgZXJyb3I7IH0KKyAgfTsKKworICBhc3NlcnRfdGhyb3dzKHsgbmFtZTogJ1R5
cGVFcnJvcicgfSwgKCkgPT4gbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koKSwgJ2NvbnN0
cnVjdGlvbiBmYWlscyB3aXRoIHVuZGVmaW5lZCcpOworICBhc3NlcnRfdGhyb3dzKHsgbmFtZTog
J1R5cGVFcnJvcicgfSwgKCkgPT4gbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kobnVsbCks
ICdjb25zdHJ1Y3Rpb24gZmFpbHMgd2l0aCBudWxsJyk7CisgIGFzc2VydF90aHJvd3MoeyBuYW1l
OiAnRXJyb3InIH0sICgpID0+IG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KGhpZ2hXYXRl
ck1hcmtPYmplY3RHZXR0ZXJUaHJvd2luZyksCisgICAgJ2NvbnN0cnVjdGlvbiBmYWlscyB3aXRo
IGFuIG9iamVjdCB3aXRoIGEgdGhyb3dpbmcgaGlnaFdhdGVyTWFyayBnZXR0ZXInKTsKKworICAv
LyBTaG91bGQgbm90IGZhaWw6CisgIG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KCdwb3Rh
dG8nKTsKKyAgbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koe30pOworICBuZXcgQnl0ZUxl
bmd0aFF1ZXVpbmdTdHJhdGVneShoaWdoV2F0ZXJNYXJrT2JqZWN0R2V0dGVyKTsKKworfSwgJ0J5
dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgY29uc3RydWN0b3IgYmVoYXZlcyBhcyBleHBlY3RlZCB3
aXRoIHN0cmFuZ2UgYXJndW1lbnRzJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHNpemUg
PSAxMDI0OworICBjb25zdCBjaHVuayA9IHsgYnl0ZUxlbmd0aDogc2l6ZSB9OworICBjb25zdCBj
aHVua0dldHRlciA9IHsKKyAgICBnZXQgYnl0ZUxlbmd0aCgpIHsgcmV0dXJuIHNpemU7IH0KKyAg
fTsKKyAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ3dvdyEnKTsKKyAgY29uc3QgY2h1bmtHZXR0
ZXJUaHJvd2luZyA9IHsKKyAgICBnZXQgYnl0ZUxlbmd0aCgpIHsgdGhyb3cgZXJyb3I7IH0KKyAg
fTsKKyAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdUeXBlRXJyb3InIH0sICgpID0+IEJ5dGVMZW5n
dGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoKSwgJ3NpemUgZmFpbHMgd2l0aCB1bmRl
ZmluZWQnKTsKKyAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdUeXBlRXJyb3InIH0sICgpID0+IEJ5
dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUobnVsbCksICdzaXplIGZhaWxz
IHdpdGggbnVsbCcpOworICBhc3NlcnRfZXF1YWxzKEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3ku
cHJvdG90eXBlLnNpemUoJ3BvdGF0bycpLCB1bmRlZmluZWQsCisgICAgJ3NpemUgc3VjY2VlZHMg
d2l0aCB1bmRlZmluZWQgd2l0aCBhIHJhbmRvbSBub24tb2JqZWN0IHR5cGUnKTsKKyAgYXNzZXJ0
X2VxdWFscyhCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKHt9KSwgdW5k
ZWZpbmVkLAorICAgICdzaXplIHN1Y2NlZWRzIHdpdGggdW5kZWZpbmVkIHdpdGggYW4gb2JqZWN0
IHdpdGhvdXQgaHdtIHByb3BlcnR5Jyk7CisgIGFzc2VydF9lcXVhbHMoQnl0ZUxlbmd0aFF1ZXVp
bmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZShjaHVuayksIHNpemUsCisgICAgJ3NpemUgc3VjY2Vl
ZHMgd2l0aCB0aGUgcmlnaHQgYW1vdW50IHdpdGggYW4gb2JqZWN0IHdpdGggYSBod20nKTsKKyAg
YXNzZXJ0X2VxdWFscyhCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKGNo
dW5rR2V0dGVyKSwgc2l6ZSwKKyAgICAnc2l6ZSBzdWNjZWVkcyB3aXRoIHRoZSByaWdodCBhbW91
bnQgd2l0aCBhbiBvYmplY3Qgd2l0aCBhIGh3bSBnZXR0ZXInKTsKKyAgYXNzZXJ0X3Rocm93cyh7
IG5hbWU6ICdFcnJvcicgfSwgKCkgPT4gQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5
cGUuc2l6ZShjaHVua0dldHRlclRocm93aW5nKSwKKyAgICAnc2l6ZSBmYWlscyB3aXRoIHRoZSBl
cnJvciB0aHJvd24gYnkgdGhlIGdldHRlcicpOworCit9LCAnQnl0ZUxlbmd0aFF1ZXVpbmdTdHJh
dGVneSBzaXplIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cycpOwor
Cit0ZXN0KCgpID0+IHsKKworICBjb25zdCB0aGlzVmFsdWUgPSBudWxsOworICBjb25zdCByZXR1
cm5WYWx1ZSA9IHsgJ3JldHVybmVkIGZyb20nOiAnYnl0ZUxlbmd0aCBnZXR0ZXInIH07CisgIGNv
bnN0IGNodW5rID0geworICAgIGdldCBieXRlTGVuZ3RoKCkgeyByZXR1cm4gcmV0dXJuVmFsdWU7
IH0KKyAgfTsKKworICBhc3NlcnRfZXF1YWxzKEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJv
dG90eXBlLnNpemUuY2FsbCh0aGlzVmFsdWUsIGNodW5rKSwgcmV0dXJuVmFsdWUpOworCit9LCAn
Qnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSBzaG91bGQgd29yayBnZW5l
cmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cycpOworCit0ZXN0KCgpID0+IHsK
KworICBjb25zdCBzdHJhdGVneSA9IG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHsgaGln
aFdhdGVyTWFyazogNCB9KTsKKworICBhc3NlcnRfb2JqZWN0X2VxdWFscyhPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKHN0cmF0ZWd5LCAnaGlnaFdhdGVyTWFyaycpLAorICAgIHsgdmFs
dWU6IDQsIHdyaXRhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRy
dWUgfSwKKyAgICAnaGlnaFdhdGVyTWFyayBwcm9wZXJ0eSBzaG91bGQgYmUgYSBkYXRhIHByb3Bl
cnR5IHdpdGggdGhlIHZhbHVlIHBhc3NlZCB0aGUgY29uc3RydWN0b3InKTsKKyAgYXNzZXJ0X2Vx
dWFscyh0eXBlb2Ygc3RyYXRlZ3kuc2l6ZSwgJ2Z1bmN0aW9uJyk7CisKK30sICdCeXRlTGVuZ3Ro
UXVldWluZ1N0cmF0ZWd5IGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IHByb3BlcnRpZXMnKTsK
KwordGVzdCgoKSA9PiB7CisKKyAgY29uc3Qgc3RyYXRlZ3kgPSBuZXcgQnl0ZUxlbmd0aFF1ZXVp
bmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSk7CisgIGFzc2VydF9lcXVhbHMoc3RyYXRl
Z3kuaGlnaFdhdGVyTWFyaywgNCk7CisKKyAgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayA9IDEwOwor
ICBhc3NlcnRfZXF1YWxzKHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmssIDEwKTsKKworICBzdHJhdGVn
eS5oaWdoV2F0ZXJNYXJrID0gJ2JhbmFuYSc7CisgIGFzc2VydF9lcXVhbHMoc3RyYXRlZ3kuaGln
aFdhdGVyTWFyaywgJ2JhbmFuYScpOworCit9LCAnQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneVwn
cyBoaWdoV2F0ZXJNYXJrIHByb3BlcnR5IGNhbiBiZSBzZXQgdG8gYW55dGhpbmcnKTsKKworZG9u
ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zLWFwaS9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvY291
bnQtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM1OGM1ZmM5NzFh
MTU3N2ZiNDc1NWJlYzBkZDU2NjdmOWRhNGFlYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvY291bnQtcXVl
dWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorCitQQVNTIENhbiBj
b25zdHJ1Y3QgYSBDb3VudFF1ZXVpbmdTdHJhdGVneSB3aXRoIGEgdmFsaWQgaGlnaCB3YXRlciBt
YXJrIAorUEFTUyBDYW4gY29uc3RydWN0IGEgQ291bnRRdWV1aW5nU3RyYXRlZ3kgd2l0aCBhbnkg
dmFsdWUgYXMgaXRzIGhpZ2ggd2F0ZXIgbWFyayAKK1BBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3kg
Y29uc3RydWN0b3IgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzIAor
UEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSBzaG91bGQgd29yayBnZW5l
cmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cyAKK1BBU1MgQ291bnRRdWV1aW5n
U3RyYXRlZ3kgc2l6ZSBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMg
CitQQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5IGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IHBy
b3BlcnRpZXMgCitQQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5J3MgaGlnaFdhdGVyTWFyayBwcm9w
ZXJ0eSBjYW4gYmUgc2V0IHRvIGFueXRoaW5nIAorRkFJTCBMb2FkIGNvdW50LXF1ZXVpbmctc3Ry
YXRlZ3kuanMgd2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0X3VucmVhY2hlZDogU2hhcmVkV29ya2Vy
IGlzIHVuYXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBVbnRpdGxlZCB1
bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnbmF2aWdhdG9yLnNlcnZpY2VX
b3JrZXIuZ2V0UmVnaXN0cmF0aW9uJykKK0ZBSUwgQ2FuIGNvbnN0cnVjdCBhIENvdW50UXVldWlu
Z1N0cmF0ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogQ291bnRRdWV1aW5nU3RyYXRlZ3kKK0ZBSUwgQ2FuIGNvbnN0cnVjdCBhIENvdW50UXVldWlu
Z1N0cmF0ZWd5IHdpdGggYW55IHZhbHVlIGFzIGl0cyBoaWdoIHdhdGVyIG1hcmsgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogQ291bnRRdWV1aW5nU3RyYXRlZ3kKK0ZBSUwgQ291bnRRdWV1aW5nU3RyYXRl
Z3kgY29uc3RydWN0b3IgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRz
IGFzc2VydF90aHJvd3M6IGNvbnN0cnVjdGlvbiBmYWlscyB3aXRoIHVuZGVmaW5lZCBmdW5jdGlv
biAiKCkgPT4gbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KCkiIHRocmV3IG9iamVjdCAiUmVmZXJl
bmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IENvdW50UXVldWluZ1N0cmF0ZWd5IiAoIlJl
ZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJbb2JqZWN0IE9iamVjdF0iICgiVHlwZUVy
cm9yIikKK0ZBSUwgQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUgc2hvdWxkIHdv
cmsgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogQ291bnRRdWV1aW5nU3RyYXRlZ3kKK0ZBSUwgQ291bnRRdWV1aW5nU3RyYXRlZ3kg
c2l6ZSBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogQ291bnRRdWV1aW5nU3RyYXRlZ3kKK0ZBSUwgQ291bnRRdWV1aW5nU3RyYXRl
Z3kgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgcHJvcGVydGllcyBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBDb3VudFF1ZXVpbmdTdHJhdGVneQorRkFJTCBDb3VudFF1ZXVpbmdTdHJhdGVneSdzIGhp
Z2hXYXRlck1hcmsgcHJvcGVydHkgY2FuIGJlIHNldCB0byBhbnl0aGluZyBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBDb3VudFF1ZXVpbmdTdHJhdGVneQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL2NvdW50LXF1ZXVpbmct
c3RyYXRlZ3kuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy1hcGkvY291bnQtcXVldWluZy1zdHJhdGVneS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJh
ZmQxMjY4ODY1Y2M4YWI3ZTk4ZDcxM2FkYjk4Zjk1ZGVlODU5M2MKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBp
L2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3JpcHQ+CisKKzxzY3Jp
cHQgc3JjPSJjb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Cisn
dXNlIHN0cmljdCc7Cit3b3JrZXJfdGVzdCgnY291bnQtcXVldWluZy1zdHJhdGVneS5qcycpOwor
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMtYXBpL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuanMgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL2NvdW50LXF1
ZXVpbmctc3RyYXRlZ3kuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWFlMDA2M2Y1N2QwOWRkNDdmYWY2ODFlYzgw
OWEwZjgzNzYzZDVjNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvY291bnQtcXVldWluZy1zdHJhdGVneS5q
cwpAQCAtMCwwICsxLDEwNiBAQAorJ3VzZSBzdHJpY3QnOworCitpZiAoc2VsZi5pbXBvcnRTY3Jp
cHRzKSB7CisgIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycp
OworfQorCit0ZXN0KCgpID0+IHsKKworICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdo
V2F0ZXJNYXJrOiA0IH0pOworCit9LCAnQ2FuIGNvbnN0cnVjdCBhIENvdW50UXVldWluZ1N0cmF0
ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsnKTsKKwordGVzdCgoKSA9PiB7CisKKyAg
Zm9yIChjb25zdCBoaWdoV2F0ZXJNYXJrIG9mIFstSW5maW5pdHksIE5hTiwgJ2ZvbycsIHt9LCAo
KSA9PiB7fV0pIHsKKyAgICBjb25zdCBzdHJhdGVneSA9IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVn
eSh7IGhpZ2hXYXRlck1hcmsgfSk7CisgICAgYXNzZXJ0X2VxdWFscyhzdHJhdGVneS5oaWdoV2F0
ZXJNYXJrLCBoaWdoV2F0ZXJNYXJrLCBgJHtoaWdoV2F0ZXJNYXJrfSBnZXRzIHNldCBjb3JyZWN0
bHlgKTsKKyAgfQorCit9LCAnQ2FuIGNvbnN0cnVjdCBhIENvdW50UXVldWluZ1N0cmF0ZWd5IHdp
dGggYW55IHZhbHVlIGFzIGl0cyBoaWdoIHdhdGVyIG1hcmsnKTsKKwordGVzdCgoKSA9PiB7CisK
KyAgY29uc3QgaGlnaFdhdGVyTWFyayA9IDE7CisgIGNvbnN0IGhpZ2hXYXRlck1hcmtPYmplY3RH
ZXR0ZXIgPSB7CisgICAgZ2V0IGhpZ2hXYXRlck1hcmsoKSB7IHJldHVybiBoaWdoV2F0ZXJNYXJr
OyB9CisgIH07CisgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCd3b3chJyk7CisgIGNvbnN0IGhp
Z2hXYXRlck1hcmtPYmplY3RHZXR0ZXJUaHJvd2luZyA9IHsKKyAgICBnZXQgaGlnaFdhdGVyTWFy
aygpIHsgdGhyb3cgZXJyb3I7IH0KKyAgfTsKKworICBhc3NlcnRfdGhyb3dzKHsgbmFtZTogJ1R5
cGVFcnJvcicgfSwgKCkgPT4gbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KCksICdjb25zdHJ1Y3Rp
b24gZmFpbHMgd2l0aCB1bmRlZmluZWQnKTsKKyAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdUeXBl
RXJyb3InIH0sICgpID0+IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneShudWxsKSwgJ2NvbnN0cnVj
dGlvbiBmYWlscyB3aXRoIG51bGwnKTsKKyAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdFcnJvcicg
fSwgKCkgPT4gbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KGhpZ2hXYXRlck1hcmtPYmplY3RHZXR0
ZXJUaHJvd2luZyksCisgICAgJ2NvbnN0cnVjdGlvbiBmYWlscyB3aXRoIGFuIG9iamVjdCB3aXRo
IGEgdGhyb3dpbmcgaGlnaFdhdGVyTWFyayBnZXR0ZXInKTsKKworICAvLyBTaG91bGQgbm90IGZh
aWw6CisgIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSgncG90YXRvJyk7CisgIG5ldyBDb3VudFF1
ZXVpbmdTdHJhdGVneSh7fSk7CisgIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneShoaWdoV2F0ZXJN
YXJrT2JqZWN0R2V0dGVyKTsKKworfSwgJ0NvdW50UXVldWluZ1N0cmF0ZWd5IGNvbnN0cnVjdG9y
IGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cycpOworCisKK3Rlc3Qo
KCkgPT4geworCisgIGNvbnN0IHRoaXNWYWx1ZSA9IG51bGw7CisgIGNvbnN0IGNodW5rID0gewor
ICAgIGdldCBieXRlTGVuZ3RoKCkgeworICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignc2hvdWxk
blwndCBiZSBjYWxsZWQnKTsKKyAgICB9CisgIH07CisKKyAgYXNzZXJ0X2VxdWFscyhDb3VudFF1
ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZS5jYWxsKHRoaXNWYWx1ZSwgY2h1bmspLCAxKTsK
KworfSwgJ0NvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplIHNob3VsZCB3b3JrIGdl
bmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzJyk7CisKK3Rlc3QoKCkgPT4g
eworCisgIGNvbnN0IHNpemUgPSAxMDI0OworICBjb25zdCBjaHVuayA9IHsgYnl0ZUxlbmd0aDog
c2l6ZSB9OworICBjb25zdCBjaHVua0dldHRlciA9IHsKKyAgICBnZXQgYnl0ZUxlbmd0aCgpIHsg
cmV0dXJuIHNpemU7IH0KKyAgfTsKKyAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ3dvdyEnKTsK
KyAgY29uc3QgY2h1bmtHZXR0ZXJUaHJvd2luZyA9IHsKKyAgICBnZXQgYnl0ZUxlbmd0aCgpIHsg
dGhyb3cgZXJyb3I7IH0KKyAgfTsKKworICBhc3NlcnRfZXF1YWxzKENvdW50UXVldWluZ1N0cmF0
ZWd5LnByb3RvdHlwZS5zaXplKCksIDEsICdzaXplIHJldHVybnMgMSB3aXRoIHVuZGVmaW5lZCcp
OworICBhc3NlcnRfZXF1YWxzKENvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKG51
bGwpLCAxLCAnc2l6ZSByZXR1cm5zIDEgd2l0aCBudWxsJyk7CisgIGFzc2VydF9lcXVhbHMoQ291
bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoJ3BvdGF0bycpLCAxLCAnc2l6ZSByZXR1
cm5zIDEgd2l0aCBub24tb2JqZWN0IHR5cGUnKTsKKyAgYXNzZXJ0X2VxdWFscyhDb3VudFF1ZXVp
bmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSh7fSksIDEsICdzaXplIHJldHVybnMgMSB3aXRoIGVt
cHR5IG9iamVjdCcpOworICBhc3NlcnRfZXF1YWxzKENvdW50UXVldWluZ1N0cmF0ZWd5LnByb3Rv
dHlwZS5zaXplKGNodW5rKSwgMSwgJ3NpemUgcmV0dXJucyAxIHdpdGggYSBjaHVuaycpOworICBh
c3NlcnRfZXF1YWxzKENvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKGNodW5rR2V0
dGVyKSwgMSwgJ3NpemUgcmV0dXJucyAxIHdpdGggY2h1bmsgZ2V0dGVyJyk7CisgIGFzc2VydF9l
cXVhbHMoQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoY2h1bmtHZXR0ZXJUaHJv
d2luZyksIDEsCisgICAgJ3NpemUgcmV0dXJucyAxIHdpdGggY2h1bmsgZ2V0dGVyIHRoYXQgdGhy
b3dzJyk7CisKK30sICdDb3VudFF1ZXVpbmdTdHJhdGVneSBzaXplIGJlaGF2ZXMgYXMgZXhwZWN0
ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cycpOworCit0ZXN0KCgpID0+IHsKKworICBjb25zdCBz
dHJhdGVneSA9IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSk7
CisKKyAgYXNzZXJ0X29iamVjdF9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihzdHJhdGVneSwgJ2hpZ2hXYXRlck1hcmsnKSwKKyAgICB7IHZhbHVlOiA0LCB3cml0YWJsZTog
dHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0sCisgICAgJ2hpZ2hX
YXRlck1hcmsgcHJvcGVydHkgc2hvdWxkIGJlIGEgZGF0YSBwcm9wZXJ0eSB3aXRoIHRoZSB2YWx1
ZSBwYXNzZWQgdGhlIGNvbnN0cnVjdG9yJyk7CisgIGFzc2VydF9lcXVhbHModHlwZW9mIHN0cmF0
ZWd5LnNpemUsICdmdW5jdGlvbicpOworCit9LCAnQ291bnRRdWV1aW5nU3RyYXRlZ3kgaW5zdGFu
Y2VzIGhhdmUgdGhlIGNvcnJlY3QgcHJvcGVydGllcycpOworCit0ZXN0KCgpID0+IHsKKworICBj
b25zdCBzdHJhdGVneSA9IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6
IDQgfSk7CisgIGFzc2VydF9lcXVhbHMoc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaywgNCk7CisKKyAg
c3RyYXRlZ3kuaGlnaFdhdGVyTWFyayA9IDEwOworICBhc3NlcnRfZXF1YWxzKHN0cmF0ZWd5Lmhp
Z2hXYXRlck1hcmssIDEwKTsKKworICBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrID0gJ2JhbmFuYSc7
CisgIGFzc2VydF9lcXVhbHMoc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaywgJ2JhbmFuYScpOworCit9
LCAnQ291bnRRdWV1aW5nU3RyYXRlZ3lcJ3MgaGlnaFdhdGVyTWFyayBwcm9wZXJ0eSBjYW4gYmUg
c2V0IHRvIGFueXRoaW5nJyk7CisKK2RvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFt
cy9iYWQtc3RyYXRlZ2llcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0
ZWdpZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjOWQyN2M1MDFmMjQwM2EyMTg2NDA1NTJl
OWY2ZWY4YThjNGUxOTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0
cmF0ZWdpZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjMgQEAKKworUEFTUyBSZWFkYWJsZSBz
dHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgZ2V0dGVyIAorUEFTUyBSZWFkYWJsZSBzdHJl
YW06IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgbWV0aG9kIAorUEFTUyBSZWFkYWJsZSBzdHJlYW06
IHRocm93aW5nIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgZ2V0dGVyIAorUEFTUyBSZWFkYWJsZSBz
dHJlYW06IGludmFsaWQgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayAKK1BBU1MgUmVhZGFibGUgc3Ry
ZWFtOiBpbnZhbGlkIHN0cmF0ZWd5LnNpemUgcmV0dXJuIHZhbHVlIAorRkFJTCBMb2FkIGJhZC1z
dHJhdGVnaWVzLmpzIHdpdGggU2hhcmVkV29ya2VyIGFzc2VydF91bnJlYWNoZWQ6IFNoYXJlZFdv
cmtlciBpcyB1bmF2YWlsYWJsZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK0ZBSUwgVW50aXRs
ZWQgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ25hdmlnYXRvci5zZXJ2
aWNlV29ya2VyLmdldFJlZ2lzdHJhdGlvbicpCitGQUlMIFJlYWRhYmxlIHN0cmVhbTogdGhyb3dp
bmcgc3RyYXRlZ3kuc2l6ZSBnZXR0ZXIgYXNzZXJ0X3Rocm93czogY29uc3RydWN0aW9uIHNob3Vs
ZCByZS10aHJvdyB0aGUgZXJyb3IgZnVuY3Rpb24gIigpID0+IHsKKyAgICBuZXcgUmVhZGFibGVT
dHJlYW0oe30sIHsKKyAgICAgIGdldCBzaXplKCkgeworIC4uLiIgdGhyZXcgb2JqZWN0ICJSZWZl
cmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0iICgiUmVmZXJl
bmNlRXJyb3IiKSBleHBlY3RlZCBvYmplY3QgIkVycm9yOiBhIHVuaXF1ZSBzdHJpbmciICgiRXJy
b3IiKQorRkFJTCBSZWFkYWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgbWV0aG9k
IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRhYmxlIHN0cmVh
bTogdGhyb3dpbmcgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayBnZXR0ZXIgYXNzZXJ0X3Rocm93czog
Y29uc3RydWN0aW9uIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3IgZnVuY3Rpb24gIigpID0+IHsK
KyAgICBuZXcgUmVhZGFibGVTdHJlYW0oe30sIHsKKyAgICAgIHNpemUoKSB7CisgICAgIC4uLiIg
dGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFi
bGVTdHJlYW0iICgiUmVmZXJlbmNlRXJyb3IiKSBleHBlY3RlZCBvYmplY3QgIkVycm9yOiBhIHVu
aXF1ZSBzdHJpbmciICgiRXJyb3IiKQorRkFJTCBSZWFkYWJsZSBzdHJlYW06IGludmFsaWQgc3Ry
YXRlZ3kuaGlnaFdhdGVyTWFyayBhc3NlcnRfdGhyb3dzOiBjb25zdHJ1Y3Rpb24gc2hvdWxkIHRo
cm93IGEgUmFuZ2VFcnJvciBmb3IgLTEgZnVuY3Rpb24gIigpID0+IHsKKyAgICAgIG5ldyBSZWFk
YWJsZVN0cmVhbSh7fSwgeworICAgICAgICBzaXplKCkgeworIC4uLiIgdGhyZXcgb2JqZWN0ICJS
ZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0iICgiUmVm
ZXJlbmNlRXJyb3IiKSBleHBlY3RlZCBvYmplY3QgIlJhbmdlRXJyb3IiICgiUmFuZ2VFcnJvciIp
CitGQUlMIFJlYWRhYmxlIHN0cmVhbTogaW52YWxpZCBzdHJhdGVneS5zaXplIHJldHVybiB2YWx1
ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRh
YmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3Ry
YXRlZ2llcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmYWI5MzEzMjM5Yjc3Yzc2NmE5MzIyYjQzNDFlZmM1
M2MyNmRiZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdp
ZXMuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vycy9yZXNvdXJj
ZXMvdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
dGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSJiYWQtc3RyYXRl
Z2llcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOword29ya2VyX3Rlc3Qo
J2JhZC1zdHJhdGVnaWVzLmpzJyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3Ry
ZWFtcy9iYWQtc3RyYXRlZ2llcy5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43ZDA4NWM3NmEyOWZhYTZkMGUyNWVlMzBkYzk5NGIwYmQ3MmRlNGIyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmpzCkBAIC0w
LDAgKzEsMTIyIEBACisndXNlIHN0cmljdCc7CisKK2lmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsK
KyAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Cit9CisK
K3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBz
dHJpbmcnKTsKKworICBhc3NlcnRfdGhyb3dzKHRoZUVycm9yLCAoKSA9PiB7CisgICAgbmV3IFJl
YWRhYmxlU3RyZWFtKHt9LCB7CisgICAgICBnZXQgc2l6ZSgpIHsKKyAgICAgICAgdGhyb3cgdGhl
RXJyb3I7CisgICAgICB9LAorICAgICAgaGlnaFdhdGVyTWFyazogNQorICAgIH0pOworICB9LCAn
Y29uc3RydWN0aW9uIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3InKTsKKworfSwgJ1JlYWRhYmxl
IHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBnZXR0ZXInKTsKKworcHJvbWlzZV90ZXN0
KCgpID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5n
Jyk7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAorICAgIHsKKyAgICAgIHN0YXJ0
KGMpIHsKKyAgICAgICAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwgKCkgPT4gYy5lbnF1ZXVlKCdh
JyksICdlbnF1ZXVlIHNob3VsZCB0aHJvdyB0aGUgZXJyb3InKTsKKyAgICAgIH0KKyAgICB9LAor
ICAgIHsKKyAgICAgIHNpemUoKSB7CisgICAgICAgIHRocm93IHRoZUVycm9yOworICAgICAgfSwK
KyAgICAgIGhpZ2hXYXRlck1hcms6IDUKKyAgICB9CisgICk7CisKKyAgcmV0dXJuIHJzLmdldFJl
YWRlcigpLmNsb3NlZC5jYXRjaChlID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9y
LCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKKyAgfSk7CisKK30sICdS
ZWFkYWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgbWV0aG9kJyk7CisKK3Rlc3Qo
KCkgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcn
KTsKKworICBhc3NlcnRfdGhyb3dzKHRoZUVycm9yLCAoKSA9PiB7CisgICAgbmV3IFJlYWRhYmxl
U3RyZWFtKHt9LCB7CisgICAgICBzaXplKCkgeworICAgICAgICByZXR1cm4gMTsKKyAgICAgIH0s
CisgICAgICBnZXQgaGlnaFdhdGVyTWFyaygpIHsKKyAgICAgICAgdGhyb3cgdGhlRXJyb3I7Cisg
ICAgICB9CisgICAgfSk7CisgIH0sICdjb25zdHJ1Y3Rpb24gc2hvdWxkIHJlLXRocm93IHRoZSBl
cnJvcicpOworCit9LCAnUmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5oaWdoV2F0
ZXJNYXJrIGdldHRlcicpOworCit0ZXN0KCgpID0+IHsKKworICBmb3IgKGNvbnN0IGhpZ2hXYXRl
ck1hcmsgb2YgWy0xLCAtSW5maW5pdHldKSB7CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgUmFuZ2VF
cnJvcigpLCAoKSA9PiB7CisgICAgICBuZXcgUmVhZGFibGVTdHJlYW0oe30sIHsKKyAgICAgICAg
c2l6ZSgpIHsKKyAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfSwKKyAgICAgICAgaGlnaFdh
dGVyTWFyaworICAgICAgfSk7CisgICAgfSwgJ2NvbnN0cnVjdGlvbiBzaG91bGQgdGhyb3cgYSBS
YW5nZUVycm9yIGZvciAnICsgaGlnaFdhdGVyTWFyayk7CisgIH0KKworICBmb3IgKGNvbnN0IGhp
Z2hXYXRlck1hcmsgb2YgW05hTiwgJ2ZvbycsIHt9XSkgeworICAgIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigpLCAoKSA9PiB7CisgICAgICBuZXcgUmVhZGFibGVTdHJlYW0oe30sIHsKKyAg
ICAgICAgc2l6ZSgpIHsKKyAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfSwKKyAgICAgICAg
aGlnaFdhdGVyTWFyaworICAgICAgfSk7CisgICAgfSwgJ2NvbnN0cnVjdGlvbiBzaG91bGQgdGhy
b3cgYSBUeXBlRXJyb3IgZm9yICcgKyBoaWdoV2F0ZXJNYXJrKTsKKyAgfQorCit9LCAnUmVhZGFi
bGUgc3RyZWFtOiBpbnZhbGlkIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsnKTsKKworcHJvbWlzZV90
ZXN0KCgpID0+IHsKKworICBjb25zdCBwcm9taXNlcyA9IFtdOworICBmb3IgKGNvbnN0IHNpemUg
b2YgW05hTiwgLUluZmluaXR5LCBJbmZpbml0eSwgLTFdKSB7CisgICAgbGV0IHRoZUVycm9yOwor
ICAgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAorICAgICAgeworICAgICAgICBzdGFy
dChjKSB7CisgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGMuZW5xdWV1ZSgnaGknKTsKKyAg
ICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ2VucXVldWUgZGlkblwndCB0aHJvdycpOworICAg
ICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGVycm9y
Lm5hbWUsICdSYW5nZUVycm9yJywgJ2VucXVldWUgc2hvdWxkIHRocm93IGEgUmFuZ2VFcnJvciBm
b3IgJyArIHNpemUpOworICAgICAgICAgICAgdGhlRXJyb3IgPSBlcnJvcjsKKyAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgIH0sCisgICAgICB7CisgICAgICAgIHNpemUoKSB7CisgICAgICAg
ICAgcmV0dXJuIHNpemU7CisgICAgICAgIH0sCisgICAgICAgIGhpZ2hXYXRlck1hcms6IDUKKyAg
ICAgIH0KKyAgICApOworCisgICAgcHJvbWlzZXMucHVzaChycy5nZXRSZWFkZXIoKS5jbG9zZWQu
Y2F0Y2goZSA9PiB7CisgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnY2xvc2VkIHNo
b3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgZm9yICcgKyBzaXplKTsKKyAgICB9KSk7CisgIH0K
KworICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpOworCit9LCAnUmVhZGFibGUgc3RyZWFt
OiBpbnZhbGlkIHN0cmF0ZWd5LnNpemUgcmV0dXJuIHZhbHVlJyk7CisKK2RvbmUoKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy1hcGkvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1h
cGkvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42MWZlNjI0OTk0OTI5YzE2Mjg2ZGY1ZDhiYmZhNTNkM2NmZWU2NzM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTIgQEAKKworUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBzdGFy
dDogdGhyb3dpbmcgZ2V0dGVyIAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dp
bmcgbWV0aG9kIAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBnZXR0ZXIg
KGluaXRpYWwgcHVsbCkgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIG1l
dGhvZCAoaW5pdGlhbCBwdWxsKSAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2UgcHVsbDogdGhyb3dp
bmcgZ2V0dGVyIChzZWNvbmQgcHVsbCkgCitQQVNTIFVuZGVybHlpbmcgc291cmNlIHB1bGw6IHRo
cm93aW5nIG1ldGhvZCAoc2Vjb25kIHB1bGwpIAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBjYW5j
ZWw6IHRocm93aW5nIGdldHRlciAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2UgY2FuY2VsOiB0aHJv
d2luZyBtZXRob2QgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24g
YW4gZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cgCitQQVNTIFVuZGVybHlp
bmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYSBub24tZW1wdHkgY2FuY2VsZWQgc3RyZWFt
IHNob3VsZCBub3QgdGhyb3cgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVl
dWUgb24gYSBjbG9zZWQgc3RyZWFtIHNob3VsZCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3Vy
Y2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlcnJvcmVkIHN0cmVhbSBzaG91bGQgdGhyb3cgCitQ
QVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGFuIGVtcHR5IHN0
cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIAorUEFTUyBVbmRlcmx5aW5nIHNvdXJj
ZTogY2FsbGluZyBjbG9zZSB0d2ljZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93
IHRoZSBzZWNvbmQgdGltZSAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ug
b24gYW4gZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cgCitQQVNTIFVuZGVy
bHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIG9uIGEgbm9uLWVtcHR5IGNhbmNlbGVkIHN0cmVh
bSBzaG91bGQgbm90IHRocm93IAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9z
ZSBhZnRlciBlcnJvciBzaG91bGQgdGhyb3cgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxs
aW5nIGVycm9yIHR3aWNlIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUgCitQQVNTIFVuZGVy
bHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIGFmdGVyIGNsb3NlIHNob3VsZCB0aHJvdyAKK1BB
U1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYW5kIHJldHVybmluZyBhIHJlamVj
dGVkIHByb21pc2UgZnJvbSBzdGFydCBzaG91bGQgY2F1c2UgdGhlIHN0cmVhbSB0byBlcnJvciB3
aXRoIHRoZSBmaXJzdCBlcnJvciAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJy
b3IgYW5kIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgZnJvbSBwdWxsIHNob3VsZCBjYXVz
ZSB0aGUgc3RyZWFtIHRvIGVycm9yIHdpdGggdGhlIGZpcnN0IGVycm9yIAorRkFJTCBMb2FkIGJh
ZC11bmRlcmx5aW5nLXNvdXJjZXMuanMgd2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0X3VucmVhY2hl
ZDogU2hhcmVkV29ya2VyIGlzIHVuYXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQor
RkFJTCBVbnRpdGxlZCB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnbmF2
aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9uJykKK0ZBSUwgVW5kZXJseWluZyBz
b3VyY2Ugc3RhcnQ6IHRocm93aW5nIGdldHRlciBhc3NlcnRfdGhyb3dzOiBjb25zdHJ1Y3Rpbmcg
dGhlIHN0cmVhbSBzaG91bGQgcmUtdGhyb3cgdGhlIGVycm9yIGZ1bmN0aW9uICIoKSA9PiB7Cisg
ICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgIGdldCBzdGFydCgpIHsKKyAgICAuLi4iIHRo
cmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxl
U3RyZWFtIiAoIlJlZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJFcnJvcjogYSB1bmlx
dWUgc3RyaW5nIiAoIkVycm9yIikKK0ZBSUwgVW5kZXJseWluZyBzb3VyY2Ugc3RhcnQ6IHRocm93
aW5nIG1ldGhvZCBhc3NlcnRfdGhyb3dzOiBjb25zdHJ1Y3RpbmcgdGhlIHN0cmVhbSBzaG91bGQg
cmUtdGhyb3cgdGhlIGVycm9yIGZ1bmN0aW9uICIoKSA9PiB7CisgICAgbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICAgIHN0YXJ0KCkgeworICAgICAgICAuLi4iIHRocmV3IG9iamVjdCAiUmVmZXJl
bmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtIiAoIlJlZmVyZW5j
ZUVycm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJFcnJvcjogYSB1bmlxdWUgc3RyaW5nIiAoIkVycm9y
IikKK0ZBSUwgVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgZ2V0dGVyIChpbml0aWFs
IHB1bGwpIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFVuZGVybHlp
bmcgc291cmNlOiB0aHJvd2luZyBwdWxsIG1ldGhvZCAoaW5pdGlhbCBwdWxsKSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBVbmRlcmx5aW5nIHNvdXJjZSBwdWxsOiB0
aHJvd2luZyBnZXR0ZXIgKHNlY29uZCBwdWxsKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJs
ZVN0cmVhbQorRkFJTCBVbmRlcmx5aW5nIHNvdXJjZSBwdWxsOiB0aHJvd2luZyBtZXRob2QgKHNl
Y29uZCBwdWxsKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBVbmRl
cmx5aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93aW5nIGdldHRlciBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBSZWFkYWJsZVN0cmVhbQorRkFJTCBVbmRlcmx5aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93aW5n
IG1ldGhvZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBVbmRlcmx5
aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGFuIGVtcHR5IGNhbmNlbGVkIHN0cmVhbSBz
aG91bGQgbm90IHRocm93IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlM
IFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYSBub24tZW1wdHkgY2FuY2Vs
ZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVT
dHJlYW0KK0ZBSUwgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIGNsb3Nl
ZCBzdHJlYW0gc2hvdWxkIHRocm93IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFt
CitGQUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYW4gZXJyb3JlZCBz
dHJlYW0gc2hvdWxkIHRocm93IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitG
QUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGFuIGVtcHR5IHN0
cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIENhbid0IGZpbmQgdmFyaWFibGU6IFJl
YWRhYmxlU3RyZWFtCitGQUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNl
IG9uIGEgbm9uLWVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIENhbid0
IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFVuZGVybHlpbmcgc291cmNlOiBj
YWxsaW5nIGNsb3NlIG9uIGFuIGVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93
IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFVuZGVybHlpbmcgc291
cmNlOiBjYWxsaW5nIGNsb3NlIG9uIGEgbm9uLWVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQg
bm90IHRocm93IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFVuZGVy
bHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdyBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTog
Y2FsbGluZyBlcnJvciB0d2ljZSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIENhbid0IGZp
bmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxs
aW5nIGVycm9yIGFmdGVyIGNsb3NlIHNob3VsZCB0aHJvdyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBS
ZWFkYWJsZVN0cmVhbQorRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhbmQg
cmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHN0YXJ0IHNob3VsZCBjYXVzZSB0aGUg
c3RyZWFtIHRvIGVycm9yIHdpdGggdGhlIGZpcnN0IGVycm9yIENhbid0IGZpbmQgdmFyaWFibGU6
IFJlYWRhYmxlU3RyZWFtCitGQUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIGFu
ZCByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGZyb20gcHVsbCBzaG91bGQgY2F1c2UgdGhl
IHN0cmVhbSB0byBlcnJvciB3aXRoIHRoZSBmaXJzdCBlcnJvciBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBSZWFkYWJsZVN0cmVhbQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVy
bHlpbmctc291cmNlcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJj
ZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lY2IxMWZlYWIxMmM0NzZjNDcxZmQyZGM1ZGJmYjMwZDlkN2Rm
YjU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNv
dXJjZXMuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vycy9yZXNv
dXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSJiYWQtdW5k
ZXJseWluZy1zb3VyY2VzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7Cit3
b3JrZXJfdGVzdCgnYmFkLXVuZGVybHlpbmctc291cmNlcy5qcycpOworPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFi
bGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyZmQwZmRj
OTI5OWQ1ZDVkZTRmNTYyOGRkMTlkNTlmZDI5MzAwZGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRh
YmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5qcwpAQCAtMCwwICsxLDM4MyBAQAor
J3VzZSBzdHJpY3QnOworCitpZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7CisgIHNlbGYuaW1wb3J0
U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOworfQorCisKK3Rlc3QoKCkgPT4g
eworCisgIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKwor
ICBhc3NlcnRfdGhyb3dzKHRoZUVycm9yLCAoKSA9PiB7CisgICAgbmV3IFJlYWRhYmxlU3RyZWFt
KHsKKyAgICAgIGdldCBzdGFydCgpIHsKKyAgICAgICAgdGhyb3cgdGhlRXJyb3I7CisgICAgICB9
CisgICAgfSk7CisgIH0sICdjb25zdHJ1Y3RpbmcgdGhlIHN0cmVhbSBzaG91bGQgcmUtdGhyb3cg
dGhlIGVycm9yJyk7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcgZ2V0
dGVyJyk7CisKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3Io
J2EgdW5pcXVlIHN0cmluZycpOworCisgIGFzc2VydF90aHJvd3ModGhlRXJyb3IsICgpID0+IHsK
KyAgICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgc3RhcnQoKSB7CisgICAgICAgIHRocm93
IHRoZUVycm9yOworICAgICAgfQorICAgIH0pOworICB9LCAnY29uc3RydWN0aW5nIHRoZSBzdHJl
YW0gc2hvdWxkIHJlLXRocm93IHRoZSBlcnJvcicpOworCit9LCAnVW5kZXJseWluZyBzb3VyY2Ug
c3RhcnQ6IHRocm93aW5nIG1ldGhvZCcpOworCisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBj
b25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7CisgIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBnZXQgcHVsbCgpIHsKKyAgICAgIHRocm93IHRo
ZUVycm9yOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCB0aGVF
cnJvciwgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkKTsKKworfSwgJ1VuZGVybHlpbmcgc291cmNlOiB0
aHJvd2luZyBwdWxsIGdldHRlciAoaW5pdGlhbCBwdWxsKScpOworCisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7
CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKCkgeworICAgICAg
dGhyb3cgdGhlRXJyb3I7CisgICAgfQorICB9KTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3Rz
KHQsIHRoZUVycm9yLCBycy5nZXRSZWFkZXIoKS5jbG9zZWQpOworCit9LCAnVW5kZXJseWluZyBz
b3VyY2U6IHRocm93aW5nIHB1bGwgbWV0aG9kIChpbml0aWFsIHB1bGwpJyk7CisKKworcHJvbWlz
ZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBz
dHJpbmcnKTsKKworICBsZXQgY291bnRlciA9IDA7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKKyAgICBnZXQgcHVsbCgpIHsKKyAgICAgICsrY291bnRlcjsKKyAgICAgIGlmIChj
b3VudGVyID09PSAxKSB7CisgICAgICAgIHJldHVybiBjID0+IGMuZW5xdWV1ZSgnYScpOworICAg
ICAgfQorCisgICAgICB0aHJvdyB0aGVFcnJvcjsKKyAgICB9CisgIH0pOworICBjb25zdCByZWFk
ZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHJlYWRl
ci5yZWFkKCkudGhlbihyID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFs
dWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3RoZSBjaHVuayByZWFkIHNob3VsZCBiZSBjb3JyZWN0
Jyk7CisgICAgfSksCisgICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIuY2xv
c2VkKQorICBdKTsKKworfSwgJ1VuZGVybHlpbmcgc291cmNlIHB1bGw6IHRocm93aW5nIGdldHRl
ciAoc2Vjb25kIHB1bGwpJyk7CisKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHRo
ZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKworICBsZXQgY291bnRlciA9
IDA7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGMpIHsKKyAg
ICAgICsrY291bnRlcjsKKyAgICAgIGlmIChjb3VudGVyID09PSAxKSB7CisgICAgICAgIGMuZW5x
dWV1ZSgnYScpOworICAgICAgICByZXR1cm47CisgICAgICB9CisKKyAgICAgIHRocm93IHRoZUVy
cm9yOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisg
IHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4geworICAg
ICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAn
dGhlIGNodW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKyAgICB9KSwKKyAgICBwcm9taXNl
X3JlamVjdHModCwgdGhlRXJyb3IsIHJlYWRlci5jbG9zZWQpCisgIF0pOworCit9LCAnVW5kZXJs
eWluZyBzb3VyY2UgcHVsbDogdGhyb3dpbmcgbWV0aG9kIChzZWNvbmQgcHVsbCknKTsKKworcHJv
bWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1
ZSBzdHJpbmcnKTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGdldCBj
YW5jZWwoKSB7CisgICAgICB0aHJvdyB0aGVFcnJvcjsKKyAgICB9CisgIH0pOworCisgIHJldHVy
biBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJzLmNhbmNlbCgpKTsKKworfSwgJ1VuZGVy
bHlpbmcgc291cmNlIGNhbmNlbDogdGhyb3dpbmcgZ2V0dGVyJyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7
CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBjYW5jZWwoKSB7CisgICAg
ICB0aHJvdyB0aGVFcnJvcjsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBwcm9taXNlX3JlamVj
dHModCwgdGhlRXJyb3IsIHJzLmNhbmNlbCgpKTsKKworfSwgJ1VuZGVybHlpbmcgc291cmNlIGNh
bmNlbDogdGhyb3dpbmcgbWV0aG9kJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0
IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFy
dChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisgIHJzLmNhbmNl
bCgpOworICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsgLy8gQ2FsbGluZyBlbnF1ZXVlIGFmdGVy
IGNhbmNlbGluZyBzaG91bGQgbm90IHRocm93IGFueXRoaW5nLgorCisgIHJldHVybiBycy5nZXRS
ZWFkZXIoKS5jbG9zZWQ7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVl
IG9uIGFuIGVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93Jyk7CisKK3Byb21p
c2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUoJ2EnKTsKKyAg
ICAgIGMuZW5xdWV1ZSgnYicpOworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsK
KworICBycy5jYW5jZWwoKTsKKyAgY29udHJvbGxlci5lbnF1ZXVlKCdjJyk7IC8vIENhbGxpbmcg
ZW5xdWV1ZSBhZnRlciBjYW5jZWxpbmcgc2hvdWxkIG5vdCB0aHJvdyBhbnl0aGluZy4KKworICBy
ZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6IGNh
bGxpbmcgZW5xdWV1ZSBvbiBhIG5vbi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0
aHJvdycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIHJldHVybiBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICAgIGFzc2VydF90
aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjLmVucXVldWUoJ2EnKSwgJ2NhbGwgdG8gZW5x
dWV1ZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKKyAgICB9CisgIH0pLmdldFJlYWRlcigp
LmNsb3NlZDsKKworfSwgJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYSBj
bG9zZWQgc3RyZWFtIHNob3VsZCB0aHJvdycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAg
Y29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2JvbycpOworICBjb25zdCBjbG9zZWQgPSBuZXcg
UmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZXJyb3IodGhlRXJyb3Ip
OworICAgICAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwgKCkgPT4gYy5lbnF1ZXVlKCdhJyksICdj
YWxsIHRvIGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBlcnJvcicpOworICAgIH0KKyAgfSkuZ2V0
UmVhZGVyKCkuY2xvc2VkOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3Is
IGNsb3NlZCk7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGFu
IGVycm9yZWQgc3RyZWFtIHNob3VsZCB0aHJvdycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4gewor
CisgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMu
Y2xvc2UoKTsKKyAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjLmNs
b3NlKCksICdzZWNvbmQgY2FsbCB0byBjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsK
KyAgICB9CisgIH0pLmdldFJlYWRlcigpLmNsb3NlZDsKKworfSwgJ1VuZGVybHlpbmcgc291cmNl
OiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGFuIGVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhl
IHNlY29uZCB0aW1lJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0YXJ0Q2Fs
bGVkID0gZmFsc2U7CisgIGxldCByZWFkQ2FsbGVkID0gZmFsc2U7CisgIGNvbnN0IHJlYWRlciA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKCdh
Jyk7CisgICAgICBjLmNsb3NlKCk7CisgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3Io
KSwgKCkgPT4gYy5jbG9zZSgpLCAnc2Vjb25kIGNhbGwgdG8gY2xvc2Ugc2hvdWxkIHRocm93IGEg
VHlwZUVycm9yJyk7CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgfQorICB9KS5nZXRS
ZWFkZXIoKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHJlYWRlci5yZWFkKCkudGhl
bihyID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9u
ZTogZmFsc2UgfSwgJ3JlYWQoKSBzaG91bGQgcmVhZCB0aGUgZW5xdWV1ZWQgY2h1bmsnKTsKKyAg
ICAgIHJlYWRDYWxsZWQgPSB0cnVlOworICAgIH0pLAorICAgIHJlYWRlci5jbG9zZWQudGhlbigo
KSA9PiB7CisgICAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7CisgICAgICBhc3NlcnRfdHJ1
ZShyZWFkQ2FsbGVkKTsKKyAgICB9KQorICBdKTsKKworfSwgJ1VuZGVybHlpbmcgc291cmNlOiBj
YWxsaW5nIGNsb3NlIHR3aWNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhl
IHNlY29uZCB0aW1lJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRyb2xs
ZXI7CisgIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICBz
dGFydENhbGxlZCA9IHRydWU7CisgICAgfQorICB9KTsKKworICBycy5jYW5jZWwoKTsKKyAgY29u
dHJvbGxlci5jbG9zZSgpOyAvLyBDYWxsaW5nIGNsb3NlIGFmdGVyIGNhbmNlbGluZyBzaG91bGQg
bm90IHRocm93IGFueXRoaW5nLgorCisgIHJldHVybiBycy5nZXRSZWFkZXIoKS5jbG9zZWQudGhl
bigoKSA9PiB7CisgICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworICB9KTsKKworfSwgJ1Vu
ZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIG9uIGFuIGVtcHR5IGNhbmNlbGVkIHN0cmVh
bSBzaG91bGQgbm90IHRocm93Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNv
bnRyb2xsZXI7CisgIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOworICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7Cisg
ICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICB9Cisg
IH0pOworCisgIHJzLmNhbmNlbCgpOworICBjb250cm9sbGVyLmNsb3NlKCk7IC8vIENhbGxpbmcg
Y2xvc2UgYWZ0ZXIgY2FuY2VsaW5nIHNob3VsZCBub3QgdGhyb3cgYW55dGhpbmcuCisKKyAgcmV0
dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfdHJ1ZShz
dGFydENhbGxlZCk7CisgIH0pOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xv
c2Ugb24gYSBub24tZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cnKTsKKwor
cHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYm9v
Jyk7CisgIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOworCisgIGNvbnN0IGNsb3NlZCA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcih0aGVFcnJvcik7
CisgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gYy5jbG9zZSgpLCAn
Y2FsbCB0byBjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKKyAgICAgIHN0YXJ0Q2Fs
bGVkID0gdHJ1ZTsKKyAgICB9CisgIH0pLmdldFJlYWRlcigpLmNsb3NlZDsKKworICByZXR1cm4g
Y2xvc2VkLmNhdGNoKGUgPT4geworICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKKyAgICBh
c3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUg
ZXJyb3InKTsKKyAgfSk7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBh
ZnRlciBlcnJvciBzaG91bGQgdGhyb3cnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBj
b25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYm9vJyk7CisgIGxldCBzdGFydENhbGxlZCA9IGZh
bHNlOworCisgIGNvbnN0IGNsb3NlZCA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQo
YykgeworICAgICAgYy5lcnJvcih0aGVFcnJvcik7CisgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoKSwgKCkgPT4gYy5lcnJvcigpLCAnc2Vjb25kIGNhbGwgdG8gZXJyb3Igc2hvdWxk
IHRocm93IGEgVHlwZUVycm9yJyk7CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgfQor
ICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7CisKKyAgcmV0dXJuIGNsb3NlZC5jYXRjaChlID0+IHsK
KyAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7CisgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVF
cnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7CisgIH0pOworCit9
LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgdHdpY2Ugc2hvdWxkIHRocm93IHRo
ZSBzZWNvbmQgdGltZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBzdGFydENh
bGxlZCA9IGZhbHNlOworCisgIGNvbnN0IGNsb3NlZCA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Cisg
ICAgc3RhcnQoYykgeworICAgICAgYy5jbG9zZSgpOworICAgICAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yKCksICgpID0+IGMuZXJyb3IoKSwgJ3NlY29uZCBjYWxsIHRvIGVycm9yIHNob3Vs
ZCB0aHJvdyBhIFR5cGVFcnJvcicpOworICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOworICAgIH0K
KyAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOworCisgIHJldHVybiBjbG9zZWQudGhlbigoKSA9PiBh
c3NlcnRfdHJ1ZShzdGFydENhbGxlZCkpOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxp
bmcgZXJyb3IgYWZ0ZXIgY2xvc2Ugc2hvdWxkIHRocm93Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9
PiB7CisKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisgIGNvbnN0IGZpcnN0RXJyb3IgPSBu
ZXcgRXJyb3IoJzEnKTsKKyAgY29uc3Qgc2Vjb25kRXJyb3IgPSBuZXcgRXJyb3IoJzInKTsKKwor
ICBjb25zdCBjbG9zZWQgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAg
ICAgIGMuZXJyb3IoZmlyc3RFcnJvcik7CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAg
ICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoc2Vjb25kRXJyb3IpOworICAgIH0KKyAgfSkuZ2V0UmVh
ZGVyKCkuY2xvc2VkOworCisgIHJldHVybiBjbG9zZWQuY2F0Y2goZSA9PiB7CisgICAgYXNzZXJ0
X3RydWUoc3RhcnRDYWxsZWQpOworICAgIGFzc2VydF9lcXVhbHMoZSwgZmlyc3RFcnJvciwgJ2Ns
b3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGZpcnN0IGVycm9yJyk7CisgIH0pOworCit9LCAn
VW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYW5kIHJldHVybmluZyBhIHJlamVjdGVk
IHByb21pc2UgZnJvbSBzdGFydCBzaG91bGQgY2F1c2UgdGhlIHN0cmVhbSB0byBlcnJvciAnICsK
KyAgICd3aXRoIHRoZSBmaXJzdCBlcnJvcicpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisg
IGxldCBzdGFydENhbGxlZCA9IGZhbHNlOworICBjb25zdCBmaXJzdEVycm9yID0gbmV3IEVycm9y
KCcxJyk7CisgIGNvbnN0IHNlY29uZEVycm9yID0gbmV3IEVycm9yKCcyJyk7CisKKyAgY29uc3Qg
Y2xvc2VkID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGMpIHsKKyAgICAgIGMuZXJy
b3IoZmlyc3RFcnJvcik7CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgICByZXR1cm4g
UHJvbWlzZS5yZWplY3Qoc2Vjb25kRXJyb3IpOworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCkuY2xv
c2VkOworCisgIHJldHVybiBjbG9zZWQuY2F0Y2goZSA9PiB7CisgICAgYXNzZXJ0X3RydWUoc3Rh
cnRDYWxsZWQpOworICAgIGFzc2VydF9lcXVhbHMoZSwgZmlyc3RFcnJvciwgJ2Nsb3NlZCBzaG91
bGQgcmVqZWN0IHdpdGggdGhlIGZpcnN0IGVycm9yJyk7CisgIH0pOworCit9LCAnVW5kZXJseWlu
ZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYW5kIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2Ug
ZnJvbSBwdWxsIHNob3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRvIGVycm9yICcgKworICAgJ3dpdGgg
dGhlIGZpcnN0IGVycm9yJyk7CisKK2RvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFt
cy9icmFuZC1jaGVja3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNr
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2M3ZjFiYjkyNTQ4MmEzMjMzMjY3NDg3NWU4Y2Jm
OTRhZjg3NmE1YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9icmFuZC1jaGVj
a3MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzQgQEAKKworUEFTUyBDYW4gZ2V0IHRoZSBSZWFk
YWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5IAorUEFTUyBDYW4gZ2V0IHRo
ZSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgY29uc3RydWN0b3IgaW5kaXJlY3RseSAKK1BBU1Mg
UmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAor
UEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuZ2V0UmVhZGVyIGVuZm9yY2VzIGEgYnJhbmQg
Y2hlY2sgCitQQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS50ZWUgZW5mb3JjZXMgYSBicmFu
ZCBjaGVjayAKK1BBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVj
ayBvbiBpdHMgYXJndW1lbnQgCitQQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5j
bG9zZWQgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKK1BBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIu
cHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAorUEFTUyBSZWFkYWJsZVN0
cmVhbVJlYWRlci5wcm90b3R5cGUucmVhZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAorUEFTUyBS
ZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVsZWFzZUxvY2sgZW5mb3JjZXMgYSBicmFu
ZCBjaGVjayAKK1BBU1MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIGVuZm9yY2VzIGEgYnJhbmQg
Y2hlY2sgb24gaXRzIGFyZ3VtZW50IAorUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgY2Fu
J3QgYmUgZ2l2ZW4gYSBmdWxseS1jb25zdHJ1Y3RlZCBSZWFkYWJsZVN0cmVhbSAKK1BBU1MgUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5jbG9zZSBlbmZvcmNlcyBhIGJyYW5kIGNo
ZWNrIAorUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmVucXVldWUgZW5m
b3JjZXMgYSBicmFuZCBjaGVjayAKK1BBU1MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3Rv
dHlwZS5lcnJvciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAorRkFJTCBMb2FkIGJyYW5kLWNoZWNr
cy5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3NlcnRfdW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMg
dW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitGQUlMIFVudGl0bGVkIHVuZGVm
aW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICduYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5nZXRSZWdpc3RyYXRpb24nKQorRkFJTCBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRl
ciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3Ry
ZWFtCitGQUlMIENhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBjb25zdHJ1Y3Rv
ciBpbmRpcmVjdGx5IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJl
YWRhYmxlU3RyZWFtLnByb3RvdHlwZS5jYW5jZWwgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBSZWFkYWJsZVN0cmVhbS5wcm90
b3R5cGUuZ2V0UmVhZGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnRlZSBlbmZv
cmNlcyBhIGJyYW5kIGNoZWNrIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitQ
QVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFy
Z3VtZW50IAorRkFJTCBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUuY2xvc2VkIGVuZm9y
Y2VzIGEgYnJhbmQgY2hlY2sgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcg
J1JlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZScpCitGQUlMIFJlYWRhYmxlU3RyZWFtUmVh
ZGVyLnByb3RvdHlwZS5jYW5jZWwgZW5mb3JjZXMgYSBicmFuZCBjaGVjayB1bmRlZmluZWQgaXMg
bm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBl
JykKK0ZBSUwgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLnJlYWQgZW5mb3JjZXMgYSBi
cmFuZCBjaGVjayB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnUmVhZGFi
bGVTdHJlYW1SZWFkZXIucHJvdG90eXBlJykKK0ZBSUwgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJv
dG90eXBlLnJlbGVhc2VMb2NrIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgdW5kZWZpbmVkIGlzIG5v
dCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ1JlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZScp
CitQQVNTIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIG9u
IGl0cyBhcmd1bWVudCAKK0ZBSUwgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIGNhbid0IGJlIGdp
dmVuIGEgZnVsbHktY29uc3RydWN0ZWQgUmVhZGFibGVTdHJlYW0gYXNzZXJ0X3Rocm93czogQ29u
c3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIHNob3VsZCB0aHJvdyBmdW5jdGlv
biAiKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcihyZWFsUmVhZGFibGVTdHJlYW0o
KSkiIHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFJl
YWRhYmxlU3RyZWFtIiAoIlJlZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJUeXBlRXJy
b3IiICgiVHlwZUVycm9yIikKK0ZBSUwgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlw
ZS5jbG9zZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0
IChldmFsdWF0aW5nICdSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlJykKK0ZBSUwg
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5lbnF1ZXVlIGVuZm9yY2VzIGEgYnJh
bmQgY2hlY2sgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ1JlYWRhYmxl
U3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUnKQorRkFJTCBSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIucHJvdG90eXBlLmVycm9yIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgdW5kZWZpbmVkIGlzIG5v
dCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5
cGUnKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3Jl
YWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWRmZWQxMjNkNzZk
Yjg3ZjdiMzIwMTljYzE2M2IzMzQyZjFhMmQ4YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUt
c3RyZWFtcy9icmFuZC1jaGVja3MuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3JpcHQ+CisKKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iYnJhbmQtY2hlY2tzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7Cit3
b3JrZXJfdGVzdCgnYnJhbmQtY2hlY2tzLmpzJyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVh
ZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3MuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hl
Y2tzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjMyNTUzY2Y5MmY1MmZkNmRjMGU3MjNiYWY2ZjczZDczZWViOGY1
ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmpzCkBA
IC0wLDAgKzEsMTUxIEBACisndXNlIHN0cmljdCc7CisKK2lmIChzZWxmLmltcG9ydFNjcmlwdHMp
IHsKKyAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcycpOwor
ICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnKTsKK30KKwor
bGV0IFJlYWRhYmxlU3RyZWFtUmVhZGVyOworbGV0IFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjsK
KwordGVzdCgoKSA9PiB7CisKKyAgLy8gSXQncyBub3QgZXhwb3NlZCBnbG9iYWxseSwgYnV0IHdl
IHRlc3QgYSBmZXcgb2YgaXRzIHByb3BlcnRpZXMgaGVyZS4KKyAgUmVhZGFibGVTdHJlYW1SZWFk
ZXIgPSAobmV3IFJlYWRhYmxlU3RyZWFtKCkpLmdldFJlYWRlcigpLmNvbnN0cnVjdG9yOworCit9
LCAnQ2FuIGdldCB0aGUgUmVhZGFibGVTdHJlYW1SZWFkZXIgY29uc3RydWN0b3IgaW5kaXJlY3Rs
eScpOworCit0ZXN0KCgpID0+IHsKKworICAvLyBJdCdzIG5vdCBleHBvc2VkIGdsb2JhbGx5LCBi
dXQgd2UgdGVzdCBhIGZldyBvZiBpdHMgcHJvcGVydGllcyBoZXJlLgorICBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciA9
IGMuY29uc3RydWN0b3I7CisgICAgfQorICB9KTsKKworfSwgJ0NhbiBnZXQgdGhlIFJlYWRhYmxl
U3RyZWFtQ29udHJvbGxlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5Jyk7CisKK2Z1bmN0aW9uIGZh
a2VSZWFkYWJsZVN0cmVhbSgpIHsKKyAgcmV0dXJuIHsKKyAgICBjYW5jZWwoKSB7IHJldHVybiBQ
cm9taXNlLnJlc29sdmUoKTsgfSwKKyAgICBnZXRSZWFkZXIoKSB7IHJldHVybiBuZXcgUmVhZGFi
bGVTdHJlYW1SZWFkZXIobmV3IFJlYWRhYmxlU3RyZWFtKCkpOyB9LAorICAgIHBpcGVUaHJvdWdo
KG9iaikgeyByZXR1cm4gb2JqLnJlYWRhYmxlOyB9LAorICAgIHBpcGVUbygpIHsgcmV0dXJuIFBy
b21pc2UucmVzb2x2ZSgpOyB9LAorICAgIHRlZSgpIHsgcmV0dXJuIFtyZWFsUmVhZGFibGVTdHJl
YW0oKSwgcmVhbFJlYWRhYmxlU3RyZWFtKCldOyB9CisgIH07Cit9CisKK2Z1bmN0aW9uIHJlYWxS
ZWFkYWJsZVN0cmVhbSgpIHsKKyAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSgpOworfQorCitm
dW5jdGlvbiBmYWtlUmVhZGFibGVTdHJlYW1SZWFkZXIoKSB7CisgIHJldHVybiB7CisgICAgZ2V0
IGNsb3NlZCgpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOyB9LAorICAgIGNhbmNlbCgpIHsg
cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOyB9LAorICAgIHJlYWQoKSB7IHJldHVybiBQcm9taXNl
LnJlc29sdmUoeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0pOyB9LAorICAgIHJlbGVh
c2VMb2NrKCkgeyByZXR1cm47IH0KKyAgfTsKK30KKworZnVuY3Rpb24gZmFrZVJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlcigpIHsKKyAgcmV0dXJuIHsKKyAgICBjbG9zZSgpIHsgfSwKKyAgICBlbnF1
ZXVlKCkgeyB9LAorICAgIGVycm9yKCkgeyB9CisgIH07Cit9CisKK3Byb21pc2VfdGVzdCh0ID0+
IHsKKworICByZXR1cm4gbWV0aG9kUmVqZWN0cyh0LCBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUs
ICdjYW5jZWwnLCBmYWtlUmVhZGFibGVTdHJlYW0oKSk7CisKK30sICdSZWFkYWJsZVN0cmVhbS5w
cm90b3R5cGUuY2FuY2VsIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKKwordGVzdCgoKSA9PiB7
CisKKyAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ2dldFJlYWRlcics
IGZha2VSZWFkYWJsZVN0cmVhbSgpKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5n
ZXRSZWFkZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjaycpOworCit0ZXN0KCgpID0+IHsKKworICBt
ZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLCAndGVlJywgZmFrZVJlYWRhYmxl
U3RyZWFtKCkpOworCit9LCAnUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnRlZSBlbmZvcmNlcyBh
IGJyYW5kIGNoZWNrJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIoZmFrZVJlYWRhYmxlU3Ry
ZWFtKCkpLAorICAgICAgICAgICAgICAgICdDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJl
YWRlciBzaG91bGQgdGhyb3cnKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtUmVhZGVyIGVuZm9yY2Vz
IGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsK
KworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIGdldHRlclJlamVjdHModCwgUmVhZGFibGVT
dHJlYW1SZWFkZXIucHJvdG90eXBlLCAnY2xvc2VkJywgZmFrZVJlYWRhYmxlU3RyZWFtUmVhZGVy
KCkpLAorICAgIGdldHRlclJlamVjdHModCwgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBl
LCAnY2xvc2VkJywgcmVhbFJlYWRhYmxlU3RyZWFtKCkpCisgIF0pOworCit9LCAnUmVhZGFibGVT
dHJlYW1SZWFkZXIucHJvdG90eXBlLmNsb3NlZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7CisK
K3Byb21pc2VfdGVzdCh0ID0+IHsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIG1ldGhv
ZFJlamVjdHModCwgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLCAnY2FuY2VsJywgZmFr
ZVJlYWRhYmxlU3RyZWFtUmVhZGVyKCkpLAorICAgIG1ldGhvZFJlamVjdHModCwgUmVhZGFibGVT
dHJlYW1SZWFkZXIucHJvdG90eXBlLCAnY2FuY2VsJywgcmVhbFJlYWRhYmxlU3RyZWFtKCkpCisg
IF0pOworCit9LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNl
cyBhIGJyYW5kIGNoZWNrJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICByZXR1cm4gUHJv
bWlzZS5hbGwoWworICAgIG1ldGhvZFJlamVjdHModCwgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJv
dG90eXBlLCAncmVhZCcsIGZha2VSZWFkYWJsZVN0cmVhbVJlYWRlcigpKSwKKyAgICBtZXRob2RS
ZWplY3RzKHQsIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZSwgJ3JlYWQnLCByZWFsUmVh
ZGFibGVTdHJlYW0oKSkKKyAgXSk7CisKK30sICdSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5
cGUucmVhZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7CisKK3Rlc3QoKCkgPT4geworCisgIG1l
dGhvZFRocm93cyhSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUsICdyZWxlYXNlTG9jaycs
IGZha2VSZWFkYWJsZVN0cmVhbVJlYWRlcigpKTsKKyAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyLnByb3RvdHlwZSwgJ3JlbGVhc2VMb2NrJywgcmVhbFJlYWRhYmxlU3RyZWFtKCkp
OworCit9LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLnJlbGVhc2VMb2NrIGVuZm9y
Y2VzIGEgYnJhbmQgY2hlY2snKTsKKwordGVzdCgoKSA9PiB7CisKKyAgYXNzZXJ0X3Rocm93cyhu
ZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIoZmFrZVJl
YWRhYmxlU3RyZWFtKCkpLAorICAgICAgICAgICAgICAgICdDb25zdHJ1Y3RpbmcgYSBSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXIgc2hvdWxkIHRocm93Jyk7CisKK30sICdSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBvbiBpdHMgYXJndW1lbnQnKTsKKwordGVz
dCgoKSA9PiB7CisKKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIocmVhbFJlYWRhYmxlU3RyZWFtKCkpLAorICAgICAgICAg
ICAgICAgICdDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgc2hvdWxkIHRo
cm93Jyk7CisKK30sICdSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgY2FuXCd0IGJlIGdpdmVuIGEg
ZnVsbHktY29uc3RydWN0ZWQgUmVhZGFibGVTdHJlYW0nKTsKKwordGVzdCgoKSA9PiB7CisKKyAg
bWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUsICdjbG9zZScs
IGZha2VSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIoKSk7CisKK30sICdSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIucHJvdG90eXBlLmNsb3NlIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKKwordGVz
dCgoKSA9PiB7CisKKyAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5wcm90
b3R5cGUsICdlbnF1ZXVlJywgZmFrZVJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcigpKTsKKworfSwg
J1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUuZW5xdWV1ZSBlbmZvcmNlcyBhIGJy
YW5kIGNoZWNrJyk7CisKK3Rlc3QoKCkgPT4geworCisgIG1ldGhvZFRocm93cyhSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLCAnZXJyb3InLCBmYWtlUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyKCkpOworCit9LCAnUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5lcnJv
ciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7CisKK2RvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFi
bGUtc3RyZWFtcy9jYW5jZWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2YyN2U0NTNmOTg3YjYyZDdmYzIzY2VlNDk2NGVjZGUz
Mzg5MmEwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMjQgQEAKKworRkFJTCBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRp
b246IGludGVncmF0aW9uIHRlc3Qgb24gYW4gaW5maW5pdGUgc3RyZWFtIGRlcml2ZWQgZnJvbSBh
IHJhbmRvbSBwdXNoIHNvdXJjZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0
aCB2YWx1ZTogb2JqZWN0ICJFcnJvcjogZm9yY2VkIGVycm9yIgorUEFTUyBSZWFkYWJsZVN0cmVh
bSBjYW5jZWxsYXRpb246IGNhbmNlbChyZWFzb24pIHNob3VsZCBwYXNzIHRocm91Z2ggdGhlIGdp
dmVuIHJlYXNvbiB0byB0aGUgdW5kZXJseWluZyBzb3VyY2UgCitQQVNTIFJlYWRhYmxlU3RyZWFt
IGNhbmNlbGxhdGlvbjogY2FuY2VsKCkgb24gYSBsb2NrZWQgc3RyZWFtIHNob3VsZCBmYWlsIGFu
ZCBub3QgY2FsbCB0aGUgdW5kZXJseWluZyBzb3VyY2UgY2FuY2VsIAorUEFTUyBSZWFkYWJsZVN0
cmVhbSBjYW5jZWxsYXRpb246IHNob3VsZCBmdWxmaWxsIHByb21pc2Ugd2hlbiBjYW5jZWwgY2Fs
bGJhY2sgd2VudCBmaW5lIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHJldHVy
bmluZyBhIHZhbHVlIGZyb20gdGhlIHVuZGVybHlpbmcgc291cmNlJ3MgY2FuY2VsIHNob3VsZCBu
b3QgYWZmZWN0IHRoZSBmdWxmaWxsbWVudCB2YWx1ZSBvZiB0aGUgcHJvbWlzZSByZXR1cm5lZCBi
eSB0aGUgc3RyZWFtJ3MgY2FuY2VsIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246
IHNob3VsZCByZWplY3QgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayByYWlzZXMgYW4gZXhj
ZXB0aW9uIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5
aW5nIHNvdXJjZSdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNl
IHJldHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgc2hvdWxkIGZ1bGZpbGwgd2hlbiB0aGF0
IG9uZSBkb2VzICgxKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUg
dW5kZXJseWluZyBzb3VyY2UncyBjYW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUg
cHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxsIHdo
ZW4gdGhhdCBvbmUgZG9lcyAoMikgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjog
aWYgdGhlIHVuZGVybHlpbmcgc291cmNlJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlz
ZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBzaG91bGQgcmVq
ZWN0IHdoZW4gdGhhdCBvbmUgZG9lcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9u
OiBjYW5jZWxsaW5nIGJlZm9yZSBzdGFydCBmaW5pc2hlcyBzaG91bGQgcHJldmVudCBwdWxsKCkg
ZnJvbSBiZWluZyBjYWxsZWQgCitGQUlMIExvYWQgY2FuY2VsLmpzIHdpdGggU2hhcmVkV29ya2Vy
IGFzc2VydF91bnJlYWNoZWQ6IFNoYXJlZFdvcmtlciBpcyB1bmF2YWlsYWJsZSBSZWFjaGVkIHVu
cmVhY2hhYmxlIGNvZGUKK0ZBSUwgVW50aXRsZWQgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3Qg
KGV2YWx1YXRpbmcgJ25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdldFJlZ2lzdHJhdGlvbicpCitG
QUlMIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaW50ZWdyYXRpb24gdGVzdCBvbiBhbiBp
bmZpbml0ZSBzdHJlYW0gZGVyaXZlZCBmcm9tIGEgcmFuZG9tIHB1c2ggc291cmNlIHByb21pc2Vf
dGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIkVycm9yOiBmb3Jj
ZWQgZXJyb3IiCitGQUlMIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsKHJlYXNv
bikgc2hvdWxkIHBhc3MgdGhyb3VnaCB0aGUgZ2l2ZW4gcmVhc29uIHRvIHRoZSB1bmRlcmx5aW5n
IHNvdXJjZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBSZWFkYWJs
ZVN0cmVhbSBjYW5jZWxsYXRpb246IGNhbmNlbCgpIG9uIGEgbG9ja2VkIHN0cmVhbSBzaG91bGQg
ZmFpbCBhbmQgbm90IGNhbGwgdGhlIHVuZGVybHlpbmcgc291cmNlIGNhbmNlbCBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRp
b246IHNob3VsZCBmdWxmaWxsIHByb21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJhY2sgd2VudCBmaW5l
IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFt
IGNhbmNlbGxhdGlvbjogcmV0dXJuaW5nIGEgdmFsdWUgZnJvbSB0aGUgdW5kZXJseWluZyBzb3Vy
Y2UncyBjYW5jZWwgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIGZ1bGZpbGxtZW50IHZhbHVlIG9mIHRo
ZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBz
aG91bGQgcmVqZWN0IHByb21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJhY2sgcmFpc2VzIGFuIGV4Y2Vw
dGlvbiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBSZWFkYWJsZVN0
cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBtZXRo
b2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW0n
cyBjYW5jZWwgc2hvdWxkIGZ1bGZpbGwgd2hlbiB0aGF0IG9uZSBkb2VzICgxKSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRp
b246IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHBy
b21pc2UsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgc2hvdWxk
IGZ1bGZpbGwgd2hlbiB0aGF0IG9uZSBkb2VzICgyKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFk
YWJsZVN0cmVhbQorRkFJTCBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRl
cmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9t
aXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgc2hvdWxkIHJlamVjdCB3aGVuIHRo
YXQgb25lIGRvZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVh
ZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWxsaW5nIGJlZm9yZSBzdGFydCBmaW5pc2hl
cyBzaG91bGQgcHJldmVudCBwdWxsKCkgZnJvbSBiZWluZyBjYWxsZWQgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogUmVhZGFibGVTdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NhbmNl
bC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3Njc0Mjlm
MTcwMjkyMzZkYzRiNDEwOGQ0NTQ0NTBjMDdlYzZhNGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRh
YmxlLXN0cmVhbXMvY2FuY2VsLmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNl
LXdvcmtlcnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9ycy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iY2FuY2Vs
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7Cit3b3JrZXJfdGVzdCgnY2Fu
Y2VsLmpzJyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwu
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMt
YXBpL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyMDI3ZGIzY2JkYWY2
NDhkNGQwN2I2ZTFiOGM5NDlkZjQ1NDliYjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0
cmVhbXMvY2FuY2VsLmpzCkBAIC0wLDAgKzEsMjQyIEBACisndXNlIHN0cmljdCc7CisKK2lmIChz
ZWxmLmltcG9ydFNjcmlwdHMpIHsKKyAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMv
dGVzdC11dGlscy5qcycpOworICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9ycy11
dGlscy5qcycpOworICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMnKTsKK30KKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICAvLyBXZWJLaXQgZWRpdC4gV2Ug
Zm9yY2UgYSBmYWlsdXJlIGluIHRoaXMgdGVzdHMgZm9yIG5vdyBiZWNhdXNlIGl0IGlzIGZsYWt5
LgorICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJmb3JjZWQgZXJyb3IiKSk7CisK
KyAgY29uc3QgcmFuZG9tU291cmNlID0gbmV3IFJhbmRvbVB1c2hTb3VyY2UoKTsKKworICBsZXQg
Y2FuY2VsbGF0aW9uRmluaXNoZWQgPSBmYWxzZTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIHJhbmRvbVNvdXJjZS5vbmRhdGEgPSBjLmVu
cXVldWUuYmluZChjKTsKKyAgICAgIHJhbmRvbVNvdXJjZS5vbmVuZCA9IGMuY2xvc2UuYmluZChj
KTsKKyAgICAgIHJhbmRvbVNvdXJjZS5vbmVycm9yID0gYy5lcnJvci5iaW5kKGMpOworICAgIH0s
CisKKyAgICBwdWxsKCkgeworICAgICAgcmFuZG9tU291cmNlLnJlYWRTdGFydCgpOworICAgIH0s
CisKKyAgICBjYW5jZWwoKSB7CisgICAgICByYW5kb21Tb3VyY2UucmVhZFN0b3AoKTsKKyAgICAg
IHJhbmRvbVNvdXJjZS5vbmVuZCgpOworCisgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2
ZSA9PiB7CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgIGNhbmNlbGxhdGlv
bkZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgIH0sIDEpOwor
ICAgICAgfSk7CisgICAgfQorICB9KTsKKworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIo
KTsKKworICAvLyBXZSBjYWxsIGRlbGF5IG11bHRpcGxlIHRpbWVzIHRvIGF2b2lkIGNhbmNlbGxp
bmcgdG9vIGVhcmx5IGZvciB0aGUKKyAgLy8gc291cmNlIHRvIGVucXVldWUgYXQgbGVhc3Qgb25l
IGNodW5rLgorICBjb25zdCBjYW5jZWwgPSBkZWxheSg1KS50aGVuKCgpID0+IGRlbGF5KDUpKS50
aGVuKCgpID0+IGRlbGF5KDUpKS50aGVuKCgpID0+IHJlYWRlci5jYW5jZWwoKSk7CisKKyAgcmV0
dXJuIHJlYWRhYmxlU3RyZWFtVG9BcnJheShycywgcmVhZGVyKS50aGVuKGNodW5rcyA9PiB7Cisg
ICAgYXNzZXJ0X2dyZWF0ZXJfdGhhbihjaHVua3MubGVuZ3RoLCAwLCAnYXQgbGVhc3Qgb25lIGNo
dW5rIHNob3VsZCBiZSByZWFkJyk7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaHVua3MubGVu
Z3RoOyBpKyspIHsKKyAgICAgIGFzc2VydF9lcXVhbHMoY2h1bmtzW2ldLmxlbmd0aCwgMTI4LCAn
Y2h1bmsgJyArIGkgKyAnIHNob3VsZCBoYXZlIDEyOCBieXRlcycpOworICAgIH0KKyAgICBhc3Nl
cnRfZmFsc2UoY2FuY2VsbGF0aW9uRmluaXNoZWQsICdpdCBkaWQgbm90IHdhaXQgZm9yIHRoZSBj
YW5jZWxsYXRpb24gcHJvY2VzcyB0byBmaW5pc2ggYmVmb3JlIGNsb3NpbmcnKTsKKyAgICByZXR1
cm4gY2FuY2VsOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfdHJ1ZShjYW5jZWxsYXRp
b25GaW5pc2hlZCwgJ2l0IHJldHVybnMgYSBwcm9taXNlIHRoYXQgaXMgZnVsZmlsbGVkIHdoZW4g
dGhlIGNhbmNlbGxhdGlvbiBmaW5pc2hlcycpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFt
IGNhbmNlbGxhdGlvbjogaW50ZWdyYXRpb24gdGVzdCBvbiBhbiBpbmZpbml0ZSBzdHJlYW0gZGVy
aXZlZCBmcm9tIGEgcmFuZG9tIHB1c2ggc291cmNlJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGxl
dCByZWNvcmRlZFJlYXNvbjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAg
IGNhbmNlbChyZWFzb24pIHsKKyAgICAgIHJlY29yZGVkUmVhc29uID0gcmVhc29uOworICAgIH0K
KyAgfSk7CisKKyAgY29uc3QgcGFzc2VkUmVhc29uID0gbmV3IEVycm9yKCdTb3JyeSwgaXQganVz
dCB3YXNuXCd0IG1lYW50IHRvIGJlLicpOworICBycy5jYW5jZWwocGFzc2VkUmVhc29uKTsKKwor
ICBhc3NlcnRfZXF1YWxzKHJlY29yZGVkUmVhc29uLCBwYXNzZWRSZWFzb24sCisgICAgJ3RoZSBl
cnJvciBwYXNzZWQgdG8gdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCBtZXRob2Qgc2hv
dWxkIGVxdWFsIHRoZSBvbmUgcGFzc2VkIHRvIHRoZSBzdHJlYW1cJ3MgY2FuY2VsJyk7CisKK30s
ICdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGNhbmNlbChyZWFzb24pIHNob3VsZCBwYXNz
IHRocm91Z2ggdGhlIGdpdmVuIHJlYXNvbiB0byB0aGUgdW5kZXJseWluZyBzb3VyY2UnKTsKKwor
cHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICBjLmNsb3NlKCk7
CisgICAgfSwKKyAgICBjYW5jZWwoKSB7CisgICAgICBhc3NlcnRfdW5yZWFjaGVkKCd1bmRlcmx5
aW5nIHNvdXJjZSBjYW5jZWwoKSBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQnKTsKKyAgICB9
CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIHJldHVybiBy
cy5jYW5jZWwoKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfdW5yZWFjaGVkKCdjYW5jZWwoKSBz
aG91bGQgYmUgcmVqZWN0ZWQnKTsKKyAgfSwgZSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhlLm5h
bWUsICdUeXBlRXJyb3InLCAnY2FuY2VsKCkgc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggYSBUeXBl
RXJyb3InKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Cisg
IH0pLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsg
dmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3JlYWQoKSBzaG91bGQgc3RpbGwgd29yayBhZnRl
ciB0aGUgYXR0ZW1wdGVkIGNhbmNlbCcpOworICAgIHJldHVybiByZWFkZXIuY2xvc2VkOworICB9
KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsKCkgb24gYSBsb2Nr
ZWQgc3RyZWFtIHNob3VsZCBmYWlsIGFuZCBub3QgY2FsbCB0aGUgdW5kZXJseWluZyBzb3VyY2Ug
Y2FuY2VsJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNhbmNlbFJlY2VpdmVk
ID0gZmFsc2U7CisgIGNvbnN0IGNhbmNlbFJlYXNvbiA9IG5ldyBFcnJvcignSSBhbSB0aXJlZCBv
ZiB0aGlzIHN0cmVhbSwgSSBwcmVmZXIgdG8gY2FuY2VsIGl0Jyk7CisgIGNvbnN0IHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBjYW5jZWwocmVhc29uKSB7CisgICAgICBjYW5jZWxSZWNl
aXZlZCA9IHRydWU7CisgICAgICBhc3NlcnRfZXF1YWxzKHJlYXNvbiwgY2FuY2VsUmVhc29uLCAn
Y2FuY2VsbGF0aW9uIHJlYXNvbiBnaXZlbiB0byB0aGUgdW5kZXJseWluZyBzb3VyY2Ugc2hvdWxk
IGJlIGVxdWFsIHRvIHRoZSBvbmUgcGFzc2VkJyk7CisgICAgfQorICB9KTsKKworICByZXR1cm4g
cnMuY2FuY2VsKGNhbmNlbFJlYXNvbikudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X3RydWUoY2Fu
Y2VsUmVjZWl2ZWQpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjog
c2hvdWxkIGZ1bGZpbGwgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayB3ZW50IGZpbmUnKTsK
KworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7CisgICAgY2FuY2VsKCkgeworICAgICAgcmV0dXJuICdIZWxsbyc7CisgICAgfQorICB9KTsK
KworICByZXR1cm4gcnMuY2FuY2VsKCkudGhlbih2ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHYs
IHVuZGVmaW5lZCwgJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgZnVsZmlsbGVkIHdp
dGggdW5kZWZpbmVkJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9u
OiByZXR1cm5pbmcgYSB2YWx1ZSBmcm9tIHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBjYW5jZWwg
c2hvdWxkIG5vdCBhZmZlY3QgdGhlIGZ1bGZpbGxtZW50IHZhbHVlIG9mIHRoZSBwcm9taXNlIHJl
dHVybmVkIGJ5IHRoZSBzdHJlYW1cJ3MgY2FuY2VsJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7
CisKKyAgY29uc3QgdGhyb3duRXJyb3IgPSBuZXcgRXJyb3IoJ3Rlc3QnKTsKKyAgbGV0IGNhbmNl
bENhbGxlZCA9IGZhbHNlOworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICBjYW5jZWwoKSB7CisgICAgICBjYW5jZWxDYWxsZWQgPSB0cnVlOworICAgICAgdGhyb3cgdGhy
b3duRXJyb3I7CisgICAgfQorICB9KTsKKworICByZXR1cm4gcnMuY2FuY2VsKCd0ZXN0JykudGhl
bigoKSA9PiB7CisgICAgYXNzZXJ0X3VucmVhY2hlZCgnY2FuY2VsIHNob3VsZCByZWplY3QnKTsK
KyAgfSwgZSA9PiB7CisgICAgYXNzZXJ0X3RydWUoY2FuY2VsQ2FsbGVkKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKGUsIHRocm93bkVycm9yKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBjYW5j
ZWxsYXRpb246IHNob3VsZCByZWplY3QgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayByYWlz
ZXMgYW4gZXhjZXB0aW9uJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgY29uc3QgY2Fu
Y2VsUmVhc29uID0gbmV3IEVycm9yKCd0ZXN0Jyk7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgIGNhbmNlbChlcnJvcikgeworICAgICAgYXNzZXJ0X2VxdWFscyhlcnJv
ciwgY2FuY2VsUmVhc29uKTsKKyAgICAgIHJldHVybiBkZWxheSgxKTsKKyAgICB9CisgIH0pOwor
CisgIHJldHVybiBycy5jYW5jZWwoY2FuY2VsUmVhc29uKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFt
IGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCBtZXRob2Qg
cmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW1cJ3Mg
Y2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBvbmUgZG9lcyAoMSknKTsKKworcHJvbWlz
ZV90ZXN0KCgpID0+IHsKKworICBsZXQgcmVzb2x2ZVNvdXJjZUNhbmNlbFByb21pc2U7CisgIGxl
dCBzb3VyY2VDYW5jZWxQcm9taXNlSGFzRnVsZmlsbGVkID0gZmFsc2U7CisKKyAgY29uc3QgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGNhbmNlbCgpIHsKKyAgICAgIGNvbnN0IHNvdXJj
ZUNhbmNlbFByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmVTb3VyY2VDYW5j
ZWxQcm9taXNlID0gcmVzb2x2ZSk7CisKKyAgICAgIHNvdXJjZUNhbmNlbFByb21pc2UudGhlbigo
KSA9PiB7CisgICAgICAgIHNvdXJjZUNhbmNlbFByb21pc2VIYXNGdWxmaWxsZWQgPSB0cnVlOwor
ICAgICAgfSk7CisKKyAgICAgIHJldHVybiBzb3VyY2VDYW5jZWxQcm9taXNlOworICAgIH0KKyAg
fSk7CisKKyAgc2V0VGltZW91dCgoKSA9PiByZXNvbHZlU291cmNlQ2FuY2VsUHJvbWlzZSgnSGVs
bG8nKSwgMSk7CisKKyAgcmV0dXJuIHJzLmNhbmNlbCgpLnRoZW4odmFsdWUgPT4geworICAgIGFz
c2VydF90cnVlKHNvdXJjZUNhbmNlbFByb21pc2VIYXNGdWxmaWxsZWQsICdjYW5jZWwoKSByZXR1
cm4gdmFsdWUgc2hvdWxkIGJlIGZ1bGZpbGxlZCBvbmx5IGFmdGVyIHRoZSBwcm9taXNlIHJldHVy
bmVkIGJ5IHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBjYW5jZWwnKTsKKyAgICBhc3NlcnRfZXF1
YWxzKHZhbHVlLCB1bmRlZmluZWQsICdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIGZ1
bGZpbGxlZCB3aXRoIHVuZGVmaW5lZCcpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNh
bmNlbGxhdGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCBtZXRob2QgcmV0
dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW1cJ3MgY2Fu
Y2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBvbmUgZG9lcyAoMiknKTsKKworcHJvbWlzZV90
ZXN0KCgpID0+IHsKKworICBsZXQgcmVqZWN0U291cmNlQ2FuY2VsUHJvbWlzZTsKKyAgbGV0IHNv
dXJjZUNhbmNlbFByb21pc2VIYXNSZWplY3RlZCA9IGZhbHNlOworCisgIGNvbnN0IHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBjYW5jZWwoKSB7CisgICAgICBjb25zdCBzb3VyY2VDYW5j
ZWxQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gcmVqZWN0U291cmNl
Q2FuY2VsUHJvbWlzZSA9IHJlamVjdCk7CisKKyAgICAgIHNvdXJjZUNhbmNlbFByb21pc2UuY2F0
Y2goKCkgPT4geworICAgICAgICBzb3VyY2VDYW5jZWxQcm9taXNlSGFzUmVqZWN0ZWQgPSB0cnVl
OworICAgICAgfSk7CisKKyAgICAgIHJldHVybiBzb3VyY2VDYW5jZWxQcm9taXNlOworICAgIH0K
KyAgfSk7CisKKyAgY29uc3QgZXJyb3JJbkNhbmNlbCA9IG5ldyBFcnJvcignU29ycnksIGl0IGp1
c3Qgd2FzblwndCBtZWFudCB0byBiZS4nKTsKKworICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdFNv
dXJjZUNhbmNlbFByb21pc2UoZXJyb3JJbkNhbmNlbCksIDEpOworCisgIHJldHVybiBycy5jYW5j
ZWwoKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfdW5yZWFjaGVkKCdjYW5jZWwoKSByZXR1cm4g
dmFsdWUgc2hvdWxkIGJlIHJlamVjdGVkJyk7CisgIH0sIHIgPT4geworICAgIGFzc2VydF90cnVl
KHNvdXJjZUNhbmNlbFByb21pc2VIYXNSZWplY3RlZCwgJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBz
aG91bGQgYmUgcmVqZWN0ZWQgb25seSBhZnRlciB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUg
dW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2VsJyk7CisgICAgYXNzZXJ0X2VxdWFscyhyLCBlcnJv
ckluQ2FuY2VsLCAnY2FuY2VsKCkgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSByZWplY3RlZCB3aXRo
IHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyByZWplY3Rpb24gcmVhc29uJyk7CisgIH0pOworCit9
LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2Vc
J3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQg
YnkgdGhlIHN0cmVhbVwncyBjYW5jZWwgc2hvdWxkIHJlamVjdCB3aGVuIHRoYXQgb25lIGRvZXMn
KTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7CisgICAgc3RhcnQoKSB7CisgICAgICByZXR1cm4gbmV3IFByb21pc2UoKCkgPT4ge30p
OworICAgIH0sCisgICAgcHVsbCgpIHsKKyAgICAgIGFzc2VydF91bnJlYWNoZWQoJ3B1bGwgc2hv
dWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkJyk7CisgICAgfQorICB9KTsKKworICByZXR1cm4gUHJv
bWlzZS5hbGwoW3JzLmNhbmNlbCgpLCBycy5nZXRSZWFkZXIoKS5jbG9zZWRdKTsKKworfSwgJ1Jl
YWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsbGluZyBiZWZvcmUgc3RhcnQgZmluaXNo
ZXMgc2hvdWxkIHByZXZlbnQgcHVsbCgpIGZyb20gYmVpbmcgY2FsbGVkJyk7CisKK2RvbmUoKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVn
cmF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0
ZWd5LWludGVncmF0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTg4MGY2MzllZGQzODAz
MDdlYzBkYzExODg0NTY2MDkwY2NiYzYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJl
YW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTIgQEAKKworUEFTUyBDYW4gY29uc3RydWN0IGEgcmVhZGFibGUgc3RyZWFtIHdpdGgg
YSB2YWxpZCBDb3VudFF1ZXVpbmdTdHJhdGVneSAKK1BBU1MgQ29ycmVjdGx5IGdvdmVybnMgYSBS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIncyBkZXNpcmVkU2l6ZSBwcm9wZXJ0eSAoSFdNID0gMCkg
CitQQVNTIENvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyJ3MgZGVz
aXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDEpIAorUEFTUyBDb3JyZWN0bHkgZ292ZXJucyBhIFJl
YWRhYmxlU3RyZWFtQ29udHJvbGxlcidzIGRlc2lyZWRTaXplIHByb3BlcnR5IChIV00gPSA0KSAK
K0ZBSUwgTG9hZCBjb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmpzIHdpdGggU2hh
cmVkV29ya2VyIGFzc2VydF91bnJlYWNoZWQ6IFNoYXJlZFdvcmtlciBpcyB1bmF2YWlsYWJsZSBS
ZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK0ZBSUwgVW50aXRsZWQgdW5kZWZpbmVkIGlzIG5vdCBh
biBvYmplY3QgKGV2YWx1YXRpbmcgJ25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdldFJlZ2lzdHJh
dGlvbicpCitGQUlMIENhbiBjb25zdHJ1Y3QgYSByZWFkYWJsZSBzdHJlYW0gd2l0aCBhIHZhbGlk
IENvdW50UXVldWluZ1N0cmF0ZWd5IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFt
CitGQUlMIENvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyJ3MgZGVz
aXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDApIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxl
U3RyZWFtCitGQUlMIENvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
J3MgZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDEpIENhbid0IGZpbmQgdmFyaWFibGU6IFJl
YWRhYmxlU3RyZWFtCitGQUlMIENvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyJ3MgZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDQpIENhbid0IGZpbmQgdmFyaWFi
bGU6IFJlYWRhYmxlU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1x
dWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvY291bnQt
cXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjMzgxNjZjMzAz
NTg4ODY1YWQ5YjQ0ZGExYTk4OTljMWZjNzZkNjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxl
LXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5odG1sCkBAIC0wLDAg
KzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVy
LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9ImNvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50
ZWdyYXRpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsKK3dvcmtlcl90
ZXN0KCdjb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmpzJyk7Cis8L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVn
cmF0aW9uLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdy
YXRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI5YTFhYTJiYTYzMWVkYmI5ZGUxODNmMTA2NmU2M2EzOTI3
N2ZjZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0
cmF0ZWd5LWludGVncmF0aW9uLmpzCkBAIC0wLDAgKzEsMjEzIEBACisndXNlIHN0cmljdCc7CisK
K2lmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKKyAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzJyk7Cit9CisKK3Rlc3QoKCkgPT4geworCisgIG5ldyBSZWFkYWJs
ZVN0cmVhbSh7fSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9
KSk7CisKK30sICdDYW4gY29uc3RydWN0IGEgcmVhZGFibGUgc3RyZWFtIHdpdGggYSB2YWxpZCBD
b3VudFF1ZXVpbmdTdHJhdGVneScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBj
b250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgKKyAgICB7CisgICAg
ICBzdGFydChjKSB7CisgICAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgfQorICAgIH0sCisg
ICAgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMCB9KQorICApOwor
ICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICBhc3NlcnRfZXF1YWxzKGNvbnRy
b2xsZXIuZGVzaXJlZFNpemUsIDAsICcwIHJlYWRzLCAwIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBz
aG91bGQgYmUgMCcpOworICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgYXNzZXJ0X2VxdWFs
cyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzAgcmVhZHMsIDEgZW5xdWV1ZTogZGVzaXJl
ZFNpemUgc2hvdWxkIGJlIC0xJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOworICBhc3Nl
cnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0yLCAnMCByZWFkcywgMiBlbnF1ZXVl
czogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycp
OworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0zLCAnMCByZWFkcywg
MyBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0zJyk7CisgIGNvbnRyb2xsZXIuZW5x
dWV1ZSgnZCcpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC00LCAn
MCByZWFkcywgNCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC00Jyk7CisKKyAgcmV0
dXJuIHJlYWRlci5yZWFkKCkKKyAgICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29i
amVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnMXN0IHJlYWQgZ2l2ZXMgYmFjayB0aGUgMXN0IGNodW5rIGVu
cXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMyBjaHVua3MpJyk7CisgICAgICByZXR1cm4gcmVh
ZGVyLnJlYWQoKTsKKyAgICB9KQorICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRf
b2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICcybmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAybmQgY2h1bmsg
ZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAyIGNodW5rcyknKTsKKyAgICAgIHJldHVybiBy
ZWFkZXIucmVhZCgpOworICAgIH0pCisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2Vy
dF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJzNyZCByZWFkIGdpdmVzIGJhY2sgdGhlIDNyZCBjaHVu
ayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDEgY2h1bmspJyk7CisKKyAgICAgIGFzc2Vy
dF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICczIHJlYWRzLCA0IGVucXVldWVz
OiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgn
ZScpOworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMiwgJzMg
cmVhZHMsIDUgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMicpOworCisgICAgICBy
ZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgICB9KQorICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdkJywgZG9uZTogZmFsc2Ug
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICc0dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA0
dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5rcyknKTsKKyAgICAg
IHJldHVybiByZWFkZXIucmVhZCgpOworCisgICAgfSkudGhlbihyZXN1bHQgPT4geworICAgICAg
YXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZScsIGRvbmU6IGZhbHNlIH0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAnNXRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNXRo
IGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMCBjaHVua3MpJyk7CisKKyAgICAg
IGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzUgcmVhZHMsIDUgZW5x
dWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7CisgICAgICBjb250cm9sbGVyLmVucXVl
dWUoJ2YnKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEs
ICc1IHJlYWRzLCA2IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKKyAgICAg
IGNvbnRyb2xsZXIuZW5xdWV1ZSgnZycpOworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVy
LmRlc2lyZWRTaXplLCAtMiwgJzUgcmVhZHMsIDcgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3Vs
ZCBiZSAtMicpOworICAgIH0pOworCit9LCAnQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXJcJ3MgZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDApJyk7CisKK3By
b21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKAorICAgIHsKKyAgICAgIHN0YXJ0KGMpIHsKKyAgICAgICAgY29udHJv
bGxlciA9IGM7CisgICAgICB9CisgICAgfSwKKyAgICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3ko
eyBoaWdoV2F0ZXJNYXJrOiAxIH0pCisgICk7CisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRl
cigpOworCisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJzAgcmVh
ZHMsIDAgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAxJyk7CisgIGNvbnRyb2xsZXIu
ZW5xdWV1ZSgnYScpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAs
ICcwIHJlYWRzLCAxIGVucXVldWU6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7CisgIGNvbnRy
b2xsZXIuZW5xdWV1ZSgnYicpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNp
emUsIC0xLCAnMCByZWFkcywgMiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7
CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIu
ZGVzaXJlZFNpemUsIC0yLCAnMCByZWFkcywgMyBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxk
IGJlIC0yJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZCcpOworICBhc3NlcnRfZXF1YWxzKGNv
bnRyb2xsZXIuZGVzaXJlZFNpemUsIC0zLCAnMCByZWFkcywgNCBlbnF1ZXVlczogZGVzaXJlZFNp
emUgc2hvdWxkIGJlIC0zJyk7CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKCkKKyAgICAudGhlbihy
ZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAn
YScsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnMXN0IHJlYWQg
Z2l2ZXMgYmFjayB0aGUgMXN0IGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMyBj
aHVua3MpJyk7CisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgICB9KQorICAgIC50aGVu
KHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6
ICdiJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICcybmQgcmVh
ZCBnaXZlcyBiYWNrIHRoZSAybmQgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAy
IGNodW5rcyknKTsKKyAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICAgIH0pCisgICAgLnRo
ZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1
ZTogJ2MnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJzNyZCBy
ZWFkIGdpdmVzIGJhY2sgdGhlIDNyZCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5z
IDEgY2h1bmspJyk7CisKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6
ZSwgMCwgJzMgcmVhZHMsIDQgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7Cisg
ICAgICBjb250cm9sbGVyLmVucXVldWUoJ2UnKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJv
bGxlci5kZXNpcmVkU2l6ZSwgLTEsICczIHJlYWRzLCA1IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBz
aG91bGQgYmUgLTEnKTsKKworICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgICAgfSkKKyAg
ICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7
IHZhbHVlOiAnZCcsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAn
NHRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNHRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29u
dGFpbnMgMSBjaHVua3MpJyk7CisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgICB9KQor
ICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQs
IHsgdmFsdWU6ICdlJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICc1dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA1dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBj
b250YWlucyAwIGNodW5rcyknKTsKKworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRl
c2lyZWRTaXplLCAxLCAnNSByZWFkcywgNSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJl
IDEnKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZicpOworICAgICAgYXNzZXJ0X2VxdWFs
cyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnNSByZWFkcywgNiBlbnF1ZXVlczogZGVzaXJl
ZFNpemUgc2hvdWxkIGJlIDAnKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZycpOworICAg
ICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzUgcmVhZHMsIDcg
ZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMScpOworICAgIH0pOworCit9LCAnQ29y
cmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJcJ3MgZGVzaXJlZFNpemUg
cHJvcGVydHkgKEhXTSA9IDEpJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNv
bnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAorICAgIHsKKyAgICAg
IHN0YXJ0KGMpIHsKKyAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICB9CisgICAgfSwKKyAg
ICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0pCisgICk7Cisg
IGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIGFzc2VydF9lcXVhbHMoY29udHJv
bGxlci5kZXNpcmVkU2l6ZSwgNCwgJzAgcmVhZHMsIDAgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNo
b3VsZCBiZSA0Jyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICBhc3NlcnRfZXF1YWxz
KGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDMsICcwIHJlYWRzLCAxIGVucXVldWU6IGRlc2lyZWRT
aXplIHNob3VsZCBiZSAzJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOworICBhc3NlcnRf
ZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDIsICcwIHJlYWRzLCAyIGVucXVldWVzOiBk
ZXNpcmVkU2l6ZSBzaG91bGQgYmUgMicpOworICBjb250cm9sbGVyLmVucXVldWUoJ2MnKTsKKyAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnMCByZWFkcywgMyBlbnF1
ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEnKTsKKyAgY29udHJvbGxlci5lbnF1ZXVlKCdk
Jyk7CisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzAgcmVhZHMs
IDQgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7CisgIGNvbnRyb2xsZXIuZW5x
dWV1ZSgnZScpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAn
MCByZWFkcywgNSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisgIGNvbnRy
b2xsZXIuZW5xdWV1ZSgnZicpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNp
emUsIC0yLCAnMCByZWFkcywgNiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7
CisKKworICByZWFkZXIucmVhZCgpCisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2Vy
dF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJzFzdCByZWFkIGdpdmVzIGJhY2sgdGhlIDFzdCBjaHVu
ayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDUgY2h1bmtzKScpOworICAgICAgcmV0dXJu
IHJlYWRlci5yZWFkKCk7CisgICAgfSkKKyAgICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnMm5kIHJlYWQgZ2l2ZXMgYmFjayB0aGUgMm5kIGNo
dW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgNCBjaHVua3MpJyk7CisKKyAgICAgIGFz
c2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzIgcmVhZHMsIDYgZW5xdWV1
ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7CisgICAgICBjb250cm9sbGVyLmVucXVldWUo
J2cnKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICcy
IHJlYWRzLCA3IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKKworICAgICAg
cmV0dXJuIHJlYWRlci5yZWFkKCk7CisgICAgfSkKKyAgICAudGhlbihyZXN1bHQgPT4geworICAg
ICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYycsIGRvbmU6IGZhbHNl
IH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnM3JkIHJlYWQgZ2l2ZXMgYmFjayB0aGUg
M3JkIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgNCBjaHVua3MpJyk7CisgICAg
ICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgICB9KQorICAgIC50aGVuKHJlc3VsdCA9PiB7Cisg
ICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdkJywgZG9uZTogZmFs
c2UgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICc0dGggcmVhZCBnaXZlcyBiYWNrIHRo
ZSA0dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAzIGNodW5rcyknKTsKKyAg
ICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICAgIH0pCisgICAgLnRoZW4ocmVzdWx0ID0+IHsK
KyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2UnLCBkb25lOiBm
YWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJzV0aCByZWFkIGdpdmVzIGJhY2sg
dGhlIDV0aCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDIgY2h1bmtzKScpOwor
ICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgICAgfSkKKyAgICAudGhlbihyZXN1bHQgPT4g
eworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZicsIGRvbmU6
IGZhbHNlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnNnRoIHJlYWQgZ2l2ZXMgYmFj
ayB0aGUgNnRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMCBjaHVua3MpJyk7
CisKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMywgJzYgcmVh
ZHMsIDcgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAzJyk7CisgICAgICBjb250cm9s
bGVyLmVucXVldWUoJ2gnKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVk
U2l6ZSwgMiwgJzYgcmVhZHMsIDggZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAyJyk7
CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2knKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoY29u
dHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJzYgcmVhZHMsIDkgZW5xdWV1ZXM6IGRlc2lyZWRTaXpl
IHNob3VsZCBiZSAxJyk7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2onKTsKKyAgICAgIGFz
c2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzYgcmVhZHMsIDEwIGVucXVl
dWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVl
KCdrJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAn
NiByZWFkcywgMTEgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMScpOworICAgIH0p
OworCit9LCAnQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJcJ3Mg
ZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDQpJyk7CisKK2RvbmUoKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkv
cmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJs
ZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAz
NzcwYzY3NDE2NGUwNjE4Y2ZlMDMwMDhmYzg3NmYyNGExMjcwMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkv
cmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTIgQEAKKworUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgbWV0aG9kcyBzaG91bGQg
Y29udGludWUgd29ya2luZyBwcm9wZXJseSB3aGVuIHNjcmlwdHMgbG9zZSB0aGVpciByZWZlcmVu
Y2UgdG8gdGhlIHJlYWRhYmxlIHN0cmVhbSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2xvc2VkIHBy
b21pc2Ugc2hvdWxkIGZ1bGZpbGwgZXZlbiBpZiB0aGUgc3RyZWFtIGFuZCByZWFkZXIgSlMgcmVm
ZXJlbmNlcyBhcmUgbG9zdCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2xvc2VkIHByb21pc2Ugc2hv
dWxkIHJlamVjdCBldmVuIGlmIHN0cmVhbSBhbmQgcmVhZGVyIEpTIHJlZmVyZW5jZXMgYXJlIGxv
c3QgCitQQVNTIEdhcmJhZ2UtY29sbGVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHNob3Vs
ZCBub3QgdW5sb2NrIGl0cyBzdHJlYW0gCitGQUlMIExvYWQgZ2FyYmFnZS1jb2xsZWN0aW9uLmpz
IHdpdGggU2hhcmVkV29ya2VyIGFzc2VydF91bnJlYWNoZWQ6IFNoYXJlZFdvcmtlciBpcyB1bmF2
YWlsYWJsZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK0ZBSUwgVW50aXRsZWQgdW5kZWZpbmVk
IGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdl
dFJlZ2lzdHJhdGlvbicpCitGQUlMIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBtZXRob2RzIHNo
b3VsZCBjb250aW51ZSB3b3JraW5nIHByb3Blcmx5IHdoZW4gc2NyaXB0cyBsb3NlIHRoZWlyIHJl
ZmVyZW5jZSB0byB0aGUgcmVhZGFibGUgc3RyZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRh
YmxlU3RyZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFtIGNsb3NlZCBwcm9taXNlIHNob3VsZCBmdWxm
aWxsIGV2ZW4gaWYgdGhlIHN0cmVhbSBhbmQgcmVhZGVyIEpTIHJlZmVyZW5jZXMgYXJlIGxvc3Qg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFibGVTdHJlYW0g
Y2xvc2VkIHByb21pc2Ugc2hvdWxkIHJlamVjdCBldmVuIGlmIHN0cmVhbSBhbmQgcmVhZGVyIEpT
IHJlZmVyZW5jZXMgYXJlIGxvc3QgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0K
K0ZBSUwgR2FyYmFnZS1jb2xsZWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgc2hvdWxkIG5v
dCB1bmxvY2sgaXRzIHN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3Jl
YWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTM4ZWQy
MDUzNGMyMDY1ZDU3YWZmMmNmNGE4NGM2N2E5NThkYTI0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVh
ZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uaHRtbApAQCAtMCwwICsxLDEzIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3Jp
cHQ+CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iZ2FyYmFnZS1jb2xsZWN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
CisndXNlIHN0cmljdCc7Cit3b3JrZXJfdGVzdCgnZ2FyYmFnZS1jb2xsZWN0aW9uLmpzJyk7Cis8
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24u
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMt
YXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZi
MDBjOTQ2YmJiNTJiMjNlZjZlZDhmY2QzNDBkYjkwZmUzOWRlODEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBp
L3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmpzCkBAIC0wLDAgKzEsNzUgQEAK
Kyd1c2Ugc3RyaWN0JzsKKworaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgeworICBzZWxmLmltcG9y
dFNjcmlwdHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzJyk7CisgIHNlbGYuaW1wb3J0U2Ny
aXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOworfQorCitwcm9taXNlX3Rlc3QoKCkg
PT4geworCisgIGxldCBjb250cm9sbGVyOworICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0
YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisKKyAgZ2FyYmFn
ZUNvbGxlY3QoKTsKKworICByZXR1cm4gZGVsYXkoNTApLnRoZW4oKCkgPT4geworICAgIGNvbnRy
b2xsZXIuY2xvc2UoKTsKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4g
Y29udHJvbGxlci5jbG9zZSgpLCAnY2xvc2Ugc2hvdWxkIHRocm93IGEgVHlwZUVycm9yIHRoZSBz
ZWNvbmQgdGltZScpOworICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBj
b250cm9sbGVyLmVycm9yKCksICdlcnJvciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3Igb24gYSBj
bG9zZWQgc3RyZWFtJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIG1l
dGhvZHMgc2hvdWxkIGNvbnRpbnVlIHdvcmtpbmcgcHJvcGVybHkgd2hlbiBzY3JpcHRzIGxvc2Ug
dGhlaXIgcmVmZXJlbmNlIHRvIHRoZSAnICsKKyAgICdyZWFkYWJsZSBzdHJlYW0nKTsKKworcHJv
bWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKworICBjb25zdCBjbG9zZWRQ
cm9taXNlID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250
cm9sbGVyID0gYzsKKyAgICB9CisgIH0pLmdldFJlYWRlcigpLmNsb3NlZDsKKworICBnYXJiYWdl
Q29sbGVjdCgpOworCisgIHJldHVybiBkZWxheSg1MCkudGhlbigoKSA9PiBjb250cm9sbGVyLmNs
b3NlKCkpLnRoZW4oKCkgPT4gY2xvc2VkUHJvbWlzZSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBj
bG9zZWQgcHJvbWlzZSBzaG91bGQgZnVsZmlsbCBldmVuIGlmIHRoZSBzdHJlYW0gYW5kIHJlYWRl
ciBKUyByZWZlcmVuY2VzIGFyZSBsb3N0Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBj
b25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYm9vJyk7CisgIGxldCBjb250cm9sbGVyOworCisg
IGNvbnN0IGNsb3NlZFByb21pc2UgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMp
IHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCkuY2xvc2Vk
OworCisgIGdhcmJhZ2VDb2xsZWN0KCk7CisKKyAgcmV0dXJuIGRlbGF5KDUwKS50aGVuKCgpID0+
IGNvbnRyb2xsZXIuZXJyb3IodGhlRXJyb3IpKQorICAgICAgICAgICAgICAgICAgLnRoZW4oKCkg
PT4gcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBjbG9zZWRQcm9taXNlKSk7CisKK30sICdS
ZWFkYWJsZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgcmVqZWN0IGV2ZW4gaWYgc3RyZWFt
IGFuZCByZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCcpOworCitwcm9taXNlX3Rlc3QoKCkg
PT4geworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHt9KTsKKworICBycy5nZXRS
ZWFkZXIoKTsKKworICBnYXJiYWdlQ29sbGVjdCgpOworCisgIHJldHVybiBkZWxheSg1MCkudGhl
bigoKSA9PiBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVy
KCksCisgICAgJ29sZCByZWFkZXIgc2hvdWxkIHN0aWxsIGJlIGxvY2tpbmcgdGhlIHN0cmVhbSBl
dmVuIGFmdGVyIGdhcmJhZ2UgY29sbGVjdGlvbicpKTsKKworfSwgJ0dhcmJhZ2UtY29sbGVjdGlu
ZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHNob3VsZCBub3QgdW5sb2NrIGl0cyBzdHJlYW0nKTsK
KworZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
LWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1
YjVkNmY5NDQ3NTE5MDFmMWM2NDI3MjIwODhhNGIyYTQ5OTJkNjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBp
L3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3MiBAQAor
CitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbiBiZSBjb25zdHJ1Y3RlZCB3aXRoIG5vIGVycm9ycyAK
K1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuJ3QgYmUgY29uc3RydWN0ZWQgd2l0aCBnYXJiYWdlIAor
RkFJTCBSZWFkYWJsZVN0cmVhbSBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlz
dCBvZiBwcm9wZXJ0aWVzIGFzc2VydF9mYWxzZTogbWV0aG9kIHNob3VsZCBiZSBub24tZW51bWVy
YWJsZSBleHBlY3RlZCBmYWxzZSBnb3QgdHJ1ZQorUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1
Y3RvciBzaG91bGQgdGhyb3cgZm9yIG5vbi1mdW5jdGlvbiBzdGFydCBhcmd1bWVudHMgCitQQVNT
IFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5pdGlhbCBnYXJiYWdlIGFzIGNh
bmNlbCBhcmd1bWVudCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgY2FuIGdldCBp
bml0aWFsIGdhcmJhZ2UgYXMgcHVsbCBhcmd1bWVudCAKK0ZBSUwgUmVhZGFibGVTdHJlYW0gc3Rh
cnQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBwcm9wZXIgcGFyYW1ldGVycyBhc3NlcnRfZmFs
c2U6IGNsb3NlIHNob3VsZCBiZSBub24tZW51bWVyYWJsZSBleHBlY3RlZCBmYWxzZSBnb3QgdHJ1
ZQorUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBjb250cm9sbGVyIHBhcmFtZXRlciBzaG91bGQg
YmUgZXh0ZW5zaWJsZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gc2hvdWxkIGJlIGFibGUgdG8gY2Fs
bCBzdGFydCBtZXRob2Qgd2l0aGluIHByb3RvdHlwZSBjaGFpbiBvZiBpdHMgc291cmNlIAorUEFT
UyBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNl
IAorUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4gYSBw
cm9taXNlIGFuZCByZWplY3QgaXQgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHNob3VsZCBiZSBhYmxl
IHRvIGVucXVldWUgZGlmZmVyZW50IG9iamVjdHMuIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogaWYg
cHVsbCByZWplY3RzLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSAKK1BBU1MgUmVhZGFibGVT
dHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIHVwb24gc3RhcnRpbmcgdGhlIHN0cmVh
bSAKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgd2hlbiB0cnlpbmcgdG8g
cmVhZCBmcm9tIGEgc3RhcnRlZCwgZW1wdHkgc3RyZWFtIAorUEFTUyBSZWFkYWJsZVN0cmVhbTog
c2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJv
bSBiZWZvcmUgc3RhcnQgZnVsZmlsbHMgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25s
eSBjYWxsIHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGFmdGVyIHN0
YXJ0IGZ1bGZpbGxzIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCBpbiBy
ZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIG5vdCBkcmFpbmluZyAKK1BB
U1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsKCkgaW4gcmVhY3Rpb24gdG8g
cmVhZCgpaW5nIHRoZSBsYXN0IGNodW5rLCBpZiBkcmFpbmluZyAKK1BBU1MgUmVhZGFibGVTdHJl
YW06IHNob3VsZCBub3QgY2FsbCBwdWxsIHVudGlsIHRoZSBwcmV2aW91cyBwdWxsIGNhbGwncyBw
cm9taXNlIGZ1bGZpbGxzIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIHB1bGwgYWZ0ZXIg
c3RhcnQsIGFuZCBhZnRlciBldmVyeSByZWFkIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxk
IG5vdCBjYWxsIHB1bGwgYWZ0ZXIgc3RhcnQgaWYgdGhlIHN0cmVhbSBpcyBub3cgY2xvc2VkIAor
UEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCBhZnRlciBlbnF1ZXVlaW5nIGZy
b20gaW5zaWRlIHB1bGwgKHdpdGggbm8gcmVhZCByZXF1ZXN0cyksIGlmIHN0cmF0ZWd5IGFsbG93
cyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcHVsbCBzaG91bGQgYmUgYWJsZSB0byBjbG9zZSBhIHN0
cmVhbS4gCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB3aGVuIHRo
ZSBzdHJlYW0gaXMgcmVhZGFibGUgYnV0IGRyYWluaW5nIAorUEFTUyBSZWFkYWJsZVN0cmVhbTog
ZW5xdWV1ZSBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc3RyZWFtIGlzIGNsb3NlZCAKK1BBU1MgUmVh
ZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBzdG9yZWQgZXJyb3Igd2hlbiB0
aGUgc3RyZWFtIGlzIGVycm9yZWQgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCB1
bmRlcmx5aW5nIHNvdXJjZSBtZXRob2RzIGFzIG1ldGhvZHMgCitQQVNTIFJlYWRhYmxlU3RyZWFt
IHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCBnaXZlIGRlc2lyZWRTaXpl
IG9mIDEgdG8gc3RhcnQsIGRlY3JlYXNpbmcgYnkgMSBwZXIgZW5xdWV1ZSAKK1BBU1MgUmVhZGFi
bGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGNvbnRpbnVl
IGdpdmluZyBkZXNpcmVkU2l6ZSBvZiAxIGlmIHRoZSBjaHVua3MgYXJlIHJlYWQgaW1tZWRpYXRl
bHkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgcmFu
ZG9tIHB1c2ggc291cmNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBh
ZGFwdGluZyBhIHN5bmMgcHVsbCBzb3VyY2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGludGVncmF0
aW9uIHRlc3Q6IGFkYXB0aW5nIGFuIGFzeW5jIHB1bGwgc291cmNlIAorRkFJTCBMb2FkIGdlbmVy
YWwuanMgd2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0X3VucmVhY2hlZDogU2hhcmVkV29ya2VyIGlz
IHVuYXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBVbnRpdGxlZCB1bmRl
ZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnbmF2aWdhdG9yLnNlcnZpY2VXb3Jr
ZXIuZ2V0UmVnaXN0cmF0aW9uJykKK0ZBSUwgUmVhZGFibGVTdHJlYW0gY2FuIGJlIGNvbnN0cnVj
dGVkIHdpdGggbm8gZXJyb3JzIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitG
QUlMIFJlYWRhYmxlU3RyZWFtIGNhbid0IGJlIGNvbnN0cnVjdGVkIHdpdGggZ2FyYmFnZSBhc3Nl
cnRfdGhyb3dzOiBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc291cmNlIGlzIG51
bGwgZnVuY3Rpb24gIigpID0+IG5ldyBSZWFkYWJsZVN0cmVhbShudWxsKSIgdGhyZXcgb2JqZWN0
ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0iICgi
UmVmZXJlbmNlRXJyb3IiKSBleHBlY3RlZCBvYmplY3QgIlR5cGVFcnJvciIgKCJUeXBlRXJyb3Ii
KQorRkFJTCBSZWFkYWJsZVN0cmVhbSBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3Qg
bGlzdCBvZiBwcm9wZXJ0aWVzIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitG
QUlMIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmb3Igbm9uLWZ1bmN0
aW9uIHN0YXJ0IGFyZ3VtZW50cyBhc3NlcnRfdGhyb3dzOiBjb25zdHJ1Y3RvciBzaG91bGQgdGhy
b3cgd2hlbiBzdGFydCBpcyBub3QgYSBmdW5jdGlvbiBmdW5jdGlvbiAiKCkgPT4geworICAgIG5l
dyBSZWFkYWJsZVN0cmVhbSh7IHN0YXJ0OiAncG90YXRvJyB9KTsKKyAgfSIgdGhyZXcgb2JqZWN0
ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0iICgi
UmVmZXJlbmNlRXJyb3IiKSBleHBlY3RlZCBvYmplY3QgIlR5cGVFcnJvciIgKCJUeXBlRXJyb3Ii
KQorRkFJTCBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFn
ZSBhcyBjYW5jZWwgYXJndW1lbnQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0K
K0ZBSUwgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2Ug
YXMgcHVsbCBhcmd1bWVudCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJ
TCBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHByb3BlciBw
YXJhbWV0ZXJzIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRh
YmxlU3RyZWFtIHN0YXJ0IGNvbnRyb2xsZXIgcGFyYW1ldGVyIHNob3VsZCBiZSBleHRlbnNpYmxl
IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFt
IHNob3VsZCBiZSBhYmxlIHRvIGNhbGwgc3RhcnQgbWV0aG9kIHdpdGhpbiBwcm90b3R5cGUgY2hh
aW4gb2YgaXRzIHNvdXJjZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJ
TCBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNl
IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFt
IHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBSZWFkYWJsZVN0cmVhbSBz
aG91bGQgYmUgYWJsZSB0byBlbnF1ZXVlIGRpZmZlcmVudCBvYmplY3RzLiBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBSZWFkYWJsZVN0cmVhbTogaWYgcHVsbCByZWpl
Y3RzLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFk
YWJsZVN0cmVhbQorRkFJTCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9u
Y2UgdXBvbiBzdGFydGluZyB0aGUgc3RyZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxl
U3RyZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIHdoZW4gdHJ5aW5n
IHRvIHJlYWQgZnJvbSBhIHN0YXJ0ZWQsIGVtcHR5IHN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBSZWFkYWJsZVN0cmVhbQorRkFJTCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBw
dWxsIG9uY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBiZWZvcmUgc3RhcnQgZnVs
ZmlsbHMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFibGVT
dHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSBy
ZWFkIGZyb20gYWZ0ZXIgc3RhcnQgZnVsZmlsbHMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFi
bGVTdHJlYW0KK0ZBSUwgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgaW4gcmVhY3Rp
b24gdG8gcmVhZCgpaW5nIHRoZSBsYXN0IGNodW5rLCBpZiBub3QgZHJhaW5pbmcgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFibGVTdHJlYW06IHNob3VsZCBu
b3QgY2FsbCBwdWxsKCkgaW4gcmVhY3Rpb24gdG8gcmVhZCgpaW5nIHRoZSBsYXN0IGNodW5rLCBp
ZiBkcmFpbmluZyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBSZWFk
YWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50aWwgdGhlIHByZXZpb3VzIHB1bGwg
Y2FsbCdzIHByb21pc2UgZnVsZmlsbHMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJl
YW0KK0ZBSUwgUmVhZGFibGVTdHJlYW06IHNob3VsZCBwdWxsIGFmdGVyIHN0YXJ0LCBhbmQgYWZ0
ZXIgZXZlcnkgcmVhZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBS
ZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgYWZ0ZXIgc3RhcnQgaWYgdGhlIHN0
cmVhbSBpcyBub3cgY2xvc2VkIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitG
QUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIGFmdGVyIGVucXVldWVpbmcgZnJv
bSBpbnNpZGUgcHVsbCAod2l0aCBubyByZWFkIHJlcXVlc3RzKSwgaWYgc3RyYXRlZ3kgYWxsb3dz
IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFt
IHB1bGwgc2hvdWxkIGJlIGFibGUgdG8gY2xvc2UgYSBzdHJlYW0uIENhbid0IGZpbmQgdmFyaWFi
bGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0
aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMgcmVhZGFibGUgYnV0IGRyYWluaW5nIENhbid0IGZpbmQg
dmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNo
b3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMgY2xvc2VkIENhbid0IGZpbmQgdmFyaWFibGU6
IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJv
dyB0aGUgc3RvcmVkIGVycm9yIHdoZW4gdGhlIHN0cmVhbSBpcyBlcnJvcmVkIENhbid0IGZpbmQg
dmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2Fs
bCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2RzIGFzIG1ldGhvZHMgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRl
ZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGdpdmUgZGVzaXJlZFNpemUgb2YgMSB0byBzdGFydCwgZGVj
cmVhc2luZyBieSAxIHBlciBlbnF1ZXVlIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3Ry
ZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5
IHNob3VsZCBjb250aW51ZSBnaXZpbmcgZGVzaXJlZFNpemUgb2YgMSBpZiB0aGUgY2h1bmtzIGFy
ZSByZWFkIGltbWVkaWF0ZWx5IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitG
QUlMIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgcmFuZG9tIHB1
c2ggc291cmNlIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRh
YmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgc3luYyBwdWxsIHNvdXJjZSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBSZWFkYWJsZVN0cmVhbSBp
bnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhbiBhc3luYyBwdWxsIHNvdXJjZSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMv
Z2VuZXJhbC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
NTI0MWZmZThmMDcyZmJmZDVmNjc2YzA2OWYxNTRiNDI5YjAxNDZlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFw
aS9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuaHRtbApAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3JpcHQ+CisK
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJnZW5lcmFsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7Cit3b3JrZXJf
dGVzdCgnZ2VuZXJhbC5qcycpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVh
bXMvZ2VuZXJhbC5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0
ZDFhNGE2Y2E0MDNjZGY0ZDU0NGI1MGZiNmUxMjY2NTM2ZmI3M2QKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBp
L3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5qcwpAQCAtMCwwICsxLDgzMSBAQAorJ3VzZSBzdHJp
Y3QnOworCitpZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7CisgIHNlbGYuaW1wb3J0U2NyaXB0cygn
Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMnKTsKKyAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9y
ZXNvdXJjZXMvcnMtdXRpbHMuanMnKTsKKyAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzJyk7Cit9CisKK3Rlc3QoKCkgPT4geworCisgIG5ldyBSZWFkYWJsZVN0
cmVhbSgpOyAvLyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RlZCB3aXRoIG5vIHBhcmFtZXRlcnMK
KyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsgfSk7IC8vIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdGVk
IHdpdGggYW4gZW1wdHkgb2JqZWN0IGFzIHBhcmFtZXRlcgorICBuZXcgUmVhZGFibGVTdHJlYW0o
dW5kZWZpbmVkKTsgLy8gUmVhZGFibGVTdHJlYW0gY29uc3RydWN0ZWQgd2l0aCB1bmRlZmluZWQg
YXMgcGFyYW1ldGVyCisKKyAgbGV0IHg7CisgIG5ldyBSZWFkYWJsZVN0cmVhbSh4KTsgLy8gUmVh
ZGFibGVTdHJlYW0gY29uc3RydWN0ZWQgd2l0aCBhbiB1bmRlZmluZWQgdmFyaWFibGUgYXMgcGFy
YW1ldGVyCisKK30sICdSZWFkYWJsZVN0cmVhbSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBubyBl
cnJvcnMnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
KCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbShudWxsKSwgJ2NvbnN0cnVjdG9yIHNob3VsZCB0
aHJvdyB3aGVuIHRoZSBzb3VyY2UgaXMgbnVsbCcpOworCit9LCAnUmVhZGFibGVTdHJlYW0gY2Fu
XCd0IGJlIGNvbnN0cnVjdGVkIHdpdGggZ2FyYmFnZScpOworCit0ZXN0KCgpID0+IHsKKworICBj
b25zdCBtZXRob2RzID0gWydjYW5jZWwnLCAnY29uc3RydWN0b3InLCAnZ2V0UmVhZGVyJywgJ3Bp
cGVUaHJvdWdoJywgJ3BpcGVUbycsICd0ZWUnXTsKKyAgY29uc3QgcHJvcGVydGllcyA9IG1ldGhv
ZHMuY29uY2F0KFsnbG9ja2VkJ10pLnNvcnQoKTsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSgpOworICBjb25zdCBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihycyk7CisK
KyAgYXNzZXJ0X2FycmF5X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhwcm90byku
c29ydCgpLCBwcm9wZXJ0aWVzLCAnc2hvdWxkIGhhdmUgYWxsIHRoZSBjb3JyZWN0IG1ldGhvZHMn
KTsKKworICBmb3IgKGNvbnN0IG0gb2YgbWV0aG9kcykgeworICAgIGNvbnN0IHByb3BEZXNjID0g
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgbSk7CisgICAgYXNzZXJ0X2Zh
bHNlKHByb3BEZXNjLmVudW1lcmFibGUsICdtZXRob2Qgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxl
Jyk7CisgICAgYXNzZXJ0X3RydWUocHJvcERlc2MuY29uZmlndXJhYmxlLCAnbWV0aG9kIHNob3Vs
ZCBiZSBjb25maWd1cmFibGUnKTsKKyAgICBhc3NlcnRfdHJ1ZShwcm9wRGVzYy53cml0YWJsZSwg
J21ldGhvZCBzaG91bGQgYmUgd3JpdGFibGUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBy
c1ttXSwgJ2Z1bmN0aW9uJywgJ21ldGhvZCBzaG91bGQgYmUgYSBmdW5jdGlvbicpOworICB9CisK
KyAgY29uc3QgbG9ja2VkUHJvcERlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KHByb3RvLCAnbG9ja2VkJyk7CisgIGFzc2VydF9mYWxzZShsb2NrZWRQcm9wRGVzYy5lbnVtZXJh
YmxlLCAnbG9ja2VkIHNob3VsZCBiZSBub24tZW51bWVyYWJsZScpOworICBhc3NlcnRfZXF1YWxz
KGxvY2tlZFByb3BEZXNjLndyaXRhYmxlLCB1bmRlZmluZWQsICdsb2NrZWQgc2hvdWxkIG5vdCBi
ZSBhIGRhdGEgcHJvcGVydHknKTsKKyAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgbG9ja2VkUHJvcERl
c2MuZ2V0LCAnZnVuY3Rpb24nLCAnbG9ja2VkIHNob3VsZCBoYXZlIGEgZ2V0dGVyJyk7CisgIGFz
c2VydF9lcXVhbHMobG9ja2VkUHJvcERlc2Muc2V0LCB1bmRlZmluZWQsICdsb2NrZWQgc2hvdWxk
IG5vdCBoYXZlIGEgc2V0dGVyJyk7CisgIGFzc2VydF90cnVlKGxvY2tlZFByb3BEZXNjLmNvbmZp
Z3VyYWJsZSwgJ2xvY2tlZCBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7CisKKyAgYXNzZXJ0X2Vx
dWFscyhycy5jYW5jZWwubGVuZ3RoLCAxLCAnY2FuY2VsIHNob3VsZCBoYXZlIDEgcGFyYW1ldGVy
Jyk7CisgIGFzc2VydF9lcXVhbHMocnMuY29uc3RydWN0b3IubGVuZ3RoLCAwLCAnY29uc3RydWN0
b3Igc2hvdWxkIGhhdmUgbm8gcGFyYW1ldGVycycpOworICBhc3NlcnRfZXF1YWxzKHJzLmdldFJl
YWRlci5sZW5ndGgsIDAsICdnZXRSZWFkZXIgc2hvdWxkIGhhdmUgbm8gcGFyYW1ldGVycycpOwor
ICBhc3NlcnRfZXF1YWxzKHJzLnBpcGVUaHJvdWdoLmxlbmd0aCwgMiwgJ3BpcGVUaHJvdWdoIHNo
b3VsZCBoYXZlIDIgcGFyYW1ldGVycycpOworICBhc3NlcnRfZXF1YWxzKHJzLnBpcGVUby5sZW5n
dGgsIDEsICdwaXBlVG8gc2hvdWxkIGhhdmUgMSBwYXJhbWV0ZXInKTsKKyAgYXNzZXJ0X2VxdWFs
cyhycy50ZWUubGVuZ3RoLCAwLCAndGVlIHNob3VsZCBoYXZlIG5vIHBhcmFtZXRlcnMnKTsKKwor
fSwgJ1JlYWRhYmxlU3RyZWFtIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0
IG9mIHByb3BlcnRpZXMnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yKCksICgpID0+IHsKKyAgICBuZXcgUmVhZGFibGVTdHJlYW0oeyBzdGFydDogJ3Bv
dGF0bycgfSk7CisgIH0sICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgd2hlbiBzdGFydCBpcyBu
b3QgYSBmdW5jdGlvbicpOworCit9LCAnUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igc2hvdWxk
IHRocm93IGZvciBub24tZnVuY3Rpb24gc3RhcnQgYXJndW1lbnRzJyk7CisKK3Rlc3QoKCkgPT4g
eworCisgIG5ldyBSZWFkYWJsZVN0cmVhbSh7IGNhbmNlbDogJzInIH0pOworCit9LCAnUmVhZGFi
bGVTdHJlYW0gY29uc3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgY2FuY2VsIGFy
Z3VtZW50Jyk7CisKK3Rlc3QoKCkgPT4geworCisgIG5ldyBSZWFkYWJsZVN0cmVhbSh7IHB1bGw6
IHsgfSB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5pdGlh
bCBnYXJiYWdlIGFzIHB1bGwgYXJndW1lbnQnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0
YXJ0Q2FsbGVkID0gZmFsc2U7CisKKyAgY29uc3Qgc291cmNlID0geworICAgIHN0YXJ0KGNvbnRy
b2xsZXIpIHsKKyAgICAgIGFzc2VydF9lcXVhbHModGhpcywgc291cmNlLCAnc291cmNlIGlzIHRo
aXMgZHVyaW5nIHN0YXJ0Jyk7CisKKyAgICAgIGNvbnN0IG1ldGhvZHMgPSBbJ2Nsb3NlJywgJ2Vu
cXVldWUnLCAnZXJyb3InLCAnY29uc3RydWN0b3InXTsKKyAgICAgIGNvbnN0IHByb3BlcnRpZXMg
PSBbJ2Rlc2lyZWRTaXplJ10uY29uY2F0KG1ldGhvZHMpLnNvcnQoKTsKKyAgICAgIGNvbnN0IHBy
b3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGNvbnRyb2xsZXIpOworCisgICAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvKS5zb3J0KCksIHBy
b3BlcnRpZXMsCisgICAgICAgICd0aGUgY29udHJvbGxlciBzaG91bGQgaGF2ZSB0aGUgcmlnaHQg
cHJvcGVydGllcycpOworCisgICAgICBmb3IgKGNvbnN0IG0gb2YgbWV0aG9kcykgeworICAgICAg
ICBjb25zdCBwcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8s
IG0pOworICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBjb250cm9sbGVyW21dLCAnZnVuY3Rp
b24nLCBgc2hvdWxkIGhhdmUgYSAke219IG1ldGhvZGApOworICAgICAgICBhc3NlcnRfZmFsc2Uo
cHJvcERlc2MuZW51bWVyYWJsZSwgbSArICcgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlJyk7Cisg
ICAgICAgIGFzc2VydF90cnVlKHByb3BEZXNjLmNvbmZpZ3VyYWJsZSwgbSArICcgc2hvdWxkIGJl
IGNvbmZpZ3VyYWJsZScpOworICAgICAgICBhc3NlcnRfdHJ1ZShwcm9wRGVzYy53cml0YWJsZSwg
bSArICcgc2hvdWxkIGJlIHdyaXRhYmxlJyk7CisgICAgICB9CisKKyAgICAgIGNvbnN0IGRlc2ly
ZWRTaXplUHJvcERlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCAn
ZGVzaXJlZFNpemUnKTsKKyAgICAgIGFzc2VydF9mYWxzZShkZXNpcmVkU2l6ZVByb3BEZXNjLmVu
dW1lcmFibGUsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUnKTsKKyAgICAg
IGFzc2VydF9lcXVhbHMoZGVzaXJlZFNpemVQcm9wRGVzYy53cml0YWJsZSwgdW5kZWZpbmVkLCAn
ZGVzaXJlZFNpemUgc2hvdWxkIG5vdCBiZSBhIGRhdGEgcHJvcGVydHknKTsKKyAgICAgIGFzc2Vy
dF9lcXVhbHModHlwZW9mIGRlc2lyZWRTaXplUHJvcERlc2MuZ2V0LCAnZnVuY3Rpb24nLCAnZGVz
aXJlZFNpemUgc2hvdWxkIGhhdmUgYSBnZXR0ZXInKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoZGVz
aXJlZFNpemVQcm9wRGVzYy5zZXQsIHVuZGVmaW5lZCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBub3Qg
aGF2ZSBhIHNldHRlcicpOworICAgICAgYXNzZXJ0X3RydWUoZGVzaXJlZFNpemVQcm9wRGVzYy5j
b25maWd1cmFibGUsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7CisKKyAg
ICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5jbG9zZS5sZW5ndGgsIDAsICdjbG9zZSBzaG91
bGQgaGF2ZSBubyBwYXJhbWV0ZXJzJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIu
Y29uc3RydWN0b3IubGVuZ3RoLCAxLCAnY29uc3RydWN0b3Igc2hvdWxkIGhhdmUgMSBwYXJhbWV0
ZXInKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5lbnF1ZXVlLmxlbmd0aCwgMSwg
J2VucXVldWUgc2hvdWxkIGhhdmUgMSBwYXJhbWV0ZXInKTsKKyAgICAgIGFzc2VydF9lcXVhbHMo
Y29udHJvbGxlci5lcnJvci5sZW5ndGgsIDEsICdlcnJvciBzaG91bGQgaGF2ZSAxIHBhcmFtZXRl
cicpOworCisgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgfQorICB9OworCisgIG5ldyBS
ZWFkYWJsZVN0cmVhbShzb3VyY2UpOworICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7CisKK30s
ICdSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHByb3BlciBw
YXJhbWV0ZXJzJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGxldCBzdGFydENhbGxlZCA9IGZhbHNl
OworICBjb25zdCBzb3VyY2UgPSB7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgY29u
c3QgcHJvcGVydGllcyA9IFsnY2xvc2UnLCAnY29uc3RydWN0b3InLCAnZGVzaXJlZFNpemUnLCAn
ZW5xdWV1ZScsICdlcnJvciddOworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhPYmplY3QuZ2V0
T3duUHJvcGVydHlOYW1lcyhPYmplY3QuZ2V0UHJvdG90eXBlT2YoY29udHJvbGxlcikpLnNvcnQo
KSwgcHJvcGVydGllcywKKyAgICAgICAgJ3Byb3RvdHlwZSBzaG91bGQgaGF2ZSB0aGUgcmlnaHQg
cHJvcGVydGllcycpOworCisgICAgICBjb250cm9sbGVyLnRlc3QgPSAnJzsKKyAgICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2JqZWN0LmdldFByb3Rv
dHlwZU9mKGNvbnRyb2xsZXIpKS5zb3J0KCksIHByb3BlcnRpZXMsCisgICAgICAgICdwcm90b3R5
cGUgc2hvdWxkIHN0aWxsIGhhdmUgdGhlIHJpZ2h0IHByb3BlcnRpZXMnKTsKKyAgICAgIGFzc2Vy
dF9ub3RfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGNvbnRyb2xsZXIpLmluZGV4
T2YoJ3Rlc3QnKSwgLTEsCisgICAgICAgICcidGVzdCIgc2hvdWxkIGJlIGEgcHJvcGVydHkgb2Yg
dGhlIGNvbnRyb2xsZXInKTsKKworICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOworICAgIH0KKyAg
fTsKKworICBuZXcgUmVhZGFibGVTdHJlYW0oc291cmNlKTsKKyAgYXNzZXJ0X3RydWUoc3RhcnRD
YWxsZWQpOworCit9LCAnUmVhZGFibGVTdHJlYW0gc3RhcnQgY29udHJvbGxlciBwYXJhbWV0ZXIg
c2hvdWxkIGJlIGV4dGVuc2libGUnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBmdW5j
dGlvbiBTaW1wbGVTdHJlYW1Tb3VyY2UoKSB7fQorICBsZXQgcmVzb2x2ZTsKKyAgY29uc3QgcHJv
bWlzZSA9IG5ldyBQcm9taXNlKHIgPT4gcmVzb2x2ZSA9IHIpOworICBTaW1wbGVTdHJlYW1Tb3Vy
Y2UucHJvdG90eXBlID0geworICAgIHN0YXJ0OiByZXNvbHZlCisgIH07CisKKyAgbmV3IFJlYWRh
YmxlU3RyZWFtKG5ldyBTaW1wbGVTdHJlYW1Tb3VyY2UoKSk7CisgIHJldHVybiBwcm9taXNlOwor
Cit9LCAnUmVhZGFibGVTdHJlYW0gc2hvdWxkIGJlIGFibGUgdG8gY2FsbCBzdGFydCBtZXRob2Qg
d2l0aGluIHByb3RvdHlwZSBjaGFpbiBvZiBpdHMgc291cmNlJyk7CisKK3Byb21pc2VfdGVzdCgo
KSA9PiB7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMp
IHsKKyAgICAgIHJldHVybiBkZWxheSg1KS50aGVuKCgpID0+IHsKKyAgICAgICAgYy5lbnF1ZXVl
KCdhJyk7CisgICAgICAgIGMuY2xvc2UoKTsKKyAgICAgIH0pOworICAgIH0KKyAgfSk7CisKKyAg
Y29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisgIHJldHVybiByZWFkZXIucmVhZCgpLnRo
ZW4ociA9PiB7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25l
OiBmYWxzZSB9LCAndmFsdWUgcmVhZCBzaG91bGQgYmUgdGhlIG9uZSBlbnF1ZXVlZCcpOworICAg
IHJldHVybiByZWFkZXIuY2xvc2VkOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0
IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UnKTsKKworcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcigncmVqZWN0ZWQhJyk7CisgIGNv
bnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAgIHJldHVy
biBkZWxheSgxKS50aGVuKCgpID0+IHsgdGhyb3cgdGhlRXJyb3I7IH0pOworICAgIH0KKyAgfSk7
CisKKyAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKCgpID0+IHsKKyAgICBhc3Nl
cnRfdW5yZWFjaGVkKCdjbG9zZWQgcHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQnKTsKKyAgfSwg
ZSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ3Byb21pc2Ugc2hvdWxkIGJl
IHJlamVjdGVkIHdpdGggdGhlIHNhbWUgZXJyb3InKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0
cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNlIGFuZCByZWplY3Qg
aXQnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBvYmplY3RzID0gWworICAg
IHsgcG90YXRvOiAnR2l2ZSBtZSBtb3JlIScgfSwKKyAgICAndGVzdCcsCisgICAgMQorICBdOwor
CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAg
ICBmb3IgKGNvbnN0IG8gb2Ygb2JqZWN0cykgeworICAgICAgICBjLmVucXVldWUobyk7CisgICAg
ICB9CisgICAgICBjLmNsb3NlKCk7CisgICAgfQorICB9KTsKKworICBjb25zdCByZWFkZXIgPSBy
cy5nZXRSZWFkZXIoKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoW3JlYWRlci5yZWFkKCksIHJl
YWRlci5yZWFkKCksIHJlYWRlci5yZWFkKCksIHJlYWRlci5jbG9zZWRdKS50aGVuKHIgPT4gewor
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJbMF0sIHsgdmFsdWU6IG9iamVjdHNbMF0sIGRvbmU6
IGZhbHNlIH0sICd2YWx1ZSByZWFkIHNob3VsZCBiZSB0aGUgb25lIGVucXVldWVkJyk7CisgICAg
YXNzZXJ0X29iamVjdF9lcXVhbHMoclsxXSwgeyB2YWx1ZTogb2JqZWN0c1sxXSwgZG9uZTogZmFs
c2UgfSwgJ3ZhbHVlIHJlYWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQnKTsKKyAgICBhc3Nl
cnRfb2JqZWN0X2VxdWFscyhyWzJdLCB7IHZhbHVlOiBvYmplY3RzWzJdLCBkb25lOiBmYWxzZSB9
LCAndmFsdWUgcmVhZCBzaG91bGQgYmUgdGhlIG9uZSBlbnF1ZXVlZCcpOworICB9KTsKKworfSwg
J1JlYWRhYmxlU3RyZWFtIHNob3VsZCBiZSBhYmxlIHRvIGVucXVldWUgZGlmZmVyZW50IG9iamVj
dHMuJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgY29uc3QgZXJyb3IgPSBuZXcgRXJy
b3IoJ3B1bGwgZmFpbHVyZScpOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Cisg
ICAgcHVsbCgpIHsKKyAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7CisgICAgfQor
ICB9KTsKKworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICBsZXQgY2xvc2Vk
ID0gZmFsc2U7CisgIGxldCByZWFkID0gZmFsc2U7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsK
KyAgICByZWFkZXIuY2xvc2VkLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X3VucmVhY2hlZCgn
Y2xvc2VkIHNob3VsZCBiZSByZWplY3RlZCcpOworICAgIH0sIGUgPT4geworICAgICAgY2xvc2Vk
ID0gdHJ1ZTsKKyAgICAgIGFzc2VydF90cnVlKHJlYWQpOworICAgICAgYXNzZXJ0X2VxdWFscyhl
LCBlcnJvciwgJ2Nsb3NlZCBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgdGhyb3duIGVycm9y
Jyk7CisgICAgfSksCisgICAgcmVhZGVyLnJlYWQoKS50aGVuKCgpID0+IHsKKyAgICAgIGFzc2Vy
dF91bnJlYWNoZWQoJ3JlYWQoKSBzaG91bGQgYmUgcmVqZWN0ZWQnKTsKKyAgICB9LCBlID0+IHsK
KyAgICAgIHJlYWQgPSB0cnVlOworICAgICAgYXNzZXJ0X2ZhbHNlKGNsb3NlZCk7CisgICAgICBh
c3NlcnRfZXF1YWxzKGUsIGVycm9yLCAncmVhZCgpIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHRo
ZSB0aHJvd24gZXJyb3InKTsKKyAgICB9KQorICBdKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtOiBp
ZiBwdWxsIHJlamVjdHMsIGl0IHNob3VsZCBlcnJvciB0aGUgc3RyZWFtJyk7CisKK3Byb21pc2Vf
dGVzdCgoKSA9PiB7CisKKyAgbGV0IHB1bGxDb3VudCA9IDA7CisgIGNvbnN0IHN0YXJ0UHJvbWlz
ZSA9IFByb21pc2UucmVzb2x2ZSgpOworCisgIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3Rh
cnQoKSB7CisgICAgICByZXR1cm4gc3RhcnRQcm9taXNlOworICAgIH0sCisgICAgcHVsbCgpIHsK
KyAgICAgIHB1bGxDb3VudCsrOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHN0YXJ0UHJvbWlz
ZS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hv
dWxkIGJlIGNhbGxlZCBvbmNlIHN0YXJ0IGZpbmlzaGVzJyk7CisgICAgcmV0dXJuIGRlbGF5KDEw
KTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdw
dWxsIHNob3VsZCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlJyk7CisgIH0pOworCit9LCAnUmVhZGFi
bGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIHVwb24gc3RhcnRpbmcgdGhlIHN0
cmVhbScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBwdWxsQ291bnQgPSAwOwor
CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGMpIHsKKyAgICAg
IC8vIERvbid0IGVucXVldWUgaW1tZWRpYXRlbHkgYWZ0ZXIgc3RhcnQuIFdlIHdhbnQgdGhlIHN0
cmVhbSB0byBiZSBlbXB0eSB3aGVuIHdlIGNhbGwgLnJlYWQoKSBvbiBpdC4KKyAgICAgIGlmIChw
dWxsQ291bnQgPiAwKSB7CisgICAgICAgIGMuZW5xdWV1ZShwdWxsQ291bnQpOworICAgICAgfQor
ICAgICAgKytwdWxsQ291bnQ7CisgICAgfQorICB9KTsKKworICByZXR1cm4gZGVsYXkoMSkudGhl
bigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBi
ZSBjYWxsZWQgb25jZSBzdGFydCBmaW5pc2hlcycpOworCisgICAgY29uc3QgcmVhZGVyID0gcnMu
Z2V0UmVhZGVyKCk7CisgICAgY29uc3QgcmVhZCA9IHJlYWRlci5yZWFkKCk7CisgICAgYXNzZXJ0
X2VxdWFscyhwdWxsQ291bnQsIDIsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgd2hlbiByZWFkIGlz
IGNhbGxlZCcpOworICAgIHJldHVybiByZWFkOworICB9KS50aGVuKHJlc3VsdCA9PiB7CisgICAg
YXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDMsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgYWdhaW4g
aW4gcmVhY3Rpb24gdG8gY2FsbGluZyByZWFkJyk7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMo
cmVzdWx0LCB7IHZhbHVlOiAxLCBkb25lOiBmYWxzZSB9LCAndGhlIHJlc3VsdCByZWFkIHNob3Vs
ZCBiZSB0aGUgb25lIGVucXVldWVkJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW06IHNo
b3VsZCBjYWxsIHB1bGwgd2hlbiB0cnlpbmcgdG8gcmVhZCBmcm9tIGEgc3RhcnRlZCwgZW1wdHkg
c3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHB1bGxDb3VudCA9IDA7
CisgIGNvbnN0IHN0YXJ0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworCisgIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUo
J2EnKTsKKyAgICAgIHJldHVybiBzdGFydFByb21pc2U7CisgICAgfSwKKyAgICBwdWxsKCkgewor
ICAgICAgcHVsbENvdW50Kys7CisgICAgfQorICB9KTsKKworICBjb25zdCByZWFkID0gcnMuZ2V0
UmVhZGVyKCkucmVhZCgpOworICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCwgJ2NhbGxpbmcg
cmVhZCgpIHNob3VsZCBub3QgY2F1c2UgcHVsbCB0byBiZSBjYWxsZWQgeWV0Jyk7CisKKyAgcmV0
dXJuIHN0YXJ0UHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3Vu
dCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBvbmNlIHN0YXJ0IGZpbmlzaGVzJyk7CisgICAg
cmV0dXJuIHJlYWQ7CisgIH0pLnRoZW4ociA9PiB7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMo
ciwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgcmVhZCgpIHNob3VsZCByZXR1
cm4gZmlyc3QgY2h1bmsnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwg
c2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkIGFnYWluJyk7CisgICAgcmV0dXJuIGRlbGF5KDEw
KTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdw
dWxsIHNob3VsZCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlJyk7CisgIH0pOworCit9LCAnUmVhZGFi
bGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIG9uIGEgbm9uLWVtcHR5IHN0cmVh
bSByZWFkIGZyb20gYmVmb3JlIHN0YXJ0IGZ1bGZpbGxzJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9
PiB7CisKKyAgbGV0IHB1bGxDb3VudCA9IDA7CisgIGNvbnN0IHN0YXJ0UHJvbWlzZSA9IFByb21p
c2UucmVzb2x2ZSgpOworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBz
dGFydChjKSB7CisgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAgIHJldHVybiBzdGFydFByb21p
c2U7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgcHVsbENvdW50Kys7CisgICAgfQorICB9
KTsKKworICByZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVh
bHMocHVsbENvdW50LCAwLCAncHVsbCBzaG91bGQgbm90IGJlIGNhbGxlZCBvbmNlIHN0YXJ0IGZp
bmlzaGVzLCBzaW5jZSB0aGUgcXVldWUgaXMgZnVsbCcpOworCisgICAgY29uc3QgcmVhZCA9IHJz
LmdldFJlYWRlcigpLnJlYWQoKTsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ2Nh
bGxpbmcgcmVhZCgpIHNob3VsZCBjYXVzZSBwdWxsIHRvIGJlIGNhbGxlZCBpbW1lZGlhdGVseScp
OworICAgIHJldHVybiByZWFkOworICB9KS50aGVuKHIgPT4geworICAgIGFzc2VydF9vYmplY3Rf
ZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IHJlYWQoKSBzaG91
bGQgcmV0dXJuIGZpcnN0IGNodW5rJyk7CisgICAgcmV0dXJuIGRlbGF5KDEwKTsKKyAgfSkudGhl
bigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBi
ZSBjYWxsZWQgZXhhY3RseSBvbmNlJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW06IHNo
b3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSByZWFkIGZyb20g
YWZ0ZXIgc3RhcnQgZnVsZmlsbHMnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQg
cHVsbENvdW50ID0gMDsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHN0YXJ0UHJvbWlzZSA9
IFByb21pc2UucmVzb2x2ZSgpOworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgIHJldHVybiBzdGFy
dFByb21pc2U7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgKytwdWxsQ291bnQ7CisgICAg
fQorICB9KTsKKworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKyAgcmV0dXJuIHN0
YXJ0UHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwg
J3B1bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZSBieSB0aGUgdGltZSB0aGUgc3RyZWFt
IHN0YXJ0cycpOworCisgICAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisgICAgYXNzZXJ0X2Vx
dWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCBhZ2Fp
biBhZnRlciBlbnF1ZXVlJyk7CisKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgfSkudGhl
bigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDIsICdwdWxsIHNob3VsZCBo
YXZlIGJlZW4gY2FsbGVkIGFnYWluIGFmdGVyIHJlYWQnKTsKKworICAgIHJldHVybiBkZWxheSgx
MCk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAyLCAn
cHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgdHdpY2UnKTsKKyAgfSk7Cit9LCAnUmVhZGFi
bGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgaW4gcmVhY3Rpb24gdG8gcmVhZCgpaW5nIHRoZSBs
YXN0IGNodW5rLCBpZiBub3QgZHJhaW5pbmcnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKwor
ICBsZXQgcHVsbENvdW50ID0gMDsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHN0YXJ0UHJv
bWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgIHJldHVy
biBzdGFydFByb21pc2U7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgKytwdWxsQ291bnQ7
CisgICAgfQorICB9KTsKKworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICBy
ZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMocHVsbENv
dW50LCAxLCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlIGJ5IHRoZSB0aW1lIHRo
ZSBzdHJlYW0gc3RhcnRzJyk7CisKKyAgICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgICBh
c3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2Fs
bGVkIGFnYWluIGFmdGVyIGVucXVldWUnKTsKKworICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKwor
ICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRf
ZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkIGEg
c2Vjb25kIHRpbWUgYWZ0ZXIgcmVhZCcpOworCisgICAgcmV0dXJuIGRlbGF5KDEwKTsKKyAgfSku
dGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3Vs
ZCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW06
IHNob3VsZCBub3QgY2FsbCBwdWxsKCkgaW4gcmVhY3Rpb24gdG8gcmVhZCgpaW5nIHRoZSBsYXN0
IGNodW5rLCBpZiBkcmFpbmluZycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBy
ZXNvbHZlOworICBsZXQgcmV0dXJuZWRQcm9taXNlOworICBsZXQgdGltZXNDYWxsZWQgPSAwOwor
ICBjb25zdCBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKKworICBjb25zdCBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoKSB7CisgICAgICByZXR1cm4gc3RhcnRQ
cm9taXNlOworICAgIH0sCisgICAgcHVsbChjKSB7CisgICAgICBjLmVucXVldWUoKyt0aW1lc0Nh
bGxlZCk7CisgICAgICByZXR1cm5lZFByb21pc2UgPSBuZXcgUHJvbWlzZShyID0+IHJlc29sdmUg
PSByKTsKKyAgICAgIHJldHVybiByZXR1cm5lZFByb21pc2U7CisgICAgfQorICB9KTsKKyAgY29u
c3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgcmV0dXJuIHN0YXJ0UHJvbWlzZS50aGVu
KCgpID0+IHsKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgfSkudGhlbihyZXN1bHQxID0+
IHsKKyAgICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCAxLAorICAgICAgJ3B1bGwgc2hvdWxk
IGhhdmUgYmVlbiBjYWxsZWQgb25jZSBhZnRlciBzdGFydCwgYnV0IG5vdCB5ZXQgaGF2ZSBiZWVu
IGNhbGxlZCBhIHNlY29uZCB0aW1lJyk7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0
MSwgeyB2YWx1ZTogMSwgZG9uZTogZmFsc2UgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRo
IHRoZSBlbnF1ZXVlZCB2YWx1ZScpOworCisgICAgcmV0dXJuIGRlbGF5KDEwKTsKKyAgfSkudGhl
bigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgMSwgJ2FmdGVyIDEwIG1z
LCBwdWxsIHNob3VsZCBzdGlsbCBvbmx5IGhhdmUgYmVlbiBjYWxsZWQgb25jZScpOworCisgICAg
cmVzb2x2ZSgpOworICAgIHJldHVybiByZXR1cm5lZFByb21pc2U7CisgIH0pLnRoZW4oKCkgPT4g
eworICAgIGFzc2VydF9lcXVhbHModGltZXNDYWxsZWQsIDIsCisgICAgICAnYWZ0ZXIgdGhlIHBy
b21pc2UgcmV0dXJuZWQgYnkgcHVsbCBpcyBmdWxmaWxsZWQsIHB1bGwgc2hvdWxkIGJlIGNhbGxl
ZCBhIHNlY29uZCB0aW1lJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW06IHNob3VsZCBu
b3QgY2FsbCBwdWxsIHVudGlsIHRoZSBwcmV2aW91cyBwdWxsIGNhbGxcJ3MgcHJvbWlzZSBmdWxm
aWxscycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCB0aW1lc0NhbGxlZCA9IDA7
CisgIGNvbnN0IHN0YXJ0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworCisgIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKAorICAgIHsKKyAgICAgIHN0YXJ0KGMpIHsKKyAgICAgICAg
Yy5lbnF1ZXVlKCdhJyk7CisgICAgICAgIGMuZW5xdWV1ZSgnYicpOworICAgICAgICBjLmVucXVl
dWUoJ2MnKTsKKyAgICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKKyAgICAgIH0sCisgICAgICBw
dWxsKCkgeworICAgICAgICArK3RpbWVzQ2FsbGVkOworICAgICAgfQorICAgIH0sCisgICAgewor
ICAgICAgc2l6ZSgpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgICB9LAorICAgICAgaGlnaFdh
dGVyTWFyazogSW5maW5pdHkKKyAgICB9CisgICk7CisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJl
YWRlcigpOworCisgIHJldHVybiBzdGFydFByb21pc2UudGhlbigoKSA9PiB7CisgICAgcmV0dXJu
IHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4ocmVzdWx0MSA9PiB7CisgICAgYXNzZXJ0X29iamVj
dF9lcXVhbHMocmVzdWx0MSwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgY2h1
bmsgc2hvdWxkIGJlIGFzIGV4cGVjdGVkJyk7CisKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsK
KyAgfSkudGhlbihyZXN1bHQyID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQy
LCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sICdzZWNvbmQgY2h1bmsgc2hvdWxkIGJlIGFz
IGV4cGVjdGVkJyk7CisKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgfSkudGhlbihyZXN1
bHQzID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQzLCB7IHZhbHVlOiAnYycs
IGRvbmU6IGZhbHNlIH0sICd0aGlyZCBjaHVuayBzaG91bGQgYmUgYXMgZXhwZWN0ZWQnKTsKKwor
ICAgIHJldHVybiBkZWxheSgxMCk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIC8vIE9uY2UgZm9y
IGFmdGVyIHN0YXJ0LCBhbmQgb25jZSBmb3IgZXZlcnkgcmVhZC4KKyAgICBhc3NlcnRfZXF1YWxz
KHRpbWVzQ2FsbGVkLCA0LCAncHVsbCgpIHNob3VsZCBiZSBjYWxsZWQgZXhhY3RseSBmb3VyIHRp
bWVzJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW06IHNob3VsZCBwdWxsIGFmdGVyIHN0
YXJ0LCBhbmQgYWZ0ZXIgZXZlcnkgcmVhZCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisg
IGxldCB0aW1lc0NhbGxlZCA9IDA7CisgIGNvbnN0IHN0YXJ0UHJvbWlzZSA9IFByb21pc2UucmVz
b2x2ZSgpOworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChj
KSB7CisgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICAgIHJldHVy
biBzdGFydFByb21pc2U7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgKyt0aW1lc0NhbGxl
ZDsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworICBy
ZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHModGltZXND
YWxsZWQsIDAsICdhZnRlciBzdGFydCBmaW5pc2hlcywgcHVsbCBzaG91bGQgbm90IGhhdmUgYmVl
biBjYWxsZWQnKTsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVuKCgpID0+
IHsKKyAgICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCAwLCAncmVhZGluZyBzaG91bGQgbm90
IGhhdmUgdHJpZ2dlcmVkIGEgcHVsbCBjYWxsJyk7CisKKyAgICByZXR1cm4gcmVhZGVyLmNsb3Nl
ZDsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgMCwg
J3N0cmVhbSBzaG91bGQgaGF2ZSBjbG9zZWQgd2l0aCBzdGlsbCBubyBjYWxscyB0byBwdWxsJyk7
CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIGFmdGVy
IHN0YXJ0IGlmIHRoZSBzdHJlYW0gaXMgbm93IGNsb3NlZCcpOworCitwcm9taXNlX3Rlc3QoKCkg
PT4geworCisgIGxldCB0aW1lc0NhbGxlZCA9IDA7CisgIGxldCByZXNvbHZlOworICBjb25zdCBy
ZWFkeSA9IG5ldyBQcm9taXNlKHIgPT4gcmVzb2x2ZSA9IHIpOworCisgIG5ldyBSZWFkYWJsZVN0
cmVhbSgKKyAgICB7CisgICAgICBzdGFydCgpIHt9LAorICAgICAgcHVsbChjKSB7CisgICAgICAg
IGMuZW5xdWV1ZSgrK3RpbWVzQ2FsbGVkKTsKKworICAgICAgICBpZiAodGltZXNDYWxsZWQgPT09
IDQpIHsKKyAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAor
ICAgIHsKKyAgICAgIHNpemUoKSB7CisgICAgICAgIHJldHVybiAxOworICAgICAgfSwKKyAgICAg
IGhpZ2hXYXRlck1hcms6IDQKKyAgICB9CisgICk7CisKKyAgcmV0dXJuIHJlYWR5LnRoZW4oKCkg
PT4geworICAgIC8vIGFmdGVyIHN0YXJ0OiBzaXplID0gMCwgcHVsbCgpCisgICAgLy8gYWZ0ZXIg
ZW5xdWV1ZSgxKTogc2l6ZSA9IDEsIHB1bGwoKQorICAgIC8vIGFmdGVyIGVucXVldWUoMik6IHNp
emUgPSAyLCBwdWxsKCkKKyAgICAvLyBhZnRlciBlbnF1ZXVlKDMpOiBzaXplID0gMywgcHVsbCgp
CisgICAgLy8gYWZ0ZXIgZW5xdWV1ZSg0KTogc2l6ZSA9IDQsIGRvIG5vdCBwdWxsCisgICAgYXNz
ZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgNCwgJ3B1bGwoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxl
ZCBmb3VyIHRpbWVzJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxs
IHB1bGwgYWZ0ZXIgZW5xdWV1ZWluZyBmcm9tIGluc2lkZSBwdWxsICh3aXRoIG5vIHJlYWQgcmVx
dWVzdHMpLCBpZiBzdHJhdGVneSBhbGxvd3MnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKwor
ICBsZXQgcHVsbENhbGxlZCA9IGZhbHNlOworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICBwdWxsKGMpIHsKKyAgICAgIHB1bGxDYWxsZWQgPSB0cnVlOworICAgICAgYy5j
bG9zZSgpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7
CisgIHJldHVybiByZWFkZXIuY2xvc2VkLnRoZW4oKCkgPT4geworICAgIGFzc2VydF90cnVlKHB1
bGxDYWxsZWQpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHB1bGwgc2hvdWxkIGJlIGFi
bGUgdG8gY2xvc2UgYSBzdHJlYW0uJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGxldCBzdGFydENh
bGxlZCA9IGZhbHNlOworCisgIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgewor
ICAgICAgYXNzZXJ0X2VxdWFscyhjLmVucXVldWUoJ2EnKSwgdW5kZWZpbmVkLCAndGhlIGZpcnN0
IGVucXVldWUgc2hvdWxkIHJldHVybiB1bmRlZmluZWQnKTsKKyAgICAgIGMuY2xvc2UoKTsKKwor
ICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGMuZW5xdWV1ZSgnYicp
LCAnZW5xdWV1ZSBhZnRlciBjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKKyAgICAg
IHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICB9CisgIH0pOworCisgIGFzc2VydF90cnVlKHN0YXJ0
Q2FsbGVkKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB3aGVu
IHRoZSBzdHJlYW0gaXMgcmVhZGFibGUgYnV0IGRyYWluaW5nJyk7CisKK3Rlc3QoKCkgPT4gewor
CisgIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOworCisgIG5ldyBSZWFkYWJsZVN0cmVhbSh7Cisg
ICAgc3RhcnQoYykgeworICAgICAgYy5jbG9zZSgpOworCisgICAgICBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IoKSwgKCkgPT4gYy5lbnF1ZXVlKCdhJyksICdlbnF1ZXVlIGFmdGVyIGNsb3Nl
IHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOworICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOwor
ICAgIH0KKyAgfSk7CisKKyAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworCit9LCAnUmVhZGFi
bGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyBjbG9zZWQn
KTsKKwordGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisgIGNvbnN0
IGV4cGVjdGVkRXJyb3IgPSBuZXcgRXJyb3IoJ2kgYW0gc2FkJyk7CisKKyAgbmV3IFJlYWRhYmxl
U3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVycm9yKGV4cGVjdGVkRXJyb3IpOwor
CisgICAgICBhc3NlcnRfdGhyb3dzKGV4cGVjdGVkRXJyb3IsICgpID0+IGMuZW5xdWV1ZSgnYScp
LCAnZW5xdWV1ZSBhZnRlciBlcnJvciBzaG91bGQgdGhyb3cgdGhhdCBlcnJvcicpOworICAgICAg
c3RhcnRDYWxsZWQgPSB0cnVlOworICAgIH0KKyAgfSk7CisKKyAgYXNzZXJ0X3RydWUoc3RhcnRD
YWxsZWQpOworCit9LCAnUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBz
dG9yZWQgZXJyb3Igd2hlbiB0aGUgc3RyZWFtIGlzIGVycm9yZWQnKTsKKworcHJvbWlzZV90ZXN0
KCgpID0+IHsKKworICBsZXQgc3RhcnRDYWxsZWQgPSAwOworICBsZXQgcHVsbENhbGxlZCA9IDA7
CisgIGxldCBjYW5jZWxDYWxsZWQgPSAwOworCisgIC8qIGVzbGludC1kaXNhYmxlIG5vLXVzZS1i
ZWZvcmUtZGVmaW5lICovCisgIGNsYXNzIFNvdXJjZSB7CisgICAgc3RhcnQoYykgeworICAgICAg
c3RhcnRDYWxsZWQrKzsKKyAgICAgIGFzc2VydF9lcXVhbHModGhpcywgdGhlU291cmNlLCAnc3Rh
cnQoKSBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIGNvcnJlY3QgdGhpcycpOworICAgICAgYy5l
bnF1ZXVlKCdhJyk7CisgICAgfQorCisgICAgcHVsbCgpIHsKKyAgICAgIHB1bGxDYWxsZWQrKzsK
KyAgICAgIGFzc2VydF9lcXVhbHModGhpcywgdGhlU291cmNlLCAncHVsbCgpIHNob3VsZCBiZSBj
YWxsZWQgd2l0aCB0aGUgY29ycmVjdCB0aGlzJyk7CisgICAgfQorCisgICAgY2FuY2VsKCkgewor
ICAgICAgY2FuY2VsQ2FsbGVkKys7CisgICAgICBhc3NlcnRfZXF1YWxzKHRoaXMsIHRoZVNvdXJj
ZSwgJ2NhbmNlbCgpIHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgY29ycmVjdCB0aGlzJyk7Cisg
ICAgfQorICB9CisgIC8qIGVzbGludC1lbmFibGUgbm8tdXNlLWJlZm9yZS1kZWZpbmUgKi8KKwor
ICBjb25zdCB0aGVTb3VyY2UgPSBuZXcgU291cmNlKCk7CisgIHRoZVNvdXJjZS5kZWJ1Z05hbWUg
PSAndGhlIHNvdXJjZSBvYmplY3QgcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3Rvcic7IC8vIG1ha2Vz
IHRlc3QgZmFpbHVyZXMgZWFzaWVyIHRvIGRpYWdub3NlCisKKyAgY29uc3QgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0odGhlU291cmNlKTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7
CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbigoKSA9PiB7CisgICAgcmVhZGVyLnJlbGVh
c2VMb2NrKCk7CisgICAgcnMuY2FuY2VsKCk7CisgICAgYXNzZXJ0X2VxdWFscyhzdGFydENhbGxl
ZCwgMSk7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ2FsbGVkLCAxKTsKKyAgICBhc3NlcnRfZXF1
YWxzKGNhbmNlbENhbGxlZCwgMSk7CisgICAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZDsK
KyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgdW5kZXJseWluZyBzb3Vy
Y2UgbWV0aG9kcyBhcyBtZXRob2RzJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGxldCBzdGFydENh
bGxlZCA9IGZhbHNlOworICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAg
ICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgMSk7CisgICAgICBjLmVucXVldWUoJ2En
KTsKKyAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgMCk7CisgICAgICBjLmVucXVl
dWUoJ2InKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgLTEpOworICAgICAg
Yy5lbnF1ZXVlKCdjJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKGMuZGVzaXJlZFNpemUsIC0yKTsK
KyAgICAgIGMuZW5xdWV1ZSgnZCcpOworICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXpl
LCAtMyk7CisgICAgICBjLmVucXVldWUoJ2UnKTsKKyAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsK
KyAgICB9CisgIH0pOworCisgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKKworfSwgJ1JlYWRh
YmxlU3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCBnaXZlIGRl
c2lyZWRTaXplIG9mIDEgdG8gc3RhcnQsIGRlY3JlYXNpbmcgYnkgMSBwZXIgZW5xdWV1ZScpOwor
Citwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9
IGM7CisgICAgfQorICB9KTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUgc2hv
dWxkIHN0YXJ0IGF0IDEnKTsKKyAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisgIGFzc2VydF9l
cXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBkZWNy
ZWFzZSB0byAwIGFmdGVyIGZpcnN0IGVucXVldWUnKTsKKworICByZXR1cm4gcmVhZGVyLnJlYWQo
KS50aGVuKHJlc3VsdDEgPT4geworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDEsIHsg
dmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IGNodW5rIHJlYWQgc2hvdWxkIGJlIGNv
cnJlY3QnKTsKKworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwg
J2Rlc2lyZWRTaXplIHNob3VsZCBnbyB1cCB0byAxIGFmdGVyIHRoZSBmaXJzdCByZWFkJyk7Cisg
ICAgY29udHJvbGxlci5lbnF1ZXVlKCdiJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVy
LmRlc2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUgc2hvdWxkIGdvIGRvd24gdG8gMCBhZnRlciB0
aGUgc2Vjb25kIGVucXVldWUnKTsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50
aGVuKHJlc3VsdDIgPT4geworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDIsIHsgdmFs
dWU6ICdiJywgZG9uZTogZmFsc2UgfSwgJ3NlY29uZCBjaHVuayByZWFkIHNob3VsZCBiZSBjb3Jy
ZWN0Jyk7CisKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICdk
ZXNpcmVkU2l6ZSBzaG91bGQgZ28gdXAgdG8gMSBhZnRlciB0aGUgc2Vjb25kIHJlYWQnKTsKKyAg
ICBjb250cm9sbGVyLmVucXVldWUoJ2MnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIu
ZGVzaXJlZFNpemUsIDAsICdkZXNpcmVkU2l6ZSBzaG91bGQgZ28gZG93biB0byAwIGFmdGVyIHRo
ZSB0aGlyZCBlbnF1ZXVlJyk7CisKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgfSkudGhl
bihyZXN1bHQzID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQzLCB7IHZhbHVl
OiAnYycsIGRvbmU6IGZhbHNlIH0sICd0aGlyZCBjaHVuayByZWFkIHNob3VsZCBiZSBjb3JyZWN0
Jyk7CisKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICdkZXNp
cmVkU2l6ZSBzaG91bGQgZ28gdXAgdG8gMSBhZnRlciB0aGUgdGhpcmQgcmVhZCcpOworICAgIGNv
bnRyb2xsZXIuZW5xdWV1ZSgnZCcpOworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNp
cmVkU2l6ZSwgMCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBnbyBkb3duIHRvIDAgYWZ0ZXIgdGhlIGZv
dXJ0aCBlbnF1ZXVlJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczog
dGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGNvbnRpbnVlIGdpdmluZyBkZXNpcmVkU2l6ZSBv
ZiAxIGlmIHRoZSBjaHVua3MgYXJlIHJlYWQgaW1tZWRpYXRlbHknKTsKKworcHJvbWlzZV90ZXN0
KHQgPT4geworCisgIGNvbnN0IHJhbmRvbVNvdXJjZSA9IG5ldyBSYW5kb21QdXNoU291cmNlKDgp
OworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7Cisg
ICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBjLCAnb2JqZWN0JywgJ2Mgc2hvdWxkIGJlIGFuIG9i
amVjdCBpbiBzdGFydCcpOworICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgYy5lbnF1ZXVlLCAn
ZnVuY3Rpb24nLCAnZW5xdWV1ZSBzaG91bGQgYmUgYSBmdW5jdGlvbiBpbiBzdGFydCcpOworICAg
ICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgYy5jbG9zZSwgJ2Z1bmN0aW9uJywgJ2Nsb3NlIHNob3Vs
ZCBiZSBhIGZ1bmN0aW9uIGluIHN0YXJ0Jyk7CisgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBj
LmVycm9yLCAnZnVuY3Rpb24nLCAnZXJyb3Igc2hvdWxkIGJlIGEgZnVuY3Rpb24gaW4gc3RhcnQn
KTsKKworICAgICAgcmFuZG9tU291cmNlLm9uZGF0YSA9IHQuc3RlcF9mdW5jKGNodW5rID0+IHsK
KyAgICAgICAgaWYgKCFjLmVucXVldWUoY2h1bmspIDw9IDApIHsKKyAgICAgICAgICByYW5kb21T
b3VyY2UucmVhZFN0b3AoKTsKKyAgICAgICAgfQorICAgICAgfSk7CisKKyAgICAgIHJhbmRvbVNv
dXJjZS5vbmVuZCA9IGMuY2xvc2UuYmluZChjKTsKKyAgICAgIHJhbmRvbVNvdXJjZS5vbmVycm9y
ID0gYy5lcnJvci5iaW5kKGMpOworICAgIH0sCisKKyAgICBwdWxsKGMpIHsKKyAgICAgIGFzc2Vy
dF9lcXVhbHModHlwZW9mIGMsICdvYmplY3QnLCAnYyBzaG91bGQgYmUgYW4gb2JqZWN0IGluIHB1
bGwnKTsKKyAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGMuZW5xdWV1ZSwgJ2Z1bmN0aW9uJywg
J2VucXVldWUgc2hvdWxkIGJlIGEgZnVuY3Rpb24gaW4gcHVsbCcpOworICAgICAgYXNzZXJ0X2Vx
dWFscyh0eXBlb2YgYy5jbG9zZSwgJ2Z1bmN0aW9uJywgJ2Nsb3NlIHNob3VsZCBiZSBhIGZ1bmN0
aW9uIGluIHB1bGwnKTsKKworICAgICAgcmFuZG9tU291cmNlLnJlYWRTdGFydCgpOworICAgIH0K
KyAgfSk7CisKKyAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtVG9BcnJheShycykudGhlbihjaHVua3Mg
PT4geworICAgIGFzc2VydF9lcXVhbHMoY2h1bmtzLmxlbmd0aCwgOCwgJzggY2h1bmtzIHNob3Vs
ZCBiZSByZWFkJyk7CisgICAgZm9yIChjb25zdCBjaHVuayBvZiBjaHVua3MpIHsKKyAgICAgIGFz
c2VydF9lcXVhbHMoY2h1bmsubGVuZ3RoLCAxMjgsICdjaHVuayBzaG91bGQgaGF2ZSAxMjggYnl0
ZXMnKTsKKyAgICB9CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVz
dDogYWRhcHRpbmcgYSByYW5kb20gcHVzaCBzb3VyY2UnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+
IHsKKworICBjb25zdCBycyA9IHNlcXVlbnRpYWxSZWFkYWJsZVN0cmVhbSgxMCk7CisKKyAgcmV0
dXJuIHJlYWRhYmxlU3RyZWFtVG9BcnJheShycykudGhlbihjaHVua3MgPT4geworICAgIGFzc2Vy
dF90cnVlKHJzLnNvdXJjZS5jbG9zZWQsICdzb3VyY2Ugc2hvdWxkIGJlIGNsb3NlZCBhZnRlciBh
bGwgY2h1bmtzIGFyZSByZWFkJyk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3MsIFsx
LCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF0sICd0aGUgZXhwZWN0ZWQgMTAgY2h1bmtzIHNo
b3VsZCBiZSByZWFkJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24g
dGVzdDogYWRhcHRpbmcgYSBzeW5jIHB1bGwgc291cmNlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9
PiB7CisKKyAgY29uc3QgcnMgPSBzZXF1ZW50aWFsUmVhZGFibGVTdHJlYW0oMTAsIHsgYXN5bmM6
IHRydWUgfSk7CisKKyAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtVG9BcnJheShycykudGhlbihjaHVu
a3MgPT4geworICAgIGFzc2VydF90cnVlKHJzLnNvdXJjZS5jbG9zZWQsICdzb3VyY2Ugc2hvdWxk
IGJlIGNsb3NlZCBhZnRlciBhbGwgY2h1bmtzIGFyZSByZWFkJyk7CisgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhjaHVua3MsIFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF0sICd0aGUgZXhw
ZWN0ZWQgMTAgY2h1bmtzIHNob3VsZCBiZSByZWFkJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVT
dHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYW4gYXN5bmMgcHVsbCBzb3VyY2UnKTsK
KworZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3BpcGUtdGhyb3VnaC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10aHJvdWdoLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44ZmIzMzIwMTA4ZTViYTFkZTIzYjM1NTEzNGE3OTViNzE2MmQ0MTdiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3BpcGUtdGhyb3VnaC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorCitQQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3Vn
aCBzaG91bGQgd29yayBnZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cyAK
K1BBU1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCB0aHJvdyB3
aGVuIGl0cyBmaXJzdCBhcmd1bWVudCBpcyBub3QgY29udmVydGlibGUgdG8gYW4gb2JqZWN0IAor
UEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggc2hvdWxkIHRocm93IHdo
ZW4gInRoaXMiIGhhcyBubyBwaXBlVG8gbWV0aG9kIAorRkFJTCBSZWFkYWJsZVN0cmVhbS5wcm90
b3R5cGUucGlwZVRocm91Z2ggc2hvdWxkIHJldGhyb3cgZXJyb3JzIGZyb20gYWNjZXNzaW5nIHBp
cGVUbywgcmVhZGFibGUsIG9yIHdyaXRhYmxlIGFzc2VydF91bnJlYWNoZWQ6IHBpcGVUbyBzaG91
bGQgbm90IGJlIGNhbGxlZCBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK1BBU1MgUmVhZGFibGVT
dHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCB3b3JrIHdpdGggbWlzc2luZyByZWFk
YWJsZSwgd3JpdGFibGUsIG9yIG9wdGlvbnMgCitGQUlMIExvYWQgcGlwZS10aHJvdWdoLmpzIHdp
dGggU2hhcmVkV29ya2VyIGFzc2VydF91bnJlYWNoZWQ6IFNoYXJlZFdvcmtlciBpcyB1bmF2YWls
YWJsZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK0ZBSUwgVW50aXRsZWQgdW5kZWZpbmVkIGlz
IG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdldFJl
Z2lzdHJhdGlvbicpCitGQUlMIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCBz
aG91bGQgd29yayBnZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cyBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBSZWFkYWJsZVN0cmVhbS5wcm90
b3R5cGUucGlwZVRocm91Z2ggc2hvdWxkIHRocm93IHdoZW4gaXRzIGZpcnN0IGFyZ3VtZW50IGlz
IG5vdCBjb252ZXJ0aWJsZSB0byBhbiBvYmplY3QgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFi
bGVTdHJlYW0KK0ZBSUwgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3Vs
ZCB0aHJvdyB3aGVuICJ0aGlzIiBoYXMgbm8gcGlwZVRvIG1ldGhvZCBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRo
cm91Z2ggc2hvdWxkIHJldGhyb3cgZXJyb3JzIGZyb20gYWNjZXNzaW5nIHBpcGVUbywgcmVhZGFi
bGUsIG9yIHdyaXRhYmxlIGFzc2VydF90aHJvd3M6IHBpcGVUaHJvdWdoIHNob3VsZCByZXRocm93
IHRoZSBlcnJvciB0aHJvd24gYnkgcGlwZVRvIGZ1bmN0aW9uICIoKSA9PiBSZWFkYWJsZVN0cmVh
bS5wcm90b3R5cGUucGlwZVRocm91Z2guY2FsbCh0aHJvd2luZ1AuLi4iIHRocmV3IG9iamVjdCAi
UmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtIiAoIlJl
ZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJFcnJvcjogcG90YXRvIiAoIkVycm9yIikK
K0ZBSUwgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCB3b3JrIHdp
dGggbWlzc2luZyByZWFkYWJsZSwgd3JpdGFibGUsIG9yIG9wdGlvbnMgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogUmVhZGFibGVTdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3BpcGUt
dGhyb3VnaC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3BpcGUtdGhyb3VnaC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjYyZDk4ZDQ1YWY0NmYyNWZlMDYyNjIxMGQ4ZmExOTE1Y2M2NDVjZjYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10aHJvdWdoLmh0bWwKQEAgLTAsMCArMSwxMyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InBpcGUtdGhyb3VnaC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
J3VzZSBzdHJpY3QnOword29ya2VyX3Rlc3QoJ3BpcGUtdGhyb3VnaC5qcycpOworPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10aHJvdWdoLmpzIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1z
dHJlYW1zL3BpcGUtdGhyb3VnaC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTg4OTI4ZTc4YjE4ZTczYWY0NGVj
ZjQ5ZGQxZTRhZjgxYjZiM2VmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3Bp
cGUtdGhyb3VnaC5qcwpAQCAtMCwwICsxLDEwOCBAQAorJ3VzZSBzdHJpY3QnOworCitpZiAoc2Vs
Zi5pbXBvcnRTY3JpcHRzKSB7CisgIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3Rl
c3QtdXRpbHMuanMnKTsKKyAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzJyk7Cit9CisKK3Rlc3QoKCkgPT4geworCisgIGxldCBwaXBlVG9Bcmd1bWVudHM7Cisg
IGNvbnN0IHRoaXNWYWx1ZSA9IHsKKyAgICBwaXBlVG8oKSB7CisgICAgICBwaXBlVG9Bcmd1bWVu
dHMgPSBhcmd1bWVudHM7CisgICAgfQorICB9OworCisgIGNvbnN0IGlucHV0ID0geyByZWFkYWJs
ZToge30sIHdyaXRhYmxlOiB7fSB9OworICBjb25zdCBvcHRpb25zID0ge307CisgIGNvbnN0IHJl
c3VsdCA9IFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaC5jYWxsKHRoaXNWYWx1
ZSwgaW5wdXQsIG9wdGlvbnMpOworCisgIGFzc2VydF9hcnJheV9lcXVhbHMocGlwZVRvQXJndW1l
bnRzLCBbaW5wdXQud3JpdGFibGUsIG9wdGlvbnNdLAorICAgICdjb3JyZWN0IGFyZ3VtZW50cyBz
aG91bGQgYmUgcGFzc2VkIHRvIHRoaXNWYWx1ZS5waXBlVG8nKTsKKyAgYXNzZXJ0X2VxdWFscyhy
ZXN1bHQsIGlucHV0LnJlYWRhYmxlLCAncmV0dXJuIHZhbHVlIHNob3VsZCBiZSB0aGUgcGFzc2Vk
IHJlYWRhYmxlIHByb3BlcnR5Jyk7CisKK30sICdSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlw
ZVRocm91Z2ggc2hvdWxkIHdvcmsgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1
bWVudHMnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgdGhpc1ZhbHVlID0geworICAgIHBp
cGVUbygpIHsKKyAgICAgIGFzc2VydF91bnJlYWNoZWQoJ3BpcGVUbyBzaG91bGQgbm90IGJlIGNh
bGxlZCcpOworICAgIH0KKyAgfTsKKworICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW0ucHJv
dG90eXBlLCAncGlwZVRocm91Z2gnLCB0aGlzVmFsdWUsIFt1bmRlZmluZWQsIHt9XSk7CisgIG1l
dGhvZFRocm93cyhSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICdwaXBlVGhyb3VnaCcsIHRoaXNW
YWx1ZSwgW251bGwsIHt9XSk7CisKK30sICdSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRo
cm91Z2ggc2hvdWxkIHRocm93IHdoZW4gaXRzIGZpcnN0IGFyZ3VtZW50IGlzIG5vdCBjb252ZXJ0
aWJsZSB0byBhbiBvYmplY3QnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgYXJncyA9IFt7
IHJlYWRhYmxlOiB7fSwgd3JpdGFibGU6IHt9IH0sIHt9XTsKKworICBtZXRob2RUaHJvd3MoUmVh
ZGFibGVTdHJlYW0ucHJvdG90eXBlLCAncGlwZVRocm91Z2gnLCB1bmRlZmluZWQsIGFyZ3MpOwor
ICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLCAncGlwZVRocm91Z2gnLCBu
dWxsLCBhcmdzKTsKKyAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ3Bp
cGVUaHJvdWdoJywgMSwgYXJncyk7CisgIG1ldGhvZFRocm93cyhSZWFkYWJsZVN0cmVhbS5wcm90
b3R5cGUsICdwaXBlVGhyb3VnaCcsIHsgcGlwZVRvOiAndGVzdCcgfSwgYXJncyk7CisKK30sICdS
ZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggc2hvdWxkIHRocm93IHdoZW4gInRo
aXMiIGhhcyBubyBwaXBlVG8gbWV0aG9kJyk7CisKK3Rlc3QoKCkgPT4geworICBjb25zdCBlcnJv
ciA9IG5ldyBFcnJvcigncG90YXRvJyk7CisKKyAgY29uc3QgdGhyb3dpbmdQaXBlVG8gPSB7Cisg
ICAgZ2V0IHBpcGVUbygpIHsKKyAgICAgIHRocm93IGVycm9yOworICAgIH0KKyAgfTsKKyAgYXNz
ZXJ0X3Rocm93cyhlcnJvciwKKyAgICAoKSA9PiBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlw
ZVRocm91Z2guY2FsbCh0aHJvd2luZ1BpcGVUbywgeyByZWFkYWJsZTogeyB9LCB3cml0YWJsZTog
eyB9IH0sIHt9KSwKKyAgICAncGlwZVRocm91Z2ggc2hvdWxkIHJldGhyb3cgdGhlIGVycm9yIHRo
cm93biBieSBwaXBlVG8nKTsKKworICBjb25zdCB0aGlzVmFsdWUgPSB7CisgICAgcGlwZVRvKCkg
eworICAgICAgYXNzZXJ0X3VucmVhY2hlZCgncGlwZVRvIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7
CisgICAgfQorICB9OworCisgIGNvbnN0IHRocm93aW5nV3JpdGFibGUgPSB7CisgICAgcmVhZGFi
bGU6IHt9LAorICAgIGdldCB3cml0YWJsZSgpIHsKKyAgICAgIHRocm93IGVycm9yOworICAgIH0K
KyAgfTsKKyAgYXNzZXJ0X3Rocm93cyhlcnJvciwKKyAgICAoKSA9PiBSZWFkYWJsZVN0cmVhbS5w
cm90b3R5cGUucGlwZVRocm91Z2guY2FsbCh0aGlzVmFsdWUsIHRocm93aW5nV3JpdGFibGUsIHt9
KSwKKyAgICAncGlwZVRocm91Z2ggc2hvdWxkIHJldGhyb3cgdGhlIGVycm9yIHRocm93biBieSB0
aGUgd3JpdGFibGUgZ2V0dGVyJyk7CisKKyAgY29uc3QgdGhyb3dpbmdSZWFkYWJsZSA9IHsKKyAg
ICBnZXQgcmVhZGFibGUoKSB7CisgICAgICB0aHJvdyBlcnJvcjsKKyAgICB9LAorICAgIHdyaXRh
YmxlOiB7fQorICB9OworICBhc3NlcnRfdGhyb3dzKGVycm9yLAorICAgICgpID0+IFJlYWRhYmxl
U3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaC5jYWxsKHRoaXNWYWx1ZSwgdGhyb3dpbmdSZWFk
YWJsZSwge30pLAorICAgICdwaXBlVGhyb3VnaCBzaG91bGQgcmV0aHJvdyB0aGUgZXJyb3IgdGhy
b3duIGJ5IHRoZSByZWFkYWJsZSBnZXR0ZXInKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtLnByb3Rv
dHlwZS5waXBlVGhyb3VnaCBzaG91bGQgcmV0aHJvdyBlcnJvcnMgZnJvbSBhY2Nlc3NpbmcgcGlw
ZVRvLCByZWFkYWJsZSwgb3Igd3JpdGFibGUnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgbGV0IGNv
dW50ID0gMDsKKyAgY29uc3QgdGhpc1ZhbHVlID0geworICAgIHBpcGVUbygpIHsKKyAgICAgICsr
Y291bnQ7CisgICAgfQorICB9OworCisgIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhy
b3VnaC5jYWxsKHRoaXNWYWx1ZSwgeyByZWFkYWJsZToge30sIHdyaXRhYmxlOiB7fSB9KTsKKyAg
UmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoLmNhbGwodGhpc1ZhbHVlLCB7IHJl
YWRhYmxlOiB7fSB9LCB7fSk7CisgIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3Vn
aC5jYWxsKHRoaXNWYWx1ZSwgeyB3cml0YWJsZToge30gfSwge30pOworCisgIGFzc2VydF9lcXVh
bHMoY291bnQsIDMsICdwaXBlVG8gd2FzIGNhbGxlZCAzIHRpbWVzJyk7CisKK30sICdSZWFkYWJs
ZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggc2hvdWxkIHdvcmsgd2l0aCBtaXNzaW5nIHJl
YWRhYmxlLCB3cml0YWJsZSwgb3Igb3B0aW9ucycpOworCitkb25lKCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3Jl
YWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRh
YmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOWU0ZmMyMjQyM2EzYzc2NDBjZTEyZGQ4MWFkZGMxMDI3ZGQ0NzZiMAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy1hcGkvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDU2IEBACisKK1BBU1MgQ2FuIGdldCB0aGUgUmVhZGFibGVTdHJlYW1SZWFk
ZXIgY29uc3RydWN0b3IgaW5kaXJlY3RseSAKK1BBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIgY29u
c3RydWN0b3Igc2hvdWxkIGdldCBhIFJlYWRhYmxlU3RyZWFtIG9iamVjdCBhcyBhcmd1bWVudCAK
K0ZBSUwgUmVhZGFibGVTdHJlYW1SZWFkZXIgaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3Jy
ZWN0IGxpc3Qgb2YgcHJvcGVydGllcyBhc3NlcnRfZXF1YWxzOiBtZXRob2Qgc2hvdWxkIGJlIG5v
bi1lbnVtZXJhYmxlIGV4cGVjdGVkIGZhbHNlIGJ1dCBnb3QgdHJ1ZQorUEFTUyBSZWFkYWJsZVN0
cmVhbVJlYWRlciBjbG9zZWQgc2hvdWxkIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgcHJvbWlzZSBv
YmplY3QgCitQQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5
IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3Qg
Y29uc3RydWN0aW9uKSAKK1BBU1MgR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHZpYSBn
ZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlh
IGRpcmVjdCBjb25zdHJ1Y3Rpb24pIAorUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVh
bVJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9j
a2VkICh2aWEgZ2V0UmVhZGVyKSAKK1BBU1MgR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVy
IHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tl
ZCAodmlhIGdldFJlYWRlcikgCitQQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVh
ZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCAKK1BBU1Mg
Q29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9L
IGlmIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCAKK1BBU1MgUmVhZGluZyBmcm9tIGEgcmVhZGVyIGZv
ciBhbiBlbXB0eSBzdHJlYW0gd2lsbCB3YWl0IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxhYmxlIAor
UEFTUyBjYW5jZWwoKSBvbiBhIHJlYWRlciBkb2VzIG5vdCByZWxlYXNlIHRoZSByZWFkZXIgCitQ
QVNTIGNsb3NlZCBzaG91bGQgYmUgZnVsZmlsbGVkIGFmdGVyIHN0cmVhbSBpcyBjbG9zZWQgKC5j
bG9zZWQgYWNjZXNzIGJlZm9yZSBhY3F1aXJpbmcpIAorUEFTUyBjbG9zZWQgc2hvdWxkIGJlIHJl
amVjdGVkIGFmdGVyIHJlYWRlciByZWxlYXNlcyBpdHMgbG9jayAobXVsdGlwbGUgc3RyZWFtIGxv
Y2tzKSAKK1BBU1MgTXVsdGlwbGUgcmVhZGVycyBjYW4gYWNjZXNzIHRoZSBzdHJlYW0gaW4gc2Vx
dWVuY2UgCitQQVNTIENhbm5vdCB1c2UgYW4gYWxyZWFkeS1yZWxlYXNlZCByZWFkZXIgdG8gdW5s
b2NrIGEgc3RyZWFtIGFnYWluIAorUEFTUyBjYW5jZWwoKSBvbiBhIHJlbGVhc2VkIHJlYWRlciBp
cyBhIG5vLW9wIGFuZCBkb2VzIG5vdCBwYXNzIHRocm91Z2ggCitQQVNTIEdldHRpbmcgYSBzZWNv
bmQgcmVhZGVyIGFmdGVyIGVycm9yaW5nIHRoZSBzdHJlYW0gYW5kIHJlbGVhc2luZyB0aGUgcmVh
ZGVyIHNob3VsZCBzdWNjZWVkIAorUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgcHJv
bWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB1bmRlZmluZWQgaWYgdGhhdCBpcyB0aGUgZXJy
b3IgCitQQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyOiBpZiBzdGFydCByZWplY3RzIHdpdGggbm8g
cGFyYW1ldGVyLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSB3aXRoIGFuIHVuZGVmaW5lZCBl
cnJvciAKK1BBU1MgRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBhZnRlciBjaGVja2luZyBjbG9z
ZWQgc2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgcHJvbWlzZSAKK1BB
U1MgRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBiZWZvcmUgY2hlY2tpbmcgY2xvc2VkIHNob3Vs
ZCByZWplY3QgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHByb21pc2UgCitQQVNTIFJlYWRp
bmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGNsb3NlZCAKK1BBU1MgUmVhZGluZyB0d2lj
ZSBvbiBhIGNsb3NlZCBzdHJlYW0gCitQQVNTIFJlYWRpbmcgdHdpY2Ugb24gYW4gZXJyb3JlZCBz
dHJlYW0gCitQQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGVycm9yZWQg
CitGQUlMIExvYWQgcmVhZGFibGUtc3RyZWFtLXJlYWRlci5qcyB3aXRoIFNoYXJlZFdvcmtlciBh
c3NlcnRfdW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFibGUgUmVhY2hlZCB1bnJl
YWNoYWJsZSBjb2RlCitGQUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChl
dmFsdWF0aW5nICduYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3RyYXRpb24nKQorRkFJ
TCBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5
IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitQQVNTIFJlYWRhYmxlU3RyZWFt
UmVhZGVyIGNvbnN0cnVjdG9yIHNob3VsZCBnZXQgYSBSZWFkYWJsZVN0cmVhbSBvYmplY3QgYXMg
YXJndW1lbnQgCitGQUlMIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGluc3RhbmNlcyBzaG91bGQgaGF2
ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVh
ZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHNob3VsZCBhbHdh
eXMgcmV0dXJuIHRoZSBzYW1lIHByb21pc2Ugb2JqZWN0IENhbid0IGZpbmQgdmFyaWFibGU6IFJl
YWRhYmxlU3RyZWFtCitGQUlMIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRp
cmVjdGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBk
aXJlY3QgY29uc3RydWN0aW9uKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQor
RkFJTCBHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdldFJlYWRlciBzaG91bGQg
ZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0IGNvbnN0cnVj
dGlvbikgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgQ29uc3RydWN0
aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwgaWYgdGhlIHN0
cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRlcikgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHZp
YSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAo
dmlhIGdldFJlYWRlcikgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwg
Q29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9L
IGlmIHRoZSBzdHJlYW0gaXMgY2xvc2VkIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3Ry
ZWFtCitGQUlMIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNo
b3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
UmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGluZyBmcm9tIGEgcmVhZGVyIGZvciBhbiBlbXB0eSBz
dHJlYW0gd2lsbCB3YWl0IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxhYmxlIENhbid0IGZpbmQgdmFy
aWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIGNhbmNlbCgpIG9uIGEgcmVhZGVyIGRvZXMgbm90
IHJlbGVhc2UgdGhlIHJlYWRlciBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQor
RkFJTCBjbG9zZWQgc2hvdWxkIGJlIGZ1bGZpbGxlZCBhZnRlciBzdHJlYW0gaXMgY2xvc2VkICgu
Y2xvc2VkIGFjY2VzcyBiZWZvcmUgYWNxdWlyaW5nKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFk
YWJsZVN0cmVhbQorRkFJTCBjbG9zZWQgc2hvdWxkIGJlIHJlamVjdGVkIGFmdGVyIHJlYWRlciBy
ZWxlYXNlcyBpdHMgbG9jayAobXVsdGlwbGUgc3RyZWFtIGxvY2tzKSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBNdWx0aXBsZSByZWFkZXJzIGNhbiBhY2Nlc3MgdGhl
IHN0cmVhbSBpbiBzZXF1ZW5jZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQor
RkFJTCBDYW5ub3QgdXNlIGFuIGFscmVhZHktcmVsZWFzZWQgcmVhZGVyIHRvIHVubG9jayBhIHN0
cmVhbSBhZ2FpbiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBjYW5j
ZWwoKSBvbiBhIHJlbGVhc2VkIHJlYWRlciBpcyBhIG5vLW9wIGFuZCBkb2VzIG5vdCBwYXNzIHRo
cm91Z2ggQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgR2V0dGluZyBh
IHNlY29uZCByZWFkZXIgYWZ0ZXIgZXJyb3JpbmcgdGhlIHN0cmVhbSBhbmQgcmVsZWFzaW5nIHRo
ZSByZWFkZXIgc2hvdWxkIHN1Y2NlZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJl
YW0KK0ZBSUwgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHByb21pc2Ugc2hvdWxkIGJlIHJl
amVjdGVkIHdpdGggdW5kZWZpbmVkIGlmIHRoYXQgaXMgdGhlIGVycm9yIENhbid0IGZpbmQgdmFy
aWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFtUmVhZGVyOiBpZiBzdGFy
dCByZWplY3RzIHdpdGggbm8gcGFyYW1ldGVyLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSB3
aXRoIGFuIHVuZGVmaW5lZCBlcnJvciBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVh
bQorRkFJTCBFcnJvcmluZyBhIFJlYWRhYmxlU3RyZWFtIGFmdGVyIGNoZWNraW5nIGNsb3NlZCBz
aG91bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNlIENhbid0IGZp
bmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIEVycm9yaW5nIGEgUmVhZGFibGVTdHJl
YW0gYmVmb3JlIGNoZWNraW5nIGNsb3NlZCBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFtUmVh
ZGVyIGNsb3NlZCBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitG
QUlMIFJlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGNsb3NlZCBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBSZWFkaW5nIHR3aWNlIG9uIGEgY2xvc2Vk
IHN0cmVhbSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBSZWFkaW5n
IHR3aWNlIG9uIGFuIGVycm9yZWQgc3RyZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxl
U3RyZWFtCitGQUlMIFJlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGVycm9yZWQg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJs
ZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGYwZGIxMWQxYmM0ZTgzYzNm
NTM4ZjQ3ZTY2N2M3MzVhYjQwYzhmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBF
IGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9z
ZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0PgorCis8
c2NyaXB0IHNyYz0icmVhZGFibGUtc3RyZWFtLXJlYWRlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorJ3VzZSBzdHJpY3QnOword29ya2VyX3Rlc3QoJ3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuanMn
KTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bS1yZWFkZXIuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xZDViYzEzMDA0ZjhhMzU3ZmM1ZTgyNTIyZjNiZDMwOWYxMzExYjlhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuanMK
QEAgLTAsMCArMSw0ODUgQEAKKyd1c2Ugc3RyaWN0JzsKKworaWYgKHNlbGYuaW1wb3J0U2NyaXB0
cykgeworICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9ycy11dGlscy5qcycpOwor
ICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnKTsKK30KKwor
bGV0IFJlYWRhYmxlU3RyZWFtUmVhZGVyOworCit0ZXN0KCgpID0+IHsKKworICAvLyBJdCdzIG5v
dCBleHBvc2VkIGdsb2JhbGx5LCBidXQgd2UgdGVzdCBhIGZldyBvZiBpdHMgcHJvcGVydGllcyBo
ZXJlLgorICBSZWFkYWJsZVN0cmVhbVJlYWRlciA9IChuZXcgUmVhZGFibGVTdHJlYW0oKSkuZ2V0
UmVhZGVyKCkuY29uc3RydWN0b3I7CisKK30sICdDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJl
YWRlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5Jyk7CisKK3Rlc3QoKCkgPT4geworCisgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIo
J3BvdGF0bycpKTsKKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBS
ZWFkYWJsZVN0cmVhbVJlYWRlcih7fSkpOworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3Io
KSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKCkpOworCit9LCAnUmVhZGFibGVTdHJl
YW1SZWFkZXIgY29uc3RydWN0b3Igc2hvdWxkIGdldCBhIFJlYWRhYmxlU3RyZWFtIG9iamVjdCBh
cyBhcmd1bWVudCcpOworCit0ZXN0KCgpID0+IHsKKworICBjb25zdCBtZXRob2RzID0gWydjYW5j
ZWwnLCAnY29uc3RydWN0b3InLCAncmVhZCcsICdyZWxlYXNlTG9jayddOworICBjb25zdCBwcm9w
ZXJ0aWVzID0gbWV0aG9kcy5jb25jYXQoWydjbG9zZWQnXSkuc29ydCgpOworCisgIGNvbnN0IHJz
UmVhZGVyID0gbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSgpKTsK
KyAgY29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocnNSZWFkZXIpOworCisgIGFz
c2VydF9hcnJheV9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvdG8pLnNvcnQo
KSwgcHJvcGVydGllcyk7CisKKyAgZm9yIChjb25zdCBtIG9mIG1ldGhvZHMpIHsKKyAgICBjb25z
dCBwcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIG0pOwor
ICAgIGFzc2VydF9lcXVhbHMocHJvcERlc2MuZW51bWVyYWJsZSwgZmFsc2UsICdtZXRob2Qgc2hv
dWxkIGJlIG5vbi1lbnVtZXJhYmxlJyk7CisgICAgYXNzZXJ0X2VxdWFscyhwcm9wRGVzYy5jb25m
aWd1cmFibGUsIHRydWUsICdtZXRob2Qgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZScpOworICAgIGFz
c2VydF9lcXVhbHMocHJvcERlc2Mud3JpdGFibGUsIHRydWUsICdtZXRob2Qgc2hvdWxkIGJlIHdy
aXRhYmxlJyk7CisgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNSZWFkZXJbbV0sICdmdW5jdGlv
bicsICdzaG91bGQgaGF2ZSBiZSBhIG1ldGhvZCcpOworICB9CisKKyAgY29uc3QgY2xvc2VkUHJv
cERlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCAnY2xvc2VkJyk7
CisgIGFzc2VydF9lcXVhbHMoY2xvc2VkUHJvcERlc2MuZW51bWVyYWJsZSwgZmFsc2UsICdjbG9z
ZWQgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlJyk7CisgIGFzc2VydF9lcXVhbHMoY2xvc2VkUHJv
cERlc2MuY29uZmlndXJhYmxlLCB0cnVlLCAnY2xvc2VkIHNob3VsZCBiZSBjb25maWd1cmFibGUn
KTsKKyAgYXNzZXJ0X25vdF9lcXVhbHMoY2xvc2VkUHJvcERlc2MuZ2V0LCB1bmRlZmluZWQsICdj
bG9zZWQgc2hvdWxkIGhhdmUgYSBnZXR0ZXInKTsKKyAgYXNzZXJ0X2VxdWFscyhjbG9zZWRQcm9w
RGVzYy5zZXQsIHVuZGVmaW5lZCwgJ2Nsb3NlZCBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXInKTsK
KworICBhc3NlcnRfZXF1YWxzKHJzUmVhZGVyLmNhbmNlbC5sZW5ndGgsIDEsICdjYW5jZWwgaGFz
IDEgcGFyYW1ldGVyJyk7CisgIGFzc2VydF9ub3RfZXF1YWxzKHJzUmVhZGVyLmNsb3NlZCwgdW5k
ZWZpbmVkLCAnaGFzIGEgbm9uLXVuZGVmaW5lZCBjbG9zZWQgcHJvcGVydHknKTsKKyAgYXNzZXJ0
X2VxdWFscyh0eXBlb2YgcnNSZWFkZXIuY2xvc2VkLnRoZW4sICdmdW5jdGlvbicsICdjbG9zZWQg
cHJvcGVydHkgaXMgdGhlbmFibGUnKTsKKyAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNSZWFkZXIu
Y29uc3RydWN0b3IsICdmdW5jdGlvbicsICdoYXMgYSBjb25zdHJ1Y3RvciBtZXRob2QnKTsKKyAg
YXNzZXJ0X2VxdWFscyhyc1JlYWRlci5jb25zdHJ1Y3Rvci5sZW5ndGgsIDEsICdjb25zdHJ1Y3Rv
ciBoYXMgMSBwYXJhbWV0ZXInKTsKKyAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNSZWFkZXIucmVh
ZCwgJ2Z1bmN0aW9uJywgJ2hhcyBhIGdldFJlYWRlciBtZXRob2QnKTsKKyAgYXNzZXJ0X2VxdWFs
cyhyc1JlYWRlci5yZWFkLmxlbmd0aCwgMCwgJ3JlYWQgaGFzIG5vIHBhcmFtZXRlcnMnKTsKKyAg
YXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNSZWFkZXIucmVsZWFzZUxvY2ssICdmdW5jdGlvbicsICdo
YXMgYSByZWxlYXNlTG9jayBtZXRob2QnKTsKKyAgYXNzZXJ0X2VxdWFscyhyc1JlYWRlci5yZWxl
YXNlTG9jay5sZW5ndGgsIDAsICdyZWxlYXNlTG9jayBoYXMgbm8gcGFyYW1ldGVycycpOworCit9
LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIgaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0
IGxpc3Qgb2YgcHJvcGVydGllcycpOworCit0ZXN0KCgpID0+IHsKKworICBjb25zdCByc1JlYWRl
ciA9IG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oKSk7CisgIGFz
c2VydF9lcXVhbHMocnNSZWFkZXIuY2xvc2VkLCByc1JlYWRlci5jbG9zZWQsICdjbG9zZWQgc2hv
dWxkIHJldHVybiB0aGUgc2FtZSBwcm9taXNlJyk7CisKK30sICdSZWFkYWJsZVN0cmVhbVJlYWRl
ciBjbG9zZWQgc2hvdWxkIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgcHJvbWlzZSBvYmplY3QnKTsK
KwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAg
bmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJzKTsgLy8gQ29uc3RydWN0aW5nIGRpcmVjdGx5IHRo
ZSBmaXJzdCB0aW1lIHNob3VsZCBiZSBmaW5lLgorICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJy
b3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJzKSwKKyAgICAgICAgICAgICAg
ICAnY29uc3RydWN0aW5nIGRpcmVjdGx5IHRoZSBzZWNvbmQgdGltZSBzaG91bGQgZmFpbCcpOwor
Cit9LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxk
IGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCAnICsKKyAg
ICdjb25zdHJ1Y3Rpb24pJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKCk7CisgIG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihycyk7IC8vIENvbnN0
cnVjdGluZyBkaXJlY3RseSBzaG91bGQgYmUgZmluZS4KKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlw
ZUVycm9yKCksICgpID0+IHJzLmdldFJlYWRlcigpLCAnZ2V0UmVhZGVyKCkgc2hvdWxkIGZhaWwn
KTsKKworfSwgJ0dldHRpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciB2aWEgZ2V0UmVhZGVyIHNo
b3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgJyAr
CisgICAnY29uc3RydWN0aW9uKScpOworCit0ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSgpOworICBycy5nZXRSZWFkZXIoKTsgLy8gZ2V0UmVhZGVyKCkgc2hv
dWxkIGJlIGZpbmUuCisgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcg
UmVhZGFibGVTdHJlYW1SZWFkZXIocnMpLCAnY29uc3RydWN0aW5nIGRpcmVjdGx5IHNob3VsZCBm
YWlsJyk7CisKK30sICdDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3Rs
eSBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVh
ZGVyKScpOworCit0ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSgpOworICBycy5nZXRSZWFkZXIoKTsgLy8gZ2V0UmVhZGVyKCkgc2hvdWxkIGJlIGZpbmUuCisg
IGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwgJ2dl
dFJlYWRlcigpIHNob3VsZCBmYWlsJyk7CisKK30sICdHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1S
ZWFkZXIgdmlhIGdldFJlYWRlciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkg
bG9ja2VkICh2aWEgZ2V0UmVhZGVyKScpOworCit0ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5jbG9zZSgpOwor
ICAgIH0KKyAgfSk7CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJzKTsgLy8gQ29uc3Ry
dWN0aW5nIGRpcmVjdGx5IHNob3VsZCBub3QgdGhyb3cuCisKK30sICdDb25zdHJ1Y3RpbmcgYSBS
ZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBp
cyBjbG9zZWQnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJy
b3IoJ2RvblwndCBzYXkgaSBkaWRuXCd0IHdhcm4geWEnKTsKKyAgY29uc3QgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZXJyb3IodGhlRXJyb3IpOwor
ICAgIH0KKyAgfSk7CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJzKTsgLy8gQ29uc3Ry
dWN0aW5nIGRpcmVjdGx5IHNob3VsZCBub3QgdGhyb3cuCisKK30sICdDb25zdHJ1Y3RpbmcgYSBS
ZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBp
cyBlcnJvcmVkJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7
CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAg
ICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworICBjb25zdCByZWFkZXIgPSBycy5nZXRS
ZWFkZXIoKTsKKworICBjb25zdCBwcm9taXNlID0gcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9
PiB7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYScsIGRvbmU6
IGZhbHNlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB0aGUgZW5xdWV1ZWQgY2h1bmsn
KTsKKyAgfSk7CisKKyAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisgIHJldHVybiBwcm9taXNl
OworCit9LCAnUmVhZGluZyBmcm9tIGEgcmVhZGVyIGZvciBhbiBlbXB0eSBzdHJlYW0gd2lsbCB3
YWl0IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxhYmxlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7
CisKKyAgbGV0IGNhbmNlbENhbGxlZCA9IGZhbHNlOworICBjb25zdCBwYXNzZWRSZWFzb24gPSBu
ZXcgRXJyb3IoJ2l0IHdhc25cJ3QgdGhlIHJpZ2h0IHRpbWUsIHNvcnJ5Jyk7CisgIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBjYW5jZWwocmVhc29uKSB7CisgICAgICBhc3Nl
cnRfdHJ1ZShycy5sb2NrZWQsICd0aGUgc3RyZWFtIHNob3VsZCBzdGlsbCBiZSBsb2NrZWQnKTsK
KyAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIo
KSwgJ3Nob3VsZCBub3QgYmUgYWJsZSB0byBnZXQgYW5vdGhlciByZWFkZXInKTsKKyAgICAgIGFz
c2VydF9lcXVhbHMocmVhc29uLCBwYXNzZWRSZWFzb24sICd0aGUgY2FuY2VsbGF0aW9uIHJlYXNv
biBpcyBwYXNzZWQgdGhyb3VnaCB0byB0aGUgdW5kZXJseWluZyBzb3VyY2UnKTsKKyAgICAgIGNh
bmNlbENhbGxlZCA9IHRydWU7CisgICAgfQorICB9KTsKKworICBjb25zdCByZWFkZXIgPSBycy5n
ZXRSZWFkZXIoKTsKKyAgcmV0dXJuIHJlYWRlci5jYW5jZWwocGFzc2VkUmVhc29uKS50aGVuKCgp
ID0+IGFzc2VydF90cnVlKGNhbmNlbENhbGxlZCkpOworCit9LCAnY2FuY2VsKCkgb24gYSByZWFk
ZXIgZG9lcyBub3QgcmVsZWFzZSB0aGUgcmVhZGVyJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7
CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisg
IGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworICBjb25zdCBwcm9taXNlID0gcmVhZGVy
LmNsb3NlZDsKKworICBjb250cm9sbGVyLmNsb3NlKCk7CisgIHJldHVybiBwcm9taXNlOworCit9
LCAnY2xvc2VkIHNob3VsZCBiZSBmdWxmaWxsZWQgYWZ0ZXIgc3RyZWFtIGlzIGNsb3NlZCAoLmNs
b3NlZCBhY2Nlc3MgYmVmb3JlIGFjcXVpcmluZyknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4gewor
CisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Cisg
ICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKworICBj
b25zdCByZWFkZXIxID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgcmVhZGVyMS5yZWxlYXNlTG9jaygp
OworCisgIGNvbnN0IHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKKyAgY29udHJvbGxlci5jbG9z
ZSgpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcHJvbWlzZV9yZWplY3RzKHQsIG5l
dyBUeXBlRXJyb3IoKSwgcmVhZGVyMS5jbG9zZWQpLAorICAgIHJlYWRlcjIuY2xvc2VkCisgIF0p
OworCit9LCAnY2xvc2VkIHNob3VsZCBiZSByZWplY3RlZCBhZnRlciByZWFkZXIgcmVsZWFzZXMg
aXRzIGxvY2sgKG11bHRpcGxlIHN0cmVhbSBsb2NrcyknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+
IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgewor
ICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICBjLmVucXVldWUoJ2InKTsKKyAgICAgIGMuY2xv
c2UoKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlcjEgPSBycy5nZXRSZWFkZXIoKTsK
KyAgY29uc3QgcHJvbWlzZTEgPSByZWFkZXIxLnJlYWQoKS50aGVuKHIgPT4geworICAgIGFzc2Vy
dF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3JlYWRpbmcg
dGhlIGZpcnN0IGNodW5rIGZyb20gcmVhZGVyMSB3b3JrcycpOworICB9KTsKKyAgcmVhZGVyMS5y
ZWxlYXNlTG9jaygpOworCisgIGNvbnN0IHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKKyAgY29u
c3QgcHJvbWlzZTIgPSByZWFkZXIyLnJlYWQoKS50aGVuKHIgPT4geworICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwgJ3JlYWRpbmcgdGhlIHNl
Y29uZCBjaHVuayBmcm9tIHJlYWRlcjIgd29ya3MnKTsKKyAgfSk7CisgIHJlYWRlcjIucmVsZWFz
ZUxvY2soKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoW3Byb21pc2UxLCBwcm9taXNlMl0pOwor
Cit9LCAnTXVsdGlwbGUgcmVhZGVycyBjYW4gYWNjZXNzIHRoZSBzdHJlYW0gaW4gc2VxdWVuY2Un
KTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgIH0KKyAgfSk7
CisKKyAgY29uc3QgcmVhZGVyMSA9IHJzLmdldFJlYWRlcigpOworICByZWFkZXIxLnJlbGVhc2VM
b2NrKCk7CisKKyAgY29uc3QgcmVhZGVyMiA9IHJzLmdldFJlYWRlcigpOworCisgIC8vIFNob3Vs
ZCBiZSBhIG5vLW9wCisgIHJlYWRlcjEucmVsZWFzZUxvY2soKTsKKworICByZXR1cm4gcmVhZGVy
Mi5yZWFkKCkudGhlbihyZXN1bHQgPT4geworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3Vs
dCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICdyZWFkKCkgc2hvdWxkIHN0aWxsIHdvcmsgb24gcmVhZGVyMiBldmVuIGFmdGVyIHJlYWRlcjEg
aXMgcmVsZWFzZWQnKTsKKyAgfSk7CisKK30sICdDYW5ub3QgdXNlIGFuIGFscmVhZHktcmVsZWFz
ZWQgcmVhZGVyIHRvIHVubG9jayBhIHN0cmVhbSBhZ2FpbicpOworCitwcm9taXNlX3Rlc3QodCA9
PiB7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsK
KyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgIH0sCisgICAgY2FuY2VsKCkgeworICAgICAgYXNz
ZXJ0X3VucmVhY2hlZCgndW5kZXJseWluZyBzb3VyY2UgY2FuY2VsIHNob3VsZCBub3QgYmUgY2Fs
bGVkJyk7CisgICAgfQorICB9KTsKKworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsK
KyAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7CisgIGNvbnN0IGNhbmNlbFByb21pc2UgPSByZWFkZXIu
Y2FuY2VsKCk7CisKKyAgY29uc3QgcmVhZGVyMiA9IHJzLmdldFJlYWRlcigpOworICBjb25zdCBy
ZWFkUHJvbWlzZSA9IHJlYWRlcjIucmVhZCgpLnRoZW4ociA9PiB7CisgICAgYXNzZXJ0X29iamVj
dF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnYSBuZXcgcmVhZGVyIHNo
b3VsZCBiZSBhYmxlIHRvIHJlYWQgYSBjaHVuaycpOworICB9KTsKKworICByZXR1cm4gUHJvbWlz
ZS5hbGwoWworICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIGNhbmNlbFBy
b21pc2UpLAorICAgIHJlYWRQcm9taXNlCisgIF0pOworCit9LCAnY2FuY2VsKCkgb24gYSByZWxl
YXNlZCByZWFkZXIgaXMgYSBuby1vcCBhbmQgZG9lcyBub3QgcGFzcyB0aHJvdWdoJyk7CisKK3By
b21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBwcm9taXNlQXNzZXJ0cyA9IFtdOworCisgIGxl
dCBjb250cm9sbGVyOworICBjb25zdCB0aGVFcnJvciA9IHsgbmFtZTogJ3VuaXF1ZSBlcnJvcicg
fTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAg
ICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyMSA9IHJz
LmdldFJlYWRlcigpOworCisgIHByb21pc2VBc3NlcnRzLnB1c2goCisgICAgcHJvbWlzZV9yZWpl
Y3RzKHQsIHRoZUVycm9yLCByZWFkZXIxLmNsb3NlZCksCisgICAgcHJvbWlzZV9yZWplY3RzKHQs
IHRoZUVycm9yLCByZWFkZXIxLnJlYWQoKSkKKyAgKTsKKworICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksICd0cnlpbmcgdG8gZ2V0IGFub3RoZXIg
cmVhZGVyIGJlZm9yZSBlcnJvcmluZyBzaG91bGQgdGhyb3cnKTsKKworICBjb250cm9sbGVyLmVy
cm9yKHRoZUVycm9yKTsKKworICByZWFkZXIxLnJlbGVhc2VMb2NrKCk7CisKKyAgY29uc3QgcmVh
ZGVyMiA9IHJzLmdldFJlYWRlcigpOworCisgIHByb21pc2VBc3NlcnRzLnB1c2goCisgICAgcHJv
bWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIyLmNsb3NlZCksCisgICAgcHJvbWlzZV9y
ZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIyLnJlYWQoKSkKKyAgKTsKKworICByZXR1cm4gUHJv
bWlzZS5hbGwocHJvbWlzZUFzc2VydHMpOworCit9LCAnR2V0dGluZyBhIHNlY29uZCByZWFkZXIg
YWZ0ZXIgZXJyb3JpbmcgdGhlIHN0cmVhbSBhbmQgcmVsZWFzaW5nIHRoZSByZWFkZXIgc2hvdWxk
IHN1Y2NlZWQnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGxldCBjb250cm9sbGVyOwor
ICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAg
Y29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKworICBjb25zdCBwcm9taXNlID0gcnMuZ2V0
UmVhZGVyKCkuY2xvc2VkLnRoZW4oCisgICAgdC51bnJlYWNoZWRfZnVuYygnY2xvc2VkIHByb21p
c2Ugc2hvdWxkIG5vdCBiZSBmdWxmaWxsZWQgd2hlbiBzdHJlYW0gaXMgZXJyb3JlZCcpLAorICAg
IGVyciA9PiB7CisgICAgICBhc3NlcnRfZXF1YWxzKGVyciwgdW5kZWZpbmVkLCAncGFzc2VkIGVy
cm9yIHNob3VsZCBiZSB1bmRlZmluZWQgYXMgaXQgd2FzJyk7CisgICAgfQorICApOworCisgIGNv
bnRyb2xsZXIuZXJyb3IoKTsKKyAgcmV0dXJuIHByb21pc2U7CisKK30sICdSZWFkYWJsZVN0cmVh
bVJlYWRlciBjbG9zZWQgcHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB1bmRlZmluZWQg
aWYgdGhhdCBpcyB0aGUgZXJyb3InKTsKKworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29u
c3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KCkgeworICAgICAgcmV0dXJu
IFByb21pc2UucmVqZWN0KCk7CisgICAgfQorICB9KTsKKworICByZXR1cm4gcnMuZ2V0UmVhZGVy
KCkucmVhZCgpLnRoZW4oCisgICAgdC51bnJlYWNoZWRfZnVuYygncmVhZCBwcm9taXNlIHNob3Vs
ZCBub3QgYmUgZnVsZmlsbGVkIHdoZW4gc3RyZWFtIGlzIGVycm9yZWQnKSwKKyAgICBlcnIgPT4g
eworICAgICAgYXNzZXJ0X2VxdWFscyhlcnIsIHVuZGVmaW5lZCwgJ3Bhc3NlZCBlcnJvciBzaG91
bGQgYmUgdW5kZWZpbmVkIGFzIGl0IHdhcycpOworICAgIH0KKyAgKTsKKworfSwgJ1JlYWRhYmxl
U3RyZWFtUmVhZGVyOiBpZiBzdGFydCByZWplY3RzIHdpdGggbm8gcGFyYW1ldGVyLCBpdCBzaG91
bGQgZXJyb3IgdGhlIHN0cmVhbSB3aXRoIGFuIHVuZGVmaW5lZCBlcnJvcicpOworCitwcm9taXNl
X3Rlc3QodCA9PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICd1bmlxdWUgc3RyaW5n
JyB9OworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
eworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisK
KyAgY29uc3QgcHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcnMuZ2V0UmVh
ZGVyKCkuY2xvc2VkKTsKKworICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKKyAgcmV0dXJu
IHByb21pc2U7CisKK30sICdFcnJvcmluZyBhIFJlYWRhYmxlU3RyZWFtIGFmdGVyIGNoZWNraW5n
IGNsb3NlZCBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNl
Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IHsgbmFtZTog
J3VuaXF1ZSBzdHJpbmcnIH07CisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7Cisg
ICAgfQorICB9KTsKKworICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKKworICAvLyBMZXQn
cyBjYWxsIGdldFJlYWRlciB0d2ljZSBmb3IgZXh0cmEgdGVzdCBjb3ZlcmFnZSBvZiB0aGlzIGNv
ZGUgcGF0aC4KKyAgcnMuZ2V0UmVhZGVyKCkucmVsZWFzZUxvY2soKTsKKworICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBycy5nZXRSZWFkZXIoKS5jbG9zZWQpOworCit9LCAn
RXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBiZWZvcmUgY2hlY2tpbmcgY2xvc2VkIHNob3VsZCBy
ZWplY3QgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHByb21pc2UnKTsKKworcHJvbWlzZV90
ZXN0KCgpID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0K
KyAgfSk7CisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIGNvbnN0IHByb21p
c2UgPSBQcm9taXNlLmFsbChbCisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7Cisg
ICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9u
ZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UgKDEpJyk7CisgICAg
fSksCisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVh
ZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UgKDIpJyk7CisgICAgfSksCisgICAgcmVhZGVy
LmNsb3NlZAorICBdKTsKKworICBjb250cm9sbGVyLmNsb3NlKCk7CisgIHJldHVybiBwcm9taXNl
OworCit9LCAnUmVhZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0aGF0IGdldHMgY2xvc2VkJyk7CisK
K3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0g
YzsKKyAgICB9CisgIH0pOworCisgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgY29uc3QgcmVhZGVy
ID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICByZWFkZXIu
cmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3Vs
dCwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZp
bGwgd2l0aCBjbG9zZSAoMSknKTsKKyAgICB9KSwKKyAgICByZWFkZXIucmVhZCgpLnRoZW4ocmVz
dWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogdW5k
ZWZpbmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCBjbG9zZSAo
MiknKTsKKyAgICB9KSwKKyAgICByZWFkZXIuY2xvc2VkCisgIF0pOworCit9LCAnUmVhZGluZyB0
d2ljZSBvbiBhIGNsb3NlZCBzdHJlYW0nKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGxl
dCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3Rh
cnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKworICBjb25zdCBt
eUVycm9yID0geyBuYW1lOiAnbWFzaGVkIHBvdGF0b2VzJyB9OworICBjb250cm9sbGVyLmVycm9y
KG15RXJyb3IpOworCisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIHJldHVy
biBQcm9taXNlLmFsbChbCisgICAgcHJvbWlzZV9yZWplY3RzKHQsIG15RXJyb3IsIHJlYWRlci5y
ZWFkKCkpLAorICAgIHByb21pc2VfcmVqZWN0cyh0LCBteUVycm9yLCByZWFkZXIucmVhZCgpKSwK
KyAgICBwcm9taXNlX3JlamVjdHModCwgbXlFcnJvciwgcmVhZGVyLmNsb3NlZCkKKyAgXSk7CisK
K30sICdSZWFkaW5nIHR3aWNlIG9uIGFuIGVycm9yZWQgc3RyZWFtJyk7CisKK3Byb21pc2VfdGVz
dCh0ID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAg
fSk7CisKKyAgY29uc3QgbXlFcnJvciA9IHsgbmFtZTogJ21hc2hlZCBwb3RhdG9lcycgfTsKKyAg
Y29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgY29uc3QgcHJvbWlzZSA9IFByb21p
c2UuYWxsKFsKKyAgICBwcm9taXNlX3JlamVjdHModCwgbXlFcnJvciwgcmVhZGVyLnJlYWQoKSks
CisgICAgcHJvbWlzZV9yZWplY3RzKHQsIG15RXJyb3IsIHJlYWRlci5yZWFkKCkpLAorICAgIHBy
b21pc2VfcmVqZWN0cyh0LCBteUVycm9yLCByZWFkZXIuY2xvc2VkKQorICBdKTsKKworICBjb250
cm9sbGVyLmVycm9yKG15RXJyb3IpOworICByZXR1cm4gcHJvbWlzZTsKKworfSwgJ1JlYWRpbmcg
dHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGVycm9yZWQnKTsKKworZG9uZSgpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
LWFwaS9yZWFkYWJsZS1zdHJlYW1zL3RlZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMv
dGVlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMmYzYTRiNTkyZjU5MjliZjA1NjVlMTliMjA0
YzA4YWZhMjdlYTVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3RlZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwyNCBAQAorCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzog
cnMudGVlKCkgcmV0dXJucyBhbiBhcnJheSBvZiB0d28gUmVhZGFibGVTdHJlYW1zIAorUEFTUyBS
ZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgb25lIGJyYW5jaCB0
byB0aGUgZW5kIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBvdGhlciAKK1BBU1MgUmVhZGFibGVTdHJl
YW0gdGVlaW5nOiB2YWx1ZXMgc2hvdWxkIGJlIGVxdWFsIGFjcm9zcyBlYWNoIGJyYW5jaCAKK1BB
U1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcnMgaW4gdGhlIHNvdXJjZSBzaG91bGQgcHJv
cGFnYXRlIHRvIGJvdGggYnJhbmNoZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2Fu
Y2VsaW5nIGJyYW5jaDEgc2hvdWxkIG5vdCBpbXBhY3QgYnJhbmNoMiAKK1BBU1MgUmVhZGFibGVT
dHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYnJhbmNoMiBzaG91bGQgbm90IGltcGFjdCBicmFuY2gy
IAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBib3RoIGJyYW5jaGVzIHNo
b3VsZCBhZ2dyZWdhdGUgdGhlIGNhbmNlbCByZWFzb25zIGludG8gYW4gYXJyYXkgCitQQVNTIFJl
YWRhYmxlU3RyZWFtIHRlZWluZzogZmFpbGluZyB0byBjYW5jZWwgdGhlIG9yaWdpbmFsIHN0cmVh
bSBzaG91bGQgY2F1c2UgY2FuY2VsKCkgdG8gcmVqZWN0IG9uIGJyYW5jaGVzIAorUEFTUyBSZWFk
YWJsZVN0cmVhbSB0ZWVpbmc6IGNsb3NpbmcgdGhlIG9yaWdpbmFsIHNob3VsZCBpbW1lZGlhdGVs
eSBjbG9zZSB0aGUgYnJhbmNoZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogZXJyb3Jp
bmcgdGhlIG9yaWdpbmFsIHNob3VsZCBpbW1lZGlhdGVseSBlcnJvciB0aGUgYnJhbmNoZXMgCitG
QUlMIExvYWQgdGVlLmpzIHdpdGggU2hhcmVkV29ya2VyIGFzc2VydF91bnJlYWNoZWQ6IFNoYXJl
ZFdvcmtlciBpcyB1bmF2YWlsYWJsZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK0ZBSUwgVW50
aXRsZWQgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ25hdmlnYXRvci5z
ZXJ2aWNlV29ya2VyLmdldFJlZ2lzdHJhdGlvbicpCitGQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWlu
ZzogcnMudGVlKCkgcmV0dXJucyBhbiBhcnJheSBvZiB0d28gUmVhZGFibGVTdHJlYW1zIENhbid0
IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWlu
Zzogc2hvdWxkIGJlIGFibGUgdG8gcmVhZCBvbmUgYnJhbmNoIHRvIHRoZSBlbmQgd2l0aG91dCBh
ZmZlY3RpbmcgdGhlIG90aGVyIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitG
QUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogdmFsdWVzIHNob3VsZCBiZSBlcXVhbCBhY3Jvc3Mg
ZWFjaCBicmFuY2ggQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVh
ZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcnMgaW4gdGhlIHNvdXJjZSBzaG91bGQgcHJvcGFnYXRl
IHRvIGJvdGggYnJhbmNoZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZB
SUwgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYnJhbmNoMSBzaG91bGQgbm90IGlt
cGFjdCBicmFuY2gyIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJl
YWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJyYW5jaDIgc2hvdWxkIG5vdCBpbXBhY3Qg
YnJhbmNoMiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBSZWFkYWJs
ZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBib3RoIGJyYW5jaGVzIHNob3VsZCBhZ2dyZWdhdGUg
dGhlIGNhbmNlbCByZWFzb25zIGludG8gYW4gYXJyYXkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVh
ZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBmYWlsaW5nIHRvIGNhbmNl
bCB0aGUgb3JpZ2luYWwgc3RyZWFtIHNob3VsZCBjYXVzZSBjYW5jZWwoKSB0byByZWplY3Qgb24g
YnJhbmNoZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFi
bGVTdHJlYW0gdGVlaW5nOiBjbG9zaW5nIHRoZSBvcmlnaW5hbCBzaG91bGQgaW1tZWRpYXRlbHkg
Y2xvc2UgdGhlIGJyYW5jaGVzIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitG
QUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogZXJyb3JpbmcgdGhlIG9yaWdpbmFsIHNob3VsZCBp
bW1lZGlhdGVseSBlcnJvciB0aGUgYnJhbmNoZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFi
bGVTdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3RlZS5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJs
ZS1zdHJlYW1zL3RlZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyYzg0N2I4MTE3OGFkMGM1MGJhYWMwOWQ3
YjFjZGM2ODgyOTMyZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmh0
bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3Rl
c3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3Qt
aW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Jz
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJ0ZWUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD4KKyd1c2Ugc3RyaWN0JzsKK3dvcmtlcl90ZXN0KCd0ZWUuanMnKTsKKzwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3RlZS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy90ZWUu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDg1ZjJhZjdhYjVjZTRmZmI2OWM5NWY4YThiZTU0ZGZhMWUyZWQwNwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy90ZWUuanMKQEAgLTAsMCArMSwyNTQg
QEAKKyd1c2Ugc3RyaWN0JzsKKworaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgeworICBzZWxmLmlt
cG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9ycy11dGlscy5qcycpOworICBzZWxmLmltcG9ydFNj
cmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnKTsKK30KKwordGVzdCgoKSA9PiB7CisK
KyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgY29uc3QgcmVzdWx0ID0gcnMu
dGVlKCk7CisKKyAgYXNzZXJ0X3RydWUoQXJyYXkuaXNBcnJheShyZXN1bHQpLCAncmV0dXJuIHZh
bHVlIHNob3VsZCBiZSBhbiBhcnJheScpOworICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5sZW5ndGgs
IDIsICdhcnJheSBzaG91bGQgaGF2ZSBsZW5ndGggMicpOworICBhc3NlcnRfZXF1YWxzKHJlc3Vs
dFswXS5jb25zdHJ1Y3RvciwgUmVhZGFibGVTdHJlYW0sICcwdGggZWxlbWVudCBzaG91bGQgYmUg
YSBSZWFkYWJsZVN0cmVhbScpOworICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsxXS5jb25zdHJ1Y3Rv
ciwgUmVhZGFibGVTdHJlYW0sICcxc3QgZWxlbWVudCBzaG91bGQgYmUgYSBSZWFkYWJsZVN0cmVh
bScpOworCit9LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBycy50ZWUoKSByZXR1cm5zIGFuIGFy
cmF5IG9mIHR3byBSZWFkYWJsZVN0cmVhbXMnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisg
IGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBj
LmVucXVldWUoJ2EnKTsKKyAgICAgIGMuZW5xdWV1ZSgnYicpOworICAgICAgYy5jbG9zZSgpOwor
ICAgIH0KKyAgfSk7CisKKyAgY29uc3QgYnJhbmNoID0gcnMudGVlKCk7CisgIGNvbnN0IGJyYW5j
aDEgPSBicmFuY2hbMF07CisgIGNvbnN0IGJyYW5jaDIgPSBicmFuY2hbMV07CisgIGNvbnN0IHJl
YWRlcjEgPSBicmFuY2gxLmdldFJlYWRlcigpOworICBjb25zdCByZWFkZXIyID0gYnJhbmNoMi5n
ZXRSZWFkZXIoKTsKKworICByZWFkZXIyLmNsb3NlZC50aGVuKHQudW5yZWFjaGVkX2Z1bmMoJ2Jy
YW5jaDIgc2hvdWxkIG5vdCBiZSBjbG9zZWQnKSk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsK
KyAgICByZWFkZXIxLmNsb3NlZCwKKyAgICByZWFkZXIxLnJlYWQoKS50aGVuKHIgPT4geworICAg
ICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAn
Zmlyc3QgY2h1bmsgZnJvbSBicmFuY2gxIHNob3VsZCBiZSBjb3JyZWN0Jyk7CisgICAgfSksCisg
ICAgcmVhZGVyMS5yZWFkKCkudGhlbihyID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxz
KHIsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwgJ3NlY29uZCBjaHVuayBmcm9tIGJyYW5j
aDEgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKyAgICB9KSwKKyAgICByZWFkZXIxLnJlYWQoKS50aGVu
KHIgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogdW5kZWZpbmVk
LCBkb25lOiB0cnVlIH0sICd0aGlyZCByZWFkKCkgZnJvbSBicmFuY2gxIHNob3VsZCBiZSBkb25l
Jyk7CisgICAgfSksCisgICAgcmVhZGVyMi5yZWFkKCkudGhlbihyID0+IHsKKyAgICAgIGFzc2Vy
dF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IGNo
dW5rIGZyb20gYnJhbmNoMiBzaG91bGQgYmUgY29ycmVjdCcpOworICAgIH0pCisgIF0pOworCit9
LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBzaG91bGQgYmUgYWJsZSB0byByZWFkIG9uZSBicmFu
Y2ggdG8gdGhlIGVuZCB3aXRob3V0IGFmZmVjdGluZyB0aGUgb3RoZXInKTsKKworcHJvbWlzZV90
ZXN0KCgpID0+IHsKKworICBjb25zdCB0aGVPYmplY3QgPSB7IHRoZTogJ3Rlc3Qgb2JqZWN0JyB9
OworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAg
ICAgYy5lbnF1ZXVlKHRoZU9iamVjdCk7CisgICAgfQorICB9KTsKKworICBjb25zdCBicmFuY2gg
PSBycy50ZWUoKTsKKyAgY29uc3QgYnJhbmNoMSA9IGJyYW5jaFswXTsKKyAgY29uc3QgYnJhbmNo
MiA9IGJyYW5jaFsxXTsKKyAgY29uc3QgcmVhZGVyMSA9IGJyYW5jaDEuZ2V0UmVhZGVyKCk7Cisg
IGNvbnN0IHJlYWRlcjIgPSBicmFuY2gyLmdldFJlYWRlcigpOworCisgIHJldHVybiBQcm9taXNl
LmFsbChbcmVhZGVyMS5yZWFkKCksIHJlYWRlcjIucmVhZCgpXSkudGhlbih2YWx1ZXMgPT4gewor
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHZhbHVlc1swXSwgdmFsdWVzWzFdLCAndGhlIHZhbHVl
cyBzaG91bGQgYmUgZXF1YWwnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6
IHZhbHVlcyBzaG91bGQgYmUgZXF1YWwgYWNyb3NzIGVhY2ggYnJhbmNoJyk7CisKK3Byb21pc2Vf
dGVzdCh0ID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IHsgbmFtZTogJ2JvbyEnIH07CisgIGNv
bnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVu
cXVldWUoJ2EnKTsKKyAgICAgIGMuZW5xdWV1ZSgnYicpOworICAgIH0sCisgICAgcHVsbCgpIHsK
KyAgICAgIHRocm93IHRoZUVycm9yOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgYnJhbmNoZXMg
PSBycy50ZWUoKTsKKyAgY29uc3QgcmVhZGVyMSA9IGJyYW5jaGVzWzBdLmdldFJlYWRlcigpOwor
ICBjb25zdCByZWFkZXIyID0gYnJhbmNoZXNbMV0uZ2V0UmVhZGVyKCk7CisKKyAgcmVhZGVyMS5s
YWJlbCA9ICdyZWFkZXIxJzsKKyAgcmVhZGVyMi5sYWJlbCA9ICdyZWFkZXIyJzsKKworICByZXR1
cm4gUHJvbWlzZS5hbGwoWworICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcmVhZGVy
MS5jbG9zZWQpLAorICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcmVhZGVyMi5jbG9z
ZWQpLAorICAgIHJlYWRlcjEucmVhZCgpLnRoZW4ociA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0
X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdzaG91bGQgYmUgYWJsZSB0
byByZWFkIHRoZSBmaXJzdCBjaHVuayBpbiBicmFuY2gxJyk7CisgICAgfSksCisgICAgcmVhZGVy
MS5yZWFkKCkudGhlbihyID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFs
dWU6ICdiJywgZG9uZTogZmFsc2UgfSwgJ3Nob3VsZCBiZSBhYmxlIHRvIHJlYWQgdGhlIHNlY29u
ZCBjaHVuayBpbiBicmFuY2gxJyk7CisKKyAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwg
dGhlRXJyb3IsIHJlYWRlcjIucmVhZCgpKTsKKyAgICB9KQorICAgIC50aGVuKCgpID0+IHByb21p
c2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcmVhZGVyMS5yZWFkKCkpKQorICBdKTsKKworfSwgJ1Jl
YWRhYmxlU3RyZWFtIHRlZWluZzogZXJyb3JzIGluIHRoZSBzb3VyY2Ugc2hvdWxkIHByb3BhZ2F0
ZSB0byBib3RoIGJyYW5jaGVzJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1
ZSgnYScpOworICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICBjLmNsb3NlKCk7CisgICAgfQor
ICB9KTsKKworICBjb25zdCBicmFuY2hlcyA9IHJzLnRlZSgpOworICBjb25zdCBicmFuY2gxID0g
YnJhbmNoZXNbMF07CisgIGNvbnN0IGJyYW5jaDIgPSBicmFuY2hlc1sxXTsKKyAgYnJhbmNoMS5j
YW5jZWwoKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHJlYWRhYmxlU3RyZWFtVG9B
cnJheShicmFuY2gxKS50aGVuKGNodW5rcyA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KGNodW5rcywgW10sICdicmFuY2gxIHNob3VsZCBoYXZlIG5vIGNodW5rcycpOworICAgIH0pLAor
ICAgIHJlYWRhYmxlU3RyZWFtVG9BcnJheShicmFuY2gyKS50aGVuKGNodW5rcyA9PiB7CisgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywgWydhJywgJ2InXSwgJ2JyYW5jaDIgc2hvdWxk
IGhhdmUgdHdvIGNodW5rcycpOworICAgIH0pCisgIF0pOworCit9LCAnUmVhZGFibGVTdHJlYW0g
dGVlaW5nOiBjYW5jZWxpbmcgYnJhbmNoMSBzaG91bGQgbm90IGltcGFjdCBicmFuY2gyJyk7CisK
K3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
eworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgYy5lbnF1ZXVl
KCdiJyk7CisgICAgICBjLmNsb3NlKCk7CisgICAgfQorICB9KTsKKworICBjb25zdCBicmFuY2hl
cyA9IHJzLnRlZSgpOworICBjb25zdCBicmFuY2gxID0gYnJhbmNoZXNbMF07CisgIGNvbnN0IGJy
YW5jaDIgPSBicmFuY2hlc1sxXTsKKyAgYnJhbmNoMi5jYW5jZWwoKTsKKworICByZXR1cm4gUHJv
bWlzZS5hbGwoWworICAgIHJlYWRhYmxlU3RyZWFtVG9BcnJheShicmFuY2gxKS50aGVuKGNodW5r
cyA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywgWydhJywgJ2InXSwgJ2Jy
YW5jaDEgc2hvdWxkIGhhdmUgdHdvIGNodW5rcycpOworICAgIH0pLAorICAgIHJlYWRhYmxlU3Ry
ZWFtVG9BcnJheShicmFuY2gyKS50aGVuKGNodW5rcyA9PiB7CisgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGNodW5rcywgW10sICdicmFuY2gyIHNob3VsZCBoYXZlIG5vIGNodW5rcycpOworICAg
IH0pCisgIF0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYnJhbmNo
MiBzaG91bGQgbm90IGltcGFjdCBicmFuY2gyJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisK
KyAgY29uc3QgcmVhc29uMSA9IG5ldyBFcnJvcignV2VcJ3JlIHdhbnRlZCBtZW4uJyk7CisgIGNv
bnN0IHJlYXNvbjIgPSBuZXcgRXJyb3IoJ0kgaGF2ZSB0aGUgZGVhdGggc2VudGVuY2Ugb24gdHdl
bHZlIHN5c3RlbXMuJyk7CisKKyAgbGV0IHJlc29sdmU7CisgIGNvbnN0IHByb21pc2UgPSBuZXcg
UHJvbWlzZShyID0+IHJlc29sdmUgPSByKTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIGNhbmNlbChyZWFzb24pIHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocmVh
c29uLCBbcmVhc29uMSwgcmVhc29uMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUg
Y2FuY2VsIHJlYXNvbiBzaG91bGQgYmUgYW4gYXJyYXkgY29udGFpbmluZyB0aG9zZSBmcm9tIHRo
ZSBicmFuY2hlcycpOworICAgICAgcmVzb2x2ZSgpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qg
YnJhbmNoID0gcnMudGVlKCk7CisgIGNvbnN0IGJyYW5jaDEgPSBicmFuY2hbMF07CisgIGNvbnN0
IGJyYW5jaDIgPSBicmFuY2hbMV07CisgIGJyYW5jaDEuY2FuY2VsKHJlYXNvbjEpOworICBicmFu
Y2gyLmNhbmNlbChyZWFzb24yKTsKKworICByZXR1cm4gcHJvbWlzZTsKKworfSwgJ1JlYWRhYmxl
U3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJvdGggYnJhbmNoZXMgc2hvdWxkIGFnZ3JlZ2F0ZSB0
aGUgY2FuY2VsIHJlYXNvbnMgaW50byBhbiBhcnJheScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7
CisKKyAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICdJXCdsbCBiZSBjYXJlZnVsLicgfTsKKyAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGNhbmNlbCgpIHsKKyAgICAgIHRo
cm93IHRoZUVycm9yOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgYnJhbmNoID0gcnMudGVlKCk7
CisgIGNvbnN0IGJyYW5jaDEgPSBicmFuY2hbMF07CisgIGNvbnN0IGJyYW5jaDIgPSBicmFuY2hb
MV07CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICBwcm9taXNlX3JlamVjdHModCwgdGhl
RXJyb3IsIGJyYW5jaDEuY2FuY2VsKCkpLAorICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJv
ciwgYnJhbmNoMi5jYW5jZWwoKSkKKyAgXSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6
IGZhaWxpbmcgdG8gY2FuY2VsIHRoZSBvcmlnaW5hbCBzdHJlYW0gc2hvdWxkIGNhdXNlIGNhbmNl
bCgpIHRvIHJlamVjdCBvbiBicmFuY2hlcycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisg
IGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAg
c3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKworICBjb25z
dCBicmFuY2hlcyA9IHJzLnRlZSgpOworICBjb25zdCByZWFkZXIxID0gYnJhbmNoZXNbMF0uZ2V0
UmVhZGVyKCk7CisgIGNvbnN0IHJlYWRlcjIgPSBicmFuY2hlc1sxXS5nZXRSZWFkZXIoKTsKKwor
ICBjb25zdCBwcm9taXNlID0gUHJvbWlzZS5hbGwoW3JlYWRlcjEuY2xvc2VkLCByZWFkZXIyLmNs
b3NlZF0pOworCisgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgcmV0dXJuIHByb21pc2U7CisKK30s
ICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNsb3NpbmcgdGhlIG9yaWdpbmFsIHNob3VsZCBpbW1l
ZGlhdGVseSBjbG9zZSB0aGUgYnJhbmNoZXMnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisg
IGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAg
c3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKworICBjb25z
dCBicmFuY2hlcyA9IHJzLnRlZSgpOworICBjb25zdCByZWFkZXIxID0gYnJhbmNoZXNbMF0uZ2V0
UmVhZGVyKCk7CisgIGNvbnN0IHJlYWRlcjIgPSBicmFuY2hlc1sxXS5nZXRSZWFkZXIoKTsKKwor
ICBjb25zdCB0aGVFcnJvciA9IHsgbmFtZTogJ2JvbyEnIH07CisgIGNvbnN0IHByb21pc2UgPSBQ
cm9taXNlLmFsbChbCisgICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIxLmNs
b3NlZCksCisgICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIyLmNsb3NlZCkK
KyAgXSk7CisKKyAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7CisgIHJldHVybiBwcm9taXNl
OworCit9LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcmluZyB0aGUgb3JpZ2luYWwgc2hv
dWxkIGltbWVkaWF0ZWx5IGVycm9yIHRoZSBicmFuY2hlcycpOworCitkb25lKCk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMt
YXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3Ry
ZWFtcy90ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3MDlkMTAxMzRlZjk2NmE5
Mzc1MWQzZTEzYTk3YzE2NDM5ZjQzZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVh
bXMvdGVtcGxhdGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3NCBAQAorCitQQVNTIFJ1bm5p
bmcgdGVtcGxhdGVkUlNFbXB0eSB3aXRoIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgCitQQVNTIGlu
c3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgCitQQVNTIFJ1
bm5pbmcgdGVtcGxhdGVkUlNFbXB0eVJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkg
cmVhZGVyIAorUEFTUyBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9w
ZXJ0aWVzIAorUEFTUyBsb2NrZWQgc2hvdWxkIGJlIHRydWUgCitQQVNTIHJlYWQoKSBzaG91bGQg
bmV2ZXIgc2V0dGxlIAorUEFTUyB0d28gcmVhZCgpcyBzaG91bGQgYm90aCBuZXZlciBzZXR0bGUg
CitQQVNTIHJlYWQoKSBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzIGVhY2ggdGltZSAK
K1BBU1MgZ2V0UmVhZGVyKCkgYWdhaW4gb24gdGhlIHN0cmVhbSBzaG91bGQgZmFpbCAKK1BBU1Mg
cmVsZWFzaW5nIHRoZSBsb2NrIHdpdGggcGVuZGluZyByZWFkIHJlcXVlc3RzIHNob3VsZCB0aHJv
dyBidXQgdGhlIHJlYWQgcmVxdWVzdHMgc2hvdWxkIHN0YXkgcGVuZGluZyAKK1BBU1MgcmVsZWFz
aW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBmdXJ0aGVyIHJlYWQoKSBjYWxscyB0byByZWplY3Qg
d2l0aCBhIFR5cGVFcnJvciAKK1BBU1MgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBj
bG9zZWQgY2FsbHMgdG8gcmVqZWN0IHdpdGggYSBUeXBlRXJyb3IgCitQQVNTIHJlbGVhc2luZyB0
aGUgbG9jayBzaG91bGQgY2F1c2UgbG9ja2VkIHRvIGJlY29tZSBmYWxzZSAKK1BBU1MgY2FuY2Vs
aW5nIHZpYSB0aGUgcmVhZGVyIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIHRvIGFjdCBjbG9zZWQg
CitQQVNTIGNhbmNlbGluZyB2aWEgdGhlIHN0cmVhbSBzaG91bGQgZmFpbCAKK1BBU1MgUnVubmlu
ZyB0ZW1wbGF0ZWRSU0Nsb3NlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbGwg
aW4gc3RhcnQpIAorUEFTUyBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmls
bGVkIHByb21pc2UgZWFjaCB0aW1lIAorUEFTUyBsb2NrZWQgc2hvdWxkIGJlIGZhbHNlIAorUEFT
UyBnZXRSZWFkZXIoKSBzaG91bGQgYmUgT0sgCitQQVNTIHNob3VsZCBiZSBhYmxlIHRvIGFjcXVp
cmUgbXVsdGlwbGUgcmVhZGVycyBpZiB0aGV5IGFyZSByZWxlYXNlZCBpbiBzdWNjZXNzaW9uIAor
UEFTUyBzaG91bGQgbm90IGJlIGFibGUgdG8gYWNxdWlyZSBhIHNlY29uZCByZWFkZXIgaWYgd2Ug
ZG9uJ3QgcmVsZWFzZSB0aGUgZmlyc3Qgb25lIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xv
c2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYmVmb3JlIGdldHRp
bmcgcmVhZGVyKSAKK1BBU1MgcmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5k
ZWZpbmVkLCBkb25lOiB0cnVlIH0gCitQQVNTIHJlYWQoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQg
ZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAorUEFTUyByZWFk
KCkgc2hvdWxkIHdvcmsgd2hlbiB1c2VkIHdpdGhpbiBhbm90aGVyIHJlYWQoKSBmdWxmaWxsIGNh
bGxiYWNrIAorUEFTUyBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQgCitQQVNT
IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hh
bmdlIGlkZW50aXR5IAorUEFTUyBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVs
ZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2Vk
UmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyBy
ZWFkZXIpIAorUEFTUyByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmlu
ZWQsIGRvbmU6IHRydWUgfSAKK1BBU1MgcmVhZCgpIG11bHRpcGxlIHRpbWVzIHNob3VsZCBmdWxm
aWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCitQQVNTIHJlYWQoKSBz
aG91bGQgd29yayB3aGVuIHVzZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2FsbGJh
Y2sgCitQQVNTIGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCAKK1BBU1MgcmVs
ZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2Ug
aWRlbnRpdHkgCitQQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxs
ZWQgcHJvbWlzZSBlYWNoIHRpbWUgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWQgd2l0
aCBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpIAorUEFTUyBjYW5jZWwoKSBzaG91
bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIAorUEFTUyBs
b2NrZWQgc2hvdWxkIGJlIGZhbHNlIAorUEFTUyBnZXRSZWFkZXIoKSBzaG91bGQgYmUgT0sgCitQ
QVNTIHNob3VsZCBiZSBhYmxlIHRvIGFjcXVpcmUgbXVsdGlwbGUgcmVhZGVycyBpZiB0aGV5IGFy
ZSByZWxlYXNlZCBpbiBzdWNjZXNzaW9uIAorUEFTUyBzaG91bGQgbm90IGJlIGFibGUgdG8gYWNx
dWlyZSBhIHNlY29uZCByZWFkZXIgaWYgd2UgZG9uJ3QgcmVsZWFzZSB0aGUgZmlyc3Qgb25lIAor
UEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0g
cmVhZGVyIChjbG9zZWQgdmlhIGNhbmNlbCBhZnRlciBnZXR0aW5nIHJlYWRlcikgCitQQVNTIHJl
YWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9
IAorUEFTUyByZWFkKCkgbXVsdGlwbGUgdGltZXMgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVl
OiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKK1BBU1MgcmVhZCgpIHNob3VsZCB3b3JrIHdoZW4g
dXNlZCB3aXRoaW4gYW5vdGhlciByZWFkKCkgZnVsZmlsbCBjYWxsYmFjayAKK1BBU1MgY2xvc2Vk
IHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIAorUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sg
c2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKK1BBU1Mg
Y2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2gg
dGltZSAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWQgd2l0aCBSZWFkYWJsZVN0cmVh
bSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCkgCitQQVNTIGdldFJlYWRlcigpIHNob3VsZCBy
ZXR1cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQgCitQQVNTIHJlYWQoKSB0d2ljZSBzaG91
bGQgZ2l2ZSB0aGUgZXJyb3IgZWFjaCB0aW1lIAorUEFTUyBsb2NrZWQgc2hvdWxkIGJlIGZhbHNl
IAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFN5bmNPbmx5IHdpdGggUmVhZGFibGVT
dHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpIAorUEFTUyBzaG91bGQgYmUgYWJsZSB0
byBvYnRhaW4gYSBzZWNvbmQgcmVhZGVyLCB3aXRoIHRoZSBjb3JyZWN0IGNsb3NlZCBwcm9taXNl
IAorUEFTUyBzaG91bGQgbm90IGJlIGFibGUgdG8gb2J0YWluIGFkZGl0aW9uYWwgcmVhZGVycyBp
ZiB3ZSBkb24ndCByZWxlYXNlIHRoZSBmaXJzdCBsb2NrIAorUEFTUyBjYW5jZWwoKSBzaG91bGQg
cmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUgCitQQVNTIHJlYWRl
ciBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNo
IHRpbWUgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkIHdpdGggUmVhZGFibGVTdHJl
YW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpIAor
UEFTUyBnZXRSZWFkZXIoKSBzaG91bGQgcmV0dXJuIGEgcmVhZGVyIHRoYXQgYWN0cyBlcnJvcmVk
IAorUEFTUyByZWFkKCkgdHdpY2Ugc2hvdWxkIGdpdmUgdGhlIGVycm9yIGVhY2ggdGltZSAKK1BB
U1MgbG9ja2VkIHNob3VsZCBiZSBmYWxzZSAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9y
ZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVq
ZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgcmVhZGVyIAorUEFTUyBjbG9zZWQgc2hvdWxkIHJlamVj
dCB3aXRoIHRoZSBlcnJvciAKK1BBU1MgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBj
bG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgCitQQVNTIHJlYWQoKSBzaG91bGQg
cmVqZWN0IHdpdGggdGhlIGVycm9yIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJl
YWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBiZWZvcmUgZ2V0dGluZyBy
ZWFkZXIpIAorUEFTUyBjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciAKK1BBU1Mg
cmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFu
Z2UgaWRlbnRpdHkgCitQQVNTIHJlYWQoKSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAor
UEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFt
IHJlYWRlciAoZXJyb3JlZCBhZnRlciBnZXR0aW5nIHJlYWRlcikgCitQQVNTIGNsb3NlZCBzaG91
bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAorUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxk
IGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKK1BBU1MgcmVhZCgp
IHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNU
d29DaHVua3NPcGVuUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1
ZWQsIHN0aWxsIG9wZW4pIHJlYWRlciAKK1BBU1MgY2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aG91
dCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1bmtzIChzZXF1ZW50aWFsKSAK
K1BBU1MgY2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aG91dCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxs
eSBnaXZlIGJvdGggY2h1bmtzIChuZXN0ZWQpIAorUEFTUyByZWFkKCkgc2hvdWxkIHJldHVybiBk
aXN0aW5jdCBwcm9taXNlcyBlYWNoIHRpbWUgCitQQVNTIGNhbmNlbCgpIGFmdGVyIGEgcmVhZCgp
IHNob3VsZCBzdGlsbCBnaXZlIHRoYXQgc2luZ2xlIHJlYWQgcmVzdWx0IAorUEFTUyBSdW5uaW5n
IHRlbXBsYXRlZFJTVHdvQ2h1bmtzQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKHR3
byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXIgCitQQVNTIHRoaXJkIHJlYWQo
KSwgd2l0aG91dCB3YWl0aW5nLCBzaG91bGQgZ2l2ZSB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6
IHRydWUgfSAoc2VxdWVudGlhbCkgCitQQVNTIHRoaXJkIHJlYWQoKSwgd2l0aG91dCB3YWl0aW5n
LCBzaG91bGQgZ2l2ZSB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAobmVzdGVkKSAK
K1BBU1MgZHJhaW5pbmcgdGhlIHN0cmVhbSB2aWEgcmVhZCgpIHNob3VsZCBjYXVzZSB0aGUgcmVh
ZGVyIGNsb3NlZCBwcm9taXNlIHRvIGZ1bGZpbGwsIGJ1dCBsb2NrZWQgc3RheXMgdHJ1ZSAKK1BB
U1MgcmVsZWFzaW5nIHRoZSBsb2NrIGFmdGVyIHRoZSBzdHJlYW0gaXMgY2xvc2VkIHNob3VsZCBj
YXVzZSBsb2NrZWQgdG8gYmVjb21lIGZhbHNlIAorUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hv
dWxkIGNhdXNlIGZ1cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVycm9y
IAorUEFTUyByZWFkZXIncyBjbG9zZWQgcHJvcGVydHkgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUg
cHJvbWlzZSAKK0ZBSUwgTG9hZCB0ZW1wbGF0ZWQuanMgd2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0
X3VucmVhY2hlZDogU2hhcmVkV29ya2VyIGlzIHVuYXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFi
bGUgY29kZQorRkFJTCBVbnRpdGxlZCB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVh
dGluZyAnbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9uJykKK1BBU1MgUnVu
bmluZyB0ZW1wbGF0ZWRSU0VtcHR5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KSAKK0ZBSUwg
aW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQgcHJvcGVydGllcyBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRW1w
dHlSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlciAKK0ZBSUwgaW5zdGFu
Y2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQgcHJvcGVydGllcyBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBsb2NrZWQgc2hvdWxkIGJlIHRydWUgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgcmVhZCgpIHNob3VsZCBuZXZlciBz
ZXR0bGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgdHdvIHJlYWQo
KXMgc2hvdWxkIGJvdGggbmV2ZXIgc2V0dGxlIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxl
U3RyZWFtCitGQUlMIHJlYWQoKSBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzIGVhY2gg
dGltZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBnZXRSZWFkZXIo
KSBhZ2FpbiBvbiB0aGUgc3RyZWFtIHNob3VsZCBmYWlsIENhbid0IGZpbmQgdmFyaWFibGU6IFJl
YWRhYmxlU3RyZWFtCitGQUlMIHJlbGVhc2luZyB0aGUgbG9jayB3aXRoIHBlbmRpbmcgcmVhZCBy
ZXF1ZXN0cyBzaG91bGQgdGhyb3cgYnV0IHRoZSByZWFkIHJlcXVlc3RzIHNob3VsZCBzdGF5IHBl
bmRpbmcgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgcmVsZWFzaW5n
IHRoZSBsb2NrIHNob3VsZCBjYXVzZSBmdXJ0aGVyIHJlYWQoKSBjYWxscyB0byByZWplY3Qgd2l0
aCBhIFR5cGVFcnJvciBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBy
ZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCBjYWxscyB0byByZWplY3Qgd2l0
aCBhIFR5cGVFcnJvciBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBy
ZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGxvY2tlZCB0byBiZWNvbWUgZmFsc2UgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgY2FuY2VsaW5nIHZpYSB0aGUg
cmVhZGVyIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIHRvIGFjdCBjbG9zZWQgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgY2FuY2VsaW5nIHZpYSB0aGUgc3RyZWFtIHNo
b3VsZCBmYWlsIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitQQVNTIFJ1bm5p
bmcgdGVtcGxhdGVkUlNDbG9zZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxs
IGluIHN0YXJ0KSAKK0ZBSUwgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZp
bGxlZCBwcm9taXNlIGVhY2ggdGltZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVh
bQorRkFJTCBsb2NrZWQgc2hvdWxkIGJlIGZhbHNlIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRh
YmxlU3RyZWFtCitGQUlMIGdldFJlYWRlcigpIHNob3VsZCBiZSBPSyBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBzaG91bGQgYmUgYWJsZSB0byBhY3F1aXJlIG11bHRp
cGxlIHJlYWRlcnMgaWYgdGhleSBhcmUgcmVsZWFzZWQgaW4gc3VjY2Vzc2lvbiBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBzaG91bGQgbm90IGJlIGFibGUgdG8gYWNx
dWlyZSBhIHNlY29uZCByZWFkZXIgaWYgd2UgZG9uJ3QgcmVsZWFzZSB0aGUgZmlyc3Qgb25lIENh
bid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVk
UlNDbG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUg
Z2V0dGluZyByZWFkZXIpIAorRkFJTCByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVl
OiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0
cmVhbQorRkFJTCByZWFkKCkgbXVsdGlwbGUgdGltZXMgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZh
bHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJs
ZVN0cmVhbQorRkFJTCByZWFkKCkgc2hvdWxkIHdvcmsgd2hlbiB1c2VkIHdpdGhpbiBhbm90aGVy
IHJlYWQoKSBmdWxmaWxsIGNhbGxiYWNrIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3Ry
ZWFtCitGQUlMIGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxk
IGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlz
dGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIENhbid0IGZpbmQgdmFyaWFibGU6IFJl
YWRhYmxlU3RyZWFtCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIgd2l0aCBS
ZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlcikgCitGQUlM
IHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1
ZSB9IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIHJlYWQoKSBtdWx0
aXBsZSB0aW1lcyBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTog
dHJ1ZSB9IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIHJlYWQoKSBz
aG91bGQgd29yayB3aGVuIHVzZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2FsbGJh
Y2sgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgY2xvc2VkIHNob3Vs
ZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3Ry
ZWFtCitGQUlMIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVj
dCBhbmQgY2hhbmdlIGlkZW50aXR5IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFt
CitGQUlMIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlz
ZSBlYWNoIHRpbWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK1BBU1MgUnVu
bmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNh
bmNlbCkgCitGQUlMIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQg
cHJvbWlzZSBlYWNoIHRpbWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZB
SUwgbG9ja2VkIHNob3VsZCBiZSBmYWxzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0
cmVhbQorRkFJTCBnZXRSZWFkZXIoKSBzaG91bGQgYmUgT0sgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
UmVhZGFibGVTdHJlYW0KK0ZBSUwgc2hvdWxkIGJlIGFibGUgdG8gYWNxdWlyZSBtdWx0aXBsZSBy
ZWFkZXJzIGlmIHRoZXkgYXJlIHJlbGVhc2VkIGluIHN1Y2Nlc3Npb24gQ2FuJ3QgZmluZCB2YXJp
YWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGFjcXVpcmUg
YSBzZWNvbmQgcmVhZGVyIGlmIHdlIGRvbid0IHJlbGVhc2UgdGhlIGZpcnN0IG9uZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xv
c2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgdmlhIGNhbmNlbCBh
ZnRlciBnZXR0aW5nIHJlYWRlcikgCitGQUlMIHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsg
dmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRh
YmxlU3RyZWFtCitGQUlMIHJlYWQoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQgZnVsZmlsbCB3aXRo
IHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IENhbid0IGZpbmQgdmFyaWFibGU6IFJl
YWRhYmxlU3RyZWFtCitGQUlMIHJlYWQoKSBzaG91bGQgd29yayB3aGVuIHVzZWQgd2l0aGluIGFu
b3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2FsbGJhY2sgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFi
bGVTdHJlYW0KK0ZBSUwgY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIENhbid0
IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIHJlbGVhc2luZyB0aGUgbG9jayBz
aG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IENhbid0IGZp
bmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIGNhbmNlbCgpIHNob3VsZCByZXR1cm4g
YSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogUmVhZGFibGVTdHJlYW0KK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWQgd2l0aCBS
ZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCkgCitGQUlMIGdldFJlYWRl
cigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgcmVhZCgpIHR3aWNlIHNob3VsZCBnaXZlIHRo
ZSBlcnJvciBlYWNoIHRpbWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZB
SUwgbG9ja2VkIHNob3VsZCBiZSBmYWxzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0
cmVhbQorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFN5bmNPbmx5IHdpdGggUmVhZGFi
bGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpIAorRkFJTCBzaG91bGQgYmUgYWJs
ZSB0byBvYnRhaW4gYSBzZWNvbmQgcmVhZGVyLCB3aXRoIHRoZSBjb3JyZWN0IGNsb3NlZCBwcm9t
aXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIHNob3VsZCBub3Qg
YmUgYWJsZSB0byBvYnRhaW4gYWRkaXRpb25hbCByZWFkZXJzIGlmIHdlIGRvbid0IHJlbGVhc2Ug
dGhlIGZpcnN0IGxvY2sgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwg
Y2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFjaCB0
aW1lIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIHJlYWRlciBjYW5j
ZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK1BBU1MgUnVubmluZyB0ZW1wbGF0
ZWRSU0Vycm9yZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEg
cmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgCitGQUlMIGdldFJlYWRlcigpIHNob3VsZCByZXR1
cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFi
bGVTdHJlYW0KK0ZBSUwgcmVhZCgpIHR3aWNlIHNob3VsZCBnaXZlIHRoZSBlcnJvciBlYWNoIHRp
bWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgbG9ja2VkIHNob3Vs
ZCBiZSBmYWxzZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorUEFTUyBSdW5u
aW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVk
IHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSByZWFkZXIgCitGQUlM
IGNsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIENhbid0IGZpbmQgdmFyaWFibGU6
IFJlYWRhYmxlU3RyZWFtCitGQUlMIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xv
c2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IENhbid0IGZpbmQgdmFyaWFibGU6IFJl
YWRhYmxlU3RyZWFtCitGQUlMIHJlYWQoKSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIENh
bid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVk
UlNFcnJvcmVkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGJlZm9y
ZSBnZXR0aW5nIHJlYWRlcikgCitGQUlMIGNsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVy
cm9yIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIHJlbGVhc2luZyB0
aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5
IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIHJlYWQoKSBzaG91bGQg
cmVqZWN0IHdpdGggdGhlIGVycm9yIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFt
CitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJl
YW0gcmVhZGVyIChlcnJvcmVkIGFmdGVyIGdldHRpbmcgcmVhZGVyKSAKK0ZBSUwgY2xvc2VkIHNo
b3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVT
dHJlYW0KK0ZBSUwgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVq
ZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJl
YW0KK0ZBSUwgcmVhZCgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU1R3b0NodW5r
c09wZW5SZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgc3Rp
bGwgb3BlbikgcmVhZGVyIAorRkFJTCBjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRp
bmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MgKHNlcXVlbnRpYWwpIENhbid0IGZp
bmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdp
dGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcyAobmVzdGVkKSBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCByZWFkKCkgc2hvdWxkIHJl
dHVybiBkaXN0aW5jdCBwcm9taXNlcyBlYWNoIHRpbWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVh
ZGFibGVTdHJlYW0KK0ZBSUwgY2FuY2VsKCkgYWZ0ZXIgYSByZWFkKCkgc2hvdWxkIHN0aWxsIGdp
dmUgdGhhdCBzaW5nbGUgcmVhZCByZXN1bHQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVT
dHJlYW0KK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU1R3b0NodW5rc0Nsb3NlZFJlYWRlciB3aXRo
IFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVy
IAorRkFJTCB0aGlyZCByZWFkKCksIHdpdGhvdXQgd2FpdGluZywgc2hvdWxkIGdpdmUgeyB2YWx1
ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gKHNlcXVlbnRpYWwpIENhbid0IGZpbmQgdmFyaWFi
bGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIHRoaXJkIHJlYWQoKSwgd2l0aG91dCB3YWl0aW5nLCBz
aG91bGQgZ2l2ZSB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAobmVzdGVkKSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBkcmFpbmluZyB0aGUgc3RyZWFt
IHZpYSByZWFkKCkgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgY2xvc2VkIHByb21pc2UgdG8gZnVs
ZmlsbCwgYnV0IGxvY2tlZCBzdGF5cyB0cnVlIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxl
U3RyZWFtCitGQUlMIHJlbGVhc2luZyB0aGUgbG9jayBhZnRlciB0aGUgc3RyZWFtIGlzIGNsb3Nl
ZCBzaG91bGQgY2F1c2UgbG9ja2VkIHRvIGJlY29tZSBmYWxzZSBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBSZWFkYWJsZVN0cmVhbQorRkFJTCByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGZ1
cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yIENhbid0IGZpbmQg
dmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIHJlYWRlcidzIGNsb3NlZCBwcm9wZXJ0eSBh
bHdheXMgcmV0dXJucyB0aGUgc2FtZSBwcm9taXNlIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRh
YmxlU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkv
cmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NWM2YTZhY2FlZmI1
ZGFjNThiOTVmMjI4MTEwMzJlOWFiYTYyYWZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1z
dHJlYW1zL3RlbXBsYXRlZC5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13
b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvcnMtdGVzdC10ZW1wbGF0ZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InRlbXBsYXRlZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOword29ya2Vy
X3Rlc3QoJ3RlbXBsYXRlZC5qcycpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0
cmVhbXMvdGVtcGxhdGVkLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZGIwNDI5OTk0ZDQ1M2RiZmNkMmU4MzQ3ZTZmYTdlZmRmMjBiYzRlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5qcwpAQCAtMCwwICsxLDE0OCBAQAor
J3VzZSBzdHJpY3QnOworCitpZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7CisgIHNlbGYuaW1wb3J0
U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOworICBzZWxmLmltcG9ydFNjcmlw
dHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzJyk7CisgIHNlbGYuaW1wb3J0U2NyaXB0cygn
Li4vcmVzb3VyY2VzL3JzLXRlc3QtdGVtcGxhdGVzLmpzJyk7Cit9CisKKy8vIFJ1biB0aGUgcmVh
ZGFibGUgc3RyZWFtIHRlc3QgdGVtcGxhdGVzIGFnYWluc3QgcmVhZGFibGUgc3RyZWFtcyBjcmVh
dGVkIGRpcmVjdGx5IHVzaW5nIHRoZSBjb25zdHJ1Y3RvcgorCitjb25zdCB0aGVFcnJvciA9IHsg
bmFtZTogJ2JvbyEnIH07Citjb25zdCBjaHVua3MgPSBbJ2EnLCAnYiddOworCit0ZW1wbGF0ZWRS
U0VtcHR5KCdSZWFkYWJsZVN0cmVhbSAoZW1wdHkpJywgKCkgPT4geworICByZXR1cm4gbmV3IFJl
YWRhYmxlU3RyZWFtKCk7Cit9KTsKKwordGVtcGxhdGVkUlNFbXB0eVJlYWRlcignUmVhZGFibGVT
dHJlYW0gKGVtcHR5KSByZWFkZXInLCAoKSA9PiB7CisgIHJldHVybiBzdHJlYW1BbmREZWZhdWx0
UmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSgpKTsKK30pOworCit0ZW1wbGF0ZWRSU0Nsb3NlZCgn
UmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFydCknLCAoKSA9PiB7CisgIHJl
dHVybiBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuY2xvc2Uo
KTsKKyAgICB9CisgIH0pOworfSk7CisKK3RlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyKCdSZWFkYWJs
ZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpJywgKCkgPT4gewor
ICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworICBj
b250cm9sbGVyLmNsb3NlKCk7CisgIGNvbnN0IHJlc3VsdCA9IHN0cmVhbUFuZERlZmF1bHRSZWFk
ZXIoc3RyZWFtKTsKKyAgcmV0dXJuIHJlc3VsdDsKK30pOworCit0ZW1wbGF0ZWRSU0Nsb3NlZFJl
YWRlcignUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIp
JywgKCkgPT4geworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9
CisgIH0pOworICBjb25zdCByZXN1bHQgPSBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKHN0cmVhbSk7
CisgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgcmV0dXJuIHJlc3VsdDsKK30pOworCit0ZW1wbGF0
ZWRSU0Nsb3NlZCgnUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKScsICgpID0+IHsK
KyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIHN0cmVhbS5jYW5jZWwo
KTsKKyAgcmV0dXJuIHN0cmVhbTsKK30pOworCit0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlcignUmVh
ZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgdmlhIGNhbmNlbCBhZnRlciBnZXR0aW5nIHJlYWRl
ciknLCAoKSA9PiB7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBj
b25zdCByZXN1bHQgPSBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKHN0cmVhbSk7CisgIHJlc3VsdC5y
ZWFkZXIuY2FuY2VsKCk7CisgIHJldHVybiByZXN1bHQ7Cit9KTsKKwordGVtcGxhdGVkUlNFcnJv
cmVkKCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCknLCAoKSA9PiB7
CisgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMu
ZXJyb3IodGhlRXJyb3IpOworICAgIH0KKyAgfSk7Cit9LCB0aGVFcnJvcik7CisKK3RlbXBsYXRl
ZFJTRXJyb3JlZFN5bmNPbmx5KCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBz
dGFydCknLCAoKSA9PiB7CisgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0
KGMpIHsKKyAgICAgIGMuZXJyb3IodGhlRXJyb3IpOworICAgIH0KKyAgfSk7Cit9LCB0aGVFcnJv
cik7CisKK3RlbXBsYXRlZFJTRXJyb3JlZCgnUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJl
dHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpJywgKCkgPT4geworICByZXR1cm4g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAgIHJldHVybiBQcm9taXNl
LnJlamVjdCh0aGVFcnJvcik7CisgICAgfQorICB9KTsKK30sIHRoZUVycm9yKTsKKwordGVtcGxh
dGVkUlNFcnJvcmVkUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5n
IGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgcmVhZGVyJywgKCkgPT4geworICByZXR1cm4g
c3RyZWFtQW5kRGVmYXVsdFJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KCkg
eworICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHRoZUVycm9yKTsKKyAgICB9CisgIH0pKTsK
K30sIHRoZUVycm9yKTsKKwordGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyKCdSZWFkYWJsZVN0cmVh
bSByZWFkZXIgKGVycm9yZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKScsICgpID0+IHsKKyAgbGV0
IGNvbnRyb2xsZXI7CisgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAg
c3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKyAgY29udHJv
bGxlci5lcnJvcih0aGVFcnJvcik7CisgIHJldHVybiBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKHN0
cmVhbSk7Cit9LCB0aGVFcnJvcik7CisKK3RlbXBsYXRlZFJTRXJyb3JlZFJlYWRlcignUmVhZGFi
bGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGFmdGVyIGdldHRpbmcgcmVhZGVyKScsICgpID0+IHsK
KyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJlc3VsdCA9IHN0cmVhbUFuZERlZmF1bHRSZWFk
ZXIobmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVy
ID0gYzsKKyAgICB9CisgIH0pKTsKKyAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7CisgIHJl
dHVybiByZXN1bHQ7Cit9LCB0aGVFcnJvcik7CisKK3RlbXBsYXRlZFJTVHdvQ2h1bmtzT3BlblJl
YWRlcignUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHN0aWxsIG9wZW4pIHJl
YWRlcicsICgpID0+IHsKKyAgcmV0dXJuIHN0cmVhbUFuZERlZmF1bHRSZWFkZXIobmV3IFJlYWRh
YmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUoY2h1bmtzWzBdKTsK
KyAgICAgIGMuZW5xdWV1ZShjaHVua3NbMV0pOworICAgIH0KKyAgfSkpOworfSwgY2h1bmtzKTsK
KwordGVtcGxhdGVkUlNUd29DaHVua3NDbG9zZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtICh0d28g
Y2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyJywgKCkgPT4geworICBsZXQgZG9D
bG9zZTsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChj
KSB7CisgICAgICBjLmVucXVldWUoY2h1bmtzWzBdKTsKKyAgICAgIGMuZW5xdWV1ZShjaHVua3Nb
MV0pOworICAgICAgZG9DbG9zZSA9IGMuY2xvc2UuYmluZChjKTsKKyAgICB9CisgIH0pOworICBj
b25zdCByZXN1bHQgPSBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKHN0cmVhbSk7CisgIGRvQ2xvc2Uo
KTsKKyAgcmV0dXJuIHJlc3VsdDsKK30sIGNodW5rcyk7CisKK2Z1bmN0aW9uIHN0cmVhbUFuZERl
ZmF1bHRSZWFkZXIoc3RyZWFtKSB7CisgIHJldHVybiB7IHN0cmVhbSwgcmVhZGVyOiBzdHJlYW0u
Z2V0UmVhZGVyKCkgfTsKK30KKworZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZXNvdXJjZXMvcnMtdGVz
dC10ZW1wbGF0ZXMuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMtYXBpL3Jlc291cmNlcy9ycy10ZXN0LXRlbXBsYXRlcy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NTJiNTY1ZDkwNDJlNzE3ODBkMTY0Y2EyMTZhODc0ZmMwOTliYzhkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
LWFwaS9yZXNvdXJjZXMvcnMtdGVzdC10ZW1wbGF0ZXMuanMKQEAgLTAsMCArMSw2MjQgQEAKKyd1
c2Ugc3RyaWN0JzsKKworLy8gVGhlc2UgdGVzdHMgY2FuIGJlIHJ1biBhZ2FpbnN0IGFueSByZWFk
YWJsZSBzdHJlYW0gcHJvZHVjZWQgYnkgdGhlIHdlYiBwbGF0Zm9ybSB0aGF0IG1lZXRzIHRoZSBn
aXZlbiBkZXNjcmlwdGlvbnMuCisvLyBGb3IgcmVhZGFibGUgc3RyZWFtIHRlc3RzLCB0aGUgZmFj
dG9yeSBzaG91bGQgcmV0dXJuIHRoZSBzdHJlYW0uIEZvciByZWFkZXIgdGVzdHMsIHRoZSBmYWN0
b3J5IHNob3VsZCByZXR1cm4gYQorLy8geyBzdHJlYW0sIHJlYWRlciB9IG9iamVjdC4gKFlvdSBj
YW4gdXNlIHRoaXMgdG8gdmFyeSB0aGUgdGltZSBhdCB3aGljaCB5b3UgYWNxdWlyZSBhIHJlYWRl
ci4pCisKK3NlbGYudGVtcGxhdGVkUlNFbXB0eSA9IChsYWJlbCwgZmFjdG9yeSkgPT4geworICB0
ZXN0KCgpID0+IHt9LCAnUnVubmluZyB0ZW1wbGF0ZWRSU0VtcHR5IHdpdGggJyArIGxhYmVsKTsK
KworICB0ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHJzID0gZmFjdG9yeSgpOworCisgICAgYXNz
ZXJ0X2VxdWFscyh0eXBlb2YgcnMubG9ja2VkLCAnYm9vbGVhbicsICdoYXMgYSBib29sZWFuIGxv
Y2tlZCBnZXR0ZXInKTsKKyAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBycy5jYW5jZWwsICdmdW5j
dGlvbicsICdoYXMgYSBjYW5jZWwgbWV0aG9kJyk7CisgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Yg
cnMuZ2V0UmVhZGVyLCAnZnVuY3Rpb24nLCAnaGFzIGEgZ2V0UmVhZGVyIG1ldGhvZCcpOworICAg
IGFzc2VydF9lcXVhbHModHlwZW9mIHJzLnBpcGVUaHJvdWdoLCAnZnVuY3Rpb24nLCAnaGFzIGEg
cGlwZVRocm91Z2ggbWV0aG9kJyk7CisgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnMucGlwZVRv
LCAnZnVuY3Rpb24nLCAnaGFzIGEgcGlwZVRvIG1ldGhvZCcpOworICAgIGFzc2VydF9lcXVhbHMo
dHlwZW9mIHJzLnRlZSwgJ2Z1bmN0aW9uJywgJ2hhcyBhIHRlZSBtZXRob2QnKTsKKworICB9LCAn
aW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQgcHJvcGVydGllcycpOworfTsK
Kworc2VsZi50ZW1wbGF0ZWRSU0Nsb3NlZCA9IChsYWJlbCwgZmFjdG9yeSkgPT4geworICB0ZXN0
KCgpID0+IHt9LCAnUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZCB3aXRoICcgKyBsYWJlbCk7CisK
KyAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHJzID0gZmFjdG9yeSgpOworICAg
IGNvbnN0IGNhbmNlbFByb21pc2UxID0gcnMuY2FuY2VsKCk7CisgICAgY29uc3QgY2FuY2VsUHJv
bWlzZTIgPSBycy5jYW5jZWwoKTsKKworICAgIGFzc2VydF9ub3RfZXF1YWxzKGNhbmNlbFByb21p
c2UxLCBjYW5jZWxQcm9taXNlMiwgJ2NhbmNlbCgpIGNhbGxzIHNob3VsZCByZXR1cm4gZGlzdGlu
Y3QgcHJvbWlzZXMnKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBjYW5jZWxQ
cm9taXNlMS50aGVuKHYgPT4gYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdmaXJzdCBjYW5j
ZWwoKSBjYWxsIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJykpLAorICAgICAgY2FuY2Vs
UHJvbWlzZTIudGhlbih2ID0+IGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAnc2Vjb25kIGNh
bmNlbCgpIGNhbGwgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKSkKKyAgICBdKTsKKwor
ICB9LCAnY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNl
IGVhY2ggdGltZScpOworCisgIHRlc3QoKCkgPT4geworCisgICAgY29uc3QgcnMgPSBmYWN0b3J5
KCk7CisgICAgYXNzZXJ0X2ZhbHNlKHJzLmxvY2tlZCwgJ2xvY2tlZCBnZXR0ZXIgc2hvdWxkIHJl
dHVybiBmYWxzZScpOworCisgIH0sICdsb2NrZWQgc2hvdWxkIGJlIGZhbHNlJyk7CisKKyAgdGVz
dCgoKSA9PiB7CisKKyAgICBjb25zdCBycyA9IGZhY3RvcnkoKTsKKyAgICBycy5nZXRSZWFkZXIo
KTsgLy8gZ2V0UmVhZGVyKCkgc2hvdWxkIG5vdCB0aHJvdy4KKworICB9LCAnZ2V0UmVhZGVyKCkg
c2hvdWxkIGJlIE9LJyk7CisKKyAgdGVzdCgoKSA9PiB7CisKKyAgICBjb25zdCBycyA9IGZhY3Rv
cnkoKTsKKworICAgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworICAgIHJlYWRlci5y
ZWxlYXNlTG9jaygpOworCisgICAgY29uc3QgcmVhZGVyMiA9IHJzLmdldFJlYWRlcigpOyAvLyBH
ZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBzaG91bGQgbm90IHRocm93LgorICAgIHJlYWRlcjIucmVs
ZWFzZUxvY2soKTsKKworICAgIHJzLmdldFJlYWRlcigpOyAvLyBHZXR0aW5nIGEgdGhpcmQgcmVh
ZGVyIHNob3VsZCBub3QgdGhyb3cuCisKKyAgfSwgJ3Nob3VsZCBiZSBhYmxlIHRvIGFjcXVpcmUg
bXVsdGlwbGUgcmVhZGVycyBpZiB0aGV5IGFyZSByZWxlYXNlZCBpbiBzdWNjZXNzaW9uJyk7CisK
KyAgdGVzdCgoKSA9PiB7CisKKyAgICBjb25zdCBycyA9IGZhY3RvcnkoKTsKKworICAgIHJzLmdl
dFJlYWRlcigpOworCisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJz
LmdldFJlYWRlcigpLCAnZ2V0dGluZyBhIHNlY29uZCByZWFkZXIgc2hvdWxkIHRocm93Jyk7Cisg
ICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJzLmdldFJlYWRlcigpLCAn
Z2V0dGluZyBhIHRoaXJkIHJlYWRlciBzaG91bGQgdGhyb3cnKTsKKworICB9LCAnc2hvdWxkIG5v
dCBiZSBhYmxlIHRvIGFjcXVpcmUgYSBzZWNvbmQgcmVhZGVyIGlmIHdlIGRvblwndCByZWxlYXNl
IHRoZSBmaXJzdCBvbmUnKTsKK307CisKK3NlbGYudGVtcGxhdGVkUlNFcnJvcmVkID0gKGxhYmVs
LCBmYWN0b3J5LCBlcnJvcikgPT4geworICB0ZXN0KCgpID0+IHt9LCAnUnVubmluZyB0ZW1wbGF0
ZWRSU0Vycm9yZWQgd2l0aCAnICsgbGFiZWwpOworCisgIHByb21pc2VfdGVzdCh0ID0+IHsKKwor
ICAgIGNvbnN0IHJzID0gZmFjdG9yeSgpOworICAgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRl
cigpOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0cyh0
LCBlcnJvciwgcmVhZGVyLmNsb3NlZCksCisgICAgICBwcm9taXNlX3JlamVjdHModCwgZXJyb3Is
IHJlYWRlci5yZWFkKCkpCisgICAgXSk7CisKKyAgfSwgJ2dldFJlYWRlcigpIHNob3VsZCByZXR1
cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQnKTsKKworICBwcm9taXNlX3Rlc3QodCA9PiB7
CisKKyAgICBjb25zdCBycyA9IGZhY3RvcnkoKTsKKyAgICBjb25zdCByZWFkZXIgPSBycy5nZXRS
ZWFkZXIoKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBwcm9taXNlX3JlamVj
dHModCwgZXJyb3IsIHJlYWRlci5yZWFkKCkpLAorICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIGVy
cm9yLCByZWFkZXIucmVhZCgpKSwKKyAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvciwgcmVh
ZGVyLmNsb3NlZCkKKyAgICBdKTsKKworICB9LCAncmVhZCgpIHR3aWNlIHNob3VsZCBnaXZlIHRo
ZSBlcnJvciBlYWNoIHRpbWUnKTsKKworICB0ZXN0KCgpID0+IHsKKyAgICBjb25zdCBycyA9IGZh
Y3RvcnkoKTsKKworICAgIGFzc2VydF9mYWxzZShycy5sb2NrZWQsICdsb2NrZWQgZ2V0dGVyIHNo
b3VsZCByZXR1cm4gZmFsc2UnKTsKKyAgfSwgJ2xvY2tlZCBzaG91bGQgYmUgZmFsc2UnKTsKK307
CisKK3NlbGYudGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkgPSAobGFiZWwsIGZhY3RvcnksIGVy
cm9yKSA9PiB7CisgIHRlc3QoKCkgPT4ge30sICdSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFN5
bmNPbmx5IHdpdGggJyArIGxhYmVsKTsKKworICBwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgICBj
b25zdCBycyA9IGZhY3RvcnkoKTsKKyAgICBycy5nZXRSZWFkZXIoKS5yZWxlYXNlTG9jaygpOwor
ICAgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOyAvLyBDYWxsaW5nIGdldFJlYWRlcigp
IHR3aWNlIGRvZXMgbm90IHRocm93ICh0aGUgc3RyZWFtIGlzIG5vdCBsb2NrZWQpLgorCisgICAg
cmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvciwgcmVhZGVyLmNsb3NlZCk7CisKKyAgfSwg
J3Nob3VsZCBiZSBhYmxlIHRvIG9idGFpbiBhIHNlY29uZCByZWFkZXIsIHdpdGggdGhlIGNvcnJl
Y3QgY2xvc2VkIHByb21pc2UnKTsKKworICB0ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHJzID0g
ZmFjdG9yeSgpOworICAgIHJzLmdldFJlYWRlcigpOworCisgICAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yKCksICgpID0+IHJzLmdldFJlYWRlcigpLCAnZ2V0dGluZyBhIHNlY29uZCByZWFk
ZXIgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlw
ZUVycm9yKCksICgpID0+IHJzLmdldFJlYWRlcigpLCAnZ2V0dGluZyBhIHRoaXJkIHJlYWRlciBz
aG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKKworICB9LCAnc2hvdWxkIG5vdCBiZSBhYmxlIHRv
IG9idGFpbiBhZGRpdGlvbmFsIHJlYWRlcnMgaWYgd2UgZG9uXCd0IHJlbGVhc2UgdGhlIGZpcnN0
IGxvY2snKTsKKworICBwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgICBjb25zdCBycyA9IGZhY3Rv
cnkoKTsKKyAgICBjb25zdCBjYW5jZWxQcm9taXNlMSA9IHJzLmNhbmNlbCgpOworICAgIGNvbnN0
IGNhbmNlbFByb21pc2UyID0gcnMuY2FuY2VsKCk7CisKKyAgICBhc3NlcnRfbm90X2VxdWFscyhj
YW5jZWxQcm9taXNlMSwgY2FuY2VsUHJvbWlzZTIsICdjYW5jZWwoKSBjYWxscyBzaG91bGQgcmV0
dXJuIGRpc3RpbmN0IHByb21pc2VzJyk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAg
ICAgcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yLCBjYW5jZWxQcm9taXNlMSksCisgICAgICBwcm9t
aXNlX3JlamVjdHModCwgZXJyb3IsIGNhbmNlbFByb21pc2UyKQorICAgIF0pOworCisgIH0sICdj
YW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRp
bWUnKTsKKworICBwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgICBjb25zdCBycyA9IGZhY3Rvcnko
KTsKKyAgICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKyAgICBjb25zdCBjYW5jZWxQ
cm9taXNlMSA9IHJlYWRlci5jYW5jZWwoKTsKKyAgICBjb25zdCBjYW5jZWxQcm9taXNlMiA9IHJl
YWRlci5jYW5jZWwoKTsKKworICAgIGFzc2VydF9ub3RfZXF1YWxzKGNhbmNlbFByb21pc2UxLCBj
YW5jZWxQcm9taXNlMiwgJ2NhbmNlbCgpIGNhbGxzIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJv
bWlzZXMnKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBwcm9taXNlX3JlamVj
dHModCwgZXJyb3IsIGNhbmNlbFByb21pc2UxKSwKKyAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBl
cnJvciwgY2FuY2VsUHJvbWlzZTIpCisgICAgXSk7CisKKyAgfSwgJ3JlYWRlciBjYW5jZWwoKSBz
aG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUnKTsKK307
CisKK3NlbGYudGVtcGxhdGVkUlNFbXB0eVJlYWRlciA9IChsYWJlbCwgZmFjdG9yeSkgPT4gewor
ICB0ZXN0KCgpID0+IHt9LCAnUnVubmluZyB0ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyIHdpdGggJyAr
IGxhYmVsKTsKKworICB0ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHJlYWRlciA9IGZhY3Rvcnko
KS5yZWFkZXI7CisKKyAgICBhc3NlcnRfdHJ1ZSgnY2xvc2VkJyBpbiByZWFkZXIsICdoYXMgYSBj
bG9zZWQgcHJvcGVydHknKTsKKyAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiByZWFkZXIuY2xvc2Vk
LnRoZW4sICdmdW5jdGlvbicsICdjbG9zZWQgcHJvcGVydHkgaXMgdGhlbmFibGUnKTsKKworICAg
IGFzc2VydF9lcXVhbHModHlwZW9mIHJlYWRlci5jYW5jZWwsICdmdW5jdGlvbicsICdoYXMgYSBj
YW5jZWwgbWV0aG9kJyk7CisgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcmVhZGVyLnJlYWQsICdm
dW5jdGlvbicsICdoYXMgYSByZWFkIG1ldGhvZCcpOworICAgIGFzc2VydF9lcXVhbHModHlwZW9m
IHJlYWRlci5yZWxlYXNlTG9jaywgJ2Z1bmN0aW9uJywgJ2hhcyBhIHJlbGVhc2VMb2NrIG1ldGhv
ZCcpOworCisgIH0sICdpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9w
ZXJ0aWVzJyk7CisKKyAgdGVzdCgoKSA9PiB7CisKKyAgICBjb25zdCBzdHJlYW0gPSBmYWN0b3J5
KCkuc3RyZWFtOworCisgICAgYXNzZXJ0X3RydWUoc3RyZWFtLmxvY2tlZCwgJ2xvY2tlZCBnZXR0
ZXIgc2hvdWxkIHJldHVybiB0cnVlJyk7CisKKyAgfSwgJ2xvY2tlZCBzaG91bGQgYmUgdHJ1ZScp
OworCisgIHByb21pc2VfdGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHJlYWRlciA9IGZhY3Rvcnko
KS5yZWFkZXI7CisKKyAgICByZWFkZXIucmVhZCgpLnRoZW4oCisgICAgICB0LnVucmVhY2hlZF9m
dW5jKCdyZWFkKCkgc2hvdWxkIG5vdCBmdWxmaWxsJyksCisgICAgICB0LnVucmVhY2hlZF9mdW5j
KCdyZWFkKCkgc2hvdWxkIG5vdCByZWplY3QnKQorICAgICk7CisKKyAgICByZXR1cm4gZGVsYXko
NTAwKTsKKworICB9LCAncmVhZCgpIHNob3VsZCBuZXZlciBzZXR0bGUnKTsKKworICBwcm9taXNl
X3Rlc3QodCA9PiB7CisKKyAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOworCisg
ICAgcmVhZGVyLnJlYWQoKS50aGVuKAorICAgICAgdC51bnJlYWNoZWRfZnVuYygncmVhZCgpIHNo
b3VsZCBub3QgZnVsZmlsbCcpLAorICAgICAgdC51bnJlYWNoZWRfZnVuYygncmVhZCgpIHNob3Vs
ZCBub3QgcmVqZWN0JykKKyAgICApOworCisgICAgcmVhZGVyLnJlYWQoKS50aGVuKAorICAgICAg
dC51bnJlYWNoZWRfZnVuYygncmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpLAorICAgICAgdC51
bnJlYWNoZWRfZnVuYygncmVhZCgpIHNob3VsZCBub3QgcmVqZWN0JykKKyAgICApOworCisgICAg
cmV0dXJuIGRlbGF5KDUwMCk7CisKKyAgfSwgJ3R3byByZWFkKClzIHNob3VsZCBib3RoIG5ldmVy
IHNldHRsZScpOworCisgIHRlc3QoKCkgPT4geworCisgICAgY29uc3QgcmVhZGVyID0gZmFjdG9y
eSgpLnJlYWRlcjsKKyAgICBhc3NlcnRfbm90X2VxdWFscyhyZWFkZXIucmVhZCgpLCByZWFkZXIu
cmVhZCgpLCAndGhlIHByb21pc2VzIHJldHVybmVkIHNob3VsZCBiZSBkaXN0aW5jdCcpOworCisg
IH0sICdyZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcyBlYWNoIHRpbWUnKTsK
KworICB0ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHN0cmVhbSA9IGZhY3RvcnkoKS5zdHJlYW07
CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHN0cmVhbS5nZXRSZWFk
ZXIoKSwgJ3N0cmVhbS5nZXRSZWFkZXIoKSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKKwor
ICB9LCAnZ2V0UmVhZGVyKCkgYWdhaW4gb24gdGhlIHN0cmVhbSBzaG91bGQgZmFpbCcpOworCisg
IHByb21pc2VfdGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHN0cmVhbUFuZFJlYWRlciA9IGZhY3Rv
cnkoKTsKKyAgICBjb25zdCBzdHJlYW0gPSBzdHJlYW1BbmRSZWFkZXIuc3RyZWFtOworICAgIGNv
bnN0IHJlYWRlciA9IHN0cmVhbUFuZFJlYWRlci5yZWFkZXI7CisKKyAgICByZWFkZXIucmVhZCgp
LnRoZW4oCisgICAgICB0LnVucmVhY2hlZF9mdW5jKCdmaXJzdCByZWFkKCkgc2hvdWxkIG5vdCBm
dWxmaWxsJyksCisgICAgICB0LnVucmVhY2hlZF9mdW5jKCdmaXJzdCByZWFkKCkgc2hvdWxkIG5v
dCByZWplY3QnKQorICAgICk7CisKKyAgICByZWFkZXIucmVhZCgpLnRoZW4oCisgICAgICB0LnVu
cmVhY2hlZF9mdW5jKCdzZWNvbmQgcmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpLAorICAgICAg
dC51bnJlYWNoZWRfZnVuYygnc2Vjb25kIHJlYWQoKSBzaG91bGQgbm90IHJlamVjdCcpCisgICAg
KTsKKworICAgIHJlYWRlci5jbG9zZWQudGhlbigKKyAgICAgIHQudW5yZWFjaGVkX2Z1bmMoJ2Ns
b3NlZCBzaG91bGQgbm90IGZ1bGZpbGwnKSwKKyAgICAgIHQudW5yZWFjaGVkX2Z1bmMoJ2Nsb3Nl
ZCBzaG91bGQgbm90IHJlamVjdCcpCisgICAgKTsKKworICAgIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvcigpLCAoKSA9PiByZWFkZXIucmVsZWFzZUxvY2soKSwgJ3JlbGVhc2VMb2NrIHNob3Vs
ZCB0aHJvdyBhIFR5cGVFcnJvcicpOworCisgICAgYXNzZXJ0X3RydWUoc3RyZWFtLmxvY2tlZCwg
J3RoZSBzdHJlYW0gc2hvdWxkIHN0aWxsIGJlIGxvY2tlZCcpOworCisgICAgcmV0dXJuIGRlbGF5
KDUwMCk7CisKKyAgfSwgJ3JlbGVhc2luZyB0aGUgbG9jayB3aXRoIHBlbmRpbmcgcmVhZCByZXF1
ZXN0cyBzaG91bGQgdGhyb3cgYnV0IHRoZSByZWFkIHJlcXVlc3RzIHNob3VsZCBzdGF5IHBlbmRp
bmcnKTsKKworICBwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgICBjb25zdCByZWFkZXIgPSBmYWN0
b3J5KCkucmVhZGVyOworICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOworCisgICAgcmV0dXJuIFBy
b21pc2UuYWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIHJl
YWRlci5yZWFkKCkpLAorICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwg
cmVhZGVyLnJlYWQoKSkKKyAgICBdKTsKKworICB9LCAncmVsZWFzaW5nIHRoZSBsb2NrIHNob3Vs
ZCBjYXVzZSBmdXJ0aGVyIHJlYWQoKSBjYWxscyB0byByZWplY3Qgd2l0aCBhIFR5cGVFcnJvcicp
OworCisgIHByb21pc2VfdGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHJlYWRlciA9IGZhY3Rvcnko
KS5yZWFkZXI7CisKKyAgICBjb25zdCBjbG9zZWRCZWZvcmUgPSByZWFkZXIuY2xvc2VkOworICAg
IHJlYWRlci5yZWxlYXNlTG9jaygpOworICAgIGNvbnN0IGNsb3NlZEFmdGVyID0gcmVhZGVyLmNs
b3NlZDsKKworICAgIGFzc2VydF9lcXVhbHMoY2xvc2VkQmVmb3JlLCBjbG9zZWRBZnRlciwgJ3Ro
ZSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgbm90IGNoYW5nZSBpZGVudGl0eScpOworCisgICAgcmV0
dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIGNsb3NlZEJlZm9yZSk7CisK
KyAgfSwgJ3JlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIGNhbGxzIHRvIHJl
amVjdCB3aXRoIGEgVHlwZUVycm9yJyk7CisKKyAgdGVzdCgoKSA9PiB7CisKKyAgICBjb25zdCBz
dHJlYW1BbmRSZWFkZXIgPSBmYWN0b3J5KCk7CisgICAgY29uc3Qgc3RyZWFtID0gc3RyZWFtQW5k
UmVhZGVyLnN0cmVhbTsKKyAgICBjb25zdCByZWFkZXIgPSBzdHJlYW1BbmRSZWFkZXIucmVhZGVy
OworCisgICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7CisgICAgYXNzZXJ0X2ZhbHNlKHN0cmVhbS5s
b2NrZWQsICdsb2NrZWQgZ2V0dGVyIHNob3VsZCByZXR1cm4gZmFsc2UnKTsKKworICB9LCAncmVs
ZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBsb2NrZWQgdG8gYmVjb21lIGZhbHNlJyk7CisK
KyAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHJlYWRlciA9IGZhY3RvcnkoKS5y
ZWFkZXI7CisgICAgcmVhZGVyLmNhbmNlbCgpOworCisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCku
dGhlbihyID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IHVuZGVm
aW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpaW5nIGZyb20gdGhlIHJlYWRlciBzaG91bGQgZ2l2
ZSBhIGRvbmUgcmVzdWx0Jyk7CisgICAgfSk7CisKKyAgfSwgJ2NhbmNlbGluZyB2aWEgdGhlIHJl
YWRlciBzaG91bGQgY2F1c2UgdGhlIHJlYWRlciB0byBhY3QgY2xvc2VkJyk7CisKKyAgcHJvbWlz
ZV90ZXN0KHQgPT4geworCisgICAgY29uc3Qgc3RyZWFtID0gZmFjdG9yeSgpLnN0cmVhbTsKKyAg
ICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgc3RyZWFtLmNhbmNl
bCgpKTsKKworICB9LCAnY2FuY2VsaW5nIHZpYSB0aGUgc3RyZWFtIHNob3VsZCBmYWlsJyk7Cit9
OworCitzZWxmLnRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyID0gKGxhYmVsLCBmYWN0b3J5KSA9PiB7
CisgIHRlc3QoKCkgPT4ge30sICdSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyIHdpdGgg
JyArIGxhYmVsKTsKKworICBwcm9taXNlX3Rlc3QoKCkgPT4geworCisgICAgY29uc3QgcmVhZGVy
ID0gZmFjdG9yeSgpLnJlYWRlcjsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4odiA9
PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyh2LCB7IHZhbHVlOiB1bmRlZmluZWQsIGRv
bmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCBjb3JyZWN0bHknKTsKKyAgICB9KTsK
KworICB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBk
b25lOiB0cnVlIH0nKTsKKworICBwcm9taXNlX3Rlc3QoKCkgPT4geworCisgICAgY29uc3QgcmVh
ZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAg
ICByZWFkZXIucmVhZCgpLnRoZW4odiA9PiB7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxz
KHYsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxm
aWxsIGNvcnJlY3RseScpOworICAgICAgfSksCisgICAgICByZWFkZXIucmVhZCgpLnRoZW4odiA9
PiB7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHYsIHsgdmFsdWU6IHVuZGVmaW5lZCwg
ZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIGNvcnJlY3RseScpOworICAgICAg
fSkKKyAgICBdKTsKKworICB9LCAncmVhZCgpIG11bHRpcGxlIHRpbWVzIHNob3VsZCBmdWxmaWxs
IHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0nKTsKKworICBwcm9taXNlX3Rl
c3QoKCkgPT4geworCisgICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKworICAg
IHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4oKCkgPT4gcmVhZGVyLnJlYWQoKSkudGhlbih2ID0+
IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHYsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9u
ZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIGNvcnJlY3RseScpOworICAgIH0pOwor
CisgIH0sICdyZWFkKCkgc2hvdWxkIHdvcmsgd2hlbiB1c2VkIHdpdGhpbiBhbm90aGVyIHJlYWQo
KSBmdWxmaWxsIGNhbGxiYWNrJyk7CisKKyAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICAgIGNv
bnN0IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7CisKKyAgICByZXR1cm4gcmVhZGVyLmNsb3Nl
ZC50aGVuKHYgPT4gYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdyZWFkZXIgY2xvc2VkIHNo
b3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJykpOworCisgIH0sICdjbG9zZWQgc2hvdWxkIGZ1
bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKKworICBwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgICBj
b25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOworCisgICAgY29uc3QgY2xvc2VkQmVmb3Jl
ID0gcmVhZGVyLmNsb3NlZDsKKyAgICByZWFkZXIucmVsZWFzZUxvY2soKTsKKyAgICBjb25zdCBj
bG9zZWRBZnRlciA9IHJlYWRlci5jbG9zZWQ7CisKKyAgICBhc3NlcnRfbm90X2VxdWFscyhjbG9z
ZWRCZWZvcmUsIGNsb3NlZEFmdGVyLCAndGhlIGNsb3NlZCBwcm9taXNlIHNob3VsZCBjaGFuZ2Ug
aWRlbnRpdHknKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBjbG9zZWRCZWZv
cmUudGhlbih2ID0+IGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAncmVhZGVyLmNsb3NlZCBh
Y3F1aXJlZCBiZWZvcmUgcmVsZWFzZSBzaG91bGQgZnVsZmlsbCcpKSwKKyAgICAgIHByb21pc2Vf
cmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIGNsb3NlZEFmdGVyKQorICAgIF0pOworCisgIH0s
ICdyZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNo
YW5nZSBpZGVudGl0eScpOworCisgIHByb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgICBjb25zdCBy
ZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOworICAgIGNvbnN0IGNhbmNlbFByb21pc2UxID0gcmVh
ZGVyLmNhbmNlbCgpOworICAgIGNvbnN0IGNhbmNlbFByb21pc2UyID0gcmVhZGVyLmNhbmNlbCgp
OworICAgIGNvbnN0IGNsb3NlZFJlYWRlclByb21pc2UgPSByZWFkZXIuY2xvc2VkOworCisgICAg
YXNzZXJ0X25vdF9lcXVhbHMoY2FuY2VsUHJvbWlzZTEsIGNhbmNlbFByb21pc2UyLCAnY2FuY2Vs
KCkgY2FsbHMgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcycpOworICAgIGFzc2VydF9u
b3RfZXF1YWxzKGNhbmNlbFByb21pc2UxLCBjbG9zZWRSZWFkZXJQcm9taXNlLCAnY2FuY2VsKCkg
cHJvbWlzZSAxIHNob3VsZCBiZSBkaXN0aW5jdCBmcm9tIHJlYWRlci5jbG9zZWQnKTsKKyAgICBh
c3NlcnRfbm90X2VxdWFscyhjYW5jZWxQcm9taXNlMiwgY2xvc2VkUmVhZGVyUHJvbWlzZSwgJ2Nh
bmNlbCgpIHByb21pc2UgMiBzaG91bGQgYmUgZGlzdGluY3QgZnJvbSByZWFkZXIuY2xvc2VkJyk7
CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgY2FuY2VsUHJvbWlzZTEudGhlbih2
ID0+IGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAnZmlyc3QgY2FuY2VsKCkgc2hvdWxkIGZ1
bGZpbGwgd2l0aCB1bmRlZmluZWQnKSksCisgICAgICBjYW5jZWxQcm9taXNlMi50aGVuKHYgPT4g
YXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdzZWNvbmQgY2FuY2VsKCkgc2hvdWxkIGZ1bGZp
bGwgd2l0aCB1bmRlZmluZWQnKSkKKyAgICBdKTsKKworICB9LCAnY2FuY2VsKCkgc2hvdWxkIHJl
dHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZScpOworfTsKKworc2Vs
Zi50ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIgPSAobGFiZWwsIGZhY3RvcnksIGVycm9yKSA9PiB7
CisgIHRlc3QoKCkgPT4ge30sICdSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlciB3aXRo
ICcgKyBsYWJlbCk7CisKKyAgcHJvbWlzZV90ZXN0KHQgPT4geworCisgICAgY29uc3QgcmVhZGVy
ID0gZmFjdG9yeSgpLnJlYWRlcjsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9y
LCByZWFkZXIuY2xvc2VkKTsKKworICB9LCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUg
ZXJyb3InKTsKKworICBwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgICBjb25zdCByZWFkZXIgPSBm
YWN0b3J5KCkucmVhZGVyOworICAgIGNvbnN0IGNsb3NlZEJlZm9yZSA9IHJlYWRlci5jbG9zZWQ7
CisKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yLCBjbG9zZWRCZWZvcmUpLnRo
ZW4oKCkgPT4geworICAgICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7CisKKyAgICAgIGNvbnN0IGNs
b3NlZEFmdGVyID0gcmVhZGVyLmNsb3NlZDsKKyAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNsb3Nl
ZEJlZm9yZSwgY2xvc2VkQWZ0ZXIsICd0aGUgY2xvc2VkIHByb21pc2Ugc2hvdWxkIGNoYW5nZSBp
ZGVudGl0eScpOworCisgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJy
b3IoKSwgY2xvc2VkQWZ0ZXIpOworICAgIH0pOworCisgIH0sICdyZWxlYXNpbmcgdGhlIGxvY2sg
c2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eScpOworCisg
IHByb21pc2VfdGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFk
ZXI7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvciwgcmVhZGVyLnJlYWQoKSk7
CisKKyAgfSwgJ3JlYWQoKSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7Cit9OworCitz
ZWxmLnRlbXBsYXRlZFJTVHdvQ2h1bmtzT3BlblJlYWRlciA9IChsYWJlbCwgZmFjdG9yeSwgY2h1
bmtzKSA9PiB7CisgIHRlc3QoKCkgPT4ge30sICdSdW5uaW5nIHRlbXBsYXRlZFJTVHdvQ2h1bmtz
T3BlblJlYWRlciB3aXRoICcgKyBsYWJlbCk7CisKKyAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKwor
ICAgIGNvbnN0IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7CisKKyAgICByZXR1cm4gUHJvbWlz
ZS5hbGwoWworICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4geworICAgICAgICBhc3NlcnRf
b2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiBjaHVua3NbMF0sIGRvbmU6IGZhbHNlIH0sICdmaXJz
dCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKyAgICAgIH0pLAorICAgICAgcmVhZGVyLnJl
YWQoKS50aGVuKHIgPT4geworICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVl
OiBjaHVua3NbMV0sIGRvbmU6IGZhbHNlIH0sICdzZWNvbmQgcmVzdWx0IHNob3VsZCBiZSBjb3Jy
ZWN0Jyk7CisgICAgICB9KQorICAgIF0pOworCisgIH0sICdjYWxsaW5nIHJlYWQoKSB0d2ljZSB3
aXRob3V0IHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MgKHNlcXVlbnRp
YWwpJyk7CisKKyAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHJlYWRlciA9IGZh
Y3RvcnkoKS5yZWFkZXI7CisKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4gewor
ICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogY2h1bmtzWzBdLCBkb25lOiBm
YWxzZSB9LCAnZmlyc3QgcmVzdWx0IHNob3VsZCBiZSBjb3JyZWN0Jyk7CisKKyAgICAgIHJldHVy
biByZWFkZXIucmVhZCgpLnRoZW4ocjIgPT4geworICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFs
cyhyMiwgeyB2YWx1ZTogY2h1bmtzWzFdLCBkb25lOiBmYWxzZSB9LCAnc2Vjb25kIHJlc3VsdCBz
aG91bGQgYmUgY29ycmVjdCcpOworICAgICAgfSk7CisgICAgfSk7CisKKyAgfSwgJ2NhbGxpbmcg
cmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNo
dW5rcyAobmVzdGVkKScpOworCisgIHRlc3QoKCkgPT4geworCisgICAgY29uc3QgcmVhZGVyID0g
ZmFjdG9yeSgpLnJlYWRlcjsKKyAgICBhc3NlcnRfbm90X2VxdWFscyhyZWFkZXIucmVhZCgpLCBy
ZWFkZXIucmVhZCgpLCAndGhlIHByb21pc2VzIHJldHVybmVkIHNob3VsZCBiZSBkaXN0aW5jdCcp
OworCisgIH0sICdyZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcyBlYWNoIHRp
bWUnKTsKKworICBwcm9taXNlX3Rlc3QoKCkgPT4geworCisgICAgY29uc3QgcmVhZGVyID0gZmFj
dG9yeSgpLnJlYWRlcjsKKworICAgIGNvbnN0IHByb21pc2UxID0gcmVhZGVyLmNsb3NlZC50aGVu
KHYgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdyZWFkZXIgY2xvc2Vk
IHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7CisgICAgfSk7CisKKyAgICBjb25zdCBw
cm9taXNlMiA9IHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3Rf
ZXF1YWxzKHIsIHsgdmFsdWU6IGNodW5rc1swXSwgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdwcm9taXNlIHJldHVybmVkIGJlZm9yZSBjYW5jZWxsYXRpb24gc2hv
dWxkIGZ1bGZpbGwgd2l0aCBhIGNodW5rJyk7CisgICAgfSk7CisKKyAgICByZWFkZXIuY2FuY2Vs
KCk7CisKKyAgICBjb25zdCBwcm9taXNlMyA9IHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKKyAg
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1
ZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb21pc2UgcmV0dXJuZWQgYWZ0ZXIg
Y2FuY2VsbGF0aW9uIHNob3VsZCBmdWxmaWxsIHdpdGggYW4gZW5kLW9mLXN0cmVhbSBzaWduYWwn
KTsKKyAgICB9KTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbcHJvbWlzZTEsIHByb21pc2Uy
LCBwcm9taXNlM10pOworCisgIH0sICdjYW5jZWwoKSBhZnRlciBhIHJlYWQoKSBzaG91bGQgc3Rp
bGwgZ2l2ZSB0aGF0IHNpbmdsZSByZWFkIHJlc3VsdCcpOworfTsKKworc2VsZi50ZW1wbGF0ZWRS
U1R3b0NodW5rc0Nsb3NlZFJlYWRlciA9IGZ1bmN0aW9uIChsYWJlbCwgZmFjdG9yeSwgY2h1bmtz
KSB7CisgIHRlc3QoKCkgPT4ge30sICdSdW5uaW5nIHRlbXBsYXRlZFJTVHdvQ2h1bmtzQ2xvc2Vk
UmVhZGVyIHdpdGggJyArIGxhYmVsKTsKKworICBwcm9taXNlX3Rlc3QoKCkgPT4geworCisgICAg
Y29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKworICAgIHJldHVybiBQcm9taXNlLmFs
bChbCisgICAgICByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7CisgICAgICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKHIsIHsgdmFsdWU6IGNodW5rc1swXSwgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IHJl
c3VsdCBzaG91bGQgYmUgY29ycmVjdCcpOworICAgICAgfSksCisgICAgICByZWFkZXIucmVhZCgp
LnRoZW4ociA9PiB7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IGNo
dW5rc1sxXSwgZG9uZTogZmFsc2UgfSwgJ3NlY29uZCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3Qn
KTsKKyAgICAgIH0pLAorICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4geworICAgICAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwg
J3RoaXJkIHJlc3VsdCBzaG91bGQgYmUgY29ycmVjdCcpOworICAgICAgfSkKKyAgICBdKTsKKwor
ICB9LCAndGhpcmQgcmVhZCgpLCB3aXRob3V0IHdhaXRpbmcsIHNob3VsZCBnaXZlIHsgdmFsdWU6
IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IChzZXF1ZW50aWFsKScpOworCisgIHByb21pc2VfdGVz
dCgoKSA9PiB7CisKKyAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOworCisgICAg
cmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1
YWxzKHIsIHsgdmFsdWU6IGNodW5rc1swXSwgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IHJlc3VsdCBz
aG91bGQgYmUgY29ycmVjdCcpOworCisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHIy
ID0+IHsKKyAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocjIsIHsgdmFsdWU6IGNodW5rc1sx
XSwgZG9uZTogZmFsc2UgfSwgJ3NlY29uZCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKwor
ICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHIzID0+IHsKKyAgICAgICAgICBhc3Nl
cnRfb2JqZWN0X2VxdWFscyhyMywgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICd0
aGlyZCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKyAgICAgICAgfSk7CisgICAgICB9KTsK
KyAgICB9KTsKKworICB9LCAndGhpcmQgcmVhZCgpLCB3aXRob3V0IHdhaXRpbmcsIHNob3VsZCBn
aXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IChuZXN0ZWQpJyk7CisKKyAgcHJv
bWlzZV90ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHN0cmVhbUFuZFJlYWRlciA9IGZhY3Rvcnko
KTsKKyAgICBjb25zdCBzdHJlYW0gPSBzdHJlYW1BbmRSZWFkZXIuc3RyZWFtOworICAgIGNvbnN0
IHJlYWRlciA9IHN0cmVhbUFuZFJlYWRlci5yZWFkZXI7CisKKyAgICBhc3NlcnRfdHJ1ZShzdHJl
YW0ubG9ja2VkLCAnc3RyZWFtIHNob3VsZCBzdGFydCBsb2NrZWQnKTsKKworICAgIGNvbnN0IHBy
b21pc2UgPSByZWFkZXIuY2xvc2VkLnRoZW4odiA9PiB7CisgICAgICBhc3NlcnRfZXF1YWxzKHYs
IHVuZGVmaW5lZCwgJ3JlYWRlciBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQn
KTsKKyAgICAgIGFzc2VydF90cnVlKHN0cmVhbS5sb2NrZWQsICdzdHJlYW0gc2hvdWxkIHJlbWFp
biBsb2NrZWQnKTsKKyAgICB9KTsKKworICAgIHJlYWRlci5yZWFkKCk7CisgICAgcmVhZGVyLnJl
YWQoKTsKKworICAgIHJldHVybiBwcm9taXNlOworCisgIH0sICdkcmFpbmluZyB0aGUgc3RyZWFt
IHZpYSByZWFkKCkgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgY2xvc2VkIHByb21pc2UgdG8gZnVs
ZmlsbCwgYnV0IGxvY2tlZCBzdGF5cyB0cnVlJyk7CisKKyAgcHJvbWlzZV90ZXN0KCgpID0+IHsK
KworICAgIGNvbnN0IHN0cmVhbUFuZFJlYWRlciA9IGZhY3RvcnkoKTsKKyAgICBjb25zdCBzdHJl
YW0gPSBzdHJlYW1BbmRSZWFkZXIuc3RyZWFtOworICAgIGNvbnN0IHJlYWRlciA9IHN0cmVhbUFu
ZFJlYWRlci5yZWFkZXI7CisKKyAgICBjb25zdCBwcm9taXNlID0gcmVhZGVyLmNsb3NlZC50aGVu
KCgpID0+IHsKKyAgICAgIGFzc2VydF90cnVlKHN0cmVhbS5sb2NrZWQsICd0aGUgc3RyZWFtIHNo
b3VsZCBzdGFydCBsb2NrZWQnKTsKKyAgICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOyAvLyBSZWxl
YXNpbmcgdGhlIGxvY2sgYWZ0ZXIgcmVhZGVyIGNsb3NlZCBzaG91bGQgbm90IHRocm93LgorICAg
ICAgYXNzZXJ0X2ZhbHNlKHN0cmVhbS5sb2NrZWQsICd0aGUgc3RyZWFtIHNob3VsZCBlbmQgdW5s
b2NrZWQnKTsKKyAgICB9KTsKKworICAgIHJlYWRlci5yZWFkKCk7CisgICAgcmVhZGVyLnJlYWQo
KTsKKworICAgIHJldHVybiBwcm9taXNlOworCisgIH0sICdyZWxlYXNpbmcgdGhlIGxvY2sgYWZ0
ZXIgdGhlIHN0cmVhbSBpcyBjbG9zZWQgc2hvdWxkIGNhdXNlIGxvY2tlZCB0byBiZWNvbWUgZmFs
c2UnKTsKKworICBwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgICBjb25zdCByZWFkZXIgPSBmYWN0
b3J5KCkucmVhZGVyOworCisgICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7CisKKyAgICByZXR1cm4g
UHJvbWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwg
cmVhZGVyLnJlYWQoKSksCisgICAgICBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigp
LCByZWFkZXIucmVhZCgpKSwKKyAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9y
KCksIHJlYWRlci5yZWFkKCkpCisgICAgXSk7CisKKyAgfSwgJ3JlbGVhc2luZyB0aGUgbG9jayBz
aG91bGQgY2F1c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVqZWN0IHdpdGggYSBUeXBlRXJy
b3InKTsKKworICBwcm9taXNlX3Rlc3QoKCkgPT4geworCisgICAgY29uc3Qgc3RyZWFtQW5kUmVh
ZGVyID0gZmFjdG9yeSgpOworICAgIGNvbnN0IHN0cmVhbSA9IHN0cmVhbUFuZFJlYWRlci5zdHJl
YW07CisgICAgY29uc3QgcmVhZGVyID0gc3RyZWFtQW5kUmVhZGVyLnJlYWRlcjsKKworICAgIGNv
bnN0IHJlYWRlckNsb3NlZCA9IHJlYWRlci5jbG9zZWQ7CisKKyAgICBhc3NlcnRfZXF1YWxzKHJl
YWRlci5jbG9zZWQsIHJlYWRlckNsb3NlZCwgJ2FjY2Vzc2luZyByZWFkZXIuY2xvc2VkIHR3aWNl
IGluIHN1Y2Nlc3Npb24gZ2l2ZXMgdGhlIHNhbWUgdmFsdWUnKTsKKworICAgIGNvbnN0IHByb21p
c2UgPSByZWFkZXIucmVhZCgpLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyhyZWFk
ZXIuY2xvc2VkLCByZWFkZXJDbG9zZWQsICdyZWFkZXIuY2xvc2VkIGlzIHRoZSBzYW1lIGFmdGVy
IHJlYWQoKSBmdWxmaWxscycpOworCisgICAgICByZWFkZXIucmVsZWFzZUxvY2soKTsKKworICAg
ICAgYXNzZXJ0X2VxdWFscyhyZWFkZXIuY2xvc2VkLCByZWFkZXJDbG9zZWQsICdyZWFkZXIuY2xv
c2VkIGlzIHRoZSBzYW1lIGFmdGVyIHJlbGVhc2luZyB0aGUgbG9jaycpOworCisgICAgICBjb25z
dCBuZXdSZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7CisgICAgICByZXR1cm4gbmV3UmVhZGVy
LnJlYWQoKTsKKyAgICB9KTsKKworICAgIGFzc2VydF9lcXVhbHMocmVhZGVyLmNsb3NlZCwgcmVh
ZGVyQ2xvc2VkLCAncmVhZGVyLmNsb3NlZCBpcyB0aGUgc2FtZSBhZnRlciBjYWxsaW5nIHJlYWQo
KScpOworCisgICAgcmV0dXJuIHByb21pc2U7CisKKyAgfSwgJ3JlYWRlclwncyBjbG9zZWQgcHJv
cGVydHkgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUgcHJvbWlzZScpOworfTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkv
cmVzb3VyY2VzL3JzLXV0aWxzLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZXNvdXJjZXMvcnMtdXRpbHMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGYzMjIyZTIzY2FiN2EwYTZkNjE3NzExNmM5OWVkOTBkZjk1Nzk3NwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1h
cGkvcmVzb3VyY2VzL3JzLXV0aWxzLmpzCkBAIC0wLDAgKzEsMTg1IEBACisndXNlIHN0cmljdCc7
CisoZnVuY3Rpb24gKCkgeworCisgIGNsYXNzIFJhbmRvbVB1c2hTb3VyY2UgeworICAgIGNvbnN0
cnVjdG9yKHRvUHVzaCkgeworICAgICAgdGhpcy5wdXNoZWQgPSAwOworICAgICAgdGhpcy50b1B1
c2ggPSB0b1B1c2g7CisgICAgICB0aGlzLnN0YXJ0ZWQgPSBmYWxzZTsKKyAgICAgIHRoaXMucGF1
c2VkID0gZmFsc2U7CisgICAgICB0aGlzLmNsb3NlZCA9IGZhbHNlOworCisgICAgICB0aGlzLl9p
bnRlcnZhbEhhbmRsZSA9IG51bGw7CisgICAgfQorCisgICAgcmVhZFN0YXJ0KCkgeworICAgICAg
aWYgKHRoaXMuY2xvc2VkKSB7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKworICAgICAgaWYg
KCF0aGlzLnN0YXJ0ZWQpIHsKKyAgICAgICAgdGhpcy5faW50ZXJ2YWxIYW5kbGUgPSBzZXRJbnRl
cnZhbCh3cml0ZUNodW5rLCAyKTsKKyAgICAgICAgdGhpcy5zdGFydGVkID0gdHJ1ZTsKKyAgICAg
IH0KKworICAgICAgaWYgKHRoaXMucGF1c2VkKSB7CisgICAgICAgIHRoaXMuX2ludGVydmFsSGFu
ZGxlID0gc2V0SW50ZXJ2YWwod3JpdGVDaHVuaywgMik7CisgICAgICAgIHRoaXMucGF1c2VkID0g
ZmFsc2U7CisgICAgICB9CisKKyAgICAgIGNvbnN0IHNvdXJjZSA9IHRoaXM7CisgICAgICBmdW5j
dGlvbiB3cml0ZUNodW5rKCkgeworICAgICAgICBpZiAoc291cmNlLnBhdXNlZCkgeworICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHNvdXJjZS5wdXNoZWQrKzsKKworICAg
ICAgICBpZiAoc291cmNlLnRvUHVzaCA+IDAgJiYgc291cmNlLnB1c2hlZCA+IHNvdXJjZS50b1B1
c2gpIHsKKyAgICAgICAgICBpZiAoc291cmNlLl9pbnRlcnZhbEhhbmRsZSkgeworICAgICAgICAg
ICAgY2xlYXJJbnRlcnZhbChzb3VyY2UuX2ludGVydmFsSGFuZGxlKTsKKyAgICAgICAgICAgIHNv
dXJjZS5faW50ZXJ2YWxIYW5kbGUgPSB1bmRlZmluZWQ7CisgICAgICAgICAgfQorICAgICAgICAg
IHNvdXJjZS5jbG9zZWQgPSB0cnVlOworICAgICAgICAgIHNvdXJjZS5vbmVuZCgpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgIHNvdXJjZS5vbmRhdGEocmFuZG9tQ2h1bmsoMTI4KSk7Cisg
ICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICByZWFkU3RvcCgpIHsKKyAgICAgIGlmICh0
aGlzLnBhdXNlZCkgeworICAgICAgICByZXR1cm47CisgICAgICB9CisKKyAgICAgIGlmICh0aGlz
LnN0YXJ0ZWQpIHsKKyAgICAgICAgdGhpcy5wYXVzZWQgPSB0cnVlOworICAgICAgICBjbGVhcklu
dGVydmFsKHRoaXMuX2ludGVydmFsSGFuZGxlKTsKKyAgICAgICAgdGhpcy5faW50ZXJ2YWxIYW5k
bGUgPSB1bmRlZmluZWQ7CisgICAgICB9IGVsc2UgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J0NhblwndCBwYXVzZSByZWFkaW5nIGFuIHVuc3RhcnRlZCBzb3VyY2UuJyk7CisgICAgICB9Cisg
ICAgfQorICB9CisKKyAgZnVuY3Rpb24gcmFuZG9tQ2h1bmsoc2l6ZSkgeworICAgIGxldCBjaHVu
ayA9ICcnOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgIC8v
IEFkZCBhIHJhbmRvbSBjaGFyYWN0ZXIgZnJvbSB0aGUgYmFzaWMgcHJpbnRhYmxlIEFTQ0lJIHNl
dC4KKyAgICAgIGNodW5rICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoTWF0aC5yb3VuZChNYXRoLnJh
bmRvbSgpICogODQpICsgMzIpOworICAgIH0KKworICAgIHJldHVybiBjaHVuazsKKyAgfQorCisg
IGZ1bmN0aW9uIHJlYWRhYmxlU3RyZWFtVG9BcnJheShyZWFkYWJsZSwgcmVhZGVyKSB7CisgICAg
aWYgKHJlYWRlciA9PT0gdW5kZWZpbmVkKSB7CisgICAgICByZWFkZXIgPSByZWFkYWJsZS5nZXRS
ZWFkZXIoKTsKKyAgICB9CisKKyAgICBjb25zdCBjaHVua3MgPSBbXTsKKworICAgIHJldHVybiBw
dW1wKCk7CisKKyAgICBmdW5jdGlvbiBwdW1wKCkgeworICAgICAgcmV0dXJuIHJlYWRlci5yZWFk
KCkudGhlbihyZXN1bHQgPT4geworICAgICAgICBpZiAocmVzdWx0LmRvbmUpIHsKKyAgICAgICAg
ICByZXR1cm4gY2h1bmtzOworICAgICAgICB9CisKKyAgICAgICAgY2h1bmtzLnB1c2gocmVzdWx0
LnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHB1bXAoKTsKKyAgICAgIH0pOworICAgIH0KKyAgfQor
CisgIGNsYXNzIFNlcXVlbnRpYWxQdWxsU291cmNlIHsKKyAgICBjb25zdHJ1Y3RvcihsaW1pdCwg
b3B0aW9ucykgeworICAgICAgY29uc3QgYXN5bmMgPSBvcHRpb25zICYmIG9wdGlvbnMuYXN5bmM7
CisKKyAgICAgIHRoaXMuY3VycmVudCA9IDA7CisgICAgICB0aGlzLmxpbWl0ID0gbGltaXQ7Cisg
ICAgICB0aGlzLm9wZW5lZCA9IGZhbHNlOworICAgICAgdGhpcy5jbG9zZWQgPSBmYWxzZTsKKwor
ICAgICAgdGhpcy5fZXhlYyA9IGYgPT4gZigpOworICAgICAgaWYgKGFzeW5jKSB7CisgICAgICAg
IHRoaXMuX2V4ZWMgPSBmID0+IHNldFRpbWVvdXQoZiwgMCk7CisgICAgICB9CisgICAgfQorCisg
ICAgb3BlbihjYikgeworICAgICAgdGhpcy5fZXhlYygoKSA9PiB7CisgICAgICAgIHRoaXMub3Bl
bmVkID0gdHJ1ZTsKKyAgICAgICAgY2IoKTsKKyAgICAgIH0pOworICAgIH0KKworICAgIHJlYWQo
Y2IpIHsKKyAgICAgIHRoaXMuX2V4ZWMoKCkgPT4geworICAgICAgICBpZiAoKyt0aGlzLmN1cnJl
bnQgPD0gdGhpcy5saW1pdCkgeworICAgICAgICAgIGNiKG51bGwsIGZhbHNlLCB0aGlzLmN1cnJl
bnQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGNiKG51bGwsIHRydWUsIG51bGwpOwor
ICAgICAgICB9CisgICAgICB9KTsKKyAgICB9CisKKyAgICBjbG9zZShjYikgeworICAgICAgdGhp
cy5fZXhlYygoKSA9PiB7CisgICAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTsKKyAgICAgICAgY2Io
KTsKKyAgICAgIH0pOworICAgIH0KKyAgfQorCisgIGZ1bmN0aW9uIHNlcXVlbnRpYWxSZWFkYWJs
ZVN0cmVhbShsaW1pdCwgb3B0aW9ucykgeworICAgIGNvbnN0IHNlcXVlbnRpYWxTb3VyY2UgPSBu
ZXcgU2VxdWVudGlhbFB1bGxTb3VyY2UobGltaXQsIG9wdGlvbnMpOworCisgICAgY29uc3Qgc3Ry
ZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgIHN0YXJ0KCkgeworICAgICAgICByZXR1
cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgIHNlcXVlbnRp
YWxTb3VyY2Uub3BlbihlcnIgPT4geworICAgICAgICAgICAgaWYgKGVycikgeworICAgICAgICAg
ICAgICByZWplY3QoZXJyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlc29sdmUoKTsK
KyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9LAorCisgICAgICBwdWxsKGMpIHsK
KyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAg
ICAgICBzZXF1ZW50aWFsU291cmNlLnJlYWQoKGVyciwgZG9uZSwgY2h1bmspID0+IHsKKyAgICAg
ICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgICAgcmVqZWN0KGVycik7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKGRvbmUpIHsKKyAgICAgICAgICAgICAgc2VxdWVudGlhbFNvdXJjZS5jbG9z
ZShlcnIyID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoZXJyMikgeworICAgICAgICAgICAgICAg
ICAgcmVqZWN0KGVycjIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjLmNs
b3NlKCk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIGMuZW5xdWV1ZShjaHVuayk7CisgICAg
ICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9KTsKKyAgICAg
ICAgfSk7CisgICAgICB9CisgICAgfSk7CisKKyAgICBzdHJlYW0uc291cmNlID0gc2VxdWVudGlh
bFNvdXJjZTsKKworICAgIHJldHVybiBzdHJlYW07CisgIH0KKworCisgIHNlbGYuUmFuZG9tUHVz
aFNvdXJjZSA9IFJhbmRvbVB1c2hTb3VyY2U7CisgIHNlbGYucmVhZGFibGVTdHJlYW1Ub0FycmF5
ID0gcmVhZGFibGVTdHJlYW1Ub0FycmF5OworICBzZWxmLnNlcXVlbnRpYWxSZWFkYWJsZVN0cmVh
bSA9IHNlcXVlbnRpYWxSZWFkYWJsZVN0cmVhbTsKKworfSgpKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVzb3Vy
Y2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ2ZWQ0YTdhYWI1NDFlOGU1Y2ZlZWM0MDQyMDMyODkyNDMwMTQ3YjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMtYXBpL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzCkBAIC0wLDAgKzEsMTQg
QEAKKyd1c2Ugc3RyaWN0JzsKKworZnVuY3Rpb24gd29ya2VyX3Rlc3QoZmlsZSkgeworICBmZXRj
aF90ZXN0c19mcm9tX3dvcmtlcihuZXcgV29ya2VyKGZpbGUpKTsKKyAgaWYgKHR5cGVvZiBTaGFy
ZWRXb3JrZXIgPT09ICdmdW5jdGlvbicpIHsKKyAgICBmZXRjaF90ZXN0c19mcm9tX3dvcmtlcihu
ZXcgU2hhcmVkV29ya2VyKGZpbGUpKTsKKyAgfSBlbHNlIHsKKyAgICB0ZXN0KCgpID0+IHsKKyAg
ICAgIGFzc2VydF91bnJlYWNoZWQoJ1NoYXJlZFdvcmtlciBpcyB1bmF2YWlsYWJsZScpOworICAg
IH0sICdMb2FkICcgKyBmaWxlICsgJyB3aXRoIFNoYXJlZFdvcmtlcicpOworICB9CisgIHNlcnZp
Y2Vfd29ya2VyX3Rlc3QoZmlsZSk7Cit9CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVzb3VyY2VzL3Rlc3QtdXRp
bHMuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjNDc4OThhNjA4ZTkz
ZDVlNTY2NGQwMTc2MDdiNGY0NzA5ZjUzNzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3Jlc291cmNlcy90
ZXN0LXV0aWxzLmpzCkBAIC0wLDAgKzEsNDMgQEAKKyd1c2Ugc3RyaWN0JzsKKworc2VsZi5nZXR0
ZXJSZWplY3RzID0gKHQsIG9iaiwgZ2V0dGVyTmFtZSwgdGFyZ2V0KSA9PiB7CisgIGNvbnN0IGdl
dHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBnZXR0ZXJOYW1lKS5n
ZXQ7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIGdldHRl
ci5jYWxsKHRhcmdldCkpOworfTsKKworc2VsZi5tZXRob2RSZWplY3RzID0gKHQsIG9iaiwgbWV0
aG9kTmFtZSwgdGFyZ2V0KSA9PiB7CisgIGNvbnN0IG1ldGhvZCA9IG9ialttZXRob2ROYW1lXTsK
KworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgbWV0aG9kLmNh
bGwodGFyZ2V0KSk7Cit9OworCitzZWxmLmdldHRlclRocm93cyA9IChvYmosIGdldHRlck5hbWUs
IHRhcmdldCkgPT4geworICBjb25zdCBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKG9iaiwgZ2V0dGVyTmFtZSkuZ2V0OworCisgIGFzc2VydF90aHJvd3MobmV3IFR5cGVF
cnJvcigpLCAoKSA9PiBnZXR0ZXIuY2FsbCh0YXJnZXQpLCBnZXR0ZXJOYW1lICsgJyBzaG91bGQg
dGhyb3cgYSBUeXBlRXJyb3InKTsKK307CisKK3NlbGYubWV0aG9kVGhyb3dzID0gKG9iaiwgbWV0
aG9kTmFtZSwgdGFyZ2V0LCBhcmdzKSA9PiB7CisgIGNvbnN0IG1ldGhvZCA9IG9ialttZXRob2RO
YW1lXTsKKworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbWV0aG9kLmFw
cGx5KHRhcmdldCwgYXJncyksIG1ldGhvZE5hbWUgKyAnIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJv
cicpOworfTsKKworc2VsZi5nYXJiYWdlQ29sbGVjdCA9ICgpID0+IHsKKyAgaWYgKHNlbGYuZ2Mp
IHsKKyAgICAvLyBVc2UgLS1leHBvc2VfZ2MgZm9yIFY4IChhbmQgTm9kZS5qcykKKyAgICAvLyBF
eHBvc2VkIGluIFNwaWRlck1vbmtleSBzaGVsbCBhcyB3ZWxsCisgICAgc2VsZi5nYygpOworICB9
IGVsc2UgaWYgKHNlbGYuR0NDb250cm9sbGVyKSB7CisgICAgLy8gUHJlc2VudCBpbiBzb21lIFdl
YktpdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMKKyAgICBHQ0NvbnRyb2xsZXIuY29sbGVjdCgp
OworICB9IGVsc2UgeworICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi8KKyAgICBj
b25zb2xlLndhcm4oJ1Rlc3RzIGFyZSBydW5uaW5nIHdpdGhvdXQgdGhlIGFiaWxpdHkgdG8gZG8g
bWFudWFsIGdhcmJhZ2UgY29sbGVjdGlvbi4gVGhleSB3aWxsIHN0aWxsIHdvcmssIGJ1dCAnICsK
KyAgICAgICdjb3ZlcmFnZSB3aWxsIGJlIHN1Ym9wdGltYWwuJyk7CisgICAgLyogZXNsaW50LWVu
YWJsZSBuby1jb25zb2xlICovCisgIH0KK307CisKK3NlbGYuZGVsYXkgPSBtcyA9PiBuZXcgUHJv
bWlzZShyZXNvbHZlID0+IHN0ZXBfdGltZW91dChyZXNvbHZlLCBtcykpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RyZWFtcy9icmFuZC1jaGVja3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc3RyZWFtcy9icmFuZC1jaGVja3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0ODdhYjVj
OGFhYTZkNGVkZDhlNzYzZmUzNmE5MzcyMDcwZTg0ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdHJlYW1zL2JyYW5kLWNoZWNrcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBA
CisKK1BBU1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHdvcmtzIGdlbmVy
aWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzIAorUEFTUyBSZWFkYWJsZVN0cmVh
bS5wcm90b3R5cGUucGlwZVRvIHdvcmtzIGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMg
YXJndW1lbnRzIAorUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXpl
IHNob3VsZCB3b3JrIGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzIAor
UEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSBzaG91bGQgd29yayBnZW5l
cmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cyAKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RyZWFtcy9icmFuZC1jaGVja3MuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMv
YnJhbmQtY2hlY2tzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2I3YjI1ZDhlNmVjMTFhYzQyN2MzZWY3MTQ1
N2Q3YTY0YTFhNzE5ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvYnJh
bmQtY2hlY2tzLmh0bWwKQEAgLTAsMCArMSw3NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0
IHNyYz0nLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJz48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PScuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMnPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9J3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZXNvdXJjZXMvc3RyZWFtcy11dGlscy5qcyc+
PC9zY3JpcHQ+Cis8c2NyaXB0PgorbGV0IFJlYWRhYmxlU3RyZWFtUmVhZGVyID0gKG5ldyBSZWFk
YWJsZVN0cmVhbSgpKS5nZXRSZWFkZXIoKS5jb25zdHJ1Y3RvcjsKKworZnVuY3Rpb24gZmFrZVdy
aXRhYmxlU3RyZWFtKCkgeworICByZXR1cm4geworICAgIGdldCBjbG9zZWQoKSB7IHJldHVybiBQ
cm9taXNlLnJlc29sdmUoKTsgfSwKKyAgICBnZXQgcmVhZHkoKSB7IHJldHVybiBQcm9taXNlLnJl
c29sdmUoKTsgfSwKKyAgICBnZXQgc3RhdGUoKSB7IHJldHVybiAnY2xvc2VkJyB9LAorICAgIGFi
b3J0KHJlYXNvbikgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7IH0sCisgICAgY2xvc2UoKSB7
IHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsgfSwKKyAgICB3cml0ZShjaHVuaykgeyByZXR1cm4g
UHJvbWlzZS5yZXNvbHZlKCk7IH0KKyAgfTsKK30KKworZnVuY3Rpb24gcmVhbFJlYWRhYmxlU3Ry
ZWFtKCkgeworICAgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oKTsKK30KKworZnVuY3Rpb24g
ZmFrZVJlYWRhYmxlU3RyZWFtKCkgeworICAgIHJldHVybiB7CisgICAgICAgIGNhbmNlbDogZnVu
Y3Rpb24ocmVhc29uKSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsgfSwKKyAgICAgICAgZ2V0
UmVhZGVyOiBmdW5jdGlvbigpIHsgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihuZXcg
UmVhZGFibGVTdHJlYW0oKSk7IH0sCisgICAgICAgIHBpcGVUaHJvdWdoOiBmdW5jdGlvbihvYmos
IG9wdGlvbnMpIHsgcmV0dXJuIG9iai5yZWFkYWJsZTsgfSwKKyAgICAgICAgcGlwZVRvOiBmdW5j
dGlvbigpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOyB9LAorICAgICAgICB0ZWU6IGZ1bmN0
aW9uKCkgeyByZXR1cm4gW3JlYWxSZWFkYWJsZVN0cmVhbSgpLCByZWFsUmVhZGFibGVTdHJlYW0o
KV07IH0KKyAgICB9OworfQorCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHZhciBwaXBlVG9Bcmd1
bWVudHM7CisgICAgdmFyIHRoaXNWYWx1ZSA9IHsKKyAgICAgICAgcGlwZVRvOiBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIHBpcGVUb0FyZ3VtZW50cyA9IGFyZ3VtZW50czsKKyAgICAgICAgfQor
ICAgIH07CisKKyAgICB2YXIgaW5wdXQgPSB7IHJlYWRhYmxlOiB7fSwgd3JpdGFibGU6IHt9IH07
CisgICAgdmFyIG9wdGlvbnMgPSB7fTsKKyAgICB2YXIgcmVzdWx0ID0gUmVhZGFibGVTdHJlYW0u
cHJvdG90eXBlLnBpcGVUaHJvdWdoLmNhbGwodGhpc1ZhbHVlLCBpbnB1dCwgb3B0aW9ucyk7CisK
KyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHBpcGVUb0FyZ3VtZW50cywgW2lucHV0LndyaXRhYmxl
LCBvcHRpb25zXSwgJ2NvcnJlY3QgYXJndW1lbnRzIHNob3VsZCBiZSBwYXNzZWQgdG8gdGhpc1Zh
bHVlLnBpcGVUbycpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBpbnB1dC5yZWFkYWJsZSwg
J3JldHVybiB2YWx1ZSBzaG91bGQgYmUgdGhlIHBhc3NlZCByZWFkYWJsZSBwcm9wZXJ0eScpOwor
fSwgJ1JlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCB3b3JrcyBnZW5lcmljYWxs
eSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cycpOworCit0ZXN0KGZ1bmN0aW9uKCkgewor
ICAgIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVG8uY2FsbChmYWtlUmVhZGFibGVTdHJl
YW0oKSwgZmFrZVdyaXRhYmxlU3RyZWFtKCkpOyAvLyBDaGVjayBpdCBkb2VzIG5vdCB0aHJvdy4K
K30sICdSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRvIHdvcmtzIGdlbmVyaWNhbGx5IG9u
IGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzJyk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAg
dmFyIHRoaXNWYWx1ZSA9IG51bGw7CisgICAgdmFyIHJldHVyblZhbHVlID0geyAncmV0dXJuZWQg
ZnJvbSc6ICdieXRlTGVuZ3RoIGdldHRlcicgfTsKKyAgICB2YXIgY2h1bmsgPSB7CisgICAgICAg
IGdldCBieXRlTGVuZ3RoKCkgeworICAgICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAg
ICAgICB9CisgICAgfTsKKworICAgIGFzc2VydF9lcXVhbHMoQnl0ZUxlbmd0aFF1ZXVpbmdTdHJh
dGVneS5wcm90b3R5cGUuc2l6ZS5jYWxsKHRoaXNWYWx1ZSwgY2h1bmspLCByZXR1cm5WYWx1ZSk7
Cit9LCAnQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSBzaG91bGQgd29y
ayBnZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cycpOworCit0ZXN0KGZ1
bmN0aW9uKCkgeworICAgIHZhciB0aGlzVmFsdWUgPSBudWxsOworICAgIHZhciBjaHVuayA9IHsK
KyAgICAgICAgZ2V0IGJ5dGVMZW5ndGgoKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVy
cm9yKCdzaG91bGRuXCd0IGJlIGNhbGxlZCcpOworICAgICAgICB9CisgICAgfTsKKworICAgIGFz
c2VydF9lcXVhbHMoQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUuY2FsbCh0aGlz
VmFsdWUsIGNodW5rKSwgMSk7Cit9LCAnQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNp
emUgc2hvdWxkIHdvcmsgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMn
KTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vYmFkLXN0cmF0ZWdpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXN0cmF0ZWdpZXMtZXhwZWN0ZWQu
dHh0CmluZGV4IGFhZTU3YmUyYWYzZDc1ZDZkMzE3OWI0ZmRlMzNmMmQzNjkxZWNiMjAuLjIxOWYz
ODM2ZjIwMjFiMzM1MDc2YmJlZGFhZmVkOTk5ZDA5MDU5MTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC1zdHJhdGVnaWVzLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlv
bi9iYWQtc3RyYXRlZ2llcy1leHBlY3RlZC50eHQKQEAgLTEsOSArMSw0IEBACiAKLVBBU1MgUmVh
ZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIGdldHRlciAKLVBBU1MgUmVhZGFi
bGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIG1ldGhvZCAKLVBBU1MgUmVhZGFibGUg
c3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIGdldHRlciAKLVBBU1MgUmVh
ZGFibGUgc3RyZWFtOiBpbnZhbGlkIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgCi1QQVNTIFJlYWRh
YmxlIHN0cmVhbTogaW52YWxpZCBzdHJhdGVneS5zaXplIHJldHVybiB2YWx1ZSAKIFBBU1MgV3Jp
dGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIGdldHRlciAKIFBBU1MgV3JpdGFi
bGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIG1ldGhvZCAKIFBBU1MgV3JpdGFibGUg
c3RyZWFtOiBpbnZhbGlkIHN0cmF0ZWd5LnNpemUgcmV0dXJuIHZhbHVlIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXN0cmF0ZWdp
ZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2Jh
ZC1zdHJhdGVnaWVzLmh0bWwKaW5kZXggNjYzNTQ3MmIzZmZmODVjOThhOTM3NmZlZDhhYjZiZGUy
MTdmMmI0My4uMWY1NTYyNmFjODAwMjhkM2JmMjM5ZWVmZDU5ZDg2MTdlZDQ2OTdmMyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXN0
cmF0ZWdpZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9iYWQtc3RyYXRlZ2llcy5odG1sCkBAIC04LDExNiArOCw2IEBAIHRlc3QoZnVuY3Rp
b24oKSB7CiAgICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsK
IAogICAgIGFzc2VydF90aHJvd3ModGhlRXJyb3IsIGZ1bmN0aW9uKCkgewotICAgICAgICBuZXcg
UmVhZGFibGVTdHJlYW0oe30sIHsKLSAgICAgICAgICAgIGdldCBzaXplKCkgewotICAgICAgICAg
ICAgICAgIHRocm93IHRoZUVycm9yOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGhpZ2hX
YXRlck1hcms6IDUKLSAgICAgICAgfSk7Ci0gICAgfSwgJ2NvbnN0cnVjdGlvbiBzaG91bGQgcmUt
dGhyb3cgdGhlIGVycm9yJyk7Ci19LCAnUmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVn
eS5zaXplIGdldHRlcicpOwotCi12YXIgdGVzdDEgPSBhc3luY190ZXN0KCdSZWFkYWJsZSBzdHJl
YW06IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgbWV0aG9kJyk7Ci10ZXN0MS5zdGVwKGZ1bmN0aW9u
KCkgewotICAgIHZhciB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7Ci0g
ICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAotICAgICAgICB7Ci0gICAgICAgICAgICBz
dGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3ModGhlRXJy
b3IsIGZ1bmN0aW9uKCkgeyBjLmVucXVldWUoJ2EnKTsgfSwgJ2VucXVldWUgc2hvdWxkIHRocm93
IHRoZSBlcnJvcicpOwotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICB7Ci0gICAg
ICAgICAgICBzaXplOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICB0aHJvdyB0aGVFcnJv
cjsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBoaWdoV2F0ZXJNYXJrOiA1Ci0gICAgICAg
IH0KLSAgICApOwotCi0gICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLmNhdGNoKHRlc3QxLnN0ZXBf
ZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdj
bG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOwotICAgICAgICB0ZXN0MS5kb25l
KCk7Ci0gICAgfSkpCi19KTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICB2YXIgdGhlRXJyb3Ig
PSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwotCi0gICAgYXNzZXJ0X3Rocm93cyh0aGVF
cnJvciwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwgewotICAg
ICAgICAgICAgc2l6ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0g
ICAgICAgICAgICB9LAotICAgICAgICAgICAgZ2V0IGhpZ2hXYXRlck1hcmsoKSB7Ci0gICAgICAg
ICAgICAgICAgdGhyb3cgdGhlRXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAg
IH0sICdjb25zdHJ1Y3Rpb24gc2hvdWxkIHJlLXRocm93IHRoZSBlcnJvcicpOwotfSwgJ1JlYWRh
YmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayBnZXR0ZXInKTsKLQot
dGVzdChmdW5jdGlvbigpIHsKLSAgICBmb3IgKHZhciBoaWdoV2F0ZXJNYXJrIG9mIFstMSwgLUlu
ZmluaXR5XSkgewotICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCksIGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7Ci0gICAgICAgICAg
ICAgICAgc2l6ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwot
ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgaGlnaFdhdGVyTWFyawotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0sICdjb25zdHJ1Y3Rpb24gc2hvdWxkIHRocm93IGEgUmFuZ2VF
cnJvciBmb3IgJyArIGhpZ2hXYXRlck1hcmspOwotICAgIH0KLQotICAgIGZvciAodmFyIGhpZ2hX
YXRlck1hcmsgb2YgW05hTiwgJ2ZvbycsIHt9XSkgewotICAgICAgICBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBuZXcgUmVhZGFibGVTdHJl
YW0oe30sIHsKLSAgICAgICAgICAgICAgICBzaXplOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBo
aWdoV2F0ZXJNYXJrCi0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgJ2NvbnN0cnVjdGlvbiBz
aG91bGQgdGhyb3cgYSBUeXBlRXJyb3IgZm9yICcgKyBoaWdoV2F0ZXJNYXJrKTsKLSAgICB9Ci19
LCAnUmVhZGFibGUgc3RyZWFtOiBpbnZhbGlkIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsnKTsKLQot
dmFyIHRlc3QyID0gYXN5bmNfdGVzdCgnUmVhZGFibGUgc3RyZWFtOiBpbnZhbGlkIHN0cmF0ZWd5
LnNpemUgcmV0dXJuIHZhbHVlJyk7Ci10ZXN0Mi5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciBu
dW1iZXJPZkNhbGxzID0gMDsKLSAgICB2YXIgZWxlbWVudHMgPSBbTmFOLCAtSW5maW5pdHksICtJ
bmZpbml0eSwgLTFdOwotICAgIHZhciB0aGVFcnJvciA9IFtdOwotICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgdmFyIHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKLSAgICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAg
ICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgYy5lbnF1ZXVlKCdoaScpOwotICAgICAg
ICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdlbnF1ZXVlIGRpZG5cJ3QgdGhyb3cnKTsK
LSAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikgewotICAgICAgICAgICAgICAgICAgICBh
c3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCksIGZ1bmN0aW9uKCkgeyB0aHJvdyBlcnJvcjsg
fSwgJ2VucXVldWUgc2hvdWxkIHRocm93IGEgUmFuZ2VFcnJvciBmb3IgJyArIGVsZW1lbnRzW2ld
KTsKLSAgICAgICAgICAgICAgICAgICAgdGhlRXJyb3JbaV0gPSBlcnJvcjsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHNpemU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50c1tpXTsK
LSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBoaWdoV2F0ZXJNYXJrOiA1Ci0gICAgICAgIH0p
OwotCi0gICAgICAgIHZhciBjYXRjaEZ1bmN0aW9uID0gZnVuY3Rpb24oaSwgZSkgewotICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvcltpXSwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0
IHdpdGggdGhlIGVycm9yIGZvciAnICsgZWxlbWVudHNbaV0pOwotICAgICAgICAgICAgaWYgKCsr
bnVtYmVyT2ZDYWxscywgZWxlbWVudHMubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgdGVzdDIu
ZG9uZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIHJzLmdldFJlYWRl
cigpLmNsb3NlZC5jYXRjaCh0ZXN0Mi5zdGVwX2Z1bmMoY2F0Y2hGdW5jdGlvbi5iaW5kKHRoaXMs
IGkpKSk7Ci0gICAgfQotfSk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHRoZUVycm9y
ID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKLQotICAgIGFzc2VydF90aHJvd3ModGhl
RXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICBuZXcgV3JpdGFibGVTdHJlYW0oe30sIHsKICAg
ICAgICAgICAgIGdldCBzaXplKCkgewogICAgICAgICAgICAgICAgIHRocm93IHRoZUVycm9yOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24v
YmFkLXVuZGVybHlpbmctc291cmNlcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNlcy5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiMmZlMGIxOTA1NTI1ZjQ1YjU4MGZkMzY0NDI2ZDE3Mjc0M2U4
ZGMyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNv
dXJjZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM3OSArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxzY3JpcHQgc3JjPScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Jy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyc+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0ncmVzb3VyY2VzL3N0cmVhbXMtdXRpbHMuanMnPjwvc2NyaXB0
PgotPHNjcmlwdD4KLS8vIFRoaXMgaXMgdXBkYXRlZCB0aWxsIGh0dHBzOi8vZ2l0aHViLmNvbS93
aGF0d2cvc3RyZWFtcy9jb21taXQvZWM1ZmZhMDM2MzA4ZDlmNjM1MGQyOTQ2NTYwZDQ4Y2RiZjA5
MDkzOQotCi10ZXN0KGZ1bmN0aW9uKCkgewotICAgIHZhciB0aGVFcnJvciA9IG5ldyBFcnJvcign
YSB1bmlxdWUgc3RyaW5nJyk7Ci0KLSAgICBhc3NlcnRfdGhyb3dzKHRoZUVycm9yLCBmdW5jdGlv
bigpIHsKLSAgICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgICAgIGdldCBzdGFy
dCgpIHsKLSAgICAgICAgICAgICAgICB0aHJvdyB0aGVFcnJvcjsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfSk7Ci0gICAgfSwgJ2NvbnN0cnVjdGluZyB0aGUgc3RyZWFtIHNob3VsZCByZS10aHJv
dyB0aGUgZXJyb3InKTsKLX0sICdVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcgZ2V0
dGVyJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9y
KCdhIHVuaXF1ZSBzdHJpbmcnKTsKLQotICAgIGFzc2VydF90aHJvd3ModGhlRXJyb3IsIGZ1bmN0
aW9uKCkgewotICAgICAgICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICAgICAgc3RhcnQ6
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHRocm93IHRoZUVycm9yOwotICAgICAgICAg
ICAgfQotICAgICAgICB9KTsKLSAgICB9LCAnY29uc3RydWN0aW5nIHRoZSBzdHJlYW0gc2hvdWxk
IHJlLXRocm93IHRoZSBlcnJvcicpOwotfSwgJ1VuZGVybHlpbmcgc291cmNlIHN0YXJ0OiB0aHJv
d2luZyBtZXRob2QnKTsKLQotdmFyIHRlc3QxID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3Vy
Y2U6IHRocm93aW5nIHB1bGwgZ2V0dGVyIChpbml0aWFsIHB1bGwpJyk7Ci10ZXN0MS5zdGVwKGZ1
bmN0aW9uKCkgewotICAgIHZhciB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5n
Jyk7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgZ2V0IHB1bGwo
KSB7Ci0gICAgICAgICAgICB0aHJvdyB0aGVFcnJvcjsKLSAgICAgICAgfQotICAgIH0pOwotCi0g
ICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4oCi0gICAgICAgIHRlc3QxLnN0ZXBfZnVuYyhm
dW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnY2xvc2VkIHNob3VsZCBub3QgZnVsZmlsbCcp
OyB9KSwKLSAgICAgICAgdGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKLSAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMociwgdGhlRXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRo
ZSB0aHJvd24gZXJyb3InKTsKLSAgICAgICAgICAgIHRlc3QxLmRvbmUoKTsKLSAgICAgICAgfSkp
OwotfSk7Ci0KLXZhciB0ZXN0MiA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiB0aHJv
d2luZyBwdWxsIG1ldGhvZCAoaW5pdGlhbCBwdWxsKScpOwotdGVzdDIuc3RlcChmdW5jdGlvbigp
IHsKLSAgICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwotICAg
IHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgdGhyb3cgdGhlRXJyb3I7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAg
IHJzLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKAotICAgICAgICB0ZXN0Mi5zdGVwX2Z1bmMoZnVu
Y3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ2Nsb3NlZCBzaG91bGQgbm90IGZ1bGZpbGwnKTsg
fSksCi0gICAgICAgIHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKHIsIHRoZUVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUg
dGhyb3duIGVycm9yJyk7Ci0gICAgICAgICAgICB0ZXN0Mi5kb25lKCk7Ci0gICAgICAgIH0pKTsK
LX0pOwotCi12YXIgdGVzdDMgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dp
bmcgcHVsbCBnZXR0ZXIgKHNlY29uZCBwdWxsKScpOwotdGVzdDMuc3RlcChmdW5jdGlvbigpIHsK
LSAgICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwotICAgIHZh
ciBjb3VudGVyID0gMDsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAg
ICBnZXQgcHVsbCgpIHsKLSAgICAgICAgICAgICsrY291bnRlcjsKLSAgICAgICAgICAgIGlmIChj
b3VudGVyID09PSAxKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRlc3QzLnN0ZXBfZnVuYyhm
dW5jdGlvbihjKSB7IGMuZW5xdWV1ZSgnYScpOyB9KQotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICB0aHJvdyB0aGVFcnJvcjsKLSAgICAgICAgfQotICAgIH0pOwotICAgIHZhciByZWFkZXIg
PSBycy5nZXRSZWFkZXIoKTsKLQotICAgIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0My5zdGVwX2Z1
bmMoZnVuY3Rpb24ocikgewotICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVl
OiAnYScsIGRvbmU6IGZhbHNlIH0sICd0aGUgY2h1bmsgcmVhZCBzaG91bGQgYmUgY29ycmVjdCcp
OwotICAgIH0pKTsKLQotICAgIHJlYWRlci5jbG9zZWQudGhlbigKLSAgICAgICAgdGVzdDMuc3Rl
cF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdjbG9zZWQgc2hvdWxkIG5vdCBm
dWxmaWxsJyk7IH0pLAotICAgICAgICB0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgewotICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhyLCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0
IHdpdGggdGhlIHRocm93biBlcnJvcicpOwotICAgICAgICAgICAgdGVzdDMuZG9uZSgpOwotICAg
ICAgICB9KSk7Ci19KTsKLQotdmFyIHRlc3Q0ID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3Vy
Y2U6IHRocm93aW5nIHB1bGwgbWV0aG9kIChzZWNvbmQgcHVsbCknKTsKLXRlc3Q0LnN0ZXAoZnVu
Y3Rpb24oKSB7Ci0gICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcn
KTsKLSAgICB2YXIgY291bnRlciA9IDA7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKLSAgICAgICAgcHVsbDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgKytjb3VudGVyOwot
ICAgICAgICAgICAgaWYgKGNvdW50ZXIgPT09IDEpIHsKLSAgICAgICAgICAgICAgICBjLmVucXVl
dWUoJ2EnKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGhyb3cgdGhl
RXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9KTsKLSAgICB2YXIgcmVhZGVy
ID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgICByZWFkZXIucmVhZCgpLnRoZW4odGVzdDQuc3RlcF9m
dW5jKGZ1bmN0aW9uKHIpIHsgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBk
b25lOiBmYWxzZSB9LCAndGhlIGNodW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJlY3QnKTsgfSkpOwot
Ci0gICAgcmVhZGVyLmNsb3NlZC50aGVuKAotICAgICAgICB0ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rp
b24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ2Nsb3NlZCBzaG91bGQgbm90IGZ1bGZpbGwnKTsgfSks
Ci0gICAgICAgIHRlc3Q0LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKHIsIHRoZUVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgdGhy
b3duIGVycm9yJyk7Ci0gICAgICAgICAgICB0ZXN0NC5kb25lKCk7Ci0gICAgICAgIH0pKTsKLX0p
OwotCi12YXIgdGVzdDUgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcg
Y2FuY2VsIGdldHRlcicpOwotdGVzdDUuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgdGhlRXJy
b3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwotICAgIHZhciBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgICAgIGdldCBjYW5jZWwoKSB7Ci0gICAgICAgICAgICB0aHJvdyB0
aGVFcnJvcjsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgcnMuY2FuY2VsKCkudGhlbigKLSAg
ICAgICAgdGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdjYW5j
ZWwgc2hvdWxkIG5vdCBmdWxmaWxsJyk7IH0pLAotICAgICAgICB0ZXN0NS5zdGVwX2Z1bmMoZnVu
Y3Rpb24ocikgewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyLCB0aGVFcnJvciwgJ2NhbmNl
bCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIHRocm93biBlcnJvcicpOwotICAgICAgICAgICAgdGVz
dDUuZG9uZSgpOwotICAgICAgICB9KSk7Ci19KTsKLQotdmFyIHRlc3Q2ID0gYXN5bmNfdGVzdCgn
VW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIGNhbmNlbCBtZXRob2QnKTsKLXRlc3Q2LnN0ZXAo
ZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJp
bmcnKTsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBjYW5jZWw6
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdGhyb3cgdGhlRXJyb3I7Ci0gICAgICAgIH0KLSAg
ICB9KTsKLQotICAgIHJzLmNhbmNlbCgpLnRoZW4oCi0gICAgICAgIHRlc3Q2LnN0ZXBfZnVuYyhm
dW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnY2FuY2VsIHNob3VsZCBub3QgZnVsZmlsbCcp
OyB9KSwKLSAgICAgICAgdGVzdDYuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKLSAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMociwgdGhlRXJyb3IsICdjYW5jZWwgc2hvdWxkIHJlamVjdCB3aXRoIHRo
ZSB0aHJvd24gZXJyb3InKTsKLSAgICAgICAgICAgIHRlc3Q2LmRvbmUoKTsKLSAgICAgICAgfSkp
OwotfSk7Ci0KLXZhciB0ZXN0NyA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiBjYWxs
aW5nIGVucXVldWUgb24gYW4gZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cn
KTsKLXRlc3Q3LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGNvbnRyb2xsZXI7Ci0gICAgdmFy
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsK
LSAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBy
cy5jYW5jZWwoKTsKLSAgICBjb250cm9sbGVyLmVucXVldWUoJ2EnKSAvLyBDYWxsaW5nIGVucXVl
dWUgYWZ0ZXIgY2FuY2VsaW5nIHNob3VsZCBub3QgdGhyb3cgYW55dGhpbmcuCi0KLSAgICBycy5n
ZXRSZWFkZXIoKS5jbG9zZWQudGhlbih0ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIHRlc3Q3LmRvbmUoJ2Nsb3NlZCBzaG91bGQgZnVsZmlsbCcpOwotICAgIH0pKTsKLX0pOwot
Ci12YXIgdGVzdDggPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1
ZXVlIG9uIGEgbm9uLWVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93Jyk7Ci10
ZXN0OC5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciBjb250cm9sbGVyOwotICAgIHZhciBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAg
ICAgICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAgICAgICAgIGMuZW5xdWV1ZSgnYicpOwotICAg
ICAgICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHJzLmNh
bmNlbCgpOwotICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpIC8vIENhbGxpbmcgZW5xdWV1ZSBh
ZnRlciBjYW5jZWxpbmcgc2hvdWxkIG5vdCB0aHJvdyBhbnl0aGluZy4KLQotICAgIHJzLmdldFJl
YWRlcigpLmNsb3NlZC50aGVuKHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAg
dGVzdDguZG9uZSgnY2xvc2VkIHNob3VsZCBmdWxmaWxsJyk7Ci0gICAgfSkpOwotfSk7Ci0KLXZh
ciB0ZXN0OSA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUg
b24gYSBjbG9zZWQgc3RyZWFtIHNob3VsZCB0aHJvdycpOwotdGVzdDkuc3RlcChmdW5jdGlvbigp
IHsKLSAgICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykg
ewotICAgICAgICAgICAgYy5jbG9zZSgpOwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBjLmVucXVldWUoJ2EnKSB9LCAnY2FsbCB0byBlbnF1
ZXVlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwotICAgICAgICB9Ci0gICAgfSkuZ2V0UmVh
ZGVyKCkuY2xvc2VkLnRoZW4odGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICB0
ZXN0OS5kb25lKCdjbG9zZWQgc2hvdWxkIGZ1bGZpbGwnKTsKLSAgICB9KSk7Ci19KTsKLQotdmFy
IHRlc3QxMCA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUg
b24gYW4gZXJyb3JlZCBzdHJlYW0gc2hvdWxkIHRocm93Jyk7Ci10ZXN0MTAuc3RlcChmdW5jdGlv
bigpIHsKLSAgICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2JvbycpOwotICAgIG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBj
LmVycm9yKHRoZUVycm9yKTsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3ModGhlRXJyb3IsIGZ1
bmN0aW9uKCkgeyBjLmVucXVldWUoJ2EnKSB9LCAnY2FsbCB0byBlbnF1ZXVlIHNob3VsZCB0aHJv
dyB0aGUgZXJyb3InKTsKLSAgICAgICAgfQotICAgIH0pLmdldFJlYWRlcigpLmNsb3NlZC5jYXRj
aCh0ZXN0MTAuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhl
LCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7Ci0gICAg
ICAgIHRlc3QxMC5kb25lKCk7Ci0gICAgfSkpOwotfSk7Ci0KLXZhciB0ZXN0MTEgPSBhc3luY190
ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSB0d2ljZSBvbiBhbiBlbXB0eSBz
dHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZScpOwotdGVzdDExLnN0ZXAoZnVuY3Rp
b24oKSB7Ci0gICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9u
KGMpIHsKLSAgICAgICAgICAgIGMuY2xvc2UoKTsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3Mo
bmV3IFR5cGVFcnJvcigpLCBjLmNsb3NlLCAnc2Vjb25kIGNhbGwgdG8gY2xvc2Ugc2hvdWxkIHRo
cm93IGEgVHlwZUVycm9yJyk7Ci0gICAgICAgIH0KLSAgICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQu
dGhlbih0ZXN0MTEuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyB0ZXN0MTEuZG9uZSgnY2xvc2VkIHNo
b3VsZCBmdWxmaWxsJyk7IH0pKTsKLX0pOwotCi12YXIgdGVzdDEyID0gYXN5bmNfdGVzdCgnVW5k
ZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ugb24gYSBub24tZW1wdHkgc3RyZWFt
IHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUnKTsKLXRlc3QxMi5zdGVwKGZ1bmN0aW9uKCkg
ewotICAgIHZhciBzdGFydENhbGxlZCA9IGZhbHNlOwotICAgIHZhciByZWFkQ2FsbGVkID0gZmFs
c2U7Ci0gICAgdmFyIHJlYWRlciA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0
OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAgICAgICAg
IGMuY2xvc2UoKTsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBj
LmNsb3NlLCAnc2Vjb25kIGNhbGwgdG8gY2xvc2Ugc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7
Ci0gICAgICAgICAgICBzdGFydENhbGxlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9KS5nZXRS
ZWFkZXIoKTsKLQotICAgIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0
aW9uKHIpIHsKLSAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBk
b25lOiBmYWxzZSB9LCAncmVhZCgpIHNob3VsZCByZWFkIHRoZSBlbnF1ZXVlZCBjaHVuaycpOwot
ICAgICAgICByZWFkQ2FsbGVkID0gdHJ1ZTsKLSAgICB9KSk7Ci0gICAgcmVhZGVyLmNsb3NlZC50
aGVuKHRlc3QxMi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFzc2VydF90cnVlKHN0
YXJ0Q2FsbGVkKTsKLSAgICAgICAgYXNzZXJ0X3RydWUocmVhZENhbGxlZCk7Ci0gICAgICAgIHRl
c3QxMi5kb25lKCdjbG9zZWQgc2hvdWxkIGZ1bGZpbGwnKTsKLSAgICB9KSk7Ci19KTsKLQotdmFy
IHRlc3QxMyA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIG9u
IGFuIGVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93Jyk7Ci10ZXN0MTMuc3Rl
cChmdW5jdGlvbigpIHsKLSAgICB2YXIgY29udHJvbGxlcjsKLSAgICB2YXIgc3RhcnRDYWxsZWQg
PSBmYWxzZTsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFy
dDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgICAgICAg
ICBzdGFydENhbGxlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHJzLmNhbmNl
bCgpOwotICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsgLy8gQ2FsbGluZyBjbG9zZSBhZnRlciBjYW5j
ZWxpbmcgc2hvdWxkIG5vdCB0aHJvdyBhbnl0aGluZy4KLQotICAgIHJzLmdldFJlYWRlcigpLmNs
b3NlZC50aGVuKHRlc3QxMy5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFzc2VydF90
cnVlKHN0YXJ0Q2FsbGVkKTsKLSAgICAgICAgdGVzdDEzLmRvbmUoJ2Nsb3NlZCBzaG91bGQgZnVs
ZmlsbCcpOwotICAgIH0pKTsKLX0pOwotCi12YXIgdGVzdDE0ID0gYXN5bmNfdGVzdCgnVW5kZXJs
eWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYSBub24tZW1wdHkgY2FuY2VsZWQgc3RyZWFt
IHNob3VsZCBub3QgdGhyb3cnKTsKLXRlc3QxNC5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciBj
b250cm9sbGVyOwotICAgIHZhciBzdGFydENhbGxlZCA9IGZhbHNlOwotICAgIHZhciBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAg
ICAgICBjb250cm9sbGVyID0gYzsKLSAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAg
ICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBycy5j
YW5jZWwoKTsKLSAgICBjb250cm9sbGVyLmNsb3NlKCk7IC8vIENhbGxpbmcgY2xvc2UgYWZ0ZXIg
Y2FuY2VsaW5nIHNob3VsZCBub3QgdGhyb3cgYW55dGhpbmcuCi0KLSAgICBycy5nZXRSZWFkZXIo
KS5jbG9zZWQudGhlbih0ZXN0MTQuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICBhc3Nl
cnRfdHJ1ZShzdGFydENhbGxlZCk7Ci0gICAgICAgIHRlc3QxNC5kb25lKCdjbG9zZWQgc2hvdWxk
IGZ1bGZpbGwnKTsKLSAgICB9KSk7Ci19KTsKLQotdmFyIHRlc3QxNSA9IGFzeW5jX3Rlc3QoJ1Vu
ZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdycp
OwotdGVzdDE1LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9y
KCdib28nKTsKLSAgICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxzZTsKLSAgICBuZXcgUmVhZGFibGVT
dHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgYy5lcnJv
cih0aGVFcnJvcik7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwg
Yy5jbG9zZSwgJ2NhbGwgdG8gY2xvc2Ugc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7Ci0gICAg
ICAgICAgICBzdGFydENhbGxlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9KS5nZXRSZWFkZXIo
KS5jbG9zZWQuY2F0Y2godGVzdDE1LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAgIGFz
c2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJv
ciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJykKLSAgICAgICAgdGVzdDE1
LmRvbmUoKTsKLSAgICB9KSk7Ci19KTsKLQotdmFyIHRlc3QxNiA9IGFzeW5jX3Rlc3QoJ1VuZGVy
bHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIHR3aWNlIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25k
IHRpbWUnKTsKLXRlc3QxNi5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciB0aGVFcnJvciA9IG5l
dyBFcnJvcignYm9vJyk7Ci0gICAgdmFyIHN0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0gICAgbmV3IFJl
YWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAg
IGMuZXJyb3IodGhlRXJyb3IpOwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksIGMuZXJyb3IsICdzZWNvbmQgY2FsbCB0byBlcnJvciBzaG91bGQgdGhyb3cgYSBUeXBl
RXJyb3InKTsKLSAgICAgICAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICAgICAgfQotICAg
IH0pLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaCh0ZXN0MTYuc3RlcF9mdW5jKGZ1bmN0aW9uKGUp
IHsKLSAgICAgICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwotICAgICAgICBhc3NlcnRfZXF1
YWxzKGUsIHRoZUVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsK
LSAgICAgICAgdGVzdDE2LmRvbmUoKTsKLSAgICB9KSk7Ci19KTsKLQotdmFyIHRlc3QxNyA9IGFz
eW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIGFmdGVyIGNsb3NlIHNo
b3VsZCB0aHJvdycpOwotdGVzdDE3LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHN0YXJ0Q2Fs
bGVkID0gZmFsc2U7Ci0gICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1
bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGMuY2xvc2UoKTsKLSAgICAgICAgICAgIGFzc2VydF90
aHJvd3MobmV3IFR5cGVFcnJvcigpLCBjLmVycm9yLCAnY2FsbCB0byBlcnJvciBzaG91bGQgdGhy
b3cgYSBUeXBlRXJyb3InKTsKLSAgICAgICAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICAg
ICAgfQotICAgIH0pLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKHRlc3QxNy5zdGVwX2Z1bmMoZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKLSAgICAgICAgdGVz
dDE3LmRvbmUoJ2Nsb3NlZCBzaG91bGQgZnVsZmlsbCcpOwotICAgIH0pKTsKLX0pOwotCi12YXIg
dGVzdDE4ID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYW5k
IHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgZnJvbSBzdGFydCBzaG91bGQgY2F1c2UgdGhl
IHN0cmVhbSB0byBlcnJvciB3aXRoIHRoZSBmaXJzdCBlcnJvcicpOwotdGVzdDE4LnN0ZXAoZnVu
Y3Rpb24oKSB7Ci0gICAgdmFyIHN0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0gICAgdmFyIGZpcnN0RXJy
b3IgPSBuZXcgRXJyb3IoJzEnKTsKLSAgICB2YXIgc2Vjb25kRXJyb3IgPSBuZXcgRXJyb3IoJzIn
KTsKLSAgICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykg
ewotICAgICAgICAgICAgYy5lcnJvcihmaXJzdEVycm9yKTsKLQotICAgICAgICAgICAgc3RhcnRD
YWxsZWQgPSB0cnVlOwotCi0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoc2Vjb25k
RXJyb3IpOwotICAgICAgICB9Ci0gICAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkLmNhdGNoKHRlc3Qx
OC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxl
ZCk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoZSwgZmlyc3RFcnJvciwgJ3N0cmVhbSBzaG91bGQg
ZXJyb3Igd2l0aCB0aGUgZmlyc3QgZXJyb3InKTsKLSAgICAgICAgdGVzdDE4LmRvbmUoKTsKLSAg
ICB9KSk7Ci19KTsKLQotdmFyIHRlc3QxOSA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNl
OiBjYWxsaW5nIGVycm9yIGFuZCByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGZyb20gcHVs
bCBzaG91bGQgY2F1c2UgdGhlIHN0cmVhbSB0byBlcnJvciB3aXRoIHRoZSBmaXJzdCBlcnJvcicp
OwotdGVzdDE5LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHN0YXJ0Q2FsbGVkID0gZmFsc2U7
Ci0gICAgdmFyIGZpcnN0RXJyb3IgPSBuZXcgRXJyb3IoJzEnKTsKLSAgICB2YXIgc2Vjb25kRXJy
b3IgPSBuZXcgRXJyb3IoJzInKTsKLSAgICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBw
dWxsOiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBjLmVycm9yKGZpcnN0RXJyb3IpOwotCi0g
ICAgICAgICAgICBzdGFydENhbGxlZCA9IHRydWU7Ci0KLSAgICAgICAgICAgIHJldHVybiBQcm9t
aXNlLnJlamVjdChzZWNvbmRFcnJvcik7Ci0gICAgICAgIH0KLSAgICB9KS5nZXRSZWFkZXIoKS5j
bG9zZWQuY2F0Y2godGVzdDE5LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAgIGFzc2Vy
dF90cnVlKHN0YXJ0Q2FsbGVkKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCBmaXJzdEVycm9y
LCAnc3RyZWFtIHNob3VsZCBlcnJvciB3aXRoIHRoZSBmaXJzdCBlcnJvcicpOwotICAgICAgICB0
ZXN0MTkuZG9uZSgpOwotICAgIH0pKTsKLX0pOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9icmFuZC1jaGVja3MtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24v
YnJhbmQtY2hlY2tzLWV4cGVjdGVkLnR4dAppbmRleCAxMTY2OTg2MWZkYTc2ZjYyZTRiZWFjYTFm
YTM1NDc1NWI3Yzc4NTJjLi42MTI2MjJmMDE5MTEwMmI0OWViNGE3OTllMWU5MTgwMmVjOWY4MDZj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlv
bi9icmFuZC1jaGVja3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVm
ZXJlbmNlLWltcGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy1leHBlY3RlZC50eHQKQEAgLTEsMjgg
KzEsOCBAQAogCi1QQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVj
dG9yIGluZGlyZWN0bHkgCi1QQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5IAotUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUu
Y2FuY2VsIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtLnByb3Rv
dHlwZS5nZXRSZWFkZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJl
YW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHdvcmtzIGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFu
ZCBpdHMgYXJndW1lbnRzIAotUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRvIHdv
cmtzIGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzIAotUEFTUyBSZWFk
YWJsZVN0cmVhbS5wcm90b3R5cGUudGVlIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtUmVhZGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50
IAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUuY2xvc2VkIGVuZm9yY2VzIGEg
YnJhbmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5jYW5jZWwg
ZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90
eXBlLnJlYWQgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1SZWFk
ZXIucHJvdG90eXBlLnJlYWQgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVT
dHJlYW1SZWFkZXIucHJvdG90eXBlLnJlbGVhc2VMb2NrIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sg
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIG9u
IGl0cyBhcmd1bWVudCAKLVBBU1MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIGNhbid0IGJlIGdp
dmVuIGEgZnVsbHktY29uc3RydWN0ZWQgUmVhZGFibGVTdHJlYW0gCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlci5wcm90b3R5cGUuY2xvc2UgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBB
U1MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5lbnF1ZXVlIGVuZm9yY2VzIGEg
YnJhbmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUuZXJy
b3IgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKIFBBU1MgV3JpdGFibGVTdHJlYW0ucHJvdG90eXBl
LmNsb3NlZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAogUEFTUyBXcml0YWJsZVN0cmVhbS5wcm90
b3R5cGUucmVhZHkgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKIFBBU1MgV3JpdGFibGVTdHJlYW0u
cHJvdG90eXBlLnN0YXRlIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCiBQQVNTIFdyaXRhYmxlU3Ry
ZWFtLnByb3RvdHlwZS5hYm9ydCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAogUEFTUyBXcml0YWJs
ZVN0cmVhbS5wcm90b3R5cGUud3JpdGUgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKIFBBU1MgV3Jp
dGFibGVTdHJlYW0ucHJvdG90eXBlLmNsb3NlIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCi1QQVNT
IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUgc2hvdWxkIHdvcmsgZ2Vu
ZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMgCi1QQVNTIENvdW50UXVldWlu
Z1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplIHNob3VsZCB3b3JrIGdlbmVyaWNhbGx5IG9uIGl0cyB0
aGlzIGFuZCBpdHMgYXJndW1lbnRzIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9icmFuZC1jaGVja3MuaHRtbCBiL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy5odG1sCmluZGV4
IGVmNDFmZTYwNGMwMmM3ZDkyNDJkNDgyYzIyNzBlMTc1OGRmNDMyYTIuLmU1MDg4OWQ4ZTY2OWY0
OGFkMzRmODQ5YTU1YzE3YTA0Njc4NjM4ZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVh
bXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy5odG1sCisrKyBiL0xheW91
dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy5odG1s
CkBAIC01LDM3ICs1LDYgQEAKIDxzY3JpcHQ+CiAvLyBUaGlzIGlzIHVwZGF0ZWQgdGlsbCBodHRw
czovL2dpdGh1Yi5jb20vd2hhdHdnL3N0cmVhbXMvY29tbWl0L2VjNWZmYTAzNjMwOGQ5ZjYzNTBk
Mjk0NjU2MGQ0OGNkYmYwOTA5MzkKIAotdmFyIFJlYWRhYmxlU3RyZWFtUmVhZGVyOwotdmFyIFJl
YWRhYmxlU3RyZWFtQ29udHJvbGxlcjsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICAvLyBJdCdz
IG5vdCBleHBvc2VkIGdsb2JhbGx5LCBidXQgd2UgdGVzdCBhIGZldyBvZiBpdHMgcHJvcGVydGll
cyBoZXJlLgotICAgIFJlYWRhYmxlU3RyZWFtUmVhZGVyID0gKG5ldyBSZWFkYWJsZVN0cmVhbSgp
KS5nZXRSZWFkZXIoKS5jb25zdHJ1Y3RvcjsKLX0sICdDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVh
bVJlYWRlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5Jyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0g
ICAgLy8gSXQncyBub3QgZXhwb3NlZCBnbG9iYWxseSwgYnV0IHdlIHRlc3QgYSBmZXcgb2YgaXRz
IHByb3BlcnRpZXMgaGVyZS4KLSAgICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFy
dDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyID0g
Yy5jb25zdHJ1Y3RvcjsKLSAgICAgICAgfQotICAgIH0pOwotfSwgJ0NhbiBnZXQgdGhlIFJlYWRh
YmxlU3RyZWFtQ29udHJvbGxlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5Jyk7Ci0KLWZ1bmN0aW9u
IGZha2VSZWFkYWJsZVN0cmVhbSgpIHsKLSAgICByZXR1cm4gewotICAgICAgICBjYW5jZWw6IGZ1
bmN0aW9uKHJlYXNvbikgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7IH0sCi0gICAgICAgIGdl
dFJlYWRlcjogZnVuY3Rpb24oKSB7IHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIobmV3
IFJlYWRhYmxlU3RyZWFtKCkpOyB9LAotICAgICAgICBwaXBlVGhyb3VnaDogZnVuY3Rpb24ob2Jq
LCBvcHRpb25zKSB7IHJldHVybiBvYmoucmVhZGFibGU7IH0sCi0gICAgICAgIHBpcGVUbzogZnVu
Y3Rpb24oKSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsgfSwKLSAgICAgICAgdGVlOiBmdW5j
dGlvbigpIHsgcmV0dXJuIFtyZWFsUmVhZGFibGVTdHJlYW0oKSwgcmVhbFJlYWRhYmxlU3RyZWFt
KCldOyB9Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gcmVhbFJlYWRhYmxlU3RyZWFtKCkgewotICAg
IHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLX0KLQogZnVuY3Rpb24gZmFrZVdyaXRhYmxl
U3RyZWFtKCkgewogICByZXR1cm4gewogICAgIGdldCBjbG9zZWQoKSB7IHJldHVybiBQcm9taXNl
LnJlc29sdmUoKTsgfSwKQEAgLTQ3LDUxICsxNiw4IEBAIGZ1bmN0aW9uIGZha2VXcml0YWJsZVN0
cmVhbSgpIHsKICAgfTsKIH0KIAotZnVuY3Rpb24gcmVhbFdyaXRhYmxlU3RyZWFtKCkgewotICBy
ZXR1cm4gbmV3IFdyaXRhYmxlU3RyZWFtKCk7Ci19Ci0KLWZ1bmN0aW9uIGZha2VSZWFkYWJsZVN0
cmVhbVJlYWRlcigpIHsKLSAgICByZXR1cm4gewotICAgICAgICBnZXQgY2xvc2VkKCkgeyByZXR1
cm4gUHJvbWlzZS5yZXNvbHZlKCk7IH0sCi0gICAgICAgIGNhbmNlbDogZnVuY3Rpb24ocmVhc29u
KSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsgfSwKLSAgICAgICAgcmVhZDogZnVuY3Rpb24o
KSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUoeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVl
IH0pOyB9LAotICAgICAgICByZWxlYXNlTG9jazogZnVuY3Rpb24oKSB7IHJldHVybjsgfQotICAg
IH07Ci19Ci0KLWZ1bmN0aW9uIGZha2VSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIoKSB7Ci0gICAg
cmV0dXJuIHsKLSAgICAgICAgY2xvc2U6IGZ1bmN0aW9uKCkgeyB9LAotICAgICAgICBlbnF1ZXVl
OiBmdW5jdGlvbihjaHVuaykgeyB9LAotICAgICAgICBlcnJvcjogZnVuY3Rpb24oZSkgeyB9Ci0g
ICAgfTsKLX0KLQotZnVuY3Rpb24gZmFrZUJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koKSB7Ci0g
ICAgcmV0dXJuIHsKLSAgICAgICAgaGlnaFdhdGVyTWFyazogMCwKLSAgICAgICAgc2l6ZTogZnVu
Y3Rpb24oY2h1bmspIHsKLSAgICAgICAgICAgIHJldHVybiBjaHVuay5ieXRlTGVuZ3RoOwotICAg
ICAgICB9Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gcmVhbEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRl
Z3koKSB7Ci0gICAgcmV0dXJuIG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdh
dGVyTWFyazogMSB9KTsKLX0KLQotZnVuY3Rpb24gZmFrZUNvdW50UXVldWluZ1N0cmF0ZWd5KCkg
ewotICAgIHJldHVybiB7Ci0gICAgICAgIGhpZ2hXYXRlck1hcms6IDAsCi0gICAgICAgIHNpemU6
IGZ1bmN0aW9uKGNodW5rKSB7Ci0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgfQotICAg
IH0KLX0KLQotZnVuY3Rpb24gcmVhbENvdW50UXVldWluZ1N0cmF0ZWd5KCkgewotICAgIHJldHVy
biBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAxIH0pOworZnVuY3Rp
b24gcmVhbFJlYWRhYmxlU3RyZWFtKCkgeworICAgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0o
KTsKIH0KIAogZnVuY3Rpb24gZ2V0dGVyUmVqZWN0cyh0ZXN0LCBvYmosIGdldHRlck5hbWUsIHRh
cmdldCwgZW5kVGVzdCkgewpAQCAtMTI2LDEwMSArNTIsNiBAQCBmdW5jdGlvbiBnZXR0ZXJUaHJv
d3Mob2JqLCBnZXR0ZXJOYW1lLCB0YXJnZXQpIHsKICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IoKSwgZnVuY3Rpb24oKSB7IGdldHRlci5jYWxsKHRhcmdldCk7IH0sIGdldHRlck5hbWUg
KyAnIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwogfQogCi1mdW5jdGlvbiBtZXRob2RUaHJv
d3Mob2JqLCBtZXRob2ROYW1lLCB0YXJnZXQpIHsKLSAgICB2YXIgbWV0aG9kID0gb2JqW21ldGhv
ZE5hbWVdOwotCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkg
eyBtZXRob2QuY2FsbCh0YXJnZXQpOyB9LCBtZXRob2ROYW1lICsgJyBzaG91bGQgdGhyb3cgYSBU
eXBlRXJyb3InKTsKLX0KLQotdmFyIHRlc3QxID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0u
cHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7Ci10ZXN0MS5zdGVwKGZ1
bmN0aW9uKCkgewotICAgIG1ldGhvZFJlamVjdHModGVzdDEsIFJlYWRhYmxlU3RyZWFtLnByb3Rv
dHlwZSwgJ2NhbmNlbCcsIGZha2VSZWFkYWJsZVN0cmVhbSgpKTsKLSAgICBtZXRob2RSZWplY3Rz
KHRlc3QxLCBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICdjYW5jZWwnLCByZWFsV3JpdGFibGVT
dHJlYW0oKSwgdHJ1ZSk7Ci19KTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICBtZXRob2RUaHJv
d3MoUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLCAnZ2V0UmVhZGVyJywgZmFrZVJlYWRhYmxlU3Ry
ZWFtKCkpOwotICAgIG1ldGhvZFRocm93cyhSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICdnZXRS
ZWFkZXInLCByZWFsV3JpdGFibGVTdHJlYW0oKSk7Ci19LCAnUmVhZGFibGVTdHJlYW0ucHJvdG90
eXBlLmdldFJlYWRlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7Ci0KLXRlc3QoZnVuY3Rpb24o
KSB7Ci0gICAgdmFyIHBpcGVUb0FyZ3VtZW50czsKLSAgICB2YXIgdGhpc1ZhbHVlID0gewotICAg
ICAgICBwaXBlVG86IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcGlwZVRvQXJndW1lbnRzID0g
YXJndW1lbnRzOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHZhciBpbnB1dCA9IHsgcmVhZGFi
bGU6IHt9LCB3cml0YWJsZToge30gfTsKLSAgICB2YXIgb3B0aW9ucyA9IHt9OwotICAgIHZhciBy
ZXN1bHQgPSBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2guY2FsbCh0aGlzVmFs
dWUsIGlucHV0LCBvcHRpb25zKTsKLQotICAgIGFzc2VydF9hcnJheV9lcXVhbHMocGlwZVRvQXJn
dW1lbnRzLCBbaW5wdXQud3JpdGFibGUsIG9wdGlvbnNdLCAnY29ycmVjdCBhcmd1bWVudHMgc2hv
dWxkIGJlIHBhc3NlZCB0byB0aGlzVmFsdWUucGlwZVRvJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhy
ZXN1bHQsIGlucHV0LnJlYWRhYmxlLCAncmV0dXJuIHZhbHVlIHNob3VsZCBiZSB0aGUgcGFzc2Vk
IHJlYWRhYmxlIHByb3BlcnR5Jyk7Ci19LCAnUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVU
aHJvdWdoIHdvcmtzIGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzJyk7
Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVU
by5jYWxsKGZha2VSZWFkYWJsZVN0cmVhbSgpLCBmYWtlV3JpdGFibGVTdHJlYW0oKSk7IC8vIENo
ZWNrIGl0IGRvZXMgbm90IHRocm93LgotfSwgJ1JlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBl
VG8gd29ya3MgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMnKTsKLQot
dGVzdChmdW5jdGlvbigpIHsKLSAgICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW0ucHJvdG90
eXBlLCAndGVlJywgZmFrZVJlYWRhYmxlU3RyZWFtKCkpOwotICAgIG1ldGhvZFRocm93cyhSZWFk
YWJsZVN0cmVhbS5wcm90b3R5cGUsICd0ZWUnLCByZWFsV3JpdGFibGVTdHJlYW0oKSk7Ci19LCAn
UmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnRlZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7Ci0K
LXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1
bmN0aW9uKCkgeyBuZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIoZmFrZVJlYWRhYmxlU3RyZWFtKCkp
OyB9LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgc2hvdWxkIHRocm93Jyk7
Ci19LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBvbiBpdHMg
YXJndW1lbnQnKTsKLQotdmFyIHRlc3QyID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW1SZWFk
ZXIucHJvdG90eXBlLmNsb3NlZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7Ci10ZXN0Mi5zdGVw
KGZ1bmN0aW9uKCkgewotICAgIGdldHRlclJlamVjdHModGVzdDIsIFJlYWRhYmxlU3RyZWFtUmVh
ZGVyLnByb3RvdHlwZSwgJ2Nsb3NlZCcsIGZha2VSZWFkYWJsZVN0cmVhbVJlYWRlcigpKTsKLSAg
ICBnZXR0ZXJSZWplY3RzKHRlc3QyLCBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUsICdj
bG9zZWQnLCByZWFsUmVhZGFibGVTdHJlYW0oKSwgdHJ1ZSk7Ci19KTsKLQotdmFyIHRlc3QzID0g
YXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNl
cyBhIGJyYW5kIGNoZWNrJyk7Ci10ZXN0My5zdGVwKGZ1bmN0aW9uKCkgewotICAgIG1ldGhvZFJl
amVjdHModGVzdDMsIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZSwgJ2NhbmNlbCcsIGZh
a2VSZWFkYWJsZVN0cmVhbVJlYWRlcigpKTsKLSAgICBtZXRob2RSZWplY3RzKHRlc3QzLCBSZWFk
YWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUsICdjYW5jZWwnLCByZWFsUmVhZGFibGVTdHJlYW0o
KSwgdHJ1ZSk7Ci19KTsKLQotdmFyIHRlc3Q0ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW1S
ZWFkZXIucHJvdG90eXBlLnJlYWQgZW5mb3JjZXMgYSBicmFuZCBjaGVjaycpOwotdGVzdDQuc3Rl
cChmdW5jdGlvbigpIHsKLSAgICBtZXRob2RSZWplY3RzKHRlc3Q0LCBSZWFkYWJsZVN0cmVhbVJl
YWRlci5wcm90b3R5cGUsICdyZWFkJywgZmFrZVJlYWRhYmxlU3RyZWFtUmVhZGVyKCkpOwotICAg
IG1ldGhvZFJlamVjdHModGVzdDQsIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZSwgJ3Jl
YWQnLCByZWFsUmVhZGFibGVTdHJlYW0oKSwgdHJ1ZSk7Ci19KTsKLQotdmFyIHRlc3Q1ID0gYXN5
bmNfdGVzdCgnUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLnJlYWQgZW5mb3JjZXMgYSBi
cmFuZCBjaGVjaycpOwotdGVzdDUuc3RlcChmdW5jdGlvbigpIHsKLSAgICBtZXRob2RSZWplY3Rz
KHRlc3Q1LCBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUsICdyZWFkJywgZmFrZVJlYWRh
YmxlU3RyZWFtUmVhZGVyKCkpOwotICAgIG1ldGhvZFJlamVjdHModGVzdDUsIFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyLnByb3RvdHlwZSwgJ3JlYWQnLCByZWFsUmVhZGFibGVTdHJlYW0oKSwgdHJ1ZSk7
Ci19KTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJl
YW1SZWFkZXIucHJvdG90eXBlLCAncmVsZWFzZUxvY2snLCBmYWtlUmVhZGFibGVTdHJlYW1SZWFk
ZXIoKSk7Ci0gICAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZSwg
J3JlbGVhc2VMb2NrJywgcmVhbFJlYWRhYmxlU3RyZWFtKCkpOwotfSwgJ1JlYWRhYmxlU3RyZWFt
UmVhZGVyLnByb3RvdHlwZS5yZWxlYXNlTG9jayBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7Ci0K
LXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1
bmN0aW9uKCkgeyBuZXcgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKGZha2VSZWFkYWJsZVN0cmVh
bSgpKTsgfSwgJ0NvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBzaG91bGQg
dGhyb3cnKTsKLX0sICdSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgZW5mb3JjZXMgYSBicmFuZCBj
aGVjayBvbiBpdHMgYXJndW1lbnQnKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IG5ldyBSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIocmVhbFJlYWRhYmxlU3RyZWFtKCkpOyB9LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyIHNob3VsZCB0aHJvdycpOwotfSwgJ1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlciBjYW5cJ3QgYmUgZ2l2ZW4gYSBmdWxseS1jb25zdHJ1Y3RlZCBSZWFkYWJsZVN0cmVh
bScpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyLnByb3RvdHlwZSwgJ2Nsb3NlJywgZmFrZVJlYWRhYmxlU3RyZWFtQ29udHJvbGxl
cigpKTsKLX0sICdSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmNsb3NlIGVuZm9y
Y2VzIGEgYnJhbmQgY2hlY2snKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgbWV0aG9kVGhyb3dz
KFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUsICdlbnF1ZXVlJywgZmFrZVJlYWRh
YmxlU3RyZWFtQ29udHJvbGxlcigpKTsKLX0sICdSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJv
dG90eXBlLmVucXVldWUgZW5mb3JjZXMgYSBicmFuZCBjaGVjaycpOwotCi10ZXN0KGZ1bmN0aW9u
KCkgewotICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZSwg
J2Vycm9yJywgZmFrZVJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcigpKTsKLX0sICdSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmVycm9yIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsK
LQogdmFyIHRlc3Q2ID0gYXN5bmNfdGVzdCgnV3JpdGFibGVTdHJlYW0ucHJvdG90eXBlLmNsb3Nl
ZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7CiB0ZXN0Ni5zdGVwKGZ1bmN0aW9uKCkgewogICAg
IGdldHRlclJlamVjdHModGVzdDYsIFdyaXRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ2Nsb3NlZCcs
IGZha2VXcml0YWJsZVN0cmVhbSgpKTsKQEAgLTI1NSwyNyArODYsNCBAQCB0ZXN0MTAuc3RlcChm
dW5jdGlvbigpIHsKICAgICBtZXRob2RSZWplY3RzKHRlc3QxMCwgV3JpdGFibGVTdHJlYW0ucHJv
dG90eXBlLCAnY2xvc2UnLCBmYWtlV3JpdGFibGVTdHJlYW0oKSk7CiAgICAgbWV0aG9kUmVqZWN0
cyh0ZXN0MTAsIFdyaXRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ2Nsb3NlJywgcmVhbFJlYWRhYmxl
U3RyZWFtKCksIHRydWUpOwogfSk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHRoaXNW
YWx1ZSA9IG51bGw7Ci0gICAgdmFyIHJldHVyblZhbHVlID0geyAncmV0dXJuZWQgZnJvbSc6ICdi
eXRlTGVuZ3RoIGdldHRlcicgfTsKLSAgICB2YXIgY2h1bmsgPSB7Ci0gICAgICAgIGdldCBieXRl
TGVuZ3RoKCkgewotICAgICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOwotICAgICAgICB9Ci0g
ICAgfTsKLQotICAgIGFzc2VydF9lcXVhbHMoQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90
b3R5cGUuc2l6ZS5jYWxsKHRoaXNWYWx1ZSwgY2h1bmspLCByZXR1cm5WYWx1ZSk7Ci19LCAnQnl0
ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSBzaG91bGQgd29yayBnZW5lcmlj
YWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cycpOwotCi10ZXN0KGZ1bmN0aW9uKCkg
ewotICAgIHZhciB0aGlzVmFsdWUgPSBudWxsOwotICAgIHZhciBjaHVuayA9IHsKLSAgICAgICAg
Z2V0IGJ5dGVMZW5ndGgoKSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaG91
bGRuXCd0IGJlIGNhbGxlZCcpOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIGFzc2VydF9lcXVh
bHMoQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUuY2FsbCh0aGlzVmFsdWUsIGNo
dW5rKSwgMSk7Ci19LCAnQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUgc2hvdWxk
IHdvcmsgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMnKTsKIDwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50
YXRpb24vYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9ieXRlLWxlbmd0aC1xdWV1aW5n
LXN0cmF0ZWd5LWV4cGVjdGVkLnR4dAppbmRleCAxOTEyN2FlNTc4ODI0ODZkNjMxMDMzZTUzYjRj
MmE2NzAzZmQ4ZGNjLi41YjFmYzkxZGFlZGVkZTQ5MGVlZjA0ZjY3ZjBlNGM2MDRkZWIzODViIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9i
eXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0
cmF0ZWd5LWV4cGVjdGVkLnR4dApAQCAtMSw4ICsxLDMgQEAKIAotUEFTUyBDYW4gY29uc3RydWN0
IGEgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSB3aXRoIGEgdmFsaWQgaGlnaCB3YXRlciBtYXJr
IAotUEFTUyBDYW4gY29uc3RydWN0IGEgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSB3aXRoIGFu
eSB2YWx1ZSBhcyBpdHMgaGlnaCB3YXRlciBtYXJrIAotUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0
cmF0ZWd5IGNvbnN0cnVjdG9yIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCB3cm9uZyBhcmd1bWVu
dHMgCi1QQVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgc2l6ZSBiZWhhdmVzIGFzIGV4cGVj
dGVkIHdpdGggd3JvbmcgYXJndW1lbnRzIAotUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5
IGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IHByb3BlcnRpZXMgCiBQQVNTIENsb3NpbmcgYSB3
cml0YWJsZSBzdHJlYW0gd2l0aCBpbi1mbGlnaHQgd3JpdGVzIGJlbG93IHRoZSBoaWdoIHdhdGVy
IG1hcmsgZGVsYXlzIHRoZSBjbG9zZSBjYWxsIHByb3Blcmx5IAogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9ieXRlLWxlbmd0aC1xdWV1
aW5nLXN0cmF0ZWd5Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwKaW5kZXggNGZhZGI2NDQy
MTBkMGMwNTNlMTQ0OGZkZmFiYzEwZmRiYTU5MzE3Yy4uMDAzODAwYjIzOGQ2NTE2MTc5NGE2NzZl
ZGI4YzUyZjFiMTQxYTc4MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5odG1sCisrKyBi
L0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2J5dGUtbGVuZ3Ro
LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbApAQCAtNSw2OCArNSw2IEBACiA8c2NyaXB0PgogLy8gVGhp
cyBpcyB1cGRhdGVkIHRpbGwgaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9zdHJlYW1zL2NvbW1p
dC9lYzVmZmEwMzYzMDhkOWY2MzUwZDI5NDY1NjBkNDhjZGJmMDkwOTM5CiAKLXRlc3QoZnVuY3Rp
b24oKSB7Ci0gICAgdmFyIHN0cmF0ZWd5ID0gbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3ko
eyBoaWdoV2F0ZXJNYXJrOiA0IH0pOwotfSwgJ0NhbiBjb25zdHJ1Y3QgYSBCeXRlTGVuZ3RoUXVl
dWluZ1N0cmF0ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsnKTsKLQotdGVzdChmdW5j
dGlvbigpIHsKLSAgICBmb3IgKHZhciBoaWdoV2F0ZXJNYXJrIG9mIFstSW5maW5pdHksIE5hTiwg
J2ZvbycsIHt9LCBmdW5jdGlvbiAoKSB7fV0pIHsKLSAgICAgICAgdmFyIHN0cmF0ZWd5ID0gbmV3
IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrIH0pOwotICAgICAgICBh
c3NlcnRfdHJ1ZShPYmplY3QuaXMoc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaywgaGlnaFdhdGVyTWFy
ayksIGhpZ2hXYXRlck1hcmsgKyAnIGdldHMgc2V0IGNvcnJlY3RseScpOwotICAgIH0KLX0sICdD
YW4gY29uc3RydWN0IGEgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSB3aXRoIGFueSB2YWx1ZSBh
cyBpdHMgaGlnaCB3YXRlciBtYXJrJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGhp
Z2hXYXRlck1hcmsgPSAxOwotICAgIHZhciBoaWdoV2F0ZXJNYXJrT2JqZWN0R2V0dGVyID0gewot
ICAgICAgICBnZXQgaGlnaFdhdGVyTWFyaygpIHsgcmV0dXJuIGhpZ2hXYXRlck1hcms7IH0sCi0g
ICAgfTsKLSAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ3dvdyEnKTsKLSAgICB2YXIgaGlnaFdh
dGVyTWFya09iamVjdEdldHRlclRocm93aW5nID0gewotICAgICAgICBnZXQgaGlnaFdhdGVyTWFy
aygpIHsgdGhyb3cgZXJyb3I7IH0sCi0gICAgfTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IoKSwgZnVuY3Rpb24oKSB7IG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KCk7IH0s
ICdjb25zdHJ1Y3Rpb24gZmFpbHMgd2l0aCB1bmRlZmluZWQnKTsKLSAgICBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0
ZWd5KG51bGwpOyB9LCAnY29uc3RydWN0aW9uIGZhaWxzIHdpdGggbnVsbCcpOwotICAgIG5ldyBC
eXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KCdwb3RhdG8nKTsgLy8gQ29uc3RydWN0aW9uIHN1Y2Nl
ZWRzIHdpdGggYSByYW5kb20gbm9uLW9iamVjdCB0eXBlLgotICAgIG5ldyBCeXRlTGVuZ3RoUXVl
dWluZ1N0cmF0ZWd5KHt9KTsgLy8gQ29uc3RydWN0aW9uIHN1Y2NlZWRzIHdpdGggYW4gb2JqZWN0
IHdpdGhvdXQgYSBoaWdoV2F0ZXJNYXJrIHByb3BlcnR5LgotICAgIG5ldyBCeXRlTGVuZ3RoUXVl
dWluZ1N0cmF0ZWd5KGhpZ2hXYXRlck1hcmtPYmplY3RHZXR0ZXIpOyAvLyBDb25zdHJ1Y3Rpb24g
c3VjY2VlZHMgd2l0aCBhbiBvYmplY3Qgd2l0aCBhIGhpZ2hXYXRlck1hcmsgZ2V0dGVyLgotICAg
IGFzc2VydF90aHJvd3MoZXJyb3IsIGZ1bmN0aW9uKCkgeyBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdT
dHJhdGVneShoaWdoV2F0ZXJNYXJrT2JqZWN0R2V0dGVyVGhyb3dpbmcpOyB9LAotICAgICAgICAg
ICAgICAgICAgJ2NvbnN0cnVjdGlvbiBmYWlscyB3aXRoIGFuIG9iamVjdCB3aXRoIGEgdGhyb3dp
bmcgaGlnaFdhdGVyTWFyayBnZXR0ZXInKTsKLX0sICdCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5
IGNvbnN0cnVjdG9yIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCB3cm9uZyBhcmd1bWVudHMnKTsK
LQotdGVzdChmdW5jdGlvbigpIHsKLSAgICB2YXIgc2l6ZSA9IDEwMjQ7Ci0gICAgdmFyIGNodW5r
ID0geyBieXRlTGVuZ3RoOiBzaXplIH07Ci0gICAgdmFyIGNodW5rR2V0dGVyID0gewotICAgICAg
ICBnZXQgYnl0ZUxlbmd0aCgpIHsgcmV0dXJuIHNpemU7IH0sCi0gICAgfQotICAgIHZhciBlcnJv
ciA9IG5ldyBFcnJvcignd293IScpOwotICAgIHZhciBjaHVua0dldHRlclRocm93aW5nID0gewot
ICAgICAgICBnZXQgYnl0ZUxlbmd0aCgpIHsgdGhyb3cgZXJyb3I7IH0sCi0gICAgfQotICAgIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgQnl0ZUxlbmd0aFF1ZXVp
bmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSgpOyB9LCAnc2l6ZSBmYWlscyB3aXRoIHVuZGVmaW5l
ZCcpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgQnl0
ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZShudWxsKTsgfSwgJ3NpemUgZmFp
bHMgd2l0aCBudWxsJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhCeXRlTGVuZ3RoUXVldWluZ1N0cmF0
ZWd5LnByb3RvdHlwZS5zaXplKCdwb3RhdG8nKSwgdW5kZWZpbmVkLAotICAgICAgICAgICAgICAg
ICAgJ3NpemUgc3VjY2VlZHMgd2l0aCB1bmRlZmluZWQgd2l0aCBhIHJhbmRvbSBub24tb2JqZWN0
IHR5cGUnKTsKLSAgICBhc3NlcnRfZXF1YWxzKEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJv
dG90eXBlLnNpemUoe30pLCB1bmRlZmluZWQsCi0gICAgICAgICAgICAgICAgICAnc2l6ZSBzdWNj
ZWVkcyB3aXRoIHVuZGVmaW5lZCB3aXRoIGFuIG9iamVjdCB3aXRob3V0IGh3bSBwcm9wZXJ0eScp
OwotICAgIGFzc2VydF9lcXVhbHMoQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUu
c2l6ZShjaHVuayksIHNpemUsCi0gICAgICAgICAgICAgICAgICAnc2l6ZSBzdWNjZWVkcyB3aXRo
IHRoZSByaWdodCBhbW91bnQgd2l0aCBhbiBvYmplY3Qgd2l0aCBhIGh3bScpOwotICAgIGFzc2Vy
dF9lcXVhbHMoQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZShjaHVua0dl
dHRlciksIHNpemUsCi0gICAgICAgICAgICAgICAgICAnc2l6ZSBzdWNjZWVkcyB3aXRoIHRoZSBy
aWdodCBhbW91bnQgd2l0aCBhbiBvYmplY3Qgd2l0aCBhIGh3bSBnZXR0ZXInKTsKLSAgICBhc3Nl
cnRfdGhyb3dzKGVycm9yLCBmdW5jdGlvbigpIHsgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5w
cm90b3R5cGUuc2l6ZShjaHVua0dldHRlclRocm93aW5nKTsgfSwKLSAgICAgICAgICAgICAgICAg
ICdzaXplIGZhaWxzIHdpdGggdGhlIGVycm9yIHRocm93biBieSB0aGUgZ2V0dGVyJyk7Ci19LCAn
Qnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSBzaXplIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCB3
cm9uZyBhcmd1bWVudHMnKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICB2YXIgc3RyYXRlZ3kg
PSBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSk7Ci0K
LSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KHN0cmF0ZWd5LCAnaGlnaFdhdGVyTWFyaycpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHsg
dmFsdWU6IDQsIHdyaXRhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6
IHRydWUgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnaGlnaFdhdGVyTWFyayBwcm9wZXJ0
eSBzaG91bGQgYmUgYSBkYXRhIHByb3BlcnR5IHdpdGggdGhlIHZhbHVlIHBhc3NlZCB0aGUgY29u
bnN0cnVjdG9yJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Ygc3RyYXRlZ3kuc2l6ZSwgJ2Z1
bmN0aW9uJyk7Ci19LCAnQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSBpbnN0YW5jZXMgaGF2ZSB0
aGUgY29ycmVjdCBwcm9wZXJ0aWVzJyk7Ci0KIHZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ0Nsb3Np
bmcgYSB3cml0YWJsZSBzdHJlYW0gd2l0aCBpbi1mbGlnaHQgd3JpdGVzIGJlbG93IHRoZSBoaWdo
IHdhdGVyIG1hcmsgZGVsYXlzIHRoZSBjbG9zZSBjYWxsIHByb3Blcmx5Jyk7CiB0ZXN0MS5zdGVw
KGZ1bmN0aW9uKCkgewogICAgIHZhciBpc0RvbmUgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3Ry
YXRlZ3ktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQKaW5kZXggMTMxZjUw
ZmZlMzU0MzY0OTUzZmEwM2RkYzdhYjU5ZGIwNDVhYmZmYi4uOTQ1N2Q2ZmVkNGNlZjI5ZmIwMjMz
ZGUyN2Y4NTZiY2I2NDFmZmQ1YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZl
cmVuY2UtaW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vY291bnQt
cXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQKQEAgLTEsMTMgKzEsNCBAQAogCi1QQVNTIENh
biBjb25zdHJ1Y3QgYSBDb3VudFF1ZXVpbmdTdHJhdGVneSB3aXRoIGEgdmFsaWQgaGlnaCB3YXRl
ciBtYXJrIAotUEFTUyBDYW4gY29uc3RydWN0IGEgQ291bnRRdWV1aW5nU3RyYXRlZ3kgd2l0aCBh
bnkgdmFsdWUgYXMgaXRzIGhpZ2ggd2F0ZXIgbWFyayAKLVBBU1MgQ291bnRRdWV1aW5nU3RyYXRl
Z3kgY29uc3RydWN0b3IgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHdyb25nIGFyZ3VtZW50cyAK
LVBBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3kgc2l6ZSBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGgg
d3JvbmcgYXJndW1lbnRzIAotUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneSBpbnN0YW5jZXMgaGF2
ZSB0aGUgY29ycmVjdCBwcm9wZXJ0aWVzIAotUEFTUyBDYW4gY29uc3RydWN0IGEgcmVhZGFibGUg
c3RyZWFtIHdpdGggYSB2YWxpZCBDb3VudFF1ZXVpbmdTdHJhdGVneSAKLVBBU1MgQ29ycmVjdGx5
IGdvdmVybnMgdGhlIHJldHVybiB2YWx1ZSBvZiBhIFJlYWRhYmxlU3RyZWFtJ3MgZW5xdWV1ZSBm
dW5jdGlvbiAoSFdNID0gMCkgCi1QQVNTIENvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyJ3MgZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDEpIAotUEFTUyBDb3Jy
ZWN0bHkgZ292ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcidzIGRlc2lyZWRTaXplIHBy
b3BlcnR5IChIV00gPSA0KSAKIFBBU1MgQ2FuIGNvbnN0cnVjdCBhIHdyaXRhYmxlIHN0cmVhbSB3
aXRoIGEgdmFsaWQgQ291bnRRdWV1aW5nU3RyYXRlZ3kgCiBQQVNTIENvcnJlY3RseSBnb3Zlcm5z
IHRoZSB2YWx1ZSBvZiBhIFdyaXRhYmxlU3RyZWFtJ3Mgc3RhdGUgcHJvcGVydHkgKEhXTSA9IDAp
IAogUEFTUyBDb3JyZWN0bHkgZ292ZXJucyB0aGUgdmFsdWUgb2YgYSBXcml0YWJsZVN0cmVhbSdz
IHN0YXRlIHByb3BlcnR5IChIV00gPSA0KSAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVh
bXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbCBi
L0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVp
bmctc3RyYXRlZ3kuaHRtbAppbmRleCAxOWNmN2YwYWY3OGY3N2EyNzliOGYyMjMxM2JiZDNiYWVm
MzQzM2E0Li4yZWY3ZjY4Yzc0MzVmYjkyOTYwMDUwYjhjNTExY2U3MjJjNmEzYTE1IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1x
dWV1aW5nLXN0cmF0ZWd5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS5odG1sCkBAIC02LDIzNSArNiw2
IEBACiAvLyBUaGlzIGlzIHVwZGF0ZWQgdGlsbCBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL3N0
cmVhbXMvY29tbWl0L2VjNWZmYTAzNjMwOGQ5ZjYzNTBkMjk0NjU2MGQ0OGNkYmYwOTA5MzkKIAog
dGVzdChmdW5jdGlvbigpIHsKLSAgICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0
ZXJNYXJrOiA0IH0pOwotfSwgJ0NhbiBjb25zdHJ1Y3QgYSBDb3VudFF1ZXVpbmdTdHJhdGVneSB3
aXRoIGEgdmFsaWQgaGlnaCB3YXRlciBtYXJrJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAg
Zm9yICh2YXIgaGlnaFdhdGVyTWFyayBvZiBbLUluZmluaXR5LCBOYU4sICdmb28nLCB7fSwgZnVu
Y3Rpb24gKCkge31dKSB7Ci0gICAgICAgIHZhciBzdHJhdGVneSA9IG5ldyBDb3VudFF1ZXVpbmdT
dHJhdGVneSh7IGhpZ2hXYXRlck1hcmsgfSk7Ci0gICAgICAgIGFzc2VydF90cnVlKE9iamVjdC5p
cyhzdHJhdGVneS5oaWdoV2F0ZXJNYXJrLCBoaWdoV2F0ZXJNYXJrKSwgaGlnaFdhdGVyTWFyayAr
ICcgZ2V0cyBzZXQgY29ycmVjdGx5Jyk7Ci0gICAgfQotfSwgJ0NhbiBjb25zdHJ1Y3QgYSBDb3Vu
dFF1ZXVpbmdTdHJhdGVneSB3aXRoIGFueSB2YWx1ZSBhcyBpdHMgaGlnaCB3YXRlciBtYXJrJyk7
Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGhpZ2hXYXRlck1hcmsgPSAxOwotICAgIHZh
ciBoaWdoV2F0ZXJNYXJrT2JqZWN0R2V0dGVyID0gewotICAgICAgICBnZXQgaGlnaFdhdGVyTWFy
aygpIHsgcmV0dXJuIGhpZ2hXYXRlck1hcms7IH0sCi0gICAgfTsKLSAgICB2YXIgZXJyb3IgPSBu
ZXcgRXJyb3IoJ3dvdyEnKTsKLSAgICB2YXIgaGlnaFdhdGVyTWFya09iamVjdEdldHRlclRocm93
aW5nID0gewotICAgICAgICBnZXQgaGlnaFdhdGVyTWFyaygpIHsgdGhyb3cgZXJyb3I7IH0sCi0g
ICAgfTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IG5l
dyBDb3VudFF1ZXVpbmdTdHJhdGVneSgpOyB9LCAnY29uc3RydWN0aW9uIGZhaWxzIHdpdGggdW5k
ZWZpbmVkJyk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkg
eyBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3kobnVsbCk7IH0sICdjb25zdHJ1Y3Rpb24gZmFpbHMg
d2l0aCBudWxsJyk7Ci0gICAgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KCdwb3RhdG8nKTsgLy8g
Q29uc3RydWN0aW9uIHN1Y2NlZWRzIHdpdGggYSByYW5kb20gbm9uLW9iamVjdCB0eXBlLgotICAg
IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7fSk7IC8vIENvbnN0cnVjdGlvbiBzdWNjZWVkcyB3
aXRoIGFuIG9iamVjdCB3aXRob3V0IGEgaGlnaFdhdGVyTWFyayBwcm9wZXJ0eS4KLSAgICBuZXcg
Q291bnRRdWV1aW5nU3RyYXRlZ3koaGlnaFdhdGVyTWFya09iamVjdEdldHRlcik7IC8vIENvbnN0
cnVjdGlvbiBzdWNjZWVkcyB3aXRoIGFuIG9iamVjdCB3aXRoIGEgaGlnaFdhdGVyTWFyayBnZXR0
ZXIuCi0gICAgYXNzZXJ0X3Rocm93cyhlcnJvciwgZnVuY3Rpb24oKSB7IG5ldyBDb3VudFF1ZXVp
bmdTdHJhdGVneShoaWdoV2F0ZXJNYXJrT2JqZWN0R2V0dGVyVGhyb3dpbmcpOyB9LAotICAgICAg
ICAgICAgICAgICAgJ2NvbnN0cnVjdGlvbiBmYWlscyB3aXRoIGFuIG9iamVjdCB3aXRoIGEgdGhy
b3dpbmcgaGlnaFdhdGVyTWFyayBnZXR0ZXInKTsKLX0sICdDb3VudFF1ZXVpbmdTdHJhdGVneSBj
b25zdHJ1Y3RvciBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggd3JvbmcgYXJndW1lbnRzJyk7Ci0K
LXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHNpemUgPSAxMDI0OwotICAgIHZhciBjaHVuayA9
IHsgYnl0ZUxlbmd0aDogc2l6ZSB9OwotICAgIHZhciBjaHVua0dldHRlciA9IHsKLSAgICAgICAg
Z2V0IGJ5dGVMZW5ndGgoKSB7IHJldHVybiBzaXplOyB9LAotICAgIH0KLSAgICB2YXIgZXJyb3Ig
PSBuZXcgRXJyb3IoJ3dvdyEnKTsKLSAgICB2YXIgY2h1bmtHZXR0ZXJUaHJvd2luZyA9IHsKLSAg
ICAgICAgZ2V0IGJ5dGVMZW5ndGgoKSB7IHRocm93IGVycm9yOyB9LAotICAgIH0KLSAgICBhc3Nl
cnRfZXF1YWxzKENvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKCksIDEsICdzaXpl
IHJldHVybnMgMSB3aXRoIHVuZGVmaW5lZCcpOwotICAgIGFzc2VydF9lcXVhbHMoQ291bnRRdWV1
aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUobnVsbCksIDEsICdzaXplIHJldHVybnMgMSB3aXRo
IG51bGwnKTsKLSAgICBhc3NlcnRfZXF1YWxzKENvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlw
ZS5zaXplKCdwb3RhdG8nKSwgMSwgJ3NpemUgcmV0dXJucyAxIHdpdGggbm9uLW9iamVjdCB0eXBl
Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhDb3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6
ZSh7fSksIDEsICdzaXplIHJldHVybnMgMSB3aXRoIGVtcHR5IG9iamVjdCcpOwotICAgIGFzc2Vy
dF9lcXVhbHMoQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoY2h1bmspLCAxLCAn
c2l6ZSByZXR1cm5zIDEgd2l0aCBhIGNodW5rJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhDb3VudFF1
ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZShjaHVua0dldHRlciksIDEsICdzaXplIHJldHVy
bnMgMSB3aXRoIGNodW5rIGdldHRlcicpOwotICAgIGFzc2VydF9lcXVhbHMoQ291bnRRdWV1aW5n
U3RyYXRlZ3kucHJvdG90eXBlLnNpemUoY2h1bmtHZXR0ZXJUaHJvd2luZyksIDEsICdzaXplIHJl
dHVybnMgMSB3aXRoIGNodW5rIGdldHRlciB0aGF0IHRocm93cycpOwotfSwgJ0NvdW50UXVldWlu
Z1N0cmF0ZWd5IHNpemUgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHdyb25nIGFyZ3VtZW50cycp
OwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICAgIHZhciBzdHJhdGVneSA9IG5ldyBDb3VudFF1ZXVp
bmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSk7Ci0KLSAgICBhc3NlcnRfb2JqZWN0X2Vx
dWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHN0cmF0ZWd5LCAnaGlnaFdhdGVy
TWFyaycpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IDQsIHdyaXRhYmxlOiB0
cnVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAnaGlnaFdhdGVyTWFyayBwcm9wZXJ0eSBzaG91bGQgYmUgYSBkYXRhIHBy
b3BlcnR5IHdpdGggdGhlIHZhbHVlIHBhc3NlZCB0aGUgY29ubnN0cnVjdG9yJyk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyh0eXBlb2Ygc3RyYXRlZ3kuc2l6ZSwgJ2Z1bmN0aW9uJyk7Ci19LCAnQ291bnRR
dWV1aW5nU3RyYXRlZ3kgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgcHJvcGVydGllcycpOwot
Ci10ZXN0KGZ1bmN0aW9uKCkgewotICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwgbmV3IENvdW50
UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KSk7Ci19LCAnQ2FuIGNvbnN0cnVj
dCBhIHJlYWRhYmxlIHN0cmVhbSB3aXRoIGEgdmFsaWQgQ291bnRRdWV1aW5nU3RyYXRlZ3knKTsK
LQotdmFyIHRlc3QxID0gYXN5bmNfdGVzdCgnQ29ycmVjdGx5IGdvdmVybnMgdGhlIHJldHVybiB2
YWx1ZSBvZiBhIFJlYWRhYmxlU3RyZWFtXCdzIGVucXVldWUgZnVuY3Rpb24gKEhXTSA9IDApJyk7
Ci10ZXN0MS5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciBjb250cm9sbGVyOwotICAgIHZhciBy
cyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0g
ICAgICAgICAgICBjb250cm9sbGVyID0gYzsKLSAgICAgICAgfQotICAgIH0sCi0gICAgbmV3IENv
dW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMCB9KQotICAgICk7Ci0gICAgdmFy
IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVy
LmRlc2lyZWRTaXplLCAwLCAnMCByZWFkcywgMCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxk
IGJlIDAnKTsKLSAgICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKLSAgICBhc3NlcnRfZXF1YWxz
KGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMCByZWFkcywgMSBlbnF1ZXVlOiBkZXNpcmVk
U2l6ZSBzaG91bGQgYmUgLTEnKTsKLSAgICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKLSAgICBh
c3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0yLCAnMCByZWFkcywgMiBlbnF1
ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7Ci0gICAgY29udHJvbGxlci5lbnF1ZXVl
KCdjJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMywgJzAg
cmVhZHMsIDMgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMycpOwotICAgIGNvbnRy
b2xsZXIuZW5xdWV1ZSgnZCcpOwotICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVk
U2l6ZSwgLTQsICcwIHJlYWRzLCA0IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTQn
KTsKLQotICAgIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVz
dWx0KSB7Ci0gICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2En
LCBkb25lOiBmYWxzZSB9LCAnMXN0IHJlYWQgZ2l2ZXMgYmFjayB0aGUgMXN0IGNodW5rIGVucXVl
dWVkIChxdWV1ZSBub3cgY29udGFpbnMgMyBjaHVua3MpJyk7Ci0gICAgICAgIHJldHVybiByZWFk
ZXIucmVhZCgpOwotICAgIH0pKS50aGVuKHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQp
IHsKLSAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYicsIGRv
bmU6IGZhbHNlIH0sICcybmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAybmQgY2h1bmsgZW5xdWV1ZWQg
KHF1ZXVlIG5vdyBjb250YWlucyAyIGNodW5rcyknKTsKLSAgICAgICAgcmV0dXJuIHJlYWRlci5y
ZWFkKCk7Ci0gICAgfSkpLnRoZW4odGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgewot
ICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdjJywgZG9uZTog
ZmFsc2UgfSwgJzNyZCByZWFkIGdpdmVzIGJhY2sgdGhlIDNyZCBjaHVuayBlbnF1ZXVlZCAocXVl
dWUgbm93IGNvbnRhaW5zIDEgY2h1bmspJyk7Ci0KLSAgICAgICAgYXNzZXJ0X2VxdWFscyhjb250
cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzMgcmVhZHMsIDQgZW5xdWV1ZXM6IGRlc2lyZWRTaXpl
IHNob3VsZCBiZSAtMScpOwotICAgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2UnKTsKLSAgICAg
ICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMiwgJzMgcmVhZHMsIDUg
ZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMicpOwotCi0gICAgICAgIHJldHVybiBy
ZWFkZXIucmVhZCgpOwotICAgIH0pKS50aGVuKHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1
bHQpIHsKLSAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZCcs
IGRvbmU6IGZhbHNlIH0sICc0dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA0dGggY2h1bmsgZW5xdWV1
ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5rcyknKTsKLSAgICAgICAgcmV0dXJuIHJlYWRl
ci5yZWFkKCk7Ci0gICAgfSkpLnRoZW4odGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkg
ewotICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdlJywgZG9u
ZTogZmFsc2UgfSwgJzV0aCByZWFkIGdpdmVzIGJhY2sgdGhlIDV0aCBjaHVuayBlbnF1ZXVlZCAo
cXVldWUgbm93IGNvbnRhaW5zIDAgY2h1bmtzKScpOwotCi0gICAgICAgIGFzc2VydF9lcXVhbHMo
Y29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzUgcmVhZHMsIDUgZW5xdWV1ZXM6IGRlc2lyZWRT
aXplIHNob3VsZCBiZSAwJyk7Ci0gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZicpOwotICAg
ICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnNSByZWFkcywg
NiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7Ci0gICAgICAgIGNvbnRyb2xs
ZXIuZW5xdWV1ZSgnZycpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJl
ZFNpemUsIC0yLCAnNSByZWFkcywgNyBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0y
Jyk7Ci0KLSAgICAgICAgdGVzdDEuZG9uZSgpOwotICAgIH0pKS5jYXRjaCh0ZXN0MS5zdGVwX2Z1
bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9ICkpOwotfSk7Ci0KLXZhciB0
ZXN0MiA9IGFzeW5jX3Rlc3QoJ0NvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyXCdzIGRlc2lyZWRTaXplIHByb3BlcnR5IChIV00gPSAxKScpOwotdGVzdDIuc3RlcChm
dW5jdGlvbigpIHsKLSAgICB2YXIgY29udHJvbGxlcjsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgY29u
dHJvbGxlciA9IGM7Ci0gICAgICAgIH0sCi0gICAgfSwKLSAgICBuZXcgQ291bnRRdWV1aW5nU3Ry
YXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAxIH0pCi0gICAgKTsKLSAgICB2YXIgcmVhZGVyID0gcnMu
Z2V0UmVhZGVyKCk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUs
IDEsICcwIHJlYWRzLCAwIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMScpOwotICAg
IGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5k
ZXNpcmVkU2l6ZSwgMCwgJzAgcmVhZHMsIDEgZW5xdWV1ZTogZGVzaXJlZFNpemUgc2hvdWxkIGJl
IDAnKTsKLSAgICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKLSAgICBhc3NlcnRfZXF1YWxzKGNv
bnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMCByZWFkcywgMiBlbnF1ZXVlczogZGVzaXJlZFNp
emUgc2hvdWxkIGJlIC0xJyk7Ci0gICAgY29udHJvbGxlci5lbnF1ZXVlKCdjJyk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMiwgJzAgcmVhZHMsIDMgZW5xdWV1
ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMicpOwotICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgn
ZCcpOwotICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTMsICcwIHJl
YWRzLCA0IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTMnKTsKLQotICAgIHJlYWRl
ci5yZWFkKCkudGhlbih0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAg
IGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9
LCAnMXN0IHJlYWQgZ2l2ZXMgYmFjayB0aGUgMXN0IGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cg
Y29udGFpbnMgMyBjaHVua3MpJyk7Ci0gICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICAg
IH0pKS50aGVuKHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sICcy
bmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAybmQgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250
YWlucyAyIGNodW5rcyknKTsKLSAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gICAgfSkp
LnRoZW4odGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgewotICAgICAgICBhc3NlcnRf
b2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFsc2UgfSwgJzNyZCBy
ZWFkIGdpdmVzIGJhY2sgdGhlIDNyZCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5z
IDEgY2h1bmspJyk7Ci0KLSAgICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRT
aXplLCAwLCAnMyByZWFkcywgNCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsK
LSAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdlJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMo
Y29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICczIHJlYWRzLCA1IGVucXVldWVzOiBkZXNpcmVk
U2l6ZSBzaG91bGQgYmUgLTEnKTsKLQotICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAg
ICB9KSkudGhlbih0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAgIGFz
c2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2QnLCBkb25lOiBmYWxzZSB9LCAn
NHRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNHRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29u
dGFpbnMgMSBjaHVua3MpJyk7Ci0gICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICAgIH0p
KS50aGVuKHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAgICAgYXNzZXJ0
X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZScsIGRvbmU6IGZhbHNlIH0sICc1dGgg
cmVhZCBnaXZlcyBiYWNrIHRoZSA1dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlu
cyAwIGNodW5rcyknKTsKLQotICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJl
ZFNpemUsIDEsICc1IHJlYWRzLCA1IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMScp
OwotICAgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2YnKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFs
cyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnNSByZWFkcywgNiBlbnF1ZXVlczogZGVzaXJl
ZFNpemUgc2hvdWxkIGJlIDAnKTsKLSAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdnJyk7Ci0g
ICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICc1IHJlYWRz
LCA3IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKLQotICAgICAgICB0ZXN0
Mi5kb25lKCk7Ci0gICAgfSkpLmNhdGNoKHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFz
c2VydF91bnJlYWNoZWQoZSk7IH0gKSk7Ci19KTsKLQotdmFyIHRlc3QzID0gYXN5bmNfdGVzdCgn
Q29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJcJ3MgZGVzaXJlZFNp
emUgcHJvcGVydHkgKEhXTSA9IDQpJyk7Ci10ZXN0My5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZh
ciBjb250cm9sbGVyOwotICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAg
IHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBjb250cm9sbGVyID0gYzsKLSAgICAg
ICAgfQotICAgIH0sCi0gICAgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFy
azogNCB9KQotICAgICk7Ci0gICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gICAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCA0LCAnMCByZWFkcywgMCBlbnF1
ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDQnKTsKLSAgICBjb250cm9sbGVyLmVucXVldWUo
J2EnKTsKLSAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDMsICcwIHJl
YWRzLCAxIGVucXVldWU6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAzJyk7Ci0gICAgY29udHJvbGxl
ci5lbnF1ZXVlKCdiJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXpl
LCAyLCAnMCByZWFkcywgMiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDInKTsKLSAg
ICBjb250cm9sbGVyLmVucXVldWUoJ2MnKTsKLSAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIu
ZGVzaXJlZFNpemUsIDEsICcwIHJlYWRzLCAzIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQg
YmUgMScpOwotICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZCcpOwotICAgIGFzc2VydF9lcXVhbHMo
Y29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzAgcmVhZHMsIDQgZW5xdWV1ZXM6IGRlc2lyZWRT
aXplIHNob3VsZCBiZSAwJyk7Ci0gICAgY29udHJvbGxlci5lbnF1ZXVlKCdlJyk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzAgcmVhZHMsIDUgZW5xdWV1
ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMScpOwotICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgn
ZicpOwotICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTIsICcwIHJl
YWRzLCA2IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTInKTsKLQotCi0gICAgcmVh
ZGVyLnJlYWQoKS50aGVuKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAg
ICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNl
IH0sICcxc3QgcmVhZCBnaXZlcyBiYWNrIHRoZSAxc3QgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5v
dyBjb250YWlucyA1IGNodW5rcyknKTsKLSAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0g
ICAgfSkpLnRoZW4odGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgewotICAgICAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwg
JzJuZCByZWFkIGdpdmVzIGJhY2sgdGhlIDJuZCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNv
bnRhaW5zIDQgY2h1bmtzKScpOwotCi0gICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5k
ZXNpcmVkU2l6ZSwgMCwgJzIgcmVhZHMsIDYgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBi
ZSAwJyk7Ci0gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZycpOwotICAgICAgICBhc3NlcnRf
ZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMiByZWFkcywgNyBlbnF1ZXVlczog
ZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7Ci0KLSAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFk
KCk7Ci0gICAgfSkpLnRoZW4odGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgewotICAg
ICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFs
c2UgfSwgJzNyZCByZWFkIGdpdmVzIGJhY2sgdGhlIDNyZCBjaHVuayBlbnF1ZXVlZCAocXVldWUg
bm93IGNvbnRhaW5zIDQgY2h1bmtzKScpOwotICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsK
LSAgICB9KSkudGhlbih0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAg
IGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2QnLCBkb25lOiBmYWxzZSB9
LCAnNHRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNHRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cg
Y29udGFpbnMgMyBjaHVua3MpJyk7Ci0gICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICAg
IH0pKS50aGVuKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZScsIGRvbmU6IGZhbHNlIH0sICc1
dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA1dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250
YWlucyAyIGNodW5rcyknKTsKLSAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gICAgfSkp
LnRoZW4odGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgewotICAgICAgICBhc3NlcnRf
b2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdmJywgZG9uZTogZmFsc2UgfSwgJzZ0aCBy
ZWFkIGdpdmVzIGJhY2sgdGhlIDZ0aCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5z
IDAgY2h1bmtzKScpOwotCi0gICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVk
U2l6ZSwgMywgJzYgcmVhZHMsIDcgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAzJyk7
Ci0gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnaCcpOwotICAgICAgICBhc3NlcnRfZXF1YWxz
KGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDIsICc2IHJlYWRzLCA4IGVucXVldWVzOiBkZXNpcmVk
U2l6ZSBzaG91bGQgYmUgMicpOwotICAgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2knKTsKLSAg
ICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnNiByZWFkcywg
OSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEnKTsKLSAgICAgICAgY29udHJvbGxl
ci5lbnF1ZXVlKCdqJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVk
U2l6ZSwgMCwgJzYgcmVhZHMsIDEwIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcp
OwotICAgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2snKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFs
cyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzYgcmVhZHMsIDExIGVucXVldWVzOiBkZXNp
cmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKLQotICAgICAgICB0ZXN0My5kb25lKCk7Ci0gICAgfSkp
LmNhdGNoKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7
IH0gKSk7Ci19KTsKLQotdGVzdChmdW5jdGlvbigpIHsKICAgICBuZXcgV3JpdGFibGVTdHJlYW0o
e30sIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSkpOyAvLyBE
b2VzIG5vdCB0aHJvdy4KIH0sICdDYW4gY29uc3RydWN0IGEgd3JpdGFibGUgc3RyZWFtIHdpdGgg
YSB2YWxpZCBDb3VudFF1ZXVpbmdTdHJhdGVneScpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tY2FuY2Vs
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFk
YWJsZS1zdHJlYW0tY2FuY2VsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2
OWFlMTE1Y2M1YTgxYzU2YTc0MmE0NTQwNWI2NTA5NDBlMTJmMGIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWNhbmNlbC5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMjYxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPHNjcmlwdCBzcmM9Jy4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyc+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0nLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzJz48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSdy
ZXNvdXJjZXMvc3RyZWFtcy11dGlscy5qcyc+PC9zY3JpcHQ+Ci08c2NyaXB0PgotLy8gVGhpcyBp
cyB1cGRhdGVkIHRpbGwgaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9zdHJlYW1zL2NvbW1pdC9l
YzVmZmEwMzYzMDhkOWY2MzUwZDI5NDY1NjBkNDhjZGJmMDkwOTM5Ci0KLXZhciB0ZXN0MSA9IGFz
eW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaW50ZWdyYXRpb24gdGVzdCBv
biBhbiBpbmZpbml0ZSBzdHJlYW0gZGVyaXZlZCBmcm9tIGEgcmFuZG9tIHB1c2ggc291cmNlJyk7
Ci10ZXN0MS5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciByYW5kb21Tb3VyY2UgPSBuZXcgUmFu
ZG9tUHVzaFNvdXJjZSgpOwotCi0gICAgdmFyIGNhbmNlbGxhdGlvbkZpbmlzaGVkID0gZmFsc2U7
Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0
aW9uKGMpIHsKLSAgICAgICAgICAgIHJhbmRvbVNvdXJjZS5vbmRhdGEgPSBjLmVucXVldWUuYmlu
ZChjKTsKLSAgICAgICAgICAgIHJhbmRvbVNvdXJjZS5vbmVuZCA9IGMuY2xvc2UuYmluZChjKTsK
LSAgICAgICAgICAgIHJhbmRvbVNvdXJjZS5vbmVycm9yID0gYy5lcnJvci5iaW5kKGMpOwotICAg
ICAgICB9LAotCi0gICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcmFuZG9t
U291cmNlLnJlYWRTdGFydCgpOwotICAgICAgICB9LAotCi0gICAgICAgIGNhbmNlbDogZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICByYW5kb21Tb3VyY2UucmVhZFN0b3AoKTsKLSAgICAgICAgICAg
IHJhbmRvbVNvdXJjZS5vbmVuZCgpOwotCi0gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2Uo
dGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc29sdmUpIHsKLSAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAg
Y2FuY2VsbGF0aW9uRmluaXNoZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICByZXNvbHZl
KCk7Ci0gICAgICAgICAgICAgICAgfSksIDUwMCk7Ci0gICAgICAgICAgICB9KSk7Ci0gICAgICAg
IH0KLSAgICB9KTsKLSAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgICByZWFk
YWJsZVN0cmVhbVRvQXJyYXkocnMsIHJlYWRlcikudGhlbih0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rp
b24oY2h1bmtzKSB7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoY2FuY2VsbGF0aW9uRmluaXNoZWQs
IGZhbHNlLCAnaXQgZGlkIG5vdCB3YWl0IGZvciB0aGUgY2FuY2VsbGF0aW9uIHByb2Nlc3MgdG8g
ZmluaXNoIGJlZm9yZSBjbG9zaW5nJyk7Ci0gICAgICAgIGFzc2VydF9ncmVhdGVyX3RoYW4oY2h1
bmtzLmxlbmd0aCwgMCwgJ2F0IGxlYXN0IG9uZSBjaHVuayBzaG91bGQgYmUgcmVhZCcpOwotICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNodW5rcy5sZW5ndGg7IGkrKykgewotICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhjaHVua3NbaV0ubGVuZ3RoLCAxMjgsICdjaHVuayAnICsgaSArICcg
c2hvdWxkIGhhdmUgMTI4IGJ5dGVzJyk7Ci0gICAgICAgIH0KLSAgICB9KSwgdGVzdDEuc3RlcF9m
dW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSkpOwotCi0gICAgc2V0VGlt
ZW91dCh0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJlYWRlci5jYW5jZWwo
KS50aGVuKHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoY2FuY2VsbGF0aW9uRmluaXNoZWQsIHRydWUsICdpdCByZXR1cm5zIGEgcHJvbWlzZSB0
aGF0IGlzIGZ1bGZpbGxlZCB3aGVuIHRoZSBjYW5jZWxsYXRpb24gZmluaXNoZXMnKTsKLSAgICAg
ICAgICAgIHRlc3QxLmRvbmUoKTsKLSAgICAgICAgfSkpLmNhdGNoKHRlc3QxLnN0ZXBfZnVuYyhm
dW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0pKTsKLSAgICB9KSwgMTAwMCk7Ci19
KTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICB2YXIgcmVjb3JkZWRSZWFzb247Ci0gICAgdmFy
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgY2FuY2VsOiBmdW5jdGlvbihyZWFz
b24pIHsKLSAgICAgICAgICAgIHJlY29yZGVkUmVhc29uID0gcmVhc29uOwotICAgICAgICB9Ci0g
ICAgfSk7Ci0KLSAgICB2YXIgcGFzc2VkUmVhc29uID0gbmV3IEVycm9yKCdTb3JyeSwgaXQganVz
dCB3YXNuXCd0IG1lYW50IHRvIGJlLicpOwotICAgIHJzLmNhbmNlbChwYXNzZWRSZWFzb24pOwot
Ci0gICAgYXNzZXJ0X2VxdWFscyhyZWNvcmRlZFJlYXNvbiwgcGFzc2VkUmVhc29uLAotICAgICAg
ICAgICAgICAgICAgJ3RoZSBlcnJvciBwYXNzZWQgdG8gdGhlIHVuZGVybHlpbmcgc291cmNlXCdz
IGNhbmNlbCBtZXRob2Qgc2hvdWxkIGVxdWFsIHRoZSBvbmUgcGFzc2VkIHRvIHRoZSBzdHJlYW1c
J3MgY2FuY2VsJyk7Ci19LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWwocmVh
c29uKSBzaG91bGQgcGFzcyB0aHJvdWdoIHRoZSBnaXZlbiByZWFzb24gdG8gdGhlIHVuZGVybHlp
bmcgc291cmNlJyk7Ci0KLXZhciB0ZXN0MiA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGNh
bmNlbGxhdGlvbjogY2FuY2VsKCkgb24gYSBsb2NrZWQgc3RyZWFtIHNob3VsZCBmYWlsIGFuZCBu
b3QgY2FsbCB0aGUgdW5kZXJseWluZyBzb3VyY2UgY2FuY2VsJyk7Ci10ZXN0Mi5zdGVwKGZ1bmN0
aW9uKCkgewotICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0
OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAgICAgICAg
IGMuY2xvc2UoKTsKLSAgICAgICAgfSwKLSAgICAgICAgY2FuY2VsOiBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ3VuZGVybHlpbmcgc291cmNlIGNhbmNlbCgpIHNo
b3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCcpOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICB2
YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgICBycy5jYW5jZWwoKS5jYXRjaCh0ZXN0
Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IoKSwgZSwgJ2NhbmNlbCgpIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIGEgVHlwZUVycm9y
JykKLSAgICB9KSk7Ci0KLSAgICByZWFkZXIucmVhZCgpLnRoZW4odGVzdDIuc3RlcF9mdW5jKGZ1
bmN0aW9uKHJlc3VsdCkgewotICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsg
dmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3JlYWQoKSBzaG91bGQgc3RpbGwgd29yayBhZnRl
ciB0aGUgYXR0ZW1wdGVkIGNhbmNlbCcpOwotICAgIH0pKTsKLQotICAgIHJlYWRlci5jbG9zZWQu
dGhlbih0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3QyLmRvbmUoJ2Ns
b3NlZCBzaG91bGQgZnVsZmlsbCB3aXRob3V0IHVuZGVybHlpbmcgc291cmNlIGNhbmNlbCBldmVy
IGJlaW5nIGNhbGxlZCcpOwotICAgIH0pKTsKLX0pOwotCi12YXIgdGVzdDMgPSBhc3luY190ZXN0
KCdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHNob3VsZCBmdWxmaWxsIHByb21pc2Ugd2hl
biBjYW5jZWwgY2FsbGJhY2sgd2VudCBmaW5lJyk7Ci10ZXN0My5zdGVwKGZ1bmN0aW9uKCkKLXsK
LSAgICB2YXIgY2FuY2VsUmVjZWl2ZWQgPSBmYWxzZTsKLSAgICB2YXIgY2FuY2VsUmVhc29uID0g
bmV3IEVycm9yKCdJIGFtIHRpcmVkIG9mIHRoaXMgc3RyZWFtLCBJIHByZWZlciB0byBjYW5jZWwg
aXQnKTsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBjYW5jZWw6
IGZ1bmN0aW9uKHJlYXNvbikgewotICAgICAgICAgICAgY2FuY2VsUmVjZWl2ZWQgPSB0cnVlOwot
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZWFzb24sIGNhbmNlbFJlYXNvbiwgJ2NhbmNlbGxh
dGlvbiByZWFzb24gZ2l2ZW4gdG8gdGhlIHVuZGVybHlpbmcgc291cmNlIHNob3VsZCBiZSBlcXVh
bCB0byB0aGUgb25lIHBhc3NlZCcpOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBycy5jYW5j
ZWwoY2FuY2VsUmVhc29uKS50aGVuKAotICAgICAgICB0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZShjYW5jZWxSZWNlaXZlZCk7Ci0gICAgICAgICAg
ICB0ZXN0My5kb25lKCdzdHJlYW0gd2FzIHN1Y2Nlc3NmdWxseSBjYW5jZWxsZWQnKTsKLSAgICAg
ICAgfSksCi0gICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAgICAg
ICBhc3NlcnRfdW5yZWFjaGVkKCJyZWNlaXZlZCBlcnJvciAiICsgZSkKLSAgICAgICAgfSkpOwot
fSk7Ci0KLXZhciB0ZXN0NCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlv
bjogcmV0dXJuaW5nIGEgdmFsdWUgZnJvbSB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2Vs
IHNob3VsZCBub3QgYWZmZWN0IHRoZSBmdWxmaWxsbWVudCB2YWx1ZSBvZiB0aGUgcHJvbWlzZSBy
ZXR1cm5lZCBieSB0aGUgc3RyZWFtXCdzIGNhbmNlbCcpOwotdGVzdDQuc3RlcChmdW5jdGlvbigp
IHsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBjYW5jZWw6IGZ1
bmN0aW9uKHJlYXNvbikgewotICAgICAgICAgICAgcmV0dXJuICdIZWxsbyc7Ci0gICAgICAgIH0K
LSAgICB9KTsKLQotICAgIHJzLmNhbmNlbCgpLnRoZW4odGVzdDQuc3RlcF9mdW5jKGZ1bmN0aW9u
KHYpIHsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdjYW5jZWwoKSByZXR1
cm4gdmFsdWUgc2hvdWxkIGJlIGZ1bGZpbGxlZCB3aXRoIHVuZGVmaW5lZCcpOwotICAgICAgICB0
ZXN0NC5kb25lKCk7Ci0gICAgfSksIHRlc3Q0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAg
ICAgYXNzZXJ0X3VucmVhY2hlZCgnY2FuY2VsKCkgcmV0dXJuIHZhbHVlIHNob3VsZCBub3QgYmUg
cmVqZWN0ZWQnKTsKLSAgICB9KSk7Ci19KTsKLQotdmFyIHRlc3Q1ID0gYXN5bmNfdGVzdCgnUmVh
ZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBzaG91bGQgcmVqZWN0IHByb21pc2Ugd2hlbiBjYW5j
ZWwgY2FsbGJhY2sgcmFpc2VzIGFuIGV4Y2VwdGlvbicpOwotdGVzdDUuc3RlcChmdW5jdGlvbigp
Ci17Ci0gICAgdmFyIHRocm93bkVycm9yID0gbmV3IEVycm9yKCd0ZXN0Jyk7Ci0gICAgdmFyIGNh
bmNlbENhbGxlZCA9IGZhbHNlOwotCi0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
LSAgICAgICAgY2FuY2VsOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGNhbmNlbENhbGxlZCA9
IHRydWU7Ci0gICAgICAgICAgICB0aHJvdyB0aHJvd25FcnJvcjsKLSAgICAgICAgfQotICAgIH0p
OwotCi0gICAgcnMuY2FuY2VsKCd0ZXN0JykudGhlbigKLSAgICAgICAgdGVzdDUuc3RlcF9mdW5j
KGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdjYW5jZWwgc2hvdWxkIHJlamVjdCcpOyB9
KSwKLSAgICAgICAgdGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGFz
c2VydF90cnVlKGNhbmNlbENhbGxlZCk7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRo
cm93bkVycm9yKTsKLSAgICAgICAgICAgIHRlc3Q1LmRvbmUoKTsKLSAgICAgICAgfSkKLSAgICAp
OwotfSk7Ci0KLXZhciB0ZXN0NiA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxh
dGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBh
IHByb21pc2UsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW1cJ3MgY2FuY2VsIHNo
b3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBvbmUgZG9lcyAoMSknKTsKLXRlc3Q2LnN0ZXAoZnVuY3Rp
b24oKQotewotICAgIHZhciBjYW5jZWxSZWFzb24gPSBuZXcgRXJyb3IoJ3Rlc3QnKTsKLQotICAg
IHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIGNhbmNlbDogZnVuY3Rpb24o
ZXJyb3IpIHsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXJyb3IsIGNhbmNlbFJlYXNvbik7
Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UodGVzdDYuc3RlcF9mdW5jKGZ1bmN0aW9u
KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdDYuc3Rl
cF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAg
ICAgICAgICAgICAgfSksIDUwMCk7Ci0gICAgICAgICAgICB9KSkKLSAgICAgICAgfQotICAgIH0p
Ci0KLSAgICBycy5jYW5jZWwoY2FuY2VsUmVhc29uKS50aGVuKAotICAgICAgICB0ZXN0Ni5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB0ZXN0Ni5kb25lKCdzdHJlYW0gc3VjY2Vz
c2Z1bGx5IGNhbmNlbGxlZCcpOwotICAgICAgICB9KSwKLSAgICAgICAgdGVzdDYuc3RlcF9mdW5j
KGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoInJlY2VpdmVkIGVy
cm9yICIgKyBlKQotICAgICAgICB9KSkKLX0pOwotCi12YXIgdGVzdDcgPSBhc3luY190ZXN0KCdS
ZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBj
YW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0
aGUgc3RyZWFtXCdzIGNhbmNlbCBzaG91bGQgZnVsZmlsbCB3aGVuIHRoYXQgb25lIGRvZXMgKDIp
Jyk7Ci10ZXN0Ny5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciByZXNvbHZlU291cmNlQ2FuY2Vs
UHJvbWlzZTsKLSAgICB2YXIgc291cmNlQ2FuY2VsUHJvbWlzZUhhc0Z1bGZpbGxlZCA9IGZhbHNl
OwotICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIGNhbmNlbDogZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICB2YXIgc291cmNlQ2FuY2VsUHJvbWlzZSA9IG5ldyBQcm9t
aXNlKHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAg
ICAgICAgICByZXNvbHZlU291cmNlQ2FuY2VsUHJvbWlzZSA9IHJlc29sdmU7Ci0gICAgICAgICAg
ICB9KSk7Ci0KLSAgICAgICAgICAgIHNvdXJjZUNhbmNlbFByb21pc2UudGhlbih0ZXN0Ny5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgc291cmNlQ2FuY2VsUHJvbWlzZUhh
c0Z1bGZpbGxlZCA9IHRydWU7Ci0gICAgICAgICAgICB9KSk7Ci0KLSAgICAgICAgICAgIHJldHVy
biBzb3VyY2VDYW5jZWxQcm9taXNlOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLQotICAgIHJzLmNh
bmNlbCgpLnRoZW4oCi0gICAgICAgIHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbih2YWx1ZSkgewot
ICAgICAgICAgICAgYXNzZXJ0X3RydWUoc291cmNlQ2FuY2VsUHJvbWlzZUhhc0Z1bGZpbGxlZCwg
J2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgZnVsZmlsbGVkIG9ubHkgYWZ0ZXIgdGhl
IHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCcpOwot
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVkLCAnY2FuY2VsKCkgcmV0
dXJuIHZhbHVlIHNob3VsZCBiZSBmdWxmaWxsZWQgd2l0aCB1bmRlZmluZWQnKTsKLSAgICAgICAg
ICAgIHRlc3Q3LmRvbmUoKTsKLSAgICAgICAgfSksCi0gICAgICAgIHRlc3Q3LnN0ZXBfZnVuYyhm
dW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnY2FuY2VsKCkgcmV0dXJuIHZhbHVlIHNob3Vs
ZCBub3QgYmUgcmVqZWN0ZWQnKTsgfSkKLSAgICApOwotCi0gICAgc2V0VGltZW91dCh0ZXN0Ny5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJlc29sdmVTb3VyY2VDYW5jZWxQcm9taXNl
KCdIZWxsbycpOwotICAgIH0pLCA1MDApOwotfSk7Ci0KLXZhciB0ZXN0OCA9IGFzeW5jX3Rlc3Qo
J1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291cmNlXCdz
IGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5
IHRoZSBzdHJlYW1cJ3MgY2FuY2VsIHNob3VsZCByZWplY3Qgd2hlbiB0aGF0IG9uZSBkb2VzJyk7
Ci10ZXN0OC5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciByZWplY3RTb3VyY2VDYW5jZWxQcm9t
aXNlOwotICAgIHZhciBzb3VyY2VDYW5jZWxQcm9taXNlSGFzUmVqZWN0ZWQgPSBmYWxzZTsKLSAg
ICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBjYW5jZWw6IGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgdmFyIHNvdXJjZUNhbmNlbFByb21pc2UgPSBuZXcgUHJvbWlzZSh0
ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICAg
ICAgcmVqZWN0U291cmNlQ2FuY2VsUHJvbWlzZSA9IHJlamVjdDsKLSAgICAgICAgICAgIH0pKTsK
LQotICAgICAgICAgICAgc291cmNlQ2FuY2VsUHJvbWlzZS5jYXRjaCh0ZXN0OC5zdGVwX2Z1bmMo
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgc291cmNlQ2FuY2VsUHJvbWlzZUhhc1JlamVj
dGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0pKTsKLQotICAgICAgICAgICAgcmV0dXJuIHNvdXJj
ZUNhbmNlbFByb21pc2U7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHZhciBlcnJvckluQ2Fu
Y2VsID0gbmV3IEVycm9yKCdTb3JyeSwgaXQganVzdCB3YXNuXCd0IG1lYW50IHRvIGJlLicpOwot
Ci0gICAgcnMuY2FuY2VsKCkudGhlbigKLSAgICAgICAgdGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9u
KCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIG5vdCBi
ZSByZWplY3RlZCcpOyB9KSwKLSAgICAgICAgdGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsK
LSAgICAgICAgICAgIGFzc2VydF90cnVlKHNvdXJjZUNhbmNlbFByb21pc2VIYXNSZWplY3RlZCwg
J2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgcmVqZWN0ZWQgb25seSBhZnRlciB0aGUg
cHJvbWlzZSByZXR1cm5lZCBieSB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2VsJyk7Ci0g
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHIsIGVycm9ySW5DYW5jZWwsICdjYW5jZWwoKSByZXR1
cm4gdmFsdWUgc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdGhlIHVuZGVybHlpbmcgc291cmNlXCdz
IHJlamVjdGlvbiByZWFzb24nKTsKLSAgICAgICAgICAgIHRlc3Q4LmRvbmUoKTsKLSAgICAgICAg
fSkKLSAgICApOwotCi0gICAgc2V0VGltZW91dCh0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
Ci0gICAgICAgIHJlamVjdFNvdXJjZUNhbmNlbFByb21pc2UoZXJyb3JJbkNhbmNlbCk7Ci0gICAg
fSksIDUwMCk7Ci19KTsKLQotdmFyIHRlc3Q5ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0g
Y2FuY2VsbGF0aW9uOiBjYW5jZWxsaW5nIGJlZm9yZSBzdGFydCBmaW5pc2hlcyBzaG91bGQgcHJl
dmVudCBwdWxsKCkgZnJvbSBiZWluZyBjYWxsZWQnKTsKLXRlc3Q5LnN0ZXAoZnVuY3Rpb24oKSB7
Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgcHVsbDogZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdwdWxsIHNob3VsZCBub3QgaGF2
ZSBiZWVuIGNhbGxlZCcpOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBQcm9taXNlLmFsbChb
cnMuY2FuY2VsKCksIHJzLmdldFJlYWRlcigpLmNsb3NlZF0pLnRoZW4odGVzdDkuc3RlcF9mdW5j
KGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0OS5kb25lKCdwdWxsIHNob3VsZCBuZXZlciBoYXZl
IGJlZW4gY2FsbGVkJyk7Ci0gICAgfSkpLmNhdGNoKHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbihl
KSB7IGFzc2VydF9yZWFjaGVkKGUpOyB9ICkpOwotfSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0
cmVhbS1yZWFkZXIuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVu
dGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNjAyY2M4ZDE4YzMxNjMxNTlhNWU2MGRlMWQ2YzE1YWFiYTZiZjkxMy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwzNDQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08c2NyaXB0
IHNyYz0nLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJz48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMnPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9J3Jlc291cmNlcy9zdHJlYW1zLXV0aWxzLmpzJz48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPScuLi8uLi9yZXNvdXJjZXMvZ2MuanMnPjwvc2NyaXB0PgotPHNjcmlwdD4KLS8vIFRoaXMg
aXMgdXBkYXRlZCB0aWxsIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvc3RyZWFtcy9jb21taXQv
ZWM1ZmZhMDM2MzA4ZDlmNjM1MGQyOTQ2NTYwZDQ4Y2RiZjA5MDkzOQotCi12YXIgUmVhZGFibGVT
dHJlYW1SZWFkZXI7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgLy8gSXQncyBub3QgZXhwb3Nl
ZCBnbG9iYWxseSwgYnV0IHdlIHRlc3QgYSBmZXcgb2YgaXRzIHByb3BlcnRpZXMgaGVyZS4KLSAg
ICBSZWFkYWJsZVN0cmVhbVJlYWRlciA9IChuZXcgUmVhZGFibGVTdHJlYW0oKSkuZ2V0UmVhZGVy
KCkuY29uc3RydWN0b3I7Ci19LCAnQ2FuIGdldCB0aGUgUmVhZGFibGVTdHJlYW1SZWFkZXIgY29u
c3RydWN0b3IgaW5kaXJlY3RseScpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICAgIGFzc2VydF90
aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKLSAgICAgICAgbmV3IFJlYWRhYmxl
U3RyZWFtUmVhZGVyKCdwb3RhdG8nKTsKLSAgICB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRl
cih7fSk7Ci0gICAgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0
aW9uKCkgewotICAgICAgICBuZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIoKTsKLSAgICB9KTsKLX0s
ICdSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBzaG91bGQgZ2V0IGEgUmVhZGFibGVT
dHJlYW0gb2JqZWN0IGFzIGFyZ3VtZW50Jyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgdmFy
IG1ldGhvZHMgPSBbJ2NhbmNlbCcsICdjb25zdHJ1Y3RvcicsICdyZWFkJywgJ3JlbGVhc2VMb2Nr
J107Ci0gICAgdmFyIHByb3BlcnRpZXMgPSBtZXRob2RzLmNvbmNhdChbJ2Nsb3NlZCddKS5zb3J0
KCk7Ci0KLSAgICB2YXIgcnNSZWFkZXIgPSBuZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIobmV3IFJl
YWRhYmxlU3RyZWFtKCkpOwotICAgIHZhciBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihy
c1JlYWRlcik7Ci0KLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0
eU5hbWVzKHByb3RvKS5zb3J0KCksIHByb3BlcnRpZXMpOwotCi0gICAgZm9yICh2YXIgbSBvZiBt
ZXRob2RzKSB7Ci0gICAgICAgIHZhciBwcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IocHJvdG8sIG0pOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHByb3BEZXNjLmVudW1l
cmFibGUsIGZhbHNlLCAnbWV0aG9kIHNob3VsZCBiZSBub24tZW51bWVyYWJsZScpOwotICAgICAg
ICBhc3NlcnRfZXF1YWxzKHByb3BEZXNjLmNvbmZpZ3VyYWJsZSwgdHJ1ZSwgJ21ldGhvZCBzaG91
bGQgYmUgY29uZmlndXJhYmxlJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocHJvcERlc2Mud3Jp
dGFibGUsIHRydWUsICdtZXRob2Qgc2hvdWxkIGJlIHdyaXRhYmxlJyk7Ci0gICAgICAgIGFzc2Vy
dF9lcXVhbHModHlwZW9mIHJzUmVhZGVyW21dLCAnZnVuY3Rpb24nLCAnc2hvdWxkIGhhdmUgYmUg
YSBtZXRob2QnKTsKLSAgICB9Ci0KLSAgICB2YXIgY2xvc2VkUHJvcERlc2MgPSBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCAnY2xvc2VkJyk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhjbG9zZWRQcm9wRGVzYy5lbnVtZXJhYmxlLCBmYWxzZSwgJ2Nsb3NlZCBzaG91bGQgYmUgbm9u
LWVudW1lcmFibGUnKTsKLSAgICBhc3NlcnRfZXF1YWxzKGNsb3NlZFByb3BEZXNjLmNvbmZpZ3Vy
YWJsZSwgdHJ1ZSwgJ2Nsb3NlZCBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7Ci0gICAgYXNzZXJ0
X25vdF9lcXVhbHMoY2xvc2VkUHJvcERlc2MuZ2V0LCB1bmRlZmluZWQsICdjbG9zZWQgc2hvdWxk
IGhhdmUgYSBnZXR0ZXInKTsKLSAgICBhc3NlcnRfZXF1YWxzKGNsb3NlZFByb3BEZXNjLnNldCwg
dW5kZWZpbmVkLCAnY2xvc2VkIHNob3VsZCBub3QgaGF2ZSBhIHNldHRlcicpOwotCi0gICAgYXNz
ZXJ0X2VxdWFscyhyc1JlYWRlci5jYW5jZWwubGVuZ3RoLCAxLCAnY2FuY2VsIGhhcyAxIHBhcmFt
ZXRlcicpOwotICAgIGFzc2VydF9ub3RfZXF1YWxzKHJzUmVhZGVyLmNsb3NlZCwgdW5kZWZpbmVk
LCAnaGFzIGEgbm9uLXVuZGVmaW5lZCBjbG9zZWQgcHJvcGVydHknKTsKLSAgICBhc3NlcnRfZXF1
YWxzKHR5cGVvZiByc1JlYWRlci5jbG9zZWQudGhlbiwgJ2Z1bmN0aW9uJywgJ2Nsb3NlZCBwcm9w
ZXJ0eSBpcyB0aGVuYWJsZScpOwotICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJzUmVhZGVyLmNv
bnN0cnVjdG9yLCAnZnVuY3Rpb24nLCAnaGFzIGEgY29uc3RydWN0b3IgbWV0aG9kJyk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhyc1JlYWRlci5jb25zdHJ1Y3Rvci5sZW5ndGgsIDEsICdjb25zdHJ1Y3Rv
ciBoYXMgMSBwYXJhbWV0ZXInKTsKLSAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiByc1JlYWRlci5y
ZWFkLCAnZnVuY3Rpb24nLCAnaGFzIGEgZ2V0UmVhZGVyIG1ldGhvZCcpOwotICAgIGFzc2VydF9l
cXVhbHMocnNSZWFkZXIucmVhZC5sZW5ndGgsIDAsICdyZWFkIGhhcyBubyBwYXJhbWV0ZXJzJyk7
Ci0gICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNSZWFkZXIucmVsZWFzZUxvY2ssICdmdW5jdGlv
bicsICdoYXMgYSByZWxlYXNlTG9jayBtZXRob2QnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJzUmVh
ZGVyLnJlbGVhc2VMb2NrLmxlbmd0aCwgMCwgJ3JlbGVhc2VMb2NrIGhhcyBubyBwYXJhbWV0ZXJz
Jyk7Ci19LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIgaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBj
b3JyZWN0IGxpc3Qgb2YgcHJvcGVydGllcycpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICAgIHZh
ciByc1JlYWRlciA9IG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0o
KSk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKHJzUmVhZGVyLmNsb3NlZCwgcnNSZWFkZXIuY2xvc2Vk
LCAnY2xvc2VkIHNob3VsZCByZXR1cm4gdGhlIHNhbWUgcHJvbWlzZScpOwotfSwgJ1JlYWRhYmxl
U3RyZWFtUmVhZGVyIGNsb3NlZCBzaG91bGQgYWx3YXlzIHJldHVybiB0aGUgc2FtZSBwcm9taXNl
IG9iamVjdCcpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICAgIHZhciBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSgpOwotICAgIG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihycyk7IC8vIENvbnN0cnVj
dGluZyBkaXJlY3RseSB0aGUgZmlyc3QgdGltZSBzaG91bGQgYmUgZmluZS4KLSAgICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IG5ldyBSZWFkYWJsZVN0cmVhbVJl
YWRlcihycyk7IH0sICdjb25zdHJ1Y3RpbmcgZGlyZWN0bHkgdGhlIHNlY29uZCB0aW1lIHNob3Vs
ZCBmYWlsJyk7Ci19LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0
bHkgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVj
dCBjb25zdHJ1Y3Rpb24pJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKCk7Ci0gICAgbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJzKTsgLy8g
Q29uc3RydWN0aW5nIGRpcmVjdGx5IHNob3VsZCBiZSBmaW5lLgotICAgIGFzc2VydF90aHJvd3Mo
bmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgcnMuZ2V0UmVhZGVyKCk7IH0sICdnZXRSZWFk
ZXIoKSBzaG91bGQgZmFpbCcpOwotfSwgJ0dldHRpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciB2
aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQg
KHZpYSBkaXJlY3QgY29uc3RydWN0aW9uKScpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICAgIHZh
ciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotICAgIHJzLmdldFJlYWRlcigpOyAvLyBnZXRS
ZWFkZXIoKSBzaG91bGQgYmUgZmluZS4KLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3Io
KSwgZnVuY3Rpb24oKSB7IG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihycyk7IH0sICdjb25zdHJ1
Y3RpbmcgZGlyZWN0bHkgc2hvdWxkIGZhaWwnKTsKLX0sICdDb25zdHJ1Y3RpbmcgYSBSZWFkYWJs
ZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVh
ZHkgbG9ja2VkICh2aWEgZ2V0UmVhZGVyKScpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICAgIHZh
ciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotICAgIHJzLmdldFJlYWRlcigpOyAvLyBnZXRS
ZWFkZXIoKSBzaG91bGQgYmUgZmluZS4KLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3Io
KSwgZnVuY3Rpb24oKSB7IHJzLmdldFJlYWRlcigpOyB9LCAnZ2V0UmVhZGVyKCkgc2hvdWxkIGZh
aWwnKTsKLX0sICdHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdldFJlYWRlciBz
aG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVhZGVy
KScpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBjLmNsb3NlKCk7
Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihycyk7
IC8vIENvbnN0cnVjdGluZyBkaXJlY3RseSBzaG91bGQgbm90IHRocm93LgotfSwgJ0NvbnN0cnVj
dGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUg
c3RyZWFtIGlzIGNsb3NlZCcpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICAgIHZhciB0aGVFcnJv
ciA9IG5ldyBFcnJvcignZG9uXCd0IHNheSBpIGRpZG5cJ3Qgd2FybiB5YScpOwotICAgIHZhciBy
cyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0g
ICAgICAgICAgICBjLmVycm9yKHRoZUVycm9yKTsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAg
bmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJzKTsgLy8gQ29uc3RydWN0aW5nIGRpcmVjdGx5IHNo
b3VsZCBub3QgdGhyb3cuCi19LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIg
ZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCcpOwotCi12YXIg
dGVzdDEgPSBhc3luY190ZXN0KCdSZWFkaW5nIGZyb20gYSByZWFkZXIgZm9yIGFuIGVtcHR5IHN0
cmVhbSB3aWxsIHdhaXQgdW50aWwgYSBjaHVuayBpcyBhdmFpbGFibGUnKTsKLXRlc3QxLnN0ZXAo
ZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGNvbnRyb2xsZXI7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGNv
bnRyb2xsZXIgPSBjOwotICAgICAgICB9Ci0gICAgfSk7Ci0gICAgdmFyIHJlYWRlciA9IHJzLmdl
dFJlYWRlcigpOwotCi0gICAgcmVhZGVyLnJlYWQoKS50aGVuKHRlc3QxLnN0ZXBfZnVuYyhmdW5j
dGlvbihyZXN1bHQpIHsKLSAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZh
bHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB0aGUg
ZW5xdWV1ZWQgY2h1bmsnKTsKLSAgICAgICAgdGVzdDEuZG9uZSgpOwotICAgIH0pKTsKLQotICAg
IGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotfSk7Ci0KLXZhciB0ZXN0MiA9IGFzeW5jX3Rlc3Qo
J2NhbmNlbCgpIG9uIGEgcmVhZGVyIGRvZXMgbm90IHJlbGVhc2UgdGhlIHJlYWRlcicpOwotdGVz
dDIuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgY2FuY2VsQ2FsbGVkID0gZmFsc2U7Ci0gICAg
dmFyIHBhc3NlZFJlYXNvbiA9IG5ldyBFcnJvcignaXQgd2FzblwndCB0aGUgcmlnaHQgdGltZSwg
c29ycnknKTsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBjYW5j
ZWw6IGZ1bmN0aW9uKHJlYXNvbikgewotICAgICAgICAgICAgYXNzZXJ0X3RydWUocnMubG9ja2Vk
LCAndGhlIHN0cmVhbSBzaG91bGQgc3RpbGwgYmUgbG9ja2VkJyk7Ci0gICAgICAgICAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IHJzLmdldFJlYWRlcigpOyB9
LCAnc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGdldCBhbm90aGVyIHJlYWRlcicpOwotICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhyZWFzb24sIHBhc3NlZFJlYXNvbiwgJ3RoZSBjYW5jZWxsYXRpb24g
cmVhc29uIGlzIHBhc3NlZCB0aHJvdWdoIHRvIHRoZSB1bmRlcmx5aW5nIHNvdXJjZScpOwotICAg
ICAgICAgICAgY2FuY2VsQ2FsbGVkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAg
dmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotICAgIHJlYWRlci5jYW5jZWwocGFzc2VkUmVh
c29uKS50aGVuKAotICAgICAgICB0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICBhc3NlcnRfdHJ1ZShjYW5jZWxDYWxsZWQpOwotICAgICAgICAgICAgdGVzdDIuZG9uZSgn
cmVhZGVyLmNhbmNlbCgpIHNob3VsZCBmdWxmaWxsJyk7Ci0gICAgICAgIH0pLAotICAgICAgICB0
ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKCdyZWFkZXIuY2Fu
Y2VsKCkgc2hvdWxkIG5vdCByZWplY3QnKTsgfSkKLSAgICApOwotfSk7Ci0KLXZhciB0ZXN0MyA9
IGFzeW5jX3Rlc3QoJ2Nsb3NlZCBzaG91bGQgYmUgZnVsZmlsbGVkIGFmdGVyIHN0cmVhbSBpcyBj
bG9zZWQgKC5jbG9zZWQgYWNjZXNzIGJlZm9yZSBhY3F1aXJpbmcpJyk7Ci10ZXN0My5zdGVwKGZ1
bmN0aW9uKCkgewotICAgIHZhciBjb250cm9sbGVyOwotICAgIHZhciBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBjb250
cm9sbGVyID0gYzsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgdmFyIHJlYWRlciA9IHJzLmdl
dFJlYWRlcigpOwotICAgIHJlYWRlci5jbG9zZWQudGhlbih0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rp
b24oKSB7Ci0gICAgICAgIHRlc3QzLmRvbmUoJ3JlYWRlciBjbG9zZWQgc2hvdWxkIGJlIGZ1bGZp
bGxlZCcpOwotICAgIH0pKTsKLQotICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKLX0pOwotCi12YXIg
dGVzdDQgPSBhc3luY190ZXN0KCdjbG9zZWQgc2hvdWxkIGJlIHJlamVjdGVkIGFmdGVyIHJlYWRl
ciByZWxlYXNlcyBpdHMgbG9jayAobXVsdGlwbGUgc3RyZWFtIGxvY2tzKScpOwotdGVzdDQuc3Rl
cChmdW5jdGlvbigpIHsKLSAgICB2YXIgcHJvbWlzZUNhbGxzID0gMDsKLSAgICB2YXIgY29udHJv
bGxlcjsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDog
ZnVuY3Rpb24oYykgewotICAgICAgICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgICAgIH0KLSAg
ICB9KTsKLQotICAgIHZhciByZWFkZXIxID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgICByZWFkZXIx
LnJlbGVhc2VMb2NrKCk7Ci0KLSAgICB2YXIgcmVhZGVyMiA9IHJzLmdldFJlYWRlcigpOwotICAg
IGNvbnRyb2xsZXIuY2xvc2UoKTsKLQotICAgIHJlYWRlcjEuY2xvc2VkLmNhdGNoKHRlc3Q0LnN0
ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJv
cigpLCBmdW5jdGlvbigpIHsgdGhyb3cgZTsgfSwgJ3JlYWRlcjEgY2xvc2VkIHNob3VsZCBiZSBy
ZWplY3RlZCB3aXRoIGEgVHlwZUVycm9yJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoKytwcm9t
aXNlQ2FsbHMsIDEpOwotICAgIH0pKTsKLQotICAgIHJlYWRlcjIuY2xvc2VkLnRoZW4odGVzdDQu
c3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICBhc3NlcnRfZXF1YWxzKCsrcHJvbWlzZUNh
bGxzLCAyKTsKLSAgICAgICAgdGVzdDQuZG9uZSgncmVhZGVyMiBjbG9zZWQgc2hvdWxkIGJlIGZ1
bGZpbGxlZCcpOwotICAgIH0pKTsKLX0pOwotCi12YXIgdGVzdDUgPSBhc3luY190ZXN0KCdNdWx0
aXBsZSByZWFkZXJzIGNhbiBhY2Nlc3MgdGhlIHN0cmVhbSBpbiBzZXF1ZW5jZScpOwotdGVzdDUu
c3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgcmVhZENvdW50ID0gMDsKLSAgICB2YXIgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAg
ICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICAgICAgICBjLmVucXVldWUoJ2InKTsKLSAgICAg
ICAgICAgIGMuY2xvc2UoKTsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgdmFyIHJlYWRlcjEg
PSBycy5nZXRSZWFkZXIoKTsKLSAgICByZWFkZXIxLnJlYWQoKS50aGVuKHRlc3Q1LnN0ZXBfZnVu
YyhmdW5jdGlvbihyKSB7Ci0gICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6
ICdhJywgZG9uZTogZmFsc2UgfSwgJ3JlYWRpbmcgdGhlIGZpcnN0IGNodW5rIGZyb20gcmVhZGVy
MSB3b3JrcycpOwotICAgICAgICArK3JlYWRDb3VudDsKLSAgICB9KSk7Ci0gICAgcmVhZGVyMS5y
ZWxlYXNlTG9jaygpOwotCi0gICAgdmFyIHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKLSAgICBy
ZWFkZXIyLnJlYWQoKS50aGVuKHRlc3Q1LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAg
IGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwgJ3Jl
YWRpbmcgdGhlIHNlY29uZCBjaHVuayBmcm9tIHJlYWRlcjIgd29ya3MnKTsKLSAgICAgICAgYXNz
ZXJ0X2VxdWFscygrK3JlYWRDb3VudCwgMik7Ci0gICAgICAgIHRlc3Q1LmRvbmUoKTsKLSAgICB9
KSk7Ci0gICAgcmVhZGVyMi5yZWxlYXNlTG9jaygpOwotfSk7Ci0KLXZhciB0ZXN0NiA9IGFzeW5j
X3Rlc3QoJ0Nhbm5vdCB1c2UgYW4gYWxyZWFkeS1yZWxlYXNlZCByZWFkZXIgdG8gdW5sb2NrIGEg
c3RyZWFtIGFnYWluJyk7Ci10ZXN0Ni5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAg
ICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgdmFyIHJlYWRl
cjEgPSBycy5nZXRSZWFkZXIoKTsKLSAgICByZWFkZXIxLnJlbGVhc2VMb2NrKCk7Ci0KLSAgICB2
YXIgcmVhZGVyMiA9IHJzLmdldFJlYWRlcigpOwotCi0gICAgcmVhZGVyMS5yZWxlYXNlTG9jaygp
OwotICAgIHJlYWRlcjIucmVhZCgpLnRoZW4odGVzdDYuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3Vs
dCkgewotICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdhJywg
ZG9uZTogZmFsc2UgfSwgJ3JlYWQoKSBzaG91bGQgc3RpbGwgd29yayBvbiByZWFkZXIyIGV2ZW4g
YWZ0ZXIgcmVhZGVyMSBpcyByZWxlYXNlZCcpOwotICAgICAgICB0ZXN0Ni5kb25lKCk7Ci0gICAg
fSkpOwotfSk7Ci0KLXZhciB0ZXN0NyA9IGFzeW5jX3Rlc3QoJ2NhbmNlbCgpIG9uIGEgcmVsZWFz
ZWQgcmVhZGVyIGlzIGEgbm8tb3AgYW5kIGRvZXMgbm90IHBhc3MgdGhyb3VnaCcpOwotdGVzdDcu
c3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgcHJvbWlzZUNhbGxzID0gMDsKLSAgICB2YXIgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAg
ICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICAgIH0sCi0gICAgICAgIGNhbmNlbDogZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCd1bmRlcmx5aW5nIHNvdXJj
ZSBjYW5jZWwgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKTsKLSAgICAgICAgfQotICAgIH0pOwotCi0g
ICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotICAgIHJlYWRlci5yZWxlYXNlTG9jaygp
OwotICAgIHJlYWRlci5jYW5jZWwoKS50aGVuKHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbih2KSB7
Ci0gICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ2NhbmNlbCBwcm9taXNlIHNob3VsZCBub3QgZnVs
ZmlsbCcpOwotICAgIH0pKS5jYXRjaCh0ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAg
ICAgICBhc3NlcnRfZXF1YWxzKCsrcHJvbWlzZUNhbGxzLCAyKTsKLSAgICAgICAgdGVzdDcuZG9u
ZSgpOwotICAgIH0pKTsKLQotICAgIHZhciByZWFkZXIyID0gcnMuZ2V0UmVhZGVyKCk7Ci0gICAg
cmVhZGVyMi5yZWFkKCkudGhlbih0ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgewotICAgICAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdh
IG5ldyByZWFkZXIgc2hvdWxkIGJlIGFibGUgdG8gcmVhZCBhIGNodW5rJyk7Ci0gICAgICAgIGFz
c2VydF9lcXVhbHMoKytwcm9taXNlQ2FsbHMsIDEpOwotICAgIH0pKTsKLX0pOwotCi12YXIgdGVz
dDggPSBhc3luY190ZXN0KCdHZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBhZnRlciBlcnJvcmluZyB0
aGUgc3RyZWFtIHNob3VsZCBzdWNjZWVkJyk7Ci10ZXN0OC5zdGVwKGZ1bmN0aW9uKCkgewotICAg
IHZhciBjb250cm9sbGVyOwotICAgIHZhciByZWNlaXZlZEVycm9ycyA9IDA7Ci0gICAgdmFyIHRo
ZUVycm9yID0gbmV3IEVycm9yKCdiYWQnKTsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgY29udHJvbGxl
ciA9IGM7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHZhciByZWFkZXIxID0gcnMuZ2V0UmVh
ZGVyKCk7Ci0KLSAgICByZWFkZXIxLmNsb3NlZC5jYXRjaCh0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rp
b24oZSkgewotICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAndGhlIGZpcnN0IHJl
YWRlciBjbG9zZWQgZ2V0dGVyIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHRoZSBlcnJvcicpOwot
ICAgICAgICArK3JlY2VpdmVkRXJyb3JzOwotICAgIH0pKTsKLQotICAgIHJlYWRlcjEucmVhZCgp
LmNhdGNoKHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAgIGFzc2VydF9lcXVh
bHMoZSwgdGhlRXJyb3IsICd0aGUgZmlyc3QgcmVhZGVyIHJlYWQoKSBzaG91bGQgYmUgcmVqZWN0
ZWQgd2l0aCB0aGUgZXJyb3InKTsKLSAgICAgICAgKytyZWNlaXZlZEVycm9yczsKLSAgICB9KSk7
Ci0KLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IHJzLmdl
dFJlYWRlcigpOyB9LCAndHJ5aW5nIHRvIGdldCBhbm90aGVyIHJlYWRlciBiZWZvcmUgZXJyb3Jp
bmcgc2hvdWxkIHRocm93Jyk7Ci0KLSAgICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKLQot
ICAgIHJlYWRlcjEucmVsZWFzZUxvY2soKTsKLQotICAgIHZhciByZWFkZXIyID0gcnMuZ2V0UmVh
ZGVyKCk7Ci0KLSAgICByZWFkZXIyLmNsb3NlZC5jYXRjaCh0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rp
b24oZSkgewotICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAndGhlIHNlY29uZCBy
ZWFkZXIgY2xvc2VkIGdldHRlciBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgZXJyb3InKTsK
LSAgICAgICAgKytyZWNlaXZlZEVycm9yczsKLSAgICB9KSk7Ci0KLSAgICByZWFkZXIyLnJlYWQo
KS5jYXRjaCh0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAgICBhc3NlcnRfZXF1
YWxzKGUsIHRoZUVycm9yLCAndGhlIHRoaXJkIHJlYWRlciByZWFkKCkgc2hvdWxkIGJlIHJlamVj
dGVkIHdpdGggdGhlIGVycm9yJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoKytyZWNlaXZlZEVy
cm9ycywgNCk7Ci0gICAgICAgIHRlc3Q4LmRvbmUoKTsKLSAgICB9KSk7Ci19KTsKLQotdGVzdChm
dW5jdGlvbigpIHsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oe30pOwotCi0gICAg
cnMuZ2V0UmVhZGVyKCk7Ci0gICAgd2luZG93LmdjKCk7Ci0KLSAgICBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IHJzLmdldFJlYWRlcigpOyB9LCAnb2xkIHJlYWRl
ciBzaG91bGQgc3RpbGwgYmUgbG9ja2luZyB0aGUgc3RyZWFtIGV2ZW4gYWZ0ZXIgZ2FyYmFnZSBj
b2xsZWN0aW9uJyk7Ci19LCAnR2FyYmFnZS1jb2xsZWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFk
ZXIgc2hvdWxkIG5vdCB1bmxvY2sgaXRzIHN0cmVhbScpOwotCi12YXIgdGVzdDkgPSBhc3luY190
ZXN0KCdSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgcHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0
ZWQgd2l0aCB1bmRlZmluZWQgaWYgdGhhdCBpcyB0aGUgZXJyb3InKTsKLXRlc3Q5LnN0ZXAoZnVu
Y3Rpb24oKSB7Ci0gICAgdmFyIGNvbnRyb2xsZXI7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGNvbnRy
b2xsZXIgPSBjOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBycy5nZXRSZWFkZXIoKS5jbG9z
ZWQudGhlbih0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFzc2VydF91bnJl
YWNoZWQoImNsb3NlZCBwcm9taXNlIHNob3VsZCBub3QgYmUgcmVzb2x2ZWQgd2hlbiBzdHJlYW0g
aXMgZXJyb3JlZCIpOwotICAgIH0pLCB0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24oZXJyKSB7Ci0g
ICAgICAgIGFzc2VydF9lcXVhbHMoZXJyLCB1bmRlZmluZWQsICdwYXNzZWQgZXJyb3Igc2hvdWxk
IGJlIHVuZGVmaW5lZCBhcyBpdCB3YXMnKTsKLSAgICAgICAgdGVzdDkuZG9uZSgpOwotICAgIH0p
KTsKLQotICAgIGNvbnRyb2xsZXIuZXJyb3IoKTsKLX0pOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1z
dHJlYW0tdGVlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRh
dGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDkyMGRkMzQ1MWU0OGQ4MzhkNDE5ZTBlM2RlOWE3MTJhNGViOTZlNDIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9y
ZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlZS5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMzA2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPHNjcmlwdCBzcmM9Jy4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyc+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0nLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzJz48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSdyZXNvdXJjZXMvc3RyZWFtcy11dGlscy5qcyc+PC9zY3JpcHQ+Ci08c2NyaXB0PgotLy8gVGhp
cyBpcyB1cGRhdGVkIHRpbGwgaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9zdHJlYW1zL2NvbW1p
dC9lYzVmZmEwMzYzMDhkOWY2MzUwZDI5NDY1NjBkNDhjZGJmMDkwOTM5Ci0KLXRlc3QoZnVuY3Rp
b24oKSB7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0KLSAgICB2YXIgcmVz
dWx0ID0gcnMudGVlKCk7Ci0KLSAgICBhc3NlcnRfdHJ1ZShBcnJheS5pc0FycmF5KHJlc3VsdCks
ICdyZXR1cm4gdmFsdWUgc2hvdWxkIGJlIGFuIGFycmF5Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhy
ZXN1bHQubGVuZ3RoLCAyLCAnYXJyYXkgc2hvdWxkIGhhdmUgbGVuZ3RoIDInKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKHJlc3VsdFswXS5jb25zdHJ1Y3RvciwgUmVhZGFibGVTdHJlYW0sICcwdGggZWxl
bWVudCBzaG91bGQgYmUgYSBSZWFkYWJsZVN0cmVhbScpOwotICAgIGFzc2VydF9lcXVhbHMocmVz
dWx0WzFdLmNvbnN0cnVjdG9yLCBSZWFkYWJsZVN0cmVhbSwgJzFzdCBlbGVtZW50IHNob3VsZCBi
ZSBhIFJlYWRhYmxlU3RyZWFtJyk7Ci19LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBycy50ZWUo
KSByZXR1cm5zIGFuIGFycmF5IG9mIHR3byBSZWFkYWJsZVN0cmVhbXMnKTsKLQotdmFyIHRlc3Qx
ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBzaG91bGQgYmUgYWJsZSB0byBy
ZWFkIG9uZSBicmFuY2ggdG8gdGhlIGVuZCB3aXRob3V0IGFmZmVjdGluZyB0aGUgb3RoZXInKTsK
LXRlc3QxLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHJlYWRDYWxscyA9IDA7Ci0gICAgdmFy
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsK
LSAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAgICAgICAgYy5lbnF1ZXVlKCdiJyk7
Ci0gICAgICAgICAgICBjLmNsb3NlKCk7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHZhciBi
cmFuY2ggPSBycy50ZWUoKTsKLSAgICB2YXIgYnJhbmNoMSA9IGJyYW5jaFswXTsKLSAgICB2YXIg
YnJhbmNoMiA9IGJyYW5jaFsxXTsKLSAgICB2YXIgcmVhZGVyMSA9IGJyYW5jaDEuZ2V0UmVhZGVy
KCk7Ci0gICAgdmFyIHJlYWRlcjIgPSBicmFuY2gyLmdldFJlYWRlcigpOwotCi0gICAgcmVhZGVy
MS5jbG9zZWQudGhlbih0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFzc2Vy
dF9lcXVhbHMocmVhZENhbGxzLCA0KTsKLSAgICAgICAgdGVzdDEuZG9uZSgpOwotICAgIH0pKS5j
YXRjaCh0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9
KSk7Ci0gICAgcmVhZGVyMi5jbG9zZWQudGhlbih0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
IGFzc2VydF91bnJlYWNoZWQoJ2JyYW5jaDIgc2hvdWxkIG5vdCBiZSBjbG9zZWQnKTsgfSkpOwot
Ci0gICAgcmVhZGVyMS5yZWFkKCkudGhlbih0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgewot
ICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNl
IH0sICdmaXJzdCBjaHVuayBmcm9tIGJyYW5jaDEgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLSAgICAg
ICAgKytyZWFkQ2FsbHM7Ci0gICAgfSkpOwotICAgIHJlYWRlcjEucmVhZCgpLnRoZW4odGVzdDEu
c3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKLSAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwg
eyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LCAnc2Vjb25kIGNodW5rIGZyb20gYnJhbmNoMSBz
aG91bGQgYmUgY29ycmVjdCcpOwotICAgICAgICArK3JlYWRDYWxsczsKLSAgICB9KSk7Ci0gICAg
cmVhZGVyMS5yZWFkKCkudGhlbih0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgewotICAgICAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUg
fSwgJ3RoaXJkIHJlYWQoKSBmcm9tIGJyYW5jaDEgc2hvdWxkIGJlIGRvbmUnKTsKLSAgICAgICAg
KytyZWFkQ2FsbHM7Ci0gICAgfSkpOwotCi0gICAgcmVhZGVyMi5yZWFkKCkudGhlbih0ZXN0MS5z
dGVwX2Z1bmMoZnVuY3Rpb24ocikgewotICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7
IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCBjaHVuayBmcm9tIGJyYW5jaDIgc2hv
dWxkIGJlIGNvcnJlY3QnKTsKLSAgICAgICAgKytyZWFkQ2FsbHM7Ci0gICAgfSkpOwotfSk7Ci0K
LXZhciB0ZXN0MiA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogdmFsdWVzIHNo
b3VsZCBiZSBlcXVhbCBhY3Jvc3MgZWFjaCBicmFuY2gnKTsKLXRlc3QyLnN0ZXAoZnVuY3Rpb24o
KSB7Ci0gICAgdmFyIHRoZU9iamVjdCA9IHsgdGhlOiAndGVzdCBvYmplY3QnIH07Ci0gICAgdmFy
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsK
LSAgICAgICAgICAgIGMuZW5xdWV1ZSh0aGVPYmplY3QpOwotICAgICAgICB9Ci0gICAgfSk7Ci0K
LSAgICB2YXIgYnJhbmNoID0gcnMudGVlKCk7Ci0gICAgdmFyIGJyYW5jaDEgPSBicmFuY2hbMF07
Ci0gICAgdmFyIGJyYW5jaDIgPSBicmFuY2hbMV07Ci0gICAgdmFyIHJlYWRlcjEgPSBicmFuY2gx
LmdldFJlYWRlcigpOwotICAgIHZhciByZWFkZXIyID0gYnJhbmNoMi5nZXRSZWFkZXIoKTsKLQot
ICAgIFByb21pc2UuYWxsKFtyZWFkZXIxLnJlYWQoKSwgcmVhZGVyMi5yZWFkKCldKS50aGVuKHRl
c3QyLnN0ZXBfZnVuYyhmdW5jdGlvbih2YWx1ZXMpIHsKLSAgICAgICAgYXNzZXJ0X29iamVjdF9l
cXVhbHModmFsdWVzWzBdLCB2YWx1ZXNbMV0sICd0aGUgdmFsdWVzIHNob3VsZCBiZSBlcXVhbCcp
OwotICAgICAgICB0ZXN0Mi5kb25lKCk7Ci0gICAgfSkpOwotfSk7Ci0KLXZhciB0ZXN0MyA9IGFz
eW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogZXJyb3JzIGluIHRoZSBzb3VyY2Ugc2hv
dWxkIHByb3BhZ2F0ZSB0byBib3RoIGJyYW5jaGVzJyk7Ci10ZXN0My5zdGVwKGZ1bmN0aW9uKCkg
ewotICAgIHZhciBjbG9zZWRSZWplY3RzID0gMDsKLSAgICB2YXIgcmVhZENhbGxzID0gMDsKLSAg
ICB2YXIgcmVhZFJlamVjdHMgPSAwOwotICAgIHZhciB0aGVFcnJvciA9IG5ldyBFcnJvcignYm9v
IScpOwotICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBm
dW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAgICAgICAgIGMu
ZW5xdWV1ZSgnYicpOwotICAgICAgICB9LAotICAgICAgICBwdWxsOiBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIHRocm93IHRoZUVycm9yOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICB2YXIg
YnJhbmNoID0gcnMudGVlKCk7Ci0gICAgdmFyIGJyYW5jaDEgPSBicmFuY2hbMF07Ci0gICAgdmFy
IGJyYW5jaDIgPSBicmFuY2hbMV07Ci0gICAgdmFyIHJlYWRlcjEgPSBicmFuY2gxLmdldFJlYWRl
cigpOwotICAgIHZhciByZWFkZXIyID0gYnJhbmNoMi5nZXRSZWFkZXIoKTsKLQotICAgIHJlYWRl
cjEubGFiZWwgPSAncmVhZGVyMSc7Ci0gICAgcmVhZGVyMi5sYWJlbCA9ICdyZWFkZXIyJzsKLQot
ICAgIHJlYWRlcjEuY2xvc2VkLmNhdGNoKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0g
ICAgICAgICsrY2xvc2VkUmVqZWN0czsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJv
ciwgJ2JyYW5jaDEgY2xvc2VkIHByb21pc2Ugc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicp
OwotICAgIH0pKTsKLSAgICByZWFkZXIyLmNsb3NlZC5jYXRjaCh0ZXN0My5zdGVwX2Z1bmMoZnVu
Y3Rpb24oZSkgewotICAgICAgICArK2Nsb3NlZFJlamVjdHM7Ci0gICAgICAgIGFzc2VydF9lcXVh
bHMoZSwgdGhlRXJyb3IsICdicmFuY2gyIGNsb3NlZCBwcm9taXNlIHNob3VsZCByZWplY3Qgd2l0
aCB0aGUgZXJyb3InKTsKLSAgICB9KSk7Ci0KLSAgICByZWFkZXIxLnJlYWQoKS50aGVuKHRlc3Qz
LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAgICsrcmVhZENhbGxzOwotICAgICAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdzaG91
bGQgYmUgYWJsZSB0byByZWFkIHRoZSBmaXJzdCBjaHVuayBpbiBicmFuY2gxJyk7Ci0gICAgfSkp
OwotCi0gICAgcmVhZGVyMS5yZWFkKCkudGhlbih0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24ocikg
ewotICAgICAgICArK3JlYWRDYWxsczsKLSAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwg
eyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LCAnc2hvdWxkIGJlIGFibGUgdG8gcmVhZCB0aGUg
c2Vjb25kIGNodW5rIGluIGJyYW5jaDEnKTsKLQotICAgICAgICByZXR1cm4gcmVhZGVyMi5yZWFk
KCkudGhlbigKLSAgICAgICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0
X3VucmVhY2hlZCgnb25jZSB0aGUgcm9vdCBzdHJlYW0gaGFzIGVycm9yZWQsIHlvdSBzaG91bGQg
bm90IGJlIGFibGUgdG8gcmVhZCBmcm9tIGJyYW5jaDInKTsgfSksCi0gICAgICAgICAgICB0ZXN0
My5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgICsrcmVhZFJlamVjdHM7
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2JyYW5jaDIgcmVh
ZCgpIHByb21pc2Ugc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOwotICAgICAgICAgICAg
fSkpOwotICAgIH0pKS50aGVuKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAg
cmV0dXJuIHJlYWRlcjEucmVhZCgpLnRoZW4oCi0gICAgICAgICAgICB0ZXN0My5zdGVwX2Z1bmMo
ZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ29uY2UgdGhlIHJvb3Qgc3RyZWFtIGhhcyBl
cnJvcmVkLCB5b3Ugc2hvdWxkIG5vdCBiZSBhYmxlIHRvIHJlYWQgZnJvbSBicmFuY2gxIGVpdGhl
cicpOyB9KSwKLSAgICAgICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAg
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjbG9zZWRSZWplY3RzLCAyKTsKLSAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHJlYWRDYWxscywgMik7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscygrK3JlYWRSZWplY3RzLCAyKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KGUsIHRoZUVycm9yLCAnYnJhbmNoMSByZWFkKCkgcHJvbWlzZSBzaG91bGQgcmVqZWN0IHdpdGgg
dGhlIGVycm9yJyk7Ci0gICAgICAgICAgICAgICAgdGVzdDMuZG9uZSgpOwotICAgICAgICAgICAg
fSkKLSAgICAgICAgKTsKLSAgICB9KSkuY2F0Y2godGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKGUp
IHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSkpOwotfSk7Ci0KLXZhciB0ZXN0NCA9IGFzeW5jX3Rl
c3QoJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJyYW5jaDEgc2hvdWxkIG5vdCBp
bXBhY3QgYnJhbmNoMicpOwotdGVzdDQuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgYnJhbmNo
MVJlYWQgPSBmYWxzZTsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAg
ICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAg
ICAgICAgICBjLmVucXVldWUoJ2InKTsKLSAgICAgICAgICAgIGMuY2xvc2UoKTsKLSAgICAgICAg
fQotICAgIH0pOwotCi0gICAgdmFyIGJyYW5jaCA9IHJzLnRlZSgpOwotICAgIHZhciBicmFuY2gx
ID0gYnJhbmNoWzBdOwotICAgIHZhciBicmFuY2gyID0gYnJhbmNoWzFdOwotICAgIGJyYW5jaDEu
Y2FuY2VsKCk7Ci0KLSAgICByZWFkYWJsZVN0cmVhbVRvQXJyYXkoYnJhbmNoMSkudGhlbih0ZXN0
NC5zdGVwX2Z1bmMoZnVuY3Rpb24oY2h1bmtzKSB7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMoY2h1bmtzLCBbXSwgJ2JyYW5jaDEgc2hvdWxkIGhhdmUgbm8gY2h1bmtzJyk7Ci0gICAgICAg
IGJyYW5jaDFSZWFkID0gdHJ1ZTsKLSAgICB9KSk7Ci0KLSAgICByZWFkYWJsZVN0cmVhbVRvQXJy
YXkoYnJhbmNoMikudGhlbih0ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rpb24oY2h1bmtzKSB7Ci0gICAg
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbJ2EnLCAnYiddLCAnYnJhbmNoMiBzaG91
bGQgaGF2ZSB0d28gY2h1bmtzJyk7Ci0gICAgICAgIGFzc2VydF90cnVlKGJyYW5jaDFSZWFkKTsK
LSAgICAgICAgdGVzdDQuZG9uZSgpOwotICAgIH0pKTsKLX0pOwotCi12YXIgdGVzdDUgPSBhc3lu
Y190ZXN0KCdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBicmFuY2gyIHNob3VsZCBu
b3QgaW1wYWN0IGJyYW5jaDEnKTsKLXRlc3Q1LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGJy
YW5jaDJSZWFkID0gZmFsc2U7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAg
ICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOwot
ICAgICAgICAgICAgYy5lbnF1ZXVlKCdiJyk7Ci0gICAgICAgICAgICBjLmNsb3NlKCk7Ci0gICAg
ICAgIH0KLSAgICB9KTsKLQotICAgIHZhciBicmFuY2ggPSBycy50ZWUoKTsKLSAgICB2YXIgYnJh
bmNoMSA9IGJyYW5jaFswXTsKLSAgICB2YXIgYnJhbmNoMiA9IGJyYW5jaFsxXTsKLSAgICBicmFu
Y2gyLmNhbmNlbCgpOwotCi0gICAgcmVhZGFibGVTdHJlYW1Ub0FycmF5KGJyYW5jaDEpLnRoZW4o
dGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKGNodW5rcykgewotICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGNodW5rcywgWydhJywgJ2InXSwgJ2JyYW5jaDEgc2hvdWxkIGhhdmUgdHdvIGNodW5r
cycpOwotICAgICAgICBhc3NlcnRfdHJ1ZShicmFuY2gyUmVhZCk7Ci0gICAgICAgIHRlc3Q1LmRv
bmUoKTsKLSAgICB9KSk7Ci0gICAgcmVhZGFibGVTdHJlYW1Ub0FycmF5KGJyYW5jaDIpLnRoZW4o
dGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKGNodW5rcykgewotICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGNodW5rcywgW10sICdicmFuY2gyIHNob3VsZCBoYXZlIG5vIGNodW5rcycpOwotICAg
ICAgICBicmFuY2gyUmVhZCA9IHRydWU7Ci0gICAgfSkpOwotfSk7Ci0KLXZhciB0ZXN0NiA9IGFz
eW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJvdGggYnJhbmNoZXMg
c2hvdWxkIGFnZ3JlZ2F0ZSB0aGUgY2FuY2VsIHJlYXNvbnMgaW50byBhbiBhcnJheScpOwotdGVz
dDYuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgcmVhc29uMSA9IG5ldyBFcnJvcignV2VcJ3Jl
IHdhbnRlZCBtZW4uJyk7Ci0gICAgdmFyIHJlYXNvbjIgPSBuZXcgRXJyb3IoJ0kgaGF2ZSB0aGUg
ZGVhdGggc2VudGVuY2Ugb24gdHdlbHZlIHN5c3RlbXMuJyk7Ci0KLSAgICB2YXIgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oewotICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKHJlYXNvbikgewotICAg
ICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhyZWFzb24sIFtyZWFzb24xLCByZWFzb24yXSwg
J3RoZSBjYW5jZWwgcmVhc29uIHNob3VsZCBiZSBhbiBhcnJheSBjb250YWluaW5nIHRob3NlIGZy
b20gdGhlIGJyYW5jaGVzJyk7Ci0gICAgICAgICAgICB0ZXN0Ni5kb25lKCk7Ci0gICAgICAgIH0K
LSAgICB9KTsKLQotICAgIHZhciBicmFuY2ggPSBycy50ZWUoKTsKLSAgICB2YXIgYnJhbmNoMSA9
IGJyYW5jaFswXTsKLSAgICB2YXIgYnJhbmNoMiA9IGJyYW5jaFsxXTsKLSAgICBicmFuY2gxLmNh
bmNlbChyZWFzb24xKTsKLSAgICBicmFuY2gyLmNhbmNlbChyZWFzb24yKTsKLX0pOwotCi12YXIg
dGVzdDcgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGZhaWxpbmcgdG8gY2Fu
Y2VsIHRoZSBvcmlnaW5hbCBzdHJlYW0gc2hvdWxkIGNhdXNlIGNhbmNlbCgpIHRvIHJlamVjdCBv
biBicmFuY2hlcycpOwotdGVzdDcuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgY2FuY2VsUmVq
ZWN0ZWQgPSBmYWxzZTsKLSAgICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ0lcJ2xsIGJlIGNh
cmVmdWwuJyk7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgY2Fu
Y2VsOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHRocm93IHRoZUVycm9yOwotICAgICAgICB9
Ci0gICAgfSk7Ci0KLSAgICB2YXIgYnJhbmNoID0gcnMudGVlKCk7Ci0gICAgdmFyIGJyYW5jaDEg
PSBicmFuY2hbMF07Ci0gICAgdmFyIGJyYW5jaDIgPSBicmFuY2hbMV07Ci0gICAgYnJhbmNoMS5j
YW5jZWwoKS5jYXRjaCh0ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAgICBhc3Nl
cnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnYnJhbmNoMS5jYW5jZWwoKSBzaG91bGQgcmVqZWN0IHdp
dGggdGhlIGVycm9yJyk7Ci0gICAgICAgIGNhbmNlbFJlamVjdGVkID0gdHJ1ZTsKLSAgICB9KSk7
Ci0gICAgYnJhbmNoMi5jYW5jZWwoKS5jYXRjaCh0ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkg
ewotICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnYnJhbmNoMi5jYW5jZWwoKSBz
aG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7Ci0gICAgICAgIGFzc2VydF90cnVlKGNhbmNl
bFJlamVjdGVkKTsKLSAgICAgICAgdGVzdDcuZG9uZSgpOwotICAgIH0pKTsKLX0pOwotCi12YXIg
dGVzdDggPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNsb3NpbmcgdGhlIG9y
aWdpbmFsIHNob3VsZCBpbW1lZGlhdGVseSBjbG9zZSB0aGUgYnJhbmNoZXMnKTsKLXRlc3Q4LnN0
ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHJlYWRlcjFDbG9zZWQgPSBmYWxzZTsKLSAgICB2YXIg
Y29udHJvbGxlcjsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBz
dGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgICAg
IH0KLSAgICB9KTsKLQotICAgIHZhciBicmFuY2ggPSBycy50ZWUoKTsKLSAgICB2YXIgYnJhbmNo
MSA9IGJyYW5jaFswXTsKLSAgICB2YXIgYnJhbmNoMiA9IGJyYW5jaFsxXTsKLSAgICB2YXIgcmVh
ZGVyMSA9IGJyYW5jaDEuZ2V0UmVhZGVyKCk7Ci0gICAgdmFyIHJlYWRlcjIgPSBicmFuY2gyLmdl
dFJlYWRlcigpOwotCi0gICAgcmVhZGVyMS5jbG9zZWQudGhlbih0ZXN0OC5zdGVwX2Z1bmMoZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIHJlYWRlcjFDbG9zZWQgPSB0cnVlOyAvL2JyYW5jaDEgc2hvdWxk
IGJlIGNsb3NlZAotICAgIH0pKS5jYXRjaCh0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBh
c3NlcnRfdW5yZWFjaGVkKGUpOyB9KSk7Ci0gICAgcmVhZGVyMi5jbG9zZWQudGhlbih0ZXN0OC5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFzc2VydF90cnVlKHJlYWRlcjFDbG9zZWQp
OwotICAgICAgICB0ZXN0OC5kb25lKCdicmFuY2gyIHNob3VsZCBiZSBjbG9zZWQnKTsKLSAgICB9
KSkuY2F0Y2godGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChl
KTsgfSkpOwotCi0gICAgY29udHJvbGxlci5jbG9zZSgpOwotfSk7Ci0KLXZhciB0ZXN0OSA9IGFz
eW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogZXJyb3JpbmcgdGhlIG9yaWdpbmFsIHNo
b3VsZCBpbW1lZGlhdGVseSBlcnJvciB0aGUgYnJhbmNoZXMnKTsKLXRlc3Q5LnN0ZXAoZnVuY3Rp
b24oKSB7Ci0gICAgdmFyIHJlYWRlcjFSZWplY3RlZCA9IGZhbHNlOwotICAgIHZhciBjb250cm9s
bGVyOwotICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0KGMp
IHsKLSAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAg
ICB2YXIgYnJhbmNoID0gcnMudGVlKCk7Ci0gICAgdmFyIGJyYW5jaDEgPSBicmFuY2hbMF07Ci0g
ICAgdmFyIGJyYW5jaDIgPSBicmFuY2hbMV07Ci0gICAgdmFyIHJlYWRlcjEgPSBicmFuY2gxLmdl
dFJlYWRlcigpOwotICAgIHZhciByZWFkZXIyID0gYnJhbmNoMi5nZXRSZWFkZXIoKTsKLQotICAg
IHZhciB0aGVFcnJvciA9IG5ldyBFcnJvcignYm9vIScpOwotCi0gICAgcmVhZGVyMS5jbG9zZWQu
dGhlbigKLSAgICAgICAgdGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFj
aGVkKCdicmFuY2gxIHNob3VsZCBub3QgYmUgY2xvc2VkJyk7IH0pLAotICAgICAgICB0ZXN0OS5z
dGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVF
cnJvciwgJ2JyYW5jaDEgc2hvdWxkIGJlIGVycm9yZWQgd2l0aCB0aGUgZXJyb3InKTsKLSAgICAg
ICAgICAgIHJlYWRlcjFSZWplY3RlZCA9IHRydWU7Ci0gICAgICAgIH0pCi0gICAgKTsKLSAgICBy
ZWFkZXIyLmNsb3NlZC50aGVuKAotICAgICAgICB0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
IGFzc2VydF91bnJlYWNoZWQoJ2JyYW5jaDIgc2hvdWxkIG5vdCBiZSBjbG9zZWQnKTsgfSksCi0g
ICAgICAgIHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKGUsIHRoZUVycm9yLCAnYnJhbmNoMiBzaG91bGQgYmUgZXJyb3JlZCB3aXRoIHRoZSBl
cnJvcicpOwotICAgICAgICAgICAgYXNzZXJ0X3RydWUocmVhZGVyMVJlamVjdGVkKTsKLSAgICAg
ICAgICAgIHRlc3Q5LmRvbmUoKTsKLSAgICAgICAgfSkKLSAgICApOwotCi0gICAgY29udHJvbGxl
ci5lcnJvcih0aGVFcnJvcik7Ci19KTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBs
YXRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dAppbmRleCAxZjdh
ZmIyOTM0YzUyYWUwMzljZjI1M2JlMWNhMzA5NTQ2MDgwZDk2Li44NzY0ZGE3MjVkNGMzMGVjNGQw
ZDNkOTg1OTlhNmZhYWE5NGJjZWU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3Jl
ZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9y
ZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dApAQCAtMSw5MiArMSwxOCBAQAog
Ci1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFbXB0eSB3aXRoIFJlYWRhYmxlU3RyZWFtIChlbXB0
eSkgCi1QQVNTIGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRp
ZXMgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFbXB0eVJlYWRlciB3aXRoIFJlYWRhYmxlU3Ry
ZWFtIChlbXB0eSkgcmVhZGVyIAotUEFTUyBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRo
b2RzIGFuZCBwcm9wZXJ0aWVzIAotUEFTUyBsb2NrZWQgc2hvdWxkIGJlIHRydWUgCi1QQVNTIHJl
YWQoKSBzaG91bGQgbmV2ZXIgc2V0dGxlIAotUEFTUyB0d28gcmVhZCgpcyBzaG91bGQgYm90aCBu
ZXZlciBzZXR0bGUgCi1QQVNTIHJlYWQoKSBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2Vz
IGVhY2ggdGltZSAKLVBBU1MgZ2V0UmVhZGVyKCkgYWdhaW4gb24gdGhlIHN0cmVhbSBzaG91bGQg
ZmFpbCAKLVBBU1MgcmVsZWFzaW5nIHRoZSBsb2NrIHdpdGggcGVuZGluZyByZWFkIHJlcXVlc3Rz
IHNob3VsZCB0aHJvdyBidXQgdGhlIHJlYWQgcmVxdWVzdHMgc2hvdWxkIHN0YXkgcGVuZGluZyAK
LVBBU1MgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBmdXJ0aGVyIHJlYWQoKSBjYWxs
cyB0byByZWplY3Qgd2l0aCBhIFR5cGVFcnJvciAKLVBBU1MgcmVsZWFzaW5nIHRoZSBsb2NrIHNo
b3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IAotUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hv
dWxkIGNhdXNlIGxvY2tlZCB0byBiZWNvbWUgZmFsc2UgCi1QQVNTIGNhbmNlbGluZyB2aWEgdGhl
IHJlYWRlciBzaG91bGQgY2F1c2UgdGhlIHJlYWRlciB0byBhY3QgY2xvc2VkIAotUEFTUyBjYW5j
ZWxpbmcgdmlhIHRoZSBzdHJlYW0gc2hvdWxkIGZhaWwgCiBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVk
UlNDbG9zZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0YXJ0KSAK
LVBBU1MgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNl
IGVhY2ggdGltZSAKLVBBU1MgbG9ja2VkIHNob3VsZCBiZSBmYWxzZSAKLVBBU1MgZ2V0UmVhZGVy
KCkgc2hvdWxkIGJlIE9LIAogUEFTUyBwaXBpbmcgdG8gYSBXcml0YWJsZVN0cmVhbSBpbiB0aGUg
d3JpdGFibGUgc3RhdGUgc2hvdWxkIGNsb3NlIHRoZSB3cml0YWJsZSBzdHJlYW0gCiBQQVNTIHBp
cGluZyB0byBhIFdyaXRhYmxlU3RyZWFtIGluIHRoZSB3cml0YWJsZSBzdGF0ZSB3aXRoIHsgcHJl
dmVudENsb3NlOiB0cnVlIH0gc2hvdWxkIGRvIG5vdGhpbmcgCi1QQVNTIHNob3VsZCBiZSBhYmxl
IHRvIGFjcXVpcmUgbXVsdGlwbGUgcmVhZGVycyBpZiB0aGV5IGFyZSByZWxlYXNlZCBpbiBzdWNj
ZXNzaW9uIAotUEFTUyBzaG91bGQgbm90IGJlIGFibGUgdG8gYWNxdWlyZSBhIHNlY29uZCByZWFk
ZXIgaWYgd2UgZG9uJ3QgcmVsZWFzZSB0aGUgZmlyc3Qgb25lIAotUEFTUyBSdW5uaW5nIHRlbXBs
YXRlZFJTQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYmVm
b3JlIGdldHRpbmcgcmVhZGVyKSAKLVBBU1MgcmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2
YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCi1QQVNTIHJlYWQoKSBtdWx0aXBsZSB0aW1l
cyBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAot
UEFTUyByZWFkKCkgc2hvdWxkIHdvcmsgd2hlbiB1c2VkIHdpdGhpbiBhbm90aGVyIHJlYWQoKSBm
dWxmaWxsIGNhbGxiYWNrIAotUEFTUyBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmlu
ZWQgCi1QQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVj
dCBhbmQgY2hhbmdlIGlkZW50aXR5IAotUEFTUyBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlz
dGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRl
ZFJTQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIg
Z2V0dGluZyByZWFkZXIpIAotUEFTUyByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVl
OiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKLVBBU1MgcmVhZCgpIG11bHRpcGxlIHRpbWVzIHNo
b3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCi1QQVNT
IHJlYWQoKSBzaG91bGQgd29yayB3aGVuIHVzZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZp
bGwgY2FsbGJhY2sgCi1QQVNTIGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCAK
LVBBU1MgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFu
ZCBjaGFuZ2UgaWRlbnRpdHkgCi1QQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5j
dCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgCiBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlND
bG9zZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpIAotUEFTUyBjYW5j
ZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1l
IAotUEFTUyBsb2NrZWQgc2hvdWxkIGJlIGZhbHNlIAotUEFTUyBnZXRSZWFkZXIoKSBzaG91bGQg
YmUgT0sgCiBQQVNTIHBpcGluZyB0byBhIFdyaXRhYmxlU3RyZWFtIGluIHRoZSB3cml0YWJsZSBz
dGF0ZSBzaG91bGQgY2xvc2UgdGhlIHdyaXRhYmxlIHN0cmVhbSAKIFBBU1MgcGlwaW5nIHRvIGEg
V3JpdGFibGVTdHJlYW0gaW4gdGhlIHdyaXRhYmxlIHN0YXRlIHdpdGggeyBwcmV2ZW50Q2xvc2U6
IHRydWUgfSBzaG91bGQgZG8gbm90aGluZyAKLVBBU1Mgc2hvdWxkIGJlIGFibGUgdG8gYWNxdWly
ZSBtdWx0aXBsZSByZWFkZXJzIGlmIHRoZXkgYXJlIHJlbGVhc2VkIGluIHN1Y2Nlc3Npb24gCi1Q
QVNTIHNob3VsZCBub3QgYmUgYWJsZSB0byBhY3F1aXJlIGEgc2Vjb25kIHJlYWRlciBpZiB3ZSBk
b24ndCByZWxlYXNlIHRoZSBmaXJzdCBvbmUgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9z
ZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCB2aWEgY2FuY2VsIGFm
dGVyIGdldHRpbmcgcmVhZGVyKSAKLVBBU1MgcmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2
YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCi1QQVNTIHJlYWQoKSBtdWx0aXBsZSB0aW1l
cyBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAot
UEFTUyByZWFkKCkgc2hvdWxkIHdvcmsgd2hlbiB1c2VkIHdpdGhpbiBhbm90aGVyIHJlYWQoKSBm
dWxmaWxsIGNhbGxiYWNrIAotUEFTUyBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmlu
ZWQgCi1QQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVj
dCBhbmQgY2hhbmdlIGlkZW50aXR5IAotUEFTUyBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlz
dGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIAogUEFTUyBSdW5uaW5nIHRlbXBsYXRl
ZFJTRXJyb3JlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0
KSAKIFBBU1MgcGlwaW5nIHRvIGEgV3JpdGFibGVTdHJlYW0gaW4gdGhlIHdyaXRhYmxlIHN0YXRl
IHNob3VsZCBhYm9ydCB0aGUgd3JpdGFibGUgc3RyZWFtIAotUEFTUyBnZXRSZWFkZXIoKSBzaG91
bGQgcmV0dXJuIGEgcmVhZGVyIHRoYXQgYWN0cyBlcnJvcmVkIAotUEFTUyByZWFkKCkgdHdpY2Ug
c2hvdWxkIGdpdmUgdGhlIGVycm9yIGVhY2ggdGltZSAKLVBBU1MgbG9ja2VkIHNob3VsZCBiZSBm
YWxzZSAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRTeW5jT25seSB3aXRoIFJlYWRh
YmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KSAKLVBBU1Mgc2hvdWxkIGJlIGFi
bGUgdG8gb2J0YWluIGEgc2Vjb25kIHJlYWRlciwgd2l0aCB0aGUgY29ycmVjdCBjbG9zZWQgcHJv
bWlzZSAKLVBBU1Mgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIG9idGFpbiBhZGRpdGlvbmFsIHJlYWRl
cnMgaWYgd2UgZG9uJ3QgcmVsZWFzZSB0aGUgZmlyc3QgbG9jayAKLVBBU1MgY2FuY2VsKCkgc2hv
dWxkIHJldHVybiBhIGRpc3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFjaCB0aW1lIAotUEFTUyBy
ZWFkZXIgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IHJlamVjdGVkIHByb21pc2Ug
ZWFjaCB0aW1lIAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRoIFJlYWRhYmxl
U3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0
KSAKIFBBU1MgcGlwaW5nIHRvIGEgV3JpdGFibGVTdHJlYW0gaW4gdGhlIHdyaXRhYmxlIHN0YXRl
IHNob3VsZCBhYm9ydCB0aGUgd3JpdGFibGUgc3RyZWFtIAotUEFTUyBnZXRSZWFkZXIoKSBzaG91
bGQgcmV0dXJuIGEgcmVhZGVyIHRoYXQgYWN0cyBlcnJvcmVkIAotUEFTUyByZWFkKCkgdHdpY2Ug
c2hvdWxkIGdpdmUgdGhlIGVycm9yIGVhY2ggdGltZSAKLVBBU1MgbG9ja2VkIHNob3VsZCBiZSBm
YWxzZSAKIFBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRBc3luY09ubHkgd2l0aCBSZWFk
YWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBz
dGFydCkgcmVhZGVyIAogUEFTUyBwaXBpbmcgd2l0aCBubyBvcHRpb25zIAogUEFTUyBwaXBpbmcg
d2l0aCB7IHByZXZlbnRBYm9ydDogZmFsc2UgfSAKIFBBU1MgcGlwaW5nIHdpdGggeyBwcmV2ZW50
QWJvcnQ6IHRydWUgfSAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIgd2l0
aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlz
ZSBpbiBzdGFydCkgcmVhZGVyIAotUEFTUyBjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBl
cnJvciAKLVBBU1MgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVq
ZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgCi1QQVNTIHJlYWQoKSBzaG91bGQgcmVqZWN0IHdpdGgg
dGhlIGVycm9yIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlciB3aXRoIFJl
YWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpIAotUEFT
UyBjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciAKLVBBU1MgcmVsZWFzaW5nIHRo
ZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkg
Ci1QQVNTIHJlYWQoKSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAotUEFTUyBSdW5uaW5n
IHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJy
b3JlZCBhZnRlciBnZXR0aW5nIHJlYWRlcikgCi1QQVNTIGNsb3NlZCBzaG91bGQgcmVqZWN0IHdp
dGggdGhlIGVycm9yIAotUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3Nl
ZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKLVBBU1MgcmVhZCgpIHNob3VsZCByZWpl
Y3Qgd2l0aCB0aGUgZXJyb3IgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNUd29DaHVua3NPcGVu
UmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHN0aWxsIG9w
ZW4pIHJlYWRlciAKLVBBU1MgY2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aG91dCB3YWl0aW5nIHdp
bGwgZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1bmtzIAotUEFTUyBjYWxsaW5nIHJlYWQoKSB0d2lj
ZSB3aXRoIHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MgCi1QQVNTIHJl
YWQoKSBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzIGVhY2ggdGltZSAKLVBBU1MgY2Fu
Y2VsKCkgYWZ0ZXIgYSByZWFkKCkgc2hvdWxkIHN0aWxsIGdpdmUgdGhhdCBzaW5nbGUgcmVhZCBy
ZXN1bHQgCiBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNUd29DaHVua3NDbG9zZWQgd2l0aCBSZWFk
YWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpIAogUEFTUyBwaXBp
bmcgd2l0aCBubyBvcHRpb25zIGFuZCBubyBkZXN0aW5hdGlvbiBlcnJvcnMgCiBQQVNTIHBpcGlu
ZyB3aXRoIHsgcHJldmVudENsb3NlOiBmYWxzZSB9IGFuZCBubyBkZXN0aW5hdGlvbiBlcnJvcnMg
CkBAIC0xMDgsMTEgKzM0LDQgQEAgUEFTUyBwaXBpbmcgd2l0aCB7IHByZXZlbnRDbG9zZTogdHJ1
ZSB9IGFuZCBubyBkZXN0aW5hdGlvbiBlcnJvcnMKIFBBU1MgcGlwaW5nIHdpdGggeyBwcmV2ZW50
Q2xvc2U6IGZhbHNlIH0gYW5kIGEgZGVzdGluYXRpb24gd2l0aCB0aGF0IGVycm9ycyBzeW5jaHJv
bm91c2x5IAogUEFTUyBwaXBpbmcgd2l0aCB7IHByZXZlbnRDbG9zZTogdHJ1ZSB9IGFuZCBhIGRl
c3RpbmF0aW9uIHdpdGggdGhhdCBlcnJvcnMgc3luY2hyb25vdXNseSAKIFBBU1MgcGlwaW5nIHdp
dGggeyBwcmV2ZW50Q2xvc2U6IHRydWUgfSBhbmQgYSBkZXN0aW5hdGlvbiB0aGF0IGVycm9ycyBv
biB0aGUgbGFzdCBjaHVuayAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU1R3b0NodW5rc0Nsb3Nl
ZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCB0aGVuIGNs
b3NlZCkgcmVhZGVyIAotUEFTUyB0aGlyZCByZWFkKCksIHdpdGhvdXQgd2FpdGluZywgc2hvdWxk
IGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCi1QQVNTIHRoaXJkIHJlYWQs
IHdpdGggd2FpdGluZywgc2hvdWxkIGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVl
IH0gCi1QQVNTIGRyYWluaW5nIHRoZSBzdHJlYW0gdmlhIHJlYWQoKSBzaG91bGQgY2F1c2UgdGhl
IHJlYWRlciBjbG9zZWQgcHJvbWlzZSB0byBmdWxmaWxsLCBidXQgbG9ja2VkIHN0YXlzIHRydWUg
Ci1QQVNTIHJlbGVhc2luZyB0aGUgbG9jayBhZnRlciB0aGUgc3RyZWFtIGlzIGNsb3NlZCBzaG91
bGQgY2F1c2UgbG9ja2VkIHRvIGJlY29tZSBmYWxzZSAKLVBBU1MgcmVsZWFzaW5nIHRoZSBsb2Nr
IHNob3VsZCBjYXVzZSBmdXJ0aGVyIHJlYWQoKSBjYWxscyB0byByZWplY3Qgd2l0aCBhIFR5cGVF
cnJvciAKLVBBU1MgcmVhZGVyJ3MgY2xvc2VkIHByb3BlcnR5IGFsd2F5cyByZXR1cm5zIHRoZSBz
YW1lIHByb21pc2UgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNl
LWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1w
bGF0ZWQuaHRtbAppbmRleCA3YzIwZDA5ZjMwOTc0YjBmMDBmZGEyZDUxNzRhNGMwNjhiMDlmYWI2
Li5iNWZhNTlkY2Q3YmQ0ZmRlNmRmMDkwNWJkMzQ3ODYyOTM4MDIyNDE5IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJl
YW0tdGVtcGxhdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1w
bGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC5odG1sCkBAIC01LDYxICs1LDEw
IEBACiA8c2NyaXB0PgogLy8gVGhpcyBpcyB1cGRhdGVkIHRpbGwgaHR0cHM6Ly9naXRodWIuY29t
L3doYXR3Zy9zdHJlYW1zL2NvbW1pdC9lYzVmZmEwMzYzMDhkOWY2MzUwZDI5NDY1NjBkNDhjZGJm
MDkwOTM5CiAKLWZ1bmN0aW9uIHRlbXBsYXRlZFJTRW1wdHkobGFiZWwsIGZhY3RvcnkpIHsKLSAg
ICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgIH0sICdSdW5uaW5nIHRlbXBsYXRlZFJTRW1wdHkgd2l0
aCAnICsgbGFiZWwpOwotCi0gICAgdGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHJzID0g
ZmFjdG9yeSgpOwotCi0gICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJzLmxvY2tlZCwgJ2Jv
b2xlYW4nLCAnaGFzIGEgYm9vbGVhbiBsb2NrZWQgZ2V0dGVyJyk7Ci0gICAgICAgIGFzc2VydF9l
cXVhbHModHlwZW9mIHJzLmNhbmNlbCwgJ2Z1bmN0aW9uJywgJ2hhcyBhIGNhbmNlbCBtZXRob2Qn
KTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnMuZ2V0UmVhZGVyLCAnZnVuY3Rpb24n
LCAnaGFzIGEgZ2V0UmVhZGVyIG1ldGhvZCcpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVv
ZiBycy5waXBlVGhyb3VnaCwgJ2Z1bmN0aW9uJywgJ2hhcyBhIHBpcGVUaHJvdWdoIG1ldGhvZCcp
OwotICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBycy5waXBlVG8sICdmdW5jdGlvbicsICdo
YXMgYSBwaXBlVG8gbWV0aG9kJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJzLnRl
ZSwgJ2Z1bmN0aW9uJywgJ2hhcyBhIHRlZSBtZXRob2QnKTsKLSAgICB9LCAnaW5zdGFuY2VzIGhh
dmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQgcHJvcGVydGllcycpOwotfQotCiBmdW5jdGlvbiB0
ZW1wbGF0ZWRSU0Nsb3NlZChsYWJlbCwgZmFjdG9yeSkgewogICAgIHRlc3QoZnVuY3Rpb24oKSB7
CiAgICAgfSwgJ1J1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWQgd2l0aCAnICsgbGFiZWwpOwogCi0g
ICAgdmFyIHRlc3QxID0gYXN5bmNfdGVzdCgnY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3Rp
bmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZScpOwotICAgIHRlc3QxLnN0ZXAoZnVuY3Rp
b24oKSB7Ci0gICAgICAgIHZhciBycyA9IGZhY3RvcnkoKTsKLSAgICAgICAgdmFyIHByb21pc2Vz
Q291bnQgPSAwOwotICAgICAgICB2YXIgYWxsQ2hlY2tlZCA9IGZhbHNlOwotCi0gICAgICAgIHZh
ciBjYW5jZWxQcm9taXNlMSA9IHJzLmNhbmNlbCgpOwotICAgICAgICB2YXIgY2FuY2VsUHJvbWlz
ZTIgPSBycy5jYW5jZWwoKTsKLQotICAgICAgICBjYW5jZWxQcm9taXNlMS50aGVuKHRlc3QxLnN0
ZXBfZnVuYyhmdW5jdGlvbih2KSB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHYsIHVuZGVm
aW5lZCwgJ2ZpcnN0IGNhbmNlbCgpIGNhbGwgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQn
KTsKLSAgICAgICAgICAgICsrcHJvbWlzZXNDb3VudDsKLSAgICAgICAgfSkpOwotICAgICAgICBj
YW5jZWxQcm9taXNlMi50aGVuKHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbih2KSB7Ci0gICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ3NlY29uZCBjYW5jZWwoKSBjYWxsIHNo
b3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KCsrcHJvbWlzZXNDb3VudCwgMik7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZShhbGxDaGVja2Vk
KTsKLSAgICAgICAgICAgIHRlc3QxLmRvbmUoKTsKLSAgICAgICAgfSkpOwotICAgICAgICBhc3Nl
cnRfbm90X2VxdWFscyhjYW5jZWxQcm9taXNlMSwgY2FuY2VsUHJvbWlzZTIsICdjYW5jZWwoKSBj
YWxscyBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzJyk7Ci0gICAgICAgIGFsbENoZWNr
ZWQgPSB0cnVlOwotICAgIH0pOwotCi0gICAgdGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgdmFy
IHJzID0gZmFjdG9yeSgpOwotCi0gICAgICAgIGFzc2VydF9mYWxzZShycy5sb2NrZWQsICdsb2Nr
ZWQgZ2V0dGVyIHNob3VsZCByZXR1cm4gZmFsc2UnKTsKLSAgICB9LCAnbG9ja2VkIHNob3VsZCBi
ZSBmYWxzZScpOwotCi0gICAgdGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHJzID0gZmFj
dG9yeSgpOwotCi0gICAgICAgIHJzLmdldFJlYWRlcigpOyAvLyBnZXRSZWFkZXIoKSBzaG91bGQg
bm90IHRocm93LgotICAgIH0sICdnZXRSZWFkZXIoKSBzaG91bGQgYmUgT0snKTsKLQogICAgIHZh
ciB0ZXN0MiA9IGFzeW5jX3Rlc3QoJ3BpcGluZyB0byBhIFdyaXRhYmxlU3RyZWFtIGluIHRoZSB3
cml0YWJsZSBzdGF0ZSBzaG91bGQgY2xvc2UgdGhlIHdyaXRhYmxlIHN0cmVhbScpOwogICAgIHRl
c3QyLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciBjbG9zZUNhbGxlZCA9IGZhbHNlOwpA
QCAtMTIyLDI3ICs3MSw2IEBAIGZ1bmN0aW9uIHRlbXBsYXRlZFJTQ2xvc2VkKGxhYmVsLCBmYWN0
b3J5KSB7CiAgICAgICAgICAgICB9KSk7CiAgICAgICAgIH0pKS5jYXRjaCh0ZXN0My5zdGVwX2Z1
bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9KSk7CiAgICAgfSk7Ci0KLSAg
ICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgcnMgPSBmYWN0b3J5KCk7Ci0KLSAgICAg
ICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotICAgICAgICByZWFkZXIucmVsZWFzZUxv
Y2soKTsKLQotICAgICAgICByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsgLy8gR2V0dGluZyBhIHNl
Y29uZCByZWFkZXIgc2hvdWxkIG5vdCB0aHJvdy4KLSAgICAgICAgcmVhZGVyLnJlbGVhc2VMb2Nr
KCk7Ci0KLSAgICAgICAgcnMuZ2V0UmVhZGVyKCk7IC8vIEdldHRpbmcgYSB0aGlyZCByZWFkZXIg
c2hvdWxkIG5vdCB0aHJvdy4KLSAgICB9LCAnc2hvdWxkIGJlIGFibGUgdG8gYWNxdWlyZSBtdWx0
aXBsZSByZWFkZXJzIGlmIHRoZXkgYXJlIHJlbGVhc2VkIGluIHN1Y2Nlc3Npb24nKTsKLQotICAg
IHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBycyA9IGZhY3RvcnkoKTsKLQotICAgICAg
ICBycy5nZXRSZWFkZXIoKTsKLQotICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3Io
KSwgZnVuY3Rpb24oKSB7IHJzLmdldFJlYWRlcigpOyB9LCAnZ2V0dGluZyBhIHNlY29uZCByZWFk
ZXIgc2hvdWxkIHRocm93Jyk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigp
LCBmdW5jdGlvbigpIHsgcnMuZ2V0UmVhZGVyKCk7IH0sICdnZXR0aW5nIGEgdGhpcmQgcmVhZGVy
IHNob3VsZCB0aHJvdycpOwotICAgIH0sICdzaG91bGQgbm90IGJlIGFibGUgdG8gYWNxdWlyZSBh
IHNlY29uZCByZWFkZXIgaWYgd2UgZG9uXCd0IHJlbGVhc2UgdGhlIGZpcnN0IG9uZScpOwogfTsK
IAogZnVuY3Rpb24gdGVtcGxhdGVkUlNFcnJvcmVkKGxhYmVsLCBmYWN0b3J5LCBlcnJvcikgewpA
QCAtMTgyLDUzICsxMTAsNiBAQCBmdW5jdGlvbiB0ZW1wbGF0ZWRSU0Vycm9yZWQobGFiZWwsIGZh
Y3RvcnksIGVycm9yKSB7CiAgICAgICAgICAgICApOwogICAgICAgICB9KSk7CiAgICAgfSk7Ci0K
LSAgICB2YXIgdGVzdDIgPSBhc3luY190ZXN0KCdnZXRSZWFkZXIoKSBzaG91bGQgcmV0dXJuIGEg
cmVhZGVyIHRoYXQgYWN0cyBlcnJvcmVkJyk7Ci0gICAgdGVzdDIuc3RlcChmdW5jdGlvbigpIHsK
LSAgICAgICAgdmFyIHJzID0gZmFjdG9yeSgpOwotICAgICAgICB2YXIgcHJvbWlzZXNDb3VudCA9
IDA7Ci0KLSAgICAgICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gICAgICAgIHJl
YWRlci5jbG9zZWQuY2F0Y2godGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMoZSwgZXJyb3IsICdyZWFkZXIuY2xvc2VkIHNob3VsZCByZWplY3Qg
d2l0aCB0aGUgZXJyb3InKTsKLSAgICAgICAgICAgIGlmICgrK3Byb21pc2VzQ291bnQgPT09IDIp
Ci0gICAgICAgICAgICAgICAgdGVzdDIuZG9uZSgpOwotICAgICAgICB9KSk7Ci0gICAgICAgIHJl
YWRlci5yZWFkKCkuY2F0Y2godGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMoZSwgZXJyb3IsICdyZWFkZXIucmVhZCgpIHNob3VsZCByZWplY3Qg
d2l0aCB0aGUgZXJyb3InKTsKLSAgICAgICAgICAgIGlmICgrK3Byb21pc2VzQ291bnQgPT09IDIp
Ci0gICAgICAgICAgICAgICAgdGVzdDIuZG9uZSgpOwotICAgICAgICB9KSk7Ci0gICAgfSk7Ci0K
LSAgICB2YXIgdGVzdDMgPSBhc3luY190ZXN0KCdyZWFkKCkgdHdpY2Ugc2hvdWxkIGdpdmUgdGhl
IGVycm9yIGVhY2ggdGltZScpOwotICAgIHRlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgICAg
IHZhciBycyA9IGZhY3RvcnkoKTsKLSAgICAgICAgdmFyIHByb21pc2VDb3VudCA9IDA7Ci0KLSAg
ICAgICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gICAgICAgIHJlYWRlci5yZWFk
KCkuY2F0Y2godGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMoZSwgZXJyb3IsICdyZWFkZXIucmVhZCgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUg
ZXJyb3InKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoKytwcm9taXNlQ291bnQsIDEpOwot
ICAgICAgICB9KSk7Ci0gICAgICAgIHJlYWRlci5yZWFkKCkuY2F0Y2godGVzdDMuc3RlcF9mdW5j
KGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZSwgZXJyb3IsICdyZWFk
ZXIucmVhZCgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKLSAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMoKytwcm9taXNlQ291bnQsIDIpOwotICAgICAgICB9KSk7Ci0gICAgICAgIHJl
YWRlci5jbG9zZWQuY2F0Y2godGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMoZSwgZXJyb3IsICdyZWFkZXIuY2xvc2VkIHNob3VsZCByZWplY3Qg
d2l0aCB0aGUgZXJyb3InKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoKytwcm9taXNlQ291
bnQsIDMpOwotICAgICAgICAgICAgdGVzdDMuZG9uZSgpOwotICAgICAgICB9KSk7Ci0gICB9KTsK
LQotICAgIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBycyA9IGZhY3RvcnkoKTsKLQot
ICAgICAgICBhc3NlcnRfZmFsc2UocnMubG9ja2VkLCAnbG9ja2VkIGdldHRlciBzaG91bGQgcmV0
dXJuIGZhbHNlJyk7Ci0gICAgfSwgJ2xvY2tlZCBzaG91bGQgYmUgZmFsc2UnKTsKIH07CiAKIGZ1
bmN0aW9uIHRlbXBsYXRlZFJTRXJyb3JlZEFzeW5jT25seShsYWJlbCwgZmFjdG9yeSwgZXJyb3Ip
IHsKQEAgLTMwNiw4NCArMTg3LDYgQEAgZnVuY3Rpb24gdGVtcGxhdGVkUlNFcnJvcmVkQXN5bmNP
bmx5KGxhYmVsLCBmYWN0b3J5LCBlcnJvcikgewogICAgfSk7CiB9OwogCi1mdW5jdGlvbiB0ZW1w
bGF0ZWRSU0Vycm9yZWRTeW5jT25seShsYWJlbCwgZmFjdG9yeSwgZXJyb3IpIHsKLSAgICB0ZXN0
KGZ1bmN0aW9uKCkgewotICAgIH0sICdSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFN5bmNPbmx5
IHdpdGggJyArIGxhYmVsKTsKLQotICAgIHZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ3Nob3VsZCBi
ZSBhYmxlIHRvIG9idGFpbiBhIHNlY29uZCByZWFkZXIsIHdpdGggdGhlIGNvcnJlY3QgY2xvc2Vk
IHByb21pc2UnKTsKLSAgICB0ZXN0MS5zdGVwKGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgcnMg
PSBmYWN0b3J5KCk7Ci0KLSAgICAgICAgcnMuZ2V0UmVhZGVyKCkucmVsZWFzZUxvY2soKTsKLQot
ICAgICAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7IC8vIENhbGxpbmcgZ2V0UmVhZGVy
KCkgdHdpY2UgZG9lcyBub3QgdGhyb3cgKHRoZSBzdHJlYW0gaXMgbm90IGxvY2tlZCkuCi0KLSAg
ICAgICAgcmVhZGVyLmNsb3NlZC50aGVuKAotICAgICAgICAgICAgdGVzdDEuc3RlcF9mdW5jKGZ1
bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdjbG9zZWQgcHJvbWlzZSBzaG91bGQgbm90IGJl
IGZ1bGZpbGxlZCB3aGVuIHN0cmVhbSBpcyBlcnJvcmVkJyk7IH0pLAotICAgICAgICAgICAgdGVz
dDEuc3RlcF9mdW5jKGZ1bmN0aW9uKGVycikgewotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMoZXJyLCBlcnJvcik7Ci0gICAgICAgICAgICAgICAgdGVzdDEuZG9uZSgpOwotICAgICAgICAg
ICAgfSkKLSAgICAgICAgKTsKLSAgICB9KTsKLQotICAgIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIHZhciBycyA9IGZhY3RvcnkoKTsKLQotICAgICAgICBycy5nZXRSZWFkZXIoKTsKLQotICAg
ICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IHJzLmdldFJl
YWRlcigpOyB9LCAnZ2V0dGluZyBhIHNlY29uZCByZWFkZXIgc2hvdWxkIHRocm93IGEgVHlwZUVy
cm9yJyk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigp
IHsgcnMuZ2V0UmVhZGVyKCk7IH0sICdnZXR0aW5nIGEgdGhpcmQgcmVhZGVyIHNob3VsZCB0aHJv
dyBhIFR5cGVFcnJvcicpOwotICAgIH0sICdzaG91bGQgbm90IGJlIGFibGUgdG8gb2J0YWluIGFk
ZGl0aW9uYWwgcmVhZGVycyBpZiB3ZSBkb25cJ3QgcmVsZWFzZSB0aGUgZmlyc3QgbG9jaycpOwot
Ci0gICAgdmFyIHRlc3QyID0gYXN5bmNfdGVzdCgnY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRp
c3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFjaCB0aW1lJyk7Ci0gICAgdGVzdDIuc3RlcChmdW5j
dGlvbigpIHsKLSAgICAgICAgdmFyIHJzID0gZmFjdG9yeSgpOwotICAgICAgICB2YXIgcHJvbWlz
ZXNDb3VudCA9IDA7Ci0gICAgICAgIHZhciBhbGxDaGVja2VkID0gZmFsc2U7Ci0KLSAgICAgICAg
dmFyIGNhbmNlbFByb21pc2UxID0gcnMuY2FuY2VsKCk7Ci0gICAgICAgIHZhciBjYW5jZWxQcm9t
aXNlMiA9IHJzLmNhbmNlbCgpOwotCi0gICAgICAgIGNhbmNlbFByb21pc2UxLmNhdGNoKHRlc3Qy
LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIGVy
cm9yLCAnZmlyc3QgY2FuY2VsKCkgY2FsbCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7
Ci0gICAgICAgICAgICArK3Byb21pc2VzQ291bnQ7Ci0gICAgICAgIH0pKTsKLSAgICAgICAgY2Fu
Y2VsUHJvbWlzZTIuY2F0Y2godGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMoZSwgZXJyb3IsICdzZWNvbmQgY2FuY2VsKCkgY2FsbCBzaG91bGQg
cmVqZWN0IHdpdGggdGhlIGVycm9yJyk7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKCsrcHJv
bWlzZXNDb3VudCwgMik7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZShhbGxDaGVja2VkKTsKLSAg
ICAgICAgICAgIHRlc3QyLmRvbmUoKTsKLSAgICAgICAgfSkpOwotICAgICAgICBhc3NlcnRfbm90
X2VxdWFscyhjYW5jZWxQcm9taXNlMSwgY2FuY2VsUHJvbWlzZTIsICdjYW5jZWwoKSBjYWxscyBz
aG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzJyk7Ci0gICAgICAgIGFsbENoZWNrZWQgPSB0
cnVlOwotICAgIH0pOwotCi0gICAgdmFyIHRlc3QzID0gYXN5bmNfdGVzdCgncmVhZGVyIGNhbmNl
bCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZScp
OwotICAgIHRlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBycyA9IGZhY3Rvcnko
KTsKLSAgICAgICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotICAgICAgICB2YXIgcHJv
bWlzZXNDb3VudCA9IDA7Ci0gICAgICAgIHZhciBhbGxDaGVja2VkID0gZmFsc2U7Ci0KLSAgICAg
ICAgdmFyIGNhbmNlbFByb21pc2UxID0gcmVhZGVyLmNhbmNlbCgpOwotICAgICAgICB2YXIgY2Fu
Y2VsUHJvbWlzZTIgPSByZWFkZXIuY2FuY2VsKCk7Ci0KLSAgICAgICAgY2FuY2VsUHJvbWlzZTEu
Y2F0Y2godGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoZSwgZXJyb3IsICdmaXJzdCBjYW5jZWwoKSBjYWxsIHNob3VsZCByZWplY3Qgd2l0aCB0
aGUgZXJyb3InKTsKLSAgICAgICAgICAgICsrcHJvbWlzZXNDb3VudDsKLSAgICAgICAgfSkpOwot
ICAgICAgICBjYW5jZWxQcm9taXNlMi5jYXRjaCh0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkg
ewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCBlcnJvciwgJ3NlY29uZCBjYW5jZWwoKSBj
YWxsIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKLSAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoKytwcm9taXNlc0NvdW50LCAyKTsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKGFsbENo
ZWNrZWQpOwotICAgICAgICAgICAgdGVzdDMuZG9uZSgpOwotICAgICAgICB9KSk7Ci0gICAgICAg
IGFzc2VydF9ub3RfZXF1YWxzKGNhbmNlbFByb21pc2UxLCBjYW5jZWxQcm9taXNlMiwgJ2NhbmNl
bCgpIGNhbGxzIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMnKTsKLSAgICAgICAgYWxs
Q2hlY2tlZCA9IHRydWU7Ci0gICAgfSk7Ci19OwotCiBmdW5jdGlvbiB0ZW1wbGF0ZWRSU1R3b0No
dW5rc0Nsb3NlZChsYWJlbCwgZmFjdG9yeSwgZXJyb3IpIHsKICAgICB0ZXN0KGZ1bmN0aW9uKCkg
ewogICAgIH0sICdSdW5uaW5nIHRlbXBsYXRlZFJTVHdvQ2h1bmtzQ2xvc2VkIHdpdGggJyArIGxh
YmVsKTsKQEAgLTU0Miw1MTMgKzM0NSw2IEBAIGZ1bmN0aW9uIHRlbXBsYXRlZFJTVHdvQ2h1bmtz
Q2xvc2VkKGxhYmVsLCBmYWN0b3J5LCBlcnJvcikgewogICAgIH0pOwogfTsKIAotZnVuY3Rpb24g
dGVtcGxhdGVkUlNFbXB0eVJlYWRlcihsYWJlbCwgZmFjdG9yeSkgewotICAgIHRlc3QoZnVuY3Rp
b24oKSB7Ci0gICAgfSwgJ1J1bm5pbmcgdGVtcGxhdGVkUlNFbXB0eVJlYWRlciB3aXRoICcgKyBs
YWJlbCk7Ci0KLSAgICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgeyByZWFkZXIgfSA9
IGZhY3RvcnkoKTsKLQotICAgICAgICBhc3NlcnRfdHJ1ZSgnY2xvc2VkJyBpbiByZWFkZXIsICdo
YXMgYSBjbG9zZWQgcHJvcGVydHknKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcmVh
ZGVyLmNsb3NlZC50aGVuLCAnZnVuY3Rpb24nLCAnY2xvc2VkIHByb3BlcnR5IGlzIHRoZW5hYmxl
Jyk7Ci0KLSAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcmVhZGVyLmNhbmNlbCwgJ2Z1bmN0
aW9uJywgJ2hhcyBhIGNhbmNlbCBtZXRob2QnKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBl
b2YgcmVhZGVyLnJlYWQsICdmdW5jdGlvbicsICdoYXMgYSByZWFkIG1ldGhvZCcpOwotICAgICAg
ICBhc3NlcnRfZXF1YWxzKHR5cGVvZiByZWFkZXIucmVsZWFzZUxvY2ssICdmdW5jdGlvbicsICdo
YXMgYSByZWxlYXNlTG9jayBtZXRob2QnKTsKLSAgICB9LCAnaW5zdGFuY2VzIGhhdmUgdGhlIGNv
cnJlY3QgbWV0aG9kcyBhbmQgcHJvcGVydGllcycpOwotCi0gICAgdGVzdChmdW5jdGlvbigpIHsK
LSAgICAgICAgdmFyIHsgc3RyZWFtIH0gPSBmYWN0b3J5KCk7Ci0KLSAgICAgICAgYXNzZXJ0X3Ry
dWUoc3RyZWFtLmxvY2tlZCwgJ2xvY2tlZCBnZXR0ZXIgc2hvdWxkIHJldHVybiB0cnVlJyk7Ci0g
ICAgfSwgJ2xvY2tlZCBzaG91bGQgYmUgdHJ1ZScpOwotCi0gICAgdmFyIHRlc3QxID0gYXN5bmNf
dGVzdCgncmVhZCgpIHNob3VsZCBuZXZlciBzZXR0bGUnKTsKLSAgICB0ZXN0MS5zdGVwKGZ1bmN0
aW9uKCkgewotICAgICAgICB2YXIgeyByZWFkZXIgfSA9IGZhY3RvcnkoKTsKLQotICAgICAgICBy
ZWFkZXIucmVhZCgpLnRoZW4oCi0gICAgICAgICAgICB0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24o
KSB7IGFzc2VydF91bnJlYWNoZWQoJ3JlYWQoKSBzaG91bGQgbm90IGZ1bGZpbGwnKTsgfSksCi0g
ICAgICAgICAgICB0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQo
J3JlYWQoKSBzaG91bGQgbm90IHJlamVjdCcpOyB9KQotICAgICAgICApOwotCi0gICAgICAgIHNl
dFRpbWVvdXQodGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyB0ZXN0MS5kb25lKCk7IH0pLCAx
MDAwKTsKLSAgICB9KTsKLQotICAgIHZhciB0ZXN0MiA9IGFzeW5jX3Rlc3QoJ3R3byByZWFkKClz
IHNob3VsZCBib3RoIG5ldmVyIHNldHRsZScpOwotICAgIHRlc3QyLnN0ZXAoZnVuY3Rpb24oKSB7
Ci0gICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwotCi0gICAgICAgIHJlYWRlci5y
ZWFkKCkudGhlbigKLSAgICAgICAgICAgIHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNz
ZXJ0X3VucmVhY2hlZCgnZmlyc3QgcmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpOyB9KSwKLSAg
ICAgICAgICAgIHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgn
Zmlyc3QgcmVhZCgpIHNob3VsZCBub3QgcmVqZWN0Jyk7IH0pCi0gICAgICAgICk7Ci0KLSAgICAg
ICAgcmVhZGVyLnJlYWQoKS50aGVuKAotICAgICAgICAgICAgdGVzdDIuc3RlcF9mdW5jKGZ1bmN0
aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdzZWNvbmQgcmVhZCgpIHNob3VsZCBub3QgZnVsZmls
bCcpOyB9KSwKLSAgICAgICAgICAgIHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0
X3VucmVhY2hlZCgnc2Vjb25kIHJlYWQoKSBzaG91bGQgbm90IHJlamVjdCcpOyB9KQotICAgICAg
ICApOwotCi0gICAgICAgIHNldFRpbWVvdXQodGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyB0
ZXN0Mi5kb25lKCk7IH0pLCAxMDAwKTsKLSAgICB9KTsKLQotICAgIHRlc3QoZnVuY3Rpb24oKSB7
Ci0gICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwotCi0gICAgICAgIGFzc2VydF9u
b3RfZXF1YWxzKHJlYWRlci5yZWFkKCksIHJlYWRlci5yZWFkKCksICd0aGUgcHJvbWlzZXMgcmV0
dXJuZWQgc2hvdWxkIGJlIGRpc3RpbmN0Jyk7Ci0gICAgfSwgJ3JlYWQoKSBzaG91bGQgcmV0dXJu
IGRpc3RpbmN0IHByb21pc2VzIGVhY2ggdGltZScpOwotCi0gICAgdGVzdChmdW5jdGlvbigpIHsK
LSAgICAgICAgdmFyIHsgc3RyZWFtIH0gPSBmYWN0b3J5KCk7Ci0KLSAgICAgICAgYXNzZXJ0X3Ro
cm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBzdHJlYW0uZ2V0UmVhZGVyKCk7IH0s
ICdzdHJlYW0uZ2V0UmVhZGVyKCkgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7Ci0gICAgfSwg
J2dldFJlYWRlcigpIGFnYWluIG9uIHRoZSBzdHJlYW0gc2hvdWxkIGZhaWwnKTsKLQotICAgIHZh
ciB0ZXN0MyA9IGFzeW5jX3Rlc3QoJ3JlbGVhc2luZyB0aGUgbG9jayB3aXRoIHBlbmRpbmcgcmVh
ZCByZXF1ZXN0cyBzaG91bGQgdGhyb3cgYnV0IHRoZSByZWFkIHJlcXVlc3RzIHNob3VsZCBzdGF5
IHBlbmRpbmcnKTsKLSAgICB0ZXN0My5zdGVwKGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgeyBz
dHJlYW0sIHJlYWRlciB9ID0gZmFjdG9yeSgpOwotCi0gICAgICAgIHJlYWRlci5yZWFkKCkudGhl
bigKLSAgICAgICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVh
Y2hlZCgnZmlyc3QgcmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpOyB9KSwKLSAgICAgICAgICAg
IHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnZmlyc3QgcmVh
ZCgpIHNob3VsZCBub3QgcmVqZWN0Jyk7IH0pCi0gICAgICAgICk7Ci0KLSAgICAgICAgcmVhZGVy
LnJlYWQoKS50aGVuKAotICAgICAgICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBh
c3NlcnRfdW5yZWFjaGVkKCdzZWNvbmQgcmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpOyB9KSwK
LSAgICAgICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hl
ZCgnc2Vjb25kIHJlYWQoKSBzaG91bGQgbm90IHJlamVjdCcpOyB9KQotICAgICAgICApOwotCi0g
ICAgICAgIHJlYWRlci5jbG9zZWQudGhlbigKLSAgICAgICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhm
dW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnY2xvc2VkIHNob3VsZCBub3QgZnVsZmlsbCcp
OyB9KSwKLSAgICAgICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3Vu
cmVhY2hlZCgnY2xvc2VkIHNob3VsZCBub3QgcmVqZWN0Jyk7IH0pCi0gICAgICAgICk7Ci0KLSAg
ICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyByZWFkZXIu
cmVsZWFzZUxvY2soKTsgfSwgJ3JlbGVhc2VMb2NrIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicp
OwotCi0gICAgICAgIGFzc2VydF90cnVlKHN0cmVhbS5sb2NrZWQsICd0aGUgc3RyZWFtIHNob3Vs
ZCBzdGlsbCBiZSBsb2NrZWQnKTsKLQotICAgICAgICBzZXRUaW1lb3V0KHRlc3QzLnN0ZXBfZnVu
YyhmdW5jdGlvbigpIHsgdGVzdDMuZG9uZSgpOyB9KSwgMTAwMCk7Ci0gICAgfSk7Ci0KLSAgICB2
YXIgdGVzdDQgPSBhc3luY190ZXN0KCdyZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGZ1
cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yJyk7Ci0gICAgdGVz
dDQuc3RlcChmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHByb21pc2VDYWxscyA9IDA7Ci0gICAg
ICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwotCi0gICAgICAgIHJlYWRlci5yZWxlYXNl
TG9jaygpOwotCi0gICAgICAgIHJlYWRlci5yZWFkKCkuY2F0Y2godGVzdDQuc3RlcF9mdW5jKGZ1
bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBm
dW5jdGlvbigpIHsgdGhyb3cgZTsgfSwgJ2ZpcnN0IHJlYWQoKSBzaG91bGQgcmVqZWN0IHdpdGgg
YSBUeXBlRXJyb3InKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoKytwcm9taXNlQ2FsbHMs
IDEpOwotICAgICAgICB9KSk7Ci0gICAgICAgIHJlYWRlci5yZWFkKCkuY2F0Y2godGVzdDQuc3Rl
cF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVF
cnJvcigpLCBmdW5jdGlvbigpIHsgdGhyb3cgZTsgfSwgJ3NlY29uZCByZWFkKCkgc2hvdWxkIHJl
amVjdCB3aXRoIGEgVHlwZUVycm9yJyk7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKCsrcHJv
bWlzZUNhbGxzLCAyKTsKLSAgICAgICAgICAgIHRlc3Q0LmRvbmUoKTsKLSAgICAgICAgfSkpOwot
ICAgIH0pOwotCi0gICAgdmFyIHRlc3Q1ID0gYXN5bmNfdGVzdCgncmVsZWFzaW5nIHRoZSBsb2Nr
IHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0Jyk7Ci0gICAgdGVzdDUuc3RlcChmdW5jdGlv
bigpIHsKLSAgICAgICAgdmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7Ci0KLSAgICAgICAgdmFy
IGNsb3NlZEJlZm9yZSA9IHJlYWRlci5jbG9zZWQ7Ci0gICAgICAgIHJlYWRlci5yZWxlYXNlTG9j
aygpOwotICAgICAgICB2YXIgY2xvc2VkQWZ0ZXIgPSByZWFkZXIuY2xvc2VkOwotCi0gICAgICAg
IGFzc2VydF9lcXVhbHMoY2xvc2VkQmVmb3JlLCBjbG9zZWRBZnRlciwgJ3RoZSBjbG9zZWQgcHJv
bWlzZSBzaG91bGQgbm90IGNoYW5nZSBpZGVudGl0eScpCi0gICAgICAgIGNsb3NlZEJlZm9yZS5j
YXRjaCh0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgYXNzZXJ0X3Ro
cm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyB0aHJvdyBlOyB9LCAncmVhZGVyLmNs
b3NlZCBzaG91bGQgcmVqZWN0IHdpdGggYSBUeXBlRXJyb3InKTsKLSAgICAgICAgICAgIHRlc3Q1
LmRvbmUoKTsKLSAgICAgICAgfSkpOwotICAgIH0pOwotCi0gICAgdGVzdChmdW5jdGlvbigpIHsK
LSAgICAgICAgdmFyIHsgc3RyZWFtLCByZWFkZXIgfSA9IGZhY3RvcnkoKTsKLQotICAgICAgICBy
ZWFkZXIucmVsZWFzZUxvY2soKTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKHN0cmVhbS5sb2NrZWQs
ICdsb2NrZWQgZ2V0dGVyIHNob3VsZCByZXR1cm4gZmFsc2UnKTsKLSAgICB9LCAncmVsZWFzaW5n
IHRoZSBsb2NrIHNob3VsZCBjYXVzZSBsb2NrZWQgdG8gYmVjb21lIGZhbHNlJyk7Ci0KLSAgICB2
YXIgdGVzdDYgPSBhc3luY190ZXN0KCdjYW5jZWxpbmcgdmlhIHRoZSByZWFkZXIgc2hvdWxkIGNh
dXNlIHRoZSByZWFkZXIgdG8gYWN0IGNsb3NlZCcpOwotICAgIHRlc3Q2LnN0ZXAoZnVuY3Rpb24o
KSB7Ci0gICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwotCi0gICAgICAgIHJlYWRl
ci5jYW5jZWwoKTsKLSAgICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKHRlc3Q2LnN0ZXBfZnVuYyhm
dW5jdGlvbihyKSB7Ci0gICAgICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVl
OiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQoKWluZyBmcm9tIHRoZSByZWFkZXIgc2hv
dWxkIGdpdmUgYSBkb25lIHJlc3VsdCcpOwotICAgICAgICAgICAgdGVzdDYuZG9uZSgpOwotICAg
ICAgICB9KSk7Ci0gICAgfSk7Ci0KLSAgICB2YXIgdGVzdDcgPSBhc3luY190ZXN0KCdjYW5jZWxp
bmcgdmlhIHRoZSBzdHJlYW0gc2hvdWxkIGZhaWwnKTsKLSAgICB0ZXN0Ny5zdGVwKGZ1bmN0aW9u
KCkgewotICAgICAgICB2YXIgeyBzdHJlYW0gfSA9IGZhY3RvcnkoKTsKLQotICAgICAgICBzdHJl
YW0uY2FuY2VsKCkuY2F0Y2godGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAg
ICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgdGhyb3cgZTsg
fSwgJ2NhbmNlbCgpIHNob3VsZCByZWplY3Qgd2l0aCBhIFR5cGVFcnJvcicpOwotICAgICAgICAg
ICAgdGVzdDcuZG9uZSgpOwotICAgICAgICB9KSk7Ci0gICAgfSk7Ci19OwotCi1mdW5jdGlvbiB0
ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlcihsYWJlbCwgZmFjdG9yeSkgewotICAgIHRlc3QoZnVuY3Rp
b24oKSB7Ci0gICAgfSwgJ1J1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIgd2l0aCAnICsg
bGFiZWwpOwotCi0gICAgdmFyICB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ3JlYWQoKSBzaG91bGQgZnVs
ZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9Jyk7Ci0gICAgdGVzdDEu
c3RlcChmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7Ci0K
LSAgICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKAotICAgICAgICAgICAgdGVzdDEuc3RlcF9mdW5j
KGZ1bmN0aW9uKHYpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyh2LCB7
IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCBj
b3JyZWN0bHknKTsKLSAgICAgICAgICAgICAgICB0ZXN0MS5kb25lKCk7Ci0gICAgICAgICAgICB9
KSwKLSAgICAgICAgICAgIHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVh
Y2hlZCgncmVhZCgpIHNob3VsZCBub3QgcmV0dXJuIGEgcmVqZWN0ZWQgcHJvbWlzZScpOyB9KQot
ICAgICAgICApOwotICAgIH0pOwotCi0gICAgdmFyIHRlc3QyID0gYXN5bmNfdGVzdCgncmVhZCgp
IG11bHRpcGxlIHRpbWVzIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBk
b25lOiB0cnVlIH0nKTsKLSAgICB0ZXN0Mi5zdGVwKGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIg
eyByZWFkZXIgfSA9IGZhY3RvcnkoKTsKLSAgICAgICAgdmFyIHJlYWRDb3VudCA9IDA7Ci0KLSAg
ICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKAotICAgICAgICAgICAgdGVzdDIuc3RlcF9mdW5jKGZ1
bmN0aW9uKHYpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyh2LCB7IHZh
bHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCBjb3Jy
ZWN0bHknKTsKLSAgICAgICAgICAgICAgICArK3JlYWRDb3VudDsKLSAgICAgICAgICAgIH0pLAot
ICAgICAgICAgICAgdGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVk
KCdyZWFkKCkgc2hvdWxkIG5vdCByZXR1cm4gYSByZWplY3RlZCBwcm9taXNlJyk7IH0pCi0gICAg
ICAgICk7Ci0gICAgICAgIHJlYWRlci5yZWFkKCkudGhlbigKLSAgICAgICAgICAgIHRlc3QyLnN0
ZXBfZnVuYyhmdW5jdGlvbih2KSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVh
bHModiwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1
bGZpbGwgY29ycmVjdGx5Jyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscygrK3JlYWRD
b3VudCwgMik7Ci0gICAgICAgICAgICAgICAgdGVzdDIuZG9uZSgpOwotICAgICAgICAgICAgfSks
Ci0gICAgICAgICAgICB0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNo
ZWQoJ3JlYWQoKSBzaG91bGQgbm90IHJldHVybiBhIHJlamVjdGVkIHByb21pc2UnKTsgfSkKLSAg
ICAgICAgKTsKLSAgICB9KTsKLQotICAgIHZhciB0ZXN0MyA9IGFzeW5jX3Rlc3QoJ3JlYWQoKSBz
aG91bGQgd29yayB3aGVuIHVzZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2FsbGJh
Y2snKTsKLSAgICB0ZXN0My5zdGVwKGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgeyByZWFkZXIg
fSA9IGZhY3RvcnkoKTsKLQotICAgICAgICByZWFkZXIucmVhZCgpLnRoZW4odGVzdDMuc3RlcF9m
dW5jKGZ1bmN0aW9uKCkgeyByZWFkZXIucmVhZCgpLnRoZW4odGVzdDMuc3RlcF9mdW5jKGZ1bmN0
aW9uKCkgeyB0ZXN0My5kb25lKCdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwnKTsgfSkpOyB9KSk7Ci0g
ICAgfSk7Ci0KLSAgICB2YXIgdGVzdDQgPSBhc3luY190ZXN0KCdjbG9zZWQgc2hvdWxkIGZ1bGZp
bGwgd2l0aCB1bmRlZmluZWQnKTsKLSAgICB0ZXN0NC5zdGVwKGZ1bmN0aW9uKCkgewotICAgICAg
ICB2YXIgeyByZWFkZXIgfSA9IGZhY3RvcnkoKTsKLQotICAgICAgICByZWFkZXIuY2xvc2VkLnRo
ZW4oCi0gICAgICAgICAgICB0ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rpb24odikgewotICAgICAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAncmVhZGVyIGNsb3NlZCBzaG91bGQg
ZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpOwotICAgICAgICAgICAgICAgIHRlc3Q0LmRvbmUoKTsK
LSAgICAgICAgICAgIH0pLAotICAgICAgICAgICAgdGVzdDQuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
eyBhc3NlcnRfdW5yZWFjaGVkKCdyZWFkZXIgY2xvc2VkIHNob3VsZCBub3QgcmVqZWN0Jyk7IH0p
Ci0gICAgICAgICk7Ci0gICAgfSk7Ci0KLSAgICB2YXIgdGVzdDUgPSBhc3luY190ZXN0KCdyZWxl
YXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBp
ZGVudGl0eScpOwotICAgIHRlc3Q1LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBwcm9t
aXNlQ2FsbHMgPSAwOwotICAgICAgICB2YXIgeyByZWFkZXIgfSA9IGZhY3RvcnkoKTsKLQotICAg
ICAgICB2YXIgY2xvc2VkQmVmb3JlID0gcmVhZGVyLmNsb3NlZDsKLSAgICAgICAgcmVhZGVyLnJl
bGVhc2VMb2NrKCk7Ci0gICAgICAgIHZhciBjbG9zZWRBZnRlciA9IHJlYWRlci5jbG9zZWQ7Ci0K
LSAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY2xvc2VkQmVmb3JlLCBjbG9zZWRBZnRlciwgJ3Ro
ZSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgY2hhbmdlIGlkZW50aXR5JykKLSAgICAgICAgY2xvc2Vk
QmVmb3JlLnRoZW4odGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKHYpIHsKLSAgICAgICAgICAgIGFz
c2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAncmVhZGVyLmNsb3NlZCBhY3F1aXJlZCBiZWZvcmUg
cmVsZWFzZSBzaG91bGQgZnVsZmlsbCcpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscygrK3By
b21pc2VDYWxscywgMSk7Ci0gICAgICAgIH0pKTsKLSAgICAgICAgY2xvc2VkQWZ0ZXIuY2F0Y2go
dGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3Mo
bmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgdGhyb3cgZTsgfSwgJ3JlYWRlci5jbG9zZWQg
YWNxdWlyZWQgYWZ0ZXIgcmVsZWFzZSBzaG91bGQgcmVqZWN0IHdpdGggYSBUeXBlRXJyb3InKTsK
LSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoKytwcm9taXNlQ2FsbHMsIDIpOwotICAgICAgICAg
ICAgdGVzdDUuZG9uZSgpOwotICAgICAgICB9KSk7Ci0gICAgfSk7Ci0KLSAgICB2YXIgdGVzdDYg
PSBhc3luY190ZXN0KCdjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVk
IHByb21pc2UgZWFjaCB0aW1lJyk7Ci0gICAgdGVzdDYuc3RlcChmdW5jdGlvbigpIHsKLSAgICAg
ICAgdmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7Ci0gICAgICAgIHZhciBwcm9taXNlQ291bnQg
PSAwOwotICAgICAgICB2YXIgYWxsQ2hlY2tlZCA9IGZhbHNlOwotCi0gICAgICAgIHZhciBjYW5j
ZWxQcm9taXNlMSA9IHJlYWRlci5jYW5jZWwoKTsKLSAgICAgICAgdmFyIGNhbmNlbFByb21pc2Uy
ID0gcmVhZGVyLmNhbmNlbCgpOwotICAgICAgICB2YXIgY2xvc2VkUmVhZGVyUHJvbWlzZSA9IHJl
YWRlci5jbG9zZWQ7Ci0KLSAgICAgICAgY2FuY2VsUHJvbWlzZTEudGhlbih0ZXN0Ni5zdGVwX2Z1
bmMoZnVuY3Rpb24odikgewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQs
ICdmaXJzdCBjYW5jZWwoKSBjYWxsIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7Ci0g
ICAgICAgICAgICArK3Byb21pc2VDb3VudDsKLSAgICAgICAgfSkpOwotICAgICAgICBjYW5jZWxQ
cm9taXNlMi50aGVuKHRlc3Q2LnN0ZXBfZnVuYyhmdW5jdGlvbih2KSB7Ci0gICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ3NlY29uZCBjYW5jZWwoKSBjYWxsIHNob3VsZCBm
dWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKCsrcHJv
bWlzZUNvdW50LCAyKTsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKGFsbENoZWNrZWQpOwotICAg
ICAgICAgICAgdGVzdDYuZG9uZSgpOwotICAgICAgICB9KSk7Ci0gICAgICAgIGFzc2VydF9ub3Rf
ZXF1YWxzKGNhbmNlbFByb21pc2UxLCBjYW5jZWxQcm9taXNlMiwgJ2NhbmNlbCgpIGNhbGxzIHNo
b3VsZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMnKTsKLSAgICAgICAgYXNzZXJ0X25vdF9lcXVh
bHMoY2FuY2VsUHJvbWlzZTEsIGNsb3NlZFJlYWRlclByb21pc2UsICdjYW5jZWwoKSBwcm9taXNl
IDEgc2hvdWxkIGJlIGRpc3RpbmN0IGZyb20gcmVhZGVyLmNsb3NlZCcpOwotICAgICAgICBhc3Nl
cnRfbm90X2VxdWFscyhjYW5jZWxQcm9taXNlMiwgY2xvc2VkUmVhZGVyUHJvbWlzZSwgJ2NhbmNl
bCgpIHByb21pc2UgMiBzaG91bGQgYmUgZGlzdGluY3QgZnJvbSByZWFkZXIuY2xvc2VkJyk7Ci0g
ICAgICAgIGFsbENoZWNrZWQgPSB0cnVlOwotICAgIH0pOwotfTsKLQotZnVuY3Rpb24gdGVtcGxh
dGVkUlNFcnJvcmVkUmVhZGVyKGxhYmVsLCBmYWN0b3J5LCBlcnJvcikgewotICAgIHRlc3QoZnVu
Y3Rpb24oKSB7Ci0gICAgfSwgJ1J1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyIHdpdGgg
JyArIGxhYmVsKTsKLQotICAgIHZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ2Nsb3NlZCBzaG91bGQg
cmVqZWN0IHdpdGggdGhlIGVycm9yJyk7Ci0gICAgdGVzdDEuc3RlcChmdW5jdGlvbigpIHsKLSAg
ICAgICAgdmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7Ci0KLSAgICAgICAgcmVhZGVyLmNsb3Nl
ZC50aGVuKAotICAgICAgICAgICAgdGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRf
dW5yZWFjaGVkKCdzdHJlYW0gY2xvc2VkIHNob3VsZCBub3QgZnVsZmlsbCcpOyB9KSwKLSAgICAg
ICAgICAgIHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhyLCBlcnJvciwgJ3N0cmVhbSBjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRo
ZSBlcnJvcicpOwotICAgICAgICAgICAgICAgIHRlc3QxLmRvbmUoKTsKLSAgICAgICAgICAgIH0p
Ci0gICAgICAgICk7Ci0gICAgfSk7Ci0KLSAgICB2YXIgdGVzdDIgPSBhc3luY190ZXN0KCdyZWxl
YXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBp
ZGVudGl0eScpOwotICAgIHRlc3QyLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciB7IHJl
YWRlciB9ID0gZmFjdG9yeSgpOwotCi0gICAgICAgIHZhciBjbG9zZWRCZWZvcmUgPSByZWFkZXIu
Y2xvc2VkOwotCi0gICAgICAgIGNsb3NlZEJlZm9yZS5jYXRjaCh0ZXN0Mi5zdGVwX2Z1bmMoZnVu
Y3Rpb24oZSkgewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCBlcnJvciwgJ3JlYWRlci5j
bG9zZWQgYWNxdWlyZWQgYmVmb3JlIHJlbGVhc2Ugc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJv
cicpOwotCi0gICAgICAgICAgICByZWFkZXIucmVsZWFzZUxvY2soKTsKLSAgICAgICAgICAgIHZh
ciBjbG9zZWRBZnRlciA9IHJlYWRlci5jbG9zZWQ7Ci0KLSAgICAgICAgICAgIGFzc2VydF9ub3Rf
ZXF1YWxzKGNsb3NlZEJlZm9yZSwgY2xvc2VkQWZ0ZXIsICd0aGUgY2xvc2VkIHByb21pc2Ugc2hv
dWxkIGNoYW5nZSBpZGVudGl0eScpOwotCi0gICAgICAgICAgICByZXR1cm4gY2xvc2VkQWZ0ZXIu
Y2F0Y2godGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IHRocm93IGU7IH0sICdyZWFk
ZXIuY2xvc2VkIGFjcXVpcmVkIGFmdGVyIHJlbGVhc2Ugc2hvdWxkIHJlamVjdCB3aXRoIGEgVHlw
ZUVycm9yJyk7Ci0gICAgICAgICAgICAgICAgdGVzdDIuZG9uZSgpOwotICAgICAgICAgICAgfSkp
OwotICAgICAgICB9KSkuY2F0Y2godGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0
X3VucmVhY2hlZChlKTsgfSkpOwotICAgIH0pOwotCi0gICAgdmFyIHRlc3QzID0gYXN5bmNfdGVz
dCgncmVhZCgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKLSAgICB0ZXN0My5zdGVw
KGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgeyByZWFkZXIgfSA9IGZhY3RvcnkoKTsKLQotICAg
ICAgICByZWFkZXIucmVhZCgpLnRoZW4oCi0gICAgICAgICAgICB0ZXN0My5zdGVwX2Z1bmMoZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgncmVhZCgpIHNob3Vs
ZCBub3QgZnVsZmlsbCcpOwotICAgICAgICAgICAgfSksCi0gICAgICAgICAgICB0ZXN0My5zdGVw
X2Z1bmMoZnVuY3Rpb24ocikgewotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMociwgZXJy
b3IsICdyZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOwotICAgICAgICAgICAg
ICAgIHRlc3QzLmRvbmUoKTsKLSAgICAgICAgICAgIH0pCi0gICAgICAgICk7Ci0gICAgfSk7Ci19
OwotCi1mdW5jdGlvbiB0ZW1wbGF0ZWRSU1R3b0NodW5rc09wZW5SZWFkZXIobGFiZWwsIGZhY3Rv
cnksIGNodW5rcykgewotICAgIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgfSwgJ1J1bm5pbmcgdGVt
cGxhdGVkUlNUd29DaHVua3NPcGVuUmVhZGVyIHdpdGggJyArIGxhYmVsKTsKLQotICAgIHZhciB0
ZXN0MSA9IGFzeW5jX3Rlc3QoJ2NhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3
aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcycpOwotICAgIHRlc3QxLnN0ZXAoZnVuY3Rp
b24oKSB7Ci0gICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwotICAgICAgICB2YXIg
cHJvbWlzZUNvdW50ID0gMDsKLQotICAgICAgICByZWFkZXIucmVhZCgpLnRoZW4odGVzdDEuc3Rl
cF9mdW5jKGZ1bmN0aW9uKHIpIHsKLSAgICAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIs
IHsgdmFsdWU6IGNodW5rc1swXSwgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IHJlc3VsdCBzaG91bGQg
YmUgY29ycmVjdCcpOwotICAgICAgICAgICAgKytwcm9taXNlQ291bnQ7Ci0gICAgICAgIH0pKTsK
LSAgICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7
Ci0gICAgICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiBjaHVua3NbMV0s
IGRvbmU6IGZhbHNlIH0sICdzZWNvbmQgcmVzdWx0IHNob3VsZCBiZSBjb3JyZWN0Jyk7Ci0gICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKCsrcHJvbWlzZUNvdW50LCAyKTsKLSAgICAgICAgICAgIHRl
c3QxLmRvbmUoKTsKLSAgICAgICAgfSkpOwotICAgIH0pOwotCi0gICAgdmFyIHRlc3QyID0gYXN5
bmNfdGVzdCgnY2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxs
eSBnaXZlIGJvdGggY2h1bmtzJyk7Ci0gICAgdGVzdDIuc3RlcChmdW5jdGlvbigpIHsKLSAgICAg
ICAgdmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7Ci0KLSAgICAgICAgcmVhZGVyLnJlYWQoKS50
aGVuKHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAgICAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyLCB7IHZhbHVlOiBjaHVua3NbMF0sIGRvbmU6IGZhbHNlIH0sICdmaXJzdCBy
ZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLQotICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5y
ZWFkKCkudGhlbih0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgewotICAgICAgICAgICAgICAg
IGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IGNodW5rc1sxXSwgZG9uZTogZmFsc2Ug
fSwgJ3NlY29uZCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLSAgICAgICAgICAgICAgICB0
ZXN0Mi5kb25lKCk7Ci0gICAgICAgICAgICB9KSk7Ci0gICAgICAgIH0pKS5jYXRjaCh0ZXN0Mi5z
dGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9KSk7Ci0gICAgfSk7
Ci0KLSAgICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgeyByZWFkZXIgfSA9IGZhY3Rv
cnkoKTsKLQotICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhyZWFkZXIucmVhZCgpLCByZWFkZXIu
cmVhZCgpLCAndGhlIHByb21pc2VzIHJldHVybmVkIHNob3VsZCBiZSBkaXN0aW5jdCcpOwotICAg
IH0sICdyZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcyBlYWNoIHRpbWUnKTsK
LQotICAgIHZhciB0ZXN0MyA9IGFzeW5jX3Rlc3QoJ2NhbmNlbCgpIGFmdGVyIGEgcmVhZCgpIHNo
b3VsZCBzdGlsbCBnaXZlIHRoYXQgc2luZ2xlIHJlYWQgcmVzdWx0Jyk7Ci0gICAgdGVzdDMuc3Rl
cChmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7Ci0gICAg
ICAgIHZhciBwcm9taXNlQ291bnQgPSAwOwotCi0gICAgICAgIHJlYWRlci5jbG9zZWQudGhlbih0
ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24odikgewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2
LCB1bmRlZmluZWQsICdyZWFkZXIgY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVk
Jyk7Ci0gICAgICAgICAgICArK3Byb21pc2VDb3VudDsKLSAgICAgICAgfSkpOwotCi0gICAgICAg
IHJlYWRlci5yZWFkKCkudGhlbih0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgewotICAgICAg
ICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogY2h1bmtzWzBdLCBkb25lOiBm
YWxzZSB9LCAncHJvbWlzZSByZXR1cm5lZCBiZWZvcmUgY2FuY2VsbGF0aW9uIHNob3VsZCBmdWxm
aWxsIHdpdGggYSBjaHVuaycpOwotICAgICAgICAgICAgKytwcm9taXNlQ291bnQ7Ci0gICAgICAg
IH0pKTsKLQotICAgICAgICByZWFkZXIuY2FuY2VsKCk7Ci0KLSAgICAgICAgcmVhZGVyLnJlYWQo
KS50aGVuKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAgICAgICBhc3NlcnRf
b2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3Byb21p
c2UgcmV0dXJuZWQgYWZ0ZXIgY2FuY2VsbGF0aW9uIHNob3VsZCBmdWxmaWxsIHdpdGggYW4gZW5k
LW9mLXN0cmVhbSBzaWduYWwnKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoKytwcm9taXNl
Q291bnQsIDMpOwotICAgICAgICAgICAgdGVzdDMuZG9uZSgpOwotICAgICAgICB9KSkKLSAgICB9
KTsKLX07Ci0KLWZ1bmN0aW9uIHRlbXBsYXRlZFJTVHdvQ2h1bmtzQ2xvc2VkUmVhZGVyKGxhYmVs
LCBmYWN0b3J5LCBjaHVua3MpIHsKLSAgICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgIH0sICdSdW5u
aW5nIHRlbXBsYXRlZFJTVHdvQ2h1bmtzQ2xvc2VkUmVhZGVyIHdpdGggJyArIGxhYmVsKTsKLQot
ICAgIHZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ3RoaXJkIHJlYWQoKSwgd2l0aG91dCB3YWl0aW5n
LCBzaG91bGQgZ2l2ZSB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfScpOwotICAgIHRl
c3QxLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgp
OwotICAgICAgICB2YXIgcHJvbWlzZUNvdW50ID0gMDsKLQotICAgICAgICByZWFkZXIucmVhZCgp
LnRoZW4odGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKLSAgICAgICAgICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IGNodW5rc1swXSwgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0
IHJlc3VsdCBzaG91bGQgYmUgY29ycmVjdCcpOwotICAgICAgICAgICAgKytwcm9taXNlQ291bnQ7
Ci0gICAgICAgIH0pKTsKLSAgICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKHRlc3QxLnN0ZXBfZnVu
YyhmdW5jdGlvbihyKSB7Ci0gICAgICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZh
bHVlOiBjaHVua3NbMV0sIGRvbmU6IGZhbHNlIH0sICdzZWNvbmQgcmVzdWx0IHNob3VsZCBiZSBj
b3JyZWN0Jyk7Ci0gICAgICAgICAgICArK3Byb21pc2VDb3VudDsKLSAgICAgICAgfSkpOwotICAg
ICAgICByZWFkZXIucmVhZCgpLnRoZW4odGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKLSAg
ICAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9u
ZTogdHJ1ZSB9LCAndGhpcmQgcmVzdWx0IHNob3VsZCBiZSBjb3JyZWN0Jyk7Ci0gICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKCsrcHJvbWlzZUNvdW50LCAzKTsKLSAgICAgICAgICAgIHRlc3QxLmRv
bmUoKTsKLSAgICAgICAgfSkpCi0gICAgfSk7Ci0KLSAgICB2YXIgdGVzdDIgPSBhc3luY190ZXN0
KCd0aGlyZCByZWFkLCB3aXRoIHdhaXRpbmcsIHNob3VsZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5l
ZCwgZG9uZTogdHJ1ZSB9Jyk7Ci0gICAgdGVzdDIuc3RlcChmdW5jdGlvbigpIHsKLSAgICAgICAg
dmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7Ci0KLSAgICAgICAgcmVhZGVyLnJlYWQoKS50aGVu
KHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAgICAgICBhc3NlcnRfb2JqZWN0
X2VxdWFscyhyLCB7IHZhbHVlOiBjaHVua3NbMF0sIGRvbmU6IGZhbHNlIH0sICdmaXJzdCByZXN1
bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLQotICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFk
KCkudGhlbih0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgewotICAgICAgICAgICAgICAgIGFz
c2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IGNodW5rc1sxXSwgZG9uZTogZmFsc2UgfSwg
J3NlY29uZCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLQotICAgICAgICAgICAgICAgIHJl
dHVybiByZWFkZXIucmVhZCgpLnRoZW4odGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKLSAg
ICAgICAgICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogdW5kZWZp
bmVkLCBkb25lOiB0cnVlIH0sICd0aGlyZCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLSAg
ICAgICAgICAgICAgICAgICAgdGVzdDIuZG9uZSgpOwotICAgICAgICAgICAgICAgIH0pKTsKLSAg
ICAgICAgICAgIH0pKTsKLSAgICAgICAgfSkpLmNhdGNoKHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlv
bihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0pKTsKLSAgICB9KTsKLQotICAgIHZhciB0ZXN0
MyA9IGFzeW5jX3Rlc3QoJ2RyYWluaW5nIHRoZSBzdHJlYW0gdmlhIHJlYWQoKSBzaG91bGQgY2F1
c2UgdGhlIHJlYWRlciBjbG9zZWQgcHJvbWlzZSB0byBmdWxmaWxsLCBidXQgbG9ja2VkIHN0YXlz
IHRydWUnKTsKLSAgICB0ZXN0My5zdGVwKGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgeyBzdHJl
YW0sIHJlYWRlciB9ID0gZmFjdG9yeSgpOwotCi0gICAgICAgIGFzc2VydF90cnVlKHN0cmVhbS5s
b2NrZWQsICdzdHJlYW0gc2hvdWxkIHN0YXJ0IGxvY2tlZCcpOwotCi0gICAgICAgIHJlYWRlci5j
bG9zZWQudGhlbigKLSAgICAgICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbih2KSB7Ci0g
ICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdyZWFkZXIgY2xvc2Vk
IHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0
X3RydWUoc3RyZWFtLmxvY2tlZCwgJ3N0cmVhbSBzaG91bGQgcmVtYWluIGxvY2tlZCcpOwotICAg
ICAgICAgICAgICAgIHRlc3QzLmRvbmUoKTsKLSAgICAgICAgICAgIH0pLAotICAgICAgICAgICAg
dGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdyZWFkZXIgY2xv
c2VkIHNob3VsZCBub3QgcmVqZWN0Jyk7IH0pCi0gICAgICAgICk7Ci0KLSAgICAgICAgcmVhZGVy
LnJlYWQoKTsKLSAgICAgICAgcmVhZGVyLnJlYWQoKTsKLSAgICB9KTsKLQotICAgIHZhciB0ZXN0
NCA9IGFzeW5jX3Rlc3QoJ3JlbGVhc2luZyB0aGUgbG9jayBhZnRlciB0aGUgc3RyZWFtIGlzIGNs
b3NlZCBzaG91bGQgY2F1c2UgbG9ja2VkIHRvIGJlY29tZSBmYWxzZScpOwotICAgIHRlc3Q0LnN0
ZXAoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciB7IHN0cmVhbSwgcmVhZGVyIH0gPSBmYWN0b3J5
KCk7Ci0KLSAgICAgICAgcmVhZGVyLmNsb3NlZC50aGVuKHRlc3Q0LnN0ZXBfZnVuYyhmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKHN0cmVhbS5sb2NrZWQsICd0aGUgc3RyZWFt
IHNob3VsZCBzdGFydCBsb2NrZWQnKTsKLSAgICAgICAgICAgIHJlYWRlci5yZWxlYXNlTG9jaygp
OyAvLyBSZWxlYXNpbmcgdGhlIGxvY2sgYWZ0ZXIgcmVhZGVyIGNsb3NlZCBzaG91bGQgbm90IHRo
cm93LgotICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKHN0cmVhbS5sb2NrZWQsICd0aGUgc3RyZWFt
IHNob3VsZCBlbmQgdW5sb2NrZWQnKTsKLSAgICAgICAgICAgIHRlc3Q0LmRvbmUoKTsKLSAgICAg
ICAgfSkpOwotCi0gICAgICAgIHJlYWRlci5yZWFkKCk7Ci0gICAgICAgIHJlYWRlci5yZWFkKCk7
Ci0gICAgfSk7Ci0KLSAgICB2YXIgdGVzdDUgPSBhc3luY190ZXN0KCdyZWxlYXNpbmcgdGhlIGxv
Y2sgc2hvdWxkIGNhdXNlIGZ1cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlw
ZUVycm9yJyk7Ci0gICAgdGVzdDUuc3RlcChmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHByb21p
c2VDYWxscyA9IDA7Ci0gICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwotCi0gICAg
ICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOwotCi0gICAgICAgIHJlYWRlci5yZWFkKCkuY2F0Y2go
dGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3Mo
bmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgdGhyb3cgZTsgfSwgJ2ZpcnN0IHJlYWQoKSBz
aG91bGQgcmVqZWN0IHdpdGggYSBUeXBlRXJyb3InKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMoKytwcm9taXNlQ2FsbHMsIDEpOwotICAgICAgICB9KSk7Ci0gICAgICAgIHJlYWRlci5yZWFk
KCkuY2F0Y2godGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgdGhyb3cgZTsgfSwgJ3NlY29u
ZCByZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yJyk7Ci0gICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKCsrcHJvbWlzZUNhbGxzLCAyKTsKLSAgICAgICAgfSkpOwotICAgICAgICBy
ZWFkZXIucmVhZCgpLmNhdGNoKHRlc3Q1LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAg
ICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IHRocm93IGU7
IH0sICd0aGlyZCByZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yJyk7Ci0gICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKCsrcHJvbWlzZUNhbGxzLCAzKTsKLSAgICAgICAgICAgIHRl
c3Q1LmRvbmUoKTsKLSAgICAgICAgfSkpOwotICAgIH0pOwotCi0gICAgdmFyIHRlc3Q2ID0gYXN5
bmNfdGVzdCgncmVhZGVyXCdzIGNsb3NlZCBwcm9wZXJ0eSBhbHdheXMgcmV0dXJucyB0aGUgc2Ft
ZSBwcm9taXNlJyk7Ci0gICAgdGVzdDYuc3RlcChmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHsg
cmVhZGVyLCBzdHJlYW0gfSA9IGZhY3RvcnkoKTsKLQotICAgICAgICB2YXIgcmVhZGVyQ2xvc2Vk
ID0gcmVhZGVyLmNsb3NlZDsKLQotICAgICAgICBhc3NlcnRfZXF1YWxzKHJlYWRlci5jbG9zZWQs
IHJlYWRlckNsb3NlZCwgJ2FjY2Vzc2luZyByZWFkZXIuY2xvc2VkIHR3aWNlIGluIHN1Y2Nlc3Np
b24gZ2l2ZXMgdGhlIHNhbWUgdmFsdWUnKTsKLQotICAgICAgICByZWFkZXIucmVhZCgpLnRoZW4o
dGVzdDYuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhy
ZWFkZXIuY2xvc2VkLCByZWFkZXJDbG9zZWQsICdyZWFkZXIuY2xvc2VkIGlzIHRoZSBzYW1lIGFm
dGVyIHJlYWQoKSBmdWxmaWxscycpOwotCi0gICAgICAgICAgICByZWFkZXIucmVsZWFzZUxvY2so
KTsKLQotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZWFkZXIuY2xvc2VkLCByZWFkZXJDbG9z
ZWQsICdyZWFkZXIuY2xvc2VkIGlzIHRoZSBzYW1lIGFmdGVyIHJlbGVhc2luZyB0aGUgbG9jaycp
OwotCi0gICAgICAgICAgICB2YXIgbmV3UmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOwotICAg
ICAgICAgICAgbmV3UmVhZGVyLnJlYWQoKTsKLQotICAgICAgICAgICAgdGVzdDYuZG9uZSgpOwot
ICAgICAgICB9KSk7Ci0KLSAgICAgICAgYXNzZXJ0X2VxdWFscyhyZWFkZXIuY2xvc2VkLCByZWFk
ZXJDbG9zZWQsICdyZWFkZXIuY2xvc2VkIGlzIHRoZSBzYW1lIGFmdGVyIGNhbGxpbmcgcmVhZCgp
Jyk7Ci0gICAgfSk7Ci19OwotCi10ZW1wbGF0ZWRSU0VtcHR5KCdSZWFkYWJsZVN0cmVhbSAoZW1w
dHkpJywgZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotfSk7
Ci0KLXRlbXBsYXRlZFJTRW1wdHlSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVy
JywgZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIHN0cmVhbUFuZERlZmF1bHRSZWFkZXIobmV3IFJl
YWRhYmxlU3RyZWFtKCkpOwotfSk7Ci0KIHRlbXBsYXRlZFJTQ2xvc2VkKCdSZWFkYWJsZVN0cmVh
bSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0YXJ0KScsIGZ1bmN0aW9uKCkgewogICAgIHJldHVybiBu
ZXcgUmVhZGFibGVTdHJlYW0oewogICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewpAQCAtMTA1
Nyw0MyArMzUzLDExIEBAIHRlbXBsYXRlZFJTQ2xvc2VkKCdSZWFkYWJsZVN0cmVhbSAoY2xvc2Vk
IHZpYSBjYWxsIGluIHN0YXJ0KScsIGZ1bmN0aW9uKCkgewogICAgIH0pOwogfSk7CiAKLXRlbXBs
YXRlZFJTQ2xvc2VkUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUg
Z2V0dGluZyByZWFkZXIpJywgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGNvbnRyb2xsZXI7Ci0gICAg
dmFyIHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlv
bihjKSB7Ci0gICAgICAgICAgICBjb250cm9sbGVyID0gYzsKLSAgICAgICAgfQotICAgIH0pOwot
ICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKLSAgICB2YXIgcmVzdWx0ID0gc3RyZWFtQW5kRGVmYXVs
dFJlYWRlcihzdHJlYW0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19KTsKLQotdGVtcGxhdGVkUlND
bG9zZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGFmdGVyIGdldHRpbmcg
cmVhZGVyKScsIGZ1bmN0aW9uKCkgewotICAgIHZhciBjb250cm9sbGVyOwotICAgIHZhciBzdHJl
YW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewot
ICAgICAgICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgICAgIH0KLSAgICB9KTsKLSAgICB2YXIg
cmVzdWx0ID0gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihzdHJlYW0pOwotICAgIGNvbnRyb2xsZXIu
Y2xvc2UoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfSk7Ci0KIHRlbXBsYXRlZFJTQ2xvc2VkKCdS
ZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpJywgZnVuY3Rpb24oKSB7CiAgICAgdmFy
IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwogICAgIHN0cmVhbS5jYW5jZWwoKTsKICAg
ICByZXR1cm4gc3RyZWFtOwogfSk7Ci0KLXRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyKCdSZWFkYWJs
ZVN0cmVhbSByZWFkZXIgKGNsb3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKScs
IGZ1bmN0aW9uKCkgewotICAgIHZhciBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAg
ICB2YXIgcmVzdWx0ID0gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihzdHJlYW0pOwotICAgIHJlc3Vs
dC5yZWFkZXIuY2FuY2VsKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0pOwotCiB2YXIgdGhlRXJy
b3IgPSBuZXcgRXJyb3IoJ2JvbyEnKTsKIAogdGVtcGxhdGVkUlNFcnJvcmVkKCdSZWFkYWJsZVN0
cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCknLCBmdW5jdGlvbigpIHsKQEAgLTExMDUs
MTUgKzM2OSw2IEBAIHRlbXBsYXRlZFJTRXJyb3JlZCgnUmVhZGFibGVTdHJlYW0gKGVycm9yZWQg
dmlhIGNhbGwgaW4gc3RhcnQpJywgZnVuY3Rpb24oKSB7CiAgICAgdGhlRXJyb3IKICk7CiAKLXRl
bXBsYXRlZFJTRXJyb3JlZFN5bmNPbmx5KCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2Fs
bCBpbiBzdGFydCknLCBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGMuZXJyb3IodGhl
RXJyb3IpOwotICAgICAgICB9Ci0gICAgfSl9LAotICAgIHRoZUVycm9yCi0pOwotCiB0ZW1wbGF0
ZWRSU0Vycm9yZWQoJ1JlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWpl
Y3RlZCBwcm9taXNlIGluIHN0YXJ0KScsIGZ1bmN0aW9uKCkgewogICAgIHJldHVybiBuZXcgUmVh
ZGFibGVTdHJlYW0oewogICAgICAgICBzdGFydDogZnVuY3Rpb24oKSB7CkBAIC0xMTMwLDQ5ICsz
ODUsOCBAQCB0ZW1wbGF0ZWRSU0Vycm9yZWRBc3luY09ubHkoJ1JlYWRhYmxlU3RyZWFtIChlcnJv
cmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcgogICAgIHRoZUVycm9yCiApOwogCi10ZW1w
bGF0ZWRSU0Vycm9yZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5p
bmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSByZWFkZXInLCBmdW5jdGlvbigpIHsKLSAg
ICByZXR1cm4gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oewotICAg
ICAgICBzdGFydDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWpl
Y3QodGhlRXJyb3IpOwotICAgICAgICB9Ci0gICAgfSkpfSwKLSAgICB0aGVFcnJvcgotKTsKLQot
dGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQg
YmVmb3JlIGdldHRpbmcgcmVhZGVyKScsIGZ1bmN0aW9uKCkgewotICAgIHZhciBjb250cm9sbGVy
OwotICAgIHZhciBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDog
ZnVuY3Rpb24oYykgewotICAgICAgICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgICAgIH0KLSAg
ICB9KTsKLSAgICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKLSAgICByZXR1cm4gc3RyZWFt
QW5kRGVmYXVsdFJlYWRlcihzdHJlYW0pOwotfSwgdGhlRXJyb3IpOwotCi10ZW1wbGF0ZWRSU0Vy
cm9yZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBhZnRlciBnZXR0aW5n
IHJlYWRlciknLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgY29udHJvbGxlcjsKLSAgICB2YXIgcmVz
dWx0ID0gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAg
ICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAg
ICAgIH0KLSAgICB9KSk7Ci0gICAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0sIHRoZUVycm9yKTsKLQogdmFyIGNodW5rcyA9IFsnYScsICdiJ107CiAK
LXRlbXBsYXRlZFJTVHdvQ2h1bmtzT3BlblJlYWRlcignUmVhZGFibGVTdHJlYW0gKHR3byBjaHVu
a3MgZW5xdWV1ZWQsIHN0aWxsIG9wZW4pIHJlYWRlcicsIGZ1bmN0aW9uKCkgewotICAgIHJldHVy
biBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0
YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBjLmVucXVldWUoY2h1bmtzWzBdKTsKLSAg
ICAgICAgICAgIGMuZW5xdWV1ZShjaHVua3NbMV0pOwotICAgICAgICB9Ci0gICAgfSkpfSwKLSAg
ICBjaHVua3MKLSk7Ci0KIHRlbXBsYXRlZFJTVHdvQ2h1bmtzQ2xvc2VkKCdSZWFkYWJsZVN0cmVh
bSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpJywgZnVuY3Rpb24oKSB7CiAgICAg
cmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7CiAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7
CkBAIC0xMjEwLDIyICs0MjQsNCBAQCB0ZW1wbGF0ZWRSU1R3b0NodW5rc0Nsb3NlZCgnUmVhZGFi
bGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQgdmlhIHB1bGwsIHRoZW4gYwogfSwKIGNodW5r
cwogKTsKLQotdGVtcGxhdGVkUlNUd29DaHVua3NDbG9zZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFt
ICh0d28gY2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyJywgZnVuY3Rpb24oKSB7
Ci0gICAgdmFyIGRvQ2xvc2U7Ci0gICAgdmFyIHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBjLmVucXVldWUoY2h1
bmtzWzBdKTsKLSAgICAgICAgICAgIGMuZW5xdWV1ZShjaHVua3NbMV0pOwotICAgICAgICAgICAg
ZG9DbG9zZSA9IGMuY2xvc2UuYmluZChjKTsKLSAgICAgICAgfQotICAgIH0pOwotICAgIHZhciBy
ZXN1bHQgPSBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKHN0cmVhbSk7Ci0gICAgZG9DbG9zZSgpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19LCBjaHVua3MpOwotCi1mdW5jdGlvbiBzdHJlYW1BbmREZWZh
dWx0UmVhZGVyKHN0cmVhbSkgewotICByZXR1cm4geyBzdHJlYW06IHN0cmVhbSwgcmVhZGVyOiBz
dHJlYW0uZ2V0UmVhZGVyKCkgfTsKLX0KIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1z
dHJlYW0uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M4ZDYzODViYjc2OTRi
MjNlNDNmYjk0NTA4ZDVkZjVlYjcwMjAwNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRh
dGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDg4MCArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxzY3JpcHQgc3JjPScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMnPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Jy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyc+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ncmVzb3VyY2VzL3N0cmVhbXMtdXRp
bHMuanMnPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Jy4uLy4uL3Jlc291cmNlcy9nYy5qcyc+PC9z
Y3JpcHQ+Ci08c2NyaXB0PgotLy8gVGhpcyBpcyB1cGRhdGVkIHRpbGwgaHR0cHM6Ly9naXRodWIu
Y29tL3doYXR3Zy9zdHJlYW1zL2NvbW1pdC9lYzVmZmEwMzYzMDhkOWY2MzUwZDI5NDY1NjBkNDhj
ZGJmMDkwOTM5Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgbmV3IFJlYWRhYmxlU3RyZWFtKCk7
IC8vIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdGVkIHdpdGggbm8gcGFyYW1ldGVycy4KLSAgICBu
ZXcgUmVhZGFibGVTdHJlYW0oeyB9KTsgLy8gUmVhZGFibGVTdHJlYW0gY29uc3RydWN0ZWQgd2l0
aCBhbiBlbXB0eSBvYmplY3QgYXMgcGFyYW1ldGVyLgotICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh1
bmRlZmluZWQpOyAvLyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RlZCB3aXRoIHVuZGVmaW5lZCBh
cyBwYXJhbWV0ZXIuCi0gICAgdmFyIHg7Ci0gICAgbmV3IFJlYWRhYmxlU3RyZWFtKHgpIC8vIFJl
YWRhYmxlU3RyZWFtIGNvbnN0cnVjdGVkIHdpdGggYW4gdW5kZWZpbmVkIHZhcmlhYmxlIGFzIHBh
cmFtZXRlci4KLX0sICdSZWFkYWJsZVN0cmVhbSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBubyBl
cnJvcnMnKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IoKSwgZnVuY3Rpb24oKSB7IG5ldyBSZWFkYWJsZVN0cmVhbShudWxsKTsgfSwgJ2NvbnN0
cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzb3VyY2UgaXMgbnVsbCcpOwotfSwgJ1JlYWRh
YmxlU3RyZWFtIGNhblwndCBiZSBjb25zdHJ1Y3RlZCB3aXRoIGdhcmJhZ2UnKTsKLQotdGVzdChm
dW5jdGlvbigpIHsKLSAgICB2YXIgbWV0aG9kcyA9IFsnY2FuY2VsJywgJ2NvbnN0cnVjdG9yJywg
J2dldFJlYWRlcicsICdwaXBlVGhyb3VnaCcsICdwaXBlVG8nLCAndGVlJ107Ci0gICAgdmFyIHBy
b3BlcnRpZXMgPSBtZXRob2RzLmNvbmNhdChbJ2xvY2tlZCddKS5zb3J0KCk7Ci0KLSAgICB2YXIg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAgICB2YXIgcHJvdG8gPSBPYmplY3QuZ2V0UHJv
dG90eXBlT2YocnMpOwotCi0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhPYmplY3QuZ2V0T3duUHJv
cGVydHlOYW1lcyhwcm90bykuc29ydCgpLCBwcm9wZXJ0aWVzLCAnc2hvdWxkIGhhdmUgYWxsIHRo
ZSBjb3JyZWN0IG1ldGhvZHMnKTsKLQotICAgIGZvciAodmFyIG0gb2YgbWV0aG9kcykgewotICAg
ICAgICB2YXIgcHJvcERlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3Rv
LCBtKTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKHByb3BEZXNjLmVudW1lcmFibGUsICdtZXRob2Qg
c2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlJyk7Ci0gICAgICAgIGFzc2VydF90cnVlKHByb3BEZXNj
LmNvbmZpZ3VyYWJsZSwgJ21ldGhvZCBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7Ci0gICAgICAg
IGFzc2VydF90cnVlKHByb3BEZXNjLndyaXRhYmxlLCAnbWV0aG9kIHNob3VsZCBiZSB3cml0YWJs
ZScpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiByc1ttXSwgJ2Z1bmN0aW9uJywgJ3No
b3VsZCBoYXZlIGJlIGEgbWV0aG9kJyk7Ci0gICAgfQotCi0gICAgdmFyIGxvY2tlZFByb3BEZXNj
ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgJ2xvY2tlZCcpOwotICAg
IGFzc2VydF9mYWxzZShsb2NrZWRQcm9wRGVzYy5lbnVtZXJhYmxlLCAnbG9ja2VkIHNob3VsZCBi
ZSBub24tZW51bWVyYWJsZScpOwotICAgIGFzc2VydF9lcXVhbHMobG9ja2VkUHJvcERlc2Mud3Jp
dGFibGUsIHVuZGVmaW5lZCwgJ2xvY2tlZCBzaG91bGQgbm90IGJlIGEgZGF0YSBwcm9wZXJ0eScp
OwotICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGxvY2tlZFByb3BEZXNjLmdldCwgJ2Z1bmN0aW9u
JywgJ2xvY2tlZCBzaG91bGQgaGF2ZSBhIGdldHRlcicpOwotICAgIGFzc2VydF9lcXVhbHMobG9j
a2VkUHJvcERlc2Muc2V0LCB1bmRlZmluZWQsICdsb2NrZWQgc2hvdWxkIG5vdCBoYXZlIGEgc2V0
dGVyJyk7Ci0gICAgYXNzZXJ0X3RydWUobG9ja2VkUHJvcERlc2MuY29uZmlndXJhYmxlLCAnbG9j
a2VkIHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsKLQotICAgIGFzc2VydF9lcXVhbHMocnMuY2Fu
Y2VsLmxlbmd0aCwgMSwgJ2NhbmNlbCBzaG91bGQgaGF2ZSAxIHBhcmFtZXRlcicpOwotICAgIGFz
c2VydF9lcXVhbHMocnMuY29uc3RydWN0b3IubGVuZ3RoLCAwLCAnY29uc3RydWN0b3Igc2hvdWxk
IGhhdmUgbm8gcGFyYW1ldGVycycpOwotICAgIGFzc2VydF9lcXVhbHMocnMuZ2V0UmVhZGVyLmxl
bmd0aCwgMCwgJ2dldFJlYWRlciBzaG91bGQgaGF2ZSBubyBwYXJhbWV0ZXJzJyk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhycy5waXBlVGhyb3VnaC5sZW5ndGgsIDIsICdwaXBlVGhyb3VnaCBzaG91bGQg
aGF2ZSAyIHBhcmFtZXRlcnMnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJzLnBpcGVUby5sZW5ndGgs
IDEsICdwaXBlVG8gc2hvdWxkIGhhdmUgMSBwYXJhbWV0ZXInKTsKLSAgICBhc3NlcnRfZXF1YWxz
KHJzLnRlZS5sZW5ndGgsIDAsICd0ZWUgc2hvdWxkIGhhdmUgbm8gcGFyYW1ldGVycycpOwotfSwg
J1JlYWRhYmxlU3RyZWFtIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9m
IHByb3BlcnRpZXMnKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7
IHN0YXJ0OiAncG90YXRvJ30pOwotICAgIH0sICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgd2hl
biBzdGFydCBpcyBub3QgYSBmdW5jdGlvbicpOwotfSwgJ1JlYWRhYmxlU3RyZWFtIGNvbnN0cnVj
dG9yIHNob3VsZCB0aHJvdyBmb3Igbm9uLWZ1bmN0aW9uIHN0YXJ0IGFyZ3VtZW50cycpOwotCi10
ZXN0KGZ1bmN0aW9uKCkgewotICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7IGNhbmNlbDogJzInfSk7
IC8vIENvbnN0cnVjdG9yIHNob3VsZCBub3QgdGhyb3cgd2hlbiBjYW5jZWwgaXMgbm90IGEgZnVu
Y3Rpb24uCi19LCAnUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdh
cmJhZ2UgYXMgY2FuY2VsIGFyZ3VtZW50Jyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgbmV3
IFJlYWRhYmxlU3RyZWFtKHsgcHVsbDogeyB9IH0pOyAvLyBDb25zdHJ1Y3RvciBzaG91bGQgbm90
IHRocm93IHdoZW4gcHVsbCBpcyBub3QgYSBmdW5jdGlvbi4KLX0sICdSZWFkYWJsZVN0cmVhbSBj
b25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBwdWxsIGFyZ3VtZW50Jyk7Ci0K
LXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHN0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0gICAgdmFy
IHNvdXJjZSA9IHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGNvbnRyb2xsZXIpIHsKLSAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHModGhpcywgc291cmNlLCAnc291cmNlIGlzIHRoaXMgZHVyaW5n
IHN0YXJ0Jyk7Ci0KLSAgICAgICAgICAgIHZhciBtZXRob2RzID0gWydjbG9zZScsICdlbnF1ZXVl
JywgJ2Vycm9yJywgJ2NvbnN0cnVjdG9yJ107Ci0gICAgICAgICAgICB2YXIgcHJvcGVydGllcyA9
IFsnZGVzaXJlZFNpemUnXS5jb25jYXQobWV0aG9kcykuc29ydCgpOwotICAgICAgICAgICAgdmFy
IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGNvbnRyb2xsZXIpOwotCi0gICAgICAgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvKS5z
b3J0KCksIHByb3BlcnRpZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUg
Y29udHJvbGxlciBzaG91bGQgaGF2ZSB0aGUgcmlnaHQgcHJvcGVydGllcycpOwotCi0gICAgICAg
ICAgICBmb3IgKHZhciBtIG9mIG1ldGhvZHMpIHsKLSAgICAgICAgICAgICAgICB2YXIgcHJvcERl
c2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBtKTsKLSAgICAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBjb250cm9sbGVyW21dLCAnZnVuY3Rpb24nLCBg
c2hvdWxkIGhhdmUgYSAke219IG1ldGhvZGApOwotICAgICAgICAgICAgICAgIGFzc2VydF9mYWxz
ZShwcm9wRGVzYy5lbnVtZXJhYmxlLCBtICsgIiBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUiKTsK
LSAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShwcm9wRGVzYy5jb25maWd1cmFibGUsIG0gKyAi
IHNob3VsZCBiZSBjb25maWd1cmFibGUiKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShw
cm9wRGVzYy53cml0YWJsZSwgbSArICIgc2hvdWxkIGJlIHdyaXRhYmxlIik7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIHZhciBkZXNpcmVkU2l6ZVByb3BEZXNjID0gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgJ2Rlc2lyZWRTaXplJyk7Ci0gICAgICAgICAgICBh
c3NlcnRfZmFsc2UoZGVzaXJlZFNpemVQcm9wRGVzYy5lbnVtZXJhYmxlLCAnZGVzaXJlZFNpemUg
c2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlJyk7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRl
c2lyZWRTaXplUHJvcERlc2Mud3JpdGFibGUsIHVuZGVmaW5lZCwgJ2Rlc2lyZWRTaXplIHNob3Vs
ZCBub3QgYmUgYSBkYXRhIHByb3BlcnR5Jyk7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5
cGVvZiBkZXNpcmVkU2l6ZVByb3BEZXNjLmdldCwgJ2Z1bmN0aW9uJywgJ2Rlc2lyZWRTaXplIHNo
b3VsZCBoYXZlIGEgZ2V0dGVyJyk7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2lyZWRT
aXplUHJvcERlc2Muc2V0LCB1bmRlZmluZWQsICdkZXNpcmVkU2l6ZSBzaG91bGQgbm90IGhhdmUg
YSBzZXR0ZXInKTsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKGRlc2lyZWRTaXplUHJvcERlc2Mu
Y29uZmlndXJhYmxlLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZScpOwotCi0g
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuY2xvc2UubGVuZ3RoLCAwLCAnY2xv
c2Ugc2hvdWxkIGhhdmUgbm8gcGFyYW1ldGVycycpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhjb250cm9sbGVyLmNvbnN0cnVjdG9yLmxlbmd0aCwgMSwgJ2NvbnN0cnVjdG9yIHNob3VsZCBo
YXZlIDEgcGFyYW1ldGVyJyk7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIu
ZW5xdWV1ZS5sZW5ndGgsIDEsICdlbnF1ZXVlIHNob3VsZCBoYXZlIDEgcGFyYW1ldGVyJyk7Ci0g
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZXJyb3IubGVuZ3RoLCAxLCAnZXJy
b3Igc2hvdWxkIGhhdmUgMSBwYXJhbWV0ZXInKTsKLQotICAgICAgICAgICAgc3RhcnRDYWxsZWQg
PSB0cnVlOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIG5ldyBSZWFkYWJsZVN0cmVhbShzb3Vy
Y2UpOwotICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKLX0sICdSZWFkYWJsZVN0cmVhbSBz
dGFydCBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHByb3BlciBwYXJhbWV0ZXJzJyk7Ci0KLXRl
c3QoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHN0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0gICAgdmFyIHNv
dXJjZSA9IHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGNvbnRyb2xsZXIpIHsKLSAgICAgICAg
ICAgIHZhciBwcm9wZXJ0aWVzID0gWydjbG9zZScsICdjb25zdHJ1Y3RvcicsICdkZXNpcmVkU2l6
ZScsICdlbnF1ZXVlJywgJ2Vycm9yJ107Ci0gICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE9iamVjdC5nZXRQcm90b3R5cGVPZihjb250cm9s
bGVyKSkuc29ydCgpLCBwcm9wZXJ0aWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAncHJvdG90eXBlIHNob3VsZCBoYXZlIHRoZSByaWdodCBwcm9wZXJ0aWVzJyk7Ci0gICAgICAg
ICAgICBjb250cm9sbGVyLnRlc3QgPSAnJzsKLSAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2JqZWN0LmdldFByb3RvdHlwZU9mKGNvbnRy
b2xsZXIpKS5zb3J0KCksIHByb3BlcnRpZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdwcm90b3R5cGUgc2hvdWxkIHN0aWxsIGhhdmUgdGhlIHJpZ2h0IHByb3BlcnRpZXMnKTsK
LSAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVz
KGNvbnRyb2xsZXIpLmluZGV4T2YoJ3Rlc3QnKSwgLTEsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnInRlc3QiIHNob3VsZCBiZSBhIHByb3BlcnR5IG9mIHRoZSBjb250cm9sbGVyJyk7
Ci0KLSAgICAgICAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH07Ci0K
LSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oc291cmNlKTsKLSAgICBhc3NlcnRfdHJ1
ZShzdGFydENhbGxlZCk7Ci19LCAnUmVhZGFibGVTdHJlYW0gc3RhcnQgY29udHJvbGxlciBwYXJh
bWV0ZXIgc2hvdWxkIGJlIGV4dGVuc2libGUnKTsKLQotdmFyIHRlc3QxID0gYXN5bmNfdGVzdCgn
UmVhZGFibGVTdHJlYW0gc2hvdWxkIGJlIGFibGUgdG8gY2FsbCBzdGFydCBtZXRob2Qgd2l0aGlu
IHByb3RvdHlwZSBjaGFpbiBvZiBpdHMgc291cmNlJyk7Ci10ZXN0MS5zdGVwKGZ1bmN0aW9uKCkK
LXsKLSAgICBmdW5jdGlvbiBTaW1wbGVTdHJlYW1Tb3VyY2UoKSB7Ci0gICAgfTsKLSAgICBTaW1w
bGVTdHJlYW1Tb3VyY2UucHJvdG90eXBlID0gewotICAgICAgICBzdGFydDogZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICB0ZXN0MS5kb25lKCdzdGFydCBzaG91bGQgYmUgY2FsbGVkJyk7Ci0gICAg
ICAgIH0sCi0gICAgfQotCi0gICAgbmV3IFJlYWRhYmxlU3RyZWFtKG5ldyBTaW1wbGVTdHJlYW1T
b3VyY2UoKSk7Ci19KTsKLQotdmFyIHRlc3QyID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0g
c3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZScpOwotdGVzdDIuc3RlcChm
dW5jdGlvbigpCi17Ci0gICAgdmFyIHJlYWRDYWxsZWQgPSBmYWxzZTsKLSAgICB2YXIgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAg
ICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXNvbHZl
LCByZWplY3QpIHsKLSAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3QyLnN0ZXBfZnVuYyhm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICAg
ICAgICAgICAgICAgIGMuY2xvc2UoKTsKLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwot
ICAgICAgICAgICAgICAgIH0pLCA1MDApOwotICAgICAgICAgICAgfSkpOwotICAgICAgICB9LAot
ICAgIH0pOwotCi0gICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gICAgcmVhZGVy
LnJlYWQoKS50aGVuKHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAgIHJlYWRD
YWxsZWQgPSB0cnVlOwotICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAn
YScsIGRvbmU6IGZhbHNlIH0sICd2YWx1ZSByZWFkIHNob3VsZCBiZSB0aGUgb25lIGVucXVldWVk
Jyk7Ci0gICAgfSkpOwotCi0gICAgcmVhZGVyLmNsb3NlZC50aGVuKHRlc3QyLnN0ZXBfZnVuYyhm
dW5jdGlvbigpIHsKLSAgICAgICAgYXNzZXJ0X3RydWUocmVhZENhbGxlZCk7Ci0gICAgICAgIHRl
c3QyLmRvbmUoJ3N0cmVhbSBzaG91bGQgY2xvc2Ugc3VjY2Vzc2Z1bGx5Jyk7Ci0gICAgfSkpOwot
fSk7Ci0KLXZhciB0ZXN0MyA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3Vs
ZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCcpOwotdGVzdDMuc3Rl
cChmdW5jdGlvbigpCi17Ci0gICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdyZWplY3RlZCEn
KTsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UodGVzdDMuc3RlcF9mdW5j
KGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
dGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICByZWplY3Qo
dGhlRXJyb3IpOwotICAgICAgICAgICAgICAgIH0pLCA1MDApOwotICAgICAgICAgICAgfSkpOwot
ICAgICAgICB9LAotICAgIH0pOwotCi0gICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLmNhdGNoKHRl
c3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoZSwgdGhl
RXJyb3IsICdwcm9taXNlIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHRoZSBzYW1lIGVycm9yJyk7
Ci0gICAgICAgIHRlc3QzLmRvbmUoKTsKLSAgICB9KSk7Ci19KTsKLQotdmFyIHRlc3Q0ID0gYXN5
bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gc2hvdWxkIGJlIGFibGUgdG8gZW5xdWV1ZSBkaWZmZXJl
bnQgb2JqZWN0cy4nKTsKLXRlc3Q0LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHJlYWRDYWxs
cyA9IDA7Ci0gICAgdmFyIG9iamVjdHMgPSBbCi0gICAgeyBwb3RhdG86ICdHaXZlIG1lIG1vcmUh
J30sCi0gICAgJ3Rlc3QnLAotICAgIDEKLSAgICBdOwotCi0gICAgdmFyIHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGZv
ciAodmFyIG8gb2Ygb2JqZWN0cykgewotICAgICAgICAgICAgICAgIGMuZW5xdWV1ZShvKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGMuY2xvc2UoKTsKLSAgICAgICAgfQotICAgIH0pOwot
Ci0gICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gICAgcmVhZGVyLnJlYWQoKS50
aGVuKHRlc3Q0LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAgIGFzc2VydF9vYmplY3Rf
ZXF1YWxzKHIsIHsgdmFsdWU6IG9iamVjdHNbcmVhZENhbGxzKytdLCBkb25lOiBmYWxzZSB9LCAn
dmFsdWUgcmVhZCBzaG91bGQgYmUgdGhlIG9uZSBlbnF1ZXVlZCcpOwotICAgIH0pKTsKLQotICAg
IHJlYWRlci5yZWFkKCkudGhlbih0ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgewotICAgICAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiBvYmplY3RzW3JlYWRDYWxscysrXSwg
ZG9uZTogZmFsc2UgfSwgJ3ZhbHVlIHJlYWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQnKTsK
LSAgICB9KSk7Ci0KLSAgICByZWFkZXIucmVhZCgpLnRoZW4odGVzdDQuc3RlcF9mdW5jKGZ1bmN0
aW9uKHIpIHsKLSAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogb2JqZWN0
c1tyZWFkQ2FsbHMrK10sIGRvbmU6IGZhbHNlIH0sICd2YWx1ZSByZWFkIHNob3VsZCBiZSB0aGUg
b25lIGVucXVldWVkJyk7Ci0gICAgfSkpOwotCi0gICAgcmVhZGVyLmNsb3NlZC50aGVuKHRlc3Q0
LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhyZWFkQ2FsbHMs
IDMpOwotICAgICAgICB0ZXN0NC5kb25lKCdzdHJlYW0gc2hvdWxkIGNsb3NlIGNvcnJlY3RseSBj
b3JyZWN0bHknKTsKLSAgICB9KSk7Ci19KTsKLQotdmFyIHRlc3Q1ID0gYXN5bmNfdGVzdCgnUmVh
ZGFibGVTdHJlYW06IGlmIHB1bGwgcmVqZWN0cywgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0n
KTsKLXRlc3Q1LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdw
dWxsIGZhaWx1cmUnKTsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAg
ICBwdWxsOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChl
cnJvcik7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFk
ZXIoKTsKLQotICAgIHZhciBjbG9zZWQgPSBmYWxzZTsKLSAgICB2YXIgcmVhZCA9IGZhbHNlOwot
Ci0gICAgcmVhZGVyLmNsb3NlZC5jYXRjaCh0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewot
ICAgICAgICBjbG9zZWQgPSB0cnVlOwotICAgICAgICBhc3NlcnRfdHJ1ZShyZWFkKTsKLSAgICAg
ICAgYXNzZXJ0X2VxdWFscyhlLCBlcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhl
IHRocm93biBlcnJvcicpOwotICAgICAgICB0ZXN0NS5kb25lKCk7Ci0gICAgfSkpOwotCi0gICAg
cmVhZGVyLnJlYWQoKS5jYXRjaCh0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAg
ICByZWFkID0gdHJ1ZTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKGNsb3NlZCk7Ci0gICAgICAgIGFz
c2VydF9lcXVhbHMoZSwgZXJyb3IsICdyZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSB0aHJv
d24gZXJyb3InKTsKLSAgICB9KSk7Ci19KTsKLQotdmFyIHRlc3Q2ID0gYXN5bmNfdGVzdCgnUmVh
ZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIHVwb24gc3RhcnRpbmcgdGhl
IHN0cmVhbScpOwotdGVzdDYuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgcHVsbENvdW50ID0g
MDsKLSAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0gICAgdmFyIHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKLSAgICAgICAgfSwKLSAgICAgICAgcHVsbDog
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBwdWxsQ291bnQrKzsKLSAgICAgICAgfQotICAgIH0p
OwotCi0gICAgc3RhcnRQcm9taXNlLnRoZW4odGVzdDYuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewot
ICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxl
ZCBvbmNlIHN0YXJ0IGZpbmlzaGVzJyk7Ci0KLSAgICAgICAgc2V0VGltZW91dCh0ZXN0Ni5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwg
MSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IG9uY2UnKTsKLSAgICAgICAgICAgIHRl
c3Q2LmRvbmUoKTsKLSAgICAgICAgfSksIDEwMDApOwotICAgIH0pKTsKLQotfSk7Ci0KLXZhciB0
ZXN0NyA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIHdoZW4g
dHJ5aW5nIHRvIHJlYWQgZnJvbSBhIHN0YXJ0ZWQsIGVtcHR5IHN0cmVhbScpOwotdGVzdDcuc3Rl
cChmdW5jdGlvbigpIHsKLSAgICB2YXIgcHVsbENvdW50ID0gMDsKLSAgICB2YXIgc3RhcnRQcm9t
aXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJuIHN0YXJ0
UHJvbWlzZTsKLSAgICAgICAgfSwKLSAgICAgICAgcHVsbDogZnVuY3Rpb24oYykgewotICAgICAg
ICAgICAgLy8gRG9uJ3QgZW5xdWV1ZSBpbW1lZGlhdGVseSBhZnRlciBzdGFydC4gV2Ugd2FudCB0
aGUgc3RyZWFtIHRvIGJlIGVtcHR5IHdoZW4gd2UgY2FsbCAucmVhZCgpIG9uIGl0LgotICAgICAg
ICAgICAgaWYgKHB1bGxDb3VudCA+IDApIHsKLSAgICAgICAgICAgICAgICBjLmVucXVldWUocHVs
bENvdW50KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgKytwdWxsQ291bnQ7Ci0gICAg
ICAgIH0KLSAgICB9KTsKLQotICAgIHN0YXJ0UHJvbWlzZS50aGVuKHRlc3Q3LnN0ZXBfZnVuYyhm
dW5jdGlvbigpIHsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNo
b3VsZCBiZSBjYWxsZWQgb25jZSBzdGFydCBmaW5pc2hlcycpOwotCi0gICAgICAgIHZhciByZWFk
ZXIgPSBycy5nZXRSZWFkZXIoKTsKLSAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbih0
ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBhZ2FpbiBpbiByZWFjdGlv
biB0byBjYWxsaW5nIHJlYWQnKTsKLSAgICAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJl
c3VsdCwgeyB2YWx1ZTogMSwgZG9uZTogZmFsc2UgfSwgJ3RoZSByZXN1bHQgcmVhZCBzaG91bGQg
YmUgdGhlIG9uZSBlbnF1ZXVlZCcpOwotICAgICAgICAgICAgdGVzdDcuZG9uZSgpOwotICAgICAg
ICB9KSk7Ci0gICAgfSkpLmNhdGNoKHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2Vy
dF91bnJlYWNoZWQoZSk7IH0pKTsKLX0pOwotCi12YXIgdGVzdDggPSBhc3luY190ZXN0KCdSZWFk
YWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ugb24gYSBub24tZW1wdHkgc3Ry
ZWFtIHJlYWQgZnJvbSBiZWZvcmUgc3RhcnQgZnVsZmlsbHMnKTsKLXRlc3Q4LnN0ZXAoZnVuY3Rp
b24oKSB7Ci0gICAgdmFyIHB1bGxDb3VudCA9IDA7Ci0gICAgdmFyIHN0YXJ0UHJvbWlzZSA9IFBy
b21pc2UucmVzb2x2ZSgpOwotICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAg
ICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBjLmVucXVldWUoJ2EnKTsKLSAg
ICAgICAgICAgIHJldHVybiBzdGFydFByb21pc2U7Ci0gICAgICAgIH0sCi0gICAgICAgIHB1bGw6
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcHVsbENvdW50Kys7Ci0gICAgICAgIH0KLSAgICB9
KTsKLQotICAgIHN0YXJ0UHJvbWlzZS50aGVuKHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsK
LSAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBiZSBjYWxs
ZWQgb25jZSBzdGFydCBmaW5pc2hlcycpOwotICAgIH0pKTsKLQotICAgIHJzLmdldFJlYWRlcigp
LnJlYWQoKS50aGVuKHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAgIGFzc2Vy
dF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IHJl
YWQoKSBzaG91bGQgcmV0dXJuIGZpcnN0IGNodW5rJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMo
cHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYWdhaW4nKTsK
LQotICAgICAgICBzZXRUaW1lb3V0KHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVk
IGV4YWN0bHkgb25jZScpOwotICAgICAgICAgICAgdGVzdDguZG9uZSgpOwotICAgICAgICB9KSwg
MTAwMCk7Ci0gICAgfSkpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAsICdjYWxs
aW5nIHJlYWQoKSBzaG91bGQgbm90IGNhdXNlIHB1bGwgdG8gYmUgY2FsbGVkIHlldCcpOwotfSk7
Ci0KLXZhciB0ZXN0OSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBj
YWxsIHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGFmdGVyIHN0YXJ0
IGZ1bGZpbGxzJyk7Ci10ZXN0OS5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciBwdWxsQ291bnQg
PSAwOwotICAgIHZhciBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKLSAgICB2YXIg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewot
ICAgICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICAgICAgICByZXR1cm4gc3RhcnRQcm9t
aXNlOwotICAgICAgICB9LAotICAgICAgICBwdWxsOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
IHB1bGxDb3VudCsrOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBzdGFydFByb21pc2UudGhl
bih0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocHVs
bENvdW50LCAwLCAncHVsbCBzaG91bGQgbm90IGJlIGNhbGxlZCBvbmNlIHN0YXJ0IGZpbmlzaGVz
LCBzaW5jZSB0aGUgcXVldWUgaXMgZnVsbCcpOwotCi0gICAgICAgIHJzLmdldFJlYWRlcigpLnJl
YWQoKS50aGVuKHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAgICAgICBhc3Nl
cnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCBy
ZWFkKCkgc2hvdWxkIHJldHVybiBmaXJzdCBjaHVuaycpOwotCi0gICAgICAgICAgICBzZXRUaW1l
b3V0KHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IG9uY2Un
KTsKLSAgICAgICAgICAgICAgICB0ZXN0OS5kb25lKCk7Ci0gICAgICAgICAgICB9KSwgMTAwMCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgfSkpOwot
Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAnY2FsbGluZyByZWFkKCkgc2hv
dWxkIG5vdCBjYXVzZSBwdWxsIHRvIGJlIGNhbGxlZCBpbW1lZGlhdGVseScpOwotICAgIH0pKTsK
LX0pOwotCi12YXIgdGVzdDEwID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBj
YWxsIHB1bGwgaW4gcmVhY3Rpb24gdG8gcmVhZCgpaW5nIHRoZSBsYXN0IGNodW5rLCBpZiBub3Qg
ZHJhaW5pbmcnKTsKLXRlc3QxMC5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciBwdWxsQ291bnQg
PSAwOwotICAgIHZhciBjb250cm9sbGVyOwotICAgIHZhciBzdGFydFByb21pc2UgPSBQcm9taXNl
LnJlc29sdmUoKTsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBz
dGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgICAg
ICAgICByZXR1cm4gc3RhcnRQcm9taXNlOwotICAgICAgICB9LAotICAgICAgICBwdWxsOiBmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICsrcHVsbENvdW50OwotICAgICAgICB9Ci0gICAgfSk7Ci0K
LSAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgICBzdGFydFByb21pc2UudGhl
bih0ZXN0MTAuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICBhc3NlcnRfZXF1YWxzKHB1
bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZSBieSB0aGUgdGlt
ZSB0aGUgc3RyZWFtIHN0YXJ0cycpOwotCi0gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScp
OwotICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIG5vdCBo
YXZlIGJlZW4gY2FsbGVkIGFnYWluIGFmdGVyIGVucXVldWUnKTsKLQotICAgICAgICByZXR1cm4g
cmVhZGVyLnJlYWQoKS50aGVuKHRlc3QxMC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxkIGhhdmUgYmVlbiBj
YWxsZWQgYWdhaW4gYWZ0ZXIgcmVhZCcpOwotCi0gICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3Qx
MC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhw
dWxsQ291bnQsIDIsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgZXhhY3RseSB0d2ljZScpOwotICAg
ICAgICAgICAgICAgIHRlc3QxMC5kb25lKCk7Ci0gICAgICAgICAgICB9KSwgNTAwKTsKLSAgICAg
ICAgfSkpOwotICAgIH0pKS5jYXRjaCh0ZXN0MTAuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNz
ZXJ0X3VucmVhY2hlZChlKTsgfSkpOwotfSk7Ci0KLXZhciB0ZXN0MTEgPSBhc3luY190ZXN0KCdS
ZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwoKSBpbiByZWFjdGlvbiB0byByZWFk
KClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIGRyYWluaW5nJyk7Ci10ZXN0MTEuc3RlcChmdW5jdGlv
bigpIHsKLSAgICB2YXIgcHVsbENvdW50ID0gMDsKLSAgICB2YXIgY29udHJvbGxlcjsKLSAgICB2
YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0gICAgdmFyIHB1bGxQcm9taXNl
ID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
LSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBj
OwotICAgICAgICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKLSAgICAgICAgfSwKLSAgICAgICAg
cHVsbDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICArK3B1bGxDb3VudDsKLSAgICAgICAgICAg
IHJldHVybiBwdWxsUHJvbWlzZTsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgdmFyIHJlYWRl
ciA9IHJzLmdldFJlYWRlcigpOwotCi0gICAgc3RhcnRQcm9taXNlLnRoZW4odGVzdDExLnN0ZXBf
ZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdw
dWxsIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UgYnkgdGhlIHRpbWUgdGhlIHN0cmVhbSBz
dGFydHMnKTsKLQotICAgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKLSAgICAgICAgYXNz
ZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxl
ZCBhZ2FpbiBhZnRlciBlbnF1ZXVlJyk7Ci0KLSAgICAgICAgY29udHJvbGxlci5jbG9zZSgpOwot
Ci0gICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4odGVzdDExLnN0ZXBfZnVuYyhmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBz
aG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYSBzZWNvbmQgdGltZSBhZnRlciByZWFkJyk7Ci0K
LSAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdDExLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJl
IGNhbGxlZCBleGFjdGx5IG9uY2UnKTsKLSAgICAgICAgICAgICAgICB0ZXN0MTEuZG9uZSgpOwot
ICAgICAgICAgICAgfSksIDEwMDApOwotICAgICAgICB9KSk7Ci0gICAgfSkpLmNhdGNoKHRlc3Qx
MS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9KSk7Ci19KTsK
LQotdmFyIHRlc3QxMiA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNh
bGwgcHVsbCB1bnRpbCB0aGUgcHJldmlvdXMgcHVsbCBjYWxsXCdzIHByb21pc2UgZnVsZmlsbHMn
KTsKLXRlc3QxMi5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciByZXNvbHZlOwotICAgIHZhciBy
ZXR1cm5lZFByb21pc2U7Ci0gICAgdmFyIHRpbWVzQ2FsbGVkID0gMDsKLSAgICB2YXIgc3RhcnRQ
cm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJuIHN0
YXJ0UHJvbWlzZTsKLSAgICAgICAgfSwKLSAgICAgICAgcHVsbDogZnVuY3Rpb24oYykgewotICAg
ICAgICAgICAgYy5lbnF1ZXVlKCsrdGltZXNDYWxsZWQpOwotICAgICAgICAgICAgcmV0dXJuZWRQ
cm9taXNlID0gbmV3IFByb21pc2UodGVzdDEyLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7IHJlc29s
dmUgPSByOyB9KSk7Ci0gICAgICAgICAgICByZXR1cm4gcmV0dXJuZWRQcm9taXNlOwotICAgICAg
ICB9Ci0gICAgfSk7Ci0gICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gICAgc3Rh
cnRQcm9taXNlLnRoZW4odGVzdDEyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0
dXJuIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdDEp
IHsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHModGltZXNDYWxsZWQsIDEsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICdwdWxsIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UgYWZ0ZXIg
c3RhcnQsIGJ1dCBub3QgeWV0IGhhdmUgYmVlbiBjYWxsZWQgYSBzZWNvbmQgdGltZScpOwotICAg
ICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MSwgeyB2YWx1ZTogMSwgZG9uZTog
ZmFsc2UgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHRoZSBlbnF1ZXVlZCB2YWx1ZScp
OwotCi0gICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3QxMi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgMSwgJ2FmdGVyIDMw
IG1zLCBwdWxsIHNob3VsZCBzdGlsbCBvbmx5IGhhdmUgYmVlbiBjYWxsZWQgb25jZScpOwotCi0g
ICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuZWRQcm9t
aXNlLnRoZW4odGVzdDEyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgMiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnYWZ0ZXIgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgcHVsbCBpcyBmdWxmaWxs
ZWQsIHB1bGwgc2hvdWxkIGJlIGNhbGxlZCBhIHNlY29uZCB0aW1lJyk7Ci0gICAgICAgICAgICAg
ICAgICAgIHRlc3QxMi5kb25lKCk7Ci0gICAgICAgICAgICAgICAgfSkpOwotICAgICAgICAgICAg
fSksIDUwMCk7Ci0gICAgICAgIH0pKTsKLSAgICB9KSkuY2F0Y2godGVzdDEyLnN0ZXBfZnVuYyhm
dW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0pKTsKLX0pOwotCi12YXIgdGVzdDEz
ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBwdWxsIGFmdGVyIHN0YXJ0LCBh
bmQgYWZ0ZXIgZXZlcnkgcmVhZCcpOwotdGVzdDEzLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFy
IHRpbWVzQ2FsbGVkID0gMDsKLSAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZl
KCk7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1
bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAgICAgICAgYy5l
bnF1ZXVlKCdiJyk7Ci0gICAgICAgICAgICBjLmVucXVldWUoJ2MnKTsKLSAgICAgICAgICAgIHJl
dHVybiBzdGFydFByb21pc2U7Ci0gICAgICAgIH0sCi0gICAgICAgIHB1bGwoKSB7Ci0gICAgICAg
ICAgICArK3RpbWVzQ2FsbGVkOwotICAgICAgICB9Ci0gICAgfSwKLSAgICB7Ci0gICAgICAgIHNp
emU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIH0sCi0gICAg
ICAgIGhpZ2hXYXRlck1hcms6IEluZmluaXR5Ci0gICAgfSk7Ci0gICAgdmFyIHJlYWRlciA9IHJz
LmdldFJlYWRlcigpOwotCi0gICAgc3RhcnRQcm9taXNlLnRoZW4odGVzdDEzLnN0ZXBfZnVuYyhm
dW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MTMuc3Rl
cF9mdW5jKGZ1bmN0aW9uKHJlc3VsdDEpIHsKLSAgICAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1
YWxzKHJlc3VsdDEsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IGNodW5rIHNo
b3VsZCBiZSBhcyBleHBlY3RlZCcpOwotCi0gICAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQo
KS50aGVuKHRlc3QxMy5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0MikgewotICAgICAgICAgICAg
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDIsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFs
c2UgfSwgJ3NlY29uZCBjaHVuayBzaG91bGQgYmUgYXMgZXhwZWN0ZWQnKTsKLQotICAgICAgICAg
ICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4odGVzdDEzLnN0ZXBfZnVuYyhmdW5jdGlv
bihyZXN1bHQzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJl
c3VsdDMsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFsc2UgfSwgJ3RoaXJkIGNodW5rIHNob3VsZCBi
ZSBhcyBleHBlY3RlZCcpOwotCi0gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdDEz
LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9uY2Ug
Zm9yIGFmdGVyIHN0YXJ0LCBhbmQgb25jZSBmb3IgZXZlcnkgcmVhZC4KLSAgICAgICAgICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHModGltZXNDYWxsZWQsIDQsICdwdWxsKCkgc2hvdWxkIGJl
IGNhbGxlZCBleGFjdGx5IGZvdXIgdGltZXMnKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3QxMy5kb25lKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pLCAxMDAwKTsKLSAgICAgICAgICAg
ICAgICB9KSk7Ci0gICAgICAgICAgICB9KSk7Ci0gICAgICAgIH0pKTsKLSAgICB9KSkuY2F0Y2go
dGVzdDEzLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0pKTsK
LX0pOwotCi12YXIgdGVzdDE0ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBu
b3QgY2FsbCBwdWxsIGFmdGVyIHN0YXJ0IGlmIHRoZSBzdHJlYW0gaXMgbm93IGNsb3NlZCcpOwot
dGVzdDE0LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHRpbWVzQ2FsbGVkID0gMDsKLSAgICB2
YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0gICAgdmFyIHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAg
IGMuZW5xdWV1ZSgnYScpOwotICAgICAgICAgICAgYy5jbG9zZSgpOwotICAgICAgICAgICAgcmV0
dXJuIHN0YXJ0UHJvbWlzZTsKLSAgICAgICAgfSwKLSAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICArK3RpbWVzQ2FsbGVkOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBz
dGFydFByb21pc2UudGhlbih0ZXN0MTQuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICBh
c3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCAwLCAnYWZ0ZXIgc3RhcnQgZmluaXNoZXMsIHB1bGwg
c2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkJyk7Ci0KLSAgICAgICAgdmFyIHJlYWRlciA9IHJz
LmdldFJlYWRlcigpOwotICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHRlc3QxNC5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2Fs
bGVkLCAwLCAncmVhZGluZyBzaG91bGQgbm90IGhhdmUgdHJpZ2dlcmVkIGEgcHVsbCBjYWxsJyk7
Ci0KLSAgICAgICAgICAgIHJldHVybiByZWFkZXIuY2xvc2VkLnRoZW4odGVzdDE0LnN0ZXBfZnVu
YyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVk
LCAwLCAnc3RyZWFtIHNob3VsZCBoYXZlIGNsb3NlZCB3aXRoIHN0aWxsIG5vIGNhbGxzIHRvIHB1
bGwnKTsKLSAgICAgICAgICAgICAgICB0ZXN0MTQuZG9uZSgpOwotICAgICAgICAgICAgfSkpOwot
ICAgICAgICB9KSk7Ci0gICAgfSkpLmNhdGNoKHRlc3QxNC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkg
eyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9KSk7Ci19KTsKLQotdmFyIHRlc3QxNSA9IGFzeW5jX3Rl
c3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIGFmdGVyIGVucXVldWVpbmcgZnJv
bSBpbnNpZGUgcHVsbCAod2l0aCBubyByZWFkIHJlcXVlc3RzKSwgaWYgc3RyYXRlZ3kgYWxsb3dz
Jyk7Ci10ZXN0MTUuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgdGltZXNDYWxsZWQgPSAwOwot
ICAgIHZhciBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKLSAgICB2YXIgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gc3RhcnRQcm9taXNlOwotICAgICAgICB9LAotICAgICAgICBwdWxsOiBmdW5j
dGlvbihjKSB7Ci0gICAgICAgICAgICBjLmVucXVldWUoKyt0aW1lc0NhbGxlZCk7Ci0KLSAgICAg
ICAgICAgIGlmICh0aW1lc0NhbGxlZCA9PSA0KSB7Ci0gICAgICAgICAgICAgICAgc2V0VGltZW91
dCh0ZXN0MTUuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAvLyBh
ZnRlciBzdGFydDogc2l6ZSA9IDAsIHB1bGwoKQotICAgICAgICAgICAgICAgICAgICAvLyBhZnRl
ciBlbnF1ZXVlKDEpOiBzaXplID0gMSwgcHVsbCgpCi0gICAgICAgICAgICAgICAgICAgIC8vIGFm
dGVyIGVucXVldWUoMik6IHNpemUgPSAyLCBwdWxsKCkKLSAgICAgICAgICAgICAgICAgICAgLy8g
YWZ0ZXIgZW5xdWV1ZSgzKTogc2l6ZSA9IDMsIHB1bGwoKQotICAgICAgICAgICAgICAgICAgICAv
LyBhZnRlciBlbnF1ZXVlKDQpOiBzaXplID0gNCwgZG8gbm90IHB1bGwKLSAgICAgICAgICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgNCwgJ3B1bGwoKSBzaG91bGQgaGF2ZSBi
ZWVuIGNhbGxlZCBmb3VyIHRpbWVzJyk7Ci0gICAgICAgICAgICAgICAgICAgIHRlc3QxNS5kb25l
KCk7Ci0gICAgICAgICAgICAgICAgfSksIDEwMDApOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfSwKLSAgICB7Ci0gICAgICAgIHNpemU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
cmV0dXJuIDE7Ci0gICAgICAgIH0sCi0gICAgICAgIGhpZ2hXYXRlck1hcms6IDQKLSAgICB9KTsK
LX0pOwotCi12YXIgdGVzdDE2ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gcHVsbCBzaG91
bGQgYmUgYWJsZSB0byBjbG9zZSBhIHN0cmVhbS4nKTsKLXRlc3QxNi5zdGVwKGZ1bmN0aW9uKCkg
ewotICAgIHZhciBwdWxsQ2FsbGVkID0gZmFsc2U7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKLSAgICAgICAgcHVsbDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgcHVsbENh
bGxlZCA9IHRydWU7Ci0gICAgICAgICAgICBjLmNsb3NlKCk7Ci0gICAgICAgIH0KLSAgICB9KTsK
LQotICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLSAgICByZWFkZXIuY2xvc2VkLnRo
ZW4odGVzdDE2LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgYXNzZXJ0X3RydWUocHVs
bENhbGxlZCk7Ci0gICAgICAgIHRlc3QxNi5kb25lKCdzdHJlYW0gd2FzIGNsb3NlZCBzdWNjZXNz
ZnVsbHknKTsKLSAgICB9KSk7Ci19KTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICB2YXIgc3Rh
cnRDYWxsZWQgPSBmYWxzZTsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAg
ICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjLmVu
cXVldWUoJ2EnKSwgdW5kZWZpbmVkLCAndGhlIGZpcnN0IGVucXVldWUgc2hvdWxkIHJldHVybiB1
bmRlZmluZWQnKTsKLSAgICAgICAgICAgIGMuY2xvc2UoKTsKLQotICAgICAgICAgICAgYXNzZXJ0
X3Rocm93cyhuZXcgVHlwZUVycm9yKCcnKSwgZnVuY3Rpb24oKSB7IGMuZW5xdWV1ZSgnYicpOyB9
LCAnZW5xdWV1ZSBhZnRlciBjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKLSAgICAg
ICAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0pOwotICAgIGFzc2Vy
dF90cnVlKHN0YXJ0Q2FsbGVkKTsKLX0sICdSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQg
dGhyb3cgd2hlbiB0aGUgc3RyZWFtIGlzIHJlYWRhYmxlIGJ1dCBkcmFpbmluZycpOwotCi10ZXN0
KGZ1bmN0aW9uKCkgewotICAgIHZhciBzdGFydENhbGxlZCA9IGZhbHNlOwotICAgIHZhciBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAg
ICAgICAgICBjLmNsb3NlKCk7Ci0KLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVF
cnJvcigpLCBmdW5jdGlvbigpIHsgYy5lbnF1ZXVlKCdhJyk7IH0sICdlbnF1ZXVlIGFmdGVyIGNs
b3NlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwotICAgICAgICAgICAgc3RhcnRDYWxsZWQg
PSB0cnVlOwotICAgICAgICB9Ci0gICAgfSk7Ci0gICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQp
OwotfSwgJ1JlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJl
YW0gaXMgY2xvc2VkJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHN0YXJ0Q2FsbGVk
ID0gZmFsc2U7Ci0gICAgdmFyIGV4cGVjdGVkRXJyb3IgPSBuZXcgRXJyb3IoJ2kgYW0gc2FkJyk7
Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0
aW9uKGMpIHsKLSAgICAgICAgICAgIGMuZXJyb3IoZXhwZWN0ZWRFcnJvcik7Ci0KLSAgICAgICAg
ICAgIGFzc2VydF90aHJvd3MoZXhwZWN0ZWRFcnJvciwgZnVuY3Rpb24oKSB7IGMuZW5xdWV1ZSgn
YScpOyB9LCAnZW5xdWV1ZSBhZnRlciBlcnJvciBzaG91bGQgdGhyb3cgdGhhdCBlcnJvcicpOwot
ICAgICAgICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfSk7Ci0gICAg
YXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwotfSwgJ1JlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNo
b3VsZCB0aHJvdyB0aGUgc3RvcmVkIGVycm9yIHdoZW4gdGhlIHN0cmVhbSBpcyBlcnJvcmVkJyk7
Ci0KLXZhciB0ZXN0MTcgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwg
dW5kZXJseWluZyBzb3VyY2UgbWV0aG9kcyBhcyBtZXRob2RzJyk7Ci10ZXN0MTcuc3RlcChmdW5j
dGlvbigpIHsKLSAgICB2YXIgc3RhcnRDYWxsZWQgPSAwOwotICAgIHZhciBwdWxsQ2FsbGVkID0g
MDsKLSAgICB2YXIgY2FuY2VsQ2FsbGVkID0gMDsKLQotICAgIGZ1bmN0aW9uIFNvdXJjZSgpIHsK
LSAgICB9Ci0KLSAgICBTb3VyY2UucHJvdG90eXBlID0gewotICAgICAgICBzdGFydDogZnVuY3Rp
b24oYykgewotICAgICAgICAgICAgc3RhcnRDYWxsZWQrKzsKLSAgICAgICAgICAgIGFzc2VydF9l
cXVhbHModGhpcywgdGhlU291cmNlLCAnc3RhcnQoKSBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhl
IGNvcnJlY3QgdGhpcycpOwotICAgICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICAgIH0s
Ci0KLSAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBwdWxsQ2FsbGVkKys7
Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHRoaXMsIHRoZVNvdXJjZSwgJ3B1bGwoKSBzaG91
bGQgYmUgY2FsbGVkIHdpdGggdGhlIGNvcnJlY3QgdGhpcycpOwotICAgICAgICB9LAotCi0gICAg
ICAgIGNhbmNlbDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBjYW5jZWxDYWxsZWQrKzsKLSAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHModGhpcywgdGhlU291cmNlLCAnY2FuY2VsKCkgc2hvdWxk
IGJlIGNhbGxlZCB3aXRoIHRoZSBjb3JyZWN0IHRoaXMnKTsKLSAgICAgICAgfSwKLSAgICB9Owot
Ci0gICAgdmFyIHRoZVNvdXJjZSA9IG5ldyBTb3VyY2UoKTsKLSAgICB0aGVTb3VyY2UuZGVidWdO
YW1lID0gJ3RoZSBzb3VyY2Ugb2JqZWN0IHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3InOyAvLyBt
YWtlcyB0ZXN0IGZhaWx1cmVzIGVhc2llciB0byBkaWFnbm9zZQotICAgIHZhciBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh0aGVTb3VyY2UpOwotCi0gICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRl
cigpOwotICAgIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MTcuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
ewotICAgICAgICByZWFkZXIucmVsZWFzZUxvY2soKTsKLSAgICAgICAgcnMuY2FuY2VsKCk7Ci0g
ICAgICAgIGFzc2VydF9lcXVhbHMoc3RhcnRDYWxsZWQsIDEpOwotICAgICAgICBhc3NlcnRfZXF1
YWxzKHB1bGxDYWxsZWQsIDEpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGNhbmNlbENhbGxlZCwg
MSk7Ci0gICAgICAgIHRlc3QxNy5kb25lKCk7Ci0gICAgfSkpLmNhdGNoKHRlc3QxNy5zdGVwX2Z1
bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9ICkpOwotfSk7Ci0KLXRlc3Qo
ZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHN0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0gICAgbmV3IFJlYWRh
YmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgMSk7Ci0gICAgICAgICAgICBjLmVucXVldWUoJ2En
KTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgMCk7Ci0gICAgICAg
ICAgICBjLmVucXVldWUoJ2InKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVk
U2l6ZSwgLTEpOwotICAgICAgICAgICAgYy5lbnF1ZXVlKCdjJyk7Ci0gICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKGMuZGVzaXJlZFNpemUsIC0yKTsKLSAgICAgICAgICAgIGMuZW5xdWV1ZSgnZCcp
OwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAtMyk7Ci0gICAgICAg
ICAgICBjLmVucXVldWUoJ2UnKTsKLSAgICAgICAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAg
ICAgICAgfQotICAgIH0pOwotICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKLX0sICdSZWFk
YWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgZ2l2ZSBk
ZXNpcmVkU2l6ZSBvZiAxIHRvIHN0YXJ0LCBkZWNyZWFzaW5nIGJ5IDEgcGVyIGVucXVldWUnKTsK
LQotdmFyIHRlc3QxOCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHN0cmF0ZWdpZXM6IHRo
ZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCBjb250aW51ZSBnaXZpbmcgZGVzaXJlZFNpemUgb2Yg
MSBpZiB0aGUgY2h1bmtzIGFyZSByZWFkIGltbWVkaWF0ZWx5Jyk7Ci10ZXN0MTguc3RlcChmdW5j
dGlvbigpIHsKLSAgICB2YXIgY29udHJvbGxlcjsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgY29udHJv
bGxlciA9IGM7Ci0gICAgICAgIH0KLSAgICB9KTsKLSAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVh
ZGVyKCk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICdk
ZXNpcmVkU2l6ZSBzaG91bGQgc3RhcnQgYXQgMScpOwotICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgn
YScpOwotICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJ2Rlc2ly
ZWRTaXplIHNob3VsZCBkZWNyZWFzZSB0byAwIGFmdGVyIGZpcnN0IGVucXVldWUnKTsKLQotICAg
IHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MTguc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdDEpIHsK
LSAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MSwgeyB2YWx1ZTogJ2EnLCBkb25l
OiBmYWxzZSB9LCAnZmlyc3QgY2h1bmsgcmVhZCBzaG91bGQgYmUgY29ycmVjdCcpOwotCi0gICAg
ICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXpl
IHNob3VsZCBnbyB1cCB0byAxIGFmdGVyIHRoZSBmaXJzdCByZWFkJyk7Ci0gICAgICAgIGNvbnRy
b2xsZXIuZW5xdWV1ZSgnYicpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVz
aXJlZFNpemUsIDAsICdkZXNpcmVkU2l6ZSBzaG91bGQgZ28gZG93biB0byAwIGFmdGVyIHRoZSBz
ZWNvbmQgZW5xdWV1ZScpOwotCi0gICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICAgIH0p
KS50aGVuKHRlc3QxOC5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0MikgewotICAgICAgICAgICAg
YXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MiwgeyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9
LCAnc2Vjb25kIGNodW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLQotICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUgc2hv
dWxkIGdvIHVwIHRvIDEgYWZ0ZXIgdGhlIHNlY29uZCByZWFkJyk7Ci0gICAgICAgICAgICBjb250
cm9sbGVyLmVucXVldWUoJ2MnKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxl
ci5kZXNpcmVkU2l6ZSwgMCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBnbyBkb3duIHRvIDAgYWZ0ZXIg
dGhlIHRoaXJkIGVucXVldWUnKTsKLQotICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7
Ci0gICAgfSkpLnRoZW4odGVzdDE4LnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQzKSB7Ci0gICAg
ICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQzLCB7IHZhbHVlOiAnYycsIGRvbmU6
IGZhbHNlIH0sICd0aGlyZCBjaHVuayByZWFkIHNob3VsZCBiZSBjb3JyZWN0Jyk7Ci0KLSAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRT
aXplIHNob3VsZCBnbyB1cCB0byAxIGFmdGVyIHRoZSB0aGlyZCByZWFkJyk7Ci0gICAgICAgICAg
ICBjb250cm9sbGVyLmVucXVldWUoJ2QnKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoY29u
dHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBnbyBkb3duIHRvIDAg
YWZ0ZXIgdGhlIGZvdXJ0aCBlbnF1ZXVlJyk7Ci0KLSAgICAgICAgICAgIHRlc3QxOC5kb25lKCk7
Ci0gICAgfSkpLmNhdGNoKHRlc3QxOC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5y
ZWFjaGVkKGUpOyB9KSk7Ci19KTsKLQotdmFyIHRlc3QxOSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxl
U3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgcmFuZG9tIHB1c2ggc291cmNlJyk7
Ci10ZXN0MTkuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgcHVsbENoZWNrZWQgPSBmYWxzZTsK
LSAgICB2YXIgcmFuZG9tU291cmNlID0gbmV3IFJhbmRvbVB1c2hTb3VyY2UoOCk7Ci0KLSAgICB2
YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykg
ewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgYywgJ29iamVjdCcsICdjIHNob3Vs
ZCBiZSBhbiBvYmplY3QgaW4gc3RhcnQnKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlw
ZW9mIGMuZW5xdWV1ZSwgJ2Z1bmN0aW9uJywgJ2VucXVldWUgc2hvdWxkIGJlIGEgZnVuY3Rpb24g
aW4gc3RhcnQnKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGMuY2xvc2UsICdm
dW5jdGlvbicsICdjbG9zZSBzaG91bGQgYmUgYSBmdW5jdGlvbiBpbiBzdGFydCcpOwotICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgYy5lcnJvciwgJ2Z1bmN0aW9uJywgJ2Vycm9yIHNo
b3VsZCBiZSBhIGZ1bmN0aW9uIGluIHN0YXJ0Jyk7Ci0KLSAgICAgICAgICAgIHJhbmRvbVNvdXJj
ZS5vbmRhdGEgPSB0ZXN0MTkuc3RlcF9mdW5jKGZ1bmN0aW9uKGNodW5rKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFjLmVucXVldWUoY2h1bmspIDw9IDApIHsKLSAgICAgICAgICAgICAgICAgICAg
cmFuZG9tU291cmNlLnJlYWRTdG9wKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fSk7Ci0KLSAgICAgICAgICAgIHJhbmRvbVNvdXJjZS5vbmVuZCA9IGMuY2xvc2UuYmluZChjKTsK
LSAgICAgICAgICAgIHJhbmRvbVNvdXJjZS5vbmVycm9yID0gYy5lcnJvci5iaW5kKGMpOwotICAg
ICAgICB9LAotCi0gICAgICAgIHB1bGw6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGlmICgh
cHVsbENoZWNrZWQpIHsKLSAgICAgICAgICAgICAgICBwdWxsQ2hlY2tlZCA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgYywgJ29iamVjdCcsICdjIHNob3VsZCBi
ZSBhbiBvYmplY3QgaW4gcHVsbCcpOwotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlw
ZW9mIGMuZW5xdWV1ZSwgJ2Z1bmN0aW9uJywgJ2VucXVldWUgc2hvdWxkIGJlIGEgZnVuY3Rpb24g
aW4gcHVsbCcpOwotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGMuY2xvc2Us
ICdmdW5jdGlvbicsICdjbG9zZSBzaG91bGQgYmUgYSBmdW5jdGlvbiBpbiBwdWxsJyk7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJhbmRvbVNvdXJjZS5yZWFkU3RhcnQoKTsKLSAgICAg
ICAgfQotICAgIH0pOwotCi0gICAgcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJzKS50aGVuKHRlc3Qx
OS5zdGVwX2Z1bmMoZnVuY3Rpb24oY2h1bmtzKSB7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoY2h1
bmtzLmxlbmd0aCwgOCwgJzggY2h1bmtzIHNob3VsZCBiZSByZWFkJyk7Ci0gICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgY2h1bmtzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKGNodW5rc1tpXS5sZW5ndGgsIDEyOCwgJ2NodW5rIHNob3VsZCBoYXZlIDEyOCBieXRl
cycpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVzdDE5LmRvbmUoKTsKLSAgICB9KSwgdGVzdDE5
LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0pKTsKLX0pOwot
Ci12YXIgdGVzdDIwID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVz
dDogYWRhcHRpbmcgYSBzeW5jIHB1bGwgc291cmNlJyk7Ci10ZXN0MjAuc3RlcChmdW5jdGlvbigp
IHsKLSAgICB2YXIgcnMgPSBzZXF1ZW50aWFsUmVhZGFibGVTdHJlYW0oMTApOwotCi0gICAgcmVh
ZGFibGVTdHJlYW1Ub0FycmF5KHJzKS50aGVuKHRlc3QyMC5zdGVwX2Z1bmMoZnVuY3Rpb24oY2h1
bmtzKSB7Ci0gICAgICAgIGFzc2VydF90cnVlKHJzLnNvdXJjZS5jbG9zZWQsICdzb3VyY2Ugc2hv
dWxkIGJlIGNsb3NlZCBhZnRlciBhbGwgY2h1bmtzIGFyZSByZWFkJyk7Ci0gICAgICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdLCAn
dGhlIGV4cGVjdGVkIDEwIGNodW5rcyBzaG91bGQgYmUgcmVhZCcpOwotCi0gICAgICAgIHRlc3Qy
MC5kb25lKCk7Ci0gICAgfSkpOwotfSk7Ci0KLXZhciB0ZXN0MjEgPSBhc3luY190ZXN0KCdSZWFk
YWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhbiBhc3luYyBwdWxsIHNvdXJj
ZScpOwotdGVzdDIxLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHJzID0gc2VxdWVudGlhbFJl
YWRhYmxlU3RyZWFtKDEwLCB7IGFzeW5jOiB0cnVlIH0pOwotCi0gICAgcmVhZGFibGVTdHJlYW1U
b0FycmF5KHJzKS50aGVuKHRlc3QyMS5zdGVwX2Z1bmMoZnVuY3Rpb24oY2h1bmtzKSB7Ci0gICAg
ICAgIGFzc2VydF90cnVlKHJzLnNvdXJjZS5jbG9zZWQsICdzb3VyY2Ugc2hvdWxkIGJlIGNsb3Nl
ZCBhZnRlciBhbGwgY2h1bmtzIGFyZSByZWFkJyk7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMoY2h1bmtzLCBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdLCAndGhlIGV4cGVjdGVk
IDEwIGNodW5rcyBzaG91bGQgYmUgcmVhZCcpOwotCi0gICAgICAgIHRlc3QyMS5kb25lKCk7Ci0g
ICAgfSkpOwotfSk7Ci0KLWZ1bmN0aW9uIGdhcmJhZ2VDb2xsZWN0QW5kRG8odGFzaykKLXsKLSAg
ICB2YXIgdGltZW91dCA9IDUwOwotICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQotICAgICAg
ICB3aW5kb3cuR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKLSAgICBlbHNlIGlmICh3aW5kb3cuZ2Mp
Ci0gICAgICAgIHdpbmRvdy5nYygpOwotICAgIGVsc2UKLSAgICAgICAgdGltZW91dCA9IDQwMDsK
LSAgICBzZXRUaW1lb3V0KHRhc2ssIHRpbWVvdXQpOwotfQotCi12YXIgdGVzdDIyID0gYXN5bmNf
dGVzdCgnUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIG1ldGhvZHMgc2hvdWxkIGNvbnRpbnVlIHdv
cmtpbmcgcHJvcGVybHkgd2hlbiBzY3JpcHRzIGxvc2UgdGhlaXIgcmVmZXJlbmNlIHRvIHRoZSBy
ZWFkYWJsZSBzdHJlYW0nKTsKLXRlc3QyMi5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciBjb250
cm9sbGVyOwotICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlv
bihjKSB7Ci0gICAgICAgICAgICBjb250cm9sbGVyID0gYzsKLSAgICAgICAgfQotICAgIH0pOwot
Ci0gICAgZ2FyYmFnZUNvbGxlY3RBbmREbyh0ZXN0MjIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewot
ICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgY29udHJvbGxlci5jbG9zZSgpOyB9LCAnY2xvc2Ugc2hv
dWxkIHRocm93IGEgVHlwZUVycm9yIHRoZSBzZWNvbmQgdGltZScpOwotICAgICAgICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IGNvbnRyb2xsZXIuZXJyb3IoKTsg
fSksICdlcnJvciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3Igb24gYSBjbG9zZWQgc3RyZWFtJzsK
LSAgICAgICAgdGVzdDIyLmRvbmUoKTsKLSAgICB9KSk7Ci19KTsKLQotdmFyIHRlc3QyMyA9IGFz
eW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGNsb3NlZCBwcm9taXNlIHNob3VsZCBmdWxmaWxsIGV2
ZW4gaWYgdGhlIHN0cmVhbSBhbmQgcmVhZGVyIEpTIHJlZmVyZW5jZXMgYXJlIGxvc3QnKTsKLXRl
c3QyMy5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciBjb250cm9sbGVyOwotICAgIG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBj
b250cm9sbGVyID0gYzsKLSAgICAgICAgfQotICAgIH0pLmdldFJlYWRlcigpLmNsb3NlZC50aGVu
KHRlc3QyMy5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3QyMy5kb25lKCdjbG9z
ZWQgcHJvbWlzZSBzaG91bGQgYmUgZnVsZmlsbGVkJyk7Ci0gICAgfSkpOwotCi0gICAgZ2FyYmFn
ZUNvbGxlY3RBbmREbyh0ZXN0MjMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICBjb250
cm9sbGVyLmNsb3NlKCk7Ci0gICAgfSkpOwotfSk7Ci0KLXZhciB0ZXN0MjQgPSBhc3luY190ZXN0
KCdSZWFkYWJsZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgcmVqZWN0IGV2ZW4gaWYgc3Ry
ZWFtIGFuZCByZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCcpOwotdGVzdDI0LnN0ZXAoZnVu
Y3Rpb24oKSB7Ci0gICAgdmFyIGNvbnRyb2xsZXI7Ci0gICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsK
LSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBj
OwotICAgICAgICB9Ci0gICAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkLmNhdGNoKHRlc3QyNC5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3QyNC5kb25lKCdjbG9zZWQgcHJvbWlzZSBz
aG91bGQgYmUgcmVqZWN0ZWQnKTsKLSAgICB9KSk7Ci0KLSAgICBnYXJiYWdlQ29sbGVjdEFuZERv
KHRlc3QyNC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGNvbnRyb2xsZXIuZXJyb3Io
KTsKLSAgICB9KSk7Ci19KTsKLTwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266989</attachid>
            <date>2015-12-09 04:12:33 -0800</date>
            <delta_ts>2015-12-09 05:09:42 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-152051-20151209131200.patch</filename>
            <type>text/plain</type>
            <size>379696</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzODEwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWJjZjQwYzkwMTQwNTIxYjc1MDlm
Mjc0NDk0MGU5MTZmNDMzY2I2My4uZTZkNzFjYzljY2I3NmNkZjU3NDllYzkyYjc5MTRlYzY2ZmQw
OTkzOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTEyLTA5ICBYYWJpZXIgUm9kcmlndWV6
IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1N0cmVhbXMgQVBJXSBJ
bXBvcnQgdGhlIHdlYi1wbGF0Zm9ybS10ZXN0cyBkaXJlY3RseSBmcm9tIHRoZSBzcGVjCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIwNTEKKworICAg
ICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFJlbW92ZWQgdGhlIHRl
c3RzIHRoYXQgYXJlIGFscmVhZHkgaW1wb3J0ZWQgZGlyZWN0bHkgZnJvbSB0aGUgc3BlYy4KKwor
ICAgICAgICAqIHN0cmVhbXMvYnJhbmQtY2hlY2tzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogc3RyZWFtcy9icmFuZC1jaGVja3MuaHRtbDogQWRkZWQuIFRoaXMgaW5jbHVkZXMgc29t
ZSB0ZXN0cyB0aGF0IHZhbmlzaGVkIGZyb20gdGhlIHNwZWMuCisgICAgICAgICogc3RyZWFtcy9y
ZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXN0cmF0ZWdpZXMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC1zdHJhdGVnaWVzLmh0
bWw6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVy
bHlpbmctc291cmNlcy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNl
LWltcGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYnJhbmQtY2hlY2tzLmh0bWw6CisgICAgICAg
ICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYnl0ZS1sZW5ndGgtcXVldWluZy1z
dHJhdGVneS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5odG1sOgorICAgICAgICAqIHN0
cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2Nv
dW50LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tY2FuY2VsLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJl
YWRlci5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVu
dGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZWUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9y
ZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLmh0bWw6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLmh0bWw6IFJlbW92ZWQuCisKIDIwMTUt
MTItMDggIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBTa2lw
IHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LW11bHRpZW50cnkuaHRtbCBvbmNlIGFnYWluCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBiYjZlMzA0MmRkOWU1MTFlOTc5NWY5ZjEzMTEy
OThhZGI4OGMxMWFlLi4zZmE1OWRkOGM2ZDYyZjAzNWNjYmZkNmJlOTRkNTZiM2UwN2ViMWUzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NCBAQAorMjAxNS0xMi0w
OSAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgorCisgICAg
ICAgIFtTdHJlYW1zIEFQSV0gSW1wb3J0IHRoZSB3ZWItcGxhdGZvcm0tdGVzdHMgZGlyZWN0bHkg
ZnJvbSB0aGUgc3BlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUyMDUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAg
ICAgICBUaGVzZSBhcmUgdGhlIHdlYiBwbGF0Zm9ybSB0ZXN0cyBpbXBvcnRlZCBkaXJlY3RseSAo
b3IgYWxtb3N0KSBmcm9tIHRoZSBTdHJlYW1zIEFQSSByZXBvc2l0b3J5LiBUZXN0cyB3b3JrIG91
dAorICAgICAgICBvZiB0aGUgYm94IChhbGwgYnV0IGEgc21hbGwgZmxha2luZXNzIHRoYXQgd2Ug
YXJlIGZvcmNpbmcgYXMgZmFpbHVyZSB0byBub3QgZGlzcnVwdCB0aGUgZXhlY3V0aW9uIG9mIHRo
ZSByZXN0IG9mCisgICAgICAgIHRlc3RzKS4KKworICAgICAgICBUbyBtYWtlIHRoZW0gd29yayB3
ZSBhcmUgaW1wb3J0aW5nIGFsc28gdGhlIHNlcnZpY2Ugd29ya2VyIHRlc3QgaGVscGVycyB0aGF0
IGlzIHVzZWQgYnkgdGhlIHRlc3RzLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Nl
cnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL1JFQURNRS50eHQ6IEFkZGVk
LgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13
b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanM6IEFkZGVkLiBJbXBvcnRlZCBmcm9tIHRo
ZSB3ZWItcGxhdGZvcm0tdGVzdHMuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL1JFQURNRS50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zLWFwaS9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL2J5dGUtbGVuZ3Ro
LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMtYXBpL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuanM6IEFkZGVkLgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9jb3VudC1xdWV1aW5nLXN0
cmF0ZWd5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMtYXBpL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbDogQWRkZWQuCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ku
anM6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFk
YWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0
cmF0ZWdpZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuanM6IEFkZGVkLgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JhZC11
bmRlcmx5aW5nLXNvdXJjZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1z
b3VyY2VzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
LWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuanM6IEFkZGVkLgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1z
L2JyYW5kLWNoZWNrcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUt
c3RyZWFtcy9icmFuZC1jaGVja3MuanM6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1z
dHJlYW1zL2NhbmNlbC5odG1sOiBBZGRlZC4gVGhlcmUncyBhIHRlc3Qgd2l0aCBhIGZvcmNlZCBm
YWlsdXJlCisgICAgICAgIGJlY2F1c2UgaXQgaXMgZmxha3kuCisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmpzOiBBZGRlZC4K
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFt
cy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVh
bXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jb3Vu
dC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxl
Y3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uaHRtbDogQWRk
ZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0
cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRh
YmxlLXN0cmVhbXMvZ2VuZXJhbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9w
aXBlLXRocm91Z2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9waXBlLXRocm91Z2guaHRtbDogQWRk
ZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0
cmVhbXMvcGlwZS10aHJvdWdoLmpzOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMt
YXBpL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy90ZWUtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUt
c3RyZWFtcy90ZWUuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmpzOiBBZGRlZC4KKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1h
cGkvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVzb3Vy
Y2VzL3JzLXRlc3QtdGVtcGxhdGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy1hcGkvcmVzb3VyY2VzL3JzLXV0aWxzLmpzOiBBZGRlZC4KKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6
ZXIuanM6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9y
ZXNvdXJjZXMvdGVzdC11dGlscy5qczogQWRkZWQuCisKIDIwMTUtMTItMDIgIFJ5YW4gSGFkZGFk
ICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgUmViYXNlbGluZSBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9tL2ludGVyZmFjZXMuaHRtbCBhZnRlciByMTky
OTUzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL1JFQURNRS50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29y
a2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL1JFQURNRS50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzhh
MTZlZWVkOThlM2IwYzRiM2FiYTU3ZDkwYTQ3YTNkZWEyNzJmNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvUkVBRE1FLnR4dApAQCAtMCwwICsxLDUgQEAK
K1RoaXMgZmlsZSBpcyBoZXJlIGJlY2F1c2Ugb2YgdGhlIGltcG9ydGF0aW9uIG9mIFN0cmVhbXMg
QVBJIHRlc3RzIHRoYXQgbmVlZCB0aGlzIGZpbGUuCisKK1doZW4gU3RyZWFtcyBBUEkgdGVzdHMg
YXJlIG1vdmVkIHRvIHRoZSB3ZWItcGxhdGZvcm0tdGVzdHMgcmVwb3NpdG9yeSwgdGhpcyBpbXBv
cnRhdGlvbiB3aWxsIGJlIGF1dG9tYXRpYy4KKworQ3VycmVudCB2ZXJzaW9uOiBodHRwczovL2dp
dGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ibG9iLzE4OGJiNTY5ZjAzMmIxZTc4MTg5
YWVmNzI1ZGUzZDg1Yjc1ZDk0NGIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vycy9yZXNv
dXJjZXMvdGVzdC1oZWxwZXJzLmpzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVz
b3VyY2VzL3Rlc3QtaGVscGVycy5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvdGVz
dC1oZWxwZXJzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0N2VhNjEyYzJmOTliNDEzNzViNjQzMTYwZGE0OTU5
OGNjNjYwM2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2Vz
L3Rlc3QtaGVscGVycy5qcwpAQCAtMCwwICsxLDIyMiBAQAorLy8gQWRhcHRlciBmb3IgdGVzdGhh
cm5lc3MuanMtc3R5bGUgdGVzdHMgd2l0aCBTZXJ2aWNlIFdvcmtlcnMKKworZnVuY3Rpb24gc2Vy
dmljZV93b3JrZXJfdW5yZWdpc3Rlcl9hbmRfcmVnaXN0ZXIodGVzdCwgdXJsLCBzY29wZSkgewor
ICBpZiAoIXNjb3BlIHx8IHNjb3BlLmxlbmd0aCA9PSAwKQorICAgIHJldHVybiBQcm9taXNlLnJl
amVjdChuZXcgRXJyb3IoJ3Rlc3RzIG11c3QgZGVmaW5lIGEgc2NvcGUnKSk7CisKKyAgdmFyIG9w
dGlvbnMgPSB7IHNjb3BlOiBzY29wZSB9OworICByZXR1cm4gc2VydmljZV93b3JrZXJfdW5yZWdp
c3Rlcih0ZXN0LCBzY29wZSkKKyAgICAudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJu
IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKHVybCwgb3B0aW9ucyk7CisgICAgICB9
KQorICAgIC5jYXRjaCh1bnJlYWNoZWRfcmVqZWN0aW9uKHRlc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3VucmVnaXN0ZXIgYW5kIHJlZ2lzdGVyIHNob3VsZCBub3QgZmFpbCcp
KTsKK30KKworZnVuY3Rpb24gc2VydmljZV93b3JrZXJfdW5yZWdpc3Rlcih0ZXN0LCBkb2N1bWVu
dFVybCkgeworICByZXR1cm4gbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9u
KGRvY3VtZW50VXJsKQorICAgIC50aGVuKGZ1bmN0aW9uKHJlZ2lzdHJhdGlvbikgeworICAgICAg
ICBpZiAocmVnaXN0cmF0aW9uKQorICAgICAgICAgIHJldHVybiByZWdpc3RyYXRpb24udW5yZWdp
c3RlcigpOworICAgICAgfSkKKyAgICAuY2F0Y2godW5yZWFjaGVkX3JlamVjdGlvbih0ZXN0LCAn
dW5yZWdpc3RlciBzaG91bGQgbm90IGZhaWwnKSk7Cit9CisKK2Z1bmN0aW9uIHNlcnZpY2Vfd29y
a2VyX3VucmVnaXN0ZXJfYW5kX2RvbmUodGVzdCwgc2NvcGUpIHsKKyAgcmV0dXJuIHNlcnZpY2Vf
d29ya2VyX3VucmVnaXN0ZXIodGVzdCwgc2NvcGUpCisgICAgLnRoZW4odGVzdC5kb25lLmJpbmQo
dGVzdCkpOworfQorCitmdW5jdGlvbiB1bnJlYWNoZWRfZnVsZmlsbG1lbnQodGVzdCwgcHJlZml4
KSB7CisgIHJldHVybiB0ZXN0LnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgIHZh
ciBlcnJvcl9wcmVmaXggPSBwcmVmaXggfHwgJ3VuZXhwZWN0ZWQgZnVsZmlsbG1lbnQnOworICAg
ICAgYXNzZXJ0X3VucmVhY2hlZChlcnJvcl9wcmVmaXggKyAnOiAnICsgcmVzdWx0KTsKKyAgICB9
KTsKK30KKworLy8gUmVqZWN0aW9uLXNwZWNpZmljIGhlbHBlciB0aGF0IHByb3ZpZGVzIG1vcmUg
ZGV0YWlscworZnVuY3Rpb24gdW5yZWFjaGVkX3JlamVjdGlvbih0ZXN0LCBwcmVmaXgpIHsKKyAg
cmV0dXJuIHRlc3Quc3RlcF9mdW5jKGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICB2YXIgcmVhc29u
ID0gZXJyb3IubWVzc2FnZSB8fCBlcnJvci5uYW1lIHx8IGVycm9yOworICAgICAgdmFyIGVycm9y
X3ByZWZpeCA9IHByZWZpeCB8fCAndW5leHBlY3RlZCByZWplY3Rpb24nOworICAgICAgYXNzZXJ0
X3VucmVhY2hlZChlcnJvcl9wcmVmaXggKyAnOiAnICsgcmVhc29uKTsKKyAgICB9KTsKK30KKwor
Ly8gQWRkcyBhbiBpZnJhbWUgdG8gdGhlIGRvY3VtZW50IGFuZCByZXR1cm5zIGEgcHJvbWlzZSB0
aGF0IHJlc29sdmVzIHRvIHRoZQorLy8gaWZyYW1lIHdoZW4gaXQgZmluaXNoZXMgbG9hZGluZy4g
VGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgcmVtb3ZpbmcgdGhlCisvLyBpZnJhbWUgbGF0
ZXIgaWYgbmVlZGVkLgorZnVuY3Rpb24gd2l0aF9pZnJhbWUodXJsKSB7CisgIHJldHVybiBuZXcg
UHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7CisgICAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKKyAgICAgIGZyYW1lLnNyYyA9IHVybDsKKyAgICAgIGZy
YW1lLm9ubG9hZCA9IGZ1bmN0aW9uKCkgeyByZXNvbHZlKGZyYW1lKTsgfTsKKyAgICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUpOworICAgIH0pOworfQorCitmdW5jdGlvbiBub3Jt
YWxpemVVUkwodXJsKSB7CisgIHJldHVybiBuZXcgVVJMKHVybCwgc2VsZi5sb2NhdGlvbikudG9T
dHJpbmcoKS5yZXBsYWNlKC8jLiokLywgJycpOworfQorCitmdW5jdGlvbiB3YWl0X2Zvcl91cGRh
dGUodGVzdCwgcmVnaXN0cmF0aW9uKSB7CisgIGlmICghcmVnaXN0cmF0aW9uIHx8IHJlZ2lzdHJh
dGlvbi51bnJlZ2lzdGVyID09IHVuZGVmaW5lZCkgeworICAgIHJldHVybiBQcm9taXNlLnJlamVj
dChuZXcgRXJyb3IoCisgICAgICAnd2FpdF9mb3JfdXBkYXRlIG11c3QgYmUgcGFzc2VkIGEgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbicpKTsKKyAgfQorCisgIHJldHVybiBuZXcgUHJvbWlzZSh0
ZXN0LnN0ZXBfZnVuYyhmdW5jdGlvbihyZXNvbHZlKSB7CisgICAgICByZWdpc3RyYXRpb24uYWRk
RXZlbnRMaXN0ZW5lcigndXBkYXRlZm91bmQnLCB0ZXN0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsK
KyAgICAgICAgICByZXNvbHZlKHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nKTsKKyAgICAgICAgfSkp
OworICAgIH0pKTsKK30KKworZnVuY3Rpb24gd2FpdF9mb3Jfc3RhdGUodGVzdCwgd29ya2VyLCBz
dGF0ZSkgeworICBpZiAoIXdvcmtlciB8fCB3b3JrZXIuc3RhdGUgPT0gdW5kZWZpbmVkKSB7Cisg
ICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcigKKyAgICAgICd3YWl0X2Zvcl9zdGF0
ZSBtdXN0IGJlIHBhc3NlZCBhIFNlcnZpY2VXb3JrZXInKSk7CisgIH0KKyAgaWYgKHdvcmtlci5z
dGF0ZSA9PT0gc3RhdGUpCisgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShzdGF0ZSk7CisKKyAg
aWYgKHN0YXRlID09PSAnaW5zdGFsbGluZycpIHsKKyAgICBzd2l0Y2ggKHdvcmtlci5zdGF0ZSkg
eworICAgICAgY2FzZSAnaW5zdGFsbGVkJzoKKyAgICAgIGNhc2UgJ2FjdGl2YXRpbmcnOgorICAg
ICAgY2FzZSAnYWN0aXZhdGVkJzoKKyAgICAgIGNhc2UgJ3JlZHVuZGFudCc6CisgICAgICAgIHJl
dHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoCisgICAgICAgICAgJ3dvcmtlciBpcyAnICsg
d29ya2VyLnN0YXRlICsgJyBidXQgd2FpdGluZyBmb3IgJyArIHN0YXRlKSk7CisgICAgfQorICB9
CisKKyAgaWYgKHN0YXRlID09PSAnaW5zdGFsbGVkJykgeworICAgIHN3aXRjaCAod29ya2VyLnN0
YXRlKSB7CisgICAgICBjYXNlICdhY3RpdmF0aW5nJzoKKyAgICAgIGNhc2UgJ2FjdGl2YXRlZCc6
CisgICAgICBjYXNlICdyZWR1bmRhbnQnOgorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qo
bmV3IEVycm9yKAorICAgICAgICAgICd3b3JrZXIgaXMgJyArIHdvcmtlci5zdGF0ZSArICcgYnV0
IHdhaXRpbmcgZm9yICcgKyBzdGF0ZSkpOworICAgIH0KKyAgfQorCisgIGlmIChzdGF0ZSA9PT0g
J2FjdGl2YXRpbmcnKSB7CisgICAgc3dpdGNoICh3b3JrZXIuc3RhdGUpIHsKKyAgICAgIGNhc2Ug
J2FjdGl2YXRlZCc6CisgICAgICBjYXNlICdyZWR1bmRhbnQnOgorICAgICAgICByZXR1cm4gUHJv
bWlzZS5yZWplY3QobmV3IEVycm9yKAorICAgICAgICAgICd3b3JrZXIgaXMgJyArIHdvcmtlci5z
dGF0ZSArICcgYnV0IHdhaXRpbmcgZm9yICcgKyBzdGF0ZSkpOworICAgIH0KKyAgfQorCisgIGlm
IChzdGF0ZSA9PT0gJ2FjdGl2YXRlZCcpIHsKKyAgICBzd2l0Y2ggKHdvcmtlci5zdGF0ZSkgewor
ICAgICAgY2FzZSAncmVkdW5kYW50JzoKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5l
dyBFcnJvcigKKyAgICAgICAgICAnd29ya2VyIGlzICcgKyB3b3JrZXIuc3RhdGUgKyAnIGJ1dCB3
YWl0aW5nIGZvciAnICsgc3RhdGUpKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gbmV3IFByb21p
c2UodGVzdC5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzb2x2ZSkgeworICAgICAgd29ya2VyLmFkZEV2
ZW50TGlzdGVuZXIoJ3N0YXRlY2hhbmdlJywgdGVzdC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgaWYgKHdvcmtlci5zdGF0ZSA9PT0gc3RhdGUpCisgICAgICAgICAgICByZXNvbHZl
KHN0YXRlKTsKKyAgICAgICAgfSkpOworICAgIH0pKTsKK30KKworLy8gRGVjbGFyZSBhIHRlc3Qg
dGhhdCBydW5zIGVudGlyZWx5IGluIHRoZSBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuIFRoZSB8
dXJsfAorLy8gaXMgdGhlIHNlcnZpY2Ugd29ya2VyIHNjcmlwdCBVUkwuIFRoaXMgZnVuY3Rpb246
CisvLyAtIEluc3RhbnRpYXRlcyBhIG5ldyB0ZXN0IHdpdGggdGhlIGRlc2NyaXB0aW9uIHNwZWNp
ZmllZCBpbiB8ZGVzY3JpcHRpb258LgorLy8gICBUaGUgdGVzdCB3aWxsIHN1Y2NlZWQgaWYgdGhl
IHNwZWNpZmllZCBzZXJ2aWNlIHdvcmtlciBjYW4gYmUgc3VjY2Vzc2Z1bGx5CisvLyAgIHJlZ2lz
dGVyZWQgYW5kIGluc3RhbGxlZC4KKy8vIC0gQ3JlYXRlcyBhIG5ldyBTZXJ2aWNlV29ya2VyIHJl
Z2lzdHJhdGlvbiB3aXRoIGEgc2NvcGUgdW5pcXVlIHRvIHRoZSBjdXJyZW50CisvLyAgIGRvY3Vt
ZW50IFVSTC4gTm90ZSB0aGF0IHRoaXMgZG9lc24ndCBhbGxvdyBtb3JlIHRoYW4gb25lCisvLyAg
IHNlcnZpY2Vfd29ya2VyX3Rlc3QoKSB0byBiZSBydW4gZnJvbSB0aGUgc2FtZSBkb2N1bWVudC4K
Ky8vIC0gV2FpdHMgZm9yIHRoZSBuZXcgd29ya2VyIHRvIGJlZ2luIGluc3RhbGxpbmcuCisvLyAt
IEltcG9ydHMgdGVzdHMgcmVzdWx0cyBmcm9tIHRlc3RzIHJ1bm5pbmcgaW5zaWRlIHRoZSBTZXJ2
aWNlV29ya2VyLgorZnVuY3Rpb24gc2VydmljZV93b3JrZXJfdGVzdCh1cmwsIGRlc2NyaXB0aW9u
KSB7CisgIC8vIElmIHRoZSBkb2N1bWVudCBVUkwgaXMgaHR0cHM6Ly9leGFtcGxlLmNvbS9kb2N1
bWVudCBhbmQgdGhlIHNjcmlwdCBVUkwgaXMKKyAgLy8gaHR0cHM6Ly9leGFtcGxlLmNvbS9zY3Jp
cHQvd29ya2VyLmpzLCB0aGVuIHRoZSBzY29wZSB3b3VsZCBiZQorICAvLyBodHRwczovL2V4YW1w
bGUuY29tL3NjcmlwdC9zY29wZS9kb2N1bWVudC4KKyAgdmFyIHNjb3BlID0gbmV3IFVSTCgnc2Nv
cGUnICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLAorICAgICAgICAgICAgICAgICAgICAgIG5l
dyBVUkwodXJsLCB3aW5kb3cubG9jYXRpb24pKS50b1N0cmluZygpOworICBwcm9taXNlX3Rlc3Qo
ZnVuY3Rpb24odGVzdCkgeworICAgICAgcmV0dXJuIHNlcnZpY2Vfd29ya2VyX3VucmVnaXN0ZXJf
YW5kX3JlZ2lzdGVyKHRlc3QsIHVybCwgc2NvcGUpCisgICAgICAgIC50aGVuKGZ1bmN0aW9uKHJl
Z2lzdHJhdGlvbikgeworICAgICAgICAgICAgYWRkX2NvbXBsZXRpb25fY2FsbGJhY2soZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgcmVnaXN0cmF0aW9uLnVucmVnaXN0ZXIoKTsKKyAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm4gd2FpdF9mb3JfdXBkYXRlKHRlc3QsIHJl
Z2lzdHJhdGlvbikKKyAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24od29ya2VyKSB7CisgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIod29ya2VyKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKyAgICB9LCBkZXNjcmlwdGlvbik7Cit9
CisKK2Z1bmN0aW9uIGdldF9ob3N0X2luZm8oKSB7CisgIHZhciBPUklHSU5BTF9IT1NUID0gJzEy
Ny4wLjAuMSc7CisgIHZhciBSRU1PVEVfSE9TVCA9ICdsb2NhbGhvc3QnOworICB2YXIgVU5BVVRI
RU5USUNBVEVEX0hPU1QgPSAnZXhhbXBsZS50ZXN0JzsKKyAgdmFyIEhUVFBfUE9SVCA9IDgwMDA7
CisgIHZhciBIVFRQU19QT1JUID0gODQ0MzsKKyAgdHJ5IHsKKyAgICAvLyBJbiBXM0MgdGVzdCwg
d2UgY2FuIGdldCB0aGUgaG9zdG5hbWUgYW5kIHBvcnQgbnVtYmVyIGluIGNvbmZpZy5qc29uCisg
ICAgLy8gdXNpbmcgd3B0c2VydmUncyBidWlsdC1pbiBwaXBlLgorICAgIC8vIGh0dHA6Ly93cHRz
ZXJ2ZS5yZWFkdGhlZG9jcy5vcmcvZW4vbGF0ZXN0L3BpcGVzLmh0bWwjYnVpbHQtaW4tcGlwZXMK
KyAgICBIVFRQX1BPUlQgPSBldmFsKCd7e3BvcnRzW2h0dHBdWzBdfX0nKTsKKyAgICBIVFRQU19Q
T1JUID0gZXZhbCgne3twb3J0c1todHRwc11bMF19fScpOworICAgIE9SSUdJTkFMX0hPU1QgPSBl
dmFsKCdcJ3t7aG9zdH19XCcnKTsKKyAgICBSRU1PVEVfSE9TVCA9ICd3d3cxLicgKyBPUklHSU5B
TF9IT1NUOworICB9IGNhdGNoIChlKSB7CisgIH0KKyAgcmV0dXJuIHsKKyAgICBIVFRQX09SSUdJ
TjogJ2h0dHA6Ly8nICsgT1JJR0lOQUxfSE9TVCArICc6JyArIEhUVFBfUE9SVCwKKyAgICBIVFRQ
U19PUklHSU46ICdodHRwczovLycgKyBPUklHSU5BTF9IT1NUICsgJzonICsgSFRUUFNfUE9SVCwK
KyAgICBIVFRQX1JFTU9URV9PUklHSU46ICdodHRwOi8vJyArIFJFTU9URV9IT1NUICsgJzonICsg
SFRUUF9QT1JULAorICAgIEhUVFBTX1JFTU9URV9PUklHSU46ICdodHRwczovLycgKyBSRU1PVEVf
SE9TVCArICc6JyArIEhUVFBTX1BPUlQsCisgICAgVU5BVVRIRU5USUNBVEVEX09SSUdJTjogJ2h0
dHA6Ly8nICsgVU5BVVRIRU5USUNBVEVEX0hPU1QgKyAnOicgKyBIVFRQX1BPUlQKKyAgfTsKK30K
KworZnVuY3Rpb24gYmFzZV9wYXRoKCkgeworICByZXR1cm4gbG9jYXRpb24ucGF0aG5hbWUucmVw
bGFjZSgvXC9bXlwvXSokLywgJy8nKTsKK30KKworZnVuY3Rpb24gdGVzdF9sb2dpbih0ZXN0LCBv
cmlnaW4sIHVzZXJuYW1lLCBwYXNzd29yZCwgY29va2llKSB7CisgIHJldHVybiBuZXcgUHJvbWlz
ZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgIHdpdGhfaWZyYW1lKAorICAgICAg
ICBvcmlnaW4gKworICAgICAgICAnL3NlcnZpY2V3b3JrZXIvcmVzb3VyY2VzL2ZldGNoLWFjY2Vz
cy1jb250cm9sLWxvZ2luLmh0bWwnKQorICAgICAgICAudGhlbih0ZXN0LnN0ZXBfZnVuYyhmdW5j
dGlvbihmcmFtZSkgeworICAgICAgICAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5u
ZWwoKTsKKyAgICAgICAgICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gdGVzdC5zdGVwX2Z1
bmMoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgZnJhbWUucmVtb3ZlKCk7CisgICAgICAg
ICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGZyYW1l
LmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoCisgICAgICAgICAgICAgIHt1c2VybmFtZTogdXNl
cm5hbWUsIHBhc3N3b3JkOiBwYXNzd29yZCwgY29va2llOiBjb29raWV9LAorICAgICAgICAgICAg
ICBvcmlnaW4sIFtjaGFubmVsLnBvcnQyXSk7CisgICAgICAgICAgfSkpOworICAgIH0pOworfQor
CitmdW5jdGlvbiBsb2dpbih0ZXN0KSB7CisgIHJldHVybiB0ZXN0X2xvZ2luKHRlc3QsICdodHRw
Oi8vMTI3LjAuMC4xOjgwMDAnLAorICAgICAgICAgICAgICAgICAgICAndXNlcm5hbWUxJywgJ3Bh
c3N3b3JkMScsICdjb29raWUxJykKKyAgICAudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0
dXJuIHRlc3RfbG9naW4odGVzdCwgJ2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMCcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICd1c2VybmFtZTInLCAncGFzc3dvcmQyJywgJ2Nvb2tpZTInKTsKKyAg
ICAgIH0pOworfQorCitmdW5jdGlvbiBsb2dpbl9odHRwcyh0ZXN0KSB7CisgIHJldHVybiB0ZXN0
X2xvZ2luKHRlc3QsICdodHRwczovLzEyNy4wLjAuMTo4NDQzJywKKyAgICAgICAgICAgICAgICAg
ICAgJ3VzZXJuYW1lMXMnLCAncGFzc3dvcmQxcycsICdjb29raWUxJykKKyAgICAudGhlbihmdW5j
dGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRlc3RfbG9naW4odGVzdCwgJ2h0dHBzOi8vbG9jYWxo
b3N0Ojg0NDMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlcm5hbWUycycsICdwYXNz
d29yZDJzJywgJ2Nvb2tpZTInKTsKKyAgICAgIH0pOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9SRUFETUUudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFw
aS9SRUFETUUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2N2FkMTA2NjQ3OGExZmM0MTVkMGYxYWEzMGJiN2Y1
OTZhYTVmNTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL1JFQURNRS50eHQKQEAgLTAsMCArMSw2IEBACitU
aGlzIGRpcmVjdG9yeSBpcyBpbXBvcnRlZCBmcm9tIHRoZSB0aGUgU3RyZWFtcyBBUEkgcmVwb3Np
dG9yeS4KKworVGhlcmUgaXMgYSBwbGFuIHRvIG1vdmUgdGhlc2UgdGVzdHMgdG8gd2ViLXBsYXRm
b3JtLXRlc3RzIHJlcG9zaXRvcnkgc28gZnJvbSB0aGF0IG1vbWVudCBvbiB0aGlzIGltcG9ydGF0
aW9uIHdpbGwgYmUKK2F1dG9tYXRpYy4KKworQ3VycmVudCB2ZXJzaW9uOiBodHRwczovL2dpdGh1
Yi5jb20vd2hhdHdnL3N0cmVhbXMvdHJlZS8xOGVkNDYzZTUwYzE4OWMwMTk4ZTIzMzZkZmJkMTBi
MTdmMzc5MDgxL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi93ZWItcGxhdGZvcm0tdGVzdHMKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy1hcGkvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL2J5dGUt
bGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4NGM2ZDJk
NzE4YWEyN2FhZjc1NjkzNGNhZTI3NTVkMzA1YzY1ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL2J5dGUt
bGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKKwor
UEFTUyBDYW4gY29uc3RydWN0IGEgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSB3aXRoIGEgdmFs
aWQgaGlnaCB3YXRlciBtYXJrIAorUEFTUyBDYW4gY29uc3RydWN0IGEgQnl0ZUxlbmd0aFF1ZXVp
bmdTdHJhdGVneSB3aXRoIGFueSB2YWx1ZSBhcyBpdHMgaGlnaCB3YXRlciBtYXJrIAorUEFTUyBC
eXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IGNvbnN0cnVjdG9yIGJlaGF2ZXMgYXMgZXhwZWN0ZWQg
d2l0aCBzdHJhbmdlIGFyZ3VtZW50cyAKK1BBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSBz
aXplIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cyAKK1BBU1MgQnl0
ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSBzaG91bGQgd29yayBnZW5lcmlj
YWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cyAKK1BBU1MgQnl0ZUxlbmd0aFF1ZXVp
bmdTdHJhdGVneSBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBwcm9wZXJ0aWVzIAorUEFTUyBC
eXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5J3MgaGlnaFdhdGVyTWFyayBwcm9wZXJ0eSBjYW4gYmUg
c2V0IHRvIGFueXRoaW5nIAorRkFJTCBMb2FkIGJ5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3ku
anMgd2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0X3VucmVhY2hlZDogU2hhcmVkV29ya2VyIGlzIHVu
YXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBVbnRpdGxlZCB1bmRlZmlu
ZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIu
Z2V0UmVnaXN0cmF0aW9uJykKK0ZBSUwgQ2FuIGNvbnN0cnVjdCBhIEJ5dGVMZW5ndGhRdWV1aW5n
U3RyYXRlZ3kgd2l0aCBhIHZhbGlkIGhpZ2ggd2F0ZXIgbWFyayBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5CitGQUlMIENhbiBjb25zdHJ1Y3QgYSBCeXRlTGVu
Z3RoUXVldWluZ1N0cmF0ZWd5IHdpdGggYW55IHZhbHVlIGFzIGl0cyBoaWdoIHdhdGVyIG1hcmsg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneQorRkFJTCBCeXRl
TGVuZ3RoUXVldWluZ1N0cmF0ZWd5IGNvbnN0cnVjdG9yIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0
aCBzdHJhbmdlIGFyZ3VtZW50cyBhc3NlcnRfdGhyb3dzOiBjb25zdHJ1Y3Rpb24gZmFpbHMgd2l0
aCB1bmRlZmluZWQgZnVuY3Rpb24gIigpID0+IG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5
KCkiIHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IEJ5
dGVMZW5ndGhRdWV1aW5nU3RyLi4uIiAoIlJlZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQgb2JqZWN0
ICJbb2JqZWN0IE9iamVjdF0iICgiVHlwZUVycm9yIikKK0ZBSUwgQnl0ZUxlbmd0aFF1ZXVpbmdT
dHJhdGVneSBzaXplIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cyBh
c3NlcnRfdGhyb3dzOiBzaXplIGZhaWxzIHdpdGggdW5kZWZpbmVkIGZ1bmN0aW9uICIoKSA9PiBC
eXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKCkiIHRocmV3IG9iamVjdCAi
UmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IEJ5dGVMZW5ndGhRdWV1aW5nU3Ry
Li4uIiAoIlJlZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJbb2JqZWN0IE9iamVjdF0i
ICgiVHlwZUVycm9yIikKK0ZBSUwgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUu
c2l6ZSBzaG91bGQgd29yayBnZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50
cyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5CitGQUlMIEJ5
dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgcHJvcGVy
dGllcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5CitGQUlM
IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kncyBoaWdoV2F0ZXJNYXJrIHByb3BlcnR5IGNhbiBi
ZSBzZXQgdG8gYW55dGhpbmcgQ2FuJ3QgZmluZCB2YXJpYWJsZTogQnl0ZUxlbmd0aFF1ZXVpbmdT
dHJhdGVneQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMtYXBpL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkv
Ynl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzZjE1YWNiOWZm
YWI2OGFlMjg1ZjU3ODI2NzE3N2JmYjdlNWRiMjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL2J5dGUtbGVu
Z3RoLXF1ZXVpbmctc3RyYXRlZ3kuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQg
c3JjPSJieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
CisndXNlIHN0cmljdCc7Cit3b3JrZXJfdGVzdCgnYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVn
eS5qcycpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRl
Z3kuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQ0MDdh
Zjk5MTM4ODkzYjhiNTI5MmFhMjQ4MTAwNDE2MmU3MmU1YQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvYnl0
ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5qcwpAQCAtMCwwICsxLDEwNyBAQAorJ3VzZSBzdHJp
Y3QnOworCitpZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7CisgIHNlbGYuaW1wb3J0U2NyaXB0cygn
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOworfQorCit0ZXN0KCgpID0+IHsKKworICBuZXcg
Qnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSk7CisKK30sICdD
YW4gY29uc3RydWN0IGEgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSB3aXRoIGEgdmFsaWQgaGln
aCB3YXRlciBtYXJrJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGZvciAoY29uc3QgaGlnaFdhdGVy
TWFyayBvZiBbLUluZmluaXR5LCBOYU4sICdmb28nLCB7fSwgKCkgPT4ge31dKSB7CisgICAgY29u
c3Qgc3RyYXRlZ3kgPSBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1h
cmsgfSk7CisgICAgYXNzZXJ0X2VxdWFscyhzdHJhdGVneS5oaWdoV2F0ZXJNYXJrLCBoaWdoV2F0
ZXJNYXJrLCBgJHtoaWdoV2F0ZXJNYXJrfSBnZXRzIHNldCBjb3JyZWN0bHlgKTsKKyAgfQorCit9
LCAnQ2FuIGNvbnN0cnVjdCBhIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgd2l0aCBhbnkgdmFs
dWUgYXMgaXRzIGhpZ2ggd2F0ZXIgbWFyaycpOworCit0ZXN0KCgpID0+IHsKKworICBjb25zdCBo
aWdoV2F0ZXJNYXJrID0gMTsKKyAgY29uc3QgaGlnaFdhdGVyTWFya09iamVjdEdldHRlciA9IHsK
KyAgICBnZXQgaGlnaFdhdGVyTWFyaygpIHsgcmV0dXJuIGhpZ2hXYXRlck1hcms7IH0KKyAgfTsK
KyAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ3dvdyEnKTsKKyAgY29uc3QgaGlnaFdhdGVyTWFy
a09iamVjdEdldHRlclRocm93aW5nID0geworICAgIGdldCBoaWdoV2F0ZXJNYXJrKCkgeyB0aHJv
dyBlcnJvcjsgfQorICB9OworCisgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAnVHlwZUVycm9yJyB9
LCAoKSA9PiBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSgpLCAnY29uc3RydWN0aW9uIGZh
aWxzIHdpdGggdW5kZWZpbmVkJyk7CisgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAnVHlwZUVycm9y
JyB9LCAoKSA9PiBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneShudWxsKSwgJ2NvbnN0cnVj
dGlvbiBmYWlscyB3aXRoIG51bGwnKTsKKyAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdFcnJvcicg
fSwgKCkgPT4gbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koaGlnaFdhdGVyTWFya09iamVj
dEdldHRlclRocm93aW5nKSwKKyAgICAnY29uc3RydWN0aW9uIGZhaWxzIHdpdGggYW4gb2JqZWN0
IHdpdGggYSB0aHJvd2luZyBoaWdoV2F0ZXJNYXJrIGdldHRlcicpOworCisgIC8vIFNob3VsZCBu
b3QgZmFpbDoKKyAgbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koJ3BvdGF0bycpOworICBu
ZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSh7fSk7CisgIG5ldyBCeXRlTGVuZ3RoUXVldWlu
Z1N0cmF0ZWd5KGhpZ2hXYXRlck1hcmtPYmplY3RHZXR0ZXIpOworCit9LCAnQnl0ZUxlbmd0aFF1
ZXVpbmdTdHJhdGVneSBjb25zdHJ1Y3RvciBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5n
ZSBhcmd1bWVudHMnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3Qgc2l6ZSA9IDEwMjQ7Cisg
IGNvbnN0IGNodW5rID0geyBieXRlTGVuZ3RoOiBzaXplIH07CisgIGNvbnN0IGNodW5rR2V0dGVy
ID0geworICAgIGdldCBieXRlTGVuZ3RoKCkgeyByZXR1cm4gc2l6ZTsgfQorICB9OworICBjb25z
dCBlcnJvciA9IG5ldyBFcnJvcignd293IScpOworICBjb25zdCBjaHVua0dldHRlclRocm93aW5n
ID0geworICAgIGdldCBieXRlTGVuZ3RoKCkgeyB0aHJvdyBlcnJvcjsgfQorICB9OworICBhc3Nl
cnRfdGhyb3dzKHsgbmFtZTogJ1R5cGVFcnJvcicgfSwgKCkgPT4gQnl0ZUxlbmd0aFF1ZXVpbmdT
dHJhdGVneS5wcm90b3R5cGUuc2l6ZSgpLCAnc2l6ZSBmYWlscyB3aXRoIHVuZGVmaW5lZCcpOwor
ICBhc3NlcnRfdGhyb3dzKHsgbmFtZTogJ1R5cGVFcnJvcicgfSwgKCkgPT4gQnl0ZUxlbmd0aFF1
ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZShudWxsKSwgJ3NpemUgZmFpbHMgd2l0aCBudWxs
Jyk7CisgIGFzc2VydF9lcXVhbHMoQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUu
c2l6ZSgncG90YXRvJyksIHVuZGVmaW5lZCwKKyAgICAnc2l6ZSBzdWNjZWVkcyB3aXRoIHVuZGVm
aW5lZCB3aXRoIGEgcmFuZG9tIG5vbi1vYmplY3QgdHlwZScpOworICBhc3NlcnRfZXF1YWxzKEJ5
dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoe30pLCB1bmRlZmluZWQsCisg
ICAgJ3NpemUgc3VjY2VlZHMgd2l0aCB1bmRlZmluZWQgd2l0aCBhbiBvYmplY3Qgd2l0aG91dCBo
d20gcHJvcGVydHknKTsKKyAgYXNzZXJ0X2VxdWFscyhCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5
LnByb3RvdHlwZS5zaXplKGNodW5rKSwgc2l6ZSwKKyAgICAnc2l6ZSBzdWNjZWVkcyB3aXRoIHRo
ZSByaWdodCBhbW91bnQgd2l0aCBhbiBvYmplY3Qgd2l0aCBhIGh3bScpOworICBhc3NlcnRfZXF1
YWxzKEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoY2h1bmtHZXR0ZXIp
LCBzaXplLAorICAgICdzaXplIHN1Y2NlZWRzIHdpdGggdGhlIHJpZ2h0IGFtb3VudCB3aXRoIGFu
IG9iamVjdCB3aXRoIGEgaHdtIGdldHRlcicpOworICBhc3NlcnRfdGhyb3dzKHsgbmFtZTogJ0Vy
cm9yJyB9LCAoKSA9PiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKGNo
dW5rR2V0dGVyVGhyb3dpbmcpLAorICAgICdzaXplIGZhaWxzIHdpdGggdGhlIGVycm9yIHRocm93
biBieSB0aGUgZ2V0dGVyJyk7CisKK30sICdCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IHNpemUg
YmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzJyk7CisKK3Rlc3QoKCkg
PT4geworCisgIGNvbnN0IHRoaXNWYWx1ZSA9IG51bGw7CisgIGNvbnN0IHJldHVyblZhbHVlID0g
eyAncmV0dXJuZWQgZnJvbSc6ICdieXRlTGVuZ3RoIGdldHRlcicgfTsKKyAgY29uc3QgY2h1bmsg
PSB7CisgICAgZ2V0IGJ5dGVMZW5ndGgoKSB7IHJldHVybiByZXR1cm5WYWx1ZTsgfQorICB9Owor
CisgIGFzc2VydF9lcXVhbHMoQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6
ZS5jYWxsKHRoaXNWYWx1ZSwgY2h1bmspLCByZXR1cm5WYWx1ZSk7CisKK30sICdCeXRlTGVuZ3Ro
UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplIHNob3VsZCB3b3JrIGdlbmVyaWNhbGx5IG9u
IGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGNvbnN0
IHN0cmF0ZWd5ID0gbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJr
OiA0IH0pOworCisgIGFzc2VydF9vYmplY3RfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3Ioc3RyYXRlZ3ksICdoaWdoV2F0ZXJNYXJrJyksCisgICAgeyB2YWx1ZTogNCwgd3Jp
dGFibGU6IHRydWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9LAorICAg
ICdoaWdoV2F0ZXJNYXJrIHByb3BlcnR5IHNob3VsZCBiZSBhIGRhdGEgcHJvcGVydHkgd2l0aCB0
aGUgdmFsdWUgcGFzc2VkIHRoZSBjb25zdHJ1Y3RvcicpOworICBhc3NlcnRfZXF1YWxzKHR5cGVv
ZiBzdHJhdGVneS5zaXplLCAnZnVuY3Rpb24nKTsKKworfSwgJ0J5dGVMZW5ndGhRdWV1aW5nU3Ry
YXRlZ3kgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgcHJvcGVydGllcycpOworCit0ZXN0KCgp
ID0+IHsKKworICBjb25zdCBzdHJhdGVneSA9IG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5
KHsgaGlnaFdhdGVyTWFyazogNCB9KTsKKyAgYXNzZXJ0X2VxdWFscyhzdHJhdGVneS5oaWdoV2F0
ZXJNYXJrLCA0KTsKKworICBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrID0gMTA7CisgIGFzc2VydF9l
cXVhbHMoc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaywgMTApOworCisgIHN0cmF0ZWd5LmhpZ2hXYXRl
ck1hcmsgPSAnYmFuYW5hJzsKKyAgYXNzZXJ0X2VxdWFscyhzdHJhdGVneS5oaWdoV2F0ZXJNYXJr
LCAnYmFuYW5hJyk7CisKK30sICdCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5XCdzIGhpZ2hXYXRl
ck1hcmsgcHJvcGVydHkgY2FuIGJlIHNldCB0byBhbnl0aGluZycpOworCitkb25lKCk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9jb3VudC1xdWV1aW5n
LXN0cmF0ZWd5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzU4YzVmYzk3MWExNTc3ZmI0NzU1
YmVjMGRkNTY2N2Y5ZGE0YWVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9jb3VudC1xdWV1aW5nLXN0cmF0
ZWd5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACisKK1BBU1MgQ2FuIGNvbnN0cnVjdCBh
IENvdW50UXVldWluZ1N0cmF0ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsgCitQQVNT
IENhbiBjb25zdHJ1Y3QgYSBDb3VudFF1ZXVpbmdTdHJhdGVneSB3aXRoIGFueSB2YWx1ZSBhcyBp
dHMgaGlnaCB3YXRlciBtYXJrIAorUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneSBjb25zdHJ1Y3Rv
ciBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMgCitQQVNTIENvdW50
UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplIHNob3VsZCB3b3JrIGdlbmVyaWNhbGx5IG9u
IGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzIAorUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneSBz
aXplIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cyAKK1BBU1MgQ291
bnRRdWV1aW5nU3RyYXRlZ3kgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgcHJvcGVydGllcyAK
K1BBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3kncyBoaWdoV2F0ZXJNYXJrIHByb3BlcnR5IGNhbiBi
ZSBzZXQgdG8gYW55dGhpbmcgCitGQUlMIExvYWQgY291bnQtcXVldWluZy1zdHJhdGVneS5qcyB3
aXRoIFNoYXJlZFdvcmtlciBhc3NlcnRfdW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFp
bGFibGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitGQUlMIFVudGl0bGVkIHVuZGVmaW5lZCBp
cyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICduYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRS
ZWdpc3RyYXRpb24nKQorRkFJTCBDYW4gY29uc3RydWN0IGEgQ291bnRRdWV1aW5nU3RyYXRlZ3kg
d2l0aCBhIHZhbGlkIGhpZ2ggd2F0ZXIgbWFyayBDYW4ndCBmaW5kIHZhcmlhYmxlOiBDb3VudFF1
ZXVpbmdTdHJhdGVneQorRkFJTCBDYW4gY29uc3RydWN0IGEgQ291bnRRdWV1aW5nU3RyYXRlZ3kg
d2l0aCBhbnkgdmFsdWUgYXMgaXRzIGhpZ2ggd2F0ZXIgbWFyayBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBDb3VudFF1ZXVpbmdTdHJhdGVneQorRkFJTCBDb3VudFF1ZXVpbmdTdHJhdGVneSBjb25zdHJ1
Y3RvciBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMgYXNzZXJ0X3Ro
cm93czogY29uc3RydWN0aW9uIGZhaWxzIHdpdGggdW5kZWZpbmVkIGZ1bmN0aW9uICIoKSA9PiBu
ZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koKSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjog
Q2FuJ3QgZmluZCB2YXJpYWJsZTogQ291bnRRdWV1aW5nU3RyYXRlZ3kiICgiUmVmZXJlbmNlRXJy
b3IiKSBleHBlY3RlZCBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIgKCJUeXBlRXJyb3IiKQorRkFJ
TCBDb3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSBzaG91bGQgd29yayBnZW5lcmlj
YWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBD
b3VudFF1ZXVpbmdTdHJhdGVneQorRkFJTCBDb3VudFF1ZXVpbmdTdHJhdGVneSBzaXplIGJlaGF2
ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cyBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBDb3VudFF1ZXVpbmdTdHJhdGVneQorRkFJTCBDb3VudFF1ZXVpbmdTdHJhdGVneSBpbnN0YW5j
ZXMgaGF2ZSB0aGUgY29ycmVjdCBwcm9wZXJ0aWVzIENhbid0IGZpbmQgdmFyaWFibGU6IENvdW50
UXVldWluZ1N0cmF0ZWd5CitGQUlMIENvdW50UXVldWluZ1N0cmF0ZWd5J3MgaGlnaFdhdGVyTWFy
ayBwcm9wZXJ0eSBjYW4gYmUgc2V0IHRvIGFueXRoaW5nIENhbid0IGZpbmQgdmFyaWFibGU6IENv
dW50UXVldWluZ1N0cmF0ZWd5CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvY291bnQtcXVldWluZy1zdHJhdGVneS5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
LWFwaS9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmFmZDEyNjg4NjVj
YzhhYjdlOThkNzEzYWRiOThmOTVkZWU4NTkzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvY291bnQtcXVl
dWluZy1zdHJhdGVneS5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9ImNv
dW50LXF1ZXVpbmctc3RyYXRlZ3kuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0
JzsKK3dvcmtlcl90ZXN0KCdjb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmpzJyk7Cis8L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy1hcGkvY291bnQtcXVldWluZy1zdHJhdGVneS5qcyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvY291bnQtcXVldWluZy1zdHJh
dGVneS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41YWUwMDYzZjU3ZDA5ZGQ0N2ZhZjY4MWVjODA5YTBmODM3NjNk
NWM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmpzCkBAIC0wLDAg
KzEsMTA2IEBACisndXNlIHN0cmljdCc7CisKK2lmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKKyAg
c2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Cit9CisKK3Rl
c3QoKCkgPT4geworCisgIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6
IDQgfSk7CisKK30sICdDYW4gY29uc3RydWN0IGEgQ291bnRRdWV1aW5nU3RyYXRlZ3kgd2l0aCBh
IHZhbGlkIGhpZ2ggd2F0ZXIgbWFyaycpOworCit0ZXN0KCgpID0+IHsKKworICBmb3IgKGNvbnN0
IGhpZ2hXYXRlck1hcmsgb2YgWy1JbmZpbml0eSwgTmFOLCAnZm9vJywge30sICgpID0+IHt9XSkg
eworICAgIGNvbnN0IHN0cmF0ZWd5ID0gbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdh
dGVyTWFyayB9KTsKKyAgICBhc3NlcnRfZXF1YWxzKHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmssIGhp
Z2hXYXRlck1hcmssIGAke2hpZ2hXYXRlck1hcmt9IGdldHMgc2V0IGNvcnJlY3RseWApOworICB9
CisKK30sICdDYW4gY29uc3RydWN0IGEgQ291bnRRdWV1aW5nU3RyYXRlZ3kgd2l0aCBhbnkgdmFs
dWUgYXMgaXRzIGhpZ2ggd2F0ZXIgbWFyaycpOworCit0ZXN0KCgpID0+IHsKKworICBjb25zdCBo
aWdoV2F0ZXJNYXJrID0gMTsKKyAgY29uc3QgaGlnaFdhdGVyTWFya09iamVjdEdldHRlciA9IHsK
KyAgICBnZXQgaGlnaFdhdGVyTWFyaygpIHsgcmV0dXJuIGhpZ2hXYXRlck1hcms7IH0KKyAgfTsK
KyAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ3dvdyEnKTsKKyAgY29uc3QgaGlnaFdhdGVyTWFy
a09iamVjdEdldHRlclRocm93aW5nID0geworICAgIGdldCBoaWdoV2F0ZXJNYXJrKCkgeyB0aHJv
dyBlcnJvcjsgfQorICB9OworCisgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAnVHlwZUVycm9yJyB9
LCAoKSA9PiBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koKSwgJ2NvbnN0cnVjdGlvbiBmYWlscyB3
aXRoIHVuZGVmaW5lZCcpOworICBhc3NlcnRfdGhyb3dzKHsgbmFtZTogJ1R5cGVFcnJvcicgfSwg
KCkgPT4gbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KG51bGwpLCAnY29uc3RydWN0aW9uIGZhaWxz
IHdpdGggbnVsbCcpOworICBhc3NlcnRfdGhyb3dzKHsgbmFtZTogJ0Vycm9yJyB9LCAoKSA9PiBu
ZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koaGlnaFdhdGVyTWFya09iamVjdEdldHRlclRocm93aW5n
KSwKKyAgICAnY29uc3RydWN0aW9uIGZhaWxzIHdpdGggYW4gb2JqZWN0IHdpdGggYSB0aHJvd2lu
ZyBoaWdoV2F0ZXJNYXJrIGdldHRlcicpOworCisgIC8vIFNob3VsZCBub3QgZmFpbDoKKyAgbmV3
IENvdW50UXVldWluZ1N0cmF0ZWd5KCdwb3RhdG8nKTsKKyAgbmV3IENvdW50UXVldWluZ1N0cmF0
ZWd5KHt9KTsKKyAgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KGhpZ2hXYXRlck1hcmtPYmplY3RH
ZXR0ZXIpOworCit9LCAnQ291bnRRdWV1aW5nU3RyYXRlZ3kgY29uc3RydWN0b3IgYmVoYXZlcyBh
cyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzJyk7CisKKwordGVzdCgoKSA9PiB7CisK
KyAgY29uc3QgdGhpc1ZhbHVlID0gbnVsbDsKKyAgY29uc3QgY2h1bmsgPSB7CisgICAgZ2V0IGJ5
dGVMZW5ndGgoKSB7CisgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaG91bGRuXCd0IGJlIGNh
bGxlZCcpOworICAgIH0KKyAgfTsKKworICBhc3NlcnRfZXF1YWxzKENvdW50UXVldWluZ1N0cmF0
ZWd5LnByb3RvdHlwZS5zaXplLmNhbGwodGhpc1ZhbHVlLCBjaHVuayksIDEpOworCit9LCAnQ291
bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUgc2hvdWxkIHdvcmsgZ2VuZXJpY2FsbHkg
b24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgY29u
c3Qgc2l6ZSA9IDEwMjQ7CisgIGNvbnN0IGNodW5rID0geyBieXRlTGVuZ3RoOiBzaXplIH07Cisg
IGNvbnN0IGNodW5rR2V0dGVyID0geworICAgIGdldCBieXRlTGVuZ3RoKCkgeyByZXR1cm4gc2l6
ZTsgfQorICB9OworICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignd293IScpOworICBjb25zdCBj
aHVua0dldHRlclRocm93aW5nID0geworICAgIGdldCBieXRlTGVuZ3RoKCkgeyB0aHJvdyBlcnJv
cjsgfQorICB9OworCisgIGFzc2VydF9lcXVhbHMoQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90
eXBlLnNpemUoKSwgMSwgJ3NpemUgcmV0dXJucyAxIHdpdGggdW5kZWZpbmVkJyk7CisgIGFzc2Vy
dF9lcXVhbHMoQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUobnVsbCksIDEsICdz
aXplIHJldHVybnMgMSB3aXRoIG51bGwnKTsKKyAgYXNzZXJ0X2VxdWFscyhDb3VudFF1ZXVpbmdT
dHJhdGVneS5wcm90b3R5cGUuc2l6ZSgncG90YXRvJyksIDEsICdzaXplIHJldHVybnMgMSB3aXRo
IG5vbi1vYmplY3QgdHlwZScpOworICBhc3NlcnRfZXF1YWxzKENvdW50UXVldWluZ1N0cmF0ZWd5
LnByb3RvdHlwZS5zaXplKHt9KSwgMSwgJ3NpemUgcmV0dXJucyAxIHdpdGggZW1wdHkgb2JqZWN0
Jyk7CisgIGFzc2VydF9lcXVhbHMoQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUo
Y2h1bmspLCAxLCAnc2l6ZSByZXR1cm5zIDEgd2l0aCBhIGNodW5rJyk7CisgIGFzc2VydF9lcXVh
bHMoQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoY2h1bmtHZXR0ZXIpLCAxLCAn
c2l6ZSByZXR1cm5zIDEgd2l0aCBjaHVuayBnZXR0ZXInKTsKKyAgYXNzZXJ0X2VxdWFscyhDb3Vu
dFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZShjaHVua0dldHRlclRocm93aW5nKSwgMSwK
KyAgICAnc2l6ZSByZXR1cm5zIDEgd2l0aCBjaHVuayBnZXR0ZXIgdGhhdCB0aHJvd3MnKTsKKwor
fSwgJ0NvdW50UXVldWluZ1N0cmF0ZWd5IHNpemUgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0
cmFuZ2UgYXJndW1lbnRzJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHN0cmF0ZWd5ID0g
bmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KTsKKworICBhc3Nl
cnRfb2JqZWN0X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHN0cmF0ZWd5
LCAnaGlnaFdhdGVyTWFyaycpLAorICAgIHsgdmFsdWU6IDQsIHdyaXRhYmxlOiB0cnVlLCBlbnVt
ZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSwKKyAgICAnaGlnaFdhdGVyTWFyayBw
cm9wZXJ0eSBzaG91bGQgYmUgYSBkYXRhIHByb3BlcnR5IHdpdGggdGhlIHZhbHVlIHBhc3NlZCB0
aGUgY29uc3RydWN0b3InKTsKKyAgYXNzZXJ0X2VxdWFscyh0eXBlb2Ygc3RyYXRlZ3kuc2l6ZSwg
J2Z1bmN0aW9uJyk7CisKK30sICdDb3VudFF1ZXVpbmdTdHJhdGVneSBpbnN0YW5jZXMgaGF2ZSB0
aGUgY29ycmVjdCBwcm9wZXJ0aWVzJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHN0cmF0
ZWd5ID0gbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KTsKKyAg
YXNzZXJ0X2VxdWFscyhzdHJhdGVneS5oaWdoV2F0ZXJNYXJrLCA0KTsKKworICBzdHJhdGVneS5o
aWdoV2F0ZXJNYXJrID0gMTA7CisgIGFzc2VydF9lcXVhbHMoc3RyYXRlZ3kuaGlnaFdhdGVyTWFy
aywgMTApOworCisgIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgPSAnYmFuYW5hJzsKKyAgYXNzZXJ0
X2VxdWFscyhzdHJhdGVneS5oaWdoV2F0ZXJNYXJrLCAnYmFuYW5hJyk7CisKK30sICdDb3VudFF1
ZXVpbmdTdHJhdGVneVwncyBoaWdoV2F0ZXJNYXJrIHByb3BlcnR5IGNhbiBiZSBzZXQgdG8gYW55
dGhpbmcnKTsKKworZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJh
dGVnaWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM5ZDI3YzUwMWYyNDAzYTIxODY0MDU1MmU5ZjZlZjhhOGM0
ZTE5NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMyBAQAorCitQQVNTIFJlYWRhYmxlIHN0cmVhbTogdGhy
b3dpbmcgc3RyYXRlZ3kuc2l6ZSBnZXR0ZXIgCitQQVNTIFJlYWRhYmxlIHN0cmVhbTogdGhyb3dp
bmcgc3RyYXRlZ3kuc2l6ZSBtZXRob2QgCitQQVNTIFJlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcg
c3RyYXRlZ3kuaGlnaFdhdGVyTWFyayBnZXR0ZXIgCitQQVNTIFJlYWRhYmxlIHN0cmVhbTogaW52
YWxpZCBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIAorUEFTUyBSZWFkYWJsZSBzdHJlYW06IGludmFs
aWQgc3RyYXRlZ3kuc2l6ZSByZXR1cm4gdmFsdWUgCitGQUlMIExvYWQgYmFkLXN0cmF0ZWdpZXMu
anMgd2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0X3VucmVhY2hlZDogU2hhcmVkV29ya2VyIGlzIHVu
YXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBVbnRpdGxlZCB1bmRlZmlu
ZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIu
Z2V0UmVnaXN0cmF0aW9uJykKK0ZBSUwgUmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVn
eS5zaXplIGdldHRlciBhc3NlcnRfdGhyb3dzOiBjb25zdHJ1Y3Rpb24gc2hvdWxkIHJlLXRocm93
IHRoZSBlcnJvciBmdW5jdGlvbiAiKCkgPT4geworICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwg
eworICAgICAgZ2V0IHNpemUoKSB7CisgLi4uIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVycm9y
OiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIp
IGV4cGVjdGVkIG9iamVjdCAiRXJyb3I6IGEgdW5pcXVlIHN0cmluZyIgKCJFcnJvciIpCitGQUlM
IFJlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBtZXRob2QgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFibGUgc3RyZWFtOiB0aHJvd2lu
ZyBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIGdldHRlciBhc3NlcnRfdGhyb3dzOiBjb25zdHJ1Y3Rp
b24gc2hvdWxkIHJlLXRocm93IHRoZSBlcnJvciBmdW5jdGlvbiAiKCkgPT4geworICAgIG5ldyBS
ZWFkYWJsZVN0cmVhbSh7fSwgeworICAgICAgc2l6ZSgpIHsKKyAgICAgLi4uIiB0aHJldyBvYmpl
Y3QgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbSIg
KCJSZWZlcmVuY2VFcnJvciIpIGV4cGVjdGVkIG9iamVjdCAiRXJyb3I6IGEgdW5pcXVlIHN0cmlu
ZyIgKCJFcnJvciIpCitGQUlMIFJlYWRhYmxlIHN0cmVhbTogaW52YWxpZCBzdHJhdGVneS5oaWdo
V2F0ZXJNYXJrIGFzc2VydF90aHJvd3M6IGNvbnN0cnVjdGlvbiBzaG91bGQgdGhyb3cgYSBSYW5n
ZUVycm9yIGZvciAtMSBmdW5jdGlvbiAiKCkgPT4geworICAgICAgbmV3IFJlYWRhYmxlU3RyZWFt
KHt9LCB7CisgICAgICAgIHNpemUoKSB7CisgLi4uIiB0aHJldyBvYmplY3QgIlJlZmVyZW5jZUVy
cm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbSIgKCJSZWZlcmVuY2VFcnJv
ciIpIGV4cGVjdGVkIG9iamVjdCAiUmFuZ2VFcnJvciIgKCJSYW5nZUVycm9yIikKK0ZBSUwgUmVh
ZGFibGUgc3RyZWFtOiBpbnZhbGlkIHN0cmF0ZWd5LnNpemUgcmV0dXJuIHZhbHVlIENhbid0IGZp
bmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFt
cy9iYWQtc3RyYXRlZ2llcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGZhYjkzMTMyMzliNzdjNzY2YTkzMjJiNDM0MWVmYzUzYzI2ZGJmZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5odG1sCkBA
IC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhl
bHBlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LWluaXRp
YWxpemVyLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9ImJhZC1zdHJhdGVnaWVzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7Cit3b3JrZXJfdGVzdCgnYmFkLXN0cmF0
ZWdpZXMuanMnKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JhZC1z
dHJhdGVnaWVzLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdkMDg1Yzc2YTI5ZmFhNmQwZTI1ZWUzMGRjOTk0YjBiZDcyZGU0YjIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuanMKQEAgLTAsMCArMSwxMjIg
QEAKKyd1c2Ugc3RyaWN0JzsKKworaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgeworICBzZWxmLmlt
cG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnKTsKK30KKwordGVzdCgoKSA9
PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwor
CisgIGFzc2VydF90aHJvd3ModGhlRXJyb3IsICgpID0+IHsKKyAgICBuZXcgUmVhZGFibGVTdHJl
YW0oe30sIHsKKyAgICAgIGdldCBzaXplKCkgeworICAgICAgICB0aHJvdyB0aGVFcnJvcjsKKyAg
ICAgIH0sCisgICAgICBoaWdoV2F0ZXJNYXJrOiA1CisgICAgfSk7CisgIH0sICdjb25zdHJ1Y3Rp
b24gc2hvdWxkIHJlLXRocm93IHRoZSBlcnJvcicpOworCit9LCAnUmVhZGFibGUgc3RyZWFtOiB0
aHJvd2luZyBzdHJhdGVneS5zaXplIGdldHRlcicpOworCitwcm9taXNlX3Rlc3QoKCkgPT4gewor
CisgIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKyAgY29u
c3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oCisgICAgeworICAgICAgc3RhcnQoYykgeworICAg
ICAgICBhc3NlcnRfdGhyb3dzKHRoZUVycm9yLCAoKSA9PiBjLmVucXVldWUoJ2EnKSwgJ2VucXVl
dWUgc2hvdWxkIHRocm93IHRoZSBlcnJvcicpOworICAgICAgfQorICAgIH0sCisgICAgeworICAg
ICAgc2l6ZSgpIHsKKyAgICAgICAgdGhyb3cgdGhlRXJyb3I7CisgICAgICB9LAorICAgICAgaGln
aFdhdGVyTWFyazogNQorICAgIH0KKyAgKTsKKworICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xv
c2VkLmNhdGNoKGUgPT4geworICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdjbG9zZWQg
c2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOworICB9KTsKKworfSwgJ1JlYWRhYmxlIHN0
cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBtZXRob2QnKTsKKwordGVzdCgoKSA9PiB7CisK
KyAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOworCisgIGFz
c2VydF90aHJvd3ModGhlRXJyb3IsICgpID0+IHsKKyAgICBuZXcgUmVhZGFibGVTdHJlYW0oe30s
IHsKKyAgICAgIHNpemUoKSB7CisgICAgICAgIHJldHVybiAxOworICAgICAgfSwKKyAgICAgIGdl
dCBoaWdoV2F0ZXJNYXJrKCkgeworICAgICAgICB0aHJvdyB0aGVFcnJvcjsKKyAgICAgIH0KKyAg
ICB9KTsKKyAgfSwgJ2NvbnN0cnVjdGlvbiBzaG91bGQgcmUtdGhyb3cgdGhlIGVycm9yJyk7CisK
K30sICdSZWFkYWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgZ2V0
dGVyJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGZvciAoY29uc3QgaGlnaFdhdGVyTWFyayBvZiBb
LTEsIC1JbmZpbml0eV0pIHsKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCksICgp
ID0+IHsKKyAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwgeworICAgICAgICBzaXplKCkgewor
ICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9LAorICAgICAgICBoaWdoV2F0ZXJNYXJrCisg
ICAgICB9KTsKKyAgICB9LCAnY29uc3RydWN0aW9uIHNob3VsZCB0aHJvdyBhIFJhbmdlRXJyb3Ig
Zm9yICcgKyBoaWdoV2F0ZXJNYXJrKTsKKyAgfQorCisgIGZvciAoY29uc3QgaGlnaFdhdGVyTWFy
ayBvZiBbTmFOLCAnZm9vJywge31dKSB7CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
KCksICgpID0+IHsKKyAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwgeworICAgICAgICBzaXpl
KCkgeworICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9LAorICAgICAgICBoaWdoV2F0ZXJN
YXJrCisgICAgICB9KTsKKyAgICB9LCAnY29uc3RydWN0aW9uIHNob3VsZCB0aHJvdyBhIFR5cGVF
cnJvciBmb3IgJyArIGhpZ2hXYXRlck1hcmspOworICB9CisKK30sICdSZWFkYWJsZSBzdHJlYW06
IGludmFsaWQgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4g
eworCisgIGNvbnN0IHByb21pc2VzID0gW107CisgIGZvciAoY29uc3Qgc2l6ZSBvZiBbTmFOLCAt
SW5maW5pdHksIEluZmluaXR5LCAtMV0pIHsKKyAgICBsZXQgdGhlRXJyb3I7CisgICAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oCisgICAgICB7CisgICAgICAgIHN0YXJ0KGMpIHsKKyAg
ICAgICAgICB0cnkgeworICAgICAgICAgICAgYy5lbnF1ZXVlKCdoaScpOworICAgICAgICAgICAg
YXNzZXJ0X3VucmVhY2hlZCgnZW5xdWV1ZSBkaWRuXCd0IHRocm93Jyk7CisgICAgICAgICAgfSBj
YXRjaCAoZXJyb3IpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXJyb3IubmFtZSwgJ1Jh
bmdlRXJyb3InLCAnZW5xdWV1ZSBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yIGZvciAnICsgc2l6
ZSk7CisgICAgICAgICAgICB0aGVFcnJvciA9IGVycm9yOworICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgfSwKKyAgICAgIHsKKyAgICAgICAgc2l6ZSgpIHsKKyAgICAgICAgICByZXR1cm4g
c2l6ZTsKKyAgICAgICAgfSwKKyAgICAgICAgaGlnaFdhdGVyTWFyazogNQorICAgICAgfQorICAg
ICk7CisKKyAgICBwcm9taXNlcy5wdXNoKHJzLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaChlID0+
IHsKKyAgICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVj
dCB3aXRoIHRoZSBlcnJvciBmb3IgJyArIHNpemUpOworICAgIH0pKTsKKyAgfQorCisgIHJldHVy
biBQcm9taXNlLmFsbChwcm9taXNlcyk7CisKK30sICdSZWFkYWJsZSBzdHJlYW06IGludmFsaWQg
c3RyYXRlZ3kuc2l6ZSByZXR1cm4gdmFsdWUnKTsKKworZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFk
YWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJs
ZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjYxZmU2MjQ5OTQ5MjljMTYyODZkZjVkOGJiZmE1M2QzY2ZlZTY3MzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMt
YXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw1MiBAQAorCitQQVNTIFVuZGVybHlpbmcgc291cmNlIHN0YXJ0OiB0aHJvd2lu
ZyBnZXR0ZXIgCitQQVNTIFVuZGVybHlpbmcgc291cmNlIHN0YXJ0OiB0aHJvd2luZyBtZXRob2Qg
CitQQVNTIFVuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIGdldHRlciAoaW5pdGlhbCBw
dWxsKSAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgbWV0aG9kIChpbml0
aWFsIHB1bGwpIAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBwdWxsOiB0aHJvd2luZyBnZXR0ZXIg
KHNlY29uZCBwdWxsKSAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2UgcHVsbDogdGhyb3dpbmcgbWV0
aG9kIChzZWNvbmQgcHVsbCkgCitQQVNTIFVuZGVybHlpbmcgc291cmNlIGNhbmNlbDogdGhyb3dp
bmcgZ2V0dGVyIAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93aW5nIG1ldGhv
ZCAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlbXB0eSBj
YW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6
IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIG5vbi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5v
dCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIGNs
b3NlZCBzdHJlYW0gc2hvdWxkIHRocm93IAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGlu
ZyBlbnF1ZXVlIG9uIGFuIGVycm9yZWQgc3RyZWFtIHNob3VsZCB0aHJvdyAKK1BBU1MgVW5kZXJs
eWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ugb24gYW4gZW1wdHkgc3RyZWFtIHNob3Vs
ZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5n
IGNsb3NlIHR3aWNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29u
ZCB0aW1lIAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBvbiBhbiBlbXB0
eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3Vy
Y2U6IGNhbGxpbmcgY2xvc2Ugb24gYSBub24tZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBu
b3QgdGhyb3cgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIGFmdGVyIGVy
cm9yIHNob3VsZCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3Ig
dHdpY2Ugc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZSAKK1BBU1MgVW5kZXJseWluZyBzb3Vy
Y2U6IGNhbGxpbmcgZXJyb3IgYWZ0ZXIgY2xvc2Ugc2hvdWxkIHRocm93IAorUEFTUyBVbmRlcmx5
aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlz
ZSBmcm9tIHN0YXJ0IHNob3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRvIGVycm9yIHdpdGggdGhlIGZp
cnN0IGVycm9yIAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhbmQgcmV0
dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHB1bGwgc2hvdWxkIGNhdXNlIHRoZSBzdHJl
YW0gdG8gZXJyb3Igd2l0aCB0aGUgZmlyc3QgZXJyb3IgCitGQUlMIExvYWQgYmFkLXVuZGVybHlp
bmctc291cmNlcy5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3NlcnRfdW5yZWFjaGVkOiBTaGFyZWRX
b3JrZXIgaXMgdW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitGQUlMIFVudGl0
bGVkIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICduYXZpZ2F0b3Iuc2Vy
dmljZVdvcmtlci5nZXRSZWdpc3RyYXRpb24nKQorRkFJTCBVbmRlcmx5aW5nIHNvdXJjZSBzdGFy
dDogdGhyb3dpbmcgZ2V0dGVyIGFzc2VydF90aHJvd3M6IGNvbnN0cnVjdGluZyB0aGUgc3RyZWFt
IHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3IgZnVuY3Rpb24gIigpID0+IHsKKyAgICBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgICAgZ2V0IHN0YXJ0KCkgeworICAgIC4uLiIgdGhyZXcgb2JqZWN0
ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0iICgi
UmVmZXJlbmNlRXJyb3IiKSBleHBlY3RlZCBvYmplY3QgIkVycm9yOiBhIHVuaXF1ZSBzdHJpbmci
ICgiRXJyb3IiKQorRkFJTCBVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcgbWV0aG9k
IGFzc2VydF90aHJvd3M6IGNvbnN0cnVjdGluZyB0aGUgc3RyZWFtIHNob3VsZCByZS10aHJvdyB0
aGUgZXJyb3IgZnVuY3Rpb24gIigpID0+IHsKKyAgICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAg
ICAgc3RhcnQoKSB7CisgICAgICAgIC4uLiIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjog
Q2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0iICgiUmVmZXJlbmNlRXJyb3IiKSBl
eHBlY3RlZCBvYmplY3QgIkVycm9yOiBhIHVuaXF1ZSBzdHJpbmciICgiRXJyb3IiKQorRkFJTCBV
bmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBnZXR0ZXIgKGluaXRpYWwgcHVsbCkgQ2Fu
J3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgVW5kZXJseWluZyBzb3VyY2U6
IHRocm93aW5nIHB1bGwgbWV0aG9kIChpbml0aWFsIHB1bGwpIENhbid0IGZpbmQgdmFyaWFibGU6
IFJlYWRhYmxlU3RyZWFtCitGQUlMIFVuZGVybHlpbmcgc291cmNlIHB1bGw6IHRocm93aW5nIGdl
dHRlciAoc2Vjb25kIHB1bGwpIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitG
QUlMIFVuZGVybHlpbmcgc291cmNlIHB1bGw6IHRocm93aW5nIG1ldGhvZCAoc2Vjb25kIHB1bGwp
IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFVuZGVybHlpbmcgc291
cmNlIGNhbmNlbDogdGhyb3dpbmcgZ2V0dGVyIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxl
U3RyZWFtCitGQUlMIFVuZGVybHlpbmcgc291cmNlIGNhbmNlbDogdGhyb3dpbmcgbWV0aG9kIENh
bid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFVuZGVybHlpbmcgc291cmNl
OiBjYWxsaW5nIGVucXVldWUgb24gYW4gZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3Qg
dGhyb3cgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgVW5kZXJseWlu
ZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIG5vbi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0g
c2hvdWxkIG5vdCB0aHJvdyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJ
TCBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGEgY2xvc2VkIHN0cmVhbSBz
aG91bGQgdGhyb3cgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgVW5k
ZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlcnJvcmVkIHN0cmVhbSBzaG91
bGQgdGhyb3cgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgVW5kZXJs
eWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ugb24gYW4gZW1wdHkgc3RyZWFtIHNob3Vs
ZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJl
YW0KK0ZBSUwgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ugb24gYSBub24t
ZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xv
c2Ugb24gYW4gZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxp
bmcgY2xvc2Ugb24gYSBub24tZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgVW5kZXJseWluZyBzb3Vy
Y2U6IGNhbGxpbmcgY2xvc2UgYWZ0ZXIgZXJyb3Igc2hvdWxkIHRocm93IENhbid0IGZpbmQgdmFy
aWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVy
cm9yIHR3aWNlIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3Ig
YWZ0ZXIgY2xvc2Ugc2hvdWxkIHRocm93IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3Ry
ZWFtCitGQUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIGFuZCByZXR1cm5pbmcg
YSByZWplY3RlZCBwcm9taXNlIGZyb20gc3RhcnQgc2hvdWxkIGNhdXNlIHRoZSBzdHJlYW0gdG8g
ZXJyb3Igd2l0aCB0aGUgZmlyc3QgZXJyb3IgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVT
dHJlYW0KK0ZBSUwgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYW5kIHJldHVybmlu
ZyBhIHJlamVjdGVkIHByb21pc2UgZnJvbSBwdWxsIHNob3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRv
IGVycm9yIHdpdGggdGhlIGZpcnN0IGVycm9yIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxl
U3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3Vy
Y2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmVjYjExZmVhYjEyYzQ3NmM0NzFmZDJkYzVkYmZiMzBkOWQ3ZGZiNTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5odG1s
CkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0
LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LWlu
aXRpYWxpemVyLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9ImJhZC11bmRlcmx5aW5nLXNv
dXJjZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsKK3dvcmtlcl90ZXN0
KCdiYWQtdW5kZXJseWluZy1zb3VyY2VzLmpzJyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVh
ZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmpzIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1z
L2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjJmZDBmZGM5Mjk5ZDVkNWRl
NGY1NjI4ZGQxOWQ1OWZkMjkzMDBkYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFt
cy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmpzCkBAIC0wLDAgKzEsMzgzIEBACisndXNlIHN0cmlj
dCc7CisKK2lmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKKyAgc2VsZi5pbXBvcnRTY3JpcHRzKCcv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Cit9CisKKwordGVzdCgoKSA9PiB7CisKKyAgY29u
c3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOworCisgIGFzc2VydF90
aHJvd3ModGhlRXJyb3IsICgpID0+IHsKKyAgICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAg
Z2V0IHN0YXJ0KCkgeworICAgICAgICB0aHJvdyB0aGVFcnJvcjsKKyAgICAgIH0KKyAgICB9KTsK
KyAgfSwgJ2NvbnN0cnVjdGluZyB0aGUgc3RyZWFtIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3In
KTsKKworfSwgJ1VuZGVybHlpbmcgc291cmNlIHN0YXJ0OiB0aHJvd2luZyBnZXR0ZXInKTsKKwor
Cit0ZXN0KCgpID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUg
c3RyaW5nJyk7CisKKyAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwgKCkgPT4geworICAgIG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgICBzdGFydCgpIHsKKyAgICAgICAgdGhyb3cgdGhlRXJyb3I7
CisgICAgICB9CisgICAgfSk7CisgIH0sICdjb25zdHJ1Y3RpbmcgdGhlIHN0cmVhbSBzaG91bGQg
cmUtdGhyb3cgdGhlIGVycm9yJyk7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhy
b3dpbmcgbWV0aG9kJyk7CisKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHRoZUVy
cm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKyAgY29uc3QgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIGdldCBwdWxsKCkgeworICAgICAgdGhyb3cgdGhlRXJyb3I7Cisg
ICAgfQorICB9KTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBycy5n
ZXRSZWFkZXIoKS5jbG9zZWQpOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1
bGwgZ2V0dGVyIChpbml0aWFsIHB1bGwpJyk7CisKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisg
IGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKyAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoKSB7CisgICAgICB0aHJvdyB0aGVF
cnJvcjsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgdGhlRXJy
b3IsIHJzLmdldFJlYWRlcigpLmNsb3NlZCk7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZTogdGhy
b3dpbmcgcHVsbCBtZXRob2QgKGluaXRpYWwgcHVsbCknKTsKKworCitwcm9taXNlX3Rlc3QodCA9
PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwor
CisgIGxldCBjb3VudGVyID0gMDsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewor
ICAgIGdldCBwdWxsKCkgeworICAgICAgKytjb3VudGVyOworICAgICAgaWYgKGNvdW50ZXIgPT09
IDEpIHsKKyAgICAgICAgcmV0dXJuIGMgPT4gYy5lbnF1ZXVlKCdhJyk7CisgICAgICB9CisKKyAg
ICAgIHRocm93IHRoZUVycm9yOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHJlYWRlciA9IHJzLmdl
dFJlYWRlcigpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcmVhZGVyLnJlYWQoKS50
aGVuKHIgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBk
b25lOiBmYWxzZSB9LCAndGhlIGNodW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKyAgICB9
KSwKKyAgICBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJlYWRlci5jbG9zZWQpCisgIF0p
OworCit9LCAnVW5kZXJseWluZyBzb3VyY2UgcHVsbDogdGhyb3dpbmcgZ2V0dGVyIChzZWNvbmQg
cHVsbCknKTsKKworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSBu
ZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOworCisgIGxldCBjb3VudGVyID0gMDsKKyAgY29u
c3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoYykgeworICAgICAgKytjb3Vu
dGVyOworICAgICAgaWYgKGNvdW50ZXIgPT09IDEpIHsKKyAgICAgICAgYy5lbnF1ZXVlKCdhJyk7
CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKworICAgICAgdGhyb3cgdGhlRXJyb3I7CisgICAg
fQorICB9KTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgcmV0dXJuIFBy
b21pc2UuYWxsKFsKKyAgICByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7CisgICAgICBhc3NlcnRf
b2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICd0aGUgY2h1bmsg
cmVhZCBzaG91bGQgYmUgY29ycmVjdCcpOworICAgIH0pLAorICAgIHByb21pc2VfcmVqZWN0cyh0
LCB0aGVFcnJvciwgcmVhZGVyLmNsb3NlZCkKKyAgXSk7CisKK30sICdVbmRlcmx5aW5nIHNvdXJj
ZSBwdWxsOiB0aHJvd2luZyBtZXRob2QgKHNlY29uZCBwdWxsKScpOworCitwcm9taXNlX3Rlc3Qo
dCA9PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycp
OworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgZ2V0IGNhbmNlbCgpIHsK
KyAgICAgIHRocm93IHRoZUVycm9yOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHByb21pc2Vf
cmVqZWN0cyh0LCB0aGVFcnJvciwgcnMuY2FuY2VsKCkpOworCit9LCAnVW5kZXJseWluZyBzb3Vy
Y2UgY2FuY2VsOiB0aHJvd2luZyBnZXR0ZXInKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisg
IGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKyAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGNhbmNlbCgpIHsKKyAgICAgIHRocm93IHRo
ZUVycm9yOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCB0aGVF
cnJvciwgcnMuY2FuY2VsKCkpOworCit9LCAnVW5kZXJseWluZyBzb3VyY2UgY2FuY2VsOiB0aHJv
d2luZyBtZXRob2QnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgY29udHJvbGxl
cjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAg
ICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisKKyAgcnMuY2FuY2VsKCk7CisgIGNv
bnRyb2xsZXIuZW5xdWV1ZSgnYScpOyAvLyBDYWxsaW5nIGVucXVldWUgYWZ0ZXIgY2FuY2VsaW5n
IHNob3VsZCBub3QgdGhyb3cgYW55dGhpbmcuCisKKyAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNs
b3NlZDsKKworfSwgJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYW4gZW1w
dHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cnKTsKKworcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgYy5lbnF1
ZXVlKCdiJyk7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisgIHJzLmNh
bmNlbCgpOworICBjb250cm9sbGVyLmVucXVldWUoJ2MnKTsgLy8gQ2FsbGluZyBlbnF1ZXVlIGFm
dGVyIGNhbmNlbGluZyBzaG91bGQgbm90IHRocm93IGFueXRoaW5nLgorCisgIHJldHVybiBycy5n
ZXRSZWFkZXIoKS5jbG9zZWQ7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1
ZXVlIG9uIGEgbm9uLWVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93Jyk7CisK
K3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7Cisg
ICAgc3RhcnQoYykgeworICAgICAgYy5jbG9zZSgpOworICAgICAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yKCksICgpID0+IGMuZW5xdWV1ZSgnYScpLCAnY2FsbCB0byBlbnF1ZXVlIHNob3Vs
ZCB0aHJvdyBhIFR5cGVFcnJvcicpOworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOwor
Cit9LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIGNsb3NlZCBzdHJl
YW0gc2hvdWxkIHRocm93Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCB0aGVF
cnJvciA9IG5ldyBFcnJvcignYm9vJyk7CisgIGNvbnN0IGNsb3NlZCA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcih0aGVFcnJvcik7CisgICAgICBh
c3NlcnRfdGhyb3dzKHRoZUVycm9yLCAoKSA9PiBjLmVucXVldWUoJ2EnKSwgJ2NhbGwgdG8gZW5x
dWV1ZSBzaG91bGQgdGhyb3cgdGhlIGVycm9yJyk7CisgICAgfQorICB9KS5nZXRSZWFkZXIoKS5j
bG9zZWQ7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgY2xvc2VkKTsK
KworfSwgJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYW4gZXJyb3JlZCBz
dHJlYW0gc2hvdWxkIHRocm93Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgcmV0dXJu
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5jbG9zZSgpOwor
ICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGMuY2xvc2UoKSwgJ3Nl
Y29uZCBjYWxsIHRvIGNsb3NlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOworICAgIH0KKyAg
fSkuZ2V0UmVhZGVyKCkuY2xvc2VkOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcg
Y2xvc2UgdHdpY2Ugb24gYW4gZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRp
bWUnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxz
ZTsKKyAgbGV0IHJlYWRDYWxsZWQgPSBmYWxzZTsKKyAgY29uc3QgcmVhZGVyID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAg
IGMuY2xvc2UoKTsKKyAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBj
LmNsb3NlKCksICdzZWNvbmQgY2FsbCB0byBjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3In
KTsKKyAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICB9CisgIH0pLmdldFJlYWRlcigpOwor
CisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4gewor
ICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9
LCAncmVhZCgpIHNob3VsZCByZWFkIHRoZSBlbnF1ZXVlZCBjaHVuaycpOworICAgICAgcmVhZENh
bGxlZCA9IHRydWU7CisgICAgfSksCisgICAgcmVhZGVyLmNsb3NlZC50aGVuKCgpID0+IHsKKyAg
ICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKKyAgICAgIGFzc2VydF90cnVlKHJlYWRDYWxs
ZWQpOworICAgIH0pCisgIF0pOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xv
c2UgdHdpY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRp
bWUnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgbGV0
IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgIHN0YXJ0Q2FsbGVk
ID0gdHJ1ZTsKKyAgICB9CisgIH0pOworCisgIHJzLmNhbmNlbCgpOworICBjb250cm9sbGVyLmNs
b3NlKCk7IC8vIENhbGxpbmcgY2xvc2UgYWZ0ZXIgY2FuY2VsaW5nIHNob3VsZCBub3QgdGhyb3cg
YW55dGhpbmcuCisKKyAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKCgpID0+IHsK
KyAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7CisgIH0pOworCit9LCAnVW5kZXJseWluZyBz
b3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYW4gZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBu
b3QgdGhyb3cnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgY29udHJvbGxlcjsK
KyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgIGMuZW5x
dWV1ZSgnYScpOworICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOworICAgIH0KKyAgfSk7CisKKyAg
cnMuY2FuY2VsKCk7CisgIGNvbnRyb2xsZXIuY2xvc2UoKTsgLy8gQ2FsbGluZyBjbG9zZSBhZnRl
ciBjYW5jZWxpbmcgc2hvdWxkIG5vdCB0aHJvdyBhbnl0aGluZy4KKworICByZXR1cm4gcnMuZ2V0
UmVhZGVyKCkuY2xvc2VkLnRoZW4oKCkgPT4geworICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVk
KTsKKyAgfSk7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBvbiBhIG5v
bi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdycpOworCitwcm9taXNlX3Rl
c3QoKCkgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdib28nKTsKKyAgbGV0
IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisKKyAgY29uc3QgY2xvc2VkID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVycm9yKHRoZUVycm9yKTsKKyAgICAgIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjLmNsb3NlKCksICdjYWxsIHRvIGNs
b3NlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOworICAgICAgc3RhcnRDYWxsZWQgPSB0cnVl
OworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOworCisgIHJldHVybiBjbG9zZWQuY2F0
Y2goZSA9PiB7CisgICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworICAgIGFzc2VydF9lcXVh
bHMoZSwgdGhlRXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOwor
ICB9KTsKKworfSwgJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIGFmdGVyIGVycm9y
IHNob3VsZCB0aHJvdycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHRoZUVy
cm9yID0gbmV3IEVycm9yKCdib28nKTsKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisKKyAg
Y29uc3QgY2xvc2VkID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAg
ICBjLmVycm9yKHRoZUVycm9yKTsKKyAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigp
LCAoKSA9PiBjLmVycm9yKCksICdzZWNvbmQgY2FsbCB0byBlcnJvciBzaG91bGQgdGhyb3cgYSBU
eXBlRXJyb3InKTsKKyAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICB9CisgIH0pLmdldFJl
YWRlcigpLmNsb3NlZDsKKworICByZXR1cm4gY2xvc2VkLmNhdGNoKGUgPT4geworICAgIGFzc2Vy
dF90cnVlKHN0YXJ0Q2FsbGVkKTsKKyAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnY2xv
c2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKKyAgfSk7CisKK30sICdVbmRlcmx5
aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciB0d2ljZSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0
aW1lJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFs
c2U7CisKKyAgY29uc3QgY2xvc2VkID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChj
KSB7CisgICAgICBjLmNsb3NlKCk7CisgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3Io
KSwgKCkgPT4gYy5lcnJvcigpLCAnc2Vjb25kIGNhbGwgdG8gZXJyb3Igc2hvdWxkIHRocm93IGEg
VHlwZUVycm9yJyk7CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgfQorICB9KS5nZXRS
ZWFkZXIoKS5jbG9zZWQ7CisKKyAgcmV0dXJuIGNsb3NlZC50aGVuKCgpID0+IGFzc2VydF90cnVl
KHN0YXJ0Q2FsbGVkKSk7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBh
ZnRlciBjbG9zZSBzaG91bGQgdGhyb3cnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBs
ZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKKyAgY29uc3QgZmlyc3RFcnJvciA9IG5ldyBFcnJvcign
MScpOworICBjb25zdCBzZWNvbmRFcnJvciA9IG5ldyBFcnJvcignMicpOworCisgIGNvbnN0IGNs
b3NlZCA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJv
cihmaXJzdEVycm9yKTsKKyAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICAgIHJldHVybiBQ
cm9taXNlLnJlamVjdChzZWNvbmRFcnJvcik7CisgICAgfQorICB9KS5nZXRSZWFkZXIoKS5jbG9z
ZWQ7CisKKyAgcmV0dXJuIGNsb3NlZC5jYXRjaChlID0+IHsKKyAgICBhc3NlcnRfdHJ1ZShzdGFy
dENhbGxlZCk7CisgICAgYXNzZXJ0X2VxdWFscyhlLCBmaXJzdEVycm9yLCAnY2xvc2VkIHNob3Vs
ZCByZWplY3Qgd2l0aCB0aGUgZmlyc3QgZXJyb3InKTsKKyAgfSk7CisKK30sICdVbmRlcmx5aW5n
IHNvdXJjZTogY2FsbGluZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBm
cm9tIHN0YXJ0IHNob3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRvIGVycm9yICcgKworICAgJ3dpdGgg
dGhlIGZpcnN0IGVycm9yJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0YXJ0
Q2FsbGVkID0gZmFsc2U7CisgIGNvbnN0IGZpcnN0RXJyb3IgPSBuZXcgRXJyb3IoJzEnKTsKKyAg
Y29uc3Qgc2Vjb25kRXJyb3IgPSBuZXcgRXJyb3IoJzInKTsKKworICBjb25zdCBjbG9zZWQgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoYykgeworICAgICAgYy5lcnJvcihmaXJzdEVy
cm9yKTsKKyAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICAgIHJldHVybiBQcm9taXNlLnJl
amVjdChzZWNvbmRFcnJvcik7CisgICAgfQorICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7CisKKyAg
cmV0dXJuIGNsb3NlZC5jYXRjaChlID0+IHsKKyAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7
CisgICAgYXNzZXJ0X2VxdWFscyhlLCBmaXJzdEVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qg
d2l0aCB0aGUgZmlyc3QgZXJyb3InKTsKKyAgfSk7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZTog
Y2FsbGluZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHB1bGwg
c2hvdWxkIGNhdXNlIHRoZSBzdHJlYW0gdG8gZXJyb3IgJyArCisgICAnd2l0aCB0aGUgZmlyc3Qg
ZXJyb3InKTsKKworZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNo
ZWNrcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zYzdmMWJiOTI1NDgyYTMyMzMyNjc0ODc1ZThjYmY5NGFmODc2YTVi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzNCBAQAorCitQQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFt
UmVhZGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgCitQQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxl
U3RyZWFtQ29udHJvbGxlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5IAorUEFTUyBSZWFkYWJsZVN0
cmVhbS5wcm90b3R5cGUuY2FuY2VsIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCitQQVNTIFJlYWRh
YmxlU3RyZWFtLnByb3RvdHlwZS5nZXRSZWFkZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKK1BB
U1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnRlZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAor
UEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIG9uIGl0cyBh
cmd1bWVudCAKK1BBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLmNsb3NlZCBlbmZv
cmNlcyBhIGJyYW5kIGNoZWNrIAorUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUu
Y2FuY2VsIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCitQQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVy
LnByb3RvdHlwZS5yZWFkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCitQQVNTIFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyLnByb3RvdHlwZS5yZWxlYXNlTG9jayBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAor
UEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBvbiBp
dHMgYXJndW1lbnQgCitQQVNTIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBjYW4ndCBiZSBnaXZl
biBhIGZ1bGx5LWNvbnN0cnVjdGVkIFJlYWRhYmxlU3RyZWFtIAorUEFTUyBSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXIucHJvdG90eXBlLmNsb3NlIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCitQQVNT
IFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUuZW5xdWV1ZSBlbmZvcmNlcyBhIGJy
YW5kIGNoZWNrIAorUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmVycm9y
IGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCitGQUlMIExvYWQgYnJhbmQtY2hlY2tzLmpzIHdpdGgg
U2hhcmVkV29ya2VyIGFzc2VydF91bnJlYWNoZWQ6IFNoYXJlZFdvcmtlciBpcyB1bmF2YWlsYWJs
ZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK0ZBSUwgVW50aXRsZWQgdW5kZWZpbmVkIGlzIG5v
dCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdldFJlZ2lz
dHJhdGlvbicpCitGQUlMIENhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVj
dG9yIGluZGlyZWN0bHkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwg
Q2FuIGdldCB0aGUgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0
bHkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFibGVTdHJl
YW0ucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIENhbid0IGZpbmQgdmFy
aWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5nZXRS
ZWFkZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJs
ZVN0cmVhbQorRkFJTCBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUudGVlIGVuZm9yY2VzIGEgYnJh
bmQgY2hlY2sgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK1BBU1MgUmVhZGFi
bGVTdHJlYW1SZWFkZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBvbiBpdHMgYXJndW1lbnQgCitG
QUlMIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5jbG9zZWQgZW5mb3JjZXMgYSBicmFu
ZCBjaGVjayB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnUmVhZGFibGVT
dHJlYW1SZWFkZXIucHJvdG90eXBlJykKK0ZBSUwgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90
eXBlLmNhbmNlbCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIHVuZGVmaW5lZCBpcyBub3QgYW4gb2Jq
ZWN0IChldmFsdWF0aW5nICdSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUnKQorRkFJTCBS
ZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVhZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNr
IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdSZWFkYWJsZVN0cmVhbVJl
YWRlci5wcm90b3R5cGUnKQorRkFJTCBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVs
ZWFzZUxvY2sgZW5mb3JjZXMgYSBicmFuZCBjaGVjayB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVj
dCAoZXZhbHVhdGluZyAnUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlJykKK1BBU1MgUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3Vt
ZW50IAorRkFJTCBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgY2FuJ3QgYmUgZ2l2ZW4gYSBmdWxs
eS1jb25zdHJ1Y3RlZCBSZWFkYWJsZVN0cmVhbSBhc3NlcnRfdGhyb3dzOiBDb25zdHJ1Y3Rpbmcg
YSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgc2hvdWxkIHRocm93IGZ1bmN0aW9uICIoKSA9PiBu
ZXcgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKHJlYWxSZWFkYWJsZVN0cmVhbSgpKSIgdGhyZXcg
b2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJl
YW0iICgiUmVmZXJlbmNlRXJyb3IiKSBleHBlY3RlZCBvYmplY3QgIlR5cGVFcnJvciIgKCJUeXBl
RXJyb3IiKQorRkFJTCBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmNsb3NlIGVu
Zm9yY2VzIGEgYnJhbmQgY2hlY2sgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRp
bmcgJ1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUnKQorRkFJTCBSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmVucXVldWUgZW5mb3JjZXMgYSBicmFuZCBjaGVjayB1
bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyLnByb3RvdHlwZScpCitGQUlMIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5
cGUuZXJyb3IgZW5mb3JjZXMgYSBicmFuZCBjaGVjayB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVj
dCAoZXZhbHVhdGluZyAnUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZScpCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3MuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3Ry
ZWFtcy9icmFuZC1jaGVja3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZGZlZDEyM2Q3NmRiODdmN2IzMjAx
OWNjMTYzYjMzNDJmMWEyZDhiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2Jy
YW5kLWNoZWNrcy5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXJz
L3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJicmFuZC1j
aGVja3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsKK3dvcmtlcl90ZXN0
KCdicmFuZC1jaGVja3MuanMnKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJl
YW1zL2JyYW5kLWNoZWNrcy5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3MuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzI1NTNjZjkyZjUyZmQ2ZGMwZTcyM2JhZjZmNzNkNzNlZWI4ZjVmMAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3MuanMKQEAgLTAsMCArMSwx
NTEgQEAKKyd1c2Ugc3RyaWN0JzsKKworaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgeworICBzZWxm
LmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzJyk7CisgIHNlbGYuaW1w
b3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOworfQorCitsZXQgUmVhZGFi
bGVTdHJlYW1SZWFkZXI7CitsZXQgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyOworCit0ZXN0KCgp
ID0+IHsKKworICAvLyBJdCdzIG5vdCBleHBvc2VkIGdsb2JhbGx5LCBidXQgd2UgdGVzdCBhIGZl
dyBvZiBpdHMgcHJvcGVydGllcyBoZXJlLgorICBSZWFkYWJsZVN0cmVhbVJlYWRlciA9IChuZXcg
UmVhZGFibGVTdHJlYW0oKSkuZ2V0UmVhZGVyKCkuY29uc3RydWN0b3I7CisKK30sICdDYW4gZ2V0
IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5Jyk7CisKK3Rl
c3QoKCkgPT4geworCisgIC8vIEl0J3Mgbm90IGV4cG9zZWQgZ2xvYmFsbHksIGJ1dCB3ZSB0ZXN0
IGEgZmV3IG9mIGl0cyBwcm9wZXJ0aWVzIGhlcmUuCisgIG5ldyBSZWFkYWJsZVN0cmVhbSh7Cisg
ICAgc3RhcnQoYykgeworICAgICAgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyID0gYy5jb25zdHJ1
Y3RvcjsKKyAgICB9CisgIH0pOworCit9LCAnQ2FuIGdldCB0aGUgUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHknKTsKKworZnVuY3Rpb24gZmFrZVJlYWRhYmxl
U3RyZWFtKCkgeworICByZXR1cm4geworICAgIGNhbmNlbCgpIHsgcmV0dXJuIFByb21pc2UucmVz
b2x2ZSgpOyB9LAorICAgIGdldFJlYWRlcigpIHsgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbVJl
YWRlcihuZXcgUmVhZGFibGVTdHJlYW0oKSk7IH0sCisgICAgcGlwZVRocm91Z2gob2JqKSB7IHJl
dHVybiBvYmoucmVhZGFibGU7IH0sCisgICAgcGlwZVRvKCkgeyByZXR1cm4gUHJvbWlzZS5yZXNv
bHZlKCk7IH0sCisgICAgdGVlKCkgeyByZXR1cm4gW3JlYWxSZWFkYWJsZVN0cmVhbSgpLCByZWFs
UmVhZGFibGVTdHJlYW0oKV07IH0KKyAgfTsKK30KKworZnVuY3Rpb24gcmVhbFJlYWRhYmxlU3Ry
ZWFtKCkgeworICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Cit9CisKK2Z1bmN0aW9uIGZh
a2VSZWFkYWJsZVN0cmVhbVJlYWRlcigpIHsKKyAgcmV0dXJuIHsKKyAgICBnZXQgY2xvc2VkKCkg
eyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7IH0sCisgICAgY2FuY2VsKCkgeyByZXR1cm4gUHJv
bWlzZS5yZXNvbHZlKCk7IH0sCisgICAgcmVhZCgpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7
IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSk7IH0sCisgICAgcmVsZWFzZUxvY2soKSB7
IHJldHVybjsgfQorICB9OworfQorCitmdW5jdGlvbiBmYWtlUmVhZGFibGVTdHJlYW1Db250cm9s
bGVyKCkgeworICByZXR1cm4geworICAgIGNsb3NlKCkgeyB9LAorICAgIGVucXVldWUoKSB7IH0s
CisgICAgZXJyb3IoKSB7IH0KKyAgfTsKK30KKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIHJl
dHVybiBtZXRob2RSZWplY3RzKHQsIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ2NhbmNlbCcs
IGZha2VSZWFkYWJsZVN0cmVhbSgpKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5j
YW5jZWwgZW5mb3JjZXMgYSBicmFuZCBjaGVjaycpOworCit0ZXN0KCgpID0+IHsKKworICBtZXRo
b2RUaHJvd3MoUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLCAnZ2V0UmVhZGVyJywgZmFrZVJlYWRh
YmxlU3RyZWFtKCkpOworCit9LCAnUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmdldFJlYWRlciBl
bmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7CisKK3Rlc3QoKCkgPT4geworCisgIG1ldGhvZFRocm93
cyhSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICd0ZWUnLCBmYWtlUmVhZGFibGVTdHJlYW0oKSk7
CisKK30sICdSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUudGVlIGVuZm9yY2VzIGEgYnJhbmQgY2hl
Y2snKTsKKwordGVzdCgoKSA9PiB7CisKKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCks
ICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihmYWtlUmVhZGFibGVTdHJlYW0oKSksCisg
ICAgICAgICAgICAgICAgJ0NvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHNob3Vs
ZCB0aHJvdycpOworCit9LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIgZW5mb3JjZXMgYSBicmFuZCBj
aGVjayBvbiBpdHMgYXJndW1lbnQnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIHJldHVy
biBQcm9taXNlLmFsbChbCisgICAgZ2V0dGVyUmVqZWN0cyh0LCBSZWFkYWJsZVN0cmVhbVJlYWRl
ci5wcm90b3R5cGUsICdjbG9zZWQnLCBmYWtlUmVhZGFibGVTdHJlYW1SZWFkZXIoKSksCisgICAg
Z2V0dGVyUmVqZWN0cyh0LCBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUsICdjbG9zZWQn
LCByZWFsUmVhZGFibGVTdHJlYW0oKSkKKyAgXSk7CisKK30sICdSZWFkYWJsZVN0cmVhbVJlYWRl
ci5wcm90b3R5cGUuY2xvc2VkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKKworcHJvbWlzZV90
ZXN0KHQgPT4geworCisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgbWV0aG9kUmVqZWN0cyh0
LCBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUsICdjYW5jZWwnLCBmYWtlUmVhZGFibGVT
dHJlYW1SZWFkZXIoKSksCisgICAgbWV0aG9kUmVqZWN0cyh0LCBSZWFkYWJsZVN0cmVhbVJlYWRl
ci5wcm90b3R5cGUsICdjYW5jZWwnLCByZWFsUmVhZGFibGVTdHJlYW0oKSkKKyAgXSk7CisKK30s
ICdSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUuY2FuY2VsIGVuZm9yY2VzIGEgYnJhbmQg
Y2hlY2snKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIHJldHVybiBQcm9taXNlLmFsbChb
CisgICAgbWV0aG9kUmVqZWN0cyh0LCBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUsICdy
ZWFkJywgZmFrZVJlYWRhYmxlU3RyZWFtUmVhZGVyKCkpLAorICAgIG1ldGhvZFJlamVjdHModCwg
UmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLCAncmVhZCcsIHJlYWxSZWFkYWJsZVN0cmVh
bSgpKQorICBdKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5yZWFkIGVu
Zm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKKwordGVzdCgoKSA9PiB7CisKKyAgbWV0aG9kVGhyb3dz
KFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZSwgJ3JlbGVhc2VMb2NrJywgZmFrZVJlYWRh
YmxlU3RyZWFtUmVhZGVyKCkpOworICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW1SZWFkZXIu
cHJvdG90eXBlLCAncmVsZWFzZUxvY2snLCByZWFsUmVhZGFibGVTdHJlYW0oKSk7CisKK30sICdS
ZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVsZWFzZUxvY2sgZW5mb3JjZXMgYSBicmFu
ZCBjaGVjaycpOworCit0ZXN0KCgpID0+IHsKKworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJy
b3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcihmYWtlUmVhZGFibGVTdHJl
YW0oKSksCisgICAgICAgICAgICAgICAgJ0NvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlciBzaG91bGQgdGhyb3cnKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBl
bmZvcmNlcyBhIGJyYW5kIGNoZWNrIG9uIGl0cyBhcmd1bWVudCcpOworCit0ZXN0KCgpID0+IHsK
KworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlcihyZWFsUmVhZGFibGVTdHJlYW0oKSksCisgICAgICAgICAgICAgICAgJ0Nv
bnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBzaG91bGQgdGhyb3cnKTsKKwor
fSwgJ1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBjYW5cJ3QgYmUgZ2l2ZW4gYSBmdWxseS1jb25z
dHJ1Y3RlZCBSZWFkYWJsZVN0cmVhbScpOworCit0ZXN0KCgpID0+IHsKKworICBtZXRob2RUaHJv
d3MoUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZSwgJ2Nsb3NlJywgZmFrZVJlYWRh
YmxlU3RyZWFtQ29udHJvbGxlcigpKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5w
cm90b3R5cGUuY2xvc2UgZW5mb3JjZXMgYSBicmFuZCBjaGVjaycpOworCit0ZXN0KCgpID0+IHsK
KworICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZSwgJ2Vu
cXVldWUnLCBmYWtlUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKCkpOworCit9LCAnUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5lbnF1ZXVlIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sn
KTsKKwordGVzdCgoKSA9PiB7CisKKyAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtQ29udHJv
bGxlci5wcm90b3R5cGUsICdlcnJvcicsIGZha2VSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIoKSk7
CisKK30sICdSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmVycm9yIGVuZm9yY2Vz
IGEgYnJhbmQgY2hlY2snKTsKKworZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1z
L2NhbmNlbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43ZjI3ZTQ1M2Y5ODdiNjJkN2ZjMjNjZWU0OTY0ZWNkZTMzODkyYTBlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwyNCBAQAorCitGQUlMIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaW50ZWdy
YXRpb24gdGVzdCBvbiBhbiBpbmZpbml0ZSBzdHJlYW0gZGVyaXZlZCBmcm9tIGEgcmFuZG9tIHB1
c2ggc291cmNlIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBv
YmplY3QgIkVycm9yOiBmb3JjZWQgZXJyb3IiCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxh
dGlvbjogY2FuY2VsKHJlYXNvbikgc2hvdWxkIHBhc3MgdGhyb3VnaCB0aGUgZ2l2ZW4gcmVhc29u
IHRvIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0
aW9uOiBjYW5jZWwoKSBvbiBhIGxvY2tlZCBzdHJlYW0gc2hvdWxkIGZhaWwgYW5kIG5vdCBjYWxs
IHRoZSB1bmRlcmx5aW5nIHNvdXJjZSBjYW5jZWwgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNl
bGxhdGlvbjogc2hvdWxkIGZ1bGZpbGwgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayB3ZW50
IGZpbmUgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogcmV0dXJuaW5nIGEgdmFs
dWUgZnJvbSB0aGUgdW5kZXJseWluZyBzb3VyY2UncyBjYW5jZWwgc2hvdWxkIG5vdCBhZmZlY3Qg
dGhlIGZ1bGZpbGxtZW50IHZhbHVlIG9mIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJl
YW0ncyBjYW5jZWwgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogc2hvdWxkIHJl
amVjdCBwcm9taXNlIHdoZW4gY2FuY2VsIGNhbGxiYWNrIHJhaXNlcyBhbiBleGNlcHRpb24gCitQ
QVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291cmNl
J3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQg
YnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBzaG91bGQgZnVsZmlsbCB3aGVuIHRoYXQgb25lIGRvZXMg
KDEpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5n
IHNvdXJjZSdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNlIHJl
dHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgc2hvdWxkIGZ1bGZpbGwgd2hlbiB0aGF0IG9u
ZSBkb2VzICgyKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5k
ZXJseWluZyBzb3VyY2UncyBjYW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJv
bWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtJ3MgY2FuY2VsIHNob3VsZCByZWplY3Qgd2hlbiB0
aGF0IG9uZSBkb2VzIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGNhbmNlbGxp
bmcgYmVmb3JlIHN0YXJ0IGZpbmlzaGVzIHNob3VsZCBwcmV2ZW50IHB1bGwoKSBmcm9tIGJlaW5n
IGNhbGxlZCAKK0ZBSUwgTG9hZCBjYW5jZWwuanMgd2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0X3Vu
cmVhY2hlZDogU2hhcmVkV29ya2VyIGlzIHVuYXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFibGUg
Y29kZQorRkFJTCBVbnRpdGxlZCB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGlu
ZyAnbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9uJykKK0ZBSUwgUmVhZGFi
bGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpbnRlZ3JhdGlvbiB0ZXN0IG9uIGFuIGluZmluaXRlIHN0
cmVhbSBkZXJpdmVkIGZyb20gYSByYW5kb20gcHVzaCBzb3VyY2UgcHJvbWlzZV90ZXN0OiBVbmhh
bmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiRXJyb3I6IGZvcmNlZCBlcnJvciIK
K0ZBSUwgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWwocmVhc29uKSBzaG91bGQg
cGFzcyB0aHJvdWdoIHRoZSBnaXZlbiByZWFzb24gdG8gdGhlIHVuZGVybHlpbmcgc291cmNlIENh
bid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFtIGNh
bmNlbGxhdGlvbjogY2FuY2VsKCkgb24gYSBsb2NrZWQgc3RyZWFtIHNob3VsZCBmYWlsIGFuZCBu
b3QgY2FsbCB0aGUgdW5kZXJseWluZyBzb3VyY2UgY2FuY2VsIENhbid0IGZpbmQgdmFyaWFibGU6
IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogc2hvdWxk
IGZ1bGZpbGwgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayB3ZW50IGZpbmUgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0
aW9uOiByZXR1cm5pbmcgYSB2YWx1ZSBmcm9tIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNl
bCBzaG91bGQgbm90IGFmZmVjdCB0aGUgZnVsZmlsbG1lbnQgdmFsdWUgb2YgdGhlIHByb21pc2Ug
cmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFk
YWJsZVN0cmVhbQorRkFJTCBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHNob3VsZCByZWpl
Y3QgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayByYWlzZXMgYW4gZXhjZXB0aW9uIENhbid0
IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFtIGNhbmNl
bGxhdGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291cmNlJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5z
IGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBz
aG91bGQgZnVsZmlsbCB3aGVuIHRoYXQgb25lIGRvZXMgKDEpIENhbid0IGZpbmQgdmFyaWFibGU6
IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhl
IHVuZGVybHlpbmcgc291cmNlJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhl
IHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBzaG91bGQgZnVsZmlsbCB3
aGVuIHRoYXQgb25lIGRvZXMgKDIpIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFt
CitGQUlMIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291
cmNlJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJu
ZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBzaG91bGQgcmVqZWN0IHdoZW4gdGhhdCBvbmUgZG9l
cyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBSZWFkYWJsZVN0cmVh
bSBjYW5jZWxsYXRpb246IGNhbmNlbGxpbmcgYmVmb3JlIHN0YXJ0IGZpbmlzaGVzIHNob3VsZCBw
cmV2ZW50IHB1bGwoKSBmcm9tIGJlaW5nIGNhbGxlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFk
YWJsZVN0cmVhbQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3Jl
YWRhYmxlLXN0cmVhbXMvY2FuY2VsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc2NzQyOWYxNzAyOTIzNmRj
NGI0MTA4ZDQ1NDQ1MGMwN2VjNmE0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFt
cy9jYW5jZWwuaHRtbApAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vycy9y
ZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3JzLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJjYW5jZWwuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsKK3dvcmtlcl90ZXN0KCdjYW5jZWwuanMnKTsK
Kzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFi
bGUtc3RyZWFtcy9jYW5jZWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODIwMjdkYjNjYmRhZjY0OGQ0ZDA3YjZl
MWI4Yzk0OWRmNDU0OWJiMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jYW5j
ZWwuanMKQEAgLTAsMCArMSwyNDIgQEAKKyd1c2Ugc3RyaWN0JzsKKworaWYgKHNlbGYuaW1wb3J0
U2NyaXB0cykgeworICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxz
LmpzJyk7CisgIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzJyk7
CisgIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOworfQor
Citwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIC8vIFdlYktpdCBlZGl0LiBXZSBmb3JjZSBhIGZh
aWx1cmUgaW4gdGhpcyB0ZXN0cyBmb3Igbm93IGJlY2F1c2UgaXQgaXMgZmxha3kuCisgIHJldHVy
biBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoImZvcmNlZCBlcnJvciIpKTsKKworICBjb25zdCBy
YW5kb21Tb3VyY2UgPSBuZXcgUmFuZG9tUHVzaFNvdXJjZSgpOworCisgIGxldCBjYW5jZWxsYXRp
b25GaW5pc2hlZCA9IGZhbHNlOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Cisg
ICAgc3RhcnQoYykgeworICAgICAgcmFuZG9tU291cmNlLm9uZGF0YSA9IGMuZW5xdWV1ZS5iaW5k
KGMpOworICAgICAgcmFuZG9tU291cmNlLm9uZW5kID0gYy5jbG9zZS5iaW5kKGMpOworICAgICAg
cmFuZG9tU291cmNlLm9uZXJyb3IgPSBjLmVycm9yLmJpbmQoYyk7CisgICAgfSwKKworICAgIHB1
bGwoKSB7CisgICAgICByYW5kb21Tb3VyY2UucmVhZFN0YXJ0KCk7CisgICAgfSwKKworICAgIGNh
bmNlbCgpIHsKKyAgICAgIHJhbmRvbVNvdXJjZS5yZWFkU3RvcCgpOworICAgICAgcmFuZG9tU291
cmNlLm9uZW5kKCk7CisKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAg
ICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgY2FuY2VsbGF0aW9uRmluaXNoZWQg
PSB0cnVlOworICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfSwgMSk7CisgICAgICB9KTsK
KyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIC8v
IFdlIGNhbGwgZGVsYXkgbXVsdGlwbGUgdGltZXMgdG8gYXZvaWQgY2FuY2VsbGluZyB0b28gZWFy
bHkgZm9yIHRoZQorICAvLyBzb3VyY2UgdG8gZW5xdWV1ZSBhdCBsZWFzdCBvbmUgY2h1bmsuCisg
IGNvbnN0IGNhbmNlbCA9IGRlbGF5KDUpLnRoZW4oKCkgPT4gZGVsYXkoNSkpLnRoZW4oKCkgPT4g
ZGVsYXkoNSkpLnRoZW4oKCkgPT4gcmVhZGVyLmNhbmNlbCgpKTsKKworICByZXR1cm4gcmVhZGFi
bGVTdHJlYW1Ub0FycmF5KHJzLCByZWFkZXIpLnRoZW4oY2h1bmtzID0+IHsKKyAgICBhc3NlcnRf
Z3JlYXRlcl90aGFuKGNodW5rcy5sZW5ndGgsIDAsICdhdCBsZWFzdCBvbmUgY2h1bmsgc2hvdWxk
IGJlIHJlYWQnKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNodW5rcy5sZW5ndGg7IGkrKykg
eworICAgICAgYXNzZXJ0X2VxdWFscyhjaHVua3NbaV0ubGVuZ3RoLCAxMjgsICdjaHVuayAnICsg
aSArICcgc2hvdWxkIGhhdmUgMTI4IGJ5dGVzJyk7CisgICAgfQorICAgIGFzc2VydF9mYWxzZShj
YW5jZWxsYXRpb25GaW5pc2hlZCwgJ2l0IGRpZCBub3Qgd2FpdCBmb3IgdGhlIGNhbmNlbGxhdGlv
biBwcm9jZXNzIHRvIGZpbmlzaCBiZWZvcmUgY2xvc2luZycpOworICAgIHJldHVybiBjYW5jZWw7
CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF90cnVlKGNhbmNlbGxhdGlvbkZpbmlzaGVk
LCAnaXQgcmV0dXJucyBhIHByb21pc2UgdGhhdCBpcyBmdWxmaWxsZWQgd2hlbiB0aGUgY2FuY2Vs
bGF0aW9uIGZpbmlzaGVzJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0
aW9uOiBpbnRlZ3JhdGlvbiB0ZXN0IG9uIGFuIGluZmluaXRlIHN0cmVhbSBkZXJpdmVkIGZyb20g
YSByYW5kb20gcHVzaCBzb3VyY2UnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgbGV0IHJlY29yZGVk
UmVhc29uOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKHJl
YXNvbikgeworICAgICAgcmVjb3JkZWRSZWFzb24gPSByZWFzb247CisgICAgfQorICB9KTsKKwor
ICBjb25zdCBwYXNzZWRSZWFzb24gPSBuZXcgRXJyb3IoJ1NvcnJ5LCBpdCBqdXN0IHdhc25cJ3Qg
bWVhbnQgdG8gYmUuJyk7CisgIHJzLmNhbmNlbChwYXNzZWRSZWFzb24pOworCisgIGFzc2VydF9l
cXVhbHMocmVjb3JkZWRSZWFzb24sIHBhc3NlZFJlYXNvbiwKKyAgICAndGhlIGVycm9yIHBhc3Nl
ZCB0byB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2VsIG1ldGhvZCBzaG91bGQgZXF1YWwg
dGhlIG9uZSBwYXNzZWQgdG8gdGhlIHN0cmVhbVwncyBjYW5jZWwnKTsKKworfSwgJ1JlYWRhYmxl
U3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsKHJlYXNvbikgc2hvdWxkIHBhc3MgdGhyb3VnaCB0
aGUgZ2l2ZW4gcmVhc29uIHRvIHRoZSB1bmRlcmx5aW5nIHNvdXJjZScpOworCitwcm9taXNlX3Rl
c3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFy
dChjKSB7CisgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9LAor
ICAgIGNhbmNlbCgpIHsKKyAgICAgIGFzc2VydF91bnJlYWNoZWQoJ3VuZGVybHlpbmcgc291cmNl
IGNhbmNlbCgpIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCcpOworICAgIH0KKyAgfSk7CisK
KyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgcmV0dXJuIHJzLmNhbmNlbCgp
LnRoZW4oKCkgPT4geworICAgIGFzc2VydF91bnJlYWNoZWQoJ2NhbmNlbCgpIHNob3VsZCBiZSBy
ZWplY3RlZCcpOworICB9LCBlID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGUubmFtZSwgJ1R5cGVF
cnJvcicsICdjYW5jZWwoKSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCBhIFR5cGVFcnJvcicpOwor
ICB9KS50aGVuKCgpID0+IHsKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgfSkudGhlbihy
ZXN1bHQgPT4geworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2En
LCBkb25lOiBmYWxzZSB9LCAncmVhZCgpIHNob3VsZCBzdGlsbCB3b3JrIGFmdGVyIHRoZSBhdHRl
bXB0ZWQgY2FuY2VsJyk7CisgICAgcmV0dXJuIHJlYWRlci5jbG9zZWQ7CisgIH0pOworCit9LCAn
UmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWwoKSBvbiBhIGxvY2tlZCBzdHJlYW0g
c2hvdWxkIGZhaWwgYW5kIG5vdCBjYWxsIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSBjYW5jZWwnKTsK
KworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgY2FuY2VsUmVjZWl2ZWQgPSBmYWxzZTsK
KyAgY29uc3QgY2FuY2VsUmVhc29uID0gbmV3IEVycm9yKCdJIGFtIHRpcmVkIG9mIHRoaXMgc3Ry
ZWFtLCBJIHByZWZlciB0byBjYW5jZWwgaXQnKTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgIGNhbmNlbChyZWFzb24pIHsKKyAgICAgIGNhbmNlbFJlY2VpdmVkID0gdHJ1
ZTsKKyAgICAgIGFzc2VydF9lcXVhbHMocmVhc29uLCBjYW5jZWxSZWFzb24sICdjYW5jZWxsYXRp
b24gcmVhc29uIGdpdmVuIHRvIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSBzaG91bGQgYmUgZXF1YWwg
dG8gdGhlIG9uZSBwYXNzZWQnKTsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBycy5jYW5jZWwo
Y2FuY2VsUmVhc29uKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfdHJ1ZShjYW5jZWxSZWNlaXZl
ZCk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBzaG91bGQgZnVs
ZmlsbCBwcm9taXNlIHdoZW4gY2FuY2VsIGNhbGxiYWNrIHdlbnQgZmluZScpOworCitwcm9taXNl
X3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBj
YW5jZWwoKSB7CisgICAgICByZXR1cm4gJ0hlbGxvJzsKKyAgICB9CisgIH0pOworCisgIHJldHVy
biBycy5jYW5jZWwoKS50aGVuKHYgPT4geworICAgIGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVk
LCAnY2FuY2VsKCkgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSBmdWxmaWxsZWQgd2l0aCB1bmRlZmlu
ZWQnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHJldHVybmlu
ZyBhIHZhbHVlIGZyb20gdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCBzaG91bGQgbm90
IGFmZmVjdCB0aGUgZnVsZmlsbG1lbnQgdmFsdWUgb2YgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkg
dGhlIHN0cmVhbVwncyBjYW5jZWwnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25z
dCB0aHJvd25FcnJvciA9IG5ldyBFcnJvcigndGVzdCcpOworICBsZXQgY2FuY2VsQ2FsbGVkID0g
ZmFsc2U7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGNhbmNlbCgp
IHsKKyAgICAgIGNhbmNlbENhbGxlZCA9IHRydWU7CisgICAgICB0aHJvdyB0aHJvd25FcnJvcjsK
KyAgICB9CisgIH0pOworCisgIHJldHVybiBycy5jYW5jZWwoJ3Rlc3QnKS50aGVuKCgpID0+IHsK
KyAgICBhc3NlcnRfdW5yZWFjaGVkKCdjYW5jZWwgc2hvdWxkIHJlamVjdCcpOworICB9LCBlID0+
IHsKKyAgICBhc3NlcnRfdHJ1ZShjYW5jZWxDYWxsZWQpOworICAgIGFzc2VydF9lcXVhbHMoZSwg
dGhyb3duRXJyb3IpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjog
c2hvdWxkIHJlamVjdCBwcm9taXNlIHdoZW4gY2FuY2VsIGNhbGxiYWNrIHJhaXNlcyBhbiBleGNl
cHRpb24nKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBjYW5jZWxSZWFzb24g
PSBuZXcgRXJyb3IoJ3Rlc3QnKTsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
CisgICAgY2FuY2VsKGVycm9yKSB7CisgICAgICBhc3NlcnRfZXF1YWxzKGVycm9yLCBjYW5jZWxS
ZWFzb24pOworICAgICAgcmV0dXJuIGRlbGF5KDEpOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJu
IHJzLmNhbmNlbChjYW5jZWxSZWFzb24pOworCit9LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0
aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEg
cHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbVwncyBjYW5jZWwgc2hv
dWxkIGZ1bGZpbGwgd2hlbiB0aGF0IG9uZSBkb2VzICgxKScpOworCitwcm9taXNlX3Rlc3QoKCkg
PT4geworCisgIGxldCByZXNvbHZlU291cmNlQ2FuY2VsUHJvbWlzZTsKKyAgbGV0IHNvdXJjZUNh
bmNlbFByb21pc2VIYXNGdWxmaWxsZWQgPSBmYWxzZTsKKworICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKCkgeworICAgICAgY29uc3Qgc291cmNlQ2FuY2VsUHJv
bWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gcmVzb2x2ZVNvdXJjZUNhbmNlbFByb21pc2Ug
PSByZXNvbHZlKTsKKworICAgICAgc291cmNlQ2FuY2VsUHJvbWlzZS50aGVuKCgpID0+IHsKKyAg
ICAgICAgc291cmNlQ2FuY2VsUHJvbWlzZUhhc0Z1bGZpbGxlZCA9IHRydWU7CisgICAgICB9KTsK
KworICAgICAgcmV0dXJuIHNvdXJjZUNhbmNlbFByb21pc2U7CisgICAgfQorICB9KTsKKworICBz
ZXRUaW1lb3V0KCgpID0+IHJlc29sdmVTb3VyY2VDYW5jZWxQcm9taXNlKCdIZWxsbycpLCAxKTsK
KworICByZXR1cm4gcnMuY2FuY2VsKCkudGhlbih2YWx1ZSA9PiB7CisgICAgYXNzZXJ0X3RydWUo
c291cmNlQ2FuY2VsUHJvbWlzZUhhc0Z1bGZpbGxlZCwgJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBz
aG91bGQgYmUgZnVsZmlsbGVkIG9ubHkgYWZ0ZXIgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhl
IHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCcpOworICAgIGFzc2VydF9lcXVhbHModmFsdWUs
IHVuZGVmaW5lZCwgJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgZnVsZmlsbGVkIHdp
dGggdW5kZWZpbmVkJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9u
OiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJv
bWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbVwncyBjYW5jZWwgc2hvdWxk
IGZ1bGZpbGwgd2hlbiB0aGF0IG9uZSBkb2VzICgyKScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4g
eworCisgIGxldCByZWplY3RTb3VyY2VDYW5jZWxQcm9taXNlOworICBsZXQgc291cmNlQ2FuY2Vs
UHJvbWlzZUhhc1JlamVjdGVkID0gZmFsc2U7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgIGNhbmNlbCgpIHsKKyAgICAgIGNvbnN0IHNvdXJjZUNhbmNlbFByb21pc2Ug
PSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiByZWplY3RTb3VyY2VDYW5jZWxQcm9t
aXNlID0gcmVqZWN0KTsKKworICAgICAgc291cmNlQ2FuY2VsUHJvbWlzZS5jYXRjaCgoKSA9PiB7
CisgICAgICAgIHNvdXJjZUNhbmNlbFByb21pc2VIYXNSZWplY3RlZCA9IHRydWU7CisgICAgICB9
KTsKKworICAgICAgcmV0dXJuIHNvdXJjZUNhbmNlbFByb21pc2U7CisgICAgfQorICB9KTsKKwor
ICBjb25zdCBlcnJvckluQ2FuY2VsID0gbmV3IEVycm9yKCdTb3JyeSwgaXQganVzdCB3YXNuXCd0
IG1lYW50IHRvIGJlLicpOworCisgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0U291cmNlQ2FuY2Vs
UHJvbWlzZShlcnJvckluQ2FuY2VsKSwgMSk7CisKKyAgcmV0dXJuIHJzLmNhbmNlbCgpLnRoZW4o
KCkgPT4geworICAgIGFzc2VydF91bnJlYWNoZWQoJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91
bGQgYmUgcmVqZWN0ZWQnKTsKKyAgfSwgciA9PiB7CisgICAgYXNzZXJ0X3RydWUoc291cmNlQ2Fu
Y2VsUHJvbWlzZUhhc1JlamVjdGVkLCAnY2FuY2VsKCkgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSBy
ZWplY3RlZCBvbmx5IGFmdGVyIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSB1bmRlcmx5aW5n
IHNvdXJjZVwncyBjYW5jZWwnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHIsIGVycm9ySW5DYW5jZWws
ICdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdGhlIHVuZGVy
bHlpbmcgc291cmNlXCdzIHJlamVjdGlvbiByZWFzb24nKTsKKyAgfSk7CisKK30sICdSZWFkYWJs
ZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBjYW5jZWwg
bWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3Ry
ZWFtXCdzIGNhbmNlbCBzaG91bGQgcmVqZWN0IHdoZW4gdGhhdCBvbmUgZG9lcycpOworCitwcm9t
aXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICBzdGFydCgpIHsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgoKSA9PiB7fSk7CisgICAgfSwK
KyAgICBwdWxsKCkgeworICAgICAgYXNzZXJ0X3VucmVhY2hlZCgncHVsbCBzaG91bGQgbm90IGhh
dmUgYmVlbiBjYWxsZWQnKTsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBQcm9taXNlLmFsbChb
cnMuY2FuY2VsKCksIHJzLmdldFJlYWRlcigpLmNsb3NlZF0pOworCit9LCAnUmVhZGFibGVTdHJl
YW0gY2FuY2VsbGF0aW9uOiBjYW5jZWxsaW5nIGJlZm9yZSBzdGFydCBmaW5pc2hlcyBzaG91bGQg
cHJldmVudCBwdWxsKCkgZnJvbSBiZWluZyBjYWxsZWQnKTsKKworZG9uZSgpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFw
aS9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdy
YXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5ODgwZjYzOWVkZDM4MDMwN2VjMGRjMTE4
ODQ1NjYwOTBjY2JjNjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvY291bnQt
cXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBA
QAorCitQQVNTIENhbiBjb25zdHJ1Y3QgYSByZWFkYWJsZSBzdHJlYW0gd2l0aCBhIHZhbGlkIENv
dW50UXVldWluZ1N0cmF0ZWd5IAorUEFTUyBDb3JyZWN0bHkgZ292ZXJucyBhIFJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlcidzIGRlc2lyZWRTaXplIHByb3BlcnR5IChIV00gPSAwKSAKK1BBU1MgQ29y
cmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIncyBkZXNpcmVkU2l6ZSBw
cm9wZXJ0eSAoSFdNID0gMSkgCitQQVNTIENvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyJ3MgZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDQpIAorRkFJTCBMb2Fk
IGNvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uanMgd2l0aCBTaGFyZWRXb3JrZXIg
YXNzZXJ0X3VucmVhY2hlZDogU2hhcmVkV29ya2VyIGlzIHVuYXZhaWxhYmxlIFJlYWNoZWQgdW5y
ZWFjaGFibGUgY29kZQorRkFJTCBVbnRpdGxlZCB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAo
ZXZhbHVhdGluZyAnbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9uJykKK0ZB
SUwgQ2FuIGNvbnN0cnVjdCBhIHJlYWRhYmxlIHN0cmVhbSB3aXRoIGEgdmFsaWQgQ291bnRRdWV1
aW5nU3RyYXRlZ3kgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgQ29y
cmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIncyBkZXNpcmVkU2l6ZSBw
cm9wZXJ0eSAoSFdNID0gMCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZB
SUwgQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIncyBkZXNpcmVk
U2l6ZSBwcm9wZXJ0eSAoSFdNID0gMSkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJl
YW0KK0ZBSUwgQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIncyBk
ZXNpcmVkU2l6ZSBwcm9wZXJ0eSAoSFdNID0gNCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFi
bGVTdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3Ry
YXRlZ3ktaW50ZWdyYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0
cmF0ZWd5LWludGVncmF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmMzODE2NmMzMDM1ODg4NjVhZDli
NDRkYTFhOTg5OWMxZmM3NmQ2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9j
b3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmh0bWwKQEAgLTAsMCArMSwxMiBAQAor
PCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOword29ya2VyX3Rlc3QoJ2NvdW50
LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uanMnKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFw
aS9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uanMg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBp
L3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mYjlhMWFhMmJhNjMxZWRiYjlkZTE4M2YxMDY2ZTYzYTM5Mjc3ZmNkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50
ZWdyYXRpb24uanMKQEAgLTAsMCArMSwyMTMgQEAKKyd1c2Ugc3RyaWN0JzsKKworaWYgKHNlbGYu
aW1wb3J0U2NyaXB0cykgeworICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMnKTsKK30KKwordGVzdCgoKSA9PiB7CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9
LCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0pKTsKKworfSwg
J0NhbiBjb25zdHJ1Y3QgYSByZWFkYWJsZSBzdHJlYW0gd2l0aCBhIHZhbGlkIENvdW50UXVldWlu
Z1N0cmF0ZWd5Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7
CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAorICAgIHsKKyAgICAgIHN0YXJ0KGMp
IHsKKyAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICB9CisgICAgfSwKKyAgICBuZXcgQ291
bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAwIH0pCisgICk7CisgIGNvbnN0IHJl
YWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNp
cmVkU2l6ZSwgMCwgJzAgcmVhZHMsIDAgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAw
Jyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xs
ZXIuZGVzaXJlZFNpemUsIC0xLCAnMCByZWFkcywgMSBlbnF1ZXVlOiBkZXNpcmVkU2l6ZSBzaG91
bGQgYmUgLTEnKTsKKyAgY29udHJvbGxlci5lbnF1ZXVlKCdiJyk7CisgIGFzc2VydF9lcXVhbHMo
Y29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTIsICcwIHJlYWRzLCAyIGVucXVldWVzOiBkZXNpcmVk
U2l6ZSBzaG91bGQgYmUgLTInKTsKKyAgY29udHJvbGxlci5lbnF1ZXVlKCdjJyk7CisgIGFzc2Vy
dF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTMsICcwIHJlYWRzLCAzIGVucXVldWVz
OiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTMnKTsKKyAgY29udHJvbGxlci5lbnF1ZXVlKCdkJyk7
CisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTQsICcwIHJlYWRzLCA0
IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTQnKTsKKworICByZXR1cm4gcmVhZGVy
LnJlYWQoKQorICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFs
cyhyZXN1bHQsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICcxc3QgcmVhZCBnaXZlcyBiYWNrIHRoZSAxc3QgY2h1bmsgZW5xdWV1ZWQgKHF1
ZXVlIG5vdyBjb250YWlucyAzIGNodW5rcyknKTsKKyAgICAgIHJldHVybiByZWFkZXIucmVhZCgp
OworICAgIH0pCisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1
YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJzJuZCByZWFkIGdpdmVzIGJhY2sgdGhlIDJuZCBjaHVuayBlbnF1ZXVlZCAo
cXVldWUgbm93IGNvbnRhaW5zIDIgY2h1bmtzKScpOworICAgICAgcmV0dXJuIHJlYWRlci5yZWFk
KCk7CisgICAgfSkKKyAgICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYycsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnM3JkIHJlYWQgZ2l2ZXMgYmFjayB0aGUgM3JkIGNodW5rIGVucXVldWVk
IChxdWV1ZSBub3cgY29udGFpbnMgMSBjaHVuayknKTsKKworICAgICAgYXNzZXJ0X2VxdWFscyhj
b250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzMgcmVhZHMsIDQgZW5xdWV1ZXM6IGRlc2lyZWRT
aXplIHNob3VsZCBiZSAtMScpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdlJyk7CisgICAg
ICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0yLCAnMyByZWFkcywgNSBl
bnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7CisKKyAgICAgIHJldHVybiByZWFk
ZXIucmVhZCgpOworICAgIH0pCisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2QnLCBkb25lOiBmYWxzZSB9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJzR0aCByZWFkIGdpdmVzIGJhY2sgdGhlIDR0aCBjaHVuayBl
bnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDEgY2h1bmtzKScpOworICAgICAgcmV0dXJuIHJl
YWRlci5yZWFkKCk7CisKKyAgICB9KS50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdlJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICc1dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA1dGggY2h1bmsgZW5x
dWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAwIGNodW5rcyknKTsKKworICAgICAgYXNzZXJ0X2Vx
dWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnNSByZWFkcywgNSBlbnF1ZXVlczogZGVz
aXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZicpOwor
ICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzUgcmVhZHMs
IDYgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMScpOworICAgICAgY29udHJvbGxl
ci5lbnF1ZXVlKCdnJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNp
emUsIC0yLCAnNSByZWFkcywgNyBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7
CisgICAgfSk7CisKK30sICdDb3JyZWN0bHkgZ292ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29udHJv
bGxlclwncyBkZXNpcmVkU2l6ZSBwcm9wZXJ0eSAoSFdNID0gMCknKTsKKworcHJvbWlzZV90ZXN0
KCgpID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oCisgICAgeworICAgICAgc3RhcnQoYykgeworICAgICAgICBjb250cm9sbGVyID0gYzsK
KyAgICAgIH0KKyAgICB9LAorICAgIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRl
ck1hcms6IDEgfSkKKyAgKTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnMCByZWFkcywgMCBlbnF1
ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEnKTsKKyAgY29udHJvbGxlci5lbnF1ZXVlKCdh
Jyk7CisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzAgcmVhZHMs
IDEgZW5xdWV1ZTogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKKyAgY29udHJvbGxlci5lbnF1
ZXVlKCdiJyk7CisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICcw
IHJlYWRzLCAyIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKKyAgY29udHJv
bGxlci5lbnF1ZXVlKCdjJyk7CisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6
ZSwgLTIsICcwIHJlYWRzLCAzIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTInKTsK
KyAgY29udHJvbGxlci5lbnF1ZXVlKCdkJyk7CisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5k
ZXNpcmVkU2l6ZSwgLTMsICcwIHJlYWRzLCA0IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQg
YmUgLTMnKTsKKworICByZXR1cm4gcmVhZGVyLnJlYWQoKQorICAgIC50aGVuKHJlc3VsdCA9PiB7
CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdhJywgZG9uZTog
ZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICcxc3QgcmVhZCBnaXZlcyBiYWNr
IHRoZSAxc3QgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAzIGNodW5rcyknKTsK
KyAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICAgIH0pCisgICAgLnRoZW4ocmVzdWx0ID0+
IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2InLCBkb25l
OiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJzJuZCByZWFkIGdpdmVzIGJh
Y2sgdGhlIDJuZCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDIgY2h1bmtzKScp
OworICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgICAgfSkKKyAgICAudGhlbihyZXN1bHQg
PT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYycsIGRv
bmU6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnM3JkIHJlYWQgZ2l2ZXMg
YmFjayB0aGUgM3JkIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMSBjaHVuaykn
KTsKKworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnMyBy
ZWFkcywgNCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKKyAgICAgIGNvbnRy
b2xsZXIuZW5xdWV1ZSgnZScpOworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2ly
ZWRTaXplLCAtMSwgJzMgcmVhZHMsIDUgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAt
MScpOworCisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgICB9KQorICAgIC50aGVuKHJl
c3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdk
JywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICc0dGggcmVhZCBn
aXZlcyBiYWNrIHRoZSA0dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNo
dW5rcyknKTsKKyAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICAgIH0pCisgICAgLnRoZW4o
cmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTog
J2UnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJzV0aCByZWFk
IGdpdmVzIGJhY2sgdGhlIDV0aCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDAg
Y2h1bmtzKScpOworCisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUs
IDEsICc1IHJlYWRzLCA1IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMScpOworICAg
ICAgY29udHJvbGxlci5lbnF1ZXVlKCdmJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xs
ZXIuZGVzaXJlZFNpemUsIDAsICc1IHJlYWRzLCA2IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91
bGQgYmUgMCcpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdnJyk7CisgICAgICBhc3NlcnRf
ZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnNSByZWFkcywgNyBlbnF1ZXVlczog
ZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisgICAgfSk7CisKK30sICdDb3JyZWN0bHkgZ292
ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlclwncyBkZXNpcmVkU2l6ZSBwcm9wZXJ0eSAo
SFdNID0gMSknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgY29udHJvbGxlcjsK
KyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oCisgICAgeworICAgICAgc3RhcnQoYykg
eworICAgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgIH0KKyAgICB9LAorICAgIG5ldyBDb3Vu
dFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSkKKyAgKTsKKyAgY29uc3QgcmVh
ZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2ly
ZWRTaXplLCA0LCAnMCByZWFkcywgMCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDQn
KTsKKyAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxl
ci5kZXNpcmVkU2l6ZSwgMywgJzAgcmVhZHMsIDEgZW5xdWV1ZTogZGVzaXJlZFNpemUgc2hvdWxk
IGJlIDMnKTsKKyAgY29udHJvbGxlci5lbnF1ZXVlKCdiJyk7CisgIGFzc2VydF9lcXVhbHMoY29u
dHJvbGxlci5kZXNpcmVkU2l6ZSwgMiwgJzAgcmVhZHMsIDIgZW5xdWV1ZXM6IGRlc2lyZWRTaXpl
IHNob3VsZCBiZSAyJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOworICBhc3NlcnRfZXF1
YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICcwIHJlYWRzLCAzIGVucXVldWVzOiBkZXNp
cmVkU2l6ZSBzaG91bGQgYmUgMScpOworICBjb250cm9sbGVyLmVucXVldWUoJ2QnKTsKKyAgYXNz
ZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnMCByZWFkcywgNCBlbnF1ZXVl
czogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKKyAgY29udHJvbGxlci5lbnF1ZXVlKCdlJyk7
CisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICcwIHJlYWRzLCA1
IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKKyAgY29udHJvbGxlci5lbnF1
ZXVlKCdmJyk7CisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTIsICcw
IHJlYWRzLCA2IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTInKTsKKworCisgIHJl
YWRlci5yZWFkKCkKKyAgICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnMXN0IHJlYWQgZ2l2ZXMgYmFjayB0aGUgMXN0IGNodW5rIGVucXVldWVk
IChxdWV1ZSBub3cgY29udGFpbnMgNSBjaHVua3MpJyk7CisgICAgICByZXR1cm4gcmVhZGVyLnJl
YWQoKTsKKyAgICB9KQorICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0
X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcybmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAybmQgY2h1bmsgZW5xdWV1
ZWQgKHF1ZXVlIG5vdyBjb250YWlucyA0IGNodW5rcyknKTsKKworICAgICAgYXNzZXJ0X2VxdWFs
cyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnMiByZWFkcywgNiBlbnF1ZXVlczogZGVzaXJl
ZFNpemUgc2hvdWxkIGJlIDAnKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZycpOworICAg
ICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzIgcmVhZHMsIDcg
ZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMScpOworCisgICAgICByZXR1cm4gcmVh
ZGVyLnJlYWQoKTsKKyAgICB9KQorICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRf
b2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFsc2UgfSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICczcmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAzcmQgY2h1bmsg
ZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyA0IGNodW5rcyknKTsKKyAgICAgIHJldHVybiBy
ZWFkZXIucmVhZCgpOworICAgIH0pCisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2Vy
dF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2QnLCBkb25lOiBmYWxzZSB9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJzR0aCByZWFkIGdpdmVzIGJhY2sgdGhlIDR0aCBjaHVu
ayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDMgY2h1bmtzKScpOworICAgICAgcmV0dXJu
IHJlYWRlci5yZWFkKCk7CisgICAgfSkKKyAgICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZScsIGRvbmU6IGZhbHNlIH0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnNXRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNXRoIGNo
dW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMiBjaHVua3MpJyk7CisgICAgICByZXR1
cm4gcmVhZGVyLnJlYWQoKTsKKyAgICB9KQorICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdmJywgZG9uZTogZmFsc2UgfSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICc2dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA2dGgg
Y2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAwIGNodW5rcyknKTsKKworICAgICAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAzLCAnNiByZWFkcywgNyBlbnF1
ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDMnKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnaCcpOworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAyLCAn
NiByZWFkcywgOCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDInKTsKKyAgICAgIGNv
bnRyb2xsZXIuZW5xdWV1ZSgnaScpOworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRl
c2lyZWRTaXplLCAxLCAnNiByZWFkcywgOSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJl
IDEnKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnaicpOworICAgICAgYXNzZXJ0X2VxdWFs
cyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnNiByZWFkcywgMTAgZW5xdWV1ZXM6IGRlc2ly
ZWRTaXplIHNob3VsZCBiZSAwJyk7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2snKTsKKyAg
ICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICc2IHJlYWRzLCAx
MSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisgICAgfSk7CisKK30sICdD
b3JyZWN0bHkgZ292ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlclwncyBkZXNpcmVkU2l6
ZSBwcm9wZXJ0eSAoSFdNID0gNCknKTsKKworZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1z
dHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMv
Z2FyYmFnZS1jb2xsZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDM3NzBjNjc0MTY0
ZTA2MThjZmUwMzAwOGZjODc2ZjI0YTEyNzAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1z
dHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAor
CitQQVNTIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBtZXRob2RzIHNob3VsZCBjb250aW51ZSB3
b3JraW5nIHByb3Blcmx5IHdoZW4gc2NyaXB0cyBsb3NlIHRoZWlyIHJlZmVyZW5jZSB0byB0aGUg
cmVhZGFibGUgc3RyZWFtIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91
bGQgZnVsZmlsbCBldmVuIGlmIHRoZSBzdHJlYW0gYW5kIHJlYWRlciBKUyByZWZlcmVuY2VzIGFy
ZSBsb3N0IAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgcmVqZWN0
IGV2ZW4gaWYgc3RyZWFtIGFuZCByZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCAKK1BBU1Mg
R2FyYmFnZS1jb2xsZWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgc2hvdWxkIG5vdCB1bmxv
Y2sgaXRzIHN0cmVhbSAKK0ZBSUwgTG9hZCBnYXJiYWdlLWNvbGxlY3Rpb24uanMgd2l0aCBTaGFy
ZWRXb3JrZXIgYXNzZXJ0X3VucmVhY2hlZDogU2hhcmVkV29ya2VyIGlzIHVuYXZhaWxhYmxlIFJl
YWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBVbnRpdGxlZCB1bmRlZmluZWQgaXMgbm90IGFu
IG9iamVjdCAoZXZhbHVhdGluZyAnbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0cmF0
aW9uJykKK0ZBSUwgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIG1ldGhvZHMgc2hvdWxkIGNvbnRp
bnVlIHdvcmtpbmcgcHJvcGVybHkgd2hlbiBzY3JpcHRzIGxvc2UgdGhlaXIgcmVmZXJlbmNlIHRv
IHRoZSByZWFkYWJsZSBzdHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0K
K0ZBSUwgUmVhZGFibGVTdHJlYW0gY2xvc2VkIHByb21pc2Ugc2hvdWxkIGZ1bGZpbGwgZXZlbiBp
ZiB0aGUgc3RyZWFtIGFuZCByZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBSZWFkYWJsZVN0cmVhbSBjbG9zZWQgcHJv
bWlzZSBzaG91bGQgcmVqZWN0IGV2ZW4gaWYgc3RyZWFtIGFuZCByZWFkZXIgSlMgcmVmZXJlbmNl
cyBhcmUgbG9zdCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBHYXJi
YWdlLWNvbGxlY3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBzaG91bGQgbm90IHVubG9jayBp
dHMgc3RyZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1h
cGkvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3Ry
ZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMzhlZDIwNTM0YzIwNjVk
NTdhZmYyY2Y0YTg0YzY3YTk1OGRhMjRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJl
YW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48L3NjcmlwdD4KKworPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJnYXJiYWdlLWNvbGxlY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyd1c2Ugc3Ry
aWN0JzsKK3dvcmtlcl90ZXN0KCdnYXJiYWdlLWNvbGxlY3Rpb24uanMnKTsKKzwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFi
bGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmIwMGM5NDZiYmI1
MmIyM2VmNmVkOGZjZDM0MGRiOTBmZTM5ZGU4MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUt
c3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uanMKQEAgLTAsMCArMSw3NSBAQAorJ3VzZSBzdHJp
Y3QnOworCitpZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7CisgIHNlbGYuaW1wb3J0U2NyaXB0cygn
Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMnKTsKKyAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Cit9CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAg
bGV0IGNvbnRyb2xsZXI7CisgIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgewor
ICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKworICBnYXJiYWdlQ29sbGVjdCgp
OworCisgIHJldHVybiBkZWxheSg1MCkudGhlbigoKSA9PiB7CisgICAgY29udHJvbGxlci5jbG9z
ZSgpOworICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjb250cm9sbGVy
LmNsb3NlKCksICdjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IgdGhlIHNlY29uZCB0aW1l
Jyk7CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGNvbnRyb2xsZXIu
ZXJyb3IoKSwgJ2Vycm9yIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciBvbiBhIGNsb3NlZCBzdHJl
YW0nKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgbWV0aG9kcyBzaG91
bGQgY29udGludWUgd29ya2luZyBwcm9wZXJseSB3aGVuIHNjcmlwdHMgbG9zZSB0aGVpciByZWZl
cmVuY2UgdG8gdGhlICcgKworICAgJ3JlYWRhYmxlIHN0cmVhbScpOworCitwcm9taXNlX3Rlc3Qo
KCkgPT4geworCisgIGxldCBjb250cm9sbGVyOworCisgIGNvbnN0IGNsb3NlZFByb21pc2UgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBj
OworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOworCisgIGdhcmJhZ2VDb2xsZWN0KCk7
CisKKyAgcmV0dXJuIGRlbGF5KDUwKS50aGVuKCgpID0+IGNvbnRyb2xsZXIuY2xvc2UoKSkudGhl
bigoKSA9PiBjbG9zZWRQcm9taXNlKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNsb3NlZCBwcm9t
aXNlIHNob3VsZCBmdWxmaWxsIGV2ZW4gaWYgdGhlIHN0cmVhbSBhbmQgcmVhZGVyIEpTIHJlZmVy
ZW5jZXMgYXJlIGxvc3QnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHRoZUVy
cm9yID0gbmV3IEVycm9yKCdib28nKTsKKyAgbGV0IGNvbnRyb2xsZXI7CisKKyAgY29uc3QgY2xv
c2VkUHJvbWlzZSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAg
Y29udHJvbGxlciA9IGM7CisgICAgfQorICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7CisKKyAgZ2Fy
YmFnZUNvbGxlY3QoKTsKKworICByZXR1cm4gZGVsYXkoNTApLnRoZW4oKCkgPT4gY29udHJvbGxl
ci5lcnJvcih0aGVFcnJvcikpCisgICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiBwcm9taXNl
X3JlamVjdHModCwgdGhlRXJyb3IsIGNsb3NlZFByb21pc2UpKTsKKworfSwgJ1JlYWRhYmxlU3Ry
ZWFtIGNsb3NlZCBwcm9taXNlIHNob3VsZCByZWplY3QgZXZlbiBpZiBzdHJlYW0gYW5kIHJlYWRl
ciBKUyByZWZlcmVuY2VzIGFyZSBsb3N0Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oe30pOworCisgIHJzLmdldFJlYWRlcigpOwor
CisgIGdhcmJhZ2VDb2xsZWN0KCk7CisKKyAgcmV0dXJuIGRlbGF5KDUwKS50aGVuKCgpID0+IGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwKKyAgICAn
b2xkIHJlYWRlciBzaG91bGQgc3RpbGwgYmUgbG9ja2luZyB0aGUgc3RyZWFtIGV2ZW4gYWZ0ZXIg
Z2FyYmFnZSBjb2xsZWN0aW9uJykpOworCit9LCAnR2FyYmFnZS1jb2xsZWN0aW5nIGEgUmVhZGFi
bGVTdHJlYW1SZWFkZXIgc2hvdWxkIG5vdCB1bmxvY2sgaXRzIHN0cmVhbScpOworCitkb25lKCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRh
YmxlLXN0cmVhbXMvZ2VuZXJhbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzViNWQ2Zjk0NDc1
MTkwMWYxYzY0MjcyMjA4OGE0YjJhNDk5MmQ2OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUt
c3RyZWFtcy9nZW5lcmFsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcyIEBACisKK1BBU1MgUmVh
ZGFibGVTdHJlYW0gY2FuIGJlIGNvbnN0cnVjdGVkIHdpdGggbm8gZXJyb3JzIAorUEFTUyBSZWFk
YWJsZVN0cmVhbSBjYW4ndCBiZSBjb25zdHJ1Y3RlZCB3aXRoIGdhcmJhZ2UgCitGQUlMIFJlYWRh
YmxlU3RyZWFtIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3Bl
cnRpZXMgYXNzZXJ0X2ZhbHNlOiBtZXRob2Qgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlIGV4cGVj
dGVkIGZhbHNlIGdvdCB0cnVlCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHNob3Vs
ZCB0aHJvdyBmb3Igbm9uLWZ1bmN0aW9uIHN0YXJ0IGFyZ3VtZW50cyAKK1BBU1MgUmVhZGFibGVT
dHJlYW0gY29uc3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgY2FuY2VsIGFyZ3Vt
ZW50IAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2Fy
YmFnZSBhcyBwdWxsIGFyZ3VtZW50IAorRkFJTCBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQg
YmUgY2FsbGVkIHdpdGggdGhlIHByb3BlciBwYXJhbWV0ZXJzIGFzc2VydF9mYWxzZTogY2xvc2Ug
c2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlIGV4cGVjdGVkIGZhbHNlIGdvdCB0cnVlCitQQVNTIFJl
YWRhYmxlU3RyZWFtIHN0YXJ0IGNvbnRyb2xsZXIgcGFyYW1ldGVyIHNob3VsZCBiZSBleHRlbnNp
YmxlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBjYWxsIHN0YXJ0IG1l
dGhvZCB3aXRoaW4gcHJvdG90eXBlIGNoYWluIG9mIGl0cyBzb3VyY2UgCitQQVNTIFJlYWRhYmxl
U3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgCitQQVNTIFJl
YWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5k
IHJlamVjdCBpdCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gc2hvdWxkIGJlIGFibGUgdG8gZW5xdWV1
ZSBkaWZmZXJlbnQgb2JqZWN0cy4gCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBpZiBwdWxsIHJlamVj
dHMsIGl0IHNob3VsZCBlcnJvciB0aGUgc3RyZWFtIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hv
dWxkIG9ubHkgY2FsbCBwdWxsIG9uY2UgdXBvbiBzdGFydGluZyB0aGUgc3RyZWFtIAorUEFTUyBS
ZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCB3aGVuIHRyeWluZyB0byByZWFkIGZyb20g
YSBzdGFydGVkLCBlbXB0eSBzdHJlYW0gCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25s
eSBjYWxsIHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGJlZm9yZSBz
dGFydCBmdWxmaWxscyAKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVs
bCBvbmNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSByZWFkIGZyb20gYWZ0ZXIgc3RhcnQgZnVsZmls
bHMgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIGluIHJlYWN0aW9uIHRv
IHJlYWQoKWluZyB0aGUgbGFzdCBjaHVuaywgaWYgbm90IGRyYWluaW5nIAorUEFTUyBSZWFkYWJs
ZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwoKSBpbiByZWFjdGlvbiB0byByZWFkKClpbmcg
dGhlIGxhc3QgY2h1bmssIGlmIGRyYWluaW5nIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxk
IG5vdCBjYWxsIHB1bGwgdW50aWwgdGhlIHByZXZpb3VzIHB1bGwgY2FsbCdzIHByb21pc2UgZnVs
ZmlsbHMgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgcHVsbCBhZnRlciBzdGFydCwgYW5k
IGFmdGVyIGV2ZXJ5IHJlYWQgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwg
cHVsbCBhZnRlciBzdGFydCBpZiB0aGUgc3RyZWFtIGlzIG5vdyBjbG9zZWQgCitQQVNTIFJlYWRh
YmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIGFmdGVyIGVucXVldWVpbmcgZnJvbSBpbnNpZGUg
cHVsbCAod2l0aCBubyByZWFkIHJlcXVlc3RzKSwgaWYgc3RyYXRlZ3kgYWxsb3dzIAorUEFTUyBS
ZWFkYWJsZVN0cmVhbSBwdWxsIHNob3VsZCBiZSBhYmxlIHRvIGNsb3NlIGEgc3RyZWFtLiAKK1BB
U1MgUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBp
cyByZWFkYWJsZSBidXQgZHJhaW5pbmcgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNo
b3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMgY2xvc2VkIAorUEFTUyBSZWFkYWJsZVN0cmVh
bTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhlIHN0b3JlZCBlcnJvciB3aGVuIHRoZSBzdHJlYW0g
aXMgZXJyb3JlZCAKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHVuZGVybHlpbmcg
c291cmNlIG1ldGhvZHMgYXMgbWV0aG9kcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gc3RyYXRlZ2ll
czogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGdpdmUgZGVzaXJlZFNpemUgb2YgMSB0byBz
dGFydCwgZGVjcmVhc2luZyBieSAxIHBlciBlbnF1ZXVlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBz
dHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgY29udGludWUgZ2l2aW5nIGRl
c2lyZWRTaXplIG9mIDEgaWYgdGhlIGNodW5rcyBhcmUgcmVhZCBpbW1lZGlhdGVseSAKK1BBU1Mg
UmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYSByYW5kb20gcHVzaCBz
b3VyY2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEg
c3luYyBwdWxsIHNvdXJjZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDog
YWRhcHRpbmcgYW4gYXN5bmMgcHVsbCBzb3VyY2UgCitGQUlMIExvYWQgZ2VuZXJhbC5qcyB3aXRo
IFNoYXJlZFdvcmtlciBhc3NlcnRfdW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFi
bGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitGQUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBu
b3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICduYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdp
c3RyYXRpb24nKQorRkFJTCBSZWFkYWJsZVN0cmVhbSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBu
byBlcnJvcnMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFi
bGVTdHJlYW0gY2FuJ3QgYmUgY29uc3RydWN0ZWQgd2l0aCBnYXJiYWdlIGFzc2VydF90aHJvd3M6
IGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzb3VyY2UgaXMgbnVsbCBmdW5jdGlv
biAiKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtKG51bGwpIiB0aHJldyBvYmplY3QgIlJlZmVyZW5j
ZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbSIgKCJSZWZlcmVuY2VF
cnJvciIpIGV4cGVjdGVkIG9iamVjdCAiVHlwZUVycm9yIiAoIlR5cGVFcnJvciIpCitGQUlMIFJl
YWRhYmxlU3RyZWFtIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHBy
b3BlcnRpZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFi
bGVTdHJlYW0gY29uc3RydWN0b3Igc2hvdWxkIHRocm93IGZvciBub24tZnVuY3Rpb24gc3RhcnQg
YXJndW1lbnRzIGFzc2VydF90aHJvd3M6IGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHN0
YXJ0IGlzIG5vdCBhIGZ1bmN0aW9uIGZ1bmN0aW9uICIoKSA9PiB7CisgICAgbmV3IFJlYWRhYmxl
U3RyZWFtKHsgc3RhcnQ6ICdwb3RhdG8nIH0pOworICB9IiB0aHJldyBvYmplY3QgIlJlZmVyZW5j
ZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbSIgKCJSZWZlcmVuY2VF
cnJvciIpIGV4cGVjdGVkIG9iamVjdCAiVHlwZUVycm9yIiAoIlR5cGVFcnJvciIpCitGQUlMIFJl
YWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5pdGlhbCBnYXJiYWdlIGFzIGNhbmNl
bCBhcmd1bWVudCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBSZWFk
YWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBwdWxsIGFy
Z3VtZW50IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRhYmxl
U3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgcHJvcGVyIHBhcmFtZXRlcnMg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFibGVTdHJlYW0g
c3RhcnQgY29udHJvbGxlciBwYXJhbWV0ZXIgc2hvdWxkIGJlIGV4dGVuc2libGUgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFibGVTdHJlYW0gc2hvdWxkIGJl
IGFibGUgdG8gY2FsbCBzdGFydCBtZXRob2Qgd2l0aGluIHByb3RvdHlwZSBjaGFpbiBvZiBpdHMg
c291cmNlIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRhYmxl
U3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hv
dWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBhbmQgcmVqZWN0IGl0IENhbid0IGZpbmQg
dmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFtIHNob3VsZCBiZSBh
YmxlIHRvIGVucXVldWUgZGlmZmVyZW50IG9iamVjdHMuIENhbid0IGZpbmQgdmFyaWFibGU6IFJl
YWRhYmxlU3RyZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFtOiBpZiBwdWxsIHJlamVjdHMsIGl0IHNo
b3VsZCBlcnJvciB0aGUgc3RyZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFt
CitGQUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSB1cG9uIHN0
YXJ0aW5nIHRoZSBzdHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZB
SUwgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgd2hlbiB0cnlpbmcgdG8gcmVhZCBm
cm9tIGEgc3RhcnRlZCwgZW1wdHkgc3RyZWFtIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxl
U3RyZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSBv
biBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGJlZm9yZSBzdGFydCBmdWxmaWxscyBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBSZWFkYWJsZVN0cmVhbTogc2hv
dWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBh
ZnRlciBzdGFydCBmdWxmaWxscyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQor
RkFJTCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCBpbiByZWFjdGlvbiB0byByZWFk
KClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIG5vdCBkcmFpbmluZyBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBSZWFkYWJsZVN0cmVhbQorRkFJTCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1
bGwoKSBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIGRyYWluaW5n
IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFt
OiBzaG91bGQgbm90IGNhbGwgcHVsbCB1bnRpbCB0aGUgcHJldmlvdXMgcHVsbCBjYWxsJ3MgcHJv
bWlzZSBmdWxmaWxscyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBS
ZWFkYWJsZVN0cmVhbTogc2hvdWxkIHB1bGwgYWZ0ZXIgc3RhcnQsIGFuZCBhZnRlciBldmVyeSBy
ZWFkIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRhYmxlU3Ry
ZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCBhZnRlciBzdGFydCBpZiB0aGUgc3RyZWFtIGlzIG5v
dyBjbG9zZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFi
bGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgYWZ0ZXIgZW5xdWV1ZWluZyBmcm9tIGluc2lkZSBw
dWxsICh3aXRoIG5vIHJlYWQgcmVxdWVzdHMpLCBpZiBzdHJhdGVneSBhbGxvd3MgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFibGVTdHJlYW0gcHVsbCBzaG91
bGQgYmUgYWJsZSB0byBjbG9zZSBhIHN0cmVhbS4gQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFi
bGVTdHJlYW0KK0ZBSUwgUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4g
dGhlIHN0cmVhbSBpcyByZWFkYWJsZSBidXQgZHJhaW5pbmcgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
UmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93
IHdoZW4gdGhlIHN0cmVhbSBpcyBjbG9zZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVT
dHJlYW0KK0ZBSUwgUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBzdG9y
ZWQgZXJyb3Igd2hlbiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
UmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHVuZGVybHlp
bmcgc291cmNlIG1ldGhvZHMgYXMgbWV0aG9kcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJs
ZVN0cmVhbQorRkFJTCBSZWFkYWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJh
dGVneSBzaG91bGQgZ2l2ZSBkZXNpcmVkU2l6ZSBvZiAxIHRvIHN0YXJ0LCBkZWNyZWFzaW5nIGJ5
IDEgcGVyIGVucXVldWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwg
UmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGNv
bnRpbnVlIGdpdmluZyBkZXNpcmVkU2l6ZSBvZiAxIGlmIHRoZSBjaHVua3MgYXJlIHJlYWQgaW1t
ZWRpYXRlbHkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFi
bGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYSByYW5kb20gcHVzaCBzb3VyY2Ug
Q2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFibGVTdHJlYW0g
aW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYSBzeW5jIHB1bGwgc291cmNlIENhbid0IGZpbmQg
dmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9u
IHRlc3Q6IGFkYXB0aW5nIGFuIGFzeW5jIHB1bGwgc291cmNlIENhbid0IGZpbmQgdmFyaWFibGU6
IFJlYWRhYmxlU3RyZWFtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMt
YXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1MjQxZmZlOGYw
NzJmYmZkNWY2NzZjMDY5ZjE1NGI0MjliMDE0NmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxl
LXN0cmVhbXMvZ2VuZXJhbC5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13
b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvcnMtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImdlbmVyYWwu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsKK3dvcmtlcl90ZXN0KCdnZW5l
cmFsLmpzJyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFs
LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
LWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDRkMWE0YTZjYTQw
M2NkZjRkNTQ0YjUwZmI2ZTEyNjY1MzZmYjczZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUt
c3RyZWFtcy9nZW5lcmFsLmpzCkBAIC0wLDAgKzEsODMxIEBACisndXNlIHN0cmljdCc7CisKK2lm
IChzZWxmLmltcG9ydFNjcmlwdHMpIHsKKyAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJj
ZXMvdGVzdC11dGlscy5qcycpOworICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9y
cy11dGlscy5qcycpOworICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMnKTsKK30KKwordGVzdCgoKSA9PiB7CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKCk7IC8v
IFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdGVkIHdpdGggbm8gcGFyYW1ldGVycworICBuZXcgUmVh
ZGFibGVTdHJlYW0oeyB9KTsgLy8gUmVhZGFibGVTdHJlYW0gY29uc3RydWN0ZWQgd2l0aCBhbiBl
bXB0eSBvYmplY3QgYXMgcGFyYW1ldGVyCisgIG5ldyBSZWFkYWJsZVN0cmVhbSh1bmRlZmluZWQp
OyAvLyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RlZCB3aXRoIHVuZGVmaW5lZCBhcyBwYXJhbWV0
ZXIKKworICBsZXQgeDsKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHgpOyAvLyBSZWFkYWJsZVN0cmVh
bSBjb25zdHJ1Y3RlZCB3aXRoIGFuIHVuZGVmaW5lZCB2YXJpYWJsZSBhcyBwYXJhbWV0ZXIKKwor
fSwgJ1JlYWRhYmxlU3RyZWFtIGNhbiBiZSBjb25zdHJ1Y3RlZCB3aXRoIG5vIGVycm9ycycpOwor
Cit0ZXN0KCgpID0+IHsKKworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4g
bmV3IFJlYWRhYmxlU3RyZWFtKG51bGwpLCAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHdoZW4g
dGhlIHNvdXJjZSBpcyBudWxsJyk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBjYW5cJ3QgYmUgY29u
c3RydWN0ZWQgd2l0aCBnYXJiYWdlJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGNvbnN0IG1ldGhv
ZHMgPSBbJ2NhbmNlbCcsICdjb25zdHJ1Y3RvcicsICdnZXRSZWFkZXInLCAncGlwZVRocm91Z2gn
LCAncGlwZVRvJywgJ3RlZSddOworICBjb25zdCBwcm9wZXJ0aWVzID0gbWV0aG9kcy5jb25jYXQo
Wydsb2NrZWQnXSkuc29ydCgpOworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7
CisgIGNvbnN0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHJzKTsKKworICBhc3NlcnRf
YXJyYXlfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvKS5zb3J0KCksIHBy
b3BlcnRpZXMsICdzaG91bGQgaGF2ZSBhbGwgdGhlIGNvcnJlY3QgbWV0aG9kcycpOworCisgIGZv
ciAoY29uc3QgbSBvZiBtZXRob2RzKSB7CisgICAgY29uc3QgcHJvcERlc2MgPSBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBtKTsKKyAgICBhc3NlcnRfZmFsc2UocHJvcERl
c2MuZW51bWVyYWJsZSwgJ21ldGhvZCBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUnKTsKKyAgICBh
c3NlcnRfdHJ1ZShwcm9wRGVzYy5jb25maWd1cmFibGUsICdtZXRob2Qgc2hvdWxkIGJlIGNvbmZp
Z3VyYWJsZScpOworICAgIGFzc2VydF90cnVlKHByb3BEZXNjLndyaXRhYmxlLCAnbWV0aG9kIHNo
b3VsZCBiZSB3cml0YWJsZScpOworICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJzW21dLCAnZnVu
Y3Rpb24nLCAnbWV0aG9kIHNob3VsZCBiZSBhIGZ1bmN0aW9uJyk7CisgIH0KKworICBjb25zdCBs
b2NrZWRQcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sICds
b2NrZWQnKTsKKyAgYXNzZXJ0X2ZhbHNlKGxvY2tlZFByb3BEZXNjLmVudW1lcmFibGUsICdsb2Nr
ZWQgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlJyk7CisgIGFzc2VydF9lcXVhbHMobG9ja2VkUHJv
cERlc2Mud3JpdGFibGUsIHVuZGVmaW5lZCwgJ2xvY2tlZCBzaG91bGQgbm90IGJlIGEgZGF0YSBw
cm9wZXJ0eScpOworICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBsb2NrZWRQcm9wRGVzYy5nZXQsICdm
dW5jdGlvbicsICdsb2NrZWQgc2hvdWxkIGhhdmUgYSBnZXR0ZXInKTsKKyAgYXNzZXJ0X2VxdWFs
cyhsb2NrZWRQcm9wRGVzYy5zZXQsIHVuZGVmaW5lZCwgJ2xvY2tlZCBzaG91bGQgbm90IGhhdmUg
YSBzZXR0ZXInKTsKKyAgYXNzZXJ0X3RydWUobG9ja2VkUHJvcERlc2MuY29uZmlndXJhYmxlLCAn
bG9ja2VkIHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsKKworICBhc3NlcnRfZXF1YWxzKHJzLmNh
bmNlbC5sZW5ndGgsIDEsICdjYW5jZWwgc2hvdWxkIGhhdmUgMSBwYXJhbWV0ZXInKTsKKyAgYXNz
ZXJ0X2VxdWFscyhycy5jb25zdHJ1Y3Rvci5sZW5ndGgsIDAsICdjb25zdHJ1Y3RvciBzaG91bGQg
aGF2ZSBubyBwYXJhbWV0ZXJzJyk7CisgIGFzc2VydF9lcXVhbHMocnMuZ2V0UmVhZGVyLmxlbmd0
aCwgMCwgJ2dldFJlYWRlciBzaG91bGQgaGF2ZSBubyBwYXJhbWV0ZXJzJyk7CisgIGFzc2VydF9l
cXVhbHMocnMucGlwZVRocm91Z2gubGVuZ3RoLCAyLCAncGlwZVRocm91Z2ggc2hvdWxkIGhhdmUg
MiBwYXJhbWV0ZXJzJyk7CisgIGFzc2VydF9lcXVhbHMocnMucGlwZVRvLmxlbmd0aCwgMSwgJ3Bp
cGVUbyBzaG91bGQgaGF2ZSAxIHBhcmFtZXRlcicpOworICBhc3NlcnRfZXF1YWxzKHJzLnRlZS5s
ZW5ndGgsIDAsICd0ZWUgc2hvdWxkIGhhdmUgbm8gcGFyYW1ldGVycycpOworCit9LCAnUmVhZGFi
bGVTdHJlYW0gaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVy
dGllcycpOworCit0ZXN0KCgpID0+IHsKKworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3Io
KSwgKCkgPT4geworICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7IHN0YXJ0OiAncG90YXRvJyB9KTsK
KyAgfSwgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHN0YXJ0IGlzIG5vdCBhIGZ1bmN0
aW9uJyk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZm9y
IG5vbi1mdW5jdGlvbiBzdGFydCBhcmd1bWVudHMnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgbmV3
IFJlYWRhYmxlU3RyZWFtKHsgY2FuY2VsOiAnMicgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBj
b25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBjYW5jZWwgYXJndW1lbnQnKTsK
KwordGVzdCgoKSA9PiB7CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsgcHVsbDogeyB9IH0pOwor
Cit9LCAnUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2Ug
YXMgcHVsbCBhcmd1bWVudCcpOworCit0ZXN0KCgpID0+IHsKKworICBsZXQgc3RhcnRDYWxsZWQg
PSBmYWxzZTsKKworICBjb25zdCBzb3VyY2UgPSB7CisgICAgc3RhcnQoY29udHJvbGxlcikgewor
ICAgICAgYXNzZXJ0X2VxdWFscyh0aGlzLCBzb3VyY2UsICdzb3VyY2UgaXMgdGhpcyBkdXJpbmcg
c3RhcnQnKTsKKworICAgICAgY29uc3QgbWV0aG9kcyA9IFsnY2xvc2UnLCAnZW5xdWV1ZScsICdl
cnJvcicsICdjb25zdHJ1Y3RvciddOworICAgICAgY29uc3QgcHJvcGVydGllcyA9IFsnZGVzaXJl
ZFNpemUnXS5jb25jYXQobWV0aG9kcykuc29ydCgpOworICAgICAgY29uc3QgcHJvdG8gPSBPYmpl
Y3QuZ2V0UHJvdG90eXBlT2YoY29udHJvbGxlcik7CisKKyAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvdG8pLnNvcnQoKSwgcHJvcGVydGllcywK
KyAgICAgICAgJ3RoZSBjb250cm9sbGVyIHNob3VsZCBoYXZlIHRoZSByaWdodCBwcm9wZXJ0aWVz
Jyk7CisKKyAgICAgIGZvciAoY29uc3QgbSBvZiBtZXRob2RzKSB7CisgICAgICAgIGNvbnN0IHBy
b3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgbSk7CisgICAg
ICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGNvbnRyb2xsZXJbbV0sICdmdW5jdGlvbicsIGBzaG91
bGQgaGF2ZSBhICR7bX0gbWV0aG9kYCk7CisgICAgICAgIGFzc2VydF9mYWxzZShwcm9wRGVzYy5l
bnVtZXJhYmxlLCBtICsgJyBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUnKTsKKyAgICAgICAgYXNz
ZXJ0X3RydWUocHJvcERlc2MuY29uZmlndXJhYmxlLCBtICsgJyBzaG91bGQgYmUgY29uZmlndXJh
YmxlJyk7CisgICAgICAgIGFzc2VydF90cnVlKHByb3BEZXNjLndyaXRhYmxlLCBtICsgJyBzaG91
bGQgYmUgd3JpdGFibGUnKTsKKyAgICAgIH0KKworICAgICAgY29uc3QgZGVzaXJlZFNpemVQcm9w
RGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sICdkZXNpcmVkU2l6
ZScpOworICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2lyZWRTaXplUHJvcERlc2MuZW51bWVyYWJsZSwg
J2Rlc2lyZWRTaXplIHNob3VsZCBiZSBub24tZW51bWVyYWJsZScpOworICAgICAgYXNzZXJ0X2Vx
dWFscyhkZXNpcmVkU2l6ZVByb3BEZXNjLndyaXRhYmxlLCB1bmRlZmluZWQsICdkZXNpcmVkU2l6
ZSBzaG91bGQgbm90IGJlIGEgZGF0YSBwcm9wZXJ0eScpOworICAgICAgYXNzZXJ0X2VxdWFscyh0
eXBlb2YgZGVzaXJlZFNpemVQcm9wRGVzYy5nZXQsICdmdW5jdGlvbicsICdkZXNpcmVkU2l6ZSBz
aG91bGQgaGF2ZSBhIGdldHRlcicpOworICAgICAgYXNzZXJ0X2VxdWFscyhkZXNpcmVkU2l6ZVBy
b3BEZXNjLnNldCwgdW5kZWZpbmVkLCAnZGVzaXJlZFNpemUgc2hvdWxkIG5vdCBoYXZlIGEgc2V0
dGVyJyk7CisgICAgICBhc3NlcnRfdHJ1ZShkZXNpcmVkU2l6ZVByb3BEZXNjLmNvbmZpZ3VyYWJs
ZSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsKKworICAgICAgYXNzZXJ0
X2VxdWFscyhjb250cm9sbGVyLmNsb3NlLmxlbmd0aCwgMCwgJ2Nsb3NlIHNob3VsZCBoYXZlIG5v
IHBhcmFtZXRlcnMnKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5jb25zdHJ1Y3Rv
ci5sZW5ndGgsIDEsICdjb25zdHJ1Y3RvciBzaG91bGQgaGF2ZSAxIHBhcmFtZXRlcicpOworICAg
ICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmVucXVldWUubGVuZ3RoLCAxLCAnZW5xdWV1ZSBz
aG91bGQgaGF2ZSAxIHBhcmFtZXRlcicpOworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVy
LmVycm9yLmxlbmd0aCwgMSwgJ2Vycm9yIHNob3VsZCBoYXZlIDEgcGFyYW1ldGVyJyk7CisKKyAg
ICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICB9CisgIH07CisKKyAgbmV3IFJlYWRhYmxlU3Ry
ZWFtKHNvdXJjZSk7CisgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKKworfSwgJ1JlYWRhYmxl
U3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgcHJvcGVyIHBhcmFtZXRlcnMn
KTsKKwordGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisgIGNvbnN0
IHNvdXJjZSA9IHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjb25zdCBwcm9wZXJ0
aWVzID0gWydjbG9zZScsICdjb25zdHJ1Y3RvcicsICdkZXNpcmVkU2l6ZScsICdlbnF1ZXVlJywg
J2Vycm9yJ107CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0
eU5hbWVzKE9iamVjdC5nZXRQcm90b3R5cGVPZihjb250cm9sbGVyKSkuc29ydCgpLCBwcm9wZXJ0
aWVzLAorICAgICAgICAncHJvdG90eXBlIHNob3VsZCBoYXZlIHRoZSByaWdodCBwcm9wZXJ0aWVz
Jyk7CisKKyAgICAgIGNvbnRyb2xsZXIudGVzdCA9ICcnOworICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPYmplY3QuZ2V0UHJvdG90eXBlT2YoY29u
dHJvbGxlcikpLnNvcnQoKSwgcHJvcGVydGllcywKKyAgICAgICAgJ3Byb3RvdHlwZSBzaG91bGQg
c3RpbGwgaGF2ZSB0aGUgcmlnaHQgcHJvcGVydGllcycpOworICAgICAgYXNzZXJ0X25vdF9lcXVh
bHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoY29udHJvbGxlcikuaW5kZXhPZigndGVzdCcp
LCAtMSwKKyAgICAgICAgJyJ0ZXN0IiBzaG91bGQgYmUgYSBwcm9wZXJ0eSBvZiB0aGUgY29udHJv
bGxlcicpOworCisgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgfQorICB9OworCisgIG5l
dyBSZWFkYWJsZVN0cmVhbShzb3VyY2UpOworICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7CisK
K30sICdSZWFkYWJsZVN0cmVhbSBzdGFydCBjb250cm9sbGVyIHBhcmFtZXRlciBzaG91bGQgYmUg
ZXh0ZW5zaWJsZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGZ1bmN0aW9uIFNpbXBs
ZVN0cmVhbVNvdXJjZSgpIHt9CisgIGxldCByZXNvbHZlOworICBjb25zdCBwcm9taXNlID0gbmV3
IFByb21pc2UociA9PiByZXNvbHZlID0gcik7CisgIFNpbXBsZVN0cmVhbVNvdXJjZS5wcm90b3R5
cGUgPSB7CisgICAgc3RhcnQ6IHJlc29sdmUKKyAgfTsKKworICBuZXcgUmVhZGFibGVTdHJlYW0o
bmV3IFNpbXBsZVN0cmVhbVNvdXJjZSgpKTsKKyAgcmV0dXJuIHByb21pc2U7CisKK30sICdSZWFk
YWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBjYWxsIHN0YXJ0IG1ldGhvZCB3aXRoaW4gcHJv
dG90eXBlIGNoYWluIG9mIGl0cyBzb3VyY2UnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKwor
ICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAg
cmV0dXJuIGRlbGF5KDUpLnRoZW4oKCkgPT4geworICAgICAgICBjLmVucXVldWUoJ2EnKTsKKyAg
ICAgICAgYy5jbG9zZSgpOworICAgICAgfSk7CisgICAgfQorICB9KTsKKworICBjb25zdCByZWFk
ZXIgPSBycy5nZXRSZWFkZXIoKTsKKyAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsK
KyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0s
ICd2YWx1ZSByZWFkIHNob3VsZCBiZSB0aGUgb25lIGVucXVldWVkJyk7CisgICAgcmV0dXJuIHJl
YWRlci5jbG9zZWQ7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJl
IGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisg
IGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdyZWplY3RlZCEnKTsKKyAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KCkgeworICAgICAgcmV0dXJuIGRlbGF5KDEp
LnRoZW4oKCkgPT4geyB0aHJvdyB0aGVFcnJvcjsgfSk7CisgICAgfQorICB9KTsKKworICByZXR1
cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4oKCkgPT4geworICAgIGFzc2VydF91bnJlYWNo
ZWQoJ2Nsb3NlZCBwcm9taXNlIHNob3VsZCBiZSByZWplY3RlZCcpOworICB9LCBlID0+IHsKKyAg
ICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAncHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQg
d2l0aCB0aGUgc2FtZSBlcnJvcicpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0
IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCcpOworCitw
cm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IG9iamVjdHMgPSBbCisgICAgeyBwb3RhdG86
ICdHaXZlIG1lIG1vcmUhJyB9LAorICAgICd0ZXN0JywKKyAgICAxCisgIF07CisKKyAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGZvciAoY29u
c3QgbyBvZiBvYmplY3RzKSB7CisgICAgICAgIGMuZW5xdWV1ZShvKTsKKyAgICAgIH0KKyAgICAg
IGMuY2xvc2UoKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRl
cigpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbcmVhZGVyLnJlYWQoKSwgcmVhZGVyLnJlYWQo
KSwgcmVhZGVyLnJlYWQoKSwgcmVhZGVyLmNsb3NlZF0pLnRoZW4ociA9PiB7CisgICAgYXNzZXJ0
X29iamVjdF9lcXVhbHMoclswXSwgeyB2YWx1ZTogb2JqZWN0c1swXSwgZG9uZTogZmFsc2UgfSwg
J3ZhbHVlIHJlYWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQnKTsKKyAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyWzFdLCB7IHZhbHVlOiBvYmplY3RzWzFdLCBkb25lOiBmYWxzZSB9LCAndmFs
dWUgcmVhZCBzaG91bGQgYmUgdGhlIG9uZSBlbnF1ZXVlZCcpOworICAgIGFzc2VydF9vYmplY3Rf
ZXF1YWxzKHJbMl0sIHsgdmFsdWU6IG9iamVjdHNbMl0sIGRvbmU6IGZhbHNlIH0sICd2YWx1ZSBy
ZWFkIHNob3VsZCBiZSB0aGUgb25lIGVucXVldWVkJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVT
dHJlYW0gc2hvdWxkIGJlIGFibGUgdG8gZW5xdWV1ZSBkaWZmZXJlbnQgb2JqZWN0cy4nKTsKKwor
cHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcigncHVsbCBm
YWlsdXJlJyk7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKCkg
eworICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTsKKyAgICB9CisgIH0pOworCisg
IGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIGxldCBjbG9zZWQgPSBmYWxzZTsK
KyAgbGV0IHJlYWQgPSBmYWxzZTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHJlYWRl
ci5jbG9zZWQudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdjbG9zZWQgc2hv
dWxkIGJlIHJlamVjdGVkJyk7CisgICAgfSwgZSA9PiB7CisgICAgICBjbG9zZWQgPSB0cnVlOwor
ICAgICAgYXNzZXJ0X3RydWUocmVhZCk7CisgICAgICBhc3NlcnRfZXF1YWxzKGUsIGVycm9yLCAn
Y2xvc2VkIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHRoZSB0aHJvd24gZXJyb3InKTsKKyAgICB9
KSwKKyAgICByZWFkZXIucmVhZCgpLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X3VucmVhY2hl
ZCgncmVhZCgpIHNob3VsZCBiZSByZWplY3RlZCcpOworICAgIH0sIGUgPT4geworICAgICAgcmVh
ZCA9IHRydWU7CisgICAgICBhc3NlcnRfZmFsc2UoY2xvc2VkKTsKKyAgICAgIGFzc2VydF9lcXVh
bHMoZSwgZXJyb3IsICdyZWFkKCkgc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdGhlIHRocm93biBl
cnJvcicpOworICAgIH0pCisgIF0pOworCit9LCAnUmVhZGFibGVTdHJlYW06IGlmIHB1bGwgcmVq
ZWN0cywgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0nKTsKKworcHJvbWlzZV90ZXN0KCgpID0+
IHsKKworICBsZXQgcHVsbENvdW50ID0gMDsKKyAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlz
ZS5yZXNvbHZlKCk7CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAg
ICAgIHJldHVybiBzdGFydFByb21pc2U7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgcHVs
bENvdW50Kys7CisgICAgfQorICB9KTsKKworICByZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4oKCkg
PT4geworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2Fs
bGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMnKTsKKyAgICByZXR1cm4gZGVsYXkoMTApOworICB9KS50
aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxk
IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbTog
c2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2UgdXBvbiBzdGFydGluZyB0aGUgc3RyZWFtJyk7CisK
K3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHB1bGxDb3VudCA9IDA7CisKKyAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoYykgeworICAgICAgLy8gRG9uJ3Qg
ZW5xdWV1ZSBpbW1lZGlhdGVseSBhZnRlciBzdGFydC4gV2Ugd2FudCB0aGUgc3RyZWFtIHRvIGJl
IGVtcHR5IHdoZW4gd2UgY2FsbCAucmVhZCgpIG9uIGl0LgorICAgICAgaWYgKHB1bGxDb3VudCA+
IDApIHsKKyAgICAgICAgYy5lbnF1ZXVlKHB1bGxDb3VudCk7CisgICAgICB9CisgICAgICArK3B1
bGxDb3VudDsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBkZWxheSgxKS50aGVuKCgpID0+IHsK
KyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBv
bmNlIHN0YXJ0IGZpbmlzaGVzJyk7CisKKyAgICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIo
KTsKKyAgICBjb25zdCByZWFkID0gcmVhZGVyLnJlYWQoKTsKKyAgICBhc3NlcnRfZXF1YWxzKHB1
bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHJlYWQgaXMgY2FsbGVkJyk7
CisgICAgcmV0dXJuIHJlYWQ7CisgIH0pLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfZXF1
YWxzKHB1bGxDb3VudCwgMywgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBhZ2FpbiBpbiByZWFjdGlv
biB0byBjYWxsaW5nIHJlYWQnKTsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsg
dmFsdWU6IDEsIGRvbmU6IGZhbHNlIH0sICd0aGUgcmVzdWx0IHJlYWQgc2hvdWxkIGJlIHRoZSBv
bmUgZW5xdWV1ZWQnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwg
cHVsbCB3aGVuIHRyeWluZyB0byByZWFkIGZyb20gYSBzdGFydGVkLCBlbXB0eSBzdHJlYW0nKTsK
KworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgcHVsbENvdW50ID0gMDsKKyAgY29uc3Qg
c3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAg
ICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKKyAgICB9LAorICAgIHB1bGwoKSB7CisgICAgICBwdWxs
Q291bnQrKzsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWQgPSBycy5nZXRSZWFkZXIoKS5y
ZWFkKCk7CisgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAwLCAnY2FsbGluZyByZWFkKCkgc2hv
dWxkIG5vdCBjYXVzZSBwdWxsIHRvIGJlIGNhbGxlZCB5ZXQnKTsKKworICByZXR1cm4gc3RhcnRQ
cm9taXNlLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVs
bCBzaG91bGQgYmUgY2FsbGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMnKTsKKyAgICByZXR1cm4gcmVh
ZDsKKyAgfSkudGhlbihyID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVl
OiAnYScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCByZWFkKCkgc2hvdWxkIHJldHVybiBmaXJzdCBj
aHVuaycpOworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgbm90
IGhhdmUgYmVlbiBjYWxsZWQgYWdhaW4nKTsKKyAgICByZXR1cm4gZGVsYXkoMTApOworICB9KS50
aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxk
IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbTog
c2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJv
bSBiZWZvcmUgc3RhcnQgZnVsZmlsbHMnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBs
ZXQgcHVsbENvdW50ID0gMDsKKyAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZl
KCk7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsK
KyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKKyAgICB9
LAorICAgIHB1bGwoKSB7CisgICAgICBwdWxsQ291bnQrKzsKKyAgICB9CisgIH0pOworCisgIHJl
dHVybiBzdGFydFByb21pc2UudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291
bnQsIDAsICdwdWxsIHNob3VsZCBub3QgYmUgY2FsbGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMsIHNp
bmNlIHRoZSBxdWV1ZSBpcyBmdWxsJyk7CisKKyAgICBjb25zdCByZWFkID0gcnMuZ2V0UmVhZGVy
KCkucmVhZCgpOworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAnY2FsbGluZyByZWFk
KCkgc2hvdWxkIGNhdXNlIHB1bGwgdG8gYmUgY2FsbGVkIGltbWVkaWF0ZWx5Jyk7CisgICAgcmV0
dXJuIHJlYWQ7CisgIH0pLnRoZW4ociA9PiB7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwg
eyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgcmVhZCgpIHNob3VsZCByZXR1cm4g
Zmlyc3QgY2h1bmsnKTsKKyAgICByZXR1cm4gZGVsYXkoMTApOworICB9KS50aGVuKCgpID0+IHsK
KyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBl
eGFjdGx5IG9uY2UnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkg
Y2FsbCBwdWxsIG9uY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBhZnRlciBzdGFy
dCBmdWxmaWxscycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBwdWxsQ291bnQg
PSAwOworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5y
ZXNvbHZlKCk7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0
KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsK
KyAgICB9LAorICAgIHB1bGwoKSB7CisgICAgICArK3B1bGxDb3VudDsKKyAgICB9CisgIH0pOwor
CisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworICByZXR1cm4gc3RhcnRQcm9taXNl
LnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91
bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlIGJ5IHRoZSB0aW1lIHRoZSBzdHJlYW0gc3RhcnRzJyk7
CisKKyAgICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxD
b3VudCwgMSwgJ3B1bGwgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkIGFnYWluIGFmdGVyIGVu
cXVldWUnKTsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVuKCgpID0+IHsK
KyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxkIGhhdmUgYmVlbiBj
YWxsZWQgYWdhaW4gYWZ0ZXIgcmVhZCcpOworCisgICAgcmV0dXJuIGRlbGF5KDEwKTsKKyAgfSku
dGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDIsICdwdWxsIHNob3Vs
ZCBiZSBjYWxsZWQgZXhhY3RseSB0d2ljZScpOworICB9KTsKK30sICdSZWFkYWJsZVN0cmVhbTog
c2hvdWxkIGNhbGwgcHVsbCBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmss
IGlmIG5vdCBkcmFpbmluZycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBwdWxs
Q291bnQgPSAwOworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJv
bWlzZS5yZXNvbHZlKCk7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAg
IHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgcmV0dXJuIHN0YXJ0UHJv
bWlzZTsKKyAgICB9LAorICAgIHB1bGwoKSB7CisgICAgICArK3B1bGxDb3VudDsKKyAgICB9Cisg
IH0pOworCisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIHJldHVybiBzdGFy
dFByb21pc2UudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdw
dWxsIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UgYnkgdGhlIHRpbWUgdGhlIHN0cmVhbSBz
dGFydHMnKTsKKworICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICAgIGFzc2VydF9lcXVh
bHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYWdhaW4g
YWZ0ZXIgZW5xdWV1ZScpOworCisgICAgY29udHJvbGxlci5jbG9zZSgpOworCisgICAgcmV0dXJu
IHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMocHVs
bENvdW50LCAxLCAncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYSBzZWNvbmQgdGlt
ZSBhZnRlciByZWFkJyk7CisKKyAgICByZXR1cm4gZGVsYXkoMTApOworICB9KS50aGVuKCgpID0+
IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxl
ZCBleGFjdGx5IG9uY2UnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5v
dCBjYWxsIHB1bGwoKSBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlm
IGRyYWluaW5nJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHJlc29sdmU7Cisg
IGxldCByZXR1cm5lZFByb21pc2U7CisgIGxldCB0aW1lc0NhbGxlZCA9IDA7CisgIGNvbnN0IHN0
YXJ0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAgIHJldHVybiBzdGFydFByb21pc2U7Cisg
ICAgfSwKKyAgICBwdWxsKGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgrK3RpbWVzQ2FsbGVkKTsKKyAg
ICAgIHJldHVybmVkUHJvbWlzZSA9IG5ldyBQcm9taXNlKHIgPT4gcmVzb2x2ZSA9IHIpOworICAg
ICAgcmV0dXJuIHJldHVybmVkUHJvbWlzZTsKKyAgICB9CisgIH0pOworICBjb25zdCByZWFkZXIg
PSBycy5nZXRSZWFkZXIoKTsKKworICByZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4oKCkgPT4gewor
ICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVuKHJlc3VsdDEgPT4geworICAgIGFz
c2VydF9lcXVhbHModGltZXNDYWxsZWQsIDEsCisgICAgICAncHVsbCBzaG91bGQgaGF2ZSBiZWVu
IGNhbGxlZCBvbmNlIGFmdGVyIHN0YXJ0LCBidXQgbm90IHlldCBoYXZlIGJlZW4gY2FsbGVkIGEg
c2Vjb25kIHRpbWUnKTsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQxLCB7IHZhbHVl
OiAxLCBkb25lOiBmYWxzZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggdGhlIGVucXVl
dWVkIHZhbHVlJyk7CisKKyAgICByZXR1cm4gZGVsYXkoMTApOworICB9KS50aGVuKCgpID0+IHsK
KyAgICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCAxLCAnYWZ0ZXIgMTAgbXMsIHB1bGwgc2hv
dWxkIHN0aWxsIG9ubHkgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlJyk7CisKKyAgICByZXNvbHZlKCk7
CisgICAgcmV0dXJuIHJldHVybmVkUHJvbWlzZTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNz
ZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgMiwKKyAgICAgICdhZnRlciB0aGUgcHJvbWlzZSByZXR1
cm5lZCBieSBwdWxsIGlzIGZ1bGZpbGxlZCwgcHVsbCBzaG91bGQgYmUgY2FsbGVkIGEgc2Vjb25k
IHRpbWUnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1
bGwgdW50aWwgdGhlIHByZXZpb3VzIHB1bGwgY2FsbFwncyBwcm9taXNlIGZ1bGZpbGxzJyk7CisK
K3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHRpbWVzQ2FsbGVkID0gMDsKKyAgY29uc3Qg
c3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oCisgICAgeworICAgICAgc3RhcnQoYykgeworICAgICAgICBjLmVucXVldWUo
J2EnKTsKKyAgICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICAgIGMuZW5xdWV1ZSgnYycpOwor
ICAgICAgICByZXR1cm4gc3RhcnRQcm9taXNlOworICAgICAgfSwKKyAgICAgIHB1bGwoKSB7Cisg
ICAgICAgICsrdGltZXNDYWxsZWQ7CisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICBzaXpl
KCkgeworICAgICAgICByZXR1cm4gMTsKKyAgICAgIH0sCisgICAgICBoaWdoV2F0ZXJNYXJrOiBJ
bmZpbml0eQorICAgIH0KKyAgKTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisK
KyAgcmV0dXJuIHN0YXJ0UHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICByZXR1cm4gcmVhZGVyLnJl
YWQoKTsKKyAgfSkudGhlbihyZXN1bHQxID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhy
ZXN1bHQxLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCBjaHVuayBzaG91bGQg
YmUgYXMgZXhwZWN0ZWQnKTsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVu
KHJlc3VsdDIgPT4geworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDIsIHsgdmFsdWU6
ICdiJywgZG9uZTogZmFsc2UgfSwgJ3NlY29uZCBjaHVuayBzaG91bGQgYmUgYXMgZXhwZWN0ZWQn
KTsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVuKHJlc3VsdDMgPT4gewor
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDMsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFs
c2UgfSwgJ3RoaXJkIGNodW5rIHNob3VsZCBiZSBhcyBleHBlY3RlZCcpOworCisgICAgcmV0dXJu
IGRlbGF5KDEwKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgLy8gT25jZSBmb3IgYWZ0ZXIgc3Rh
cnQsIGFuZCBvbmNlIGZvciBldmVyeSByZWFkLgorICAgIGFzc2VydF9lcXVhbHModGltZXNDYWxs
ZWQsIDQsICdwdWxsKCkgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IGZvdXIgdGltZXMnKTsKKyAg
fSk7CisKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIHB1bGwgYWZ0ZXIgc3RhcnQsIGFuZCBh
ZnRlciBldmVyeSByZWFkJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHRpbWVz
Q2FsbGVkID0gMDsKKyAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7CisK
KyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAg
IGMuZW5xdWV1ZSgnYScpOworICAgICAgYy5jbG9zZSgpOworICAgICAgcmV0dXJuIHN0YXJ0UHJv
bWlzZTsKKyAgICB9LAorICAgIHB1bGwoKSB7CisgICAgICArK3RpbWVzQ2FsbGVkOworICAgIH0K
KyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisgIHJldHVybiBzdGFy
dFByb21pc2UudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgMCwg
J2FmdGVyIHN0YXJ0IGZpbmlzaGVzLCBwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCcp
OworCisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFz
c2VydF9lcXVhbHModGltZXNDYWxsZWQsIDAsICdyZWFkaW5nIHNob3VsZCBub3QgaGF2ZSB0cmln
Z2VyZWQgYSBwdWxsIGNhbGwnKTsKKworICAgIHJldHVybiByZWFkZXIuY2xvc2VkOworICB9KS50
aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCAwLCAnc3RyZWFtIHNo
b3VsZCBoYXZlIGNsb3NlZCB3aXRoIHN0aWxsIG5vIGNhbGxzIHRvIHB1bGwnKTsKKyAgfSk7CisK
K30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgYWZ0ZXIgc3RhcnQgaWYg
dGhlIHN0cmVhbSBpcyBub3cgY2xvc2VkJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAg
bGV0IHRpbWVzQ2FsbGVkID0gMDsKKyAgbGV0IHJlc29sdmU7CisgIGNvbnN0IHJlYWR5ID0gbmV3
IFByb21pc2UociA9PiByZXNvbHZlID0gcik7CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKAorICAg
IHsKKyAgICAgIHN0YXJ0KCkge30sCisgICAgICBwdWxsKGMpIHsKKyAgICAgICAgYy5lbnF1ZXVl
KCsrdGltZXNDYWxsZWQpOworCisgICAgICAgIGlmICh0aW1lc0NhbGxlZCA9PT0gNCkgeworICAg
ICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAgeworICAg
ICAgc2l6ZSgpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgICB9LAorICAgICAgaGlnaFdhdGVy
TWFyazogNAorICAgIH0KKyAgKTsKKworICByZXR1cm4gcmVhZHkudGhlbigoKSA9PiB7CisgICAg
Ly8gYWZ0ZXIgc3RhcnQ6IHNpemUgPSAwLCBwdWxsKCkKKyAgICAvLyBhZnRlciBlbnF1ZXVlKDEp
OiBzaXplID0gMSwgcHVsbCgpCisgICAgLy8gYWZ0ZXIgZW5xdWV1ZSgyKTogc2l6ZSA9IDIsIHB1
bGwoKQorICAgIC8vIGFmdGVyIGVucXVldWUoMyk6IHNpemUgPSAzLCBwdWxsKCkKKyAgICAvLyBh
ZnRlciBlbnF1ZXVlKDQpOiBzaXplID0gNCwgZG8gbm90IHB1bGwKKyAgICBhc3NlcnRfZXF1YWxz
KHRpbWVzQ2FsbGVkLCA0LCAncHVsbCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGZvdXIgdGlt
ZXMnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCBhZnRl
ciBlbnF1ZXVlaW5nIGZyb20gaW5zaWRlIHB1bGwgKHdpdGggbm8gcmVhZCByZXF1ZXN0cyksIGlm
IHN0cmF0ZWd5IGFsbG93cycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBwdWxs
Q2FsbGVkID0gZmFsc2U7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAg
IHB1bGwoYykgeworICAgICAgcHVsbENhbGxlZCA9IHRydWU7CisgICAgICBjLmNsb3NlKCk7Cisg
ICAgfQorICB9KTsKKworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKyAgcmV0dXJu
IHJlYWRlci5jbG9zZWQudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X3RydWUocHVsbENhbGxlZCk7
CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gcHVsbCBzaG91bGQgYmUgYWJsZSB0byBjbG9z
ZSBhIHN0cmVhbS4nKTsKKwordGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFs
c2U7CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBhc3Nl
cnRfZXF1YWxzKGMuZW5xdWV1ZSgnYScpLCB1bmRlZmluZWQsICd0aGUgZmlyc3QgZW5xdWV1ZSBz
aG91bGQgcmV0dXJuIHVuZGVmaW5lZCcpOworICAgICAgYy5jbG9zZSgpOworCisgICAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gYy5lbnF1ZXVlKCdiJyksICdlbnF1ZXVl
IGFmdGVyIGNsb3NlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOworICAgICAgc3RhcnRDYWxs
ZWQgPSB0cnVlOworICAgIH0KKyAgfSk7CisKKyAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwor
Cit9LCAnUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVh
bSBpcyByZWFkYWJsZSBidXQgZHJhaW5pbmcnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0
YXJ0Q2FsbGVkID0gZmFsc2U7CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChj
KSB7CisgICAgICBjLmNsb3NlKCk7CisKKyAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJv
cigpLCAoKSA9PiBjLmVucXVldWUoJ2EnKSwgJ2VucXVldWUgYWZ0ZXIgY2xvc2Ugc2hvdWxkIHRo
cm93IGEgVHlwZUVycm9yJyk7CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgfQorICB9
KTsKKworICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7CisKK30sICdSZWFkYWJsZVN0cmVhbTog
ZW5xdWV1ZSBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc3RyZWFtIGlzIGNsb3NlZCcpOworCit0ZXN0
KCgpID0+IHsKKworICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKKyAgY29uc3QgZXhwZWN0ZWRF
cnJvciA9IG5ldyBFcnJvcignaSBhbSBzYWQnKTsKKworICBuZXcgUmVhZGFibGVTdHJlYW0oewor
ICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZXJyb3IoZXhwZWN0ZWRFcnJvcik7CisKKyAgICAgIGFz
c2VydF90aHJvd3MoZXhwZWN0ZWRFcnJvciwgKCkgPT4gYy5lbnF1ZXVlKCdhJyksICdlbnF1ZXVl
IGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdyB0aGF0IGVycm9yJyk7CisgICAgICBzdGFydENhbGxl
ZCA9IHRydWU7CisgICAgfQorICB9KTsKKworICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7CisK
K30sICdSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhlIHN0b3JlZCBlcnJv
ciB3aGVuIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4gewor
CisgIGxldCBzdGFydENhbGxlZCA9IDA7CisgIGxldCBwdWxsQ2FsbGVkID0gMDsKKyAgbGV0IGNh
bmNlbENhbGxlZCA9IDA7CisKKyAgLyogZXNsaW50LWRpc2FibGUgbm8tdXNlLWJlZm9yZS1kZWZp
bmUgKi8KKyAgY2xhc3MgU291cmNlIHsKKyAgICBzdGFydChjKSB7CisgICAgICBzdGFydENhbGxl
ZCsrOworICAgICAgYXNzZXJ0X2VxdWFscyh0aGlzLCB0aGVTb3VyY2UsICdzdGFydCgpIHNob3Vs
ZCBiZSBjYWxsZWQgd2l0aCB0aGUgY29ycmVjdCB0aGlzJyk7CisgICAgICBjLmVucXVldWUoJ2En
KTsKKyAgICB9CisKKyAgICBwdWxsKCkgeworICAgICAgcHVsbENhbGxlZCsrOworICAgICAgYXNz
ZXJ0X2VxdWFscyh0aGlzLCB0aGVTb3VyY2UsICdwdWxsKCkgc2hvdWxkIGJlIGNhbGxlZCB3aXRo
IHRoZSBjb3JyZWN0IHRoaXMnKTsKKyAgICB9CisKKyAgICBjYW5jZWwoKSB7CisgICAgICBjYW5j
ZWxDYWxsZWQrKzsKKyAgICAgIGFzc2VydF9lcXVhbHModGhpcywgdGhlU291cmNlLCAnY2FuY2Vs
KCkgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBjb3JyZWN0IHRoaXMnKTsKKyAgICB9CisgIH0K
KyAgLyogZXNsaW50LWVuYWJsZSBuby11c2UtYmVmb3JlLWRlZmluZSAqLworCisgIGNvbnN0IHRo
ZVNvdXJjZSA9IG5ldyBTb3VyY2UoKTsKKyAgdGhlU291cmNlLmRlYnVnTmFtZSA9ICd0aGUgc291
cmNlIG9iamVjdCBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yJzsgLy8gbWFrZXMgdGVzdCBmYWls
dXJlcyBlYXNpZXIgdG8gZGlhZ25vc2UKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh0aGVTb3VyY2UpOworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICByZXR1
cm4gcmVhZGVyLnJlYWQoKS50aGVuKCgpID0+IHsKKyAgICByZWFkZXIucmVsZWFzZUxvY2soKTsK
KyAgICBycy5jYW5jZWwoKTsKKyAgICBhc3NlcnRfZXF1YWxzKHN0YXJ0Q2FsbGVkLCAxKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKHB1bGxDYWxsZWQsIDEpOworICAgIGFzc2VydF9lcXVhbHMoY2FuY2Vs
Q2FsbGVkLCAxKTsKKyAgICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkOworICB9KTsKKwor
fSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2Rz
IGFzIG1ldGhvZHMnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFs
c2U7CisgIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYXNzZXJ0
X2VxdWFscyhjLmRlc2lyZWRTaXplLCAxKTsKKyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAg
YXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAwKTsKKyAgICAgIGMuZW5xdWV1ZSgnYicpOwor
ICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAtMSk7CisgICAgICBjLmVucXVldWUo
J2MnKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgLTIpOworICAgICAgYy5l
bnF1ZXVlKCdkJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKGMuZGVzaXJlZFNpemUsIC0zKTsKKyAg
ICAgIGMuZW5xdWV1ZSgnZScpOworICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOworICAgIH0KKyAg
fSk7CisKKyAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworCit9LCAnUmVhZGFibGVTdHJlYW0g
c3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGdpdmUgZGVzaXJlZFNpemUg
b2YgMSB0byBzdGFydCwgZGVjcmVhc2luZyBieSAxIHBlciBlbnF1ZXVlJyk7CisKK3Byb21pc2Vf
dGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9
CisgIH0pOworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICBhc3NlcnRfZXF1
YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICdkZXNpcmVkU2l6ZSBzaG91bGQgc3RhcnQg
YXQgMScpOworICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250
cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUgc2hvdWxkIGRlY3JlYXNlIHRvIDAg
YWZ0ZXIgZmlyc3QgZW5xdWV1ZScpOworCisgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4ocmVz
dWx0MSA9PiB7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MSwgeyB2YWx1ZTogJ2En
LCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgY2h1bmsgcmVhZCBzaG91bGQgYmUgY29ycmVjdCcpOwor
CisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNp
emUgc2hvdWxkIGdvIHVwIHRvIDEgYWZ0ZXIgdGhlIGZpcnN0IHJlYWQnKTsKKyAgICBjb250cm9s
bGVyLmVucXVldWUoJ2InKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNp
emUsIDAsICdkZXNpcmVkU2l6ZSBzaG91bGQgZ28gZG93biB0byAwIGFmdGVyIHRoZSBzZWNvbmQg
ZW5xdWV1ZScpOworCisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4ocmVzdWx0
MiA9PiB7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MiwgeyB2YWx1ZTogJ2InLCBk
b25lOiBmYWxzZSB9LCAnc2Vjb25kIGNodW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKwor
ICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXpl
IHNob3VsZCBnbyB1cCB0byAxIGFmdGVyIHRoZSBzZWNvbmQgcmVhZCcpOworICAgIGNvbnRyb2xs
ZXIuZW5xdWV1ZSgnYycpOworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6
ZSwgMCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBnbyBkb3duIHRvIDAgYWZ0ZXIgdGhlIHRoaXJkIGVu
cXVldWUnKTsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVuKHJlc3VsdDMg
PT4geworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDMsIHsgdmFsdWU6ICdjJywgZG9u
ZTogZmFsc2UgfSwgJ3RoaXJkIGNodW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKworICAg
IGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNo
b3VsZCBnbyB1cCB0byAxIGFmdGVyIHRoZSB0aGlyZCByZWFkJyk7CisgICAgY29udHJvbGxlci5l
bnF1ZXVlKCdkJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAw
LCAnZGVzaXJlZFNpemUgc2hvdWxkIGdvIGRvd24gdG8gMCBhZnRlciB0aGUgZm91cnRoIGVucXVl
dWUnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVs
dCBzdHJhdGVneSBzaG91bGQgY29udGludWUgZ2l2aW5nIGRlc2lyZWRTaXplIG9mIDEgaWYgdGhl
IGNodW5rcyBhcmUgcmVhZCBpbW1lZGlhdGVseScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisK
KyAgY29uc3QgcmFuZG9tU291cmNlID0gbmV3IFJhbmRvbVB1c2hTb3VyY2UoOCk7CisKKyAgY29u
c3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGFzc2Vy
dF9lcXVhbHModHlwZW9mIGMsICdvYmplY3QnLCAnYyBzaG91bGQgYmUgYW4gb2JqZWN0IGluIHN0
YXJ0Jyk7CisgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBjLmVucXVldWUsICdmdW5jdGlvbics
ICdlbnF1ZXVlIHNob3VsZCBiZSBhIGZ1bmN0aW9uIGluIHN0YXJ0Jyk7CisgICAgICBhc3NlcnRf
ZXF1YWxzKHR5cGVvZiBjLmNsb3NlLCAnZnVuY3Rpb24nLCAnY2xvc2Ugc2hvdWxkIGJlIGEgZnVu
Y3Rpb24gaW4gc3RhcnQnKTsKKyAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGMuZXJyb3IsICdm
dW5jdGlvbicsICdlcnJvciBzaG91bGQgYmUgYSBmdW5jdGlvbiBpbiBzdGFydCcpOworCisgICAg
ICByYW5kb21Tb3VyY2Uub25kYXRhID0gdC5zdGVwX2Z1bmMoY2h1bmsgPT4geworICAgICAgICBp
ZiAoIWMuZW5xdWV1ZShjaHVuaykgPD0gMCkgeworICAgICAgICAgIHJhbmRvbVNvdXJjZS5yZWFk
U3RvcCgpOworICAgICAgICB9CisgICAgICB9KTsKKworICAgICAgcmFuZG9tU291cmNlLm9uZW5k
ID0gYy5jbG9zZS5iaW5kKGMpOworICAgICAgcmFuZG9tU291cmNlLm9uZXJyb3IgPSBjLmVycm9y
LmJpbmQoYyk7CisgICAgfSwKKworICAgIHB1bGwoYykgeworICAgICAgYXNzZXJ0X2VxdWFscyh0
eXBlb2YgYywgJ29iamVjdCcsICdjIHNob3VsZCBiZSBhbiBvYmplY3QgaW4gcHVsbCcpOworICAg
ICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgYy5lbnF1ZXVlLCAnZnVuY3Rpb24nLCAnZW5xdWV1ZSBz
aG91bGQgYmUgYSBmdW5jdGlvbiBpbiBwdWxsJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVv
ZiBjLmNsb3NlLCAnZnVuY3Rpb24nLCAnY2xvc2Ugc2hvdWxkIGJlIGEgZnVuY3Rpb24gaW4gcHVs
bCcpOworCisgICAgICByYW5kb21Tb3VyY2UucmVhZFN0YXJ0KCk7CisgICAgfQorICB9KTsKKwor
ICByZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJzKS50aGVuKGNodW5rcyA9PiB7CisgICAg
YXNzZXJ0X2VxdWFscyhjaHVua3MubGVuZ3RoLCA4LCAnOCBjaHVua3Mgc2hvdWxkIGJlIHJlYWQn
KTsKKyAgICBmb3IgKGNvbnN0IGNodW5rIG9mIGNodW5rcykgeworICAgICAgYXNzZXJ0X2VxdWFs
cyhjaHVuay5sZW5ndGgsIDEyOCwgJ2NodW5rIHNob3VsZCBoYXZlIDEyOCBieXRlcycpOworICAg
IH0KKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGlu
ZyBhIHJhbmRvbSBwdXNoIHNvdXJjZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNv
bnN0IHJzID0gc2VxdWVudGlhbFJlYWRhYmxlU3RyZWFtKDEwKTsKKworICByZXR1cm4gcmVhZGFi
bGVTdHJlYW1Ub0FycmF5KHJzKS50aGVuKGNodW5rcyA9PiB7CisgICAgYXNzZXJ0X3RydWUocnMu
c291cmNlLmNsb3NlZCwgJ3NvdXJjZSBzaG91bGQgYmUgY2xvc2VkIGFmdGVyIGFsbCBjaHVua3Mg
YXJlIHJlYWQnKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywgWzEsIDIsIDMsIDQs
IDUsIDYsIDcsIDgsIDksIDEwXSwgJ3RoZSBleHBlY3RlZCAxMCBjaHVua3Mgc2hvdWxkIGJlIHJl
YWQnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFw
dGluZyBhIHN5bmMgcHVsbCBzb3VyY2UnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBj
b25zdCBycyA9IHNlcXVlbnRpYWxSZWFkYWJsZVN0cmVhbSgxMCwgeyBhc3luYzogdHJ1ZSB9KTsK
KworICByZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJzKS50aGVuKGNodW5rcyA9PiB7Cisg
ICAgYXNzZXJ0X3RydWUocnMuc291cmNlLmNsb3NlZCwgJ3NvdXJjZSBzaG91bGQgYmUgY2xvc2Vk
IGFmdGVyIGFsbCBjaHVua3MgYXJlIHJlYWQnKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNo
dW5rcywgWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXSwgJ3RoZSBleHBlY3RlZCAxMCBj
aHVua3Mgc2hvdWxkIGJlIHJlYWQnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBpbnRl
Z3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhbiBhc3luYyBwdWxsIHNvdXJjZScpOworCitkb25lKCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10aHJvdWdoLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkv
cmVhZGFibGUtc3RyZWFtcy9waXBlLXRocm91Z2gtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhm
YjMzMjAxMDhlNWJhMWRlMjNiMzU1MTM0YTc5NWI3MTYyZDQxN2IKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBp
L3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10aHJvdWdoLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0
IEBACisKK1BBU1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCB3
b3JrIGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzIAorUEFTUyBSZWFk
YWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggc2hvdWxkIHRocm93IHdoZW4gaXRzIGZp
cnN0IGFyZ3VtZW50IGlzIG5vdCBjb252ZXJ0aWJsZSB0byBhbiBvYmplY3QgCitQQVNTIFJlYWRh
YmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCBzaG91bGQgdGhyb3cgd2hlbiAidGhpcyIg
aGFzIG5vIHBpcGVUbyBtZXRob2QgCitGQUlMIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBl
VGhyb3VnaCBzaG91bGQgcmV0aHJvdyBlcnJvcnMgZnJvbSBhY2Nlc3NpbmcgcGlwZVRvLCByZWFk
YWJsZSwgb3Igd3JpdGFibGUgYXNzZXJ0X3VucmVhY2hlZDogcGlwZVRvIHNob3VsZCBub3QgYmUg
Y2FsbGVkIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90
b3R5cGUucGlwZVRocm91Z2ggc2hvdWxkIHdvcmsgd2l0aCBtaXNzaW5nIHJlYWRhYmxlLCB3cml0
YWJsZSwgb3Igb3B0aW9ucyAKK0ZBSUwgTG9hZCBwaXBlLXRocm91Z2guanMgd2l0aCBTaGFyZWRX
b3JrZXIgYXNzZXJ0X3VucmVhY2hlZDogU2hhcmVkV29ya2VyIGlzIHVuYXZhaWxhYmxlIFJlYWNo
ZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBVbnRpdGxlZCB1bmRlZmluZWQgaXMgbm90IGFuIG9i
amVjdCAoZXZhbHVhdGluZyAnbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9u
JykKK0ZBSUwgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCB3b3Jr
IGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzIENhbid0IGZpbmQgdmFy
aWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBl
VGhyb3VnaCBzaG91bGQgdGhyb3cgd2hlbiBpdHMgZmlyc3QgYXJndW1lbnQgaXMgbm90IGNvbnZl
cnRpYmxlIHRvIGFuIG9iamVjdCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQor
RkFJTCBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggc2hvdWxkIHRocm93IHdo
ZW4gInRoaXMiIGhhcyBubyBwaXBlVG8gbWV0aG9kIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRh
YmxlU3RyZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCBzaG91
bGQgcmV0aHJvdyBlcnJvcnMgZnJvbSBhY2Nlc3NpbmcgcGlwZVRvLCByZWFkYWJsZSwgb3Igd3Jp
dGFibGUgYXNzZXJ0X3Rocm93czogcGlwZVRocm91Z2ggc2hvdWxkIHJldGhyb3cgdGhlIGVycm9y
IHRocm93biBieSBwaXBlVG8gZnVuY3Rpb24gIigpID0+IFJlYWRhYmxlU3RyZWFtLnByb3RvdHlw
ZS5waXBlVGhyb3VnaC5jYWxsKHRocm93aW5nUC4uLiIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VF
cnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0iICgiUmVmZXJlbmNlRXJy
b3IiKSBleHBlY3RlZCBvYmplY3QgIkVycm9yOiBwb3RhdG8iICgiRXJyb3IiKQorRkFJTCBSZWFk
YWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggc2hvdWxkIHdvcmsgd2l0aCBtaXNzaW5n
IHJlYWRhYmxlLCB3cml0YWJsZSwgb3Igb3B0aW9ucyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFk
YWJsZVN0cmVhbQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10aHJvdWdoLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMt
YXBpL3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10aHJvdWdoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJkOThk
NDVhZjQ2ZjI1ZmUwNjI2MjEwZDhmYTE5MTVjYzY0NWNmNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVh
ZGFibGUtc3RyZWFtcy9waXBlLXRocm91Z2guaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3JpcHQ+CisK
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icGlwZS10aHJvdWdoLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisndXNlIHN0cmlj
dCc7Cit3b3JrZXJfdGVzdCgncGlwZS10aHJvdWdoLmpzJyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1h
cGkvcmVhZGFibGUtc3RyZWFtcy9waXBlLXRocm91Z2guanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcGlw
ZS10aHJvdWdoLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5ODg5MjhlNzhiMThlNzNhZjQ0ZWNmNDlkZDFlNGFm
ODFiNmIzZWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10aHJvdWdo
LmpzCkBAIC0wLDAgKzEsMTA4IEBACisndXNlIHN0cmljdCc7CisKK2lmIChzZWxmLmltcG9ydFNj
cmlwdHMpIHsKKyAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvdGVzdC11dGlscy5q
cycpOworICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnKTsK
K30KKwordGVzdCgoKSA9PiB7CisKKyAgbGV0IHBpcGVUb0FyZ3VtZW50czsKKyAgY29uc3QgdGhp
c1ZhbHVlID0geworICAgIHBpcGVUbygpIHsKKyAgICAgIHBpcGVUb0FyZ3VtZW50cyA9IGFyZ3Vt
ZW50czsKKyAgICB9CisgIH07CisKKyAgY29uc3QgaW5wdXQgPSB7IHJlYWRhYmxlOiB7fSwgd3Jp
dGFibGU6IHt9IH07CisgIGNvbnN0IG9wdGlvbnMgPSB7fTsKKyAgY29uc3QgcmVzdWx0ID0gUmVh
ZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoLmNhbGwodGhpc1ZhbHVlLCBpbnB1dCwg
b3B0aW9ucyk7CisKKyAgYXNzZXJ0X2FycmF5X2VxdWFscyhwaXBlVG9Bcmd1bWVudHMsIFtpbnB1
dC53cml0YWJsZSwgb3B0aW9uc10sCisgICAgJ2NvcnJlY3QgYXJndW1lbnRzIHNob3VsZCBiZSBw
YXNzZWQgdG8gdGhpc1ZhbHVlLnBpcGVUbycpOworICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgaW5w
dXQucmVhZGFibGUsICdyZXR1cm4gdmFsdWUgc2hvdWxkIGJlIHRoZSBwYXNzZWQgcmVhZGFibGUg
cHJvcGVydHknKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCBz
aG91bGQgd29yayBnZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cycpOwor
Cit0ZXN0KCgpID0+IHsKKworICBjb25zdCB0aGlzVmFsdWUgPSB7CisgICAgcGlwZVRvKCkgewor
ICAgICAgYXNzZXJ0X3VucmVhY2hlZCgncGlwZVRvIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7Cisg
ICAgfQorICB9OworCisgIG1ldGhvZFRocm93cyhSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICdw
aXBlVGhyb3VnaCcsIHRoaXNWYWx1ZSwgW3VuZGVmaW5lZCwge31dKTsKKyAgbWV0aG9kVGhyb3dz
KFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ3BpcGVUaHJvdWdoJywgdGhpc1ZhbHVlLCBbbnVs
bCwge31dKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCBzaG91
bGQgdGhyb3cgd2hlbiBpdHMgZmlyc3QgYXJndW1lbnQgaXMgbm90IGNvbnZlcnRpYmxlIHRvIGFu
IG9iamVjdCcpOworCit0ZXN0KCgpID0+IHsKKworICBjb25zdCBhcmdzID0gW3sgcmVhZGFibGU6
IHt9LCB3cml0YWJsZToge30gfSwge31dOworCisgIG1ldGhvZFRocm93cyhSZWFkYWJsZVN0cmVh
bS5wcm90b3R5cGUsICdwaXBlVGhyb3VnaCcsIHVuZGVmaW5lZCwgYXJncyk7CisgIG1ldGhvZFRo
cm93cyhSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICdwaXBlVGhyb3VnaCcsIG51bGwsIGFyZ3Mp
OworICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLCAncGlwZVRocm91Z2gn
LCAxLCBhcmdzKTsKKyAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ3Bp
cGVUaHJvdWdoJywgeyBwaXBlVG86ICd0ZXN0JyB9LCBhcmdzKTsKKworfSwgJ1JlYWRhYmxlU3Ry
ZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCBzaG91bGQgdGhyb3cgd2hlbiAidGhpcyIgaGFzIG5v
IHBpcGVUbyBtZXRob2QnKTsKKwordGVzdCgoKSA9PiB7CisgIGNvbnN0IGVycm9yID0gbmV3IEVy
cm9yKCdwb3RhdG8nKTsKKworICBjb25zdCB0aHJvd2luZ1BpcGVUbyA9IHsKKyAgICBnZXQgcGlw
ZVRvKCkgeworICAgICAgdGhyb3cgZXJyb3I7CisgICAgfQorICB9OworICBhc3NlcnRfdGhyb3dz
KGVycm9yLAorICAgICgpID0+IFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaC5j
YWxsKHRocm93aW5nUGlwZVRvLCB7IHJlYWRhYmxlOiB7IH0sIHdyaXRhYmxlOiB7IH0gfSwge30p
LAorICAgICdwaXBlVGhyb3VnaCBzaG91bGQgcmV0aHJvdyB0aGUgZXJyb3IgdGhyb3duIGJ5IHBp
cGVUbycpOworCisgIGNvbnN0IHRoaXNWYWx1ZSA9IHsKKyAgICBwaXBlVG8oKSB7CisgICAgICBh
c3NlcnRfdW5yZWFjaGVkKCdwaXBlVG8gc2hvdWxkIG5vdCBiZSBjYWxsZWQnKTsKKyAgICB9Cisg
IH07CisKKyAgY29uc3QgdGhyb3dpbmdXcml0YWJsZSA9IHsKKyAgICByZWFkYWJsZToge30sCisg
ICAgZ2V0IHdyaXRhYmxlKCkgeworICAgICAgdGhyb3cgZXJyb3I7CisgICAgfQorICB9OworICBh
c3NlcnRfdGhyb3dzKGVycm9yLAorICAgICgpID0+IFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5w
aXBlVGhyb3VnaC5jYWxsKHRoaXNWYWx1ZSwgdGhyb3dpbmdXcml0YWJsZSwge30pLAorICAgICdw
aXBlVGhyb3VnaCBzaG91bGQgcmV0aHJvdyB0aGUgZXJyb3IgdGhyb3duIGJ5IHRoZSB3cml0YWJs
ZSBnZXR0ZXInKTsKKworICBjb25zdCB0aHJvd2luZ1JlYWRhYmxlID0geworICAgIGdldCByZWFk
YWJsZSgpIHsKKyAgICAgIHRocm93IGVycm9yOworICAgIH0sCisgICAgd3JpdGFibGU6IHt9Cisg
IH07CisgIGFzc2VydF90aHJvd3MoZXJyb3IsCisgICAgKCkgPT4gUmVhZGFibGVTdHJlYW0ucHJv
dG90eXBlLnBpcGVUaHJvdWdoLmNhbGwodGhpc1ZhbHVlLCB0aHJvd2luZ1JlYWRhYmxlLCB7fSks
CisgICAgJ3BpcGVUaHJvdWdoIHNob3VsZCByZXRocm93IHRoZSBlcnJvciB0aHJvd24gYnkgdGhl
IHJlYWRhYmxlIGdldHRlcicpOworCit9LCAnUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVU
aHJvdWdoIHNob3VsZCByZXRocm93IGVycm9ycyBmcm9tIGFjY2Vzc2luZyBwaXBlVG8sIHJlYWRh
YmxlLCBvciB3cml0YWJsZScpOworCit0ZXN0KCgpID0+IHsKKworICBsZXQgY291bnQgPSAwOwor
ICBjb25zdCB0aGlzVmFsdWUgPSB7CisgICAgcGlwZVRvKCkgeworICAgICAgKytjb3VudDsKKyAg
ICB9CisgIH07CisKKyAgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoLmNhbGwo
dGhpc1ZhbHVlLCB7IHJlYWRhYmxlOiB7fSwgd3JpdGFibGU6IHt9IH0pOworICBSZWFkYWJsZVN0
cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2guY2FsbCh0aGlzVmFsdWUsIHsgcmVhZGFibGU6IHt9
IH0sIHt9KTsKKyAgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoLmNhbGwodGhp
c1ZhbHVlLCB7IHdyaXRhYmxlOiB7fSB9LCB7fSk7CisKKyAgYXNzZXJ0X2VxdWFscyhjb3VudCwg
MywgJ3BpcGVUbyB3YXMgY2FsbGVkIDMgdGltZXMnKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtLnBy
b3RvdHlwZS5waXBlVGhyb3VnaCBzaG91bGQgd29yayB3aXRoIG1pc3NpbmcgcmVhZGFibGUsIHdy
aXRhYmxlLCBvciBvcHRpb25zJyk7CisKK2RvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTRmYzIy
NDIzYTNjNzY0MGNlMTJkZDgxYWRkYzEwMjdkZDQ3NmIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFk
YWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNTYgQEAKKworUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1
Y3RvciBpbmRpcmVjdGx5IAorUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBz
aG91bGQgZ2V0IGEgUmVhZGFibGVTdHJlYW0gb2JqZWN0IGFzIGFyZ3VtZW50IAorRkFJTCBSZWFk
YWJsZVN0cmVhbVJlYWRlciBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBv
ZiBwcm9wZXJ0aWVzIGFzc2VydF9lcXVhbHM6IG1ldGhvZCBzaG91bGQgYmUgbm9uLWVudW1lcmFi
bGUgZXhwZWN0ZWQgZmFsc2UgYnV0IGdvdCB0cnVlCitQQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVy
IGNsb3NlZCBzaG91bGQgYWx3YXlzIHJldHVybiB0aGUgc2FtZSBwcm9taXNlIG9iamVjdCAKK1BB
U1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZh
aWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1Y3Rp
b24pIAorUEFTUyBHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdldFJlYWRlciBz
aG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0IGNv
bnN0cnVjdGlvbikgCitQQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRp
cmVjdGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBn
ZXRSZWFkZXIpIAorUEFTUyBHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdldFJl
YWRlciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0
UmVhZGVyKSAKK1BBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0
bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgY2xvc2VkIAorUEFTUyBDb25zdHJ1Y3Rp
bmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0
cmVhbSBpcyBlcnJvcmVkIAorUEFTUyBSZWFkaW5nIGZyb20gYSByZWFkZXIgZm9yIGFuIGVtcHR5
IHN0cmVhbSB3aWxsIHdhaXQgdW50aWwgYSBjaHVuayBpcyBhdmFpbGFibGUgCitQQVNTIGNhbmNl
bCgpIG9uIGEgcmVhZGVyIGRvZXMgbm90IHJlbGVhc2UgdGhlIHJlYWRlciAKK1BBU1MgY2xvc2Vk
IHNob3VsZCBiZSBmdWxmaWxsZWQgYWZ0ZXIgc3RyZWFtIGlzIGNsb3NlZCAoLmNsb3NlZCBhY2Nl
c3MgYmVmb3JlIGFjcXVpcmluZykgCitQQVNTIGNsb3NlZCBzaG91bGQgYmUgcmVqZWN0ZWQgYWZ0
ZXIgcmVhZGVyIHJlbGVhc2VzIGl0cyBsb2NrIChtdWx0aXBsZSBzdHJlYW0gbG9ja3MpIAorUEFT
UyBNdWx0aXBsZSByZWFkZXJzIGNhbiBhY2Nlc3MgdGhlIHN0cmVhbSBpbiBzZXF1ZW5jZSAKK1BB
U1MgQ2Fubm90IHVzZSBhbiBhbHJlYWR5LXJlbGVhc2VkIHJlYWRlciB0byB1bmxvY2sgYSBzdHJl
YW0gYWdhaW4gCitQQVNTIGNhbmNlbCgpIG9uIGEgcmVsZWFzZWQgcmVhZGVyIGlzIGEgbm8tb3Ag
YW5kIGRvZXMgbm90IHBhc3MgdGhyb3VnaCAKK1BBU1MgR2V0dGluZyBhIHNlY29uZCByZWFkZXIg
YWZ0ZXIgZXJyb3JpbmcgdGhlIHN0cmVhbSBhbmQgcmVsZWFzaW5nIHRoZSByZWFkZXIgc2hvdWxk
IHN1Y2NlZWQgCitQQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNlIHNob3Vs
ZCBiZSByZWplY3RlZCB3aXRoIHVuZGVmaW5lZCBpZiB0aGF0IGlzIHRoZSBlcnJvciAKK1BBU1Mg
UmVhZGFibGVTdHJlYW1SZWFkZXI6IGlmIHN0YXJ0IHJlamVjdHMgd2l0aCBubyBwYXJhbWV0ZXIs
IGl0IHNob3VsZCBlcnJvciB0aGUgc3RyZWFtIHdpdGggYW4gdW5kZWZpbmVkIGVycm9yIAorUEFT
UyBFcnJvcmluZyBhIFJlYWRhYmxlU3RyZWFtIGFmdGVyIGNoZWNraW5nIGNsb3NlZCBzaG91bGQg
cmVqZWN0IFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNlIAorUEFTUyBFcnJvcmlu
ZyBhIFJlYWRhYmxlU3RyZWFtIGJlZm9yZSBjaGVja2luZyBjbG9zZWQgc2hvdWxkIHJlamVjdCBS
ZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgcHJvbWlzZSAKK1BBU1MgUmVhZGluZyB0d2ljZSBv
biBhIHN0cmVhbSB0aGF0IGdldHMgY2xvc2VkIAorUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgY2xv
c2VkIHN0cmVhbSAKK1BBU1MgUmVhZGluZyB0d2ljZSBvbiBhbiBlcnJvcmVkIHN0cmVhbSAKK1BB
U1MgUmVhZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0aGF0IGdldHMgZXJyb3JlZCAKK0ZBSUwgTG9h
ZCByZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmpzIHdpdGggU2hhcmVkV29ya2VyIGFzc2VydF91bnJl
YWNoZWQ6IFNoYXJlZFdvcmtlciBpcyB1bmF2YWlsYWJsZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNv
ZGUKK0ZBSUwgVW50aXRsZWQgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcg
J25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdldFJlZ2lzdHJhdGlvbicpCitGQUlMIENhbiBnZXQg
dGhlIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK1BBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIgY29u
c3RydWN0b3Igc2hvdWxkIGdldCBhIFJlYWRhYmxlU3RyZWFtIG9iamVjdCBhcyBhcmd1bWVudCAK
K0ZBSUwgUmVhZGFibGVTdHJlYW1SZWFkZXIgaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3Jy
ZWN0IGxpc3Qgb2YgcHJvcGVydGllcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVh
bQorRkFJTCBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgc2hvdWxkIGFsd2F5cyByZXR1cm4g
dGhlIHNhbWUgcHJvbWlzZSBvYmplY3QgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJl
YW0KK0ZBSUwgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hv
dWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCBjb25z
dHJ1Y3Rpb24pIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIEdldHRp
bmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRo
ZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgY29uc3RydWN0aW9uKSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBDb25zdHJ1Y3RpbmcgYSBSZWFk
YWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFs
cmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVhZGVyKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJs
ZVN0cmVhbQorRkFJTCBHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdldFJlYWRl
ciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVh
ZGVyKSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBDb25zdHJ1Y3Rp
bmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0
cmVhbSBpcyBjbG9zZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwg
Q29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9L
IGlmIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0
cmVhbQorRkFJTCBSZWFkaW5nIGZyb20gYSByZWFkZXIgZm9yIGFuIGVtcHR5IHN0cmVhbSB3aWxs
IHdhaXQgdW50aWwgYSBjaHVuayBpcyBhdmFpbGFibGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVh
ZGFibGVTdHJlYW0KK0ZBSUwgY2FuY2VsKCkgb24gYSByZWFkZXIgZG9lcyBub3QgcmVsZWFzZSB0
aGUgcmVhZGVyIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIGNsb3Nl
ZCBzaG91bGQgYmUgZnVsZmlsbGVkIGFmdGVyIHN0cmVhbSBpcyBjbG9zZWQgKC5jbG9zZWQgYWNj
ZXNzIGJlZm9yZSBhY3F1aXJpbmcpIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFt
CitGQUlMIGNsb3NlZCBzaG91bGQgYmUgcmVqZWN0ZWQgYWZ0ZXIgcmVhZGVyIHJlbGVhc2VzIGl0
cyBsb2NrIChtdWx0aXBsZSBzdHJlYW0gbG9ja3MpIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRh
YmxlU3RyZWFtCitGQUlMIE11bHRpcGxlIHJlYWRlcnMgY2FuIGFjY2VzcyB0aGUgc3RyZWFtIGlu
IHNlcXVlbmNlIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIENhbm5v
dCB1c2UgYW4gYWxyZWFkeS1yZWxlYXNlZCByZWFkZXIgdG8gdW5sb2NrIGEgc3RyZWFtIGFnYWlu
IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIGNhbmNlbCgpIG9uIGEg
cmVsZWFzZWQgcmVhZGVyIGlzIGEgbm8tb3AgYW5kIGRvZXMgbm90IHBhc3MgdGhyb3VnaCBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBHZXR0aW5nIGEgc2Vjb25kIHJl
YWRlciBhZnRlciBlcnJvcmluZyB0aGUgc3RyZWFtIGFuZCByZWxlYXNpbmcgdGhlIHJlYWRlciBz
aG91bGQgc3VjY2VlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBS
ZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgcHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0
aCB1bmRlZmluZWQgaWYgdGhhdCBpcyB0aGUgZXJyb3IgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVh
ZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFibGVTdHJlYW1SZWFkZXI6IGlmIHN0YXJ0IHJlamVjdHMg
d2l0aCBubyBwYXJhbWV0ZXIsIGl0IHNob3VsZCBlcnJvciB0aGUgc3RyZWFtIHdpdGggYW4gdW5k
ZWZpbmVkIGVycm9yIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIEVy
cm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gYWZ0ZXIgY2hlY2tpbmcgY2xvc2VkIHNob3VsZCByZWpl
Y3QgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBiZWZvcmUg
Y2hlY2tpbmcgY2xvc2VkIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2Vk
IHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGlu
ZyB0d2ljZSBvbiBhIHN0cmVhbSB0aGF0IGdldHMgY2xvc2VkIENhbid0IGZpbmQgdmFyaWFibGU6
IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRpbmcgdHdpY2Ugb24gYSBjbG9zZWQgc3RyZWFtIENh
bid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRpbmcgdHdpY2Ugb24g
YW4gZXJyb3JlZCBzdHJlYW0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZB
SUwgUmVhZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0aGF0IGdldHMgZXJyb3JlZCBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMv
cmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbS1yZWFkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZjBkYjExZDFiYzRlODNjM2Y1MzhmNDdlNjY3
YzczNWFiNDBjOGY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbS1yZWFkZXIuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29y
a2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3Jj
PSJyZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisndXNlIHN0
cmljdCc7Cit3b3JrZXJfdGVzdCgncmVhZGFibGUtc3RyZWFtLXJlYWRlci5qcycpOworPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5q
cyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1h
cGkvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFkNWJjMTMwMDRmOGEzNTdmYzVlODI1MjJmM2JkMzA5ZjEzMTFiOWEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMt
YXBpL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5qcwpAQCAtMCwwICsx
LDQ4NSBAQAorJ3VzZSBzdHJpY3QnOworCitpZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7CisgIHNl
bGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzJyk7CisgIHNlbGYuaW1w
b3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOworfQorCitsZXQgUmVhZGFi
bGVTdHJlYW1SZWFkZXI7CisKK3Rlc3QoKCkgPT4geworCisgIC8vIEl0J3Mgbm90IGV4cG9zZWQg
Z2xvYmFsbHksIGJ1dCB3ZSB0ZXN0IGEgZmV3IG9mIGl0cyBwcm9wZXJ0aWVzIGhlcmUuCisgIFJl
YWRhYmxlU3RyZWFtUmVhZGVyID0gKG5ldyBSZWFkYWJsZVN0cmVhbSgpKS5nZXRSZWFkZXIoKS5j
b25zdHJ1Y3RvcjsKKworfSwgJ0NhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0
cnVjdG9yIGluZGlyZWN0bHknKTsKKwordGVzdCgoKSA9PiB7CisKKyAgYXNzZXJ0X3Rocm93cyhu
ZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcigncG90YXRvJykp
OworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyKHt9KSk7CisgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBu
ZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIoKSk7CisKK30sICdSZWFkYWJsZVN0cmVhbVJlYWRlciBj
b25zdHJ1Y3RvciBzaG91bGQgZ2V0IGEgUmVhZGFibGVTdHJlYW0gb2JqZWN0IGFzIGFyZ3VtZW50
Jyk7CisKK3Rlc3QoKCkgPT4geworCisgIGNvbnN0IG1ldGhvZHMgPSBbJ2NhbmNlbCcsICdjb25z
dHJ1Y3RvcicsICdyZWFkJywgJ3JlbGVhc2VMb2NrJ107CisgIGNvbnN0IHByb3BlcnRpZXMgPSBt
ZXRob2RzLmNvbmNhdChbJ2Nsb3NlZCddKS5zb3J0KCk7CisKKyAgY29uc3QgcnNSZWFkZXIgPSBu
ZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIobmV3IFJlYWRhYmxlU3RyZWFtKCkpOworICBjb25zdCBw
cm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihyc1JlYWRlcik7CisKKyAgYXNzZXJ0X2FycmF5
X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhwcm90bykuc29ydCgpLCBwcm9wZXJ0
aWVzKTsKKworICBmb3IgKGNvbnN0IG0gb2YgbWV0aG9kcykgeworICAgIGNvbnN0IHByb3BEZXNj
ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgbSk7CisgICAgYXNzZXJ0
X2VxdWFscyhwcm9wRGVzYy5lbnVtZXJhYmxlLCBmYWxzZSwgJ21ldGhvZCBzaG91bGQgYmUgbm9u
LWVudW1lcmFibGUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHByb3BEZXNjLmNvbmZpZ3VyYWJsZSwg
dHJ1ZSwgJ21ldGhvZCBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7CisgICAgYXNzZXJ0X2VxdWFs
cyhwcm9wRGVzYy53cml0YWJsZSwgdHJ1ZSwgJ21ldGhvZCBzaG91bGQgYmUgd3JpdGFibGUnKTsK
KyAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiByc1JlYWRlclttXSwgJ2Z1bmN0aW9uJywgJ3Nob3Vs
ZCBoYXZlIGJlIGEgbWV0aG9kJyk7CisgIH0KKworICBjb25zdCBjbG9zZWRQcm9wRGVzYyA9IE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sICdjbG9zZWQnKTsKKyAgYXNzZXJ0
X2VxdWFscyhjbG9zZWRQcm9wRGVzYy5lbnVtZXJhYmxlLCBmYWxzZSwgJ2Nsb3NlZCBzaG91bGQg
YmUgbm9uLWVudW1lcmFibGUnKTsKKyAgYXNzZXJ0X2VxdWFscyhjbG9zZWRQcm9wRGVzYy5jb25m
aWd1cmFibGUsIHRydWUsICdjbG9zZWQgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZScpOworICBhc3Nl
cnRfbm90X2VxdWFscyhjbG9zZWRQcm9wRGVzYy5nZXQsIHVuZGVmaW5lZCwgJ2Nsb3NlZCBzaG91
bGQgaGF2ZSBhIGdldHRlcicpOworICBhc3NlcnRfZXF1YWxzKGNsb3NlZFByb3BEZXNjLnNldCwg
dW5kZWZpbmVkLCAnY2xvc2VkIHNob3VsZCBub3QgaGF2ZSBhIHNldHRlcicpOworCisgIGFzc2Vy
dF9lcXVhbHMocnNSZWFkZXIuY2FuY2VsLmxlbmd0aCwgMSwgJ2NhbmNlbCBoYXMgMSBwYXJhbWV0
ZXInKTsKKyAgYXNzZXJ0X25vdF9lcXVhbHMocnNSZWFkZXIuY2xvc2VkLCB1bmRlZmluZWQsICdo
YXMgYSBub24tdW5kZWZpbmVkIGNsb3NlZCBwcm9wZXJ0eScpOworICBhc3NlcnRfZXF1YWxzKHR5
cGVvZiByc1JlYWRlci5jbG9zZWQudGhlbiwgJ2Z1bmN0aW9uJywgJ2Nsb3NlZCBwcm9wZXJ0eSBp
cyB0aGVuYWJsZScpOworICBhc3NlcnRfZXF1YWxzKHR5cGVvZiByc1JlYWRlci5jb25zdHJ1Y3Rv
ciwgJ2Z1bmN0aW9uJywgJ2hhcyBhIGNvbnN0cnVjdG9yIG1ldGhvZCcpOworICBhc3NlcnRfZXF1
YWxzKHJzUmVhZGVyLmNvbnN0cnVjdG9yLmxlbmd0aCwgMSwgJ2NvbnN0cnVjdG9yIGhhcyAxIHBh
cmFtZXRlcicpOworICBhc3NlcnRfZXF1YWxzKHR5cGVvZiByc1JlYWRlci5yZWFkLCAnZnVuY3Rp
b24nLCAnaGFzIGEgZ2V0UmVhZGVyIG1ldGhvZCcpOworICBhc3NlcnRfZXF1YWxzKHJzUmVhZGVy
LnJlYWQubGVuZ3RoLCAwLCAncmVhZCBoYXMgbm8gcGFyYW1ldGVycycpOworICBhc3NlcnRfZXF1
YWxzKHR5cGVvZiByc1JlYWRlci5yZWxlYXNlTG9jaywgJ2Z1bmN0aW9uJywgJ2hhcyBhIHJlbGVh
c2VMb2NrIG1ldGhvZCcpOworICBhc3NlcnRfZXF1YWxzKHJzUmVhZGVyLnJlbGVhc2VMb2NrLmxl
bmd0aCwgMCwgJ3JlbGVhc2VMb2NrIGhhcyBubyBwYXJhbWV0ZXJzJyk7CisKK30sICdSZWFkYWJs
ZVN0cmVhbVJlYWRlciBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBw
cm9wZXJ0aWVzJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzUmVhZGVyID0gbmV3IFJl
YWRhYmxlU3RyZWFtUmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSgpKTsKKyAgYXNzZXJ0X2VxdWFs
cyhyc1JlYWRlci5jbG9zZWQsIHJzUmVhZGVyLmNsb3NlZCwgJ2Nsb3NlZCBzaG91bGQgcmV0dXJu
IHRoZSBzYW1lIHByb21pc2UnKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBz
aG91bGQgYWx3YXlzIHJldHVybiB0aGUgc2FtZSBwcm9taXNlIG9iamVjdCcpOworCit0ZXN0KCgp
ID0+IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBuZXcgUmVhZGFi
bGVTdHJlYW1SZWFkZXIocnMpOyAvLyBDb25zdHJ1Y3RpbmcgZGlyZWN0bHkgdGhlIGZpcnN0IHRp
bWUgc2hvdWxkIGJlIGZpbmUuCisgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9
PiBuZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIocnMpLAorICAgICAgICAgICAgICAgICdjb25zdHJ1
Y3RpbmcgZGlyZWN0bHkgdGhlIHNlY29uZCB0aW1lIHNob3VsZCBmYWlsJyk7CisKK30sICdDb25z
dHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0
aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0ICcgKworICAgJ2NvbnN0cnVj
dGlvbiknKTsKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oKTsKKyAgbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJzKTsgLy8gQ29uc3RydWN0aW5nIGRp
cmVjdGx5IHNob3VsZCBiZSBmaW5lLgorICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwg
KCkgPT4gcnMuZ2V0UmVhZGVyKCksICdnZXRSZWFkZXIoKSBzaG91bGQgZmFpbCcpOworCit9LCAn
R2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwg
aWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCAnICsKKyAgICdjb25z
dHJ1Y3Rpb24pJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKCk7CisgIHJzLmdldFJlYWRlcigpOyAvLyBnZXRSZWFkZXIoKSBzaG91bGQgYmUgZmlu
ZS4KKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0
cmVhbVJlYWRlcihycyksICdjb25zdHJ1Y3RpbmcgZGlyZWN0bHkgc2hvdWxkIGZhaWwnKTsKKwor
fSwgJ0NvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBm
YWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBnZXRSZWFkZXIpJyk7CisK
K3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIHJz
LmdldFJlYWRlcigpOyAvLyBnZXRSZWFkZXIoKSBzaG91bGQgYmUgZmluZS4KKyAgYXNzZXJ0X3Ro
cm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJzLmdldFJlYWRlcigpLCAnZ2V0UmVhZGVyKCkg
c2hvdWxkIGZhaWwnKTsKKworfSwgJ0dldHRpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciB2aWEg
Z2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZp
YSBnZXRSZWFkZXIpJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmNsb3NlKCk7CisgICAgfQorICB9
KTsKKworICBuZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIocnMpOyAvLyBDb25zdHJ1Y3RpbmcgZGly
ZWN0bHkgc2hvdWxkIG5vdCB0aHJvdy4KKworfSwgJ0NvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCcp
OworCit0ZXN0KCgpID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignZG9uXCd0
IHNheSBpIGRpZG5cJ3Qgd2FybiB5YScpOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcih0aGVFcnJvcik7CisgICAgfQorICB9
KTsKKworICBuZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIocnMpOyAvLyBDb25zdHJ1Y3RpbmcgZGly
ZWN0bHkgc2hvdWxkIG5vdCB0aHJvdy4KKworfSwgJ0NvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGVycm9yZWQn
KTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xs
ZXIgPSBjOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwor
CisgIGNvbnN0IHByb21pc2UgPSByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwg
J3JlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHRoZSBlbnF1ZXVlZCBjaHVuaycpOworICB9KTsK
KworICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgcmV0dXJuIHByb21pc2U7CisKK30sICdS
ZWFkaW5nIGZyb20gYSByZWFkZXIgZm9yIGFuIGVtcHR5IHN0cmVhbSB3aWxsIHdhaXQgdW50aWwg
YSBjaHVuayBpcyBhdmFpbGFibGUnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQg
Y2FuY2VsQ2FsbGVkID0gZmFsc2U7CisgIGNvbnN0IHBhc3NlZFJlYXNvbiA9IG5ldyBFcnJvcign
aXQgd2FzblwndCB0aGUgcmlnaHQgdGltZSwgc29ycnknKTsKKyAgY29uc3QgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIGNhbmNlbChyZWFzb24pIHsKKyAgICAgIGFzc2VydF90cnVlKHJz
LmxvY2tlZCwgJ3RoZSBzdHJlYW0gc2hvdWxkIHN0aWxsIGJlIGxvY2tlZCcpOworICAgICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJzLmdldFJlYWRlcigpLCAnc2hvdWxk
IG5vdCBiZSBhYmxlIHRvIGdldCBhbm90aGVyIHJlYWRlcicpOworICAgICAgYXNzZXJ0X2VxdWFs
cyhyZWFzb24sIHBhc3NlZFJlYXNvbiwgJ3RoZSBjYW5jZWxsYXRpb24gcmVhc29uIGlzIHBhc3Nl
ZCB0aHJvdWdoIHRvIHRoZSB1bmRlcmx5aW5nIHNvdXJjZScpOworICAgICAgY2FuY2VsQ2FsbGVk
ID0gdHJ1ZTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigp
OworICByZXR1cm4gcmVhZGVyLmNhbmNlbChwYXNzZWRSZWFzb24pLnRoZW4oKCkgPT4gYXNzZXJ0
X3RydWUoY2FuY2VsQ2FsbGVkKSk7CisKK30sICdjYW5jZWwoKSBvbiBhIHJlYWRlciBkb2VzIG5v
dCByZWxlYXNlIHRoZSByZWFkZXInKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQg
Y29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0
KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcmVh
ZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisgIGNvbnN0IHByb21pc2UgPSByZWFkZXIuY2xvc2VkOwor
CisgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgcmV0dXJuIHByb21pc2U7CisKK30sICdjbG9zZWQg
c2hvdWxkIGJlIGZ1bGZpbGxlZCBhZnRlciBzdHJlYW0gaXMgY2xvc2VkICguY2xvc2VkIGFjY2Vz
cyBiZWZvcmUgYWNxdWlyaW5nKScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgbGV0IGNv
bnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChj
KSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRl
cjEgPSBycy5nZXRSZWFkZXIoKTsKKworICByZWFkZXIxLnJlbGVhc2VMb2NrKCk7CisKKyAgY29u
c3QgcmVhZGVyMiA9IHJzLmdldFJlYWRlcigpOworICBjb250cm9sbGVyLmNsb3NlKCk7CisKKyAg
cmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJv
cigpLCByZWFkZXIxLmNsb3NlZCksCisgICAgcmVhZGVyMi5jbG9zZWQKKyAgXSk7CisKK30sICdj
bG9zZWQgc2hvdWxkIGJlIHJlamVjdGVkIGFmdGVyIHJlYWRlciByZWxlYXNlcyBpdHMgbG9jayAo
bXVsdGlwbGUgc3RyZWFtIGxvY2tzKScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNv
bnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVu
cXVldWUoJ2EnKTsKKyAgICAgIGMuZW5xdWV1ZSgnYicpOworICAgICAgYy5jbG9zZSgpOworICAg
IH0KKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyMSA9IHJzLmdldFJlYWRlcigpOworICBjb25zdCBw
cm9taXNlMSA9IHJlYWRlcjEucmVhZCgpLnRoZW4ociA9PiB7CisgICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAncmVhZGluZyB0aGUgZmlyc3Qg
Y2h1bmsgZnJvbSByZWFkZXIxIHdvcmtzJyk7CisgIH0pOworICByZWFkZXIxLnJlbGVhc2VMb2Nr
KCk7CisKKyAgY29uc3QgcmVhZGVyMiA9IHJzLmdldFJlYWRlcigpOworICBjb25zdCBwcm9taXNl
MiA9IHJlYWRlcjIucmVhZCgpLnRoZW4ociA9PiB7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMo
ciwgeyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LCAncmVhZGluZyB0aGUgc2Vjb25kIGNodW5r
IGZyb20gcmVhZGVyMiB3b3JrcycpOworICB9KTsKKyAgcmVhZGVyMi5yZWxlYXNlTG9jaygpOwor
CisgIHJldHVybiBQcm9taXNlLmFsbChbcHJvbWlzZTEsIHByb21pc2UyXSk7CisKK30sICdNdWx0
aXBsZSByZWFkZXJzIGNhbiBhY2Nlc3MgdGhlIHN0cmVhbSBpbiBzZXF1ZW5jZScpOworCitwcm9t
aXNlX3Rlc3QoKCkgPT4geworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAg
c3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgfQorICB9KTsKKworICBjb25z
dCByZWFkZXIxID0gcnMuZ2V0UmVhZGVyKCk7CisgIHJlYWRlcjEucmVsZWFzZUxvY2soKTsKKwor
ICBjb25zdCByZWFkZXIyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgLy8gU2hvdWxkIGJlIGEgbm8t
b3AKKyAgcmVhZGVyMS5yZWxlYXNlTG9jaygpOworCisgIHJldHVybiByZWFkZXIyLnJlYWQoKS50
aGVuKHJlc3VsdCA9PiB7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVl
OiAnYScsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlYWQoKSBz
aG91bGQgc3RpbGwgd29yayBvbiByZWFkZXIyIGV2ZW4gYWZ0ZXIgcmVhZGVyMSBpcyByZWxlYXNl
ZCcpOworICB9KTsKKworfSwgJ0Nhbm5vdCB1c2UgYW4gYWxyZWFkeS1yZWxlYXNlZCByZWFkZXIg
dG8gdW5sb2NrIGEgc3RyZWFtIGFnYWluJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBj
b25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5l
bnF1ZXVlKCdhJyk7CisgICAgfSwKKyAgICBjYW5jZWwoKSB7CisgICAgICBhc3NlcnRfdW5yZWFj
aGVkKCd1bmRlcmx5aW5nIHNvdXJjZSBjYW5jZWwgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKTsKKyAg
ICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworICByZWFkZXIu
cmVsZWFzZUxvY2soKTsKKyAgY29uc3QgY2FuY2VsUHJvbWlzZSA9IHJlYWRlci5jYW5jZWwoKTsK
KworICBjb25zdCByZWFkZXIyID0gcnMuZ2V0UmVhZGVyKCk7CisgIGNvbnN0IHJlYWRQcm9taXNl
ID0gcmVhZGVyMi5yZWFkKCkudGhlbihyID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhy
LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdhIG5ldyByZWFkZXIgc2hvdWxkIGJlIGFi
bGUgdG8gcmVhZCBhIGNodW5rJyk7CisgIH0pOworCisgIHJldHVybiBQcm9taXNlLmFsbChbCisg
ICAgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgY2FuY2VsUHJvbWlzZSksCisg
ICAgcmVhZFByb21pc2UKKyAgXSk7CisKK30sICdjYW5jZWwoKSBvbiBhIHJlbGVhc2VkIHJlYWRl
ciBpcyBhIG5vLW9wIGFuZCBkb2VzIG5vdCBwYXNzIHRocm91Z2gnKTsKKworcHJvbWlzZV90ZXN0
KHQgPT4geworCisgIGNvbnN0IHByb21pc2VBc3NlcnRzID0gW107CisKKyAgbGV0IGNvbnRyb2xs
ZXI7CisgIGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAndW5pcXVlIGVycm9yJyB9OworICBjb25z
dCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJv
bGxlciA9IGM7CisgICAgfQorICB9KTsKKworICBjb25zdCByZWFkZXIxID0gcnMuZ2V0UmVhZGVy
KCk7CisKKyAgcHJvbWlzZUFzc2VydHMucHVzaCgKKyAgICBwcm9taXNlX3JlamVjdHModCwgdGhl
RXJyb3IsIHJlYWRlcjEuY2xvc2VkKSwKKyAgICBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3Is
IHJlYWRlcjEucmVhZCgpKQorICApOworCisgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigp
LCAoKSA9PiBycy5nZXRSZWFkZXIoKSwgJ3RyeWluZyB0byBnZXQgYW5vdGhlciByZWFkZXIgYmVm
b3JlIGVycm9yaW5nIHNob3VsZCB0aHJvdycpOworCisgIGNvbnRyb2xsZXIuZXJyb3IodGhlRXJy
b3IpOworCisgIHJlYWRlcjEucmVsZWFzZUxvY2soKTsKKworICBjb25zdCByZWFkZXIyID0gcnMu
Z2V0UmVhZGVyKCk7CisKKyAgcHJvbWlzZUFzc2VydHMucHVzaCgKKyAgICBwcm9taXNlX3JlamVj
dHModCwgdGhlRXJyb3IsIHJlYWRlcjIuY2xvc2VkKSwKKyAgICBwcm9taXNlX3JlamVjdHModCwg
dGhlRXJyb3IsIHJlYWRlcjIucmVhZCgpKQorICApOworCisgIHJldHVybiBQcm9taXNlLmFsbChw
cm9taXNlQXNzZXJ0cyk7CisKK30sICdHZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBhZnRlciBlcnJv
cmluZyB0aGUgc3RyZWFtIGFuZCByZWxlYXNpbmcgdGhlIHJlYWRlciBzaG91bGQgc3VjY2VlZCcp
OworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVy
ID0gYzsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHByb21pc2UgPSBycy5nZXRSZWFkZXIoKS5j
bG9zZWQudGhlbigKKyAgICB0LnVucmVhY2hlZF9mdW5jKCdjbG9zZWQgcHJvbWlzZSBzaG91bGQg
bm90IGJlIGZ1bGZpbGxlZCB3aGVuIHN0cmVhbSBpcyBlcnJvcmVkJyksCisgICAgZXJyID0+IHsK
KyAgICAgIGFzc2VydF9lcXVhbHMoZXJyLCB1bmRlZmluZWQsICdwYXNzZWQgZXJyb3Igc2hvdWxk
IGJlIHVuZGVmaW5lZCBhcyBpdCB3YXMnKTsKKyAgICB9CisgICk7CisKKyAgY29udHJvbGxlci5l
cnJvcigpOworICByZXR1cm4gcHJvbWlzZTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtUmVhZGVyIGNs
b3NlZCBwcm9taXNlIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHVuZGVmaW5lZCBpZiB0aGF0IGlz
IHRoZSBlcnJvcicpOworCisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoKSB7CisgICAgICByZXR1cm4gUHJvbWlzZS5y
ZWplY3QoKTsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBycy5nZXRSZWFkZXIoKS5yZWFkKCku
dGhlbigKKyAgICB0LnVucmVhY2hlZF9mdW5jKCdyZWFkIHByb21pc2Ugc2hvdWxkIG5vdCBiZSBm
dWxmaWxsZWQgd2hlbiBzdHJlYW0gaXMgZXJyb3JlZCcpLAorICAgIGVyciA9PiB7CisgICAgICBh
c3NlcnRfZXF1YWxzKGVyciwgdW5kZWZpbmVkLCAncGFzc2VkIGVycm9yIHNob3VsZCBiZSB1bmRl
ZmluZWQgYXMgaXQgd2FzJyk7CisgICAgfQorICApOworCit9LCAnUmVhZGFibGVTdHJlYW1SZWFk
ZXI6IGlmIHN0YXJ0IHJlamVjdHMgd2l0aCBubyBwYXJhbWV0ZXIsIGl0IHNob3VsZCBlcnJvciB0
aGUgc3RyZWFtIHdpdGggYW4gdW5kZWZpbmVkIGVycm9yJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+
IHsKKworICBjb25zdCB0aGVFcnJvciA9IHsgbmFtZTogJ3VuaXF1ZSBzdHJpbmcnIH07CisgIGxl
dCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3Rh
cnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKworICBjb25zdCBw
cm9taXNlID0gcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBycy5nZXRSZWFkZXIoKS5jbG9z
ZWQpOworCisgIGNvbnRyb2xsZXIuZXJyb3IodGhlRXJyb3IpOworICByZXR1cm4gcHJvbWlzZTsK
KworfSwgJ0Vycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gYWZ0ZXIgY2hlY2tpbmcgY2xvc2VkIHNo
b3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHByb21pc2UnKTsKKworcHJv
bWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAndW5pcXVlIHN0
cmluZycgfTsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0p
OworCisgIGNvbnRyb2xsZXIuZXJyb3IodGhlRXJyb3IpOworCisgIC8vIExldCdzIGNhbGwgZ2V0
UmVhZGVyIHR3aWNlIGZvciBleHRyYSB0ZXN0IGNvdmVyYWdlIG9mIHRoaXMgY29kZSBwYXRoLgor
ICBycy5nZXRSZWFkZXIoKS5yZWxlYXNlTG9jaygpOworCisgIHJldHVybiBwcm9taXNlX3JlamVj
dHModCwgdGhlRXJyb3IsIHJzLmdldFJlYWRlcigpLmNsb3NlZCk7CisKK30sICdFcnJvcmluZyBh
IFJlYWRhYmxlU3RyZWFtIGJlZm9yZSBjaGVja2luZyBjbG9zZWQgc2hvdWxkIHJlamVjdCBSZWFk
YWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4g
eworCisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKyAg
Y29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgY29uc3QgcHJvbWlzZSA9IFByb21p
c2UuYWxsKFsKKyAgICByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2Vy
dF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0s
ICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCBjbG9zZSAoMSknKTsKKyAgICB9KSwKKyAgICBy
ZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxz
KHJlc3VsdCwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxk
IGZ1bGZpbGwgd2l0aCBjbG9zZSAoMiknKTsKKyAgICB9KSwKKyAgICByZWFkZXIuY2xvc2VkCisg
IF0pOworCisgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgcmV0dXJuIHByb21pc2U7CisKK30sICdS
ZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBjbG9zZWQnKTsKKworcHJvbWlzZV90
ZXN0KCgpID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0K
KyAgfSk7CisKKyAgY29udHJvbGxlci5jbG9zZSgpOworICBjb25zdCByZWFkZXIgPSBycy5nZXRS
ZWFkZXIoKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHJlYWRlci5yZWFkKCkudGhl
bihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVl
OiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIGNs
b3NlICgxKScpOworICAgIH0pLAorICAgIHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQgPT4gewor
ICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiB1bmRlZmluZWQsIGRv
bmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIGNsb3NlICgyKScpOworICAg
IH0pLAorICAgIHJlYWRlci5jbG9zZWQKKyAgXSk7CisKK30sICdSZWFkaW5nIHR3aWNlIG9uIGEg
Y2xvc2VkIHN0cmVhbScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgbGV0IGNvbnRyb2xs
ZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7Cisg
ICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IG15RXJyb3IgPSB7
IG5hbWU6ICdtYXNoZWQgcG90YXRvZXMnIH07CisgIGNvbnRyb2xsZXIuZXJyb3IobXlFcnJvcik7
CisKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgcmV0dXJuIFByb21pc2Uu
YWxsKFsKKyAgICBwcm9taXNlX3JlamVjdHModCwgbXlFcnJvciwgcmVhZGVyLnJlYWQoKSksCisg
ICAgcHJvbWlzZV9yZWplY3RzKHQsIG15RXJyb3IsIHJlYWRlci5yZWFkKCkpLAorICAgIHByb21p
c2VfcmVqZWN0cyh0LCBteUVycm9yLCByZWFkZXIuY2xvc2VkKQorICBdKTsKKworfSwgJ1JlYWRp
bmcgdHdpY2Ugb24gYW4gZXJyb3JlZCBzdHJlYW0nKTsKKworcHJvbWlzZV90ZXN0KHQgPT4gewor
CisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Cisg
ICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKworICBj
b25zdCBteUVycm9yID0geyBuYW1lOiAnbWFzaGVkIHBvdGF0b2VzJyB9OworICBjb25zdCByZWFk
ZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICBjb25zdCBwcm9taXNlID0gUHJvbWlzZS5hbGwoWwor
ICAgIHByb21pc2VfcmVqZWN0cyh0LCBteUVycm9yLCByZWFkZXIucmVhZCgpKSwKKyAgICBwcm9t
aXNlX3JlamVjdHModCwgbXlFcnJvciwgcmVhZGVyLnJlYWQoKSksCisgICAgcHJvbWlzZV9yZWpl
Y3RzKHQsIG15RXJyb3IsIHJlYWRlci5jbG9zZWQpCisgIF0pOworCisgIGNvbnRyb2xsZXIuZXJy
b3IobXlFcnJvcik7CisgIHJldHVybiBwcm9taXNlOworCit9LCAnUmVhZGluZyB0d2ljZSBvbiBh
IHN0cmVhbSB0aGF0IGdldHMgZXJyb3JlZCcpOworCitkb25lKCk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRh
YmxlLXN0cmVhbXMvdGVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy90ZWUtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmUyZjNhNGI1OTJmNTkyOWJmMDU2NWUxOWIyMDRjMDhhZmEyN2Vh
NWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVlLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDI0IEBACisKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBycy50ZWUoKSBy
ZXR1cm5zIGFuIGFycmF5IG9mIHR3byBSZWFkYWJsZVN0cmVhbXMgCitQQVNTIFJlYWRhYmxlU3Ry
ZWFtIHRlZWluZzogc2hvdWxkIGJlIGFibGUgdG8gcmVhZCBvbmUgYnJhbmNoIHRvIHRoZSBlbmQg
d2l0aG91dCBhZmZlY3RpbmcgdGhlIG90aGVyIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6
IHZhbHVlcyBzaG91bGQgYmUgZXF1YWwgYWNyb3NzIGVhY2ggYnJhbmNoIAorUEFTUyBSZWFkYWJs
ZVN0cmVhbSB0ZWVpbmc6IGVycm9ycyBpbiB0aGUgc291cmNlIHNob3VsZCBwcm9wYWdhdGUgdG8g
Ym90aCBicmFuY2hlcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYnJh
bmNoMSBzaG91bGQgbm90IGltcGFjdCBicmFuY2gyIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVp
bmc6IGNhbmNlbGluZyBicmFuY2gyIHNob3VsZCBub3QgaW1wYWN0IGJyYW5jaDIgCitQQVNTIFJl
YWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJvdGggYnJhbmNoZXMgc2hvdWxkIGFnZ3Jl
Z2F0ZSB0aGUgY2FuY2VsIHJlYXNvbnMgaW50byBhbiBhcnJheSAKK1BBU1MgUmVhZGFibGVTdHJl
YW0gdGVlaW5nOiBmYWlsaW5nIHRvIGNhbmNlbCB0aGUgb3JpZ2luYWwgc3RyZWFtIHNob3VsZCBj
YXVzZSBjYW5jZWwoKSB0byByZWplY3Qgb24gYnJhbmNoZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFt
IHRlZWluZzogY2xvc2luZyB0aGUgb3JpZ2luYWwgc2hvdWxkIGltbWVkaWF0ZWx5IGNsb3NlIHRo
ZSBicmFuY2hlcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcmluZyB0aGUgb3Jp
Z2luYWwgc2hvdWxkIGltbWVkaWF0ZWx5IGVycm9yIHRoZSBicmFuY2hlcyAKK0ZBSUwgTG9hZCB0
ZWUuanMgd2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0X3VucmVhY2hlZDogU2hhcmVkV29ya2VyIGlz
IHVuYXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBVbnRpdGxlZCB1bmRl
ZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnbmF2aWdhdG9yLnNlcnZpY2VXb3Jr
ZXIuZ2V0UmVnaXN0cmF0aW9uJykKK0ZBSUwgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBycy50ZWUo
KSByZXR1cm5zIGFuIGFycmF5IG9mIHR3byBSZWFkYWJsZVN0cmVhbXMgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBzaG91bGQg
YmUgYWJsZSB0byByZWFkIG9uZSBicmFuY2ggdG8gdGhlIGVuZCB3aXRob3V0IGFmZmVjdGluZyB0
aGUgb3RoZXIgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFi
bGVTdHJlYW0gdGVlaW5nOiB2YWx1ZXMgc2hvdWxkIGJlIGVxdWFsIGFjcm9zcyBlYWNoIGJyYW5j
aCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBSZWFkYWJsZVN0cmVh
bSB0ZWVpbmc6IGVycm9ycyBpbiB0aGUgc291cmNlIHNob3VsZCBwcm9wYWdhdGUgdG8gYm90aCBi
cmFuY2hlcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBSZWFkYWJs
ZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBicmFuY2gxIHNob3VsZCBub3QgaW1wYWN0IGJyYW5j
aDIgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFibGVTdHJl
YW0gdGVlaW5nOiBjYW5jZWxpbmcgYnJhbmNoMiBzaG91bGQgbm90IGltcGFjdCBicmFuY2gyIENh
bid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIFJlYWRhYmxlU3RyZWFtIHRl
ZWluZzogY2FuY2VsaW5nIGJvdGggYnJhbmNoZXMgc2hvdWxkIGFnZ3JlZ2F0ZSB0aGUgY2FuY2Vs
IHJlYXNvbnMgaW50byBhbiBhcnJheSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVh
bQorRkFJTCBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGZhaWxpbmcgdG8gY2FuY2VsIHRoZSBvcmln
aW5hbCBzdHJlYW0gc2hvdWxkIGNhdXNlIGNhbmNlbCgpIHRvIHJlamVjdCBvbiBicmFuY2hlcyBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBSZWFkYWJsZVN0cmVhbSB0
ZWVpbmc6IGNsb3NpbmcgdGhlIG9yaWdpbmFsIHNob3VsZCBpbW1lZGlhdGVseSBjbG9zZSB0aGUg
YnJhbmNoZXMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgUmVhZGFi
bGVTdHJlYW0gdGVlaW5nOiBlcnJvcmluZyB0aGUgb3JpZ2luYWwgc2hvdWxkIGltbWVkaWF0ZWx5
IGVycm9yIHRoZSBicmFuY2hlcyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMv
dGVlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDJjODQ3YjgxMTc4YWQwYzUwYmFhYzA5ZDdiMWNkYzY4ODI5
MzJkMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy90ZWUuaHRtbApAQCAtMCww
ICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXpl
ci5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InRlZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorJ3Vz
ZSBzdHJpY3QnOword29ya2VyX3Rlc3QoJ3RlZS5qcycpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBp
L3JlYWRhYmxlLXN0cmVhbXMvdGVlLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3RlZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ODVmMmFmN2FiNWNlNGZmYjY5Yzk1ZjhhOGJlNTRkZmExZTJlZDA3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3RlZS5qcwpAQCAtMCwwICsxLDI1NCBAQAorJ3VzZSBz
dHJpY3QnOworCitpZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7CisgIHNlbGYuaW1wb3J0U2NyaXB0
cygnLi4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzJyk7CisgIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcycpOworfQorCit0ZXN0KCgpID0+IHsKKworICBjb25zdCBy
cyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBjb25zdCByZXN1bHQgPSBycy50ZWUoKTsKKwor
ICBhc3NlcnRfdHJ1ZShBcnJheS5pc0FycmF5KHJlc3VsdCksICdyZXR1cm4gdmFsdWUgc2hvdWxk
IGJlIGFuIGFycmF5Jyk7CisgIGFzc2VydF9lcXVhbHMocmVzdWx0Lmxlbmd0aCwgMiwgJ2FycmF5
IHNob3VsZCBoYXZlIGxlbmd0aCAyJyk7CisgIGFzc2VydF9lcXVhbHMocmVzdWx0WzBdLmNvbnN0
cnVjdG9yLCBSZWFkYWJsZVN0cmVhbSwgJzB0aCBlbGVtZW50IHNob3VsZCBiZSBhIFJlYWRhYmxl
U3RyZWFtJyk7CisgIGFzc2VydF9lcXVhbHMocmVzdWx0WzFdLmNvbnN0cnVjdG9yLCBSZWFkYWJs
ZVN0cmVhbSwgJzFzdCBlbGVtZW50IHNob3VsZCBiZSBhIFJlYWRhYmxlU3RyZWFtJyk7CisKK30s
ICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHJzLnRlZSgpIHJldHVybnMgYW4gYXJyYXkgb2YgdHdv
IFJlYWRhYmxlU3RyZWFtcycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgn
YScpOworICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICBjLmNsb3NlKCk7CisgICAgfQorICB9
KTsKKworICBjb25zdCBicmFuY2ggPSBycy50ZWUoKTsKKyAgY29uc3QgYnJhbmNoMSA9IGJyYW5j
aFswXTsKKyAgY29uc3QgYnJhbmNoMiA9IGJyYW5jaFsxXTsKKyAgY29uc3QgcmVhZGVyMSA9IGJy
YW5jaDEuZ2V0UmVhZGVyKCk7CisgIGNvbnN0IHJlYWRlcjIgPSBicmFuY2gyLmdldFJlYWRlcigp
OworCisgIHJlYWRlcjIuY2xvc2VkLnRoZW4odC51bnJlYWNoZWRfZnVuYygnYnJhbmNoMiBzaG91
bGQgbm90IGJlIGNsb3NlZCcpKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHJlYWRl
cjEuY2xvc2VkLAorICAgIHJlYWRlcjEucmVhZCgpLnRoZW4ociA9PiB7CisgICAgICBhc3NlcnRf
b2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCBjaHVu
ayBmcm9tIGJyYW5jaDEgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKyAgICB9KSwKKyAgICByZWFkZXIx
LnJlYWQoKS50aGVuKHIgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1
ZTogJ2InLCBkb25lOiBmYWxzZSB9LCAnc2Vjb25kIGNodW5rIGZyb20gYnJhbmNoMSBzaG91bGQg
YmUgY29ycmVjdCcpOworICAgIH0pLAorICAgIHJlYWRlcjEucmVhZCgpLnRoZW4ociA9PiB7Cisg
ICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRy
dWUgfSwgJ3RoaXJkIHJlYWQoKSBmcm9tIGJyYW5jaDEgc2hvdWxkIGJlIGRvbmUnKTsKKyAgICB9
KSwKKyAgICByZWFkZXIyLnJlYWQoKS50aGVuKHIgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgY2h1bmsgZnJvbSBi
cmFuY2gyIHNob3VsZCBiZSBjb3JyZWN0Jyk7CisgICAgfSkKKyAgXSk7CisKK30sICdSZWFkYWJs
ZVN0cmVhbSB0ZWVpbmc6IHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgb25lIGJyYW5jaCB0byB0aGUg
ZW5kIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBvdGhlcicpOworCitwcm9taXNlX3Rlc3QoKCkgPT4g
eworCisgIGNvbnN0IHRoZU9iamVjdCA9IHsgdGhlOiAndGVzdCBvYmplY3QnIH07CisgIGNvbnN0
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVl
dWUodGhlT2JqZWN0KTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IGJyYW5jaCA9IHJzLnRlZSgp
OworICBjb25zdCBicmFuY2gxID0gYnJhbmNoWzBdOworICBjb25zdCBicmFuY2gyID0gYnJhbmNo
WzFdOworICBjb25zdCByZWFkZXIxID0gYnJhbmNoMS5nZXRSZWFkZXIoKTsKKyAgY29uc3QgcmVh
ZGVyMiA9IGJyYW5jaDIuZ2V0UmVhZGVyKCk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFtyZWFk
ZXIxLnJlYWQoKSwgcmVhZGVyMi5yZWFkKCldKS50aGVuKHZhbHVlcyA9PiB7CisgICAgYXNzZXJ0
X29iamVjdF9lcXVhbHModmFsdWVzWzBdLCB2YWx1ZXNbMV0sICd0aGUgdmFsdWVzIHNob3VsZCBi
ZSBlcXVhbCcpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogdmFsdWVzIHNo
b3VsZCBiZSBlcXVhbCBhY3Jvc3MgZWFjaCBicmFuY2gnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4g
eworCisgIGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAnYm9vIScgfTsKKyAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgnYScp
OworICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgdGhy
b3cgdGhlRXJyb3I7CisgICAgfQorICB9KTsKKworICBjb25zdCBicmFuY2hlcyA9IHJzLnRlZSgp
OworICBjb25zdCByZWFkZXIxID0gYnJhbmNoZXNbMF0uZ2V0UmVhZGVyKCk7CisgIGNvbnN0IHJl
YWRlcjIgPSBicmFuY2hlc1sxXS5nZXRSZWFkZXIoKTsKKworICByZWFkZXIxLmxhYmVsID0gJ3Jl
YWRlcjEnOworICByZWFkZXIyLmxhYmVsID0gJ3JlYWRlcjInOworCisgIHJldHVybiBQcm9taXNl
LmFsbChbCisgICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIxLmNsb3NlZCks
CisgICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIyLmNsb3NlZCksCisgICAg
cmVhZGVyMS5yZWFkKCkudGhlbihyID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIs
IHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3Nob3VsZCBiZSBhYmxlIHRvIHJlYWQgdGhl
IGZpcnN0IGNodW5rIGluIGJyYW5jaDEnKTsKKyAgICB9KSwKKyAgICByZWFkZXIxLnJlYWQoKS50
aGVuKHIgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2InLCBk
b25lOiBmYWxzZSB9LCAnc2hvdWxkIGJlIGFibGUgdG8gcmVhZCB0aGUgc2Vjb25kIGNodW5rIGlu
IGJyYW5jaDEnKTsKKworICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwg
cmVhZGVyMi5yZWFkKCkpOworICAgIH0pCisgICAgLnRoZW4oKCkgPT4gcHJvbWlzZV9yZWplY3Rz
KHQsIHRoZUVycm9yLCByZWFkZXIxLnJlYWQoKSkpCisgIF0pOworCit9LCAnUmVhZGFibGVTdHJl
YW0gdGVlaW5nOiBlcnJvcnMgaW4gdGhlIHNvdXJjZSBzaG91bGQgcHJvcGFnYXRlIHRvIGJvdGgg
YnJhbmNoZXMnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKCdhJyk7Cisg
ICAgICBjLmVucXVldWUoJ2InKTsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9CisgIH0pOworCisg
IGNvbnN0IGJyYW5jaGVzID0gcnMudGVlKCk7CisgIGNvbnN0IGJyYW5jaDEgPSBicmFuY2hlc1sw
XTsKKyAgY29uc3QgYnJhbmNoMiA9IGJyYW5jaGVzWzFdOworICBicmFuY2gxLmNhbmNlbCgpOwor
CisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcmVhZGFibGVTdHJlYW1Ub0FycmF5KGJyYW5j
aDEpLnRoZW4oY2h1bmtzID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBb
XSwgJ2JyYW5jaDEgc2hvdWxkIGhhdmUgbm8gY2h1bmtzJyk7CisgICAgfSksCisgICAgcmVhZGFi
bGVTdHJlYW1Ub0FycmF5KGJyYW5jaDIpLnRoZW4oY2h1bmtzID0+IHsKKyAgICAgIGFzc2VydF9h
cnJheV9lcXVhbHMoY2h1bmtzLCBbJ2EnLCAnYiddLCAnYnJhbmNoMiBzaG91bGQgaGF2ZSB0d28g
Y2h1bmtzJyk7CisgICAgfSkKKyAgXSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNh
bmNlbGluZyBicmFuY2gxIHNob3VsZCBub3QgaW1wYWN0IGJyYW5jaDInKTsKKworcHJvbWlzZV90
ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3Rh
cnQoYykgeworICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICBjLmVucXVldWUoJ2InKTsKKyAg
ICAgIGMuY2xvc2UoKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IGJyYW5jaGVzID0gcnMudGVl
KCk7CisgIGNvbnN0IGJyYW5jaDEgPSBicmFuY2hlc1swXTsKKyAgY29uc3QgYnJhbmNoMiA9IGJy
YW5jaGVzWzFdOworICBicmFuY2gyLmNhbmNlbCgpOworCisgIHJldHVybiBQcm9taXNlLmFsbChb
CisgICAgcmVhZGFibGVTdHJlYW1Ub0FycmF5KGJyYW5jaDEpLnRoZW4oY2h1bmtzID0+IHsKKyAg
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbJ2EnLCAnYiddLCAnYnJhbmNoMSBzaG91
bGQgaGF2ZSB0d28gY2h1bmtzJyk7CisgICAgfSksCisgICAgcmVhZGFibGVTdHJlYW1Ub0FycmF5
KGJyYW5jaDIpLnRoZW4oY2h1bmtzID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1
bmtzLCBbXSwgJ2JyYW5jaDIgc2hvdWxkIGhhdmUgbm8gY2h1bmtzJyk7CisgICAgfSkKKyAgXSk7
CisKK30sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBicmFuY2gyIHNob3VsZCBu
b3QgaW1wYWN0IGJyYW5jaDInKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBy
ZWFzb24xID0gbmV3IEVycm9yKCdXZVwncmUgd2FudGVkIG1lbi4nKTsKKyAgY29uc3QgcmVhc29u
MiA9IG5ldyBFcnJvcignSSBoYXZlIHRoZSBkZWF0aCBzZW50ZW5jZSBvbiB0d2VsdmUgc3lzdGVt
cy4nKTsKKworICBsZXQgcmVzb2x2ZTsKKyAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKHIg
PT4gcmVzb2x2ZSA9IHIpOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAg
Y2FuY2VsKHJlYXNvbikgeworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhyZWFzb24sIFtyZWFz
b24xLCByZWFzb24yXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBjYW5jZWwgcmVh
c29uIHNob3VsZCBiZSBhbiBhcnJheSBjb250YWluaW5nIHRob3NlIGZyb20gdGhlIGJyYW5jaGVz
Jyk7CisgICAgICByZXNvbHZlKCk7CisgICAgfQorICB9KTsKKworICBjb25zdCBicmFuY2ggPSBy
cy50ZWUoKTsKKyAgY29uc3QgYnJhbmNoMSA9IGJyYW5jaFswXTsKKyAgY29uc3QgYnJhbmNoMiA9
IGJyYW5jaFsxXTsKKyAgYnJhbmNoMS5jYW5jZWwocmVhc29uMSk7CisgIGJyYW5jaDIuY2FuY2Vs
KHJlYXNvbjIpOworCisgIHJldHVybiBwcm9taXNlOworCit9LCAnUmVhZGFibGVTdHJlYW0gdGVl
aW5nOiBjYW5jZWxpbmcgYm90aCBicmFuY2hlcyBzaG91bGQgYWdncmVnYXRlIHRoZSBjYW5jZWwg
cmVhc29ucyBpbnRvIGFuIGFycmF5Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25z
dCB0aGVFcnJvciA9IHsgbmFtZTogJ0lcJ2xsIGJlIGNhcmVmdWwuJyB9OworICBjb25zdCBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKCkgeworICAgICAgdGhyb3cgdGhlRXJy
b3I7CisgICAgfQorICB9KTsKKworICBjb25zdCBicmFuY2ggPSBycy50ZWUoKTsKKyAgY29uc3Qg
YnJhbmNoMSA9IGJyYW5jaFswXTsKKyAgY29uc3QgYnJhbmNoMiA9IGJyYW5jaFsxXTsKKworICBy
ZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgYnJh
bmNoMS5jYW5jZWwoKSksCisgICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBicmFuY2gy
LmNhbmNlbCgpKQorICBdKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogZmFpbGluZyB0
byBjYW5jZWwgdGhlIG9yaWdpbmFsIHN0cmVhbSBzaG91bGQgY2F1c2UgY2FuY2VsKCkgdG8gcmVq
ZWN0IG9uIGJyYW5jaGVzJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRy
b2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7
CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IGJyYW5jaGVz
ID0gcnMudGVlKCk7CisgIGNvbnN0IHJlYWRlcjEgPSBicmFuY2hlc1swXS5nZXRSZWFkZXIoKTsK
KyAgY29uc3QgcmVhZGVyMiA9IGJyYW5jaGVzWzFdLmdldFJlYWRlcigpOworCisgIGNvbnN0IHBy
b21pc2UgPSBQcm9taXNlLmFsbChbcmVhZGVyMS5jbG9zZWQsIHJlYWRlcjIuY2xvc2VkXSk7CisK
KyAgY29udHJvbGxlci5jbG9zZSgpOworICByZXR1cm4gcHJvbWlzZTsKKworfSwgJ1JlYWRhYmxl
U3RyZWFtIHRlZWluZzogY2xvc2luZyB0aGUgb3JpZ2luYWwgc2hvdWxkIGltbWVkaWF0ZWx5IGNs
b3NlIHRoZSBicmFuY2hlcycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgbGV0IGNvbnRy
b2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7
CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IGJyYW5jaGVz
ID0gcnMudGVlKCk7CisgIGNvbnN0IHJlYWRlcjEgPSBicmFuY2hlc1swXS5nZXRSZWFkZXIoKTsK
KyAgY29uc3QgcmVhZGVyMiA9IGJyYW5jaGVzWzFdLmdldFJlYWRlcigpOworCisgIGNvbnN0IHRo
ZUVycm9yID0geyBuYW1lOiAnYm9vIScgfTsKKyAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UuYWxs
KFsKKyAgICBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJlYWRlcjEuY2xvc2VkKSwKKyAg
ICBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJlYWRlcjIuY2xvc2VkKQorICBdKTsKKwor
ICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKKyAgcmV0dXJuIHByb21pc2U7CisKK30sICdS
ZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9yaW5nIHRoZSBvcmlnaW5hbCBzaG91bGQgaW1tZWRp
YXRlbHkgZXJyb3IgdGhlIGJyYW5jaGVzJyk7CisKK2RvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFi
bGUtc3RyZWFtcy90ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3RlbXBs
YXRlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTcwOWQxMDEzNGVmOTY2YTkzNzUxZDNlMTNh
OTdjMTY0MzlmNDNmMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0
ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTc0IEBACisKK1BBU1MgUnVubmluZyB0ZW1wbGF0
ZWRSU0VtcHR5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KSAKK1BBU1MgaW5zdGFuY2VzIGhh
dmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQgcHJvcGVydGllcyAKK1BBU1MgUnVubmluZyB0ZW1w
bGF0ZWRSU0VtcHR5UmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXIgCitQ
QVNTIGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgCitQ
QVNTIGxvY2tlZCBzaG91bGQgYmUgdHJ1ZSAKK1BBU1MgcmVhZCgpIHNob3VsZCBuZXZlciBzZXR0
bGUgCitQQVNTIHR3byByZWFkKClzIHNob3VsZCBib3RoIG5ldmVyIHNldHRsZSAKK1BBU1MgcmVh
ZCgpIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMgZWFjaCB0aW1lIAorUEFTUyBnZXRS
ZWFkZXIoKSBhZ2FpbiBvbiB0aGUgc3RyZWFtIHNob3VsZCBmYWlsIAorUEFTUyByZWxlYXNpbmcg
dGhlIGxvY2sgd2l0aCBwZW5kaW5nIHJlYWQgcmVxdWVzdHMgc2hvdWxkIHRocm93IGJ1dCB0aGUg
cmVhZCByZXF1ZXN0cyBzaG91bGQgc3RheSBwZW5kaW5nIAorUEFTUyByZWxlYXNpbmcgdGhlIGxv
Y2sgc2hvdWxkIGNhdXNlIGZ1cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlw
ZUVycm9yIAorUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCBjYWxs
cyB0byByZWplY3Qgd2l0aCBhIFR5cGVFcnJvciAKK1BBU1MgcmVsZWFzaW5nIHRoZSBsb2NrIHNo
b3VsZCBjYXVzZSBsb2NrZWQgdG8gYmVjb21lIGZhbHNlIAorUEFTUyBjYW5jZWxpbmcgdmlhIHRo
ZSByZWFkZXIgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgdG8gYWN0IGNsb3NlZCAKK1BBU1MgY2Fu
Y2VsaW5nIHZpYSB0aGUgc3RyZWFtIHNob3VsZCBmYWlsIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRl
ZFJTQ2xvc2VkIHdpdGggUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFydCkg
CitQQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlz
ZSBlYWNoIHRpbWUgCitQQVNTIGxvY2tlZCBzaG91bGQgYmUgZmFsc2UgCitQQVNTIGdldFJlYWRl
cigpIHNob3VsZCBiZSBPSyAKK1BBU1Mgc2hvdWxkIGJlIGFibGUgdG8gYWNxdWlyZSBtdWx0aXBs
ZSByZWFkZXJzIGlmIHRoZXkgYXJlIHJlbGVhc2VkIGluIHN1Y2Nlc3Npb24gCitQQVNTIHNob3Vs
ZCBub3QgYmUgYWJsZSB0byBhY3F1aXJlIGEgc2Vjb25kIHJlYWRlciBpZiB3ZSBkb24ndCByZWxl
YXNlIHRoZSBmaXJzdCBvbmUgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIg
d2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIp
IAorUEFTUyByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRv
bmU6IHRydWUgfSAKK1BBU1MgcmVhZCgpIG11bHRpcGxlIHRpbWVzIHNob3VsZCBmdWxmaWxsIHdp
dGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCitQQVNTIHJlYWQoKSBzaG91bGQg
d29yayB3aGVuIHVzZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2FsbGJhY2sgCitQ
QVNTIGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCAKK1BBU1MgcmVsZWFzaW5n
IHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRp
dHkgCitQQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJv
bWlzZSBlYWNoIHRpbWUgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIgd2l0
aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlcikgCitQ
QVNTIHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTog
dHJ1ZSB9IAorUEFTUyByZWFkKCkgbXVsdGlwbGUgdGltZXMgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7
IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKK1BBU1MgcmVhZCgpIHNob3VsZCB3b3Jr
IHdoZW4gdXNlZCB3aXRoaW4gYW5vdGhlciByZWFkKCkgZnVsZmlsbCBjYWxsYmFjayAKK1BBU1Mg
Y2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIAorUEFTUyByZWxlYXNpbmcgdGhl
IGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAK
K1BBU1MgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNl
IGVhY2ggdGltZSAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZCB3aXRoIFJlYWRhYmxl
U3RyZWFtIChjbG9zZWQgdmlhIGNhbmNlbCkgCitQQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1cm4g
YSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgCitQQVNTIGxvY2tlZCBzaG91
bGQgYmUgZmFsc2UgCitQQVNTIGdldFJlYWRlcigpIHNob3VsZCBiZSBPSyAKK1BBU1Mgc2hvdWxk
IGJlIGFibGUgdG8gYWNxdWlyZSBtdWx0aXBsZSByZWFkZXJzIGlmIHRoZXkgYXJlIHJlbGVhc2Vk
IGluIHN1Y2Nlc3Npb24gCitQQVNTIHNob3VsZCBub3QgYmUgYWJsZSB0byBhY3F1aXJlIGEgc2Vj
b25kIHJlYWRlciBpZiB3ZSBkb24ndCByZWxlYXNlIHRoZSBmaXJzdCBvbmUgCitQQVNTIFJ1bm5p
bmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNs
b3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKSAKK1BBU1MgcmVhZCgpIHNob3Vs
ZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCitQQVNTIHJl
YWQoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5l
ZCwgZG9uZTogdHJ1ZSB9IAorUEFTUyByZWFkKCkgc2hvdWxkIHdvcmsgd2hlbiB1c2VkIHdpdGhp
biBhbm90aGVyIHJlYWQoKSBmdWxmaWxsIGNhbGxiYWNrIAorUEFTUyBjbG9zZWQgc2hvdWxkIGZ1
bGZpbGwgd2l0aCB1bmRlZmluZWQgCitQQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1
c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAorUEFTUyBjYW5jZWwoKSBz
aG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIAorUEFT
UyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVk
IHZpYSBjYWxsIGluIHN0YXJ0KSAKK1BBU1MgZ2V0UmVhZGVyKCkgc2hvdWxkIHJldHVybiBhIHJl
YWRlciB0aGF0IGFjdHMgZXJyb3JlZCAKK1BBU1MgcmVhZCgpIHR3aWNlIHNob3VsZCBnaXZlIHRo
ZSBlcnJvciBlYWNoIHRpbWUgCitQQVNTIGxvY2tlZCBzaG91bGQgYmUgZmFsc2UgCitQQVNTIFJ1
bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJy
b3JlZCB2aWEgY2FsbCBpbiBzdGFydCkgCitQQVNTIHNob3VsZCBiZSBhYmxlIHRvIG9idGFpbiBh
IHNlY29uZCByZWFkZXIsIHdpdGggdGhlIGNvcnJlY3QgY2xvc2VkIHByb21pc2UgCitQQVNTIHNo
b3VsZCBub3QgYmUgYWJsZSB0byBvYnRhaW4gYWRkaXRpb25hbCByZWFkZXJzIGlmIHdlIGRvbid0
IHJlbGVhc2UgdGhlIGZpcnN0IGxvY2sgCitQQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBk
aXN0aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZSAKK1BBU1MgcmVhZGVyIGNhbmNlbCgp
IHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZSAKK1BB
U1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3Jl
ZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgCitQQVNTIGdldFJl
YWRlcigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQgCitQQVNTIHJl
YWQoKSB0d2ljZSBzaG91bGQgZ2l2ZSB0aGUgZXJyb3IgZWFjaCB0aW1lIAorUEFTUyBsb2NrZWQg
c2hvdWxkIGJlIGZhbHNlIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlciB3
aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9t
aXNlIGluIHN0YXJ0KSByZWFkZXIgCitQQVNTIGNsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhl
IGVycm9yIAorUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byBy
ZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKK1BBU1MgcmVhZCgpIHNob3VsZCByZWplY3Qgd2l0
aCB0aGUgZXJyb3IgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyIHdpdGgg
UmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcikgCitQ
QVNTIGNsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAorUEFTUyByZWxlYXNpbmcg
dGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0
eSAKK1BBU1MgcmVhZCgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCitQQVNTIFJ1bm5p
bmcgdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChl
cnJvcmVkIGFmdGVyIGdldHRpbmcgcmVhZGVyKSAKK1BBU1MgY2xvc2VkIHNob3VsZCByZWplY3Qg
d2l0aCB0aGUgZXJyb3IgCitQQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xv
c2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAorUEFTUyByZWFkKCkgc2hvdWxkIHJl
amVjdCB3aXRoIHRoZSBlcnJvciAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU1R3b0NodW5rc09w
ZW5SZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgc3RpbGwg
b3BlbikgcmVhZGVyIAorUEFTUyBjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRpbmcg
d2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MgKHNlcXVlbnRpYWwpIAorUEFTUyBjYWxs
aW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90
aCBjaHVua3MgKG5lc3RlZCkgCitQQVNTIHJlYWQoKSBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHBy
b21pc2VzIGVhY2ggdGltZSAKK1BBU1MgY2FuY2VsKCkgYWZ0ZXIgYSByZWFkKCkgc2hvdWxkIHN0
aWxsIGdpdmUgdGhhdCBzaW5nbGUgcmVhZCByZXN1bHQgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVk
UlNUd29DaHVua3NDbG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBl
bnF1ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlciAKK1BBU1MgdGhpcmQgcmVhZCgpLCB3aXRob3V0
IHdhaXRpbmcsIHNob3VsZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IChz
ZXF1ZW50aWFsKSAKK1BBU1MgdGhpcmQgcmVhZCgpLCB3aXRob3V0IHdhaXRpbmcsIHNob3VsZCBn
aXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IChuZXN0ZWQpIAorUEFTUyBkcmFp
bmluZyB0aGUgc3RyZWFtIHZpYSByZWFkKCkgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgY2xvc2Vk
IHByb21pc2UgdG8gZnVsZmlsbCwgYnV0IGxvY2tlZCBzdGF5cyB0cnVlIAorUEFTUyByZWxlYXNp
bmcgdGhlIGxvY2sgYWZ0ZXIgdGhlIHN0cmVhbSBpcyBjbG9zZWQgc2hvdWxkIGNhdXNlIGxvY2tl
ZCB0byBiZWNvbWUgZmFsc2UgCitQQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2Ug
ZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVqZWN0IHdpdGggYSBUeXBlRXJyb3IgCitQQVNTIHJl
YWRlcidzIGNsb3NlZCBwcm9wZXJ0eSBhbHdheXMgcmV0dXJucyB0aGUgc2FtZSBwcm9taXNlIAor
RkFJTCBMb2FkIHRlbXBsYXRlZC5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3NlcnRfdW5yZWFjaGVk
OiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitG
QUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICduYXZp
Z2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3RyYXRpb24nKQorUEFTUyBSdW5uaW5nIHRlbXBs
YXRlZFJTRW1wdHkgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIAorRkFJTCBpbnN0YW5jZXMg
aGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIENhbid0IGZpbmQgdmFyaWFi
bGU6IFJlYWRhYmxlU3RyZWFtCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFbXB0eVJlYWRlciB3
aXRoIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyIAorRkFJTCBpbnN0YW5jZXMgaGF2ZSB0
aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIENhbid0IGZpbmQgdmFyaWFibGU6IFJl
YWRhYmxlU3RyZWFtCitGQUlMIGxvY2tlZCBzaG91bGQgYmUgdHJ1ZSBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCByZWFkKCkgc2hvdWxkIG5ldmVyIHNldHRsZSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCB0d28gcmVhZCgpcyBzaG91bGQg
Ym90aCBuZXZlciBzZXR0bGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZB
SUwgcmVhZCgpIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMgZWFjaCB0aW1lIENhbid0
IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIGdldFJlYWRlcigpIGFnYWluIG9u
IHRoZSBzdHJlYW0gc2hvdWxkIGZhaWwgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJl
YW0KK0ZBSUwgcmVsZWFzaW5nIHRoZSBsb2NrIHdpdGggcGVuZGluZyByZWFkIHJlcXVlc3RzIHNo
b3VsZCB0aHJvdyBidXQgdGhlIHJlYWQgcmVxdWVzdHMgc2hvdWxkIHN0YXkgcGVuZGluZyBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCByZWxlYXNpbmcgdGhlIGxvY2sg
c2hvdWxkIGNhdXNlIGZ1cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVy
cm9yIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIHJlbGVhc2luZyB0
aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVy
cm9yIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIHJlbGVhc2luZyB0
aGUgbG9jayBzaG91bGQgY2F1c2UgbG9ja2VkIHRvIGJlY29tZSBmYWxzZSBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBjYW5jZWxpbmcgdmlhIHRoZSByZWFkZXIgc2hv
dWxkIGNhdXNlIHRoZSByZWFkZXIgdG8gYWN0IGNsb3NlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBS
ZWFkYWJsZVN0cmVhbQorRkFJTCBjYW5jZWxpbmcgdmlhIHRoZSBzdHJlYW0gc2hvdWxkIGZhaWwg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK1BBU1MgUnVubmluZyB0ZW1wbGF0
ZWRSU0Nsb3NlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbGwgaW4gc3RhcnQp
IAorRkFJTCBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21p
c2UgZWFjaCB0aW1lIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIGxv
Y2tlZCBzaG91bGQgYmUgZmFsc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0K
K0ZBSUwgZ2V0UmVhZGVyKCkgc2hvdWxkIGJlIE9LIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRh
YmxlU3RyZWFtCitGQUlMIHNob3VsZCBiZSBhYmxlIHRvIGFjcXVpcmUgbXVsdGlwbGUgcmVhZGVy
cyBpZiB0aGV5IGFyZSByZWxlYXNlZCBpbiBzdWNjZXNzaW9uIENhbid0IGZpbmQgdmFyaWFibGU6
IFJlYWRhYmxlU3RyZWFtCitGQUlMIHNob3VsZCBub3QgYmUgYWJsZSB0byBhY3F1aXJlIGEgc2Vj
b25kIHJlYWRlciBpZiB3ZSBkb24ndCByZWxlYXNlIHRoZSBmaXJzdCBvbmUgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJl
YWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJl
YWRlcikgCitGQUlMIHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5l
ZCwgZG9uZTogdHJ1ZSB9IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlM
IHJlYWQoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVm
aW5lZCwgZG9uZTogdHJ1ZSB9IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitG
QUlMIHJlYWQoKSBzaG91bGQgd29yayB3aGVuIHVzZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1
bGZpbGwgY2FsbGJhY2sgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwg
Y2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIENhbid0IGZpbmQgdmFyaWFibGU6
IFJlYWRhYmxlU3RyZWFtCitGQUlMIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xv
c2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IENhbid0IGZpbmQgdmFyaWFibGU6IFJl
YWRhYmxlU3RyZWFtCitGQUlMIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxm
aWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJl
YW0KK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3Ry
ZWFtIHJlYWRlciAoY2xvc2VkIGFmdGVyIGdldHRpbmcgcmVhZGVyKSAKK0ZBSUwgcmVhZCgpIHNo
b3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgcmVhZCgpIG11bHRpcGxlIHRpbWVz
IHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gQ2Fu
J3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgcmVhZCgpIHNob3VsZCB3b3Jr
IHdoZW4gdXNlZCB3aXRoaW4gYW5vdGhlciByZWFkKCkgZnVsZmlsbCBjYWxsYmFjayBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwg
d2l0aCB1bmRlZmluZWQgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwg
cmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFu
Z2UgaWRlbnRpdHkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgY2Fu
Y2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGlt
ZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorUEFTUyBSdW5uaW5nIHRlbXBs
YXRlZFJTQ2xvc2VkIHdpdGggUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKSAKK0ZB
SUwgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVh
Y2ggdGltZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBsb2NrZWQg
c2hvdWxkIGJlIGZhbHNlIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlM
IGdldFJlYWRlcigpIHNob3VsZCBiZSBPSyBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0
cmVhbQorRkFJTCBzaG91bGQgYmUgYWJsZSB0byBhY3F1aXJlIG11bHRpcGxlIHJlYWRlcnMgaWYg
dGhleSBhcmUgcmVsZWFzZWQgaW4gc3VjY2Vzc2lvbiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFk
YWJsZVN0cmVhbQorRkFJTCBzaG91bGQgbm90IGJlIGFibGUgdG8gYWNxdWlyZSBhIHNlY29uZCBy
ZWFkZXIgaWYgd2UgZG9uJ3QgcmVsZWFzZSB0aGUgZmlyc3Qgb25lIENhbid0IGZpbmQgdmFyaWFi
bGU6IFJlYWRhYmxlU3RyZWFtCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIg
d2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRp
bmcgcmVhZGVyKSAKK0ZBSUwgcmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5k
ZWZpbmVkLCBkb25lOiB0cnVlIH0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0K
K0ZBSUwgcmVhZCgpIG11bHRpcGxlIHRpbWVzIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTog
dW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJl
YW0KK0ZBSUwgcmVhZCgpIHNob3VsZCB3b3JrIHdoZW4gdXNlZCB3aXRoaW4gYW5vdGhlciByZWFk
KCkgZnVsZmlsbCBjYWxsYmFjayBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQor
RkFJTCBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQgQ2FuJ3QgZmluZCB2YXJp
YWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVz
ZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0
IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJs
ZVN0cmVhbQorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRoIFJlYWRhYmxlU3Ry
ZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KSAKK0ZBSUwgZ2V0UmVhZGVyKCkgc2hvdWxk
IHJldHVybiBhIHJlYWRlciB0aGF0IGFjdHMgZXJyb3JlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBS
ZWFkYWJsZVN0cmVhbQorRkFJTCByZWFkKCkgdHdpY2Ugc2hvdWxkIGdpdmUgdGhlIGVycm9yIGVh
Y2ggdGltZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBsb2NrZWQg
c2hvdWxkIGJlIGZhbHNlIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitQQVNT
IFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkgd2l0aCBSZWFkYWJsZVN0cmVhbSAo
ZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCkgCitGQUlMIHNob3VsZCBiZSBhYmxlIHRvIG9idGFp
biBhIHNlY29uZCByZWFkZXIsIHdpdGggdGhlIGNvcnJlY3QgY2xvc2VkIHByb21pc2UgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgc2hvdWxkIG5vdCBiZSBhYmxlIHRv
IG9idGFpbiBhZGRpdGlvbmFsIHJlYWRlcnMgaWYgd2UgZG9uJ3QgcmVsZWFzZSB0aGUgZmlyc3Qg
bG9jayBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBjYW5jZWwoKSBz
aG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgcmVhZGVyIGNhbmNlbCgpIHNob3Vs
ZCByZXR1cm4gYSBkaXN0aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZSBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3Jl
ZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBw
cm9taXNlIGluIHN0YXJ0KSAKK0ZBSUwgZ2V0UmVhZGVyKCkgc2hvdWxkIHJldHVybiBhIHJlYWRl
ciB0aGF0IGFjdHMgZXJyb3JlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQor
RkFJTCByZWFkKCkgdHdpY2Ugc2hvdWxkIGdpdmUgdGhlIGVycm9yIGVhY2ggdGltZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBsb2NrZWQgc2hvdWxkIGJlIGZhbHNl
IENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitQQVNTIFJ1bm5pbmcgdGVtcGxh
dGVkUlNFcnJvcmVkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVy
bmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpIHJlYWRlciAKK0ZBSUwgY2xvc2VkIHNo
b3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVT
dHJlYW0KK0ZBSUwgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVq
ZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJl
YW0KK0ZBSUwgcmVhZCgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRS
ZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQgYmVmb3JlIGdldHRpbmcg
cmVhZGVyKSAKK0ZBSUwgY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgcmVsZWFzaW5nIHRoZSBsb2NrIHNo
b3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgcmVhZCgpIHNob3VsZCByZWplY3Qgd2l0
aCB0aGUgZXJyb3IgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK1BBU1MgUnVu
bmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIg
KGVycm9yZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpIAorRkFJTCBjbG9zZWQgc2hvdWxkIHJlamVj
dCB3aXRoIHRoZSBlcnJvciBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJ
TCByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNo
YW5nZSBpZGVudGl0eSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorRkFJTCBy
ZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciBDYW4ndCBmaW5kIHZhcmlhYmxlOiBS
ZWFkYWJsZVN0cmVhbQorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTVHdvQ2h1bmtzT3BlblJlYWRl
ciB3aXRoIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCBzdGlsbCBvcGVuKSBy
ZWFkZXIgCitGQUlMIGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3aWxsIGV2
ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcyAoc2VxdWVudGlhbCkgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogUmVhZGFibGVTdHJlYW0KK0ZBSUwgY2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aG91dCB3YWl0
aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1bmtzIChuZXN0ZWQpIENhbid0IGZpbmQg
dmFyaWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIHJlYWQoKSBzaG91bGQgcmV0dXJuIGRpc3Rp
bmN0IHByb21pc2VzIGVhY2ggdGltZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVh
bQorRkFJTCBjYW5jZWwoKSBhZnRlciBhIHJlYWQoKSBzaG91bGQgc3RpbGwgZ2l2ZSB0aGF0IHNp
bmdsZSByZWFkIHJlc3VsdCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBSZWFkYWJsZVN0cmVhbQorUEFT
UyBSdW5uaW5nIHRlbXBsYXRlZFJTVHdvQ2h1bmtzQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVT
dHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXIgCitGQUlMIHRo
aXJkIHJlYWQoKSwgd2l0aG91dCB3YWl0aW5nLCBzaG91bGQgZ2l2ZSB7IHZhbHVlOiB1bmRlZmlu
ZWQsIGRvbmU6IHRydWUgfSAoc2VxdWVudGlhbCkgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFi
bGVTdHJlYW0KK0ZBSUwgdGhpcmQgcmVhZCgpLCB3aXRob3V0IHdhaXRpbmcsIHNob3VsZCBnaXZl
IHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IChuZXN0ZWQpIENhbid0IGZpbmQgdmFy
aWFibGU6IFJlYWRhYmxlU3RyZWFtCitGQUlMIGRyYWluaW5nIHRoZSBzdHJlYW0gdmlhIHJlYWQo
KSBzaG91bGQgY2F1c2UgdGhlIHJlYWRlciBjbG9zZWQgcHJvbWlzZSB0byBmdWxmaWxsLCBidXQg
bG9ja2VkIHN0YXlzIHRydWUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0KK0ZB
SUwgcmVsZWFzaW5nIHRoZSBsb2NrIGFmdGVyIHRoZSBzdHJlYW0gaXMgY2xvc2VkIHNob3VsZCBj
YXVzZSBsb2NrZWQgdG8gYmVjb21lIGZhbHNlIENhbid0IGZpbmQgdmFyaWFibGU6IFJlYWRhYmxl
U3RyZWFtCitGQUlMIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgZnVydGhlciByZWFk
KCkgY2FsbHMgdG8gcmVqZWN0IHdpdGggYSBUeXBlRXJyb3IgQ2FuJ3QgZmluZCB2YXJpYWJsZTog
UmVhZGFibGVTdHJlYW0KK0ZBSUwgcmVhZGVyJ3MgY2xvc2VkIHByb3BlcnR5IGFsd2F5cyByZXR1
cm5zIHRoZSBzYW1lIHByb21pc2UgQ2FuJ3QgZmluZCB2YXJpYWJsZTogUmVhZGFibGVTdHJlYW0K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1z
dHJlYW1zL3RlbXBsYXRlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1YzZhNmFjYWVmYjVkYWM1OGI5NWYy
MjgxMTAzMmU5YWJhNjJhZmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVt
cGxhdGVkLmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVz
b3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9ycy10ZXN0LXRlbXBsYXRlcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0idGVtcGxhdGVk
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7Cit3b3JrZXJfdGVzdCgndGVt
cGxhdGVkLmpzJyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy90ZW1w
bGF0ZWQuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkYjA0
Mjk5OTRkNDUzZGJmY2QyZTgzNDdlNmZhN2VmZGYyMGJjNGUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3Jl
YWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmpzCkBAIC0wLDAgKzEsMTQ4IEBACisndXNlIHN0cmlj
dCc7CisKK2lmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKKyAgc2VsZi5pbXBvcnRTY3JpcHRzKCcv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7CisgIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVz
b3VyY2VzL3Rlc3QtdXRpbHMuanMnKTsKKyAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJj
ZXMvcnMtdGVzdC10ZW1wbGF0ZXMuanMnKTsKK30KKworLy8gUnVuIHRoZSByZWFkYWJsZSBzdHJl
YW0gdGVzdCB0ZW1wbGF0ZXMgYWdhaW5zdCByZWFkYWJsZSBzdHJlYW1zIGNyZWF0ZWQgZGlyZWN0
bHkgdXNpbmcgdGhlIGNvbnN0cnVjdG9yCisKK2NvbnN0IHRoZUVycm9yID0geyBuYW1lOiAnYm9v
IScgfTsKK2NvbnN0IGNodW5rcyA9IFsnYScsICdiJ107CisKK3RlbXBsYXRlZFJTRW1wdHkoJ1Jl
YWRhYmxlU3RyZWFtIChlbXB0eSknLCAoKSA9PiB7CisgIHJldHVybiBuZXcgUmVhZGFibGVTdHJl
YW0oKTsKK30pOworCit0ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyKCdSZWFkYWJsZVN0cmVhbSAoZW1w
dHkpIHJlYWRlcicsICgpID0+IHsKKyAgcmV0dXJuIHN0cmVhbUFuZERlZmF1bHRSZWFkZXIobmV3
IFJlYWRhYmxlU3RyZWFtKCkpOworfSk7CisKK3RlbXBsYXRlZFJTQ2xvc2VkKCdSZWFkYWJsZVN0
cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0YXJ0KScsICgpID0+IHsKKyAgcmV0dXJuIG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5jbG9zZSgpOworICAgIH0K
KyAgfSk7Cit9KTsKKwordGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIHJl
YWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJlYWRlciknLCAoKSA9PiB7CisgIGxldCBjb250
cm9sbGVyOworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0
KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisgIGNvbnRyb2xsZXIu
Y2xvc2UoKTsKKyAgY29uc3QgcmVzdWx0ID0gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihzdHJlYW0p
OworICByZXR1cm4gcmVzdWx0OworfSk7CisKK3RlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyKCdSZWFk
YWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlciknLCAoKSA9PiB7
CisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0o
eworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7Cisg
IGNvbnN0IHJlc3VsdCA9IHN0cmVhbUFuZERlZmF1bHRSZWFkZXIoc3RyZWFtKTsKKyAgY29udHJv
bGxlci5jbG9zZSgpOworICByZXR1cm4gcmVzdWx0OworfSk7CisKK3RlbXBsYXRlZFJTQ2xvc2Vk
KCdSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpJywgKCkgPT4geworICBjb25zdCBz
dHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgc3RyZWFtLmNhbmNlbCgpOworICByZXR1
cm4gc3RyZWFtOworfSk7CisKK3RlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyKCdSZWFkYWJsZVN0cmVh
bSByZWFkZXIgKGNsb3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKScsICgpID0+
IHsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHJlc3Vs
dCA9IHN0cmVhbUFuZERlZmF1bHRSZWFkZXIoc3RyZWFtKTsKKyAgcmVzdWx0LnJlYWRlci5jYW5j
ZWwoKTsKKyAgcmV0dXJuIHJlc3VsdDsKK30pOworCit0ZW1wbGF0ZWRSU0Vycm9yZWQoJ1JlYWRh
YmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KScsICgpID0+IHsKKyAgcmV0dXJu
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcih0aGVF
cnJvcik7CisgICAgfQorICB9KTsKK30sIHRoZUVycm9yKTsKKwordGVtcGxhdGVkUlNFcnJvcmVk
U3luY09ubHkoJ1JlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KScsICgp
ID0+IHsKKyAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAg
ICAgYy5lcnJvcih0aGVFcnJvcik7CisgICAgfQorICB9KTsKK30sIHRoZUVycm9yKTsKKwordGVt
cGxhdGVkUlNFcnJvcmVkKCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEg
cmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCknLCAoKSA9PiB7CisgIHJldHVybiBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgIHN0YXJ0KCkgeworICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHRo
ZUVycm9yKTsKKyAgICB9CisgIH0pOworfSwgdGhlRXJyb3IpOworCit0ZW1wbGF0ZWRSU0Vycm9y
ZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3Rl
ZCBwcm9taXNlIGluIHN0YXJ0KSByZWFkZXInLCAoKSA9PiB7CisgIHJldHVybiBzdHJlYW1BbmRE
ZWZhdWx0UmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoKSB7CisgICAgICBy
ZXR1cm4gUHJvbWlzZS5yZWplY3QodGhlRXJyb3IpOworICAgIH0KKyAgfSkpOworfSwgdGhlRXJy
b3IpOworCit0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIHJlYWRlciAo
ZXJyb3JlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpJywgKCkgPT4geworICBsZXQgY29udHJvbGxl
cjsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7
CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworICBjb250cm9sbGVyLmVycm9y
KHRoZUVycm9yKTsKKyAgcmV0dXJuIHN0cmVhbUFuZERlZmF1bHRSZWFkZXIoc3RyZWFtKTsKK30s
IHRoZUVycm9yKTsKKwordGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSBy
ZWFkZXIgKGVycm9yZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpJywgKCkgPT4geworICBsZXQgY29u
dHJvbGxlcjsKKyAgY29uc3QgcmVzdWx0ID0gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAg
IH0KKyAgfSkpOworICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKKyAgcmV0dXJuIHJlc3Vs
dDsKK30sIHRoZUVycm9yKTsKKwordGVtcGxhdGVkUlNUd29DaHVua3NPcGVuUmVhZGVyKCdSZWFk
YWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgc3RpbGwgb3BlbikgcmVhZGVyJywgKCkg
PT4geworICByZXR1cm4gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0o
eworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZShjaHVua3NbMF0pOworICAgICAgYy5l
bnF1ZXVlKGNodW5rc1sxXSk7CisgICAgfQorICB9KSk7Cit9LCBjaHVua3MpOworCit0ZW1wbGF0
ZWRSU1R3b0NodW5rc0Nsb3NlZFJlYWRlcignUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5x
dWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXInLCAoKSA9PiB7CisgIGxldCBkb0Nsb3NlOworICBj
b25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAg
IGMuZW5xdWV1ZShjaHVua3NbMF0pOworICAgICAgYy5lbnF1ZXVlKGNodW5rc1sxXSk7CisgICAg
ICBkb0Nsb3NlID0gYy5jbG9zZS5iaW5kKGMpOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHJlc3Vs
dCA9IHN0cmVhbUFuZERlZmF1bHRSZWFkZXIoc3RyZWFtKTsKKyAgZG9DbG9zZSgpOworICByZXR1
cm4gcmVzdWx0OworfSwgY2h1bmtzKTsKKworZnVuY3Rpb24gc3RyZWFtQW5kRGVmYXVsdFJlYWRl
cihzdHJlYW0pIHsKKyAgcmV0dXJuIHsgc3RyZWFtLCByZWFkZXI6IHN0cmVhbS5nZXRSZWFkZXIo
KSB9OworfQorCitkb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3Jlc291cmNlcy9ycy10ZXN0LXRlbXBsYXRl
cy5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy1hcGkvcmVzb3VyY2VzL3JzLXRlc3QtdGVtcGxhdGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1MmI1NjVk
OTA0MmU3MTc4MGQxNjRjYTIxNmE4NzRmYzA5OWJjOGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3Jlc291
cmNlcy9ycy10ZXN0LXRlbXBsYXRlcy5qcwpAQCAtMCwwICsxLDYyNCBAQAorJ3VzZSBzdHJpY3Qn
OworCisvLyBUaGVzZSB0ZXN0cyBjYW4gYmUgcnVuIGFnYWluc3QgYW55IHJlYWRhYmxlIHN0cmVh
bSBwcm9kdWNlZCBieSB0aGUgd2ViIHBsYXRmb3JtIHRoYXQgbWVldHMgdGhlIGdpdmVuIGRlc2Ny
aXB0aW9ucy4KKy8vIEZvciByZWFkYWJsZSBzdHJlYW0gdGVzdHMsIHRoZSBmYWN0b3J5IHNob3Vs
ZCByZXR1cm4gdGhlIHN0cmVhbS4gRm9yIHJlYWRlciB0ZXN0cywgdGhlIGZhY3Rvcnkgc2hvdWxk
IHJldHVybiBhCisvLyB7IHN0cmVhbSwgcmVhZGVyIH0gb2JqZWN0LiAoWW91IGNhbiB1c2UgdGhp
cyB0byB2YXJ5IHRoZSB0aW1lIGF0IHdoaWNoIHlvdSBhY3F1aXJlIGEgcmVhZGVyLikKKworc2Vs
Zi50ZW1wbGF0ZWRSU0VtcHR5ID0gKGxhYmVsLCBmYWN0b3J5KSA9PiB7CisgIHRlc3QoKCkgPT4g
e30sICdSdW5uaW5nIHRlbXBsYXRlZFJTRW1wdHkgd2l0aCAnICsgbGFiZWwpOworCisgIHRlc3Qo
KCkgPT4geworCisgICAgY29uc3QgcnMgPSBmYWN0b3J5KCk7CisKKyAgICBhc3NlcnRfZXF1YWxz
KHR5cGVvZiBycy5sb2NrZWQsICdib29sZWFuJywgJ2hhcyBhIGJvb2xlYW4gbG9ja2VkIGdldHRl
cicpOworICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJzLmNhbmNlbCwgJ2Z1bmN0aW9uJywgJ2hh
cyBhIGNhbmNlbCBtZXRob2QnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBycy5nZXRSZWFk
ZXIsICdmdW5jdGlvbicsICdoYXMgYSBnZXRSZWFkZXIgbWV0aG9kJyk7CisgICAgYXNzZXJ0X2Vx
dWFscyh0eXBlb2YgcnMucGlwZVRocm91Z2gsICdmdW5jdGlvbicsICdoYXMgYSBwaXBlVGhyb3Vn
aCBtZXRob2QnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBycy5waXBlVG8sICdmdW5jdGlv
bicsICdoYXMgYSBwaXBlVG8gbWV0aG9kJyk7CisgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnMu
dGVlLCAnZnVuY3Rpb24nLCAnaGFzIGEgdGVlIG1ldGhvZCcpOworCisgIH0sICdpbnN0YW5jZXMg
aGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzJyk7Cit9OworCitzZWxmLnRl
bXBsYXRlZFJTQ2xvc2VkID0gKGxhYmVsLCBmYWN0b3J5KSA9PiB7CisgIHRlc3QoKCkgPT4ge30s
ICdSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkIHdpdGggJyArIGxhYmVsKTsKKworICBwcm9taXNl
X3Rlc3QoKCkgPT4geworCisgICAgY29uc3QgcnMgPSBmYWN0b3J5KCk7CisgICAgY29uc3QgY2Fu
Y2VsUHJvbWlzZTEgPSBycy5jYW5jZWwoKTsKKyAgICBjb25zdCBjYW5jZWxQcm9taXNlMiA9IHJz
LmNhbmNlbCgpOworCisgICAgYXNzZXJ0X25vdF9lcXVhbHMoY2FuY2VsUHJvbWlzZTEsIGNhbmNl
bFByb21pc2UyLCAnY2FuY2VsKCkgY2FsbHMgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNl
cycpOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIGNhbmNlbFByb21pc2UxLnRo
ZW4odiA9PiBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ2ZpcnN0IGNhbmNlbCgpIGNhbGwg
c2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKSksCisgICAgICBjYW5jZWxQcm9taXNlMi50
aGVuKHYgPT4gYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdzZWNvbmQgY2FuY2VsKCkgY2Fs
bCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpKQorICAgIF0pOworCisgIH0sICdjYW5j
ZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1l
Jyk7CisKKyAgdGVzdCgoKSA9PiB7CisKKyAgICBjb25zdCBycyA9IGZhY3RvcnkoKTsKKyAgICBh
c3NlcnRfZmFsc2UocnMubG9ja2VkLCAnbG9ja2VkIGdldHRlciBzaG91bGQgcmV0dXJuIGZhbHNl
Jyk7CisKKyAgfSwgJ2xvY2tlZCBzaG91bGQgYmUgZmFsc2UnKTsKKworICB0ZXN0KCgpID0+IHsK
KworICAgIGNvbnN0IHJzID0gZmFjdG9yeSgpOworICAgIHJzLmdldFJlYWRlcigpOyAvLyBnZXRS
ZWFkZXIoKSBzaG91bGQgbm90IHRocm93LgorCisgIH0sICdnZXRSZWFkZXIoKSBzaG91bGQgYmUg
T0snKTsKKworICB0ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHJzID0gZmFjdG9yeSgpOworCisg
ICAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisgICAgcmVhZGVyLnJlbGVhc2VMb2Nr
KCk7CisKKyAgICBjb25zdCByZWFkZXIyID0gcnMuZ2V0UmVhZGVyKCk7IC8vIEdldHRpbmcgYSBz
ZWNvbmQgcmVhZGVyIHNob3VsZCBub3QgdGhyb3cuCisgICAgcmVhZGVyMi5yZWxlYXNlTG9jaygp
OworCisgICAgcnMuZ2V0UmVhZGVyKCk7IC8vIEdldHRpbmcgYSB0aGlyZCByZWFkZXIgc2hvdWxk
IG5vdCB0aHJvdy4KKworICB9LCAnc2hvdWxkIGJlIGFibGUgdG8gYWNxdWlyZSBtdWx0aXBsZSBy
ZWFkZXJzIGlmIHRoZXkgYXJlIHJlbGVhc2VkIGluIHN1Y2Nlc3Npb24nKTsKKworICB0ZXN0KCgp
ID0+IHsKKworICAgIGNvbnN0IHJzID0gZmFjdG9yeSgpOworCisgICAgcnMuZ2V0UmVhZGVyKCk7
CisKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVy
KCksICdnZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBzaG91bGQgdGhyb3cnKTsKKyAgICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksICdnZXR0aW5nIGEg
dGhpcmQgcmVhZGVyIHNob3VsZCB0aHJvdycpOworCisgIH0sICdzaG91bGQgbm90IGJlIGFibGUg
dG8gYWNxdWlyZSBhIHNlY29uZCByZWFkZXIgaWYgd2UgZG9uXCd0IHJlbGVhc2UgdGhlIGZpcnN0
IG9uZScpOworfTsKKworc2VsZi50ZW1wbGF0ZWRSU0Vycm9yZWQgPSAobGFiZWwsIGZhY3Rvcnks
IGVycm9yKSA9PiB7CisgIHRlc3QoKCkgPT4ge30sICdSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3Jl
ZCB3aXRoICcgKyBsYWJlbCk7CisKKyAgcHJvbWlzZV90ZXN0KHQgPT4geworCisgICAgY29uc3Qg
cnMgPSBmYWN0b3J5KCk7CisgICAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAg
ICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yLCBy
ZWFkZXIuY2xvc2VkKSwKKyAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvciwgcmVhZGVyLnJl
YWQoKSkKKyAgICBdKTsKKworICB9LCAnZ2V0UmVhZGVyKCkgc2hvdWxkIHJldHVybiBhIHJlYWRl
ciB0aGF0IGFjdHMgZXJyb3JlZCcpOworCisgIHByb21pc2VfdGVzdCh0ID0+IHsKKworICAgIGNv
bnN0IHJzID0gZmFjdG9yeSgpOworICAgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwor
CisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBlcnJv
ciwgcmVhZGVyLnJlYWQoKSksCisgICAgICBwcm9taXNlX3JlamVjdHModCwgZXJyb3IsIHJlYWRl
ci5yZWFkKCkpLAorICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yLCByZWFkZXIuY2xvc2Vk
KQorICAgIF0pOworCisgIH0sICdyZWFkKCkgdHdpY2Ugc2hvdWxkIGdpdmUgdGhlIGVycm9yIGVh
Y2ggdGltZScpOworCisgIHRlc3QoKCkgPT4geworICAgIGNvbnN0IHJzID0gZmFjdG9yeSgpOwor
CisgICAgYXNzZXJ0X2ZhbHNlKHJzLmxvY2tlZCwgJ2xvY2tlZCBnZXR0ZXIgc2hvdWxkIHJldHVy
biBmYWxzZScpOworICB9LCAnbG9ja2VkIHNob3VsZCBiZSBmYWxzZScpOworfTsKKworc2VsZi50
ZW1wbGF0ZWRSU0Vycm9yZWRTeW5jT25seSA9IChsYWJlbCwgZmFjdG9yeSwgZXJyb3IpID0+IHsK
KyAgdGVzdCgoKSA9PiB7fSwgJ1J1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkgd2l0
aCAnICsgbGFiZWwpOworCisgIHByb21pc2VfdGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHJzID0g
ZmFjdG9yeSgpOworICAgIHJzLmdldFJlYWRlcigpLnJlbGVhc2VMb2NrKCk7CisgICAgY29uc3Qg
cmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7IC8vIENhbGxpbmcgZ2V0UmVhZGVyKCkgdHdpY2UgZG9l
cyBub3QgdGhyb3cgKHRoZSBzdHJlYW0gaXMgbm90IGxvY2tlZCkuCisKKyAgICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzKHQsIGVycm9yLCByZWFkZXIuY2xvc2VkKTsKKworICB9LCAnc2hvdWxkIGJl
IGFibGUgdG8gb2J0YWluIGEgc2Vjb25kIHJlYWRlciwgd2l0aCB0aGUgY29ycmVjdCBjbG9zZWQg
cHJvbWlzZScpOworCisgIHRlc3QoKCkgPT4geworCisgICAgY29uc3QgcnMgPSBmYWN0b3J5KCk7
CisgICAgcnMuZ2V0UmVhZGVyKCk7CisKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3Io
KSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksICdnZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBzaG91bGQg
dGhyb3cgYSBUeXBlRXJyb3InKTsKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwg
KCkgPT4gcnMuZ2V0UmVhZGVyKCksICdnZXR0aW5nIGEgdGhpcmQgcmVhZGVyIHNob3VsZCB0aHJv
dyBhIFR5cGVFcnJvcicpOworCisgIH0sICdzaG91bGQgbm90IGJlIGFibGUgdG8gb2J0YWluIGFk
ZGl0aW9uYWwgcmVhZGVycyBpZiB3ZSBkb25cJ3QgcmVsZWFzZSB0aGUgZmlyc3QgbG9jaycpOwor
CisgIHByb21pc2VfdGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHJzID0gZmFjdG9yeSgpOworICAg
IGNvbnN0IGNhbmNlbFByb21pc2UxID0gcnMuY2FuY2VsKCk7CisgICAgY29uc3QgY2FuY2VsUHJv
bWlzZTIgPSBycy5jYW5jZWwoKTsKKworICAgIGFzc2VydF9ub3RfZXF1YWxzKGNhbmNlbFByb21p
c2UxLCBjYW5jZWxQcm9taXNlMiwgJ2NhbmNlbCgpIGNhbGxzIHNob3VsZCByZXR1cm4gZGlzdGlu
Y3QgcHJvbWlzZXMnKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBwcm9taXNl
X3JlamVjdHModCwgZXJyb3IsIGNhbmNlbFByb21pc2UxKSwKKyAgICAgIHByb21pc2VfcmVqZWN0
cyh0LCBlcnJvciwgY2FuY2VsUHJvbWlzZTIpCisgICAgXSk7CisKKyAgfSwgJ2NhbmNlbCgpIHNo
b3VsZCByZXR1cm4gYSBkaXN0aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZScpOworCisg
IHByb21pc2VfdGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHJzID0gZmFjdG9yeSgpOworICAgIGNv
bnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworICAgIGNvbnN0IGNhbmNlbFByb21pc2UxID0g
cmVhZGVyLmNhbmNlbCgpOworICAgIGNvbnN0IGNhbmNlbFByb21pc2UyID0gcmVhZGVyLmNhbmNl
bCgpOworCisgICAgYXNzZXJ0X25vdF9lcXVhbHMoY2FuY2VsUHJvbWlzZTEsIGNhbmNlbFByb21p
c2UyLCAnY2FuY2VsKCkgY2FsbHMgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcycpOwor
CisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBlcnJv
ciwgY2FuY2VsUHJvbWlzZTEpLAorICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yLCBjYW5j
ZWxQcm9taXNlMikKKyAgICBdKTsKKworICB9LCAncmVhZGVyIGNhbmNlbCgpIHNob3VsZCByZXR1
cm4gYSBkaXN0aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZScpOworfTsKKworc2VsZi50
ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyID0gKGxhYmVsLCBmYWN0b3J5KSA9PiB7CisgIHRlc3QoKCkg
PT4ge30sICdSdW5uaW5nIHRlbXBsYXRlZFJTRW1wdHlSZWFkZXIgd2l0aCAnICsgbGFiZWwpOwor
CisgIHRlc3QoKCkgPT4geworCisgICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsK
KworICAgIGFzc2VydF90cnVlKCdjbG9zZWQnIGluIHJlYWRlciwgJ2hhcyBhIGNsb3NlZCBwcm9w
ZXJ0eScpOworICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJlYWRlci5jbG9zZWQudGhlbiwgJ2Z1
bmN0aW9uJywgJ2Nsb3NlZCBwcm9wZXJ0eSBpcyB0aGVuYWJsZScpOworCisgICAgYXNzZXJ0X2Vx
dWFscyh0eXBlb2YgcmVhZGVyLmNhbmNlbCwgJ2Z1bmN0aW9uJywgJ2hhcyBhIGNhbmNlbCBtZXRo
b2QnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiByZWFkZXIucmVhZCwgJ2Z1bmN0aW9uJywg
J2hhcyBhIHJlYWQgbWV0aG9kJyk7CisgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcmVhZGVyLnJl
bGVhc2VMb2NrLCAnZnVuY3Rpb24nLCAnaGFzIGEgcmVsZWFzZUxvY2sgbWV0aG9kJyk7CisKKyAg
fSwgJ2luc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMnKTsK
KworICB0ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHN0cmVhbSA9IGZhY3RvcnkoKS5zdHJlYW07
CisKKyAgICBhc3NlcnRfdHJ1ZShzdHJlYW0ubG9ja2VkLCAnbG9ja2VkIGdldHRlciBzaG91bGQg
cmV0dXJuIHRydWUnKTsKKworICB9LCAnbG9ja2VkIHNob3VsZCBiZSB0cnVlJyk7CisKKyAgcHJv
bWlzZV90ZXN0KHQgPT4geworCisgICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsK
KworICAgIHJlYWRlci5yZWFkKCkudGhlbigKKyAgICAgIHQudW5yZWFjaGVkX2Z1bmMoJ3JlYWQo
KSBzaG91bGQgbm90IGZ1bGZpbGwnKSwKKyAgICAgIHQudW5yZWFjaGVkX2Z1bmMoJ3JlYWQoKSBz
aG91bGQgbm90IHJlamVjdCcpCisgICAgKTsKKworICAgIHJldHVybiBkZWxheSg1MDApOworCisg
IH0sICdyZWFkKCkgc2hvdWxkIG5ldmVyIHNldHRsZScpOworCisgIHByb21pc2VfdGVzdCh0ID0+
IHsKKworICAgIGNvbnN0IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7CisKKyAgICByZWFkZXIu
cmVhZCgpLnRoZW4oCisgICAgICB0LnVucmVhY2hlZF9mdW5jKCdyZWFkKCkgc2hvdWxkIG5vdCBm
dWxmaWxsJyksCisgICAgICB0LnVucmVhY2hlZF9mdW5jKCdyZWFkKCkgc2hvdWxkIG5vdCByZWpl
Y3QnKQorICAgICk7CisKKyAgICByZWFkZXIucmVhZCgpLnRoZW4oCisgICAgICB0LnVucmVhY2hl
ZF9mdW5jKCdyZWFkKCkgc2hvdWxkIG5vdCBmdWxmaWxsJyksCisgICAgICB0LnVucmVhY2hlZF9m
dW5jKCdyZWFkKCkgc2hvdWxkIG5vdCByZWplY3QnKQorICAgICk7CisKKyAgICByZXR1cm4gZGVs
YXkoNTAwKTsKKworICB9LCAndHdvIHJlYWQoKXMgc2hvdWxkIGJvdGggbmV2ZXIgc2V0dGxlJyk7
CisKKyAgdGVzdCgoKSA9PiB7CisKKyAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVy
OworICAgIGFzc2VydF9ub3RfZXF1YWxzKHJlYWRlci5yZWFkKCksIHJlYWRlci5yZWFkKCksICd0
aGUgcHJvbWlzZXMgcmV0dXJuZWQgc2hvdWxkIGJlIGRpc3RpbmN0Jyk7CisKKyAgfSwgJ3JlYWQo
KSBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzIGVhY2ggdGltZScpOworCisgIHRlc3Qo
KCkgPT4geworCisgICAgY29uc3Qgc3RyZWFtID0gZmFjdG9yeSgpLnN0cmVhbTsKKyAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gc3RyZWFtLmdldFJlYWRlcigpLCAnc3Ry
ZWFtLmdldFJlYWRlcigpIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOworCisgIH0sICdnZXRS
ZWFkZXIoKSBhZ2FpbiBvbiB0aGUgc3RyZWFtIHNob3VsZCBmYWlsJyk7CisKKyAgcHJvbWlzZV90
ZXN0KHQgPT4geworCisgICAgY29uc3Qgc3RyZWFtQW5kUmVhZGVyID0gZmFjdG9yeSgpOworICAg
IGNvbnN0IHN0cmVhbSA9IHN0cmVhbUFuZFJlYWRlci5zdHJlYW07CisgICAgY29uc3QgcmVhZGVy
ID0gc3RyZWFtQW5kUmVhZGVyLnJlYWRlcjsKKworICAgIHJlYWRlci5yZWFkKCkudGhlbigKKyAg
ICAgIHQudW5yZWFjaGVkX2Z1bmMoJ2ZpcnN0IHJlYWQoKSBzaG91bGQgbm90IGZ1bGZpbGwnKSwK
KyAgICAgIHQudW5yZWFjaGVkX2Z1bmMoJ2ZpcnN0IHJlYWQoKSBzaG91bGQgbm90IHJlamVjdCcp
CisgICAgKTsKKworICAgIHJlYWRlci5yZWFkKCkudGhlbigKKyAgICAgIHQudW5yZWFjaGVkX2Z1
bmMoJ3NlY29uZCByZWFkKCkgc2hvdWxkIG5vdCBmdWxmaWxsJyksCisgICAgICB0LnVucmVhY2hl
ZF9mdW5jKCdzZWNvbmQgcmVhZCgpIHNob3VsZCBub3QgcmVqZWN0JykKKyAgICApOworCisgICAg
cmVhZGVyLmNsb3NlZC50aGVuKAorICAgICAgdC51bnJlYWNoZWRfZnVuYygnY2xvc2VkIHNob3Vs
ZCBub3QgZnVsZmlsbCcpLAorICAgICAgdC51bnJlYWNoZWRfZnVuYygnY2xvc2VkIHNob3VsZCBu
b3QgcmVqZWN0JykKKyAgICApOworCisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCks
ICgpID0+IHJlYWRlci5yZWxlYXNlTG9jaygpLCAncmVsZWFzZUxvY2sgc2hvdWxkIHRocm93IGEg
VHlwZUVycm9yJyk7CisKKyAgICBhc3NlcnRfdHJ1ZShzdHJlYW0ubG9ja2VkLCAndGhlIHN0cmVh
bSBzaG91bGQgc3RpbGwgYmUgbG9ja2VkJyk7CisKKyAgICByZXR1cm4gZGVsYXkoNTAwKTsKKwor
ICB9LCAncmVsZWFzaW5nIHRoZSBsb2NrIHdpdGggcGVuZGluZyByZWFkIHJlcXVlc3RzIHNob3Vs
ZCB0aHJvdyBidXQgdGhlIHJlYWQgcmVxdWVzdHMgc2hvdWxkIHN0YXkgcGVuZGluZycpOworCisg
IHByb21pc2VfdGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFk
ZXI7CisgICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwo
WworICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgcmVhZGVyLnJlYWQo
KSksCisgICAgICBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCByZWFkZXIucmVh
ZCgpKQorICAgIF0pOworCisgIH0sICdyZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGZ1
cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yJyk7CisKKyAgcHJv
bWlzZV90ZXN0KHQgPT4geworCisgICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsK
KworICAgIGNvbnN0IGNsb3NlZEJlZm9yZSA9IHJlYWRlci5jbG9zZWQ7CisgICAgcmVhZGVyLnJl
bGVhc2VMb2NrKCk7CisgICAgY29uc3QgY2xvc2VkQWZ0ZXIgPSByZWFkZXIuY2xvc2VkOworCisg
ICAgYXNzZXJ0X2VxdWFscyhjbG9zZWRCZWZvcmUsIGNsb3NlZEFmdGVyLCAndGhlIGNsb3NlZCBw
cm9taXNlIHNob3VsZCBub3QgY2hhbmdlIGlkZW50aXR5Jyk7CisKKyAgICByZXR1cm4gcHJvbWlz
ZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgY2xvc2VkQmVmb3JlKTsKKworICB9LCAncmVs
ZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgY2FsbHMgdG8gcmVqZWN0IHdpdGgg
YSBUeXBlRXJyb3InKTsKKworICB0ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHN0cmVhbUFuZFJl
YWRlciA9IGZhY3RvcnkoKTsKKyAgICBjb25zdCBzdHJlYW0gPSBzdHJlYW1BbmRSZWFkZXIuc3Ry
ZWFtOworICAgIGNvbnN0IHJlYWRlciA9IHN0cmVhbUFuZFJlYWRlci5yZWFkZXI7CisKKyAgICBy
ZWFkZXIucmVsZWFzZUxvY2soKTsKKyAgICBhc3NlcnRfZmFsc2Uoc3RyZWFtLmxvY2tlZCwgJ2xv
Y2tlZCBnZXR0ZXIgc2hvdWxkIHJldHVybiBmYWxzZScpOworCisgIH0sICdyZWxlYXNpbmcgdGhl
IGxvY2sgc2hvdWxkIGNhdXNlIGxvY2tlZCB0byBiZWNvbWUgZmFsc2UnKTsKKworICBwcm9taXNl
X3Rlc3QoKCkgPT4geworCisgICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKyAg
ICByZWFkZXIuY2FuY2VsKCk7CisKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4g
eworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25l
OiB0cnVlIH0sICdyZWFkKClpbmcgZnJvbSB0aGUgcmVhZGVyIHNob3VsZCBnaXZlIGEgZG9uZSBy
ZXN1bHQnKTsKKyAgICB9KTsKKworICB9LCAnY2FuY2VsaW5nIHZpYSB0aGUgcmVhZGVyIHNob3Vs
ZCBjYXVzZSB0aGUgcmVhZGVyIHRvIGFjdCBjbG9zZWQnKTsKKworICBwcm9taXNlX3Rlc3QodCA9
PiB7CisKKyAgICBjb25zdCBzdHJlYW0gPSBmYWN0b3J5KCkuc3RyZWFtOworICAgIHJldHVybiBw
cm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCBzdHJlYW0uY2FuY2VsKCkpOworCisg
IH0sICdjYW5jZWxpbmcgdmlhIHRoZSBzdHJlYW0gc2hvdWxkIGZhaWwnKTsKK307CisKK3NlbGYu
dGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIgPSAobGFiZWwsIGZhY3RvcnkpID0+IHsKKyAgdGVzdCgo
KSA9PiB7fSwgJ1J1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIgd2l0aCAnICsgbGFiZWwp
OworCisgIHByb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5
KCkucmVhZGVyOworCisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbih2ID0+IHsKKyAgICAg
IGFzc2VydF9vYmplY3RfZXF1YWxzKHYsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9
LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIGNvcnJlY3RseScpOworICAgIH0pOworCisgIH0sICdy
ZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUg
fScpOworCisgIHByb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgICBjb25zdCByZWFkZXIgPSBmYWN0
b3J5KCkucmVhZGVyOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHJlYWRlci5y
ZWFkKCkudGhlbih2ID0+IHsKKyAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHModiwgeyB2YWx1
ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgY29ycmVj
dGx5Jyk7CisgICAgICB9KSwKKyAgICAgIHJlYWRlci5yZWFkKCkudGhlbih2ID0+IHsKKyAgICAg
ICAgYXNzZXJ0X29iamVjdF9lcXVhbHModiwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVl
IH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgY29ycmVjdGx5Jyk7CisgICAgICB9KQorICAgIF0p
OworCisgIH0sICdyZWFkKCkgbXVsdGlwbGUgdGltZXMgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZh
bHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfScpOworCisgIHByb21pc2VfdGVzdCgoKSA9PiB7
CisKKyAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOworCisgICAgcmV0dXJuIHJl
YWRlci5yZWFkKCkudGhlbigoKSA9PiByZWFkZXIucmVhZCgpKS50aGVuKHYgPT4geworICAgICAg
YXNzZXJ0X29iamVjdF9lcXVhbHModiwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0s
ICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgY29ycmVjdGx5Jyk7CisgICAgfSk7CisKKyAgfSwgJ3Jl
YWQoKSBzaG91bGQgd29yayB3aGVuIHVzZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwg
Y2FsbGJhY2snKTsKKworICBwcm9taXNlX3Rlc3QoKCkgPT4geworCisgICAgY29uc3QgcmVhZGVy
ID0gZmFjdG9yeSgpLnJlYWRlcjsKKworICAgIHJldHVybiByZWFkZXIuY2xvc2VkLnRoZW4odiA9
PiBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ3JlYWRlciBjbG9zZWQgc2hvdWxkIGZ1bGZp
bGwgd2l0aCB1bmRlZmluZWQnKSk7CisKKyAgfSwgJ2Nsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRo
IHVuZGVmaW5lZCcpOworCisgIHByb21pc2VfdGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHJlYWRl
ciA9IGZhY3RvcnkoKS5yZWFkZXI7CisKKyAgICBjb25zdCBjbG9zZWRCZWZvcmUgPSByZWFkZXIu
Y2xvc2VkOworICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOworICAgIGNvbnN0IGNsb3NlZEFmdGVy
ID0gcmVhZGVyLmNsb3NlZDsKKworICAgIGFzc2VydF9ub3RfZXF1YWxzKGNsb3NlZEJlZm9yZSwg
Y2xvc2VkQWZ0ZXIsICd0aGUgY2xvc2VkIHByb21pc2Ugc2hvdWxkIGNoYW5nZSBpZGVudGl0eScp
OworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIGNsb3NlZEJlZm9yZS50aGVuKHYg
PT4gYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdyZWFkZXIuY2xvc2VkIGFjcXVpcmVkIGJl
Zm9yZSByZWxlYXNlIHNob3VsZCBmdWxmaWxsJykpLAorICAgICAgcHJvbWlzZV9yZWplY3RzKHQs
IG5ldyBUeXBlRXJyb3IoKSwgY2xvc2VkQWZ0ZXIpCisgICAgXSk7CisKKyAgfSwgJ3JlbGVhc2lu
ZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50
aXR5Jyk7CisKKyAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHJlYWRlciA9IGZh
Y3RvcnkoKS5yZWFkZXI7CisgICAgY29uc3QgY2FuY2VsUHJvbWlzZTEgPSByZWFkZXIuY2FuY2Vs
KCk7CisgICAgY29uc3QgY2FuY2VsUHJvbWlzZTIgPSByZWFkZXIuY2FuY2VsKCk7CisgICAgY29u
c3QgY2xvc2VkUmVhZGVyUHJvbWlzZSA9IHJlYWRlci5jbG9zZWQ7CisKKyAgICBhc3NlcnRfbm90
X2VxdWFscyhjYW5jZWxQcm9taXNlMSwgY2FuY2VsUHJvbWlzZTIsICdjYW5jZWwoKSBjYWxscyBz
aG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzJyk7CisgICAgYXNzZXJ0X25vdF9lcXVhbHMo
Y2FuY2VsUHJvbWlzZTEsIGNsb3NlZFJlYWRlclByb21pc2UsICdjYW5jZWwoKSBwcm9taXNlIDEg
c2hvdWxkIGJlIGRpc3RpbmN0IGZyb20gcmVhZGVyLmNsb3NlZCcpOworICAgIGFzc2VydF9ub3Rf
ZXF1YWxzKGNhbmNlbFByb21pc2UyLCBjbG9zZWRSZWFkZXJQcm9taXNlLCAnY2FuY2VsKCkgcHJv
bWlzZSAyIHNob3VsZCBiZSBkaXN0aW5jdCBmcm9tIHJlYWRlci5jbG9zZWQnKTsKKworICAgIHJl
dHVybiBQcm9taXNlLmFsbChbCisgICAgICBjYW5jZWxQcm9taXNlMS50aGVuKHYgPT4gYXNzZXJ0
X2VxdWFscyh2LCB1bmRlZmluZWQsICdmaXJzdCBjYW5jZWwoKSBzaG91bGQgZnVsZmlsbCB3aXRo
IHVuZGVmaW5lZCcpKSwKKyAgICAgIGNhbmNlbFByb21pc2UyLnRoZW4odiA9PiBhc3NlcnRfZXF1
YWxzKHYsIHVuZGVmaW5lZCwgJ3NlY29uZCBjYW5jZWwoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHVu
ZGVmaW5lZCcpKQorICAgIF0pOworCisgIH0sICdjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlz
dGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lJyk7Cit9OworCitzZWxmLnRlbXBsYXRl
ZFJTRXJyb3JlZFJlYWRlciA9IChsYWJlbCwgZmFjdG9yeSwgZXJyb3IpID0+IHsKKyAgdGVzdCgo
KSA9PiB7fSwgJ1J1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyIHdpdGggJyArIGxhYmVs
KTsKKworICBwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5
KCkucmVhZGVyOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IsIHJlYWRlci5j
bG9zZWQpOworCisgIH0sICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOwor
CisgIHByb21pc2VfdGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHJlYWRlciA9IGZhY3RvcnkoKS5y
ZWFkZXI7CisgICAgY29uc3QgY2xvc2VkQmVmb3JlID0gcmVhZGVyLmNsb3NlZDsKKworICAgIHJl
dHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IsIGNsb3NlZEJlZm9yZSkudGhlbigoKSA9PiB7
CisgICAgICByZWFkZXIucmVsZWFzZUxvY2soKTsKKworICAgICAgY29uc3QgY2xvc2VkQWZ0ZXIg
PSByZWFkZXIuY2xvc2VkOworICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY2xvc2VkQmVmb3JlLCBj
bG9zZWRBZnRlciwgJ3RoZSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgY2hhbmdlIGlkZW50aXR5Jyk7
CisKKyAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCBjbG9z
ZWRBZnRlcik7CisgICAgfSk7CisKKyAgfSwgJ3JlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1
c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5Jyk7CisKKyAgcHJvbWlzZV90
ZXN0KHQgPT4geworCisgICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKyAgICBy
ZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yLCByZWFkZXIucmVhZCgpKTsKKworICB9LCAn
cmVhZCgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKK307CisKK3NlbGYudGVtcGxh
dGVkUlNUd29DaHVua3NPcGVuUmVhZGVyID0gKGxhYmVsLCBmYWN0b3J5LCBjaHVua3MpID0+IHsK
KyAgdGVzdCgoKSA9PiB7fSwgJ1J1bm5pbmcgdGVtcGxhdGVkUlNUd29DaHVua3NPcGVuUmVhZGVy
IHdpdGggJyArIGxhYmVsKTsKKworICBwcm9taXNlX3Rlc3QoKCkgPT4geworCisgICAgY29uc3Qg
cmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisg
ICAgICByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1
YWxzKHIsIHsgdmFsdWU6IGNodW5rc1swXSwgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IHJlc3VsdCBz
aG91bGQgYmUgY29ycmVjdCcpOworICAgICAgfSksCisgICAgICByZWFkZXIucmVhZCgpLnRoZW4o
ciA9PiB7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IGNodW5rc1sx
XSwgZG9uZTogZmFsc2UgfSwgJ3NlY29uZCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKyAg
ICAgIH0pCisgICAgXSk7CisKKyAgfSwgJ2NhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2Fp
dGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcyAoc2VxdWVudGlhbCknKTsKKwor
ICBwcm9taXNlX3Rlc3QoKCkgPT4geworCisgICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJl
YWRlcjsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7CisgICAgICBhc3Nl
cnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiBjaHVua3NbMF0sIGRvbmU6IGZhbHNlIH0sICdm
aXJzdCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKworICAgICAgcmV0dXJuIHJlYWRlci5y
ZWFkKCkudGhlbihyMiA9PiB7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIyLCB7IHZh
bHVlOiBjaHVua3NbMV0sIGRvbmU6IGZhbHNlIH0sICdzZWNvbmQgcmVzdWx0IHNob3VsZCBiZSBj
b3JyZWN0Jyk7CisgICAgICB9KTsKKyAgICB9KTsKKworICB9LCAnY2FsbGluZyByZWFkKCkgdHdp
Y2Ugd2l0aG91dCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1bmtzIChuZXN0
ZWQpJyk7CisKKyAgdGVzdCgoKSA9PiB7CisKKyAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCku
cmVhZGVyOworICAgIGFzc2VydF9ub3RfZXF1YWxzKHJlYWRlci5yZWFkKCksIHJlYWRlci5yZWFk
KCksICd0aGUgcHJvbWlzZXMgcmV0dXJuZWQgc2hvdWxkIGJlIGRpc3RpbmN0Jyk7CisKKyAgfSwg
J3JlYWQoKSBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzIGVhY2ggdGltZScpOworCisg
IHByb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVh
ZGVyOworCisgICAgY29uc3QgcHJvbWlzZTEgPSByZWFkZXIuY2xvc2VkLnRoZW4odiA9PiB7Cisg
ICAgICBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ3JlYWRlciBjbG9zZWQgc2hvdWxkIGZ1
bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKKyAgICB9KTsKKworICAgIGNvbnN0IHByb21pc2UyID0g
cmVhZGVyLnJlYWQoKS50aGVuKHIgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwg
eyB2YWx1ZTogY2h1bmtzWzBdLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3Byb21pc2UgcmV0dXJuZWQgYmVmb3JlIGNhbmNlbGxhdGlvbiBzaG91bGQgZnVsZmls
bCB3aXRoIGEgY2h1bmsnKTsKKyAgICB9KTsKKworICAgIHJlYWRlci5jYW5jZWwoKTsKKworICAg
IGNvbnN0IHByb21pc2UzID0gcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4geworICAgICAgYXNzZXJ0
X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAncHJvbWlzZSByZXR1cm5lZCBhZnRlciBjYW5jZWxsYXRp
b24gc2hvdWxkIGZ1bGZpbGwgd2l0aCBhbiBlbmQtb2Ytc3RyZWFtIHNpZ25hbCcpOworICAgIH0p
OworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFtwcm9taXNlMSwgcHJvbWlzZTIsIHByb21pc2Uz
XSk7CisKKyAgfSwgJ2NhbmNlbCgpIGFmdGVyIGEgcmVhZCgpIHNob3VsZCBzdGlsbCBnaXZlIHRo
YXQgc2luZ2xlIHJlYWQgcmVzdWx0Jyk7Cit9OworCitzZWxmLnRlbXBsYXRlZFJTVHdvQ2h1bmtz
Q2xvc2VkUmVhZGVyID0gZnVuY3Rpb24gKGxhYmVsLCBmYWN0b3J5LCBjaHVua3MpIHsKKyAgdGVz
dCgoKSA9PiB7fSwgJ1J1bm5pbmcgdGVtcGxhdGVkUlNUd29DaHVua3NDbG9zZWRSZWFkZXIgd2l0
aCAnICsgbGFiZWwpOworCisgIHByb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgICBjb25zdCByZWFk
ZXIgPSBmYWN0b3J5KCkucmVhZGVyOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAg
IHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKKyAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMo
ciwgeyB2YWx1ZTogY2h1bmtzWzBdLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgcmVzdWx0IHNob3Vs
ZCBiZSBjb3JyZWN0Jyk7CisgICAgICB9KSwKKyAgICAgIHJlYWRlci5yZWFkKCkudGhlbihyID0+
IHsKKyAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogY2h1bmtzWzFdLCBk
b25lOiBmYWxzZSB9LCAnc2Vjb25kIHJlc3VsdCBzaG91bGQgYmUgY29ycmVjdCcpOworICAgICAg
fSksCisgICAgICByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7CisgICAgICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKHIsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAndGhpcmQgcmVz
dWx0IHNob3VsZCBiZSBjb3JyZWN0Jyk7CisgICAgICB9KQorICAgIF0pOworCisgIH0sICd0aGly
ZCByZWFkKCksIHdpdGhvdXQgd2FpdGluZywgc2hvdWxkIGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVk
LCBkb25lOiB0cnVlIH0gKHNlcXVlbnRpYWwpJyk7CisKKyAgcHJvbWlzZV90ZXN0KCgpID0+IHsK
KworICAgIGNvbnN0IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7CisKKyAgICByZXR1cm4gcmVh
ZGVyLnJlYWQoKS50aGVuKHIgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2
YWx1ZTogY2h1bmtzWzBdLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgcmVzdWx0IHNob3VsZCBiZSBj
b3JyZWN0Jyk7CisKKyAgICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4ocjIgPT4geworICAg
ICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyMiwgeyB2YWx1ZTogY2h1bmtzWzFdLCBkb25lOiBm
YWxzZSB9LCAnc2Vjb25kIHJlc3VsdCBzaG91bGQgYmUgY29ycmVjdCcpOworCisgICAgICAgIHJl
dHVybiByZWFkZXIucmVhZCgpLnRoZW4ocjMgPT4geworICAgICAgICAgIGFzc2VydF9vYmplY3Rf
ZXF1YWxzKHIzLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3RoaXJkIHJlc3Vs
dCBzaG91bGQgYmUgY29ycmVjdCcpOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOwor
CisgIH0sICd0aGlyZCByZWFkKCksIHdpdGhvdXQgd2FpdGluZywgc2hvdWxkIGdpdmUgeyB2YWx1
ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gKG5lc3RlZCknKTsKKworICBwcm9taXNlX3Rlc3Qo
KCkgPT4geworCisgICAgY29uc3Qgc3RyZWFtQW5kUmVhZGVyID0gZmFjdG9yeSgpOworICAgIGNv
bnN0IHN0cmVhbSA9IHN0cmVhbUFuZFJlYWRlci5zdHJlYW07CisgICAgY29uc3QgcmVhZGVyID0g
c3RyZWFtQW5kUmVhZGVyLnJlYWRlcjsKKworICAgIGFzc2VydF90cnVlKHN0cmVhbS5sb2NrZWQs
ICdzdHJlYW0gc2hvdWxkIHN0YXJ0IGxvY2tlZCcpOworCisgICAgY29uc3QgcHJvbWlzZSA9IHJl
YWRlci5jbG9zZWQudGhlbih2ID0+IHsKKyAgICAgIGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVk
LCAncmVhZGVyIGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpOworICAgICAg
YXNzZXJ0X3RydWUoc3RyZWFtLmxvY2tlZCwgJ3N0cmVhbSBzaG91bGQgcmVtYWluIGxvY2tlZCcp
OworICAgIH0pOworCisgICAgcmVhZGVyLnJlYWQoKTsKKyAgICByZWFkZXIucmVhZCgpOworCisg
ICAgcmV0dXJuIHByb21pc2U7CisKKyAgfSwgJ2RyYWluaW5nIHRoZSBzdHJlYW0gdmlhIHJlYWQo
KSBzaG91bGQgY2F1c2UgdGhlIHJlYWRlciBjbG9zZWQgcHJvbWlzZSB0byBmdWxmaWxsLCBidXQg
bG9ja2VkIHN0YXlzIHRydWUnKTsKKworICBwcm9taXNlX3Rlc3QoKCkgPT4geworCisgICAgY29u
c3Qgc3RyZWFtQW5kUmVhZGVyID0gZmFjdG9yeSgpOworICAgIGNvbnN0IHN0cmVhbSA9IHN0cmVh
bUFuZFJlYWRlci5zdHJlYW07CisgICAgY29uc3QgcmVhZGVyID0gc3RyZWFtQW5kUmVhZGVyLnJl
YWRlcjsKKworICAgIGNvbnN0IHByb21pc2UgPSByZWFkZXIuY2xvc2VkLnRoZW4oKCkgPT4gewor
ICAgICAgYXNzZXJ0X3RydWUoc3RyZWFtLmxvY2tlZCwgJ3RoZSBzdHJlYW0gc2hvdWxkIHN0YXJ0
IGxvY2tlZCcpOworICAgICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7IC8vIFJlbGVhc2luZyB0aGUg
bG9jayBhZnRlciByZWFkZXIgY2xvc2VkIHNob3VsZCBub3QgdGhyb3cuCisgICAgICBhc3NlcnRf
ZmFsc2Uoc3RyZWFtLmxvY2tlZCwgJ3RoZSBzdHJlYW0gc2hvdWxkIGVuZCB1bmxvY2tlZCcpOwor
ICAgIH0pOworCisgICAgcmVhZGVyLnJlYWQoKTsKKyAgICByZWFkZXIucmVhZCgpOworCisgICAg
cmV0dXJuIHByb21pc2U7CisKKyAgfSwgJ3JlbGVhc2luZyB0aGUgbG9jayBhZnRlciB0aGUgc3Ry
ZWFtIGlzIGNsb3NlZCBzaG91bGQgY2F1c2UgbG9ja2VkIHRvIGJlY29tZSBmYWxzZScpOworCisg
IHByb21pc2VfdGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFk
ZXI7CisKKyAgICByZWFkZXIucmVsZWFzZUxvY2soKTsKKworICAgIHJldHVybiBQcm9taXNlLmFs
bChbCisgICAgICBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCByZWFkZXIucmVh
ZCgpKSwKKyAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIHJlYWRlci5y
ZWFkKCkpLAorICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgcmVhZGVy
LnJlYWQoKSkKKyAgICBdKTsKKworICB9LCAncmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVz
ZSBmdXJ0aGVyIHJlYWQoKSBjYWxscyB0byByZWplY3Qgd2l0aCBhIFR5cGVFcnJvcicpOworCisg
IHByb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgICBjb25zdCBzdHJlYW1BbmRSZWFkZXIgPSBmYWN0
b3J5KCk7CisgICAgY29uc3Qgc3RyZWFtID0gc3RyZWFtQW5kUmVhZGVyLnN0cmVhbTsKKyAgICBj
b25zdCByZWFkZXIgPSBzdHJlYW1BbmRSZWFkZXIucmVhZGVyOworCisgICAgY29uc3QgcmVhZGVy
Q2xvc2VkID0gcmVhZGVyLmNsb3NlZDsKKworICAgIGFzc2VydF9lcXVhbHMocmVhZGVyLmNsb3Nl
ZCwgcmVhZGVyQ2xvc2VkLCAnYWNjZXNzaW5nIHJlYWRlci5jbG9zZWQgdHdpY2UgaW4gc3VjY2Vz
c2lvbiBnaXZlcyB0aGUgc2FtZSB2YWx1ZScpOworCisgICAgY29uc3QgcHJvbWlzZSA9IHJlYWRl
ci5yZWFkKCkudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRfZXF1YWxzKHJlYWRlci5jbG9zZWQs
IHJlYWRlckNsb3NlZCwgJ3JlYWRlci5jbG9zZWQgaXMgdGhlIHNhbWUgYWZ0ZXIgcmVhZCgpIGZ1
bGZpbGxzJyk7CisKKyAgICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOworCisgICAgICBhc3NlcnRf
ZXF1YWxzKHJlYWRlci5jbG9zZWQsIHJlYWRlckNsb3NlZCwgJ3JlYWRlci5jbG9zZWQgaXMgdGhl
IHNhbWUgYWZ0ZXIgcmVsZWFzaW5nIHRoZSBsb2NrJyk7CisKKyAgICAgIGNvbnN0IG5ld1JlYWRl
ciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKKyAgICAgIHJldHVybiBuZXdSZWFkZXIucmVhZCgpOwor
ICAgIH0pOworCisgICAgYXNzZXJ0X2VxdWFscyhyZWFkZXIuY2xvc2VkLCByZWFkZXJDbG9zZWQs
ICdyZWFkZXIuY2xvc2VkIGlzIHRoZSBzYW1lIGFmdGVyIGNhbGxpbmcgcmVhZCgpJyk7CisKKyAg
ICByZXR1cm4gcHJvbWlzZTsKKworICB9LCAncmVhZGVyXCdzIGNsb3NlZCBwcm9wZXJ0eSBhbHdh
eXMgcmV0dXJucyB0aGUgc2FtZSBwcm9taXNlJyk7Cit9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZXNvdXJjZXMv
cnMtdXRpbHMuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMtYXBpL3Jlc291cmNlcy9ycy11dGlscy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjMyMjJlMjNj
YWI3YTBhNmQ2MTc3MTE2Yzk5ZWQ5MGRmOTU3OTc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZXNvdXJj
ZXMvcnMtdXRpbHMuanMKQEAgLTAsMCArMSwxODUgQEAKKyd1c2Ugc3RyaWN0JzsKKyhmdW5jdGlv
biAoKSB7CisKKyAgY2xhc3MgUmFuZG9tUHVzaFNvdXJjZSB7CisgICAgY29uc3RydWN0b3IodG9Q
dXNoKSB7CisgICAgICB0aGlzLnB1c2hlZCA9IDA7CisgICAgICB0aGlzLnRvUHVzaCA9IHRvUHVz
aDsKKyAgICAgIHRoaXMuc3RhcnRlZCA9IGZhbHNlOworICAgICAgdGhpcy5wYXVzZWQgPSBmYWxz
ZTsKKyAgICAgIHRoaXMuY2xvc2VkID0gZmFsc2U7CisKKyAgICAgIHRoaXMuX2ludGVydmFsSGFu
ZGxlID0gbnVsbDsKKyAgICB9CisKKyAgICByZWFkU3RhcnQoKSB7CisgICAgICBpZiAodGhpcy5j
bG9zZWQpIHsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorCisgICAgICBpZiAoIXRoaXMuc3Rh
cnRlZCkgeworICAgICAgICB0aGlzLl9pbnRlcnZhbEhhbmRsZSA9IHNldEludGVydmFsKHdyaXRl
Q2h1bmssIDIpOworICAgICAgICB0aGlzLnN0YXJ0ZWQgPSB0cnVlOworICAgICAgfQorCisgICAg
ICBpZiAodGhpcy5wYXVzZWQpIHsKKyAgICAgICAgdGhpcy5faW50ZXJ2YWxIYW5kbGUgPSBzZXRJ
bnRlcnZhbCh3cml0ZUNodW5rLCAyKTsKKyAgICAgICAgdGhpcy5wYXVzZWQgPSBmYWxzZTsKKyAg
ICAgIH0KKworICAgICAgY29uc3Qgc291cmNlID0gdGhpczsKKyAgICAgIGZ1bmN0aW9uIHdyaXRl
Q2h1bmsoKSB7CisgICAgICAgIGlmIChzb3VyY2UucGF1c2VkKSB7CisgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgc291cmNlLnB1c2hlZCsrOworCisgICAgICAgIGlmIChz
b3VyY2UudG9QdXNoID4gMCAmJiBzb3VyY2UucHVzaGVkID4gc291cmNlLnRvUHVzaCkgeworICAg
ICAgICAgIGlmIChzb3VyY2UuX2ludGVydmFsSGFuZGxlKSB7CisgICAgICAgICAgICBjbGVhcklu
dGVydmFsKHNvdXJjZS5faW50ZXJ2YWxIYW5kbGUpOworICAgICAgICAgICAgc291cmNlLl9pbnRl
cnZhbEhhbmRsZSA9IHVuZGVmaW5lZDsKKyAgICAgICAgICB9CisgICAgICAgICAgc291cmNlLmNs
b3NlZCA9IHRydWU7CisgICAgICAgICAgc291cmNlLm9uZW5kKCk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgc291cmNlLm9uZGF0YShyYW5kb21DaHVuaygxMjgpKTsKKyAgICAgICAgfQor
ICAgICAgfQorICAgIH0KKworICAgIHJlYWRTdG9wKCkgeworICAgICAgaWYgKHRoaXMucGF1c2Vk
KSB7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKworICAgICAgaWYgKHRoaXMuc3RhcnRlZCkg
eworICAgICAgICB0aGlzLnBhdXNlZCA9IHRydWU7CisgICAgICAgIGNsZWFySW50ZXJ2YWwodGhp
cy5faW50ZXJ2YWxIYW5kbGUpOworICAgICAgICB0aGlzLl9pbnRlcnZhbEhhbmRsZSA9IHVuZGVm
aW5lZDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2FuXCd0IHBh
dXNlIHJlYWRpbmcgYW4gdW5zdGFydGVkIHNvdXJjZS4nKTsKKyAgICAgIH0KKyAgICB9CisgIH0K
KworICBmdW5jdGlvbiByYW5kb21DaHVuayhzaXplKSB7CisgICAgbGV0IGNodW5rID0gJyc7CisK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgLy8gQWRkIGEgcmFu
ZG9tIGNoYXJhY3RlciBmcm9tIHRoZSBiYXNpYyBwcmludGFibGUgQVNDSUkgc2V0LgorICAgICAg
Y2h1bmsgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA4
NCkgKyAzMik7CisgICAgfQorCisgICAgcmV0dXJuIGNodW5rOworICB9CisKKyAgZnVuY3Rpb24g
cmVhZGFibGVTdHJlYW1Ub0FycmF5KHJlYWRhYmxlLCByZWFkZXIpIHsKKyAgICBpZiAocmVhZGVy
ID09PSB1bmRlZmluZWQpIHsKKyAgICAgIHJlYWRlciA9IHJlYWRhYmxlLmdldFJlYWRlcigpOwor
ICAgIH0KKworICAgIGNvbnN0IGNodW5rcyA9IFtdOworCisgICAgcmV0dXJuIHB1bXAoKTsKKwor
ICAgIGZ1bmN0aW9uIHB1bXAoKSB7CisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHJl
c3VsdCA9PiB7CisgICAgICAgIGlmIChyZXN1bHQuZG9uZSkgeworICAgICAgICAgIHJldHVybiBj
aHVua3M7CisgICAgICAgIH0KKworICAgICAgICBjaHVua3MucHVzaChyZXN1bHQudmFsdWUpOwor
ICAgICAgICByZXR1cm4gcHVtcCgpOworICAgICAgfSk7CisgICAgfQorICB9CisKKyAgY2xhc3Mg
U2VxdWVudGlhbFB1bGxTb3VyY2UgeworICAgIGNvbnN0cnVjdG9yKGxpbWl0LCBvcHRpb25zKSB7
CisgICAgICBjb25zdCBhc3luYyA9IG9wdGlvbnMgJiYgb3B0aW9ucy5hc3luYzsKKworICAgICAg
dGhpcy5jdXJyZW50ID0gMDsKKyAgICAgIHRoaXMubGltaXQgPSBsaW1pdDsKKyAgICAgIHRoaXMu
b3BlbmVkID0gZmFsc2U7CisgICAgICB0aGlzLmNsb3NlZCA9IGZhbHNlOworCisgICAgICB0aGlz
Ll9leGVjID0gZiA9PiBmKCk7CisgICAgICBpZiAoYXN5bmMpIHsKKyAgICAgICAgdGhpcy5fZXhl
YyA9IGYgPT4gc2V0VGltZW91dChmLCAwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBvcGVuKGNi
KSB7CisgICAgICB0aGlzLl9leGVjKCgpID0+IHsKKyAgICAgICAgdGhpcy5vcGVuZWQgPSB0cnVl
OworICAgICAgICBjYigpOworICAgICAgfSk7CisgICAgfQorCisgICAgcmVhZChjYikgeworICAg
ICAgdGhpcy5fZXhlYygoKSA9PiB7CisgICAgICAgIGlmICgrK3RoaXMuY3VycmVudCA8PSB0aGlz
LmxpbWl0KSB7CisgICAgICAgICAgY2IobnVsbCwgZmFsc2UsIHRoaXMuY3VycmVudCk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgY2IobnVsbCwgdHJ1ZSwgbnVsbCk7CisgICAgICAgIH0K
KyAgICAgIH0pOworICAgIH0KKworICAgIGNsb3NlKGNiKSB7CisgICAgICB0aGlzLl9leGVjKCgp
ID0+IHsKKyAgICAgICAgdGhpcy5jbG9zZWQgPSB0cnVlOworICAgICAgICBjYigpOworICAgICAg
fSk7CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24gc2VxdWVudGlhbFJlYWRhYmxlU3RyZWFtKGxp
bWl0LCBvcHRpb25zKSB7CisgICAgY29uc3Qgc2VxdWVudGlhbFNvdXJjZSA9IG5ldyBTZXF1ZW50
aWFsUHVsbFNvdXJjZShsaW1pdCwgb3B0aW9ucyk7CisKKyAgICBjb25zdCBzdHJlYW0gPSBuZXcg
UmVhZGFibGVTdHJlYW0oeworICAgICAgc3RhcnQoKSB7CisgICAgICAgIHJldHVybiBuZXcgUHJv
bWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgc2VxdWVudGlhbFNvdXJjZS5v
cGVuKGVyciA9PiB7CisgICAgICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICAgIHJlamVj
dChlcnIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAg
IH0pOworICAgICAgICB9KTsKKyAgICAgIH0sCisKKyAgICAgIHB1bGwoYykgeworICAgICAgICBy
ZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgIHNlcXVl
bnRpYWxTb3VyY2UucmVhZCgoZXJyLCBkb25lLCBjaHVuaykgPT4geworICAgICAgICAgICAgaWYg
KGVycikgeworICAgICAgICAgICAgICByZWplY3QoZXJyKTsKKyAgICAgICAgICAgIH0gZWxzZSBp
ZiAoZG9uZSkgeworICAgICAgICAgICAgICBzZXF1ZW50aWFsU291cmNlLmNsb3NlKGVycjIgPT4g
eworICAgICAgICAgICAgICAgIGlmIChlcnIyKSB7CisgICAgICAgICAgICAgICAgICByZWplY3Qo
ZXJyMik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGMuY2xvc2UoKTsKKyAg
ICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgYy5lbnF1ZXVlKGNodW5rKTsKKyAgICAgICAgICAgICAg
cmVzb2x2ZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAg
ICAgIH0KKyAgICB9KTsKKworICAgIHN0cmVhbS5zb3VyY2UgPSBzZXF1ZW50aWFsU291cmNlOwor
CisgICAgcmV0dXJuIHN0cmVhbTsKKyAgfQorCisKKyAgc2VsZi5SYW5kb21QdXNoU291cmNlID0g
UmFuZG9tUHVzaFNvdXJjZTsKKyAgc2VsZi5yZWFkYWJsZVN0cmVhbVRvQXJyYXkgPSByZWFkYWJs
ZVN0cmVhbVRvQXJyYXk7CisgIHNlbGYuc2VxdWVudGlhbFJlYWRhYmxlU3RyZWFtID0gc2VxdWVu
dGlhbFJlYWRhYmxlU3RyZWFtOworCit9KCkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZXNvdXJjZXMvdGVzdC1p
bml0aWFsaXplci5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy1hcGkvcmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDZlZDRhN2FhYjU0MWU4ZTVjZmVlYzQwNDIwMzI4OTI0MzAxNDdiMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1h
cGkvcmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMKQEAgLTAsMCArMSwxNCBAQAorJ3VzZSBz
dHJpY3QnOworCitmdW5jdGlvbiB3b3JrZXJfdGVzdChmaWxlKSB7CisgIGZldGNoX3Rlc3RzX2Zy
b21fd29ya2VyKG5ldyBXb3JrZXIoZmlsZSkpOworICBpZiAodHlwZW9mIFNoYXJlZFdvcmtlciA9
PT0gJ2Z1bmN0aW9uJykgeworICAgIGZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBTaGFyZWRX
b3JrZXIoZmlsZSkpOworICB9IGVsc2UgeworICAgIHRlc3QoKCkgPT4geworICAgICAgYXNzZXJ0
X3VucmVhY2hlZCgnU2hhcmVkV29ya2VyIGlzIHVuYXZhaWxhYmxlJyk7CisgICAgfSwgJ0xvYWQg
JyArIGZpbGUgKyAnIHdpdGggU2hhcmVkV29ya2VyJyk7CisgIH0KKyAgc2VydmljZV93b3JrZXJf
dGVzdChmaWxlKTsKK30KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVz
b3VyY2VzL3Rlc3QtdXRpbHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2M0Nzg5OGE2MDhlOTNkNWU1NjY0ZDAx
NzYwN2I0ZjQ3MDlmNTM3MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVzb3VyY2VzL3Rlc3QtdXRpbHMu
anMKQEAgLTAsMCArMSw0MyBAQAorJ3VzZSBzdHJpY3QnOworCitzZWxmLmdldHRlclJlamVjdHMg
PSAodCwgb2JqLCBnZXR0ZXJOYW1lLCB0YXJnZXQpID0+IHsKKyAgY29uc3QgZ2V0dGVyID0gT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGdldHRlck5hbWUpLmdldDsKKworICBy
ZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgZ2V0dGVyLmNhbGwodGFy
Z2V0KSk7Cit9OworCitzZWxmLm1ldGhvZFJlamVjdHMgPSAodCwgb2JqLCBtZXRob2ROYW1lLCB0
YXJnZXQpID0+IHsKKyAgY29uc3QgbWV0aG9kID0gb2JqW21ldGhvZE5hbWVdOworCisgIHJldHVy
biBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCBtZXRob2QuY2FsbCh0YXJnZXQp
KTsKK307CisKK3NlbGYuZ2V0dGVyVGhyb3dzID0gKG9iaiwgZ2V0dGVyTmFtZSwgdGFyZ2V0KSA9
PiB7CisgIGNvbnN0IGdldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2Jq
LCBnZXR0ZXJOYW1lKS5nZXQ7CisKKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgp
ID0+IGdldHRlci5jYWxsKHRhcmdldCksIGdldHRlck5hbWUgKyAnIHNob3VsZCB0aHJvdyBhIFR5
cGVFcnJvcicpOworfTsKKworc2VsZi5tZXRob2RUaHJvd3MgPSAob2JqLCBtZXRob2ROYW1lLCB0
YXJnZXQsIGFyZ3MpID0+IHsKKyAgY29uc3QgbWV0aG9kID0gb2JqW21ldGhvZE5hbWVdOworCisg
IGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBtZXRob2QuYXBwbHkodGFyZ2V0
LCBhcmdzKSwgbWV0aG9kTmFtZSArICcgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7Cit9Owor
CitzZWxmLmdhcmJhZ2VDb2xsZWN0ID0gKCkgPT4geworICBpZiAoc2VsZi5nYykgeworICAgIC8v
IFVzZSAtLWV4cG9zZV9nYyBmb3IgVjggKGFuZCBOb2RlLmpzKQorICAgIC8vIEV4cG9zZWQgaW4g
U3BpZGVyTW9ua2V5IHNoZWxsIGFzIHdlbGwKKyAgICBzZWxmLmdjKCk7CisgIH0gZWxzZSBpZiAo
c2VsZi5HQ0NvbnRyb2xsZXIpIHsKKyAgICAvLyBQcmVzZW50IGluIHNvbWUgV2ViS2l0IGRldmVs
b3BtZW50IGVudmlyb25tZW50cworICAgIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7CisgIH0gZWxz
ZSB7CisgICAgLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqLworICAgIGNvbnNvbGUud2Fy
bignVGVzdHMgYXJlIHJ1bm5pbmcgd2l0aG91dCB0aGUgYWJpbGl0eSB0byBkbyBtYW51YWwgZ2Fy
YmFnZSBjb2xsZWN0aW9uLiBUaGV5IHdpbGwgc3RpbGwgd29yaywgYnV0ICcgKworICAgICAgJ2Nv
dmVyYWdlIHdpbGwgYmUgc3Vib3B0aW1hbC4nKTsKKyAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLWNv
bnNvbGUgKi8KKyAgfQorfTsKKworc2VsZi5kZWxheSA9IG1zID0+IG5ldyBQcm9taXNlKHJlc29s
dmUgPT4gc3RlcF90aW1lb3V0KHJlc29sdmUsIG1zKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdHJlYW1zL2JyYW5kLWNoZWNrcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1z
L2JyYW5kLWNoZWNrcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ4N2FiNWM4YWFhNmQ0ZWRk
OGU3NjNmZTM2YTkzNzIwNzBlODRlMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
cmVhbXMvYnJhbmQtY2hlY2tzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKworUEFTUyBS
ZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggd29ya3MgZ2VuZXJpY2FsbHkgb24g
aXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMgCitQQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlw
ZS5waXBlVG8gd29ya3MgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMg
CitQQVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUgc2hvdWxkIHdv
cmsgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMgCitQQVNTIENvdW50
UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplIHNob3VsZCB3b3JrIGdlbmVyaWNhbGx5IG9u
IGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dHJlYW1zL2JyYW5kLWNoZWNrcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9icmFuZC1jaGVj
a3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zYjdiMjVkOGU2ZWMxMWFjNDI3YzNlZjcxNDU3ZDdhNjRhMWE3
MTllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9icmFuZC1jaGVja3Mu
aHRtbApAQCAtMCwwICsxLDc1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPScuLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Jy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyc+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ncmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL3Jlc291cmNlcy9zdHJlYW1zLXV0aWxzLmpzJz48L3NjcmlwdD4K
KzxzY3JpcHQ+CitsZXQgUmVhZGFibGVTdHJlYW1SZWFkZXIgPSAobmV3IFJlYWRhYmxlU3RyZWFt
KCkpLmdldFJlYWRlcigpLmNvbnN0cnVjdG9yOworCitmdW5jdGlvbiBmYWtlV3JpdGFibGVTdHJl
YW0oKSB7CisgIHJldHVybiB7CisgICAgZ2V0IGNsb3NlZCgpIHsgcmV0dXJuIFByb21pc2UucmVz
b2x2ZSgpOyB9LAorICAgIGdldCByZWFkeSgpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOyB9
LAorICAgIGdldCBzdGF0ZSgpIHsgcmV0dXJuICdjbG9zZWQnIH0sCisgICAgYWJvcnQocmVhc29u
KSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsgfSwKKyAgICBjbG9zZSgpIHsgcmV0dXJuIFBy
b21pc2UucmVzb2x2ZSgpOyB9LAorICAgIHdyaXRlKGNodW5rKSB7IHJldHVybiBQcm9taXNlLnJl
c29sdmUoKTsgfQorICB9OworfQorCitmdW5jdGlvbiByZWFsUmVhZGFibGVTdHJlYW0oKSB7Cisg
ICAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSgpOworfQorCitmdW5jdGlvbiBmYWtlUmVhZGFi
bGVTdHJlYW0oKSB7CisgICAgcmV0dXJuIHsKKyAgICAgICAgY2FuY2VsOiBmdW5jdGlvbihyZWFz
b24pIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOyB9LAorICAgICAgICBnZXRSZWFkZXI6IGZ1
bmN0aW9uKCkgeyByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKG5ldyBSZWFkYWJsZVN0
cmVhbSgpKTsgfSwKKyAgICAgICAgcGlwZVRocm91Z2g6IGZ1bmN0aW9uKG9iaiwgb3B0aW9ucykg
eyByZXR1cm4gb2JqLnJlYWRhYmxlOyB9LAorICAgICAgICBwaXBlVG86IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7IH0sCisgICAgICAgIHRlZTogZnVuY3Rpb24oKSB7IHJl
dHVybiBbcmVhbFJlYWRhYmxlU3RyZWFtKCksIHJlYWxSZWFkYWJsZVN0cmVhbSgpXTsgfQorICAg
IH07Cit9CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdmFyIHBpcGVUb0FyZ3VtZW50czsKKyAg
ICB2YXIgdGhpc1ZhbHVlID0geworICAgICAgICBwaXBlVG86IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgcGlwZVRvQXJndW1lbnRzID0gYXJndW1lbnRzOworICAgICAgICB9CisgICAgfTsKKwor
ICAgIHZhciBpbnB1dCA9IHsgcmVhZGFibGU6IHt9LCB3cml0YWJsZToge30gfTsKKyAgICB2YXIg
b3B0aW9ucyA9IHt9OworICAgIHZhciByZXN1bHQgPSBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUu
cGlwZVRocm91Z2guY2FsbCh0aGlzVmFsdWUsIGlucHV0LCBvcHRpb25zKTsKKworICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMocGlwZVRvQXJndW1lbnRzLCBbaW5wdXQud3JpdGFibGUsIG9wdGlvbnNd
LCAnY29ycmVjdCBhcmd1bWVudHMgc2hvdWxkIGJlIHBhc3NlZCB0byB0aGlzVmFsdWUucGlwZVRv
Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIGlucHV0LnJlYWRhYmxlLCAncmV0dXJuIHZh
bHVlIHNob3VsZCBiZSB0aGUgcGFzc2VkIHJlYWRhYmxlIHByb3BlcnR5Jyk7Cit9LCAnUmVhZGFi
bGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHdvcmtzIGdlbmVyaWNhbGx5IG9uIGl0cyB0
aGlzIGFuZCBpdHMgYXJndW1lbnRzJyk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgUmVhZGFi
bGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUby5jYWxsKGZha2VSZWFkYWJsZVN0cmVhbSgpLCBmYWtl
V3JpdGFibGVTdHJlYW0oKSk7IC8vIENoZWNrIGl0IGRvZXMgbm90IHRocm93LgorfSwgJ1JlYWRh
YmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVG8gd29ya3MgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMg
YW5kIGl0cyBhcmd1bWVudHMnKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB2YXIgdGhpc1Zh
bHVlID0gbnVsbDsKKyAgICB2YXIgcmV0dXJuVmFsdWUgPSB7ICdyZXR1cm5lZCBmcm9tJzogJ2J5
dGVMZW5ndGggZ2V0dGVyJyB9OworICAgIHZhciBjaHVuayA9IHsKKyAgICAgICAgZ2V0IGJ5dGVM
ZW5ndGgoKSB7CisgICAgICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgICAgIH0KKyAg
ICB9OworCisgICAgYXNzZXJ0X2VxdWFscyhCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3Rv
dHlwZS5zaXplLmNhbGwodGhpc1ZhbHVlLCBjaHVuayksIHJldHVyblZhbHVlKTsKK30sICdCeXRl
TGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplIHNob3VsZCB3b3JrIGdlbmVyaWNh
bGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzJyk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7
CisgICAgdmFyIHRoaXNWYWx1ZSA9IG51bGw7CisgICAgdmFyIGNodW5rID0geworICAgICAgICBn
ZXQgYnl0ZUxlbmd0aCgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3Nob3Vs
ZG5cJ3QgYmUgY2FsbGVkJyk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgYXNzZXJ0X2VxdWFs
cyhDb3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZS5jYWxsKHRoaXNWYWx1ZSwgY2h1
bmspLCAxKTsKK30sICdDb3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSBzaG91bGQg
d29yayBnZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cycpOworPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRh
dGlvbi9iYWQtc3RyYXRlZ2llcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3Jl
ZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtc3RyYXRlZ2llcy1leHBlY3RlZC50eHQKaW5kZXgg
YWFlNTdiZTJhZjNkNzVkNmQzMTc5YjRmZGUzM2YyZDM2OTFlY2IyMC4uMjE5ZjM4MzZmMjAyMWIz
MzUwNzZiYmVkYWFmZWQ5OTlkMDkwNTkxMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFt
cy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXN0cmF0ZWdpZXMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC1zdHJh
dGVnaWVzLWV4cGVjdGVkLnR4dApAQCAtMSw5ICsxLDQgQEAKIAotUEFTUyBSZWFkYWJsZSBzdHJl
YW06IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgZ2V0dGVyIAotUEFTUyBSZWFkYWJsZSBzdHJlYW06
IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgbWV0aG9kIAotUEFTUyBSZWFkYWJsZSBzdHJlYW06IHRo
cm93aW5nIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgZ2V0dGVyIAotUEFTUyBSZWFkYWJsZSBzdHJl
YW06IGludmFsaWQgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayAKLVBBU1MgUmVhZGFibGUgc3RyZWFt
OiBpbnZhbGlkIHN0cmF0ZWd5LnNpemUgcmV0dXJuIHZhbHVlIAogUEFTUyBXcml0YWJsZSBzdHJl
YW06IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgZ2V0dGVyIAogUEFTUyBXcml0YWJsZSBzdHJlYW06
IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgbWV0aG9kIAogUEFTUyBXcml0YWJsZSBzdHJlYW06IGlu
dmFsaWQgc3RyYXRlZ3kuc2l6ZSByZXR1cm4gdmFsdWUgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtc3RyYXRlZ2llcy5odG1sIGIv
TGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXN0cmF0ZWdp
ZXMuaHRtbAppbmRleCA2NjM1NDcyYjNmZmY4NWM5OGE5Mzc2ZmVkOGFiNmJkZTIxN2YyYjQzLi4x
ZjU1NjI2YWM4MDAyOGQzYmYyMzllZWZkNTlkODYxN2VkNDY5N2YzIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtc3RyYXRlZ2llcy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2Jh
ZC1zdHJhdGVnaWVzLmh0bWwKQEAgLTgsMTE2ICs4LDYgQEAgdGVzdChmdW5jdGlvbigpIHsKICAg
ICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwogCiAgICAgYXNz
ZXJ0X3Rocm93cyh0aGVFcnJvciwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIG5ldyBSZWFkYWJsZVN0
cmVhbSh7fSwgewotICAgICAgICAgICAgZ2V0IHNpemUoKSB7Ci0gICAgICAgICAgICAgICAgdGhy
b3cgdGhlRXJyb3I7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgaGlnaFdhdGVyTWFyazog
NQotICAgICAgICB9KTsKLSAgICB9LCAnY29uc3RydWN0aW9uIHNob3VsZCByZS10aHJvdyB0aGUg
ZXJyb3InKTsKLX0sICdSZWFkYWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgZ2V0
dGVyJyk7Ci0KLXZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlIHN0cmVhbTogdGhyb3dp
bmcgc3RyYXRlZ3kuc2l6ZSBtZXRob2QnKTsKLXRlc3QxLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAg
dmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKLSAgICB2YXIgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXJ0OiBmdW5j
dGlvbihjKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwgZnVuY3Rp
b24oKSB7IGMuZW5xdWV1ZSgnYScpOyB9LCAnZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhlIGVycm9y
Jyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNp
emU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHRocm93IHRoZUVycm9yOwotICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgIGhpZ2hXYXRlck1hcms6IDUKLSAgICAgICAgfQotICAgICk7
Ci0KLSAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQuY2F0Y2godGVzdDEuc3RlcF9mdW5jKGZ1bmN0
aW9uKGUpIHsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91
bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7Ci0gICAgICAgIHRlc3QxLmRvbmUoKTsKLSAgICB9
KSkKLX0pOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICAgIHZhciB0aGVFcnJvciA9IG5ldyBFcnJv
cignYSB1bmlxdWUgc3RyaW5nJyk7Ci0KLSAgICBhc3NlcnRfdGhyb3dzKHRoZUVycm9yLCBmdW5j
dGlvbigpIHsKLSAgICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7Ci0gICAgICAgICAgICBz
aXplOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICBnZXQgaGlnaFdhdGVyTWFyaygpIHsKLSAgICAgICAgICAgICAgICB0
aHJvdyB0aGVFcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgfSwgJ2NvbnN0
cnVjdGlvbiBzaG91bGQgcmUtdGhyb3cgdGhlIGVycm9yJyk7Ci19LCAnUmVhZGFibGUgc3RyZWFt
OiB0aHJvd2luZyBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIGdldHRlcicpOwotCi10ZXN0KGZ1bmN0
aW9uKCkgewotICAgIGZvciAodmFyIGhpZ2hXYXRlck1hcmsgb2YgWy0xLCAtSW5maW5pdHldKSB7
Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJyb3IoKSwgZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICBuZXcgUmVhZGFibGVTdHJlYW0oe30sIHsKLSAgICAgICAgICAgICAgICBzaXpl
OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICAgICBoaWdoV2F0ZXJNYXJrCi0gICAgICAgICAgICB9KTsK
LSAgICAgICAgfSwgJ2NvbnN0cnVjdGlvbiBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yIGZvciAn
ICsgaGlnaFdhdGVyTWFyayk7Ci0gICAgfQotCi0gICAgZm9yICh2YXIgaGlnaFdhdGVyTWFyayBv
ZiBbTmFOLCAnZm9vJywge31dKSB7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJv
cigpLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwgewot
ICAgICAgICAgICAgICAgIHNpemU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gMTsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIGhpZ2hXYXRlck1h
cmsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9LCAnY29uc3RydWN0aW9uIHNob3VsZCB0aHJv
dyBhIFR5cGVFcnJvciBmb3IgJyArIGhpZ2hXYXRlck1hcmspOwotICAgIH0KLX0sICdSZWFkYWJs
ZSBzdHJlYW06IGludmFsaWQgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaycpOwotCi12YXIgdGVzdDIg
PSBhc3luY190ZXN0KCdSZWFkYWJsZSBzdHJlYW06IGludmFsaWQgc3RyYXRlZ3kuc2l6ZSByZXR1
cm4gdmFsdWUnKTsKLXRlc3QyLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIG51bWJlck9mQ2Fs
bHMgPSAwOwotICAgIHZhciBlbGVtZW50cyA9IFtOYU4sIC1JbmZpbml0eSwgK0luZmluaXR5LCAt
MV07Ci0gICAgdmFyIHRoZUVycm9yID0gW107Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVt
ZW50cy5sZW5ndGg7IGkrKykgewotICAgICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
ewotICAgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgICAgICB0cnkg
ewotICAgICAgICAgICAgICAgICAgICBjLmVucXVldWUoJ2hpJyk7Ci0gICAgICAgICAgICAgICAg
ICAgIGFzc2VydF91bnJlYWNoZWQoJ2VucXVldWUgZGlkblwndCB0aHJvdycpOwotICAgICAgICAg
ICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydF90aHJv
d3MobmV3IFJhbmdlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IHRocm93IGVycm9yOyB9LCAnZW5xdWV1
ZSBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yIGZvciAnICsgZWxlbWVudHNbaV0pOwotICAgICAg
ICAgICAgICAgICAgICB0aGVFcnJvcltpXSA9IGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgc2l6ZTogZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzW2ldOwotICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgIGhpZ2hXYXRlck1hcms6IDUKLSAgICAgICAgfSk7Ci0KLSAgICAg
ICAgdmFyIGNhdGNoRnVuY3Rpb24gPSBmdW5jdGlvbihpLCBlKSB7Ci0gICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKGUsIHRoZUVycm9yW2ldLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUg
ZXJyb3IgZm9yICcgKyBlbGVtZW50c1tpXSk7Ci0gICAgICAgICAgICBpZiAoKytudW1iZXJPZkNh
bGxzLCBlbGVtZW50cy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICB0ZXN0Mi5kb25lKCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2Vk
LmNhdGNoKHRlc3QyLnN0ZXBfZnVuYyhjYXRjaEZ1bmN0aW9uLmJpbmQodGhpcywgaSkpKTsKLSAg
ICB9Ci19KTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJy
b3IoJ2EgdW5pcXVlIHN0cmluZycpOwotCi0gICAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwgZnVu
Y3Rpb24oKSB7CiAgICAgICAgIG5ldyBXcml0YWJsZVN0cmVhbSh7fSwgewogICAgICAgICAgICAg
Z2V0IHNpemUoKSB7CiAgICAgICAgICAgICAgICAgdGhyb3cgdGhlRXJyb3I7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJs
eWluZy1zb3VyY2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGIyZmUwYjE5MDU1MjVmNDViNTgwZmQzNjQ0MjZkMTcyNzQzZThkYzIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNlcy5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMzc5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPHNjcmlw
dCBzcmM9Jy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyc+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0nLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzJz48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSdyZXNvdXJjZXMvc3RyZWFtcy11dGlscy5qcyc+PC9zY3JpcHQ+Ci08c2NyaXB0
PgotLy8gVGhpcyBpcyB1cGRhdGVkIHRpbGwgaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9zdHJl
YW1zL2NvbW1pdC9lYzVmZmEwMzYzMDhkOWY2MzUwZDI5NDY1NjBkNDhjZGJmMDkwOTM5Ci0KLXRl
c3QoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBz
dHJpbmcnKTsKLQotICAgIGFzc2VydF90aHJvd3ModGhlRXJyb3IsIGZ1bmN0aW9uKCkgewotICAg
ICAgICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICAgICAgZ2V0IHN0YXJ0KCkgewotICAg
ICAgICAgICAgICAgIHRocm93IHRoZUVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsK
LSAgICB9LCAnY29uc3RydWN0aW5nIHRoZSBzdHJlYW0gc2hvdWxkIHJlLXRocm93IHRoZSBlcnJv
cicpOwotfSwgJ1VuZGVybHlpbmcgc291cmNlIHN0YXJ0OiB0aHJvd2luZyBnZXR0ZXInKTsKLQot
dGVzdChmdW5jdGlvbigpIHsKLSAgICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVl
IHN0cmluZycpOwotCi0gICAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwgZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgICAgICBzdGFydDogZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICAgICAgdGhyb3cgdGhlRXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0pOwotICAgIH0sICdjb25zdHJ1Y3RpbmcgdGhlIHN0cmVhbSBzaG91bGQgcmUtdGhyb3cg
dGhlIGVycm9yJyk7Ci19LCAnVW5kZXJseWluZyBzb3VyY2Ugc3RhcnQ6IHRocm93aW5nIG1ldGhv
ZCcpOwotCi12YXIgdGVzdDEgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dp
bmcgcHVsbCBnZXR0ZXIgKGluaXRpYWwgcHVsbCknKTsKLXRlc3QxLnN0ZXAoZnVuY3Rpb24oKSB7
Ci0gICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKLSAgICB2
YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBnZXQgcHVsbCgpIHsKLSAgICAg
ICAgICAgIHRocm93IHRoZUVycm9yOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBycy5nZXRS
ZWFkZXIoKS5jbG9zZWQudGhlbigKLSAgICAgICAgdGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
eyBhc3NlcnRfdW5yZWFjaGVkKCdjbG9zZWQgc2hvdWxkIG5vdCBmdWxmaWxsJyk7IH0pLAotICAg
ICAgICB0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgewotICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhyLCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIHRocm93biBl
cnJvcicpOwotICAgICAgICAgICAgdGVzdDEuZG9uZSgpOwotICAgICAgICB9KSk7Ci19KTsKLQot
dmFyIHRlc3QyID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwg
bWV0aG9kIChpbml0aWFsIHB1bGwpJyk7Ci10ZXN0Mi5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZh
ciB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7Ci0gICAgdmFyIHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICB0aHJvdyB0aGVFcnJvcjsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgcnMuZ2V0UmVh
ZGVyKCkuY2xvc2VkLnRoZW4oCi0gICAgICAgIHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsg
YXNzZXJ0X3VucmVhY2hlZCgnY2xvc2VkIHNob3VsZCBub3QgZnVsZmlsbCcpOyB9KSwKLSAgICAg
ICAgdGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKLSAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMociwgdGhlRXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSB0aHJvd24gZXJy
b3InKTsKLSAgICAgICAgICAgIHRlc3QyLmRvbmUoKTsKLSAgICAgICAgfSkpOwotfSk7Ci0KLXZh
ciB0ZXN0MyA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIGdl
dHRlciAoc2Vjb25kIHB1bGwpJyk7Ci10ZXN0My5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciB0
aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7Ci0gICAgdmFyIGNvdW50ZXIg
PSAwOwotICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIGdldCBwdWxs
KCkgewotICAgICAgICAgICAgKytjb3VudGVyOwotICAgICAgICAgICAgaWYgKGNvdW50ZXIgPT09
IDEpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKGMp
IHsgYy5lbnF1ZXVlKCdhJyk7IH0pCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRocm93
IHRoZUVycm9yOwotICAgICAgICB9Ci0gICAgfSk7Ci0gICAgdmFyIHJlYWRlciA9IHJzLmdldFJl
YWRlcigpOwotCi0gICAgcmVhZGVyLnJlYWQoKS50aGVuKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlv
bihyKSB7Ci0gICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9u
ZTogZmFsc2UgfSwgJ3RoZSBjaHVuayByZWFkIHNob3VsZCBiZSBjb3JyZWN0Jyk7Ci0gICAgfSkp
OwotCi0gICAgcmVhZGVyLmNsb3NlZC50aGVuKAotICAgICAgICB0ZXN0My5zdGVwX2Z1bmMoZnVu
Y3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ2Nsb3NlZCBzaG91bGQgbm90IGZ1bGZpbGwnKTsg
fSksCi0gICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKHIsIHRoZUVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUg
dGhyb3duIGVycm9yJyk7Ci0gICAgICAgICAgICB0ZXN0My5kb25lKCk7Ci0gICAgICAgIH0pKTsK
LX0pOwotCi12YXIgdGVzdDQgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dp
bmcgcHVsbCBtZXRob2QgKHNlY29uZCBwdWxsKScpOwotdGVzdDQuc3RlcChmdW5jdGlvbigpIHsK
LSAgICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwotICAgIHZh
ciBjb3VudGVyID0gMDsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAg
ICBwdWxsOiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICArK2NvdW50ZXI7Ci0gICAgICAgICAg
ICBpZiAoY291bnRlciA9PT0gMSkgewotICAgICAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOwot
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB0aHJvdyB0aGVFcnJvcjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0pOwotICAgIHZhciByZWFkZXIgPSBycy5nZXRS
ZWFkZXIoKTsKLQotICAgIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rp
b24ocikgeyBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNl
IH0sICd0aGUgY2h1bmsgcmVhZCBzaG91bGQgYmUgY29ycmVjdCcpOyB9KSk7Ci0KLSAgICByZWFk
ZXIuY2xvc2VkLnRoZW4oCi0gICAgICAgIHRlc3Q0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNz
ZXJ0X3VucmVhY2hlZCgnY2xvc2VkIHNob3VsZCBub3QgZnVsZmlsbCcpOyB9KSwKLSAgICAgICAg
dGVzdDQuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
ciwgdGhlRXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSB0aHJvd24gZXJyb3In
KTsKLSAgICAgICAgICAgIHRlc3Q0LmRvbmUoKTsKLSAgICAgICAgfSkpOwotfSk7Ci0KLXZhciB0
ZXN0NSA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBjYW5jZWwgZ2V0
dGVyJyk7Ci10ZXN0NS5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciB0aGVFcnJvciA9IG5ldyBF
cnJvcignYSB1bmlxdWUgc3RyaW5nJyk7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKLSAgICAgICAgZ2V0IGNhbmNlbCgpIHsKLSAgICAgICAgICAgIHRocm93IHRoZUVycm9yOwot
ICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBycy5jYW5jZWwoKS50aGVuKAotICAgICAgICB0ZXN0
NS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ2NhbmNlbCBzaG91bGQg
bm90IGZ1bGZpbGwnKTsgfSksCi0gICAgICAgIHRlc3Q1LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7
Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHIsIHRoZUVycm9yLCAnY2FuY2VsIHNob3VsZCBy
ZWplY3Qgd2l0aCB0aGUgdGhyb3duIGVycm9yJyk7Ci0gICAgICAgICAgICB0ZXN0NS5kb25lKCk7
Ci0gICAgICAgIH0pKTsKLX0pOwotCi12YXIgdGVzdDYgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5n
IHNvdXJjZTogdGhyb3dpbmcgY2FuY2VsIG1ldGhvZCcpOwotdGVzdDYuc3RlcChmdW5jdGlvbigp
IHsKLSAgICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwotICAg
IHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIGNhbmNlbDogZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICB0aHJvdyB0aGVFcnJvcjsKLSAgICAgICAgfQotICAgIH0pOwotCi0g
ICAgcnMuY2FuY2VsKCkudGhlbigKLSAgICAgICAgdGVzdDYuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
eyBhc3NlcnRfdW5yZWFjaGVkKCdjYW5jZWwgc2hvdWxkIG5vdCBmdWxmaWxsJyk7IH0pLAotICAg
ICAgICB0ZXN0Ni5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgewotICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhyLCB0aGVFcnJvciwgJ2NhbmNlbCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIHRocm93biBl
cnJvcicpOwotICAgICAgICAgICAgdGVzdDYuZG9uZSgpOwotICAgICAgICB9KSk7Ci19KTsKLQot
dmFyIHRlc3Q3ID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1
ZSBvbiBhbiBlbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdycpOwotdGVzdDcu
c3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgY29udHJvbGxlcjsKLSAgICB2YXIgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAg
ICAgY29udHJvbGxlciA9IGM7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHJzLmNhbmNlbCgp
OwotICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpIC8vIENhbGxpbmcgZW5xdWV1ZSBhZnRlciBj
YW5jZWxpbmcgc2hvdWxkIG5vdCB0aHJvdyBhbnl0aGluZy4KLQotICAgIHJzLmdldFJlYWRlcigp
LmNsb3NlZC50aGVuKHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdDcu
ZG9uZSgnY2xvc2VkIHNob3VsZCBmdWxmaWxsJyk7Ci0gICAgfSkpOwotfSk7Ci0KLXZhciB0ZXN0
OCA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYSBu
b24tZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cnKTsKLXRlc3Q4LnN0ZXAo
ZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGNvbnRyb2xsZXI7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGMu
ZW5xdWV1ZSgnYScpOwotICAgICAgICAgICAgYy5lbnF1ZXVlKCdiJyk7Ci0gICAgICAgICAgICBj
b250cm9sbGVyID0gYzsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgcnMuY2FuY2VsKCk7Ci0g
ICAgY29udHJvbGxlci5lbnF1ZXVlKCdjJykgLy8gQ2FsbGluZyBlbnF1ZXVlIGFmdGVyIGNhbmNl
bGluZyBzaG91bGQgbm90IHRocm93IGFueXRoaW5nLgotCi0gICAgcnMuZ2V0UmVhZGVyKCkuY2xv
c2VkLnRoZW4odGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0OC5kb25l
KCdjbG9zZWQgc2hvdWxkIGZ1bGZpbGwnKTsKLSAgICB9KSk7Ci19KTsKLQotdmFyIHRlc3Q5ID0g
YXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIGNsb3Nl
ZCBzdHJlYW0gc2hvdWxkIHRocm93Jyk7Ci10ZXN0OS5zdGVwKGZ1bmN0aW9uKCkgewotICAgIG5l
dyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAg
ICAgICBjLmNsb3NlKCk7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3Io
KSwgZnVuY3Rpb24oKSB7IGMuZW5xdWV1ZSgnYScpIH0sICdjYWxsIHRvIGVucXVldWUgc2hvdWxk
IHRocm93IGEgVHlwZUVycm9yJyk7Ci0gICAgICAgIH0KLSAgICB9KS5nZXRSZWFkZXIoKS5jbG9z
ZWQudGhlbih0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3Q5LmRvbmUo
J2Nsb3NlZCBzaG91bGQgZnVsZmlsbCcpOwotICAgIH0pKTsKLX0pOwotCi12YXIgdGVzdDEwID0g
YXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlcnJv
cmVkIHN0cmVhbSBzaG91bGQgdGhyb3cnKTsKLXRlc3QxMC5zdGVwKGZ1bmN0aW9uKCkgewotICAg
IHZhciB0aGVFcnJvciA9IG5ldyBFcnJvcignYm9vJyk7Ci0gICAgbmV3IFJlYWRhYmxlU3RyZWFt
KHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGMuZXJyb3IodGhl
RXJyb3IpOwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwgZnVuY3Rpb24oKSB7
IGMuZW5xdWV1ZSgnYScpIH0sICdjYWxsIHRvIGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBlcnJv
cicpOwotICAgICAgICB9Ci0gICAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkLmNhdGNoKHRlc3QxMC5z
dGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9y
LCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKLSAgICAgICAgdGVzdDEw
LmRvbmUoKTsKLSAgICB9KSk7Ci19KTsKLQotdmFyIHRlc3QxMSA9IGFzeW5jX3Rlc3QoJ1VuZGVy
bHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGFuIGVtcHR5IHN0cmVhbSBzaG91
bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lJyk7Ci10ZXN0MTEuc3RlcChmdW5jdGlvbigpIHsKLSAg
ICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAg
ICAgICAgICAgYy5jbG9zZSgpOwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksIGMuY2xvc2UsICdzZWNvbmQgY2FsbCB0byBjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBl
RXJyb3InKTsKLSAgICAgICAgfQotICAgIH0pLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKHRlc3Qx
MS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IHRlc3QxMS5kb25lKCdjbG9zZWQgc2hvdWxkIGZ1bGZp
bGwnKTsgfSkpOwotfSk7Ci0KLXZhciB0ZXN0MTIgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNv
dXJjZTogY2FsbGluZyBjbG9zZSB0d2ljZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gc2hvdWxkIHRo
cm93IHRoZSBzZWNvbmQgdGltZScpOwotdGVzdDEyLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFy
IHN0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0gICAgdmFyIHJlYWRDYWxsZWQgPSBmYWxzZTsKLSAgICB2
YXIgcmVhZGVyID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9u
KGMpIHsKLSAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAgICAgICAgYy5jbG9zZSgp
OwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGMuY2xvc2UsICdz
ZWNvbmQgY2FsbCB0byBjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKLSAgICAgICAg
ICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0pLmdldFJlYWRlcigpOwot
Ci0gICAgcmVhZGVyLnJlYWQoKS50aGVuKHRlc3QxMi5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgewot
ICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNl
IH0sICdyZWFkKCkgc2hvdWxkIHJlYWQgdGhlIGVucXVldWVkIGNodW5rJyk7Ci0gICAgICAgIHJl
YWRDYWxsZWQgPSB0cnVlOwotICAgIH0pKTsKLSAgICByZWFkZXIuY2xvc2VkLnRoZW4odGVzdDEy
LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQp
OwotICAgICAgICBhc3NlcnRfdHJ1ZShyZWFkQ2FsbGVkKTsKLSAgICAgICAgdGVzdDEyLmRvbmUo
J2Nsb3NlZCBzaG91bGQgZnVsZmlsbCcpOwotICAgIH0pKTsKLX0pOwotCi12YXIgdGVzdDEzID0g
YXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYW4gZW1wdHkg
Y2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cnKTsKLXRlc3QxMy5zdGVwKGZ1bmN0aW9u
KCkgewotICAgIHZhciBjb250cm9sbGVyOwotICAgIHZhciBzdGFydENhbGxlZCA9IGZhbHNlOwot
ICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlv
bihjKSB7Ci0gICAgICAgICAgICBjb250cm9sbGVyID0gYzsKLSAgICAgICAgICAgIHN0YXJ0Q2Fs
bGVkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgcnMuY2FuY2VsKCk7Ci0gICAg
Y29udHJvbGxlci5jbG9zZSgpOyAvLyBDYWxsaW5nIGNsb3NlIGFmdGVyIGNhbmNlbGluZyBzaG91
bGQgbm90IHRocm93IGFueXRoaW5nLgotCi0gICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4o
dGVzdDEzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgYXNzZXJ0X3RydWUoc3RhcnRD
YWxsZWQpOwotICAgICAgICB0ZXN0MTMuZG9uZSgnY2xvc2VkIHNob3VsZCBmdWxmaWxsJyk7Ci0g
ICAgfSkpOwotfSk7Ci0KLXZhciB0ZXN0MTQgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJj
ZTogY2FsbGluZyBjbG9zZSBvbiBhIG5vbi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5v
dCB0aHJvdycpOwotdGVzdDE0LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGNvbnRyb2xsZXI7
Ci0gICAgdmFyIHN0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGNvbnRy
b2xsZXIgPSBjOwotICAgICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICAgICAgICBzdGFy
dENhbGxlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHJzLmNhbmNlbCgpOwot
ICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsgLy8gQ2FsbGluZyBjbG9zZSBhZnRlciBjYW5jZWxpbmcg
c2hvdWxkIG5vdCB0aHJvdyBhbnl0aGluZy4KLQotICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZC50
aGVuKHRlc3QxNC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFzc2VydF90cnVlKHN0
YXJ0Q2FsbGVkKTsKLSAgICAgICAgdGVzdDE0LmRvbmUoJ2Nsb3NlZCBzaG91bGQgZnVsZmlsbCcp
OwotICAgIH0pKTsKLX0pOwotCi12YXIgdGVzdDE1ID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBz
b3VyY2U6IGNhbGxpbmcgY2xvc2UgYWZ0ZXIgZXJyb3Igc2hvdWxkIHRocm93Jyk7Ci10ZXN0MTUu
c3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2JvbycpOwot
ICAgIHZhciBzdGFydENhbGxlZCA9IGZhbHNlOwotICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0g
ICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBjLmVycm9yKHRoZUVycm9y
KTsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBjLmNsb3NlLCAn
Y2FsbCB0byBjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKLSAgICAgICAgICAgIHN0
YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0pLmdldFJlYWRlcigpLmNsb3NlZC5j
YXRjaCh0ZXN0MTUuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgYXNzZXJ0X3RydWUo
c3RhcnRDYWxsZWQpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnY2xvc2Vk
IHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKQotICAgICAgICB0ZXN0MTUuZG9uZSgpOwot
ICAgIH0pKTsKLX0pOwotCi12YXIgdGVzdDE2ID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3Vy
Y2U6IGNhbGxpbmcgZXJyb3IgdHdpY2Ugc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZScpOwot
dGVzdDE2LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdi
b28nKTsKLSAgICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxzZTsKLSAgICBuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgYy5lcnJvcih0
aGVFcnJvcik7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgYy5l
cnJvciwgJ3NlY29uZCBjYWxsIHRvIGVycm9yIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwot
ICAgICAgICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfSkuZ2V0UmVh
ZGVyKCkuY2xvc2VkLmNhdGNoKHRlc3QxNi5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAg
ICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoZSwgdGhl
RXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOwotICAgICAgICB0
ZXN0MTYuZG9uZSgpOwotICAgIH0pKTsKLX0pOwotCi12YXIgdGVzdDE3ID0gYXN5bmNfdGVzdCgn
VW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYWZ0ZXIgY2xvc2Ugc2hvdWxkIHRocm93
Jyk7Ci10ZXN0MTcuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxz
ZTsKLSAgICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykg
ewotICAgICAgICAgICAgYy5jbG9zZSgpOwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yKCksIGMuZXJyb3IsICdjYWxsIHRvIGVycm9yIHNob3VsZCB0aHJvdyBhIFR5cGVF
cnJvcicpOwotICAgICAgICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAg
fSkuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4odGVzdDE3LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsK
LSAgICAgICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwotICAgICAgICB0ZXN0MTcuZG9uZSgn
Y2xvc2VkIHNob3VsZCBmdWxmaWxsJyk7Ci0gICAgfSkpOwotfSk7Ci0KLXZhciB0ZXN0MTggPSBh
c3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhbmQgcmV0dXJuaW5n
IGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHN0YXJ0IHNob3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRv
IGVycm9yIHdpdGggdGhlIGZpcnN0IGVycm9yJyk7Ci10ZXN0MTguc3RlcChmdW5jdGlvbigpIHsK
LSAgICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxzZTsKLSAgICB2YXIgZmlyc3RFcnJvciA9IG5ldyBF
cnJvcignMScpOwotICAgIHZhciBzZWNvbmRFcnJvciA9IG5ldyBFcnJvcignMicpOwotICAgIG5l
dyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAg
ICAgICBjLmVycm9yKGZpcnN0RXJyb3IpOwotCi0gICAgICAgICAgICBzdGFydENhbGxlZCA9IHRy
dWU7Ci0KLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChzZWNvbmRFcnJvcik7Ci0g
ICAgICAgIH0KLSAgICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQuY2F0Y2godGVzdDE4LnN0ZXBfZnVu
YyhmdW5jdGlvbihlKSB7Ci0gICAgICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKLSAgICAg
ICAgYXNzZXJ0X2VxdWFscyhlLCBmaXJzdEVycm9yLCAnc3RyZWFtIHNob3VsZCBlcnJvciB3aXRo
IHRoZSBmaXJzdCBlcnJvcicpOwotICAgICAgICB0ZXN0MTguZG9uZSgpOwotICAgIH0pKTsKLX0p
OwotCi12YXIgdGVzdDE5ID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcg
ZXJyb3IgYW5kIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgZnJvbSBwdWxsIHNob3VsZCBj
YXVzZSB0aGUgc3RyZWFtIHRvIGVycm9yIHdpdGggdGhlIGZpcnN0IGVycm9yJyk7Ci10ZXN0MTku
c3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxzZTsKLSAgICB2YXIg
Zmlyc3RFcnJvciA9IG5ldyBFcnJvcignMScpOwotICAgIHZhciBzZWNvbmRFcnJvciA9IG5ldyBF
cnJvcignMicpOwotICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHB1bGw6IGZ1bmN0
aW9uKGMpIHsKLSAgICAgICAgICAgIGMuZXJyb3IoZmlyc3RFcnJvcik7Ci0KLSAgICAgICAgICAg
IHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKLQotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0
KHNlY29uZEVycm9yKTsKLSAgICAgICAgfQotICAgIH0pLmdldFJlYWRlcigpLmNsb3NlZC5jYXRj
aCh0ZXN0MTkuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgYXNzZXJ0X3RydWUoc3Rh
cnRDYWxsZWQpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIGZpcnN0RXJyb3IsICdzdHJlYW0g
c2hvdWxkIGVycm9yIHdpdGggdGhlIGZpcnN0IGVycm9yJyk7Ci0gICAgICAgIHRlc3QxOS5kb25l
KCk7Ci0gICAgfSkpOwotfSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9icmFuZC1jaGVj
a3MtZXhwZWN0ZWQudHh0CmluZGV4IDExNjY5ODYxZmRhNzZmNjJlNGJlYWNhMWZhMzU0NzU1Yjdj
Nzg1MmMuLjYxMjYyMmYwMTkxMTAyYjQ5ZWI0YTc5OWUxZTkxODAyZWM5ZjgwNmMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JyYW5kLWNo
ZWNrcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1w
bGVtZW50YXRpb24vYnJhbmQtY2hlY2tzLWV4cGVjdGVkLnR4dApAQCAtMSwyOCArMSw4IEBACiAK
LVBBU1MgQ2FuIGdldCB0aGUgUmVhZGFibGVTdHJlYW1SZWFkZXIgY29uc3RydWN0b3IgaW5kaXJl
Y3RseSAKLVBBU1MgQ2FuIGdldCB0aGUgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIGNvbnN0cnVj
dG9yIGluZGlyZWN0bHkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5jYW5jZWwgZW5m
b3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmdldFJl
YWRlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5
cGUucGlwZVRocm91Z2ggd29ya3MgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1
bWVudHMgCi1QQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVG8gd29ya3MgZ2VuZXJp
Y2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
LnByb3RvdHlwZS50ZWUgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJl
YW1SZWFkZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBvbiBpdHMgYXJndW1lbnQgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5jbG9zZWQgZW5mb3JjZXMgYSBicmFuZCBjaGVj
ayAKLVBBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBh
IGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVhZCBl
bmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5
cGUucmVhZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRl
ci5wcm90b3R5cGUucmVsZWFzZUxvY2sgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3Vt
ZW50IAotUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgY2FuJ3QgYmUgZ2l2ZW4gYSBmdWxs
eS1jb25zdHJ1Y3RlZCBSZWFkYWJsZVN0cmVhbSAKLVBBU1MgUmVhZGFibGVTdHJlYW1Db250cm9s
bGVyLnByb3RvdHlwZS5jbG9zZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmVucXVldWUgZW5mb3JjZXMgYSBicmFuZCBjaGVj
ayAKLVBBU1MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5lcnJvciBlbmZvcmNl
cyBhIGJyYW5kIGNoZWNrIAogUEFTUyBXcml0YWJsZVN0cmVhbS5wcm90b3R5cGUuY2xvc2VkIGVu
Zm9yY2VzIGEgYnJhbmQgY2hlY2sgCiBQQVNTIFdyaXRhYmxlU3RyZWFtLnByb3RvdHlwZS5yZWFk
eSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAogUEFTUyBXcml0YWJsZVN0cmVhbS5wcm90b3R5cGUu
c3RhdGUgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKIFBBU1MgV3JpdGFibGVTdHJlYW0ucHJvdG90
eXBlLmFib3J0IGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCiBQQVNTIFdyaXRhYmxlU3RyZWFtLnBy
b3RvdHlwZS53cml0ZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAogUEFTUyBXcml0YWJsZVN0cmVh
bS5wcm90b3R5cGUuY2xvc2UgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgQnl0ZUxlbmd0
aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSBzaG91bGQgd29yayBnZW5lcmljYWxseSBv
biBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cyAKLVBBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3ku
cHJvdG90eXBlLnNpemUgc2hvdWxkIHdvcmsgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0
cyBhcmd1bWVudHMgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNl
LWltcGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9y
ZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYnJhbmQtY2hlY2tzLmh0bWwKaW5kZXggZWY0MWZlNjA0
YzAyYzdkOTI0MmQ0ODJjMjI3MGUxNzU4ZGY0MzJhMi4uZTUwODg5ZDhlNjY5ZjQ4YWQzNGY4NDlh
NTVjMTdhMDQ2Nzg2MzhkYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vYnJhbmQtY2hlY2tzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYnJhbmQtY2hlY2tzLmh0bWwKQEAgLTUsMzcg
KzUsNiBAQAogPHNjcmlwdD4KIC8vIFRoaXMgaXMgdXBkYXRlZCB0aWxsIGh0dHBzOi8vZ2l0aHVi
LmNvbS93aGF0d2cvc3RyZWFtcy9jb21taXQvZWM1ZmZhMDM2MzA4ZDlmNjM1MGQyOTQ2NTYwZDQ4
Y2RiZjA5MDkzOQogCi12YXIgUmVhZGFibGVTdHJlYW1SZWFkZXI7Ci12YXIgUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICAgIC8vIEl0J3Mgbm90IGV4cG9z
ZWQgZ2xvYmFsbHksIGJ1dCB3ZSB0ZXN0IGEgZmV3IG9mIGl0cyBwcm9wZXJ0aWVzIGhlcmUuCi0g
ICAgUmVhZGFibGVTdHJlYW1SZWFkZXIgPSAobmV3IFJlYWRhYmxlU3RyZWFtKCkpLmdldFJlYWRl
cigpLmNvbnN0cnVjdG9yOwotfSwgJ0NhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNv
bnN0cnVjdG9yIGluZGlyZWN0bHknKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICAvLyBJdCdz
IG5vdCBleHBvc2VkIGdsb2JhbGx5LCBidXQgd2UgdGVzdCBhIGZldyBvZiBpdHMgcHJvcGVydGll
cyBoZXJlLgotICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlv
bihjKSB7Ci0gICAgICAgICAgICBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgPSBjLmNvbnN0cnVj
dG9yOwotICAgICAgICB9Ci0gICAgfSk7Ci19LCAnQ2FuIGdldCB0aGUgUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHknKTsKLQotZnVuY3Rpb24gZmFrZVJlYWRh
YmxlU3RyZWFtKCkgewotICAgIHJldHVybiB7Ci0gICAgICAgIGNhbmNlbDogZnVuY3Rpb24ocmVh
c29uKSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsgfSwKLSAgICAgICAgZ2V0UmVhZGVyOiBm
dW5jdGlvbigpIHsgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihuZXcgUmVhZGFibGVT
dHJlYW0oKSk7IH0sCi0gICAgICAgIHBpcGVUaHJvdWdoOiBmdW5jdGlvbihvYmosIG9wdGlvbnMp
IHsgcmV0dXJuIG9iai5yZWFkYWJsZTsgfSwKLSAgICAgICAgcGlwZVRvOiBmdW5jdGlvbigpIHsg
cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOyB9LAotICAgICAgICB0ZWU6IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gW3JlYWxSZWFkYWJsZVN0cmVhbSgpLCByZWFsUmVhZGFibGVTdHJlYW0oKV07IH0KLSAg
ICB9OwotfQotCi1mdW5jdGlvbiByZWFsUmVhZGFibGVTdHJlYW0oKSB7Ci0gICAgcmV0dXJuIG5l
dyBSZWFkYWJsZVN0cmVhbSgpOwotfQotCiBmdW5jdGlvbiBmYWtlV3JpdGFibGVTdHJlYW0oKSB7
CiAgIHJldHVybiB7CiAgICAgZ2V0IGNsb3NlZCgpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgp
OyB9LApAQCAtNDcsNTEgKzE2LDggQEAgZnVuY3Rpb24gZmFrZVdyaXRhYmxlU3RyZWFtKCkgewog
ICB9OwogfQogCi1mdW5jdGlvbiByZWFsV3JpdGFibGVTdHJlYW0oKSB7Ci0gIHJldHVybiBuZXcg
V3JpdGFibGVTdHJlYW0oKTsKLX0KLQotZnVuY3Rpb24gZmFrZVJlYWRhYmxlU3RyZWFtUmVhZGVy
KCkgewotICAgIHJldHVybiB7Ci0gICAgICAgIGdldCBjbG9zZWQoKSB7IHJldHVybiBQcm9taXNl
LnJlc29sdmUoKTsgfSwKLSAgICAgICAgY2FuY2VsOiBmdW5jdGlvbihyZWFzb24pIHsgcmV0dXJu
IFByb21pc2UucmVzb2x2ZSgpOyB9LAotICAgICAgICByZWFkOiBmdW5jdGlvbigpIHsgcmV0dXJu
IFByb21pc2UucmVzb2x2ZSh7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSk7IH0sCi0g
ICAgICAgIHJlbGVhc2VMb2NrOiBmdW5jdGlvbigpIHsgcmV0dXJuOyB9Ci0gICAgfTsKLX0KLQot
ZnVuY3Rpb24gZmFrZVJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcigpIHsKLSAgICByZXR1cm4gewot
ICAgICAgICBjbG9zZTogZnVuY3Rpb24oKSB7IH0sCi0gICAgICAgIGVucXVldWU6IGZ1bmN0aW9u
KGNodW5rKSB7IH0sCi0gICAgICAgIGVycm9yOiBmdW5jdGlvbihlKSB7IH0KLSAgICB9OwotfQot
Ci1mdW5jdGlvbiBmYWtlQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSgpIHsKLSAgICByZXR1cm4g
ewotICAgICAgICBoaWdoV2F0ZXJNYXJrOiAwLAotICAgICAgICBzaXplOiBmdW5jdGlvbihjaHVu
aykgewotICAgICAgICAgICAgcmV0dXJuIGNodW5rLmJ5dGVMZW5ndGg7Ci0gICAgICAgIH0KLSAg
ICB9OwotfQotCi1mdW5jdGlvbiByZWFsQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSgpIHsKLSAg
ICByZXR1cm4gbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAx
IH0pOwotfQotCi1mdW5jdGlvbiBmYWtlQ291bnRRdWV1aW5nU3RyYXRlZ3koKSB7Ci0gICAgcmV0
dXJuIHsKLSAgICAgICAgaGlnaFdhdGVyTWFyazogMCwKLSAgICAgICAgc2l6ZTogZnVuY3Rpb24o
Y2h1bmspIHsKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICB9Ci0gICAgfQotfQotCi1m
dW5jdGlvbiByZWFsQ291bnRRdWV1aW5nU3RyYXRlZ3koKSB7Ci0gICAgcmV0dXJuIG5ldyBDb3Vu
dFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDEgfSk7CitmdW5jdGlvbiByZWFsUmVh
ZGFibGVTdHJlYW0oKSB7CisgICAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSgpOwogfQogCiBm
dW5jdGlvbiBnZXR0ZXJSZWplY3RzKHRlc3QsIG9iaiwgZ2V0dGVyTmFtZSwgdGFyZ2V0LCBlbmRU
ZXN0KSB7CkBAIC0xMjYsMTAxICs1Miw2IEBAIGZ1bmN0aW9uIGdldHRlclRocm93cyhvYmosIGdl
dHRlck5hbWUsIHRhcmdldCkgewogICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBm
dW5jdGlvbigpIHsgZ2V0dGVyLmNhbGwodGFyZ2V0KTsgfSwgZ2V0dGVyTmFtZSArICcgc2hvdWxk
IHRocm93IGEgVHlwZUVycm9yJyk7CiB9CiAKLWZ1bmN0aW9uIG1ldGhvZFRocm93cyhvYmosIG1l
dGhvZE5hbWUsIHRhcmdldCkgewotICAgIHZhciBtZXRob2QgPSBvYmpbbWV0aG9kTmFtZV07Ci0K
LSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IG1ldGhvZC5j
YWxsKHRhcmdldCk7IH0sIG1ldGhvZE5hbWUgKyAnIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicp
OwotfQotCi12YXIgdGVzdDEgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUu
Y2FuY2VsIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKLXRlc3QxLnN0ZXAoZnVuY3Rpb24oKSB7
Ci0gICAgbWV0aG9kUmVqZWN0cyh0ZXN0MSwgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLCAnY2Fu
Y2VsJywgZmFrZVJlYWRhYmxlU3RyZWFtKCkpOwotICAgIG1ldGhvZFJlamVjdHModGVzdDEsIFJl
YWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ2NhbmNlbCcsIHJlYWxXcml0YWJsZVN0cmVhbSgpLCB0
cnVlKTsKLX0pOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICAgIG1ldGhvZFRocm93cyhSZWFkYWJs
ZVN0cmVhbS5wcm90b3R5cGUsICdnZXRSZWFkZXInLCBmYWtlUmVhZGFibGVTdHJlYW0oKSk7Ci0g
ICAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ2dldFJlYWRlcicsIHJl
YWxXcml0YWJsZVN0cmVhbSgpKTsKLX0sICdSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuZ2V0UmVh
ZGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICB2
YXIgcGlwZVRvQXJndW1lbnRzOwotICAgIHZhciB0aGlzVmFsdWUgPSB7Ci0gICAgICAgIHBpcGVU
bzogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBwaXBlVG9Bcmd1bWVudHMgPSBhcmd1bWVudHM7
Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgdmFyIGlucHV0ID0geyByZWFkYWJsZToge30sIHdy
aXRhYmxlOiB7fSB9OwotICAgIHZhciBvcHRpb25zID0ge307Ci0gICAgdmFyIHJlc3VsdCA9IFJl
YWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaC5jYWxsKHRoaXNWYWx1ZSwgaW5wdXQs
IG9wdGlvbnMpOwotCi0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhwaXBlVG9Bcmd1bWVudHMsIFtp
bnB1dC53cml0YWJsZSwgb3B0aW9uc10sICdjb3JyZWN0IGFyZ3VtZW50cyBzaG91bGQgYmUgcGFz
c2VkIHRvIHRoaXNWYWx1ZS5waXBlVG8nKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgaW5w
dXQucmVhZGFibGUsICdyZXR1cm4gdmFsdWUgc2hvdWxkIGJlIHRoZSBwYXNzZWQgcmVhZGFibGUg
cHJvcGVydHknKTsKLX0sICdSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggd29y
a3MgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMnKTsKLQotdGVzdChm
dW5jdGlvbigpIHsKLSAgICBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRvLmNhbGwoZmFr
ZVJlYWRhYmxlU3RyZWFtKCksIGZha2VXcml0YWJsZVN0cmVhbSgpKTsgLy8gQ2hlY2sgaXQgZG9l
cyBub3QgdGhyb3cuCi19LCAnUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUbyB3b3JrcyBn
ZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cycpOwotCi10ZXN0KGZ1bmN0
aW9uKCkgewotICAgIG1ldGhvZFRocm93cyhSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICd0ZWUn
LCBmYWtlUmVhZGFibGVTdHJlYW0oKSk7Ci0gICAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFt
LnByb3RvdHlwZSwgJ3RlZScsIHJlYWxXcml0YWJsZVN0cmVhbSgpKTsKLX0sICdSZWFkYWJsZVN0
cmVhbS5wcm90b3R5cGUudGVlIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKLQotdGVzdChmdW5j
dGlvbigpIHsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7
IG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihmYWtlUmVhZGFibGVTdHJlYW0oKSk7IH0sICdDb25z
dHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBzaG91bGQgdGhyb3cnKTsKLX0sICdSZWFk
YWJsZVN0cmVhbVJlYWRlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIG9uIGl0cyBhcmd1bWVudCcp
OwotCi12YXIgdGVzdDIgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5
cGUuY2xvc2VkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKLXRlc3QyLnN0ZXAoZnVuY3Rpb24o
KSB7Ci0gICAgZ2V0dGVyUmVqZWN0cyh0ZXN0MiwgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90
eXBlLCAnY2xvc2VkJywgZmFrZVJlYWRhYmxlU3RyZWFtUmVhZGVyKCkpOwotICAgIGdldHRlclJl
amVjdHModGVzdDIsIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZSwgJ2Nsb3NlZCcsIHJl
YWxSZWFkYWJsZVN0cmVhbSgpLCB0cnVlKTsKLX0pOwotCi12YXIgdGVzdDMgPSBhc3luY190ZXN0
KCdSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUuY2FuY2VsIGVuZm9yY2VzIGEgYnJhbmQg
Y2hlY2snKTsKLXRlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgbWV0aG9kUmVqZWN0cyh0ZXN0
MywgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLCAnY2FuY2VsJywgZmFrZVJlYWRhYmxl
U3RyZWFtUmVhZGVyKCkpOwotICAgIG1ldGhvZFJlamVjdHModGVzdDMsIFJlYWRhYmxlU3RyZWFt
UmVhZGVyLnByb3RvdHlwZSwgJ2NhbmNlbCcsIHJlYWxSZWFkYWJsZVN0cmVhbSgpLCB0cnVlKTsK
LX0pOwotCi12YXIgdGVzdDQgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90
b3R5cGUucmVhZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7Ci10ZXN0NC5zdGVwKGZ1bmN0aW9u
KCkgewotICAgIG1ldGhvZFJlamVjdHModGVzdDQsIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3Rv
dHlwZSwgJ3JlYWQnLCBmYWtlUmVhZGFibGVTdHJlYW1SZWFkZXIoKSk7Ci0gICAgbWV0aG9kUmVq
ZWN0cyh0ZXN0NCwgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLCAncmVhZCcsIHJlYWxS
ZWFkYWJsZVN0cmVhbSgpLCB0cnVlKTsKLX0pOwotCi12YXIgdGVzdDUgPSBhc3luY190ZXN0KCdS
ZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVhZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNr
Jyk7Ci10ZXN0NS5zdGVwKGZ1bmN0aW9uKCkgewotICAgIG1ldGhvZFJlamVjdHModGVzdDUsIFJl
YWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZSwgJ3JlYWQnLCBmYWtlUmVhZGFibGVTdHJlYW1S
ZWFkZXIoKSk7Ci0gICAgbWV0aG9kUmVqZWN0cyh0ZXN0NSwgUmVhZGFibGVTdHJlYW1SZWFkZXIu
cHJvdG90eXBlLCAncmVhZCcsIHJlYWxSZWFkYWJsZVN0cmVhbSgpLCB0cnVlKTsKLX0pOwotCi10
ZXN0KGZ1bmN0aW9uKCkgewotICAgIG1ldGhvZFRocm93cyhSZWFkYWJsZVN0cmVhbVJlYWRlci5w
cm90b3R5cGUsICdyZWxlYXNlTG9jaycsIGZha2VSZWFkYWJsZVN0cmVhbVJlYWRlcigpKTsKLSAg
ICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLCAncmVsZWFzZUxv
Y2snLCByZWFsUmVhZGFibGVTdHJlYW0oKSk7Ci19LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIucHJv
dG90eXBlLnJlbGVhc2VMb2NrIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKLQotdGVzdChmdW5j
dGlvbigpIHsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7
IG5ldyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIoZmFrZVJlYWRhYmxlU3RyZWFtKCkpOyB9LCAn
Q29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIHNob3VsZCB0aHJvdycpOwot
fSwgJ1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIG9uIGl0
cyBhcmd1bWVudCcpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICAgIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgbmV3IFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcihy
ZWFsUmVhZGFibGVTdHJlYW0oKSk7IH0sICdDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIgc2hvdWxkIHRocm93Jyk7Ci19LCAnUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIGNh
blwndCBiZSBnaXZlbiBhIGZ1bGx5LWNvbnN0cnVjdGVkIFJlYWRhYmxlU3RyZWFtJyk7Ci0KLXRl
c3QoZnVuY3Rpb24oKSB7Ci0gIG1ldGhvZFRocm93cyhSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIu
cHJvdG90eXBlLCAnY2xvc2UnLCBmYWtlUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKCkpOwotfSwg
J1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUuY2xvc2UgZW5mb3JjZXMgYSBicmFu
ZCBjaGVjaycpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICBtZXRob2RUaHJvd3MoUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyLnByb3RvdHlwZSwgJ2VucXVldWUnLCBmYWtlUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyKCkpOwotfSwgJ1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUuZW5x
dWV1ZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIG1l
dGhvZFRocm93cyhSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLCAnZXJyb3InLCBm
YWtlUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKCkpOwotfSwgJ1JlYWRhYmxlU3RyZWFtQ29udHJv
bGxlci5wcm90b3R5cGUuZXJyb3IgZW5mb3JjZXMgYSBicmFuZCBjaGVjaycpOwotCiB2YXIgdGVz
dDYgPSBhc3luY190ZXN0KCdXcml0YWJsZVN0cmVhbS5wcm90b3R5cGUuY2xvc2VkIGVuZm9yY2Vz
IGEgYnJhbmQgY2hlY2snKTsKIHRlc3Q2LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgZ2V0dGVyUmVq
ZWN0cyh0ZXN0NiwgV3JpdGFibGVTdHJlYW0ucHJvdG90eXBlLCAnY2xvc2VkJywgZmFrZVdyaXRh
YmxlU3RyZWFtKCkpOwpAQCAtMjU1LDI3ICs4Niw0IEBAIHRlc3QxMC5zdGVwKGZ1bmN0aW9uKCkg
ewogICAgIG1ldGhvZFJlamVjdHModGVzdDEwLCBXcml0YWJsZVN0cmVhbS5wcm90b3R5cGUsICdj
bG9zZScsIGZha2VXcml0YWJsZVN0cmVhbSgpKTsKICAgICBtZXRob2RSZWplY3RzKHRlc3QxMCwg
V3JpdGFibGVTdHJlYW0ucHJvdG90eXBlLCAnY2xvc2UnLCByZWFsUmVhZGFibGVTdHJlYW0oKSwg
dHJ1ZSk7CiB9KTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICB2YXIgdGhpc1ZhbHVlID0gbnVs
bDsKLSAgICB2YXIgcmV0dXJuVmFsdWUgPSB7ICdyZXR1cm5lZCBmcm9tJzogJ2J5dGVMZW5ndGgg
Z2V0dGVyJyB9OwotICAgIHZhciBjaHVuayA9IHsKLSAgICAgICAgZ2V0IGJ5dGVMZW5ndGgoKSB7
Ci0gICAgICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7Ci0gICAgICAgIH0KLSAgICB9OwotCi0g
ICAgYXNzZXJ0X2VxdWFscyhCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXpl
LmNhbGwodGhpc1ZhbHVlLCBjaHVuayksIHJldHVyblZhbHVlKTsKLX0sICdCeXRlTGVuZ3RoUXVl
dWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplIHNob3VsZCB3b3JrIGdlbmVyaWNhbGx5IG9uIGl0
cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgdmFy
IHRoaXNWYWx1ZSA9IG51bGw7Ci0gICAgdmFyIGNodW5rID0gewotICAgICAgICBnZXQgYnl0ZUxl
bmd0aCgpIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3Nob3VsZG5cJ3QgYmUg
Y2FsbGVkJyk7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgYXNzZXJ0X2VxdWFscyhDb3VudFF1
ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZS5jYWxsKHRoaXNWYWx1ZSwgY2h1bmspLCAxKTsK
LX0sICdDb3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSBzaG91bGQgd29yayBnZW5l
cmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cycpOwogPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9ieXRl
LWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVh
bXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kt
ZXhwZWN0ZWQudHh0CmluZGV4IDE5MTI3YWU1Nzg4MjQ4NmQ2MzEwMzNlNTNiNGMyYTY3MDNmZDhk
Y2MuLjViMWZjOTFkYWVkZWRlNDkwZWVmMDRmNjdmMGU0YzYwNGRlYjM4NWIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2J5dGUtbGVuZ3Ro
LXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3ktZXhw
ZWN0ZWQudHh0CkBAIC0xLDggKzEsMyBAQAogCi1QQVNTIENhbiBjb25zdHJ1Y3QgYSBCeXRlTGVu
Z3RoUXVldWluZ1N0cmF0ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsgCi1QQVNTIENh
biBjb25zdHJ1Y3QgYSBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IHdpdGggYW55IHZhbHVlIGFz
IGl0cyBoaWdoIHdhdGVyIG1hcmsgCi1QQVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgY29u
c3RydWN0b3IgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHdyb25nIGFyZ3VtZW50cyAKLVBBU1Mg
Qnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSBzaXplIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCB3
cm9uZyBhcmd1bWVudHMgCi1QQVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgaW5zdGFuY2Vz
IGhhdmUgdGhlIGNvcnJlY3QgcHJvcGVydGllcyAKIFBBU1MgQ2xvc2luZyBhIHdyaXRhYmxlIHN0
cmVhbSB3aXRoIGluLWZsaWdodCB3cml0ZXMgYmVsb3cgdGhlIGhpZ2ggd2F0ZXIgbWFyayBkZWxh
eXMgdGhlIGNsb3NlIGNhbGwgcHJvcGVybHkgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRl
Z3kuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2J5
dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuaHRtbAppbmRleCA0ZmFkYjY0NDIxMGQwYzA1M2Ux
NDQ4ZmRmYWJjMTBmZGJhNTkzMTdjLi4wMDM4MDBiMjM4ZDY1MTYxNzk0YTY3NmVkYjhjNTJmMWIx
NDFhNzgyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYnl0ZS1sZW5ndGgtcXVldWluZy1z
dHJhdGVneS5odG1sCkBAIC01LDY4ICs1LDYgQEAKIDxzY3JpcHQ+CiAvLyBUaGlzIGlzIHVwZGF0
ZWQgdGlsbCBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL3N0cmVhbXMvY29tbWl0L2VjNWZmYTAz
NjMwOGQ5ZjYzNTBkMjk0NjU2MGQ0OGNkYmYwOTA5MzkKIAotdGVzdChmdW5jdGlvbigpIHsKLSAg
ICB2YXIgc3RyYXRlZ3kgPSBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRl
ck1hcms6IDQgfSk7Ci19LCAnQ2FuIGNvbnN0cnVjdCBhIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRl
Z3kgd2l0aCBhIHZhbGlkIGhpZ2ggd2F0ZXIgbWFyaycpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewot
ICAgIGZvciAodmFyIGhpZ2hXYXRlck1hcmsgb2YgWy1JbmZpbml0eSwgTmFOLCAnZm9vJywge30s
IGZ1bmN0aW9uICgpIHt9XSkgewotICAgICAgICB2YXIgc3RyYXRlZ3kgPSBuZXcgQnl0ZUxlbmd0
aFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcmsgfSk7Ci0gICAgICAgIGFzc2VydF90cnVl
KE9iamVjdC5pcyhzdHJhdGVneS5oaWdoV2F0ZXJNYXJrLCBoaWdoV2F0ZXJNYXJrKSwgaGlnaFdh
dGVyTWFyayArICcgZ2V0cyBzZXQgY29ycmVjdGx5Jyk7Ci0gICAgfQotfSwgJ0NhbiBjb25zdHJ1
Y3QgYSBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IHdpdGggYW55IHZhbHVlIGFzIGl0cyBoaWdo
IHdhdGVyIG1hcmsnKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICB2YXIgaGlnaFdhdGVyTWFy
ayA9IDE7Ci0gICAgdmFyIGhpZ2hXYXRlck1hcmtPYmplY3RHZXR0ZXIgPSB7Ci0gICAgICAgIGdl
dCBoaWdoV2F0ZXJNYXJrKCkgeyByZXR1cm4gaGlnaFdhdGVyTWFyazsgfSwKLSAgICB9OwotICAg
IHZhciBlcnJvciA9IG5ldyBFcnJvcignd293IScpOwotICAgIHZhciBoaWdoV2F0ZXJNYXJrT2Jq
ZWN0R2V0dGVyVGhyb3dpbmcgPSB7Ci0gICAgICAgIGdldCBoaWdoV2F0ZXJNYXJrKCkgeyB0aHJv
dyBlcnJvcjsgfSwKLSAgICB9OwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBm
dW5jdGlvbigpIHsgbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koKTsgfSwgJ2NvbnN0cnVj
dGlvbiBmYWlscyB3aXRoIHVuZGVmaW5lZCcpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVF
cnJvcigpLCBmdW5jdGlvbigpIHsgbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kobnVsbCk7
IH0sICdjb25zdHJ1Y3Rpb24gZmFpbHMgd2l0aCBudWxsJyk7Ci0gICAgbmV3IEJ5dGVMZW5ndGhR
dWV1aW5nU3RyYXRlZ3koJ3BvdGF0bycpOyAvLyBDb25zdHJ1Y3Rpb24gc3VjY2VlZHMgd2l0aCBh
IHJhbmRvbSBub24tb2JqZWN0IHR5cGUuCi0gICAgbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRl
Z3koe30pOyAvLyBDb25zdHJ1Y3Rpb24gc3VjY2VlZHMgd2l0aCBhbiBvYmplY3Qgd2l0aG91dCBh
IGhpZ2hXYXRlck1hcmsgcHJvcGVydHkuCi0gICAgbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRl
Z3koaGlnaFdhdGVyTWFya09iamVjdEdldHRlcik7IC8vIENvbnN0cnVjdGlvbiBzdWNjZWVkcyB3
aXRoIGFuIG9iamVjdCB3aXRoIGEgaGlnaFdhdGVyTWFyayBnZXR0ZXIuCi0gICAgYXNzZXJ0X3Ro
cm93cyhlcnJvciwgZnVuY3Rpb24oKSB7IG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KGhp
Z2hXYXRlck1hcmtPYmplY3RHZXR0ZXJUaHJvd2luZyk7IH0sCi0gICAgICAgICAgICAgICAgICAn
Y29uc3RydWN0aW9uIGZhaWxzIHdpdGggYW4gb2JqZWN0IHdpdGggYSB0aHJvd2luZyBoaWdoV2F0
ZXJNYXJrIGdldHRlcicpOwotfSwgJ0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgY29uc3RydWN0
b3IgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHdyb25nIGFyZ3VtZW50cycpOwotCi10ZXN0KGZ1
bmN0aW9uKCkgewotICAgIHZhciBzaXplID0gMTAyNDsKLSAgICB2YXIgY2h1bmsgPSB7IGJ5dGVM
ZW5ndGg6IHNpemUgfTsKLSAgICB2YXIgY2h1bmtHZXR0ZXIgPSB7Ci0gICAgICAgIGdldCBieXRl
TGVuZ3RoKCkgeyByZXR1cm4gc2l6ZTsgfSwKLSAgICB9Ci0gICAgdmFyIGVycm9yID0gbmV3IEVy
cm9yKCd3b3chJyk7Ci0gICAgdmFyIGNodW5rR2V0dGVyVGhyb3dpbmcgPSB7Ci0gICAgICAgIGdl
dCBieXRlTGVuZ3RoKCkgeyB0aHJvdyBlcnJvcjsgfSwKLSAgICB9Ci0gICAgYXNzZXJ0X3Rocm93
cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5
LnByb3RvdHlwZS5zaXplKCk7IH0sICdzaXplIGZhaWxzIHdpdGggdW5kZWZpbmVkJyk7Ci0gICAg
YXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBCeXRlTGVuZ3RoUXVl
dWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKG51bGwpOyB9LCAnc2l6ZSBmYWlscyB3aXRoIG51
bGwnKTsKLSAgICBhc3NlcnRfZXF1YWxzKEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90
eXBlLnNpemUoJ3BvdGF0bycpLCB1bmRlZmluZWQsCi0gICAgICAgICAgICAgICAgICAnc2l6ZSBz
dWNjZWVkcyB3aXRoIHVuZGVmaW5lZCB3aXRoIGEgcmFuZG9tIG5vbi1vYmplY3QgdHlwZScpOwot
ICAgIGFzc2VydF9lcXVhbHMoQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6
ZSh7fSksIHVuZGVmaW5lZCwKLSAgICAgICAgICAgICAgICAgICdzaXplIHN1Y2NlZWRzIHdpdGgg
dW5kZWZpbmVkIHdpdGggYW4gb2JqZWN0IHdpdGhvdXQgaHdtIHByb3BlcnR5Jyk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKGNodW5r
KSwgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICdzaXplIHN1Y2NlZWRzIHdpdGggdGhlIHJpZ2h0
IGFtb3VudCB3aXRoIGFuIG9iamVjdCB3aXRoIGEgaHdtJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhC
eXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKGNodW5rR2V0dGVyKSwgc2l6
ZSwKLSAgICAgICAgICAgICAgICAgICdzaXplIHN1Y2NlZWRzIHdpdGggdGhlIHJpZ2h0IGFtb3Vu
dCB3aXRoIGFuIG9iamVjdCB3aXRoIGEgaHdtIGdldHRlcicpOwotICAgIGFzc2VydF90aHJvd3Mo
ZXJyb3IsIGZ1bmN0aW9uKCkgeyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5z
aXplKGNodW5rR2V0dGVyVGhyb3dpbmcpOyB9LAotICAgICAgICAgICAgICAgICAgJ3NpemUgZmFp
bHMgd2l0aCB0aGUgZXJyb3IgdGhyb3duIGJ5IHRoZSBnZXR0ZXInKTsKLX0sICdCeXRlTGVuZ3Ro
UXVldWluZ1N0cmF0ZWd5IHNpemUgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHdyb25nIGFyZ3Vt
ZW50cycpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICAgIHZhciBzdHJhdGVneSA9IG5ldyBCeXRl
TGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KTsKLQotICAgIGFzc2Vy
dF9vYmplY3RfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc3RyYXRlZ3ks
ICdoaWdoV2F0ZXJNYXJrJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogNCwg
d3JpdGFibGU6IHRydWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICdoaWdoV2F0ZXJNYXJrIHByb3BlcnR5IHNob3VsZCBi
ZSBhIGRhdGEgcHJvcGVydHkgd2l0aCB0aGUgdmFsdWUgcGFzc2VkIHRoZSBjb25uc3RydWN0b3In
KTsKLSAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBzdHJhdGVneS5zaXplLCAnZnVuY3Rpb24nKTsK
LX0sICdCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0
IHByb3BlcnRpZXMnKTsKLQogdmFyIHRlc3QxID0gYXN5bmNfdGVzdCgnQ2xvc2luZyBhIHdyaXRh
YmxlIHN0cmVhbSB3aXRoIGluLWZsaWdodCB3cml0ZXMgYmVsb3cgdGhlIGhpZ2ggd2F0ZXIgbWFy
ayBkZWxheXMgdGhlIGNsb3NlIGNhbGwgcHJvcGVybHknKTsKIHRlc3QxLnN0ZXAoZnVuY3Rpb24o
KSB7CiAgICAgdmFyIGlzRG9uZSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9j
b3VudC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dAppbmRleCAxMzFmNTBmZmUzNTQzNjQ5
NTNmYTAzZGRjN2FiNTlkYjA0NWFiZmZiLi45NDU3ZDZmZWQ0Y2VmMjlmYjAyMzNkZTI3Zjg1NmJj
YjY0MWZmZDVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0
cmF0ZWd5LWV4cGVjdGVkLnR4dApAQCAtMSwxMyArMSw0IEBACiAKLVBBU1MgQ2FuIGNvbnN0cnVj
dCBhIENvdW50UXVldWluZ1N0cmF0ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsgCi1Q
QVNTIENhbiBjb25zdHJ1Y3QgYSBDb3VudFF1ZXVpbmdTdHJhdGVneSB3aXRoIGFueSB2YWx1ZSBh
cyBpdHMgaGlnaCB3YXRlciBtYXJrIAotUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneSBjb25zdHJ1
Y3RvciBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggd3JvbmcgYXJndW1lbnRzIAotUEFTUyBDb3Vu
dFF1ZXVpbmdTdHJhdGVneSBzaXplIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCB3cm9uZyBhcmd1
bWVudHMgCi1QQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5IGluc3RhbmNlcyBoYXZlIHRoZSBjb3Jy
ZWN0IHByb3BlcnRpZXMgCi1QQVNTIENhbiBjb25zdHJ1Y3QgYSByZWFkYWJsZSBzdHJlYW0gd2l0
aCBhIHZhbGlkIENvdW50UXVldWluZ1N0cmF0ZWd5IAotUEFTUyBDb3JyZWN0bHkgZ292ZXJucyB0
aGUgcmV0dXJuIHZhbHVlIG9mIGEgUmVhZGFibGVTdHJlYW0ncyBlbnF1ZXVlIGZ1bmN0aW9uIChI
V00gPSAwKSAKLVBBU1MgQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIncyBkZXNpcmVkU2l6ZSBwcm9wZXJ0eSAoSFdNID0gMSkgCi1QQVNTIENvcnJlY3RseSBnb3Zl
cm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyJ3MgZGVzaXJlZFNpemUgcHJvcGVydHkgKEhX
TSA9IDQpIAogUEFTUyBDYW4gY29uc3RydWN0IGEgd3JpdGFibGUgc3RyZWFtIHdpdGggYSB2YWxp
ZCBDb3VudFF1ZXVpbmdTdHJhdGVneSAKIFBBU1MgQ29ycmVjdGx5IGdvdmVybnMgdGhlIHZhbHVl
IG9mIGEgV3JpdGFibGVTdHJlYW0ncyBzdGF0ZSBwcm9wZXJ0eSAoSFdNID0gMCkgCiBQQVNTIENv
cnJlY3RseSBnb3Zlcm5zIHRoZSB2YWx1ZSBvZiBhIFdyaXRhYmxlU3RyZWFtJ3Mgc3RhdGUgcHJv
cGVydHkgKEhXTSA9IDQpIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS5odG1sIGIvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVn
eS5odG1sCmluZGV4IDE5Y2Y3ZjBhZjc4Zjc3YTI3OWI4ZjIyMzEzYmJkM2JhZWYzNDMzYTQuLjJl
ZjdmNjhjNzQzNWZiOTI5NjAwNTBiOGM1MTFjZTcyMmM2YTNhMTUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3Ry
YXRlZ3kuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRh
dGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwKQEAgLTYsMjM1ICs2LDYgQEAKIC8vIFRo
aXMgaXMgdXBkYXRlZCB0aWxsIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvc3RyZWFtcy9jb21t
aXQvZWM1ZmZhMDM2MzA4ZDlmNjM1MGQyOTQ2NTYwZDQ4Y2RiZjA5MDkzOQogCiB0ZXN0KGZ1bmN0
aW9uKCkgewotICAgIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQg
fSk7Ci19LCAnQ2FuIGNvbnN0cnVjdCBhIENvdW50UXVldWluZ1N0cmF0ZWd5IHdpdGggYSB2YWxp
ZCBoaWdoIHdhdGVyIG1hcmsnKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICBmb3IgKHZhciBo
aWdoV2F0ZXJNYXJrIG9mIFstSW5maW5pdHksIE5hTiwgJ2ZvbycsIHt9LCBmdW5jdGlvbiAoKSB7
fV0pIHsKLSAgICAgICAgdmFyIHN0cmF0ZWd5ID0gbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsg
aGlnaFdhdGVyTWFyayB9KTsKLSAgICAgICAgYXNzZXJ0X3RydWUoT2JqZWN0LmlzKHN0cmF0ZWd5
LmhpZ2hXYXRlck1hcmssIGhpZ2hXYXRlck1hcmspLCBoaWdoV2F0ZXJNYXJrICsgJyBnZXRzIHNl
dCBjb3JyZWN0bHknKTsKLSAgICB9Ci19LCAnQ2FuIGNvbnN0cnVjdCBhIENvdW50UXVldWluZ1N0
cmF0ZWd5IHdpdGggYW55IHZhbHVlIGFzIGl0cyBoaWdoIHdhdGVyIG1hcmsnKTsKLQotdGVzdChm
dW5jdGlvbigpIHsKLSAgICB2YXIgaGlnaFdhdGVyTWFyayA9IDE7Ci0gICAgdmFyIGhpZ2hXYXRl
ck1hcmtPYmplY3RHZXR0ZXIgPSB7Ci0gICAgICAgIGdldCBoaWdoV2F0ZXJNYXJrKCkgeyByZXR1
cm4gaGlnaFdhdGVyTWFyazsgfSwKLSAgICB9OwotICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcign
d293IScpOwotICAgIHZhciBoaWdoV2F0ZXJNYXJrT2JqZWN0R2V0dGVyVGhyb3dpbmcgPSB7Ci0g
ICAgICAgIGdldCBoaWdoV2F0ZXJNYXJrKCkgeyB0aHJvdyBlcnJvcjsgfSwKLSAgICB9OwotICAg
IGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgbmV3IENvdW50UXVl
dWluZ1N0cmF0ZWd5KCk7IH0sICdjb25zdHJ1Y3Rpb24gZmFpbHMgd2l0aCB1bmRlZmluZWQnKTsK
LSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IG5ldyBDb3Vu
dFF1ZXVpbmdTdHJhdGVneShudWxsKTsgfSwgJ2NvbnN0cnVjdGlvbiBmYWlscyB3aXRoIG51bGwn
KTsKLSAgICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koJ3BvdGF0bycpOyAvLyBDb25zdHJ1Y3Rp
b24gc3VjY2VlZHMgd2l0aCBhIHJhbmRvbSBub24tb2JqZWN0IHR5cGUuCi0gICAgbmV3IENvdW50
UXVldWluZ1N0cmF0ZWd5KHt9KTsgLy8gQ29uc3RydWN0aW9uIHN1Y2NlZWRzIHdpdGggYW4gb2Jq
ZWN0IHdpdGhvdXQgYSBoaWdoV2F0ZXJNYXJrIHByb3BlcnR5LgotICAgIG5ldyBDb3VudFF1ZXVp
bmdTdHJhdGVneShoaWdoV2F0ZXJNYXJrT2JqZWN0R2V0dGVyKTsgLy8gQ29uc3RydWN0aW9uIHN1
Y2NlZWRzIHdpdGggYW4gb2JqZWN0IHdpdGggYSBoaWdoV2F0ZXJNYXJrIGdldHRlci4KLSAgICBh
c3NlcnRfdGhyb3dzKGVycm9yLCBmdW5jdGlvbigpIHsgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5
KGhpZ2hXYXRlck1hcmtPYmplY3RHZXR0ZXJUaHJvd2luZyk7IH0sCi0gICAgICAgICAgICAgICAg
ICAnY29uc3RydWN0aW9uIGZhaWxzIHdpdGggYW4gb2JqZWN0IHdpdGggYSB0aHJvd2luZyBoaWdo
V2F0ZXJNYXJrIGdldHRlcicpOwotfSwgJ0NvdW50UXVldWluZ1N0cmF0ZWd5IGNvbnN0cnVjdG9y
IGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCB3cm9uZyBhcmd1bWVudHMnKTsKLQotdGVzdChmdW5j
dGlvbigpIHsKLSAgICB2YXIgc2l6ZSA9IDEwMjQ7Ci0gICAgdmFyIGNodW5rID0geyBieXRlTGVu
Z3RoOiBzaXplIH07Ci0gICAgdmFyIGNodW5rR2V0dGVyID0gewotICAgICAgICBnZXQgYnl0ZUxl
bmd0aCgpIHsgcmV0dXJuIHNpemU7IH0sCi0gICAgfQotICAgIHZhciBlcnJvciA9IG5ldyBFcnJv
cignd293IScpOwotICAgIHZhciBjaHVua0dldHRlclRocm93aW5nID0gewotICAgICAgICBnZXQg
Ynl0ZUxlbmd0aCgpIHsgdGhyb3cgZXJyb3I7IH0sCi0gICAgfQotICAgIGFzc2VydF9lcXVhbHMo
Q291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoKSwgMSwgJ3NpemUgcmV0dXJucyAx
IHdpdGggdW5kZWZpbmVkJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhDb3VudFF1ZXVpbmdTdHJhdGVn
eS5wcm90b3R5cGUuc2l6ZShudWxsKSwgMSwgJ3NpemUgcmV0dXJucyAxIHdpdGggbnVsbCcpOwot
ICAgIGFzc2VydF9lcXVhbHMoQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoJ3Bv
dGF0bycpLCAxLCAnc2l6ZSByZXR1cm5zIDEgd2l0aCBub24tb2JqZWN0IHR5cGUnKTsKLSAgICBh
c3NlcnRfZXF1YWxzKENvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKHt9KSwgMSwg
J3NpemUgcmV0dXJucyAxIHdpdGggZW1wdHkgb2JqZWN0Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhD
b3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZShjaHVuayksIDEsICdzaXplIHJldHVy
bnMgMSB3aXRoIGEgY2h1bmsnKTsKLSAgICBhc3NlcnRfZXF1YWxzKENvdW50UXVldWluZ1N0cmF0
ZWd5LnByb3RvdHlwZS5zaXplKGNodW5rR2V0dGVyKSwgMSwgJ3NpemUgcmV0dXJucyAxIHdpdGgg
Y2h1bmsgZ2V0dGVyJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhDb3VudFF1ZXVpbmdTdHJhdGVneS5w
cm90b3R5cGUuc2l6ZShjaHVua0dldHRlclRocm93aW5nKSwgMSwgJ3NpemUgcmV0dXJucyAxIHdp
dGggY2h1bmsgZ2V0dGVyIHRoYXQgdGhyb3dzJyk7Ci19LCAnQ291bnRRdWV1aW5nU3RyYXRlZ3kg
c2l6ZSBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggd3JvbmcgYXJndW1lbnRzJyk7Ci0KLXRlc3Qo
ZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHN0cmF0ZWd5ID0gbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5
KHsgaGlnaFdhdGVyTWFyazogNCB9KTsKLQotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc3RyYXRlZ3ksICdoaWdoV2F0ZXJNYXJrJyksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogNCwgd3JpdGFibGU6IHRydWUsIGVudW1l
cmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICdoaWdoV2F0ZXJNYXJrIHByb3BlcnR5IHNob3VsZCBiZSBhIGRhdGEgcHJvcGVydHkgd2l0
aCB0aGUgdmFsdWUgcGFzc2VkIHRoZSBjb25uc3RydWN0b3InKTsKLSAgICBhc3NlcnRfZXF1YWxz
KHR5cGVvZiBzdHJhdGVneS5zaXplLCAnZnVuY3Rpb24nKTsKLX0sICdDb3VudFF1ZXVpbmdTdHJh
dGVneSBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBwcm9wZXJ0aWVzJyk7Ci0KLXRlc3QoZnVu
Y3Rpb24oKSB7Ci0gICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCBuZXcgQ291bnRRdWV1aW5nU3Ry
YXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0pKTsKLX0sICdDYW4gY29uc3RydWN0IGEgcmVhZGFi
bGUgc3RyZWFtIHdpdGggYSB2YWxpZCBDb3VudFF1ZXVpbmdTdHJhdGVneScpOwotCi12YXIgdGVz
dDEgPSBhc3luY190ZXN0KCdDb3JyZWN0bHkgZ292ZXJucyB0aGUgcmV0dXJuIHZhbHVlIG9mIGEg
UmVhZGFibGVTdHJlYW1cJ3MgZW5xdWV1ZSBmdW5jdGlvbiAoSFdNID0gMCknKTsKLXRlc3QxLnN0
ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGNvbnRyb2xsZXI7Ci0gICAgdmFyIHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAg
IGNvbnRyb2xsZXIgPSBjOwotICAgICAgICB9Ci0gICAgfSwKLSAgICBuZXcgQ291bnRRdWV1aW5n
U3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAwIH0pCi0gICAgKTsKLSAgICB2YXIgcmVhZGVyID0g
cnMuZ2V0UmVhZGVyKCk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNp
emUsIDAsICcwIHJlYWRzLCAwIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOwot
ICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxl
ci5kZXNpcmVkU2l6ZSwgLTEsICcwIHJlYWRzLCAxIGVucXVldWU6IGRlc2lyZWRTaXplIHNob3Vs
ZCBiZSAtMScpOwotICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOwotICAgIGFzc2VydF9lcXVh
bHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTIsICcwIHJlYWRzLCAyIGVucXVldWVzOiBkZXNp
cmVkU2l6ZSBzaG91bGQgYmUgLTInKTsKLSAgICBjb250cm9sbGVyLmVucXVldWUoJ2MnKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0zLCAnMCByZWFkcywgMyBl
bnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0zJyk7Ci0gICAgY29udHJvbGxlci5lbnF1
ZXVlKCdkJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtNCwg
JzAgcmVhZHMsIDQgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtNCcpOwotCi0gICAg
cmVhZGVyLnJlYWQoKS50aGVuKHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsKLSAg
ICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZh
bHNlIH0sICcxc3QgcmVhZCBnaXZlcyBiYWNrIHRoZSAxc3QgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVl
IG5vdyBjb250YWlucyAzIGNodW5rcyknKTsKLSAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7
Ci0gICAgfSkpLnRoZW4odGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgewotICAgICAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2Ug
fSwgJzJuZCByZWFkIGdpdmVzIGJhY2sgdGhlIDJuZCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93
IGNvbnRhaW5zIDIgY2h1bmtzKScpOwotICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAg
ICB9KSkudGhlbih0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAgIGFz
c2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LCAn
M3JkIHJlYWQgZ2l2ZXMgYmFjayB0aGUgM3JkIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29u
dGFpbnMgMSBjaHVuayknKTsKLQotICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVz
aXJlZFNpemUsIC0xLCAnMyByZWFkcywgNCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJl
IC0xJyk7Ci0gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZScpOwotICAgICAgICBhc3NlcnRf
ZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0yLCAnMyByZWFkcywgNSBlbnF1ZXVlczog
ZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7Ci0KLSAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFk
KCk7Ci0gICAgfSkpLnRoZW4odGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgewotICAg
ICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdkJywgZG9uZTogZmFs
c2UgfSwgJzR0aCByZWFkIGdpdmVzIGJhY2sgdGhlIDR0aCBjaHVuayBlbnF1ZXVlZCAocXVldWUg
bm93IGNvbnRhaW5zIDEgY2h1bmtzKScpOwotICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsK
LSAgICB9KSkudGhlbih0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAg
IGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2UnLCBkb25lOiBmYWxzZSB9
LCAnNXRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNXRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cg
Y29udGFpbnMgMCBjaHVua3MpJyk7Ci0KLSAgICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVy
LmRlc2lyZWRTaXplLCAwLCAnNSByZWFkcywgNSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxk
IGJlIDAnKTsKLSAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdmJyk7Ci0gICAgICAgIGFzc2Vy
dF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICc1IHJlYWRzLCA2IGVucXVldWVz
OiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKLSAgICAgICAgY29udHJvbGxlci5lbnF1ZXVl
KCdnJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTIs
ICc1IHJlYWRzLCA3IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTInKTsKLQotICAg
ICAgICB0ZXN0MS5kb25lKCk7Ci0gICAgfSkpLmNhdGNoKHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlv
bihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0gKSk7Ci19KTsKLQotdmFyIHRlc3QyID0gYXN5
bmNfdGVzdCgnQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJcJ3Mg
ZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDEpJyk7Ci10ZXN0Mi5zdGVwKGZ1bmN0aW9uKCkg
ewotICAgIHZhciBjb250cm9sbGVyOwotICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBjb250cm9sbGVyID0g
YzsKLSAgICAgICAgfSwKLSAgICB9LAotICAgIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhp
Z2hXYXRlck1hcms6IDEgfSkKLSAgICApOwotICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIo
KTsKLQotICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJzAgcmVh
ZHMsIDAgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAxJyk7Ci0gICAgY29udHJvbGxl
ci5lbnF1ZXVlKCdhJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXpl
LCAwLCAnMCByZWFkcywgMSBlbnF1ZXVlOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOwotICAg
IGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOwotICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5k
ZXNpcmVkU2l6ZSwgLTEsICcwIHJlYWRzLCAyIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQg
YmUgLTEnKTsKLSAgICBjb250cm9sbGVyLmVucXVldWUoJ2MnKTsKLSAgICBhc3NlcnRfZXF1YWxz
KGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0yLCAnMCByZWFkcywgMyBlbnF1ZXVlczogZGVzaXJl
ZFNpemUgc2hvdWxkIGJlIC0yJyk7Ci0gICAgY29udHJvbGxlci5lbnF1ZXVlKCdkJyk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMywgJzAgcmVhZHMsIDQgZW5x
dWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMycpOwotCi0gICAgcmVhZGVyLnJlYWQoKS50
aGVuKHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAgICAgYXNzZXJ0X29i
amVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICcxc3QgcmVh
ZCBnaXZlcyBiYWNrIHRoZSAxc3QgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAz
IGNodW5rcyknKTsKLSAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gICAgfSkpLnRoZW4o
dGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgewotICAgICAgICBhc3NlcnRfb2JqZWN0
X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwgJzJuZCByZWFkIGdp
dmVzIGJhY2sgdGhlIDJuZCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDIgY2h1
bmtzKScpOwotICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgICB9KSkudGhlbih0ZXN0
Mi5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAgIGFzc2VydF9vYmplY3RfZXF1
YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LCAnM3JkIHJlYWQgZ2l2ZXMg
YmFjayB0aGUgM3JkIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMSBjaHVuaykn
KTsKLQotICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICcz
IHJlYWRzLCA0IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOwotICAgICAgICBj
b250cm9sbGVyLmVucXVldWUoJ2UnKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVy
LmRlc2lyZWRTaXplLCAtMSwgJzMgcmVhZHMsIDUgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3Vs
ZCBiZSAtMScpOwotCi0gICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICAgIH0pKS50aGVu
KHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAgICAgYXNzZXJ0X29iamVj
dF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZCcsIGRvbmU6IGZhbHNlIH0sICc0dGggcmVhZCBn
aXZlcyBiYWNrIHRoZSA0dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNo
dW5rcyknKTsKLSAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gICAgfSkpLnRoZW4odGVz
dDIuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgewotICAgICAgICBhc3NlcnRfb2JqZWN0X2Vx
dWFscyhyZXN1bHQsIHsgdmFsdWU6ICdlJywgZG9uZTogZmFsc2UgfSwgJzV0aCByZWFkIGdpdmVz
IGJhY2sgdGhlIDV0aCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDAgY2h1bmtz
KScpOwotCi0gICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwg
JzUgcmVhZHMsIDUgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAxJyk7Ci0gICAgICAg
IGNvbnRyb2xsZXIuZW5xdWV1ZSgnZicpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xs
ZXIuZGVzaXJlZFNpemUsIDAsICc1IHJlYWRzLCA2IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91
bGQgYmUgMCcpOwotICAgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2cnKTsKLSAgICAgICAgYXNz
ZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzUgcmVhZHMsIDcgZW5xdWV1
ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMScpOwotCi0gICAgICAgIHRlc3QyLmRvbmUoKTsK
LSAgICB9KSkuY2F0Y2godGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVh
Y2hlZChlKTsgfSApKTsKLX0pOwotCi12YXIgdGVzdDMgPSBhc3luY190ZXN0KCdDb3JyZWN0bHkg
Z292ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlclwncyBkZXNpcmVkU2l6ZSBwcm9wZXJ0
eSAoSFdNID0gNCknKTsKLXRlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGNvbnRyb2xs
ZXI7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1
bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgICAgICB9Ci0gICAg
fSwKLSAgICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0pCi0g
ICAgKTsKLSAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgICBhc3NlcnRfZXF1
YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDQsICcwIHJlYWRzLCAwIGVucXVldWVzOiBkZXNp
cmVkU2l6ZSBzaG91bGQgYmUgNCcpOwotICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotICAg
IGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMywgJzAgcmVhZHMsIDEgZW5x
dWV1ZTogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDMnKTsKLSAgICBjb250cm9sbGVyLmVucXVldWUo
J2InKTsKLSAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDIsICcwIHJl
YWRzLCAyIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMicpOwotICAgIGNvbnRyb2xs
ZXIuZW5xdWV1ZSgnYycpOwotICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6
ZSwgMSwgJzAgcmVhZHMsIDMgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAxJyk7Ci0g
ICAgY29udHJvbGxlci5lbnF1ZXVlKCdkJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVy
LmRlc2lyZWRTaXplLCAwLCAnMCByZWFkcywgNCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxk
IGJlIDAnKTsKLSAgICBjb250cm9sbGVyLmVucXVldWUoJ2UnKTsKLSAgICBhc3NlcnRfZXF1YWxz
KGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMCByZWFkcywgNSBlbnF1ZXVlczogZGVzaXJl
ZFNpemUgc2hvdWxkIGJlIC0xJyk7Ci0gICAgY29udHJvbGxlci5lbnF1ZXVlKCdmJyk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMiwgJzAgcmVhZHMsIDYgZW5x
dWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMicpOwotCi0KLSAgICByZWFkZXIucmVhZCgp
LnRoZW4odGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgewotICAgICAgICBhc3NlcnRf
b2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJzFzdCBy
ZWFkIGdpdmVzIGJhY2sgdGhlIDFzdCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5z
IDUgY2h1bmtzKScpOwotICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgICB9KSkudGhl
bih0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LCAnMm5kIHJlYWQg
Z2l2ZXMgYmFjayB0aGUgMm5kIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgNCBj
aHVua3MpJyk7Ci0KLSAgICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXpl
LCAwLCAnMiByZWFkcywgNiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKLSAg
ICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdnJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoY29u
dHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICcyIHJlYWRzLCA3IGVucXVldWVzOiBkZXNpcmVkU2l6
ZSBzaG91bGQgYmUgLTEnKTsKLQotICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgICB9
KSkudGhlbih0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAgIGFzc2Vy
dF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LCAnM3Jk
IHJlYWQgZ2l2ZXMgYmFjayB0aGUgM3JkIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFp
bnMgNCBjaHVua3MpJyk7Ci0gICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICAgIH0pKS50
aGVuKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAgICAgYXNzZXJ0X29i
amVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZCcsIGRvbmU6IGZhbHNlIH0sICc0dGggcmVh
ZCBnaXZlcyBiYWNrIHRoZSA0dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAz
IGNodW5rcyknKTsKLSAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gICAgfSkpLnRoZW4o
dGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgewotICAgICAgICBhc3NlcnRfb2JqZWN0
X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdlJywgZG9uZTogZmFsc2UgfSwgJzV0aCByZWFkIGdp
dmVzIGJhY2sgdGhlIDV0aCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDIgY2h1
bmtzKScpOwotICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgICB9KSkudGhlbih0ZXN0
My5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAgIGFzc2VydF9vYmplY3RfZXF1
YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2YnLCBkb25lOiBmYWxzZSB9LCAnNnRoIHJlYWQgZ2l2ZXMg
YmFjayB0aGUgNnRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMCBjaHVua3Mp
Jyk7Ci0KLSAgICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAzLCAn
NiByZWFkcywgNyBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDMnKTsKLSAgICAgICAg
Y29udHJvbGxlci5lbnF1ZXVlKCdoJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxl
ci5kZXNpcmVkU2l6ZSwgMiwgJzYgcmVhZHMsIDggZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3Vs
ZCBiZSAyJyk7Ci0gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnaScpOwotICAgICAgICBhc3Nl
cnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICc2IHJlYWRzLCA5IGVucXVldWVz
OiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMScpOwotICAgICAgICBjb250cm9sbGVyLmVucXVldWUo
J2onKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAn
NiByZWFkcywgMTAgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7Ci0gICAgICAg
IGNvbnRyb2xsZXIuZW5xdWV1ZSgnaycpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xs
ZXIuZGVzaXJlZFNpemUsIC0xLCAnNiByZWFkcywgMTEgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNo
b3VsZCBiZSAtMScpOwotCi0gICAgICAgIHRlc3QzLmRvbmUoKTsKLSAgICB9KSkuY2F0Y2godGVz
dDMuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSApKTsKLX0p
OwotCi10ZXN0KGZ1bmN0aW9uKCkgewogICAgIG5ldyBXcml0YWJsZVN0cmVhbSh7fSwgbmV3IENv
dW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KSk7IC8vIERvZXMgbm90IHRo
cm93LgogfSwgJ0NhbiBjb25zdHJ1Y3QgYSB3cml0YWJsZSBzdHJlYW0gd2l0aCBhIHZhbGlkIENv
dW50UXVldWluZ1N0cmF0ZWd5Jyk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1jYW5jZWwuaHRtbCBiL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVh
bS1jYW5jZWwuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDY5YWUxMTVjYzVh
ODFjNTZhNzQyYTQ1NDA1YjY1MDk0MGUxMmYwYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tY2FuY2VsLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwy
NjEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08c2NyaXB0IHNyYz0nLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzJz48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPScuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMnPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9J3Jlc291cmNlcy9z
dHJlYW1zLXV0aWxzLmpzJz48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0vLyBUaGlzIGlzIHVwZGF0ZWQg
dGlsbCBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL3N0cmVhbXMvY29tbWl0L2VjNWZmYTAzNjMw
OGQ5ZjYzNTBkMjk0NjU2MGQ0OGNkYmYwOTA5MzkKLQotdmFyIHRlc3QxID0gYXN5bmNfdGVzdCgn
UmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpbnRlZ3JhdGlvbiB0ZXN0IG9uIGFuIGluZmlu
aXRlIHN0cmVhbSBkZXJpdmVkIGZyb20gYSByYW5kb20gcHVzaCBzb3VyY2UnKTsKLXRlc3QxLnN0
ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHJhbmRvbVNvdXJjZSA9IG5ldyBSYW5kb21QdXNoU291
cmNlKCk7Ci0KLSAgICB2YXIgY2FuY2VsbGF0aW9uRmluaXNoZWQgPSBmYWxzZTsKLSAgICB2YXIg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewot
ICAgICAgICAgICAgcmFuZG9tU291cmNlLm9uZGF0YSA9IGMuZW5xdWV1ZS5iaW5kKGMpOwotICAg
ICAgICAgICAgcmFuZG9tU291cmNlLm9uZW5kID0gYy5jbG9zZS5iaW5kKGMpOwotICAgICAgICAg
ICAgcmFuZG9tU291cmNlLm9uZXJyb3IgPSBjLmVycm9yLmJpbmQoYyk7Ci0gICAgICAgIH0sCi0K
LSAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByYW5kb21Tb3VyY2UucmVh
ZFN0YXJ0KCk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgY2FuY2VsOiBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIHJhbmRvbVNvdXJjZS5yZWFkU3RvcCgpOwotICAgICAgICAgICAgcmFuZG9tU291
cmNlLm9uZW5kKCk7Ci0KLSAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSh0ZXN0MS5zdGVw
X2Z1bmMoZnVuY3Rpb24ocmVzb2x2ZSkgewotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQodGVz
dDEuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICBjYW5jZWxsYXRp
b25GaW5pc2hlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAg
ICAgICAgICAgICB9KSwgNTAwKTsKLSAgICAgICAgICAgIH0pKTsKLSAgICAgICAgfQotICAgIH0p
OwotICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICAgIHJlYWRhYmxlU3RyZWFt
VG9BcnJheShycywgcmVhZGVyKS50aGVuKHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbihjaHVua3Mp
IHsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhjYW5jZWxsYXRpb25GaW5pc2hlZCwgZmFsc2UsICdp
dCBkaWQgbm90IHdhaXQgZm9yIHRoZSBjYW5jZWxsYXRpb24gcHJvY2VzcyB0byBmaW5pc2ggYmVm
b3JlIGNsb3NpbmcnKTsKLSAgICAgICAgYXNzZXJ0X2dyZWF0ZXJfdGhhbihjaHVua3MubGVuZ3Ro
LCAwLCAnYXQgbGVhc3Qgb25lIGNodW5rIHNob3VsZCBiZSByZWFkJyk7Ci0gICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgY2h1bmtzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKGNodW5rc1tpXS5sZW5ndGgsIDEyOCwgJ2NodW5rICcgKyBpICsgJyBzaG91bGQgaGF2
ZSAxMjggYnl0ZXMnKTsKLSAgICAgICAgfQotICAgIH0pLCB0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rp
b24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9KSk7Ci0KLSAgICBzZXRUaW1lb3V0KHRlc3Qx
LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgcmVhZGVyLmNhbmNlbCgpLnRoZW4odGVz
dDEuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjYW5j
ZWxsYXRpb25GaW5pc2hlZCwgdHJ1ZSwgJ2l0IHJldHVybnMgYSBwcm9taXNlIHRoYXQgaXMgZnVs
ZmlsbGVkIHdoZW4gdGhlIGNhbmNlbGxhdGlvbiBmaW5pc2hlcycpOwotICAgICAgICAgICAgdGVz
dDEuZG9uZSgpOwotICAgICAgICB9KSkuY2F0Y2godGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKGUp
IHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSkpOwotICAgIH0pLCAxMDAwKTsKLX0pOwotCi10ZXN0
KGZ1bmN0aW9uKCkgewotICAgIHZhciByZWNvcmRlZFJlYXNvbjsKLSAgICB2YXIgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oewotICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKHJlYXNvbikgewotICAg
ICAgICAgICAgcmVjb3JkZWRSZWFzb24gPSByZWFzb247Ci0gICAgICAgIH0KLSAgICB9KTsKLQot
ICAgIHZhciBwYXNzZWRSZWFzb24gPSBuZXcgRXJyb3IoJ1NvcnJ5LCBpdCBqdXN0IHdhc25cJ3Qg
bWVhbnQgdG8gYmUuJyk7Ci0gICAgcnMuY2FuY2VsKHBhc3NlZFJlYXNvbik7Ci0KLSAgICBhc3Nl
cnRfZXF1YWxzKHJlY29yZGVkUmVhc29uLCBwYXNzZWRSZWFzb24sCi0gICAgICAgICAgICAgICAg
ICAndGhlIGVycm9yIHBhc3NlZCB0byB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2VsIG1l
dGhvZCBzaG91bGQgZXF1YWwgdGhlIG9uZSBwYXNzZWQgdG8gdGhlIHN0cmVhbVwncyBjYW5jZWwn
KTsKLX0sICdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGNhbmNlbChyZWFzb24pIHNob3Vs
ZCBwYXNzIHRocm91Z2ggdGhlIGdpdmVuIHJlYXNvbiB0byB0aGUgdW5kZXJseWluZyBzb3VyY2Un
KTsKLQotdmFyIHRlc3QyID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9u
OiBjYW5jZWwoKSBvbiBhIGxvY2tlZCBzdHJlYW0gc2hvdWxkIGZhaWwgYW5kIG5vdCBjYWxsIHRo
ZSB1bmRlcmx5aW5nIHNvdXJjZSBjYW5jZWwnKTsKLXRlc3QyLnN0ZXAoZnVuY3Rpb24oKSB7Ci0g
ICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9u
KGMpIHsKLSAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAgICAgICAgYy5jbG9zZSgp
OwotICAgICAgICB9LAotICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
YXNzZXJ0X3VucmVhY2hlZCgndW5kZXJseWluZyBzb3VyY2UgY2FuY2VsKCkgc2hvdWxkIG5vdCBo
YXZlIGJlZW4gY2FsbGVkJyk7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHZhciByZWFkZXIg
PSBycy5nZXRSZWFkZXIoKTsKLQotICAgIHJzLmNhbmNlbCgpLmNhdGNoKHRlc3QyLnN0ZXBfZnVu
YyhmdW5jdGlvbihlKSB7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBl
LCAnY2FuY2VsKCkgc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggYSBUeXBlRXJyb3InKQotICAgIH0p
KTsKLQotICAgIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVz
dWx0KSB7Ci0gICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2En
LCBkb25lOiBmYWxzZSB9LCAncmVhZCgpIHNob3VsZCBzdGlsbCB3b3JrIGFmdGVyIHRoZSBhdHRl
bXB0ZWQgY2FuY2VsJyk7Ci0gICAgfSkpOwotCi0gICAgcmVhZGVyLmNsb3NlZC50aGVuKHRlc3Qy
LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdDIuZG9uZSgnY2xvc2VkIHNob3Vs
ZCBmdWxmaWxsIHdpdGhvdXQgdW5kZXJseWluZyBzb3VyY2UgY2FuY2VsIGV2ZXIgYmVpbmcgY2Fs
bGVkJyk7Ci0gICAgfSkpOwotfSk7Ci0KLXZhciB0ZXN0MyA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxl
U3RyZWFtIGNhbmNlbGxhdGlvbjogc2hvdWxkIGZ1bGZpbGwgcHJvbWlzZSB3aGVuIGNhbmNlbCBj
YWxsYmFjayB3ZW50IGZpbmUnKTsKLXRlc3QzLnN0ZXAoZnVuY3Rpb24oKQotewotICAgIHZhciBj
YW5jZWxSZWNlaXZlZCA9IGZhbHNlOwotICAgIHZhciBjYW5jZWxSZWFzb24gPSBuZXcgRXJyb3Io
J0kgYW0gdGlyZWQgb2YgdGhpcyBzdHJlYW0sIEkgcHJlZmVyIHRvIGNhbmNlbCBpdCcpOwotICAg
IHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIGNhbmNlbDogZnVuY3Rpb24o
cmVhc29uKSB7Ci0gICAgICAgICAgICBjYW5jZWxSZWNlaXZlZCA9IHRydWU7Ci0gICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKHJlYXNvbiwgY2FuY2VsUmVhc29uLCAnY2FuY2VsbGF0aW9uIHJlYXNv
biBnaXZlbiB0byB0aGUgdW5kZXJseWluZyBzb3VyY2Ugc2hvdWxkIGJlIGVxdWFsIHRvIHRoZSBv
bmUgcGFzc2VkJyk7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHJzLmNhbmNlbChjYW5jZWxS
ZWFzb24pLnRoZW4oCi0gICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIGFzc2VydF90cnVlKGNhbmNlbFJlY2VpdmVkKTsKLSAgICAgICAgICAgIHRlc3QzLmRv
bmUoJ3N0cmVhbSB3YXMgc3VjY2Vzc2Z1bGx5IGNhbmNlbGxlZCcpOwotICAgICAgICB9KSwKLSAg
ICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGFzc2VydF91
bnJlYWNoZWQoInJlY2VpdmVkIGVycm9yICIgKyBlKQotICAgICAgICB9KSk7Ci19KTsKLQotdmFy
IHRlc3Q0ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiByZXR1cm5p
bmcgYSB2YWx1ZSBmcm9tIHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBjYW5jZWwgc2hvdWxkIG5v
dCBhZmZlY3QgdGhlIGZ1bGZpbGxtZW50IHZhbHVlIG9mIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5
IHRoZSBzdHJlYW1cJ3MgY2FuY2VsJyk7Ci10ZXN0NC5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZh
ciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIGNhbmNlbDogZnVuY3Rpb24ocmVh
c29uKSB7Ci0gICAgICAgICAgICByZXR1cm4gJ0hlbGxvJzsKLSAgICAgICAgfQotICAgIH0pOwot
Ci0gICAgcnMuY2FuY2VsKCkudGhlbih0ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rpb24odikgewotICAg
ICAgICBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBz
aG91bGQgYmUgZnVsZmlsbGVkIHdpdGggdW5kZWZpbmVkJyk7Ci0gICAgICAgIHRlc3Q0LmRvbmUo
KTsKLSAgICB9KSwgdGVzdDQuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICBhc3NlcnRf
dW5yZWFjaGVkKCdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIG5vdCBiZSByZWplY3RlZCcp
OwotICAgIH0pKTsKLX0pOwotCi12YXIgdGVzdDUgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVh
bSBjYW5jZWxsYXRpb246IHNob3VsZCByZWplY3QgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFj
ayByYWlzZXMgYW4gZXhjZXB0aW9uJyk7Ci10ZXN0NS5zdGVwKGZ1bmN0aW9uKCkKLXsKLSAgICB2
YXIgdGhyb3duRXJyb3IgPSBuZXcgRXJyb3IoJ3Rlc3QnKTsKLSAgICB2YXIgY2FuY2VsQ2FsbGVk
ID0gZmFsc2U7Ci0KLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBj
YW5jZWw6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgY2FuY2VsQ2FsbGVkID0gdHJ1ZTsKLSAg
ICAgICAgICAgIHRocm93IHRocm93bkVycm9yOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBy
cy5jYW5jZWwoJ3Rlc3QnKS50aGVuKAotICAgICAgICB0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24o
KSB7IGFzc2VydF91bnJlYWNoZWQoJ2NhbmNlbCBzaG91bGQgcmVqZWN0Jyk7IH0pLAotICAgICAg
ICB0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgYXNzZXJ0X3RydWUo
Y2FuY2VsQ2FsbGVkKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZSwgdGhyb3duRXJyb3Ip
OwotICAgICAgICAgICAgdGVzdDUuZG9uZSgpOwotICAgICAgICB9KQotICAgICk7Ci19KTsKLQot
dmFyIHRlc3Q2ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0
aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwg
dGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbVwncyBjYW5jZWwgc2hvdWxkIGZ1bGZp
bGwgd2hlbiB0aGF0IG9uZSBkb2VzICgxKScpOwotdGVzdDYuc3RlcChmdW5jdGlvbigpCi17Ci0g
ICAgdmFyIGNhbmNlbFJlYXNvbiA9IG5ldyBFcnJvcigndGVzdCcpOwotCi0gICAgdmFyIHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgY2FuY2VsOiBmdW5jdGlvbihlcnJvcikgewot
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlcnJvciwgY2FuY2VsUmVhc29uKTsKLSAgICAgICAg
ICAgIHJldHVybiBuZXcgUHJvbWlzZSh0ZXN0Ni5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzb2x2ZSwg
cmVqZWN0KSB7Ci0gICAgICAgICAgICAgICAgc2V0VGltZW91dCh0ZXN0Ni5zdGVwX2Z1bmMoZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAgICAg
ICB9KSwgNTAwKTsKLSAgICAgICAgICAgIH0pKQotICAgICAgICB9Ci0gICAgfSkKLQotICAgIHJz
LmNhbmNlbChjYW5jZWxSZWFzb24pLnRoZW4oCi0gICAgICAgIHRlc3Q2LnN0ZXBfZnVuYyhmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgIHRlc3Q2LmRvbmUoJ3N0cmVhbSBzdWNjZXNzZnVsbHkgY2Fu
Y2VsbGVkJyk7Ci0gICAgICAgIH0pLAotICAgICAgICB0ZXN0Ni5zdGVwX2Z1bmMoZnVuY3Rpb24o
ZSkgewotICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgicmVjZWl2ZWQgZXJyb3IgIiArIGUp
Ci0gICAgICAgIH0pKQotfSk7Ci0KLXZhciB0ZXN0NyA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3Ry
ZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCBtZXRo
b2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW1c
J3MgY2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBvbmUgZG9lcyAoMiknKTsKLXRlc3Q3
LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHJlc29sdmVTb3VyY2VDYW5jZWxQcm9taXNlOwot
ICAgIHZhciBzb3VyY2VDYW5jZWxQcm9taXNlSGFzRnVsZmlsbGVkID0gZmFsc2U7Ci0gICAgdmFy
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgY2FuY2VsOiBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgIHZhciBzb3VyY2VDYW5jZWxQcm9taXNlID0gbmV3IFByb21pc2UodGVzdDcu
c3RlcF9mdW5jKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgICAgIHJl
c29sdmVTb3VyY2VDYW5jZWxQcm9taXNlID0gcmVzb2x2ZTsKLSAgICAgICAgICAgIH0pKTsKLQot
ICAgICAgICAgICAgc291cmNlQ2FuY2VsUHJvbWlzZS50aGVuKHRlc3Q3LnN0ZXBfZnVuYyhmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICAgICBzb3VyY2VDYW5jZWxQcm9taXNlSGFzRnVsZmlsbGVk
ID0gdHJ1ZTsKLSAgICAgICAgICAgIH0pKTsKLQotICAgICAgICAgICAgcmV0dXJuIHNvdXJjZUNh
bmNlbFByb21pc2U7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotCi0gICAgcnMuY2FuY2VsKCkudGhl
bigKLSAgICAgICAgdGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKHZhbHVlKSB7Ci0gICAgICAgICAg
ICBhc3NlcnRfdHJ1ZShzb3VyY2VDYW5jZWxQcm9taXNlSGFzRnVsZmlsbGVkLCAnY2FuY2VsKCkg
cmV0dXJuIHZhbHVlIHNob3VsZCBiZSBmdWxmaWxsZWQgb25seSBhZnRlciB0aGUgcHJvbWlzZSBy
ZXR1cm5lZCBieSB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2VsJyk7Ci0gICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQsICdjYW5jZWwoKSByZXR1cm4gdmFsdWUg
c2hvdWxkIGJlIGZ1bGZpbGxlZCB3aXRoIHVuZGVmaW5lZCcpOwotICAgICAgICAgICAgdGVzdDcu
ZG9uZSgpOwotICAgICAgICB9KSwKLSAgICAgICAgdGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
eyBhc3NlcnRfdW5yZWFjaGVkKCdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIG5vdCBiZSBy
ZWplY3RlZCcpOyB9KQotICAgICk7Ci0KLSAgICBzZXRUaW1lb3V0KHRlc3Q3LnN0ZXBfZnVuYyhm
dW5jdGlvbigpIHsKLSAgICAgICAgcmVzb2x2ZVNvdXJjZUNhbmNlbFByb21pc2UoJ0hlbGxvJyk7
Ci0gICAgfSksIDUwMCk7Ci19KTsKLQotdmFyIHRlc3Q4ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVT
dHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2VsIG1l
dGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVh
bVwncyBjYW5jZWwgc2hvdWxkIHJlamVjdCB3aGVuIHRoYXQgb25lIGRvZXMnKTsKLXRlc3Q4LnN0
ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHJlamVjdFNvdXJjZUNhbmNlbFByb21pc2U7Ci0gICAg
dmFyIHNvdXJjZUNhbmNlbFByb21pc2VIYXNSZWplY3RlZCA9IGZhbHNlOwotICAgIHZhciBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIGNhbmNlbDogZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICB2YXIgc291cmNlQ2FuY2VsUHJvbWlzZSA9IG5ldyBQcm9taXNlKHRlc3Q4LnN0ZXBf
ZnVuYyhmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgICAgICByZWplY3RT
b3VyY2VDYW5jZWxQcm9taXNlID0gcmVqZWN0OwotICAgICAgICAgICAgfSkpOwotCi0gICAgICAg
ICAgICBzb3VyY2VDYW5jZWxQcm9taXNlLmNhdGNoKHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgICAgICBzb3VyY2VDYW5jZWxQcm9taXNlSGFzUmVqZWN0ZWQgPSB0cnVl
OwotICAgICAgICAgICAgfSkpOwotCi0gICAgICAgICAgICByZXR1cm4gc291cmNlQ2FuY2VsUHJv
bWlzZTsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgdmFyIGVycm9ySW5DYW5jZWwgPSBuZXcg
RXJyb3IoJ1NvcnJ5LCBpdCBqdXN0IHdhc25cJ3QgbWVhbnQgdG8gYmUuJyk7Ci0KLSAgICBycy5j
YW5jZWwoKS50aGVuKAotICAgICAgICB0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2Vy
dF91bnJlYWNoZWQoJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQgbm90IGJlIHJlamVjdGVk
Jyk7IH0pLAotICAgICAgICB0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgewotICAgICAgICAg
ICAgYXNzZXJ0X3RydWUoc291cmNlQ2FuY2VsUHJvbWlzZUhhc1JlamVjdGVkLCAnY2FuY2VsKCkg
cmV0dXJuIHZhbHVlIHNob3VsZCBiZSByZWplY3RlZCBvbmx5IGFmdGVyIHRoZSBwcm9taXNlIHJl
dHVybmVkIGJ5IHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBjYW5jZWwnKTsKLSAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMociwgZXJyb3JJbkNhbmNlbCwgJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBz
aG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgcmVqZWN0aW9u
IHJlYXNvbicpOwotICAgICAgICAgICAgdGVzdDguZG9uZSgpOwotICAgICAgICB9KQotICAgICk7
Ci0KLSAgICBzZXRUaW1lb3V0KHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAg
cmVqZWN0U291cmNlQ2FuY2VsUHJvbWlzZShlcnJvckluQ2FuY2VsKTsKLSAgICB9KSwgNTAwKTsK
LX0pOwotCi12YXIgdGVzdDkgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRp
b246IGNhbmNlbGxpbmcgYmVmb3JlIHN0YXJ0IGZpbmlzaGVzIHNob3VsZCBwcmV2ZW50IHB1bGwo
KSBmcm9tIGJlaW5nIGNhbGxlZCcpOwotdGVzdDkuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBwdWxsOiBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ3B1bGwgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2Fs
bGVkJyk7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIFByb21pc2UuYWxsKFtycy5jYW5jZWwo
KSwgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkXSkudGhlbih0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24o
KSB7Ci0gICAgICAgIHRlc3Q5LmRvbmUoJ3B1bGwgc2hvdWxkIG5ldmVyIGhhdmUgYmVlbiBjYWxs
ZWQnKTsKLSAgICB9KSkuY2F0Y2godGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0
X3JlYWNoZWQoZSk7IH0gKSk7Ci19KTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRl
ci5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVh
ZGFibGUtc3RyZWFtLXJlYWRlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
MDJjYzhkMThjMzE2MzE1OWE1ZTYwZGUxZDZjMTVhYWJhNmJmOTEzLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDM0NCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxzY3JpcHQgc3JjPScuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Jy4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyc+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0n
cmVzb3VyY2VzL3N0cmVhbXMtdXRpbHMuanMnPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Jy4uLy4u
L3Jlc291cmNlcy9nYy5qcyc+PC9zY3JpcHQ+Ci08c2NyaXB0PgotLy8gVGhpcyBpcyB1cGRhdGVk
IHRpbGwgaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9zdHJlYW1zL2NvbW1pdC9lYzVmZmEwMzYz
MDhkOWY2MzUwZDI5NDY1NjBkNDhjZGJmMDkwOTM5Ci0KLXZhciBSZWFkYWJsZVN0cmVhbVJlYWRl
cjsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICAvLyBJdCdzIG5vdCBleHBvc2VkIGdsb2JhbGx5
LCBidXQgd2UgdGVzdCBhIGZldyBvZiBpdHMgcHJvcGVydGllcyBoZXJlLgotICAgIFJlYWRhYmxl
U3RyZWFtUmVhZGVyID0gKG5ldyBSZWFkYWJsZVN0cmVhbSgpKS5nZXRSZWFkZXIoKS5jb25zdHJ1
Y3RvcjsKLX0sICdDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBp
bmRpcmVjdGx5Jyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgewotICAgICAgICBuZXcgUmVhZGFibGVTdHJlYW1SZWFk
ZXIoJ3BvdGF0bycpOwotICAgIH0pOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigp
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHt9KTsKLSAg
ICB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcigpOwotICAgIH0pOwotfSwgJ1JlYWRhYmxl
U3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIHNob3VsZCBnZXQgYSBSZWFkYWJsZVN0cmVhbSBvYmpl
Y3QgYXMgYXJndW1lbnQnKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICB2YXIgbWV0aG9kcyA9
IFsnY2FuY2VsJywgJ2NvbnN0cnVjdG9yJywgJ3JlYWQnLCAncmVsZWFzZUxvY2snXTsKLSAgICB2
YXIgcHJvcGVydGllcyA9IG1ldGhvZHMuY29uY2F0KFsnY2xvc2VkJ10pLnNvcnQoKTsKLQotICAg
IHZhciByc1JlYWRlciA9IG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihuZXcgUmVhZGFibGVTdHJl
YW0oKSk7Ci0gICAgdmFyIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHJzUmVhZGVyKTsK
LQotICAgIGFzc2VydF9hcnJheV9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJv
dG8pLnNvcnQoKSwgcHJvcGVydGllcyk7Ci0KLSAgICBmb3IgKHZhciBtIG9mIG1ldGhvZHMpIHsK
LSAgICAgICAgdmFyIHByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihw
cm90bywgbSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocHJvcERlc2MuZW51bWVyYWJsZSwgZmFs
c2UsICdtZXRob2Qgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlJyk7Ci0gICAgICAgIGFzc2VydF9l
cXVhbHMocHJvcERlc2MuY29uZmlndXJhYmxlLCB0cnVlLCAnbWV0aG9kIHNob3VsZCBiZSBjb25m
aWd1cmFibGUnKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhwcm9wRGVzYy53cml0YWJsZSwgdHJ1
ZSwgJ21ldGhvZCBzaG91bGQgYmUgd3JpdGFibGUnKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyh0
eXBlb2YgcnNSZWFkZXJbbV0sICdmdW5jdGlvbicsICdzaG91bGQgaGF2ZSBiZSBhIG1ldGhvZCcp
OwotICAgIH0KLQotICAgIHZhciBjbG9zZWRQcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IocHJvdG8sICdjbG9zZWQnKTsKLSAgICBhc3NlcnRfZXF1YWxzKGNsb3NlZFBy
b3BEZXNjLmVudW1lcmFibGUsIGZhbHNlLCAnY2xvc2VkIHNob3VsZCBiZSBub24tZW51bWVyYWJs
ZScpOwotICAgIGFzc2VydF9lcXVhbHMoY2xvc2VkUHJvcERlc2MuY29uZmlndXJhYmxlLCB0cnVl
LCAnY2xvc2VkIHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsKLSAgICBhc3NlcnRfbm90X2VxdWFs
cyhjbG9zZWRQcm9wRGVzYy5nZXQsIHVuZGVmaW5lZCwgJ2Nsb3NlZCBzaG91bGQgaGF2ZSBhIGdl
dHRlcicpOwotICAgIGFzc2VydF9lcXVhbHMoY2xvc2VkUHJvcERlc2Muc2V0LCB1bmRlZmluZWQs
ICdjbG9zZWQgc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyJyk7Ci0KLSAgICBhc3NlcnRfZXF1YWxz
KHJzUmVhZGVyLmNhbmNlbC5sZW5ndGgsIDEsICdjYW5jZWwgaGFzIDEgcGFyYW1ldGVyJyk7Ci0g
ICAgYXNzZXJ0X25vdF9lcXVhbHMocnNSZWFkZXIuY2xvc2VkLCB1bmRlZmluZWQsICdoYXMgYSBu
b24tdW5kZWZpbmVkIGNsb3NlZCBwcm9wZXJ0eScpOwotICAgIGFzc2VydF9lcXVhbHModHlwZW9m
IHJzUmVhZGVyLmNsb3NlZC50aGVuLCAnZnVuY3Rpb24nLCAnY2xvc2VkIHByb3BlcnR5IGlzIHRo
ZW5hYmxlJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNSZWFkZXIuY29uc3RydWN0b3Is
ICdmdW5jdGlvbicsICdoYXMgYSBjb25zdHJ1Y3RvciBtZXRob2QnKTsKLSAgICBhc3NlcnRfZXF1
YWxzKHJzUmVhZGVyLmNvbnN0cnVjdG9yLmxlbmd0aCwgMSwgJ2NvbnN0cnVjdG9yIGhhcyAxIHBh
cmFtZXRlcicpOwotICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJzUmVhZGVyLnJlYWQsICdmdW5j
dGlvbicsICdoYXMgYSBnZXRSZWFkZXIgbWV0aG9kJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhyc1Jl
YWRlci5yZWFkLmxlbmd0aCwgMCwgJ3JlYWQgaGFzIG5vIHBhcmFtZXRlcnMnKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKHR5cGVvZiByc1JlYWRlci5yZWxlYXNlTG9jaywgJ2Z1bmN0aW9uJywgJ2hhcyBh
IHJlbGVhc2VMb2NrIG1ldGhvZCcpOwotICAgIGFzc2VydF9lcXVhbHMocnNSZWFkZXIucmVsZWFz
ZUxvY2subGVuZ3RoLCAwLCAncmVsZWFzZUxvY2sgaGFzIG5vIHBhcmFtZXRlcnMnKTsKLX0sICdS
ZWFkYWJsZVN0cmVhbVJlYWRlciBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlz
dCBvZiBwcm9wZXJ0aWVzJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHJzUmVhZGVy
ID0gbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSgpKTsKLQotICAg
IGFzc2VydF9lcXVhbHMocnNSZWFkZXIuY2xvc2VkLCByc1JlYWRlci5jbG9zZWQsICdjbG9zZWQg
c2hvdWxkIHJldHVybiB0aGUgc2FtZSBwcm9taXNlJyk7Ci19LCAnUmVhZGFibGVTdHJlYW1SZWFk
ZXIgY2xvc2VkIHNob3VsZCBhbHdheXMgcmV0dXJuIHRoZSBzYW1lIHByb21pc2Ugb2JqZWN0Jyk7
Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7
Ci0gICAgbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJzKTsgLy8gQ29uc3RydWN0aW5nIGRpcmVj
dGx5IHRoZSBmaXJzdCB0aW1lIHNob3VsZCBiZSBmaW5lLgotICAgIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJzKTsg
fSwgJ2NvbnN0cnVjdGluZyBkaXJlY3RseSB0aGUgc2Vjb25kIHRpbWUgc2hvdWxkIGZhaWwnKTsK
LX0sICdDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQg
ZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0IGNvbnN0cnVj
dGlvbiknKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oKTsKLSAgICBuZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIocnMpOyAvLyBDb25zdHJ1Y3Rp
bmcgZGlyZWN0bHkgc2hvdWxkIGJlIGZpbmUuCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksIGZ1bmN0aW9uKCkgeyBycy5nZXRSZWFkZXIoKTsgfSwgJ2dldFJlYWRlcigpIHNob3Vs
ZCBmYWlsJyk7Ci19LCAnR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFk
ZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVj
dCBjb25zdHJ1Y3Rpb24pJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKCk7Ci0gICAgcnMuZ2V0UmVhZGVyKCk7IC8vIGdldFJlYWRlcigpIHNo
b3VsZCBiZSBmaW5lLgotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlv
bigpIHsgbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJzKTsgfSwgJ2NvbnN0cnVjdGluZyBkaXJl
Y3RseSBzaG91bGQgZmFpbCcpOwotfSwgJ0NvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVh
ZGVyIGRpcmVjdGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQg
KHZpYSBnZXRSZWFkZXIpJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKCk7Ci0gICAgcnMuZ2V0UmVhZGVyKCk7IC8vIGdldFJlYWRlcigpIHNo
b3VsZCBiZSBmaW5lLgotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlv
bigpIHsgcnMuZ2V0UmVhZGVyKCk7IH0sICdnZXRSZWFkZXIoKSBzaG91bGQgZmFpbCcpOwotfSwg
J0dldHRpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWls
IGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBnZXRSZWFkZXIpJyk7Ci0KLXRl
c3QoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAg
ICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGMuY2xvc2UoKTsKLSAgICAgICAg
fQotICAgIH0pOwotCi0gICAgbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJzKTsgLy8gQ29uc3Ry
dWN0aW5nIGRpcmVjdGx5IHNob3VsZCBub3QgdGhyb3cuCi19LCAnQ29uc3RydWN0aW5nIGEgUmVh
ZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMg
Y2xvc2VkJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHRoZUVycm9yID0gbmV3IEVy
cm9yKCdkb25cJ3Qgc2F5IGkgZGlkblwndCB3YXJuIHlhJyk7Ci0gICAgdmFyIHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAg
IGMuZXJyb3IodGhlRXJyb3IpOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBuZXcgUmVhZGFi
bGVTdHJlYW1SZWFkZXIocnMpOyAvLyBDb25zdHJ1Y3RpbmcgZGlyZWN0bHkgc2hvdWxkIG5vdCB0
aHJvdy4KLX0sICdDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBz
aG91bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBlcnJvcmVkJyk7Ci0KLXZhciB0ZXN0MSA9IGFz
eW5jX3Rlc3QoJ1JlYWRpbmcgZnJvbSBhIHJlYWRlciBmb3IgYW4gZW1wdHkgc3RyZWFtIHdpbGwg
d2FpdCB1bnRpbCBhIGNodW5rIGlzIGF2YWlsYWJsZScpOwotdGVzdDEuc3RlcChmdW5jdGlvbigp
IHsKLSAgICB2YXIgY29udHJvbGxlcjsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
ewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgY29udHJvbGxlciA9
IGM7Ci0gICAgICAgIH0KLSAgICB9KTsKLSAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7
Ci0KLSAgICByZWFkZXIucmVhZCgpLnRoZW4odGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3Vs
dCkgewotICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdhJywg
ZG9uZTogZmFsc2UgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHRoZSBlbnF1ZXVlZCBj
aHVuaycpOwotICAgICAgICB0ZXN0MS5kb25lKCk7Ci0gICAgfSkpOwotCi0gICAgY29udHJvbGxl
ci5lbnF1ZXVlKCdhJyk7Ci19KTsKLQotdmFyIHRlc3QyID0gYXN5bmNfdGVzdCgnY2FuY2VsKCkg
b24gYSByZWFkZXIgZG9lcyBub3QgcmVsZWFzZSB0aGUgcmVhZGVyJyk7Ci10ZXN0Mi5zdGVwKGZ1
bmN0aW9uKCkgewotICAgIHZhciBjYW5jZWxDYWxsZWQgPSBmYWxzZTsKLSAgICB2YXIgcGFzc2Vk
UmVhc29uID0gbmV3IEVycm9yKCdpdCB3YXNuXCd0IHRoZSByaWdodCB0aW1lLCBzb3JyeScpOwot
ICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIGNhbmNlbDogZnVuY3Rp
b24ocmVhc29uKSB7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZShycy5sb2NrZWQsICd0aGUgc3Ry
ZWFtIHNob3VsZCBzdGlsbCBiZSBsb2NrZWQnKTsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3Mo
bmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgcnMuZ2V0UmVhZGVyKCk7IH0sICdzaG91bGQg
bm90IGJlIGFibGUgdG8gZ2V0IGFub3RoZXIgcmVhZGVyJyk7Ci0gICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHJlYXNvbiwgcGFzc2VkUmVhc29uLCAndGhlIGNhbmNlbGxhdGlvbiByZWFzb24gaXMg
cGFzc2VkIHRocm91Z2ggdG8gdGhlIHVuZGVybHlpbmcgc291cmNlJyk7Ci0gICAgICAgICAgICBj
YW5jZWxDYWxsZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICB2YXIgcmVhZGVy
ID0gcnMuZ2V0UmVhZGVyKCk7Ci0gICAgcmVhZGVyLmNhbmNlbChwYXNzZWRSZWFzb24pLnRoZW4o
Ci0gICAgICAgIHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGFzc2Vy
dF90cnVlKGNhbmNlbENhbGxlZCk7Ci0gICAgICAgICAgICB0ZXN0Mi5kb25lKCdyZWFkZXIuY2Fu
Y2VsKCkgc2hvdWxkIGZ1bGZpbGwnKTsKLSAgICAgICAgfSksCi0gICAgICAgIHRlc3QyLnN0ZXBf
ZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNoZWQoJ3JlYWRlci5jYW5jZWwoKSBzaG91
bGQgbm90IHJlamVjdCcpOyB9KQotICAgICk7Ci19KTsKLQotdmFyIHRlc3QzID0gYXN5bmNfdGVz
dCgnY2xvc2VkIHNob3VsZCBiZSBmdWxmaWxsZWQgYWZ0ZXIgc3RyZWFtIGlzIGNsb3NlZCAoLmNs
b3NlZCBhY2Nlc3MgYmVmb3JlIGFjcXVpcmluZyknKTsKLXRlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7
Ci0gICAgdmFyIGNvbnRyb2xsZXI7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
LSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBj
OwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7
Ci0gICAgcmVhZGVyLmNsb3NlZC50aGVuKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAg
ICAgICAgdGVzdDMuZG9uZSgncmVhZGVyIGNsb3NlZCBzaG91bGQgYmUgZnVsZmlsbGVkJyk7Ci0g
ICAgfSkpOwotCi0gICAgY29udHJvbGxlci5jbG9zZSgpOwotfSk7Ci0KLXZhciB0ZXN0NCA9IGFz
eW5jX3Rlc3QoJ2Nsb3NlZCBzaG91bGQgYmUgcmVqZWN0ZWQgYWZ0ZXIgcmVhZGVyIHJlbGVhc2Vz
IGl0cyBsb2NrIChtdWx0aXBsZSBzdHJlYW0gbG9ja3MpJyk7Ci10ZXN0NC5zdGVwKGZ1bmN0aW9u
KCkgewotICAgIHZhciBwcm9taXNlQ2FsbHMgPSAwOwotICAgIHZhciBjb250cm9sbGVyOwotICAg
IHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihj
KSB7Ci0gICAgICAgICAgICBjb250cm9sbGVyID0gYzsKLSAgICAgICAgfQotICAgIH0pOwotCi0g
ICAgdmFyIHJlYWRlcjEgPSBycy5nZXRSZWFkZXIoKTsKLQotICAgIHJlYWRlcjEucmVsZWFzZUxv
Y2soKTsKLQotICAgIHZhciByZWFkZXIyID0gcnMuZ2V0UmVhZGVyKCk7Ci0gICAgY29udHJvbGxl
ci5jbG9zZSgpOwotCi0gICAgcmVhZGVyMS5jbG9zZWQuY2F0Y2godGVzdDQuc3RlcF9mdW5jKGZ1
bmN0aW9uKGUpIHsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0
aW9uKCkgeyB0aHJvdyBlOyB9LCAncmVhZGVyMSBjbG9zZWQgc2hvdWxkIGJlIHJlamVjdGVkIHdp
dGggYSBUeXBlRXJyb3InKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscygrK3Byb21pc2VDYWxscywg
MSk7Ci0gICAgfSkpOwotCi0gICAgcmVhZGVyMi5jbG9zZWQudGhlbih0ZXN0NC5zdGVwX2Z1bmMo
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoKytwcm9taXNlQ2FsbHMsIDIpOwot
ICAgICAgICB0ZXN0NC5kb25lKCdyZWFkZXIyIGNsb3NlZCBzaG91bGQgYmUgZnVsZmlsbGVkJyk7
Ci0gICAgfSkpOwotfSk7Ci0KLXZhciB0ZXN0NSA9IGFzeW5jX3Rlc3QoJ011bHRpcGxlIHJlYWRl
cnMgY2FuIGFjY2VzcyB0aGUgc3RyZWFtIGluIHNlcXVlbmNlJyk7Ci10ZXN0NS5zdGVwKGZ1bmN0
aW9uKCkgewotICAgIHZhciByZWFkQ291bnQgPSAwOwotICAgIHZhciBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBjLmVu
cXVldWUoJ2EnKTsKLSAgICAgICAgICAgIGMuZW5xdWV1ZSgnYicpOwotICAgICAgICAgICAgYy5j
bG9zZSgpOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICB2YXIgcmVhZGVyMSA9IHJzLmdldFJl
YWRlcigpOwotICAgIHJlYWRlcjEucmVhZCgpLnRoZW4odGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9u
KHIpIHsKLSAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25l
OiBmYWxzZSB9LCAncmVhZGluZyB0aGUgZmlyc3QgY2h1bmsgZnJvbSByZWFkZXIxIHdvcmtzJyk7
Ci0gICAgICAgICsrcmVhZENvdW50OwotICAgIH0pKTsKLSAgICByZWFkZXIxLnJlbGVhc2VMb2Nr
KCk7Ci0KLSAgICB2YXIgcmVhZGVyMiA9IHJzLmdldFJlYWRlcigpOwotICAgIHJlYWRlcjIucmVh
ZCgpLnRoZW4odGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKLSAgICAgICAgYXNzZXJ0X29i
amVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LCAncmVhZGluZyB0aGUg
c2Vjb25kIGNodW5rIGZyb20gcmVhZGVyMiB3b3JrcycpOwotICAgICAgICBhc3NlcnRfZXF1YWxz
KCsrcmVhZENvdW50LCAyKTsKLSAgICAgICAgdGVzdDUuZG9uZSgpOwotICAgIH0pKTsKLSAgICBy
ZWFkZXIyLnJlbGVhc2VMb2NrKCk7Ci19KTsKLQotdmFyIHRlc3Q2ID0gYXN5bmNfdGVzdCgnQ2Fu
bm90IHVzZSBhbiBhbHJlYWR5LXJlbGVhc2VkIHJlYWRlciB0byB1bmxvY2sgYSBzdHJlYW0gYWdh
aW4nKTsKLXRlc3Q2LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGMuZW5x
dWV1ZSgnYScpOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICB2YXIgcmVhZGVyMSA9IHJzLmdl
dFJlYWRlcigpOwotICAgIHJlYWRlcjEucmVsZWFzZUxvY2soKTsKLQotICAgIHZhciByZWFkZXIy
ID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgICByZWFkZXIxLnJlbGVhc2VMb2NrKCk7Ci0gICAgcmVh
ZGVyMi5yZWFkKCkudGhlbih0ZXN0Ni5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAg
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxz
ZSB9LCAncmVhZCgpIHNob3VsZCBzdGlsbCB3b3JrIG9uIHJlYWRlcjIgZXZlbiBhZnRlciByZWFk
ZXIxIGlzIHJlbGVhc2VkJyk7Ci0gICAgICAgIHRlc3Q2LmRvbmUoKTsKLSAgICB9KSk7Ci19KTsK
LQotdmFyIHRlc3Q3ID0gYXN5bmNfdGVzdCgnY2FuY2VsKCkgb24gYSByZWxlYXNlZCByZWFkZXIg
aXMgYSBuby1vcCBhbmQgZG9lcyBub3QgcGFzcyB0aHJvdWdoJyk7Ci10ZXN0Ny5zdGVwKGZ1bmN0
aW9uKCkgewotICAgIHZhciBwcm9taXNlQ2FsbHMgPSAwOwotICAgIHZhciBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBj
LmVucXVldWUoJ2EnKTsKLSAgICAgICAgfSwKLSAgICAgICAgY2FuY2VsOiBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ3VuZGVybHlpbmcgc291cmNlIGNhbmNlbCBz
aG91bGQgbm90IGJlIGNhbGxlZCcpOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICB2YXIgcmVh
ZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0gICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7Ci0gICAgcmVh
ZGVyLmNhbmNlbCgpLnRoZW4odGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKHYpIHsKLSAgICAgICAg
YXNzZXJ0X3VucmVhY2hlZCgnY2FuY2VsIHByb21pc2Ugc2hvdWxkIG5vdCBmdWxmaWxsJyk7Ci0g
ICAgfSkpLmNhdGNoKHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAgIGFzc2Vy
dF9lcXVhbHMoKytwcm9taXNlQ2FsbHMsIDIpOwotICAgICAgICB0ZXN0Ny5kb25lKCk7Ci0gICAg
fSkpOwotCi0gICAgdmFyIHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKLSAgICByZWFkZXIyLnJl
YWQoKS50aGVuKHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2EgbmV3IHJlYWRl
ciBzaG91bGQgYmUgYWJsZSB0byByZWFkIGEgY2h1bmsnKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFs
cygrK3Byb21pc2VDYWxscywgMSk7Ci0gICAgfSkpOwotfSk7Ci0KLXZhciB0ZXN0OCA9IGFzeW5j
X3Rlc3QoJ0dldHRpbmcgYSBzZWNvbmQgcmVhZGVyIGFmdGVyIGVycm9yaW5nIHRoZSBzdHJlYW0g
c2hvdWxkIHN1Y2NlZWQnKTsKLXRlc3Q4LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGNvbnRy
b2xsZXI7Ci0gICAgdmFyIHJlY2VpdmVkRXJyb3JzID0gMDsKLSAgICB2YXIgdGhlRXJyb3IgPSBu
ZXcgRXJyb3IoJ2JhZCcpOwotICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAg
ICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBjb250cm9sbGVyID0gYzsKLSAg
ICAgICAgfQotICAgIH0pOwotCi0gICAgdmFyIHJlYWRlcjEgPSBycy5nZXRSZWFkZXIoKTsKLQot
ICAgIHJlYWRlcjEuY2xvc2VkLmNhdGNoKHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0g
ICAgICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICd0aGUgZmlyc3QgcmVhZGVyIGNsb3Nl
ZCBnZXR0ZXIgc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdGhlIGVycm9yJyk7Ci0gICAgICAgICsr
cmVjZWl2ZWRFcnJvcnM7Ci0gICAgfSkpOwotCi0gICAgcmVhZGVyMS5yZWFkKCkuY2F0Y2godGVz
dDguc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVF
cnJvciwgJ3RoZSBmaXJzdCByZWFkZXIgcmVhZCgpIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHRo
ZSBlcnJvcicpOwotICAgICAgICArK3JlY2VpdmVkRXJyb3JzOwotICAgIH0pKTsKLQotICAgIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgcnMuZ2V0UmVhZGVyKCk7
IH0sICd0cnlpbmcgdG8gZ2V0IGFub3RoZXIgcmVhZGVyIGJlZm9yZSBlcnJvcmluZyBzaG91bGQg
dGhyb3cnKTsKLQotICAgIGNvbnRyb2xsZXIuZXJyb3IodGhlRXJyb3IpOwotCi0gICAgcmVhZGVy
MS5yZWxlYXNlTG9jaygpOwotCi0gICAgdmFyIHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKLQot
ICAgIHJlYWRlcjIuY2xvc2VkLmNhdGNoKHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0g
ICAgICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICd0aGUgc2Vjb25kIHJlYWRlciBjbG9z
ZWQgZ2V0dGVyIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHRoZSBlcnJvcicpOwotICAgICAgICAr
K3JlY2VpdmVkRXJyb3JzOwotICAgIH0pKTsKLQotICAgIHJlYWRlcjIucmVhZCgpLmNhdGNoKHRl
c3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoZSwgdGhl
RXJyb3IsICd0aGUgdGhpcmQgcmVhZGVyIHJlYWQoKSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0
aGUgZXJyb3InKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscygrK3JlY2VpdmVkRXJyb3JzLCA0KTsK
LSAgICAgICAgdGVzdDguZG9uZSgpOwotICAgIH0pKTsKLX0pOwotCi10ZXN0KGZ1bmN0aW9uKCkg
ewotICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7fSk7Ci0KLSAgICBycy5nZXRSZWFk
ZXIoKTsKLSAgICB3aW5kb3cuZ2MoKTsKLQotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJv
cigpLCBmdW5jdGlvbigpIHsgcnMuZ2V0UmVhZGVyKCk7IH0sICdvbGQgcmVhZGVyIHNob3VsZCBz
dGlsbCBiZSBsb2NraW5nIHRoZSBzdHJlYW0gZXZlbiBhZnRlciBnYXJiYWdlIGNvbGxlY3Rpb24n
KTsKLX0sICdHYXJiYWdlLWNvbGxlY3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBzaG91bGQg
bm90IHVubG9jayBpdHMgc3RyZWFtJyk7Ci0KLXZhciB0ZXN0OSA9IGFzeW5jX3Rlc3QoJ1JlYWRh
YmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNlIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHVu
ZGVmaW5lZCBpZiB0aGF0IGlzIHRoZSBlcnJvcicpOwotdGVzdDkuc3RlcChmdW5jdGlvbigpIHsK
LSAgICB2YXIgY29udHJvbGxlcjsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewot
ICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgY29udHJvbGxlciA9IGM7
Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKHRl
c3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgiY2xv
c2VkIHByb21pc2Ugc2hvdWxkIG5vdCBiZSByZXNvbHZlZCB3aGVuIHN0cmVhbSBpcyBlcnJvcmVk
Iik7Ci0gICAgfSksIHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbihlcnIpIHsKLSAgICAgICAgYXNz
ZXJ0X2VxdWFscyhlcnIsIHVuZGVmaW5lZCwgJ3Bhc3NlZCBlcnJvciBzaG91bGQgYmUgdW5kZWZp
bmVkIGFzIGl0IHdhcycpOwotICAgICAgICB0ZXN0OS5kb25lKCk7Ci0gICAgfSkpOwotCi0gICAg
Y29udHJvbGxlci5lcnJvcigpOwotfSk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZWUu
aHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRh
YmxlLXN0cmVhbS10ZWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTIwZGQz
NDUxZTQ4ZDgzOGQ0MTllMGUzZGU5YTcxMmE0ZWI5NmU0Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwzMDYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08c2NyaXB0IHNyYz0nLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzJz48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPScuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMnPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9J3Jlc291cmNl
cy9zdHJlYW1zLXV0aWxzLmpzJz48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0vLyBUaGlzIGlzIHVwZGF0
ZWQgdGlsbCBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL3N0cmVhbXMvY29tbWl0L2VjNWZmYTAz
NjMwOGQ5ZjYzNTBkMjk0NjU2MGQ0OGNkYmYwOTA5MzkKLQotdGVzdChmdW5jdGlvbigpIHsKLSAg
ICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLQotICAgIHZhciByZXN1bHQgPSBycy50
ZWUoKTsKLQotICAgIGFzc2VydF90cnVlKEFycmF5LmlzQXJyYXkocmVzdWx0KSwgJ3JldHVybiB2
YWx1ZSBzaG91bGQgYmUgYW4gYXJyYXknKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5sZW5n
dGgsIDIsICdhcnJheSBzaG91bGQgaGF2ZSBsZW5ndGggMicpOwotICAgIGFzc2VydF9lcXVhbHMo
cmVzdWx0WzBdLmNvbnN0cnVjdG9yLCBSZWFkYWJsZVN0cmVhbSwgJzB0aCBlbGVtZW50IHNob3Vs
ZCBiZSBhIFJlYWRhYmxlU3RyZWFtJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbMV0uY29u
c3RydWN0b3IsIFJlYWRhYmxlU3RyZWFtLCAnMXN0IGVsZW1lbnQgc2hvdWxkIGJlIGEgUmVhZGFi
bGVTdHJlYW0nKTsKLX0sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHJzLnRlZSgpIHJldHVybnMg
YW4gYXJyYXkgb2YgdHdvIFJlYWRhYmxlU3RyZWFtcycpOwotCi12YXIgdGVzdDEgPSBhc3luY190
ZXN0KCdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgb25lIGJy
YW5jaCB0byB0aGUgZW5kIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBvdGhlcicpOwotdGVzdDEuc3Rl
cChmdW5jdGlvbigpIHsKLSAgICB2YXIgcmVhZENhbGxzID0gMDsKLSAgICB2YXIgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAg
ICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICAgICAgICBjLmVucXVldWUoJ2InKTsKLSAgICAgICAg
ICAgIGMuY2xvc2UoKTsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgdmFyIGJyYW5jaCA9IHJz
LnRlZSgpOwotICAgIHZhciBicmFuY2gxID0gYnJhbmNoWzBdOwotICAgIHZhciBicmFuY2gyID0g
YnJhbmNoWzFdOwotICAgIHZhciByZWFkZXIxID0gYnJhbmNoMS5nZXRSZWFkZXIoKTsKLSAgICB2
YXIgcmVhZGVyMiA9IGJyYW5jaDIuZ2V0UmVhZGVyKCk7Ci0KLSAgICByZWFkZXIxLmNsb3NlZC50
aGVuKHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhy
ZWFkQ2FsbHMsIDQpOwotICAgICAgICB0ZXN0MS5kb25lKCk7Ci0gICAgfSkpLmNhdGNoKHRlc3Qx
LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0pKTsKLSAgICBy
ZWFkZXIyLmNsb3NlZC50aGVuKHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3Vu
cmVhY2hlZCgnYnJhbmNoMiBzaG91bGQgbm90IGJlIGNsb3NlZCcpOyB9KSk7Ci0KLSAgICByZWFk
ZXIxLnJlYWQoKS50aGVuKHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAgIGFz
c2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0
IGNodW5rIGZyb20gYnJhbmNoMSBzaG91bGQgYmUgY29ycmVjdCcpOwotICAgICAgICArK3JlYWRD
YWxsczsKLSAgICB9KSk7Ci0gICAgcmVhZGVyMS5yZWFkKCkudGhlbih0ZXN0MS5zdGVwX2Z1bmMo
ZnVuY3Rpb24ocikgewotICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAn
YicsIGRvbmU6IGZhbHNlIH0sICdzZWNvbmQgY2h1bmsgZnJvbSBicmFuY2gxIHNob3VsZCBiZSBj
b3JyZWN0Jyk7Ci0gICAgICAgICsrcmVhZENhbGxzOwotICAgIH0pKTsKLSAgICByZWFkZXIxLnJl
YWQoKS50aGVuKHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAndGhpcmQg
cmVhZCgpIGZyb20gYnJhbmNoMSBzaG91bGQgYmUgZG9uZScpOwotICAgICAgICArK3JlYWRDYWxs
czsKLSAgICB9KSk7Ci0KLSAgICByZWFkZXIyLnJlYWQoKS50aGVuKHRlc3QxLnN0ZXBfZnVuYyhm
dW5jdGlvbihyKSB7Ci0gICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdh
JywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IGNodW5rIGZyb20gYnJhbmNoMiBzaG91bGQgYmUgY29y
cmVjdCcpOwotICAgICAgICArK3JlYWRDYWxsczsKLSAgICB9KSk7Ci19KTsKLQotdmFyIHRlc3Qy
ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiB2YWx1ZXMgc2hvdWxkIGJlIGVx
dWFsIGFjcm9zcyBlYWNoIGJyYW5jaCcpOwotdGVzdDIuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2
YXIgdGhlT2JqZWN0ID0geyB0aGU6ICd0ZXN0IG9iamVjdCcgfTsKLSAgICB2YXIgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAg
ICAgYy5lbnF1ZXVlKHRoZU9iamVjdCk7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHZhciBi
cmFuY2ggPSBycy50ZWUoKTsKLSAgICB2YXIgYnJhbmNoMSA9IGJyYW5jaFswXTsKLSAgICB2YXIg
YnJhbmNoMiA9IGJyYW5jaFsxXTsKLSAgICB2YXIgcmVhZGVyMSA9IGJyYW5jaDEuZ2V0UmVhZGVy
KCk7Ci0gICAgdmFyIHJlYWRlcjIgPSBicmFuY2gyLmdldFJlYWRlcigpOwotCi0gICAgUHJvbWlz
ZS5hbGwoW3JlYWRlcjEucmVhZCgpLCByZWFkZXIyLnJlYWQoKV0pLnRoZW4odGVzdDIuc3RlcF9m
dW5jKGZ1bmN0aW9uKHZhbHVlcykgewotICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyh2YWx1
ZXNbMF0sIHZhbHVlc1sxXSwgJ3RoZSB2YWx1ZXMgc2hvdWxkIGJlIGVxdWFsJyk7Ci0gICAgICAg
IHRlc3QyLmRvbmUoKTsKLSAgICB9KSk7Ci19KTsKLQotdmFyIHRlc3QzID0gYXN5bmNfdGVzdCgn
UmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcnMgaW4gdGhlIHNvdXJjZSBzaG91bGQgcHJvcGFn
YXRlIHRvIGJvdGggYnJhbmNoZXMnKTsKLXRlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFy
IGNsb3NlZFJlamVjdHMgPSAwOwotICAgIHZhciByZWFkQ2FsbHMgPSAwOwotICAgIHZhciByZWFk
UmVqZWN0cyA9IDA7Ci0gICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdib28hJyk7Ci0gICAg
dmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMp
IHsKLSAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAgICAgICAgYy5lbnF1ZXVlKCdi
Jyk7Ci0gICAgICAgIH0sCi0gICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
dGhyb3cgdGhlRXJyb3I7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHZhciBicmFuY2ggPSBy
cy50ZWUoKTsKLSAgICB2YXIgYnJhbmNoMSA9IGJyYW5jaFswXTsKLSAgICB2YXIgYnJhbmNoMiA9
IGJyYW5jaFsxXTsKLSAgICB2YXIgcmVhZGVyMSA9IGJyYW5jaDEuZ2V0UmVhZGVyKCk7Ci0gICAg
dmFyIHJlYWRlcjIgPSBicmFuY2gyLmdldFJlYWRlcigpOwotCi0gICAgcmVhZGVyMS5sYWJlbCA9
ICdyZWFkZXIxJzsKLSAgICByZWFkZXIyLmxhYmVsID0gJ3JlYWRlcjInOwotCi0gICAgcmVhZGVy
MS5jbG9zZWQuY2F0Y2godGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgKytj
bG9zZWRSZWplY3RzOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnYnJhbmNo
MSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7Ci0gICAgfSkp
OwotICAgIHJlYWRlcjIuY2xvc2VkLmNhdGNoKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7
Ci0gICAgICAgICsrY2xvc2VkUmVqZWN0czsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVF
cnJvciwgJ2JyYW5jaDIgY2xvc2VkIHByb21pc2Ugc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJv
cicpOwotICAgIH0pKTsKLQotICAgIHJlYWRlcjEucmVhZCgpLnRoZW4odGVzdDMuc3RlcF9mdW5j
KGZ1bmN0aW9uKHIpIHsKLSAgICAgICAgKytyZWFkQ2FsbHM7Ci0gICAgICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3Nob3VsZCBiZSBhYmxl
IHRvIHJlYWQgdGhlIGZpcnN0IGNodW5rIGluIGJyYW5jaDEnKTsKLSAgICB9KSk7Ci0KLSAgICBy
ZWFkZXIxLnJlYWQoKS50aGVuKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAg
ICsrcmVhZENhbGxzOwotICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAn
YicsIGRvbmU6IGZhbHNlIH0sICdzaG91bGQgYmUgYWJsZSB0byByZWFkIHRoZSBzZWNvbmQgY2h1
bmsgaW4gYnJhbmNoMScpOwotCi0gICAgICAgIHJldHVybiByZWFkZXIyLnJlYWQoKS50aGVuKAot
ICAgICAgICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVk
KCdvbmNlIHRoZSByb290IHN0cmVhbSBoYXMgZXJyb3JlZCwgeW91IHNob3VsZCBub3QgYmUgYWJs
ZSB0byByZWFkIGZyb20gYnJhbmNoMicpOyB9KSwKLSAgICAgICAgICAgIHRlc3QzLnN0ZXBfZnVu
YyhmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgKytyZWFkUmVqZWN0czsKLSAgICAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnYnJhbmNoMiByZWFkKCkgcHJvbWlz
ZSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7Ci0gICAgICAgICAgICB9KSk7Ci0gICAg
fSkpLnRoZW4odGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1cm4gcmVh
ZGVyMS5yZWFkKCkudGhlbigKLSAgICAgICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigp
IHsgYXNzZXJ0X3VucmVhY2hlZCgnb25jZSB0aGUgcm9vdCBzdHJlYW0gaGFzIGVycm9yZWQsIHlv
dSBzaG91bGQgbm90IGJlIGFibGUgdG8gcmVhZCBmcm9tIGJyYW5jaDEgZWl0aGVyJyk7IH0pLAot
ICAgICAgICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKGNsb3NlZFJlamVjdHMsIDIpOwotICAgICAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMocmVhZENhbGxzLCAyKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKCsr
cmVhZFJlamVjdHMsIDIpOwotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJy
b3IsICdicmFuY2gxIHJlYWQoKSBwcm9taXNlIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3In
KTsKLSAgICAgICAgICAgICAgICB0ZXN0My5kb25lKCk7Ci0gICAgICAgICAgICB9KQotICAgICAg
ICApOwotICAgIH0pKS5jYXRjaCh0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRf
dW5yZWFjaGVkKGUpOyB9KSk7Ci19KTsKLQotdmFyIHRlc3Q0ID0gYXN5bmNfdGVzdCgnUmVhZGFi
bGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYnJhbmNoMSBzaG91bGQgbm90IGltcGFjdCBicmFu
Y2gyJyk7Ci10ZXN0NC5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciBicmFuY2gxUmVhZCA9IGZh
bHNlOwotICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBm
dW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAgICAgICAgIGMu
ZW5xdWV1ZSgnYicpOwotICAgICAgICAgICAgYy5jbG9zZSgpOwotICAgICAgICB9Ci0gICAgfSk7
Ci0KLSAgICB2YXIgYnJhbmNoID0gcnMudGVlKCk7Ci0gICAgdmFyIGJyYW5jaDEgPSBicmFuY2hb
MF07Ci0gICAgdmFyIGJyYW5jaDIgPSBicmFuY2hbMV07Ci0gICAgYnJhbmNoMS5jYW5jZWwoKTsK
LQotICAgIHJlYWRhYmxlU3RyZWFtVG9BcnJheShicmFuY2gxKS50aGVuKHRlc3Q0LnN0ZXBfZnVu
YyhmdW5jdGlvbihjaHVua3MpIHsKLSAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3Ms
IFtdLCAnYnJhbmNoMSBzaG91bGQgaGF2ZSBubyBjaHVua3MnKTsKLSAgICAgICAgYnJhbmNoMVJl
YWQgPSB0cnVlOwotICAgIH0pKTsKLQotICAgIHJlYWRhYmxlU3RyZWFtVG9BcnJheShicmFuY2gy
KS50aGVuKHRlc3Q0LnN0ZXBfZnVuYyhmdW5jdGlvbihjaHVua3MpIHsKLSAgICAgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhjaHVua3MsIFsnYScsICdiJ10sICdicmFuY2gyIHNob3VsZCBoYXZlIHR3
byBjaHVua3MnKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoYnJhbmNoMVJlYWQpOwotICAgICAgICB0
ZXN0NC5kb25lKCk7Ci0gICAgfSkpOwotfSk7Ci0KLXZhciB0ZXN0NSA9IGFzeW5jX3Rlc3QoJ1Jl
YWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJyYW5jaDIgc2hvdWxkIG5vdCBpbXBhY3Qg
YnJhbmNoMScpOwotdGVzdDUuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgYnJhbmNoMlJlYWQg
PSBmYWxzZTsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFy
dDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICAgICAg
ICBjLmVucXVldWUoJ2InKTsKLSAgICAgICAgICAgIGMuY2xvc2UoKTsKLSAgICAgICAgfQotICAg
IH0pOwotCi0gICAgdmFyIGJyYW5jaCA9IHJzLnRlZSgpOwotICAgIHZhciBicmFuY2gxID0gYnJh
bmNoWzBdOwotICAgIHZhciBicmFuY2gyID0gYnJhbmNoWzFdOwotICAgIGJyYW5jaDIuY2FuY2Vs
KCk7Ci0KLSAgICByZWFkYWJsZVN0cmVhbVRvQXJyYXkoYnJhbmNoMSkudGhlbih0ZXN0NS5zdGVw
X2Z1bmMoZnVuY3Rpb24oY2h1bmtzKSB7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1
bmtzLCBbJ2EnLCAnYiddLCAnYnJhbmNoMSBzaG91bGQgaGF2ZSB0d28gY2h1bmtzJyk7Ci0gICAg
ICAgIGFzc2VydF90cnVlKGJyYW5jaDJSZWFkKTsKLSAgICAgICAgdGVzdDUuZG9uZSgpOwotICAg
IH0pKTsKLSAgICByZWFkYWJsZVN0cmVhbVRvQXJyYXkoYnJhbmNoMikudGhlbih0ZXN0NS5zdGVw
X2Z1bmMoZnVuY3Rpb24oY2h1bmtzKSB7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1
bmtzLCBbXSwgJ2JyYW5jaDIgc2hvdWxkIGhhdmUgbm8gY2h1bmtzJyk7Ci0gICAgICAgIGJyYW5j
aDJSZWFkID0gdHJ1ZTsKLSAgICB9KSk7Ci19KTsKLQotdmFyIHRlc3Q2ID0gYXN5bmNfdGVzdCgn
UmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYm90aCBicmFuY2hlcyBzaG91bGQgYWdn
cmVnYXRlIHRoZSBjYW5jZWwgcmVhc29ucyBpbnRvIGFuIGFycmF5Jyk7Ci10ZXN0Ni5zdGVwKGZ1
bmN0aW9uKCkgewotICAgIHZhciByZWFzb24xID0gbmV3IEVycm9yKCdXZVwncmUgd2FudGVkIG1l
bi4nKTsKLSAgICB2YXIgcmVhc29uMiA9IG5ldyBFcnJvcignSSBoYXZlIHRoZSBkZWF0aCBzZW50
ZW5jZSBvbiB0d2VsdmUgc3lzdGVtcy4nKTsKLQotICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7Ci0gICAgICAgIGNhbmNlbDogZnVuY3Rpb24ocmVhc29uKSB7Ci0gICAgICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHJlYXNvbiwgW3JlYXNvbjEsIHJlYXNvbjJdLCAndGhlIGNhbmNl
bCByZWFzb24gc2hvdWxkIGJlIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhvc2UgZnJvbSB0aGUgYnJh
bmNoZXMnKTsKLSAgICAgICAgICAgIHRlc3Q2LmRvbmUoKTsKLSAgICAgICAgfQotICAgIH0pOwot
Ci0gICAgdmFyIGJyYW5jaCA9IHJzLnRlZSgpOwotICAgIHZhciBicmFuY2gxID0gYnJhbmNoWzBd
OwotICAgIHZhciBicmFuY2gyID0gYnJhbmNoWzFdOwotICAgIGJyYW5jaDEuY2FuY2VsKHJlYXNv
bjEpOwotICAgIGJyYW5jaDIuY2FuY2VsKHJlYXNvbjIpOwotfSk7Ci0KLXZhciB0ZXN0NyA9IGFz
eW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogZmFpbGluZyB0byBjYW5jZWwgdGhlIG9y
aWdpbmFsIHN0cmVhbSBzaG91bGQgY2F1c2UgY2FuY2VsKCkgdG8gcmVqZWN0IG9uIGJyYW5jaGVz
Jyk7Ci10ZXN0Ny5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciBjYW5jZWxSZWplY3RlZCA9IGZh
bHNlOwotICAgIHZhciB0aGVFcnJvciA9IG5ldyBFcnJvcignSVwnbGwgYmUgY2FyZWZ1bC4nKTsK
LSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBjYW5jZWw6IGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgdGhyb3cgdGhlRXJyb3I7Ci0gICAgICAgIH0KLSAgICB9KTsK
LQotICAgIHZhciBicmFuY2ggPSBycy50ZWUoKTsKLSAgICB2YXIgYnJhbmNoMSA9IGJyYW5jaFsw
XTsKLSAgICB2YXIgYnJhbmNoMiA9IGJyYW5jaFsxXTsKLSAgICBicmFuY2gxLmNhbmNlbCgpLmNh
dGNoKHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMo
ZSwgdGhlRXJyb3IsICdicmFuY2gxLmNhbmNlbCgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJy
b3InKTsKLSAgICAgICAgY2FuY2VsUmVqZWN0ZWQgPSB0cnVlOwotICAgIH0pKTsKLSAgICBicmFu
Y2gyLmNhbmNlbCgpLmNhdGNoKHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAg
IGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdicmFuY2gyLmNhbmNlbCgpIHNob3VsZCByZWpl
Y3Qgd2l0aCB0aGUgZXJyb3InKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoY2FuY2VsUmVqZWN0ZWQp
OwotICAgICAgICB0ZXN0Ny5kb25lKCk7Ci0gICAgfSkpOwotfSk7Ci0KLXZhciB0ZXN0OCA9IGFz
eW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogY2xvc2luZyB0aGUgb3JpZ2luYWwgc2hv
dWxkIGltbWVkaWF0ZWx5IGNsb3NlIHRoZSBicmFuY2hlcycpOwotdGVzdDguc3RlcChmdW5jdGlv
bigpIHsKLSAgICB2YXIgcmVhZGVyMUNsb3NlZCA9IGZhbHNlOwotICAgIHZhciBjb250cm9sbGVy
OwotICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5j
dGlvbihjKSB7Ci0gICAgICAgICAgICBjb250cm9sbGVyID0gYzsKLSAgICAgICAgfQotICAgIH0p
OwotCi0gICAgdmFyIGJyYW5jaCA9IHJzLnRlZSgpOwotICAgIHZhciBicmFuY2gxID0gYnJhbmNo
WzBdOwotICAgIHZhciBicmFuY2gyID0gYnJhbmNoWzFdOwotICAgIHZhciByZWFkZXIxID0gYnJh
bmNoMS5nZXRSZWFkZXIoKTsKLSAgICB2YXIgcmVhZGVyMiA9IGJyYW5jaDIuZ2V0UmVhZGVyKCk7
Ci0KLSAgICByZWFkZXIxLmNsb3NlZC50aGVuKHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsK
LSAgICAgICAgcmVhZGVyMUNsb3NlZCA9IHRydWU7IC8vYnJhbmNoMSBzaG91bGQgYmUgY2xvc2Vk
Ci0gICAgfSkpLmNhdGNoKHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF91bnJl
YWNoZWQoZSk7IH0pKTsKLSAgICByZWFkZXIyLmNsb3NlZC50aGVuKHRlc3Q4LnN0ZXBfZnVuYyhm
dW5jdGlvbigpIHsKLSAgICAgICAgYXNzZXJ0X3RydWUocmVhZGVyMUNsb3NlZCk7Ci0gICAgICAg
IHRlc3Q4LmRvbmUoJ2JyYW5jaDIgc2hvdWxkIGJlIGNsb3NlZCcpOwotICAgIH0pKS5jYXRjaCh0
ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9KSk7Ci0K
LSAgICBjb250cm9sbGVyLmNsb3NlKCk7Ci19KTsKLQotdmFyIHRlc3Q5ID0gYXN5bmNfdGVzdCgn
UmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcmluZyB0aGUgb3JpZ2luYWwgc2hvdWxkIGltbWVk
aWF0ZWx5IGVycm9yIHRoZSBicmFuY2hlcycpOwotdGVzdDkuc3RlcChmdW5jdGlvbigpIHsKLSAg
ICB2YXIgcmVhZGVyMVJlamVjdGVkID0gZmFsc2U7Ci0gICAgdmFyIGNvbnRyb2xsZXI7Ci0gICAg
dmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQoYykgewotICAgICAg
ICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHZhciBicmFu
Y2ggPSBycy50ZWUoKTsKLSAgICB2YXIgYnJhbmNoMSA9IGJyYW5jaFswXTsKLSAgICB2YXIgYnJh
bmNoMiA9IGJyYW5jaFsxXTsKLSAgICB2YXIgcmVhZGVyMSA9IGJyYW5jaDEuZ2V0UmVhZGVyKCk7
Ci0gICAgdmFyIHJlYWRlcjIgPSBicmFuY2gyLmdldFJlYWRlcigpOwotCi0gICAgdmFyIHRoZUVy
cm9yID0gbmV3IEVycm9yKCdib28hJyk7Ci0KLSAgICByZWFkZXIxLmNsb3NlZC50aGVuKAotICAg
ICAgICB0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ2JyYW5j
aDEgc2hvdWxkIG5vdCBiZSBjbG9zZWQnKTsgfSksCi0gICAgICAgIHRlc3Q5LnN0ZXBfZnVuYyhm
dW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnYnJh
bmNoMSBzaG91bGQgYmUgZXJyb3JlZCB3aXRoIHRoZSBlcnJvcicpOwotICAgICAgICAgICAgcmVh
ZGVyMVJlamVjdGVkID0gdHJ1ZTsKLSAgICAgICAgfSkKLSAgICApOwotICAgIHJlYWRlcjIuY2xv
c2VkLnRoZW4oCi0gICAgICAgIHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3Vu
cmVhY2hlZCgnYnJhbmNoMiBzaG91bGQgbm90IGJlIGNsb3NlZCcpOyB9KSwKLSAgICAgICAgdGVz
dDkuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZSwg
dGhlRXJyb3IsICdicmFuY2gyIHNob3VsZCBiZSBlcnJvcmVkIHdpdGggdGhlIGVycm9yJyk7Ci0g
ICAgICAgICAgICBhc3NlcnRfdHJ1ZShyZWFkZXIxUmVqZWN0ZWQpOwotICAgICAgICAgICAgdGVz
dDkuZG9uZSgpOwotICAgICAgICB9KQotICAgICk7Ci0KLSAgICBjb250cm9sbGVyLmVycm9yKHRo
ZUVycm9yKTsKLX0pOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3Jl
YWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0CmluZGV4IDFmN2FmYjI5MzRjNTJh
ZTAzOWNmMjUzYmUxY2EzMDk1NDYwODBkOTYuLjg3NjRkYTcyNWQ0YzMwZWM0ZDBkM2Q5ODU5OWE2
ZmFhYTk0YmNlZTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWlt
cGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0
cmVhbS10ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0CkBAIC0xLDkyICsxLDE4IEBACiAKLVBBU1MgUnVu
bmluZyB0ZW1wbGF0ZWRSU0VtcHR5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KSAKLVBBU1Mg
aW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQgcHJvcGVydGllcyAKLVBBU1Mg
UnVubmluZyB0ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5
KSByZWFkZXIgCi1QQVNTIGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHBy
b3BlcnRpZXMgCi1QQVNTIGxvY2tlZCBzaG91bGQgYmUgdHJ1ZSAKLVBBU1MgcmVhZCgpIHNob3Vs
ZCBuZXZlciBzZXR0bGUgCi1QQVNTIHR3byByZWFkKClzIHNob3VsZCBib3RoIG5ldmVyIHNldHRs
ZSAKLVBBU1MgcmVhZCgpIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMgZWFjaCB0aW1l
IAotUEFTUyBnZXRSZWFkZXIoKSBhZ2FpbiBvbiB0aGUgc3RyZWFtIHNob3VsZCBmYWlsIAotUEFT
UyByZWxlYXNpbmcgdGhlIGxvY2sgd2l0aCBwZW5kaW5nIHJlYWQgcmVxdWVzdHMgc2hvdWxkIHRo
cm93IGJ1dCB0aGUgcmVhZCByZXF1ZXN0cyBzaG91bGQgc3RheSBwZW5kaW5nIAotUEFTUyByZWxl
YXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGZ1cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlamVj
dCB3aXRoIGEgVHlwZUVycm9yIAotUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNl
IGNsb3NlZCB0byByZWplY3QgCi1QQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2Ug
bG9ja2VkIHRvIGJlY29tZSBmYWxzZSAKLVBBU1MgY2FuY2VsaW5nIHZpYSB0aGUgcmVhZGVyIHNo
b3VsZCBjYXVzZSB0aGUgcmVhZGVyIHRvIGFjdCBjbG9zZWQgCi1QQVNTIGNhbmNlbGluZyB2aWEg
dGhlIHN0cmVhbSBzaG91bGQgZmFpbCAKIFBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZCB3
aXRoIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbGwgaW4gc3RhcnQpIAotUEFTUyBjYW5j
ZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1l
IAotUEFTUyBsb2NrZWQgc2hvdWxkIGJlIGZhbHNlIAotUEFTUyBnZXRSZWFkZXIoKSBzaG91bGQg
YmUgT0sgCiBQQVNTIHBpcGluZyB0byBhIFdyaXRhYmxlU3RyZWFtIGluIHRoZSB3cml0YWJsZSBz
dGF0ZSBzaG91bGQgY2xvc2UgdGhlIHdyaXRhYmxlIHN0cmVhbSAKIFBBU1MgcGlwaW5nIHRvIGEg
V3JpdGFibGVTdHJlYW0gaW4gdGhlIHdyaXRhYmxlIHN0YXRlIHdpdGggeyBwcmV2ZW50Q2xvc2U6
IHRydWUgfSBzaG91bGQgZG8gbm90aGluZyAKLVBBU1Mgc2hvdWxkIGJlIGFibGUgdG8gYWNxdWly
ZSBtdWx0aXBsZSByZWFkZXJzIGlmIHRoZXkgYXJlIHJlbGVhc2VkIGluIHN1Y2Nlc3Npb24gCi1Q
QVNTIHNob3VsZCBub3QgYmUgYWJsZSB0byBhY3F1aXJlIGEgc2Vjb25kIHJlYWRlciBpZiB3ZSBk
b24ndCByZWxlYXNlIHRoZSBmaXJzdCBvbmUgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9z
ZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUgZ2V0dGlu
ZyByZWFkZXIpIAotUEFTUyByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRl
ZmluZWQsIGRvbmU6IHRydWUgfSAKLVBBU1MgcmVhZCgpIG11bHRpcGxlIHRpbWVzIHNob3VsZCBm
dWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCi1QQVNTIHJlYWQo
KSBzaG91bGQgd29yayB3aGVuIHVzZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2Fs
bGJhY2sgCi1QQVNTIGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCAKLVBBU1Mg
cmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFu
Z2UgaWRlbnRpdHkgCi1QQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxm
aWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRS
ZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJl
YWRlcikgCi1QQVNTIHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5l
ZCwgZG9uZTogdHJ1ZSB9IAotUEFTUyByZWFkKCkgbXVsdGlwbGUgdGltZXMgc2hvdWxkIGZ1bGZp
bGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKLVBBU1MgcmVhZCgpIHNo
b3VsZCB3b3JrIHdoZW4gdXNlZCB3aXRoaW4gYW5vdGhlciByZWFkKCkgZnVsZmlsbCBjYWxsYmFj
ayAKLVBBU1MgY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIAotUEFTUyByZWxl
YXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBp
ZGVudGl0eSAKLVBBU1MgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxl
ZCBwcm9taXNlIGVhY2ggdGltZSAKIFBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZCB3aXRo
IFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbmNlbCkgCi1QQVNTIGNhbmNlbCgpIHNob3Vs
ZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgCi1QQVNTIGxv
Y2tlZCBzaG91bGQgYmUgZmFsc2UgCi1QQVNTIGdldFJlYWRlcigpIHNob3VsZCBiZSBPSyAKIFBB
U1MgcGlwaW5nIHRvIGEgV3JpdGFibGVTdHJlYW0gaW4gdGhlIHdyaXRhYmxlIHN0YXRlIHNob3Vs
ZCBjbG9zZSB0aGUgd3JpdGFibGUgc3RyZWFtIAogUEFTUyBwaXBpbmcgdG8gYSBXcml0YWJsZVN0
cmVhbSBpbiB0aGUgd3JpdGFibGUgc3RhdGUgd2l0aCB7IHByZXZlbnRDbG9zZTogdHJ1ZSB9IHNo
b3VsZCBkbyBub3RoaW5nIAotUEFTUyBzaG91bGQgYmUgYWJsZSB0byBhY3F1aXJlIG11bHRpcGxl
IHJlYWRlcnMgaWYgdGhleSBhcmUgcmVsZWFzZWQgaW4gc3VjY2Vzc2lvbiAKLVBBU1Mgc2hvdWxk
IG5vdCBiZSBhYmxlIHRvIGFjcXVpcmUgYSBzZWNvbmQgcmVhZGVyIGlmIHdlIGRvbid0IHJlbGVh
c2UgdGhlIGZpcnN0IG9uZSAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlciB3
aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGlu
ZyByZWFkZXIpIAotUEFTUyByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRl
ZmluZWQsIGRvbmU6IHRydWUgfSAKLVBBU1MgcmVhZCgpIG11bHRpcGxlIHRpbWVzIHNob3VsZCBm
dWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCi1QQVNTIHJlYWQo
KSBzaG91bGQgd29yayB3aGVuIHVzZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2Fs
bGJhY2sgCi1QQVNTIGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCAKLVBBU1Mg
cmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFu
Z2UgaWRlbnRpdHkgCi1QQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxm
aWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgCiBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVk
IHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpIAogUEFTUyBw
aXBpbmcgdG8gYSBXcml0YWJsZVN0cmVhbSBpbiB0aGUgd3JpdGFibGUgc3RhdGUgc2hvdWxkIGFi
b3J0IHRoZSB3cml0YWJsZSBzdHJlYW0gCi1QQVNTIGdldFJlYWRlcigpIHNob3VsZCByZXR1cm4g
YSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQgCi1QQVNTIHJlYWQoKSB0d2ljZSBzaG91bGQgZ2l2
ZSB0aGUgZXJyb3IgZWFjaCB0aW1lIAotUEFTUyBsb2NrZWQgc2hvdWxkIGJlIGZhbHNlIAotUEFT
UyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFN5bmNPbmx5IHdpdGggUmVhZGFibGVTdHJlYW0g
KGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpIAotUEFTUyBzaG91bGQgYmUgYWJsZSB0byBvYnRh
aW4gYSBzZWNvbmQgcmVhZGVyLCB3aXRoIHRoZSBjb3JyZWN0IGNsb3NlZCBwcm9taXNlIAotUEFT
UyBzaG91bGQgbm90IGJlIGFibGUgdG8gb2J0YWluIGFkZGl0aW9uYWwgcmVhZGVycyBpZiB3ZSBk
b24ndCByZWxlYXNlIHRoZSBmaXJzdCBsb2NrIAotUEFTUyBjYW5jZWwoKSBzaG91bGQgcmV0dXJu
IGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUgCi1QQVNTIHJlYWRlciBjYW5j
ZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUg
CiBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkIHdpdGggUmVhZGFibGVTdHJlYW0gKGVy
cm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpIAogUEFTUyBw
aXBpbmcgdG8gYSBXcml0YWJsZVN0cmVhbSBpbiB0aGUgd3JpdGFibGUgc3RhdGUgc2hvdWxkIGFi
b3J0IHRoZSB3cml0YWJsZSBzdHJlYW0gCi1QQVNTIGdldFJlYWRlcigpIHNob3VsZCByZXR1cm4g
YSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQgCi1QQVNTIHJlYWQoKSB0d2ljZSBzaG91bGQgZ2l2
ZSB0aGUgZXJyb3IgZWFjaCB0aW1lIAotUEFTUyBsb2NrZWQgc2hvdWxkIGJlIGZhbHNlIAogUEFT
UyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZEFzeW5jT25seSB3aXRoIFJlYWRhYmxlU3RyZWFt
IChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSByZWFk
ZXIgCiBQQVNTIHBpcGluZyB3aXRoIG5vIG9wdGlvbnMgCiBQQVNTIHBpcGluZyB3aXRoIHsgcHJl
dmVudEFib3J0OiBmYWxzZSB9IAogUEFTUyBwaXBpbmcgd2l0aCB7IHByZXZlbnRBYm9ydDogdHJ1
ZSB9IAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlciB3aXRoIFJlYWRhYmxl
U3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0
KSByZWFkZXIgCi1QQVNTIGNsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAotUEFT
UyByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNo
YW5nZSBpZGVudGl0eSAKLVBBU1MgcmVhZCgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3Ig
Ci1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJl
YW0gcmVhZGVyIChlcnJvcmVkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcikgCi1QQVNTIGNsb3NlZCBz
aG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAotUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hv
dWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKLVBBU1MgcmVh
ZCgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVk
UlNFcnJvcmVkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGFmdGVy
IGdldHRpbmcgcmVhZGVyKSAKLVBBU1MgY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJy
b3IgCi1QQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVj
dCBhbmQgY2hhbmdlIGlkZW50aXR5IAotUEFTUyByZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRo
ZSBlcnJvciAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU1R3b0NodW5rc09wZW5SZWFkZXIgd2l0
aCBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgc3RpbGwgb3BlbikgcmVhZGVy
IAotUEFTUyBjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRpbmcgd2lsbCBldmVudHVh
bGx5IGdpdmUgYm90aCBjaHVua3MgCi1QQVNTIGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGggd2Fp
dGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcyAKLVBBU1MgcmVhZCgpIHNob3Vs
ZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMgZWFjaCB0aW1lIAotUEFTUyBjYW5jZWwoKSBhZnRl
ciBhIHJlYWQoKSBzaG91bGQgc3RpbGwgZ2l2ZSB0aGF0IHNpbmdsZSByZWFkIHJlc3VsdCAKIFBB
U1MgUnVubmluZyB0ZW1wbGF0ZWRSU1R3b0NodW5rc0Nsb3NlZCB3aXRoIFJlYWRhYmxlU3RyZWFt
ICh0d28gY2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkgCiBQQVNTIHBpcGluZyB3aXRoIG5v
IG9wdGlvbnMgYW5kIG5vIGRlc3RpbmF0aW9uIGVycm9ycyAKIFBBU1MgcGlwaW5nIHdpdGggeyBw
cmV2ZW50Q2xvc2U6IGZhbHNlIH0gYW5kIG5vIGRlc3RpbmF0aW9uIGVycm9ycyAKQEAgLTEwOCwx
MSArMzQsNCBAQCBQQVNTIHBpcGluZyB3aXRoIHsgcHJldmVudENsb3NlOiB0cnVlIH0gYW5kIG5v
IGRlc3RpbmF0aW9uIGVycm9ycwogUEFTUyBwaXBpbmcgd2l0aCB7IHByZXZlbnRDbG9zZTogZmFs
c2UgfSBhbmQgYSBkZXN0aW5hdGlvbiB3aXRoIHRoYXQgZXJyb3JzIHN5bmNocm9ub3VzbHkgCiBQ
QVNTIHBpcGluZyB3aXRoIHsgcHJldmVudENsb3NlOiB0cnVlIH0gYW5kIGEgZGVzdGluYXRpb24g
d2l0aCB0aGF0IGVycm9ycyBzeW5jaHJvbm91c2x5IAogUEFTUyBwaXBpbmcgd2l0aCB7IHByZXZl
bnRDbG9zZTogdHJ1ZSB9IGFuZCBhIGRlc3RpbmF0aW9uIHRoYXQgZXJyb3JzIG9uIHRoZSBsYXN0
IGNodW5rIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTVHdvQ2h1bmtzQ2xvc2VkUmVhZGVyIHdp
dGggUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFk
ZXIgCi1QQVNTIHRoaXJkIHJlYWQoKSwgd2l0aG91dCB3YWl0aW5nLCBzaG91bGQgZ2l2ZSB7IHZh
bHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKLVBBU1MgdGhpcmQgcmVhZCwgd2l0aCB3YWl0
aW5nLCBzaG91bGQgZ2l2ZSB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKLVBBU1Mg
ZHJhaW5pbmcgdGhlIHN0cmVhbSB2aWEgcmVhZCgpIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIGNs
b3NlZCBwcm9taXNlIHRvIGZ1bGZpbGwsIGJ1dCBsb2NrZWQgc3RheXMgdHJ1ZSAKLVBBU1MgcmVs
ZWFzaW5nIHRoZSBsb2NrIGFmdGVyIHRoZSBzdHJlYW0gaXMgY2xvc2VkIHNob3VsZCBjYXVzZSBs
b2NrZWQgdG8gYmVjb21lIGZhbHNlIAotUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNh
dXNlIGZ1cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yIAotUEFT
UyByZWFkZXIncyBjbG9zZWQgcHJvcGVydHkgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUgcHJvbWlz
ZSAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50
YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFt
cy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC5odG1s
CmluZGV4IDdjMjBkMDlmMzA5NzRiMGYwMGZkYTJkNTE3NGE0YzA2OGIwOWZhYjYuLmI1ZmE1OWRj
ZDdiZDRmZGU2ZGYwOTA1YmQzNDc4NjI5MzgwMjI0MTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0
ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlv
bi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLmh0bWwKQEAgLTUsNjEgKzUsMTAgQEAKIDxzY3Jp
cHQ+CiAvLyBUaGlzIGlzIHVwZGF0ZWQgdGlsbCBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL3N0
cmVhbXMvY29tbWl0L2VjNWZmYTAzNjMwOGQ5ZjYzNTBkMjk0NjU2MGQ0OGNkYmYwOTA5MzkKIAot
ZnVuY3Rpb24gdGVtcGxhdGVkUlNFbXB0eShsYWJlbCwgZmFjdG9yeSkgewotICAgIHRlc3QoZnVu
Y3Rpb24oKSB7Ci0gICAgfSwgJ1J1bm5pbmcgdGVtcGxhdGVkUlNFbXB0eSB3aXRoICcgKyBsYWJl
bCk7Ci0KLSAgICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgcnMgPSBmYWN0b3J5KCk7
Ci0KLSAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnMubG9ja2VkLCAnYm9vbGVhbicsICdo
YXMgYSBib29sZWFuIGxvY2tlZCBnZXR0ZXInKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBl
b2YgcnMuY2FuY2VsLCAnZnVuY3Rpb24nLCAnaGFzIGEgY2FuY2VsIG1ldGhvZCcpOwotICAgICAg
ICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBycy5nZXRSZWFkZXIsICdmdW5jdGlvbicsICdoYXMgYSBn
ZXRSZWFkZXIgbWV0aG9kJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJzLnBpcGVU
aHJvdWdoLCAnZnVuY3Rpb24nLCAnaGFzIGEgcGlwZVRocm91Z2ggbWV0aG9kJyk7Ci0gICAgICAg
IGFzc2VydF9lcXVhbHModHlwZW9mIHJzLnBpcGVUbywgJ2Z1bmN0aW9uJywgJ2hhcyBhIHBpcGVU
byBtZXRob2QnKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnMudGVlLCAnZnVuY3Rp
b24nLCAnaGFzIGEgdGVlIG1ldGhvZCcpOwotICAgIH0sICdpbnN0YW5jZXMgaGF2ZSB0aGUgY29y
cmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzJyk7Ci19Ci0KIGZ1bmN0aW9uIHRlbXBsYXRlZFJT
Q2xvc2VkKGxhYmVsLCBmYWN0b3J5KSB7CiAgICAgdGVzdChmdW5jdGlvbigpIHsKICAgICB9LCAn
UnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZCB3aXRoICcgKyBsYWJlbCk7CiAKLSAgICB2YXIgdGVz
dDEgPSBhc3luY190ZXN0KCdjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmls
bGVkIHByb21pc2UgZWFjaCB0aW1lJyk7Ci0gICAgdGVzdDEuc3RlcChmdW5jdGlvbigpIHsKLSAg
ICAgICAgdmFyIHJzID0gZmFjdG9yeSgpOwotICAgICAgICB2YXIgcHJvbWlzZXNDb3VudCA9IDA7
Ci0gICAgICAgIHZhciBhbGxDaGVja2VkID0gZmFsc2U7Ci0KLSAgICAgICAgdmFyIGNhbmNlbFBy
b21pc2UxID0gcnMuY2FuY2VsKCk7Ci0gICAgICAgIHZhciBjYW5jZWxQcm9taXNlMiA9IHJzLmNh
bmNlbCgpOwotCi0gICAgICAgIGNhbmNlbFByb21pc2UxLnRoZW4odGVzdDEuc3RlcF9mdW5jKGZ1
bmN0aW9uKHYpIHsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAnZmly
c3QgY2FuY2VsKCkgY2FsbCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpOwotICAgICAg
ICAgICAgKytwcm9taXNlc0NvdW50OwotICAgICAgICB9KSk7Ci0gICAgICAgIGNhbmNlbFByb21p
c2UyLnRoZW4odGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKHYpIHsKLSAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHModiwgdW5kZWZpbmVkLCAnc2Vjb25kIGNhbmNlbCgpIGNhbGwgc2hvdWxkIGZ1bGZp
bGwgd2l0aCB1bmRlZmluZWQnKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoKytwcm9taXNl
c0NvdW50LCAyKTsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKGFsbENoZWNrZWQpOwotICAgICAg
ICAgICAgdGVzdDEuZG9uZSgpOwotICAgICAgICB9KSk7Ci0gICAgICAgIGFzc2VydF9ub3RfZXF1
YWxzKGNhbmNlbFByb21pc2UxLCBjYW5jZWxQcm9taXNlMiwgJ2NhbmNlbCgpIGNhbGxzIHNob3Vs
ZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMnKTsKLSAgICAgICAgYWxsQ2hlY2tlZCA9IHRydWU7
Ci0gICAgfSk7Ci0KLSAgICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgcnMgPSBmYWN0
b3J5KCk7Ci0KLSAgICAgICAgYXNzZXJ0X2ZhbHNlKHJzLmxvY2tlZCwgJ2xvY2tlZCBnZXR0ZXIg
c2hvdWxkIHJldHVybiBmYWxzZScpOwotICAgIH0sICdsb2NrZWQgc2hvdWxkIGJlIGZhbHNlJyk7
Ci0KLSAgICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgcnMgPSBmYWN0b3J5KCk7Ci0K
LSAgICAgICAgcnMuZ2V0UmVhZGVyKCk7IC8vIGdldFJlYWRlcigpIHNob3VsZCBub3QgdGhyb3cu
Ci0gICAgfSwgJ2dldFJlYWRlcigpIHNob3VsZCBiZSBPSycpOwotCiAgICAgdmFyIHRlc3QyID0g
YXN5bmNfdGVzdCgncGlwaW5nIHRvIGEgV3JpdGFibGVTdHJlYW0gaW4gdGhlIHdyaXRhYmxlIHN0
YXRlIHNob3VsZCBjbG9zZSB0aGUgd3JpdGFibGUgc3RyZWFtJyk7CiAgICAgdGVzdDIuc3RlcChm
dW5jdGlvbigpIHsKICAgICAgICAgdmFyIGNsb3NlQ2FsbGVkID0gZmFsc2U7CkBAIC0xMjIsMjcg
KzcxLDYgQEAgZnVuY3Rpb24gdGVtcGxhdGVkUlNDbG9zZWQobGFiZWwsIGZhY3RvcnkpIHsKICAg
ICAgICAgICAgIH0pKTsKICAgICAgICAgfSkpLmNhdGNoKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlv
bihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0pKTsKICAgICB9KTsKLQotICAgIHRlc3QoZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIHZhciBycyA9IGZhY3RvcnkoKTsKLQotICAgICAgICB2YXIgcmVh
ZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0gICAgICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOwotCi0g
ICAgICAgIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOyAvLyBHZXR0aW5nIGEgc2Vjb25kIHJlYWRl
ciBzaG91bGQgbm90IHRocm93LgotICAgICAgICByZWFkZXIucmVsZWFzZUxvY2soKTsKLQotICAg
ICAgICBycy5nZXRSZWFkZXIoKTsgLy8gR2V0dGluZyBhIHRoaXJkIHJlYWRlciBzaG91bGQgbm90
IHRocm93LgotICAgIH0sICdzaG91bGQgYmUgYWJsZSB0byBhY3F1aXJlIG11bHRpcGxlIHJlYWRl
cnMgaWYgdGhleSBhcmUgcmVsZWFzZWQgaW4gc3VjY2Vzc2lvbicpOwotCi0gICAgdGVzdChmdW5j
dGlvbigpIHsKLSAgICAgICAgdmFyIHJzID0gZmFjdG9yeSgpOwotCi0gICAgICAgIHJzLmdldFJl
YWRlcigpOwotCi0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlv
bigpIHsgcnMuZ2V0UmVhZGVyKCk7IH0sICdnZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBzaG91bGQg
dGhyb3cnKTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9u
KCkgeyBycy5nZXRSZWFkZXIoKTsgfSwgJ2dldHRpbmcgYSB0aGlyZCByZWFkZXIgc2hvdWxkIHRo
cm93Jyk7Ci0gICAgfSwgJ3Nob3VsZCBub3QgYmUgYWJsZSB0byBhY3F1aXJlIGEgc2Vjb25kIHJl
YWRlciBpZiB3ZSBkb25cJ3QgcmVsZWFzZSB0aGUgZmlyc3Qgb25lJyk7CiB9OwogCiBmdW5jdGlv
biB0ZW1wbGF0ZWRSU0Vycm9yZWQobGFiZWwsIGZhY3RvcnksIGVycm9yKSB7CkBAIC0xODIsNTMg
KzExMCw2IEBAIGZ1bmN0aW9uIHRlbXBsYXRlZFJTRXJyb3JlZChsYWJlbCwgZmFjdG9yeSwgZXJy
b3IpIHsKICAgICAgICAgICAgICk7CiAgICAgICAgIH0pKTsKICAgICB9KTsKLQotICAgIHZhciB0
ZXN0MiA9IGFzeW5jX3Rlc3QoJ2dldFJlYWRlcigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIgdGhh
dCBhY3RzIGVycm9yZWQnKTsKLSAgICB0ZXN0Mi5zdGVwKGZ1bmN0aW9uKCkgewotICAgICAgICB2
YXIgcnMgPSBmYWN0b3J5KCk7Ci0gICAgICAgIHZhciBwcm9taXNlc0NvdW50ID0gMDsKLQotICAg
ICAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgICAgICAgcmVhZGVyLmNsb3Nl
ZC5jYXRjaCh0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhlLCBlcnJvciwgJ3JlYWRlci5jbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBl
cnJvcicpOwotICAgICAgICAgICAgaWYgKCsrcHJvbWlzZXNDb3VudCA9PT0gMikKLSAgICAgICAg
ICAgICAgICB0ZXN0Mi5kb25lKCk7Ci0gICAgICAgIH0pKTsKLSAgICAgICAgcmVhZGVyLnJlYWQo
KS5jYXRjaCh0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhlLCBlcnJvciwgJ3JlYWRlci5yZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBl
cnJvcicpOwotICAgICAgICAgICAgaWYgKCsrcHJvbWlzZXNDb3VudCA9PT0gMikKLSAgICAgICAg
ICAgICAgICB0ZXN0Mi5kb25lKCk7Ci0gICAgICAgIH0pKTsKLSAgICB9KTsKLQotICAgIHZhciB0
ZXN0MyA9IGFzeW5jX3Rlc3QoJ3JlYWQoKSB0d2ljZSBzaG91bGQgZ2l2ZSB0aGUgZXJyb3IgZWFj
aCB0aW1lJyk7Ci0gICAgdGVzdDMuc3RlcChmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHJzID0g
ZmFjdG9yeSgpOwotICAgICAgICB2YXIgcHJvbWlzZUNvdW50ID0gMDsKLQotICAgICAgICB2YXIg
cmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgICAgICAgcmVhZGVyLnJlYWQoKS5jYXRjaCh0
ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhl
LCBlcnJvciwgJ3JlYWRlci5yZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOwot
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscygrK3Byb21pc2VDb3VudCwgMSk7Ci0gICAgICAgIH0p
KTsKLSAgICAgICAgcmVhZGVyLnJlYWQoKS5jYXRjaCh0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24o
ZSkgewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCBlcnJvciwgJ3JlYWRlci5yZWFkKCkg
c2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cygrK3Byb21pc2VDb3VudCwgMik7Ci0gICAgICAgIH0pKTsKLSAgICAgICAgcmVhZGVyLmNsb3Nl
ZC5jYXRjaCh0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhlLCBlcnJvciwgJ3JlYWRlci5jbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBl
cnJvcicpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscygrK3Byb21pc2VDb3VudCwgMyk7Ci0g
ICAgICAgICAgICB0ZXN0My5kb25lKCk7Ci0gICAgICAgIH0pKTsKLSAgIH0pOwotCi0gICAgdGVz
dChmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHJzID0gZmFjdG9yeSgpOwotCi0gICAgICAgIGFz
c2VydF9mYWxzZShycy5sb2NrZWQsICdsb2NrZWQgZ2V0dGVyIHNob3VsZCByZXR1cm4gZmFsc2Un
KTsKLSAgICB9LCAnbG9ja2VkIHNob3VsZCBiZSBmYWxzZScpOwogfTsKIAogZnVuY3Rpb24gdGVt
cGxhdGVkUlNFcnJvcmVkQXN5bmNPbmx5KGxhYmVsLCBmYWN0b3J5LCBlcnJvcikgewpAQCAtMzA2
LDg0ICsxODcsNiBAQCBmdW5jdGlvbiB0ZW1wbGF0ZWRSU0Vycm9yZWRBc3luY09ubHkobGFiZWws
IGZhY3RvcnksIGVycm9yKSB7CiAgICB9KTsKIH07CiAKLWZ1bmN0aW9uIHRlbXBsYXRlZFJTRXJy
b3JlZFN5bmNPbmx5KGxhYmVsLCBmYWN0b3J5LCBlcnJvcikgewotICAgIHRlc3QoZnVuY3Rpb24o
KSB7Ci0gICAgfSwgJ1J1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkgd2l0aCAnICsg
bGFiZWwpOwotCi0gICAgdmFyIHRlc3QxID0gYXN5bmNfdGVzdCgnc2hvdWxkIGJlIGFibGUgdG8g
b2J0YWluIGEgc2Vjb25kIHJlYWRlciwgd2l0aCB0aGUgY29ycmVjdCBjbG9zZWQgcHJvbWlzZScp
OwotICAgIHRlc3QxLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBycyA9IGZhY3Rvcnko
KTsKLQotICAgICAgICBycy5nZXRSZWFkZXIoKS5yZWxlYXNlTG9jaygpOwotCi0gICAgICAgIHZh
ciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsgLy8gQ2FsbGluZyBnZXRSZWFkZXIoKSB0d2ljZSBk
b2VzIG5vdCB0aHJvdyAodGhlIHN0cmVhbSBpcyBub3QgbG9ja2VkKS4KLQotICAgICAgICByZWFk
ZXIuY2xvc2VkLnRoZW4oCi0gICAgICAgICAgICB0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
IGFzc2VydF91bnJlYWNoZWQoJ2Nsb3NlZCBwcm9taXNlIHNob3VsZCBub3QgYmUgZnVsZmlsbGVk
IHdoZW4gc3RyZWFtIGlzIGVycm9yZWQnKTsgfSksCi0gICAgICAgICAgICB0ZXN0MS5zdGVwX2Z1
bmMoZnVuY3Rpb24oZXJyKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlcnIsIGVy
cm9yKTsKLSAgICAgICAgICAgICAgICB0ZXN0MS5kb25lKCk7Ci0gICAgICAgICAgICB9KQotICAg
ICAgICApOwotICAgIH0pOwotCi0gICAgdGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHJz
ID0gZmFjdG9yeSgpOwotCi0gICAgICAgIHJzLmdldFJlYWRlcigpOwotCi0gICAgICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgcnMuZ2V0UmVhZGVyKCk7IH0s
ICdnZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKLSAg
ICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBycy5nZXRS
ZWFkZXIoKTsgfSwgJ2dldHRpbmcgYSB0aGlyZCByZWFkZXIgc2hvdWxkIHRocm93IGEgVHlwZUVy
cm9yJyk7Ci0gICAgfSwgJ3Nob3VsZCBub3QgYmUgYWJsZSB0byBvYnRhaW4gYWRkaXRpb25hbCBy
ZWFkZXJzIGlmIHdlIGRvblwndCByZWxlYXNlIHRoZSBmaXJzdCBsb2NrJyk7Ci0KLSAgICB2YXIg
dGVzdDIgPSBhc3luY190ZXN0KCdjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVq
ZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUnKTsKLSAgICB0ZXN0Mi5zdGVwKGZ1bmN0aW9uKCkgewot
ICAgICAgICB2YXIgcnMgPSBmYWN0b3J5KCk7Ci0gICAgICAgIHZhciBwcm9taXNlc0NvdW50ID0g
MDsKLSAgICAgICAgdmFyIGFsbENoZWNrZWQgPSBmYWxzZTsKLQotICAgICAgICB2YXIgY2FuY2Vs
UHJvbWlzZTEgPSBycy5jYW5jZWwoKTsKLSAgICAgICAgdmFyIGNhbmNlbFByb21pc2UyID0gcnMu
Y2FuY2VsKCk7Ci0KLSAgICAgICAgY2FuY2VsUHJvbWlzZTEuY2F0Y2godGVzdDIuc3RlcF9mdW5j
KGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZSwgZXJyb3IsICdmaXJz
dCBjYW5jZWwoKSBjYWxsIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKLSAgICAgICAg
ICAgICsrcHJvbWlzZXNDb3VudDsKLSAgICAgICAgfSkpOwotICAgICAgICBjYW5jZWxQcm9taXNl
Mi5jYXRjaCh0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhlLCBlcnJvciwgJ3NlY29uZCBjYW5jZWwoKSBjYWxsIHNob3VsZCByZWplY3Qgd2l0
aCB0aGUgZXJyb3InKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoKytwcm9taXNlc0NvdW50
LCAyKTsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKGFsbENoZWNrZWQpOwotICAgICAgICAgICAg
dGVzdDIuZG9uZSgpOwotICAgICAgICB9KSk7Ci0gICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNh
bmNlbFByb21pc2UxLCBjYW5jZWxQcm9taXNlMiwgJ2NhbmNlbCgpIGNhbGxzIHNob3VsZCByZXR1
cm4gZGlzdGluY3QgcHJvbWlzZXMnKTsKLSAgICAgICAgYWxsQ2hlY2tlZCA9IHRydWU7Ci0gICAg
fSk7Ci0KLSAgICB2YXIgdGVzdDMgPSBhc3luY190ZXN0KCdyZWFkZXIgY2FuY2VsKCkgc2hvdWxk
IHJldHVybiBhIGRpc3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFjaCB0aW1lJyk7Ci0gICAgdGVz
dDMuc3RlcChmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHJzID0gZmFjdG9yeSgpOwotICAgICAg
ICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0gICAgICAgIHZhciBwcm9taXNlc0NvdW50
ID0gMDsKLSAgICAgICAgdmFyIGFsbENoZWNrZWQgPSBmYWxzZTsKLQotICAgICAgICB2YXIgY2Fu
Y2VsUHJvbWlzZTEgPSByZWFkZXIuY2FuY2VsKCk7Ci0gICAgICAgIHZhciBjYW5jZWxQcm9taXNl
MiA9IHJlYWRlci5jYW5jZWwoKTsKLQotICAgICAgICBjYW5jZWxQcm9taXNlMS5jYXRjaCh0ZXN0
My5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCBl
cnJvciwgJ2ZpcnN0IGNhbmNlbCgpIGNhbGwgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicp
OwotICAgICAgICAgICAgKytwcm9taXNlc0NvdW50OwotICAgICAgICB9KSk7Ci0gICAgICAgIGNh
bmNlbFByb21pc2UyLmNhdGNoKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKGUsIGVycm9yLCAnc2Vjb25kIGNhbmNlbCgpIGNhbGwgc2hvdWxk
IHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscygrK3By
b21pc2VzQ291bnQsIDIpOwotICAgICAgICAgICAgYXNzZXJ0X3RydWUoYWxsQ2hlY2tlZCk7Ci0g
ICAgICAgICAgICB0ZXN0My5kb25lKCk7Ci0gICAgICAgIH0pKTsKLSAgICAgICAgYXNzZXJ0X25v
dF9lcXVhbHMoY2FuY2VsUHJvbWlzZTEsIGNhbmNlbFByb21pc2UyLCAnY2FuY2VsKCkgY2FsbHMg
c2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcycpOwotICAgICAgICBhbGxDaGVja2VkID0g
dHJ1ZTsKLSAgICB9KTsKLX07Ci0KIGZ1bmN0aW9uIHRlbXBsYXRlZFJTVHdvQ2h1bmtzQ2xvc2Vk
KGxhYmVsLCBmYWN0b3J5LCBlcnJvcikgewogICAgIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgfSwg
J1J1bm5pbmcgdGVtcGxhdGVkUlNUd29DaHVua3NDbG9zZWQgd2l0aCAnICsgbGFiZWwpOwpAQCAt
NTQyLDUxMyArMzQ1LDYgQEAgZnVuY3Rpb24gdGVtcGxhdGVkUlNUd29DaHVua3NDbG9zZWQobGFi
ZWwsIGZhY3RvcnksIGVycm9yKSB7CiAgICAgfSk7CiB9OwogCi1mdW5jdGlvbiB0ZW1wbGF0ZWRS
U0VtcHR5UmVhZGVyKGxhYmVsLCBmYWN0b3J5KSB7Ci0gICAgdGVzdChmdW5jdGlvbigpIHsKLSAg
ICB9LCAnUnVubmluZyB0ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyIHdpdGggJyArIGxhYmVsKTsKLQot
ICAgIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgp
OwotCi0gICAgICAgIGFzc2VydF90cnVlKCdjbG9zZWQnIGluIHJlYWRlciwgJ2hhcyBhIGNsb3Nl
ZCBwcm9wZXJ0eScpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiByZWFkZXIuY2xvc2Vk
LnRoZW4sICdmdW5jdGlvbicsICdjbG9zZWQgcHJvcGVydHkgaXMgdGhlbmFibGUnKTsKLQotICAg
ICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiByZWFkZXIuY2FuY2VsLCAnZnVuY3Rpb24nLCAnaGFz
IGEgY2FuY2VsIG1ldGhvZCcpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiByZWFkZXIu
cmVhZCwgJ2Z1bmN0aW9uJywgJ2hhcyBhIHJlYWQgbWV0aG9kJyk7Ci0gICAgICAgIGFzc2VydF9l
cXVhbHModHlwZW9mIHJlYWRlci5yZWxlYXNlTG9jaywgJ2Z1bmN0aW9uJywgJ2hhcyBhIHJlbGVh
c2VMb2NrIG1ldGhvZCcpOwotICAgIH0sICdpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRo
b2RzIGFuZCBwcm9wZXJ0aWVzJyk7Ci0KLSAgICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICB2
YXIgeyBzdHJlYW0gfSA9IGZhY3RvcnkoKTsKLQotICAgICAgICBhc3NlcnRfdHJ1ZShzdHJlYW0u
bG9ja2VkLCAnbG9ja2VkIGdldHRlciBzaG91bGQgcmV0dXJuIHRydWUnKTsKLSAgICB9LCAnbG9j
a2VkIHNob3VsZCBiZSB0cnVlJyk7Ci0KLSAgICB2YXIgdGVzdDEgPSBhc3luY190ZXN0KCdyZWFk
KCkgc2hvdWxkIG5ldmVyIHNldHRsZScpOwotICAgIHRlc3QxLnN0ZXAoZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwotCi0gICAgICAgIHJlYWRlci5yZWFk
KCkudGhlbigKLSAgICAgICAgICAgIHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0
X3VucmVhY2hlZCgncmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpOyB9KSwKLSAgICAgICAgICAg
IHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgncmVhZCgpIHNo
b3VsZCBub3QgcmVqZWN0Jyk7IH0pCi0gICAgICAgICk7Ci0KLSAgICAgICAgc2V0VGltZW91dCh0
ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IHRlc3QxLmRvbmUoKTsgfSksIDEwMDApOwotICAg
IH0pOwotCi0gICAgdmFyIHRlc3QyID0gYXN5bmNfdGVzdCgndHdvIHJlYWQoKXMgc2hvdWxkIGJv
dGggbmV2ZXIgc2V0dGxlJyk7Ci0gICAgdGVzdDIuc3RlcChmdW5jdGlvbigpIHsKLSAgICAgICAg
dmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7Ci0KLSAgICAgICAgcmVhZGVyLnJlYWQoKS50aGVu
KAotICAgICAgICAgICAgdGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFj
aGVkKCdmaXJzdCByZWFkKCkgc2hvdWxkIG5vdCBmdWxmaWxsJyk7IH0pLAotICAgICAgICAgICAg
dGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdmaXJzdCByZWFk
KCkgc2hvdWxkIG5vdCByZWplY3QnKTsgfSkKLSAgICAgICAgKTsKLQotICAgICAgICByZWFkZXIu
cmVhZCgpLnRoZW4oCi0gICAgICAgICAgICB0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFz
c2VydF91bnJlYWNoZWQoJ3NlY29uZCByZWFkKCkgc2hvdWxkIG5vdCBmdWxmaWxsJyk7IH0pLAot
ICAgICAgICAgICAgdGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVk
KCdzZWNvbmQgcmVhZCgpIHNob3VsZCBub3QgcmVqZWN0Jyk7IH0pCi0gICAgICAgICk7Ci0KLSAg
ICAgICAgc2V0VGltZW91dCh0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IHRlc3QyLmRvbmUo
KTsgfSksIDEwMDApOwotICAgIH0pOwotCi0gICAgdGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAg
dmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7Ci0KLSAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMo
cmVhZGVyLnJlYWQoKSwgcmVhZGVyLnJlYWQoKSwgJ3RoZSBwcm9taXNlcyByZXR1cm5lZCBzaG91
bGQgYmUgZGlzdGluY3QnKTsKLSAgICB9LCAncmVhZCgpIHNob3VsZCByZXR1cm4gZGlzdGluY3Qg
cHJvbWlzZXMgZWFjaCB0aW1lJyk7Ci0KLSAgICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICB2
YXIgeyBzdHJlYW0gfSA9IGZhY3RvcnkoKTsKLQotICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IHN0cmVhbS5nZXRSZWFkZXIoKTsgfSwgJ3N0cmVhbS5n
ZXRSZWFkZXIoKSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKLSAgICB9LCAnZ2V0UmVhZGVy
KCkgYWdhaW4gb24gdGhlIHN0cmVhbSBzaG91bGQgZmFpbCcpOwotCi0gICAgdmFyIHRlc3QzID0g
YXN5bmNfdGVzdCgncmVsZWFzaW5nIHRoZSBsb2NrIHdpdGggcGVuZGluZyByZWFkIHJlcXVlc3Rz
IHNob3VsZCB0aHJvdyBidXQgdGhlIHJlYWQgcmVxdWVzdHMgc2hvdWxkIHN0YXkgcGVuZGluZycp
OwotICAgIHRlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciB7IHN0cmVhbSwgcmVh
ZGVyIH0gPSBmYWN0b3J5KCk7Ci0KLSAgICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKAotICAgICAg
ICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdmaXJz
dCByZWFkKCkgc2hvdWxkIG5vdCBmdWxmaWxsJyk7IH0pLAotICAgICAgICAgICAgdGVzdDMuc3Rl
cF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdmaXJzdCByZWFkKCkgc2hvdWxk
IG5vdCByZWplY3QnKTsgfSkKLSAgICAgICAgKTsKLQotICAgICAgICByZWFkZXIucmVhZCgpLnRo
ZW4oCi0gICAgICAgICAgICB0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJl
YWNoZWQoJ3NlY29uZCByZWFkKCkgc2hvdWxkIG5vdCBmdWxmaWxsJyk7IH0pLAotICAgICAgICAg
ICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdzZWNvbmQg
cmVhZCgpIHNob3VsZCBub3QgcmVqZWN0Jyk7IH0pCi0gICAgICAgICk7Ci0KLSAgICAgICAgcmVh
ZGVyLmNsb3NlZC50aGVuKAotICAgICAgICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
eyBhc3NlcnRfdW5yZWFjaGVkKCdjbG9zZWQgc2hvdWxkIG5vdCBmdWxmaWxsJyk7IH0pLAotICAg
ICAgICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdj
bG9zZWQgc2hvdWxkIG5vdCByZWplY3QnKTsgfSkKLSAgICAgICAgKTsKLQotICAgICAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IHJlYWRlci5yZWxlYXNlTG9j
aygpOyB9LCAncmVsZWFzZUxvY2sgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7Ci0KLSAgICAg
ICAgYXNzZXJ0X3RydWUoc3RyZWFtLmxvY2tlZCwgJ3RoZSBzdHJlYW0gc2hvdWxkIHN0aWxsIGJl
IGxvY2tlZCcpOwotCi0gICAgICAgIHNldFRpbWVvdXQodGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9u
KCkgeyB0ZXN0My5kb25lKCk7IH0pLCAxMDAwKTsKLSAgICB9KTsKLQotICAgIHZhciB0ZXN0NCA9
IGFzeW5jX3Rlc3QoJ3JlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgZnVydGhlciByZWFk
KCkgY2FsbHMgdG8gcmVqZWN0IHdpdGggYSBUeXBlRXJyb3InKTsKLSAgICB0ZXN0NC5zdGVwKGZ1
bmN0aW9uKCkgewotICAgICAgICB2YXIgcHJvbWlzZUNhbGxzID0gMDsKLSAgICAgICAgdmFyIHsg
cmVhZGVyIH0gPSBmYWN0b3J5KCk7Ci0KLSAgICAgICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7Ci0K
LSAgICAgICAgcmVhZGVyLnJlYWQoKS5jYXRjaCh0ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkg
ewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkg
eyB0aHJvdyBlOyB9LCAnZmlyc3QgcmVhZCgpIHNob3VsZCByZWplY3Qgd2l0aCBhIFR5cGVFcnJv
cicpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscygrK3Byb21pc2VDYWxscywgMSk7Ci0gICAg
ICAgIH0pKTsKLSAgICAgICAgcmVhZGVyLnJlYWQoKS5jYXRjaCh0ZXN0NC5zdGVwX2Z1bmMoZnVu
Y3Rpb24oZSkgewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1
bmN0aW9uKCkgeyB0aHJvdyBlOyB9LCAnc2Vjb25kIHJlYWQoKSBzaG91bGQgcmVqZWN0IHdpdGgg
YSBUeXBlRXJyb3InKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoKytwcm9taXNlQ2FsbHMs
IDIpOwotICAgICAgICAgICAgdGVzdDQuZG9uZSgpOwotICAgICAgICB9KSk7Ci0gICAgfSk7Ci0K
LSAgICB2YXIgdGVzdDUgPSBhc3luY190ZXN0KCdyZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNh
dXNlIGNsb3NlZCB0byByZWplY3QnKTsKLSAgICB0ZXN0NS5zdGVwKGZ1bmN0aW9uKCkgewotICAg
ICAgICB2YXIgeyByZWFkZXIgfSA9IGZhY3RvcnkoKTsKLQotICAgICAgICB2YXIgY2xvc2VkQmVm
b3JlID0gcmVhZGVyLmNsb3NlZDsKLSAgICAgICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7Ci0gICAg
ICAgIHZhciBjbG9zZWRBZnRlciA9IHJlYWRlci5jbG9zZWQ7Ci0KLSAgICAgICAgYXNzZXJ0X2Vx
dWFscyhjbG9zZWRCZWZvcmUsIGNsb3NlZEFmdGVyLCAndGhlIGNsb3NlZCBwcm9taXNlIHNob3Vs
ZCBub3QgY2hhbmdlIGlkZW50aXR5JykKLSAgICAgICAgY2xvc2VkQmVmb3JlLmNhdGNoKHRlc3Q1
LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IHRocm93IGU7IH0sICdyZWFkZXIuY2xvc2VkIHNob3Vs
ZCByZWplY3Qgd2l0aCBhIFR5cGVFcnJvcicpOwotICAgICAgICAgICAgdGVzdDUuZG9uZSgpOwot
ICAgICAgICB9KSk7Ci0gICAgfSk7Ci0KLSAgICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICB2
YXIgeyBzdHJlYW0sIHJlYWRlciB9ID0gZmFjdG9yeSgpOwotCi0gICAgICAgIHJlYWRlci5yZWxl
YXNlTG9jaygpOwotICAgICAgICBhc3NlcnRfZmFsc2Uoc3RyZWFtLmxvY2tlZCwgJ2xvY2tlZCBn
ZXR0ZXIgc2hvdWxkIHJldHVybiBmYWxzZScpOwotICAgIH0sICdyZWxlYXNpbmcgdGhlIGxvY2sg
c2hvdWxkIGNhdXNlIGxvY2tlZCB0byBiZWNvbWUgZmFsc2UnKTsKLQotICAgIHZhciB0ZXN0NiA9
IGFzeW5jX3Rlc3QoJ2NhbmNlbGluZyB2aWEgdGhlIHJlYWRlciBzaG91bGQgY2F1c2UgdGhlIHJl
YWRlciB0byBhY3QgY2xvc2VkJyk7Ci0gICAgdGVzdDYuc3RlcChmdW5jdGlvbigpIHsKLSAgICAg
ICAgdmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7Ci0KLSAgICAgICAgcmVhZGVyLmNhbmNlbCgp
OwotICAgICAgICByZWFkZXIucmVhZCgpLnRoZW4odGVzdDYuc3RlcF9mdW5jKGZ1bmN0aW9uKHIp
IHsKLSAgICAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IHVuZGVmaW5l
ZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpaW5nIGZyb20gdGhlIHJlYWRlciBzaG91bGQgZ2l2ZSBh
IGRvbmUgcmVzdWx0Jyk7Ci0gICAgICAgICAgICB0ZXN0Ni5kb25lKCk7Ci0gICAgICAgIH0pKTsK
LSAgICB9KTsKLQotICAgIHZhciB0ZXN0NyA9IGFzeW5jX3Rlc3QoJ2NhbmNlbGluZyB2aWEgdGhl
IHN0cmVhbSBzaG91bGQgZmFpbCcpOwotICAgIHRlc3Q3LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIHZhciB7IHN0cmVhbSB9ID0gZmFjdG9yeSgpOwotCi0gICAgICAgIHN0cmVhbS5jYW5jZWwo
KS5jYXRjaCh0ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgYXNzZXJ0
X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyB0aHJvdyBlOyB9LCAnY2FuY2Vs
KCkgc2hvdWxkIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yJyk7Ci0gICAgICAgICAgICB0ZXN0Ny5k
b25lKCk7Ci0gICAgICAgIH0pKTsKLSAgICB9KTsKLX07Ci0KLWZ1bmN0aW9uIHRlbXBsYXRlZFJT
Q2xvc2VkUmVhZGVyKGxhYmVsLCBmYWN0b3J5KSB7Ci0gICAgdGVzdChmdW5jdGlvbigpIHsKLSAg
ICB9LCAnUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlciB3aXRoICcgKyBsYWJlbCk7Ci0K
LSAgICB2YXIgIHRlc3QxID0gYXN5bmNfdGVzdCgncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGgg
eyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0nKTsKLSAgICB0ZXN0MS5zdGVwKGZ1bmN0
aW9uKCkgewotICAgICAgICB2YXIgeyByZWFkZXIgfSA9IGZhY3RvcnkoKTsKLQotICAgICAgICBy
ZWFkZXIucmVhZCgpLnRoZW4oCi0gICAgICAgICAgICB0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24o
dikgewotICAgICAgICAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHYsIHsgdmFsdWU6IHVu
ZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIGNvcnJlY3RseScp
OwotICAgICAgICAgICAgICAgIHRlc3QxLmRvbmUoKTsKLSAgICAgICAgICAgIH0pLAotICAgICAg
ICAgICAgdGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdyZWFk
KCkgc2hvdWxkIG5vdCByZXR1cm4gYSByZWplY3RlZCBwcm9taXNlJyk7IH0pCi0gICAgICAgICk7
Ci0gICAgfSk7Ci0KLSAgICB2YXIgdGVzdDIgPSBhc3luY190ZXN0KCdyZWFkKCkgbXVsdGlwbGUg
dGltZXMgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUg
fScpOwotICAgIHRlc3QyLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciB7IHJlYWRlciB9
ID0gZmFjdG9yeSgpOwotICAgICAgICB2YXIgcmVhZENvdW50ID0gMDsKLQotICAgICAgICByZWFk
ZXIucmVhZCgpLnRoZW4oCi0gICAgICAgICAgICB0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24odikg
ewotICAgICAgICAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHYsIHsgdmFsdWU6IHVuZGVm
aW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIGNvcnJlY3RseScpOwot
ICAgICAgICAgICAgICAgICsrcmVhZENvdW50OwotICAgICAgICAgICAgfSksCi0gICAgICAgICAg
ICB0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ3JlYWQoKSBz
aG91bGQgbm90IHJldHVybiBhIHJlamVjdGVkIHByb21pc2UnKTsgfSkKLSAgICAgICAgKTsKLSAg
ICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKAotICAgICAgICAgICAgdGVzdDIuc3RlcF9mdW5jKGZ1
bmN0aW9uKHYpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyh2LCB7IHZh
bHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCBjb3Jy
ZWN0bHknKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKCsrcmVhZENvdW50LCAyKTsK
LSAgICAgICAgICAgICAgICB0ZXN0Mi5kb25lKCk7Ci0gICAgICAgICAgICB9KSwKLSAgICAgICAg
ICAgIHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgncmVhZCgp
IHNob3VsZCBub3QgcmV0dXJuIGEgcmVqZWN0ZWQgcHJvbWlzZScpOyB9KQotICAgICAgICApOwot
ICAgIH0pOwotCi0gICAgdmFyIHRlc3QzID0gYXN5bmNfdGVzdCgncmVhZCgpIHNob3VsZCB3b3Jr
IHdoZW4gdXNlZCB3aXRoaW4gYW5vdGhlciByZWFkKCkgZnVsZmlsbCBjYWxsYmFjaycpOwotICAg
IHRlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9y
eSgpOwotCi0gICAgICAgIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rp
b24oKSB7IHJlYWRlci5yZWFkKCkudGhlbih0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IHRl
c3QzLmRvbmUoJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCcpOyB9KSk7IH0pKTsKLSAgICB9KTsKLQot
ICAgIHZhciB0ZXN0NCA9IGFzeW5jX3Rlc3QoJ2Nsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVu
ZGVmaW5lZCcpOwotICAgIHRlc3Q0LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciB7IHJl
YWRlciB9ID0gZmFjdG9yeSgpOwotCi0gICAgICAgIHJlYWRlci5jbG9zZWQudGhlbigKLSAgICAg
ICAgICAgIHRlc3Q0LnN0ZXBfZnVuYyhmdW5jdGlvbih2KSB7Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdyZWFkZXIgY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdp
dGggdW5kZWZpbmVkJyk7Ci0gICAgICAgICAgICAgICAgdGVzdDQuZG9uZSgpOwotICAgICAgICAg
ICAgfSksCi0gICAgICAgICAgICB0ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91
bnJlYWNoZWQoJ3JlYWRlciBjbG9zZWQgc2hvdWxkIG5vdCByZWplY3QnKTsgfSkKLSAgICAgICAg
KTsKLSAgICB9KTsKLQotICAgIHZhciB0ZXN0NSA9IGFzeW5jX3Rlc3QoJ3JlbGVhc2luZyB0aGUg
bG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5Jyk7
Ci0gICAgdGVzdDUuc3RlcChmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHByb21pc2VDYWxscyA9
IDA7Ci0gICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwotCi0gICAgICAgIHZhciBj
bG9zZWRCZWZvcmUgPSByZWFkZXIuY2xvc2VkOwotICAgICAgICByZWFkZXIucmVsZWFzZUxvY2so
KTsKLSAgICAgICAgdmFyIGNsb3NlZEFmdGVyID0gcmVhZGVyLmNsb3NlZDsKLQotICAgICAgICBh
c3NlcnRfbm90X2VxdWFscyhjbG9zZWRCZWZvcmUsIGNsb3NlZEFmdGVyLCAndGhlIGNsb3NlZCBw
cm9taXNlIHNob3VsZCBjaGFuZ2UgaWRlbnRpdHknKQotICAgICAgICBjbG9zZWRCZWZvcmUudGhl
bih0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24odikgewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyh2LCB1bmRlZmluZWQsICdyZWFkZXIuY2xvc2VkIGFjcXVpcmVkIGJlZm9yZSByZWxlYXNlIHNo
b3VsZCBmdWxmaWxsJyk7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKCsrcHJvbWlzZUNhbGxz
LCAxKTsKLSAgICAgICAgfSkpOwotICAgICAgICBjbG9zZWRBZnRlci5jYXRjaCh0ZXN0NS5zdGVw
X2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksIGZ1bmN0aW9uKCkgeyB0aHJvdyBlOyB9LCAncmVhZGVyLmNsb3NlZCBhY3F1aXJlZCBh
ZnRlciByZWxlYXNlIHNob3VsZCByZWplY3Qgd2l0aCBhIFR5cGVFcnJvcicpOwotICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscygrK3Byb21pc2VDYWxscywgMik7Ci0gICAgICAgICAgICB0ZXN0NS5k
b25lKCk7Ci0gICAgICAgIH0pKTsKLSAgICB9KTsKLQotICAgIHZhciB0ZXN0NiA9IGFzeW5jX3Rl
c3QoJ2NhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBl
YWNoIHRpbWUnKTsKLSAgICB0ZXN0Ni5zdGVwKGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgeyBy
ZWFkZXIgfSA9IGZhY3RvcnkoKTsKLSAgICAgICAgdmFyIHByb21pc2VDb3VudCA9IDA7Ci0gICAg
ICAgIHZhciBhbGxDaGVja2VkID0gZmFsc2U7Ci0KLSAgICAgICAgdmFyIGNhbmNlbFByb21pc2Ux
ID0gcmVhZGVyLmNhbmNlbCgpOwotICAgICAgICB2YXIgY2FuY2VsUHJvbWlzZTIgPSByZWFkZXIu
Y2FuY2VsKCk7Ci0gICAgICAgIHZhciBjbG9zZWRSZWFkZXJQcm9taXNlID0gcmVhZGVyLmNsb3Nl
ZDsKLQotICAgICAgICBjYW5jZWxQcm9taXNlMS50aGVuKHRlc3Q2LnN0ZXBfZnVuYyhmdW5jdGlv
bih2KSB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ2ZpcnN0IGNh
bmNlbCgpIGNhbGwgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKLSAgICAgICAgICAg
ICsrcHJvbWlzZUNvdW50OwotICAgICAgICB9KSk7Ci0gICAgICAgIGNhbmNlbFByb21pc2UyLnRo
ZW4odGVzdDYuc3RlcF9mdW5jKGZ1bmN0aW9uKHYpIHsKLSAgICAgICAgICAgIGFzc2VydF9lcXVh
bHModiwgdW5kZWZpbmVkLCAnc2Vjb25kIGNhbmNlbCgpIGNhbGwgc2hvdWxkIGZ1bGZpbGwgd2l0
aCB1bmRlZmluZWQnKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoKytwcm9taXNlQ291bnQs
IDIpOwotICAgICAgICAgICAgYXNzZXJ0X3RydWUoYWxsQ2hlY2tlZCk7Ci0gICAgICAgICAgICB0
ZXN0Ni5kb25lKCk7Ci0gICAgICAgIH0pKTsKLSAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY2Fu
Y2VsUHJvbWlzZTEsIGNhbmNlbFByb21pc2UyLCAnY2FuY2VsKCkgY2FsbHMgc2hvdWxkIHJldHVy
biBkaXN0aW5jdCBwcm9taXNlcycpOwotICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjYW5jZWxQ
cm9taXNlMSwgY2xvc2VkUmVhZGVyUHJvbWlzZSwgJ2NhbmNlbCgpIHByb21pc2UgMSBzaG91bGQg
YmUgZGlzdGluY3QgZnJvbSByZWFkZXIuY2xvc2VkJyk7Ci0gICAgICAgIGFzc2VydF9ub3RfZXF1
YWxzKGNhbmNlbFByb21pc2UyLCBjbG9zZWRSZWFkZXJQcm9taXNlLCAnY2FuY2VsKCkgcHJvbWlz
ZSAyIHNob3VsZCBiZSBkaXN0aW5jdCBmcm9tIHJlYWRlci5jbG9zZWQnKTsKLSAgICAgICAgYWxs
Q2hlY2tlZCA9IHRydWU7Ci0gICAgfSk7Ci19OwotCi1mdW5jdGlvbiB0ZW1wbGF0ZWRSU0Vycm9y
ZWRSZWFkZXIobGFiZWwsIGZhY3RvcnksIGVycm9yKSB7Ci0gICAgdGVzdChmdW5jdGlvbigpIHsK
LSAgICB9LCAnUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIgd2l0aCAnICsgbGFiZWwp
OwotCi0gICAgdmFyIHRlc3QxID0gYXN5bmNfdGVzdCgnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0
aCB0aGUgZXJyb3InKTsKLSAgICB0ZXN0MS5zdGVwKGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIg
eyByZWFkZXIgfSA9IGZhY3RvcnkoKTsKLQotICAgICAgICByZWFkZXIuY2xvc2VkLnRoZW4oCi0g
ICAgICAgICAgICB0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQo
J3N0cmVhbSBjbG9zZWQgc2hvdWxkIG5vdCBmdWxmaWxsJyk7IH0pLAotICAgICAgICAgICAgdGVz
dDEuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KHIsIGVycm9yLCAnc3RyZWFtIGNsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7
Ci0gICAgICAgICAgICAgICAgdGVzdDEuZG9uZSgpOwotICAgICAgICAgICAgfSkKLSAgICAgICAg
KTsKLSAgICB9KTsKLQotICAgIHZhciB0ZXN0MiA9IGFzeW5jX3Rlc3QoJ3JlbGVhc2luZyB0aGUg
bG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5Jyk7
Ci0gICAgdGVzdDIuc3RlcChmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHsgcmVhZGVyIH0gPSBm
YWN0b3J5KCk7Ci0KLSAgICAgICAgdmFyIGNsb3NlZEJlZm9yZSA9IHJlYWRlci5jbG9zZWQ7Ci0K
LSAgICAgICAgY2xvc2VkQmVmb3JlLmNhdGNoKHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7
Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIGVycm9yLCAncmVhZGVyLmNsb3NlZCBhY3F1
aXJlZCBiZWZvcmUgcmVsZWFzZSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7Ci0KLSAg
ICAgICAgICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOwotICAgICAgICAgICAgdmFyIGNsb3NlZEFm
dGVyID0gcmVhZGVyLmNsb3NlZDsKLQotICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY2xv
c2VkQmVmb3JlLCBjbG9zZWRBZnRlciwgJ3RoZSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgY2hhbmdl
IGlkZW50aXR5Jyk7Ci0KLSAgICAgICAgICAgIHJldHVybiBjbG9zZWRBZnRlci5jYXRjaCh0ZXN0
Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3Mo
bmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgdGhyb3cgZTsgfSwgJ3JlYWRlci5jbG9zZWQg
YWNxdWlyZWQgYWZ0ZXIgcmVsZWFzZSBzaG91bGQgcmVqZWN0IHdpdGggYSBUeXBlRXJyb3InKTsK
LSAgICAgICAgICAgICAgICB0ZXN0Mi5kb25lKCk7Ci0gICAgICAgICAgICB9KSk7Ci0gICAgICAg
IH0pKS5jYXRjaCh0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFjaGVk
KGUpOyB9KSk7Ci0gICAgfSk7Ci0KLSAgICB2YXIgdGVzdDMgPSBhc3luY190ZXN0KCdyZWFkKCkg
c2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOwotICAgIHRlc3QzLnN0ZXAoZnVuY3Rpb24o
KSB7Ci0gICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwotCi0gICAgICAgIHJlYWRl
ci5yZWFkKCkudGhlbigKLSAgICAgICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdyZWFkKCkgc2hvdWxkIG5vdCBmdWxm
aWxsJyk7Ci0gICAgICAgICAgICB9KSwKLSAgICAgICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5j
dGlvbihyKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyLCBlcnJvciwgJ3JlYWQo
KSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7Ci0gICAgICAgICAgICAgICAgdGVzdDMu
ZG9uZSgpOwotICAgICAgICAgICAgfSkKLSAgICAgICAgKTsKLSAgICB9KTsKLX07Ci0KLWZ1bmN0
aW9uIHRlbXBsYXRlZFJTVHdvQ2h1bmtzT3BlblJlYWRlcihsYWJlbCwgZmFjdG9yeSwgY2h1bmtz
KSB7Ci0gICAgdGVzdChmdW5jdGlvbigpIHsKLSAgICB9LCAnUnVubmluZyB0ZW1wbGF0ZWRSU1R3
b0NodW5rc09wZW5SZWFkZXIgd2l0aCAnICsgbGFiZWwpOwotCi0gICAgdmFyIHRlc3QxID0gYXN5
bmNfdGVzdCgnY2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aG91dCB3YWl0aW5nIHdpbGwgZXZlbnR1
YWxseSBnaXZlIGJvdGggY2h1bmtzJyk7Ci0gICAgdGVzdDEuc3RlcChmdW5jdGlvbigpIHsKLSAg
ICAgICAgdmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7Ci0gICAgICAgIHZhciBwcm9taXNlQ291
bnQgPSAwOwotCi0gICAgICAgIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MS5zdGVwX2Z1bmMoZnVu
Y3Rpb24ocikgewotICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTog
Y2h1bmtzWzBdLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgcmVzdWx0IHNob3VsZCBiZSBjb3JyZWN0
Jyk7Ci0gICAgICAgICAgICArK3Byb21pc2VDb3VudDsKLSAgICAgICAgfSkpOwotICAgICAgICBy
ZWFkZXIucmVhZCgpLnRoZW4odGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKLSAgICAgICAg
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IGNodW5rc1sxXSwgZG9uZTogZmFs
c2UgfSwgJ3NlY29uZCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLSAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMoKytwcm9taXNlQ291bnQsIDIpOwotICAgICAgICAgICAgdGVzdDEuZG9uZSgp
OwotICAgICAgICB9KSk7Ci0gICAgfSk7Ci0KLSAgICB2YXIgdGVzdDIgPSBhc3luY190ZXN0KCdj
YWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRoIHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90
aCBjaHVua3MnKTsKLSAgICB0ZXN0Mi5zdGVwKGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgeyBy
ZWFkZXIgfSA9IGZhY3RvcnkoKTsKLQotICAgICAgICByZWFkZXIucmVhZCgpLnRoZW4odGVzdDIu
c3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKLSAgICAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxz
KHIsIHsgdmFsdWU6IGNodW5rc1swXSwgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IHJlc3VsdCBzaG91
bGQgYmUgY29ycmVjdCcpOwotCi0gICAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVu
KHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X29i
amVjdF9lcXVhbHMociwgeyB2YWx1ZTogY2h1bmtzWzFdLCBkb25lOiBmYWxzZSB9LCAnc2Vjb25k
IHJlc3VsdCBzaG91bGQgYmUgY29ycmVjdCcpOwotICAgICAgICAgICAgICAgIHRlc3QyLmRvbmUo
KTsKLSAgICAgICAgICAgIH0pKTsKLSAgICAgICAgfSkpLmNhdGNoKHRlc3QyLnN0ZXBfZnVuYyhm
dW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0pKTsKLSAgICB9KTsKLQotICAgIHRl
c3QoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwotCi0g
ICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHJlYWRlci5yZWFkKCksIHJlYWRlci5yZWFkKCksICd0
aGUgcHJvbWlzZXMgcmV0dXJuZWQgc2hvdWxkIGJlIGRpc3RpbmN0Jyk7Ci0gICAgfSwgJ3JlYWQo
KSBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzIGVhY2ggdGltZScpOwotCi0gICAgdmFy
IHRlc3QzID0gYXN5bmNfdGVzdCgnY2FuY2VsKCkgYWZ0ZXIgYSByZWFkKCkgc2hvdWxkIHN0aWxs
IGdpdmUgdGhhdCBzaW5nbGUgcmVhZCByZXN1bHQnKTsKLSAgICB0ZXN0My5zdGVwKGZ1bmN0aW9u
KCkgewotICAgICAgICB2YXIgeyByZWFkZXIgfSA9IGZhY3RvcnkoKTsKLSAgICAgICAgdmFyIHBy
b21pc2VDb3VudCA9IDA7Ci0KLSAgICAgICAgcmVhZGVyLmNsb3NlZC50aGVuKHRlc3QzLnN0ZXBf
ZnVuYyhmdW5jdGlvbih2KSB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5l
ZCwgJ3JlYWRlciBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKLSAgICAg
ICAgICAgICsrcHJvbWlzZUNvdW50OwotICAgICAgICB9KSk7Ci0KLSAgICAgICAgcmVhZGVyLnJl
YWQoKS50aGVuKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAgICAgICBhc3Nl
cnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiBjaHVua3NbMF0sIGRvbmU6IGZhbHNlIH0sICdw
cm9taXNlIHJldHVybmVkIGJlZm9yZSBjYW5jZWxsYXRpb24gc2hvdWxkIGZ1bGZpbGwgd2l0aCBh
IGNodW5rJyk7Ci0gICAgICAgICAgICArK3Byb21pc2VDb3VudDsKLSAgICAgICAgfSkpOwotCi0g
ICAgICAgIHJlYWRlci5jYW5jZWwoKTsKLQotICAgICAgICByZWFkZXIucmVhZCgpLnRoZW4odGVz
dDMuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKLSAgICAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1
YWxzKHIsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncHJvbWlzZSByZXR1cm5l
ZCBhZnRlciBjYW5jZWxsYXRpb24gc2hvdWxkIGZ1bGZpbGwgd2l0aCBhbiBlbmQtb2Ytc3RyZWFt
IHNpZ25hbCcpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscygrK3Byb21pc2VDb3VudCwgMyk7
Ci0gICAgICAgICAgICB0ZXN0My5kb25lKCk7Ci0gICAgICAgIH0pKQotICAgIH0pOwotfTsKLQot
ZnVuY3Rpb24gdGVtcGxhdGVkUlNUd29DaHVua3NDbG9zZWRSZWFkZXIobGFiZWwsIGZhY3Rvcnks
IGNodW5rcykgewotICAgIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgfSwgJ1J1bm5pbmcgdGVtcGxh
dGVkUlNUd29DaHVua3NDbG9zZWRSZWFkZXIgd2l0aCAnICsgbGFiZWwpOwotCi0gICAgdmFyIHRl
c3QxID0gYXN5bmNfdGVzdCgndGhpcmQgcmVhZCgpLCB3aXRob3V0IHdhaXRpbmcsIHNob3VsZCBn
aXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9Jyk7Ci0gICAgdGVzdDEuc3RlcChm
dW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7Ci0gICAgICAg
IHZhciBwcm9taXNlQ291bnQgPSAwOwotCi0gICAgICAgIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0
MS5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgewotICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVh
bHMociwgeyB2YWx1ZTogY2h1bmtzWzBdLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgcmVzdWx0IHNo
b3VsZCBiZSBjb3JyZWN0Jyk7Ci0gICAgICAgICAgICArK3Byb21pc2VDb3VudDsKLSAgICAgICAg
fSkpOwotICAgICAgICByZWFkZXIucmVhZCgpLnRoZW4odGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9u
KHIpIHsKLSAgICAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IGNodW5r
c1sxXSwgZG9uZTogZmFsc2UgfSwgJ3NlY29uZCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsK
LSAgICAgICAgICAgICsrcHJvbWlzZUNvdW50OwotICAgICAgICB9KSk7Ci0gICAgICAgIHJlYWRl
ci5yZWFkKCkudGhlbih0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgewotICAgICAgICAgICAg
YXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0s
ICd0aGlyZCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLSAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoKytwcm9taXNlQ291bnQsIDMpOwotICAgICAgICAgICAgdGVzdDEuZG9uZSgpOwotICAg
ICAgICB9KSkKLSAgICB9KTsKLQotICAgIHZhciB0ZXN0MiA9IGFzeW5jX3Rlc3QoJ3RoaXJkIHJl
YWQsIHdpdGggd2FpdGluZywgc2hvdWxkIGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0
cnVlIH0nKTsKLSAgICB0ZXN0Mi5zdGVwKGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgeyByZWFk
ZXIgfSA9IGZhY3RvcnkoKTsKLQotICAgICAgICByZWFkZXIucmVhZCgpLnRoZW4odGVzdDIuc3Rl
cF9mdW5jKGZ1bmN0aW9uKHIpIHsKLSAgICAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIs
IHsgdmFsdWU6IGNodW5rc1swXSwgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IHJlc3VsdCBzaG91bGQg
YmUgY29ycmVjdCcpOwotCi0gICAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHRl
c3QyLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X29iamVj
dF9lcXVhbHMociwgeyB2YWx1ZTogY2h1bmtzWzFdLCBkb25lOiBmYWxzZSB9LCAnc2Vjb25kIHJl
c3VsdCBzaG91bGQgYmUgY29ycmVjdCcpOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRl
ci5yZWFkKCkudGhlbih0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgewotICAgICAgICAgICAg
ICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6
IHRydWUgfSwgJ3RoaXJkIHJlc3VsdCBzaG91bGQgYmUgY29ycmVjdCcpOwotICAgICAgICAgICAg
ICAgICAgICB0ZXN0Mi5kb25lKCk7Ci0gICAgICAgICAgICAgICAgfSkpOwotICAgICAgICAgICAg
fSkpOwotICAgICAgICB9KSkuY2F0Y2godGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNz
ZXJ0X3VucmVhY2hlZChlKTsgfSkpOwotICAgIH0pOwotCi0gICAgdmFyIHRlc3QzID0gYXN5bmNf
dGVzdCgnZHJhaW5pbmcgdGhlIHN0cmVhbSB2aWEgcmVhZCgpIHNob3VsZCBjYXVzZSB0aGUgcmVh
ZGVyIGNsb3NlZCBwcm9taXNlIHRvIGZ1bGZpbGwsIGJ1dCBsb2NrZWQgc3RheXMgdHJ1ZScpOwot
ICAgIHRlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciB7IHN0cmVhbSwgcmVhZGVy
IH0gPSBmYWN0b3J5KCk7Ci0KLSAgICAgICAgYXNzZXJ0X3RydWUoc3RyZWFtLmxvY2tlZCwgJ3N0
cmVhbSBzaG91bGQgc3RhcnQgbG9ja2VkJyk7Ci0KLSAgICAgICAgcmVhZGVyLmNsb3NlZC50aGVu
KAotICAgICAgICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKHYpIHsKLSAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ3JlYWRlciBjbG9zZWQgc2hvdWxkIGZ1
bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShzdHJl
YW0ubG9ja2VkLCAnc3RyZWFtIHNob3VsZCByZW1haW4gbG9ja2VkJyk7Ci0gICAgICAgICAgICAg
ICAgdGVzdDMuZG9uZSgpOwotICAgICAgICAgICAgfSksCi0gICAgICAgICAgICB0ZXN0My5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ3JlYWRlciBjbG9zZWQgc2hvdWxk
IG5vdCByZWplY3QnKTsgfSkKLSAgICAgICAgKTsKLQotICAgICAgICByZWFkZXIucmVhZCgpOwot
ICAgICAgICByZWFkZXIucmVhZCgpOwotICAgIH0pOwotCi0gICAgdmFyIHRlc3Q0ID0gYXN5bmNf
dGVzdCgncmVsZWFzaW5nIHRoZSBsb2NrIGFmdGVyIHRoZSBzdHJlYW0gaXMgY2xvc2VkIHNob3Vs
ZCBjYXVzZSBsb2NrZWQgdG8gYmVjb21lIGZhbHNlJyk7Ci0gICAgdGVzdDQuc3RlcChmdW5jdGlv
bigpIHsKLSAgICAgICAgdmFyIHsgc3RyZWFtLCByZWFkZXIgfSA9IGZhY3RvcnkoKTsKLQotICAg
ICAgICByZWFkZXIuY2xvc2VkLnRoZW4odGVzdDQuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgYXNzZXJ0X3RydWUoc3RyZWFtLmxvY2tlZCwgJ3RoZSBzdHJlYW0gc2hvdWxkIHN0
YXJ0IGxvY2tlZCcpOwotICAgICAgICAgICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7IC8vIFJlbGVh
c2luZyB0aGUgbG9jayBhZnRlciByZWFkZXIgY2xvc2VkIHNob3VsZCBub3QgdGhyb3cuCi0gICAg
ICAgICAgICBhc3NlcnRfZmFsc2Uoc3RyZWFtLmxvY2tlZCwgJ3RoZSBzdHJlYW0gc2hvdWxkIGVu
ZCB1bmxvY2tlZCcpOwotICAgICAgICAgICAgdGVzdDQuZG9uZSgpOwotICAgICAgICB9KSk7Ci0K
LSAgICAgICAgcmVhZGVyLnJlYWQoKTsKLSAgICAgICAgcmVhZGVyLnJlYWQoKTsKLSAgICB9KTsK
LQotICAgIHZhciB0ZXN0NSA9IGFzeW5jX3Rlc3QoJ3JlbGVhc2luZyB0aGUgbG9jayBzaG91bGQg
Y2F1c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVqZWN0IHdpdGggYSBUeXBlRXJyb3InKTsK
LSAgICB0ZXN0NS5zdGVwKGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgcHJvbWlzZUNhbGxzID0g
MDsKLSAgICAgICAgdmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7Ci0KLSAgICAgICAgcmVhZGVy
LnJlbGVhc2VMb2NrKCk7Ci0KLSAgICAgICAgcmVhZGVyLnJlYWQoKS5jYXRjaCh0ZXN0NS5zdGVw
X2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksIGZ1bmN0aW9uKCkgeyB0aHJvdyBlOyB9LCAnZmlyc3QgcmVhZCgpIHNob3VsZCByZWpl
Y3Qgd2l0aCBhIFR5cGVFcnJvcicpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscygrK3Byb21p
c2VDYWxscywgMSk7Ci0gICAgICAgIH0pKTsKLSAgICAgICAgcmVhZGVyLnJlYWQoKS5jYXRjaCh0
ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhu
ZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyB0aHJvdyBlOyB9LCAnc2Vjb25kIHJlYWQoKSBz
aG91bGQgcmVqZWN0IHdpdGggYSBUeXBlRXJyb3InKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMoKytwcm9taXNlQ2FsbHMsIDIpOwotICAgICAgICB9KSk7Ci0gICAgICAgIHJlYWRlci5yZWFk
KCkuY2F0Y2godGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgdGhyb3cgZTsgfSwgJ3RoaXJk
IHJlYWQoKSBzaG91bGQgcmVqZWN0IHdpdGggYSBUeXBlRXJyb3InKTsKLSAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMoKytwcm9taXNlQ2FsbHMsIDMpOwotICAgICAgICAgICAgdGVzdDUuZG9uZSgp
OwotICAgICAgICB9KSk7Ci0gICAgfSk7Ci0KLSAgICB2YXIgdGVzdDYgPSBhc3luY190ZXN0KCdy
ZWFkZXJcJ3MgY2xvc2VkIHByb3BlcnR5IGFsd2F5cyByZXR1cm5zIHRoZSBzYW1lIHByb21pc2Un
KTsKLSAgICB0ZXN0Ni5zdGVwKGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgeyByZWFkZXIsIHN0
cmVhbSB9ID0gZmFjdG9yeSgpOwotCi0gICAgICAgIHZhciByZWFkZXJDbG9zZWQgPSByZWFkZXIu
Y2xvc2VkOwotCi0gICAgICAgIGFzc2VydF9lcXVhbHMocmVhZGVyLmNsb3NlZCwgcmVhZGVyQ2xv
c2VkLCAnYWNjZXNzaW5nIHJlYWRlci5jbG9zZWQgdHdpY2UgaW4gc3VjY2Vzc2lvbiBnaXZlcyB0
aGUgc2FtZSB2YWx1ZScpOwotCi0gICAgICAgIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0Ni5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlYWRlci5jbG9z
ZWQsIHJlYWRlckNsb3NlZCwgJ3JlYWRlci5jbG9zZWQgaXMgdGhlIHNhbWUgYWZ0ZXIgcmVhZCgp
IGZ1bGZpbGxzJyk7Ci0KLSAgICAgICAgICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOwotCi0gICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHJlYWRlci5jbG9zZWQsIHJlYWRlckNsb3NlZCwgJ3JlYWRl
ci5jbG9zZWQgaXMgdGhlIHNhbWUgYWZ0ZXIgcmVsZWFzaW5nIHRoZSBsb2NrJyk7Ci0KLSAgICAg
ICAgICAgIHZhciBuZXdSZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7Ci0gICAgICAgICAgICBu
ZXdSZWFkZXIucmVhZCgpOwotCi0gICAgICAgICAgICB0ZXN0Ni5kb25lKCk7Ci0gICAgICAgIH0p
KTsKLQotICAgICAgICBhc3NlcnRfZXF1YWxzKHJlYWRlci5jbG9zZWQsIHJlYWRlckNsb3NlZCwg
J3JlYWRlci5jbG9zZWQgaXMgdGhlIHNhbWUgYWZ0ZXIgY2FsbGluZyByZWFkKCknKTsKLSAgICB9
KTsKLX07Ci0KLXRlbXBsYXRlZFJTRW1wdHkoJ1JlYWRhYmxlU3RyZWFtIChlbXB0eSknLCBmdW5j
dGlvbigpIHsKLSAgICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci19KTsKLQotdGVtcGxh
dGVkUlNFbXB0eVJlYWRlcignUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXInLCBmdW5jdGlv
bigpIHsKLSAgICByZXR1cm4gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihuZXcgUmVhZGFibGVTdHJl
YW0oKSk7Ci19KTsKLQogdGVtcGxhdGVkUlNDbG9zZWQoJ1JlYWRhYmxlU3RyZWFtIChjbG9zZWQg
dmlhIGNhbGwgaW4gc3RhcnQpJywgZnVuY3Rpb24oKSB7CiAgICAgcmV0dXJuIG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CiAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CkBAIC0xMDU3LDQzICszNTMs
MTEgQEAgdGVtcGxhdGVkUlNDbG9zZWQoJ1JlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbGwg
aW4gc3RhcnQpJywgZnVuY3Rpb24oKSB7CiAgICAgfSk7CiB9KTsKIAotdGVtcGxhdGVkUlNDbG9z
ZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJl
YWRlciknLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgY29udHJvbGxlcjsKLSAgICB2YXIgc3RyZWFt
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAg
ICAgICAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgICAgICB9Ci0gICAgfSk7Ci0gICAgY29udHJv
bGxlci5jbG9zZSgpOwotICAgIHZhciByZXN1bHQgPSBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKHN0
cmVhbSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0pOwotCi10ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRl
cignUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpJywg
ZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGNvbnRyb2xsZXI7Ci0gICAgdmFyIHN0cmVhbSA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAg
ICBjb250cm9sbGVyID0gYzsKLSAgICAgICAgfQotICAgIH0pOwotICAgIHZhciByZXN1bHQgPSBz
dHJlYW1BbmREZWZhdWx0UmVhZGVyKHN0cmVhbSk7Ci0gICAgY29udHJvbGxlci5jbG9zZSgpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19KTsKLQogdGVtcGxhdGVkUlNDbG9zZWQoJ1JlYWRhYmxlU3Ry
ZWFtIChjbG9zZWQgdmlhIGNhbmNlbCknLCBmdW5jdGlvbigpIHsKICAgICB2YXIgc3RyZWFtID0g
bmV3IFJlYWRhYmxlU3RyZWFtKCk7CiAgICAgc3RyZWFtLmNhbmNlbCgpOwogICAgIHJldHVybiBz
dHJlYW07CiB9KTsKLQotdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIHJl
YWRlciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpJywgZnVuY3Rpb24o
KSB7Ci0gICAgdmFyIHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotICAgIHZhciByZXN1
bHQgPSBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKHN0cmVhbSk7Ci0gICAgcmVzdWx0LnJlYWRlci5j
YW5jZWwoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfSk7Ci0KIHZhciB0aGVFcnJvciA9IG5ldyBF
cnJvcignYm9vIScpOwogCiB0ZW1wbGF0ZWRSU0Vycm9yZWQoJ1JlYWRhYmxlU3RyZWFtIChlcnJv
cmVkIHZpYSBjYWxsIGluIHN0YXJ0KScsIGZ1bmN0aW9uKCkgewpAQCAtMTEwNSwxNSArMzY5LDYg
QEAgdGVtcGxhdGVkUlNFcnJvcmVkKCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBp
biBzdGFydCknLCBmdW5jdGlvbigpIHsKICAgICB0aGVFcnJvcgogKTsKIAotdGVtcGxhdGVkUlNF
cnJvcmVkU3luY09ubHkoJ1JlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0
KScsIGZ1bmN0aW9uKCkgewotICAgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAg
ICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgYy5lcnJvcih0aGVFcnJvcik7Ci0g
ICAgICAgIH0KLSAgICB9KX0sCi0gICAgdGhlRXJyb3IKLSk7Ci0KIHRlbXBsYXRlZFJTRXJyb3Jl
ZCgnUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21p
c2UgaW4gc3RhcnQpJywgZnVuY3Rpb24oKSB7CiAgICAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVh
bSh7CiAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHsKQEAgLTExMzAsNDkgKzM4NSw4IEBAIHRl
bXBsYXRlZFJTRXJyb3JlZEFzeW5jT25seSgnUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJl
dHVybmluZyBhIHJlamVjdGVkIHByCiAgICAgdGhlRXJyb3IKICk7CiAKLXRlbXBsYXRlZFJTRXJy
b3JlZFJlYWRlcignUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVj
dGVkIHByb21pc2UgaW4gc3RhcnQpIHJlYWRlcicsIGZ1bmN0aW9uKCkgewotICAgIHJldHVybiBz
dHJlYW1BbmREZWZhdWx0UmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0
OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh0aGVFcnJv
cik7Ci0gICAgICAgIH0KLSAgICB9KSl9LAotICAgIHRoZUVycm9yCi0pOwotCi10ZW1wbGF0ZWRS
U0Vycm9yZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBiZWZvcmUgZ2V0
dGluZyByZWFkZXIpJywgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGNvbnRyb2xsZXI7Ci0gICAgdmFy
IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihj
KSB7Ci0gICAgICAgICAgICBjb250cm9sbGVyID0gYzsKLSAgICAgICAgfQotICAgIH0pOwotICAg
IGNvbnRyb2xsZXIuZXJyb3IodGhlRXJyb3IpOwotICAgIHJldHVybiBzdHJlYW1BbmREZWZhdWx0
UmVhZGVyKHN0cmVhbSk7Ci19LCB0aGVFcnJvcik7Ci0KLXRlbXBsYXRlZFJTRXJyb3JlZFJlYWRl
cignUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGFmdGVyIGdldHRpbmcgcmVhZGVyKScs
IGZ1bmN0aW9uKCkgewotICAgIHZhciBjb250cm9sbGVyOwotICAgIHZhciByZXN1bHQgPSBzdHJl
YW1BbmREZWZhdWx0UmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBm
dW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBjb250cm9sbGVyID0gYzsKLSAgICAgICAgfQotICAg
IH0pKTsKLSAgICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfSwgdGhlRXJyb3IpOwotCiB2YXIgY2h1bmtzID0gWydhJywgJ2InXTsKIAotdGVtcGxhdGVk
UlNUd29DaHVua3NPcGVuUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVl
ZCwgc3RpbGwgb3BlbikgcmVhZGVyJywgZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIHN0cmVhbUFu
ZERlZmF1bHRSZWFkZXIobmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0
aW9uKGMpIHsKLSAgICAgICAgICAgIGMuZW5xdWV1ZShjaHVua3NbMF0pOwotICAgICAgICAgICAg
Yy5lbnF1ZXVlKGNodW5rc1sxXSk7Ci0gICAgICAgIH0KLSAgICB9KSl9LAotICAgIGNodW5rcwot
KTsKLQogdGVtcGxhdGVkUlNUd29DaHVua3NDbG9zZWQoJ1JlYWRhYmxlU3RyZWFtICh0d28gY2h1
bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCknLCBmdW5jdGlvbigpIHsKICAgICByZXR1cm4gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKQEAgLTEyMTAs
MjIgKzQyNCw0IEBAIHRlbXBsYXRlZFJTVHdvQ2h1bmtzQ2xvc2VkKCdSZWFkYWJsZVN0cmVhbSAo
dHdvIGNodW5rcyBlbnF1ZXVlZCB2aWEgcHVsbCwgdGhlbiBjCiB9LAogY2h1bmtzCiApOwotCi10
ZW1wbGF0ZWRSU1R3b0NodW5rc0Nsb3NlZFJlYWRlcignUmVhZGFibGVTdHJlYW0gKHR3byBjaHVu
a3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXInLCBmdW5jdGlvbigpIHsKLSAgICB2YXIg
ZG9DbG9zZTsKLSAgICB2YXIgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAg
c3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGMuZW5xdWV1ZShjaHVua3NbMF0pOwot
ICAgICAgICAgICAgYy5lbnF1ZXVlKGNodW5rc1sxXSk7Ci0gICAgICAgICAgICBkb0Nsb3NlID0g
Yy5jbG9zZS5iaW5kKGMpOwotICAgICAgICB9Ci0gICAgfSk7Ci0gICAgdmFyIHJlc3VsdCA9IHN0
cmVhbUFuZERlZmF1bHRSZWFkZXIoc3RyZWFtKTsKLSAgICBkb0Nsb3NlKCk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0sIGNodW5rcyk7Ci0KLWZ1bmN0aW9uIHN0cmVhbUFuZERlZmF1bHRSZWFkZXIo
c3RyZWFtKSB7Ci0gIHJldHVybiB7IHN0cmVhbTogc3RyZWFtLCByZWFkZXI6IHN0cmVhbS5nZXRS
ZWFkZXIoKSB9OwotfQogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbCBiL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzhkNjM4NWJiNzY5NGIyM2U0M2ZiOTQ1
MDhkNWRmNWViNzAyMDA3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRh
YmxlLXN0cmVhbS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODgwICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPHNjcmlwdCBzcmM9Jy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyc+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0nLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Jz48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSdyZXNvdXJjZXMvc3RyZWFtcy11dGlscy5qcyc+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0nLi4vLi4vcmVzb3VyY2VzL2djLmpzJz48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci0vLyBUaGlzIGlzIHVwZGF0ZWQgdGlsbCBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdn
L3N0cmVhbXMvY29tbWl0L2VjNWZmYTAzNjMwOGQ5ZjYzNTBkMjk0NjU2MGQ0OGNkYmYwOTA5MzkK
LQotdGVzdChmdW5jdGlvbigpIHsKLSAgICBuZXcgUmVhZGFibGVTdHJlYW0oKTsgLy8gUmVhZGFi
bGVTdHJlYW0gY29uc3RydWN0ZWQgd2l0aCBubyBwYXJhbWV0ZXJzLgotICAgIG5ldyBSZWFkYWJs
ZVN0cmVhbSh7IH0pOyAvLyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RlZCB3aXRoIGFuIGVtcHR5
IG9iamVjdCBhcyBwYXJhbWV0ZXIuCi0gICAgbmV3IFJlYWRhYmxlU3RyZWFtKHVuZGVmaW5lZCk7
IC8vIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdGVkIHdpdGggdW5kZWZpbmVkIGFzIHBhcmFtZXRl
ci4KLSAgICB2YXIgeDsKLSAgICBuZXcgUmVhZGFibGVTdHJlYW0oeCkgLy8gUmVhZGFibGVTdHJl
YW0gY29uc3RydWN0ZWQgd2l0aCBhbiB1bmRlZmluZWQgdmFyaWFibGUgYXMgcGFyYW1ldGVyLgot
fSwgJ1JlYWRhYmxlU3RyZWFtIGNhbiBiZSBjb25zdHJ1Y3RlZCB3aXRoIG5vIGVycm9ycycpOwot
Ci10ZXN0KGZ1bmN0aW9uKCkgewotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBm
dW5jdGlvbigpIHsgbmV3IFJlYWRhYmxlU3RyZWFtKG51bGwpOyB9LCAnY29uc3RydWN0b3Igc2hv
dWxkIHRocm93IHdoZW4gdGhlIHNvdXJjZSBpcyBudWxsJyk7Ci19LCAnUmVhZGFibGVTdHJlYW0g
Y2FuXCd0IGJlIGNvbnN0cnVjdGVkIHdpdGggZ2FyYmFnZScpOwotCi10ZXN0KGZ1bmN0aW9uKCkg
ewotICAgIHZhciBtZXRob2RzID0gWydjYW5jZWwnLCAnY29uc3RydWN0b3InLCAnZ2V0UmVhZGVy
JywgJ3BpcGVUaHJvdWdoJywgJ3BpcGVUbycsICd0ZWUnXTsKLSAgICB2YXIgcHJvcGVydGllcyA9
IG1ldGhvZHMuY29uY2F0KFsnbG9ja2VkJ10pLnNvcnQoKTsKLQotICAgIHZhciBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSgpOwotICAgIHZhciBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihy
cyk7Ci0KLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVz
KHByb3RvKS5zb3J0KCksIHByb3BlcnRpZXMsICdzaG91bGQgaGF2ZSBhbGwgdGhlIGNvcnJlY3Qg
bWV0aG9kcycpOwotCi0gICAgZm9yICh2YXIgbSBvZiBtZXRob2RzKSB7Ci0gICAgICAgIHZhciBw
cm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIG0pOwotICAg
ICAgICBhc3NlcnRfZmFsc2UocHJvcERlc2MuZW51bWVyYWJsZSwgJ21ldGhvZCBzaG91bGQgYmUg
bm9uLWVudW1lcmFibGUnKTsKLSAgICAgICAgYXNzZXJ0X3RydWUocHJvcERlc2MuY29uZmlndXJh
YmxlLCAnbWV0aG9kIHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsKLSAgICAgICAgYXNzZXJ0X3Ry
dWUocHJvcERlc2Mud3JpdGFibGUsICdtZXRob2Qgc2hvdWxkIGJlIHdyaXRhYmxlJyk7Ci0gICAg
ICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJzW21dLCAnZnVuY3Rpb24nLCAnc2hvdWxkIGhhdmUg
YmUgYSBtZXRob2QnKTsKLSAgICB9Ci0KLSAgICB2YXIgbG9ja2VkUHJvcERlc2MgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCAnbG9ja2VkJyk7Ci0gICAgYXNzZXJ0X2Zh
bHNlKGxvY2tlZFByb3BEZXNjLmVudW1lcmFibGUsICdsb2NrZWQgc2hvdWxkIGJlIG5vbi1lbnVt
ZXJhYmxlJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhsb2NrZWRQcm9wRGVzYy53cml0YWJsZSwgdW5k
ZWZpbmVkLCAnbG9ja2VkIHNob3VsZCBub3QgYmUgYSBkYXRhIHByb3BlcnR5Jyk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyh0eXBlb2YgbG9ja2VkUHJvcERlc2MuZ2V0LCAnZnVuY3Rpb24nLCAnbG9ja2Vk
IHNob3VsZCBoYXZlIGEgZ2V0dGVyJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhsb2NrZWRQcm9wRGVz
Yy5zZXQsIHVuZGVmaW5lZCwgJ2xvY2tlZCBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXInKTsKLSAg
ICBhc3NlcnRfdHJ1ZShsb2NrZWRQcm9wRGVzYy5jb25maWd1cmFibGUsICdsb2NrZWQgc2hvdWxk
IGJlIGNvbmZpZ3VyYWJsZScpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhycy5jYW5jZWwubGVuZ3Ro
LCAxLCAnY2FuY2VsIHNob3VsZCBoYXZlIDEgcGFyYW1ldGVyJyk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhycy5jb25zdHJ1Y3Rvci5sZW5ndGgsIDAsICdjb25zdHJ1Y3RvciBzaG91bGQgaGF2ZSBubyBw
YXJhbWV0ZXJzJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhycy5nZXRSZWFkZXIubGVuZ3RoLCAwLCAn
Z2V0UmVhZGVyIHNob3VsZCBoYXZlIG5vIHBhcmFtZXRlcnMnKTsKLSAgICBhc3NlcnRfZXF1YWxz
KHJzLnBpcGVUaHJvdWdoLmxlbmd0aCwgMiwgJ3BpcGVUaHJvdWdoIHNob3VsZCBoYXZlIDIgcGFy
YW1ldGVycycpOwotICAgIGFzc2VydF9lcXVhbHMocnMucGlwZVRvLmxlbmd0aCwgMSwgJ3BpcGVU
byBzaG91bGQgaGF2ZSAxIHBhcmFtZXRlcicpOwotICAgIGFzc2VydF9lcXVhbHMocnMudGVlLmxl
bmd0aCwgMCwgJ3RlZSBzaG91bGQgaGF2ZSBubyBwYXJhbWV0ZXJzJyk7Ci19LCAnUmVhZGFibGVT
dHJlYW0gaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVydGll
cycpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJv
cigpLCBmdW5jdGlvbigpIHsKLSAgICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsgc3RhcnQ6ICdw
b3RhdG8nfSk7Ci0gICAgfSwgJ2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHN0YXJ0IGlz
IG5vdCBhIGZ1bmN0aW9uJyk7Ci19LCAnUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igc2hvdWxk
IHRocm93IGZvciBub24tZnVuY3Rpb24gc3RhcnQgYXJndW1lbnRzJyk7Ci0KLXRlc3QoZnVuY3Rp
b24oKSB7Ci0gICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsgY2FuY2VsOiAnMid9KTsgLy8gQ29uc3Ry
dWN0b3Igc2hvdWxkIG5vdCB0aHJvdyB3aGVuIGNhbmNlbCBpcyBub3QgYSBmdW5jdGlvbi4KLX0s
ICdSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBj
YW5jZWwgYXJndW1lbnQnKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICBuZXcgUmVhZGFibGVT
dHJlYW0oeyBwdWxsOiB7IH0gfSk7IC8vIENvbnN0cnVjdG9yIHNob3VsZCBub3QgdGhyb3cgd2hl
biBwdWxsIGlzIG5vdCBhIGZ1bmN0aW9uLgotfSwgJ1JlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9y
IGNhbiBnZXQgaW5pdGlhbCBnYXJiYWdlIGFzIHB1bGwgYXJndW1lbnQnKTsKLQotdGVzdChmdW5j
dGlvbigpIHsKLSAgICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxzZTsKLSAgICB2YXIgc291cmNlID0g
ewotICAgICAgICBzdGFydDogZnVuY3Rpb24oY29udHJvbGxlcikgewotICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyh0aGlzLCBzb3VyY2UsICdzb3VyY2UgaXMgdGhpcyBkdXJpbmcgc3RhcnQnKTsK
LQotICAgICAgICAgICAgdmFyIG1ldGhvZHMgPSBbJ2Nsb3NlJywgJ2VucXVldWUnLCAnZXJyb3In
LCAnY29uc3RydWN0b3InXTsKLSAgICAgICAgICAgIHZhciBwcm9wZXJ0aWVzID0gWydkZXNpcmVk
U2l6ZSddLmNvbmNhdChtZXRob2RzKS5zb3J0KCk7Ci0gICAgICAgICAgICB2YXIgcHJvdG8gPSBP
YmplY3QuZ2V0UHJvdG90eXBlT2YoY29udHJvbGxlcik7Ci0KLSAgICAgICAgICAgIGFzc2VydF9h
cnJheV9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvdG8pLnNvcnQoKSwgcHJv
cGVydGllcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBjb250cm9sbGVy
IHNob3VsZCBoYXZlIHRoZSByaWdodCBwcm9wZXJ0aWVzJyk7Ci0KLSAgICAgICAgICAgIGZvciAo
dmFyIG0gb2YgbWV0aG9kcykgewotICAgICAgICAgICAgICAgIHZhciBwcm9wRGVzYyA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIG0pOwotICAgICAgICAgICAgICAgIGFz
c2VydF9lcXVhbHModHlwZW9mIGNvbnRyb2xsZXJbbV0sICdmdW5jdGlvbicsIGBzaG91bGQgaGF2
ZSBhICR7bX0gbWV0aG9kYCk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKHByb3BEZXNj
LmVudW1lcmFibGUsIG0gKyAiIHNob3VsZCBiZSBub24tZW51bWVyYWJsZSIpOwotICAgICAgICAg
ICAgICAgIGFzc2VydF90cnVlKHByb3BEZXNjLmNvbmZpZ3VyYWJsZSwgbSArICIgc2hvdWxkIGJl
IGNvbmZpZ3VyYWJsZSIpOwotICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKHByb3BEZXNjLndy
aXRhYmxlLCBtICsgIiBzaG91bGQgYmUgd3JpdGFibGUiKTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgdmFyIGRlc2lyZWRTaXplUHJvcERlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKHByb3RvLCAnZGVzaXJlZFNpemUnKTsKLSAgICAgICAgICAgIGFzc2VydF9mYWxz
ZShkZXNpcmVkU2l6ZVByb3BEZXNjLmVudW1lcmFibGUsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUg
bm9uLWVudW1lcmFibGUnKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzaXJlZFNpemVQ
cm9wRGVzYy53cml0YWJsZSwgdW5kZWZpbmVkLCAnZGVzaXJlZFNpemUgc2hvdWxkIG5vdCBiZSBh
IGRhdGEgcHJvcGVydHknKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGRlc2ly
ZWRTaXplUHJvcERlc2MuZ2V0LCAnZnVuY3Rpb24nLCAnZGVzaXJlZFNpemUgc2hvdWxkIGhhdmUg
YSBnZXR0ZXInKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzaXJlZFNpemVQcm9wRGVz
Yy5zZXQsIHVuZGVmaW5lZCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBub3QgaGF2ZSBhIHNldHRlcicp
OwotICAgICAgICAgICAgYXNzZXJ0X3RydWUoZGVzaXJlZFNpemVQcm9wRGVzYy5jb25maWd1cmFi
bGUsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7Ci0KLSAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5jbG9zZS5sZW5ndGgsIDAsICdjbG9zZSBzaG91bGQg
aGF2ZSBubyBwYXJhbWV0ZXJzJyk7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xs
ZXIuY29uc3RydWN0b3IubGVuZ3RoLCAxLCAnY29uc3RydWN0b3Igc2hvdWxkIGhhdmUgMSBwYXJh
bWV0ZXInKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5lbnF1ZXVlLmxl
bmd0aCwgMSwgJ2VucXVldWUgc2hvdWxkIGhhdmUgMSBwYXJhbWV0ZXInKTsKLSAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5lcnJvci5sZW5ndGgsIDEsICdlcnJvciBzaG91bGQg
aGF2ZSAxIHBhcmFtZXRlcicpOwotCi0gICAgICAgICAgICBzdGFydENhbGxlZCA9IHRydWU7Ci0g
ICAgICAgIH0KLSAgICB9OwotCi0gICAgbmV3IFJlYWRhYmxlU3RyZWFtKHNvdXJjZSk7Ci0gICAg
YXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3Vs
ZCBiZSBjYWxsZWQgd2l0aCB0aGUgcHJvcGVyIHBhcmFtZXRlcnMnKTsKLQotdGVzdChmdW5jdGlv
bigpIHsKLSAgICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxzZTsKLSAgICB2YXIgc291cmNlID0gewot
ICAgICAgICBzdGFydDogZnVuY3Rpb24oY29udHJvbGxlcikgewotICAgICAgICAgICAgdmFyIHBy
b3BlcnRpZXMgPSBbJ2Nsb3NlJywgJ2NvbnN0cnVjdG9yJywgJ2Rlc2lyZWRTaXplJywgJ2VucXVl
dWUnLCAnZXJyb3InXTsKLSAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoT2JqZWN0Lmdl
dE93blByb3BlcnR5TmFtZXMoT2JqZWN0LmdldFByb3RvdHlwZU9mKGNvbnRyb2xsZXIpKS5zb3J0
KCksIHByb3BlcnRpZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm90b3R5
cGUgc2hvdWxkIGhhdmUgdGhlIHJpZ2h0IHByb3BlcnRpZXMnKTsKLSAgICAgICAgICAgIGNvbnRy
b2xsZXIudGVzdCA9ICcnOwotICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhPYmplY3Qu
Z2V0T3duUHJvcGVydHlOYW1lcyhPYmplY3QuZ2V0UHJvdG90eXBlT2YoY29udHJvbGxlcikpLnNv
cnQoKSwgcHJvcGVydGllcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3Rv
dHlwZSBzaG91bGQgc3RpbGwgaGF2ZSB0aGUgcmlnaHQgcHJvcGVydGllcycpOwotICAgICAgICAg
ICAgYXNzZXJ0X25vdF9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoY29udHJvbGxl
cikuaW5kZXhPZigndGVzdCcpLCAtMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICci
dGVzdCIgc2hvdWxkIGJlIGEgcHJvcGVydHkgb2YgdGhlIGNvbnRyb2xsZXInKTsKLQotICAgICAg
ICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHZhciBy
cyA9IG5ldyBSZWFkYWJsZVN0cmVhbShzb3VyY2UpOwotICAgIGFzc2VydF90cnVlKHN0YXJ0Q2Fs
bGVkKTsKLX0sICdSZWFkYWJsZVN0cmVhbSBzdGFydCBjb250cm9sbGVyIHBhcmFtZXRlciBzaG91
bGQgYmUgZXh0ZW5zaWJsZScpOwotCi12YXIgdGVzdDEgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0
cmVhbSBzaG91bGQgYmUgYWJsZSB0byBjYWxsIHN0YXJ0IG1ldGhvZCB3aXRoaW4gcHJvdG90eXBl
IGNoYWluIG9mIGl0cyBzb3VyY2UnKTsKLXRlc3QxLnN0ZXAoZnVuY3Rpb24oKQotewotICAgIGZ1
bmN0aW9uIFNpbXBsZVN0cmVhbVNvdXJjZSgpIHsKLSAgICB9OwotICAgIFNpbXBsZVN0cmVhbVNv
dXJjZS5wcm90b3R5cGUgPSB7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgIHRlc3QxLmRvbmUoJ3N0YXJ0IHNob3VsZCBiZSBjYWxsZWQnKTsKLSAgICAgICAgfSwKLSAg
ICB9Ci0KLSAgICBuZXcgUmVhZGFibGVTdHJlYW0obmV3IFNpbXBsZVN0cmVhbVNvdXJjZSgpKTsK
LX0pOwotCi12YXIgdGVzdDIgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91
bGQgYmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNlJyk7Ci10ZXN0Mi5zdGVwKGZ1bmN0aW9uKCkK
LXsKLSAgICB2YXIgcmVhZENhbGxlZCA9IGZhbHNlOwotICAgIHZhciBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICByZXR1
cm4gbmV3IFByb21pc2UodGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkg
ewotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICAgICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAgICAgICAgICAgICAg
ICAgYy5jbG9zZSgpOwotICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAg
ICAgICAgfSksIDUwMCk7Ci0gICAgICAgICAgICB9KSk7Ci0gICAgICAgIH0sCi0gICAgfSk7Ci0K
LSAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgICByZWFkZXIucmVhZCgpLnRo
ZW4odGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKLSAgICAgICAgcmVhZENhbGxlZCA9IHRy
dWU7Ci0gICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTog
ZmFsc2UgfSwgJ3ZhbHVlIHJlYWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQnKTsKLSAgICB9
KSk7Ci0KLSAgICByZWFkZXIuY2xvc2VkLnRoZW4odGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
ewotICAgICAgICBhc3NlcnRfdHJ1ZShyZWFkQ2FsbGVkKTsKLSAgICAgICAgdGVzdDIuZG9uZSgn
c3RyZWFtIHNob3VsZCBjbG9zZSBzdWNjZXNzZnVsbHknKTsKLSAgICB9KSk7Ci19KTsKLQotdmFy
IHRlc3QzID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUg
dG8gcmV0dXJuIGEgcHJvbWlzZSBhbmQgcmVqZWN0IGl0Jyk7Ci10ZXN0My5zdGVwKGZ1bmN0aW9u
KCkKLXsKLSAgICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ3JlamVjdGVkIScpOwotICAgIHZh
ciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSh0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24o
cmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICAgICAgc2V0VGltZW91dCh0ZXN0My5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlamVjdCh0aGVFcnJvcik7
Ci0gICAgICAgICAgICAgICAgfSksIDUwMCk7Ci0gICAgICAgICAgICB9KSk7Ci0gICAgICAgIH0s
Ci0gICAgfSk7Ci0KLSAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQuY2F0Y2godGVzdDMuc3RlcF9m
dW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ3By
b21pc2Ugc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdGhlIHNhbWUgZXJyb3InKTsKLSAgICAgICAg
dGVzdDMuZG9uZSgpOwotICAgIH0pKTsKLX0pOwotCi12YXIgdGVzdDQgPSBhc3luY190ZXN0KCdS
ZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBlbnF1ZXVlIGRpZmZlcmVudCBvYmplY3Rz
LicpOwotdGVzdDQuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgcmVhZENhbGxzID0gMDsKLSAg
ICB2YXIgb2JqZWN0cyA9IFsKLSAgICB7IHBvdGF0bzogJ0dpdmUgbWUgbW9yZSEnfSwKLSAgICAn
dGVzdCcsCi0gICAgMQotICAgIF07Ci0KLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
ewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgZm9yICh2YXIgbyBv
ZiBvYmplY3RzKSB7Ci0gICAgICAgICAgICAgICAgYy5lbnF1ZXVlKG8pOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgYy5jbG9zZSgpOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICB2YXIg
cmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgICByZWFkZXIucmVhZCgpLnRoZW4odGVzdDQu
c3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKLSAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwg
eyB2YWx1ZTogb2JqZWN0c1tyZWFkQ2FsbHMrK10sIGRvbmU6IGZhbHNlIH0sICd2YWx1ZSByZWFk
IHNob3VsZCBiZSB0aGUgb25lIGVucXVldWVkJyk7Ci0gICAgfSkpOwotCi0gICAgcmVhZGVyLnJl
YWQoKS50aGVuKHRlc3Q0LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IG9iamVjdHNbcmVhZENhbGxzKytdLCBkb25lOiBmYWxz
ZSB9LCAndmFsdWUgcmVhZCBzaG91bGQgYmUgdGhlIG9uZSBlbnF1ZXVlZCcpOwotICAgIH0pKTsK
LQotICAgIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgewot
ICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiBvYmplY3RzW3JlYWRDYWxs
cysrXSwgZG9uZTogZmFsc2UgfSwgJ3ZhbHVlIHJlYWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5xdWV1
ZWQnKTsKLSAgICB9KSk7Ci0KLSAgICByZWFkZXIuY2xvc2VkLnRoZW4odGVzdDQuc3RlcF9mdW5j
KGZ1bmN0aW9uKCkgewotICAgICAgICBhc3NlcnRfZXF1YWxzKHJlYWRDYWxscywgMyk7Ci0gICAg
ICAgIHRlc3Q0LmRvbmUoJ3N0cmVhbSBzaG91bGQgY2xvc2UgY29ycmVjdGx5IGNvcnJlY3RseScp
OwotICAgIH0pKTsKLX0pOwotCi12YXIgdGVzdDUgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVh
bTogaWYgcHVsbCByZWplY3RzLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbScpOwotdGVzdDUu
c3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ3B1bGwgZmFpbHVy
ZScpOwotICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHB1bGw6IGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTsKLSAg
ICAgICAgfQotICAgIH0pOwotCi0gICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0g
ICAgdmFyIGNsb3NlZCA9IGZhbHNlOwotICAgIHZhciByZWFkID0gZmFsc2U7Ci0KLSAgICByZWFk
ZXIuY2xvc2VkLmNhdGNoKHRlc3Q1LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAgIGNs
b3NlZCA9IHRydWU7Ci0gICAgICAgIGFzc2VydF90cnVlKHJlYWQpOwotICAgICAgICBhc3NlcnRf
ZXF1YWxzKGUsIGVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgdGhyb3duIGVy
cm9yJyk7Ci0gICAgICAgIHRlc3Q1LmRvbmUoKTsKLSAgICB9KSk7Ci0KLSAgICByZWFkZXIucmVh
ZCgpLmNhdGNoKHRlc3Q1LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAgIHJlYWQgPSB0
cnVlOwotICAgICAgICBhc3NlcnRfZmFsc2UoY2xvc2VkKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFs
cyhlLCBlcnJvciwgJ3JlYWQoKSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIHRocm93biBlcnJvcicp
OwotICAgIH0pKTsKLX0pOwotCi12YXIgdGVzdDYgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVh
bTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2UgdXBvbiBzdGFydGluZyB0aGUgc3RyZWFtJyk7
Ci10ZXN0Ni5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciBwdWxsQ291bnQgPSAwOwotICAgIHZh
ciBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKLSAgICB2YXIgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RhcnRQcm9taXNlOwotICAgICAgICB9LAotICAgICAgICBwdWxsOiBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgIHB1bGxDb3VudCsrOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBz
dGFydFByb21pc2UudGhlbih0ZXN0Ni5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFz
c2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIG9uY2Ugc3Rh
cnQgZmluaXNoZXMnKTsKLQotICAgICAgICBzZXRUaW1lb3V0KHRlc3Q2LnN0ZXBfZnVuYyhmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBz
aG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgb25jZScpOwotICAgICAgICAgICAgdGVzdDYuZG9uZSgp
OwotICAgICAgICB9KSwgMTAwMCk7Ci0gICAgfSkpOwotCi19KTsKLQotdmFyIHRlc3Q3ID0gYXN5
bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgd2hlbiB0cnlpbmcgdG8g
cmVhZCBmcm9tIGEgc3RhcnRlZCwgZW1wdHkgc3RyZWFtJyk7Ci10ZXN0Ny5zdGVwKGZ1bmN0aW9u
KCkgewotICAgIHZhciBwdWxsQ291bnQgPSAwOwotICAgIHZhciBzdGFydFByb21pc2UgPSBQcm9t
aXNlLnJlc29sdmUoKTsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAg
ICBzdGFydDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhcnRQcm9taXNlOwot
ICAgICAgICB9LAotICAgICAgICBwdWxsOiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICAvLyBE
b24ndCBlbnF1ZXVlIGltbWVkaWF0ZWx5IGFmdGVyIHN0YXJ0LiBXZSB3YW50IHRoZSBzdHJlYW0g
dG8gYmUgZW1wdHkgd2hlbiB3ZSBjYWxsIC5yZWFkKCkgb24gaXQuCi0gICAgICAgICAgICBpZiAo
cHVsbENvdW50ID4gMCkgewotICAgICAgICAgICAgICAgIGMuZW5xdWV1ZShwdWxsQ291bnQpOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICArK3B1bGxDb3VudDsKLSAgICAgICAgfQotICAg
IH0pOwotCi0gICAgc3RhcnRQcm9taXNlLnRoZW4odGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
ewotICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNh
bGxlZCBvbmNlIHN0YXJ0IGZpbmlzaGVzJyk7Ci0KLSAgICAgICAgdmFyIHJlYWRlciA9IHJzLmdl
dFJlYWRlcigpOwotICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHRlc3Q3LnN0ZXBf
ZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENv
dW50LCAyLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGFnYWluIGluIHJlYWN0aW9uIHRvIGNhbGxp
bmcgcmVhZCcpOwotICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZh
bHVlOiAxLCBkb25lOiBmYWxzZSB9LCAndGhlIHJlc3VsdCByZWFkIHNob3VsZCBiZSB0aGUgb25l
IGVucXVldWVkJyk7Ci0gICAgICAgICAgICB0ZXN0Ny5kb25lKCk7Ci0gICAgICAgIH0pKTsKLSAg
ICB9KSkuY2F0Y2godGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hl
ZChlKTsgfSkpOwotfSk7Ci0KLXZhciB0ZXN0OCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFt
OiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBm
cm9tIGJlZm9yZSBzdGFydCBmdWxmaWxscycpOwotdGVzdDguc3RlcChmdW5jdGlvbigpIHsKLSAg
ICB2YXIgcHVsbENvdW50ID0gMDsKLSAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNv
bHZlKCk7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6
IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAgICAgICAg
cmV0dXJuIHN0YXJ0UHJvbWlzZTsKLSAgICAgICAgfSwKLSAgICAgICAgcHVsbDogZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICBwdWxsQ291bnQrKzsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAg
c3RhcnRQcm9taXNlLnRoZW4odGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICBh
c3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBvbmNlIHN0
YXJ0IGZpbmlzaGVzJyk7Ci0gICAgfSkpOwotCi0gICAgcnMuZ2V0UmVhZGVyKCkucmVhZCgpLnRo
ZW4odGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKLSAgICAgICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgcmVhZCgpIHNob3Vs
ZCByZXR1cm4gZmlyc3QgY2h1bmsnKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQs
IDEsICdwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCBhZ2FpbicpOwotCi0gICAgICAg
IHNldFRpbWVvdXQodGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgZXhhY3RseSBv
bmNlJyk7Ci0gICAgICAgICAgICB0ZXN0OC5kb25lKCk7Ci0gICAgICAgIH0pLCAxMDAwKTsKLSAg
ICB9KSk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCwgJ2NhbGxpbmcgcmVhZCgp
IHNob3VsZCBub3QgY2F1c2UgcHVsbCB0byBiZSBjYWxsZWQgeWV0Jyk7Ci19KTsKLQotdmFyIHRl
c3Q5ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBv
bmNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSByZWFkIGZyb20gYWZ0ZXIgc3RhcnQgZnVsZmlsbHMn
KTsKLXRlc3Q5LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHB1bGxDb3VudCA9IDA7Ci0gICAg
dmFyIHN0YXJ0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOwotICAgIHZhciBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAg
ICBjLmVucXVldWUoJ2EnKTsKLSAgICAgICAgICAgIHJldHVybiBzdGFydFByb21pc2U7Ci0gICAg
ICAgIH0sCi0gICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcHVsbENvdW50
Kys7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHN0YXJ0UHJvbWlzZS50aGVuKHRlc3Q5LnN0
ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAs
ICdwdWxsIHNob3VsZCBub3QgYmUgY2FsbGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMsIHNpbmNlIHRo
ZSBxdWV1ZSBpcyBmdWxsJyk7Ci0KLSAgICAgICAgcnMuZ2V0UmVhZGVyKCkucmVhZCgpLnRoZW4o
dGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKLSAgICAgICAgICAgIGFzc2VydF9vYmplY3Rf
ZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IHJlYWQoKSBzaG91
bGQgcmV0dXJuIGZpcnN0IGNodW5rJyk7Ci0KLSAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdDku
c3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHVs
bENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgb25jZScpOwotICAgICAg
ICAgICAgICAgIHRlc3Q5LmRvbmUoKTsKLSAgICAgICAgICAgIH0pLCAxMDAwKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICB9KSk7Ci0KLSAgICAgICAg
YXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdjYWxsaW5nIHJlYWQoKSBzaG91bGQgbm90IGNh
dXNlIHB1bGwgdG8gYmUgY2FsbGVkIGltbWVkaWF0ZWx5Jyk7Ci0gICAgfSkpOwotfSk7Ci0KLXZh
ciB0ZXN0MTAgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCBp
biByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIG5vdCBkcmFpbmluZycp
OwotdGVzdDEwLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHB1bGxDb3VudCA9IDA7Ci0gICAg
dmFyIGNvbnRyb2xsZXI7Ci0gICAgdmFyIHN0YXJ0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgp
OwotICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5j
dGlvbihjKSB7Ci0gICAgICAgICAgICBjb250cm9sbGVyID0gYzsKLSAgICAgICAgICAgIHJldHVy
biBzdGFydFByb21pc2U7Ci0gICAgICAgIH0sCi0gICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgKytwdWxsQ291bnQ7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHZhciBy
ZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICAgIHN0YXJ0UHJvbWlzZS50aGVuKHRlc3QxMC5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAx
LCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlIGJ5IHRoZSB0aW1lIHRoZSBzdHJl
YW0gc3RhcnRzJyk7Ci0KLSAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7Ci0gICAgICAg
IGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBj
YWxsZWQgYWdhaW4gYWZ0ZXIgZW5xdWV1ZScpOwotCi0gICAgICAgIHJldHVybiByZWFkZXIucmVh
ZCgpLnRoZW4odGVzdDEwLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMocHVsbENvdW50LCAyLCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBhZ2Fp
biBhZnRlciByZWFkJyk7Ci0KLSAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdDEwLnN0ZXBfZnVu
YyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwg
MiwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IHR3aWNlJyk7Ci0gICAgICAgICAgICAg
ICAgdGVzdDEwLmRvbmUoKTsKLSAgICAgICAgICAgIH0pLCA1MDApOwotICAgICAgICB9KSk7Ci0g
ICAgfSkpLmNhdGNoKHRlc3QxMC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFj
aGVkKGUpOyB9KSk7Ci19KTsKLQotdmFyIHRlc3QxMSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3Ry
ZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCgpIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0aGUg
bGFzdCBjaHVuaywgaWYgZHJhaW5pbmcnKTsKLXRlc3QxMS5zdGVwKGZ1bmN0aW9uKCkgewotICAg
IHZhciBwdWxsQ291bnQgPSAwOwotICAgIHZhciBjb250cm9sbGVyOwotICAgIHZhciBzdGFydFBy
b21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKLSAgICB2YXIgcHVsbFByb21pc2UgPSBQcm9taXNl
LnJlc29sdmUoKTsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBz
dGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgICAg
ICAgICByZXR1cm4gc3RhcnRQcm9taXNlOwotICAgICAgICB9LAotICAgICAgICBwdWxsOiBmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICsrcHVsbENvdW50OwotICAgICAgICAgICAgcmV0dXJuIHB1
bGxQcm9taXNlOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICB2YXIgcmVhZGVyID0gcnMuZ2V0
UmVhZGVyKCk7Ci0KLSAgICBzdGFydFByb21pc2UudGhlbih0ZXN0MTEuc3RlcF9mdW5jKGZ1bmN0
aW9uKCkgewotICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxk
IGhhdmUgYmVlbiBjYWxsZWQgb25jZSBieSB0aGUgdGltZSB0aGUgc3RyZWFtIHN0YXJ0cycpOwot
Ci0gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotICAgICAgICBhc3NlcnRfZXF1YWxz
KHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkIGFnYWluIGFm
dGVyIGVucXVldWUnKTsKLQotICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7Ci0KLSAgICAgICAg
cmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MTEuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBub3Qg
aGF2ZSBiZWVuIGNhbGxlZCBhIHNlY29uZCB0aW1lIGFmdGVyIHJlYWQnKTsKLQotICAgICAgICAg
ICAgc2V0VGltZW91dCh0ZXN0MTEuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4
YWN0bHkgb25jZScpOwotICAgICAgICAgICAgICAgIHRlc3QxMS5kb25lKCk7Ci0gICAgICAgICAg
ICB9KSwgMTAwMCk7Ci0gICAgICAgIH0pKTsKLSAgICB9KSkuY2F0Y2godGVzdDExLnN0ZXBfZnVu
YyhmdW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0pKTsKLX0pOwotCi12YXIgdGVz
dDEyID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIHVu
dGlsIHRoZSBwcmV2aW91cyBwdWxsIGNhbGxcJ3MgcHJvbWlzZSBmdWxmaWxscycpOwotdGVzdDEy
LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHJlc29sdmU7Ci0gICAgdmFyIHJldHVybmVkUHJv
bWlzZTsKLSAgICB2YXIgdGltZXNDYWxsZWQgPSAwOwotICAgIHZhciBzdGFydFByb21pc2UgPSBQ
cm9taXNlLnJlc29sdmUoKTsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAg
ICAgICBzdGFydDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhcnRQcm9taXNl
OwotICAgICAgICB9LAotICAgICAgICBwdWxsOiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBj
LmVucXVldWUoKyt0aW1lc0NhbGxlZCk7Ci0gICAgICAgICAgICByZXR1cm5lZFByb21pc2UgPSBu
ZXcgUHJvbWlzZSh0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsgcmVzb2x2ZSA9IHI7IH0p
KTsKLSAgICAgICAgICAgIHJldHVybiByZXR1cm5lZFByb21pc2U7Ci0gICAgICAgIH0KLSAgICB9
KTsKLSAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgICBzdGFydFByb21pc2Uu
dGhlbih0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1cm4gcmVhZGVy
LnJlYWQoKS50aGVuKHRlc3QxMi5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0MSkgewotICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgMSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3B1bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZSBhZnRlciBzdGFydCwgYnV0
IG5vdCB5ZXQgaGF2ZSBiZWVuIGNhbGxlZCBhIHNlY29uZCB0aW1lJyk7Ci0gICAgICAgICAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQxLCB7IHZhbHVlOiAxLCBkb25lOiBmYWxzZSB9LCAn
cmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggdGhlIGVucXVldWVkIHZhbHVlJyk7Ci0KLSAgICAg
ICAgICAgIHNldFRpbWVvdXQodGVzdDEyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCAxLCAnYWZ0ZXIgMzAgbXMsIHB1bGwg
c2hvdWxkIHN0aWxsIG9ubHkgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlJyk7Ci0KLSAgICAgICAgICAg
ICAgICByZXNvbHZlKCk7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm5lZFByb21pc2UudGhlbih0
ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHRpbWVzQ2FsbGVkLCAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdhZnRlciB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSBwdWxsIGlzIGZ1bGZpbGxlZCwgcHVsbCBz
aG91bGQgYmUgY2FsbGVkIGEgc2Vjb25kIHRpbWUnKTsKLSAgICAgICAgICAgICAgICAgICAgdGVz
dDEyLmRvbmUoKTsKLSAgICAgICAgICAgICAgICB9KSk7Ci0gICAgICAgICAgICB9KSwgNTAwKTsK
LSAgICAgICAgfSkpOwotICAgIH0pKS5jYXRjaCh0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKGUp
IHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSkpOwotfSk7Ci0KLXZhciB0ZXN0MTMgPSBhc3luY190
ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIHB1bGwgYWZ0ZXIgc3RhcnQsIGFuZCBhZnRlciBl
dmVyeSByZWFkJyk7Ci10ZXN0MTMuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgdGltZXNDYWxs
ZWQgPSAwOwotICAgIHZhciBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKLSAgICB2
YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykg
ewotICAgICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICAgICAgICBjLmVucXVldWUoJ2In
KTsKLSAgICAgICAgICAgIGMuZW5xdWV1ZSgnYycpOwotICAgICAgICAgICAgcmV0dXJuIHN0YXJ0
UHJvbWlzZTsKLSAgICAgICAgfSwKLSAgICAgICAgcHVsbCgpIHsKLSAgICAgICAgICAgICsrdGlt
ZXNDYWxsZWQ7Ci0gICAgICAgIH0KLSAgICB9LAotICAgIHsKLSAgICAgICAgc2l6ZTogZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgfSwKLSAgICAgICAgaGlnaFdh
dGVyTWFyazogSW5maW5pdHkKLSAgICB9KTsKLSAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVy
KCk7Ci0KLSAgICBzdGFydFByb21pc2UudGhlbih0ZXN0MTMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
ewotICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHRlc3QxMy5zdGVwX2Z1bmMoZnVu
Y3Rpb24ocmVzdWx0MSkgewotICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0
MSwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgY2h1bmsgc2hvdWxkIGJlIGFz
IGV4cGVjdGVkJyk7Ci0KLSAgICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4odGVz
dDEzLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQyKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0
X29iamVjdF9lcXVhbHMocmVzdWx0MiwgeyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LCAnc2Vj
b25kIGNodW5rIHNob3VsZCBiZSBhcyBleHBlY3RlZCcpOwotCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MTMuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdDMp
IHsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MywgeyB2
YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LCAndGhpcmQgY2h1bmsgc2hvdWxkIGJlIGFzIGV4cGVj
dGVkJyk7Ci0KLSAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCh0ZXN0MTMuc3RlcF9mdW5j
KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25jZSBmb3IgYWZ0ZXIg
c3RhcnQsIGFuZCBvbmNlIGZvciBldmVyeSByZWFkLgotICAgICAgICAgICAgICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgNCwgJ3B1bGwoKSBzaG91bGQgYmUgY2FsbGVkIGV4
YWN0bHkgZm91ciB0aW1lcycpOwotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdDEzLmRvbmUo
KTsKLSAgICAgICAgICAgICAgICAgICAgfSksIDEwMDApOwotICAgICAgICAgICAgICAgIH0pKTsK
LSAgICAgICAgICAgIH0pKTsKLSAgICAgICAgfSkpOwotICAgIH0pKS5jYXRjaCh0ZXN0MTMuc3Rl
cF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSkpOwotfSk7Ci0KLXZh
ciB0ZXN0MTQgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1
bGwgYWZ0ZXIgc3RhcnQgaWYgdGhlIHN0cmVhbSBpcyBub3cgY2xvc2VkJyk7Ci10ZXN0MTQuc3Rl
cChmdW5jdGlvbigpIHsKLSAgICB2YXIgdGltZXNDYWxsZWQgPSAwOwotICAgIHZhciBzdGFydFBy
b21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgYy5lbnF1ZXVl
KCdhJyk7Ci0gICAgICAgICAgICBjLmNsb3NlKCk7Ci0gICAgICAgICAgICByZXR1cm4gc3RhcnRQ
cm9taXNlOwotICAgICAgICB9LAotICAgICAgICBwdWxsOiBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgICsrdGltZXNDYWxsZWQ7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHN0YXJ0UHJvbWlz
ZS50aGVuKHRlc3QxNC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFzc2VydF9lcXVh
bHModGltZXNDYWxsZWQsIDAsICdhZnRlciBzdGFydCBmaW5pc2hlcywgcHVsbCBzaG91bGQgbm90
IGhhdmUgYmVlbiBjYWxsZWQnKTsKLQotICAgICAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVy
KCk7Ci0gICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4odGVzdDE0LnN0ZXBfZnVuYyhm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHModGltZXNDYWxsZWQsIDAsICdy
ZWFkaW5nIHNob3VsZCBub3QgaGF2ZSB0cmlnZ2VyZWQgYSBwdWxsIGNhbGwnKTsKLQotICAgICAg
ICAgICAgcmV0dXJuIHJlYWRlci5jbG9zZWQudGhlbih0ZXN0MTQuc3RlcF9mdW5jKGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModGltZXNDYWxsZWQsIDAsICdzdHJl
YW0gc2hvdWxkIGhhdmUgY2xvc2VkIHdpdGggc3RpbGwgbm8gY2FsbHMgdG8gcHVsbCcpOwotICAg
ICAgICAgICAgICAgIHRlc3QxNC5kb25lKCk7Ci0gICAgICAgICAgICB9KSk7Ci0gICAgICAgIH0p
KTsKLSAgICB9KSkuY2F0Y2godGVzdDE0LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF91
bnJlYWNoZWQoZSk7IH0pKTsKLX0pOwotCi12YXIgdGVzdDE1ID0gYXN5bmNfdGVzdCgnUmVhZGFi
bGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgYWZ0ZXIgZW5xdWV1ZWluZyBmcm9tIGluc2lkZSBw
dWxsICh3aXRoIG5vIHJlYWQgcmVxdWVzdHMpLCBpZiBzdHJhdGVneSBhbGxvd3MnKTsKLXRlc3Qx
NS5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciB0aW1lc0NhbGxlZCA9IDA7Ci0gICAgdmFyIHN0
YXJ0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOwotICAgIHZhciBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVy
biBzdGFydFByb21pc2U7Ci0gICAgICAgIH0sCi0gICAgICAgIHB1bGw6IGZ1bmN0aW9uKGMpIHsK
LSAgICAgICAgICAgIGMuZW5xdWV1ZSgrK3RpbWVzQ2FsbGVkKTsKLQotICAgICAgICAgICAgaWYg
KHRpbWVzQ2FsbGVkID09IDQpIHsKLSAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3QxNS5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIGFmdGVyIHN0YXJ0
OiBzaXplID0gMCwgcHVsbCgpCi0gICAgICAgICAgICAgICAgICAgIC8vIGFmdGVyIGVucXVldWUo
MSk6IHNpemUgPSAxLCBwdWxsKCkKLSAgICAgICAgICAgICAgICAgICAgLy8gYWZ0ZXIgZW5xdWV1
ZSgyKTogc2l6ZSA9IDIsIHB1bGwoKQotICAgICAgICAgICAgICAgICAgICAvLyBhZnRlciBlbnF1
ZXVlKDMpOiBzaXplID0gMywgcHVsbCgpCi0gICAgICAgICAgICAgICAgICAgIC8vIGFmdGVyIGVu
cXVldWUoNCk6IHNpemUgPSA0LCBkbyBub3QgcHVsbAotICAgICAgICAgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCA0LCAncHVsbCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVk
IGZvdXIgdGltZXMnKTsKLSAgICAgICAgICAgICAgICAgICAgdGVzdDE1LmRvbmUoKTsKLSAgICAg
ICAgICAgICAgICB9KSwgMTAwMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9LAot
ICAgIHsKLSAgICAgICAgc2l6ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gMTsK
LSAgICAgICAgfSwKLSAgICAgICAgaGlnaFdhdGVyTWFyazogNAotICAgIH0pOwotfSk7Ci0KLXZh
ciB0ZXN0MTYgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBwdWxsIHNob3VsZCBiZSBhYmxl
IHRvIGNsb3NlIGEgc3RyZWFtLicpOwotdGVzdDE2LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFy
IHB1bGxDYWxsZWQgPSBmYWxzZTsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewot
ICAgICAgICBwdWxsOiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBwdWxsQ2FsbGVkID0gdHJ1
ZTsKLSAgICAgICAgICAgIGMuY2xvc2UoKTsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgdmFy
IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotICAgIHJlYWRlci5jbG9zZWQudGhlbih0ZXN0MTYu
c3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICBhc3NlcnRfdHJ1ZShwdWxsQ2FsbGVkKTsK
LSAgICAgICAgdGVzdDE2LmRvbmUoJ3N0cmVhbSB3YXMgY2xvc2VkIHN1Y2Nlc3NmdWxseScpOwot
ICAgIH0pKTsKLX0pOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICAgIHZhciBzdGFydENhbGxlZCA9
IGZhbHNlOwotICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0
OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGMuZW5xdWV1ZSgnYScp
LCB1bmRlZmluZWQsICd0aGUgZmlyc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCcp
OwotICAgICAgICAgICAgYy5jbG9zZSgpOwotCi0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IoJycpLCBmdW5jdGlvbigpIHsgYy5lbnF1ZXVlKCdiJyk7IH0sICdlbnF1ZXVl
IGFmdGVyIGNsb3NlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwotICAgICAgICAgICAgc3Rh
cnRDYWxsZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfSk7Ci0gICAgYXNzZXJ0X3RydWUoc3Rh
cnRDYWxsZWQpOwotfSwgJ1JlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB3aGVu
IHRoZSBzdHJlYW0gaXMgcmVhZGFibGUgYnV0IGRyYWluaW5nJyk7Ci0KLXRlc3QoZnVuY3Rpb24o
KSB7Ci0gICAgdmFyIHN0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGMu
Y2xvc2UoKTsKLQotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1
bmN0aW9uKCkgeyBjLmVucXVldWUoJ2EnKTsgfSwgJ2VucXVldWUgYWZ0ZXIgY2xvc2Ugc2hvdWxk
IHRocm93IGEgVHlwZUVycm9yJyk7Ci0gICAgICAgICAgICBzdGFydENhbGxlZCA9IHRydWU7Ci0g
ICAgICAgIH0KLSAgICB9KTsKLSAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7Ci19LCAnUmVh
ZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyBjbG9z
ZWQnKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxzZTsK
LSAgICB2YXIgZXhwZWN0ZWRFcnJvciA9IG5ldyBFcnJvcignaSBhbSBzYWQnKTsKLSAgICB2YXIg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewot
ICAgICAgICAgICAgYy5lcnJvcihleHBlY3RlZEVycm9yKTsKLQotICAgICAgICAgICAgYXNzZXJ0
X3Rocm93cyhleHBlY3RlZEVycm9yLCBmdW5jdGlvbigpIHsgYy5lbnF1ZXVlKCdhJyk7IH0sICdl
bnF1ZXVlIGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdyB0aGF0IGVycm9yJyk7Ci0gICAgICAgICAg
ICBzdGFydENhbGxlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9KTsKLSAgICBhc3NlcnRfdHJ1
ZShzdGFydENhbGxlZCk7Ci19LCAnUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93
IHRoZSBzdG9yZWQgZXJyb3Igd2hlbiB0aGUgc3RyZWFtIGlzIGVycm9yZWQnKTsKLQotdmFyIHRl
c3QxNyA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5n
IHNvdXJjZSBtZXRob2RzIGFzIG1ldGhvZHMnKTsKLXRlc3QxNy5zdGVwKGZ1bmN0aW9uKCkgewot
ICAgIHZhciBzdGFydENhbGxlZCA9IDA7Ci0gICAgdmFyIHB1bGxDYWxsZWQgPSAwOwotICAgIHZh
ciBjYW5jZWxDYWxsZWQgPSAwOwotCi0gICAgZnVuY3Rpb24gU291cmNlKCkgewotICAgIH0KLQot
ICAgIFNvdXJjZS5wcm90b3R5cGUgPSB7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0g
ICAgICAgICAgICBzdGFydENhbGxlZCsrOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0aGlz
LCB0aGVTb3VyY2UsICdzdGFydCgpIHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgY29ycmVjdCB0
aGlzJyk7Ci0gICAgICAgICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAgICAgfSwKLQotICAgICAg
ICBwdWxsOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHB1bGxDYWxsZWQrKzsKLSAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHModGhpcywgdGhlU291cmNlLCAncHVsbCgpIHNob3VsZCBiZSBjYWxs
ZWQgd2l0aCB0aGUgY29ycmVjdCB0aGlzJyk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgY2FuY2Vs
OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGNhbmNlbENhbGxlZCsrOwotICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyh0aGlzLCB0aGVTb3VyY2UsICdjYW5jZWwoKSBzaG91bGQgYmUgY2FsbGVk
IHdpdGggdGhlIGNvcnJlY3QgdGhpcycpOwotICAgICAgICB9LAotICAgIH07Ci0KLSAgICB2YXIg
dGhlU291cmNlID0gbmV3IFNvdXJjZSgpOwotICAgIHRoZVNvdXJjZS5kZWJ1Z05hbWUgPSAndGhl
IHNvdXJjZSBvYmplY3QgcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3Rvcic7IC8vIG1ha2VzIHRlc3Qg
ZmFpbHVyZXMgZWFzaWVyIHRvIGRpYWdub3NlCi0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHRoZVNvdXJjZSk7Ci0KLSAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0gICAg
cmVhZGVyLnJlYWQoKS50aGVuKHRlc3QxNy5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAg
IHJlYWRlci5yZWxlYXNlTG9jaygpOwotICAgICAgICBycy5jYW5jZWwoKTsKLSAgICAgICAgYXNz
ZXJ0X2VxdWFscyhzdGFydENhbGxlZCwgMSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENh
bGxlZCwgMSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoY2FuY2VsQ2FsbGVkLCAxKTsKLSAgICAg
ICAgdGVzdDE3LmRvbmUoKTsKLSAgICB9KSkuY2F0Y2godGVzdDE3LnN0ZXBfZnVuYyhmdW5jdGlv
bihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0gKSk7Ci19KTsKLQotdGVzdChmdW5jdGlvbigp
IHsKLSAgICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxzZTsKLSAgICBuZXcgUmVhZGFibGVTdHJlYW0o
ewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhjLmRlc2lyZWRTaXplLCAxKTsKLSAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAwKTsKLSAgICAgICAgICAgIGMuZW5x
dWV1ZSgnYicpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAtMSk7
Ci0gICAgICAgICAgICBjLmVucXVldWUoJ2MnKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
Yy5kZXNpcmVkU2l6ZSwgLTIpOwotICAgICAgICAgICAgYy5lbnF1ZXVlKCdkJyk7Ci0gICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKGMuZGVzaXJlZFNpemUsIC0zKTsKLSAgICAgICAgICAgIGMuZW5x
dWV1ZSgnZScpOwotICAgICAgICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOwotICAgICAgICB9Ci0g
ICAgfSk7Ci0gICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwotfSwgJ1JlYWRhYmxlU3RyZWFt
IHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCBnaXZlIGRlc2lyZWRTaXpl
IG9mIDEgdG8gc3RhcnQsIGRlY3JlYXNpbmcgYnkgMSBwZXIgZW5xdWV1ZScpOwotCi12YXIgdGVz
dDE4ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQg
c3RyYXRlZ3kgc2hvdWxkIGNvbnRpbnVlIGdpdmluZyBkZXNpcmVkU2l6ZSBvZiAxIGlmIHRoZSBj
aHVua3MgYXJlIHJlYWQgaW1tZWRpYXRlbHknKTsKLXRlc3QxOC5zdGVwKGZ1bmN0aW9uKCkgewot
ICAgIHZhciBjb250cm9sbGVyOwotICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0g
ICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBjb250cm9sbGVyID0gYzsK
LSAgICAgICAgfQotICAgIH0pOwotICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQot
ICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXpl
IHNob3VsZCBzdGFydCBhdCAxJyk7Ci0gICAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUgc2hv
dWxkIGRlY3JlYXNlIHRvIDAgYWZ0ZXIgZmlyc3QgZW5xdWV1ZScpOwotCi0gICAgcmVhZGVyLnJl
YWQoKS50aGVuKHRlc3QxOC5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0MSkgewotICAgICAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQxLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0s
ICdmaXJzdCBjaHVuayByZWFkIHNob3VsZCBiZSBjb3JyZWN0Jyk7Ci0KLSAgICAgICAgYXNzZXJ0
X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUgc2hvdWxkIGdv
IHVwIHRvIDEgYWZ0ZXIgdGhlIGZpcnN0IHJlYWQnKTsKLSAgICAgICAgY29udHJvbGxlci5lbnF1
ZXVlKCdiJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwg
MCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBnbyBkb3duIHRvIDAgYWZ0ZXIgdGhlIHNlY29uZCBlbnF1
ZXVlJyk7Ci0KLSAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gICAgfSkpLnRoZW4odGVz
dDE4LnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQyKSB7Ci0gICAgICAgICAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyZXN1bHQyLCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sICdzZWNvbmQg
Y2h1bmsgcmVhZCBzaG91bGQgYmUgY29ycmVjdCcpOwotCi0gICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICdkZXNpcmVkU2l6ZSBzaG91bGQgZ28gdXAg
dG8gMSBhZnRlciB0aGUgc2Vjb25kIHJlYWQnKTsKLSAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5x
dWV1ZSgnYycpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRT
aXplLCAwLCAnZGVzaXJlZFNpemUgc2hvdWxkIGdvIGRvd24gdG8gMCBhZnRlciB0aGUgdGhpcmQg
ZW5xdWV1ZScpOwotCi0gICAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgICB9KSku
dGhlbih0ZXN0MTguc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdDMpIHsKLSAgICAgICAgICAgIGFz
c2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDMsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFsc2UgfSwg
J3RoaXJkIGNodW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLQotICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUgc2hvdWxk
IGdvIHVwIHRvIDEgYWZ0ZXIgdGhlIHRoaXJkIHJlYWQnKTsKLSAgICAgICAgICAgIGNvbnRyb2xs
ZXIuZW5xdWV1ZSgnZCcpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRl
c2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUgc2hvdWxkIGdvIGRvd24gdG8gMCBhZnRlciB0aGUg
Zm91cnRoIGVucXVldWUnKTsKLQotICAgICAgICAgICAgdGVzdDE4LmRvbmUoKTsKLSAgICB9KSku
Y2F0Y2godGVzdDE4LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7
IH0pKTsKLX0pOwotCi12YXIgdGVzdDE5ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gaW50
ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYSByYW5kb20gcHVzaCBzb3VyY2UnKTsKLXRlc3QxOS5z
dGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciBwdWxsQ2hlY2tlZCA9IGZhbHNlOwotICAgIHZhciBy
YW5kb21Tb3VyY2UgPSBuZXcgUmFuZG9tUHVzaFNvdXJjZSg4KTsKLQotICAgIHZhciBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBjLCAnb2JqZWN0JywgJ2Mgc2hvdWxkIGJlIGFuIG9i
amVjdCBpbiBzdGFydCcpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgYy5lbnF1
ZXVlLCAnZnVuY3Rpb24nLCAnZW5xdWV1ZSBzaG91bGQgYmUgYSBmdW5jdGlvbiBpbiBzdGFydCcp
OwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgYy5jbG9zZSwgJ2Z1bmN0aW9uJywg
J2Nsb3NlIHNob3VsZCBiZSBhIGZ1bmN0aW9uIGluIHN0YXJ0Jyk7Ci0gICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKHR5cGVvZiBjLmVycm9yLCAnZnVuY3Rpb24nLCAnZXJyb3Igc2hvdWxkIGJlIGEg
ZnVuY3Rpb24gaW4gc3RhcnQnKTsKLQotICAgICAgICAgICAgcmFuZG9tU291cmNlLm9uZGF0YSA9
IHRlc3QxOS5zdGVwX2Z1bmMoZnVuY3Rpb24oY2h1bmspIHsKLSAgICAgICAgICAgICAgICBpZiAo
IWMuZW5xdWV1ZShjaHVuaykgPD0gMCkgewotICAgICAgICAgICAgICAgICAgICByYW5kb21Tb3Vy
Y2UucmVhZFN0b3AoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KTsKLQotICAg
ICAgICAgICAgcmFuZG9tU291cmNlLm9uZW5kID0gYy5jbG9zZS5iaW5kKGMpOwotICAgICAgICAg
ICAgcmFuZG9tU291cmNlLm9uZXJyb3IgPSBjLmVycm9yLmJpbmQoYyk7Ci0gICAgICAgIH0sCi0K
LSAgICAgICAgcHVsbDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgaWYgKCFwdWxsQ2hlY2tl
ZCkgewotICAgICAgICAgICAgICAgIHB1bGxDaGVja2VkID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBjLCAnb2JqZWN0JywgJ2Mgc2hvdWxkIGJlIGFuIG9iamVj
dCBpbiBwdWxsJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgYy5lbnF1
ZXVlLCAnZnVuY3Rpb24nLCAnZW5xdWV1ZSBzaG91bGQgYmUgYSBmdW5jdGlvbiBpbiBwdWxsJyk7
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgYy5jbG9zZSwgJ2Z1bmN0aW9u
JywgJ2Nsb3NlIHNob3VsZCBiZSBhIGZ1bmN0aW9uIGluIHB1bGwnKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgcmFuZG9tU291cmNlLnJlYWRTdGFydCgpOwotICAgICAgICB9Ci0gICAg
fSk7Ci0KLSAgICByZWFkYWJsZVN0cmVhbVRvQXJyYXkocnMpLnRoZW4odGVzdDE5LnN0ZXBfZnVu
YyhmdW5jdGlvbihjaHVua3MpIHsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhjaHVua3MubGVuZ3Ro
LCA4LCAnOCBjaHVua3Mgc2hvdWxkIGJlIHJlYWQnKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBjaHVua3MubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoY2h1
bmtzW2ldLmxlbmd0aCwgMTI4LCAnY2h1bmsgc2hvdWxkIGhhdmUgMTI4IGJ5dGVzJyk7Ci0gICAg
ICAgIH0KLQotICAgICAgICB0ZXN0MTkuZG9uZSgpOwotICAgIH0pLCB0ZXN0MTkuc3RlcF9mdW5j
KGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSkpOwotfSk7Ci0KLXZhciB0ZXN0
MjAgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGlu
ZyBhIHN5bmMgcHVsbCBzb3VyY2UnKTsKLXRlc3QyMC5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZh
ciBycyA9IHNlcXVlbnRpYWxSZWFkYWJsZVN0cmVhbSgxMCk7Ci0KLSAgICByZWFkYWJsZVN0cmVh
bVRvQXJyYXkocnMpLnRoZW4odGVzdDIwLnN0ZXBfZnVuYyhmdW5jdGlvbihjaHVua3MpIHsKLSAg
ICAgICAgYXNzZXJ0X3RydWUocnMuc291cmNlLmNsb3NlZCwgJ3NvdXJjZSBzaG91bGQgYmUgY2xv
c2VkIGFmdGVyIGFsbCBjaHVua3MgYXJlIHJlYWQnKTsKLSAgICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhjaHVua3MsIFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF0sICd0aGUgZXhwZWN0
ZWQgMTAgY2h1bmtzIHNob3VsZCBiZSByZWFkJyk7Ci0KLSAgICAgICAgdGVzdDIwLmRvbmUoKTsK
LSAgICB9KSk7Ci19KTsKLQotdmFyIHRlc3QyMSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFt
IGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGFuIGFzeW5jIHB1bGwgc291cmNlJyk7Ci10ZXN0
MjEuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgcnMgPSBzZXF1ZW50aWFsUmVhZGFibGVTdHJl
YW0oMTAsIHsgYXN5bmM6IHRydWUgfSk7Ci0KLSAgICByZWFkYWJsZVN0cmVhbVRvQXJyYXkocnMp
LnRoZW4odGVzdDIxLnN0ZXBfZnVuYyhmdW5jdGlvbihjaHVua3MpIHsKLSAgICAgICAgYXNzZXJ0
X3RydWUocnMuc291cmNlLmNsb3NlZCwgJ3NvdXJjZSBzaG91bGQgYmUgY2xvc2VkIGFmdGVyIGFs
bCBjaHVua3MgYXJlIHJlYWQnKTsKLSAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3Ms
IFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF0sICd0aGUgZXhwZWN0ZWQgMTAgY2h1bmtz
IHNob3VsZCBiZSByZWFkJyk7Ci0KLSAgICAgICAgdGVzdDIxLmRvbmUoKTsKLSAgICB9KSk7Ci19
KTsKLQotZnVuY3Rpb24gZ2FyYmFnZUNvbGxlY3RBbmREbyh0YXNrKQotewotICAgIHZhciB0aW1l
b3V0ID0gNTA7Ci0gICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCi0gICAgICAgIHdpbmRvdy5H
Q0NvbnRyb2xsZXIuY29sbGVjdCgpOwotICAgIGVsc2UgaWYgKHdpbmRvdy5nYykKLSAgICAgICAg
d2luZG93LmdjKCk7Ci0gICAgZWxzZQotICAgICAgICB0aW1lb3V0ID0gNDAwOwotICAgIHNldFRp
bWVvdXQodGFzaywgdGltZW91dCk7Ci19Ci0KLXZhciB0ZXN0MjIgPSBhc3luY190ZXN0KCdSZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXIgbWV0aG9kcyBzaG91bGQgY29udGludWUgd29ya2luZyBwcm9w
ZXJseSB3aGVuIHNjcmlwdHMgbG9zZSB0aGVpciByZWZlcmVuY2UgdG8gdGhlIHJlYWRhYmxlIHN0
cmVhbScpOwotdGVzdDIyLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGNvbnRyb2xsZXI7Ci0g
ICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAg
ICAgICAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBnYXJi
YWdlQ29sbGVjdEFuZERvKHRlc3QyMi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGNv
bnRyb2xsZXIuY2xvc2UoKTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCks
IGZ1bmN0aW9uKCkgeyBjb250cm9sbGVyLmNsb3NlKCk7IH0sICdjbG9zZSBzaG91bGQgdGhyb3cg
YSBUeXBlRXJyb3IgdGhlIHNlY29uZCB0aW1lJyk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgY29udHJvbGxlci5lcnJvcigpOyB9KSwgJ2Vycm9y
IHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciBvbiBhIGNsb3NlZCBzdHJlYW0nOwotICAgICAgICB0
ZXN0MjIuZG9uZSgpOwotICAgIH0pKTsKLX0pOwotCi12YXIgdGVzdDIzID0gYXN5bmNfdGVzdCgn
UmVhZGFibGVTdHJlYW0gY2xvc2VkIHByb21pc2Ugc2hvdWxkIGZ1bGZpbGwgZXZlbiBpZiB0aGUg
c3RyZWFtIGFuZCByZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCcpOwotdGVzdDIzLnN0ZXAo
ZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGNvbnRyb2xsZXI7Ci0gICAgbmV3IFJlYWRhYmxlU3RyZWFt
KHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGNvbnRyb2xsZXIg
PSBjOwotICAgICAgICB9Ci0gICAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4odGVzdDIzLnN0
ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdDIzLmRvbmUoJ2Nsb3NlZCBwcm9taXNl
IHNob3VsZCBiZSBmdWxmaWxsZWQnKTsKLSAgICB9KSk7Ci0KLSAgICBnYXJiYWdlQ29sbGVjdEFu
ZERvKHRlc3QyMy5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGNvbnRyb2xsZXIuY2xv
c2UoKTsKLSAgICB9KSk7Ci19KTsKLQotdmFyIHRlc3QyNCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxl
U3RyZWFtIGNsb3NlZCBwcm9taXNlIHNob3VsZCByZWplY3QgZXZlbiBpZiBzdHJlYW0gYW5kIHJl
YWRlciBKUyByZWZlcmVuY2VzIGFyZSBsb3N0Jyk7Ci10ZXN0MjQuc3RlcChmdW5jdGlvbigpIHsK
LSAgICB2YXIgY29udHJvbGxlcjsKLSAgICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBz
dGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgICAg
IH0KLSAgICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQuY2F0Y2godGVzdDI0LnN0ZXBfZnVuYyhmdW5j
dGlvbigpIHsKLSAgICAgICAgdGVzdDI0LmRvbmUoJ2Nsb3NlZCBwcm9taXNlIHNob3VsZCBiZSBy
ZWplY3RlZCcpOwotICAgIH0pKTsKLQotICAgIGdhcmJhZ2VDb2xsZWN0QW5kRG8odGVzdDI0LnN0
ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgY29udHJvbGxlci5lcnJvcigpOwotICAgIH0p
KTsKLX0pOwotPC9zY3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>