<?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>147954</bug_id>
          
          <creation_ts>2015-08-12 14:26:51 -0700</creation_ts>
          <short_desc>Web Inspector: refactor ProtocolTest to be an InjectedTestHarness subclass</short_desc>
          <delta_ts>2015-08-13 14:53:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>147948</dependson>
          <blocked>147934</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1117068</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-12 14:26:51 -0700</bug_when>
    <thetext>I&apos;m going to move the actual test to a common directory in a separate patch. That requires some changes to WebCore&apos;s Internals.idl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117072</commentid>
    <comment_count>1</comment_count>
      <attachid>258847</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-12 14:41:23 -0700</bug_when>
    <thetext>Created attachment 258847
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117296</commentid>
    <comment_count>2</comment_count>
      <attachid>258847</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-08-13 11:32:14 -0700</bug_when>
    <thetext>Comment on attachment 258847
Proposed Fix

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

r=me

&gt; LayoutTests/http/tests/inspector/resources/ProtocolTestStub.js:29
&gt;  {

Is the window needed here?

&gt; LayoutTests/http/tests/inspector/resources/ProtocolTestStub.js:74
&gt; +        var script = &quot;try { &quot; + xhr.responseText + &quot;} catch (e) { alert(&quot; + JSON.stringify(&quot;Error in: &quot; + scriptName) + &quot;); throw e; }&quot;;

I wonder if template strings would make this more readable.

&gt; LayoutTests/http/tests/inspector/resources/ProtocolTestStub.js:108
&gt; +}

Style: semicolon

&gt; LayoutTests/http/tests/inspector/resources/ProtocolTestStub.js:111
&gt; +    constructor(harness, name) {

Style: Brace on new line?

&gt; LayoutTests/http/tests/inspector/resources/ProtocolTestStub.js:209
&gt; +    constructor(harness, name) {

Style: Brace on newline?

&gt; LayoutTests/inspector/unit-tests/async-test-suite-expected.txt:1
&gt; +PASS: instantiating SyncTestSuite requires name argument.

async-test-suite outputs SyncTextSuite?

&gt; LayoutTests/inspector/unit-tests/async-test-suite.html:10
&gt; +        let result = new InjectedTestHarness.AsyncTestSuite(this);
&gt; +        ProtocolTest.log(&quot;FAIL: instantiating SyncTestSuite requires name argument.&quot;);

I think these &quot;SyncTestSuite&quot; changes to this file were accidental.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117327</commentid>
    <comment_count>3</comment_count>
      <attachid>258847</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-13 12:48:14 -0700</bug_when>
    <thetext>Comment on attachment 258847
Proposed Fix

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

&gt;&gt; LayoutTests/inspector/unit-tests/async-test-suite.html:10
&gt;&gt; +        ProtocolTest.log(&quot;FAIL: instantiating SyncTestSuite requires name argument.&quot;);
&gt; 
&gt; I think these &quot;SyncTestSuite&quot; changes to this file were accidental.

oh, weird. Definitely not intended.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117414</commentid>
    <comment_count>4</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-13 14:53:32 -0700</bug_when>
    <thetext>Committed r188406: &lt;http://trac.webkit.org/changeset/188406&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117415</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-08-13 14:53:44 -0700</bug_when>
    <thetext>&lt;rdar://problem/22276793&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258847</attachid>
            <date>2015-08-12 14:41:23 -0700</date>
            <delta_ts>2015-08-13 11:32:14 -0700</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-147954-20150812144106.patch</filename>
            <type>text/plain</type>
            <size>49691</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MjgzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjY0OTExOGU4MDMyOWI5NThmZWFj
YjhlZWVjMWQwNGRiMDlhN2FmNS4uYjA0Y2E0NWM4YzM1ZWQ1Zjc2N2U1OTgzZWFlN2FlMjgwOTk0
NTUxNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDE1LTA4LTEyICBCcmlhbiBCdXJnICA8YmJ1
cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlZmFjdG9yIFByb3RvY29s
VGVzdCB0byBiZSBhbiBJbmplY3RlZFRlc3RIYXJuZXNzIHN1YmNsYXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc5NTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBwcmVwYXJhdGlvbiBmb3Igc2hh
cmluZyB0aGUgc2FtZSB0ZXN0IGhhcm5lc3MgQVBJIGJldHdlZW4gcHJvdG9jb2wgdGVzdHMKKyAg
ICAgICAgYW5kIGZyb250ZW5kIHRlc3RzLCB0aGlzIHBhdGNoIHJlZmFjdG9ycyBQcm90b2NvbFRl
c3QgaW50byB0aGUgZGVzaXJlZAorICAgICAgICBjbGFzcyBzdHJ1Y3R1cmUuIEVhY2ggdHlwZSBv
ZiB0ZXN0IChjdXJyZW50bHk6IHByb3RvY29sLCBmcm9udGVuZCkgZXh0ZW5kcworICAgICAgICBJ
bmplY3RlZFRlc3RIYXJuZXNzIGFuZCBmaWxscyBpbiBhIGZldyBrZXkgbWV0aG9kcyBmb3IgY29t
bXVuaWNhdGluZyB3aXRoCisgICAgICAgIHRoZSB0ZXN0IHBhZ2Utc2lkZSBjb2RlLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggc3RhbmRhcmRpemVzIG9uIGFzc2VydCgpIG9ubHkgbG9nZ2luZyB3aGVu
IHRoZSBjb25kaXRpb24gaXMgZmFsc2UuCisgICAgICAgIFVwZGF0ZSBwcm90b2NvbCB0ZXN0cyB0
byB1c2UgUHJvdG9jb2xUZXN0SGFybmVzcy5leHBlY3RUaGF0LCByYXRoZXIgdGhhbiBhc3NlcnQu
CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvUHJvdG9jb2xUZXN0
U3R1Yi5qczoKKyAgICAgICAgKHdpbmRvdy5JbmplY3RlZFRlc3RIYXJuZXNzKToKKyAgICAgICAg
KHdpbmRvdy5JbmplY3RlZFRlc3RIYXJuZXNzLnByb3RvdHlwZS5jcmVhdGVBc3luY1N1aXRlKToK
KyAgICAgICAgKHdpbmRvdy5JbmplY3RlZFRlc3RIYXJuZXNzLnByb3RvdHlwZS5jcmVhdGVTeW5j
U3VpdGUpOgorICAgICAgICAod2luZG93LkluamVjdGVkVGVzdEhhcm5lc3MucHJvdG90eXBlLmNv
bXBsZXRlVGVzdCk6CisgICAgICAgICh3aW5kb3cuSW5qZWN0ZWRUZXN0SGFybmVzcy5wcm90b3R5
cGUuYWRkUmVzdWx0KToKKyAgICAgICAgKHdpbmRvdy5JbmplY3RlZFRlc3RIYXJuZXNzLnByb3Rv
dHlwZS5kZWJ1Z0xvZyk6CisgICAgICAgICh3aW5kb3cuSW5qZWN0ZWRUZXN0SGFybmVzcy5wcm90
b3R5cGUuZXZhbHVhdGVJblBhZ2UpOgorICAgICAgICAod2luZG93LkluamVjdGVkVGVzdEhhcm5l
c3MucHJvdG90eXBlLmltcG9ydFNjcmlwdCk6CisgICAgICAgICh3aW5kb3cuSW5qZWN0ZWRUZXN0
SGFybmVzcy5wcm90b3R5cGUuZ2V0IGxvZ0NvdW50KToKKyAgICAgICAgKHdpbmRvdy5JbmplY3Rl
ZFRlc3RIYXJuZXNzLnByb3RvdHlwZS5sb2cpOgorICAgICAgICAod2luZG93LkluamVjdGVkVGVz
dEhhcm5lc3MucHJvdG90eXBlLmFzc2VydCk6CisgICAgICAgICh3aW5kb3cuSW5qZWN0ZWRUZXN0
SGFybmVzcy5wcm90b3R5cGUuZXhwZWN0VGhhdCk6CisgCisgICAgICAgIChJbmplY3RlZFRlc3RI
YXJuZXNzLkFzeW5jVGVzdFN1aXRlKTogVXNlIGEgc3RvcmVkIHJlZmVyZW5jZSB0byB0aGUgaGFy
bmVzcworICAgICAgICByYXRoZXIgdGhhbiBoYXJkY29kaW5nIGEgc3BlY2lmaWMgSW5qZWN0ZWRU
ZXN0SGFybmVzcyBpbnN0YW5jZS4KKworICAgICAgICAoSW5qZWN0ZWRUZXN0SGFybmVzcy5Bc3lu
Y1Rlc3RTdWl0ZS5wcm90b3R5cGUucnVuVGVzdENhc2VzQW5kRmluaXNoLmZpbmlzaCk6CisgICAg
ICAgIChJbmplY3RlZFRlc3RIYXJuZXNzLkFzeW5jVGVzdFN1aXRlLnByb3RvdHlwZS5ydW5UZXN0
Q2FzZXNBbmRGaW5pc2gpOgorICAgICAgICAoSW5qZWN0ZWRUZXN0SGFybmVzcy5Bc3luY1Rlc3RT
dWl0ZS5wcm90b3R5cGUucnVuVGVzdENhc2VzKToKKyAKKyAgICAgICAgKEluamVjdGVkVGVzdEhh
cm5lc3MuU3luY1Rlc3RTdWl0ZSk6IFVzZSBhIHN0b3JlZCByZWZlcmVuY2UgdG8gdGhlIGhhcm5l
c3MKKyAgICAgICAgcmF0aGVyIHRoYW4gaGFyZGNvZGluZyBhIHNwZWNpZmljIEluamVjdGVkVGVz
dEhhcm5lc3MgaW5zdGFuY2UuCisKKyAgICAgICAgKEluamVjdGVkVGVzdEhhcm5lc3MuU3luY1Rl
c3RTdWl0ZS5wcm90b3R5cGUucnVuVGVzdENhc2VzQW5kRmluaXNoKToKKyAgICAgICAgKEluamVj
dGVkVGVzdEhhcm5lc3MuU3luY1Rlc3RTdWl0ZS5wcm90b3R5cGUucnVuVGVzdENhc2VzKToKKwor
ICAgICAgICAoUHJvdG9jb2xUZXN0SGFybmVzcy5wcm90b3R5cGUuY29tcGxldGVUZXN0KToKKyAg
ICAgICAgKFByb3RvY29sVGVzdEhhcm5lc3MucHJvdG90eXBlLmFkZFJlc3VsdCk6CisgICAgICAg
IChQcm90b2NvbFRlc3RIYXJuZXNzLnByb3RvdHlwZS5kZWJ1Z0xvZyk6CisgICAgICAgIChQcm90
b2NvbFRlc3RIYXJuZXNzLnByb3RvdHlwZS5ldmFsdWF0ZUluUGFnZSk6CisgICAgICAgIChQcm90
b2NvbFRlc3RIYXJuZXNzKToKKyAgICAgICAgKEluc3BlY3RvclByb3RvY29sLnNlbmRDb21tYW5k
KToKKyAgICAgICAgKEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCk6CisgICAgICAgIChJ
bnNwZWN0b3JQcm90b2NvbC5hd2FpdEV2ZW50Lik6CisgICAgICAgIChJbnNwZWN0b3JQcm90b2Nv
bC5hd2FpdEV2ZW50KToKKyAgICAgICAgKEluc3BlY3RvclByb3RvY29sLmFkZEV2ZW50TGlzdGVu
ZXIpOgorICAgICAgICAoSW5zcGVjdG9yUHJvdG9jb2wuc2VuZE1lc3NhZ2UpOgorICAgICAgICAo
SW5zcGVjdG9yUHJvdG9jb2wuY2hlY2tGb3JFcnJvcik6CisgICAgICAgIChJbnNwZWN0b3JGcm9u
dGVuZEFQSS5kaXNwYXRjaE1lc3NhZ2VBc3luYyk6CisgICAgICAgIChQcm90b2NvbFRlc3QuQXN5
bmNUZXN0U3VpdGUpOiBNb3ZlZC4KKyAgICAgICAgKFByb3RvY29sVGVzdC5Bc3luY1Rlc3RTdWl0
ZS5wcm90b3R5cGUucnVuVGVzdENhc2VzQW5kRmluaXNoLmZpbmlzaCk6IE1vdmVkLgorICAgICAg
ICAoUHJvdG9jb2xUZXN0LkFzeW5jVGVzdFN1aXRlLnByb3RvdHlwZS5ydW5UZXN0Q2FzZXNBbmRG
aW5pc2gpOiBNb3ZlZC4KKyAgICAgICAgKFByb3RvY29sVGVzdC5Bc3luY1Rlc3RTdWl0ZS5wcm90
b3R5cGUucnVuVGVzdENhc2VzKTogTW92ZWQuCisgICAgICAgIChQcm90b2NvbFRlc3QuU3luY1Rl
c3RTdWl0ZSk6IE1vdmVkLgorICAgICAgICAoUHJvdG9jb2xUZXN0LlN5bmNUZXN0U3VpdGUucHJv
dG90eXBlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCk6IE1vdmVkLgorICAgICAgICAoUHJvdG9jb2xU
ZXN0LlN5bmNUZXN0U3VpdGUucHJvdG90eXBlLnJ1blRlc3RDYXNlcyk6IE1vdmVkLgorICAgICAg
ICAoUHJvdG9jb2xUZXN0LmxvZyk6IE1vdmVkLgorICAgICAgICAoUHJvdG9jb2xUZXN0LmFzc2Vy
dCk6IE1vdmVkLgorICAgICAgICAoUHJvdG9jb2xUZXN0LmRlYnVnTG9nKTogTW92ZWQuCisgICAg
ICAgIChQcm90b2NvbFRlc3QuY29tcGxldGVUZXN0KTogTW92ZWQuCisgICAgICAgIChQcm90b2Nv
bFRlc3QuaW1wb3J0U2NyaXB0KTogTW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0
b3IvcmVzb3VyY2VzL2NvbnNvbGUtdGVzdC5qczoKKyAgICAgICAgKC5zdWl0ZS5hZGRUZXN0Q2Fz
ZS4pOgorICAgICAgICAoLnN1aXRlLmFkZFRlc3RDYXNlKToKKyAgICAgICAgKFByb3RvY29sVGVz
dC5Db25zb2xlLmFkZFRlc3RDYXNlKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9y
ZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qczoKKyAgICAgICAgKGNsb3NlVGVzdCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2NvbnNvbGUvY29uc29sZS1tZXNzYWdlLmh0bWw6CisgICAgICAgICogaW5z
cGVjdG9yL2NvbnNvbGUveC1mcmFtZS1vcHRpb25zLW1lc3NhZ2UuaHRtbDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZGVidWdnZXIvZGlkU2FtcGxlUHJvYmUtbXVsdGlwbGUtcHJvYmVzLmh0bWw6Cisg
ICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ub2RlLXJlbW92ZWQuaHRtbDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZG9tL2RvbS1yZW1vdmUtZXZlbnRzLmh0bWw6CisgICAgICAgICogaW5z
cGVjdG9yL3J1bnRpbWUvZ2V0UHJvcGVydGllcy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci91
bml0LXRlc3RzL2FzeW5jLXRlc3Qtc3VpdGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3Bl
Y3Rvci91bml0LXRlc3RzL2FzeW5jLXRlc3Qtc3VpdGUuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvdW5pdC10ZXN0cy9zeW5jLXRlc3Qtc3VpdGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGlu
c3BlY3Rvci91bml0LXRlc3RzL3N5bmMtdGVzdC1zdWl0ZS5odG1sOgorCiAyMDE1LTA4LTExICBC
cmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFn
ZW50IGNvbW1hbmRzIGRvIG5vdCBhY3R1YWxseSByZXR1cm4gYSBwcm9taXNlIHdoZW4gZXhwZWN0
ZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNl
cy9Qcm90b2NvbFRlc3RTdHViLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
cmVzb3VyY2VzL1Byb3RvY29sVGVzdFN0dWIuanMKaW5kZXggNGMxOTljYjAwOTJmOThkNTM5OTVl
OGQ1YWM2MDk2MDMxZGViMzQ5MC4uNmY4ODhjYWExMDc1NDkxYmI4YjJkNDM4OTJiN2UzZTFmZTQ1
ZTExNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3Vy
Y2VzL1Byb3RvY29sVGVzdFN0dWIuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvcmVzb3VyY2VzL1Byb3RvY29sVGVzdFN0dWIuanMKQEAgLTI1LDE2MCArMjUsOTggQEAK
ICAqLwogSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7fTsKIAotSW5zcGVjdG9yUHJvdG9jb2wgPSB7
fTsKLUluc3BlY3RvclByb3RvY29sLl9kaXNwYXRjaFRhYmxlID0gW107Ci1JbnNwZWN0b3JQcm90
b2NvbC5fcmVxdWVzdElkID0gLTE7Ci1JbnNwZWN0b3JQcm90b2NvbC5ldmVudEhhbmRsZXIgPSB7
fTsKLQotUHJvdG9jb2xUZXN0ID0ge307Ci1Qcm90b2NvbFRlc3QubG9nQ291bnQgPSAwOwotCi1Q
cm90b2NvbFRlc3QuZm9yY2VTeW5jRGVidWdMb2dnaW5nID0gZmFsc2U7Ci1JbnNwZWN0b3JQcm90
b2NvbC5kdW1wSW5zcGVjdG9yUHJvdG9jb2xNZXNzYWdlcyA9IGZhbHNlOwotCi1JbnNwZWN0b3JQ
cm90b2NvbC5zZW5kQ29tbWFuZCA9IGZ1bmN0aW9uKG1ldGhvZE9yT2JqZWN0LCBwYXJhbXMsIGhh
bmRsZXIpCit3aW5kb3cuSW5qZWN0ZWRUZXN0SGFybmVzcyA9IGNsYXNzIEluamVjdGVkVGVzdEhh
cm5lc3MKIHsKLSAgICAvLyBBbGxvdyBuZXctc3R5bGUgYXJndW1lbnRzIG9iamVjdCwgYXMgaW4g
YXdhaXRDb21tYW5kLgotICAgIHZhciBtZXRob2QgPSBtZXRob2RPck9iamVjdDsKLSAgICBpZiAo
dHlwZW9mIG1ldGhvZE9yT2JqZWN0ID09PSAib2JqZWN0IikKLSAgICAgICAgdmFyIHttZXRob2Qs
IHBhcmFtcywgaGFuZGxlcn0gPSBtZXRob2RPck9iamVjdDsKLQotICAgIHRoaXMuX2Rpc3BhdGNo
VGFibGVbKyt0aGlzLl9yZXF1ZXN0SWRdID0gaGFuZGxlcjsKLSAgICB2YXIgbWVzc2FnZU9iamVj
dCA9IHttZXRob2QsIHBhcmFtcywgImlkIjogdGhpcy5fcmVxdWVzdElkfTsKLSAgICB0aGlzLnNl
bmRNZXNzYWdlKG1lc3NhZ2VPYmplY3QpOwotCi0gICAgcmV0dXJuIHRoaXMuX3JlcXVlc3RJZDsK
LX0KLQotSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kID0gZnVuY3Rpb24oYXJncykKLXsK
LSAgICB2YXIge21ldGhvZCwgcGFyYW1zfSA9IGFyZ3M7Ci0gICAgcmV0dXJuIG5ldyBQcm9taXNl
KGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICB0aGlzLl9kaXNwYXRjaFRhYmxl
WysrdGhpcy5fcmVxdWVzdElkXSA9IHtyZXNvbHZlLCByZWplY3R9OwotICAgICAgICB2YXIgbWVz
c2FnZU9iamVjdCA9IHttZXRob2QsIHBhcmFtcywgImlkIjogdGhpcy5fcmVxdWVzdElkfTsKLSAg
ICAgICAgdGhpcy5zZW5kTWVzc2FnZShtZXNzYWdlT2JqZWN0KTsKLSAgICB9LmJpbmQodGhpcykp
OwotfQotCi1JbnNwZWN0b3JQcm90b2NvbC5hd2FpdEV2ZW50ID0gZnVuY3Rpb24oYXJncykKLXsK
LSAgICB2YXIge2V2ZW50fSA9IGFyZ3M7Ci0gICAgaWYgKHR5cGVvZiBldmVudCAhPT0gInN0cmlu
ZyIpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiRXZlbnQgbXVzdCBiZSBhIHN0cmluZy4iKTsK
KyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICB0aGlzLl9sb2dDb3VudCA9IDA7Cisg
ICAgICAgIHRoaXMuZm9yY2VTeW5jRGVidWdMb2dnaW5nID0gZmFsc2U7CisgICAgfQogCi0gICAg
cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICBJ
bnNwZWN0b3JQcm90b2NvbC5ldmVudEhhbmRsZXJbZXZlbnRdID0gZnVuY3Rpb24obWVzc2FnZSkg
ewotICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuZXZlbnRIYW5kbGVyW2V2ZW50XSA9IHVu
ZGVmaW5lZDsKLSAgICAgICAgICAgIHJlc29sdmUobWVzc2FnZSk7Ci0gICAgICAgIH0KLSAgICB9
KTsKLX0KKyAgICBjb21wbGV0ZVRlc3QoKQorICAgIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJNdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuIik7CisgICAgfQogCi1JbnNwZWN0
b3JQcm90b2NvbC5hZGRFdmVudExpc3RlbmVyID0gZnVuY3Rpb24oZXZlbnRUeXBlT3JPYmplY3Qs
IGxpc3RlbmVyKQotewotICAgIHZhciBldmVudCA9IGV2ZW50VHlwZU9yT2JqZWN0OwotICAgIGlm
ICh0eXBlb2YgZXZlbnRUeXBlT3JPYmplY3QgPT09ICJvYmplY3QiKQotICAgICAgICB2YXIge2V2
ZW50LCBsaXN0ZW5lcn0gPSBldmVudFR5cGVPck9iamVjdDsKKyAgICBhZGRSZXN1bHQoKQorICAg
IHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJNdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNs
YXNzZXMuIik7CisgICAgfQogCi0gICAgaWYgKHR5cGVvZiBldmVudCAhPT0gInN0cmluZyIpCi0g
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXZlbnQgbmFtZSBtdXN0IGJlIGEgc3RyaW5nLiIpOwor
ICAgIGRlYnVnTG9nKCkKKyAgICB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiTXVzdCBiZSBp
bXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLiIpOworICAgIH0KIAotICAgIGlmICh0eXBlb2YgbGlz
dGVuZXIgIT09ICJmdW5jdGlvbiIpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiRXZlbnQgbGlz
dGVuZXIgbXVzdCBiZSBjYWxsYWJsZS4iKTsKKyAgICBldmFsdWF0ZUluUGFnZShzdHJpbmcsIGNh
bGxiYWNrKQorICAgIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJNdXN0IGJlIGltcGxlbWVu
dGVkIGJ5IHN1YmNsYXNzZXMuIik7CisgICAgfQogCi0gICAgLy8gQ29udmVydCB0byBhbiBhcnJh
eSBvZiBsaXN0ZW5lcnMuCi0gICAgdmFyIGxpc3RlbmVycyA9IEluc3BlY3RvclByb3RvY29sLmV2
ZW50SGFuZGxlcltldmVudF07Ci0gICAgaWYgKCFsaXN0ZW5lcnMpCi0gICAgICAgIGxpc3RlbmVy
cyA9IEluc3BlY3RvclByb3RvY29sLmV2ZW50SGFuZGxlcltldmVudF0gPSBbXTsKLSAgICBlbHNl
IGlmICh0eXBlb2YgbGlzdGVuZXJzID09PSAiZnVuY3Rpb24iKQotICAgICAgICBsaXN0ZW5lcnMg
PSBJbnNwZWN0b3JQcm90b2NvbC5ldmVudEhhbmRsZXJbZXZlbnRdID0gW2xpc3RlbmVyc107Cisg
ICAgY3JlYXRlQXN5bmNTdWl0ZShuYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBJbmpl
Y3RlZFRlc3RIYXJuZXNzLkFzeW5jVGVzdFN1aXRlKHRoaXMsIG5hbWUpOworICAgIH0KIAotICAg
IC8vIFByZXZlbnQgcmVnaXN0ZXJpbmcgbXVsdGlwbGUgdGltZXMuCi0gICAgaWYgKGxpc3RlbmVy
cy5pbmNsdWRlcyhsaXN0ZW5lcikpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJl
Z2lzdGVyIHRoZSBzYW1lIGxpc3RlbmVyIG1vcmUgdGhhbiBvbmNlLiIpOworICAgIGNyZWF0ZVN5
bmNTdWl0ZShuYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBJbmplY3RlZFRlc3RIYXJu
ZXNzLlN5bmNUZXN0U3VpdGUodGhpcywgbmFtZSk7CisgICAgfQogCi0gICAgbGlzdGVuZXJzLnB1
c2gobGlzdGVuZXIpOwotfQorICAgIGltcG9ydFNjcmlwdChzY3JpcHROYW1lKQorICAgIHsKKyAg
ICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgICAgICB2YXIgaXNBc3lu
Y1JlcXVlc3QgPSBmYWxzZTsKKyAgICAgICAgeGhyLm9wZW4oIkdFVCIsIHNjcmlwdE5hbWUsIGlz
QXN5bmNSZXF1ZXN0KTsKKyAgICAgICAgeGhyLnNlbmQobnVsbCk7CisgICAgICAgIGlmICh4aHIu
c3RhdHVzICE9PSAwICYmIHhoci5zdGF0dXMgIT09IDIwMCkKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiSW52YWxpZCBzY3JpcHQgVVJMOiAiICsgc2NyaXB0TmFtZSk7CisgICAgICAgIHZh
ciBzY3JpcHQgPSAidHJ5IHsgIiArIHhoci5yZXNwb25zZVRleHQgKyAifSBjYXRjaCAoZSkgeyBh
bGVydCgiICsgSlNPTi5zdHJpbmdpZnkoIkVycm9yIGluOiAiICsgc2NyaXB0TmFtZSkgKyAiKTsg
dGhyb3cgZTsgfSI7CisgICAgICAgIHdpbmRvdy5ldmFsKHNjcmlwdCk7CisgICAgfQogCi1JbnNw
ZWN0b3JQcm90b2NvbC5zZW5kTWVzc2FnZSA9IGZ1bmN0aW9uKG1lc3NhZ2VPYmplY3QpCi17Ci0g
ICAgLy8gVGhpcyBtYXRjaGVzIHRoZSBkZWJ1ZyBkdW1waW5nIGluIEluc3BlY3RvckJhY2tlbmQs
IHdoaWNoIGlzIGJ5cGFzc2VkCi0gICAgLy8gYnkgSW5zcGVjdG9yUHJvdG9jb2wuIFJldHVybiBt
ZXNzYWdlcyBzaG91bGQgYmUgZHVtcGVkIGJ5IEluc3BlY3RvckJhY2tlbmQuCi0gICAgaWYgKHRo
aXMuZHVtcEluc3BlY3RvclByb3RvY29sTWVzc2FnZXMpCi0gICAgICAgIGNvbnNvbGUubG9nKCJm
cm9udGVuZDogIiArIEpTT04uc3RyaW5naWZ5KG1lc3NhZ2VPYmplY3QpKTsKKyAgICBnZXQgbG9n
Q291bnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2xvZ0NvdW50OworICAgIH0KIAot
ICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5zZW5kTWVzc2FnZVRvQmFja2VuZChKU09OLnN0cmlu
Z2lmeShtZXNzYWdlT2JqZWN0KSk7Ci19CisgICAgbG9nKG1lc3NhZ2UpCisgICAgeworICAgICAg
ICArK3RoaXMuX2xvZ0NvdW50OwogCi1JbnNwZWN0b3JQcm90b2NvbC5jaGVja0ZvckVycm9yID0g
ZnVuY3Rpb24ocmVzcG9uc2VPYmplY3QpCi17Ci0gICAgaWYgKHJlc3BvbnNlT2JqZWN0LmVycm9y
KSB7Ci0gICAgICAgIFByb3RvY29sVGVzdC5sb2coIlBST1RPQ09MIEVSUk9SOiAiICsgSlNPTi5z
dHJpbmdpZnkocmVzcG9uc2VPYmplY3QuZXJyb3IpKTsKLSAgICAgICAgUHJvdG9jb2xUZXN0LmNv
bXBsZXRlVGVzdCgpOwotICAgICAgICB0aHJvdyAiUFJPVE9DT0wgRVJST1IiOworICAgICAgICBp
ZiAodGhpcy5mb3JjZVN5bmNEZWJ1Z0xvZ2dpbmcpCisgICAgICAgICAgICB0aGlzLmRlYnVnTG9n
KG1lc3NhZ2UpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLmFkZFJlc3VsdChtZXNz
YWdlKTsKICAgICB9Ci19Ci0KLUluc3BlY3RvckZyb250ZW5kQVBJLmRpc3BhdGNoTWVzc2FnZUFz
eW5jID0gZnVuY3Rpb24obWVzc2FnZU9iamVjdCkKLXsKLSAgICAvLyBJZiB0aGUgbWVzc2FnZSBo
YXMgYW4gaWQsIHRoZW4gaXQgaXMgYSByZXBseSB0byBhIGNvbW1hbmQuCi0gICAgdmFyIG1lc3Nh
Z2VJZCA9IG1lc3NhZ2VPYmplY3RbImlkIl07Ci0gICAgaWYgKHR5cGVvZiBtZXNzYWdlSWQgPT09
ICJudW1iZXIiKSB7Ci0gICAgICAgIHZhciBoYW5kbGVyID0gSW5zcGVjdG9yUHJvdG9jb2wuX2Rp
c3BhdGNoVGFibGVbbWVzc2FnZUlkXTsKLSAgICAgICAgaWYgKCFoYW5kbGVyKQotICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIGlmICh0eXBlb2YgaGFuZGxlciA9PT0gImZ1bmN0aW9uIikK
LSAgICAgICAgICAgIGhhbmRsZXIobWVzc2FnZU9iamVjdCk7Ci0gICAgICAgIGVsc2UgaWYgKHR5
cGVvZiBoYW5kbGVyID09PSAib2JqZWN0IikgewotICAgICAgICAgICAgdmFyIHtyZXNvbHZlLCBy
ZWplY3R9ID0gaGFuZGxlcjsKLSAgICAgICAgICAgIGlmICgiZXJyb3IiIGluIG1lc3NhZ2VPYmpl
Y3QpCi0gICAgICAgICAgICAgICAgcmVqZWN0KG1lc3NhZ2VPYmplY3QuZXJyb3IubWVzc2FnZSk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzb2x2ZShtZXNzYWdlT2JqZWN0
LnJlc3VsdCk7Ci0gICAgICAgIH0KLSAgICAvLyBPdGhlcndpc2UsIGl0IGlzIGFuIGV2ZW50Lgot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIHZhciBldmVudE5hbWUgPSBtZXNzYWdlT2JqZWN0WyJtZXRo
b2QiXTsKLSAgICAgICAgdmFyIGhhbmRsZXIgPSBJbnNwZWN0b3JQcm90b2NvbC5ldmVudEhhbmRs
ZXJbZXZlbnROYW1lXTsKLSAgICAgICAgaWYgKCFoYW5kbGVyKQorICAgIGFzc2VydChjb25kaXRp
b24sIG1lc3NhZ2UpCisgICAgeworICAgICAgICBpZiAoY29uZGl0aW9uKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIGlmICh0eXBlb2YgaGFuZGxlciA9PT0gImZ1bmN0aW9uIikKLSAg
ICAgICAgICAgIGhhbmRsZXIobWVzc2FnZU9iamVjdCk7Ci0gICAgICAgIGVsc2UgaWYgKGhhbmRs
ZXIgaW5zdGFuY2VvZiBBcnJheSkgewotICAgICAgICAgICAgaGFuZGxlci5tYXAoZnVuY3Rpb24o
bGlzdGVuZXIpIHsKLSAgICAgICAgICAgICAgICBsaXN0ZW5lci5jYWxsKG51bGwsIG1lc3NhZ2VP
YmplY3QpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGhhbmRs
ZXIgPT09ICJvYmplY3QiKSB7Ci0gICAgICAgICAgICB2YXIge3Jlc29sdmUsIHJlamVjdH0gPSBo
YW5kbGVyOwotICAgICAgICAgICAgaWYgKCJlcnJvciIgaW4gbWVzc2FnZU9iamVjdCkKLSAgICAg
ICAgICAgICAgICByZWplY3QobWVzc2FnZU9iamVjdC5lcnJvci5tZXNzYWdlKTsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXNvbHZlKG1lc3NhZ2VPYmplY3QucmVzdWx0KTsK
LSAgICAgICAgfQorICAgICAgICBsZXQgc3RyaW5naWZpZWRNZXNzYWdlID0gdHlwZW9mIG1lc3Nh
Z2UgIT09ICJvYmplY3QiID8gbWVzc2FnZSA6IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpOworICAg
ICAgICB0aGlzLmFkZFJlc3VsdCgiQVNTRVJUOiAiICsgc3RyaW5naWZpZWRNZXNzYWdlKTsKICAg
ICB9Ci19CiAKLXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZl
bnQpIHsKLSAgICB0cnkgewotICAgICAgICBldmFsKGV2ZW50LmRhdGEpOwotICAgIH0gY2F0Y2gg
KGUpIHsKLSAgICAgICAgYWxlcnQoZS5zdGFjayk7Ci0gICAgICAgIFByb3RvY29sVGVzdC5jb21w
bGV0ZVRlc3QoKTsKLSAgICAgICAgdGhyb3cgZTsKKyAgICBleHBlY3RUaGF0KGNvbmRpdGlvbiwg
bWVzc2FnZSkKKyAgICB7CisgICAgICAgIGxldCBwcmVmaXggPSBjb25kaXRpb24gPyAiUEFTUyIg
OiAiRkFJTCI7CisgICAgICAgIGxldCBzdHJpbmdpZmllZE1lc3NhZ2UgPSB0eXBlb2YgbWVzc2Fn
ZSAhPT0gIm9iamVjdCIgPyBtZXNzYWdlIDogSlNPTi5zdHJpbmdpZnkobWVzc2FnZSk7CisgICAg
ICAgIHRoaXMuYWRkUmVzdWx0KHByZWZpeCArICI6ICIgKyBzdHJpbmdpZmllZE1lc3NhZ2UpOwog
ICAgIH0KLX0pOworfQogCi0vLyBGSVhNRTogRXZlcnl0aGluZyBiZWxvdyBoZXJlIHNob3VsZCBi
ZSBleHRyYWN0ZWQgdG8gYSBmaWxlIGNvbnRhaW5pbmcgc2hhcmVkIHRlc3QgdXRpbGl0aWVzCi0v
LyBiZXR3ZWVuIHRoZSB0d28gaGFybmVzc2VzLgorSW5qZWN0ZWRUZXN0SGFybmVzcy5Bc3luY1Rl
c3RTdWl0ZSA9IGNsYXNzIEFzeW5jVGVzdFN1aXRlIHsKKyAgICBjb25zdHJ1Y3RvcihoYXJuZXNz
LCBuYW1lKSB7CisgICAgICAgIGlmICghKGhhcm5lc3MgaW5zdGFuY2VvZiBJbmplY3RlZFRlc3RI
YXJuZXNzKSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiTXVzdCBwYXNzIHRoZSB0ZXN0
J3MgaGFybmVzcyBhcyB0aGUgZmlyc3QgYXJndW1lbnQuIik7CiAKLVByb3RvY29sVGVzdC5Bc3lu
Y1Rlc3RTdWl0ZSA9IGNsYXNzIEFzeW5jVGVzdFN1aXRlIHsKLSAgICBjb25zdHJ1Y3RvcihuYW1l
KSB7CiAgICAgICAgIGlmICghbmFtZSB8fCB0eXBlb2YgbmFtZSAhPT0gInN0cmluZyIpCiAgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRyaWVkIHRvIGNyZWF0ZSBBc3luY1Rlc3RTdWl0ZSB3
aXRob3V0IHN0cmluZyBzdWl0ZSBuYW1lLiIpOwogCiAgICAgICAgIHRoaXMubmFtZSA9IG5hbWU7
CisgICAgICAgIHRoaXMuX2hhcm5lc3MgPSBoYXJuZXNzOwogCiAgICAgICAgIHRoaXMudGVzdGNh
c2VzID0gW107CiAgICAgICAgIHRoaXMucnVuQ291bnQgPSAwOwpAQCAtMjE3LDEyICsxNTUsMTIg
QEAgUHJvdG9jb2xUZXN0LkFzeW5jVGVzdFN1aXRlID0gY2xhc3MgQXN5bmNUZXN0U3VpdGUgewog
ICAgIHJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpCiAgICAgewogICAgICAgICBmdW5jdGlvbiBmaW5p
c2goKSB7Ci0gICAgICAgICAgICBQcm90b2NvbFRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAg
ICAgICB0aGlzLl9oYXJuZXNzLmNvbXBsZXRlVGVzdCgpOwogICAgICAgICB9CiAKICAgICAgICAg
dGhpcy5ydW5UZXN0Q2FzZXMoKQotICAgICAgICAgICAgLnRoZW4oZmluaXNoKQotICAgICAgICAg
ICAgLmNhdGNoKGZpbmlzaCk7CisgICAgICAgICAgICAudGhlbihmaW5pc2guYmluZCh0aGlzKSkK
KyAgICAgICAgICAgIC5jYXRjaChmaW5pc2guYmluZCh0aGlzKSk7CiAgICAgfQogCiAgICAgcnVu
VGVzdENhc2VzKCkKQEAgLTIzNCwxOSArMTcyLDE5IEBAIFByb3RvY29sVGVzdC5Bc3luY1Rlc3RT
dWl0ZSA9IGNsYXNzIEFzeW5jVGVzdFN1aXRlIHsKIAogICAgICAgICB0aGlzLl9zdGFydGVkUnVu
bmluZyA9IHRydWU7CiAKLSAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygiIik7Ci0gICAgICAgIFBy
b3RvY29sVGVzdC5sb2coIj09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogIiArIHRoaXMubmFtZSk7Cisg
ICAgICAgIHRoaXMuX2hhcm5lc3MubG9nKCIiKTsKKyAgICAgICAgdGhpcy5faGFybmVzcy5sb2co
Ij09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogIiArIHRoaXMubmFtZSk7CiAKICAgICAgICAgLy8gQXZv
aWQgYWRkaW5nIG5ld2xpbmVzIGlmIG5vdGhpbmcgd2FzIGxvZ2dlZC4KLSAgICAgICAgdmFyIHBy
aW9yTG9nQ291bnQgPSBQcm90b2NvbFRlc3QubG9nQ291bnQ7CisgICAgICAgIHZhciBwcmlvckxv
Z0NvdW50ID0gdGhpcy5faGFybmVzcy5sb2dDb3VudDsKICAgICAgICAgdmFyIHN1aXRlID0gdGhp
czsKICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMudGVzdGNhc2VzLnJlZHVjZShmdW5jdGlvbihj
aGFpbiwgdGVzdGNhc2UsIGkpIHsKICAgICAgICAgICAgIHJldHVybiBjaGFpbi50aGVuKGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgICAgIGlmIChpID4gMCAmJiBwcmlvckxvZ0NvdW50ICsgMSA8
IFByb3RvY29sVGVzdC5sb2dDb3VudCkKLSAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0
LmxvZygiIik7CisgICAgICAgICAgICAgICAgaWYgKGkgPiAwICYmIHByaW9yTG9nQ291bnQgKyAx
IDwgc3VpdGUuX2hhcm5lc3MubG9nQ291bnQpCisgICAgICAgICAgICAgICAgICAgIHN1aXRlLl9o
YXJuZXNzLmxvZygiIik7CiAKLSAgICAgICAgICAgICAgICBwcmlvckxvZ0NvdW50ID0gUHJvdG9j
b2xUZXN0LmxvZ0NvdW50OwotICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5sb2coIi0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiAiICsgdGVzdGNhc2UubmFtZSk7CisgICAgICAgICAgICAgICAgcHJp
b3JMb2dDb3VudCA9IHN1aXRlLl9oYXJuZXNzLmxvZ0NvdW50OworICAgICAgICAgICAgICAgIHN1
aXRlLl9oYXJuZXNzLmxvZygiLS0gUnVubmluZyB0ZXN0IGNhc2U6ICIgKyB0ZXN0Y2FzZS5uYW1l
KTsKICAgICAgICAgICAgICAgICBzdWl0ZS5ydW5Db3VudCsrOwogICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgUHJvbWlzZSh0ZXN0Y2FzZS50ZXN0KTsKICAgICAgICAgICAgIH0pOwpAQCAtMjYx
LDE4ICsxOTksMjIgQEAgUHJvdG9jb2xUZXN0LkFzeW5jVGVzdFN1aXRlID0gY2xhc3MgQXN5bmNU
ZXN0U3VpdGUgewogICAgICAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlICE9PSAic3RyaW5nIikK
ICAgICAgICAgICAgICAgICBtZXNzYWdlID0gSlNPTi5zdHJpbmdpZnkobWVzc2FnZSk7CiAKLSAg
ICAgICAgICAgIFByb3RvY29sVGVzdC5sb2coIiEhIEVYQ0VQVElPTjogIiArIG1lc3NhZ2UpOwor
ICAgICAgICAgICAgc3VpdGUuX2hhcm5lc3MubG9nKCIhISBFWENFUFRJT046ICIgKyBtZXNzYWdl
KTsKICAgICAgICAgICAgIHRocm93IGU7IC8vIFJlamVjdCB0aGlzIHByb21pc2UgYnkgcmUtdGhy
b3dpbmcgdGhlIGVycm9yLgogICAgICAgICB9KTsKICAgICB9CiB9CiAKLVByb3RvY29sVGVzdC5T
eW5jVGVzdFN1aXRlID0gY2xhc3MgU3luY1Rlc3RTdWl0ZSB7Ci0gICAgY29uc3RydWN0b3IobmFt
ZSkgeworSW5qZWN0ZWRUZXN0SGFybmVzcy5TeW5jVGVzdFN1aXRlID0gY2xhc3MgU3luY1Rlc3RT
dWl0ZSB7CisgICAgY29uc3RydWN0b3IoaGFybmVzcywgbmFtZSkgeworICAgICAgICBpZiAoISho
YXJuZXNzIGluc3RhbmNlb2YgSW5qZWN0ZWRUZXN0SGFybmVzcykpCisgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIk11c3QgcGFzcyB0aGUgdGVzdCdzIGhhcm5lc3MgYXMgdGhlIGZpcnN0IGFy
Z3VtZW50LiIpOworCiAgICAgICAgIGlmICghbmFtZSB8fCB0eXBlb2YgbmFtZSAhPT0gInN0cmlu
ZyIpCiAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRyaWVkIHRvIGNyZWF0ZSBTeW5jVGVz
dFN1aXRlIHdpdGhvdXQgc3RyaW5nIHN1aXRlIG5hbWUuIik7CiAKICAgICAgICAgdGhpcy5uYW1l
ID0gbmFtZTsKKyAgICAgICAgdGhpcy5faGFybmVzcyA9IGhhcm5lc3M7CiAKICAgICAgICAgdGhp
cy50ZXN0Y2FzZXMgPSBbXTsKICAgICAgICAgdGhpcy5ydW5Db3VudCA9IDA7CkBAIC0zMTAsNyAr
MjUyLDcgQEAgUHJvdG9jb2xUZXN0LlN5bmNUZXN0U3VpdGUgPSBjbGFzcyBTeW5jVGVzdFN1aXRl
IHsKICAgICBydW5UZXN0Q2FzZXNBbmRGaW5pc2goKQogICAgIHsKICAgICAgICAgdGhpcy5ydW5U
ZXN0Q2FzZXMoKTsKLSAgICAgICAgUHJvdG9jb2xUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAg
ICB0aGlzLl9oYXJuZXNzLmNvbXBsZXRlVGVzdCgpOwogICAgIH0KIAogICAgIHJ1blRlc3RDYXNl
cygpCkBAIC0zMjIsMTkgKzI2NCwxOSBAQCBQcm90b2NvbFRlc3QuU3luY1Rlc3RTdWl0ZSA9IGNs
YXNzIFN5bmNUZXN0U3VpdGUgewogCiAgICAgICAgIHRoaXMuX3N0YXJ0ZWRSdW5uaW5nID0gdHJ1
ZTsKIAotICAgICAgICBQcm90b2NvbFRlc3QubG9nKCIiKTsKLSAgICAgICAgUHJvdG9jb2xUZXN0
LmxvZygiPT0gUnVubmluZyB0ZXN0IHN1aXRlOiAiICsgdGhpcy5uYW1lKTsKKyAgICAgICAgdGhp
cy5faGFybmVzcy5sb2coIiIpOworICAgICAgICB0aGlzLl9oYXJuZXNzLmxvZygiPT0gUnVubmlu
ZyB0ZXN0IHN1aXRlOiAiICsgdGhpcy5uYW1lKTsKIAotICAgICAgICB2YXIgcHJpb3JMb2dDb3Vu
dCA9IFByb3RvY29sVGVzdC5sb2dDb3VudDsKKyAgICAgICAgdmFyIHByaW9yTG9nQ291bnQgPSB0
aGlzLl9oYXJuZXNzLmxvZ0NvdW50OwogICAgICAgICB2YXIgc3VpdGUgPSB0aGlzOwogICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMudGVzdGNhc2VzLmxlbmd0aDsgaSsrKSB7CiAgICAg
ICAgICAgICB2YXIgdGVzdGNhc2UgPSB0aGlzLnRlc3RjYXNlc1tpXTsKLSAgICAgICAgICAgIGlm
IChpID4gMCAmJiBwcmlvckxvZ0NvdW50ICsgMSA8IFByb3RvY29sVGVzdC5sb2dDb3VudCkKLSAg
ICAgICAgICAgICAgICBQcm90b2NvbFRlc3QubG9nKCIiKTsKKyAgICAgICAgICAgIGlmIChpID4g
MCAmJiBwcmlvckxvZ0NvdW50ICsgMSA8IHRoaXMuX2hhcm5lc3MubG9nQ291bnQpCisgICAgICAg
ICAgICAgICAgdGhpcy5faGFybmVzcy5sb2coIiIpOwogCi0gICAgICAgICAgICBwcmlvckxvZ0Nv
dW50ID0gUHJvdG9jb2xUZXN0LmxvZ0NvdW50OworICAgICAgICAgICAgcHJpb3JMb2dDb3VudCA9
IHRoaXMuX2hhcm5lc3MubG9nQ291bnQ7CiAKLSAgICAgICAgICAgIFByb3RvY29sVGVzdC5sb2co
Ii0tIFJ1bm5pbmcgdGVzdCBjYXNlOiAiICsgdGVzdGNhc2UubmFtZSk7CisgICAgICAgICAgICB0
aGlzLl9oYXJuZXNzLmxvZygiLS0gUnVubmluZyB0ZXN0IGNhc2U6ICIgKyB0ZXN0Y2FzZS5uYW1l
KTsKICAgICAgICAgICAgIHN1aXRlLnJ1bkNvdW50Kys7CiAgICAgICAgICAgICB0cnkgewogICAg
ICAgICAgICAgICAgIHZhciByZXN1bHQgPSB0ZXN0Y2FzZS50ZXN0LmNhbGwobnVsbCk7CkBAIC0z
NTMsNyArMjk1LDcgQEAgUHJvdG9jb2xUZXN0LlN5bmNUZXN0U3VpdGUgPSBjbGFzcyBTeW5jVGVz
dFN1aXRlIHsKICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG1lc3NhZ2UgIT09ICJzdHJpbmci
KQogICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gSlNPTi5zdHJpbmdpZnkobWVzc2FnZSk7
CiAKLSAgICAgICAgICAgICAgICBQcm90b2NvbFRlc3QubG9nKCIhISBFWENFUFRJT046ICIgKyBt
ZXNzYWdlKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9oYXJuZXNzLmxvZygiISEgRVhDRVBUSU9O
OiAiICsgbWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CkBAIC0zNjIsNDYgKzMwNCwxODcgQEAgUHJvdG9jb2xUZXN0LlN5bmNU
ZXN0U3VpdGUgPSBjbGFzcyBTeW5jVGVzdFN1aXRlIHsKICAgICB9CiB9CiAKLS8vIExvZ3MgYSBt
ZXNzYWdlIHRvIHRlc3QgZG9jdW1lbnQuCi1Qcm90b2NvbFRlc3QubG9nID0gZnVuY3Rpb24obWVz
c2FnZSkKK2NsYXNzIFByb3RvY29sVGVzdEhhcm5lc3MgZXh0ZW5kcyBJbmplY3RlZFRlc3RIYXJu
ZXNzCiB7Ci0gICAgKytQcm90b2NvbFRlc3QubG9nQ291bnQ7CisgICAgLy8gSW5qZWN0ZWRUZXN0
SGFybmVzcyBPdmVycmlkZXMKIAotICAgIGlmICh0aGlzLmZvcmNlU3luY0RlYnVnTG9nZ2luZykK
LSAgICAgICAgdGhpcy5kZWJ1Z0xvZyhtZXNzYWdlKTsKLSAgICBlbHNlCi0gICAgICAgIEluc3Bl
Y3RvclByb3RvY29sLnNlbmRDb21tYW5kKCJSdW50aW1lLmV2YWx1YXRlIiwgeyAiZXhwcmVzc2lv
biI6ICJsb2coIiArIEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpICsgIikiIH0gKTsKKyAgICBjb21w
bGV0ZVRlc3QoKQorICAgIHsKKyAgICAgICAgdGhpcy5ldmFsdWF0ZUluUGFnZSgiY2xvc2VUZXN0
KCk7Iik7CisgICAgfQorCisgICAgYWRkUmVzdWx0KG1lc3NhZ2UpCisgICAgeworICAgICAgICAv
LyBVbmZvcnR1bmF0ZWx5LCBldmVyeSBzdHJpbmcgYXJndW1lbnQgbXVzdCBiZSBlc2NhcGVkIGJl
Y2F1c2UgdGVzdHMgYXJlIG5vdCBjb25zaXN0ZW50CisgICAgICAgIC8vIHdpdGggcmVzcGVjdCB0
byBlc2NhcGluZyB3aXRoIHNpbmdsZSBvciBkb3VibGUgcXVvdGVzLiBTb21lIGV4Y2VwdGlvbnMg
dXNlIHNpbmdsZSBxdW90ZXMuCisgICAgICAgIHZhciBzdHJpbmdpZmllZE1lc3NhZ2UgPSB0eXBl
b2YgbWVzc2FnZSAhPT0gInN0cmluZyIgPyBKU09OLnN0cmluZ2lmeShtZXNzYWdlKSA6IG1lc3Nh
Z2U7CisgICAgICAgIHRoaXMuZXZhbHVhdGVJblBhZ2UoImxvZyh1bmVzY2FwZSgnIiArIGVzY2Fw
ZShzdHJpbmdpZmllZE1lc3NhZ2UpICsgIicpKTsiKTsKKyAgICB9CisKKyAgICBkZWJ1Z0xvZyht
ZXNzYWdlKQorICAgIHsKKyAgICAgICAgdmFyIHN0cmluZ2lmaWVkTWVzc2FnZSA9IHR5cGVvZiBt
ZXNzYWdlICE9PSAic3RyaW5nIiA/IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpIDogbWVzc2FnZTsK
KyAgICAgICAgdGhpcy5ldmFsdWF0ZUluUGFnZSgiZGVidWdMb2codW5lc2NhcGUoJyIgKyBlc2Nh
cGUoc3RyaW5naWZpZWRNZXNzYWdlKSArICInKSk7IikKKyAgICB9CisKKyAgICBldmFsdWF0ZUlu
UGFnZShleHByZXNzaW9uLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGxldCBhcmdzID0gewor
ICAgICAgICAgICAgbWV0aG9kOiAiUnVudGltZS5ldmFsdWF0ZSIsCisgICAgICAgICAgICBwYXJh
bXM6IHtleHByZXNzaW9ufQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFj
ayA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLnNlbmRDb21t
YW5kKGFyZ3MsIGNhbGxiYWNrKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIElu
c3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZChhcmdzKTsKKyAgICB9CiB9CiAKLS8vIExvZ3Mg
YW4gYXNzZXJ0aW9uIHJlc3VsdCB0byB0aGUgdGVzdCBkb2N1bWVudC4KLVByb3RvY29sVGVzdC5h
c3NlcnQgPSBmdW5jdGlvbihjb25kaXRpb24sIG1lc3NhZ2UpCit3aW5kb3cuUHJvdG9jb2xUZXN0
ID0gbmV3IFByb3RvY29sVGVzdEhhcm5lc3MoKTsKKworSW5zcGVjdG9yUHJvdG9jb2wgPSB7fTsK
K0luc3BlY3RvclByb3RvY29sLl9kaXNwYXRjaFRhYmxlID0gW107CitJbnNwZWN0b3JQcm90b2Nv
bC5fcmVxdWVzdElkID0gLTE7CitJbnNwZWN0b3JQcm90b2NvbC5ldmVudEhhbmRsZXIgPSB7fTsK
KworSW5zcGVjdG9yUHJvdG9jb2wuZHVtcEluc3BlY3RvclByb3RvY29sTWVzc2FnZXMgPSBmYWxz
ZTsKKworSW5zcGVjdG9yUHJvdG9jb2wuc2VuZENvbW1hbmQgPSBmdW5jdGlvbihtZXRob2RPck9i
amVjdCwgcGFyYW1zLCBoYW5kbGVyKQogewotICAgIHZhciBzdGF0dXMgPSBjb25kaXRpb24gPyAi
UEFTUyIgOiAiRkFJTCI7Ci0gICAgdmFyIG1lc3NhZ2UgPSB0eXBlb2YgbWVzc2FnZSAhPT0gInN0
cmluZyIgPyBKU09OLnN0cmluZ2lmeShtZXNzYWdlKSA6IG1lc3NhZ2U7Ci0gICAgdmFyIGZvcm1h
dHRlZE1lc3NhZ2UgPSBzdGF0dXMgKyAiOiAiICsgbWVzc2FnZTsKLSAgICB0aGlzLmxvZyhmb3Jt
YXR0ZWRNZXNzYWdlKTsKKyAgICAvLyBBbGxvdyBuZXctc3R5bGUgYXJndW1lbnRzIG9iamVjdCwg
YXMgaW4gYXdhaXRDb21tYW5kLgorICAgIHZhciBtZXRob2QgPSBtZXRob2RPck9iamVjdDsKKyAg
ICBpZiAodHlwZW9mIG1ldGhvZE9yT2JqZWN0ID09PSAib2JqZWN0IikKKyAgICAgICAgdmFyIHtt
ZXRob2QsIHBhcmFtcywgaGFuZGxlcn0gPSBtZXRob2RPck9iamVjdDsKKworICAgIHRoaXMuX2Rp
c3BhdGNoVGFibGVbKyt0aGlzLl9yZXF1ZXN0SWRdID0gaGFuZGxlcjsKKyAgICB2YXIgbWVzc2Fn
ZU9iamVjdCA9IHttZXRob2QsIHBhcmFtcywgImlkIjogdGhpcy5fcmVxdWVzdElkfTsKKyAgICB0
aGlzLnNlbmRNZXNzYWdlKG1lc3NhZ2VPYmplY3QpOworCisgICAgcmV0dXJuIHRoaXMuX3JlcXVl
c3RJZDsKIH0KIAotLy8gTG9ncyBtZXNzYWdlIGEgZGlyZWN0bHkgdG8gc3Rkb3V0IG9mIHRoZSB0
ZXN0IHByb2Nlc3MgdmlhIGFsZXJ0IGZ1bmN0aW9uLgotLy8gVGhpcyBtZXNzYWdlIHNob3VsZCBz
dXJ2aXZlIHByb2Nlc3MgY3Jhc2ggb3Iga2lsbCBieSB0aW1lb3V0LgotUHJvdG9jb2xUZXN0LmRl
YnVnTG9nID0gZnVuY3Rpb24obWVzc2FnZSkKK0luc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFu
ZCA9IGZ1bmN0aW9uKGFyZ3MpCiB7Ci0gICAgSW5zcGVjdG9yUHJvdG9jb2wuc2VuZENvbW1hbmQo
IlJ1bnRpbWUuZXZhbHVhdGUiLCB7ICJleHByZXNzaW9uIjogImRlYnVnTG9nKCIgKyBKU09OLnN0
cmluZ2lmeShtZXNzYWdlKSArICIpIiB9ICk7CisgICAgdmFyIHttZXRob2QsIHBhcmFtc30gPSBh
cmdzOworICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsK
KyAgICAgICAgdGhpcy5fZGlzcGF0Y2hUYWJsZVsrK3RoaXMuX3JlcXVlc3RJZF0gPSB7cmVzb2x2
ZSwgcmVqZWN0fTsKKyAgICAgICAgdmFyIG1lc3NhZ2VPYmplY3QgPSB7bWV0aG9kLCBwYXJhbXMs
ICJpZCI6IHRoaXMuX3JlcXVlc3RJZH07CisgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UobWVzc2Fn
ZU9iamVjdCk7CisgICAgfS5iaW5kKHRoaXMpKTsKIH0KIAotUHJvdG9jb2xUZXN0LmNvbXBsZXRl
VGVzdCA9IGZ1bmN0aW9uKCkKK0luc3BlY3RvclByb3RvY29sLmF3YWl0RXZlbnQgPSBmdW5jdGlv
bihhcmdzKQogewotICAgIEluc3BlY3RvclByb3RvY29sLnNlbmRDb21tYW5kKCJSdW50aW1lLmV2
YWx1YXRlIiwgeyAiZXhwcmVzc2lvbiI6ICJjbG9zZVRlc3QoKTsifSApOworICAgIHZhciB7ZXZl
bnR9ID0gYXJnczsKKyAgICBpZiAodHlwZW9mIGV2ZW50ICE9PSAic3RyaW5nIikKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFdmVudCBtdXN0IGJlIGEgc3RyaW5nLiIpOworCisgICAgcmV0dXJu
IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICBJbnNwZWN0
b3JQcm90b2NvbC5ldmVudEhhbmRsZXJbZXZlbnRdID0gZnVuY3Rpb24obWVzc2FnZSkgeworICAg
ICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuZXZlbnRIYW5kbGVyW2V2ZW50XSA9IHVuZGVmaW5l
ZDsKKyAgICAgICAgICAgIHJlc29sdmUobWVzc2FnZSk7CisgICAgICAgIH0KKyAgICB9KTsKIH0K
IAotUHJvdG9jb2xUZXN0LmltcG9ydFNjcmlwdCA9IGZ1bmN0aW9uKHNjcmlwdE5hbWUpCitJbnNw
ZWN0b3JQcm90b2NvbC5hZGRFdmVudExpc3RlbmVyID0gZnVuY3Rpb24oZXZlbnRUeXBlT3JPYmpl
Y3QsIGxpc3RlbmVyKQogewotICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAg
ICB2YXIgaXNBc3luY1JlcXVlc3QgPSBmYWxzZTsKLSAgICB4aHIub3BlbigiR0VUIiwgc2NyaXB0
TmFtZSwgaXNBc3luY1JlcXVlc3QpOwotICAgIHhoci5zZW5kKG51bGwpOwotICAgIGlmICh4aHIu
c3RhdHVzICE9PSAwICYmIHhoci5zdGF0dXMgIT09IDIwMCkKLSAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJJbnZhbGlkIHNjcmlwdCBVUkw6ICIgKyBzY3JpcHROYW1lKTsKLSAgICB2YXIgc2NyaXB0
ID0gInRyeSB7ICIgKyB4aHIucmVzcG9uc2VUZXh0ICsgIn0gY2F0Y2ggKGUpIHsgYWxlcnQoIiAr
IEpTT04uc3RyaW5naWZ5KCJFcnJvciBpbjogIiArIHNjcmlwdE5hbWUpICsgIik7IHRocm93IGU7
IH0iOwotICAgIHdpbmRvdy5ldmFsKHNjcmlwdCk7CisgICAgdmFyIGV2ZW50ID0gZXZlbnRUeXBl
T3JPYmplY3Q7CisgICAgaWYgKHR5cGVvZiBldmVudFR5cGVPck9iamVjdCA9PT0gIm9iamVjdCIp
CisgICAgICAgIHZhciB7ZXZlbnQsIGxpc3RlbmVyfSA9IGV2ZW50VHlwZU9yT2JqZWN0OworCisg
ICAgaWYgKHR5cGVvZiBldmVudCAhPT0gInN0cmluZyIpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXZlbnQgbmFtZSBtdXN0IGJlIGEgc3RyaW5nLiIpOworCisgICAgaWYgKHR5cGVvZiBsaXN0
ZW5lciAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFdmVudCBsaXN0
ZW5lciBtdXN0IGJlIGNhbGxhYmxlLiIpOworCisgICAgLy8gQ29udmVydCB0byBhbiBhcnJheSBv
ZiBsaXN0ZW5lcnMuCisgICAgdmFyIGxpc3RlbmVycyA9IEluc3BlY3RvclByb3RvY29sLmV2ZW50
SGFuZGxlcltldmVudF07CisgICAgaWYgKCFsaXN0ZW5lcnMpCisgICAgICAgIGxpc3RlbmVycyA9
IEluc3BlY3RvclByb3RvY29sLmV2ZW50SGFuZGxlcltldmVudF0gPSBbXTsKKyAgICBlbHNlIGlm
ICh0eXBlb2YgbGlzdGVuZXJzID09PSAiZnVuY3Rpb24iKQorICAgICAgICBsaXN0ZW5lcnMgPSBJ
bnNwZWN0b3JQcm90b2NvbC5ldmVudEhhbmRsZXJbZXZlbnRdID0gW2xpc3RlbmVyc107CisKKyAg
ICAvLyBQcmV2ZW50IHJlZ2lzdGVyaW5nIG11bHRpcGxlIHRpbWVzLgorICAgIGlmIChsaXN0ZW5l
cnMuaW5jbHVkZXMobGlzdGVuZXIpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBy
ZWdpc3RlciB0aGUgc2FtZSBsaXN0ZW5lciBtb3JlIHRoYW4gb25jZS4iKTsKKworICAgIGxpc3Rl
bmVycy5wdXNoKGxpc3RlbmVyKTsKK30KKworSW5zcGVjdG9yUHJvdG9jb2wuc2VuZE1lc3NhZ2Ug
PSBmdW5jdGlvbihtZXNzYWdlT2JqZWN0KQoreworICAgIC8vIFRoaXMgbWF0Y2hlcyB0aGUgZGVi
dWcgZHVtcGluZyBpbiBJbnNwZWN0b3JCYWNrZW5kLCB3aGljaCBpcyBieXBhc3NlZAorICAgIC8v
IGJ5IEluc3BlY3RvclByb3RvY29sLiBSZXR1cm4gbWVzc2FnZXMgc2hvdWxkIGJlIGR1bXBlZCBi
eSBJbnNwZWN0b3JCYWNrZW5kLgorICAgIGlmIChJbnNwZWN0b3JQcm90b2NvbC5kdW1wSW5zcGVj
dG9yUHJvdG9jb2xNZXNzYWdlcykKKyAgICAgICAgY29uc29sZS5sb2coImZyb250ZW5kOiAiICsg
SlNPTi5zdHJpbmdpZnkobWVzc2FnZU9iamVjdCkpOworCisgICAgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LnNlbmRNZXNzYWdlVG9CYWNrZW5kKEpTT04uc3RyaW5naWZ5KG1lc3NhZ2VPYmplY3QpKTsK
K30KKworSW5zcGVjdG9yUHJvdG9jb2wuY2hlY2tGb3JFcnJvciA9IGZ1bmN0aW9uKHJlc3BvbnNl
T2JqZWN0KQoreworICAgIGlmIChyZXNwb25zZU9iamVjdC5lcnJvcikgeworICAgICAgICBQcm90
b2NvbFRlc3QubG9nKCJQUk9UT0NPTCBFUlJPUjogIiArIEpTT04uc3RyaW5naWZ5KHJlc3BvbnNl
T2JqZWN0LmVycm9yKSk7CisgICAgICAgIFByb3RvY29sVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAg
ICAgICAgdGhyb3cgIlBST1RPQ09MIEVSUk9SIjsKKyAgICB9Cit9CisKK0luc3BlY3RvckZyb250
ZW5kQVBJLmRpc3BhdGNoTWVzc2FnZUFzeW5jID0gZnVuY3Rpb24obWVzc2FnZU9iamVjdCkKK3sK
KyAgICAvLyBUaGlzIG1hdGNoZXMgdGhlIGRlYnVnIGR1bXBpbmcgaW4gSW5zcGVjdG9yQmFja2Vu
ZCwgd2hpY2ggaXMgYnlwYXNzZWQKKyAgICAvLyBieSBJbnNwZWN0b3JQcm90b2NvbC4gUmV0dXJu
IG1lc3NhZ2VzIHNob3VsZCBiZSBkdW1wZWQgYnkgSW5zcGVjdG9yQmFja2VuZC4KKyAgICBpZiAo
SW5zcGVjdG9yUHJvdG9jb2wuZHVtcEluc3BlY3RvclByb3RvY29sTWVzc2FnZXMpCisgICAgICAg
IGNvbnNvbGUubG9nKCJiYWNrZW5kOiAiICsgSlNPTi5zdHJpbmdpZnkobWVzc2FnZU9iamVjdCkp
OworCisgICAgLy8gSWYgdGhlIG1lc3NhZ2UgaGFzIGFuIGlkLCB0aGVuIGl0IGlzIGEgcmVwbHkg
dG8gYSBjb21tYW5kLgorICAgIHZhciBtZXNzYWdlSWQgPSBtZXNzYWdlT2JqZWN0WyJpZCJdOwor
ICAgIGlmICh0eXBlb2YgbWVzc2FnZUlkID09PSAibnVtYmVyIikgeworICAgICAgICB2YXIgaGFu
ZGxlciA9IEluc3BlY3RvclByb3RvY29sLl9kaXNwYXRjaFRhYmxlW21lc3NhZ2VJZF07CisgICAg
ICAgIGlmICghaGFuZGxlcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodHlw
ZW9mIGhhbmRsZXIgPT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICBoYW5kbGVyKG1lc3NhZ2VP
YmplY3QpOworICAgICAgICBlbHNlIGlmICh0eXBlb2YgaGFuZGxlciA9PT0gIm9iamVjdCIpIHsK
KyAgICAgICAgICAgIHZhciB7cmVzb2x2ZSwgcmVqZWN0fSA9IGhhbmRsZXI7CisgICAgICAgICAg
ICBpZiAoImVycm9yIiBpbiBtZXNzYWdlT2JqZWN0KQorICAgICAgICAgICAgICAgIHJlamVjdCht
ZXNzYWdlT2JqZWN0LmVycm9yLm1lc3NhZ2UpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHJlc29sdmUobWVzc2FnZU9iamVjdC5yZXN1bHQpOworICAgICAgICB9CisgICAgLy8g
T3RoZXJ3aXNlLCBpdCBpcyBhbiBldmVudC4KKyAgICB9IGVsc2UgeworICAgICAgICB2YXIgZXZl
bnROYW1lID0gbWVzc2FnZU9iamVjdFsibWV0aG9kIl07CisgICAgICAgIHZhciBoYW5kbGVyID0g
SW5zcGVjdG9yUHJvdG9jb2wuZXZlbnRIYW5kbGVyW2V2ZW50TmFtZV07CisgICAgICAgIGlmICgh
aGFuZGxlcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodHlwZW9mIGhhbmRs
ZXIgPT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICBoYW5kbGVyKG1lc3NhZ2VPYmplY3QpOwor
ICAgICAgICBlbHNlIGlmIChoYW5kbGVyIGluc3RhbmNlb2YgQXJyYXkpIHsKKyAgICAgICAgICAg
IGhhbmRsZXIubWFwKGZ1bmN0aW9uKGxpc3RlbmVyKSB7CisgICAgICAgICAgICAgICAgbGlzdGVu
ZXIuY2FsbChudWxsLCBtZXNzYWdlT2JqZWN0KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
IGVsc2UgaWYgKHR5cGVvZiBoYW5kbGVyID09PSAib2JqZWN0IikgeworICAgICAgICAgICAgdmFy
IHtyZXNvbHZlLCByZWplY3R9ID0gaGFuZGxlcjsKKyAgICAgICAgICAgIGlmICgiZXJyb3IiIGlu
IG1lc3NhZ2VPYmplY3QpCisgICAgICAgICAgICAgICAgcmVqZWN0KG1lc3NhZ2VPYmplY3QuZXJy
b3IubWVzc2FnZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzb2x2ZSht
ZXNzYWdlT2JqZWN0LnJlc3VsdCk7CisgICAgICAgIH0KKyAgICB9CiB9CisKK3dpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICB0cnkgeworICAg
ICAgICBldmFsKGV2ZW50LmRhdGEpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgYWxlcnQo
ZS5zdGFjayk7CisgICAgICAgIFByb3RvY29sVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAg
dGhyb3cgZTsKKyAgICB9Cit9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvY29uc29sZS10
ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2NvbnNv
bGUtdGVzdC5qcwppbmRleCBhYjU5MDZiOGRiNzU4MDRhMjQ5ZmE0ZDYzMmE1ZjRmN2MzYmViZDFm
Li4yZDRlMzdmZTBhNGZiZjBmZjY3NDc4MzliYTViYmE3NDI1MmZhNThjIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvY29uc29sZS10ZXN0Lmpz
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9jb25zb2xl
LXRlc3QuanMKQEAgLTMyLDcgKzMyLDcgQEAgUHJvdG9jb2xUZXN0LkNvbnNvbGUuc2FuaXRpemVD
b25zb2xlTWVzc2FnZSA9IGZ1bmN0aW9uKG1lc3NhZ2VPYmplY3QpCiAKIFByb3RvY29sVGVzdC5D
b25zb2xlLmFkZFRlc3RDYXNlID0gZnVuY3Rpb24oc3VpdGUsIGFyZ3MpCiB7Ci0gICAgaWYgKCEo
c3VpdGUgaW5zdGFuY2VvZiBQcm90b2NvbFRlc3QuQXN5bmNUZXN0U3VpdGUpKQorICAgIGlmICgh
KHN1aXRlIGluc3RhbmNlb2YgSW5qZWN0ZWRUZXN0SGFybmVzcy5Bc3luY1Rlc3RTdWl0ZSkpCiAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiQ29uc29sZSB0ZXN0IGNhc2VzIG11c3QgYmUgYWRkZWQg
dG8gYW4gYXN5bmMgdGVzdCBzdWl0ZS4iKTsKIAogICAgIHZhciB7bmFtZSwgZGVzY3JpcHRpb24s
IGV4cHJlc3Npb24sIGV4cGVjdGVkfSA9IGFyZ3M7CkBAIC00NiwxNyArNDYsMTcgQEAgUHJvdG9j
b2xUZXN0LkNvbnNvbGUuYWRkVGVzdENhc2UgPSBmdW5jdGlvbihzdWl0ZSwgYXJncykKICAgICAg
ICAgICAgIC50aGVuKGZ1bmN0aW9uKG1lc3NhZ2VPYmplY3QpIHsKICAgICAgICAgICAgICAgICB2
YXIgY29uc29sZU1lc3NhZ2UgPSBtZXNzYWdlT2JqZWN0LnBhcmFtcy5tZXNzYWdlOwogICAgICAg
ICAgICAgICAgIHZhciB7c291cmNlLCBsZXZlbCwgdGV4dCwgcGFyYW1ldGVyc30gPSBjb25zb2xl
TWVzc2FnZTsKLSAgICAgICAgICAgICAgICBQcm90b2NvbFRlc3QuYXNzZXJ0KHNvdXJjZSA9PT0g
ZXhwZWN0ZWQuc291cmNlLCAiQ29uc29sZU1lc3NhZ2UgdHlwZSBzaG91bGQgYmUgJyIgKyBleHBl
Y3RlZC5zb3VyY2UgKyAiJy4iKTsKLSAgICAgICAgICAgICAgICBQcm90b2NvbFRlc3QuYXNzZXJ0
KGxldmVsID09PSBleHBlY3RlZC5sZXZlbCwgIkNvbnNvbGVNZXNzYWdlIGxldmVsIHNob3VsZCBi
ZSAnIiArIGV4cGVjdGVkLmxldmVsICsgIicuIik7CisgICAgICAgICAgICAgICAgUHJvdG9jb2xU
ZXN0LmV4cGVjdFRoYXQoc291cmNlID09PSBleHBlY3RlZC5zb3VyY2UsICJDb25zb2xlTWVzc2Fn
ZSB0eXBlIHNob3VsZCBiZSAnIiArIGV4cGVjdGVkLnNvdXJjZSArICInLiIpOworICAgICAgICAg
ICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGxldmVsID09PSBleHBlY3RlZC5sZXZlbCwg
IkNvbnNvbGVNZXNzYWdlIGxldmVsIHNob3VsZCBiZSAnIiArIGV4cGVjdGVkLmxldmVsICsgIicu
Iik7CiAKICAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWQudGV4dCkKLSAgICAgICAgICAgICAg
ICAgICAgUHJvdG9jb2xUZXN0LmFzc2VydCh0ZXh0ID09PSBleHBlY3RlZC50ZXh0LCAiQ29uc29s
ZU1lc3NhZ2UgdGV4dCBzaG91bGQgYmUgJyIgKyBleHBlY3RlZC50ZXh0ICsgIicuIik7CisgICAg
ICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KHRleHQgPT09IGV4cGVjdGVk
LnRleHQsICJDb25zb2xlTWVzc2FnZSB0ZXh0IHNob3VsZCBiZSAnIiArIGV4cGVjdGVkLnRleHQg
KyAiJy4iKTsKIAogICAgICAgICAgICAgICAgIGlmIChleHBlY3RlZC5wYXJhbWV0ZXJzKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5hc3NlcnQocGFyYW1ldGVycy5sZW5ndGgg
PT09IGV4cGVjdGVkLnBhcmFtZXRlcnMubGVuZ3RoLCAiQ29uc29sZU1lc3NhZ2UgcGFyYW1ldGVy
cy5sZW5ndGggPT09ICIgKyBleHBlY3RlZC5wYXJhbWV0ZXJzLmxlbmd0aCk7CisgICAgICAgICAg
ICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KHBhcmFtZXRlcnMubGVuZ3RoID09PSBl
eHBlY3RlZC5wYXJhbWV0ZXJzLmxlbmd0aCwgIkNvbnNvbGVNZXNzYWdlIHBhcmFtZXRlcnMubGVu
Z3RoID09PSAiICsgZXhwZWN0ZWQucGFyYW1ldGVycy5sZW5ndGgpOwogICAgICAgICAgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmFtZXRlcnMubGVuZ3RoOyArK2kpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBleHBlY3RlZFR5cGUgPSBleHBlY3RlZC5wYXJhbWV0ZXJz
W2ldOwotICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmFzc2VydChwYXJhbWV0
ZXJzW2ldLnR5cGUgPT09IGV4cGVjdGVkVHlwZSwgIkNvbnNvbGVNZXNzYWdlIHBhcmFtZXRlciAi
ICsgaSArICIgc2hvdWxkIGhhdmUgdHlwZSAnIiArIGV4cGVjdGVkVHlwZSArICInLiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQocGFyYW1ldGVyc1tp
XS50eXBlID09PSBleHBlY3RlZFR5cGUsICJDb25zb2xlTWVzc2FnZSBwYXJhbWV0ZXIgIiArIGkg
KyAiIHNob3VsZCBoYXZlIHR5cGUgJyIgKyBleHBlY3RlZFR5cGUgKyAiJy4iKTsKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcwpp
bmRleCBhNGE5YzU3MWU2OWFhNDU5NzY2MmExNWY5ZTFmNzUwYjY5YTk3Y2UzLi5mODgxZDQ3NGVk
NmU1MGY0YWIwYzIxOTJmN2UxMGE5MWQ4YjRlOGY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcworKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcwpA
QCAtNTksNiArNTksNyBAQCBmdW5jdGlvbiBsb2codGV4dCkKIGZ1bmN0aW9uIGNsb3NlVGVzdCgp
CiB7CiAgICAgd2luZG93LmludGVybmFscy5jbG9zZUR1bW15SW5zcGVjdG9yRnJvbnRlbmQoKTsK
KwogICAgIC8vIFRoaXMgY29kZSBtaWdodCBiZSBleGVjdXRlZCB3aGlsZSB0aGUgZGVidWdnZXIg
aXMgc3RpbGwgcnVubmluZyB0aHJvdWdoIGEgc3RhY2sgYmFzZWQgRXZlbnRMb29wLgogICAgIC8v
IFVzZSBhIHNldFRpbWVvdXQgdG8gZGVmZXIgdG8gYSBjbGVhbiBzdGFjayBiZWZvcmUgbGV0dGlu
ZyB0aGUgdGVzdFJ1bm5lciBsb2FkIHRoZSBuZXh0IHRlc3QuCiAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbnNv
bGUtbWVzc2FnZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY29uc29sZS1t
ZXNzYWdlLmh0bWwKaW5kZXggZDliMmZlNjI2Y2Q0OGU0OTc4Y2NhZDNlYzI5ZTkyYzRjMDU0OGU5
NC4uOGZiM2Y5NmU2OTA5ZDNkNzE3MzE2NjI5MzI1MTg5MjFiZmQ4MGQ3MSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY29uc29sZS1tZXNzYWdlLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY29uc29sZS1tZXNzYWdlLmh0bWwKQEAgLTE2
LDcgKzE2LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgUHJvdG9jb2xUZXN0LmltcG9ydFNj
cmlwdCgiY29uc29sZS10ZXN0LmpzIik7CiAKLSAgICB2YXIgc3VpdGUgPSBuZXcgUHJvdG9jb2xU
ZXN0LkFzeW5jVGVzdFN1aXRlKCJDb25zb2xlLk1lc3NhZ2VzRnJvbUNvbW1hbmRMaW5lQVBJIik7
CisgICAgdmFyIHN1aXRlID0gUHJvdG9jb2xUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkNvbnNvbGUu
TWVzc2FnZXNGcm9tQ29tbWFuZExpbmVBUEkiKTsKIAogICAgIFByb3RvY29sVGVzdC5Db25zb2xl
LmFkZFRlc3RDYXNlKHN1aXRlLCB7CiAgICAgICAgIG5hbWU6ICJDb25zb2xlTG9nU3RyaW5nIiwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL3gtZnJhbWUtb3B0aW9u
cy1tZXNzYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS94LWZyYW1lLW9w
dGlvbnMtbWVzc2FnZS5odG1sCmluZGV4IGY4YmUzMWFkOGJjOWU4NTljNWUyYzQ5M2U0N2E2NTFh
N2I5ZTVjYWIuLjk2NzBkZjFhN2M3ZTEzZDFiZDQ4Y2M4YzA4M2NmNzE2MDg1YjBjMDUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL3gtZnJhbWUtb3B0aW9ucy1tZXNz
YWdlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUveC1mcmFtZS1vcHRp
b25zLW1lc3NhZ2UuaHRtbApAQCAtNyw3ICs3LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAg
UHJvdG9jb2xUZXN0LmltcG9ydFNjcmlwdCgiY29uc29sZS10ZXN0LmpzIik7CiAKLSAgICBsZXQg
c3VpdGUgPSBuZXcgUHJvdG9jb2xUZXN0LkFzeW5jVGVzdFN1aXRlKCJDb25zb2xlLlhGcmFtZU9w
dGlvbnNNZXNzYWdlcyIpOworICAgIGxldCBzdWl0ZSA9IFByb3RvY29sVGVzdC5jcmVhdGVBc3lu
Y1N1aXRlKCJDb25zb2xlLlhGcmFtZU9wdGlvbnNNZXNzYWdlcyIpOwogCiAgICAgUHJvdG9jb2xU
ZXN0LkNvbnNvbGUuYWRkVGVzdENhc2Uoc3VpdGUsIHsKICAgICAgICAgbmFtZTogIlhGcmFtZU9w
dGlvbnNEZW55IiwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9k
aWRTYW1wbGVQcm9iZS1tdWx0aXBsZS1wcm9iZXMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9kaWRTYW1wbGVQcm9iZS1tdWx0aXBsZS1wcm9iZXMuaHRtbAppbmRleCBiM2Jm
MWQxN2U3MDk2MzYwODNjMTAwYzQzMzIwZTRiN2FkZjBlZGRjLi4zNWQwNzk5ZjI4ZTJkOGRiMmU5
Y2JkNTdkMmVmZjg0NzkwMWVmYzkwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvZGlkU2FtcGxlUHJvYmUtbXVsdGlwbGUtcHJvYmVzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RpZFNhbXBsZVByb2JlLW11bHRpcGxlLXByb2Jlcy5o
dG1sCkBAIC03OCw3ICs3OCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBpZiAocmVjZWl2
ZWRBbGxFeHBlY3RlZFNhbXBsZXMoKSkgewogICAgICAgICAgICAgdGVzdHMuZm9yRWFjaChmdW5j
dGlvbih0ZXN0KSB7CiAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRlc3QucHJlZGljYXRl
KCk7Ci0gICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmFzc2VydChyZXN1bHQsIHRlc3QubWVz
c2FnZSk7CisgICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQocmVzdWx0LCB0
ZXN0Lm1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAg
ICAgICAgICB0ZXN0LmVycm9yKCk7CiAgICAgICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvbm9kZS1yZW1vdmVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL25vZGUtcmVtb3ZlZC5odG1sCmluZGV4IGFjNzhi
ZWI4OGQwMzNlNTJjNWI1OWU3ODA5NTA2ZDlhNDdhYmU0NWQuLjJhMmI4NmVkMjE4NGM4NDQ1Y2Iw
YzU1Y2FmMjY0ODE4YTY3MjZkYzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
b20tZGVidWdnZXIvbm9kZS1yZW1vdmVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RvbS1kZWJ1Z2dlci9ub2RlLXJlbW92ZWQuaHRtbApAQCAtNzAsMTUgKzcwLDE1IEBAIGZ1bmN0
aW9uIHRlc3QoKQogICAgIGZ1bmN0aW9uIG9uQ2hpbGROb2RlUmVtb3ZlZChyZXNwb25zZSkKICAg
ICB7CiAgICAgICAgIHZhciBub2RlSWQgPSByZXNwb25zZS5wYXJhbXMubm9kZUlkOwotICAgICAg
ICBQcm90b2NvbFRlc3QuYXNzZXJ0KGdldE5vZGVJZGVudGlmaWVyKG5vZGVJZCkgPT09ICJkaXYj
dGFyZ2V0X2VsZW1lbnQiLCAib25DaGlsZE5vZGVSZW1vdmVkIGNhbGxlZCBmb3IgI3RhcmdldF9l
bGVtZW50Iik7CisgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGdldE5vZGVJZGVudGlm
aWVyKG5vZGVJZCkgPT09ICJkaXYjdGFyZ2V0X2VsZW1lbnQiLCAib25DaGlsZE5vZGVSZW1vdmVk
IGNhbGxlZCBmb3IgI3RhcmdldF9lbGVtZW50Iik7CiAgICAgICAgIGRlbGV0ZSBub2Rlc0J5SWRb
bm9kZUlkXTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBvbkNoaWxkTm9kZUluc2VydGVkKHJlc3Bv
bnNlKQogICAgIHsKICAgICAgICAgY29sbGVjdE5vZGUocmVzcG9uc2UucGFyYW1zLm5vZGUpOwot
ICAgICAgICBQcm90b2NvbFRlc3QuYXNzZXJ0KGdldE5vZGVJZGVudGlmaWVyKHJlc3BvbnNlLnBh
cmFtcy5wYXJlbnROb2RlSWQpID09PSAiZGl2I2ZpbmFsX2NvbnRhaW5lciIsICJvbkNoaWxkTm9k
ZUluc2VydGVkIGNhbGxlZCBmb3IgcGFyZW50IG5vZGUgI2ZpbmFsX2NvbnRhaW5lciIpOwotICAg
ICAgICBQcm90b2NvbFRlc3QuYXNzZXJ0KGdldE5vZGVJZGVudGlmaWVyKHJlc3BvbnNlLnBhcmFt
cy5ub2RlLm5vZGVJZCkgPT09ICJkaXYjdGFyZ2V0X2VsZW1lbnQiLCAib25DaGlsZE5vZGVJbnNl
cnRlZCBjYWxsZWQgZm9yIGNoaWxkIG5vZGUgI3RhcmdldF9lbGVtZW50Iik7CisgICAgICAgIFBy
b3RvY29sVGVzdC5leHBlY3RUaGF0KGdldE5vZGVJZGVudGlmaWVyKHJlc3BvbnNlLnBhcmFtcy5w
YXJlbnROb2RlSWQpID09PSAiZGl2I2ZpbmFsX2NvbnRhaW5lciIsICJvbkNoaWxkTm9kZUluc2Vy
dGVkIGNhbGxlZCBmb3IgcGFyZW50IG5vZGUgI2ZpbmFsX2NvbnRhaW5lciIpOworICAgICAgICBQ
cm90b2NvbFRlc3QuZXhwZWN0VGhhdChnZXROb2RlSWRlbnRpZmllcihyZXNwb25zZS5wYXJhbXMu
bm9kZS5ub2RlSWQpID09PSAiZGl2I3RhcmdldF9lbGVtZW50IiwgIm9uQ2hpbGROb2RlSW5zZXJ0
ZWQgY2FsbGVkIGZvciBjaGlsZCBub2RlICN0YXJnZXRfZWxlbWVudCIpOwogICAgIH0KIAogICAg
IGZ1bmN0aW9uIG9uRGVidWdnZXJQYXVzZWQocmVzcG9uc2UpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZG9tL2RvbS1yZW1vdmUtZXZlbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZG9tL2RvbS1yZW1vdmUtZXZlbnRzLmh0bWwKaW5kZXggMDhjOWIwOGVjYWM0YWFi
NWZjM2U2MDg0M2VjMGI0ZTZkY2ZlZGRkNS4uZTAxZGYwNDc0OTY3OTI4ZDFhZmYxZDIyYmYzNTRl
NWE0YjE1OTA4MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9kb20tcmVt
b3ZlLWV2ZW50cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vZG9tLXJlbW92
ZS1ldmVudHMuaHRtbApAQCAtNDcsMTUgKzQ3LDE1IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIGZ1
bmN0aW9uIG9uQ2hpbGROb2RlUmVtb3ZlZChyZXNwb25zZSkKICAgICB7CiAgICAgICAgIHZhciBu
b2RlSWQgPSByZXNwb25zZS5wYXJhbXMubm9kZUlkOwotICAgICAgICBQcm90b2NvbFRlc3QuYXNz
ZXJ0KGdldE5vZGVJZGVudGlmaWVyKG5vZGVJZCkgPT09ICJ0YXJnZXRfZWxlbWVudCIsICJvbkNo
aWxkTm9kZVJlbW92ZWQgY2FsbGVkIGZvciAjdGFyZ2V0X2VsZW1lbnQiKTsKKyAgICAgICAgUHJv
dG9jb2xUZXN0LmV4cGVjdFRoYXQoZ2V0Tm9kZUlkZW50aWZpZXIobm9kZUlkKSA9PT0gInRhcmdl
dF9lbGVtZW50IiwgIm9uQ2hpbGROb2RlUmVtb3ZlZCBjYWxsZWQgZm9yICN0YXJnZXRfZWxlbWVu
dCIpOwogICAgICAgICBkZWxldGUgbm9kZXNCeUlkW25vZGVJZF07CiAgICAgfQogCiAgICAgZnVu
Y3Rpb24gb25DaGlsZE5vZGVJbnNlcnRlZChyZXNwb25zZSkKICAgICB7CiAgICAgICAgIGNvbGxl
Y3ROb2RlKHJlc3BvbnNlLnBhcmFtcy5ub2RlKTsKLSAgICAgICAgUHJvdG9jb2xUZXN0LmFzc2Vy
dChnZXROb2RlSWRlbnRpZmllcihyZXNwb25zZS5wYXJhbXMucGFyZW50Tm9kZUlkKSA9PT0gImZp
bmFsX2NvbnRhaW5lciIsICJvbkNoaWxkTm9kZUluc2VydGVkIGNhbGxlZCBmb3IgcGFyZW50IG5v
ZGUgI2ZpbmFsX2NvbnRhaW5lciIpOwotICAgICAgICBQcm90b2NvbFRlc3QuYXNzZXJ0KGdldE5v
ZGVJZGVudGlmaWVyKHJlc3BvbnNlLnBhcmFtcy5ub2RlLm5vZGVJZCkgPT09ICJ0YXJnZXRfZWxl
bWVudCIsICJvbkNoaWxkTm9kZUluc2VydGVkIGNhbGxlZCBmb3IgY2hpbGQgbm9kZSAjdGFyZ2V0
X2VsZW1lbnQiKTsKKyAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZ2V0Tm9kZUlkZW50
aWZpZXIocmVzcG9uc2UucGFyYW1zLnBhcmVudE5vZGVJZCkgPT09ICJmaW5hbF9jb250YWluZXIi
LCAib25DaGlsZE5vZGVJbnNlcnRlZCBjYWxsZWQgZm9yIHBhcmVudCBub2RlICNmaW5hbF9jb250
YWluZXIiKTsKKyAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZ2V0Tm9kZUlkZW50aWZp
ZXIocmVzcG9uc2UucGFyYW1zLm5vZGUubm9kZUlkKSA9PT0gInRhcmdldF9lbGVtZW50IiwgIm9u
Q2hpbGROb2RlSW5zZXJ0ZWQgY2FsbGVkIGZvciBjaGlsZCBub2RlICN0YXJnZXRfZWxlbWVudCIp
OwogICAgIH0KIAogICAgIEluc3BlY3RvclByb3RvY29sLnNlbmRDb21tYW5kKCJET00uZ2V0RG9j
dW1lbnQiLCB7fSwgb25Hb3REb2N1bWVudCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvcnVudGltZS9nZXRQcm9wZXJ0aWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
cnVudGltZS9nZXRQcm9wZXJ0aWVzLmh0bWwKaW5kZXggYjExYjY0ZDYxMmJmZGU2NzhmMTRiMGQz
NGI3NTU3NDY0NjA1Y2UxNi4uNjZlMjMyNGY5ZmI1OGQ4NWFhM2M1NzMzNWQ2YTkxODVkYjk4YWJh
YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3J1bnRpbWUvZ2V0UHJvcGVydGll
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9ydW50aW1lL2dldFByb3BlcnRpZXMu
aHRtbApAQCAtNCw3ICs0LDcgQEAKIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICB2
YXIgc3VpdGUgPSBuZXcgUHJvdG9jb2xUZXN0LkFzeW5jVGVzdFN1aXRlKCJSdW50aW1lLmdldFBy
b3BlcnRpZXMiKTsKKyAgICB2YXIgc3VpdGUgPSBQcm90b2NvbFRlc3QuY3JlYXRlQXN5bmNTdWl0
ZSgiUnVudGltZS5nZXRQcm9wZXJ0aWVzIik7CiAKICAgICBhZGRHZXRQcm9wZXJ0aWVzVGVzdENh
c2UoewogICAgICAgICBuYW1lOiAiQ2hlY2tQcm9wZXJ0aWVzT2ZXcmFwcGVyT2JqZWN0IiwKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2FzeW5jLXRlc3Qtc3Vp
dGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvYXN5bmMt
dGVzdC1zdWl0ZS1leHBlY3RlZC50eHQKaW5kZXggZWEzM2E3Nzg1NmY0ODUyMjZkMGRmOTk2MGNk
Yjk0Njk1NDE3OGJkMC4uMGU4NGE3NzhmMjY2Zjk4ZjA0NDdlOWFjMmM2M2MzMDU0ZDUxZWViMCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvYXN5bmMtdGVzdC1z
dWl0ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMv
YXN5bmMtdGVzdC1zdWl0ZS1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw2IEBACi1QQVNTOiBpbnN0
YW50aWF0aW5nIEFzeW5jVGVzdFN1aXRlIHJlcXVpcmVzIG5hbWUgYXJndW1lbnQuCi1QQVNTOiBp
bnN0YW50aWF0aW5nIEFzeW5jVGVzdFN1aXRlIHJlcXVpcmVzIHN0cmluZyBuYW1lIGFyZ3VtZW50
LgorUEFTUzogaW5zdGFudGlhdGluZyBTeW5jVGVzdFN1aXRlIHJlcXVpcmVzIG5hbWUgYXJndW1l
bnQuCitQQVNTOiBpbnN0YW50aWF0aW5nIFN5bmNUZXN0U3VpdGUgcmVxdWlyZXMgc3RyaW5nIG5h
bWUgYXJndW1lbnQuCitQQVNTOiBpbnN0YW50aWF0aW5nIFN5bmNUZXN0U3VpdGUgcmVxdWlyZXMg
dGVzdCBoYXJuZXNzIGFyZ3VtZW50LgogUEFTUzogc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGFkZCBl
bXB0eSB0ZXN0IGNhc2UuCiBQQVNTOiBzaG91bGQgbm90IGJlIGFibGUgdG8gYWRkIG5vbi1vYmpl
Y3QgdGVzdCBjYXNlLgogUEFTUzogdGVzdCBjYXNlIHNob3VsZCByZXF1aXJlIHN0cmluZyBuYW1l
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvYXN5bmMtdGVz
dC1zdWl0ZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvYXN5bmMtdGVz
dC1zdWl0ZS5odG1sCmluZGV4IDg2MzE0OGFmZDgxNTRiY2M1ZGNiMWI1NGIxN2ZhMTI2ZDUwZTkw
NzkuLmJkZmJhY2MxZmI2MzQ1NjhhMDc5NzgzMThhZmM1YzFkOWE4MGE5ZWMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2FzeW5jLXRlc3Qtc3VpdGUuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9hc3luYy10ZXN0LXN1aXRlLmh0
bWwKQEAgLTYsMjAgKzYsMjcgQEAKIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIHRyeSB7Ci0gICAg
ICAgIG5ldyBQcm90b2NvbFRlc3QuQXN5bmNUZXN0U3VpdGUoKTsKLSAgICAgICAgUHJvdG9jb2xU
ZXN0LmxvZygiRkFJTDogaW5zdGFudGlhdGluZyBBc3luY1Rlc3RTdWl0ZSByZXF1aXJlcyBuYW1l
IGFyZ3VtZW50LiIpOworICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEluamVjdGVkVGVzdEhhcm5l
c3MuQXN5bmNUZXN0U3VpdGUodGhpcyk7CisgICAgICAgIFByb3RvY29sVGVzdC5sb2coIkZBSUw6
IGluc3RhbnRpYXRpbmcgU3luY1Rlc3RTdWl0ZSByZXF1aXJlcyBuYW1lIGFyZ3VtZW50LiIpOwog
ICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygiUEFTUzogaW5zdGFu
dGlhdGluZyBBc3luY1Rlc3RTdWl0ZSByZXF1aXJlcyBuYW1lIGFyZ3VtZW50LiIpOworICAgICAg
ICBQcm90b2NvbFRlc3QubG9nKCJQQVNTOiBpbnN0YW50aWF0aW5nIFN5bmNUZXN0U3VpdGUgcmVx
dWlyZXMgbmFtZSBhcmd1bWVudC4iKTsKICAgICB9CiAKICAgICB0cnkgewotICAgICAgICBuZXcg
UHJvdG9jb2xUZXN0LkFzeW5jVGVzdFN1aXRlKHt9KTsKLSAgICAgICAgUHJvdG9jb2xUZXN0Lmxv
ZygiRkFJTDogaW5zdGFudGlhdGluZyBBc3luY1Rlc3RTdWl0ZSByZXF1aXJlcyBzdHJpbmcgbmFt
ZSBhcmd1bWVudC4iKTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBJbmplY3RlZFRlc3RIYXJu
ZXNzLkFzeW5jVGVzdFN1aXRlKHRoaXMsIHt9KTsKKyAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygi
RkFJTDogaW5zdGFudGlhdGluZyBTeW5jVGVzdFN1aXRlIHJlcXVpcmVzIHN0cmluZyBuYW1lIGFy
Z3VtZW50LiIpOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygi
UEFTUzogaW5zdGFudGlhdGluZyBBc3luY1Rlc3RTdWl0ZSByZXF1aXJlcyBzdHJpbmcgbmFtZSBh
cmd1bWVudC4iKTsKKyAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygiUEFTUzogaW5zdGFudGlhdGlu
ZyBTeW5jVGVzdFN1aXRlIHJlcXVpcmVzIHN0cmluZyBuYW1lIGFyZ3VtZW50LiIpOwogICAgIH0K
IAotICAgIHZhciBiYWRBcmdzU3VpdGUgPSBuZXcgUHJvdG9jb2xUZXN0LkFzeW5jVGVzdFN1aXRl
KCJkdW1teSIpOworICAgIHRyeSB7CisgICAgICAgIGxldCByZXN1bHQgPSBuZXcgSW5qZWN0ZWRU
ZXN0SGFybmVzcy5Bc3luY1Rlc3RTdWl0ZSgic29tZXRoaW5nIiwge30pOworICAgICAgICBQcm90
b2NvbFRlc3QubG9nKCJGQUlMOiBpbnN0YW50aWF0aW5nIFN5bmNUZXN0U3VpdGUgcmVxdWlyZXMg
dGVzdCBoYXJuZXNzIGFyZ3VtZW50LiIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgUHJv
dG9jb2xUZXN0LmxvZygiUEFTUzogaW5zdGFudGlhdGluZyBTeW5jVGVzdFN1aXRlIHJlcXVpcmVz
IHRlc3QgaGFybmVzcyBhcmd1bWVudC4iKTsKKyAgICB9CisKKyAgICB2YXIgYmFkQXJnc1N1aXRl
ID0gUHJvdG9jb2xUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoImR1bW15Iik7CiAgICAgdHJ5IHsKICAg
ICAgICAgYmFkQXJnc1N1aXRlLmFkZFRlc3RDYXNlKCk7CiAgICAgICAgIFByb3RvY29sVGVzdC5s
b2coIkZBSUw6IHNob3VsZCBub3QgYmUgYWJsZSB0byBhZGQgZW1wdHkgdGVzdCBjYXNlLiIpOwpA
QCAtNTEsNyArNTgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgUHJvdG9jb2xUZXN0Lmxv
ZygiUEFTUzogdGVzdCBjYXNlIHNob3VsZCByZXF1aXJlIHRlc3QgZnVuY3Rpb24uIik7CiAgICAg
fQogCi0gICAgdmFyIHJ1bkVtcHR5U3VpdGUgPSBuZXcgUHJvdG9jb2xUZXN0LkFzeW5jVGVzdFN1
aXRlKCJBc3luY1Rlc3RTdWl0ZS5SdW5FbXB0eVN1aXRlIik7CisgICAgdmFyIHJ1bkVtcHR5U3Vp
dGUgPSBQcm90b2NvbFRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiQXN5bmNUZXN0U3VpdGUuUnVuRW1w
dHlTdWl0ZSIpOwogICAgIHRyeSB7CiAgICAgICAgIHJ1bkVtcHR5U3VpdGUucnVuVGVzdENhc2Vz
KCk7CiAgICAgICAgIFByb3RvY29sVGVzdC5sb2coIkZBSUw6IHNob3VsZCBub3QgYmUgYWJsZSB0
byBydW4gZW1wdHkgdGVzdCBzdWl0ZS4iKTsKQEAgLTU5LDcgKzY2LDcgQEAgZnVuY3Rpb24gdGVz
dCgpCiAgICAgICAgIFByb3RvY29sVGVzdC5sb2coIlBBU1M6IHNob3VsZCBub3QgYmUgYWJsZSB0
byBydW4gZW1wdHkgdGVzdCBzdWl0ZS4iKTsKICAgICB9CiAKLSAgICB2YXIgcnVuVHdpY2VTdWl0
ZSA9IG5ldyBQcm90b2NvbFRlc3QuQXN5bmNUZXN0U3VpdGUoIkFzeW5jVGVzdFN1aXRlLlJ1blR3
aWNlU3VpdGUiKTsKKyAgICB2YXIgcnVuVHdpY2VTdWl0ZSA9IFByb3RvY29sVGVzdC5jcmVhdGVB
c3luY1N1aXRlKCJBc3luY1Rlc3RTdWl0ZS5SdW5Ud2ljZVN1aXRlIik7CiAgICAgcnVuVHdpY2VT
dWl0ZS5hZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJEdW1teVRlc3QwIiwKICAgICAgICAg
ZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IGEgc3VpdGUgY2FuJ3QgcnVuIG1vcmUgdGhhbiBvbmNl
LiIsCkBAIC04MSw3ICs4OCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIHZhciByZWplY3RUb2tl
biA9IHsidG9rZW4iOiA2NjZ9OwogICAgIHZhciB0aHJvd25FcnJvciA9IG5ldyBFcnJvcihyZWpl
Y3RUb2tlbik7CiAKLSAgICB2YXIgc2VxdWVudGlhbEV4ZWN1dGlvblN1aXRlID0gbmV3IFByb3Rv
Y29sVGVzdC5Bc3luY1Rlc3RTdWl0ZSgiQXN5bmNUZXN0U3VpdGUuU2VxdWVudGlhbEV4ZWN1dGlv
biIpOworICAgIHZhciBzZXF1ZW50aWFsRXhlY3V0aW9uU3VpdGUgPSBQcm90b2NvbFRlc3QuY3Jl
YXRlQXN5bmNTdWl0ZSgiQXN5bmNUZXN0U3VpdGUuU2VxdWVudGlhbEV4ZWN1dGlvbiIpOwogICAg
IHNlcXVlbnRpYWxFeGVjdXRpb25TdWl0ZS5hZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJE
dW1teVRlc3QxIiwKICAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0ZXN0IGNhc2UgZXhlY3V0
aW9uIG9yZGVyLiIsCkBAIC0xMTEsNyArMTE4LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAg
IH0KICAgICB9KTsKIAotICAgIHZhciBhYm9ydE9uRmFpbHVyZVN1aXRlID0gbmV3IFByb3RvY29s
VGVzdC5Bc3luY1Rlc3RTdWl0ZSgiQXN5bmNUZXN0U3VpdGUuQWJvcnRPbkZhaWx1cmUiKTsKKyAg
ICB2YXIgYWJvcnRPbkZhaWx1cmVTdWl0ZSA9IFByb3RvY29sVGVzdC5jcmVhdGVBc3luY1N1aXRl
KCJBc3luY1Rlc3RTdWl0ZS5BYm9ydE9uRmFpbHVyZSIpOwogICAgIGFib3J0T25GYWlsdXJlU3Vp
dGUuYWRkVGVzdENhc2UoewogICAgICAgICBuYW1lOiAiUGFzc2luZ1Rlc3Q1IiwKICAgICAgICAg
ZGVzY3JpcHRpb246ICJUaGlzIHRlc3QgaXMgYSBkdW1teS4iLApAQCAtMTM2LDcgKzE0Myw3IEBA
IGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgcmVzdWx0ID0gcmVzdWx0LnRoZW4oZnVuY3Rpb24oKSB7
CiAgICAgICAgIHZhciBwcm9taXNlID0gc2VxdWVudGlhbEV4ZWN1dGlvblN1aXRlLnJ1blRlc3RD
YXNlcygpOwotICAgICAgICBQcm90b2NvbFRlc3QuYXNzZXJ0KHJlc3VsdCBpbnN0YW5jZW9mIFBy
b21pc2UsICJBc3luY1Rlc3RTdWl0ZS5SdW5UZXN0Q2FzZXMoKSBzaG91bGQgcmV0dXJuIGEgUHJv
bWlzZS4iKTsKKyAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQocmVzdWx0IGluc3RhbmNl
b2YgUHJvbWlzZSwgIkFzeW5jVGVzdFN1aXRlLlJ1blRlc3RDYXNlcygpIHNob3VsZCByZXR1cm4g
YSBQcm9taXNlLiIpOwogICAgICAgICByZXR1cm4gcHJvbWlzZTsKICAgICB9KTsKICAgICByZXN1
bHQgPSByZXN1bHQudGhlbihmdW5jdGlvbiByZXNvbHZlZCgpIHsKQEAgLTE0NCwxMiArMTUxLDEy
IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7IC8v
IENvbnRpbnVlIHRoaXMgdGVzdC4KICAgICB9LCBmdW5jdGlvbiByZWplY3RlZChlKSB7CiAgICAg
ICAgIFByb3RvY29sVGVzdC5sb2coIlBBU1M6IFByb21pc2UgZnJvbSBzZXF1ZW50aWFsRXhlY3V0
aW9uU3VpdGUucnVuVGVzdENhc2VzKCkgc2hvdWxkIHJlamVjdCB3aGVuIGEgdGVzdCBjYXNlIGZh
aWxzLiIpOwotICAgICAgICBQcm90b2NvbFRlc3QuYXNzZXJ0KGUgPT09IHRocm93bkVycm9yLCAi
UHJvbWlzZSBmcm9tIHNlcXVlbnRpYWxFeGVjdXRpb25TdWl0ZS5ydW5UZXN0Q2FzZXMoKSBzaG91
bGQgcmVqZWN0IHdpdGhvdXQgYWx0ZXJpbmcgaXRzIHJlc3VsdCB2YWx1ZS4iKTsKKyAgICAgICAg
UHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZSA9PT0gdGhyb3duRXJyb3IsICJQcm9taXNlIGZyb20g
c2VxdWVudGlhbEV4ZWN1dGlvblN1aXRlLnJ1blRlc3RDYXNlcygpIHNob3VsZCByZWplY3Qgd2l0
aG91dCBhbHRlcmluZyBpdHMgcmVzdWx0IHZhbHVlLiIpOwogCi0gICAgICAgIFByb3RvY29sVGVz
dC5hc3NlcnQoc2VxdWVudGlhbEV4ZWN1dGlvblN1aXRlLnJ1bkNvdW50ID09PSA0LCAic2VxdWVu
dGlhbEV4ZWN1dGlvblN1aXRlIHNob3VsZCBoYXZlIGV4ZWN1dGVkIGZvdXIgdGVzdHMuIik7Ci0g
ICAgICAgIFByb3RvY29sVGVzdC5hc3NlcnQoc2VxdWVudGlhbEV4ZWN1dGlvblN1aXRlLnBhc3ND
b3VudCA9PT0gMywgInNlcXVlbnRpYWxFeGVjdXRpb25TdWl0ZSBzaG91bGQgaGF2ZSBwYXNzZWQg
dGhyZWUgdGVzdHMuIik7Ci0gICAgICAgIFByb3RvY29sVGVzdC5hc3NlcnQoc2VxdWVudGlhbEV4
ZWN1dGlvblN1aXRlLmZhaWxDb3VudCA9PT0gMSwgInNlcXVlbnRpYWxFeGVjdXRpb25TdWl0ZSBz
aG91bGQgaGF2ZSBmYWlsZWQgMSB0ZXN0LiIpOwotICAgICAgICBQcm90b2NvbFRlc3QuYXNzZXJ0
KHNlcXVlbnRpYWxFeGVjdXRpb25TdWl0ZS5za2lwQ291bnQgPT09IDAsICJzZXF1ZW50aWFsRXhl
Y3V0aW9uU3VpdGUgc2hvdWxkIGhhdmUgc2tpcHBlZCB6ZXJvIHRlc3RzLiIpOworICAgICAgICBQ
cm90b2NvbFRlc3QuZXhwZWN0VGhhdChzZXF1ZW50aWFsRXhlY3V0aW9uU3VpdGUucnVuQ291bnQg
PT09IDQsICJzZXF1ZW50aWFsRXhlY3V0aW9uU3VpdGUgc2hvdWxkIGhhdmUgZXhlY3V0ZWQgZm91
ciB0ZXN0cy4iKTsKKyAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoc2VxdWVudGlhbEV4
ZWN1dGlvblN1aXRlLnBhc3NDb3VudCA9PT0gMywgInNlcXVlbnRpYWxFeGVjdXRpb25TdWl0ZSBz
aG91bGQgaGF2ZSBwYXNzZWQgdGhyZWUgdGVzdHMuIik7CisgICAgICAgIFByb3RvY29sVGVzdC5l
eHBlY3RUaGF0KHNlcXVlbnRpYWxFeGVjdXRpb25TdWl0ZS5mYWlsQ291bnQgPT09IDEsICJzZXF1
ZW50aWFsRXhlY3V0aW9uU3VpdGUgc2hvdWxkIGhhdmUgZmFpbGVkIDEgdGVzdC4iKTsKKyAgICAg
ICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoc2VxdWVudGlhbEV4ZWN1dGlvblN1aXRlLnNraXBD
b3VudCA9PT0gMCwgInNlcXVlbnRpYWxFeGVjdXRpb25TdWl0ZSBzaG91bGQgaGF2ZSBza2lwcGVk
IHplcm8gdGVzdHMuIik7CiAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsgLy8gQ29u
dGludWUgdGhpcyB0ZXN0LgogICAgIH0pOwogCkBAIC0xNjAsMTEgKzE2NywxMSBAQCBmdW5jdGlv
biB0ZXN0KCkKICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOyAvLyBDb250aW51ZSB0
aGlzIHRlc3QuCiAgICAgfSwgZnVuY3Rpb24gcmVqZWN0ZWQoZSkgewogICAgICAgICBQcm90b2Nv
bFRlc3QubG9nKCJQQVNTOiBQcm9taXNlIGZyb20gYWJvcnRPbkZhaWx1cmVTdWl0ZS5ydW5UZXN0
Q2FzZXMoKSBzaG91bGQgcmVqZWN0IHdoZW4gYSB0ZXN0IGNhc2UgZmFpbHMuIik7Ci0gICAgICAg
IFByb3RvY29sVGVzdC5hc3NlcnQoZSA9PT0gcmVqZWN0VG9rZW4sICJQcm9taXNlIGZyb20gYWJv
cnRPbkZhaWx1cmVTdWl0ZS5ydW5UZXN0Q2FzZXMoKSBzaG91bGQgcmVqZWN0IHdpdGhvdXQgYWx0
ZXJpbmcgaXRzIHJlc3VsdCB2YWx1ZS4iKTsKLSAgICAgICAgUHJvdG9jb2xUZXN0LmFzc2VydChh
Ym9ydE9uRmFpbHVyZVN1aXRlLnJ1bkNvdW50ID09PSAyLCAiYWJvcnRPbkZhaWx1cmVTdWl0ZSBz
aG91bGQgaGF2ZSBleGVjdXRlZCB0d28gdGVzdHMuIik7Ci0gICAgICAgIFByb3RvY29sVGVzdC5h
c3NlcnQoYWJvcnRPbkZhaWx1cmVTdWl0ZS5wYXNzQ291bnQgPT09IDEsICJhYm9ydE9uRmFpbHVy
ZVN1aXRlIHNob3VsZCBoYXZlIHBhc3NlZCBvbmUgdGVzdC4iKTsKLSAgICAgICAgUHJvdG9jb2xU
ZXN0LmFzc2VydChhYm9ydE9uRmFpbHVyZVN1aXRlLmZhaWxDb3VudCA9PT0gMSwgImFib3J0T25G
YWlsdXJlU3VpdGUgc2hvdWxkIGhhdmUgZmFpbGVkIG9uZSB0ZXN0LiIpOwotICAgICAgICBQcm90
b2NvbFRlc3QuYXNzZXJ0KGFib3J0T25GYWlsdXJlU3VpdGUuc2tpcENvdW50ID09PSAxLCAiYWJv
cnRPbkZhaWx1cmVTdWl0ZSBzaG91bGQgaGF2ZSBza2lwcGVkIG9uZSB0ZXN0LiIpOworICAgICAg
ICBQcm90b2NvbFRlc3QuZXhwZWN0VGhhdChlID09PSByZWplY3RUb2tlbiwgIlByb21pc2UgZnJv
bSBhYm9ydE9uRmFpbHVyZVN1aXRlLnJ1blRlc3RDYXNlcygpIHNob3VsZCByZWplY3Qgd2l0aG91
dCBhbHRlcmluZyBpdHMgcmVzdWx0IHZhbHVlLiIpOworICAgICAgICBQcm90b2NvbFRlc3QuZXhw
ZWN0VGhhdChhYm9ydE9uRmFpbHVyZVN1aXRlLnJ1bkNvdW50ID09PSAyLCAiYWJvcnRPbkZhaWx1
cmVTdWl0ZSBzaG91bGQgaGF2ZSBleGVjdXRlZCB0d28gdGVzdHMuIik7CisgICAgICAgIFByb3Rv
Y29sVGVzdC5leHBlY3RUaGF0KGFib3J0T25GYWlsdXJlU3VpdGUucGFzc0NvdW50ID09PSAxLCAi
YWJvcnRPbkZhaWx1cmVTdWl0ZSBzaG91bGQgaGF2ZSBwYXNzZWQgb25lIHRlc3QuIik7CisgICAg
ICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGFib3J0T25GYWlsdXJlU3VpdGUuZmFpbENvdW50
ID09PSAxLCAiYWJvcnRPbkZhaWx1cmVTdWl0ZSBzaG91bGQgaGF2ZSBmYWlsZWQgb25lIHRlc3Qu
Iik7CisgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGFib3J0T25GYWlsdXJlU3VpdGUu
c2tpcENvdW50ID09PSAxLCAiYWJvcnRPbkZhaWx1cmVTdWl0ZSBzaG91bGQgaGF2ZSBza2lwcGVk
IG9uZSB0ZXN0LiIpOwogCiAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsgLy8gQ29u
dGludWUgdGhpcyB0ZXN0LgogICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3VuaXQtdGVzdHMvc3luYy10ZXN0LXN1aXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci91bml0LXRlc3RzL3N5bmMtdGVzdC1zdWl0ZS1leHBlY3RlZC50eHQKaW5kZXgg
OTJkZTYyYzQ1YjJiOGM2NWQ5YzFlNzRjYmQ4NTZiMGRiMzhlMzJjMi4uMjU2YmIxOTU1ZjY2MzI3
YTdkMjQzMTkxMjI1ZTlkMTM1NTc1ZWViMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3VuaXQtdGVzdHMvc3luYy10ZXN0LXN1aXRlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9zeW5jLXRlc3Qtc3VpdGUtZXhwZWN0ZWQudHh0CkBA
IC0xLDUgKzEsNiBAQAogUEFTUzogaW5zdGFudGlhdGluZyBTeW5jVGVzdFN1aXRlIHJlcXVpcmVz
IG5hbWUgYXJndW1lbnQuCiBQQVNTOiBpbnN0YW50aWF0aW5nIFN5bmNUZXN0U3VpdGUgcmVxdWly
ZXMgc3RyaW5nIG5hbWUgYXJndW1lbnQuCitQQVNTOiBpbnN0YW50aWF0aW5nIFN5bmNUZXN0U3Vp
dGUgcmVxdWlyZXMgdGVzdCBoYXJuZXNzIGFyZ3VtZW50LgogUEFTUzogc2hvdWxkIG5vdCBiZSBh
YmxlIHRvIGFkZCBlbXB0eSB0ZXN0IGNhc2UuCiBQQVNTOiBzaG91bGQgbm90IGJlIGFibGUgdG8g
YWRkIG5vbi1vYmplY3QgdGVzdCBjYXNlLgogUEFTUzogdGVzdCBjYXNlIHNob3VsZCByZXF1aXJl
IHN0cmluZyBuYW1lLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVz
dHMvc3luYy10ZXN0LXN1aXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0
cy9zeW5jLXRlc3Qtc3VpdGUuaHRtbAppbmRleCA5ODQzNTA4MTliMTZmNzA3NDJiZDA1NWM0MWVk
M2EyZjJlMzkyYmQyLi5lYzQ4NmFjNWJmNWMxOGFkOTk0ZTA3MDI0OTJkNTQzMmM5NWQyMWE4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9zeW5jLXRlc3Qtc3Vp
dGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9zeW5jLXRlc3Qt
c3VpdGUuaHRtbApAQCAtNiwyMCArNiwyNyBAQAogZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgdHJ5
IHsKLSAgICAgICAgbmV3IFByb3RvY29sVGVzdC5TeW5jVGVzdFN1aXRlKCk7CisgICAgICAgIGxl
dCByZXN1bHQgPSBuZXcgUHJvdG9jb2xUZXN0LlN5bmNUZXN0U3VpdGUodGhpcyk7CiAgICAgICAg
IFByb3RvY29sVGVzdC5sb2coIkZBSUw6IGluc3RhbnRpYXRpbmcgU3luY1Rlc3RTdWl0ZSByZXF1
aXJlcyBuYW1lIGFyZ3VtZW50LiIpOwogICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgUHJvdG9j
b2xUZXN0LmxvZygiUEFTUzogaW5zdGFudGlhdGluZyBTeW5jVGVzdFN1aXRlIHJlcXVpcmVzIG5h
bWUgYXJndW1lbnQuIik7CiAgICAgfQogCiAgICAgdHJ5IHsKLSAgICAgICAgbmV3IFByb3RvY29s
VGVzdC5TeW5jVGVzdFN1aXRlKHt9KTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBQcm90b2Nv
bFRlc3QuU3luY1Rlc3RTdWl0ZSh0aGlzLCB7fSk7CiAgICAgICAgIFByb3RvY29sVGVzdC5sb2co
IkZBSUw6IGluc3RhbnRpYXRpbmcgU3luY1Rlc3RTdWl0ZSByZXF1aXJlcyBzdHJpbmcgbmFtZSBh
cmd1bWVudC4iKTsKICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgIFByb3RvY29sVGVzdC5sb2co
IlBBU1M6IGluc3RhbnRpYXRpbmcgU3luY1Rlc3RTdWl0ZSByZXF1aXJlcyBzdHJpbmcgbmFtZSBh
cmd1bWVudC4iKTsKICAgICB9CiAKLSAgICB2YXIgYmFkQXJnc1N1aXRlID0gbmV3IFByb3RvY29s
VGVzdC5TeW5jVGVzdFN1aXRlKCJkdW1teSIpOworICAgIHRyeSB7CisgICAgICAgIGxldCByZXN1
bHQgPSBuZXcgUHJvdG9jb2xUZXN0LlN5bmNUZXN0U3VpdGUoInNvbWV0aGluZyIsIHt9KTsKKyAg
ICAgICAgUHJvdG9jb2xUZXN0LmxvZygiRkFJTDogaW5zdGFudGlhdGluZyBTeW5jVGVzdFN1aXRl
IHJlcXVpcmVzIHRlc3QgaGFybmVzcyBhcmd1bWVudC4iKTsKKyAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgIFByb3RvY29sVGVzdC5sb2coIlBBU1M6IGluc3RhbnRpYXRpbmcgU3luY1Rlc3RTdWl0
ZSByZXF1aXJlcyB0ZXN0IGhhcm5lc3MgYXJndW1lbnQuIik7CisgICAgfQorCisgICAgdmFyIGJh
ZEFyZ3NTdWl0ZSA9IFByb3RvY29sVGVzdC5jcmVhdGVTeW5jU3VpdGUoImR1bW15Iik7CiAgICAg
dHJ5IHsKICAgICAgICAgYmFkQXJnc1N1aXRlLmFkZFRlc3RDYXNlKCk7CiAgICAgICAgIFByb3Rv
Y29sVGVzdC5sb2coIkZBSUw6IHNob3VsZCBub3QgYmUgYWJsZSB0byBhZGQgZW1wdHkgdGVzdCBj
YXNlLiIpOwpAQCAtNTEsNyArNTgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgUHJvdG9j
b2xUZXN0LmxvZygiUEFTUzogdGVzdCBjYXNlIHNob3VsZCByZXF1aXJlIHRlc3QgZnVuY3Rpb24u
Iik7CiAgICAgfQogCi0gICAgdmFyIHJ1bkVtcHR5U3VpdGUgPSBuZXcgUHJvdG9jb2xUZXN0LlN5
bmNUZXN0U3VpdGUoIlN5bmNUZXN0U3VpdGUuUnVuRW1wdHlTdWl0ZSIpOworICAgIHZhciBydW5F
bXB0eVN1aXRlID0gUHJvdG9jb2xUZXN0LmNyZWF0ZVN5bmNTdWl0ZSgiU3luY1Rlc3RTdWl0ZS5S
dW5FbXB0eVN1aXRlIik7CiAgICAgdHJ5IHsKICAgICAgICAgcnVuRW1wdHlTdWl0ZS5ydW5UZXN0
Q2FzZXMoKTsKICAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygiRkFJTDogc2hvdWxkIG5vdCBiZSBh
YmxlIHRvIHJ1biBlbXB0eSB0ZXN0IHN1aXRlLiIpOwpAQCAtNTksNyArNjYsNyBAQCBmdW5jdGlv
biB0ZXN0KCkKICAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygiUEFTUzogc2hvdWxkIG5vdCBiZSBh
YmxlIHRvIHJ1biBlbXB0eSB0ZXN0IHN1aXRlLiIpOwogICAgIH0KIAotICAgIHZhciBydW5Ud2lj
ZVN1aXRlID0gbmV3IFByb3RvY29sVGVzdC5TeW5jVGVzdFN1aXRlKCJTeW5jVGVzdFN1aXRlLlJ1
blR3aWNlU3VpdGUiKTsKKyAgICB2YXIgcnVuVHdpY2VTdWl0ZSA9IFByb3RvY29sVGVzdC5jcmVh
dGVTeW5jU3VpdGUoIlN5bmNUZXN0U3VpdGUuUnVuVHdpY2VTdWl0ZSIpOwogICAgIHJ1blR3aWNl
U3VpdGUuYWRkVGVzdENhc2UoewogICAgICAgICBuYW1lOiAiRHVtbXlUZXN0MCIsCiAgICAgICAg
IGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBhIHN1aXRlIGNhbid0IHJ1biBtb3JlIHRoYW4gb25j
ZS4iLApAQCAtNjgsNyArNzUsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIHRyeSB7CiAgICAg
ICAgIHZhciByZXN1bHQgPSBydW5Ud2ljZVN1aXRlLnJ1blRlc3RDYXNlcygpOwotICAgICAgICBQ
cm90b2NvbFRlc3QuYXNzZXJ0KHJlc3VsdCA9PT0gdHJ1ZSwgIlJldHVybiB2YWx1ZSBvZiBydW5U
d2ljZVN1aXRlLnJ1blRlc3RDYXNlcygpIHNob3VsZCBiZSB0cnVlIHdoZW4gYWxsIHRlc3RzIHBh
c3MuIik7CisgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KHJlc3VsdCA9PT0gdHJ1ZSwg
IlJldHVybiB2YWx1ZSBvZiBydW5Ud2ljZVN1aXRlLnJ1blRlc3RDYXNlcygpIHNob3VsZCBiZSB0
cnVlIHdoZW4gYWxsIHRlc3RzIHBhc3MuIik7CiAKICAgICAgICAgcnVuVHdpY2VTdWl0ZS5ydW5U
ZXN0Q2FzZXMoKTsgLy8gVHJ5IHRvIHRyaWdnZXIgYW4gZXJyb3IuCiAgICAgICAgIFByb3RvY29s
VGVzdC5sb2coIkZBSUw6IHNob3VsZCBub3QgYmUgYWJsZSB0byBydW4gYSB0ZXN0IHN1aXRlIHR3
aWNlLiIpOwpAQCAtNzgsNyArODUsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIHZhciB0aHJv
d25FcnJvciA9IG5ldyBFcnJvcih7InRva2VuIjogNjY2fSk7CiAKLSAgICB2YXIgc2VxdWVudGlh
bEV4ZWN1dGlvblN1aXRlID0gbmV3IFByb3RvY29sVGVzdC5TeW5jVGVzdFN1aXRlKCJTeW5jVGVz
dFN1aXRlLlNlcXVlbnRpYWxFeGVjdXRpb24iKTsKKyAgICB2YXIgc2VxdWVudGlhbEV4ZWN1dGlv
blN1aXRlID0gUHJvdG9jb2xUZXN0LmNyZWF0ZVN5bmNTdWl0ZSgiU3luY1Rlc3RTdWl0ZS5TZXF1
ZW50aWFsRXhlY3V0aW9uIik7CiAgICAgc2VxdWVudGlhbEV4ZWN1dGlvblN1aXRlLmFkZFRlc3RD
YXNlKHsKICAgICAgICAgbmFtZTogIkR1bW15VGVzdDEiLAogICAgICAgICBkZXNjcmlwdGlvbjog
IkNoZWNrIHRlc3QgY2FzZSBleGVjdXRpb24gb3JkZXIuIiwKQEAgLTEwMSwxMyArMTA4LDEzIEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgIH0pOwogCiAgICAgdmFyIHJlc3VsdCA9IHNlcXVlbnRpYWxF
eGVjdXRpb25TdWl0ZS5ydW5UZXN0Q2FzZXMoKTsKLSAgICBQcm90b2NvbFRlc3QuYXNzZXJ0KHJl
c3VsdCA9PT0gZmFsc2UsICJSZXR1cm4gdmFsdWUgb2Ygc2VxdWVudGlhbEV4ZWN1dGlvblN1aXRl
LnJ1blRlc3RDYXNlcygpIHNob3VsZCBiZSBmYWxzZSB3aGVuIGEgdGVzdCBjYXNlIGZhaWxzLiIp
OwotICAgIFByb3RvY29sVGVzdC5hc3NlcnQoc2VxdWVudGlhbEV4ZWN1dGlvblN1aXRlLnJ1bkNv
dW50ID09PSA0LCAic2VxdWVudGlhbEV4ZWN1dGlvblN1aXRlIHNob3VsZCBoYXZlIGV4ZWN1dGVk
IGZvdXIgdGVzdHMuIik7Ci0gICAgUHJvdG9jb2xUZXN0LmFzc2VydChzZXF1ZW50aWFsRXhlY3V0
aW9uU3VpdGUucGFzc0NvdW50ID09PSAzLCAic2VxdWVudGlhbEV4ZWN1dGlvblN1aXRlIHNob3Vs
ZCBoYXZlIHBhc3NlZCB0aHJlZSB0ZXN0cy4iKTsKLSAgICBQcm90b2NvbFRlc3QuYXNzZXJ0KHNl
cXVlbnRpYWxFeGVjdXRpb25TdWl0ZS5mYWlsQ291bnQgPT09IDEsICJzZXF1ZW50aWFsRXhlY3V0
aW9uU3VpdGUgc2hvdWxkIGhhdmUgZmFpbGVkIDEgdGVzdC4iKTsKLSAgICBQcm90b2NvbFRlc3Qu
YXNzZXJ0KHNlcXVlbnRpYWxFeGVjdXRpb25TdWl0ZS5za2lwQ291bnQgPT09IDAsICJzZXF1ZW50
aWFsRXhlY3V0aW9uU3VpdGUgc2hvdWxkIGhhdmUgc2tpcHBlZCB6ZXJvIHRlc3RzLiIpOworICAg
IFByb3RvY29sVGVzdC5leHBlY3RUaGF0KHJlc3VsdCA9PT0gZmFsc2UsICJSZXR1cm4gdmFsdWUg
b2Ygc2VxdWVudGlhbEV4ZWN1dGlvblN1aXRlLnJ1blRlc3RDYXNlcygpIHNob3VsZCBiZSBmYWxz
ZSB3aGVuIGEgdGVzdCBjYXNlIGZhaWxzLiIpOworICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0
KHNlcXVlbnRpYWxFeGVjdXRpb25TdWl0ZS5ydW5Db3VudCA9PT0gNCwgInNlcXVlbnRpYWxFeGVj
dXRpb25TdWl0ZSBzaG91bGQgaGF2ZSBleGVjdXRlZCBmb3VyIHRlc3RzLiIpOworICAgIFByb3Rv
Y29sVGVzdC5leHBlY3RUaGF0KHNlcXVlbnRpYWxFeGVjdXRpb25TdWl0ZS5wYXNzQ291bnQgPT09
IDMsICJzZXF1ZW50aWFsRXhlY3V0aW9uU3VpdGUgc2hvdWxkIGhhdmUgcGFzc2VkIHRocmVlIHRl
c3RzLiIpOworICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KHNlcXVlbnRpYWxFeGVjdXRpb25T
dWl0ZS5mYWlsQ291bnQgPT09IDEsICJzZXF1ZW50aWFsRXhlY3V0aW9uU3VpdGUgc2hvdWxkIGhh
dmUgZmFpbGVkIDEgdGVzdC4iKTsKKyAgICBQcm90b2NvbFRlc3QuZXhwZWN0VGhhdChzZXF1ZW50
aWFsRXhlY3V0aW9uU3VpdGUuc2tpcENvdW50ID09PSAwLCAic2VxdWVudGlhbEV4ZWN1dGlvblN1
aXRlIHNob3VsZCBoYXZlIHNraXBwZWQgemVybyB0ZXN0cy4iKTsKIAotICAgIHZhciBhYm9ydE9u
RmFpbHVyZVN1aXRlID0gbmV3IFByb3RvY29sVGVzdC5TeW5jVGVzdFN1aXRlKCJTeW5jVGVzdFN1
aXRlLkFib3J0T25GYWlsdXJlIik7CisgICAgdmFyIGFib3J0T25GYWlsdXJlU3VpdGUgPSBQcm90
b2NvbFRlc3QuY3JlYXRlU3luY1N1aXRlKCJTeW5jVGVzdFN1aXRlLkFib3J0T25GYWlsdXJlIik7
CiAgICAgYWJvcnRPbkZhaWx1cmVTdWl0ZS5hZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJQ
YXNzaW5nVGVzdDUiLAogICAgICAgICBkZXNjcmlwdGlvbjogIlRoaXMgdGVzdCBpcyBhIGR1bW15
LiIsCkBAIC0xMjUsMTEgKzEzMiwxMSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICB9KTsKIAogICAg
IGFib3J0T25GYWlsdXJlU3VpdGUucnVuVGVzdENhc2VzKCk7Ci0gICAgUHJvdG9jb2xUZXN0LmFz
c2VydChyZXN1bHQgPT09IGZhbHNlLCAiUmV0dXJuIHZhbHVlIG9mIGFib3J0T25GYWlsdXJlU3Vp
dGUucnVuVGVzdENhc2VzKCkgc2hvdWxkIGJlIGZhbHNlIHdoZW4gYSB0ZXN0IGNhc2UgZmFpbHMu
Iik7Ci0gICAgUHJvdG9jb2xUZXN0LmFzc2VydChhYm9ydE9uRmFpbHVyZVN1aXRlLnJ1bkNvdW50
ID09PSAyLCAiYWJvcnRPbkZhaWx1cmVTdWl0ZSBzaG91bGQgaGF2ZSBleGVjdXRlZCB0d28gdGVz
dHMuIik7Ci0gICAgUHJvdG9jb2xUZXN0LmFzc2VydChhYm9ydE9uRmFpbHVyZVN1aXRlLnBhc3ND
b3VudCA9PT0gMSwgImFib3J0T25GYWlsdXJlU3VpdGUgc2hvdWxkIGhhdmUgcGFzc2VkIG9uZSB0
ZXN0LiIpOwotICAgIFByb3RvY29sVGVzdC5hc3NlcnQoYWJvcnRPbkZhaWx1cmVTdWl0ZS5mYWls
Q291bnQgPT09IDEsICJhYm9ydE9uRmFpbHVyZVN1aXRlIHNob3VsZCBoYXZlIGZhaWxlZCBvbmUg
dGVzdC4iKTsKLSAgICBQcm90b2NvbFRlc3QuYXNzZXJ0KGFib3J0T25GYWlsdXJlU3VpdGUuc2tp
cENvdW50ID09PSAxLCAiYWJvcnRPbkZhaWx1cmVTdWl0ZSBzaG91bGQgaGF2ZSBza2lwcGVkIG9u
ZSB0ZXN0LiIpOworICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KHJlc3VsdCA9PT0gZmFsc2Us
ICJSZXR1cm4gdmFsdWUgb2YgYWJvcnRPbkZhaWx1cmVTdWl0ZS5ydW5UZXN0Q2FzZXMoKSBzaG91
bGQgYmUgZmFsc2Ugd2hlbiBhIHRlc3QgY2FzZSBmYWlscy4iKTsKKyAgICBQcm90b2NvbFRlc3Qu
ZXhwZWN0VGhhdChhYm9ydE9uRmFpbHVyZVN1aXRlLnJ1bkNvdW50ID09PSAyLCAiYWJvcnRPbkZh
aWx1cmVTdWl0ZSBzaG91bGQgaGF2ZSBleGVjdXRlZCB0d28gdGVzdHMuIik7CisgICAgUHJvdG9j
b2xUZXN0LmV4cGVjdFRoYXQoYWJvcnRPbkZhaWx1cmVTdWl0ZS5wYXNzQ291bnQgPT09IDEsICJh
Ym9ydE9uRmFpbHVyZVN1aXRlIHNob3VsZCBoYXZlIHBhc3NlZCBvbmUgdGVzdC4iKTsKKyAgICBQ
cm90b2NvbFRlc3QuZXhwZWN0VGhhdChhYm9ydE9uRmFpbHVyZVN1aXRlLmZhaWxDb3VudCA9PT0g
MSwgImFib3J0T25GYWlsdXJlU3VpdGUgc2hvdWxkIGhhdmUgZmFpbGVkIG9uZSB0ZXN0LiIpOwor
ICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGFib3J0T25GYWlsdXJlU3VpdGUuc2tpcENvdW50
ID09PSAxLCAiYWJvcnRPbkZhaWx1cmVTdWl0ZSBzaG91bGQgaGF2ZSBza2lwcGVkIG9uZSB0ZXN0
LiIpOwogCiAgICAgUHJvdG9jb2xUZXN0LmNvbXBsZXRlVGVzdCgpOwogfQo=
</data>
<flag name="review"
          id="284032"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>