<?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>143778</bug_id>
          
          <creation_ts>2015-04-15 09:33:55 -0700</creation_ts>
          <short_desc>streams/reference-implementation/readable-stream.html is flaky</short_desc>
          <delta_ts>2015-04-17 03:04:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>143774</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Xabier Rodríguez Calvar">calvaris</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1085507</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-15 09:33:55 -0700</bug_when>
    <thetext>streams/reference-implementation/readable-stream.html frequently fails on bots, especially slower ones: https://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=streams%2Freference-implementation%2Freadable-stream.html

@@ -10,12 +10,12 @@
 FAIL ReadableStream should be able to enqueue different objects. read is not implemented
 PASS ReadableStream: if start throws an error, it should be re-thrown 
 FAIL ReadableStream: if pull rejects, it should error the stream read is not implemented
-FAIL ReadableStream: should only call pull once upon starting the stream assert_equals: pull should be called once start finishes expected 1 but got 0
+FAIL ReadableStream: should only call pull once upon starting the stream assert_equals: pull should be called exactly once expected 1 but got 0
 FAIL ReadableStream: should only call pull once for a forever-empty stream, even after reading read is not implemented
 FAIL ReadableStream: should only call pull once on a non-empty stream read from before start fulfills read is not implemented
-FAIL ReadableStream: should only call pull twice on a non-empty stream read from after start fulfills assert_equals: pull should be called once start finishes expected 1 but got 0
-FAIL ReadableStream: should call pull in reaction to read()ing the last chunk, if not draining assert_equals: pull should have been called once after read expected 1 but got 0
-FAIL ReadableStream: should not call pull() in reaction to read()ing the last chunk, if draining assert_equals: pull should have been called once after read expected 1 but got 0
+FAIL ReadableStream: should only call pull twice on a non-empty stream read from after start fulfills assert_equals: pull should be called exactly twice expected 2 but got 0
+FAIL ReadableStream: should call pull in reaction to read()ing the last chunk, if not draining assert_equals: pull should be called exactly thrice expected 3 but got 0
+FAIL ReadableStream: should not call pull() in reaction to read()ing the last chunk, if draining assert_equals: pull should be called exactly twice expected 2 but got 0
 FAIL ReadableStream: should not call pull until the previous pull call&apos;s promise fulfills read is not implemented
 FAIL ReadableStream: should pull after start, and after every read read is not implemented
 FAIL ReadableStream: should not call pull after start if the stream is now closed read is not implemented</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085509</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-15 09:37:41 -0700</bug_when>
    <thetext>Marked as flaky in r182843.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086261</commentid>
    <comment_count>2</comment_count>
      <attachid>251005</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-04-17 01:03:44 -0700</bug_when>
    <thetext>Created attachment 251005
Patch

Comment out flaky tests while working on a more complete solution on bug 143774.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086263</commentid>
    <comment_count>3</comment_count>
      <attachid>251005</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-04-17 01:22:41 -0700</bug_when>
    <thetext>Comment on attachment 251005
Patch

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

&gt; LayoutTests/ChangeLog:9
&gt; +

Can you add the reason of the flakiness in the changelog: order of execution of setTimeout callbacks and promise resolution callbacks is not deterministic, making first failing assertion changing.
Also, there may be other tests in this file that need to be commented out.
Have you checked all async tests?

&gt; LayoutTests/streams/reference-implementation/readable-stream-expected.txt:13
&gt;  FAIL ReadableStream: should only call pull once for a forever-empty stream, even after reading read is not implemented

Can this test be flakky?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086265</commentid>
    <comment_count>4</comment_count>
      <attachid>251006</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-04-17 01:55:01 -0700</bug_when>
    <thetext>Created attachment 251006
Patch

Comment out more possibly flaky tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086266</commentid>
    <comment_count>5</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-04-17 01:58:28 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Can you add the reason of the flakiness in the changelog: order of execution
&gt; of setTimeout callbacks and promise resolution callbacks is not
&gt; deterministic, making first failing assertion changing.

Done.

&gt; Also, there may be other tests in this file that need to be commented out.
&gt; Have you checked all async tests?

I checked all tests relying on a timeout to call done(), specially the ones that check some condition prior to finish.

&gt; &gt; LayoutTests/streams/reference-implementation/readable-stream-expected.txt:13
&gt; &gt;  FAIL ReadableStream: should only call pull once for a forever-empty stream, even after reading read is not implemented
&gt; 
&gt; Can this test be flakky?

It was subject to, yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086268</commentid>
    <comment_count>6</comment_count>
      <attachid>251006</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-04-17 02:07:42 -0700</bug_when>
    <thetext>Comment on attachment 251006
Patch

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

&gt; LayoutTests/ChangeLog:15
&gt; +

The explanation is a bit hard to understand for me as written.
It seems more related to promise resolution/setTimeout callbacks being run in an undeterministic way.
Additionaly, even if we had all features implemented correctly, we may hit done() before executing other callbacks, hence not executing some important code like checking assertions...

Let&apos;s ship the changes and check whether flakiness disappear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086269</commentid>
    <comment_count>7</comment_count>
      <attachid>251008</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-04-17 02:16:21 -0700</bug_when>
    <thetext>Created attachment 251008
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086280</commentid>
    <comment_count>8</comment_count>
      <attachid>251008</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-17 03:04:39 -0700</bug_when>
    <thetext>Comment on attachment 251008
Patch for landing

Clearing flags on attachment: 251008

Committed r182942: &lt;http://trac.webkit.org/changeset/182942&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086281</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-17 03:04:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251005</attachid>
            <date>2015-04-17 01:03:44 -0700</date>
            <delta_ts>2015-04-17 01:54:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143778-20150417100244.patch</filename>
            <type>text/plain</type>
            <size>13300</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyODgxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjQ1NGYwNTRiNjAxNTNlY2U4YmMz
N2Y5NGU3NWZmNWRiYmEyODYwOS4uMzIyY2EyY2I2YzkwNDUxYmZlNzdlMWY1NDIyNjE3YjA0ODIw
ZTgyYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE1LTA0LTE3ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+IGFuZCBYYWJpZXIgUm9kcmlndWV6IENhbHZhciA8
Y2FsdmFyaXNAaWdhbGlhLmNvbT4KKworICAgICAgICBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbCBpcyBmbGFreQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzNzc4CisKKyAgICAgICAgVW5yZXZpZXdl
ZC4KKworICAgICAgICBDb21tZW50IG91dCBmbGFreSBzdWJ0ZXN0cyB3aGlsZSB3b3JraW5nIG9u
IGEgbW9yZSBjb21wbGV0ZSBzb2x1dGlvbiBvbiBidWcgMTQzNzc0LgorCisgICAgICAgICogc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1z
dHJlYW0uaHRtbDoKKwogMjAxNS0wNC0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBhIGNvbnNvbGUgbWVzc2FnZSB3aGVuIGEgc3R5bGVzaGVldCBpcyBu
b3QgcGFyc2VkIGR1ZSB0byBpbnZhbGlkIE1JTUUgdHlwZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3Jl
YWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQKaW5kZXggOWVlZjFmMjUwZmZmNTgwMDNiODQxNWVk
MTE5ZGM3MDViMTgwM2ZmYS4uMzRlYzhhNjI2MTU1ZjcxMjFlYzlmM2U1MWJiYmZhZWRiYzY2Yjdj
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRp
b24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0CkBA
IC0xMCwxMiArMTAsOCBAQCBUSU1FT1VUIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBh
YmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCBUZQogRkFJTCBSZWFkYWJsZVN0
cmVhbSBzaG91bGQgYmUgYWJsZSB0byBlbnF1ZXVlIGRpZmZlcmVudCBvYmplY3RzLiByZWFkIGlz
IG5vdCBpbXBsZW1lbnRlZAogUEFTUyBSZWFkYWJsZVN0cmVhbTogaWYgc3RhcnQgdGhyb3dzIGFu
IGVycm9yLCBpdCBzaG91bGQgYmUgcmUtdGhyb3duIAogRkFJTCBSZWFkYWJsZVN0cmVhbTogaWYg
cHVsbCByZWplY3RzLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSByZWFkIGlzIG5vdCBpbXBs
ZW1lbnRlZAotRkFJTCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ug
dXBvbiBzdGFydGluZyB0aGUgc3RyZWFtIGFzc2VydF9lcXVhbHM6IHB1bGwgc2hvdWxkIGJlIGNh
bGxlZCBvbmNlIHN0YXJ0IGZpbmlzaGVzIGV4cGVjdGVkIDEgYnV0IGdvdCAwCiBGQUlMIFJlYWRh
YmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSBmb3IgYSBmb3JldmVyLWVtcHR5
IHN0cmVhbSwgZXZlbiBhZnRlciByZWFkaW5nIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCiBGQUlM
IFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0
eSBzdHJlYW0gcmVhZCBmcm9tIGJlZm9yZSBzdGFydCBmdWxmaWxscyByZWFkIGlzIG5vdCBpbXBs
ZW1lbnRlZAotRkFJTCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIHR3aWNl
IG9uIGEgbm9uLWVtcHR5IHN0cmVhbSByZWFkIGZyb20gYWZ0ZXIgc3RhcnQgZnVsZmlsbHMgYXNz
ZXJ0X2VxdWFsczogcHVsbCBzaG91bGQgYmUgY2FsbGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMgZXhw
ZWN0ZWQgMSBidXQgZ290IDAKLUZBSUwgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwg
aW4gcmVhY3Rpb24gdG8gcmVhZCgpaW5nIHRoZSBsYXN0IGNodW5rLCBpZiBub3QgZHJhaW5pbmcg
YXNzZXJ0X2VxdWFsczogcHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlIGFmdGVyIHJl
YWQgZXhwZWN0ZWQgMSBidXQgZ290IDAKLUZBSUwgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3Qg
Y2FsbCBwdWxsKCkgaW4gcmVhY3Rpb24gdG8gcmVhZCgpaW5nIHRoZSBsYXN0IGNodW5rLCBpZiBk
cmFpbmluZyBhc3NlcnRfZXF1YWxzOiBwdWxsIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2Ug
YWZ0ZXIgcmVhZCBleHBlY3RlZCAxIGJ1dCBnb3QgMAogRkFJTCBSZWFkYWJsZVN0cmVhbTogc2hv
dWxkIG5vdCBjYWxsIHB1bGwgdW50aWwgdGhlIHByZXZpb3VzIHB1bGwgY2FsbCdzIHByb21pc2Ug
ZnVsZmlsbHMgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgUmVhZGFibGVTdHJlYW06IHNo
b3VsZCBwdWxsIGFmdGVyIHN0YXJ0LCBhbmQgYWZ0ZXIgZXZlcnkgcmVhZCByZWFkIGlzIG5vdCBp
bXBsZW1lbnRlZAogRkFJTCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgYWZ0
ZXIgc3RhcnQgaWYgdGhlIHN0cmVhbSBpcyBub3cgY2xvc2VkIHJlYWQgaXMgbm90IGltcGxlbWVu
dGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRh
dGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNl
LWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1sCmluZGV4IDc2NDVhOWI5YjVmYTA5
ZjU3M2ZlOTgzMjA0OTkwYzFiOWM5ZDU4NmIuLjE1NDBkYjExMjRhNTBhYzYyZjg0NzVmYjlhODY3
NDk1Yjc1Y2NmNzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWlt
cGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVh
bXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1sCkBAIC0xNzQs
MjggKzE3NCwyOCBAQCB0ZXN0NC5zdGVwKGZ1bmN0aW9uKCkgewogICAgIH0pKTsKIH0pOwogCi12
YXIgdGVzdDUgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBw
dWxsIG9uY2UgdXBvbiBzdGFydGluZyB0aGUgc3RyZWFtJyk7Ci10ZXN0NS5zdGVwKGZ1bmN0aW9u
KCkgewotICAgIHZhciBwdWxsQ291bnQgPSAwOwotICAgIHZhciBzdGFydFByb21pc2UgPSBQcm9t
aXNlLnJlc29sdmUoKTsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAg
ICBzdGFydDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhcnRQcm9taXNlOwot
ICAgICAgICB9LAotICAgICAgICBwdWxsOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHB1bGxD
b3VudCsrOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBzdGFydFByb21pc2UudGhlbih0ZXN0
NS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50
LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMnKTsKLSAgICB9
KSk7Ci0KLSAgICBzZXRUaW1lb3V0KHRlc3Q1LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAg
ICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgZXhh
Y3RseSBvbmNlJyk7Ci0gICAgICAgIHRlc3Q1LmRvbmUoKTsKLSAgICB9KSwgc3RhbmRhcmRUaW1l
b3V0KTsKLX0pOworLy8gdmFyIHRlc3Q1ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNo
b3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIHVwb24gc3RhcnRpbmcgdGhlIHN0cmVhbScpOworLy8g
dGVzdDUuc3RlcChmdW5jdGlvbigpIHsKKy8vICAgICB2YXIgcHVsbENvdW50ID0gMDsKKy8vICAg
ICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7CisvLyAgICAgdmFyIHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKy8vICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkgeworLy8g
ICAgICAgICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKKy8vICAgICAgICAgfSwKKy8vICAgICAg
ICAgcHVsbDogZnVuY3Rpb24oKSB7CisvLyAgICAgICAgICAgICBwdWxsQ291bnQrKzsKKy8vICAg
ICAgICAgfQorLy8gICAgIH0pOworCisvLyAgICAgc3RhcnRQcm9taXNlLnRoZW4odGVzdDUuc3Rl
cF9mdW5jKGZ1bmN0aW9uKCkgeworLy8gICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwg
MSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBvbmNlIHN0YXJ0IGZpbmlzaGVzJyk7CisvLyAgICAg
fSkpOworCisvLyAgICAgc2V0VGltZW91dCh0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Cisv
LyAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2Fs
bGVkIGV4YWN0bHkgb25jZScpOworLy8gICAgICAgICB0ZXN0NS5kb25lKCk7CisvLyAgICAgfSks
IHN0YW5kYXJkVGltZW91dCk7CisvLyB9KTsKIAogdmFyIHRlc3Q2ID0gYXN5bmNfdGVzdCgnUmVh
ZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIGZvciBhIGZvcmV2ZXItZW1w
dHkgc3RyZWFtLCBldmVuIGFmdGVyIHJlYWRpbmcnKTsKIHRlc3Q2LnN0ZXAoZnVuY3Rpb24oKSB7
CkBAIC0yNTMsMTIwICsyNTMsMTIwIEBAIHRlc3Q3LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgfSks
IHN0YW5kYXJkVGltZW91dCk7CiB9KTsKIAotdmFyIHRlc3Q4ID0gYXN5bmNfdGVzdCgnUmVhZGFi
bGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCB0d2ljZSBvbiBhIG5vbi1lbXB0eSBzdHJl
YW0gcmVhZCBmcm9tIGFmdGVyIHN0YXJ0IGZ1bGZpbGxzJyk7Ci10ZXN0OC5zdGVwKGZ1bmN0aW9u
KCkgewotICAgIHZhciBwdWxsQ291bnQgPSAwOwotICAgIHZhciBzdGFydFByb21pc2UgPSBQcm9t
aXNlLnJlc29sdmUoKTsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAg
ICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAg
ICAgICAgICByZXR1cm4gc3RhcnRQcm9taXNlOwotICAgICAgICB9LAotICAgICAgICBwdWxsOiBm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgIHB1bGxDb3VudCsrOwotICAgICAgICB9Ci0gICAgfSk7
Ci0KLSAgICBzdGFydFByb21pc2UudGhlbih0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVk
IG9uY2Ugc3RhcnQgZmluaXNoZXMnKTsKLQotICAgICAgICBycy5nZXRSZWFkZXIoKS5yZWFkKCku
dGhlbih0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgewotICAgICAgICAgICAgYXNzZXJ0X29i
amVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgcmVhZCgp
IHNob3VsZCByZXR1cm4gZmlyc3QgY2h1bmsnKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
cHVsbENvdW50LCAyLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGFnYWluIG9uY2UgcmVhZCBmdWxm
aWxscycpOwotICAgICAgICB9KSk7Ci0gICAgfSkpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhwdWxs
Q291bnQsIDAsICdjYWxsaW5nIHJlYWQoKSBzaG91bGQgbm90IGNhdXNlIHB1bGwgdG8gYmUgY2Fs
bGVkIHlldCcpOwotCi0gICAgc2V0VGltZW91dCh0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAyLCAncHVsbCBzaG91bGQgYmUgY2Fs
bGVkIGV4YWN0bHkgdHdpY2UnKQotICAgICAgICB0ZXN0OC5kb25lKCk7Ci0gICAgfSksIHN0YW5k
YXJkVGltZW91dCk7Ci19KTsKLQotdmFyIHRlc3Q5ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJl
YW06IHNob3VsZCBjYWxsIHB1bGwgaW4gcmVhY3Rpb24gdG8gcmVhZCgpaW5nIHRoZSBsYXN0IGNo
dW5rLCBpZiBub3QgZHJhaW5pbmcnKTsKLXRlc3Q5LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFy
IHB1bGxDb3VudCA9IDA7Ci0gICAgdmFyIGNvbnRyb2xsZXI7Ci0gICAgdmFyIHN0YXJ0UHJvbWlz
ZSA9IFByb21pc2UucmVzb2x2ZSgpOwotICAgIHZhciBwdWxsUHJvbWlzZSA9IFByb21pc2UucmVz
b2x2ZSgpOwotICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0
OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBjb250cm9sbGVyID0gYzsKLSAgICAgICAgICAg
IHJldHVybiBzdGFydFByb21pc2U7Ci0gICAgICAgIH0sCi0gICAgICAgIHB1bGw6IGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgKytwdWxsQ291bnQ7Ci0gICAgICAgICAgICByZXR1cm4gcHVsbFBy
b21pc2U7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFk
ZXIoKTsKLQotICAgIHN0YXJ0UHJvbWlzZS50aGVuKHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbigp
IHsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBoYXZl
IGJlZW4gY2FsbGVkIG9uY2UgYWZ0ZXIgcmVhZCcpOwotCi0gICAgICAgIGNvbnRyb2xsZXIuZW5x
dWV1ZSgnYScpOwotCi0gICAgICAgIHJldHVybiBwdWxsUHJvbWlzZS50aGVuKHRlc3Q5LnN0ZXBf
ZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAy
LCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBhIHNlY29uZCB0aW1lIGFmdGVyIGVucXVl
dWUnKTsKLQotICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0OS5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291
bnQsIDMsICdwdWxsIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGEgdGhpcmQgdGltZSBhZnRlciBy
ZWFkJyk7Ci0gICAgICAgICAgICB9KSk7Ci0gICAgICAgIH0pKTsKLSAgICB9KSkuY2F0Y2godGVz
dDkuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgYXNzZXJ0X3VucmVhY2hlZChlKTsK
LSAgICB9KSk7Ci0KLSAgICBzZXRUaW1lb3V0KHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsK
LSAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDMsICdwdWxsIHNob3VsZCBiZSBjYWxs
ZWQgZXhhY3RseSB0aHJpY2UnKQotICAgICAgICB0ZXN0OS5kb25lKCk7Ci0gICAgfSksIHN0YW5k
YXJkVGltZW91dCk7Ci19KTsKLQotdmFyIHRlc3QxMCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3Ry
ZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCgpIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0aGUg
bGFzdCBjaHVuaywgaWYgZHJhaW5pbmcnKTsKLXRlc3QxMC5zdGVwKGZ1bmN0aW9uKCkgewotICAg
IHZhciBwdWxsQ291bnQgPSAwOwotICAgIHZhciBjb250cm9sbGVyOwotICAgIHZhciBzdGFydFBy
b21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKLSAgICB2YXIgcHVsbFByb21pc2UgPSBQcm9taXNl
LnJlc29sdmUoKTsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBz
dGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgICAg
ICAgICByZXR1cm4gc3RhcnRQcm9taXNlOwotICAgICAgICB9LAotICAgICAgICBwdWxsOiBmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICsrcHVsbENvdW50OwotICAgICAgICAgICAgcmV0dXJuIHB1
bGxQcm9taXNlOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICB2YXIgcmVhZGVyID0gcnMuZ2V0
UmVhZGVyKCk7Ci0KLSAgICBzdGFydFByb21pc2UudGhlbih0ZXN0MTAuc3RlcF9mdW5jKGZ1bmN0
aW9uKCkgewotICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxk
IGhhdmUgYmVlbiBjYWxsZWQgb25jZSBhZnRlciByZWFkJyk7Ci0KLSAgICAgICAgY29udHJvbGxl
ci5lbnF1ZXVlKCdhJyk7Ci0KLSAgICAgICAgcmV0dXJuIHB1bGxQcm9taXNlLnRoZW4odGVzdDEw
LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENv
dW50LCAyLCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBhIHNlY29uZCB0aW1lIGFmdGVy
IGVucXVldWUnKTsKLQotICAgICAgICAgICAgY29udHJvbGxlci5jbG9zZSgpOwotCi0gICAgICAg
ICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHRlc3QxMC5zdGVwX2Z1bmMoZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDIsICdwdWxsIHNo
b3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCBhIHRoaXJkIHRpbWUgYWZ0ZXIgcmVhZCcpOwotICAg
ICAgICAgICAgfSkpOwotICAgICAgICB9KSk7Ci0gICAgfSkpLmNhdGNoKHRlc3QxMC5zdGVwX2Z1
bmMoZnVuY3Rpb24oZSkgewotICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKGUpCi0gICAgfSkpOwot
Ci0gICAgc2V0VGltZW91dCh0ZXN0MTAuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICBh
c3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5
IHR3aWNlJykKLSAgICAgICAgdGVzdDEwLmRvbmUoKTsKLSAgICB9KSwgc3RhbmRhcmRUaW1lb3V0
KTsKLX0pOworLy8gdmFyIHRlc3Q4ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3Vs
ZCBvbmx5IGNhbGwgcHVsbCB0d2ljZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGFm
dGVyIHN0YXJ0IGZ1bGZpbGxzJyk7CisvLyB0ZXN0OC5zdGVwKGZ1bmN0aW9uKCkgeworLy8gICAg
IHZhciBwdWxsQ291bnQgPSAwOworLy8gICAgIHZhciBzdGFydFByb21pc2UgPSBQcm9taXNlLnJl
c29sdmUoKTsKKy8vICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworLy8gICAgICAg
ICBzdGFydDogZnVuY3Rpb24oYykgeworLy8gICAgICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7Cisv
LyAgICAgICAgICAgICByZXR1cm4gc3RhcnRQcm9taXNlOworLy8gICAgICAgICB9LAorLy8gICAg
ICAgICBwdWxsOiBmdW5jdGlvbigpIHsKKy8vICAgICAgICAgICAgIHB1bGxDb3VudCsrOworLy8g
ICAgICAgICB9CisvLyAgICAgfSk7CisKKy8vICAgICBzdGFydFByb21pc2UudGhlbih0ZXN0OC5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisvLyAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50
LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMnKTsKKworLy8g
ICAgICAgICBycy5nZXRSZWFkZXIoKS5yZWFkKCkudGhlbih0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rp
b24ocikgeworLy8gICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTog
J2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgcmVhZCgpIHNob3VsZCByZXR1cm4gZmlyc3QgY2h1
bmsnKTsKKy8vICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAyLCAncHVsbCBz
aG91bGQgYmUgY2FsbGVkIGFnYWluIG9uY2UgcmVhZCBmdWxmaWxscycpOworLy8gICAgICAgICB9
KSk7CisvLyAgICAgfSkpOworCisvLyAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAsICdj
YWxsaW5nIHJlYWQoKSBzaG91bGQgbm90IGNhdXNlIHB1bGwgdG8gYmUgY2FsbGVkIHlldCcpOwor
CisvLyAgICAgc2V0VGltZW91dCh0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisvLyAgICAg
ICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAyLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4
YWN0bHkgdHdpY2UnKQorLy8gICAgICAgICB0ZXN0OC5kb25lKCk7CisvLyAgICAgfSksIHN0YW5k
YXJkVGltZW91dCk7CisvLyB9KTsKKworLy8gdmFyIHRlc3Q5ID0gYXN5bmNfdGVzdCgnUmVhZGFi
bGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgaW4gcmVhY3Rpb24gdG8gcmVhZCgpaW5nIHRoZSBs
YXN0IGNodW5rLCBpZiBub3QgZHJhaW5pbmcnKTsKKy8vIHRlc3Q5LnN0ZXAoZnVuY3Rpb24oKSB7
CisvLyAgICAgdmFyIHB1bGxDb3VudCA9IDA7CisvLyAgICAgdmFyIGNvbnRyb2xsZXI7CisvLyAg
ICAgdmFyIHN0YXJ0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworLy8gICAgIHZhciBwdWxs
UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworLy8gICAgIHZhciBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisvLyAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisvLyAgICAgICAgICAg
ICBjb250cm9sbGVyID0gYzsKKy8vICAgICAgICAgICAgIHJldHVybiBzdGFydFByb21pc2U7Cisv
LyAgICAgICAgIH0sCisvLyAgICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkgeworLy8gICAgICAgICAg
ICAgKytwdWxsQ291bnQ7CisvLyAgICAgICAgICAgICByZXR1cm4gcHVsbFByb21pc2U7CisvLyAg
ICAgICAgIH0KKy8vICAgICB9KTsKKworLy8gICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIo
KTsKKworLy8gICAgIHN0YXJ0UHJvbWlzZS50aGVuKHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbigp
IHsKKy8vICAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBo
YXZlIGJlZW4gY2FsbGVkIG9uY2UgYWZ0ZXIgcmVhZCcpOworCisvLyAgICAgICAgIGNvbnRyb2xs
ZXIuZW5xdWV1ZSgnYScpOworCisvLyAgICAgICAgIHJldHVybiBwdWxsUHJvbWlzZS50aGVuKHRl
c3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKy8vICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
cHVsbENvdW50LCAyLCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBhIHNlY29uZCB0aW1l
IGFmdGVyIGVucXVldWUnKTsKKworLy8gICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCku
dGhlbih0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisvLyAgICAgICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhwdWxsQ291bnQsIDMsICdwdWxsIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGEg
dGhpcmQgdGltZSBhZnRlciByZWFkJyk7CisvLyAgICAgICAgICAgICB9KSk7CisvLyAgICAgICAg
IH0pKTsKKy8vICAgICB9KSkuY2F0Y2godGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKKy8v
ICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZChlKTsKKy8vICAgICB9KSk7CisKKy8vICAgICBzZXRU
aW1lb3V0KHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKy8vICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhwdWxsQ291bnQsIDMsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgZXhhY3RseSB0aHJpY2Un
KQorLy8gICAgICAgICB0ZXN0OS5kb25lKCk7CisvLyAgICAgfSksIHN0YW5kYXJkVGltZW91dCk7
CisvLyB9KTsKKworLy8gdmFyIHRlc3QxMCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBz
aG91bGQgbm90IGNhbGwgcHVsbCgpIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0aGUgbGFzdCBj
aHVuaywgaWYgZHJhaW5pbmcnKTsKKy8vIHRlc3QxMC5zdGVwKGZ1bmN0aW9uKCkgeworLy8gICAg
IHZhciBwdWxsQ291bnQgPSAwOworLy8gICAgIHZhciBjb250cm9sbGVyOworLy8gICAgIHZhciBz
dGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKKy8vICAgICB2YXIgcHVsbFByb21pc2Ug
PSBQcm9taXNlLnJlc29sdmUoKTsKKy8vICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
eworLy8gICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgeworLy8gICAgICAgICAgICAgY29udHJv
bGxlciA9IGM7CisvLyAgICAgICAgICAgICByZXR1cm4gc3RhcnRQcm9taXNlOworLy8gICAgICAg
ICB9LAorLy8gICAgICAgICBwdWxsOiBmdW5jdGlvbigpIHsKKy8vICAgICAgICAgICAgICsrcHVs
bENvdW50OworLy8gICAgICAgICAgICAgcmV0dXJuIHB1bGxQcm9taXNlOworLy8gICAgICAgICB9
CisvLyAgICAgfSk7CisKKy8vICAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKy8v
ICAgICBzdGFydFByb21pc2UudGhlbih0ZXN0MTAuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworLy8g
ICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGhhdmUgYmVl
biBjYWxsZWQgb25jZSBhZnRlciByZWFkJyk7CisKKy8vICAgICAgICAgY29udHJvbGxlci5lbnF1
ZXVlKCdhJyk7CisKKy8vICAgICAgICAgcmV0dXJuIHB1bGxQcm9taXNlLnRoZW4odGVzdDEwLnN0
ZXBfZnVuYyhmdW5jdGlvbigpIHsKKy8vICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENv
dW50LCAyLCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBhIHNlY29uZCB0aW1lIGFmdGVy
IGVucXVldWUnKTsKKworLy8gICAgICAgICAgICAgY29udHJvbGxlci5jbG9zZSgpOworCisvLyAg
ICAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHRlc3QxMC5zdGVwX2Z1bmMoZnVu
Y3Rpb24oKSB7CisvLyAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDIs
ICdwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCBhIHRoaXJkIHRpbWUgYWZ0ZXIgcmVh
ZCcpOworLy8gICAgICAgICAgICAgfSkpOworLy8gICAgICAgICB9KSk7CisvLyAgICAgfSkpLmNh
dGNoKHRlc3QxMC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeworLy8gICAgICAgICBhc3NlcnRfdW5y
ZWFjaGVkKGUpCisvLyAgICAgfSkpOworCisvLyAgICAgc2V0VGltZW91dCh0ZXN0MTAuc3RlcF9m
dW5jKGZ1bmN0aW9uKCkgeworLy8gICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMiwg
J3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IHR3aWNlJykKKy8vICAgICAgICAgdGVzdDEw
LmRvbmUoKTsKKy8vICAgICB9KSwgc3RhbmRhcmRUaW1lb3V0KTsKKy8vIH0pOwogCiB2YXIgdGVz
dDExID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIHVu
dGlsIHRoZSBwcmV2aW91cyBwdWxsIGNhbGxcJ3MgcHJvbWlzZSBmdWxmaWxscycpOwogdGVzdDEx
LnN0ZXAoZnVuY3Rpb24oKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251006</attachid>
            <date>2015-04-17 01:55:01 -0700</date>
            <delta_ts>2015-04-17 02:16:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143778-20150417105400.patch</filename>
            <type>text/plain</type>
            <size>39271</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyODgxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjQ1NGYwNTRiNjAxNTNlY2U4YmMz
N2Y5NGU3NWZmNWRiYmEyODYwOS4uNjI0MWJkMzQxYTliNGYxMmUxYTMxYzg2MjJjYTZmMjJiZDky
NmM5NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE1LTA0LTE3ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+IGFuZCBYYWJpZXIgUm9kcmlndWV6IENhbHZhciA8
Y2FsdmFyaXNAaWdhbGlhLmNvbT4KKworICAgICAgICBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbCBpcyBmbGFreQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzNzc4CisKKyAgICAgICAgVW5yZXZpZXdl
ZC4KKworICAgICAgICBDb21tZW50IG91dCBmbGFreSBzdWJ0ZXN0cyB3aGlsZSB3b3JraW5nIG9u
IGEgbW9yZSBjb21wbGV0ZQorICAgICAgICBzb2x1dGlvbiBvbiBidWcgMTQzNzc0LgorCisgICAg
ICAgIFRoZSBwcm9ibGVtIHdpdGggdGhlc2UgdGVzdHMgaXMgdGhhdCB0aGV5IHNldCBhIHRpbWVv
dXQgYmVmb3JlIHRoZQorICAgICAgICBjYWxsaW5nIGRvbmUoKSBvbiB0aGUgdGVzdHMgZXhwZWN0
aW5nIHNvbWV0aGluZyB0byBoYXBwZW4gb3IgdG8gZG8KKyAgICAgICAgc29tZSBjaGVja3Mgb24g
dGhpbmdzIHRoYXQgZGlkbid0IGhhcHBlbiB5ZXQgYmVjYXVzZSB0aGVyZSBpcworICAgICAgICBt
aXNzaW5nIGNvZGUgdG8gcnVuLgorCisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdHJlYW1z
L3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJs
ZS1zdHJlYW0tcmVhZGVyLmh0bWw6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBs
YXRlZC5odG1sOgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3Jl
YWRhYmxlLXN0cmVhbS5odG1sOgorCiAyMDE1LTA0LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgY29uc29sZSBtZXNzYWdlIHdoZW4gYSBzdHlsZXNo
ZWV0IGlzIG5vdCBwYXJzZWQgZHVlIHRvIGludmFsaWQgTUlNRSB0eXBlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJl
YW0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50
YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dAppbmRleCA5ZWVmMWYyNTBmZmY1ODAw
M2I4NDE1ZWQxMTlkYzcwNWIxODAzZmZhLi5iYmY0ODYyNDAwM2I1MzU1N2ExZmUzZmVkZjEwZGM4
MzdlMmIzNDU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBlY3Rl
ZC50eHQKQEAgLTEwLDE0ICsxMCw3IEBAIFRJTUVPVVQgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hv
dWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBhbmQgcmVqZWN0IGl0IFRlCiBGQUlMIFJl
YWRhYmxlU3RyZWFtIHNob3VsZCBiZSBhYmxlIHRvIGVucXVldWUgZGlmZmVyZW50IG9iamVjdHMu
IHJlYWQgaXMgbm90IGltcGxlbWVudGVkCiBQQVNTIFJlYWRhYmxlU3RyZWFtOiBpZiBzdGFydCB0
aHJvd3MgYW4gZXJyb3IsIGl0IHNob3VsZCBiZSByZS10aHJvd24gCiBGQUlMIFJlYWRhYmxlU3Ry
ZWFtOiBpZiBwdWxsIHJlamVjdHMsIGl0IHNob3VsZCBlcnJvciB0aGUgc3RyZWFtIHJlYWQgaXMg
bm90IGltcGxlbWVudGVkCi1GQUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1
bGwgb25jZSB1cG9uIHN0YXJ0aW5nIHRoZSBzdHJlYW0gYXNzZXJ0X2VxdWFsczogcHVsbCBzaG91
bGQgYmUgY2FsbGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMgZXhwZWN0ZWQgMSBidXQgZ290IDAKLUZB
SUwgUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIGZvciBhIGZvcmV2
ZXItZW1wdHkgc3RyZWFtLCBldmVuIGFmdGVyIHJlYWRpbmcgcmVhZCBpcyBub3QgaW1wbGVtZW50
ZWQKLUZBSUwgUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIG9uIGEg
bm9uLWVtcHR5IHN0cmVhbSByZWFkIGZyb20gYmVmb3JlIHN0YXJ0IGZ1bGZpbGxzIHJlYWQgaXMg
bm90IGltcGxlbWVudGVkCi1GQUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1
bGwgdHdpY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBhZnRlciBzdGFydCBmdWxm
aWxscyBhc3NlcnRfZXF1YWxzOiBwdWxsIHNob3VsZCBiZSBjYWxsZWQgb25jZSBzdGFydCBmaW5p
c2hlcyBleHBlY3RlZCAxIGJ1dCBnb3QgMAotRkFJTCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNh
bGwgcHVsbCBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIG5vdCBk
cmFpbmluZyBhc3NlcnRfZXF1YWxzOiBwdWxsIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2Ug
YWZ0ZXIgcmVhZCBleHBlY3RlZCAxIGJ1dCBnb3QgMAotRkFJTCBSZWFkYWJsZVN0cmVhbTogc2hv
dWxkIG5vdCBjYWxsIHB1bGwoKSBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1
bmssIGlmIGRyYWluaW5nIGFzc2VydF9lcXVhbHM6IHB1bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxs
ZWQgb25jZSBhZnRlciByZWFkIGV4cGVjdGVkIDEgYnV0IGdvdCAwCiBGQUlMIFJlYWRhYmxlU3Ry
ZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCB1bnRpbCB0aGUgcHJldmlvdXMgcHVsbCBjYWxsJ3Mg
cHJvbWlzZSBmdWxmaWxscyByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBSZWFkYWJsZVN0
cmVhbTogc2hvdWxkIHB1bGwgYWZ0ZXIgc3RhcnQsIGFuZCBhZnRlciBldmVyeSByZWFkIHJlYWQg
aXMgbm90IGltcGxlbWVudGVkCiBGQUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwg
cHVsbCBhZnRlciBzdGFydCBpZiB0aGUgc3RyZWFtIGlzIG5vdyBjbG9zZWQgcmVhZCBpcyBub3Qg
aW1wbGVtZW50ZWQKIEZBSUwgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgYWZ0ZXIg
ZW5xdWV1ZWluZyBmcm9tIGluc2lkZSBwdWxsICh3aXRoIG5vIHJlYWQgcmVxdWVzdHMpLCBpZiBz
dHJhdGVneSBhbGxvd3MgYXNzZXJ0X2VxdWFsczogcHVsbCgpIHNob3VsZCBoYXZlIGJlZW4gY2Fs
bGVkIGZvdXIgdGltZXMgZXhwZWN0ZWQgNCBidXQgZ290IDAKIFRJTUVPVVQgUmVhZGFibGVTdHJl
YW0gcHVsbCBzaG91bGQgYmUgYWJsZSB0byBjbG9zZSBhIHN0cmVhbS4gVGVzdCB0aW1lZCBvdXQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9u
L3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFt
cy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3Rl
ZC50eHQKaW5kZXggYzNlNTE0MmQ0Njk5NTFlOWQzYTYyYjY1Y2ZiNDM0YWIxNzVlMzU0My4uMjkx
YjQ0NzFjZTExMmM3ZTc2OWE3ZTU1ZmJlNTliNGYzNjM1OTBkNCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJl
YWRlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1w
bGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQKQEAgLTEzLDgg
KzEzLDYgQEAgRkFJTCBSZWFkaW5nIGZyb20gYSByZWFkZXIgZm9yIGFuIGVtcHR5IHN0cmVhbSB3
aWxsIHdhaXQgdW50aWwgYSBjaHVuayBpcyBhdmFpbGEKIEZBSUwgY2FuY2VsKCkgb24gYSByZWFk
ZXIgcmVsZWFzZXMgdGhlIHJlYWRlciBiZWZvcmUgY2FsbGluZyB0aHJvdWdoIGNhbmNlbCBpcyBu
b3QgaW1wbGVtZW50ZWQKIFRJTUVPVVQgY2xvc2VkIHNob3VsZCBiZSBmdWxmaWxsZWQgYWZ0ZXIg
c3RyZWFtIGlzIGNsb3NlZCAoLmNsb3NlZCBhY2Nlc3MgYmVmb3JlIGFjcXVpcmluZykgVGVzdCB0
aW1lZCBvdXQKIEZBSUwgY2xvc2VkIHNob3VsZCBiZSBmdWxmaWxsZWQgYWZ0ZXIgcmVhZGVyIHJl
bGVhc2VzIGl0cyBsb2NrIChtdWx0aXBsZSBzdHJlYW0gbG9ja3MpIHJlbGVhc2VMb2NrIGlzIG5v
dCBpbXBsZW1lbnRlZAotRkFJTCBNdWx0aXBsZSByZWFkZXJzIGNhbiBhY2Nlc3MgdGhlIHN0cmVh
bSBpbiBzZXF1ZW5jZSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBDYW5ub3QgdXNlIGFu
IGFscmVhZHktcmVsZWFzZWQgcmVhZGVyIHRvIHVubG9jayBhIHN0cmVhbSBhZ2FpbiByZWxlYXNl
TG9jayBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwgY2FuY2VsKCkgb24gYSByZWxlYXNlZCByZWFk
ZXIgaXMgYSBuby1vcCBhbmQgZG9lcyBub3QgcGFzcyB0aHJvdWdoIHJlbGVhc2VMb2NrIGlzIG5v
dCBpbXBsZW1lbnRlZAogRkFJTCBHZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBhZnRlciBlcnJvcmlu
ZyB0aGUgc3RyZWFtIHNob3VsZCBzdWNjZWVkIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3Jl
YWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNl
LWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRtbAppbmRleCA0Mjk1OTA3
NTI5OGNjYTJkZDNjODU4ODVjNTAzYmZkNGM0ZDllYmRjLi42ZjM5ZjY5NzVkZGRjMGM2MWE5NzQx
YTU4ZjYwZTg1MzZhMzE5ZTAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVy
ZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFt
LXJlYWRlci5odG1sCkBAIC0xOTAsMzYgKzE5MCwzNiBAQCB0ZXN0NC5zdGVwKGZ1bmN0aW9uKCkg
ewogICAgIH0pKTsKIH0pOwogCi12YXIgdGVzdDUgPSBhc3luY190ZXN0KCdNdWx0aXBsZSByZWFk
ZXJzIGNhbiBhY2Nlc3MgdGhlIHN0cmVhbSBpbiBzZXF1ZW5jZScpOwotdGVzdDUuc3RlcChmdW5j
dGlvbigpIHsKLSAgICB2YXIgcmVhZENvdW50ID0gMDsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgYy5l
bnF1ZXVlKCdhJyk7Ci0gICAgICAgICAgICBjLmVucXVldWUoJ2InKTsKLSAgICAgICAgICAgIGMu
Y2xvc2UoKTsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgdmFyIHJlYWRlcjEgPSBycy5nZXRS
ZWFkZXIoKTsKLSAgICByZWFkZXIxLnJlYWQoKS50aGVuKHRlc3Q1LnN0ZXBfZnVuYyhmdW5jdGlv
bihyKSB7Ci0gICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9u
ZTogZmFsc2UgfSwgJ3JlYWRpbmcgdGhlIGZpcnN0IGNodW5rIGZyb20gcmVhZGVyMSB3b3Jrcycp
OwotICAgICAgICArK3JlYWRDb3VudDsKLSAgICB9KSk7Ci0gICAgcmVhZGVyMS5yZWxlYXNlTG9j
aygpOwotCi0gICAgdmFyIHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKLSAgICByZWFkZXIyLnJl
YWQoKS50aGVuKHRlc3Q1LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwgJ3JlYWRpbmcgdGhl
IHNlY29uZCBjaHVuayBmcm9tIHJlYWRlcjIgd29ya3MnKTsKLSAgICAgICAgKytyZWFkQ291bnQ7
Ci0gICAgfSkpOwotICAgIHJlYWRlcjIucmVsZWFzZUxvY2soKTsKLQotICAgIHNldFRpbWVvdXQo
dGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICBhc3NlcnRfZXF1YWxzKHJlYWRD
b3VudCwgMik7Ci0gICAgICAgIHRlc3Q1LmRvbmUoKTsKLSAgICB9KSwgc3RhbmRhcmRUaW1lb3V0
KTsKLX0pOworLy8gdmFyIHRlc3Q1ID0gYXN5bmNfdGVzdCgnTXVsdGlwbGUgcmVhZGVycyBjYW4g
YWNjZXNzIHRoZSBzdHJlYW0gaW4gc2VxdWVuY2UnKTsKKy8vIHRlc3Q1LnN0ZXAoZnVuY3Rpb24o
KSB7CisvLyAgICAgdmFyIHJlYWRDb3VudCA9IDA7CisvLyAgICAgdmFyIHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKKy8vICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKy8vICAgICAgICAg
ICAgIGMuZW5xdWV1ZSgnYScpOworLy8gICAgICAgICAgICAgYy5lbnF1ZXVlKCdiJyk7CisvLyAg
ICAgICAgICAgICBjLmNsb3NlKCk7CisvLyAgICAgICAgIH0KKy8vICAgICB9KTsKKworLy8gICAg
IHZhciByZWFkZXIxID0gcnMuZ2V0UmVhZGVyKCk7CisvLyAgICAgcmVhZGVyMS5yZWFkKCkudGhl
bih0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgeworLy8gICAgICAgICBhc3NlcnRfb2JqZWN0
X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdyZWFkaW5nIHRoZSBmaXJz
dCBjaHVuayBmcm9tIHJlYWRlcjEgd29ya3MnKTsKKy8vICAgICAgICAgKytyZWFkQ291bnQ7Cisv
LyAgICAgfSkpOworLy8gICAgIHJlYWRlcjEucmVsZWFzZUxvY2soKTsKKworLy8gICAgIHZhciBy
ZWFkZXIyID0gcnMuZ2V0UmVhZGVyKCk7CisvLyAgICAgcmVhZGVyMi5yZWFkKCkudGhlbih0ZXN0
NS5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgeworLy8gICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFs
cyhyLCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sICdyZWFkaW5nIHRoZSBzZWNvbmQgY2h1
bmsgZnJvbSByZWFkZXIyIHdvcmtzJyk7CisvLyAgICAgICAgICsrcmVhZENvdW50OworLy8gICAg
IH0pKTsKKy8vICAgICByZWFkZXIyLnJlbGVhc2VMb2NrKCk7CisKKy8vICAgICBzZXRUaW1lb3V0
KHRlc3Q1LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKy8vICAgICAgICAgYXNzZXJ0X2VxdWFscyhy
ZWFkQ291bnQsIDIpOworLy8gICAgICAgICB0ZXN0NS5kb25lKCk7CisvLyAgICAgfSksIHN0YW5k
YXJkVGltZW91dCk7CisvLyB9KTsKIAogdmFyIHRlc3Q2ID0gYXN5bmNfdGVzdCgnQ2Fubm90IHVz
ZSBhbiBhbHJlYWR5LXJlbGVhc2VkIHJlYWRlciB0byB1bmxvY2sgYSBzdHJlYW0gYWdhaW4nKTsK
IHRlc3Q2LnN0ZXAoZnVuY3Rpb24oKSB7CkBAIC0yNDEsMzggKzI0MSwzOCBAQCB0ZXN0Ni5zdGVw
KGZ1bmN0aW9uKCkgewogICAgIH0pKTsKIH0pOwogCi12YXIgdGVzdDcgPSBhc3luY190ZXN0KCdj
YW5jZWwoKSBvbiBhIHJlbGVhc2VkIHJlYWRlciBpcyBhIG5vLW9wIGFuZCBkb2VzIG5vdCBwYXNz
IHRocm91Z2gnKTsKLXRlc3Q3LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHJlYWRDb3VudHMg
PSAwOwotICAgIHZhciBjYW5jZWxsZWQgPSBmYWxzZTsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgYy5l
bnF1ZXVlKCdhJyk7Ci0gICAgICAgIH0sCi0gICAgICAgIGNhbmNlbDogZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCd1bmRlcmx5aW5nIHNvdXJjZSBjYW5jZWwgc2hv
dWxkIG5vdCBiZSBjYWxsZWQnKTsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgdmFyIHJlYWRl
ciA9IHJzLmdldFJlYWRlcigpOwotICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOwotICAgIHJlYWRl
ci5jYW5jZWwoKS50aGVuKHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbih2KSB7Ci0gICAgICAgIGFz
c2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAnY2FuY2VsKCkgb24gdGhlIHJlYWRlciBzaG91bGQg
ZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpCi0gICAgICAgIGNhbmNlbGxlZCA9IHRydWU7Ci0gICAg
fSkpOwotCi0gICAgdmFyIHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKLSAgICByZWFkZXIyLnJl
YWQoKS50aGVuKHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2EgbmV3IHJlYWRl
ciBzaG91bGQgYmUgYWJsZSB0byByZWFkIGEgY2h1bmsnKTsKLSAgICAgICAgKytyZWFkQ291bnRz
OwotICAgIH0pKTsKLQotICAgIHNldFRpbWVvdXQodGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
ewotICAgICAgICBhc3NlcnRfdHJ1ZShjYW5jZWxsZWQpOwotICAgICAgICBhc3NlcnRfZXF1YWxz
KHJlYWRDb3VudHMsIDEpOwotICAgICAgICB0ZXN0Ny5kb25lKCk7Ci0gICAgfSksIHN0YW5kYXJk
VGltZW91dCk7Ci19KTsKKy8vIHZhciB0ZXN0NyA9IGFzeW5jX3Rlc3QoJ2NhbmNlbCgpIG9uIGEg
cmVsZWFzZWQgcmVhZGVyIGlzIGEgbm8tb3AgYW5kIGRvZXMgbm90IHBhc3MgdGhyb3VnaCcpOwor
Ly8gdGVzdDcuc3RlcChmdW5jdGlvbigpIHsKKy8vICAgICB2YXIgcmVhZENvdW50cyA9IDA7Cisv
LyAgICAgdmFyIGNhbmNlbGxlZCA9IGZhbHNlOworLy8gICAgIHZhciBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisvLyAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisvLyAgICAgICAgICAg
ICBjLmVucXVldWUoJ2EnKTsKKy8vICAgICAgICAgfSwKKy8vICAgICAgICAgY2FuY2VsOiBmdW5j
dGlvbigpIHsKKy8vICAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ3VuZGVybHlpbmcgc291
cmNlIGNhbmNlbCBzaG91bGQgbm90IGJlIGNhbGxlZCcpOworLy8gICAgICAgICB9CisvLyAgICAg
fSk7CisKKy8vICAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisvLyAgICAgcmVhZGVy
LnJlbGVhc2VMb2NrKCk7CisvLyAgICAgcmVhZGVyLmNhbmNlbCgpLnRoZW4odGVzdDcuc3RlcF9m
dW5jKGZ1bmN0aW9uKHYpIHsKKy8vICAgICAgICAgYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQs
ICdjYW5jZWwoKSBvbiB0aGUgcmVhZGVyIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJykK
Ky8vICAgICAgICAgY2FuY2VsbGVkID0gdHJ1ZTsKKy8vICAgICB9KSk7CisKKy8vICAgICB2YXIg
cmVhZGVyMiA9IHJzLmdldFJlYWRlcigpOworLy8gICAgIHJlYWRlcjIucmVhZCgpLnRoZW4odGVz
dDcuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKKy8vICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVh
bHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnYSBuZXcgcmVhZGVyIHNob3VsZCBi
ZSBhYmxlIHRvIHJlYWQgYSBjaHVuaycpOworLy8gICAgICAgICArK3JlYWRDb3VudHM7CisvLyAg
ICAgfSkpOworCisvLyAgICAgc2V0VGltZW91dCh0ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
CisvLyAgICAgICAgIGFzc2VydF90cnVlKGNhbmNlbGxlZCk7CisvLyAgICAgICAgIGFzc2VydF9l
cXVhbHMocmVhZENvdW50cywgMSk7CisvLyAgICAgICAgIHRlc3Q3LmRvbmUoKTsKKy8vICAgICB9
KSwgc3RhbmRhcmRUaW1lb3V0KTsKKy8vIH0pOwogCiB2YXIgdGVzdDggPSBhc3luY190ZXN0KCdH
ZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBhZnRlciBlcnJvcmluZyB0aGUgc3RyZWFtIHNob3VsZCBz
dWNjZWVkJyk7CiB0ZXN0OC5zdGVwKGZ1bmN0aW9uKCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBs
YXRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dAppbmRleCBkNzQy
NzEwNjNkZjg0YjhmNDYxZjQxNzQ0YTgwNTI5OWVjYWE1ZmViLi45MjEyZGVlOTYzMzNlOGMwMTI1
MTIzZmJhOWNmZGYxNzEzNTBmZjM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3Jl
ZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9y
ZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dApAQCAtMywxMSArMyw4IEBAIFBB
U1MgUnVubmluZyB0ZW1wbGF0ZWRSU0VtcHR5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KQog
UEFTUyBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIAog
UEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRW1wdHlSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAo
ZW1wdHkpIHJlYWRlciAKIFBBU1MgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBh
bmQgcHJvcGVydGllcyAKLUZBSUwgcmVhZCgpIHNob3VsZCBuZXZlciBzZXR0bGUgcmVhZCBpcyBu
b3QgaW1wbGVtZW50ZWQKLUZBSUwgdHdvIHJlYWQoKXMgc2hvdWxkIGJvdGggbmV2ZXIgc2V0dGxl
IHJlYWQgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIHJlYWQoKSBzaG91bGQgcmV0dXJuIGRpc3Rp
bmN0IHByb21pc2VzIGVhY2ggdGltZSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAogUEFTUyBnZXRS
ZWFkZXIoKSBhZ2FpbiBvbiB0aGUgc3RyZWFtIHNob3VsZCBmYWlsIAotRkFJTCByZWxlYXNpbmcg
dGhlIGxvY2sgd2l0aCBwZW5kaW5nIHJlYWQgcmVxdWVzdHMgc2hvdWxkIHRocm93IGJ1dCB0aGUg
cmVhZCByZXF1ZXN0cyBzaG91bGQgc3RheSBwZW5kaW5nIHJlYWQgaXMgbm90IGltcGxlbWVudGVk
CiBGQUlMIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgZnVydGhlciByZWFkKCkgY2Fs
bHMgdG8gcmVzb2x2ZSBhcyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCByZWxlYXNlTG9jayBpcyBu
b3QgaW1wbGVtZW50ZWQKIEZBSUwgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9z
ZWQgdG8gZnVsZmlsbCByZWxlYXNlTG9jayBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgY2FuY2Vs
aW5nIHZpYSB0aGUgcmVhZGVyIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIHRvIGFjdCBjbG9zZWQg
Y2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZApAQCAtMTksNyArMTYsNiBAQCBGQUlMIHNob3VsZCBi
ZSBhYmxlIHRvIGFjcXVpcmUgbXVsdGlwbGUgcmVhZGVycywgc2luY2UgdGhleSBhcmUgYWxsIGF1
dG8tcmVsZWFzZQogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyIHdpdGggUmVh
ZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFydCkgcmVhZGVyIAogRkFJTCByZWFk
KCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSBy
ZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAogVElNRU9VVCBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0
aCB1bmRlZmluZWQgVGVzdCB0aW1lZCBvdXQKLUZBSUwgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBh
IGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSBjYW5jZWwgaXMgbm90IGltcGxl
bWVudGVkCiBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWQgd2l0aCBSZWFkYWJsZVN0cmVh
bSAoY2xvc2VkIHZpYSBjYW5jZWwpIAogRkFJTCBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlz
dGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50
ZWQKIEZBSUwgZ2V0UmVhZGVyKCkgc2hvdWxkIGJlIE9LIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50
ZWQKQEAgLTI3LDcgKzIzLDYgQEAgRkFJTCBzaG91bGQgYmUgYWJsZSB0byBhY3F1aXJlIG11bHRp
cGxlIHJlYWRlcnMsIHNpbmNlIHRoZXkgYXJlIGFsbCBhdXRvLXJlbGVhc2UKIFBBU1MgUnVubmlu
ZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlh
IGNhbmNlbCkgcmVhZGVyIAogRkFJTCByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVl
OiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBGQUlM
IGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCBjYW5jZWwgaXMgbm90IGltcGxl
bWVudGVkCi1GQUlMIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQg
cHJvbWlzZSBlYWNoIHRpbWUgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogUEFTUyBSdW5uaW5n
IHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxs
IGluIHN0YXJ0KSAKIEZBSUwgZ2V0UmVhZGVyKCkgc2hvdWxkIHJldHVybiBhIHJlYWRlciB0aGF0
IGFjdHMgZXJyb3JlZCByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAogUEFTUyBSdW5uaW5nIHRlbXBs
YXRlZFJTRXJyb3JlZFN5bmNPbmx5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNh
bGwgaW4gc3RhcnQpIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC5odG1sIGIvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBs
YXRlZC5odG1sCmluZGV4IDA5ZjBkNzJkZTgyNzVjNzRlMDM3ZTJiMmJjMGEyOTVmYTM4NDI4MzIu
LjhlOGI0Y2M2MTliYzc3NGJmYjYwYjMyNGZlYWRmOTA2NTI5YzEyMDMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVh
bS10ZW1wbGF0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLmh0bWwKQEAgLTE1MCwzNCArMTUw
LDM0IEBAIGZ1bmN0aW9uIHRlbXBsYXRlZFJTRW1wdHlSZWFkZXIobGFiZWwsIGZhY3RvcnkpIHsK
ICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcmVhZGVyLnJlbGVhc2VMb2NrLCAnZnVuY3Rp
b24nLCAnaGFzIGEgcmVsZWFzZUxvY2sgbWV0aG9kJyk7CiAgICAgfSwgJ2luc3RhbmNlcyBoYXZl
IHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMnKTsKIAotICAgIHZhciB0ZXN0MSA9
IGFzeW5jX3Rlc3QoJ3JlYWQoKSBzaG91bGQgbmV2ZXIgc2V0dGxlJyk7Ci0gICAgdGVzdDEuc3Rl
cChmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7CisgICAg
Ly8gdmFyIHRlc3QxID0gYXN5bmNfdGVzdCgncmVhZCgpIHNob3VsZCBuZXZlciBzZXR0bGUnKTsK
KyAgICAvLyB0ZXN0MS5zdGVwKGZ1bmN0aW9uKCkgeworICAgIC8vICAgICB2YXIgeyByZWFkZXIg
fSA9IGZhY3RvcnkoKTsKIAotICAgICAgICByZWFkZXIucmVhZCgpLnRoZW4oCi0gICAgICAgICAg
ICB0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ3JlYWQoKSBz
aG91bGQgbm90IGZ1bGZpbGwnKTsgfSksCi0gICAgICAgICAgICB0ZXN0MS5zdGVwX2Z1bmMoZnVu
Y3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ3JlYWQoKSBzaG91bGQgbm90IHJlamVjdCcpOyB9
KQotICAgICAgICApOworICAgIC8vICAgICByZWFkZXIucmVhZCgpLnRoZW4oCisgICAgLy8gICAg
ICAgICB0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ3JlYWQo
KSBzaG91bGQgbm90IGZ1bGZpbGwnKTsgfSksCisgICAgLy8gICAgICAgICB0ZXN0MS5zdGVwX2Z1
bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ3JlYWQoKSBzaG91bGQgbm90IHJlamVj
dCcpOyB9KQorICAgIC8vICAgICApOwogCi0gICAgICAgIHNldFRpbWVvdXQodGVzdDEuc3RlcF9m
dW5jKGZ1bmN0aW9uKCkgeyB0ZXN0MS5kb25lKCk7IH0pLCBzdGFuZGFyZFRpbWVvdXQpOwotICAg
IH0pOworICAgIC8vICAgICBzZXRUaW1lb3V0KHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsg
dGVzdDEuZG9uZSgpOyB9KSwgc3RhbmRhcmRUaW1lb3V0KTsKKyAgICAvLyB9KTsKIAotICAgIHZh
ciB0ZXN0MiA9IGFzeW5jX3Rlc3QoJ3R3byByZWFkKClzIHNob3VsZCBib3RoIG5ldmVyIHNldHRs
ZScpOwotICAgIHRlc3QyLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciB7IHJlYWRlciB9
ID0gZmFjdG9yeSgpOworICAgIC8vIHZhciB0ZXN0MiA9IGFzeW5jX3Rlc3QoJ3R3byByZWFkKClz
IHNob3VsZCBib3RoIG5ldmVyIHNldHRsZScpOworICAgIC8vIHRlc3QyLnN0ZXAoZnVuY3Rpb24o
KSB7CisgICAgLy8gICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwogCi0gICAgICAgIHJl
YWRlci5yZWFkKCkudGhlbigKLSAgICAgICAgICAgIHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbigp
IHsgYXNzZXJ0X3VucmVhY2hlZCgnZmlyc3QgcmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpOyB9
KSwKLSAgICAgICAgICAgIHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVh
Y2hlZCgnZmlyc3QgcmVhZCgpIHNob3VsZCBub3QgcmVqZWN0Jyk7IH0pCi0gICAgICAgICk7Cisg
ICAgLy8gICAgIHJlYWRlci5yZWFkKCkudGhlbigKKyAgICAvLyAgICAgICAgIHRlc3QyLnN0ZXBf
ZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnZmlyc3QgcmVhZCgpIHNob3VsZCBu
b3QgZnVsZmlsbCcpOyB9KSwKKyAgICAvLyAgICAgICAgIHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlv
bigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnZmlyc3QgcmVhZCgpIHNob3VsZCBub3QgcmVqZWN0Jyk7
IH0pCisgICAgLy8gICAgICk7CiAKLSAgICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKAotICAgICAg
ICAgICAgdGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdzZWNv
bmQgcmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpOyB9KSwKLSAgICAgICAgICAgIHRlc3QyLnN0
ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnc2Vjb25kIHJlYWQoKSBzaG91
bGQgbm90IHJlamVjdCcpOyB9KQotICAgICAgICApOworICAgIC8vICAgICByZWFkZXIucmVhZCgp
LnRoZW4oCisgICAgLy8gICAgICAgICB0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2Vy
dF91bnJlYWNoZWQoJ3NlY29uZCByZWFkKCkgc2hvdWxkIG5vdCBmdWxmaWxsJyk7IH0pLAorICAg
IC8vICAgICAgICAgdGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVk
KCdzZWNvbmQgcmVhZCgpIHNob3VsZCBub3QgcmVqZWN0Jyk7IH0pCisgICAgLy8gICAgICk7CiAK
LSAgICAgICAgc2V0VGltZW91dCh0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IHRlc3QyLmRv
bmUoKTsgfSksIHN0YW5kYXJkVGltZW91dCk7Ci0gICAgfSk7CisgICAgLy8gICAgIHNldFRpbWVv
dXQodGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyB0ZXN0Mi5kb25lKCk7IH0pLCBzdGFuZGFy
ZFRpbWVvdXQpOworICAgIC8vIH0pOwogCiAgICAgdGVzdChmdW5jdGlvbigpIHsKICAgICAgICAg
dmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7CkBAIC0xOTEsMjkgKzE5MSwyOSBAQCBmdW5jdGlv
biB0ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyKGxhYmVsLCBmYWN0b3J5KSB7CiAgICAgICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgc3RyZWFtLmdldFJlYWRlcigp
OyB9LCAnc3RyZWFtLmdldFJlYWRlcigpIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwogICAg
IH0sICdnZXRSZWFkZXIoKSBhZ2FpbiBvbiB0aGUgc3RyZWFtIHNob3VsZCBmYWlsJyk7CiAKLSAg
ICB2YXIgdGVzdDMgPSBhc3luY190ZXN0KCdyZWxlYXNpbmcgdGhlIGxvY2sgd2l0aCBwZW5kaW5n
IHJlYWQgcmVxdWVzdHMgc2hvdWxkIHRocm93IGJ1dCB0aGUgcmVhZCByZXF1ZXN0cyBzaG91bGQg
c3RheSBwZW5kaW5nJyk7Ci0gICAgdGVzdDMuc3RlcChmdW5jdGlvbigpIHsKLSAgICAgICAgdmFy
IHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7CisgICAgLy8gdmFyIHRlc3QzID0gYXN5bmNfdGVzdCgn
cmVsZWFzaW5nIHRoZSBsb2NrIHdpdGggcGVuZGluZyByZWFkIHJlcXVlc3RzIHNob3VsZCB0aHJv
dyBidXQgdGhlIHJlYWQgcmVxdWVzdHMgc2hvdWxkIHN0YXkgcGVuZGluZycpOworICAgIC8vIHRl
c3QzLnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgLy8gICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9y
eSgpOwogCi0gICAgICAgIHJlYWRlci5yZWFkKCkudGhlbigKLSAgICAgICAgICAgIHRlc3QzLnN0
ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnZmlyc3QgcmVhZCgpIHNob3Vs
ZCBub3QgZnVsZmlsbCcpOyB9KSwKLSAgICAgICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlv
bigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnZmlyc3QgcmVhZCgpIHNob3VsZCBub3QgcmVqZWN0Jyk7
IH0pCi0gICAgICAgICk7CisgICAgLy8gICAgIHJlYWRlci5yZWFkKCkudGhlbigKKyAgICAvLyAg
ICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnZmly
c3QgcmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpOyB9KSwKKyAgICAvLyAgICAgICAgIHRlc3Qz
LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnZmlyc3QgcmVhZCgpIHNo
b3VsZCBub3QgcmVqZWN0Jyk7IH0pCisgICAgLy8gICAgICk7CiAKLSAgICAgICAgcmVhZGVyLnJl
YWQoKS50aGVuKAotICAgICAgICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3Nl
cnRfdW5yZWFjaGVkKCdzZWNvbmQgcmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpOyB9KSwKLSAg
ICAgICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgn
c2Vjb25kIHJlYWQoKSBzaG91bGQgbm90IHJlamVjdCcpOyB9KQotICAgICAgICApOworICAgIC8v
ICAgICByZWFkZXIucmVhZCgpLnRoZW4oCisgICAgLy8gICAgICAgICB0ZXN0My5zdGVwX2Z1bmMo
ZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ3NlY29uZCByZWFkKCkgc2hvdWxkIG5vdCBm
dWxmaWxsJyk7IH0pLAorICAgIC8vICAgICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
eyBhc3NlcnRfdW5yZWFjaGVkKCdzZWNvbmQgcmVhZCgpIHNob3VsZCBub3QgcmVqZWN0Jyk7IH0p
CisgICAgLy8gICAgICk7CiAKLSAgICAgICAgcmVhZGVyLmNsb3NlZC50aGVuKAotICAgICAgICAg
ICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdjbG9zZWQg
c2hvdWxkIG5vdCBmdWxmaWxsJyk7IH0pLAotICAgICAgICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1
bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdjbG9zZWQgc2hvdWxkIG5vdCByZWplY3QnKTsg
fSkKLSAgICAgICAgKTsKKyAgICAvLyAgICAgcmVhZGVyLmNsb3NlZC50aGVuKAorICAgIC8vICAg
ICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdjbG9z
ZWQgc2hvdWxkIG5vdCBmdWxmaWxsJyk7IH0pLAorICAgIC8vICAgICAgICAgdGVzdDMuc3RlcF9m
dW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdjbG9zZWQgc2hvdWxkIG5vdCByZWpl
Y3QnKTsgfSkKKyAgICAvLyAgICAgKTsKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IoKSwgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyByZWFkZXIucmVsZWFzZUxvY2so
KTsgfSwgJ3JlbGVhc2VMb2NrIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpKTsKKyAgICAvLyAg
ICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlv
bigpIHsgcmVhZGVyLnJlbGVhc2VMb2NrKCk7IH0sICdyZWxlYXNlTG9jayBzaG91bGQgdGhyb3cg
YSBUeXBlRXJyb3InKSk7CiAKLSAgICAgICAgc2V0VGltZW91dCh0ZXN0My5zdGVwX2Z1bmMoZnVu
Y3Rpb24oKSB7IHRlc3QzLmRvbmUoKTsgfSksIHN0YW5kYXJkVGltZW91dCk7Ci0gICAgfSk7Cisg
ICAgLy8gICAgIHNldFRpbWVvdXQodGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyB0ZXN0My5k
b25lKCk7IH0pLCBzdGFuZGFyZFRpbWVvdXQpOworICAgIC8vIH0pOwogCiAgICAgdmFyIHRlc3Q0
ID0gYXN5bmNfdGVzdCgncmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBmdXJ0aGVyIHJl
YWQoKSBjYWxscyB0byByZXNvbHZlIGFzIGlmIHRoZSBzdHJlYW0gaXMgY2xvc2VkJyk7CiAgICAg
dGVzdDQuc3RlcChmdW5jdGlvbigpIHsKQEAgLTMwNCwzMiArMzA0LDMyIEBAIGZ1bmN0aW9uIHRl
bXBsYXRlZFJTQ2xvc2VkUmVhZGVyKGxhYmVsLCBmYWN0b3J5KSB7CiAgICAgICAgICk7CiAgICAg
fSk7CiAKLSAgICB2YXIgdGVzdDMgPSBhc3luY190ZXN0KCdjYW5jZWwoKSBzaG91bGQgcmV0dXJu
IGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lJyk7Ci0gICAgdGVzdDMuc3Rl
cChmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7Ci0gICAg
ICAgIHZhciBwcm9taXNlQ291bnQgPSAwOwotCi0gICAgICAgIHZhciBjYW5jZWxQcm9taXNlMSA9
IHJlYWRlci5jYW5jZWwoKTsKLSAgICAgICAgdmFyIGNhbmNlbFByb21pc2UyID0gcmVhZGVyLmNh
bmNlbCgpOwotICAgICAgICB2YXIgY2xvc2VkUmVhZGVyUHJvbWlzZSA9IHJlYWRlci5jbG9zZWQ7
Ci0KLSAgICAgICAgY2FuY2VsUHJvbWlzZTEudGhlbih0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24o
dikgewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdmaXJzdCBjYW5j
ZWwoKSBjYWxsIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7Ci0gICAgICAgICAgICAr
K3Byb21pc2VDb3VudDsKLSAgICAgICAgfSkpOwotICAgICAgICBjYW5jZWxQcm9taXNlMi50aGVu
KHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbih2KSB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KHYsIHVuZGVmaW5lZCwgJ3NlY29uZCBjYW5jZWwoKSBjYWxsIHNob3VsZCBmdWxmaWxsIHdpdGgg
dW5kZWZpbmVkJyk7Ci0gICAgICAgICAgICArK3Byb21pc2VDb3VudDsKLSAgICAgICAgfSkpOwot
ICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjYW5jZWxQcm9taXNlMSwgY2FuY2VsUHJvbWlzZTIs
ICdjYW5jZWwoKSBjYWxscyBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzJyk7Ci0gICAg
ICAgIGFzc2VydF9ub3RfZXF1YWxzKGNhbmNlbFByb21pc2UxLCBjbG9zZWRSZWFkZXJQcm9taXNl
LCAnY2FuY2VsKCkgcHJvbWlzZSAxIHNob3VsZCBiZSBkaXN0aW5jdCBmcm9tIHJlYWRlci5jbG9z
ZWQnKTsKLSAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY2FuY2VsUHJvbWlzZTIsIGNsb3NlZFJl
YWRlclByb21pc2UsICdjYW5jZWwoKSBwcm9taXNlIDIgc2hvdWxkIGJlIGRpc3RpbmN0IGZyb20g
cmVhZGVyLmNsb3NlZCcpOwotCi0gICAgICAgIHNldFRpbWVvdXQodGVzdDMuc3RlcF9mdW5jKGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhwcm9taXNlQ291bnQsIDIpOwot
ICAgICAgICAgICAgdGVzdDMuZG9uZSgpOwotICAgICAgICB9KSwgc3RhbmRhcmRUaW1lb3V0KTsK
LSAgICB9KTsKKyAgICAvLyB2YXIgdGVzdDMgPSBhc3luY190ZXN0KCdjYW5jZWwoKSBzaG91bGQg
cmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lJyk7CisgICAgLy8g
dGVzdDMuc3RlcChmdW5jdGlvbigpIHsKKyAgICAvLyAgICAgdmFyIHsgcmVhZGVyIH0gPSBmYWN0
b3J5KCk7CisgICAgLy8gICAgIHZhciBwcm9taXNlQ291bnQgPSAwOworCisgICAgLy8gICAgIHZh
ciBjYW5jZWxQcm9taXNlMSA9IHJlYWRlci5jYW5jZWwoKTsKKyAgICAvLyAgICAgdmFyIGNhbmNl
bFByb21pc2UyID0gcmVhZGVyLmNhbmNlbCgpOworICAgIC8vICAgICB2YXIgY2xvc2VkUmVhZGVy
UHJvbWlzZSA9IHJlYWRlci5jbG9zZWQ7CisKKyAgICAvLyAgICAgY2FuY2VsUHJvbWlzZTEudGhl
bih0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24odikgeworICAgIC8vICAgICAgICAgYXNzZXJ0X2Vx
dWFscyh2LCB1bmRlZmluZWQsICdmaXJzdCBjYW5jZWwoKSBjYWxsIHNob3VsZCBmdWxmaWxsIHdp
dGggdW5kZWZpbmVkJyk7CisgICAgLy8gICAgICAgICArK3Byb21pc2VDb3VudDsKKyAgICAvLyAg
ICAgfSkpOworICAgIC8vICAgICBjYW5jZWxQcm9taXNlMi50aGVuKHRlc3QzLnN0ZXBfZnVuYyhm
dW5jdGlvbih2KSB7CisgICAgLy8gICAgICAgICBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwg
J3NlY29uZCBjYW5jZWwoKSBjYWxsIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7Cisg
ICAgLy8gICAgICAgICArK3Byb21pc2VDb3VudDsKKyAgICAvLyAgICAgfSkpOworICAgIC8vICAg
ICBhc3NlcnRfbm90X2VxdWFscyhjYW5jZWxQcm9taXNlMSwgY2FuY2VsUHJvbWlzZTIsICdjYW5j
ZWwoKSBjYWxscyBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzJyk7CisgICAgLy8gICAg
IGFzc2VydF9ub3RfZXF1YWxzKGNhbmNlbFByb21pc2UxLCBjbG9zZWRSZWFkZXJQcm9taXNlLCAn
Y2FuY2VsKCkgcHJvbWlzZSAxIHNob3VsZCBiZSBkaXN0aW5jdCBmcm9tIHJlYWRlci5jbG9zZWQn
KTsKKyAgICAvLyAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY2FuY2VsUHJvbWlzZTIsIGNsb3NlZFJl
YWRlclByb21pc2UsICdjYW5jZWwoKSBwcm9taXNlIDIgc2hvdWxkIGJlIGRpc3RpbmN0IGZyb20g
cmVhZGVyLmNsb3NlZCcpOworCisgICAgLy8gICAgIHNldFRpbWVvdXQodGVzdDMuc3RlcF9mdW5j
KGZ1bmN0aW9uKCkgeworICAgIC8vICAgICAgICAgYXNzZXJ0X2VxdWFscyhwcm9taXNlQ291bnQs
IDIpOworICAgIC8vICAgICAgICAgdGVzdDMuZG9uZSgpOworICAgIC8vICAgICB9KSwgc3RhbmRh
cmRUaW1lb3V0KTsKKyAgICAvLyB9KTsKIH07CiAKIGZ1bmN0aW9uIHRlbXBsYXRlZFJTRXJyb3Jl
ZFJlYWRlcihsYWJlbCwgZmFjdG9yeSwgZXJyb3IpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1sIGIv
TGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3Ry
ZWFtLmh0bWwKaW5kZXggNzY0NWE5YjliNWZhMDlmNTczZmU5ODMyMDQ5OTBjMWI5YzlkNTg2Yi4u
ZDA3MjVlNDQyNjYxYTcyZTI2ZmViNjMzZjgzMzZjMjA4ZTk1NGU2MSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFt
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24v
cmVhZGFibGUtc3RyZWFtLmh0bWwKQEAgLTE3NCwxOTkgKzE3NCwxOTkgQEAgdGVzdDQuc3RlcChm
dW5jdGlvbigpIHsKICAgICB9KSk7CiB9KTsKIAotdmFyIHRlc3Q1ID0gYXN5bmNfdGVzdCgnUmVh
ZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIHVwb24gc3RhcnRpbmcgdGhl
IHN0cmVhbScpOwotdGVzdDUuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgcHVsbENvdW50ID0g
MDsKLSAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0gICAgdmFyIHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKLSAgICAgICAgfSwKLSAgICAgICAgcHVsbDog
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBwdWxsQ291bnQrKzsKLSAgICAgICAgfQotICAgIH0p
OwotCi0gICAgc3RhcnRQcm9taXNlLnRoZW4odGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewot
ICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxl
ZCBvbmNlIHN0YXJ0IGZpbmlzaGVzJyk7Ci0gICAgfSkpOwotCi0gICAgc2V0VGltZW91dCh0ZXN0
NS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50
LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgb25jZScpOwotICAgICAgICB0ZXN0
NS5kb25lKCk7Ci0gICAgfSksIHN0YW5kYXJkVGltZW91dCk7Ci19KTsKLQotdmFyIHRlc3Q2ID0g
YXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIGZv
ciBhIGZvcmV2ZXItZW1wdHkgc3RyZWFtLCBldmVuIGFmdGVyIHJlYWRpbmcnKTsKLXRlc3Q2LnN0
ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHB1bGxDb3VudCA9IDA7Ci0gICAgdmFyIHN0YXJ0UHJv
bWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOwotICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGFy
dFByb21pc2U7Ci0gICAgICAgIH0sCi0gICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgcHVsbENvdW50Kys7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHN0YXJ0UHJvbWlz
ZS50aGVuKHRlc3Q2LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgYXNzZXJ0X2VxdWFs
cyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgb25jZSBzdGFydCBmaW5pc2hl
cycpOwotICAgIH0pKTsKLQotICAgIHJzLmdldFJlYWRlcigpLnJlYWQoKTsKLQotICAgIHNldFRp
bWVvdXQodGVzdDYuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICBhc3NlcnRfZXF1YWxz
KHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IG9uY2UnKTsKLSAg
ICAgICAgdGVzdDYuZG9uZSgpOwotICAgIH0pLCBzdGFuZGFyZFRpbWVvdXQpOwotfSk7Ci0KLXZh
ciB0ZXN0NyA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1
bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGJlZm9yZSBzdGFydCBmdWxm
aWxscycpOwotdGVzdDcuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgcHVsbENvdW50ID0gMDsK
LSAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0gICAgdmFyIHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAg
ICAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAgICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsK
LSAgICAgICAgfSwKLSAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBwdWxs
Q291bnQrKzsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgc3RhcnRQcm9taXNlLnRoZW4odGVz
dDcuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3Vu
dCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBvbmNlIHN0YXJ0IGZpbmlzaGVzJyk7Ci0gICAg
fSkpOwotCi0gICAgcnMuZ2V0UmVhZGVyKCkucmVhZCgpLnRoZW4odGVzdDcuc3RlcF9mdW5jKGZ1
bmN0aW9uKHIpIHsKLSAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2En
LCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgcmVhZCgpIHNob3VsZCByZXR1cm4gZmlyc3QgY2h1bmsn
KTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBub3Qg
aGF2ZSBiZWVuIGNhbGxlZCBhZ2FpbicpOwotICAgIH0pKTsKLQotICAgIGFzc2VydF9lcXVhbHMo
cHVsbENvdW50LCAwLCAnY2FsbGluZyByZWFkKCkgc2hvdWxkIG5vdCBjYXVzZSBwdWxsIHRvIGJl
IGNhbGxlZCB5ZXQnKTsKLQotICAgIHNldFRpbWVvdXQodGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9u
KCkgewotICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJl
IGNhbGxlZCBleGFjdGx5IG9uY2UnKTsKLSAgICAgICAgdGVzdDcuZG9uZSgpOwotICAgIH0pLCBz
dGFuZGFyZFRpbWVvdXQpOwotfSk7Ci0KLXZhciB0ZXN0OCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxl
U3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgdHdpY2Ugb24gYSBub24tZW1wdHkgc3RyZWFt
IHJlYWQgZnJvbSBhZnRlciBzdGFydCBmdWxmaWxscycpOwotdGVzdDguc3RlcChmdW5jdGlvbigp
IHsKLSAgICB2YXIgcHVsbENvdW50ID0gMDsKLSAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlz
ZS5yZXNvbHZlKCk7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAg
c3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAg
ICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKLSAgICAgICAgfSwKLSAgICAgICAgcHVsbDogZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICBwdWxsQ291bnQrKzsKLSAgICAgICAgfQotICAgIH0pOwot
Ci0gICAgc3RhcnRQcm9taXNlLnRoZW4odGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAg
ICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBv
bmNlIHN0YXJ0IGZpbmlzaGVzJyk7Ci0KLSAgICAgICAgcnMuZ2V0UmVhZGVyKCkucmVhZCgpLnRo
ZW4odGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKLSAgICAgICAgICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IHJlYWQoKSBz
aG91bGQgcmV0dXJuIGZpcnN0IGNodW5rJyk7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHB1
bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBhZ2FpbiBvbmNlIHJlYWQgZnVsZmls
bHMnKTsKLSAgICAgICAgfSkpOwotICAgIH0pKTsKLQotICAgIGFzc2VydF9lcXVhbHMocHVsbENv
dW50LCAwLCAnY2FsbGluZyByZWFkKCkgc2hvdWxkIG5vdCBjYXVzZSBwdWxsIHRvIGJlIGNhbGxl
ZCB5ZXQnKTsKLQotICAgIHNldFRpbWVvdXQodGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewot
ICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxl
ZCBleGFjdGx5IHR3aWNlJykKLSAgICAgICAgdGVzdDguZG9uZSgpOwotICAgIH0pLCBzdGFuZGFy
ZFRpbWVvdXQpOwotfSk7Ci0KLXZhciB0ZXN0OSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFt
OiBzaG91bGQgY2FsbCBwdWxsIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0aGUgbGFzdCBjaHVu
aywgaWYgbm90IGRyYWluaW5nJyk7Ci10ZXN0OS5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciBw
dWxsQ291bnQgPSAwOwotICAgIHZhciBjb250cm9sbGVyOwotICAgIHZhciBzdGFydFByb21pc2Ug
PSBQcm9taXNlLnJlc29sdmUoKTsKLSAgICB2YXIgcHVsbFByb21pc2UgPSBQcm9taXNlLnJlc29s
dmUoKTsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDog
ZnVuY3Rpb24oYykgewotICAgICAgICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RhcnRQcm9taXNlOwotICAgICAgICB9LAotICAgICAgICBwdWxsOiBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgICsrcHVsbENvdW50OwotICAgICAgICAgICAgcmV0dXJuIHB1bGxQcm9t
aXNlOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVy
KCk7Ci0KLSAgICBzdGFydFByb21pc2UudGhlbih0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgaGF2ZSBi
ZWVuIGNhbGxlZCBvbmNlIGFmdGVyIHJlYWQnKTsKLQotICAgICAgICBjb250cm9sbGVyLmVucXVl
dWUoJ2EnKTsKLQotICAgICAgICByZXR1cm4gcHVsbFByb21pc2UudGhlbih0ZXN0OS5zdGVwX2Z1
bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMiwg
J3B1bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgYSBzZWNvbmQgdGltZSBhZnRlciBlbnF1ZXVl
Jyk7Ci0KLSAgICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4odGVzdDkuc3RlcF9m
dW5jKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50
LCAzLCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBhIHRoaXJkIHRpbWUgYWZ0ZXIgcmVh
ZCcpOwotICAgICAgICAgICAgfSkpOwotICAgICAgICB9KSk7Ci0gICAgfSkpLmNhdGNoKHRlc3Q5
LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAgIGFzc2VydF91bnJlYWNoZWQoZSk7Ci0g
ICAgfSkpOwotCi0gICAgc2V0VGltZW91dCh0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAzLCAncHVsbCBzaG91bGQgYmUgY2FsbGVk
IGV4YWN0bHkgdGhyaWNlJykKLSAgICAgICAgdGVzdDkuZG9uZSgpOwotICAgIH0pLCBzdGFuZGFy
ZFRpbWVvdXQpOwotfSk7Ci0KLXZhciB0ZXN0MTAgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVh
bTogc2hvdWxkIG5vdCBjYWxsIHB1bGwoKSBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxh
c3QgY2h1bmssIGlmIGRyYWluaW5nJyk7Ci10ZXN0MTAuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2
YXIgcHVsbENvdW50ID0gMDsKLSAgICB2YXIgY29udHJvbGxlcjsKLSAgICB2YXIgc3RhcnRQcm9t
aXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0gICAgdmFyIHB1bGxQcm9taXNlID0gUHJvbWlzZS5y
ZXNvbHZlKCk7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3Rh
cnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgICAgICAg
ICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKLSAgICAgICAgfSwKLSAgICAgICAgcHVsbDogZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICArK3B1bGxDb3VudDsKLSAgICAgICAgICAgIHJldHVybiBwdWxs
UHJvbWlzZTsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgdmFyIHJlYWRlciA9IHJzLmdldFJl
YWRlcigpOwotCi0gICAgc3RhcnRQcm9taXNlLnRoZW4odGVzdDEwLnN0ZXBfZnVuYyhmdW5jdGlv
bigpIHsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBo
YXZlIGJlZW4gY2FsbGVkIG9uY2UgYWZ0ZXIgcmVhZCcpOwotCi0gICAgICAgIGNvbnRyb2xsZXIu
ZW5xdWV1ZSgnYScpOwotCi0gICAgICAgIHJldHVybiBwdWxsUHJvbWlzZS50aGVuKHRlc3QxMC5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3Vu
dCwgMiwgJ3B1bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgYSBzZWNvbmQgdGltZSBhZnRlciBl
bnF1ZXVlJyk7Ci0KLSAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKLQotICAgICAgICAg
ICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MTAuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAyLCAncHVsbCBzaG91
bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYSB0aGlyZCB0aW1lIGFmdGVyIHJlYWQnKTsKLSAgICAg
ICAgICAgIH0pKTsKLSAgICAgICAgfSkpOwotICAgIH0pKS5jYXRjaCh0ZXN0MTAuc3RlcF9mdW5j
KGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgYXNzZXJ0X3VucmVhY2hlZChlKQotICAgIH0pKTsKLQot
ICAgIHNldFRpbWVvdXQodGVzdDEwLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgYXNz
ZXJ0X2VxdWFscyhwdWxsQ291bnQsIDIsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgZXhhY3RseSB0
d2ljZScpCi0gICAgICAgIHRlc3QxMC5kb25lKCk7Ci0gICAgfSksIHN0YW5kYXJkVGltZW91dCk7
Ci19KTsKKy8vIHZhciB0ZXN0NSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQg
b25seSBjYWxsIHB1bGwgb25jZSB1cG9uIHN0YXJ0aW5nIHRoZSBzdHJlYW0nKTsKKy8vIHRlc3Q1
LnN0ZXAoZnVuY3Rpb24oKSB7CisvLyAgICAgdmFyIHB1bGxDb3VudCA9IDA7CisvLyAgICAgdmFy
IHN0YXJ0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworLy8gICAgIHZhciBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisvLyAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHsKKy8vICAgICAg
ICAgICAgIHJldHVybiBzdGFydFByb21pc2U7CisvLyAgICAgICAgIH0sCisvLyAgICAgICAgIHB1
bGw6IGZ1bmN0aW9uKCkgeworLy8gICAgICAgICAgICAgcHVsbENvdW50Kys7CisvLyAgICAgICAg
IH0KKy8vICAgICB9KTsKKworLy8gICAgIHN0YXJ0UHJvbWlzZS50aGVuKHRlc3Q1LnN0ZXBfZnVu
YyhmdW5jdGlvbigpIHsKKy8vICAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdw
dWxsIHNob3VsZCBiZSBjYWxsZWQgb25jZSBzdGFydCBmaW5pc2hlcycpOworLy8gICAgIH0pKTsK
KworLy8gICAgIHNldFRpbWVvdXQodGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworLy8gICAg
ICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBl
eGFjdGx5IG9uY2UnKTsKKy8vICAgICAgICAgdGVzdDUuZG9uZSgpOworLy8gICAgIH0pLCBzdGFu
ZGFyZFRpbWVvdXQpOworLy8gfSk7CisKKy8vIHZhciB0ZXN0NiA9IGFzeW5jX3Rlc3QoJ1JlYWRh
YmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSBmb3IgYSBmb3JldmVyLWVtcHR5
IHN0cmVhbSwgZXZlbiBhZnRlciByZWFkaW5nJyk7CisvLyB0ZXN0Ni5zdGVwKGZ1bmN0aW9uKCkg
eworLy8gICAgIHZhciBwdWxsQ291bnQgPSAwOworLy8gICAgIHZhciBzdGFydFByb21pc2UgPSBQ
cm9taXNlLnJlc29sdmUoKTsKKy8vICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewor
Ly8gICAgICAgICBzdGFydDogZnVuY3Rpb24oKSB7CisvLyAgICAgICAgICAgICByZXR1cm4gc3Rh
cnRQcm9taXNlOworLy8gICAgICAgICB9LAorLy8gICAgICAgICBwdWxsOiBmdW5jdGlvbigpIHsK
Ky8vICAgICAgICAgICAgIHB1bGxDb3VudCsrOworLy8gICAgICAgICB9CisvLyAgICAgfSk7CisK
Ky8vICAgICBzdGFydFByb21pc2UudGhlbih0ZXN0Ni5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Cisv
LyAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2Fs
bGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMnKTsKKy8vICAgICB9KSk7CisKKy8vICAgICBycy5nZXRS
ZWFkZXIoKS5yZWFkKCk7CisKKy8vICAgICBzZXRUaW1lb3V0KHRlc3Q2LnN0ZXBfZnVuYyhmdW5j
dGlvbigpIHsKKy8vICAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNo
b3VsZCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlJyk7CisvLyAgICAgICAgIHRlc3Q2LmRvbmUoKTsK
Ky8vICAgICB9KSwgc3RhbmRhcmRUaW1lb3V0KTsKKy8vIH0pOworCisvLyB2YXIgdGVzdDcgPSBh
c3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ugb24g
YSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBiZWZvcmUgc3RhcnQgZnVsZmlsbHMnKTsKKy8v
IHRlc3Q3LnN0ZXAoZnVuY3Rpb24oKSB7CisvLyAgICAgdmFyIHB1bGxDb3VudCA9IDA7CisvLyAg
ICAgdmFyIHN0YXJ0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworLy8gICAgIHZhciBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisvLyAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Cisv
LyAgICAgICAgICAgICBjLmVucXVldWUoJ2EnKTsKKy8vICAgICAgICAgICAgIHJldHVybiBzdGFy
dFByb21pc2U7CisvLyAgICAgICAgIH0sCisvLyAgICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkgewor
Ly8gICAgICAgICAgICAgcHVsbENvdW50Kys7CisvLyAgICAgICAgIH0KKy8vICAgICB9KTsKKwor
Ly8gICAgIHN0YXJ0UHJvbWlzZS50aGVuKHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKy8v
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBiZSBjYWxs
ZWQgb25jZSBzdGFydCBmaW5pc2hlcycpOworLy8gICAgIH0pKTsKKworLy8gICAgIHJzLmdldFJl
YWRlcigpLnJlYWQoKS50aGVuKHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7CisvLyAgICAg
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwg
J2ZpcnN0IHJlYWQoKSBzaG91bGQgcmV0dXJuIGZpcnN0IGNodW5rJyk7CisvLyAgICAgICAgIGFz
c2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxs
ZWQgYWdhaW4nKTsKKy8vICAgICB9KSk7CisKKy8vICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3Vu
dCwgMCwgJ2NhbGxpbmcgcmVhZCgpIHNob3VsZCBub3QgY2F1c2UgcHVsbCB0byBiZSBjYWxsZWQg
eWV0Jyk7CisKKy8vICAgICBzZXRUaW1lb3V0KHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsK
Ky8vICAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBiZSBj
YWxsZWQgZXhhY3RseSBvbmNlJyk7CisvLyAgICAgICAgIHRlc3Q3LmRvbmUoKTsKKy8vICAgICB9
KSwgc3RhbmRhcmRUaW1lb3V0KTsKKy8vIH0pOworCisvLyB2YXIgdGVzdDggPSBhc3luY190ZXN0
KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIHR3aWNlIG9uIGEgbm9uLWVt
cHR5IHN0cmVhbSByZWFkIGZyb20gYWZ0ZXIgc3RhcnQgZnVsZmlsbHMnKTsKKy8vIHRlc3Q4LnN0
ZXAoZnVuY3Rpb24oKSB7CisvLyAgICAgdmFyIHB1bGxDb3VudCA9IDA7CisvLyAgICAgdmFyIHN0
YXJ0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworLy8gICAgIHZhciBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7CisvLyAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisvLyAgICAgICAg
ICAgICBjLmVucXVldWUoJ2EnKTsKKy8vICAgICAgICAgICAgIHJldHVybiBzdGFydFByb21pc2U7
CisvLyAgICAgICAgIH0sCisvLyAgICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkgeworLy8gICAgICAg
ICAgICAgcHVsbENvdW50Kys7CisvLyAgICAgICAgIH0KKy8vICAgICB9KTsKKworLy8gICAgIHN0
YXJ0UHJvbWlzZS50aGVuKHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKy8vICAgICAgICAg
YXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgb25jZSBz
dGFydCBmaW5pc2hlcycpOworCisvLyAgICAgICAgIHJzLmdldFJlYWRlcigpLnJlYWQoKS50aGVu
KHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7CisvLyAgICAgICAgICAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCByZWFkKCkg
c2hvdWxkIHJldHVybiBmaXJzdCBjaHVuaycpOworLy8gICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhwdWxsQ291bnQsIDIsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgYWdhaW4gb25jZSByZWFkIGZ1
bGZpbGxzJyk7CisvLyAgICAgICAgIH0pKTsKKy8vICAgICB9KSk7CisKKy8vICAgICBhc3NlcnRf
ZXF1YWxzKHB1bGxDb3VudCwgMCwgJ2NhbGxpbmcgcmVhZCgpIHNob3VsZCBub3QgY2F1c2UgcHVs
bCB0byBiZSBjYWxsZWQgeWV0Jyk7CisKKy8vICAgICBzZXRUaW1lb3V0KHRlc3Q4LnN0ZXBfZnVu
YyhmdW5jdGlvbigpIHsKKy8vICAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDIsICdw
dWxsIHNob3VsZCBiZSBjYWxsZWQgZXhhY3RseSB0d2ljZScpCisvLyAgICAgICAgIHRlc3Q4LmRv
bmUoKTsKKy8vICAgICB9KSwgc3RhbmRhcmRUaW1lb3V0KTsKKy8vIH0pOworCisvLyB2YXIgdGVz
dDkgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCBpbiByZWFj
dGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIG5vdCBkcmFpbmluZycpOworLy8g
dGVzdDkuc3RlcChmdW5jdGlvbigpIHsKKy8vICAgICB2YXIgcHVsbENvdW50ID0gMDsKKy8vICAg
ICB2YXIgY29udHJvbGxlcjsKKy8vICAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNv
bHZlKCk7CisvLyAgICAgdmFyIHB1bGxQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7CisvLyAg
ICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKy8vICAgICAgICAgc3RhcnQ6IGZ1bmN0
aW9uKGMpIHsKKy8vICAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBjOworLy8gICAgICAgICAgICAg
cmV0dXJuIHN0YXJ0UHJvbWlzZTsKKy8vICAgICAgICAgfSwKKy8vICAgICAgICAgcHVsbDogZnVu
Y3Rpb24oKSB7CisvLyAgICAgICAgICAgICArK3B1bGxDb3VudDsKKy8vICAgICAgICAgICAgIHJl
dHVybiBwdWxsUHJvbWlzZTsKKy8vICAgICAgICAgfQorLy8gICAgIH0pOworCisvLyAgICAgdmFy
IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisvLyAgICAgc3RhcnRQcm9taXNlLnRoZW4odGVz
dDkuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworLy8gICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxD
b3VudCwgMSwgJ3B1bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZSBhZnRlciByZWFkJyk7
CisKKy8vICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisKKy8vICAgICAgICAgcmV0
dXJuIHB1bGxQcm9taXNlLnRoZW4odGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworLy8gICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDIsICdwdWxsIHNob3VsZCBoYXZlIGJl
ZW4gY2FsbGVkIGEgc2Vjb25kIHRpbWUgYWZ0ZXIgZW5xdWV1ZScpOworCisvLyAgICAgICAgICAg
ICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsK
Ky8vICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMywgJ3B1bGwgc2hv
dWxkIGhhdmUgYmVlbiBjYWxsZWQgYSB0aGlyZCB0aW1lIGFmdGVyIHJlYWQnKTsKKy8vICAgICAg
ICAgICAgIH0pKTsKKy8vICAgICAgICAgfSkpOworLy8gICAgIH0pKS5jYXRjaCh0ZXN0OS5zdGVw
X2Z1bmMoZnVuY3Rpb24oZSkgeworLy8gICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKGUpOworLy8g
ICAgIH0pKTsKKworLy8gICAgIHNldFRpbWVvdXQodGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
eworLy8gICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMywgJ3B1bGwgc2hvdWxkIGJl
IGNhbGxlZCBleGFjdGx5IHRocmljZScpCisvLyAgICAgICAgIHRlc3Q5LmRvbmUoKTsKKy8vICAg
ICB9KSwgc3RhbmRhcmRUaW1lb3V0KTsKKy8vIH0pOworCisvLyB2YXIgdGVzdDEwID0gYXN5bmNf
dGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsKCkgaW4gcmVhY3Rpb24g
dG8gcmVhZCgpaW5nIHRoZSBsYXN0IGNodW5rLCBpZiBkcmFpbmluZycpOworLy8gdGVzdDEwLnN0
ZXAoZnVuY3Rpb24oKSB7CisvLyAgICAgdmFyIHB1bGxDb3VudCA9IDA7CisvLyAgICAgdmFyIGNv
bnRyb2xsZXI7CisvLyAgICAgdmFyIHN0YXJ0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOwor
Ly8gICAgIHZhciBwdWxsUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworLy8gICAgIHZhciBy
cyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisvLyAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7
CisvLyAgICAgICAgICAgICBjb250cm9sbGVyID0gYzsKKy8vICAgICAgICAgICAgIHJldHVybiBz
dGFydFByb21pc2U7CisvLyAgICAgICAgIH0sCisvLyAgICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkg
eworLy8gICAgICAgICAgICAgKytwdWxsQ291bnQ7CisvLyAgICAgICAgICAgICByZXR1cm4gcHVs
bFByb21pc2U7CisvLyAgICAgICAgIH0KKy8vICAgICB9KTsKKworLy8gICAgIHZhciByZWFkZXIg
PSBycy5nZXRSZWFkZXIoKTsKKworLy8gICAgIHN0YXJ0UHJvbWlzZS50aGVuKHRlc3QxMC5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7CisvLyAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAx
LCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlIGFmdGVyIHJlYWQnKTsKKworLy8g
ICAgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKworLy8gICAgICAgICByZXR1cm4gcHVs
bFByb21pc2UudGhlbih0ZXN0MTAuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworLy8gICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDIsICdwdWxsIHNob3VsZCBoYXZlIGJlZW4gY2Fs
bGVkIGEgc2Vjb25kIHRpbWUgYWZ0ZXIgZW5xdWV1ZScpOworCisvLyAgICAgICAgICAgICBjb250
cm9sbGVyLmNsb3NlKCk7CisKKy8vICAgICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRo
ZW4odGVzdDEwLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKy8vICAgICAgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVk
IGEgdGhpcmQgdGltZSBhZnRlciByZWFkJyk7CisvLyAgICAgICAgICAgICB9KSk7CisvLyAgICAg
ICAgIH0pKTsKKy8vICAgICB9KSkuY2F0Y2godGVzdDEwLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7
CisvLyAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoZSkKKy8vICAgICB9KSk7CisKKy8vICAgICBz
ZXRUaW1lb3V0KHRlc3QxMC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisvLyAgICAgICAgIGFzc2Vy
dF9lcXVhbHMocHVsbENvdW50LCAyLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgdHdp
Y2UnKQorLy8gICAgICAgICB0ZXN0MTAuZG9uZSgpOworLy8gICAgIH0pLCBzdGFuZGFyZFRpbWVv
dXQpOworLy8gfSk7CiAKIHZhciB0ZXN0MTEgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTog
c2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50aWwgdGhlIHByZXZpb3VzIHB1bGwgY2FsbFwncyBwcm9t
aXNlIGZ1bGZpbGxzJyk7CiB0ZXN0MTEuc3RlcChmdW5jdGlvbigpIHsKQEAgLTQwOCw1MSArNDA4
LDUxIEBAIHRlc3QxMS5zdGVwKGZ1bmN0aW9uKCkgewogICAgIH0pKTsKIH0pOwogCi12YXIgdGVz
dDEyID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBwdWxsIGFmdGVyIHN0YXJ0
LCBhbmQgYWZ0ZXIgZXZlcnkgcmVhZCcpOwotdGVzdDEyLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAg
dmFyIHRpbWVzQ2FsbGVkID0gMDsKLSAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNv
bHZlKCk7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6
IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAgICAgICAg
Yy5lbnF1ZXVlKCdiJyk7Ci0gICAgICAgICAgICBjLmVucXVldWUoJ2MnKTsKLSAgICAgICAgICAg
IHJldHVybiBzdGFydFByb21pc2U7Ci0gICAgICAgIH0sCi0gICAgICAgIHB1bGw6IGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgKyt0aW1lc0NhbGxlZDsKLSAgICAgICAgfSwKLSAgICAgICAgc3Ry
YXRlZ3k6IHsKLSAgICAgICAgICAgIHNpemU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAg
IHJldHVybiAxOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHNob3VsZEFwcGx5QmFja3By
ZXNzdXJlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9KTsKLSAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVh
ZGVyKCk7Ci0KLSAgICBzdGFydFByb21pc2UudGhlbih0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9u
KCkgewotICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHRlc3QxMi5zdGVwX2Z1bmMo
ZnVuY3Rpb24ocmVzdWx0MSkgewotICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVz
dWx0MSwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgY2h1bmsgc2hvdWxkIGJl
IGFzIGV4cGVjdGVkJyk7Ci0KLSAgICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4o
dGVzdDEyLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQyKSB7Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MiwgeyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LCAn
c2Vjb25kIGNodW5rIHNob3VsZCBiZSBhcyBleHBlY3RlZCcpOwotCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3Vs
dDMpIHsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0Mywg
eyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LCAndGhpcmQgY2h1bmsgc2hvdWxkIGJlIGFzIGV4
cGVjdGVkJyk7Ci0KLSAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCh0ZXN0MTIuc3RlcF9m
dW5jKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25jZSBmb3IgYWZ0
ZXIgc3RhcnQsIGFuZCBvbmNlIGZvciBldmVyeSByZWFkLgotICAgICAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgNCwgJ3B1bGwoKSBzaG91bGQgYmUgY2FsbGVk
IGV4YWN0bHkgZm91ciB0aW1lcycpOwotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdDEyLmRv
bmUoKTsKLSAgICAgICAgICAgICAgICAgICAgfSksIHN0YW5kYXJkVGltZW91dCk7Ci0gICAgICAg
ICAgICAgICAgfSkpOwotICAgICAgICAgICAgfSkpOwotICAgICAgICB9KSk7Ci0gICAgfSkpLmNh
dGNoKHRlc3QxMi5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9
KSk7Ci19KTsKKy8vIHZhciB0ZXN0MTIgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hv
dWxkIHB1bGwgYWZ0ZXIgc3RhcnQsIGFuZCBhZnRlciBldmVyeSByZWFkJyk7CisvLyB0ZXN0MTIu
c3RlcChmdW5jdGlvbigpIHsKKy8vICAgICB2YXIgdGltZXNDYWxsZWQgPSAwOworLy8gICAgIHZh
ciBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKKy8vICAgICB2YXIgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oeworLy8gICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgeworLy8gICAg
ICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7CisvLyAgICAgICAgICAgICBjLmVucXVldWUoJ2InKTsK
Ky8vICAgICAgICAgICAgIGMuZW5xdWV1ZSgnYycpOworLy8gICAgICAgICAgICAgcmV0dXJuIHN0
YXJ0UHJvbWlzZTsKKy8vICAgICAgICAgfSwKKy8vICAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7
CisvLyAgICAgICAgICAgICArK3RpbWVzQ2FsbGVkOworLy8gICAgICAgICB9LAorLy8gICAgICAg
ICBzdHJhdGVneTogeworLy8gICAgICAgICAgICAgc2l6ZTogZnVuY3Rpb24oKSB7CisvLyAgICAg
ICAgICAgICAgICAgcmV0dXJuIDE7CisvLyAgICAgICAgICAgICB9LAorLy8gICAgICAgICAgICAg
c2hvdWxkQXBwbHlCYWNrcHJlc3N1cmU6IGZ1bmN0aW9uKCkgeworLy8gICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKy8vICAgICAgICAgICAgIH0KKy8vICAgICAgICAgfQorLy8gICAgIH0p
OworLy8gICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworLy8gICAgIHN0YXJ0UHJv
bWlzZS50aGVuKHRlc3QxMi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisvLyAgICAgICAgIHJldHVy
biByZWFkZXIucmVhZCgpLnRoZW4odGVzdDEyLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQxKSB7
CisvLyAgICAgICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQxLCB7IHZhbHVlOiAn
YScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCBjaHVuayBzaG91bGQgYmUgYXMgZXhwZWN0ZWQnKTsK
KworLy8gICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MTIuc3RlcF9m
dW5jKGZ1bmN0aW9uKHJlc3VsdDIpIHsKKy8vICAgICAgICAgICAgICAgICBhc3NlcnRfb2JqZWN0
X2VxdWFscyhyZXN1bHQyLCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sICdzZWNvbmQgY2h1
bmsgc2hvdWxkIGJlIGFzIGV4cGVjdGVkJyk7CisKKy8vICAgICAgICAgICAgICAgICByZXR1cm4g
cmVhZGVyLnJlYWQoKS50aGVuKHRlc3QxMi5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0Mykgewor
Ly8gICAgICAgICAgICAgICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQzLCB7IHZh
bHVlOiAnYycsIGRvbmU6IGZhbHNlIH0sICd0aGlyZCBjaHVuayBzaG91bGQgYmUgYXMgZXhwZWN0
ZWQnKTsKKworLy8gICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3QxMi5zdGVwX2Z1
bmMoZnVuY3Rpb24oKSB7CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmNlIGZvciBh
ZnRlciBzdGFydCwgYW5kIG9uY2UgZm9yIGV2ZXJ5IHJlYWQuCisvLyAgICAgICAgICAgICAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCA0LCAncHVsbCgpIHNob3VsZCBiZSBj
YWxsZWQgZXhhY3RseSBmb3VyIHRpbWVzJyk7CisvLyAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0MTIuZG9uZSgpOworLy8gICAgICAgICAgICAgICAgICAgICB9KSwgc3RhbmRhcmRUaW1lb3V0
KTsKKy8vICAgICAgICAgICAgICAgICB9KSk7CisvLyAgICAgICAgICAgICB9KSk7CisvLyAgICAg
ICAgIH0pKTsKKy8vICAgICB9KSkuY2F0Y2godGVzdDEyLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7
IGFzc2VydF91bnJlYWNoZWQoZSk7IH0pKTsKKy8vIH0pOwogCiB2YXIgdGVzdDEzID0gYXN5bmNf
dGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIGFmdGVyIHN0YXJ0IGlm
IHRoZSBzdHJlYW0gaXMgbm93IGNsb3NlZCcpOwogdGVzdDEzLnN0ZXAoZnVuY3Rpb24oKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251008</attachid>
            <date>2015-04-17 02:16:21 -0700</date>
            <delta_ts>2015-04-17 03:04:39 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-143778-20150417111522.patch</filename>
            <type>text/plain</type>
            <size>39541</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyODgxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjQ1NGYwNTRiNjAxNTNlY2U4YmMz
N2Y5NGU3NWZmNWRiYmEyODYwOS4uMjYyM2UzMzc2ODYyNmEzMmQ0MGI2NmJiYzRlNmRkMmEzNTdi
ZDA0NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTA0LTE3ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+IGFuZCBYYWJpZXIgUm9kcmlndWV6IENhbHZhciA8
Y2FsdmFyaXNAaWdhbGlhLmNvbT4KKworICAgICAgICBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbCBpcyBmbGFreQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzNzc4CisKKyAgICAgICAgVW5yZXZpZXdl
ZC4KKworICAgICAgICBDb21tZW50IG91dCBmbGFreSBzdWJ0ZXN0cyB3aGlsZSB3b3JraW5nIG9u
IGEgbW9yZSBjb21wbGV0ZQorICAgICAgICBzb2x1dGlvbi4KKworICAgICAgICBUaGUgcHJvYmxl
bSB3aXRoIHRoZXNlIHRlc3RzIGlzIHRoYXQgdGhleSBzZXQgYSB0aW1lb3V0IGJlZm9yZSB0aGUK
KyAgICAgICAgY2FsbGluZyBkb25lKCkgYW5kIHRoaXMgY2F1c2VzIHNvbWUgdGVzdHMgdG8gYmVo
YXZlCisgICAgICAgIHVuZGV0ZXJtaW5pc3RpY2FsbHksIHNwZWNpbGx5IGNvZGUgcmVsYXRlZCB0
byBwcm9taXNlCisgICAgICAgIHJlc29sdXRpb24uIFRoaXMgY291bGQgZXZlbiBjYXVzZSBpbmRl
dGVybWluYXRpb24gaWYgdGhlIHRlc3RzCisgICAgICAgIHdlcmUgZXhwZWN0ZWQgdG8gcnVuIGNv
cnJlY3RseS4KKworICAgICAgICBXZSB0aGluayBpdCBpcyBiZXR0ZXIgdG8gY29tbWVudCB0aGVt
IG91dCBhbmQgZmluZCBhIG1vcmUgbG9uZworICAgICAgICB0ZXJtIHNvbHV0aW9uIHRoYXQgY291
bGQgaW52b2x2ZSBzdWJtaXR0aW5nIGNoYW5nZSByZXF1ZXN0cyB0byB0aGUKKyAgICAgICAgcmVm
ZXJlbmNlIHRlc3RzIGluIHRoZSBzcGVjLiBUaGlzIHdpbGwgYmUgdGFja2xlZCBpbiBidWcgMTQz
Nzc0LgorCisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFi
bGUtc3RyZWFtLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVy
Lmh0bWw6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFi
bGUtc3RyZWFtLXRlbXBsYXRlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RyZWFtcy9yZWZl
cmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC5odG1sOgorICAg
ICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5o
dG1sOgorCiAyMDE1LTA0LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGEgY29uc29sZSBtZXNzYWdlIHdoZW4gYSBzdHlsZXNoZWV0IGlzIG5vdCBwYXJz
ZWQgZHVlIHRvIGludmFsaWQgTUlNRSB0eXBlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUt
c3RyZWFtLWV4cGVjdGVkLnR4dAppbmRleCA5ZWVmMWYyNTBmZmY1ODAwM2I4NDE1ZWQxMTlkYzcw
NWIxODAzZmZhLi5iYmY0ODYyNDAwM2I1MzU1N2ExZmUzZmVkZjEwZGM4MzdlMmIzNDU0IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFk
YWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQKQEAgLTEwLDE0
ICsxMCw3IEBAIFRJTUVPVVQgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8g
cmV0dXJuIGEgcHJvbWlzZSBhbmQgcmVqZWN0IGl0IFRlCiBGQUlMIFJlYWRhYmxlU3RyZWFtIHNo
b3VsZCBiZSBhYmxlIHRvIGVucXVldWUgZGlmZmVyZW50IG9iamVjdHMuIHJlYWQgaXMgbm90IGlt
cGxlbWVudGVkCiBQQVNTIFJlYWRhYmxlU3RyZWFtOiBpZiBzdGFydCB0aHJvd3MgYW4gZXJyb3Is
IGl0IHNob3VsZCBiZSByZS10aHJvd24gCiBGQUlMIFJlYWRhYmxlU3RyZWFtOiBpZiBwdWxsIHJl
amVjdHMsIGl0IHNob3VsZCBlcnJvciB0aGUgc3RyZWFtIHJlYWQgaXMgbm90IGltcGxlbWVudGVk
Ci1GQUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSB1cG9uIHN0
YXJ0aW5nIHRoZSBzdHJlYW0gYXNzZXJ0X2VxdWFsczogcHVsbCBzaG91bGQgYmUgY2FsbGVkIG9u
Y2Ugc3RhcnQgZmluaXNoZXMgZXhwZWN0ZWQgMSBidXQgZ290IDAKLUZBSUwgUmVhZGFibGVTdHJl
YW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIGZvciBhIGZvcmV2ZXItZW1wdHkgc3RyZWFt
LCBldmVuIGFmdGVyIHJlYWRpbmcgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwgUmVhZGFi
bGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIG9uIGEgbm9uLWVtcHR5IHN0cmVh
bSByZWFkIGZyb20gYmVmb3JlIHN0YXJ0IGZ1bGZpbGxzIHJlYWQgaXMgbm90IGltcGxlbWVudGVk
Ci1GQUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgdHdpY2Ugb24gYSBu
b24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBhZnRlciBzdGFydCBmdWxmaWxscyBhc3NlcnRfZXF1
YWxzOiBwdWxsIHNob3VsZCBiZSBjYWxsZWQgb25jZSBzdGFydCBmaW5pc2hlcyBleHBlY3RlZCAx
IGJ1dCBnb3QgMAotRkFJTCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCBpbiByZWFj
dGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIG5vdCBkcmFpbmluZyBhc3NlcnRf
ZXF1YWxzOiBwdWxsIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UgYWZ0ZXIgcmVhZCBleHBl
Y3RlZCAxIGJ1dCBnb3QgMAotRkFJTCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1
bGwoKSBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIGRyYWluaW5n
IGFzc2VydF9lcXVhbHM6IHB1bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZSBhZnRlciBy
ZWFkIGV4cGVjdGVkIDEgYnV0IGdvdCAwCiBGQUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90
IGNhbGwgcHVsbCB1bnRpbCB0aGUgcHJldmlvdXMgcHVsbCBjYWxsJ3MgcHJvbWlzZSBmdWxmaWxs
cyByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIHB1
bGwgYWZ0ZXIgc3RhcnQsIGFuZCBhZnRlciBldmVyeSByZWFkIHJlYWQgaXMgbm90IGltcGxlbWVu
dGVkCiBGQUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCBhZnRlciBzdGFy
dCBpZiB0aGUgc3RyZWFtIGlzIG5vdyBjbG9zZWQgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKIEZB
SUwgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgYWZ0ZXIgZW5xdWV1ZWluZyBmcm9t
IGluc2lkZSBwdWxsICh3aXRoIG5vIHJlYWQgcmVxdWVzdHMpLCBpZiBzdHJhdGVneSBhbGxvd3Mg
YXNzZXJ0X2VxdWFsczogcHVsbCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGZvdXIgdGltZXMg
ZXhwZWN0ZWQgNCBidXQgZ290IDAKIFRJTUVPVVQgUmVhZGFibGVTdHJlYW0gcHVsbCBzaG91bGQg
YmUgYWJsZSB0byBjbG9zZSBhIHN0cmVhbS4gVGVzdCB0aW1lZCBvdXQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVh
bS1yZWFkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1w
bGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQKaW5kZXggYzNl
NTE0MmQ0Njk5NTFlOWQzYTYyYjY1Y2ZiNDM0YWIxNzVlMzU0My4uMjkxYjQ0NzFjZTExMmM3ZTc2
OWE3ZTU1ZmJlNTliNGYzNjM1OTBkNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9y
ZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVh
ZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQKQEAgLTEzLDggKzEzLDYgQEAgRkFJTCBS
ZWFkaW5nIGZyb20gYSByZWFkZXIgZm9yIGFuIGVtcHR5IHN0cmVhbSB3aWxsIHdhaXQgdW50aWwg
YSBjaHVuayBpcyBhdmFpbGEKIEZBSUwgY2FuY2VsKCkgb24gYSByZWFkZXIgcmVsZWFzZXMgdGhl
IHJlYWRlciBiZWZvcmUgY2FsbGluZyB0aHJvdWdoIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQK
IFRJTUVPVVQgY2xvc2VkIHNob3VsZCBiZSBmdWxmaWxsZWQgYWZ0ZXIgc3RyZWFtIGlzIGNsb3Nl
ZCAoLmNsb3NlZCBhY2Nlc3MgYmVmb3JlIGFjcXVpcmluZykgVGVzdCB0aW1lZCBvdXQKIEZBSUwg
Y2xvc2VkIHNob3VsZCBiZSBmdWxmaWxsZWQgYWZ0ZXIgcmVhZGVyIHJlbGVhc2VzIGl0cyBsb2Nr
IChtdWx0aXBsZSBzdHJlYW0gbG9ja3MpIHJlbGVhc2VMb2NrIGlzIG5vdCBpbXBsZW1lbnRlZAot
RkFJTCBNdWx0aXBsZSByZWFkZXJzIGNhbiBhY2Nlc3MgdGhlIHN0cmVhbSBpbiBzZXF1ZW5jZSBy
ZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBDYW5ub3QgdXNlIGFuIGFscmVhZHktcmVsZWFz
ZWQgcmVhZGVyIHRvIHVubG9jayBhIHN0cmVhbSBhZ2FpbiByZWxlYXNlTG9jayBpcyBub3QgaW1w
bGVtZW50ZWQKLUZBSUwgY2FuY2VsKCkgb24gYSByZWxlYXNlZCByZWFkZXIgaXMgYSBuby1vcCBh
bmQgZG9lcyBub3QgcGFzcyB0aHJvdWdoIHJlbGVhc2VMb2NrIGlzIG5vdCBpbXBsZW1lbnRlZAog
RkFJTCBHZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBhZnRlciBlcnJvcmluZyB0aGUgc3RyZWFtIHNo
b3VsZCBzdWNjZWVkIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1y
ZWFkZXIuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9u
L3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRtbAppbmRleCA0Mjk1OTA3NTI5OGNjYTJkZDNjODU4
ODVjNTAzYmZkNGM0ZDllYmRjLi42ZjM5ZjY5NzVkZGRjMGM2MWE5NzQxYTU4ZjYwZTg1MzZhMzE5
ZTAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRh
dGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFt
cy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1sCkBA
IC0xOTAsMzYgKzE5MCwzNiBAQCB0ZXN0NC5zdGVwKGZ1bmN0aW9uKCkgewogICAgIH0pKTsKIH0p
OwogCi12YXIgdGVzdDUgPSBhc3luY190ZXN0KCdNdWx0aXBsZSByZWFkZXJzIGNhbiBhY2Nlc3Mg
dGhlIHN0cmVhbSBpbiBzZXF1ZW5jZScpOwotdGVzdDUuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2
YXIgcmVhZENvdW50ID0gMDsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAg
ICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0g
ICAgICAgICAgICBjLmVucXVldWUoJ2InKTsKLSAgICAgICAgICAgIGMuY2xvc2UoKTsKLSAgICAg
ICAgfQotICAgIH0pOwotCi0gICAgdmFyIHJlYWRlcjEgPSBycy5nZXRSZWFkZXIoKTsKLSAgICBy
ZWFkZXIxLnJlYWQoKS50aGVuKHRlc3Q1LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAg
IGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3Jl
YWRpbmcgdGhlIGZpcnN0IGNodW5rIGZyb20gcmVhZGVyMSB3b3JrcycpOwotICAgICAgICArK3Jl
YWRDb3VudDsKLSAgICB9KSk7Ci0gICAgcmVhZGVyMS5yZWxlYXNlTG9jaygpOwotCi0gICAgdmFy
IHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKLSAgICByZWFkZXIyLnJlYWQoKS50aGVuKHRlc3Q1
LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIs
IHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwgJ3JlYWRpbmcgdGhlIHNlY29uZCBjaHVuayBm
cm9tIHJlYWRlcjIgd29ya3MnKTsKLSAgICAgICAgKytyZWFkQ291bnQ7Ci0gICAgfSkpOwotICAg
IHJlYWRlcjIucmVsZWFzZUxvY2soKTsKLQotICAgIHNldFRpbWVvdXQodGVzdDUuc3RlcF9mdW5j
KGZ1bmN0aW9uKCkgewotICAgICAgICBhc3NlcnRfZXF1YWxzKHJlYWRDb3VudCwgMik7Ci0gICAg
ICAgIHRlc3Q1LmRvbmUoKTsKLSAgICB9KSwgc3RhbmRhcmRUaW1lb3V0KTsKLX0pOworLy8gdmFy
IHRlc3Q1ID0gYXN5bmNfdGVzdCgnTXVsdGlwbGUgcmVhZGVycyBjYW4gYWNjZXNzIHRoZSBzdHJl
YW0gaW4gc2VxdWVuY2UnKTsKKy8vIHRlc3Q1LnN0ZXAoZnVuY3Rpb24oKSB7CisvLyAgICAgdmFy
IHJlYWRDb3VudCA9IDA7CisvLyAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKy8v
ICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKy8vICAgICAgICAgICAgIGMuZW5xdWV1ZSgn
YScpOworLy8gICAgICAgICAgICAgYy5lbnF1ZXVlKCdiJyk7CisvLyAgICAgICAgICAgICBjLmNs
b3NlKCk7CisvLyAgICAgICAgIH0KKy8vICAgICB9KTsKKworLy8gICAgIHZhciByZWFkZXIxID0g
cnMuZ2V0UmVhZGVyKCk7CisvLyAgICAgcmVhZGVyMS5yZWFkKCkudGhlbih0ZXN0NS5zdGVwX2Z1
bmMoZnVuY3Rpb24ocikgeworLy8gICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZh
bHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdyZWFkaW5nIHRoZSBmaXJzdCBjaHVuayBmcm9tIHJl
YWRlcjEgd29ya3MnKTsKKy8vICAgICAgICAgKytyZWFkQ291bnQ7CisvLyAgICAgfSkpOworLy8g
ICAgIHJlYWRlcjEucmVsZWFzZUxvY2soKTsKKworLy8gICAgIHZhciByZWFkZXIyID0gcnMuZ2V0
UmVhZGVyKCk7CisvLyAgICAgcmVhZGVyMi5yZWFkKCkudGhlbih0ZXN0NS5zdGVwX2Z1bmMoZnVu
Y3Rpb24ocikgeworLy8gICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAn
YicsIGRvbmU6IGZhbHNlIH0sICdyZWFkaW5nIHRoZSBzZWNvbmQgY2h1bmsgZnJvbSByZWFkZXIy
IHdvcmtzJyk7CisvLyAgICAgICAgICsrcmVhZENvdW50OworLy8gICAgIH0pKTsKKy8vICAgICBy
ZWFkZXIyLnJlbGVhc2VMb2NrKCk7CisKKy8vICAgICBzZXRUaW1lb3V0KHRlc3Q1LnN0ZXBfZnVu
YyhmdW5jdGlvbigpIHsKKy8vICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZWFkQ291bnQsIDIpOwor
Ly8gICAgICAgICB0ZXN0NS5kb25lKCk7CisvLyAgICAgfSksIHN0YW5kYXJkVGltZW91dCk7Cisv
LyB9KTsKIAogdmFyIHRlc3Q2ID0gYXN5bmNfdGVzdCgnQ2Fubm90IHVzZSBhbiBhbHJlYWR5LXJl
bGVhc2VkIHJlYWRlciB0byB1bmxvY2sgYSBzdHJlYW0gYWdhaW4nKTsKIHRlc3Q2LnN0ZXAoZnVu
Y3Rpb24oKSB7CkBAIC0yNDEsMzggKzI0MSwzOCBAQCB0ZXN0Ni5zdGVwKGZ1bmN0aW9uKCkgewog
ICAgIH0pKTsKIH0pOwogCi12YXIgdGVzdDcgPSBhc3luY190ZXN0KCdjYW5jZWwoKSBvbiBhIHJl
bGVhc2VkIHJlYWRlciBpcyBhIG5vLW9wIGFuZCBkb2VzIG5vdCBwYXNzIHRocm91Z2gnKTsKLXRl
c3Q3LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHJlYWRDb3VudHMgPSAwOwotICAgIHZhciBj
YW5jZWxsZWQgPSBmYWxzZTsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAg
ICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0g
ICAgICAgIH0sCi0gICAgICAgIGNhbmNlbDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBhc3Nl
cnRfdW5yZWFjaGVkKCd1bmRlcmx5aW5nIHNvdXJjZSBjYW5jZWwgc2hvdWxkIG5vdCBiZSBjYWxs
ZWQnKTsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRl
cigpOwotICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOwotICAgIHJlYWRlci5jYW5jZWwoKS50aGVu
KHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbih2KSB7Ci0gICAgICAgIGFzc2VydF9lcXVhbHModiwg
dW5kZWZpbmVkLCAnY2FuY2VsKCkgb24gdGhlIHJlYWRlciBzaG91bGQgZnVsZmlsbCB3aXRoIHVu
ZGVmaW5lZCcpCi0gICAgICAgIGNhbmNlbGxlZCA9IHRydWU7Ci0gICAgfSkpOwotCi0gICAgdmFy
IHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKLSAgICByZWFkZXIyLnJlYWQoKS50aGVuKHRlc3Q3
LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIs
IHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2EgbmV3IHJlYWRlciBzaG91bGQgYmUgYWJs
ZSB0byByZWFkIGEgY2h1bmsnKTsKLSAgICAgICAgKytyZWFkQ291bnRzOwotICAgIH0pKTsKLQot
ICAgIHNldFRpbWVvdXQodGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICBhc3Nl
cnRfdHJ1ZShjYW5jZWxsZWQpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHJlYWRDb3VudHMsIDEp
OwotICAgICAgICB0ZXN0Ny5kb25lKCk7Ci0gICAgfSksIHN0YW5kYXJkVGltZW91dCk7Ci19KTsK
Ky8vIHZhciB0ZXN0NyA9IGFzeW5jX3Rlc3QoJ2NhbmNlbCgpIG9uIGEgcmVsZWFzZWQgcmVhZGVy
IGlzIGEgbm8tb3AgYW5kIGRvZXMgbm90IHBhc3MgdGhyb3VnaCcpOworLy8gdGVzdDcuc3RlcChm
dW5jdGlvbigpIHsKKy8vICAgICB2YXIgcmVhZENvdW50cyA9IDA7CisvLyAgICAgdmFyIGNhbmNl
bGxlZCA9IGZhbHNlOworLy8gICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisvLyAg
ICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisvLyAgICAgICAgICAgICBjLmVucXVldWUoJ2En
KTsKKy8vICAgICAgICAgfSwKKy8vICAgICAgICAgY2FuY2VsOiBmdW5jdGlvbigpIHsKKy8vICAg
ICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ3VuZGVybHlpbmcgc291cmNlIGNhbmNlbCBzaG91
bGQgbm90IGJlIGNhbGxlZCcpOworLy8gICAgICAgICB9CisvLyAgICAgfSk7CisKKy8vICAgICB2
YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisvLyAgICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7
CisvLyAgICAgcmVhZGVyLmNhbmNlbCgpLnRoZW4odGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKHYp
IHsKKy8vICAgICAgICAgYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdjYW5jZWwoKSBvbiB0
aGUgcmVhZGVyIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJykKKy8vICAgICAgICAgY2Fu
Y2VsbGVkID0gdHJ1ZTsKKy8vICAgICB9KSk7CisKKy8vICAgICB2YXIgcmVhZGVyMiA9IHJzLmdl
dFJlYWRlcigpOworLy8gICAgIHJlYWRlcjIucmVhZCgpLnRoZW4odGVzdDcuc3RlcF9mdW5jKGZ1
bmN0aW9uKHIpIHsKKy8vICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTog
J2EnLCBkb25lOiBmYWxzZSB9LCAnYSBuZXcgcmVhZGVyIHNob3VsZCBiZSBhYmxlIHRvIHJlYWQg
YSBjaHVuaycpOworLy8gICAgICAgICArK3JlYWRDb3VudHM7CisvLyAgICAgfSkpOworCisvLyAg
ICAgc2V0VGltZW91dCh0ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisvLyAgICAgICAgIGFz
c2VydF90cnVlKGNhbmNlbGxlZCk7CisvLyAgICAgICAgIGFzc2VydF9lcXVhbHMocmVhZENvdW50
cywgMSk7CisvLyAgICAgICAgIHRlc3Q3LmRvbmUoKTsKKy8vICAgICB9KSwgc3RhbmRhcmRUaW1l
b3V0KTsKKy8vIH0pOwogCiB2YXIgdGVzdDggPSBhc3luY190ZXN0KCdHZXR0aW5nIGEgc2Vjb25k
IHJlYWRlciBhZnRlciBlcnJvcmluZyB0aGUgc3RyZWFtIHNob3VsZCBzdWNjZWVkJyk7CiB0ZXN0
OC5zdGVwKGZ1bmN0aW9uKCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZl
cmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJs
ZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dAppbmRleCBkNzQyNzEwNjNkZjg0YjhmNDYx
ZjQxNzQ0YTgwNTI5OWVjYWE1ZmViLi45MjEyZGVlOTYzMzNlOGMwMTI1MTIzZmJhOWNmZGYxNzEz
NTBmZjM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0t
dGVtcGxhdGVkLWV4cGVjdGVkLnR4dApAQCAtMywxMSArMyw4IEBAIFBBU1MgUnVubmluZyB0ZW1w
bGF0ZWRSU0VtcHR5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KQogUEFTUyBpbnN0YW5jZXMg
aGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIAogUEFTUyBSdW5uaW5nIHRl
bXBsYXRlZFJTRW1wdHlSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlciAK
IFBBU1MgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQgcHJvcGVydGllcyAK
LUZBSUwgcmVhZCgpIHNob3VsZCBuZXZlciBzZXR0bGUgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQK
LUZBSUwgdHdvIHJlYWQoKXMgc2hvdWxkIGJvdGggbmV2ZXIgc2V0dGxlIHJlYWQgaXMgbm90IGlt
cGxlbWVudGVkCiBGQUlMIHJlYWQoKSBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzIGVh
Y2ggdGltZSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAogUEFTUyBnZXRSZWFkZXIoKSBhZ2FpbiBv
biB0aGUgc3RyZWFtIHNob3VsZCBmYWlsIAotRkFJTCByZWxlYXNpbmcgdGhlIGxvY2sgd2l0aCBw
ZW5kaW5nIHJlYWQgcmVxdWVzdHMgc2hvdWxkIHRocm93IGJ1dCB0aGUgcmVhZCByZXF1ZXN0cyBz
aG91bGQgc3RheSBwZW5kaW5nIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIHJlbGVhc2lu
ZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVzb2x2ZSBh
cyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCByZWxlYXNlTG9jayBpcyBub3QgaW1wbGVtZW50ZWQK
IEZBSUwgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gZnVsZmlsbCBy
ZWxlYXNlTG9jayBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgY2FuY2VsaW5nIHZpYSB0aGUgcmVh
ZGVyIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIHRvIGFjdCBjbG9zZWQgY2FuY2VsIGlzIG5vdCBp
bXBsZW1lbnRlZApAQCAtMTksNyArMTYsNiBAQCBGQUlMIHNob3VsZCBiZSBhYmxlIHRvIGFjcXVp
cmUgbXVsdGlwbGUgcmVhZGVycywgc2luY2UgdGhleSBhcmUgYWxsIGF1dG8tcmVsZWFzZQogUEFT
UyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGNs
b3NlZCB2aWEgY2FsbCBpbiBzdGFydCkgcmVhZGVyIAogRkFJTCByZWFkKCkgc2hvdWxkIGZ1bGZp
bGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSByZWFkIGlzIG5vdCBpbXBs
ZW1lbnRlZAogVElNRU9VVCBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQgVGVz
dCB0aW1lZCBvdXQKLUZBSUwgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZp
bGxlZCBwcm9taXNlIGVhY2ggdGltZSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBQQVNTIFJ1
bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBj
YW5jZWwpIAogRkFJTCBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVk
IHByb21pc2UgZWFjaCB0aW1lIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgZ2V0UmVh
ZGVyKCkgc2hvdWxkIGJlIE9LIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKQEAgLTI3LDcgKzIz
LDYgQEAgRkFJTCBzaG91bGQgYmUgYWJsZSB0byBhY3F1aXJlIG11bHRpcGxlIHJlYWRlcnMsIHNp
bmNlIHRoZXkgYXJlIGFsbCBhdXRvLXJlbGVhc2UKIFBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Ns
b3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbmNlbCkgcmVhZGVy
IAogRkFJTCByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRv
bmU6IHRydWUgfSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIGNsb3NlZCBzaG91bGQg
ZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCi1GQUlMIGNh
bmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRp
bWUgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJy
b3JlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KSAKIEZB
SUwgZ2V0UmVhZGVyKCkgc2hvdWxkIHJldHVybiBhIHJlYWRlciB0aGF0IGFjdHMgZXJyb3JlZCBy
ZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFN5
bmNPbmx5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24v
cmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZl
cmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC5odG1sCmluZGV4
IDA5ZjBkNzJkZTgyNzVjNzRlMDM3ZTJiMmJjMGEyOTVmYTM4NDI4MzIuLjhlOGI0Y2M2MTliYzc3
NGJmYjYwYjMyNGZlYWRmOTA2NTI5YzEyMDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVh
bXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFk
YWJsZS1zdHJlYW0tdGVtcGxhdGVkLmh0bWwKQEAgLTE1MCwzNCArMTUwLDM0IEBAIGZ1bmN0aW9u
IHRlbXBsYXRlZFJTRW1wdHlSZWFkZXIobGFiZWwsIGZhY3RvcnkpIHsKICAgICAgICAgYXNzZXJ0
X2VxdWFscyh0eXBlb2YgcmVhZGVyLnJlbGVhc2VMb2NrLCAnZnVuY3Rpb24nLCAnaGFzIGEgcmVs
ZWFzZUxvY2sgbWV0aG9kJyk7CiAgICAgfSwgJ2luc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1l
dGhvZHMgYW5kIHByb3BlcnRpZXMnKTsKIAotICAgIHZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ3Jl
YWQoKSBzaG91bGQgbmV2ZXIgc2V0dGxlJyk7Ci0gICAgdGVzdDEuc3RlcChmdW5jdGlvbigpIHsK
LSAgICAgICAgdmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7CisgICAgLy8gdmFyIHRlc3QxID0g
YXN5bmNfdGVzdCgncmVhZCgpIHNob3VsZCBuZXZlciBzZXR0bGUnKTsKKyAgICAvLyB0ZXN0MS5z
dGVwKGZ1bmN0aW9uKCkgeworICAgIC8vICAgICB2YXIgeyByZWFkZXIgfSA9IGZhY3RvcnkoKTsK
IAotICAgICAgICByZWFkZXIucmVhZCgpLnRoZW4oCi0gICAgICAgICAgICB0ZXN0MS5zdGVwX2Z1
bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ3JlYWQoKSBzaG91bGQgbm90IGZ1bGZp
bGwnKTsgfSksCi0gICAgICAgICAgICB0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2Vy
dF91bnJlYWNoZWQoJ3JlYWQoKSBzaG91bGQgbm90IHJlamVjdCcpOyB9KQotICAgICAgICApOwor
ICAgIC8vICAgICByZWFkZXIucmVhZCgpLnRoZW4oCisgICAgLy8gICAgICAgICB0ZXN0MS5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ3JlYWQoKSBzaG91bGQgbm90IGZ1
bGZpbGwnKTsgfSksCisgICAgLy8gICAgICAgICB0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
IGFzc2VydF91bnJlYWNoZWQoJ3JlYWQoKSBzaG91bGQgbm90IHJlamVjdCcpOyB9KQorICAgIC8v
ICAgICApOwogCi0gICAgICAgIHNldFRpbWVvdXQodGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
eyB0ZXN0MS5kb25lKCk7IH0pLCBzdGFuZGFyZFRpbWVvdXQpOwotICAgIH0pOworICAgIC8vICAg
ICBzZXRUaW1lb3V0KHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgdGVzdDEuZG9uZSgpOyB9
KSwgc3RhbmRhcmRUaW1lb3V0KTsKKyAgICAvLyB9KTsKIAotICAgIHZhciB0ZXN0MiA9IGFzeW5j
X3Rlc3QoJ3R3byByZWFkKClzIHNob3VsZCBib3RoIG5ldmVyIHNldHRsZScpOwotICAgIHRlc3Qy
LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwor
ICAgIC8vIHZhciB0ZXN0MiA9IGFzeW5jX3Rlc3QoJ3R3byByZWFkKClzIHNob3VsZCBib3RoIG5l
dmVyIHNldHRsZScpOworICAgIC8vIHRlc3QyLnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgLy8gICAg
IHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwogCi0gICAgICAgIHJlYWRlci5yZWFkKCkudGhl
bigKLSAgICAgICAgICAgIHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVh
Y2hlZCgnZmlyc3QgcmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpOyB9KSwKLSAgICAgICAgICAg
IHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnZmlyc3QgcmVh
ZCgpIHNob3VsZCBub3QgcmVqZWN0Jyk7IH0pCi0gICAgICAgICk7CisgICAgLy8gICAgIHJlYWRl
ci5yZWFkKCkudGhlbigKKyAgICAvLyAgICAgICAgIHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbigp
IHsgYXNzZXJ0X3VucmVhY2hlZCgnZmlyc3QgcmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpOyB9
KSwKKyAgICAvLyAgICAgICAgIHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3Vu
cmVhY2hlZCgnZmlyc3QgcmVhZCgpIHNob3VsZCBub3QgcmVqZWN0Jyk7IH0pCisgICAgLy8gICAg
ICk7CiAKLSAgICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKAotICAgICAgICAgICAgdGVzdDIuc3Rl
cF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdzZWNvbmQgcmVhZCgpIHNob3Vs
ZCBub3QgZnVsZmlsbCcpOyB9KSwKLSAgICAgICAgICAgIHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlv
bigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnc2Vjb25kIHJlYWQoKSBzaG91bGQgbm90IHJlamVjdCcp
OyB9KQotICAgICAgICApOworICAgIC8vICAgICByZWFkZXIucmVhZCgpLnRoZW4oCisgICAgLy8g
ICAgICAgICB0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ3Nl
Y29uZCByZWFkKCkgc2hvdWxkIG5vdCBmdWxmaWxsJyk7IH0pLAorICAgIC8vICAgICAgICAgdGVz
dDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdzZWNvbmQgcmVhZCgp
IHNob3VsZCBub3QgcmVqZWN0Jyk7IH0pCisgICAgLy8gICAgICk7CiAKLSAgICAgICAgc2V0VGlt
ZW91dCh0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IHRlc3QyLmRvbmUoKTsgfSksIHN0YW5k
YXJkVGltZW91dCk7Ci0gICAgfSk7CisgICAgLy8gICAgIHNldFRpbWVvdXQodGVzdDIuc3RlcF9m
dW5jKGZ1bmN0aW9uKCkgeyB0ZXN0Mi5kb25lKCk7IH0pLCBzdGFuZGFyZFRpbWVvdXQpOworICAg
IC8vIH0pOwogCiAgICAgdGVzdChmdW5jdGlvbigpIHsKICAgICAgICAgdmFyIHsgcmVhZGVyIH0g
PSBmYWN0b3J5KCk7CkBAIC0xOTEsMjkgKzE5MSwyOSBAQCBmdW5jdGlvbiB0ZW1wbGF0ZWRSU0Vt
cHR5UmVhZGVyKGxhYmVsLCBmYWN0b3J5KSB7CiAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgc3RyZWFtLmdldFJlYWRlcigpOyB9LCAnc3RyZWFtLmdl
dFJlYWRlcigpIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwogICAgIH0sICdnZXRSZWFkZXIo
KSBhZ2FpbiBvbiB0aGUgc3RyZWFtIHNob3VsZCBmYWlsJyk7CiAKLSAgICB2YXIgdGVzdDMgPSBh
c3luY190ZXN0KCdyZWxlYXNpbmcgdGhlIGxvY2sgd2l0aCBwZW5kaW5nIHJlYWQgcmVxdWVzdHMg
c2hvdWxkIHRocm93IGJ1dCB0aGUgcmVhZCByZXF1ZXN0cyBzaG91bGQgc3RheSBwZW5kaW5nJyk7
Ci0gICAgdGVzdDMuc3RlcChmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHsgcmVhZGVyIH0gPSBm
YWN0b3J5KCk7CisgICAgLy8gdmFyIHRlc3QzID0gYXN5bmNfdGVzdCgncmVsZWFzaW5nIHRoZSBs
b2NrIHdpdGggcGVuZGluZyByZWFkIHJlcXVlc3RzIHNob3VsZCB0aHJvdyBidXQgdGhlIHJlYWQg
cmVxdWVzdHMgc2hvdWxkIHN0YXkgcGVuZGluZycpOworICAgIC8vIHRlc3QzLnN0ZXAoZnVuY3Rp
b24oKSB7CisgICAgLy8gICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwogCi0gICAgICAg
IHJlYWRlci5yZWFkKCkudGhlbigKLSAgICAgICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlv
bigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnZmlyc3QgcmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcp
OyB9KSwKLSAgICAgICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3Vu
cmVhY2hlZCgnZmlyc3QgcmVhZCgpIHNob3VsZCBub3QgcmVqZWN0Jyk7IH0pCi0gICAgICAgICk7
CisgICAgLy8gICAgIHJlYWRlci5yZWFkKCkudGhlbigKKyAgICAvLyAgICAgICAgIHRlc3QzLnN0
ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnZmlyc3QgcmVhZCgpIHNob3Vs
ZCBub3QgZnVsZmlsbCcpOyB9KSwKKyAgICAvLyAgICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5j
dGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnZmlyc3QgcmVhZCgpIHNob3VsZCBub3QgcmVqZWN0
Jyk7IH0pCisgICAgLy8gICAgICk7CiAKLSAgICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKAotICAg
ICAgICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdz
ZWNvbmQgcmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpOyB9KSwKLSAgICAgICAgICAgIHRlc3Qz
LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnc2Vjb25kIHJlYWQoKSBz
aG91bGQgbm90IHJlamVjdCcpOyB9KQotICAgICAgICApOworICAgIC8vICAgICByZWFkZXIucmVh
ZCgpLnRoZW4oCisgICAgLy8gICAgICAgICB0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFz
c2VydF91bnJlYWNoZWQoJ3NlY29uZCByZWFkKCkgc2hvdWxkIG5vdCBmdWxmaWxsJyk7IH0pLAor
ICAgIC8vICAgICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFj
aGVkKCdzZWNvbmQgcmVhZCgpIHNob3VsZCBub3QgcmVqZWN0Jyk7IH0pCisgICAgLy8gICAgICk7
CiAKLSAgICAgICAgcmVhZGVyLmNsb3NlZC50aGVuKAotICAgICAgICAgICAgdGVzdDMuc3RlcF9m
dW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdjbG9zZWQgc2hvdWxkIG5vdCBmdWxm
aWxsJyk7IH0pLAotICAgICAgICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3Nl
cnRfdW5yZWFjaGVkKCdjbG9zZWQgc2hvdWxkIG5vdCByZWplY3QnKTsgfSkKLSAgICAgICAgKTsK
KyAgICAvLyAgICAgcmVhZGVyLmNsb3NlZC50aGVuKAorICAgIC8vICAgICAgICAgdGVzdDMuc3Rl
cF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdjbG9zZWQgc2hvdWxkIG5vdCBm
dWxmaWxsJyk7IH0pLAorICAgIC8vICAgICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
eyBhc3NlcnRfdW5yZWFjaGVkKCdjbG9zZWQgc2hvdWxkIG5vdCByZWplY3QnKTsgfSkKKyAgICAv
LyAgICAgKTsKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgdGVzdDMu
c3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyByZWFkZXIucmVsZWFzZUxvY2soKTsgfSwgJ3JlbGVhc2VM
b2NrIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpKTsKKyAgICAvLyAgICAgYXNzZXJ0X3Rocm93
cyhuZXcgVHlwZUVycm9yKCksIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgcmVhZGVyLnJl
bGVhc2VMb2NrKCk7IH0sICdyZWxlYXNlTG9jayBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKSk7
CiAKLSAgICAgICAgc2V0VGltZW91dCh0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IHRlc3Qz
LmRvbmUoKTsgfSksIHN0YW5kYXJkVGltZW91dCk7Ci0gICAgfSk7CisgICAgLy8gICAgIHNldFRp
bWVvdXQodGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyB0ZXN0My5kb25lKCk7IH0pLCBzdGFu
ZGFyZFRpbWVvdXQpOworICAgIC8vIH0pOwogCiAgICAgdmFyIHRlc3Q0ID0gYXN5bmNfdGVzdCgn
cmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBmdXJ0aGVyIHJlYWQoKSBjYWxscyB0byBy
ZXNvbHZlIGFzIGlmIHRoZSBzdHJlYW0gaXMgY2xvc2VkJyk7CiAgICAgdGVzdDQuc3RlcChmdW5j
dGlvbigpIHsKQEAgLTMwNCwzMiArMzA0LDMyIEBAIGZ1bmN0aW9uIHRlbXBsYXRlZFJTQ2xvc2Vk
UmVhZGVyKGxhYmVsLCBmYWN0b3J5KSB7CiAgICAgICAgICk7CiAgICAgfSk7CiAKLSAgICB2YXIg
dGVzdDMgPSBhc3luY190ZXN0KCdjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVs
ZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lJyk7Ci0gICAgdGVzdDMuc3RlcChmdW5jdGlvbigpIHsK
LSAgICAgICAgdmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7Ci0gICAgICAgIHZhciBwcm9taXNl
Q291bnQgPSAwOwotCi0gICAgICAgIHZhciBjYW5jZWxQcm9taXNlMSA9IHJlYWRlci5jYW5jZWwo
KTsKLSAgICAgICAgdmFyIGNhbmNlbFByb21pc2UyID0gcmVhZGVyLmNhbmNlbCgpOwotICAgICAg
ICB2YXIgY2xvc2VkUmVhZGVyUHJvbWlzZSA9IHJlYWRlci5jbG9zZWQ7Ci0KLSAgICAgICAgY2Fu
Y2VsUHJvbWlzZTEudGhlbih0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24odikgewotICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdmaXJzdCBjYW5jZWwoKSBjYWxsIHNob3Vs
ZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7Ci0gICAgICAgICAgICArK3Byb21pc2VDb3VudDsK
LSAgICAgICAgfSkpOwotICAgICAgICBjYW5jZWxQcm9taXNlMi50aGVuKHRlc3QzLnN0ZXBfZnVu
YyhmdW5jdGlvbih2KSB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwg
J3NlY29uZCBjYW5jZWwoKSBjYWxsIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7Ci0g
ICAgICAgICAgICArK3Byb21pc2VDb3VudDsKLSAgICAgICAgfSkpOwotICAgICAgICBhc3NlcnRf
bm90X2VxdWFscyhjYW5jZWxQcm9taXNlMSwgY2FuY2VsUHJvbWlzZTIsICdjYW5jZWwoKSBjYWxs
cyBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzJyk7Ci0gICAgICAgIGFzc2VydF9ub3Rf
ZXF1YWxzKGNhbmNlbFByb21pc2UxLCBjbG9zZWRSZWFkZXJQcm9taXNlLCAnY2FuY2VsKCkgcHJv
bWlzZSAxIHNob3VsZCBiZSBkaXN0aW5jdCBmcm9tIHJlYWRlci5jbG9zZWQnKTsKLSAgICAgICAg
YXNzZXJ0X25vdF9lcXVhbHMoY2FuY2VsUHJvbWlzZTIsIGNsb3NlZFJlYWRlclByb21pc2UsICdj
YW5jZWwoKSBwcm9taXNlIDIgc2hvdWxkIGJlIGRpc3RpbmN0IGZyb20gcmVhZGVyLmNsb3NlZCcp
OwotCi0gICAgICAgIHNldFRpbWVvdXQodGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhwcm9taXNlQ291bnQsIDIpOwotICAgICAgICAgICAgdGVz
dDMuZG9uZSgpOwotICAgICAgICB9KSwgc3RhbmRhcmRUaW1lb3V0KTsKLSAgICB9KTsKKyAgICAv
LyB2YXIgdGVzdDMgPSBhc3luY190ZXN0KCdjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGlu
Y3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lJyk7CisgICAgLy8gdGVzdDMuc3RlcChmdW5j
dGlvbigpIHsKKyAgICAvLyAgICAgdmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7CisgICAgLy8g
ICAgIHZhciBwcm9taXNlQ291bnQgPSAwOworCisgICAgLy8gICAgIHZhciBjYW5jZWxQcm9taXNl
MSA9IHJlYWRlci5jYW5jZWwoKTsKKyAgICAvLyAgICAgdmFyIGNhbmNlbFByb21pc2UyID0gcmVh
ZGVyLmNhbmNlbCgpOworICAgIC8vICAgICB2YXIgY2xvc2VkUmVhZGVyUHJvbWlzZSA9IHJlYWRl
ci5jbG9zZWQ7CisKKyAgICAvLyAgICAgY2FuY2VsUHJvbWlzZTEudGhlbih0ZXN0My5zdGVwX2Z1
bmMoZnVuY3Rpb24odikgeworICAgIC8vICAgICAgICAgYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmlu
ZWQsICdmaXJzdCBjYW5jZWwoKSBjYWxsIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7
CisgICAgLy8gICAgICAgICArK3Byb21pc2VDb3VudDsKKyAgICAvLyAgICAgfSkpOworICAgIC8v
ICAgICBjYW5jZWxQcm9taXNlMi50aGVuKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbih2KSB7Cisg
ICAgLy8gICAgICAgICBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ3NlY29uZCBjYW5jZWwo
KSBjYWxsIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7CisgICAgLy8gICAgICAgICAr
K3Byb21pc2VDb3VudDsKKyAgICAvLyAgICAgfSkpOworICAgIC8vICAgICBhc3NlcnRfbm90X2Vx
dWFscyhjYW5jZWxQcm9taXNlMSwgY2FuY2VsUHJvbWlzZTIsICdjYW5jZWwoKSBjYWxscyBzaG91
bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzJyk7CisgICAgLy8gICAgIGFzc2VydF9ub3RfZXF1
YWxzKGNhbmNlbFByb21pc2UxLCBjbG9zZWRSZWFkZXJQcm9taXNlLCAnY2FuY2VsKCkgcHJvbWlz
ZSAxIHNob3VsZCBiZSBkaXN0aW5jdCBmcm9tIHJlYWRlci5jbG9zZWQnKTsKKyAgICAvLyAgICAg
YXNzZXJ0X25vdF9lcXVhbHMoY2FuY2VsUHJvbWlzZTIsIGNsb3NlZFJlYWRlclByb21pc2UsICdj
YW5jZWwoKSBwcm9taXNlIDIgc2hvdWxkIGJlIGRpc3RpbmN0IGZyb20gcmVhZGVyLmNsb3NlZCcp
OworCisgICAgLy8gICAgIHNldFRpbWVvdXQodGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewor
ICAgIC8vICAgICAgICAgYXNzZXJ0X2VxdWFscyhwcm9taXNlQ291bnQsIDIpOworICAgIC8vICAg
ICAgICAgdGVzdDMuZG9uZSgpOworICAgIC8vICAgICB9KSwgc3RhbmRhcmRUaW1lb3V0KTsKKyAg
ICAvLyB9KTsKIH07CiAKIGZ1bmN0aW9uIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlcihsYWJlbCwg
ZmFjdG9yeSwgZXJyb3IpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1sIGIvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLmh0bWwKaW5kZXgg
NzY0NWE5YjliNWZhMDlmNTczZmU5ODMyMDQ5OTBjMWI5YzlkNTg2Yi4uZDA3MjVlNDQyNjYxYTcy
ZTI2ZmViNjMzZjgzMzZjMjA4ZTk1NGU2MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFt
cy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFt
Lmh0bWwKQEAgLTE3NCwxOTkgKzE3NCwxOTkgQEAgdGVzdDQuc3RlcChmdW5jdGlvbigpIHsKICAg
ICB9KSk7CiB9KTsKIAotdmFyIHRlc3Q1ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNo
b3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIHVwb24gc3RhcnRpbmcgdGhlIHN0cmVhbScpOwotdGVz
dDUuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgcHVsbENvdW50ID0gMDsKLSAgICB2YXIgc3Rh
cnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJu
IHN0YXJ0UHJvbWlzZTsKLSAgICAgICAgfSwKLSAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICBwdWxsQ291bnQrKzsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgc3RhcnRQ
cm9taXNlLnRoZW4odGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICBhc3NlcnRf
ZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBvbmNlIHN0YXJ0IGZp
bmlzaGVzJyk7Ci0gICAgfSkpOwotCi0gICAgc2V0VGltZW91dCh0ZXN0NS5zdGVwX2Z1bmMoZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91
bGQgYmUgY2FsbGVkIGV4YWN0bHkgb25jZScpOwotICAgICAgICB0ZXN0NS5kb25lKCk7Ci0gICAg
fSksIHN0YW5kYXJkVGltZW91dCk7Ci19KTsKLQotdmFyIHRlc3Q2ID0gYXN5bmNfdGVzdCgnUmVh
ZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIGZvciBhIGZvcmV2ZXItZW1w
dHkgc3RyZWFtLCBldmVuIGFmdGVyIHJlYWRpbmcnKTsKLXRlc3Q2LnN0ZXAoZnVuY3Rpb24oKSB7
Ci0gICAgdmFyIHB1bGxDb3VudCA9IDA7Ci0gICAgdmFyIHN0YXJ0UHJvbWlzZSA9IFByb21pc2Uu
cmVzb2x2ZSgpOwotICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0
YXJ0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGFydFByb21pc2U7Ci0gICAg
ICAgIH0sCi0gICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcHVsbENvdW50
Kys7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHN0YXJ0UHJvbWlzZS50aGVuKHRlc3Q2LnN0
ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEs
ICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgb25jZSBzdGFydCBmaW5pc2hlcycpOwotICAgIH0pKTsK
LQotICAgIHJzLmdldFJlYWRlcigpLnJlYWQoKTsKLQotICAgIHNldFRpbWVvdXQodGVzdDYuc3Rl
cF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwg
J3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IG9uY2UnKTsKLSAgICAgICAgdGVzdDYuZG9u
ZSgpOwotICAgIH0pLCBzdGFuZGFyZFRpbWVvdXQpOwotfSk7Ci0KLXZhciB0ZXN0NyA9IGFzeW5j
X3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSBvbiBhIG5v
bi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGJlZm9yZSBzdGFydCBmdWxmaWxscycpOwotdGVzdDcu
c3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgcHVsbENvdW50ID0gMDsKLSAgICB2YXIgc3RhcnRQ
cm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGMuZW5xdWV1
ZSgnYScpOwotICAgICAgICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKLSAgICAgICAgfSwKLSAg
ICAgICAgcHVsbDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBwdWxsQ291bnQrKzsKLSAgICAg
ICAgfQotICAgIH0pOwotCi0gICAgc3RhcnRQcm9taXNlLnRoZW4odGVzdDcuc3RlcF9mdW5jKGZ1
bmN0aW9uKCkgewotICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hv
dWxkIGJlIGNhbGxlZCBvbmNlIHN0YXJ0IGZpbmlzaGVzJyk7Ci0gICAgfSkpOwotCi0gICAgcnMu
Z2V0UmVhZGVyKCkucmVhZCgpLnRoZW4odGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKLSAg
ICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9
LCAnZmlyc3QgcmVhZCgpIHNob3VsZCByZXR1cm4gZmlyc3QgY2h1bmsnKTsKLSAgICAgICAgYXNz
ZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxl
ZCBhZ2FpbicpOwotICAgIH0pKTsKLQotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAwLCAn
Y2FsbGluZyByZWFkKCkgc2hvdWxkIG5vdCBjYXVzZSBwdWxsIHRvIGJlIGNhbGxlZCB5ZXQnKTsK
LQotICAgIHNldFRpbWVvdXQodGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICBh
c3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5
IG9uY2UnKTsKLSAgICAgICAgdGVzdDcuZG9uZSgpOwotICAgIH0pLCBzdGFuZGFyZFRpbWVvdXQp
OwotfSk7Ci0KLXZhciB0ZXN0OCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQg
b25seSBjYWxsIHB1bGwgdHdpY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBhZnRl
ciBzdGFydCBmdWxmaWxscycpOwotdGVzdDguc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgcHVs
bENvdW50ID0gMDsKLSAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0g
ICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9u
KGMpIHsKLSAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAgICAgICAgcmV0dXJuIHN0
YXJ0UHJvbWlzZTsKLSAgICAgICAgfSwKLSAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICBwdWxsQ291bnQrKzsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgc3RhcnRQcm9t
aXNlLnRoZW4odGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICBhc3NlcnRfZXF1
YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBvbmNlIHN0YXJ0IGZpbmlz
aGVzJyk7Ci0KLSAgICAgICAgcnMuZ2V0UmVhZGVyKCkucmVhZCgpLnRoZW4odGVzdDguc3RlcF9m
dW5jKGZ1bmN0aW9uKHIpIHsKLSAgICAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsg
dmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IHJlYWQoKSBzaG91bGQgcmV0dXJuIGZp
cnN0IGNodW5rJyk7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1
bGwgc2hvdWxkIGJlIGNhbGxlZCBhZ2FpbiBvbmNlIHJlYWQgZnVsZmlsbHMnKTsKLSAgICAgICAg
fSkpOwotICAgIH0pKTsKLQotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAwLCAnY2FsbGlu
ZyByZWFkKCkgc2hvdWxkIG5vdCBjYXVzZSBwdWxsIHRvIGJlIGNhbGxlZCB5ZXQnKTsKLQotICAg
IHNldFRpbWVvdXQodGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICBhc3NlcnRf
ZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IHR3aWNl
JykKLSAgICAgICAgdGVzdDguZG9uZSgpOwotICAgIH0pLCBzdGFuZGFyZFRpbWVvdXQpOwotfSk7
Ci0KLXZhciB0ZXN0OSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBw
dWxsIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0aGUgbGFzdCBjaHVuaywgaWYgbm90IGRyYWlu
aW5nJyk7Ci10ZXN0OS5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciBwdWxsQ291bnQgPSAwOwot
ICAgIHZhciBjb250cm9sbGVyOwotICAgIHZhciBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29s
dmUoKTsKLSAgICB2YXIgcHVsbFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKLSAgICB2YXIg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewot
ICAgICAgICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgICAgICAgICByZXR1cm4gc3RhcnRQcm9t
aXNlOwotICAgICAgICB9LAotICAgICAgICBwdWxsOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
ICsrcHVsbENvdW50OwotICAgICAgICAgICAgcmV0dXJuIHB1bGxQcm9taXNlOwotICAgICAgICB9
Ci0gICAgfSk7Ci0KLSAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgICBzdGFy
dFByb21pc2UudGhlbih0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFzc2Vy
dF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNl
IGFmdGVyIHJlYWQnKTsKLQotICAgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKLQotICAg
ICAgICByZXR1cm4gcHVsbFByb21pc2UudGhlbih0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxkIGhh
dmUgYmVlbiBjYWxsZWQgYSBzZWNvbmQgdGltZSBhZnRlciBlbnF1ZXVlJyk7Ci0KLSAgICAgICAg
ICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4odGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAzLCAncHVsbCBzaG91
bGQgaGF2ZSBiZWVuIGNhbGxlZCBhIHRoaXJkIHRpbWUgYWZ0ZXIgcmVhZCcpOwotICAgICAgICAg
ICAgfSkpOwotICAgICAgICB9KSk7Ci0gICAgfSkpLmNhdGNoKHRlc3Q5LnN0ZXBfZnVuYyhmdW5j
dGlvbihlKSB7Ci0gICAgICAgIGFzc2VydF91bnJlYWNoZWQoZSk7Ci0gICAgfSkpOwotCi0gICAg
c2V0VGltZW91dCh0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFzc2VydF9l
cXVhbHMocHVsbENvdW50LCAzLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgdGhyaWNl
JykKLSAgICAgICAgdGVzdDkuZG9uZSgpOwotICAgIH0pLCBzdGFuZGFyZFRpbWVvdXQpOwotfSk7
Ci0KLXZhciB0ZXN0MTAgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBj
YWxsIHB1bGwoKSBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIGRy
YWluaW5nJyk7Ci10ZXN0MTAuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgcHVsbENvdW50ID0g
MDsKLSAgICB2YXIgY29udHJvbGxlcjsKLSAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5y
ZXNvbHZlKCk7Ci0gICAgdmFyIHB1bGxQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0gICAg
dmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMp
IHsKLSAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgICAgICAgICAgcmV0dXJuIHN0YXJ0
UHJvbWlzZTsKLSAgICAgICAgfSwKLSAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICArK3B1bGxDb3VudDsKLSAgICAgICAgICAgIHJldHVybiBwdWxsUHJvbWlzZTsKLSAgICAg
ICAgfQotICAgIH0pOwotCi0gICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gICAg
c3RhcnRQcm9taXNlLnRoZW4odGVzdDEwLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAg
YXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVk
IG9uY2UgYWZ0ZXIgcmVhZCcpOwotCi0gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwot
Ci0gICAgICAgIHJldHVybiBwdWxsUHJvbWlzZS50aGVuKHRlc3QxMC5zdGVwX2Z1bmMoZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwgc2hv
dWxkIGhhdmUgYmVlbiBjYWxsZWQgYSBzZWNvbmQgdGltZSBhZnRlciBlbnF1ZXVlJyk7Ci0KLSAg
ICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKLQotICAgICAgICAgICAgcmV0dXJuIHJlYWRl
ci5yZWFkKCkudGhlbih0ZXN0MTAuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAyLCAncHVsbCBzaG91bGQgbm90IGhhdmUgYmVl
biBjYWxsZWQgYSB0aGlyZCB0aW1lIGFmdGVyIHJlYWQnKTsKLSAgICAgICAgICAgIH0pKTsKLSAg
ICAgICAgfSkpOwotICAgIH0pKS5jYXRjaCh0ZXN0MTAuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsK
LSAgICAgICAgYXNzZXJ0X3VucmVhY2hlZChlKQotICAgIH0pKTsKLQotICAgIHNldFRpbWVvdXQo
dGVzdDEwLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxs
Q291bnQsIDIsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgZXhhY3RseSB0d2ljZScpCi0gICAgICAg
IHRlc3QxMC5kb25lKCk7Ci0gICAgfSksIHN0YW5kYXJkVGltZW91dCk7Ci19KTsKKy8vIHZhciB0
ZXN0NSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwg
b25jZSB1cG9uIHN0YXJ0aW5nIHRoZSBzdHJlYW0nKTsKKy8vIHRlc3Q1LnN0ZXAoZnVuY3Rpb24o
KSB7CisvLyAgICAgdmFyIHB1bGxDb3VudCA9IDA7CisvLyAgICAgdmFyIHN0YXJ0UHJvbWlzZSA9
IFByb21pc2UucmVzb2x2ZSgpOworLy8gICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
CisvLyAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHsKKy8vICAgICAgICAgICAgIHJldHVybiBz
dGFydFByb21pc2U7CisvLyAgICAgICAgIH0sCisvLyAgICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkg
eworLy8gICAgICAgICAgICAgcHVsbENvdW50Kys7CisvLyAgICAgICAgIH0KKy8vICAgICB9KTsK
KworLy8gICAgIHN0YXJ0UHJvbWlzZS50aGVuKHRlc3Q1LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsK
Ky8vICAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBiZSBj
YWxsZWQgb25jZSBzdGFydCBmaW5pc2hlcycpOworLy8gICAgIH0pKTsKKworLy8gICAgIHNldFRp
bWVvdXQodGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworLy8gICAgICAgICBhc3NlcnRfZXF1
YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IG9uY2UnKTsK
Ky8vICAgICAgICAgdGVzdDUuZG9uZSgpOworLy8gICAgIH0pLCBzdGFuZGFyZFRpbWVvdXQpOwor
Ly8gfSk7CisKKy8vIHZhciB0ZXN0NiA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91
bGQgb25seSBjYWxsIHB1bGwgb25jZSBmb3IgYSBmb3JldmVyLWVtcHR5IHN0cmVhbSwgZXZlbiBh
ZnRlciByZWFkaW5nJyk7CisvLyB0ZXN0Ni5zdGVwKGZ1bmN0aW9uKCkgeworLy8gICAgIHZhciBw
dWxsQ291bnQgPSAwOworLy8gICAgIHZhciBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUo
KTsKKy8vICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworLy8gICAgICAgICBzdGFy
dDogZnVuY3Rpb24oKSB7CisvLyAgICAgICAgICAgICByZXR1cm4gc3RhcnRQcm9taXNlOworLy8g
ICAgICAgICB9LAorLy8gICAgICAgICBwdWxsOiBmdW5jdGlvbigpIHsKKy8vICAgICAgICAgICAg
IHB1bGxDb3VudCsrOworLy8gICAgICAgICB9CisvLyAgICAgfSk7CisKKy8vICAgICBzdGFydFBy
b21pc2UudGhlbih0ZXN0Ni5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisvLyAgICAgICAgIGFzc2Vy
dF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIG9uY2Ugc3RhcnQg
ZmluaXNoZXMnKTsKKy8vICAgICB9KSk7CisKKy8vICAgICBycy5nZXRSZWFkZXIoKS5yZWFkKCk7
CisKKy8vICAgICBzZXRUaW1lb3V0KHRlc3Q2LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKy8vICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQg
ZXhhY3RseSBvbmNlJyk7CisvLyAgICAgICAgIHRlc3Q2LmRvbmUoKTsKKy8vICAgICB9KSwgc3Rh
bmRhcmRUaW1lb3V0KTsKKy8vIH0pOworCisvLyB2YXIgdGVzdDcgPSBhc3luY190ZXN0KCdSZWFk
YWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ugb24gYSBub24tZW1wdHkgc3Ry
ZWFtIHJlYWQgZnJvbSBiZWZvcmUgc3RhcnQgZnVsZmlsbHMnKTsKKy8vIHRlc3Q3LnN0ZXAoZnVu
Y3Rpb24oKSB7CisvLyAgICAgdmFyIHB1bGxDb3VudCA9IDA7CisvLyAgICAgdmFyIHN0YXJ0UHJv
bWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworLy8gICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7CisvLyAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisvLyAgICAgICAgICAgICBj
LmVucXVldWUoJ2EnKTsKKy8vICAgICAgICAgICAgIHJldHVybiBzdGFydFByb21pc2U7CisvLyAg
ICAgICAgIH0sCisvLyAgICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkgeworLy8gICAgICAgICAgICAg
cHVsbENvdW50Kys7CisvLyAgICAgICAgIH0KKy8vICAgICB9KTsKKworLy8gICAgIHN0YXJ0UHJv
bWlzZS50aGVuKHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKy8vICAgICAgICAgYXNzZXJ0
X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgb25jZSBzdGFydCBm
aW5pc2hlcycpOworLy8gICAgIH0pKTsKKworLy8gICAgIHJzLmdldFJlYWRlcigpLnJlYWQoKS50
aGVuKHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7CisvLyAgICAgICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IHJlYWQoKSBz
aG91bGQgcmV0dXJuIGZpcnN0IGNodW5rJyk7CisvLyAgICAgICAgIGFzc2VydF9lcXVhbHMocHVs
bENvdW50LCAxLCAncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYWdhaW4nKTsKKy8v
ICAgICB9KSk7CisKKy8vICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCwgJ2NhbGxpbmcg
cmVhZCgpIHNob3VsZCBub3QgY2F1c2UgcHVsbCB0byBiZSBjYWxsZWQgeWV0Jyk7CisKKy8vICAg
ICBzZXRUaW1lb3V0KHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKy8vICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgZXhhY3RseSBv
bmNlJyk7CisvLyAgICAgICAgIHRlc3Q3LmRvbmUoKTsKKy8vICAgICB9KSwgc3RhbmRhcmRUaW1l
b3V0KTsKKy8vIH0pOworCisvLyB2YXIgdGVzdDggPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVh
bTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIHR3aWNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSByZWFk
IGZyb20gYWZ0ZXIgc3RhcnQgZnVsZmlsbHMnKTsKKy8vIHRlc3Q4LnN0ZXAoZnVuY3Rpb24oKSB7
CisvLyAgICAgdmFyIHB1bGxDb3VudCA9IDA7CisvLyAgICAgdmFyIHN0YXJ0UHJvbWlzZSA9IFBy
b21pc2UucmVzb2x2ZSgpOworLy8gICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Cisv
LyAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisvLyAgICAgICAgICAgICBjLmVucXVldWUo
J2EnKTsKKy8vICAgICAgICAgICAgIHJldHVybiBzdGFydFByb21pc2U7CisvLyAgICAgICAgIH0s
CisvLyAgICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkgeworLy8gICAgICAgICAgICAgcHVsbENvdW50
Kys7CisvLyAgICAgICAgIH0KKy8vICAgICB9KTsKKworLy8gICAgIHN0YXJ0UHJvbWlzZS50aGVu
KHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKy8vICAgICAgICAgYXNzZXJ0X2VxdWFscyhw
dWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgb25jZSBzdGFydCBmaW5pc2hlcycp
OworCisvLyAgICAgICAgIHJzLmdldFJlYWRlcigpLnJlYWQoKS50aGVuKHRlc3Q4LnN0ZXBfZnVu
YyhmdW5jdGlvbihyKSB7CisvLyAgICAgICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7
IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCByZWFkKCkgc2hvdWxkIHJldHVybiBm
aXJzdCBjaHVuaycpOworLy8gICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDIs
ICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgYWdhaW4gb25jZSByZWFkIGZ1bGZpbGxzJyk7CisvLyAg
ICAgICAgIH0pKTsKKy8vICAgICB9KSk7CisKKy8vICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3Vu
dCwgMCwgJ2NhbGxpbmcgcmVhZCgpIHNob3VsZCBub3QgY2F1c2UgcHVsbCB0byBiZSBjYWxsZWQg
eWV0Jyk7CisKKy8vICAgICBzZXRUaW1lb3V0KHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsK
Ky8vICAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDIsICdwdWxsIHNob3VsZCBiZSBj
YWxsZWQgZXhhY3RseSB0d2ljZScpCisvLyAgICAgICAgIHRlc3Q4LmRvbmUoKTsKKy8vICAgICB9
KSwgc3RhbmRhcmRUaW1lb3V0KTsKKy8vIH0pOworCisvLyB2YXIgdGVzdDkgPSBhc3luY190ZXN0
KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCBpbiByZWFjdGlvbiB0byByZWFkKClp
bmcgdGhlIGxhc3QgY2h1bmssIGlmIG5vdCBkcmFpbmluZycpOworLy8gdGVzdDkuc3RlcChmdW5j
dGlvbigpIHsKKy8vICAgICB2YXIgcHVsbENvdW50ID0gMDsKKy8vICAgICB2YXIgY29udHJvbGxl
cjsKKy8vICAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7CisvLyAgICAg
dmFyIHB1bGxQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7CisvLyAgICAgdmFyIHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKKy8vICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKy8vICAg
ICAgICAgICAgIGNvbnRyb2xsZXIgPSBjOworLy8gICAgICAgICAgICAgcmV0dXJuIHN0YXJ0UHJv
bWlzZTsKKy8vICAgICAgICAgfSwKKy8vICAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7CisvLyAg
ICAgICAgICAgICArK3B1bGxDb3VudDsKKy8vICAgICAgICAgICAgIHJldHVybiBwdWxsUHJvbWlz
ZTsKKy8vICAgICAgICAgfQorLy8gICAgIH0pOworCisvLyAgICAgdmFyIHJlYWRlciA9IHJzLmdl
dFJlYWRlcigpOworCisvLyAgICAgc3RhcnRQcm9taXNlLnRoZW4odGVzdDkuc3RlcF9mdW5jKGZ1
bmN0aW9uKCkgeworLy8gICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwg
c2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZSBhZnRlciByZWFkJyk7CisKKy8vICAgICAgICAg
Y29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisKKy8vICAgICAgICAgcmV0dXJuIHB1bGxQcm9taXNl
LnRoZW4odGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworLy8gICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhwdWxsQ291bnQsIDIsICdwdWxsIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGEgc2Vj
b25kIHRpbWUgYWZ0ZXIgZW5xdWV1ZScpOworCisvLyAgICAgICAgICAgICByZXR1cm4gcmVhZGVy
LnJlYWQoKS50aGVuKHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKy8vICAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMywgJ3B1bGwgc2hvdWxkIGhhdmUgYmVlbiBj
YWxsZWQgYSB0aGlyZCB0aW1lIGFmdGVyIHJlYWQnKTsKKy8vICAgICAgICAgICAgIH0pKTsKKy8v
ICAgICAgICAgfSkpOworLy8gICAgIH0pKS5jYXRjaCh0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24o
ZSkgeworLy8gICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKGUpOworLy8gICAgIH0pKTsKKworLy8g
ICAgIHNldFRpbWVvdXQodGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworLy8gICAgICAgICBh
c3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMywgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5
IHRocmljZScpCisvLyAgICAgICAgIHRlc3Q5LmRvbmUoKTsKKy8vICAgICB9KSwgc3RhbmRhcmRU
aW1lb3V0KTsKKy8vIH0pOworCisvLyB2YXIgdGVzdDEwID0gYXN5bmNfdGVzdCgnUmVhZGFibGVT
dHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsKCkgaW4gcmVhY3Rpb24gdG8gcmVhZCgpaW5nIHRo
ZSBsYXN0IGNodW5rLCBpZiBkcmFpbmluZycpOworLy8gdGVzdDEwLnN0ZXAoZnVuY3Rpb24oKSB7
CisvLyAgICAgdmFyIHB1bGxDb3VudCA9IDA7CisvLyAgICAgdmFyIGNvbnRyb2xsZXI7CisvLyAg
ICAgdmFyIHN0YXJ0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworLy8gICAgIHZhciBwdWxs
UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworLy8gICAgIHZhciBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisvLyAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisvLyAgICAgICAgICAg
ICBjb250cm9sbGVyID0gYzsKKy8vICAgICAgICAgICAgIHJldHVybiBzdGFydFByb21pc2U7Cisv
LyAgICAgICAgIH0sCisvLyAgICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkgeworLy8gICAgICAgICAg
ICAgKytwdWxsQ291bnQ7CisvLyAgICAgICAgICAgICByZXR1cm4gcHVsbFByb21pc2U7CisvLyAg
ICAgICAgIH0KKy8vICAgICB9KTsKKworLy8gICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIo
KTsKKworLy8gICAgIHN0YXJ0UHJvbWlzZS50aGVuKHRlc3QxMC5zdGVwX2Z1bmMoZnVuY3Rpb24o
KSB7CisvLyAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQg
aGF2ZSBiZWVuIGNhbGxlZCBvbmNlIGFmdGVyIHJlYWQnKTsKKworLy8gICAgICAgICBjb250cm9s
bGVyLmVucXVldWUoJ2EnKTsKKworLy8gICAgICAgICByZXR1cm4gcHVsbFByb21pc2UudGhlbih0
ZXN0MTAuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworLy8gICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhwdWxsQ291bnQsIDIsICdwdWxsIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGEgc2Vjb25kIHRp
bWUgYWZ0ZXIgZW5xdWV1ZScpOworCisvLyAgICAgICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7
CisKKy8vICAgICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4odGVzdDEwLnN0ZXBf
ZnVuYyhmdW5jdGlvbigpIHsKKy8vICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxD
b3VudCwgMiwgJ3B1bGwgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkIGEgdGhpcmQgdGltZSBh
ZnRlciByZWFkJyk7CisvLyAgICAgICAgICAgICB9KSk7CisvLyAgICAgICAgIH0pKTsKKy8vICAg
ICB9KSkuY2F0Y2godGVzdDEwLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CisvLyAgICAgICAgIGFz
c2VydF91bnJlYWNoZWQoZSkKKy8vICAgICB9KSk7CisKKy8vICAgICBzZXRUaW1lb3V0KHRlc3Qx
MC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisvLyAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENv
dW50LCAyLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgdHdpY2UnKQorLy8gICAgICAg
ICB0ZXN0MTAuZG9uZSgpOworLy8gICAgIH0pLCBzdGFuZGFyZFRpbWVvdXQpOworLy8gfSk7CiAK
IHZhciB0ZXN0MTEgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxs
IHB1bGwgdW50aWwgdGhlIHByZXZpb3VzIHB1bGwgY2FsbFwncyBwcm9taXNlIGZ1bGZpbGxzJyk7
CiB0ZXN0MTEuc3RlcChmdW5jdGlvbigpIHsKQEAgLTQwOCw1MSArNDA4LDUxIEBAIHRlc3QxMS5z
dGVwKGZ1bmN0aW9uKCkgewogICAgIH0pKTsKIH0pOwogCi12YXIgdGVzdDEyID0gYXN5bmNfdGVz
dCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBwdWxsIGFmdGVyIHN0YXJ0LCBhbmQgYWZ0ZXIgZXZl
cnkgcmVhZCcpOwotdGVzdDEyLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHRpbWVzQ2FsbGVk
ID0gMDsKLSAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0gICAgdmFy
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsK
LSAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAgICAgICAgYy5lbnF1ZXVlKCdiJyk7
Ci0gICAgICAgICAgICBjLmVucXVldWUoJ2MnKTsKLSAgICAgICAgICAgIHJldHVybiBzdGFydFBy
b21pc2U7Ci0gICAgICAgIH0sCi0gICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgKyt0aW1lc0NhbGxlZDsKLSAgICAgICAgfSwKLSAgICAgICAgc3RyYXRlZ3k6IHsKLSAgICAg
ICAgICAgIHNpemU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgIHNob3VsZEFwcGx5QmFja3ByZXNzdXJlOiBmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9KTsKLSAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgICBz
dGFydFByb21pc2UudGhlbih0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICBy
ZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHRlc3QxMi5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0
MSkgewotICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MSwgeyB2YWx1ZTog
J2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgY2h1bmsgc2hvdWxkIGJlIGFzIGV4cGVjdGVkJyk7
Ci0KLSAgICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4odGVzdDEyLnN0ZXBfZnVu
YyhmdW5jdGlvbihyZXN1bHQyKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVh
bHMocmVzdWx0MiwgeyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LCAnc2Vjb25kIGNodW5rIHNo
b3VsZCBiZSBhcyBleHBlY3RlZCcpOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5y
ZWFkKCkudGhlbih0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdDMpIHsKLSAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MywgeyB2YWx1ZTogJ2MnLCBk
b25lOiBmYWxzZSB9LCAndGhpcmQgY2h1bmsgc2hvdWxkIGJlIGFzIGV4cGVjdGVkJyk7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCh0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25jZSBmb3IgYWZ0ZXIgc3RhcnQsIGFuZCBv
bmNlIGZvciBldmVyeSByZWFkLgotICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyh0aW1lc0NhbGxlZCwgNCwgJ3B1bGwoKSBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgZm91ciB0
aW1lcycpOwotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdDEyLmRvbmUoKTsKLSAgICAgICAg
ICAgICAgICAgICAgfSksIHN0YW5kYXJkVGltZW91dCk7Ci0gICAgICAgICAgICAgICAgfSkpOwot
ICAgICAgICAgICAgfSkpOwotICAgICAgICB9KSk7Ci0gICAgfSkpLmNhdGNoKHRlc3QxMi5zdGVw
X2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9KSk7Ci19KTsKKy8vIHZh
ciB0ZXN0MTIgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIHB1bGwgYWZ0ZXIg
c3RhcnQsIGFuZCBhZnRlciBldmVyeSByZWFkJyk7CisvLyB0ZXN0MTIuc3RlcChmdW5jdGlvbigp
IHsKKy8vICAgICB2YXIgdGltZXNDYWxsZWQgPSAwOworLy8gICAgIHZhciBzdGFydFByb21pc2Ug
PSBQcm9taXNlLnJlc29sdmUoKTsKKy8vICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
eworLy8gICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgeworLy8gICAgICAgICAgICAgYy5lbnF1
ZXVlKCdhJyk7CisvLyAgICAgICAgICAgICBjLmVucXVldWUoJ2InKTsKKy8vICAgICAgICAgICAg
IGMuZW5xdWV1ZSgnYycpOworLy8gICAgICAgICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKKy8v
ICAgICAgICAgfSwKKy8vICAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7CisvLyAgICAgICAgICAg
ICArK3RpbWVzQ2FsbGVkOworLy8gICAgICAgICB9LAorLy8gICAgICAgICBzdHJhdGVneTogewor
Ly8gICAgICAgICAgICAgc2l6ZTogZnVuY3Rpb24oKSB7CisvLyAgICAgICAgICAgICAgICAgcmV0
dXJuIDE7CisvLyAgICAgICAgICAgICB9LAorLy8gICAgICAgICAgICAgc2hvdWxkQXBwbHlCYWNr
cHJlc3N1cmU6IGZ1bmN0aW9uKCkgeworLy8gICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
Ky8vICAgICAgICAgICAgIH0KKy8vICAgICAgICAgfQorLy8gICAgIH0pOworLy8gICAgIHZhciBy
ZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworLy8gICAgIHN0YXJ0UHJvbWlzZS50aGVuKHRlc3Qx
Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisvLyAgICAgICAgIHJldHVybiByZWFkZXIucmVhZCgp
LnRoZW4odGVzdDEyLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQxKSB7CisvLyAgICAgICAgICAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQxLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNl
IH0sICdmaXJzdCBjaHVuayBzaG91bGQgYmUgYXMgZXhwZWN0ZWQnKTsKKworLy8gICAgICAgICAg
ICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKHJl
c3VsdDIpIHsKKy8vICAgICAgICAgICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQy
LCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sICdzZWNvbmQgY2h1bmsgc2hvdWxkIGJlIGFz
IGV4cGVjdGVkJyk7CisKKy8vICAgICAgICAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50
aGVuKHRlc3QxMi5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0MykgeworLy8gICAgICAgICAgICAg
ICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQzLCB7IHZhbHVlOiAnYycsIGRvbmU6
IGZhbHNlIH0sICd0aGlyZCBjaHVuayBzaG91bGQgYmUgYXMgZXhwZWN0ZWQnKTsKKworLy8gICAg
ICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3QxMi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmNlIGZvciBhZnRlciBzdGFydCwgYW5k
IG9uY2UgZm9yIGV2ZXJ5IHJlYWQuCisvLyAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHRpbWVzQ2FsbGVkLCA0LCAncHVsbCgpIHNob3VsZCBiZSBjYWxsZWQgZXhhY3RseSBm
b3VyIHRpbWVzJyk7CisvLyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0MTIuZG9uZSgpOwor
Ly8gICAgICAgICAgICAgICAgICAgICB9KSwgc3RhbmRhcmRUaW1lb3V0KTsKKy8vICAgICAgICAg
ICAgICAgICB9KSk7CisvLyAgICAgICAgICAgICB9KSk7CisvLyAgICAgICAgIH0pKTsKKy8vICAg
ICB9KSkuY2F0Y2godGVzdDEyLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNo
ZWQoZSk7IH0pKTsKKy8vIH0pOwogCiB2YXIgdGVzdDEzID0gYXN5bmNfdGVzdCgnUmVhZGFibGVT
dHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIGFmdGVyIHN0YXJ0IGlmIHRoZSBzdHJlYW0gaXMg
bm93IGNsb3NlZCcpOwogdGVzdDEzLnN0ZXAoZnVuY3Rpb24oKSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>