<?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>148079</bug_id>
          
          <creation_ts>2015-08-17 09:22:13 -0700</creation_ts>
          <short_desc>Web Inspector: InspectorTest should be a subclass of TestHarness</short_desc>
          <delta_ts>2022-03-01 02:46:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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>148122</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>commit-queue</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>1118121</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-17 09:22:13 -0700</bug_when>
    <thetext>,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118122</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-08-17 09:22:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/22308113&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118178</commentid>
    <comment_count>2</comment_count>
      <attachid>259168</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-17 11:49:12 -0700</bug_when>
    <thetext>Created attachment 259168
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118258</commentid>
    <comment_count>3</comment_count>
      <attachid>259194</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-17 15:05:28 -0700</bug_when>
    <thetext>Created attachment 259194
Proposed Fix (EWS)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118261</commentid>
    <comment_count>4</comment_count>
      <attachid>259194</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-08-17 15:21:02 -0700</bug_when>
    <thetext>Comment on attachment 259194
Proposed Fix (EWS)

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

&gt; Source/WebInspectorUI/UserInterface/Test.html:150
&gt; +        // Not reliable unless console messages are dumped to stderr. See wiki for details.

Is there a wiki link that could be added here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118292</commentid>
    <comment_count>5</comment_count>
      <attachid>259194</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-17 16:37:12 -0700</bug_when>
    <thetext>Comment on attachment 259194
Proposed Fix (EWS)

Clearing flags on attachment: 259194

Committed r188552: &lt;http://trac.webkit.org/changeset/188552&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118293</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-17 16:37:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118467</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-17 23:29:49 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 148122</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118473</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-08-17 23:35:52 -0700</bug_when>
    <thetext>Rolled out because this depended on r188539.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118918</commentid>
    <comment_count>9</comment_count>
      <attachid>259376</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-19 10:34:01 -0700</bug_when>
    <thetext>Created attachment 259376
Proposed Fix (arrow it)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118950</commentid>
    <comment_count>10</comment_count>
      <attachid>259376</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-08-19 11:53:03 -0700</bug_when>
    <thetext>Comment on attachment 259376
Proposed Fix (arrow it)

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

&gt; Source/WebInspectorUI/UserInterface/Test/FrontendTestHarness.js:123
&gt; +            return () =&gt; { this.addResult(type + &quot;: &quot; + Array.from(arguments).join(&quot; &quot;)); };

``

&gt; LayoutTests/inspector/debugger/breakpoint-action-eval.html:16
&gt; +    TestPage.addResult(&quot;Breakpoint action evaluated. a:(&quot; + a + &quot;) b:(&quot; + b + &quot;)&quot;);

``

&gt; LayoutTests/inspector/debugger/resources/script-for-breakpoint-actions.js:4
&gt; +    TestPage.addResult(&quot;inside breakpointActions a:(&quot; + a + &quot;) b:(&quot; + b + &quot;)&quot;);

``

&gt; LayoutTests/inspector/timeline/debugger-paused-while-recording.html:18
&gt; +    TestPage.addResult(&quot;Calling add(): &quot; + a + &quot; + &quot; + b);

``

&gt; LayoutTests/inspector/timeline/debugger-paused-while-recording.html:24
&gt; +    TestPage.addResult(&quot;Calling mul(): &quot; + a + &quot; * &quot; + b);

``

&gt; LayoutTests/inspector/timeline/exception-in-injected-script-while-recording.html:18
&gt; +    TestPage.addResult(&quot;Calling add(): &quot; + a + &quot; + &quot; + b);

``

&gt; LayoutTests/inspector/timeline/exception-in-injected-script-while-recording.html:24
&gt; +    TestPage.addResult(&quot;Calling mul(): &quot; + a + &quot; * &quot; + b);

``</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118964</commentid>
    <comment_count>11</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-19 12:09:47 -0700</bug_when>
    <thetext>Committed r188644: &lt;http://trac.webkit.org/changeset/188644&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259168</attachid>
            <date>2015-08-17 11:49:12 -0700</date>
            <delta_ts>2015-08-17 15:05:23 -0700</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-148079-20150817114910.patch</filename>
            <type>text/plain</type>
            <size>29915</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA1
MTIyMmJlZjlkM2VjOGQ5NjFlYTVhNTYxYmIyMTBmYmY0M2YyZmQwLi44YjBmZDM1YzBiM2NiM2U1
NjZhOTg0NjI5MTZmNTAwNDc3ZWUzODIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw0OCBAQAogMjAxNS0wOC0xNyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JUZXN0IHNob3VsZCBiZSBhIHN1YmNsYXNz
IG9mIFRlc3RIYXJuZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDgwNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBFeHRyYWN0IHRoZSBmcm9udGVuZCB0ZXN0IGhhcm5lc3MgaW50byBhIHN1YmNsYXNz
LiBEZWxldGUgc29tZSBjb2RlIHRoYXQKKyAgICAgICAgaXMgbm93IHJlZHVuZGFudC4gU3ByaW5r
bGUgc29tZSBFUzYgc3ludGF4IHdoZXJlIHBvc3NpYmxlLgorCisgICAgICAgIFJld3JpdGUgdGhl
IGNvZGUgdGhhdCByZWRpcmVjdHMgdGhlIEluc3BlY3RvciBwYWdlJ3MgY29uc29sZSBtZXNzYWdl
cyB0bworICAgICAgICB0aGUgdGVzdCBwYWdlLCBzaW5jZSBpdCBkaWRuJ3QgYXBwZWFyIHRvIHdv
cmsgYW55IG1vcmUuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QuaHRtbDoKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QvRnJvbnRlbmRUZXN0SGFybmVzcy5qczogQWRkZWQuCisg
ICAgICAgIChGcm9udGVuZFRlc3RIYXJuZXNzKToKKyAgICAgICAgKEZyb250ZW5kVGVzdEhhcm5l
c3MucHJvdG90eXBlLmNvbXBsZXRlVGVzdCk6CisgICAgICAgIChGcm9udGVuZFRlc3RIYXJuZXNz
LnByb3RvdHlwZS5hZGRSZXN1bHQpOgorICAgICAgICAoRnJvbnRlbmRUZXN0SGFybmVzcy5wcm90
b3R5cGUuZGVidWdMb2cpOgorICAgICAgICAoRnJvbnRlbmRUZXN0SGFybmVzcy5wcm90b3R5cGUu
ZXZhbHVhdGVJblBhZ2UpOgorICAgICAgICAoRnJvbnRlbmRUZXN0SGFybmVzcy5wcm90b3R5cGUu
ZXhwZWN0Tm9FcnJvcik6CisgICAgICAgIChGcm9udGVuZFRlc3RIYXJuZXNzLnByb3RvdHlwZS50
ZXN0UGFnZURpZExvYWQpOgorICAgICAgICAoRnJvbnRlbmRUZXN0SGFybmVzcy5wcm90b3R5cGUu
cmVsb2FkUGFnZSk6CisgICAgICAgIChGcm9udGVuZFRlc3RIYXJuZXNzLnByb3RvdHlwZS5yZWRp
cmVjdENvbnNvbGVUb1Rlc3RPdXRwdXQuY3JlYXRlUHJveHlDb25zb2xlSGFuZGxlcik6CisgICAg
ICAgIChGcm9udGVuZFRlc3RIYXJuZXNzLnByb3RvdHlwZS5yZWRpcmVjdENvbnNvbGVUb1Rlc3RP
dXRwdXQpOgorICAgICAgICAoRnJvbnRlbmRUZXN0SGFybmVzcy5wcm90b3R5cGUucmVwb3J0VW5j
YXVnaHRFeGNlcHRpb24pOgorICAgICAgICAoRnJvbnRlbmRUZXN0SGFybmVzcy5wcm90b3R5cGUu
X3Jlc2VuZFJlc3VsdHMpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzOgor
ICAgICAgICAoSW5zcGVjdG9yVGVzdC5FdmVudERpc3BhdGNoZXIucHJvdG90eXBlLmRpc3BhdGNo
RXZlbnQpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yVGVzdC5FdmVudERpc3BhdGNoZXIp
OiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yVGVzdC5sb2cpOiBEZWxldGVkLgorICAgICAg
ICAoSW5zcGVjdG9yVGVzdC5hc3NlcnQpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yVGVz
dC5leHBlY3RUaGF0KTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3RvclRlc3QuZGVidWdMb2cp
OiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yVGVzdC5leHBlY3ROb0Vycm9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UpOiBEZWxldGVkLgorICAgICAgICAoSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yVGVzdC5f
cmVzZW5kUmVzdWx0cyk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3JUZXN0LnRlc3RQYWdl
RGlkTG9hZCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2UpOiBE
ZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yVGVzdC5yZXBvcnRVbmNhdWdodEV4Y2VwdGlvbik6
IERlbGV0ZWQuCisKKzIwMTUtMDgtMTcgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
ICAgICAgICAgV2ViIEluc3BlY3Rvcjogc3BsaXQgVGVzdFN0dWIuanMgaW50byBtdWx0aXBsZSBm
aWxlcyBhbmQgbW9kZXJuaXplIGl0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDgwNzcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVGVzdC5odG1sCmluZGV4IDlkNDFkMzZiNTE1ZjI5YmYyMDU1OTY2OTk0MzIxNDUzM2Yx
Yjk0NjkuLjdmZGFlODY1MWQ5ZTQyYzRjYmM2ODQ2OGE1YmU1NDE1NGQ0NTA4NDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAorKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKQEAgLTMyLDYgKzMy
LDEwIEBACiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvV2ViSW5zcGVjdG9yLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iQmFzZS9PYmplY3QuanMiPjwvc2NyaXB0PgogCisgICAgPHNjcmlw
dCBzcmM9IlRlc3QvVGVzdEhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJU
ZXN0L0Zyb250ZW5kVGVzdEhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJU
ZXN0L1Rlc3RTdWl0ZS5qcyI+PC9zY3JpcHQ+CisKICAgICA8c2NyaXB0IHNyYz0iVGVzdC9UZXN0
LmpzIj48L3NjcmlwdD4KIAogICAgIDxzY3JpcHQgc3JjPSJCYXNlL0RPTVV0aWxpdGllcy5qcyI+
PC9zY3JpcHQ+CkBAIC0xNDIsNiArMTQ2LDEyIEBACiAKICAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+CiAgICAgICAgIFdlYkluc3BlY3Rvci5sb2FkZWQoKTsKKworICAgICAgICAv
LyBOb3QgcmVsaWFibGUgdW5sZXNzIGNvbnNvbGUgbWVzc2FnZXMgYXJlIGR1bXBlZCB0byBzdGRl
cnIuIFNlZSB3aWtpIGZvciBkZXRhaWxzLgorICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmR1bXBJ
bnNwZWN0b3JQcm90b2NvbE1lc3NhZ2VzID0gZmFsc2U7CisKKyAgICAgICAgLy8gU3luY2hyb25v
dXMgbG9nZ2luZyBtYXkgcHJvZHVjZSBtb3JlIG91dHB1dCBwcmlvciB0byBhIHRpbWVvdXQuCisg
ICAgICAgIEluc3BlY3RvclRlc3QuZm9yY2VTeW5jRGVidWdMb2dnaW5nID0gZmFsc2U7CiAgICAg
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvRnJvbnRlbmRUZXN0SGFybmVzcy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvRnJvbnRlbmRUZXN0SGFybmVzcy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41OWVhMTZiOTJlMDZlNjRjNzllMWI1YmVjODE0ZWVlMDhlNTUyNTc5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9G
cm9udGVuZFRlc3RIYXJuZXNzLmpzCkBAIC0wLDAgKzEsMTcxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK0Zyb250
ZW5kVGVzdEhhcm5lc3MgPSBjbGFzcyBGcm9udGVuZFRlc3RIYXJuZXNzIGV4dGVuZHMgVGVzdEhh
cm5lc3MKK3sKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigpOworCisg
ICAgICAgIHRoaXMuX3Jlc3VsdHMgPSBbXTsKKyAgICAgICAgdGhpcy5fc2hvdWxkUmVzZW5kUmVz
dWx0cyA9IHRydWU7CisgICAgfQorCisgICAgLy8gVGVzdEhhcm5lc3MgT3ZlcnJpZGVzCisKKyAg
ICBjb21wbGV0ZVRlc3QoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuZm9yY2VTeW5jRGVidWdM
b2dnaW5nKQorICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnVuYnVmZmVyZWRMb2co
IkZyb250ZW5kVGVzdEhhcm5lc3MuY29tcGxldGVUZXN0KCkiKTsKKworICAgICAgICAvLyBXYWl0
IGZvciByZXN1bHRzIHRvIGJlIHJlc2VudCBiZWZvcmUgcmVxdWVzdGluZyBjb21wbGV0ZVRlc3Qo
KS4gT3RoZXJ3aXNlLCBtZXNzYWdlcyB3aWxsIGJlCisgICAgICAgIC8vIHF1ZXVlZCBhZnRlciBw
ZW5kaW5nIGRpc3BhdGNoZXMgcnVuIHRvIHplcm8gYW5kIHRoZSB0ZXN0IHBhZ2Ugd2lsbCBxdWl0
IGJlZm9yZSBwcm9jZXNzaW5nIHRoZW0uCisgICAgICAgIGlmICh0aGlzLl90ZXN0UGFnZUlzUmVs
b2FkaW5nKSB7CisgICAgICAgICAgICB0aGlzLl9jb21wbGV0ZVRlc3RBZnRlclJlbG9hZCA9IHRy
dWU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBJbnNwZWN0b3JC
YWNrZW5kLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXModGhpcy5ldmFsdWF0ZUluUGFnZS5iaW5k
KHRoaXMsICJUZXN0UGFnZS5jb21wbGV0ZVRlc3QoKSIpKTsKKyAgICB9CisKKyAgICBhZGRSZXN1
bHQobWVzc2FnZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3Jlc3VsdHMucHVzaChtZXNzYWdlKTsK
KworICAgICAgICBpZiAodGhpcy5mb3JjZVN5bmNEZWJ1Z0xvZ2dpbmcpCisgICAgICAgICAgICBJ
bnNwZWN0b3JGcm9udGVuZEhvc3QudW5idWZmZXJlZExvZygiYWRkUmVzdWx0OiAiICsgbWVzc2Fn
ZSk7CisKKyAgICAgICAgaWYgKCF0aGlzLl90ZXN0UGFnZUlzUmVsb2FkaW5nKQorICAgICAgICAg
ICAgdGhpcy5ldmFsdWF0ZUluUGFnZShgVGVzdFBhZ2UuYWRkUmVzdWx0KHVuZXNjYXBlKCIke2Vz
Y2FwZShtZXNzYWdlKX0iKSlgKTsKKyAgICB9CisKKyAgICBkZWJ1Z0xvZyhtZXNzYWdlKQorICAg
IHsKKyAgICAgICAgbGV0IHN0cmluZ2lmaWVkTWVzc2FnZSA9IHR5cGVvZiBtZXNzYWdlICE9PSAi
c3RyaW5nIiA/IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpIDogbWVzc2FnZTsKKyAgICAgICAgdGhp
cy5ldmFsdWF0ZUluUGFnZShgVGVzdFBhZ2UuZGVidWdMb2codW5lc2NhcGUoIiR7ZXNjYXBlKHN0
cmluZ2lmaWVkTWVzc2FnZSl9IikpO2ApOworICAgIH0KKworICAgIGV2YWx1YXRlSW5QYWdlKGV4
cHJlc3Npb24sIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgLy8gSWYgd2UgbG9hZCB0aGlzIHBh
Z2Ugb3V0c2lkZSBvZiB0aGUgaW5zcGVjdG9yLCBvciBoaXQgYW4gZWFybHkgZXJyb3Igd2hlbiBs
b2FkaW5nCisgICAgICAgIC8vIHRoZSB0ZXN0IGZyb250ZW5kLCB0aGVuIGRlZmVyIGV2YWx1YXRp
bmcgdGhlIGNvbW1hbmRzIChpbmRlZmluaXRlbHkgaW4gdGhlIGZvcm1lciBjYXNlKS4KKyAgICAg
ICAgaWYgKHRoaXMuX29yaWdpbmFsQ29uc29sZSAmJiAhd2luZG93LlJ1bnRpbWVBZ2VudCkgewor
ICAgICAgICAgICAgdGhpcy5fb3JpZ2luYWxDb25zb2xlWyJlcnJvciJdKCJUcmllZCB0byBldmFs
dWF0ZSBpbiB0ZXN0IHBhZ2UsIGJ1dCBjb25uZWN0aW9uIG5vdCB5ZXQgZXN0YWJsaXNoZWQ6Iiwg
ZXhwcmVzc2lvbik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBS
dW50aW1lQWdlbnQuZXZhbHVhdGUuaW52b2tlKHtleHByZXNzaW9uLCBvYmplY3RHcm91cDogInRl
c3QiLCBpbmNsdWRlQ29tbWFuZExpbmVBUEk6IGZhbHNlfSwgY2FsbGJhY2spOworICAgIH0KKwor
ICAgIC8vIEZyb250ZW5kIHRlc3Qtc3BlY2lmaWMgbWV0aG9kcy4KKworICAgIGV4cGVjdE5vRXJy
b3IoZXJyb3IpCisgICAgeworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKCJQUk9UT0NPTCBFUlJPUjogIiArIGVycm9yKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAgICB0aHJvdyAiUFJPVE9DT0wg
RVJST1IiOworICAgICAgICB9CisgICAgfQorCisgICAgdGVzdFBhZ2VEaWRMb2FkKCkKKyAgICB7
CisgICAgICAgIHRoaXMuX3Rlc3RQYWdlSXNSZWxvYWRpbmcgPSBmYWxzZTsKKyAgICAgICAgdGhp
cy5fcmVzZW5kUmVzdWx0cygpOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKEZyb250ZW5kVGVzdEhhcm5lc3MuRXZlbnQuVGVzdFBhZ2VEaWRMb2FkKTsKKworICAgICAg
ICBpZiAodGhpcy5fY29tcGxldGVUZXN0QWZ0ZXJSZWxvYWQpCisgICAgICAgICAgICB0aGlzLmNv
bXBsZXRlVGVzdCgpOworICAgIH0KKworICAgIHJlbG9hZFBhZ2Uoc2hvdWxkSWdub3JlQ2FjaGUp
CisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fdGVzdFBhZ2VJc1JlbG9hZGlu
Zyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl90ZXN0UGFnZVJlbG9hZGVkT25jZSk7
CisKKyAgICAgICAgdGhpcy5fdGVzdFBhZ2VJc1JlbG9hZGluZyA9IHRydWU7CisKKyAgICAgICAg
cmV0dXJuIFBhZ2VBZ2VudC5yZWxvYWQoISFzaG91bGRJZ25vcmVDYWNoZSkKKyAgICAgICAgICAg
IC50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRoaXMuX3Nob3VsZFJlc2VuZFJl
c3VsdHMgPSB0cnVlOworICAgICAgICAgICAgICAgIHRoaXMuX3Rlc3RQYWdlUmVsb2FkZWRPbmNl
ID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7
CisgICAgICAgICAgICB9LmJpbmQodGhpcykpOworICAgIH0KKworICAgIHJlZGlyZWN0Q29uc29s
ZVRvVGVzdE91dHB1dCgpCisgICAgeworICAgICAgICBsZXQgaGFybmVzcyA9IHRoaXM7CisgICAg
ICAgIGZ1bmN0aW9uIGNyZWF0ZVByb3h5Q29uc29sZUhhbmRsZXIodHlwZSkgeworICAgICAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGhhcm5lc3MuYWRkUmVzdWx0
KHR5cGUgKyAiOiAiICsgQXJyYXkuZnJvbShhcmd1bWVudHMpLmpvaW4oIiAiKSk7CisgICAgICAg
ICAgICB9OworICAgICAgICB9CisKKyAgICAgICAgbGV0IHJlZGlyZWN0ZWRNZXRob2RzID0ge307
CisgICAgICAgIGZvciAobGV0IGtleSBpbiB3aW5kb3cuY29uc29sZSkgCisgICAgICAgICAgICBy
ZWRpcmVjdGVkTWV0aG9kc1trZXldID0gd2luZG93LmNvbnNvbGVba2V5XS5iaW5kKHdpbmRvdy5j
b25zb2xlKTsKKworICAgICAgICBmb3IgKGxldCB0eXBlIG9mIFsibG9nIiwgImVycm9yIiwgImlu
Zm8iXSkKKyAgICAgICAgICAgIHJlZGlyZWN0ZWRNZXRob2RzW3R5cGVdID0gY3JlYXRlUHJveHlD
b25zb2xlSGFuZGxlcih0eXBlLnRvVXBwZXJDYXNlKCkpOworCisgICAgICAgIHRoaXMuX29yaWdp
bmFsQ29uc29sZSA9IHdpbmRvdy5jb25zb2xlOworICAgICAgICB3aW5kb3cuY29uc29sZSA9IHJl
ZGlyZWN0ZWRNZXRob2RzOworICAgIH0KKworICAgIHJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uKG1l
c3NhZ2UsIHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQorICAgIHsKKyAgICAgICAgbGV0
IHJlc3VsdCA9IGBVbmNhdWdodCBleGNlcHRpb24gaW4gaW5zcGVjdG9yIHBhZ2U6ICR7bWVzc2Fn
ZX0gWyR7dXJsfToke2xpbmVOdW1iZXJ9OiR7Y29sdW1uTnVtYmVyfV1gOworCisgICAgICAgIC8v
IElmIHRoZSBjb25uZWN0aW9uIHRvIHRoZSB0ZXN0IHBhZ2UgaXMgbm90IHNldCB1cCwgdGhlbiBq
dXN0IGR1bXAgdG8gY29uc29sZSBhbmQgZ2l2ZSB1cC4KKyAgICAgICAgLy8gRXJyb3JzIGVuY291
bnRlcmVkIHRoaXMgZWFybHkgY2FuIGJlIGRlYnVnZ2VkIGJ5IGxvYWRpbmcgVGVzdC5odG1sIGlu
IGEgbm9ybWFsIGJyb3dzZXIgcGFnZS4KKyAgICAgICAgaWYgKHRoaXMuX29yaWdpbmFsQ29uc29s
ZSAmJiAoIUluc3BlY3RvckZyb250ZW5kSG9zdCB8fCAhSW5zcGVjdG9yQmFja2VuZCkpIHsKKyAg
ICAgICAgICAgIHRoaXMuX29yaWdpbmFsQ29uc29sZVsiZXJyb3IiXShyZXN1bHQpOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5hZGRSZXN1bHQo
cmVzdWx0KTsKKyAgICAgICAgdGhpcy5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgLy8gU3RvcCBk
ZWZhdWx0IGhhbmRsZXIgc28gd2UgY2FuIGVtcHR5IEluc3BlY3RvckJhY2tlbmQncyBtZXNzYWdl
IHF1ZXVlLgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisK
KyAgICBfcmVzZW5kUmVzdWx0cygpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlz
Ll9zaG91bGRSZXNlbmRSZXN1bHRzKTsKKyAgICAgICAgdGhpcy5fc2hvdWxkUmVzZW5kUmVzdWx0
cyA9IGZhbHNlOworCisgICAgICAgIGZvciAobGV0IHJlc3VsdCBvZiB0aGlzLl9yZXN1bHRzKQor
ICAgICAgICAgICAgdGhpcy5ldmFsdWF0ZUluUGFnZShgVGVzdFBhZ2UuYWRkUmVzdWx0KHVuZXNj
YXBlKCIke2VzY2FwZShyZXN1bHQpfSIpKWApOworICAgIH0KK307CisKK0Zyb250ZW5kVGVzdEhh
cm5lc3MuRXZlbnQgPSB7CisgICAgVGVzdFBhZ2VEaWRMb2FkOiAiZnJvbnRlbmQtdGVzdC10ZXN0
LXBhZ2UtZGlkLWxvYWQiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVGVzdC9UZXN0LmpzCmluZGV4IGEzYWE1MWEzZDA4NTZjYWNiNzI0NWQzMDgxMWVkMDlm
NDA0YmEyN2QuLmY5YjA1Njk1ZGY1MWIyZmI2ZWZiMGE1MWM1NjgxNzdjMDgyNDI5MTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVzdC5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanMKQEAg
LTk0LDE4NiArOTQsOSBAQCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcgPSBmdW5jdGlvbihzdHJpbmcp
CiBXZWJJbnNwZWN0b3IudXBkYXRlRG9ja2VkU3RhdGUgPSBmdW5jdGlvbigpIHt9OwogV2ViSW5z
cGVjdG9yLnVwZGF0ZURvY2tpbmdBdmFpbGFiaWxpdHkgPSBmdW5jdGlvbigpIHt9OwogCi0vLyBJ
bnNwZWN0b3JUZXN0IGNvbnRhaW5zIGV4dHJhIG1ldGhvZHMgdGhhdCBhcmUgb25seSBhdmFpbGFi
bGUgdG8gdGVzdCBjb2RlIHJ1bm5pbmcKLS8vIGluIHRoZSBXZWIgSW5zcGVjdG9yIHBhZ2UuIFRo
ZXkgcmVseSBvbiBlcXVpdmFsZW50cyBpbiB0aGUgYWN0dWFsIHRlc3QgcGFnZQotLy8gd2hpY2gg
YXJlIHByb3ZpZGVkIGJ5IGBpbnNwZWN0b3ItdGVzdC5qc2AuCi1JbnNwZWN0b3JUZXN0ID0ge307
Ci0KLS8vIFRoaXMgaXMgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgSW5zcGVjdG9yIHRlc3RzIGJ5IHN5
bmNocm9ub3VzbHkgbG9nZ2luZyBtZXNzYWdlcy4KLUluc3BlY3RvclRlc3QuZHVtcE1lc3NhZ2Vz
VG9Db25zb2xlID0gZmFsc2U7Ci0KLS8vIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciB0aGUgZmFj
dCB0aGF0IGl0IHdvdWxkIGJlIGhhcmQgdG8gc2V0IHVwIGEgY29uc3RydWN0b3IsCi0vLyBwcm90
b3R5cGUsIGFuZCBwcm90b3R5cGUgY2hhaW4gZm9yIHRoZSBzaW5nbGV0b24gSW5zcGVjdG9yVGVz
dC4KLUluc3BlY3RvclRlc3QuRXZlbnREaXNwYXRjaGVyID0gY2xhc3MgRXZlbnREaXNwYXRjaGVy
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAotewotICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQp
Ci0gICAgewotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhldmVudCk7Ci0g
ICAgfQotfTsKLQotSW5zcGVjdG9yVGVzdC5FdmVudERpc3BhdGNoZXIuRXZlbnQgPSB7Ci0gICAg
VGVzdFBhZ2VEaWRMb2FkOiAiaW5zcGVjdG9yLXRlc3QtdGVzdC1wYWdlLWRpZC1sb2FkIgotfTsK
LQotSW5zcGVjdG9yVGVzdC5ldmVudERpc3BhdGNoZXIgPSBuZXcgSW5zcGVjdG9yVGVzdC5FdmVu
dERpc3BhdGNoZXI7Ci0KLS8vIE5vdGU6IEFkZGl0aW9uYWwgSW5zcGVjdG9yVGVzdCBtZXRob2Rz
IGFyZSBpbmNsdWRlZCBvbiBhIHBlci10ZXN0IGJhc2lzIGZyb20KLS8vIGZpbGVzIGxpa2UgYGRl
YnVnZ2VyLXRlc3QuanNgLgotCi0vLyBBcHBlbmRzIGEgbG9nIG1lc3NhZ2UgaW4gdGhlIHRlc3Qg
ZG9jdW1lbnQuCi1JbnNwZWN0b3JUZXN0LmxvZyA9IGZ1bmN0aW9uKG1lc3NhZ2UpCi17Ci0gICAg
dmFyIHN0cmluZ2lmaWVkTWVzc2FnZSA9IHR5cGVvZiBtZXNzYWdlICE9PSAib2JqZWN0IiA/IG1l
c3NhZ2UgOiBKU09OLnN0cmluZ2lmeShtZXNzYWdlKTsKLSAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdChzdHJpbmdpZmllZE1lc3NhZ2UpOwotfQotCi0vLyBBcHBlbmRzIGEgbWVzc2FnZSBpbiB0
aGUgdGVzdCBkb2N1bWVudCBvbmx5IGlmIHRoZSBjb25kaXRpb24gaXMgZmFsc2UuCi1JbnNwZWN0
b3JUZXN0LmFzc2VydCA9IGZ1bmN0aW9uKGNvbmRpdGlvbiwgbWVzc2FnZSkKLXsKLSAgICBpZiAo
Y29uZGl0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICB2YXIgc3RyaW5naWZpZWRNZXNzYWdl
ID0gdHlwZW9mIG1lc3NhZ2UgIT09ICJvYmplY3QiID8gbWVzc2FnZSA6IEpTT04uc3RyaW5naWZ5
KG1lc3NhZ2UpOwotICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJBU1NFUlQ6ICIgKyBzdHJp
bmdpZmllZE1lc3NhZ2UpOwotfQotCi0vLyBBcHBlbmRzIGEgbWVzc2FnZSBpbiB0aGUgdGVzdCBk
b2N1bWVudCB3aGV0aGVyIHRoZSBjb25kaXRpb24gaXMgdHJ1ZSBvciBub3QuCi1JbnNwZWN0b3JU
ZXN0LmV4cGVjdFRoYXQgPSBmdW5jdGlvbihjb25kaXRpb24sIG1lc3NhZ2UpCi17Ci0gICAgdmFy
IHByZWZpeCA9IGNvbmRpdGlvbiA/ICJQQVNTIiA6ICJGQUlMIjsKLSAgICB2YXIgc3RyaW5naWZp
ZWRNZXNzYWdlID0gdHlwZW9mIG1lc3NhZ2UgIT09ICJvYmplY3QiID8gbWVzc2FnZSA6IEpTT04u
c3RyaW5naWZ5KG1lc3NhZ2UpOwotICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHByZWZpeCAr
ICI6ICIgKyBzdHJpbmdpZmllZE1lc3NhZ2UpOwotfQotCi0vLyBUaGlzIGZ1bmN0aW9uIHNob3Vs
ZCBvbmx5IGJlIHVzZWQgdG8gZGVidWcgdGVzdHMgYW5kIG5vdCB0byBwcm9kdWNlIG5vcm1hbCB0
ZXN0IG91dHB1dC4KLUluc3BlY3RvclRlc3QuZGVidWdMb2cgPSBmdW5jdGlvbihtZXNzYWdlKQot
ewotICAgIGlmIChJbnNwZWN0b3JUZXN0LmR1bXBNZXNzYWdlc1RvQ29uc29sZSkKLSAgICAgICAg
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LnVuYnVmZmVyZWRMb2coImRlYnVnTG9nOiAiICsgbWVzc2Fn
ZSk7Ci0KLSAgICB0aGlzLmV2YWx1YXRlSW5QYWdlKCJJbnNwZWN0b3JUZXN0UHJveHkuZGVidWdM
b2codW5lc2NhcGUoJyIgKyBlc2NhcGUoSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpICsgIicpKSIp
OwotfQotCi0vLyBBcHBlbmRzIGEgbWVzc2FnZSBpbiB0aGUgdGVzdCBkb2N1bWVudCBpZiB0aGVy
ZSB3YXMgYW4gZXJyb3IsIGFuZCBhdHRlbXB0cyB0byBjb21wbGV0ZSB0aGUgdGVzdC4KLUluc3Bl
Y3RvclRlc3QuZXhwZWN0Tm9FcnJvciA9IGZ1bmN0aW9uKGVycm9yKQotewotICAgIGlmIChlcnJv
cikgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUFJPVE9DT0wgRVJST1I6ICIgKyBlcnJv
cik7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Ci0gICAgICAgIHRocm93
ICJQUk9UT0NPTCBFUlJPUiI7Ci0gICAgfQotfQotCi1JbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVz
dCA9IGZ1bmN0aW9uKCkKLXsKLSAgICBpZiAoSW5zcGVjdG9yVGVzdC5kdW1wTWVzc2FnZXNUb0Nv
bnNvbGUpCi0gICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC51bmJ1ZmZlcmVkTG9nKCJJbnNw
ZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpIik7Ci0KLSAgICAvLyBXYWl0IGZvciByZXN1bHRzIHRv
IGJlIHJlc2VudCBiZWZvcmUgcmVxdWVzdGluZyBjb21wbGV0ZVRlc3QoKS4gT3RoZXJ3aXNlLCBt
ZXNzYWdlcyB3aWxsIGJlCi0gICAgLy8gcXVldWVkIGFmdGVyIHBlbmRpbmcgZGlzcGF0Y2hlcyBy
dW4gdG8gemVybyBhbmQgdGhlIHRlc3QgcGFnZSB3aWxsIHF1aXQgYmVmb3JlIHByb2Nlc3Npbmcg
dGhlbS4KLSAgICBpZiAodGhpcy5fdGVzdFBhZ2VJc1JlbG9hZGluZykgewotICAgICAgICB0aGlz
Ll9jb21wbGV0ZVRlc3RBZnRlclJlbG9hZCA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBJbnNwZWN0b3JCYWNrZW5kLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXModGhpcy5l
dmFsdWF0ZUluUGFnZS5iaW5kKHRoaXMsICJJbnNwZWN0b3JUZXN0UHJveHkuY29tcGxldGVUZXN0
KCkiKSk7Ci19Ci0KLUluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UgPSBmdW5jdGlvbihjb2Rl
U3RyaW5nLCBjYWxsYmFjaykKLXsKLSAgICAvLyBJZiB3ZSBsb2FkIHRoaXMgcGFnZSBvdXRzaWRl
IG9mIHRoZSBpbnNwZWN0b3IsIG9yIGhpdCBhbiBlYXJseSBlcnJvciB3aGVuIGxvYWRpbmcKLSAg
ICAvLyB0aGUgdGVzdCBmcm9udGVuZCwgdGhlbiBkZWZlciBldmFsdWF0aW5nIHRoZSBjb21tYW5k
cyAoaW5kZWZpbml0ZWx5IGluIHRoZSBmb3JtZXIgY2FzZSkuCi0gICAgaWYgKCF3aW5kb3cuUnVu
dGltZUFnZW50KSB7Ci0gICAgICAgIHRoaXMuX29yaWdpbmFsQ29uc29sZU1ldGhvZHNbImVycm9y
Il0oIlRyaWVkIHRvIGV2YWx1YXRlIGluIHRlc3QgcGFnZSwgYnV0IGNvbm5lY3Rpb24gbm90IHll
dCBlc3RhYmxpc2hlZDoiLCBjb2RlU3RyaW5nKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZS5pbnZva2Uoe2V4cHJlc3Npb246IGNvZGVTdHJpbmcs
IG9iamVjdEdyb3VwOiAidGVzdCIsIGluY2x1ZGVDb21tYW5kTGluZUFQSTogZmFsc2V9LCBjYWxs
YmFjayk7Ci19Ci0KLUluc3BlY3RvclRlc3QuYWRkUmVzdWx0ID0gZnVuY3Rpb24odGV4dCkKLXsK
LSAgICB0aGlzLl9yZXN1bHRzLnB1c2godGV4dCk7Ci0KLSAgICBpZiAoSW5zcGVjdG9yVGVzdC5k
dW1wTWVzc2FnZXNUb0NvbnNvbGUpCi0gICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC51bmJ1
ZmZlcmVkTG9nKCJhZGRSZXN1bHQ6ICIgKyB0ZXh0KTsKLQotICAgIGlmICghdGhpcy5fdGVzdFBh
Z2VJc1JlbG9hZGluZykKLSAgICAgICAgdGhpcy5ldmFsdWF0ZUluUGFnZSgiSW5zcGVjdG9yVGVz
dFByb3h5LmFkZFJlc3VsdCh1bmVzY2FwZSgnIiArIGVzY2FwZSh0ZXh0KSArICInKSkiKTsKLX0K
LQotSW5zcGVjdG9yVGVzdC5fcmVzZW5kUmVzdWx0cyA9IGZ1bmN0aW9uKCkKLXsKLSAgICBjb25z
b2xlLmFzc2VydCh0aGlzLl9zaG91bGRSZXNlbmRSZXN1bHRzKTsKLSAgICB0aGlzLl9zaG91bGRS
ZXNlbmRSZXN1bHRzID0gZmFsc2U7Ci0KLSAgICBmb3IgKHZhciByZXN1bHQgb2YgdGhpcy5fcmVz
dWx0cykKLSAgICAgICAgdGhpcy5ldmFsdWF0ZUluUGFnZSgiSW5zcGVjdG9yVGVzdFByb3h5LmFk
ZFJlc3VsdCh1bmVzY2FwZSgnIiArIGVzY2FwZShyZXN1bHQpICsgIicpKSIpOwotfQotCi1JbnNw
ZWN0b3JUZXN0LnRlc3RQYWdlRGlkTG9hZCA9IGZ1bmN0aW9uKCkKLXsKLSAgICB0aGlzLl90ZXN0
UGFnZUlzUmVsb2FkaW5nID0gZmFsc2U7Ci0gICAgdGhpcy5fcmVzZW5kUmVzdWx0cygpOwotCi0g
ICAgdGhpcy5ldmVudERpc3BhdGNoZXIuZGlzcGF0Y2hFdmVudChJbnNwZWN0b3JUZXN0LkV2ZW50
RGlzcGF0Y2hlci5FdmVudC5UZXN0UGFnZURpZExvYWQpOwotCi0gICAgaWYgKHRoaXMuX2NvbXBs
ZXRlVGVzdEFmdGVyUmVsb2FkKQotICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgp
OwotfQotCi1JbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2UgPSBmdW5jdGlvbihzaG91bGRJZ25vcmVD
YWNoZSkKLXsKLSAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fdGVzdFBhZ2VJc1JlbG9hZGluZyk7
Ci0gICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3Rlc3RQYWdlUmVsb2FkZWRPbmNlKTsKLQotICAg
IHRoaXMuX3Rlc3RQYWdlSXNSZWxvYWRpbmcgPSB0cnVlOwotCi0gICAgcmV0dXJuIFBhZ2VBZ2Vu
dC5yZWxvYWQoISFzaG91bGRJZ25vcmVDYWNoZSkKLSAgICAgICAgLnRoZW4oZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICB0aGlzLl9zaG91bGRSZXNlbmRSZXN1bHRzID0gdHJ1ZTsKLSAgICAgICAg
ICAgIHRoaXMuX3Rlc3RQYWdlUmVsb2FkZWRPbmNlID0gdHJ1ZTsKLQotICAgICAgICAgICAgcmV0
dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpKTsKLX0KLQot
SW5zcGVjdG9yVGVzdC5yZXBvcnRVbmNhdWdodEV4Y2VwdGlvbiA9IGZ1bmN0aW9uKG1lc3NhZ2Us
IHVybCwgbGluZU51bWJlcikKLXsKLSAgICB2YXIgcmVzdWx0ID0gIlVuY2F1Z2h0IGV4Y2VwdGlv
biBpbiBpbnNwZWN0b3IgcGFnZTogIiArIG1lc3NhZ2UgKyAiIFsiICsgdXJsICsgIjoiICsgbGlu
ZU51bWJlciArICJdIjsKLQotICAgIC8vIElmIHRoZSBjb25uZWN0aW9uIHRvIHRoZSB0ZXN0IHBh
Z2UgaXMgbm90IHNldCB1cCwgdGhlbiBqdXN0IGR1bXAgdG8gY29uc29sZSBhbmQgZ2l2ZSB1cC4K
LSAgICAvLyBFcnJvcnMgZW5jb3VudGVyZWQgdGhpcyBlYXJseSBjYW4gYmUgZGVidWdnZWQgYnkg
bG9hZGluZyBUZXN0Lmh0bWwgaW4gYSBub3JtYWwgYnJvd3NlciBwYWdlLgotICAgIGlmICghSW5z
cGVjdG9yRnJvbnRlbmRIb3N0IHx8ICFJbnNwZWN0b3JCYWNrZW5kKSB7Ci0gICAgICAgIHRoaXMu
X29yaWdpbmFsQ29uc29sZU1ldGhvZHNbImVycm9yIl0ocmVzdWx0KTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotICAgIHRoaXMuYWRkUmVzdWx0KHJlc3VsdCk7Ci0gICAgdGhpcy5j
b21wbGV0ZVRlc3QoKTsKLSAgICAvLyBTdG9wIGRlZmF1bHQgaGFuZGxlciBzbyB3ZSBjYW4gZW1w
dHkgSW5zcGVjdG9yQmFja2VuZCdzIG1lc3NhZ2UgcXVldWUuCi0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLS8vIEluaXRpYWxpemUgcmVwb3J0aW5nIG1lY2hhbmlzbXMgYmVmb3JlIGxvYWRpbmcgdGhl
IHJlc3Qgb2YgdGhlIGluc3BlY3RvciBwYWdlLgotSW5zcGVjdG9yVGVzdC5fcmVzdWx0cyA9IFtd
OwotSW5zcGVjdG9yVGVzdC5fc2hvdWxkUmVzZW5kUmVzdWx0cyA9IHRydWU7Ci1JbnNwZWN0b3JU
ZXN0Ll9vcmlnaW5hbENvbnNvbGVNZXRob2RzID0ge307Cit3aW5kb3cuSW5zcGVjdG9yVGVzdCA9
IG5ldyBGcm9udGVuZFRlc3RIYXJuZXNzKCk7CiAKIC8vIENhdGNoIHN5bnRheCBlcnJvcnMsIHR5
cGUgZXJyb3JzLCBhbmQgb3RoZXIgZXhjZXB0aW9ucy4KIHdpbmRvdy5vbmVycm9yID0gSW5zcGVj
dG9yVGVzdC5yZXBvcnRVbmNhdWdodEV4Y2VwdGlvbi5iaW5kKEluc3BlY3RvclRlc3QpOwogCi0v
LyBSZWRpcmVjdCBmcm9udGVuZCBjb25zb2xlIG1ldGhvZHMgdG8gbG9nIG1lc3NhZ2VzIGludG8g
dGhlIHRlc3QgcmVzdWx0LgotKGZ1bmN0aW9uKCkgewotICAgIGZ1bmN0aW9uIGNyZWF0ZVByb3h5
Q29uc29sZUhhbmRsZXIodHlwZSkgewotICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCh0eXBlICsgIjogIiArIEFycmF5LmZyb20o
YXJndW1lbnRzKS5qb2luKCIgIikpOwotICAgICAgICB9OwotICAgIH0KLQotICAgIGZvciAodmFy
IHR5cGUgb2YgWyJsb2ciLCAiZXJyb3IiLCAiaW5mbyJdKSB7Ci0gICAgICAgIEluc3BlY3RvclRl
c3QuX29yaWdpbmFsQ29uc29sZU1ldGhvZHNbdHlwZV0gPSBjb25zb2xlW3R5cGVdLmJpbmQoY29u
c29sZSk7Ci0gICAgICAgIGNvbnNvbGVbdHlwZV0gPSBjcmVhdGVQcm94eUNvbnNvbGVIYW5kbGVy
KHR5cGUudG9VcHBlckNhc2UoKSk7Ci0gICAgfQotfSkoKTsKK0luc3BlY3RvclRlc3QucmVkaXJl
Y3RDb25zb2xlVG9UZXN0T3V0cHV0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODVjNDE1ZDg1NGQ5NGM0Mzg3NDllY2Q4
ZTg3Y2RhZmE3OWNkOGJjNi4uZTlkZDVhZDU3YjE2NzUzYWE2MzU2MjNiZTY1OGQ5MjFjMDlmOTVk
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSw1ICsxLDM4IEBACiAyMDE1LTA4LTE3ICBCcmlhbiBCdXJnICA8YmJ1cmdA
YXBwbGUuY29tPgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEluc3BlY3RvclRlc3Qgc2hvdWxk
IGJlIGEgc3ViY2xhc3Mgb2YgVGVzdEhhcm5lc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODA3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBJbnNwZWN0b3JUZXN0UHJveHkgdG8gVGVzdFBh
Z2UuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci10
ZXN0LmpzOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2RvbS9zaGFwZXMtdGVzdC5q
czoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXBsYXkvcmVwbGF5LXRlc3QuanM6
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0
LmpzOgorICAgICAgICAoVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplcik6CisgICAgICAgIChy
dW5UZXN0KToKKyAgICAgICAgKFRlc3RQYWdlLmNvbXBsZXRlVGVzdCk6CisgICAgICAgIChUZXN0
UGFnZS5kZWJ1Z0xvZyk6CisgICAgICAgIChUZXN0UGFnZS5hZGRSZXN1bHQpOgorICAgICAgICAo
VGVzdFBhZ2UucmVwb3J0VW5jYXVnaHRFeGNlcHRpb24pOgorICAgICAgICAoSW5zcGVjdG9yVGVz
dFByb3h5LnJlZ2lzdGVySW5pdGlhbGl6ZXIpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9y
VGVzdFByb3h5LmNvbXBsZXRlVGVzdCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3JUZXN0
UHJveHkuZGVidWdMb2cpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yVGVzdFByb3h5LmFk
ZFJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3JUZXN0UHJveHkucmVwb3J0VW5j
YXVnaHRFeGNlcHRpb24pOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9i
cmVha3BvaW50LWFjdGlvbi1ldmFsLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2Vy
L3Jlc291cmNlcy9icmVhay1vbi1leGNlcHRpb24tdGVzdHMuanM6CisgICAgICAgICogaW5zcGVj
dG9yL2RlYnVnZ2VyL3Jlc291cmNlcy9zY3JpcHQtZm9yLWJyZWFrcG9pbnQtYWN0aW9ucy5qczoK
KyAgICAgICAgKGJyZWFrcG9pbnRBY3Rpb25zKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdn
ZXIvc2VhcmNoLXNjcmlwdHMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVwbGF5L3dpbmRv
dy1uYXZpZ2F0b3ItcGx1Z2lucy1tZW1vaXplZC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci90
aW1lbGluZS9kZWJ1Z2dlci1wYXVzZWQtd2hpbGUtcmVjb3JkaW5nLmh0bWw6CisgICAgICAgICog
aW5zcGVjdG9yL3RpbWVsaW5lL2V4Y2VwdGlvbi1pbi1pbmplY3RlZC1zY3JpcHQtd2hpbGUtcmVj
b3JkaW5nLmh0bWw6CisKKzIwMTUtMDgtMTcgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+
CisKICAgICAgICAgV2ViIEluc3BlY3Rvcjogc3BsaXQgVGVzdFN0dWIuanMgaW50byBtdWx0aXBs
ZSBmaWxlcyBhbmQgbW9kZXJuaXplIGl0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDgwNzcKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXRlc3QuanMKaW5kZXggZDEwMjU1
ODcwYTE5NTYxZDc5NmVmODhmMmQ4NTk2MDA5MDM0ZTI0YS4uNzRkYTkyZTg2MWYxZmNkMGI2YjQw
ODVmYWQzZmM2MjM0MWFkYzM2MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci10ZXN0LmpzCkBAIC0xLDQgKzEsNCBA
QAotSW5zcGVjdG9yVGVzdFByb3h5LnJlZ2lzdGVySW5pdGlhbGl6ZXIoZnVuY3Rpb24oKSB7CitU
ZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyKGZ1bmN0aW9uKCkgewogCiBJbnNwZWN0b3JUZXN0
LnN0YXJ0VHJhY2luZ0JyZWFrcG9pbnRzID0gZnVuY3Rpb24oKQogewpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZG9tL3NoYXBlcy10ZXN0LmpzIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZG9tL3NoYXBlcy10ZXN0LmpzCmluZGV4IGJjY2U5
ZjE5YTM4Y2ZmY2I2OGZjZTNjZDJiZDkyNWMwNWY1M2YwMzAuLmJiYmVlYTk1NDVkNmI0NGRhNzUy
YzIwMGQ5ZGNiY2ZiOTA2NmE0ZDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2RvbS9zaGFwZXMtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9kb20vc2hhcGVzLXRlc3QuanMKQEAgLTEsNCArMSw0IEBACi1JbnNwZWN0b3JU
ZXN0UHJveHkucmVnaXN0ZXJJbml0aWFsaXplcihmdW5jdGlvbigpIHsKK1Rlc3RQYWdlLnJlZ2lz
dGVySW5pdGlhbGl6ZXIoZnVuY3Rpb24oKSB7CiAKIEluc3BlY3RvclRlc3QuU2hhcGVzID0gewog
ICAgIGdldFNoYXBlT3V0c2lkZUluZm9Gb3JTZWxlY3RvcjogZnVuY3Rpb24oc2VsZWN0b3IsIGNh
bGxiYWNrKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVw
bGF5L3JlcGxheS10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVw
bGF5L3JlcGxheS10ZXN0LmpzCmluZGV4IDMzM2Q3ODM0M2Q1ZWY3NDY5YWJhMDkxMjhhMGJhZTdm
NDRjMTgwNDYuLmM4ZjRhODM5ZGVkMGU3Y2Y1ODMxOGJiMjgwYzQ0ODM2ZjRlYzAzMmMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3JlcGxheS9yZXBsYXktdGVz
dC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXBsYXkvcmVwbGF5
LXRlc3QuanMKQEAgLTEsNCArMSw0IEBACi1JbnNwZWN0b3JUZXN0UHJveHkucmVnaXN0ZXJJbml0
aWFsaXplcihmdW5jdGlvbigpIHsKK1Rlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIoZnVuY3Rp
b24oKSB7CiAKIEluc3BlY3RvclRlc3QuUmVwbGF5ID0ge307CiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVz
dC5qcwppbmRleCAwMmRlYWIwNDg1YmQ2MDAyZTUwZDI0MGI5NTE4MmU2NDI4OTVjMmMxLi40OGRj
ZWEzMmJjNWM2ODU5M2NjNWViNjkzNTk2OWQ4MTc1MTdhYjk3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10
ZXN0LmpzCkBAIC0yNCwxMyArMjQsMTMgQEAKICAqLwogCiAvLyBUaGlzIG5hbWVzcGFjZSBpcyBp
bmplY3RlZCBpbnRvIGV2ZXJ5IHRlc3QgcGFnZS4gSXRzIGZ1bmN0aW9ucyBhcmUgaW52b2tlZCBi
eQotLy8gSW5zcGVjdG9yVGVzdCBtZXRob2RzIG9uIHRoZSBpbnNwZWN0b3IgcGFnZSB2aWEgUnVu
dGltZUFnZW50LmV2YWx1YXRlKCkgY2FsbHMuCi1JbnNwZWN0b3JUZXN0UHJveHkgPSB7fTsKLUlu
c3BlY3RvclRlc3RQcm94eS5faW5pdGlhbGl6ZXJzID0gW107CisvLyBJbnNwZWN0b3JUZXN0IG1l
dGhvZHMgb24gdGhlIGluc3BlY3RvciBwYWdlIHZpYSBhIFRlc3RIYXJuZXNzIHN1YmNsYXNzLgor
VGVzdFBhZ2UgPSB7fTsKK1Rlc3RQYWdlLl9pbml0aWFsaXplcnMgPSBbXTsKIAogLy8gSGVscGVy
IHNjcmlwdHMgbGlrZSBgZGVidWdnZXItdGVzdC5qc2AgbXVzdCByZWdpc3RlciB0aGVpciBpbml0
aWFsaXphdGlvbgogLy8gZnVuY3Rpb24gd2l0aCB0aGlzIG1ldGhvZCBzbyBpdCB3aWxsIGJlIG1h
cnNoYWxsZWQgdG8gdGhlIGluc3BlY3RvciBwYWdlLgotSW5zcGVjdG9yVGVzdFByb3h5LnJlZ2lz
dGVySW5pdGlhbGl6ZXIgPSBmdW5jdGlvbihpbml0aWFsaXplcikKK1Rlc3RQYWdlLnJlZ2lzdGVy
SW5pdGlhbGl6ZXIgPSBmdW5jdGlvbihpbml0aWFsaXplcikKIHsKICAgICBpZiAodHlwZW9mIGlu
aXRpYWxpemVyID09PSAiZnVuY3Rpb24iKQogICAgICAgICB0aGlzLl9pbml0aWFsaXplcnMucHVz
aChpbml0aWFsaXplci50b1N0cmluZygpKTsKQEAgLTg3LDcgKzg3LDcgQEAgZnVuY3Rpb24gcnVu
VGVzdCgpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2YXIgY29kZVN0cmluZ1RvRXZhbHVhdGUg
PSAiKCIgKyBydW5Jbml0aWFsaXphdGlvbk1ldGhvZHNJbkZyb250ZW5kLnRvU3RyaW5nKCkgKyAi
KShbIiArIEluc3BlY3RvclRlc3RQcm94eS5faW5pdGlhbGl6ZXJzICsgIl0pOyI7CisgICAgdmFy
IGNvZGVTdHJpbmdUb0V2YWx1YXRlID0gIigiICsgcnVuSW5pdGlhbGl6YXRpb25NZXRob2RzSW5G
cm9udGVuZC50b1N0cmluZygpICsgIikoWyIgKyBUZXN0UGFnZS5faW5pdGlhbGl6ZXJzICsgIl0p
OyI7CiAgICAgdGVzdFJ1bm5lci5ldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGNvZGVTdHJpbmdUb0V2
YWx1YXRlKTsKIAogICAgIC8vIGB0ZXN0YCByZWZlcnMgdG8gYSBmdW5jdGlvbiBkZWZpbmVkIGlu
IGdsb2JhbCBzY29wZSBpbiB0aGUgdGVzdCBIVE1MIHBhZ2UuCkBAIC05NSw3ICs5NSw3IEBAIGZ1
bmN0aW9uIHJ1blRlc3QoKQogICAgIHRlc3RSdW5uZXIuZXZhbHVhdGVJbldlYkluc3BlY3Rvcihj
b2RlU3RyaW5nVG9FdmFsdWF0ZSk7CiB9CiAKLUluc3BlY3RvclRlc3RQcm94eS5jb21wbGV0ZVRl
c3QgPSBmdW5jdGlvbigpCitUZXN0UGFnZS5jb21wbGV0ZVRlc3QgPSBmdW5jdGlvbigpCiB7CiAg
ICAgLy8gRG9uJ3QgdHJ5IHRvIHVzZSB0ZXN0UnVubmVyIGlmIHJ1bm5pbmcgdGhyb3VnaCB0aGUg
YnJvd3Nlci4KICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQpAQCAtMTEyLDEzICsxMTIsMTMg
QEAgSW5zcGVjdG9yVGVzdFByb3h5LmNvbXBsZXRlVGVzdCA9IGZ1bmN0aW9uKCkKIAogLy8gTG9n
cyBtZXNzYWdlIHRvIHVuYnVmZmVyZWQgcHJvY2VzcyBzdGRvdXQsIGF2b2lkaW5nIHRpbWVvdXRz
LgogLy8gb25seSBiZSB1c2VkIHRvIGRlYnVnIHRlc3RzIGFuZCBub3QgdG8gcHJvZHVjZSBub3Jt
YWwgdGVzdCBvdXRwdXQuCi1JbnNwZWN0b3JUZXN0UHJveHkuZGVidWdMb2cgPSBmdW5jdGlvbiht
ZXNzYWdlKQorVGVzdFBhZ2UuZGVidWdMb2cgPSBmdW5jdGlvbihtZXNzYWdlKQogewogICAgIHdp
bmRvdy5hbGVydChtZXNzYWdlKTsKIH0KIAogLy8gQWRkIGFuZCBjbGVhciB0ZXN0IG91dHB1dCBm
cm9tIHRoZSByZXN1bHRzIHdpbmRvdy4KLUluc3BlY3RvclRlc3RQcm94eS5hZGRSZXN1bHQgPSBm
dW5jdGlvbih0ZXh0KQorVGVzdFBhZ2UuYWRkUmVzdWx0ID0gZnVuY3Rpb24odGV4dCkKIHsKICAg
ICAvLyBGb3IgZWFybHkgZXJyb3JzIHRyaWdnZXJlZCB3aGVuIGxvYWRpbmcgdGhlIHRlc3QgcGFn
ZSwgd3JpdGUgdG8gc3RkZXJyLgogICAgIGlmICghZG9jdW1lbnQuYm9keSkgewpAQCAtMTM1LDEx
ICsxMzUsMTEgQEAgSW5zcGVjdG9yVGVzdFByb3h5LmFkZFJlc3VsdCA9IGZ1bmN0aW9uKHRleHQp
CiAgICAgdGhpcy5fcmVzdWx0RWxlbWVudC5hcHBlbmQodGV4dCwgZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiYnIiKSk7CiB9CiAKLUluc3BlY3RvclRlc3RQcm94eS5uZWVkVG9TYW5pdGl6ZVVuY2F1
Z2h0RXhjZXB0aW9uVVJMcyA9IGZhbHNlOworVGVzdFBhZ2UubmVlZFRvU2FuaXRpemVVbmNhdWdo
dEV4Y2VwdGlvblVSTHMgPSBmYWxzZTsKIAotSW5zcGVjdG9yVGVzdFByb3h5LnJlcG9ydFVuY2F1
Z2h0RXhjZXB0aW9uID0gZnVuY3Rpb24obWVzc2FnZSwgdXJsLCBsaW5lTnVtYmVyKQorVGVzdFBh
Z2UucmVwb3J0VW5jYXVnaHRFeGNlcHRpb24gPSBmdW5jdGlvbihtZXNzYWdlLCB1cmwsIGxpbmVO
dW1iZXIpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRlc3RQcm94eS5uZWVkVG9TYW5pdGl6ZVVuY2F1
Z2h0RXhjZXB0aW9uVVJMcykgeworICAgIGlmIChUZXN0UGFnZS5uZWVkVG9TYW5pdGl6ZVVuY2F1
Z2h0RXhjZXB0aW9uVVJMcykgewogICAgICAgICBpZiAodHlwZW9mIHVybCA9PSAic3RyaW5nIikg
ewogICAgICAgICAgICAgdmFyIGxhc3RTbGFzaCA9IHVybC5sYXN0SW5kZXhPZigiLyIpOwogICAg
ICAgICAgICAgdmFyIGxhc3RCYWNrU2xhc2ggPSB1cmwubGFzdEluZGV4T2YoIlxcIik7CkBAIC0x
NTAsOSArMTUwLDkgQEAgSW5zcGVjdG9yVGVzdFByb3h5LnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9u
ID0gZnVuY3Rpb24obWVzc2FnZSwgdXJsLCBsaW5lTnVtYmVyKQogICAgIH0KIAogICAgIHZhciBy
ZXN1bHQgPSAiVW5jYXVnaHQgZXhjZXB0aW9uIGluIHRlc3QgcGFnZTogIiArIG1lc3NhZ2UgKyAi
IFsiICsgdXJsICsgIjoiICsgbGluZU51bWJlciArICJdIjsKLSAgICBJbnNwZWN0b3JUZXN0UHJv
eHkuYWRkUmVzdWx0KHJlc3VsdCk7Ci0gICAgSW5zcGVjdG9yVGVzdFByb3h5LmNvbXBsZXRlVGVz
dCgpOworICAgIFRlc3RQYWdlLmFkZFJlc3VsdChyZXN1bHQpOworICAgIFRlc3RQYWdlLmNvbXBs
ZXRlVGVzdCgpOwogfQogCiAvLyBDYXRjaCBzeW50YXggZXJyb3JzLCB0eXBlIGVycm9ycywgYW5k
IG90aGVyIGV4Y2VwdGlvbnMuIFJ1biB0aGlzIGJlZm9yZSBsb2FkaW5nIG90aGVyIGZpbGVzLgot
d2luZG93Lm9uZXJyb3IgPSBJbnNwZWN0b3JUZXN0UHJveHkucmVwb3J0VW5jYXVnaHRFeGNlcHRp
b247Cit3aW5kb3cub25lcnJvciA9IFRlc3RQYWdlLnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0
aW9uLWV2YWwuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50
LWFjdGlvbi1ldmFsLmh0bWwKaW5kZXggYWM3MTUzYzNiMDIyNTEwMGRjZjIyOWFmM2U3ZjIzNDA5
Y2ZiMzEyYy4uNTE4ODkxMmY1OTNkZDMzODlhZjI5ZGI5N2U0ZjI5ZWVjZGY5NjU0YyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLWV2
YWwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1h
Y3Rpb24tZXZhbC5odG1sCkBAIC0xMyw4ICsxMyw4IEBAIGZ1bmN0aW9uIHJ1bkJyZWFrcG9pbnRB
Y3Rpb25zKCkKIAogZnVuY3Rpb24gYWN0aW9uKGEsIGIpCiB7Ci0gICAgSW5zcGVjdG9yVGVzdFBy
b3h5LmFkZFJlc3VsdCgiQnJlYWtwb2ludCBhY3Rpb24gZXZhbHVhdGVkLiBhOigiICsgYSArICIp
IGI6KCIgKyBiICsgIikiKTsKLSAgICBJbnNwZWN0b3JUZXN0UHJveHkuY29tcGxldGVUZXN0KCk7
CisgICAgVGVzdFBhZ2UuYWRkUmVzdWx0KCJCcmVha3BvaW50IGFjdGlvbiBldmFsdWF0ZWQuIGE6
KCIgKyBhICsgIikgYjooIiArIGIgKyAiKSIpOworICAgIFRlc3RQYWdlLmNvbXBsZXRlVGVzdCgp
OwogfQogCiBmdW5jdGlvbiB0ZXN0KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9yZXNvdXJjZXMvYnJlYWstb24tZXhjZXB0aW9uLXRlc3RzLmpzIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlcy9icmVhay1vbi1leGNlcHRpb24tdGVz
dHMuanMKaW5kZXggYWY5NWU0MjI0YzQ2MTcwZWNjMGIzMmU2NWQ5NjNhY2VmN2U3MmFkZC4uYWU5
ZTNiYTNjNmM2NjFlYjZkYjc4YzZmZTIyMGY4ODNlMmNmYTRlOCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlcy9icmVhay1vbi1leGNlcHRpb24tdGVz
dHMuanMKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlcy9icmVh
ay1vbi1leGNlcHRpb24tdGVzdHMuanMKQEAgLTEsNCArMSw0IEBACi1JbnNwZWN0b3JUZXN0UHJv
eHkubmVlZFRvU2FuaXRpemVVbmNhdWdodEV4Y2VwdGlvblVSTHMgPSB0cnVlOworVGVzdFBhZ2Uu
bmVlZFRvU2FuaXRpemVVbmNhdWdodEV4Y2VwdGlvblVSTHMgPSB0cnVlOwogCiB2YXIgYXJyID0g
WyAxLCAyLCAzIF07CiB2YXIgbWFwRGF0YSA9IFtbICJhIiwgYXJyIF1dOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlcy9zY3JpcHQtZm9yLWJyZWFr
cG9pbnQtYWN0aW9ucy5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJj
ZXMvc2NyaXB0LWZvci1icmVha3BvaW50LWFjdGlvbnMuanMKaW5kZXggZDBhMDZhODI5YzhjMWZj
Yjk4N2EzYmViM2NmNzQxMjFmYjE0OWEwZi4uZjExNjhjNDczNTIyMGY3YTkzMWNiNDE2OTJmYzE2
YmIyYzhiYzk3MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jl
c291cmNlcy9zY3JpcHQtZm9yLWJyZWFrcG9pbnQtYWN0aW9ucy5qcworKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvcmVzb3VyY2VzL3NjcmlwdC1mb3ItYnJlYWtwb2ludC1hY3Rp
b25zLmpzCkBAIC0xLDUgKzEsNSBAQAogZnVuY3Rpb24gYnJlYWtwb2ludEFjdGlvbnMoYSwgYikK
IHsKICAgICAvLyBPbmx5IHByZXNlcnZlIHRoaXMgbWVzc2FnZSBvbiB0aGUgY3VycmVudCB0ZXN0
IHBhZ2UgbG9hZC4KLSAgICBJbnNwZWN0b3JUZXN0UHJveHkuYWRkUmVzdWx0KCJpbnNpZGUgYnJl
YWtwb2ludEFjdGlvbnMgYTooIiArIGEgKyAiKSBiOigiICsgYiArICIpIik7CisgICAgVGVzdFBh
Z2UuYWRkUmVzdWx0KCJpbnNpZGUgYnJlYWtwb2ludEFjdGlvbnMgYTooIiArIGEgKyAiKSBiOigi
ICsgYiArICIpIik7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvc2VhcmNoLXNjcmlwdHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9z
ZWFyY2gtc2NyaXB0cy5odG1sCmluZGV4IDk1Njk1MGViYzYxNWRhNDdjMTQ2YWYxMWQ5N2FjZTk1
ZTAzOGMyOGQuLjI5NDZmMmQ5MDRkOWYzZWU5YzI5YjI3OTg1MTNiMTczYjNiMmM2NzcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zZWFyY2gtc2NyaXB0cy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zZWFyY2gtc2NyaXB0cy5odG1s
CkBAIC00NCw3ICs0NCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB9KTsKICAgICB9KTsK
IAotICAgIEluc3BlY3RvclRlc3QuZXZlbnREaXNwYXRjaGVyLmFkZEV2ZW50TGlzdGVuZXIoSW5z
cGVjdG9yVGVzdC5FdmVudERpc3BhdGNoZXIuRXZlbnQuVGVzdFBhZ2VEaWRMb2FkLCBmdW5jdGlv
bigpIHsKKyAgICBJbnNwZWN0b3JUZXN0LmFkZEV2ZW50TGlzdGVuZXIoRnJvbnRlbmRUZXN0SGFy
bmVzcy5FdmVudC5UZXN0UGFnZURpZExvYWQsIGZ1bmN0aW9uKCkgewogICAgICAgICBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJwZXJmb3JtRXZhbHMoKSIpOwogICAgIH0pOwogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVwbGF5L3dpbmRvdy1uYXZpZ2F0b3ItcGx1
Z2lucy1tZW1vaXplZC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3JlcGxheS93aW5kb3ct
bmF2aWdhdG9yLXBsdWdpbnMtbWVtb2l6ZWQuaHRtbAppbmRleCBmZjVkZWQ2YjIyM2ViYzI0MTQy
ODU4MjM4MDg2NTYyYjQ0YjQxYzVkLi4zYmIyYjM5N2UzNDUyZDhiMTA4YTMwZTllMWZjOTc3ZWQy
MjM4OGI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVwbGF5L3dpbmRvdy1u
YXZpZ2F0b3ItcGx1Z2lucy1tZW1vaXplZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9yZXBsYXkvd2luZG93LW5hdmlnYXRvci1wbHVnaW5zLW1lbW9pemVkLmh0bWwKQEAgLTc3LDEy
ICs3NywxMiBAQCBmdW5jdGlvbiBkdW1wTm9uZGV0ZXJtaW5pc3RpY1N0YXRlKCkKIC8vIFRoZXNl
IGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGluIHRoZSBwcmV2aW91cyBtYWluIGZyYW1lIHByaW9yIHRv
IHRoZSBpbml0aWFsCiAvLyBuYXZpZ2F0aW9uIHRoYXQgYmVnaW5zIGNhcHR1cmluZyBvciByZXBs
YXlpbmcuIENhcmVmdWwsIGhlYXAgc3RhdGUgd2lsbCBiZSBsb3N0LgogZnVuY3Rpb24gc2V0dXBQ
cmVDYXB0dXJlKCkgewotICAgIEluc3BlY3RvclRlc3RQcm94eS5hZGRSZXN1bHQoIkVuYWJsaW5n
IHBsdWdpbnMgYmVmb3JlIGNhcHR1cmUuIik7CisgICAgVGVzdFBhZ2UuYWRkUmVzdWx0KCJFbmFi
bGluZyBwbHVnaW5zIGJlZm9yZSBjYXB0dXJlLiIpOwogICAgIHRlc3RSdW5uZXIuc2V0UGx1Z2lu
c0VuYWJsZWQoZmFsc2UpOwogfQogCiBmdW5jdGlvbiBzZXR1cFByZVJlcGxheSgpIHsKLSAgICBJ
bnNwZWN0b3JUZXN0UHJveHkuYWRkUmVzdWx0KCJEaXNhYmxpbmcgcGx1Z2lucyBiZWZvcmUgcmVw
bGF5LiIpOworICAgIFRlc3RQYWdlLmFkZFJlc3VsdCgiRGlzYWJsaW5nIHBsdWdpbnMgYmVmb3Jl
IHJlcGxheS4iKTsKICAgICB0ZXN0UnVubmVyLnNldFBsdWdpbnNFbmFibGVkKHRydWUpOwogfQog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvZGVidWdnZXItcGF1
c2VkLXdoaWxlLXJlY29yZGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5l
L2RlYnVnZ2VyLXBhdXNlZC13aGlsZS1yZWNvcmRpbmcuaHRtbAppbmRleCBiNjczNDM4MTFhYTFl
MGNiOTM3OTYzMDYwNjc2YmU5YTQ5NjA0MDRkLi5lOWFjOWIzZjYxOGExZWNjYzJkYzZlNGVjYTEy
YTQyYzNjM2UwNDIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUv
ZGVidWdnZXItcGF1c2VkLXdoaWxlLXJlY29yZGluZy5odG1sCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci90aW1lbGluZS9kZWJ1Z2dlci1wYXVzZWQtd2hpbGUtcmVjb3JkaW5nLmh0bWwKQEAg
LTE1LDEzICsxNSwxMyBAQCBmdW5jdGlvbiBpbnN0YWxsVGltZXIoKQogCiBmdW5jdGlvbiBhZGQo
YSwgYikKIHsKLSAgICBJbnNwZWN0b3JUZXN0UHJveHkuYWRkUmVzdWx0KCJDYWxsaW5nIGFkZCgp
OiAiICsgYSArICIgKyAiICsgYik7CisgICAgVGVzdFBhZ2UuYWRkUmVzdWx0KCJDYWxsaW5nIGFk
ZCgpOiAiICsgYSArICIgKyAiICsgYik7CiAgICAgcmV0dXJuIGEgKyBiOwogfQogCiBmdW5jdGlv
biBtdWwoYSwgYikKIHsKLSAgICBJbnNwZWN0b3JUZXN0UHJveHkuYWRkUmVzdWx0KCJDYWxsaW5n
IG11bCgpOiAiICsgYSArICIgKiAiICsgYik7CisgICAgVGVzdFBhZ2UuYWRkUmVzdWx0KCJDYWxs
aW5nIG11bCgpOiAiICsgYSArICIgKiAiICsgYik7CiAgICAgcmV0dXJuIGEgKiBiOwogfQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvZXhjZXB0aW9uLWluLWlu
amVjdGVkLXNjcmlwdC13aGlsZS1yZWNvcmRpbmcuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci90aW1lbGluZS9leGNlcHRpb24taW4taW5qZWN0ZWQtc2NyaXB0LXdoaWxlLXJlY29yZGluZy5o
dG1sCmluZGV4IDliNWZjZjkzYTQyNTg5MzNkYzJiM2VlZTc3MWI4YzUxMjQzMzZiZDMuLjE5ZTM3
YzgwYzQ0ZmJhZjllMThlODdkNzhmZDJhN2M1N2FlNzI1NDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci90aW1lbGluZS9leGNlcHRpb24taW4taW5qZWN0ZWQtc2NyaXB0LXdoaWxl
LXJlY29yZGluZy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9leGNl
cHRpb24taW4taW5qZWN0ZWQtc2NyaXB0LXdoaWxlLXJlY29yZGluZy5odG1sCkBAIC0xNSwxMyAr
MTUsMTMgQEAgZnVuY3Rpb24gaW5zdGFsbFRpbWVyKCkKIAogZnVuY3Rpb24gYWRkKGEsIGIpCiB7
Ci0gICAgSW5zcGVjdG9yVGVzdFByb3h5LmFkZFJlc3VsdCgiQ2FsbGluZyBhZGQoKTogIiArIGEg
KyAiICsgIiArIGIpOworICAgIFRlc3RQYWdlLmFkZFJlc3VsdCgiQ2FsbGluZyBhZGQoKTogIiAr
IGEgKyAiICsgIiArIGIpOwogICAgIHJldHVybiBhICsgYjsKIH0KIAogZnVuY3Rpb24gbXVsKGEs
IGIpCiB7Ci0gICAgSW5zcGVjdG9yVGVzdFByb3h5LmFkZFJlc3VsdCgiQ2FsbGluZyBtdWwoKTog
IiArIGEgKyAiICogIiArIGIpOworICAgIFRlc3RQYWdlLmFkZFJlc3VsdCgiQ2FsbGluZyBtdWwo
KTogIiArIGEgKyAiICogIiArIGIpOwogICAgIHJldHVybiBhICogYjsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259194</attachid>
            <date>2015-08-17 15:05:28 -0700</date>
            <delta_ts>2015-08-19 10:33:55 -0700</delta_ts>
            <desc>Proposed Fix (EWS)</desc>
            <filename>bug-148079-20150817150526.patch</filename>
            <type>text/plain</type>
            <size>30196</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBh
NDA0NmFjY2U5NTU5MjNlZTNjMTM1MzMxMDZlZThmZjI4ZjhlNDA4Li5lOTg0YTEyN2FhZDdhNWY2
ZjAxZmZiODk1NzgyODJmYzhjMGJjODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw0OCBAQAogMjAxNS0wOC0xNyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JUZXN0IHNob3VsZCBiZSBhIHN1YmNsYXNz
IG9mIFRlc3RIYXJuZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDgwNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBFeHRyYWN0IHRoZSBmcm9udGVuZCB0ZXN0IGhhcm5lc3MgaW50byBhIHN1YmNsYXNz
LiBEZWxldGUgc29tZSBjb2RlIHRoYXQKKyAgICAgICAgaXMgbm93IHJlZHVuZGFudC4gU3ByaW5r
bGUgc29tZSBFUzYgc3ludGF4IHdoZXJlIHBvc3NpYmxlLgorCisgICAgICAgIFJld3JpdGUgdGhl
IGNvZGUgdGhhdCByZWRpcmVjdHMgdGhlIEluc3BlY3RvciBwYWdlJ3MgY29uc29sZSBtZXNzYWdl
cyB0bworICAgICAgICB0aGUgdGVzdCBwYWdlLCBzaW5jZSBpdCBkaWRuJ3QgYXBwZWFyIHRvIHdv
cmsgYW55IG1vcmUuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QuaHRtbDoKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QvRnJvbnRlbmRUZXN0SGFybmVzcy5qczogQWRkZWQuCisg
ICAgICAgIChGcm9udGVuZFRlc3RIYXJuZXNzKToKKyAgICAgICAgKEZyb250ZW5kVGVzdEhhcm5l
c3MucHJvdG90eXBlLmNvbXBsZXRlVGVzdCk6CisgICAgICAgIChGcm9udGVuZFRlc3RIYXJuZXNz
LnByb3RvdHlwZS5hZGRSZXN1bHQpOgorICAgICAgICAoRnJvbnRlbmRUZXN0SGFybmVzcy5wcm90
b3R5cGUuZGVidWdMb2cpOgorICAgICAgICAoRnJvbnRlbmRUZXN0SGFybmVzcy5wcm90b3R5cGUu
ZXZhbHVhdGVJblBhZ2UpOgorICAgICAgICAoRnJvbnRlbmRUZXN0SGFybmVzcy5wcm90b3R5cGUu
ZXhwZWN0Tm9FcnJvcik6CisgICAgICAgIChGcm9udGVuZFRlc3RIYXJuZXNzLnByb3RvdHlwZS50
ZXN0UGFnZURpZExvYWQpOgorICAgICAgICAoRnJvbnRlbmRUZXN0SGFybmVzcy5wcm90b3R5cGUu
cmVsb2FkUGFnZSk6CisgICAgICAgIChGcm9udGVuZFRlc3RIYXJuZXNzLnByb3RvdHlwZS5yZWRp
cmVjdENvbnNvbGVUb1Rlc3RPdXRwdXQuY3JlYXRlUHJveHlDb25zb2xlSGFuZGxlcik6CisgICAg
ICAgIChGcm9udGVuZFRlc3RIYXJuZXNzLnByb3RvdHlwZS5yZWRpcmVjdENvbnNvbGVUb1Rlc3RP
dXRwdXQpOgorICAgICAgICAoRnJvbnRlbmRUZXN0SGFybmVzcy5wcm90b3R5cGUucmVwb3J0VW5j
YXVnaHRFeGNlcHRpb24pOgorICAgICAgICAoRnJvbnRlbmRUZXN0SGFybmVzcy5wcm90b3R5cGUu
X3Jlc2VuZFJlc3VsdHMpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzOgor
ICAgICAgICAoSW5zcGVjdG9yVGVzdC5FdmVudERpc3BhdGNoZXIucHJvdG90eXBlLmRpc3BhdGNo
RXZlbnQpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yVGVzdC5FdmVudERpc3BhdGNoZXIp
OiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yVGVzdC5sb2cpOiBEZWxldGVkLgorICAgICAg
ICAoSW5zcGVjdG9yVGVzdC5hc3NlcnQpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yVGVz
dC5leHBlY3RUaGF0KTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3RvclRlc3QuZGVidWdMb2cp
OiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yVGVzdC5leHBlY3ROb0Vycm9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UpOiBEZWxldGVkLgorICAgICAgICAoSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yVGVzdC5f
cmVzZW5kUmVzdWx0cyk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3JUZXN0LnRlc3RQYWdl
RGlkTG9hZCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2UpOiBE
ZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yVGVzdC5yZXBvcnRVbmNhdWdodEV4Y2VwdGlvbik6
IERlbGV0ZWQuCisKKzIwMTUtMDgtMTcgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
ICAgICAgICAgV2ViIEluc3BlY3Rvcjogc3BsaXQgVGVzdFN0dWIuanMgaW50byBtdWx0aXBsZSBm
aWxlcyBhbmQgbW9kZXJuaXplIGl0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDgwNzcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVGVzdC5odG1sCmluZGV4IDlkNDFkMzZiNTE1ZjI5YmYyMDU1OTY2OTk0MzIxNDUzM2Yx
Yjk0NjkuLjdmZGFlODY1MWQ5ZTQyYzRjYmM2ODQ2OGE1YmU1NDE1NGQ0NTA4NDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAorKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKQEAgLTMyLDYgKzMy
LDEwIEBACiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvV2ViSW5zcGVjdG9yLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iQmFzZS9PYmplY3QuanMiPjwvc2NyaXB0PgogCisgICAgPHNjcmlw
dCBzcmM9IlRlc3QvVGVzdEhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJU
ZXN0L0Zyb250ZW5kVGVzdEhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJU
ZXN0L1Rlc3RTdWl0ZS5qcyI+PC9zY3JpcHQ+CisKICAgICA8c2NyaXB0IHNyYz0iVGVzdC9UZXN0
LmpzIj48L3NjcmlwdD4KIAogICAgIDxzY3JpcHQgc3JjPSJCYXNlL0RPTVV0aWxpdGllcy5qcyI+
PC9zY3JpcHQ+CkBAIC0xNDIsNiArMTQ2LDEyIEBACiAKICAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+CiAgICAgICAgIFdlYkluc3BlY3Rvci5sb2FkZWQoKTsKKworICAgICAgICAv
LyBOb3QgcmVsaWFibGUgdW5sZXNzIGNvbnNvbGUgbWVzc2FnZXMgYXJlIGR1bXBlZCB0byBzdGRl
cnIuIFNlZSB3aWtpIGZvciBkZXRhaWxzLgorICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmR1bXBJ
bnNwZWN0b3JQcm90b2NvbE1lc3NhZ2VzID0gZmFsc2U7CisKKyAgICAgICAgLy8gU3luY2hyb25v
dXMgbG9nZ2luZyBtYXkgcHJvZHVjZSBtb3JlIG91dHB1dCBwcmlvciB0byBhIHRpbWVvdXQuCisg
ICAgICAgIEluc3BlY3RvclRlc3QuZm9yY2VTeW5jRGVidWdMb2dnaW5nID0gZmFsc2U7CiAgICAg
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvRnJvbnRlbmRUZXN0SGFybmVzcy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvRnJvbnRlbmRUZXN0SGFybmVzcy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kZWIyYmVjMWNjNGNkOGY4YzE3NmQxMTQ1MGE4OTNjZDM3ZWI1ODZkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9G
cm9udGVuZFRlc3RIYXJuZXNzLmpzCkBAIC0wLDAgKzEsMTcxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK0Zyb250
ZW5kVGVzdEhhcm5lc3MgPSBjbGFzcyBGcm9udGVuZFRlc3RIYXJuZXNzIGV4dGVuZHMgVGVzdEhh
cm5lc3MKK3sKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigpOworCisg
ICAgICAgIHRoaXMuX3Jlc3VsdHMgPSBbXTsKKyAgICAgICAgdGhpcy5fc2hvdWxkUmVzZW5kUmVz
dWx0cyA9IHRydWU7CisgICAgfQorCisgICAgLy8gVGVzdEhhcm5lc3MgT3ZlcnJpZGVzCisKKyAg
ICBjb21wbGV0ZVRlc3QoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuZm9yY2VTeW5jRGVidWdM
b2dnaW5nKQorICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnVuYnVmZmVyZWRMb2co
IkZyb250ZW5kVGVzdEhhcm5lc3MuY29tcGxldGVUZXN0KCkiKTsKKworICAgICAgICAvLyBXYWl0
IGZvciByZXN1bHRzIHRvIGJlIHJlc2VudCBiZWZvcmUgcmVxdWVzdGluZyBjb21wbGV0ZVRlc3Qo
KS4gT3RoZXJ3aXNlLCBtZXNzYWdlcyB3aWxsIGJlCisgICAgICAgIC8vIHF1ZXVlZCBhZnRlciBw
ZW5kaW5nIGRpc3BhdGNoZXMgcnVuIHRvIHplcm8gYW5kIHRoZSB0ZXN0IHBhZ2Ugd2lsbCBxdWl0
IGJlZm9yZSBwcm9jZXNzaW5nIHRoZW0uCisgICAgICAgIGlmICh0aGlzLl90ZXN0UGFnZUlzUmVs
b2FkaW5nKSB7CisgICAgICAgICAgICB0aGlzLl9jb21wbGV0ZVRlc3RBZnRlclJlbG9hZCA9IHRy
dWU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBJbnNwZWN0b3JC
YWNrZW5kLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXModGhpcy5ldmFsdWF0ZUluUGFnZS5iaW5k
KHRoaXMsICJUZXN0UGFnZS5jb21wbGV0ZVRlc3QoKSIpKTsKKyAgICB9CisKKyAgICBhZGRSZXN1
bHQobWVzc2FnZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3Jlc3VsdHMucHVzaChtZXNzYWdlKTsK
KworICAgICAgICBpZiAodGhpcy5mb3JjZVN5bmNEZWJ1Z0xvZ2dpbmcpCisgICAgICAgICAgICBJ
bnNwZWN0b3JGcm9udGVuZEhvc3QudW5idWZmZXJlZExvZygiYWRkUmVzdWx0OiAiICsgbWVzc2Fn
ZSk7CisKKyAgICAgICAgaWYgKCF0aGlzLl90ZXN0UGFnZUlzUmVsb2FkaW5nKQorICAgICAgICAg
ICAgdGhpcy5ldmFsdWF0ZUluUGFnZShgVGVzdFBhZ2UuYWRkUmVzdWx0KHVuZXNjYXBlKCIke2Vz
Y2FwZShtZXNzYWdlKX0iKSlgKTsKKyAgICB9CisKKyAgICBkZWJ1Z0xvZyhtZXNzYWdlKQorICAg
IHsKKyAgICAgICAgbGV0IHN0cmluZ2lmaWVkTWVzc2FnZSA9IHR5cGVvZiBtZXNzYWdlICE9PSAi
c3RyaW5nIiA/IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpIDogbWVzc2FnZTsKKyAgICAgICAgdGhp
cy5ldmFsdWF0ZUluUGFnZShgVGVzdFBhZ2UuZGVidWdMb2codW5lc2NhcGUoIiR7ZXNjYXBlKHN0
cmluZ2lmaWVkTWVzc2FnZSl9IikpO2ApOworICAgIH0KKworICAgIGV2YWx1YXRlSW5QYWdlKGV4
cHJlc3Npb24sIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgLy8gSWYgd2UgbG9hZCB0aGlzIHBh
Z2Ugb3V0c2lkZSBvZiB0aGUgaW5zcGVjdG9yLCBvciBoaXQgYW4gZWFybHkgZXJyb3Igd2hlbiBs
b2FkaW5nCisgICAgICAgIC8vIHRoZSB0ZXN0IGZyb250ZW5kLCB0aGVuIGRlZmVyIGV2YWx1YXRp
bmcgdGhlIGNvbW1hbmRzIChpbmRlZmluaXRlbHkgaW4gdGhlIGZvcm1lciBjYXNlKS4KKyAgICAg
ICAgaWYgKHRoaXMuX29yaWdpbmFsQ29uc29sZSAmJiAhd2luZG93LlJ1bnRpbWVBZ2VudCkgewor
ICAgICAgICAgICAgdGhpcy5fb3JpZ2luYWxDb25zb2xlWyJlcnJvciJdKCJUcmllZCB0byBldmFs
dWF0ZSBpbiB0ZXN0IHBhZ2UsIGJ1dCBjb25uZWN0aW9uIG5vdCB5ZXQgZXN0YWJsaXNoZWQ6Iiwg
ZXhwcmVzc2lvbik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBS
dW50aW1lQWdlbnQuZXZhbHVhdGUuaW52b2tlKHtleHByZXNzaW9uLCBvYmplY3RHcm91cDogInRl
c3QiLCBpbmNsdWRlQ29tbWFuZExpbmVBUEk6IGZhbHNlfSwgY2FsbGJhY2spOworICAgIH0KKwor
ICAgIC8vIEZyb250ZW5kIHRlc3Qtc3BlY2lmaWMgbWV0aG9kcy4KKworICAgIGV4cGVjdE5vRXJy
b3IoZXJyb3IpCisgICAgeworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKCJQUk9UT0NPTCBFUlJPUjogIiArIGVycm9yKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAgICB0aHJvdyAiUFJPVE9DT0wg
RVJST1IiOworICAgICAgICB9CisgICAgfQorCisgICAgdGVzdFBhZ2VEaWRMb2FkKCkKKyAgICB7
CisgICAgICAgIHRoaXMuX3Rlc3RQYWdlSXNSZWxvYWRpbmcgPSBmYWxzZTsKKyAgICAgICAgdGhp
cy5fcmVzZW5kUmVzdWx0cygpOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKEZyb250ZW5kVGVzdEhhcm5lc3MuRXZlbnQuVGVzdFBhZ2VEaWRMb2FkKTsKKworICAgICAg
ICBpZiAodGhpcy5fY29tcGxldGVUZXN0QWZ0ZXJSZWxvYWQpCisgICAgICAgICAgICB0aGlzLmNv
bXBsZXRlVGVzdCgpOworICAgIH0KKworICAgIHJlbG9hZFBhZ2Uoc2hvdWxkSWdub3JlQ2FjaGUp
CisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fdGVzdFBhZ2VJc1JlbG9hZGlu
Zyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl90ZXN0UGFnZVJlbG9hZGVkT25jZSk7
CisKKyAgICAgICAgdGhpcy5fdGVzdFBhZ2VJc1JlbG9hZGluZyA9IHRydWU7CisKKyAgICAgICAg
cmV0dXJuIFBhZ2VBZ2VudC5yZWxvYWQoISFzaG91bGRJZ25vcmVDYWNoZSkKKyAgICAgICAgICAg
IC50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRoaXMuX3Nob3VsZFJlc2VuZFJl
c3VsdHMgPSB0cnVlOworICAgICAgICAgICAgICAgIHRoaXMuX3Rlc3RQYWdlUmVsb2FkZWRPbmNl
ID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7
CisgICAgICAgICAgICB9LmJpbmQodGhpcykpOworICAgIH0KKworICAgIHJlZGlyZWN0Q29uc29s
ZVRvVGVzdE91dHB1dCgpCisgICAgeworICAgICAgICBsZXQgc2VsZiA9IHRoaXM7CisgICAgICAg
IGZ1bmN0aW9uIGNyZWF0ZVByb3h5Q29uc29sZUhhbmRsZXIodHlwZSkgeworICAgICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHNlbGYuYWRkUmVzdWx0KHR5cGUg
KyAiOiAiICsgQXJyYXkuZnJvbShhcmd1bWVudHMpLmpvaW4oIiAiKSk7CisgICAgICAgICAgICB9
OworICAgICAgICB9CisKKyAgICAgICAgbGV0IHJlZGlyZWN0ZWRNZXRob2RzID0ge307CisgICAg
ICAgIGZvciAobGV0IGtleSBpbiB3aW5kb3cuY29uc29sZSkgCisgICAgICAgICAgICByZWRpcmVj
dGVkTWV0aG9kc1trZXldID0gd2luZG93LmNvbnNvbGVba2V5XS5iaW5kKHdpbmRvdy5jb25zb2xl
KTsKKworICAgICAgICBmb3IgKGxldCB0eXBlIG9mIFsibG9nIiwgImVycm9yIiwgImluZm8iXSkK
KyAgICAgICAgICAgIHJlZGlyZWN0ZWRNZXRob2RzW3R5cGVdID0gY3JlYXRlUHJveHlDb25zb2xl
SGFuZGxlcih0eXBlLnRvVXBwZXJDYXNlKCkpOworCisgICAgICAgIHRoaXMuX29yaWdpbmFsQ29u
c29sZSA9IHdpbmRvdy5jb25zb2xlOworICAgICAgICB3aW5kb3cuY29uc29sZSA9IHJlZGlyZWN0
ZWRNZXRob2RzOworICAgIH0KKworICAgIHJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uKG1lc3NhZ2Us
IHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQorICAgIHsKKyAgICAgICAgbGV0IHJlc3Vs
dCA9IGBVbmNhdWdodCBleGNlcHRpb24gaW4gaW5zcGVjdG9yIHBhZ2U6ICR7bWVzc2FnZX0gWyR7
dXJsfToke2xpbmVOdW1iZXJ9OiR7Y29sdW1uTnVtYmVyfV1gOworCisgICAgICAgIC8vIElmIHRo
ZSBjb25uZWN0aW9uIHRvIHRoZSB0ZXN0IHBhZ2UgaXMgbm90IHNldCB1cCwgdGhlbiBqdXN0IGR1
bXAgdG8gY29uc29sZSBhbmQgZ2l2ZSB1cC4KKyAgICAgICAgLy8gRXJyb3JzIGVuY291bnRlcmVk
IHRoaXMgZWFybHkgY2FuIGJlIGRlYnVnZ2VkIGJ5IGxvYWRpbmcgVGVzdC5odG1sIGluIGEgbm9y
bWFsIGJyb3dzZXIgcGFnZS4KKyAgICAgICAgaWYgKHRoaXMuX29yaWdpbmFsQ29uc29sZSAmJiAo
IUluc3BlY3RvckZyb250ZW5kSG9zdCB8fCAhSW5zcGVjdG9yQmFja2VuZCkpIHsKKyAgICAgICAg
ICAgIHRoaXMuX29yaWdpbmFsQ29uc29sZVsiZXJyb3IiXShyZXN1bHQpOworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5hZGRSZXN1bHQocmVzdWx0
KTsKKyAgICAgICAgdGhpcy5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgLy8gU3RvcCBkZWZhdWx0
IGhhbmRsZXIgc28gd2UgY2FuIGVtcHR5IEluc3BlY3RvckJhY2tlbmQncyBtZXNzYWdlIHF1ZXVl
LgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBf
cmVzZW5kUmVzdWx0cygpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9zaG91
bGRSZXNlbmRSZXN1bHRzKTsKKyAgICAgICAgdGhpcy5fc2hvdWxkUmVzZW5kUmVzdWx0cyA9IGZh
bHNlOworCisgICAgICAgIGZvciAobGV0IHJlc3VsdCBvZiB0aGlzLl9yZXN1bHRzKQorICAgICAg
ICAgICAgdGhpcy5ldmFsdWF0ZUluUGFnZShgVGVzdFBhZ2UuYWRkUmVzdWx0KHVuZXNjYXBlKCIk
e2VzY2FwZShyZXN1bHQpfSIpKWApOworICAgIH0KK307CisKK0Zyb250ZW5kVGVzdEhhcm5lc3Mu
RXZlbnQgPSB7CisgICAgVGVzdFBhZ2VEaWRMb2FkOiAiZnJvbnRlbmQtdGVzdC10ZXN0LXBhZ2Ut
ZGlkLWxvYWQiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVGVzdC9UZXN0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
VGVzdC9UZXN0LmpzCmluZGV4IGEzYWE1MWEzZDA4NTZjYWNiNzI0NWQzMDgxMWVkMDlmNDA0YmEy
N2QuLjdjZTYyNmU2ZTQ2Mzg0ZGIzMDYwMzRhMGNmNWIwZDRkZmJiYTc3NDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVzdC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanMKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTQs
MTg2ICs5NCw5IEBAIFdlYkluc3BlY3Rvci5VSVN0cmluZyA9IGZ1bmN0aW9uKHN0cmluZykKIFdl
Ykluc3BlY3Rvci51cGRhdGVEb2NrZWRTdGF0ZSA9IGZ1bmN0aW9uKCkge307CiBXZWJJbnNwZWN0
b3IudXBkYXRlRG9ja2luZ0F2YWlsYWJpbGl0eSA9IGZ1bmN0aW9uKCkge307CiAKLS8vIEluc3Bl
Y3RvclRlc3QgY29udGFpbnMgZXh0cmEgbWV0aG9kcyB0aGF0IGFyZSBvbmx5IGF2YWlsYWJsZSB0
byB0ZXN0IGNvZGUgcnVubmluZwotLy8gaW4gdGhlIFdlYiBJbnNwZWN0b3IgcGFnZS4gVGhleSBy
ZWx5IG9uIGVxdWl2YWxlbnRzIGluIHRoZSBhY3R1YWwgdGVzdCBwYWdlCi0vLyB3aGljaCBhcmUg
cHJvdmlkZWQgYnkgYGluc3BlY3Rvci10ZXN0LmpzYC4KLUluc3BlY3RvclRlc3QgPSB7fTsKLQot
Ly8gVGhpcyBpcyB1c2VmdWwgZm9yIGRlYnVnZ2luZyBJbnNwZWN0b3IgdGVzdHMgYnkgc3luY2hy
b25vdXNseSBsb2dnaW5nIG1lc3NhZ2VzLgotSW5zcGVjdG9yVGVzdC5kdW1wTWVzc2FnZXNUb0Nv
bnNvbGUgPSBmYWxzZTsKLQotLy8gVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIHRoZSBmYWN0IHRo
YXQgaXQgd291bGQgYmUgaGFyZCB0byBzZXQgdXAgYSBjb25zdHJ1Y3RvciwKLS8vIHByb3RvdHlw
ZSwgYW5kIHByb3RvdHlwZSBjaGFpbiBmb3IgdGhlIHNpbmdsZXRvbiBJbnNwZWN0b3JUZXN0Lgot
SW5zcGVjdG9yVGVzdC5FdmVudERpc3BhdGNoZXIgPSBjbGFzcyBFdmVudERpc3BhdGNoZXIgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Ci17Ci0gICAgZGlzcGF0Y2hFdmVudChldmVudCkKLSAg
ICB7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKGV2ZW50KTsKLSAgICB9
Ci19OwotCi1JbnNwZWN0b3JUZXN0LkV2ZW50RGlzcGF0Y2hlci5FdmVudCA9IHsKLSAgICBUZXN0
UGFnZURpZExvYWQ6ICJpbnNwZWN0b3ItdGVzdC10ZXN0LXBhZ2UtZGlkLWxvYWQiCi19OwotCi1J
bnNwZWN0b3JUZXN0LmV2ZW50RGlzcGF0Y2hlciA9IG5ldyBJbnNwZWN0b3JUZXN0LkV2ZW50RGlz
cGF0Y2hlcjsKLQotLy8gTm90ZTogQWRkaXRpb25hbCBJbnNwZWN0b3JUZXN0IG1ldGhvZHMgYXJl
IGluY2x1ZGVkIG9uIGEgcGVyLXRlc3QgYmFzaXMgZnJvbQotLy8gZmlsZXMgbGlrZSBgZGVidWdn
ZXItdGVzdC5qc2AuCi0KLS8vIEFwcGVuZHMgYSBsb2cgbWVzc2FnZSBpbiB0aGUgdGVzdCBkb2N1
bWVudC4KLUluc3BlY3RvclRlc3QubG9nID0gZnVuY3Rpb24obWVzc2FnZSkKLXsKLSAgICB2YXIg
c3RyaW5naWZpZWRNZXNzYWdlID0gdHlwZW9mIG1lc3NhZ2UgIT09ICJvYmplY3QiID8gbWVzc2Fn
ZSA6IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpOwotICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KHN0cmluZ2lmaWVkTWVzc2FnZSk7Ci19Ci0KLS8vIEFwcGVuZHMgYSBtZXNzYWdlIGluIHRoZSB0
ZXN0IGRvY3VtZW50IG9ubHkgaWYgdGhlIGNvbmRpdGlvbiBpcyBmYWxzZS4KLUluc3BlY3RvclRl
c3QuYXNzZXJ0ID0gZnVuY3Rpb24oY29uZGl0aW9uLCBtZXNzYWdlKQotewotICAgIGlmIChjb25k
aXRpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIHZhciBzdHJpbmdpZmllZE1lc3NhZ2UgPSB0
eXBlb2YgbWVzc2FnZSAhPT0gIm9iamVjdCIgPyBtZXNzYWdlIDogSlNPTi5zdHJpbmdpZnkobWVz
c2FnZSk7Ci0gICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkFTU0VSVDogIiArIHN0cmluZ2lm
aWVkTWVzc2FnZSk7Ci19Ci0KLS8vIEFwcGVuZHMgYSBtZXNzYWdlIGluIHRoZSB0ZXN0IGRvY3Vt
ZW50IHdoZXRoZXIgdGhlIGNvbmRpdGlvbiBpcyB0cnVlIG9yIG5vdC4KLUluc3BlY3RvclRlc3Qu
ZXhwZWN0VGhhdCA9IGZ1bmN0aW9uKGNvbmRpdGlvbiwgbWVzc2FnZSkKLXsKLSAgICB2YXIgcHJl
Zml4ID0gY29uZGl0aW9uID8gIlBBU1MiIDogIkZBSUwiOwotICAgIHZhciBzdHJpbmdpZmllZE1l
c3NhZ2UgPSB0eXBlb2YgbWVzc2FnZSAhPT0gIm9iamVjdCIgPyBtZXNzYWdlIDogSlNPTi5zdHJp
bmdpZnkobWVzc2FnZSk7Ci0gICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocHJlZml4ICsgIjog
IiArIHN0cmluZ2lmaWVkTWVzc2FnZSk7Ci19Ci0KLS8vIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG9u
bHkgYmUgdXNlZCB0byBkZWJ1ZyB0ZXN0cyBhbmQgbm90IHRvIHByb2R1Y2Ugbm9ybWFsIHRlc3Qg
b3V0cHV0LgotSW5zcGVjdG9yVGVzdC5kZWJ1Z0xvZyA9IGZ1bmN0aW9uKG1lc3NhZ2UpCi17Ci0g
ICAgaWYgKEluc3BlY3RvclRlc3QuZHVtcE1lc3NhZ2VzVG9Db25zb2xlKQotICAgICAgICBJbnNw
ZWN0b3JGcm9udGVuZEhvc3QudW5idWZmZXJlZExvZygiZGVidWdMb2c6ICIgKyBtZXNzYWdlKTsK
LQotICAgIHRoaXMuZXZhbHVhdGVJblBhZ2UoIkluc3BlY3RvclRlc3RQcm94eS5kZWJ1Z0xvZyh1
bmVzY2FwZSgnIiArIGVzY2FwZShKU09OLnN0cmluZ2lmeShtZXNzYWdlKSkgKyAiJykpIik7Ci19
Ci0KLS8vIEFwcGVuZHMgYSBtZXNzYWdlIGluIHRoZSB0ZXN0IGRvY3VtZW50IGlmIHRoZXJlIHdh
cyBhbiBlcnJvciwgYW5kIGF0dGVtcHRzIHRvIGNvbXBsZXRlIHRoZSB0ZXN0LgotSW5zcGVjdG9y
VGVzdC5leHBlY3ROb0Vycm9yID0gZnVuY3Rpb24oZXJyb3IpCi17Ci0gICAgaWYgKGVycm9yKSB7
Ci0gICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQUk9UT0NPTCBFUlJPUjogIiArIGVycm9yKTsK
LSAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKLSAgICAgICAgdGhyb3cgIlBS
T1RPQ09MIEVSUk9SIjsKLSAgICB9Ci19Ci0KLUluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0ID0g
ZnVuY3Rpb24oKQotewotICAgIGlmIChJbnNwZWN0b3JUZXN0LmR1bXBNZXNzYWdlc1RvQ29uc29s
ZSkKLSAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnVuYnVmZmVyZWRMb2coIkluc3BlY3Rv
clRlc3QuY29tcGxldGVUZXN0KCkiKTsKLQotICAgIC8vIFdhaXQgZm9yIHJlc3VsdHMgdG8gYmUg
cmVzZW50IGJlZm9yZSByZXF1ZXN0aW5nIGNvbXBsZXRlVGVzdCgpLiBPdGhlcndpc2UsIG1lc3Nh
Z2VzIHdpbGwgYmUKLSAgICAvLyBxdWV1ZWQgYWZ0ZXIgcGVuZGluZyBkaXNwYXRjaGVzIHJ1biB0
byB6ZXJvIGFuZCB0aGUgdGVzdCBwYWdlIHdpbGwgcXVpdCBiZWZvcmUgcHJvY2Vzc2luZyB0aGVt
LgotICAgIGlmICh0aGlzLl90ZXN0UGFnZUlzUmVsb2FkaW5nKSB7Ci0gICAgICAgIHRoaXMuX2Nv
bXBsZXRlVGVzdEFmdGVyUmVsb2FkID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIEluc3BlY3RvckJhY2tlbmQucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyh0aGlzLmV2YWx1
YXRlSW5QYWdlLmJpbmQodGhpcywgIkluc3BlY3RvclRlc3RQcm94eS5jb21wbGV0ZVRlc3QoKSIp
KTsKLX0KLQotSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSA9IGZ1bmN0aW9uKGNvZGVTdHJp
bmcsIGNhbGxiYWNrKQotewotICAgIC8vIElmIHdlIGxvYWQgdGhpcyBwYWdlIG91dHNpZGUgb2Yg
dGhlIGluc3BlY3Rvciwgb3IgaGl0IGFuIGVhcmx5IGVycm9yIHdoZW4gbG9hZGluZwotICAgIC8v
IHRoZSB0ZXN0IGZyb250ZW5kLCB0aGVuIGRlZmVyIGV2YWx1YXRpbmcgdGhlIGNvbW1hbmRzIChp
bmRlZmluaXRlbHkgaW4gdGhlIGZvcm1lciBjYXNlKS4KLSAgICBpZiAoIXdpbmRvdy5SdW50aW1l
QWdlbnQpIHsKLSAgICAgICAgdGhpcy5fb3JpZ2luYWxDb25zb2xlTWV0aG9kc1siZXJyb3IiXSgi
VHJpZWQgdG8gZXZhbHVhdGUgaW4gdGVzdCBwYWdlLCBidXQgY29ubmVjdGlvbiBub3QgeWV0IGVz
dGFibGlzaGVkOiIsIGNvZGVTdHJpbmcpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
UnVudGltZUFnZW50LmV2YWx1YXRlLmludm9rZSh7ZXhwcmVzc2lvbjogY29kZVN0cmluZywgb2Jq
ZWN0R3JvdXA6ICJ0ZXN0IiwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJOiBmYWxzZX0sIGNhbGxiYWNr
KTsKLX0KLQotSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQgPSBmdW5jdGlvbih0ZXh0KQotewotICAg
IHRoaXMuX3Jlc3VsdHMucHVzaCh0ZXh0KTsKLQotICAgIGlmIChJbnNwZWN0b3JUZXN0LmR1bXBN
ZXNzYWdlc1RvQ29uc29sZSkKLSAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnVuYnVmZmVy
ZWRMb2coImFkZFJlc3VsdDogIiArIHRleHQpOwotCi0gICAgaWYgKCF0aGlzLl90ZXN0UGFnZUlz
UmVsb2FkaW5nKQotICAgICAgICB0aGlzLmV2YWx1YXRlSW5QYWdlKCJJbnNwZWN0b3JUZXN0UHJv
eHkuYWRkUmVzdWx0KHVuZXNjYXBlKCciICsgZXNjYXBlKHRleHQpICsgIicpKSIpOwotfQotCi1J
bnNwZWN0b3JUZXN0Ll9yZXNlbmRSZXN1bHRzID0gZnVuY3Rpb24oKQotewotICAgIGNvbnNvbGUu
YXNzZXJ0KHRoaXMuX3Nob3VsZFJlc2VuZFJlc3VsdHMpOwotICAgIHRoaXMuX3Nob3VsZFJlc2Vu
ZFJlc3VsdHMgPSBmYWxzZTsKLQotICAgIGZvciAodmFyIHJlc3VsdCBvZiB0aGlzLl9yZXN1bHRz
KQotICAgICAgICB0aGlzLmV2YWx1YXRlSW5QYWdlKCJJbnNwZWN0b3JUZXN0UHJveHkuYWRkUmVz
dWx0KHVuZXNjYXBlKCciICsgZXNjYXBlKHJlc3VsdCkgKyAiJykpIik7Ci19Ci0KLUluc3BlY3Rv
clRlc3QudGVzdFBhZ2VEaWRMb2FkID0gZnVuY3Rpb24oKQotewotICAgIHRoaXMuX3Rlc3RQYWdl
SXNSZWxvYWRpbmcgPSBmYWxzZTsKLSAgICB0aGlzLl9yZXNlbmRSZXN1bHRzKCk7Ci0KLSAgICB0
aGlzLmV2ZW50RGlzcGF0Y2hlci5kaXNwYXRjaEV2ZW50KEluc3BlY3RvclRlc3QuRXZlbnREaXNw
YXRjaGVyLkV2ZW50LlRlc3RQYWdlRGlkTG9hZCk7Ci0KLSAgICBpZiAodGhpcy5fY29tcGxldGVU
ZXN0QWZ0ZXJSZWxvYWQpCi0gICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Ci19
Ci0KLUluc3BlY3RvclRlc3QucmVsb2FkUGFnZSA9IGZ1bmN0aW9uKHNob3VsZElnbm9yZUNhY2hl
KQotewotICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl90ZXN0UGFnZUlzUmVsb2FkaW5nKTsKLSAg
ICBjb25zb2xlLmFzc2VydCghdGhpcy5fdGVzdFBhZ2VSZWxvYWRlZE9uY2UpOwotCi0gICAgdGhp
cy5fdGVzdFBhZ2VJc1JlbG9hZGluZyA9IHRydWU7Ci0KLSAgICByZXR1cm4gUGFnZUFnZW50LnJl
bG9hZCghIXNob3VsZElnbm9yZUNhY2hlKQotICAgICAgICAudGhlbihmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIHRoaXMuX3Nob3VsZFJlc2VuZFJlc3VsdHMgPSB0cnVlOwotICAgICAgICAgICAg
dGhpcy5fdGVzdFBhZ2VSZWxvYWRlZE9uY2UgPSB0cnVlOwotCi0gICAgICAgICAgICByZXR1cm4g
UHJvbWlzZS5yZXNvbHZlKG51bGwpOwotICAgICAgICB9LmJpbmQodGhpcykpOwotfQotCi1JbnNw
ZWN0b3JUZXN0LnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uID0gZnVuY3Rpb24obWVzc2FnZSwgdXJs
LCBsaW5lTnVtYmVyKQotewotICAgIHZhciByZXN1bHQgPSAiVW5jYXVnaHQgZXhjZXB0aW9uIGlu
IGluc3BlY3RvciBwYWdlOiAiICsgbWVzc2FnZSArICIgWyIgKyB1cmwgKyAiOiIgKyBsaW5lTnVt
YmVyICsgIl0iOwotCi0gICAgLy8gSWYgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHRlc3QgcGFnZSBp
cyBub3Qgc2V0IHVwLCB0aGVuIGp1c3QgZHVtcCB0byBjb25zb2xlIGFuZCBnaXZlIHVwLgotICAg
IC8vIEVycm9ycyBlbmNvdW50ZXJlZCB0aGlzIGVhcmx5IGNhbiBiZSBkZWJ1Z2dlZCBieSBsb2Fk
aW5nIFRlc3QuaHRtbCBpbiBhIG5vcm1hbCBicm93c2VyIHBhZ2UuCi0gICAgaWYgKCFJbnNwZWN0
b3JGcm9udGVuZEhvc3QgfHwgIUluc3BlY3RvckJhY2tlbmQpIHsKLSAgICAgICAgdGhpcy5fb3Jp
Z2luYWxDb25zb2xlTWV0aG9kc1siZXJyb3IiXShyZXN1bHQpOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotCi0gICAgdGhpcy5hZGRSZXN1bHQocmVzdWx0KTsKLSAgICB0aGlzLmNvbXBs
ZXRlVGVzdCgpOwotICAgIC8vIFN0b3AgZGVmYXVsdCBoYW5kbGVyIHNvIHdlIGNhbiBlbXB0eSBJ
bnNwZWN0b3JCYWNrZW5kJ3MgbWVzc2FnZSBxdWV1ZS4KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
Ly8gSW5pdGlhbGl6ZSByZXBvcnRpbmcgbWVjaGFuaXNtcyBiZWZvcmUgbG9hZGluZyB0aGUgcmVz
dCBvZiB0aGUgaW5zcGVjdG9yIHBhZ2UuCi1JbnNwZWN0b3JUZXN0Ll9yZXN1bHRzID0gW107Ci1J
bnNwZWN0b3JUZXN0Ll9zaG91bGRSZXNlbmRSZXN1bHRzID0gdHJ1ZTsKLUluc3BlY3RvclRlc3Qu
X29yaWdpbmFsQ29uc29sZU1ldGhvZHMgPSB7fTsKK3dpbmRvdy5JbnNwZWN0b3JUZXN0ID0gbmV3
IEZyb250ZW5kVGVzdEhhcm5lc3MoKTsKIAogLy8gQ2F0Y2ggc3ludGF4IGVycm9ycywgdHlwZSBl
cnJvcnMsIGFuZCBvdGhlciBleGNlcHRpb25zLgogd2luZG93Lm9uZXJyb3IgPSBJbnNwZWN0b3JU
ZXN0LnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uLmJpbmQoSW5zcGVjdG9yVGVzdCk7CiAKLS8vIFJl
ZGlyZWN0IGZyb250ZW5kIGNvbnNvbGUgbWV0aG9kcyB0byBsb2cgbWVzc2FnZXMgaW50byB0aGUg
dGVzdCByZXN1bHQuCi0oZnVuY3Rpb24oKSB7Ci0gICAgZnVuY3Rpb24gY3JlYXRlUHJveHlDb25z
b2xlSGFuZGxlcih0eXBlKSB7Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHR5cGUgKyAiOiAiICsgQXJyYXkuZnJvbShhcmd1
bWVudHMpLmpvaW4oIiAiKSk7Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAgZm9yICh2YXIgdHlw
ZSBvZiBbImxvZyIsICJlcnJvciIsICJpbmZvIl0pIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5f
b3JpZ2luYWxDb25zb2xlTWV0aG9kc1t0eXBlXSA9IGNvbnNvbGVbdHlwZV0uYmluZChjb25zb2xl
KTsKLSAgICAgICAgY29uc29sZVt0eXBlXSA9IGNyZWF0ZVByb3h5Q29uc29sZUhhbmRsZXIodHlw
ZS50b1VwcGVyQ2FzZSgpKTsKLSAgICB9Ci19KSgpOworSW5zcGVjdG9yVGVzdC5yZWRpcmVjdENv
bnNvbGVUb1Rlc3RPdXRwdXQoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1OWU5NTVjM2ZiMDY2Mzk0YWRkMWI2N2RiZmJm
NTI2YjhkMDk5YWIxLi5mYTRkMjZhNTBlZjY4NzFmNzU2N2I2OWQwM2JlM2UxMzg4MmJlOTNjIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDUgKzEsMzggQEAKIDIwMTUtMDgtMTcgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBs
ZS5jb20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW5zcGVjdG9yVGVzdCBzaG91bGQgYmUg
YSBzdWJjbGFzcyBvZiBUZXN0SGFybmVzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MDc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVuYW1lIEluc3BlY3RvclRlc3RQcm94eSB0byBUZXN0UGFnZS4K
KworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXRlc3Qu
anM6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZG9tL3NoYXBlcy10ZXN0LmpzOgor
ICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3JlcGxheS9yZXBsYXktdGVzdC5qczoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanM6
CisgICAgICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyKToKKyAgICAgICAgKHJ1blRl
c3QpOgorICAgICAgICAoVGVzdFBhZ2UuY29tcGxldGVUZXN0KToKKyAgICAgICAgKFRlc3RQYWdl
LmRlYnVnTG9nKToKKyAgICAgICAgKFRlc3RQYWdlLmFkZFJlc3VsdCk6CisgICAgICAgIChUZXN0
UGFnZS5yZXBvcnRVbmNhdWdodEV4Y2VwdGlvbik6CisgICAgICAgIChJbnNwZWN0b3JUZXN0UHJv
eHkucmVnaXN0ZXJJbml0aWFsaXplcik6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3JUZXN0
UHJveHkuY29tcGxldGVUZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3RvclRlc3RQcm94
eS5kZWJ1Z0xvZyk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3JUZXN0UHJveHkuYWRkUmVz
dWx0KTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3RvclRlc3RQcm94eS5yZXBvcnRVbmNhdWdo
dEV4Y2VwdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFr
cG9pbnQtYWN0aW9uLWV2YWwuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcmVz
b3VyY2VzL2JyZWFrLW9uLWV4Y2VwdGlvbi10ZXN0cy5qczoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZGVidWdnZXIvcmVzb3VyY2VzL3NjcmlwdC1mb3ItYnJlYWtwb2ludC1hY3Rpb25zLmpzOgorICAg
ICAgICAoYnJlYWtwb2ludEFjdGlvbnMpOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9z
ZWFyY2gtc2NyaXB0cy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9yZXBsYXkvd2luZG93LW5h
dmlnYXRvci1wbHVnaW5zLW1lbW9pemVkLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVs
aW5lL2RlYnVnZ2VyLXBhdXNlZC13aGlsZS1yZWNvcmRpbmcuaHRtbDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvdGltZWxpbmUvZXhjZXB0aW9uLWluLWluamVjdGVkLXNjcmlwdC13aGlsZS1yZWNvcmRp
bmcuaHRtbDoKKworMjAxNS0wOC0xNyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBzcGxpdCBUZXN0U3R1Yi5qcyBpbnRvIG11bHRpcGxlIGZp
bGVzIGFuZCBtb2Rlcm5pemUgaXQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0ODA3NwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItdGVzdC5qcwppbmRleCBkMTAyNTU4NzBh
MTk1NjFkNzk2ZWY4OGYyZDg1OTYwMDkwMzRlMjRhLi43NGRhOTJlODYxZjFmY2QwYjZiNDA4NWZh
ZDNmYzYyMzQxYWRjMzYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXRlc3QuanMKQEAgLTEsNCArMSw0IEBACi1J
bnNwZWN0b3JUZXN0UHJveHkucmVnaXN0ZXJJbml0aWFsaXplcihmdW5jdGlvbigpIHsKK1Rlc3RQ
YWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIoZnVuY3Rpb24oKSB7CiAKIEluc3BlY3RvclRlc3Quc3Rh
cnRUcmFjaW5nQnJlYWtwb2ludHMgPSBmdW5jdGlvbigpCiB7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kb20vc2hhcGVzLXRlc3QuanMgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kb20vc2hhcGVzLXRlc3QuanMKaW5kZXggYmNjZTlmMTlh
MzhjZmZjYjY4ZmNlM2NkMmJkOTI1YzA1ZjUzZjAzMC4uYmJiZWVhOTU0NWQ2YjQ0ZGE3NTJjMjAw
ZDlkY2JjZmI5MDY2YTRkNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZG9tL3NoYXBlcy10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2RvbS9zaGFwZXMtdGVzdC5qcwpAQCAtMSw0ICsxLDQgQEAKLUluc3BlY3RvclRlc3RQ
cm94eS5yZWdpc3RlckluaXRpYWxpemVyKGZ1bmN0aW9uKCkgeworVGVzdFBhZ2UucmVnaXN0ZXJJ
bml0aWFsaXplcihmdW5jdGlvbigpIHsKIAogSW5zcGVjdG9yVGVzdC5TaGFwZXMgPSB7CiAgICAg
Z2V0U2hhcGVPdXRzaWRlSW5mb0ZvclNlbGVjdG9yOiBmdW5jdGlvbihzZWxlY3RvciwgY2FsbGJh
Y2spCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXBsYXkv
cmVwbGF5LXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXBsYXkv
cmVwbGF5LXRlc3QuanMKaW5kZXggMzMzZDc4MzQzZDVlZjc0NjlhYmEwOTEyOGEwYmFlN2Y0NGMx
ODA0Ni4uYzhmNGE4MzlkZWQwZTdjZjU4MzE4YmIyODBjNDQ4MzZmNGVjMDMyYyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVwbGF5L3JlcGxheS10ZXN0Lmpz
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3JlcGxheS9yZXBsYXktdGVz
dC5qcwpAQCAtMSw0ICsxLDQgQEAKLUluc3BlY3RvclRlc3RQcm94eS5yZWdpc3RlckluaXRpYWxp
emVyKGZ1bmN0aW9uKCkgeworVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplcihmdW5jdGlvbigp
IHsKIAogSW5zcGVjdG9yVGVzdC5SZXBsYXkgPSB7fTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0Lmpz
CmluZGV4IDAyZGVhYjA0ODViZDYwMDJlNTBkMjQwYjk1MTgyZTY0Mjg5NWMyYzEuLjQ4ZGNlYTMy
YmM1YzY4NTkzY2M1ZWI2OTM1OTY5ZDgxNzUxN2FiOTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcworKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3Qu
anMKQEAgLTI0LDEzICsyNCwxMyBAQAogICovCiAKIC8vIFRoaXMgbmFtZXNwYWNlIGlzIGluamVj
dGVkIGludG8gZXZlcnkgdGVzdCBwYWdlLiBJdHMgZnVuY3Rpb25zIGFyZSBpbnZva2VkIGJ5Ci0v
LyBJbnNwZWN0b3JUZXN0IG1ldGhvZHMgb24gdGhlIGluc3BlY3RvciBwYWdlIHZpYSBSdW50aW1l
QWdlbnQuZXZhbHVhdGUoKSBjYWxscy4KLUluc3BlY3RvclRlc3RQcm94eSA9IHt9OwotSW5zcGVj
dG9yVGVzdFByb3h5Ll9pbml0aWFsaXplcnMgPSBbXTsKKy8vIEluc3BlY3RvclRlc3QgbWV0aG9k
cyBvbiB0aGUgaW5zcGVjdG9yIHBhZ2UgdmlhIGEgVGVzdEhhcm5lc3Mgc3ViY2xhc3MuCitUZXN0
UGFnZSA9IHt9OworVGVzdFBhZ2UuX2luaXRpYWxpemVycyA9IFtdOwogCiAvLyBIZWxwZXIgc2Ny
aXB0cyBsaWtlIGBkZWJ1Z2dlci10ZXN0LmpzYCBtdXN0IHJlZ2lzdGVyIHRoZWlyIGluaXRpYWxp
emF0aW9uCiAvLyBmdW5jdGlvbiB3aXRoIHRoaXMgbWV0aG9kIHNvIGl0IHdpbGwgYmUgbWFyc2hh
bGxlZCB0byB0aGUgaW5zcGVjdG9yIHBhZ2UuCi1JbnNwZWN0b3JUZXN0UHJveHkucmVnaXN0ZXJJ
bml0aWFsaXplciA9IGZ1bmN0aW9uKGluaXRpYWxpemVyKQorVGVzdFBhZ2UucmVnaXN0ZXJJbml0
aWFsaXplciA9IGZ1bmN0aW9uKGluaXRpYWxpemVyKQogewogICAgIGlmICh0eXBlb2YgaW5pdGlh
bGl6ZXIgPT09ICJmdW5jdGlvbiIpCiAgICAgICAgIHRoaXMuX2luaXRpYWxpemVycy5wdXNoKGlu
aXRpYWxpemVyLnRvU3RyaW5nKCkpOwpAQCAtODcsNyArODcsNyBAQCBmdW5jdGlvbiBydW5UZXN0
KCkKICAgICAgICAgfQogICAgIH0KIAotICAgIHZhciBjb2RlU3RyaW5nVG9FdmFsdWF0ZSA9ICIo
IiArIHJ1bkluaXRpYWxpemF0aW9uTWV0aG9kc0luRnJvbnRlbmQudG9TdHJpbmcoKSArICIpKFsi
ICsgSW5zcGVjdG9yVGVzdFByb3h5Ll9pbml0aWFsaXplcnMgKyAiXSk7IjsKKyAgICB2YXIgY29k
ZVN0cmluZ1RvRXZhbHVhdGUgPSAiKCIgKyBydW5Jbml0aWFsaXphdGlvbk1ldGhvZHNJbkZyb250
ZW5kLnRvU3RyaW5nKCkgKyAiKShbIiArIFRlc3RQYWdlLl9pbml0aWFsaXplcnMgKyAiXSk7IjsK
ICAgICB0ZXN0UnVubmVyLmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoY29kZVN0cmluZ1RvRXZhbHVh
dGUpOwogCiAgICAgLy8gYHRlc3RgIHJlZmVycyB0byBhIGZ1bmN0aW9uIGRlZmluZWQgaW4gZ2xv
YmFsIHNjb3BlIGluIHRoZSB0ZXN0IEhUTUwgcGFnZS4KQEAgLTk1LDcgKzk1LDcgQEAgZnVuY3Rp
b24gcnVuVGVzdCgpCiAgICAgdGVzdFJ1bm5lci5ldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGNvZGVT
dHJpbmdUb0V2YWx1YXRlKTsKIH0KIAotSW5zcGVjdG9yVGVzdFByb3h5LmNvbXBsZXRlVGVzdCA9
IGZ1bmN0aW9uKCkKK1Rlc3RQYWdlLmNvbXBsZXRlVGVzdCA9IGZ1bmN0aW9uKCkKIHsKICAgICAv
LyBEb24ndCB0cnkgdG8gdXNlIHRlc3RSdW5uZXIgaWYgcnVubmluZyB0aHJvdWdoIHRoZSBicm93
c2VyLgogICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCkBAIC0xMTIsMTMgKzExMiwxMyBAQCBJ
bnNwZWN0b3JUZXN0UHJveHkuY29tcGxldGVUZXN0ID0gZnVuY3Rpb24oKQogCiAvLyBMb2dzIG1l
c3NhZ2UgdG8gdW5idWZmZXJlZCBwcm9jZXNzIHN0ZG91dCwgYXZvaWRpbmcgdGltZW91dHMuCiAv
LyBvbmx5IGJlIHVzZWQgdG8gZGVidWcgdGVzdHMgYW5kIG5vdCB0byBwcm9kdWNlIG5vcm1hbCB0
ZXN0IG91dHB1dC4KLUluc3BlY3RvclRlc3RQcm94eS5kZWJ1Z0xvZyA9IGZ1bmN0aW9uKG1lc3Nh
Z2UpCitUZXN0UGFnZS5kZWJ1Z0xvZyA9IGZ1bmN0aW9uKG1lc3NhZ2UpCiB7CiAgICAgd2luZG93
LmFsZXJ0KG1lc3NhZ2UpOwogfQogCiAvLyBBZGQgYW5kIGNsZWFyIHRlc3Qgb3V0cHV0IGZyb20g
dGhlIHJlc3VsdHMgd2luZG93LgotSW5zcGVjdG9yVGVzdFByb3h5LmFkZFJlc3VsdCA9IGZ1bmN0
aW9uKHRleHQpCitUZXN0UGFnZS5hZGRSZXN1bHQgPSBmdW5jdGlvbih0ZXh0KQogewogICAgIC8v
IEZvciBlYXJseSBlcnJvcnMgdHJpZ2dlcmVkIHdoZW4gbG9hZGluZyB0aGUgdGVzdCBwYWdlLCB3
cml0ZSB0byBzdGRlcnIuCiAgICAgaWYgKCFkb2N1bWVudC5ib2R5KSB7CkBAIC0xMzUsMTEgKzEz
NSwxMSBAQCBJbnNwZWN0b3JUZXN0UHJveHkuYWRkUmVzdWx0ID0gZnVuY3Rpb24odGV4dCkKICAg
ICB0aGlzLl9yZXN1bHRFbGVtZW50LmFwcGVuZCh0ZXh0LCBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJiciIpKTsKIH0KIAotSW5zcGVjdG9yVGVzdFByb3h5Lm5lZWRUb1Nhbml0aXplVW5jYXVnaHRF
eGNlcHRpb25VUkxzID0gZmFsc2U7CitUZXN0UGFnZS5uZWVkVG9TYW5pdGl6ZVVuY2F1Z2h0RXhj
ZXB0aW9uVVJMcyA9IGZhbHNlOwogCi1JbnNwZWN0b3JUZXN0UHJveHkucmVwb3J0VW5jYXVnaHRF
eGNlcHRpb24gPSBmdW5jdGlvbihtZXNzYWdlLCB1cmwsIGxpbmVOdW1iZXIpCitUZXN0UGFnZS5y
ZXBvcnRVbmNhdWdodEV4Y2VwdGlvbiA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHVybCwgbGluZU51bWJl
cikKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGVzdFByb3h5Lm5lZWRUb1Nhbml0aXplVW5jYXVnaHRF
eGNlcHRpb25VUkxzKSB7CisgICAgaWYgKFRlc3RQYWdlLm5lZWRUb1Nhbml0aXplVW5jYXVnaHRF
eGNlcHRpb25VUkxzKSB7CiAgICAgICAgIGlmICh0eXBlb2YgdXJsID09ICJzdHJpbmciKSB7CiAg
ICAgICAgICAgICB2YXIgbGFzdFNsYXNoID0gdXJsLmxhc3RJbmRleE9mKCIvIik7CiAgICAgICAg
ICAgICB2YXIgbGFzdEJhY2tTbGFzaCA9IHVybC5sYXN0SW5kZXhPZigiXFwiKTsKQEAgLTE1MCw5
ICsxNTAsOSBAQCBJbnNwZWN0b3JUZXN0UHJveHkucmVwb3J0VW5jYXVnaHRFeGNlcHRpb24gPSBm
dW5jdGlvbihtZXNzYWdlLCB1cmwsIGxpbmVOdW1iZXIpCiAgICAgfQogCiAgICAgdmFyIHJlc3Vs
dCA9ICJVbmNhdWdodCBleGNlcHRpb24gaW4gdGVzdCBwYWdlOiAiICsgbWVzc2FnZSArICIgWyIg
KyB1cmwgKyAiOiIgKyBsaW5lTnVtYmVyICsgIl0iOwotICAgIEluc3BlY3RvclRlc3RQcm94eS5h
ZGRSZXN1bHQocmVzdWx0KTsKLSAgICBJbnNwZWN0b3JUZXN0UHJveHkuY29tcGxldGVUZXN0KCk7
CisgICAgVGVzdFBhZ2UuYWRkUmVzdWx0KHJlc3VsdCk7CisgICAgVGVzdFBhZ2UuY29tcGxldGVU
ZXN0KCk7CiB9CiAKIC8vIENhdGNoIHN5bnRheCBlcnJvcnMsIHR5cGUgZXJyb3JzLCBhbmQgb3Ro
ZXIgZXhjZXB0aW9ucy4gUnVuIHRoaXMgYmVmb3JlIGxvYWRpbmcgb3RoZXIgZmlsZXMuCi13aW5k
b3cub25lcnJvciA9IEluc3BlY3RvclRlc3RQcm94eS5yZXBvcnRVbmNhdWdodEV4Y2VwdGlvbjsK
K3dpbmRvdy5vbmVycm9yID0gVGVzdFBhZ2UucmVwb3J0VW5jYXVnaHRFeGNlcHRpb247CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1hY3Rpb24t
ZXZhbC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0
aW9uLWV2YWwuaHRtbAppbmRleCBhYzcxNTNjM2IwMjI1MTAwZGNmMjI5YWYzZTdmMjM0MDljZmIz
MTJjLi41MTg4OTEyZjU5M2RkMzM4OWFmMjlkYjk3ZTRmMjllZWNkZjk2NTRjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1hY3Rpb24tZXZhbC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlv
bi1ldmFsLmh0bWwKQEAgLTEzLDggKzEzLDggQEAgZnVuY3Rpb24gcnVuQnJlYWtwb2ludEFjdGlv
bnMoKQogCiBmdW5jdGlvbiBhY3Rpb24oYSwgYikKIHsKLSAgICBJbnNwZWN0b3JUZXN0UHJveHku
YWRkUmVzdWx0KCJCcmVha3BvaW50IGFjdGlvbiBldmFsdWF0ZWQuIGE6KCIgKyBhICsgIikgYjoo
IiArIGIgKyAiKSIpOwotICAgIEluc3BlY3RvclRlc3RQcm94eS5jb21wbGV0ZVRlc3QoKTsKKyAg
ICBUZXN0UGFnZS5hZGRSZXN1bHQoIkJyZWFrcG9pbnQgYWN0aW9uIGV2YWx1YXRlZC4gYTooIiAr
IGEgKyAiKSBiOigiICsgYiArICIpIik7CisgICAgVGVzdFBhZ2UuY29tcGxldGVUZXN0KCk7CiB9
CiAKIGZ1bmN0aW9uIHRlc3QoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL3Jlc291cmNlcy9icmVhay1vbi1leGNlcHRpb24tdGVzdHMuanMgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvcmVzb3VyY2VzL2JyZWFrLW9uLWV4Y2VwdGlvbi10ZXN0cy5q
cwppbmRleCBhZjk1ZTQyMjRjNDYxNzBlY2MwYjMyZTY1ZDk2M2FjZWY3ZTcyYWRkLi5hZTllM2Jh
M2M2YzY2MWViNmRiNzhjNmZlMjIwZjg4M2UyY2ZhNGU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvcmVzb3VyY2VzL2JyZWFrLW9uLWV4Y2VwdGlvbi10ZXN0cy5q
cworKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmVzb3VyY2VzL2JyZWFrLW9u
LWV4Y2VwdGlvbi10ZXN0cy5qcwpAQCAtMSw0ICsxLDQgQEAKLUluc3BlY3RvclRlc3RQcm94eS5u
ZWVkVG9TYW5pdGl6ZVVuY2F1Z2h0RXhjZXB0aW9uVVJMcyA9IHRydWU7CitUZXN0UGFnZS5uZWVk
VG9TYW5pdGl6ZVVuY2F1Z2h0RXhjZXB0aW9uVVJMcyA9IHRydWU7CiAKIHZhciBhcnIgPSBbIDEs
IDIsIDMgXTsKIHZhciBtYXBEYXRhID0gW1sgImEiLCBhcnIgXV07CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmVzb3VyY2VzL3NjcmlwdC1mb3ItYnJlYWtwb2lu
dC1hY3Rpb25zLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlcy9z
Y3JpcHQtZm9yLWJyZWFrcG9pbnQtYWN0aW9ucy5qcwppbmRleCBkMGEwNmE4MjljOGMxZmNiOTg3
YTNiZWIzY2Y3NDEyMWZiMTQ5YTBmLi5mMTE2OGM0NzM1MjIwZjdhOTMxY2I0MTY5MmZjMTZiYjJj
OGJjOTczIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmVzb3Vy
Y2VzL3NjcmlwdC1mb3ItYnJlYWtwb2ludC1hY3Rpb25zLmpzCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZXMvc2NyaXB0LWZvci1icmVha3BvaW50LWFjdGlvbnMu
anMKQEAgLTEsNSArMSw1IEBACiBmdW5jdGlvbiBicmVha3BvaW50QWN0aW9ucyhhLCBiKQogewog
ICAgIC8vIE9ubHkgcHJlc2VydmUgdGhpcyBtZXNzYWdlIG9uIHRoZSBjdXJyZW50IHRlc3QgcGFn
ZSBsb2FkLgotICAgIEluc3BlY3RvclRlc3RQcm94eS5hZGRSZXN1bHQoImluc2lkZSBicmVha3Bv
aW50QWN0aW9ucyBhOigiICsgYSArICIpIGI6KCIgKyBiICsgIikiKTsKKyAgICBUZXN0UGFnZS5h
ZGRSZXN1bHQoImluc2lkZSBicmVha3BvaW50QWN0aW9ucyBhOigiICsgYSArICIpIGI6KCIgKyBi
ICsgIikiKTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9z
ZWFyY2gtc2NyaXB0cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NlYXJj
aC1zY3JpcHRzLmh0bWwKaW5kZXggOTU2OTUwZWJjNjE1ZGE0N2MxNDZhZjExZDk3YWNlOTVlMDM4
YzI4ZC4uMjk0NmYyZDkwNGQ5ZjNlZTljMjliMjc5ODUxM2IxNzNiM2IyYzY3NyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NlYXJjaC1zY3JpcHRzLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NlYXJjaC1zY3JpcHRzLmh0bWwKQEAg
LTQ0LDcgKzQ0LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIH0pOwogICAgIH0pOwogCi0g
ICAgSW5zcGVjdG9yVGVzdC5ldmVudERpc3BhdGNoZXIuYWRkRXZlbnRMaXN0ZW5lcihJbnNwZWN0
b3JUZXN0LkV2ZW50RGlzcGF0Y2hlci5FdmVudC5UZXN0UGFnZURpZExvYWQsIGZ1bmN0aW9uKCkg
eworICAgIEluc3BlY3RvclRlc3QuYWRkRXZlbnRMaXN0ZW5lcihGcm9udGVuZFRlc3RIYXJuZXNz
LkV2ZW50LlRlc3RQYWdlRGlkTG9hZCwgZnVuY3Rpb24oKSB7CiAgICAgICAgIEluc3BlY3RvclRl
c3QuZXZhbHVhdGVJblBhZ2UoInBlcmZvcm1FdmFscygpIik7CiAgICAgfSk7CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXBsYXkvd2luZG93LW5hdmlnYXRvci1wbHVnaW5z
LW1lbW9pemVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVwbGF5L3dpbmRvdy1uYXZp
Z2F0b3ItcGx1Z2lucy1tZW1vaXplZC5odG1sCmluZGV4IGZmNWRlZDZiMjIzZWJjMjQxNDI4NTgy
MzgwODY1NjJiNDRiNDFjNWQuLjNiYjJiMzk3ZTM0NTJkOGIxMDhhMzBlOWUxZmM5NzdlZDIyMzg4
YjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXBsYXkvd2luZG93LW5hdmln
YXRvci1wbHVnaW5zLW1lbW9pemVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Jl
cGxheS93aW5kb3ctbmF2aWdhdG9yLXBsdWdpbnMtbWVtb2l6ZWQuaHRtbApAQCAtNzcsMTIgKzc3
LDEyIEBAIGZ1bmN0aW9uIGR1bXBOb25kZXRlcm1pbmlzdGljU3RhdGUoKQogLy8gVGhlc2UgZnVu
Y3Rpb25zIGFyZSBjYWxsZWQgaW4gdGhlIHByZXZpb3VzIG1haW4gZnJhbWUgcHJpb3IgdG8gdGhl
IGluaXRpYWwKIC8vIG5hdmlnYXRpb24gdGhhdCBiZWdpbnMgY2FwdHVyaW5nIG9yIHJlcGxheWlu
Zy4gQ2FyZWZ1bCwgaGVhcCBzdGF0ZSB3aWxsIGJlIGxvc3QuCiBmdW5jdGlvbiBzZXR1cFByZUNh
cHR1cmUoKSB7Ci0gICAgSW5zcGVjdG9yVGVzdFByb3h5LmFkZFJlc3VsdCgiRW5hYmxpbmcgcGx1
Z2lucyBiZWZvcmUgY2FwdHVyZS4iKTsKKyAgICBUZXN0UGFnZS5hZGRSZXN1bHQoIkVuYWJsaW5n
IHBsdWdpbnMgYmVmb3JlIGNhcHR1cmUuIik7CiAgICAgdGVzdFJ1bm5lci5zZXRQbHVnaW5zRW5h
YmxlZChmYWxzZSk7CiB9CiAKIGZ1bmN0aW9uIHNldHVwUHJlUmVwbGF5KCkgewotICAgIEluc3Bl
Y3RvclRlc3RQcm94eS5hZGRSZXN1bHQoIkRpc2FibGluZyBwbHVnaW5zIGJlZm9yZSByZXBsYXku
Iik7CisgICAgVGVzdFBhZ2UuYWRkUmVzdWx0KCJEaXNhYmxpbmcgcGx1Z2lucyBiZWZvcmUgcmVw
bGF5LiIpOwogICAgIHRlc3RSdW5uZXIuc2V0UGx1Z2luc0VuYWJsZWQodHJ1ZSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9kZWJ1Z2dlci1wYXVzZWQt
d2hpbGUtcmVjb3JkaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvZGVi
dWdnZXItcGF1c2VkLXdoaWxlLXJlY29yZGluZy5odG1sCmluZGV4IGI2NzM0MzgxMWFhMWUwY2I5
Mzc5NjMwNjA2NzZiZTlhNDk2MDQwNGQuLmU5YWM5YjNmNjE4YTFlY2NjMmRjNmU0ZWNhMTJhNDJj
M2MzZTA0MjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9kZWJ1
Z2dlci1wYXVzZWQtd2hpbGUtcmVjb3JkaW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3RpbWVsaW5lL2RlYnVnZ2VyLXBhdXNlZC13aGlsZS1yZWNvcmRpbmcuaHRtbApAQCAtMTUs
MTMgKzE1LDEzIEBAIGZ1bmN0aW9uIGluc3RhbGxUaW1lcigpCiAKIGZ1bmN0aW9uIGFkZChhLCBi
KQogewotICAgIEluc3BlY3RvclRlc3RQcm94eS5hZGRSZXN1bHQoIkNhbGxpbmcgYWRkKCk6ICIg
KyBhICsgIiArICIgKyBiKTsKKyAgICBUZXN0UGFnZS5hZGRSZXN1bHQoIkNhbGxpbmcgYWRkKCk6
ICIgKyBhICsgIiArICIgKyBiKTsKICAgICByZXR1cm4gYSArIGI7CiB9CiAKIGZ1bmN0aW9uIG11
bChhLCBiKQogewotICAgIEluc3BlY3RvclRlc3RQcm94eS5hZGRSZXN1bHQoIkNhbGxpbmcgbXVs
KCk6ICIgKyBhICsgIiAqICIgKyBiKTsKKyAgICBUZXN0UGFnZS5hZGRSZXN1bHQoIkNhbGxpbmcg
bXVsKCk6ICIgKyBhICsgIiAqICIgKyBiKTsKICAgICByZXR1cm4gYSAqIGI7CiB9CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9leGNlcHRpb24taW4taW5qZWN0
ZWQtc2NyaXB0LXdoaWxlLXJlY29yZGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Rp
bWVsaW5lL2V4Y2VwdGlvbi1pbi1pbmplY3RlZC1zY3JpcHQtd2hpbGUtcmVjb3JkaW5nLmh0bWwK
aW5kZXggOWI1ZmNmOTNhNDI1ODkzM2RjMmIzZWVlNzcxYjhjNTEyNDMzNmJkMy4uMTllMzdjODBj
NDRmYmFmOWUxOGU4N2Q3OGZkMmE3YzU3YWU3MjU0NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3RpbWVsaW5lL2V4Y2VwdGlvbi1pbi1pbmplY3RlZC1zY3JpcHQtd2hpbGUtcmVj
b3JkaW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL2V4Y2VwdGlv
bi1pbi1pbmplY3RlZC1zY3JpcHQtd2hpbGUtcmVjb3JkaW5nLmh0bWwKQEAgLTE1LDEzICsxNSwx
MyBAQCBmdW5jdGlvbiBpbnN0YWxsVGltZXIoKQogCiBmdW5jdGlvbiBhZGQoYSwgYikKIHsKLSAg
ICBJbnNwZWN0b3JUZXN0UHJveHkuYWRkUmVzdWx0KCJDYWxsaW5nIGFkZCgpOiAiICsgYSArICIg
KyAiICsgYik7CisgICAgVGVzdFBhZ2UuYWRkUmVzdWx0KCJDYWxsaW5nIGFkZCgpOiAiICsgYSAr
ICIgKyAiICsgYik7CiAgICAgcmV0dXJuIGEgKyBiOwogfQogCiBmdW5jdGlvbiBtdWwoYSwgYikK
IHsKLSAgICBJbnNwZWN0b3JUZXN0UHJveHkuYWRkUmVzdWx0KCJDYWxsaW5nIG11bCgpOiAiICsg
YSArICIgKiAiICsgYik7CisgICAgVGVzdFBhZ2UuYWRkUmVzdWx0KCJDYWxsaW5nIG11bCgpOiAi
ICsgYSArICIgKiAiICsgYik7CiAgICAgcmV0dXJuIGEgKiBiOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259376</attachid>
            <date>2015-08-19 10:34:01 -0700</date>
            <delta_ts>2022-03-01 02:46:36 -0800</delta_ts>
            <desc>Proposed Fix (arrow it)</desc>
            <filename>bug-148079-20150819103357.patch</filename>
            <type>text/plain</type>
            <size>36133</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBl
MTM3ODZmNjE2YzFlMjMxNmQ3OWRlNmIyYWI1ZmMyYzc2YmQyMTM2Li40ODE5MThhOWU3ZTRkMjE3
NGExNjllM2M3ZGQ1YTYwZDAwMjJmYTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1NiBAQAogMjAxNS0wOC0xOSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JUZXN0IHNob3VsZCBiZSBhIHN1YmNsYXNz
IG9mIFRlc3RIYXJuZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDgwNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBFeHRyYWN0IHRoZSBmcm9udGVuZCB0ZXN0IGhhcm5lc3MgaW50byBhIHN1YmNsYXNz
LiBEZWxldGUgc29tZSBjb2RlIHRoYXQKKyAgICAgICAgaXMgbm93IHJlZHVuZGFudC4gU3ByaW5r
bGUgc29tZSBFUzYgc3ludGF4IHdoZXJlIHBvc3NpYmxlLgorCisgICAgICAgIFJld3JpdGUgdGhl
IGNvZGUgdGhhdCByZWRpcmVjdHMgdGhlIEluc3BlY3RvciBwYWdlJ3MgY29uc29sZSBtZXNzYWdl
cyB0bworICAgICAgICB0aGUgdGVzdCBwYWdlLCBzaW5jZSBpdCBkaWRuJ3QgYXBwZWFyIHRvIHdv
cmsgYW55IG1vcmUuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QuaHRtbDogQWRkIGRl
YnVnIG9wdGlvbnMgaGVyZSwgYW5kIGEgd2lraSBsaW5rLgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVGVzdC9Gcm9udGVuZFRlc3RIYXJuZXNzLmpzOiBBZGRlZC4KKyAgICAgICAgKEZyb250ZW5k
VGVzdEhhcm5lc3MpOgorICAgICAgICAoRnJvbnRlbmRUZXN0SGFybmVzcy5wcm90b3R5cGUuY29t
cGxldGVUZXN0KToKKyAgICAgICAgKEZyb250ZW5kVGVzdEhhcm5lc3MucHJvdG90eXBlLmFkZFJl
c3VsdCk6CisgICAgICAgIChGcm9udGVuZFRlc3RIYXJuZXNzLnByb3RvdHlwZS5kZWJ1Z0xvZyk6
CisgICAgICAgIChGcm9udGVuZFRlc3RIYXJuZXNzLnByb3RvdHlwZS5ldmFsdWF0ZUluUGFnZSk6
CisgICAgICAgIChGcm9udGVuZFRlc3RIYXJuZXNzLnByb3RvdHlwZS5leHBlY3ROb0Vycm9yKToK
KyAgICAgICAgKEZyb250ZW5kVGVzdEhhcm5lc3MucHJvdG90eXBlLnRlc3RQYWdlRGlkTG9hZCk6
CisgICAgICAgIChGcm9udGVuZFRlc3RIYXJuZXNzLnByb3RvdHlwZS5yZWxvYWRQYWdlKToKKyAg
ICAgICAgKEZyb250ZW5kVGVzdEhhcm5lc3MucHJvdG90eXBlLnJlZGlyZWN0Q29uc29sZVRvVGVz
dE91dHB1dC5jcmVhdGVQcm94eUNvbnNvbGVIYW5kbGVyKToKKyAgICAgICAgKEZyb250ZW5kVGVz
dEhhcm5lc3MucHJvdG90eXBlLnJlZGlyZWN0Q29uc29sZVRvVGVzdE91dHB1dCk6CisgICAgICAg
IChGcm9udGVuZFRlc3RIYXJuZXNzLnByb3RvdHlwZS5yZXBvcnRVbmNhdWdodEV4Y2VwdGlvbik6
CisgICAgICAgIChGcm9udGVuZFRlc3RIYXJuZXNzLnByb3RvdHlwZS5fcmVzZW5kUmVzdWx0cyk6
CisgICAgICAgICogVXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IubG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5VSVN0cmluZyk6IEFycm93IGl0
LgorICAgICAgICAoV2ViSW5zcGVjdG9yLnVwZGF0ZURvY2tlZFN0YXRlKTogQXJyb3cgaXQuCisg
ICAgICAgIChXZWJJbnNwZWN0b3IudXBkYXRlRG9ja2luZ0F2YWlsYWJpbGl0eSk6IEFycm93IGl0
LgorICAgICAgICAoSW5zcGVjdG9yVGVzdC5FdmVudERpc3BhdGNoZXIucHJvdG90eXBlLmRpc3Bh
dGNoRXZlbnQpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yVGVzdC5FdmVudERpc3BhdGNo
ZXIpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yVGVzdC5sb2cpOiBEZWxldGVkLgorICAg
ICAgICAoSW5zcGVjdG9yVGVzdC5hc3NlcnQpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9y
VGVzdC5leHBlY3RUaGF0KTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3RvclRlc3QuZGVidWdM
b2cpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yVGVzdC5leHBlY3ROb0Vycm9yKTogRGVs
ZXRlZC4KKyAgICAgICAgKEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UpOiBEZWxldGVkLgorICAgICAgICAo
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yVGVz
dC5fcmVzZW5kUmVzdWx0cyk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3JUZXN0LnRlc3RQ
YWdlRGlkTG9hZCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2Up
OiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yVGVzdC5yZXBvcnRVbmNhdWdodEV4Y2VwdGlv
bik6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9UZXN0L1Rlc3RTdWl0ZS5qczog
Q2xlYW4gYW4gdW5uZWNlc3Nhcnkgc2VsZiA9IHRoaXMuCisgICAgICAgIChTeW5jVGVzdFN1aXRl
LnByb3RvdHlwZS5ydW5UZXN0Q2FzZXMpOgorICAgICAgICAoU3luY1Rlc3RTdWl0ZSk6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9UZXN0U3R1Yi5odG1sOiBBZGQgbWF0Y2hpbmcgbGluayB0byB3
aWtpLgorCisyMDE1LTA4LTE5ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IHNwbGl0IFRlc3RTdHViLmpzIGludG8gbXVsdGlwbGUgZmlsZXMg
YW5kIG1vZGVybml6ZSBpdAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ4MDc3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Rlc3QuaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Rlc3QuaHRtbAppbmRleCA5ZDQxZDM2YjUxNWYyOWJmMjA1NTk2Njk5NDMyMTQ1MzNmMWI5NDY5
Li44NWM3NmFjZDU5MDg2NzI3NDY2ZWJhZjU0NTI3ZWIyYjA4MjQ1ZDZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCkBAIC0zMiw2ICszMiwxMCBA
QAogICAgIDxzY3JpcHQgc3JjPSJCYXNlL1dlYkluc3BlY3Rvci5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IkJhc2UvT2JqZWN0LmpzIj48L3NjcmlwdD4KIAorICAgIDxzY3JpcHQgc3Jj
PSJUZXN0L1Rlc3RIYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVGVzdC9G
cm9udGVuZFRlc3RIYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVGVzdC9U
ZXN0U3VpdGUuanMiPjwvc2NyaXB0PgorCiAgICAgPHNjcmlwdCBzcmM9IlRlc3QvVGVzdC5qcyI+
PC9zY3JpcHQ+CiAKICAgICA8c2NyaXB0IHNyYz0iQmFzZS9ET01VdGlsaXRpZXMuanMiPjwvc2Ny
aXB0PgpAQCAtMTQyLDYgKzE0NiwxMyBAQAogCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgogICAgICAgICBXZWJJbnNwZWN0b3IubG9hZGVkKCk7CisKKyAgICAgICAgLy8gTm90
IHJlbGlhYmxlIHVubGVzcyBjb25zb2xlIG1lc3NhZ2VzIGFyZSBkdW1wZWQgdG8gc3RkZXJyLgor
ICAgICAgICAvLyBTZWUgd2lraSBmb3IgZGV0YWlscyA8aHR0cHM6Ly9odHRwOi8vdHJhYy53ZWJr
aXQub3JnL3dpa2kvV2ViSW5zcGVjdG9yRGVidWdnaW5nPi4KKyAgICAgICAgSW5zcGVjdG9yQmFj
a2VuZC5kdW1wSW5zcGVjdG9yUHJvdG9jb2xNZXNzYWdlcyA9IGZhbHNlOworCisgICAgICAgIC8v
IFN5bmNocm9ub3VzIGxvZ2dpbmcgbWF5IHByb2R1Y2UgbW9yZSBvdXRwdXQgcHJpb3IgdG8gYSB0
aW1lb3V0LgorICAgICAgICBJbnNwZWN0b3JUZXN0LmZvcmNlU3luY0RlYnVnTG9nZ2luZyA9IGZh
bHNlOwogICAgIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L0Zyb250ZW5kVGVzdEhhcm5lc3MuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L0Zyb250ZW5kVGVzdEhh
cm5lc3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzAxNzBmZjIwZDNhZThiOTEwMjAxOWY4NGY3Y2NkZDUxZGQ0
OWI0ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Rlc3QvRnJvbnRlbmRUZXN0SGFybmVzcy5qcwpAQCAtMCwwICsxLDE2OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCitGcm9udGVuZFRlc3RIYXJuZXNzID0gY2xhc3MgRnJvbnRlbmRUZXN0SGFybmVzcyBleHRl
bmRzIFRlc3RIYXJuZXNzCit7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3Vw
ZXIoKTsKKworICAgICAgICB0aGlzLl9yZXN1bHRzID0gW107CisgICAgICAgIHRoaXMuX3Nob3Vs
ZFJlc2VuZFJlc3VsdHMgPSB0cnVlOworICAgIH0KKworICAgIC8vIFRlc3RIYXJuZXNzIE92ZXJy
aWRlcworCisgICAgY29tcGxldGVUZXN0KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLmZvcmNl
U3luY0RlYnVnTG9nZ2luZykKKyAgICAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC51bmJ1
ZmZlcmVkTG9nKCJGcm9udGVuZFRlc3RIYXJuZXNzLmNvbXBsZXRlVGVzdCgpIik7CisKKyAgICAg
ICAgLy8gV2FpdCBmb3IgcmVzdWx0cyB0byBiZSByZXNlbnQgYmVmb3JlIHJlcXVlc3RpbmcgY29t
cGxldGVUZXN0KCkuIE90aGVyd2lzZSwgbWVzc2FnZXMgd2lsbCBiZQorICAgICAgICAvLyBxdWV1
ZWQgYWZ0ZXIgcGVuZGluZyBkaXNwYXRjaGVzIHJ1biB0byB6ZXJvIGFuZCB0aGUgdGVzdCBwYWdl
IHdpbGwgcXVpdCBiZWZvcmUgcHJvY2Vzc2luZyB0aGVtLgorICAgICAgICBpZiAodGhpcy5fdGVz
dFBhZ2VJc1JlbG9hZGluZykgeworICAgICAgICAgICAgdGhpcy5fY29tcGxldGVUZXN0QWZ0ZXJS
ZWxvYWQgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
SW5zcGVjdG9yQmFja2VuZC5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKHRoaXMuZXZhbHVhdGVJ
blBhZ2UuYmluZCh0aGlzLCAiVGVzdFBhZ2UuY29tcGxldGVUZXN0KCkiKSk7CisgICAgfQorCisg
ICAgYWRkUmVzdWx0KG1lc3NhZ2UpCisgICAgeworICAgICAgICB0aGlzLl9yZXN1bHRzLnB1c2go
bWVzc2FnZSk7CisKKyAgICAgICAgaWYgKHRoaXMuZm9yY2VTeW5jRGVidWdMb2dnaW5nKQorICAg
ICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnVuYnVmZmVyZWRMb2coImFkZFJlc3VsdDog
IiArIG1lc3NhZ2UpOworCisgICAgICAgIGlmICghdGhpcy5fdGVzdFBhZ2VJc1JlbG9hZGluZykK
KyAgICAgICAgICAgIHRoaXMuZXZhbHVhdGVJblBhZ2UoYFRlc3RQYWdlLmFkZFJlc3VsdCh1bmVz
Y2FwZSgiJHtlc2NhcGUobWVzc2FnZSl9IikpYCk7CisgICAgfQorCisgICAgZGVidWdMb2cobWVz
c2FnZSkKKyAgICB7CisgICAgICAgIGxldCBzdHJpbmdpZmllZE1lc3NhZ2UgPSB0eXBlb2YgbWVz
c2FnZSAhPT0gInN0cmluZyIgPyBKU09OLnN0cmluZ2lmeShtZXNzYWdlKSA6IG1lc3NhZ2U7Cisg
ICAgICAgIHRoaXMuZXZhbHVhdGVJblBhZ2UoYFRlc3RQYWdlLmRlYnVnTG9nKHVuZXNjYXBlKCIk
e2VzY2FwZShzdHJpbmdpZmllZE1lc3NhZ2UpfSIpKTtgKTsKKyAgICB9CisKKyAgICBldmFsdWF0
ZUluUGFnZShleHByZXNzaW9uLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIC8vIElmIHdlIGxv
YWQgdGhpcyBwYWdlIG91dHNpZGUgb2YgdGhlIGluc3BlY3Rvciwgb3IgaGl0IGFuIGVhcmx5IGVy
cm9yIHdoZW4gbG9hZGluZworICAgICAgICAvLyB0aGUgdGVzdCBmcm9udGVuZCwgdGhlbiBkZWZl
ciBldmFsdWF0aW5nIHRoZSBjb21tYW5kcyAoaW5kZWZpbml0ZWx5IGluIHRoZSBmb3JtZXIgY2Fz
ZSkuCisgICAgICAgIGlmICh0aGlzLl9vcmlnaW5hbENvbnNvbGUgJiYgIXdpbmRvdy5SdW50aW1l
QWdlbnQpIHsKKyAgICAgICAgICAgIHRoaXMuX29yaWdpbmFsQ29uc29sZVsiZXJyb3IiXSgiVHJp
ZWQgdG8gZXZhbHVhdGUgaW4gdGVzdCBwYWdlLCBidXQgY29ubmVjdGlvbiBub3QgeWV0IGVzdGFi
bGlzaGVkOiIsIGV4cHJlc3Npb24pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgUnVudGltZUFnZW50LmV2YWx1YXRlLmludm9rZSh7ZXhwcmVzc2lvbiwgb2JqZWN0
R3JvdXA6ICJ0ZXN0IiwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJOiBmYWxzZX0sIGNhbGxiYWNrKTsK
KyAgICB9CisKKyAgICAvLyBGcm9udGVuZCB0ZXN0LXNwZWNpZmljIG1ldGhvZHMuCisKKyAgICBl
eHBlY3ROb0Vycm9yKGVycm9yKQorICAgIHsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUFJPVE9DT0wgRVJST1I6ICIgKyBlcnJvcik7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICAgICAgdGhyb3cg
IlBST1RPQ09MIEVSUk9SIjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHRlc3RQYWdlRGlkTG9h
ZCgpCisgICAgeworICAgICAgICB0aGlzLl90ZXN0UGFnZUlzUmVsb2FkaW5nID0gZmFsc2U7Cisg
ICAgICAgIHRoaXMuX3Jlc2VuZFJlc3VsdHMoKTsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhGcm9udGVuZFRlc3RIYXJuZXNzLkV2ZW50LlRlc3RQYWdlRGlkTG9hZCk7
CisKKyAgICAgICAgaWYgKHRoaXMuX2NvbXBsZXRlVGVzdEFmdGVyUmVsb2FkKQorICAgICAgICAg
ICAgdGhpcy5jb21wbGV0ZVRlc3QoKTsKKyAgICB9CisKKyAgICByZWxvYWRQYWdlKHNob3VsZEln
bm9yZUNhY2hlKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3Rlc3RQYWdl
SXNSZWxvYWRpbmcpOworICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fdGVzdFBhZ2VSZWxv
YWRlZE9uY2UpOworCisgICAgICAgIHRoaXMuX3Rlc3RQYWdlSXNSZWxvYWRpbmcgPSB0cnVlOwor
CisgICAgICAgIHJldHVybiBQYWdlQWdlbnQucmVsb2FkKCEhc2hvdWxkSWdub3JlQ2FjaGUpCisg
ICAgICAgICAgICAudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgdGhpcy5fc2hvdWxkUmVz
ZW5kUmVzdWx0cyA9IHRydWU7CisgICAgICAgICAgICAgICAgdGhpcy5fdGVzdFBhZ2VSZWxvYWRl
ZE9uY2UgPSB0cnVlOworCisgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShu
dWxsKTsKKyAgICAgICAgICAgIH0pOworICAgIH0KKworICAgIHJlZGlyZWN0Q29uc29sZVRvVGVz
dE91dHB1dCgpCisgICAgeworICAgICAgICBmdW5jdGlvbiBjcmVhdGVQcm94eUNvbnNvbGVIYW5k
bGVyKHR5cGUpIHsKKyAgICAgICAgICAgIHJldHVybiAoKSA9PiB7IHRoaXMuYWRkUmVzdWx0KHR5
cGUgKyAiOiAiICsgQXJyYXkuZnJvbShhcmd1bWVudHMpLmpvaW4oIiAiKSk7IH07CisgICAgICAg
IH0KKworICAgICAgICBsZXQgcmVkaXJlY3RlZE1ldGhvZHMgPSB7fTsKKyAgICAgICAgZm9yIChs
ZXQga2V5IGluIHdpbmRvdy5jb25zb2xlKSAKKyAgICAgICAgICAgIHJlZGlyZWN0ZWRNZXRob2Rz
W2tleV0gPSB3aW5kb3cuY29uc29sZVtrZXldLmJpbmQod2luZG93LmNvbnNvbGUpOworCisgICAg
ICAgIGZvciAobGV0IHR5cGUgb2YgWyJsb2ciLCAiZXJyb3IiLCAiaW5mbyJdKQorICAgICAgICAg
ICAgcmVkaXJlY3RlZE1ldGhvZHNbdHlwZV0gPSBjcmVhdGVQcm94eUNvbnNvbGVIYW5kbGVyLmNh
bGwodGhpcywgdHlwZS50b1VwcGVyQ2FzZSgpKTsKKworICAgICAgICB0aGlzLl9vcmlnaW5hbENv
bnNvbGUgPSB3aW5kb3cuY29uc29sZTsKKyAgICAgICAgd2luZG93LmNvbnNvbGUgPSByZWRpcmVj
dGVkTWV0aG9kczsKKyAgICB9CisKKyAgICByZXBvcnRVbmNhdWdodEV4Y2VwdGlvbihtZXNzYWdl
LCB1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKKyAgICB7CisgICAgICAgIGxldCByZXN1
bHQgPSBgVW5jYXVnaHQgZXhjZXB0aW9uIGluIGluc3BlY3RvciBwYWdlOiAke21lc3NhZ2V9IFsk
e3VybH06JHtsaW5lTnVtYmVyfToke2NvbHVtbk51bWJlcn1dYDsKKworICAgICAgICAvLyBJZiB0
aGUgY29ubmVjdGlvbiB0byB0aGUgdGVzdCBwYWdlIGlzIG5vdCBzZXQgdXAsIHRoZW4ganVzdCBk
dW1wIHRvIGNvbnNvbGUgYW5kIGdpdmUgdXAuCisgICAgICAgIC8vIEVycm9ycyBlbmNvdW50ZXJl
ZCB0aGlzIGVhcmx5IGNhbiBiZSBkZWJ1Z2dlZCBieSBsb2FkaW5nIFRlc3QuaHRtbCBpbiBhIG5v
cm1hbCBicm93c2VyIHBhZ2UuCisgICAgICAgIGlmICh0aGlzLl9vcmlnaW5hbENvbnNvbGUgJiYg
KCFJbnNwZWN0b3JGcm9udGVuZEhvc3QgfHwgIUluc3BlY3RvckJhY2tlbmQpKSB7CisgICAgICAg
ICAgICB0aGlzLl9vcmlnaW5hbENvbnNvbGVbImVycm9yIl0ocmVzdWx0KTsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuYWRkUmVzdWx0KHJlc3Vs
dCk7CisgICAgICAgIHRoaXMuY29tcGxldGVUZXN0KCk7CisgICAgICAgIC8vIFN0b3AgZGVmYXVs
dCBoYW5kbGVyIHNvIHdlIGNhbiBlbXB0eSBJbnNwZWN0b3JCYWNrZW5kJ3MgbWVzc2FnZSBxdWV1
ZS4KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAg
X3Jlc2VuZFJlc3VsdHMoKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fc2hv
dWxkUmVzZW5kUmVzdWx0cyk7CisgICAgICAgIHRoaXMuX3Nob3VsZFJlc2VuZFJlc3VsdHMgPSBm
YWxzZTsKKworICAgICAgICBmb3IgKGxldCByZXN1bHQgb2YgdGhpcy5fcmVzdWx0cykKKyAgICAg
ICAgICAgIHRoaXMuZXZhbHVhdGVJblBhZ2UoYFRlc3RQYWdlLmFkZFJlc3VsdCh1bmVzY2FwZSgi
JHtlc2NhcGUocmVzdWx0KX0iKSlgKTsKKyAgICB9Cit9OworCitGcm9udGVuZFRlc3RIYXJuZXNz
LkV2ZW50ID0geworICAgIFRlc3RQYWdlRGlkTG9hZDogImZyb250ZW5kLXRlc3QtdGVzdC1wYWdl
LWRpZC1sb2FkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Rlc3QvVGVzdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Rlc3QvVGVzdC5qcwppbmRleCBhM2FhNTFhM2QwODU2Y2FjYjcyNDVkMzA4MTFlZDA5ZjQwNGJh
MjdkLi43YjI4ZDU1MzM4YTgxODNkNDgyYWY3MTdlMWU4ZDlhNTZhNmQ4ODc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYy
LDcgKzYyLDcgQEAgV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICAvLyBHbG9i
YWwgY29udHJvbGxlcnMuCiAgICAgdGhpcy5xdWlja0NvbnNvbGUgPSB7ZXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXI6IHVuZGVmaW5lZH07CiAKLSAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVy
KCJET01Db250ZW50TG9hZGVkIiwgdGhpcy5jb250ZW50TG9hZGVkLmJpbmQodGhpcykpOworICAg
IGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCB0aGlzLmNvbnRl
bnRMb2FkZWQpOwogCiAgICAgLy8gRW5hYmxlIGFnZW50cy4KICAgICBJbnNwZWN0b3JBZ2VudC5l
bmFibGUoKTsKQEAgLTg1LDE5NSArODUsMTIgQEAgV2ViSW5zcGVjdG9yLmNvbnRlbnRMb2FkZWQg
PSBmdW5jdGlvbigpCiAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmxvYWRlZCgpOwogfQogCi1X
ZWJJbnNwZWN0b3IuVUlTdHJpbmcgPSBmdW5jdGlvbihzdHJpbmcpCi17Ci0gICAgcmV0dXJuIHN0
cmluZzsKLX0KK1dlYkluc3BlY3Rvci5VSVN0cmluZyA9IChzdHJpbmcpID0+IHN0cmluZzsKIAog
Ly8gQWRkIHN0dWJzIHRoYXQgYXJlIGNhbGxlZCBieSB0aGUgZnJvbnRlbmQgQVBJLgotV2ViSW5z
cGVjdG9yLnVwZGF0ZURvY2tlZFN0YXRlID0gZnVuY3Rpb24oKSB7fTsKLVdlYkluc3BlY3Rvci51
cGRhdGVEb2NraW5nQXZhaWxhYmlsaXR5ID0gZnVuY3Rpb24oKSB7fTsKLQotLy8gSW5zcGVjdG9y
VGVzdCBjb250YWlucyBleHRyYSBtZXRob2RzIHRoYXQgYXJlIG9ubHkgYXZhaWxhYmxlIHRvIHRl
c3QgY29kZSBydW5uaW5nCi0vLyBpbiB0aGUgV2ViIEluc3BlY3RvciBwYWdlLiBUaGV5IHJlbHkg
b24gZXF1aXZhbGVudHMgaW4gdGhlIGFjdHVhbCB0ZXN0IHBhZ2UKLS8vIHdoaWNoIGFyZSBwcm92
aWRlZCBieSBgaW5zcGVjdG9yLXRlc3QuanNgLgotSW5zcGVjdG9yVGVzdCA9IHt9OwotCi0vLyBU
aGlzIGlzIHVzZWZ1bCBmb3IgZGVidWdnaW5nIEluc3BlY3RvciB0ZXN0cyBieSBzeW5jaHJvbm91
c2x5IGxvZ2dpbmcgbWVzc2FnZXMuCi1JbnNwZWN0b3JUZXN0LmR1bXBNZXNzYWdlc1RvQ29uc29s
ZSA9IGZhbHNlOwotCi0vLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgdGhlIGZhY3QgdGhhdCBp
dCB3b3VsZCBiZSBoYXJkIHRvIHNldCB1cCBhIGNvbnN0cnVjdG9yLAotLy8gcHJvdG90eXBlLCBh
bmQgcHJvdG90eXBlIGNoYWluIGZvciB0aGUgc2luZ2xldG9uIEluc3BlY3RvclRlc3QuCi1JbnNw
ZWN0b3JUZXN0LkV2ZW50RGlzcGF0Y2hlciA9IGNsYXNzIEV2ZW50RGlzcGF0Y2hlciBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3QKLXsKLSAgICBkaXNwYXRjaEV2ZW50KGV2ZW50KQotICAgIHsK
LSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoZXZlbnQpOwotICAgIH0KLX07
Ci0KLUluc3BlY3RvclRlc3QuRXZlbnREaXNwYXRjaGVyLkV2ZW50ID0gewotICAgIFRlc3RQYWdl
RGlkTG9hZDogImluc3BlY3Rvci10ZXN0LXRlc3QtcGFnZS1kaWQtbG9hZCIKLX07Ci0KLUluc3Bl
Y3RvclRlc3QuZXZlbnREaXNwYXRjaGVyID0gbmV3IEluc3BlY3RvclRlc3QuRXZlbnREaXNwYXRj
aGVyOwotCi0vLyBOb3RlOiBBZGRpdGlvbmFsIEluc3BlY3RvclRlc3QgbWV0aG9kcyBhcmUgaW5j
bHVkZWQgb24gYSBwZXItdGVzdCBiYXNpcyBmcm9tCi0vLyBmaWxlcyBsaWtlIGBkZWJ1Z2dlci10
ZXN0LmpzYC4KLQotLy8gQXBwZW5kcyBhIGxvZyBtZXNzYWdlIGluIHRoZSB0ZXN0IGRvY3VtZW50
LgotSW5zcGVjdG9yVGVzdC5sb2cgPSBmdW5jdGlvbihtZXNzYWdlKQotewotICAgIHZhciBzdHJp
bmdpZmllZE1lc3NhZ2UgPSB0eXBlb2YgbWVzc2FnZSAhPT0gIm9iamVjdCIgPyBtZXNzYWdlIDog
SlNPTi5zdHJpbmdpZnkobWVzc2FnZSk7Ci0gICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoc3Ry
aW5naWZpZWRNZXNzYWdlKTsKLX0KLQotLy8gQXBwZW5kcyBhIG1lc3NhZ2UgaW4gdGhlIHRlc3Qg
ZG9jdW1lbnQgb25seSBpZiB0aGUgY29uZGl0aW9uIGlzIGZhbHNlLgotSW5zcGVjdG9yVGVzdC5h
c3NlcnQgPSBmdW5jdGlvbihjb25kaXRpb24sIG1lc3NhZ2UpCi17Ci0gICAgaWYgKGNvbmRpdGlv
bikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdmFyIHN0cmluZ2lmaWVkTWVzc2FnZSA9IHR5cGVv
ZiBtZXNzYWdlICE9PSAib2JqZWN0IiA/IG1lc3NhZ2UgOiBKU09OLnN0cmluZ2lmeShtZXNzYWdl
KTsKLSAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQVNTRVJUOiAiICsgc3RyaW5naWZpZWRN
ZXNzYWdlKTsKLX0KLQotLy8gQXBwZW5kcyBhIG1lc3NhZ2UgaW4gdGhlIHRlc3QgZG9jdW1lbnQg
d2hldGhlciB0aGUgY29uZGl0aW9uIGlzIHRydWUgb3Igbm90LgotSW5zcGVjdG9yVGVzdC5leHBl
Y3RUaGF0ID0gZnVuY3Rpb24oY29uZGl0aW9uLCBtZXNzYWdlKQotewotICAgIHZhciBwcmVmaXgg
PSBjb25kaXRpb24gPyAiUEFTUyIgOiAiRkFJTCI7Ci0gICAgdmFyIHN0cmluZ2lmaWVkTWVzc2Fn
ZSA9IHR5cGVvZiBtZXNzYWdlICE9PSAib2JqZWN0IiA/IG1lc3NhZ2UgOiBKU09OLnN0cmluZ2lm
eShtZXNzYWdlKTsKLSAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChwcmVmaXggKyAiOiAiICsg
c3RyaW5naWZpZWRNZXNzYWdlKTsKLX0KLQotLy8gVGhpcyBmdW5jdGlvbiBzaG91bGQgb25seSBi
ZSB1c2VkIHRvIGRlYnVnIHRlc3RzIGFuZCBub3QgdG8gcHJvZHVjZSBub3JtYWwgdGVzdCBvdXRw
dXQuCi1JbnNwZWN0b3JUZXN0LmRlYnVnTG9nID0gZnVuY3Rpb24obWVzc2FnZSkKLXsKLSAgICBp
ZiAoSW5zcGVjdG9yVGVzdC5kdW1wTWVzc2FnZXNUb0NvbnNvbGUpCi0gICAgICAgIEluc3BlY3Rv
ckZyb250ZW5kSG9zdC51bmJ1ZmZlcmVkTG9nKCJkZWJ1Z0xvZzogIiArIG1lc3NhZ2UpOwotCi0g
ICAgdGhpcy5ldmFsdWF0ZUluUGFnZSgiSW5zcGVjdG9yVGVzdFByb3h5LmRlYnVnTG9nKHVuZXNj
YXBlKCciICsgZXNjYXBlKEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpKSArICInKSkiKTsKLX0KLQot
Ly8gQXBwZW5kcyBhIG1lc3NhZ2UgaW4gdGhlIHRlc3QgZG9jdW1lbnQgaWYgdGhlcmUgd2FzIGFu
IGVycm9yLCBhbmQgYXR0ZW1wdHMgdG8gY29tcGxldGUgdGhlIHRlc3QuCi1JbnNwZWN0b3JUZXN0
LmV4cGVjdE5vRXJyb3IgPSBmdW5jdGlvbihlcnJvcikKLXsKLSAgICBpZiAoZXJyb3IpIHsKLSAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlBST1RPQ09MIEVSUk9SOiAiICsgZXJyb3IpOwotICAg
ICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwotICAgICAgICB0aHJvdyAiUFJPVE9D
T0wgRVJST1IiOwotICAgIH0KLX0KLQotSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QgPSBmdW5j
dGlvbigpCi17Ci0gICAgaWYgKEluc3BlY3RvclRlc3QuZHVtcE1lc3NhZ2VzVG9Db25zb2xlKQot
ICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QudW5idWZmZXJlZExvZygiSW5zcGVjdG9yVGVz
dC5jb21wbGV0ZVRlc3QoKSIpOwotCi0gICAgLy8gV2FpdCBmb3IgcmVzdWx0cyB0byBiZSByZXNl
bnQgYmVmb3JlIHJlcXVlc3RpbmcgY29tcGxldGVUZXN0KCkuIE90aGVyd2lzZSwgbWVzc2FnZXMg
d2lsbCBiZQotICAgIC8vIHF1ZXVlZCBhZnRlciBwZW5kaW5nIGRpc3BhdGNoZXMgcnVuIHRvIHpl
cm8gYW5kIHRoZSB0ZXN0IHBhZ2Ugd2lsbCBxdWl0IGJlZm9yZSBwcm9jZXNzaW5nIHRoZW0uCi0g
ICAgaWYgKHRoaXMuX3Rlc3RQYWdlSXNSZWxvYWRpbmcpIHsKLSAgICAgICAgdGhpcy5fY29tcGxl
dGVUZXN0QWZ0ZXJSZWxvYWQgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
SW5zcGVjdG9yQmFja2VuZC5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKHRoaXMuZXZhbHVhdGVJ
blBhZ2UuYmluZCh0aGlzLCAiSW5zcGVjdG9yVGVzdFByb3h5LmNvbXBsZXRlVGVzdCgpIikpOwot
fQotCi1JbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlID0gZnVuY3Rpb24oY29kZVN0cmluZywg
Y2FsbGJhY2spCi17Ci0gICAgLy8gSWYgd2UgbG9hZCB0aGlzIHBhZ2Ugb3V0c2lkZSBvZiB0aGUg
aW5zcGVjdG9yLCBvciBoaXQgYW4gZWFybHkgZXJyb3Igd2hlbiBsb2FkaW5nCi0gICAgLy8gdGhl
IHRlc3QgZnJvbnRlbmQsIHRoZW4gZGVmZXIgZXZhbHVhdGluZyB0aGUgY29tbWFuZHMgKGluZGVm
aW5pdGVseSBpbiB0aGUgZm9ybWVyIGNhc2UpLgotICAgIGlmICghd2luZG93LlJ1bnRpbWVBZ2Vu
dCkgewotICAgICAgICB0aGlzLl9vcmlnaW5hbENvbnNvbGVNZXRob2RzWyJlcnJvciJdKCJUcmll
ZCB0byBldmFsdWF0ZSBpbiB0ZXN0IHBhZ2UsIGJ1dCBjb25uZWN0aW9uIG5vdCB5ZXQgZXN0YWJs
aXNoZWQ6IiwgY29kZVN0cmluZyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSdW50
aW1lQWdlbnQuZXZhbHVhdGUuaW52b2tlKHtleHByZXNzaW9uOiBjb2RlU3RyaW5nLCBvYmplY3RH
cm91cDogInRlc3QiLCBpbmNsdWRlQ29tbWFuZExpbmVBUEk6IGZhbHNlfSwgY2FsbGJhY2spOwot
fQotCi1JbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCA9IGZ1bmN0aW9uKHRleHQpCi17Ci0gICAgdGhp
cy5fcmVzdWx0cy5wdXNoKHRleHQpOwotCi0gICAgaWYgKEluc3BlY3RvclRlc3QuZHVtcE1lc3Nh
Z2VzVG9Db25zb2xlKQotICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QudW5idWZmZXJlZExv
ZygiYWRkUmVzdWx0OiAiICsgdGV4dCk7Ci0KLSAgICBpZiAoIXRoaXMuX3Rlc3RQYWdlSXNSZWxv
YWRpbmcpCi0gICAgICAgIHRoaXMuZXZhbHVhdGVJblBhZ2UoIkluc3BlY3RvclRlc3RQcm94eS5h
ZGRSZXN1bHQodW5lc2NhcGUoJyIgKyBlc2NhcGUodGV4dCkgKyAiJykpIik7Ci19Ci0KLUluc3Bl
Y3RvclRlc3QuX3Jlc2VuZFJlc3VsdHMgPSBmdW5jdGlvbigpCi17Ci0gICAgY29uc29sZS5hc3Nl
cnQodGhpcy5fc2hvdWxkUmVzZW5kUmVzdWx0cyk7Ci0gICAgdGhpcy5fc2hvdWxkUmVzZW5kUmVz
dWx0cyA9IGZhbHNlOwotCi0gICAgZm9yICh2YXIgcmVzdWx0IG9mIHRoaXMuX3Jlc3VsdHMpCi0g
ICAgICAgIHRoaXMuZXZhbHVhdGVJblBhZ2UoIkluc3BlY3RvclRlc3RQcm94eS5hZGRSZXN1bHQo
dW5lc2NhcGUoJyIgKyBlc2NhcGUocmVzdWx0KSArICInKSkiKTsKLX0KLQotSW5zcGVjdG9yVGVz
dC50ZXN0UGFnZURpZExvYWQgPSBmdW5jdGlvbigpCi17Ci0gICAgdGhpcy5fdGVzdFBhZ2VJc1Jl
bG9hZGluZyA9IGZhbHNlOwotICAgIHRoaXMuX3Jlc2VuZFJlc3VsdHMoKTsKLQotICAgIHRoaXMu
ZXZlbnREaXNwYXRjaGVyLmRpc3BhdGNoRXZlbnQoSW5zcGVjdG9yVGVzdC5FdmVudERpc3BhdGNo
ZXIuRXZlbnQuVGVzdFBhZ2VEaWRMb2FkKTsKLQotICAgIGlmICh0aGlzLl9jb21wbGV0ZVRlc3RB
ZnRlclJlbG9hZCkKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKLX0KLQot
SW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlID0gZnVuY3Rpb24oc2hvdWxkSWdub3JlQ2FjaGUpCi17
Ci0gICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3Rlc3RQYWdlSXNSZWxvYWRpbmcpOwotICAgIGNv
bnNvbGUuYXNzZXJ0KCF0aGlzLl90ZXN0UGFnZVJlbG9hZGVkT25jZSk7Ci0KLSAgICB0aGlzLl90
ZXN0UGFnZUlzUmVsb2FkaW5nID0gdHJ1ZTsKLQotICAgIHJldHVybiBQYWdlQWdlbnQucmVsb2Fk
KCEhc2hvdWxkSWdub3JlQ2FjaGUpCi0gICAgICAgIC50aGVuKGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgdGhpcy5fc2hvdWxkUmVzZW5kUmVzdWx0cyA9IHRydWU7Ci0gICAgICAgICAgICB0aGlz
Ll90ZXN0UGFnZVJlbG9hZGVkT25jZSA9IHRydWU7Ci0KLSAgICAgICAgICAgIHJldHVybiBQcm9t
aXNlLnJlc29sdmUobnVsbCk7Ci0gICAgICAgIH0uYmluZCh0aGlzKSk7Ci19Ci0KLUluc3BlY3Rv
clRlc3QucmVwb3J0VW5jYXVnaHRFeGNlcHRpb24gPSBmdW5jdGlvbihtZXNzYWdlLCB1cmwsIGxp
bmVOdW1iZXIpCi17Ci0gICAgdmFyIHJlc3VsdCA9ICJVbmNhdWdodCBleGNlcHRpb24gaW4gaW5z
cGVjdG9yIHBhZ2U6ICIgKyBtZXNzYWdlICsgIiBbIiArIHVybCArICI6IiArIGxpbmVOdW1iZXIg
KyAiXSI7Ci0KLSAgICAvLyBJZiB0aGUgY29ubmVjdGlvbiB0byB0aGUgdGVzdCBwYWdlIGlzIG5v
dCBzZXQgdXAsIHRoZW4ganVzdCBkdW1wIHRvIGNvbnNvbGUgYW5kIGdpdmUgdXAuCi0gICAgLy8g
RXJyb3JzIGVuY291bnRlcmVkIHRoaXMgZWFybHkgY2FuIGJlIGRlYnVnZ2VkIGJ5IGxvYWRpbmcg
VGVzdC5odG1sIGluIGEgbm9ybWFsIGJyb3dzZXIgcGFnZS4KLSAgICBpZiAoIUluc3BlY3RvckZy
b250ZW5kSG9zdCB8fCAhSW5zcGVjdG9yQmFja2VuZCkgewotICAgICAgICB0aGlzLl9vcmlnaW5h
bENvbnNvbGVNZXRob2RzWyJlcnJvciJdKHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0KLSAgICB0aGlzLmFkZFJlc3VsdChyZXN1bHQpOwotICAgIHRoaXMuY29tcGxldGVU
ZXN0KCk7Ci0gICAgLy8gU3RvcCBkZWZhdWx0IGhhbmRsZXIgc28gd2UgY2FuIGVtcHR5IEluc3Bl
Y3RvckJhY2tlbmQncyBtZXNzYWdlIHF1ZXVlLgotICAgIHJldHVybiB0cnVlOwotfQotCi0vLyBJ
bml0aWFsaXplIHJlcG9ydGluZyBtZWNoYW5pc21zIGJlZm9yZSBsb2FkaW5nIHRoZSByZXN0IG9m
IHRoZSBpbnNwZWN0b3IgcGFnZS4KLUluc3BlY3RvclRlc3QuX3Jlc3VsdHMgPSBbXTsKLUluc3Bl
Y3RvclRlc3QuX3Nob3VsZFJlc2VuZFJlc3VsdHMgPSB0cnVlOwotSW5zcGVjdG9yVGVzdC5fb3Jp
Z2luYWxDb25zb2xlTWV0aG9kcyA9IHt9OwotCi0vLyBDYXRjaCBzeW50YXggZXJyb3JzLCB0eXBl
IGVycm9ycywgYW5kIG90aGVyIGV4Y2VwdGlvbnMuCi13aW5kb3cub25lcnJvciA9IEluc3BlY3Rv
clRlc3QucmVwb3J0VW5jYXVnaHRFeGNlcHRpb24uYmluZChJbnNwZWN0b3JUZXN0KTsKK1dlYklu
c3BlY3Rvci51cGRhdGVEb2NrZWRTdGF0ZSA9ICgpID0+IHt9OworV2ViSW5zcGVjdG9yLnVwZGF0
ZURvY2tpbmdBdmFpbGFiaWxpdHkgPSAoKSA9PiB7fTsKIAotLy8gUmVkaXJlY3QgZnJvbnRlbmQg
Y29uc29sZSBtZXRob2RzIHRvIGxvZyBtZXNzYWdlcyBpbnRvIHRoZSB0ZXN0IHJlc3VsdC4KLShm
dW5jdGlvbigpIHsKLSAgICBmdW5jdGlvbiBjcmVhdGVQcm94eUNvbnNvbGVIYW5kbGVyKHR5cGUp
IHsKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQodHlwZSArICI6ICIgKyBBcnJheS5mcm9tKGFyZ3VtZW50cykuam9pbigiICIp
KTsKLSAgICAgICAgfTsKLSAgICB9Cit3aW5kb3cuSW5zcGVjdG9yVGVzdCA9IG5ldyBGcm9udGVu
ZFRlc3RIYXJuZXNzKCk7CiAKLSAgICBmb3IgKHZhciB0eXBlIG9mIFsibG9nIiwgImVycm9yIiwg
ImluZm8iXSkgewotICAgICAgICBJbnNwZWN0b3JUZXN0Ll9vcmlnaW5hbENvbnNvbGVNZXRob2Rz
W3R5cGVdID0gY29uc29sZVt0eXBlXS5iaW5kKGNvbnNvbGUpOwotICAgICAgICBjb25zb2xlW3R5
cGVdID0gY3JlYXRlUHJveHlDb25zb2xlSGFuZGxlcih0eXBlLnRvVXBwZXJDYXNlKCkpOwotICAg
IH0KLX0pKCk7CitJbnNwZWN0b3JUZXN0LnJlZGlyZWN0Q29uc29sZVRvVGVzdE91dHB1dCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9UZXN0
U3VpdGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3RT
dWl0ZS5qcwppbmRleCBmMzc2MGY5ZDg3MTJiZjkxZmQyMjU4Y2I0OGU5ZGU2YjNlMTQ1MWY2Li5m
ZGQ1MzFlYTY4ZTdjZThmNGNhMWE2ZTU0NTY2NjBjYjY5MjlhNWM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3RTdWl0ZS5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3RTdWl0ZS5qcwpAQCAt
MTU1LDcgKzE1NSw2IEBAIFN5bmNUZXN0U3VpdGUgPSBjbGFzcyBTeW5jVGVzdFN1aXRlIGV4dGVu
ZHMgVGVzdFN1aXRlCiAgICAgICAgIHRoaXMuX2hhcm5lc3MubG9nKCI9PSBSdW5uaW5nIHRlc3Qg
c3VpdGU6ICIgKyB0aGlzLm5hbWUpOwogCiAgICAgICAgIGxldCBwcmlvckxvZ0NvdW50ID0gdGhp
cy5faGFybmVzcy5sb2dDb3VudDsKLSAgICAgICAgbGV0IHNlbGYgPSB0aGlzOwogICAgICAgICBm
b3IgKGxldCBpID0gMDsgaSA8IHRoaXMudGVzdGNhc2VzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAg
ICAgICBsZXQgdGVzdGNhc2UgPSB0aGlzLnRlc3RjYXNlc1tpXTsKICAgICAgICAgICAgIGlmIChp
ID4gMCAmJiBwcmlvckxvZ0NvdW50ICsgMSA8IHRoaXMuX2hhcm5lc3MubG9nQ291bnQpCkBAIC0x
NjQsMTUgKzE2MywxNSBAQCBTeW5jVGVzdFN1aXRlID0gY2xhc3MgU3luY1Rlc3RTdWl0ZSBleHRl
bmRzIFRlc3RTdWl0ZQogICAgICAgICAgICAgcHJpb3JMb2dDb3VudCA9IHRoaXMuX2hhcm5lc3Mu
bG9nQ291bnQ7CiAKICAgICAgICAgICAgIHRoaXMuX2hhcm5lc3MubG9nKCItLSBSdW5uaW5nIHRl
c3QgY2FzZTogIiArIHRlc3RjYXNlLm5hbWUpOwotICAgICAgICAgICAgc2VsZi5ydW5Db3VudCsr
OworICAgICAgICAgICAgdGhpcy5ydW5Db3VudCsrOwogICAgICAgICAgICAgdHJ5IHsKICAgICAg
ICAgICAgICAgICBsZXQgcmVzdWx0ID0gdGVzdGNhc2UudGVzdC5jYWxsKG51bGwpOwogICAgICAg
ICAgICAgICAgIGlmIChyZXN1bHQgPT09IGZhbHNlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNl
bGYuZmFpbENvdW50Kys7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuZmFpbENvdW50Kys7CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsQ291bnQrKzsK
KyAgICAgICAgICAgICAgICB0aGlzLmZhaWxDb3VudCsrOwogICAgICAgICAgICAgICAgIGxldCBt
ZXNzYWdlID0gZTsKICAgICAgICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKQogICAg
ICAgICAgICAgICAgICAgICBtZXNzYWdlID0gZS5tZXNzYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdFN0dWIuaHRtbCBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3RTdHViLmh0bWwKaW5kZXggZDgzMTU5MzNlOWFj
ZjdkNGY1YjE4YzhlMWRjMmJlMTgzZmQ3YThmMC4uMzA5NzBkMzAzMTE0MzQ2ZjJkZGZkMjgzMjI2
Yzk4ZWU2NTUzMTRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVGVzdFN0dWIuaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9UZXN0U3R1Yi5odG1sCkBAIC00MCw3ICs0MCw4IEBAIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKICAgICA8c2Ny
aXB0IHNyYz0iVGVzdC9UZXN0U3R1Yi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdD4KLSAgICAg
ICAgLy8gTm90IHJlbGlhYmxlIHVubGVzcyBjb25zb2xlIG1lc3NhZ2VzIGFyZSBkdW1wZWQgdG8g
Y29uc29sZS4gU2VlIHdpa2kgZm9yIGRldGFpbHMuCisgICAgICAgIC8vIE5vdCByZWxpYWJsZSB1
bmxlc3MgY29uc29sZSBtZXNzYWdlcyBhcmUgZHVtcGVkIHRvIGNvbnNvbGUuCisgICAgICAgIC8v
IFNlZSB3aWtpIGZvciBkZXRhaWxzIDxodHRwczovL2h0dHA6Ly90cmFjLndlYmtpdC5vcmcvd2lr
aS9XZWJJbnNwZWN0b3JEZWJ1Z2dpbmc+LgogICAgICAgICBQcm90b2NvbFRlc3QuZHVtcEluc3Bl
Y3RvclByb3RvY29sTWVzc2FnZXMgPSBmYWxzZTsKIAogICAgICAgICAvLyBTeW5jaHJvbm91cyBs
b2dnaW5nIG1heSBwcm9kdWNlIG1vcmUgb3V0cHV0IHByaW9yIHRvIGEgdGltZW91dC4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA2ZmM4MTNkMGY3NjZmM2YyMGE2ZWQ0MWJiYTFhMDk2ZmVlMDYxMjIzLi5jMThmZjE3NDM3YWNj
OTIxZDIzMjhjZTQ0ODAwZmYyYjcyODY1NTg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDEgQEAKIDIwMTUt
MDgtMTkgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogSW5zcGVjdG9yVGVzdCBzaG91bGQgYmUgYSBzdWJjbGFzcyBvZiBUZXN0SGFybmVzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MDc5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIElu
c3BlY3RvclRlc3RQcm94eSB0byBUZXN0UGFnZS4gVXBkYXRlIHNvbWUgY29kZSBzdHlsZSBpbgor
ICAgICAgICB0aGUgaGFybmVzcyBzY3JpcHQgZmlsZXMgdG8gYmUgY29uc2lzdGVudC4KKworICAg
ICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXRlc3QuanM6Cisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZG9tL3NoYXBlcy10ZXN0LmpzOgorICAgICAg
ICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3JlcGxheS9yZXBsYXktdGVzdC5qczoKKyAgICAgICAg
KiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanM6CisgICAg
ICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyKToKKyAgICAgICAgKHJ1blRlc3QucnVu
SW5pdGlhbGl6YXRpb25NZXRob2RzSW5Gcm9udGVuZCk6CisgICAgICAgIChydW5UZXN0LnJ1blRl
c3RNZXRob2RJbkZyb250ZW5kKToKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICAoVGVzdFBh
Z2UuY29tcGxldGVUZXN0KToKKyAgICAgICAgKFRlc3RQYWdlLmRlYnVnTG9nKToKKyAgICAgICAg
KFRlc3RQYWdlLmFkZFJlc3VsdCk6CisgICAgICAgIChUZXN0UGFnZS5yZXBvcnRVbmNhdWdodEV4
Y2VwdGlvbik6CisgICAgICAgIChJbnNwZWN0b3JUZXN0UHJveHkucmVnaXN0ZXJJbml0aWFsaXpl
cik6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3JUZXN0UHJveHkuY29tcGxldGVUZXN0KTog
RGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3RvclRlc3RQcm94eS5kZWJ1Z0xvZyk6IERlbGV0ZWQu
CisgICAgICAgIChJbnNwZWN0b3JUZXN0UHJveHkuYWRkUmVzdWx0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEluc3BlY3RvclRlc3RQcm94eS5yZXBvcnRVbmNhdWdodEV4Y2VwdGlvbik6IERlbGV0ZWQu
CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLWV2YWwuaHRt
bDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcmVzb3VyY2VzL2JyZWFrLW9uLWV4Y2Vw
dGlvbi10ZXN0cy5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcmVzb3VyY2VzL3Nj
cmlwdC1mb3ItYnJlYWtwb2ludC1hY3Rpb25zLmpzOgorICAgICAgICAoYnJlYWtwb2ludEFjdGlv
bnMpOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zZWFyY2gtc2NyaXB0cy5odG1sOgor
ICAgICAgICAqIGluc3BlY3Rvci9yZXBsYXkvd2luZG93LW5hdmlnYXRvci1wbHVnaW5zLW1lbW9p
emVkLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lL2RlYnVnZ2VyLXBhdXNlZC13
aGlsZS1yZWNvcmRpbmcuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvdGltZWxpbmUvZXhjZXB0
aW9uLWluLWluamVjdGVkLXNjcmlwdC13aGlsZS1yZWNvcmRpbmcuaHRtbDoKKworMjAxNS0wOC0x
OSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBzcGxpdCBUZXN0U3R1Yi5qcyBpbnRvIG11bHRpcGxlIGZpbGVzIGFuZCBtb2Rlcm5pemUgaXQK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODA3Nwog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9k
ZWJ1Z2dlci10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvZGVidWdnZXItdGVzdC5qcwppbmRleCBkMTAyNTU4NzBhMTk1NjFkNzk2ZWY4OGYyZDg1OTYw
MDkwMzRlMjRhLi43NGRhOTJlODYxZjFmY2QwYjZiNDA4NWZhZDNmYzYyMzQxYWRjMzYyIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dl
ci10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L2RlYnVnZ2VyLXRlc3QuanMKQEAgLTEsNCArMSw0IEBACi1JbnNwZWN0b3JUZXN0UHJveHkucmVn
aXN0ZXJJbml0aWFsaXplcihmdW5jdGlvbigpIHsKK1Rlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6
ZXIoZnVuY3Rpb24oKSB7CiAKIEluc3BlY3RvclRlc3Quc3RhcnRUcmFjaW5nQnJlYWtwb2ludHMg
PSBmdW5jdGlvbigpCiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9kb20vc2hhcGVzLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9kb20vc2hhcGVzLXRlc3QuanMKaW5kZXggYmNjZTlmMTlhMzhjZmZjYjY4ZmNlM2NkMmJkOTI1
YzA1ZjUzZjAzMC4uYmJiZWVhOTU0NWQ2YjQ0ZGE3NTJjMjAwZDlkY2JjZmI5MDY2YTRkNiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZG9tL3NoYXBlcy10ZXN0
LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RvbS9zaGFwZXMtdGVz
dC5qcwpAQCAtMSw0ICsxLDQgQEAKLUluc3BlY3RvclRlc3RQcm94eS5yZWdpc3RlckluaXRpYWxp
emVyKGZ1bmN0aW9uKCkgeworVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplcihmdW5jdGlvbigp
IHsKIAogSW5zcGVjdG9yVGVzdC5TaGFwZXMgPSB7CiAgICAgZ2V0U2hhcGVPdXRzaWRlSW5mb0Zv
clNlbGVjdG9yOiBmdW5jdGlvbihzZWxlY3RvciwgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXBsYXkvcmVwbGF5LXRlc3QuanMgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXBsYXkvcmVwbGF5LXRlc3QuanMKaW5kZXgg
MzMzZDc4MzQzZDVlZjc0NjlhYmEwOTEyOGEwYmFlN2Y0NGMxODA0Ni4uYzhmNGE4MzlkZWQwZTdj
ZjU4MzE4YmIyODBjNDQ4MzZmNGVjMDMyYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvcmVwbGF5L3JlcGxheS10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL3JlcGxheS9yZXBsYXktdGVzdC5qcwpAQCAtMSw0ICsxLDQgQEAK
LUluc3BlY3RvclRlc3RQcm94eS5yZWdpc3RlckluaXRpYWxpemVyKGZ1bmN0aW9uKCkgeworVGVz
dFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplcihmdW5jdGlvbigpIHsKIAogSW5zcGVjdG9yVGVzdC5S
ZXBsYXkgPSB7fTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzCmluZGV4IDAyZGVhYjA0ODViZDYw
MDJlNTBkMjQwYjk1MTgyZTY0Mjg5NWMyYzEuLmNjMzU1Y2QwYzFmZWNiYzI3MzIzYWVkZjlhZjdh
MGQwYzIxMjIxMzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsMTMgKzI0LDEz
IEBACiAgKi8KIAogLy8gVGhpcyBuYW1lc3BhY2UgaXMgaW5qZWN0ZWQgaW50byBldmVyeSB0ZXN0
IHBhZ2UuIEl0cyBmdW5jdGlvbnMgYXJlIGludm9rZWQgYnkKLS8vIEluc3BlY3RvclRlc3QgbWV0
aG9kcyBvbiB0aGUgaW5zcGVjdG9yIHBhZ2UgdmlhIFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZSgpIGNh
bGxzLgotSW5zcGVjdG9yVGVzdFByb3h5ID0ge307Ci1JbnNwZWN0b3JUZXN0UHJveHkuX2luaXRp
YWxpemVycyA9IFtdOworLy8gSW5zcGVjdG9yVGVzdCBtZXRob2RzIG9uIHRoZSBpbnNwZWN0b3Ig
cGFnZSB2aWEgYSBUZXN0SGFybmVzcyBzdWJjbGFzcy4KK1Rlc3RQYWdlID0ge307CitUZXN0UGFn
ZS5faW5pdGlhbGl6ZXJzID0gW107CiAKIC8vIEhlbHBlciBzY3JpcHRzIGxpa2UgYGRlYnVnZ2Vy
LXRlc3QuanNgIG11c3QgcmVnaXN0ZXIgdGhlaXIgaW5pdGlhbGl6YXRpb24KIC8vIGZ1bmN0aW9u
IHdpdGggdGhpcyBtZXRob2Qgc28gaXQgd2lsbCBiZSBtYXJzaGFsbGVkIHRvIHRoZSBpbnNwZWN0
b3IgcGFnZS4KLUluc3BlY3RvclRlc3RQcm94eS5yZWdpc3RlckluaXRpYWxpemVyID0gZnVuY3Rp
b24oaW5pdGlhbGl6ZXIpCitUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyID0gZnVuY3Rpb24o
aW5pdGlhbGl6ZXIpCiB7CiAgICAgaWYgKHR5cGVvZiBpbml0aWFsaXplciA9PT0gImZ1bmN0aW9u
IikKICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZXJzLnB1c2goaW5pdGlhbGl6ZXIudG9TdHJpbmco
KSk7CkBAIC01Myw2ICs1MywxMiBAQCBmdW5jdGlvbiBydW5UZXN0KCkKICAgICB3aW5kb3cuaW50
ZXJuYWxzLnNldEluc3BlY3RvcklzVW5kZXJUZXN0KHRydWUpOwogICAgIHRlc3RSdW5uZXIuc2hv
d1dlYkluc3BlY3RvcigpOwogCisgICAgbGV0IHRlc3RGdW5jdGlvbiA9IHdpbmRvdy50ZXN0Owor
ICAgIGlmICh0eXBlb2YgdGVzdEZ1bmN0aW9uICE9PSAiZnVuY3Rpb24iKSB7CisgICAgICAgIGFs
ZXJ0KCJGYWlsZWQgdG8gc2VuZCB0ZXN0KCkgYmVjYXVzZSBpdCBpcyBub3QgYSBmdW5jdGlvbi4i
KTsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorCiAgICAgZnVuY3Rp
b24gcnVuSW5pdGlhbGl6YXRpb25NZXRob2RzSW5Gcm9udGVuZChpbml0aWFsaXplcnNBcnJheSkK
ICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QudGVzdFBhZ2VEaWRMb2FkKCk7CkBAIC02Miw3
ICs2OCw3IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgICAgICBpZiAoSW5zcGVjdG9yVGVzdC5k
aWRJbmplY3RUZXN0Q29kZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBmb3IgKHZh
ciBpbml0aWFsaXplciBvZiBpbml0aWFsaXplcnNBcnJheSkgeworICAgICAgICBmb3IgKGxldCBp
bml0aWFsaXplciBvZiBpbml0aWFsaXplcnNBcnJheSkgewogICAgICAgICAgICAgdHJ5IHsKICAg
ICAgICAgICAgICAgICBpbml0aWFsaXplcigpOwogICAgICAgICAgICAgfSBjYXRjaCAoZSkgewpA
QCAtODIsNDMgKzg4LDQxIEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgICAgICB0cnkgewogICAg
ICAgICAgICAgdGVzdEZ1bmN0aW9uKCk7CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiB0aGUgcmVkaXJlY3RlZCBjb25zb2xlIG1ldGhvZHMgZG8gbm90IGZvcndh
cmQgYWRkaXRpb25hbCBhcmd1bWVudHMuCiAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJFeGNl
cHRpb24gZHVyaW5nIHRlc3QgZXhlY3V0aW9uOiAiICsgZSwgZS5zdGFjayB8fCAiKG5vIHN0YWNr
IHRyYWNlKSIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKICAg
ICAgICAgfQogICAgIH0KIAotICAgIHZhciBjb2RlU3RyaW5nVG9FdmFsdWF0ZSA9ICIoIiArIHJ1
bkluaXRpYWxpemF0aW9uTWV0aG9kc0luRnJvbnRlbmQudG9TdHJpbmcoKSArICIpKFsiICsgSW5z
cGVjdG9yVGVzdFByb3h5Ll9pbml0aWFsaXplcnMgKyAiXSk7IjsKLSAgICB0ZXN0UnVubmVyLmV2
YWx1YXRlSW5XZWJJbnNwZWN0b3IoY29kZVN0cmluZ1RvRXZhbHVhdGUpOworICAgIGxldCBpbml0
aWFsaXphdGlvbkNvZGVTdHJpbmcgPSBgKCR7cnVuSW5pdGlhbGl6YXRpb25NZXRob2RzSW5Gcm9u
dGVuZC50b1N0cmluZygpfSkoWyR7VGVzdFBhZ2UuX2luaXRpYWxpemVyc31dKTtgOworICAgIGxl
dCB0ZXN0RnVuY3Rpb25Db2RlU3RyaW5nID0gYCgke3J1blRlc3RNZXRob2RJbkZyb250ZW5kLnRv
U3RyaW5nKCl9KSgke3Rlc3RGdW5jdGlvbi50b1N0cmluZygpfSk7YDsKIAotICAgIC8vIGB0ZXN0
YCByZWZlcnMgdG8gYSBmdW5jdGlvbiBkZWZpbmVkIGluIGdsb2JhbCBzY29wZSBpbiB0aGUgdGVz
dCBIVE1MIHBhZ2UuCi0gICAgY29kZVN0cmluZ1RvRXZhbHVhdGUgPSAiKCIgKyBydW5UZXN0TWV0
aG9kSW5Gcm9udGVuZC50b1N0cmluZygpICsgIikoIiArIHRlc3QudG9TdHJpbmcoKSArICIpOyI7
Ci0gICAgdGVzdFJ1bm5lci5ldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGNvZGVTdHJpbmdUb0V2YWx1
YXRlKTsKKyAgICB0ZXN0UnVubmVyLmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoaW5pdGlhbGl6YXRp
b25Db2RlU3RyaW5nKTsKKyAgICB0ZXN0UnVubmVyLmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IodGVz
dEZ1bmN0aW9uQ29kZVN0cmluZyk7CiB9CiAKLUluc3BlY3RvclRlc3RQcm94eS5jb21wbGV0ZVRl
c3QgPSBmdW5jdGlvbigpCitUZXN0UGFnZS5jb21wbGV0ZVRlc3QgPSBmdW5jdGlvbigpCiB7CiAg
ICAgLy8gRG9uJ3QgdHJ5IHRvIHVzZSB0ZXN0UnVubmVyIGlmIHJ1bm5pbmcgdGhyb3VnaCB0aGUg
YnJvd3Nlci4KICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICByZXR1cm47CiAK
ICAgICAvLyBDbG9zZSBpbnNwZWN0b3IgYXN5bmNocm91c2x5IGluIGNhc2Ugd2Ugd2FudCB0byB0
ZXN0IHRlYXItZG93biBiZWhhdmlvci4KLSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAg
IHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICB0ZXN0UnVubmVyLmNsb3NlV2ViSW5zcGVjdG9y
KCk7Ci0gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgfSwgMCk7CisgICAgICAgIHNldFRpbWVvdXQoKCkg
PT4geyB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsgfSwgMCk7CiAgICAgfSwgMCk7CiB9CiAKIC8v
IExvZ3MgbWVzc2FnZSB0byB1bmJ1ZmZlcmVkIHByb2Nlc3Mgc3Rkb3V0LCBhdm9pZGluZyB0aW1l
b3V0cy4KIC8vIG9ubHkgYmUgdXNlZCB0byBkZWJ1ZyB0ZXN0cyBhbmQgbm90IHRvIHByb2R1Y2Ug
bm9ybWFsIHRlc3Qgb3V0cHV0LgotSW5zcGVjdG9yVGVzdFByb3h5LmRlYnVnTG9nID0gZnVuY3Rp
b24obWVzc2FnZSkKK1Rlc3RQYWdlLmRlYnVnTG9nID0gZnVuY3Rpb24obWVzc2FnZSkKIHsKICAg
ICB3aW5kb3cuYWxlcnQobWVzc2FnZSk7CiB9CiAKIC8vIEFkZCBhbmQgY2xlYXIgdGVzdCBvdXRw
dXQgZnJvbSB0aGUgcmVzdWx0cyB3aW5kb3cuCi1JbnNwZWN0b3JUZXN0UHJveHkuYWRkUmVzdWx0
ID0gZnVuY3Rpb24odGV4dCkKK1Rlc3RQYWdlLmFkZFJlc3VsdCA9IGZ1bmN0aW9uKHRleHQpCiB7
CiAgICAgLy8gRm9yIGVhcmx5IGVycm9ycyB0cmlnZ2VyZWQgd2hlbiBsb2FkaW5nIHRoZSB0ZXN0
IHBhZ2UsIHdyaXRlIHRvIHN0ZGVyci4KICAgICBpZiAoIWRvY3VtZW50LmJvZHkpIHsKQEAgLTEz
NSwyNCArMTM5LDI0IEBAIEluc3BlY3RvclRlc3RQcm94eS5hZGRSZXN1bHQgPSBmdW5jdGlvbih0
ZXh0KQogICAgIHRoaXMuX3Jlc3VsdEVsZW1lbnQuYXBwZW5kKHRleHQsIGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImJyIikpOwogfQogCi1JbnNwZWN0b3JUZXN0UHJveHkubmVlZFRvU2FuaXRpemVV
bmNhdWdodEV4Y2VwdGlvblVSTHMgPSBmYWxzZTsKK1Rlc3RQYWdlLm5lZWRUb1Nhbml0aXplVW5j
YXVnaHRFeGNlcHRpb25VUkxzID0gZmFsc2U7CiAKLUluc3BlY3RvclRlc3RQcm94eS5yZXBvcnRV
bmNhdWdodEV4Y2VwdGlvbiA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHVybCwgbGluZU51bWJlcikKK1Rl
c3RQYWdlLnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uID0gZnVuY3Rpb24obWVzc2FnZSwgdXJsLCBs
aW5lTnVtYmVyKQogewotICAgIGlmIChJbnNwZWN0b3JUZXN0UHJveHkubmVlZFRvU2FuaXRpemVV
bmNhdWdodEV4Y2VwdGlvblVSTHMpIHsKLSAgICAgICAgaWYgKHR5cGVvZiB1cmwgPT0gInN0cmlu
ZyIpIHsKLSAgICAgICAgICAgIHZhciBsYXN0U2xhc2ggPSB1cmwubGFzdEluZGV4T2YoIi8iKTsK
LSAgICAgICAgICAgIHZhciBsYXN0QmFja1NsYXNoID0gdXJsLmxhc3RJbmRleE9mKCJcXCIpOwot
ICAgICAgICAgICAgdmFyIGxhc3RQYXRoU2VwYXJhdG9yID0gTWF0aC5tYXgobGFzdFNsYXNoLCBs
YXN0QmFja1NsYXNoKTsKKyAgICBpZiAoVGVzdFBhZ2UubmVlZFRvU2FuaXRpemVVbmNhdWdodEV4
Y2VwdGlvblVSTHMpIHsKKyAgICAgICAgaWYgKHR5cGVvZiB1cmwgPT09ICJzdHJpbmciKSB7Cisg
ICAgICAgICAgICBsZXQgbGFzdFNsYXNoID0gdXJsLmxhc3RJbmRleE9mKCIvIik7CisgICAgICAg
ICAgICBsZXQgbGFzdEJhY2tTbGFzaCA9IHVybC5sYXN0SW5kZXhPZigiXFwiKTsKKyAgICAgICAg
ICAgIGxldCBsYXN0UGF0aFNlcGFyYXRvciA9IE1hdGgubWF4KGxhc3RTbGFzaCwgbGFzdEJhY2tT
bGFzaCk7CiAgICAgICAgICAgICBpZiAobGFzdFBhdGhTZXBhcmF0b3IgPiAwKQogICAgICAgICAg
ICAgICAgIHVybCA9IHVybC5zdWJzdHIobGFzdFBhdGhTZXBhcmF0b3IgKyAxKTsKICAgICAgICAg
fQogICAgIH0KIAotICAgIHZhciByZXN1bHQgPSAiVW5jYXVnaHQgZXhjZXB0aW9uIGluIHRlc3Qg
cGFnZTogIiArIG1lc3NhZ2UgKyAiIFsiICsgdXJsICsgIjoiICsgbGluZU51bWJlciArICJdIjsK
LSAgICBJbnNwZWN0b3JUZXN0UHJveHkuYWRkUmVzdWx0KHJlc3VsdCk7Ci0gICAgSW5zcGVjdG9y
VGVzdFByb3h5LmNvbXBsZXRlVGVzdCgpOworICAgIGxldCByZXN1bHQgPSBgVW5jYXVnaHQgZXhj
ZXB0aW9uIGluIHRlc3QgcGFnZTogJHttZXNzYWdlfSBbJHt1cmx9OiR7bGluZU51bWJlcn1dYDsK
KyAgICBUZXN0UGFnZS5hZGRSZXN1bHQocmVzdWx0KTsKKyAgICBUZXN0UGFnZS5jb21wbGV0ZVRl
c3QoKTsKIH0KIAogLy8gQ2F0Y2ggc3ludGF4IGVycm9ycywgdHlwZSBlcnJvcnMsIGFuZCBvdGhl
ciBleGNlcHRpb25zLiBSdW4gdGhpcyBiZWZvcmUgbG9hZGluZyBvdGhlciBmaWxlcy4KLXdpbmRv
dy5vbmVycm9yID0gSW5zcGVjdG9yVGVzdFByb3h5LnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uOwor
d2luZG93Lm9uZXJyb3IgPSBUZXN0UGFnZS5yZXBvcnRVbmNhdWdodEV4Y2VwdGlvbi5iaW5kKFRl
c3RQYWdlKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVh
a3BvaW50LWFjdGlvbi1ldmFsLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
YnJlYWtwb2ludC1hY3Rpb24tZXZhbC5odG1sCmluZGV4IGFjNzE1M2MzYjAyMjUxMDBkY2YyMjlh
ZjNlN2YyMzQwOWNmYjMxMmMuLjUxODg5MTJmNTkzZGQzMzg5YWYyOWRiOTdlNGYyOWVlY2RmOTY1
NGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50
LWFjdGlvbi1ldmFsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2Jy
ZWFrcG9pbnQtYWN0aW9uLWV2YWwuaHRtbApAQCAtMTMsOCArMTMsOCBAQCBmdW5jdGlvbiBydW5C
cmVha3BvaW50QWN0aW9ucygpCiAKIGZ1bmN0aW9uIGFjdGlvbihhLCBiKQogewotICAgIEluc3Bl
Y3RvclRlc3RQcm94eS5hZGRSZXN1bHQoIkJyZWFrcG9pbnQgYWN0aW9uIGV2YWx1YXRlZC4gYToo
IiArIGEgKyAiKSBiOigiICsgYiArICIpIik7Ci0gICAgSW5zcGVjdG9yVGVzdFByb3h5LmNvbXBs
ZXRlVGVzdCgpOworICAgIFRlc3RQYWdlLmFkZFJlc3VsdCgiQnJlYWtwb2ludCBhY3Rpb24gZXZh
bHVhdGVkLiBhOigiICsgYSArICIpIGI6KCIgKyBiICsgIikiKTsKKyAgICBUZXN0UGFnZS5jb21w
bGV0ZVRlc3QoKTsKIH0KIAogZnVuY3Rpb24gdGVzdCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvcmVzb3VyY2VzL2JyZWFrLW9uLWV4Y2VwdGlvbi10ZXN0cy5q
cyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZXMvYnJlYWstb24tZXhj
ZXB0aW9uLXRlc3RzLmpzCmluZGV4IGFmOTVlNDIyNGM0NjE3MGVjYzBiMzJlNjVkOTYzYWNlZjdl
NzJhZGQuLmFlOWUzYmEzYzZjNjYxZWI2ZGI3OGM2ZmUyMjBmODgzZTJjZmE0ZTggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZXMvYnJlYWstb24tZXhj
ZXB0aW9uLXRlc3RzLmpzCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNv
dXJjZXMvYnJlYWstb24tZXhjZXB0aW9uLXRlc3RzLmpzCkBAIC0xLDQgKzEsNCBAQAotSW5zcGVj
dG9yVGVzdFByb3h5Lm5lZWRUb1Nhbml0aXplVW5jYXVnaHRFeGNlcHRpb25VUkxzID0gdHJ1ZTsK
K1Rlc3RQYWdlLm5lZWRUb1Nhbml0aXplVW5jYXVnaHRFeGNlcHRpb25VUkxzID0gdHJ1ZTsKIAog
dmFyIGFyciA9IFsgMSwgMiwgMyBdOwogdmFyIG1hcERhdGEgPSBbWyAiYSIsIGFyciBdXTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZXMvc2NyaXB0
LWZvci1icmVha3BvaW50LWFjdGlvbnMuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvcmVzb3VyY2VzL3NjcmlwdC1mb3ItYnJlYWtwb2ludC1hY3Rpb25zLmpzCmluZGV4IGQwYTA2
YTgyOWM4YzFmY2I5ODdhM2JlYjNjZjc0MTIxZmIxNDlhMGYuLmYxMTY4YzQ3MzUyMjBmN2E5MzFj
YjQxNjkyZmMxNmJiMmM4YmM5NzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9yZXNvdXJjZXMvc2NyaXB0LWZvci1icmVha3BvaW50LWFjdGlvbnMuanMKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlcy9zY3JpcHQtZm9yLWJyZWFr
cG9pbnQtYWN0aW9ucy5qcwpAQCAtMSw1ICsxLDUgQEAKIGZ1bmN0aW9uIGJyZWFrcG9pbnRBY3Rp
b25zKGEsIGIpCiB7CiAgICAgLy8gT25seSBwcmVzZXJ2ZSB0aGlzIG1lc3NhZ2Ugb24gdGhlIGN1
cnJlbnQgdGVzdCBwYWdlIGxvYWQuCi0gICAgSW5zcGVjdG9yVGVzdFByb3h5LmFkZFJlc3VsdCgi
aW5zaWRlIGJyZWFrcG9pbnRBY3Rpb25zIGE6KCIgKyBhICsgIikgYjooIiArIGIgKyAiKSIpOwor
ICAgIFRlc3RQYWdlLmFkZFJlc3VsdCgiaW5zaWRlIGJyZWFrcG9pbnRBY3Rpb25zIGE6KCIgKyBh
ICsgIikgYjooIiArIGIgKyAiKSIpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3NlYXJjaC1zY3JpcHRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvc2VhcmNoLXNjcmlwdHMuaHRtbAppbmRleCA5NTY5NTBlYmM2MTVkYTQ3YzE0NmFm
MTFkOTdhY2U5NWUwMzhjMjhkLi40OWFkODRmNmE1ZThmNzlhZjMzNDBiNzkwNjg0MGFlOTY5ZGVk
Nzk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2VhcmNoLXNj
cmlwdHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2VhcmNoLXNj
cmlwdHMuaHRtbApAQCAtNDQsNyArNDQsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgfSk7
CiAgICAgfSk7CiAKLSAgICBJbnNwZWN0b3JUZXN0LmV2ZW50RGlzcGF0Y2hlci5hZGRFdmVudExp
c3RlbmVyKEluc3BlY3RvclRlc3QuRXZlbnREaXNwYXRjaGVyLkV2ZW50LlRlc3RQYWdlRGlkTG9h
ZCwgZnVuY3Rpb24oKSB7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRFdmVudExpc3RlbmVyKEZyb250
ZW5kVGVzdEhhcm5lc3MuRXZlbnQuVGVzdFBhZ2VEaWRMb2FkLCAoKSA9PiB7CiAgICAgICAgIElu
c3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoInBlcmZvcm1FdmFscygpIik7CiAgICAgfSk7CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXBsYXkvd2luZG93LW5hdmlnYXRv
ci1wbHVnaW5zLW1lbW9pemVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVwbGF5L3dp
bmRvdy1uYXZpZ2F0b3ItcGx1Z2lucy1tZW1vaXplZC5odG1sCmluZGV4IGZmNWRlZDZiMjIzZWJj
MjQxNDI4NTgyMzgwODY1NjJiNDRiNDFjNWQuLjNiYjJiMzk3ZTM0NTJkOGIxMDhhMzBlOWUxZmM5
NzdlZDIyMzg4YjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXBsYXkvd2lu
ZG93LW5hdmlnYXRvci1wbHVnaW5zLW1lbW9pemVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3JlcGxheS93aW5kb3ctbmF2aWdhdG9yLXBsdWdpbnMtbWVtb2l6ZWQuaHRtbApAQCAt
NzcsMTIgKzc3LDEyIEBAIGZ1bmN0aW9uIGR1bXBOb25kZXRlcm1pbmlzdGljU3RhdGUoKQogLy8g
VGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgaW4gdGhlIHByZXZpb3VzIG1haW4gZnJhbWUgcHJp
b3IgdG8gdGhlIGluaXRpYWwKIC8vIG5hdmlnYXRpb24gdGhhdCBiZWdpbnMgY2FwdHVyaW5nIG9y
IHJlcGxheWluZy4gQ2FyZWZ1bCwgaGVhcCBzdGF0ZSB3aWxsIGJlIGxvc3QuCiBmdW5jdGlvbiBz
ZXR1cFByZUNhcHR1cmUoKSB7Ci0gICAgSW5zcGVjdG9yVGVzdFByb3h5LmFkZFJlc3VsdCgiRW5h
YmxpbmcgcGx1Z2lucyBiZWZvcmUgY2FwdHVyZS4iKTsKKyAgICBUZXN0UGFnZS5hZGRSZXN1bHQo
IkVuYWJsaW5nIHBsdWdpbnMgYmVmb3JlIGNhcHR1cmUuIik7CiAgICAgdGVzdFJ1bm5lci5zZXRQ
bHVnaW5zRW5hYmxlZChmYWxzZSk7CiB9CiAKIGZ1bmN0aW9uIHNldHVwUHJlUmVwbGF5KCkgewot
ICAgIEluc3BlY3RvclRlc3RQcm94eS5hZGRSZXN1bHQoIkRpc2FibGluZyBwbHVnaW5zIGJlZm9y
ZSByZXBsYXkuIik7CisgICAgVGVzdFBhZ2UuYWRkUmVzdWx0KCJEaXNhYmxpbmcgcGx1Z2lucyBi
ZWZvcmUgcmVwbGF5LiIpOwogICAgIHRlc3RSdW5uZXIuc2V0UGx1Z2luc0VuYWJsZWQodHJ1ZSk7
CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9kZWJ1Z2dl
ci1wYXVzZWQtd2hpbGUtcmVjb3JkaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGlt
ZWxpbmUvZGVidWdnZXItcGF1c2VkLXdoaWxlLXJlY29yZGluZy5odG1sCmluZGV4IGI2NzM0Mzgx
MWFhMWUwY2I5Mzc5NjMwNjA2NzZiZTlhNDk2MDQwNGQuLmU5YWM5YjNmNjE4YTFlY2NjMmRjNmU0
ZWNhMTJhNDJjM2MzZTA0MjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1l
bGluZS9kZWJ1Z2dlci1wYXVzZWQtd2hpbGUtcmVjb3JkaW5nLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3RpbWVsaW5lL2RlYnVnZ2VyLXBhdXNlZC13aGlsZS1yZWNvcmRpbmcuaHRt
bApAQCAtMTUsMTMgKzE1LDEzIEBAIGZ1bmN0aW9uIGluc3RhbGxUaW1lcigpCiAKIGZ1bmN0aW9u
IGFkZChhLCBiKQogewotICAgIEluc3BlY3RvclRlc3RQcm94eS5hZGRSZXN1bHQoIkNhbGxpbmcg
YWRkKCk6ICIgKyBhICsgIiArICIgKyBiKTsKKyAgICBUZXN0UGFnZS5hZGRSZXN1bHQoIkNhbGxp
bmcgYWRkKCk6ICIgKyBhICsgIiArICIgKyBiKTsKICAgICByZXR1cm4gYSArIGI7CiB9CiAKIGZ1
bmN0aW9uIG11bChhLCBiKQogewotICAgIEluc3BlY3RvclRlc3RQcm94eS5hZGRSZXN1bHQoIkNh
bGxpbmcgbXVsKCk6ICIgKyBhICsgIiAqICIgKyBiKTsKKyAgICBUZXN0UGFnZS5hZGRSZXN1bHQo
IkNhbGxpbmcgbXVsKCk6ICIgKyBhICsgIiAqICIgKyBiKTsKICAgICByZXR1cm4gYSAqIGI7CiB9
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9leGNlcHRpb24t
aW4taW5qZWN0ZWQtc2NyaXB0LXdoaWxlLXJlY29yZGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3RpbWVsaW5lL2V4Y2VwdGlvbi1pbi1pbmplY3RlZC1zY3JpcHQtd2hpbGUtcmVjb3Jk
aW5nLmh0bWwKaW5kZXggOWI1ZmNmOTNhNDI1ODkzM2RjMmIzZWVlNzcxYjhjNTEyNDMzNmJkMy4u
MTllMzdjODBjNDRmYmFmOWUxOGU4N2Q3OGZkMmE3YzU3YWU3MjU0NyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL2V4Y2VwdGlvbi1pbi1pbmplY3RlZC1zY3JpcHQt
d2hpbGUtcmVjb3JkaW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5l
L2V4Y2VwdGlvbi1pbi1pbmplY3RlZC1zY3JpcHQtd2hpbGUtcmVjb3JkaW5nLmh0bWwKQEAgLTE1
LDEzICsxNSwxMyBAQCBmdW5jdGlvbiBpbnN0YWxsVGltZXIoKQogCiBmdW5jdGlvbiBhZGQoYSwg
YikKIHsKLSAgICBJbnNwZWN0b3JUZXN0UHJveHkuYWRkUmVzdWx0KCJDYWxsaW5nIGFkZCgpOiAi
ICsgYSArICIgKyAiICsgYik7CisgICAgVGVzdFBhZ2UuYWRkUmVzdWx0KCJDYWxsaW5nIGFkZCgp
OiAiICsgYSArICIgKyAiICsgYik7CiAgICAgcmV0dXJuIGEgKyBiOwogfQogCiBmdW5jdGlvbiBt
dWwoYSwgYikKIHsKLSAgICBJbnNwZWN0b3JUZXN0UHJveHkuYWRkUmVzdWx0KCJDYWxsaW5nIG11
bCgpOiAiICsgYSArICIgKiAiICsgYik7CisgICAgVGVzdFBhZ2UuYWRkUmVzdWx0KCJDYWxsaW5n
IG11bCgpOiAiICsgYSArICIgKiAiICsgYik7CiAgICAgcmV0dXJuIGEgKiBiOwogfQogCg==
</data>
<flag name="review"
          id="284547"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>