<?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>145839</bug_id>
          
          <creation_ts>2015-06-10 06:13:15 -0700</creation_ts>
          <short_desc>[Streams API] Sync tests with spec</short_desc>
          <delta_ts>2015-06-16 01:19:48 -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>WebCore Misc.</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>https://streams.spec.whatwg.org/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>145965</blocked>
    
    <blocked>145976</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Xabier Rodríguez Calvar">calvaris</reporter>
          <assigned_to name="Xabier Rodríguez Calvar">calvaris</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1101002</commentid>
    <comment_count>0</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-06-10 06:13:15 -0700</bug_when>
    <thetext>We need to do this again

+++ This bug was initially created as a clone of Bug #143669 +++

Sync Streams API tests with spec</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101266</commentid>
    <comment_count>1</comment_count>
      <attachid>254719</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-06-11 06:17:41 -0700</bug_when>
    <thetext>Created attachment 254719
Patch

Rebased the tests against the latest spec tests and utils. Updated expectations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101276</commentid>
    <comment_count>2</comment_count>
      <attachid>254719</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-11 08:06:02 -0700</bug_when>
    <thetext>Comment on attachment 254719
Patch

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

&gt; LayoutTests/ChangeLog:8
&gt; +        Considered all changes in the spec tests and brought them to WebKit.

Great to see all those new tests!
Eager to make them PASS ;)

&gt; LayoutTests/ChangeLog:13
&gt; +        important as it allowed us to remove all our custom tests that are now covered by the spec.

It is good that our tests be integrated as reference tests.
I guess a further patch will remove the custom redundant tests?

&gt; LayoutTests/resources/gc.js:-15
&gt; -            gcRec(n-1);

Can you detail why this is no longer needed?
I guess the purpose of gcRec is to be able to run the tests in not-rwt environments.

&gt; LayoutTests/resources/gc.js:10
&gt; +        else {

Maybe remove the &quot;{&quot; and corresponding &quot;}&quot; ?

&gt; LayoutTests/streams/reference-implementation/readable-stream-templated-expected.txt:36
&gt;  PASS getReader() should return a reader that acts errored 

This passing test has the same name as one that is timeouting (line 43).
If that is the same templated test that both PASS and TIMEOUT, we will probably end up in a flaky PASS test.
Can we check that before landing?
We may need to comment this test temporarily until we upstream more features (async start/pull e.g.).

&gt; LayoutTests/streams/reference-implementation/readable-stream-templated-expected.txt:43
&gt; +TIMEOUT getReader() should return a reader that acts errored Test timed out

Timeouting test referred above.

&gt; LayoutTests/streams/reference-implementation/readable-stream-templated-expected.txt:56
&gt; +FAIL draining the stream via read() should cause the reader closed promise to fulfill and locked to be false assert_false: stream should no longer be locked expected false got undefined

It seems that we were passing this test.
Is it the case of some missing ReadableStream feature or is it a regression?
In the latter case, maybe we can file a bug to keep track of it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101279</commentid>
    <comment_count>3</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-06-11 08:21:05 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Great to see all those new tests!
&gt; Eager to make them PASS ;)

We have a lot of work :)

&gt; It is good that our tests be integrated as reference tests.
&gt; I guess a further patch will remove the custom redundant tests?

I forgot, let me upload them again O:)

&gt; &gt; LayoutTests/resources/gc.js:-15
&gt; &gt; -            gcRec(n-1);
&gt; 
&gt; Can you detail why this is no longer needed?
&gt; I guess the purpose of gcRec is to be able to run the tests in not-rwt
&gt; environments.

Domenic made that change when adapting the tests before merging them at the spec. I guess his (and my) opinion is that that method is not reliable to force the gc to work so he (and I) preferred to add a warning in those cases and have that test dumping that warning.

&gt; &gt; LayoutTests/resources/gc.js:10
&gt; &gt; +        else {
&gt; 
&gt; Maybe remove the &quot;{&quot; and corresponding &quot;}&quot; ?

Ok.

&gt; &gt; LayoutTests/streams/reference-implementation/readable-stream-templated-expected.txt:36
&gt; &gt;  PASS getReader() should return a reader that acts errored 
&gt; 
&gt; This passing test has the same name as one that is timeouting (line 43).
&gt; If that is the same templated test that both PASS and TIMEOUT, we will
&gt; probably end up in a flaky PASS test.

I run tests 10 times with --force and they behave like that all the time. The case of this discrepancy can be that these are templated tests and that means that some tests are run more that once with different conditions or starting points. I don&apos;t think they are flaky.

&gt; Can we check that before landing?

I&apos;ll do it now.

&gt; We may need to comment this test temporarily until we upstream more features
&gt; (async start/pull e.g.).

I uncommented all tests because I think they are marked already as flaky at the expectations until we find a better solution for the timeouts and the integration between WTR and testharness.

&gt; &gt; LayoutTests/streams/reference-implementation/readable-stream-templated-expected.txt:56
&gt; &gt; +FAIL draining the stream via read() should cause the reader closed promise to fulfill and locked to be false assert_false: stream should no longer be locked expected false got undefined
&gt; 
&gt; It seems that we were passing this test.
&gt; Is it the case of some missing ReadableStream feature or is it a regression?
&gt; In the latter case, maybe we can file a bug to keep track of it?

The cause for that test is the &quot;locked&quot; attribute, so it is a missing RS feature. If you want I can file a bug, but the test is failing anyway and if that happens, it is already under my radar :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101304</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-11 10:02:24 -0700</bug_when>
    <thetext>&gt; &gt; It is good that our tests be integrated as reference tests.
&gt; &gt; I guess a further patch will remove the custom redundant tests?
&gt; 
&gt; I forgot, let me upload them again O:)

As you like, doing the removal as another patch seems good too.

&gt; &gt; &gt; LayoutTests/resources/gc.js:-15
&gt; &gt; &gt; -            gcRec(n-1);
&gt; &gt; 
&gt; &gt; Can you detail why this is no longer needed?
&gt; &gt; I guess the purpose of gcRec is to be able to run the tests in not-rwt
&gt; &gt; environments.
&gt; 
&gt; Domenic made that change when adapting the tests before merging them at the
&gt; spec. I guess his (and my) opinion is that that method is not reliable to
&gt; force the gc to work so he (and I) preferred to add a warning in those cases
&gt; and have that test dumping that warning.

Having the warning in not-rwt environments seems like a good idea.
Keeping the particular gcRec method does no harm though, it just increases the chance that a gc will actually happen.

&gt; &gt; &gt; LayoutTests/streams/reference-implementation/readable-stream-templated-expected.txt:36
&gt; &gt; &gt;  PASS getReader() should return a reader that acts errored 
&gt; &gt; 
&gt; &gt; This passing test has the same name as one that is timeouting (line 43).
&gt; &gt; If that is the same templated test that both PASS and TIMEOUT, we will
&gt; &gt; probably end up in a flaky PASS test.
&gt; 
&gt; I run tests 10 times with --force and they behave like that all the time.
&gt; The case of this discrepancy can be that these are templated tests and that
&gt; means that some tests are run more that once with different conditions or
&gt; starting points. I don&apos;t think they are flaky.

The issue is on slow bots: the test that PASS has only 50 ms to finish, which is not always ok on slow bots.
Increasing the timeout value for that specific test may fix that. 1s might be good enough.

&gt; I uncommented all tests because I think they are marked already as flaky at
&gt; the expectations until we find a better solution for the timeouts and the
&gt; integration between WTR and testharness.

I may be wrong but I don&apos;t think that any streams test is marked flaky in TestExpectations. If that is the case, we should try to remove these flaky expectations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101500</commentid>
    <comment_count>5</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-06-12 01:45:54 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; &gt; It is good that our tests be integrated as reference tests.
&gt; &gt; &gt; I guess a further patch will remove the custom redundant tests?
&gt; &gt; 
&gt; &gt; I forgot, let me upload them again O:)
&gt; 
&gt; As you like, doing the removal as another patch seems good too.

I think it is better to do it now as it is part of a whole.

&gt; &gt; &gt; &gt; LayoutTests/resources/gc.js:-15
&gt; &gt; &gt; &gt; -            gcRec(n-1);
&gt; &gt; &gt; 
&gt; &gt; &gt; Can you detail why this is no longer needed?
&gt; &gt; &gt; I guess the purpose of gcRec is to be able to run the tests in not-rwt
&gt; &gt; &gt; environments.
&gt; &gt; 
&gt; &gt; Domenic made that change when adapting the tests before merging them at the
&gt; &gt; spec. I guess his (and my) opinion is that that method is not reliable to
&gt; &gt; force the gc to work so he (and I) preferred to add a warning in those cases
&gt; &gt; and have that test dumping that warning.
&gt; 
&gt; Having the warning in not-rwt environments seems like a good idea.
&gt; Keeping the particular gcRec method does no harm though, it just increases
&gt; the chance that a gc will actually happen.

Ok, I buy it :) I&apos;ll add it again. Actually as part of reworking the custom tests I have to touch that.

&gt; The issue is on slow bots: the test that PASS has only 50 ms to finish,
&gt; which is not always ok on slow bots.
&gt; Increasing the timeout value for that specific test may fix that. 1s might
&gt; be good enough.

The problem is not the test timeouts because those tests would timeout even if we had 10s as they always timeout. I think in this case, the shorter the better because they will timeout anyway.

I&apos;ll go thru the tests that set timeouts (to let promises run and the like) and work them out by increasing the time.

&gt; &gt; I uncommented all tests because I think they are marked already as flaky at
&gt; &gt; the expectations until we find a better solution for the timeouts and the
&gt; &gt; integration between WTR and testharness.
&gt; 
&gt; I may be wrong but I don&apos;t think that any streams test is marked flaky in
&gt; TestExpectations. If that is the case, we should try to remove these flaky
&gt; expectations.

You are completely right, my mistake. I remember that Alexey had added and I thought that they were still in place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101576</commentid>
    <comment_count>6</comment_count>
      <attachid>254798</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-06-12 06:26:21 -0700</bug_when>
    <thetext>Created attachment 254798
Patch

Honored Youenn&apos;s comments. I also tested the remaining custom tests and adapted some of them to the referecence implementation behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101603</commentid>
    <comment_count>7</comment_count>
      <attachid>254798</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-12 09:29:44 -0700</bug_when>
    <thetext>Comment on attachment 254798
Patch

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

&gt; LayoutTests/ChangeLog:13
&gt; +        important as it allowed us to some of our custom tests that are now covered by the spec.

Changelog is missing some new entries (LayoutTests/streams/readable-stream-controller-error-expected.txt e.g.)
It may be good to state that some WebKit specific tests were removed as we integrate their upstreamed reference test suite version.

Maybe also explain in the Changelog that several changes to WebKit specific tests are editorial but will help the upstream process?

&gt; LayoutTests/streams/readable-stream-controller-error-expected.txt:4
&gt; +FAIL Erroring a ReadableStream without any value assert_equals: expected (undefined) undefined but got (object) object &quot;Error: Error function called.&quot;

We discussed with Xabier this case.
In case of controller.error(), we should return undefined as value (curretnly we use a default message).
Plan is to fix ReadableJSStream::storeError accordingly as a future patch.

&gt; LayoutTests/streams/readable-stream-expected.txt:-4
&gt; -PASS ReadableStream should be able to call start method within prototype chain of its source 

All 3 tests are now in reference-implementation files hence why we can remove them safely.

&gt; LayoutTests/streams/reference-implementation/readable-stream-cancel.html:30
&gt; +                }), 500);

Xabier, can you tell again why the timeout here is 500 and the other timeout is 1000?
Shouldn&apos;t it be the reverse?

&gt; LayoutTests/streams/reference-implementation/readable-stream-reader.html:194
&gt; +var test5 = async_test(&apos;Multiple readers can access the stream in sequence&apos;);

It is good to see all those previously commented out tests now getting live.

&gt; LayoutTests/streams/reference-implementation/readable-stream-templated-expected.txt:36
&gt;  PASS getReader() should return a reader that acts errored 

I still fear that this particular test may turn TIMEOUT in slow bots.
If I am not mistaken, it will only PASS if ending faster than 5O ms.
Hopefully, this will always happen as this is really a sync test (exception throwing).

If that is ok, let&apos;s ensure everything is fine at cq time.

&gt; LayoutTests/streams/reference-implementation/readable-stream-templated-expected.txt:42
&gt; +PASS Running templatedRSErrored with ReadableStream (errored via returning a rejected promise in start) 

I wonder why we do not fail this test, at least until 145792 is actually landed.

&gt; LayoutTests/streams/reference-implementation/readable-stream-templated.html:244
&gt; +        setTimeout(test3.step_func(function() { test3.done(); }), 1000);

I do not know what is the typical WebKit policy for setting the timeout value in this kind of case.
1000 seems large enough to ensure we are compliant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101609</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-12 09:40:33 -0700</bug_when>
    <thetext>&gt; &gt; LayoutTests/streams/reference-implementation/readable-stream-cancel.html:30
&gt; &gt; +                }), 500);
&gt; 
&gt; Xabier, can you tell again why the timeout here is 500 and the other timeout
&gt; is 1000?
&gt; Shouldn&apos;t it be the reverse?

Actually no, it is good like that!

Anyway, hoping to see these tests soon be run on bots :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101886</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-15 00:18:24 -0700</bug_when>
    <thetext>&gt; &gt; LayoutTests/streams/reference-implementation/readable-stream-templated-expected.txt:36
&gt; &gt;  PASS getReader() should return a reader that acts errored 
&gt; 
&gt; I still fear that this particular test may turn TIMEOUT in slow bots.
&gt; If I am not mistaken, it will only PASS if ending faster than 5O ms.
&gt; Hopefully, this will always happen as this is really a sync test (exception
&gt; throwing).
&gt; 
&gt; If that is ok, let&apos;s ensure everything is fine at cq time.

Rebasing after latest streams API patch may solve this hopefully.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101892</commentid>
    <comment_count>10</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-06-15 03:15:10 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; LayoutTests/ChangeLog:13
&gt; &gt; +        important as it allowed us to some of our custom tests that are now covered by the spec.
&gt; 
&gt; Changelog is missing some new entries
&gt; (LayoutTests/streams/readable-stream-controller-error-expected.txt e.g.)
&gt; It may be good to state that some WebKit specific tests were removed as we
&gt; integrate their upstreamed reference test suite version.
&gt; 
&gt; Maybe also explain in the Changelog that several changes to WebKit specific
&gt; tests are editorial but will help the upstream process?

I think I explained it though I missed some words when writing. I&apos;ll rewrite it and try to be more verbose. Btw, what do you mean by editorial?

It is no problem as I have to recompile and rerun after the latest landing.

&gt; &gt; LayoutTests/streams/reference-implementation/readable-stream-templated-expected.txt:36
&gt; &gt;  PASS getReader() should return a reader that acts errored 
&gt; 
&gt; I still fear that this particular test may turn TIMEOUT in slow bots.
&gt; If I am not mistaken, it will only PASS if ending faster than 5O ms.
&gt; Hopefully, this will always happen as this is really a sync test (exception
&gt; throwing).
&gt; 
&gt; If that is ok, let&apos;s ensure everything is fine at cq time.

I&apos;ll recheck it too.

&gt; &gt; LayoutTests/streams/reference-implementation/readable-stream-templated-expected.txt:42
&gt; &gt; +PASS Running templatedRSErrored with ReadableStream (errored via returning a rejected promise in start) 
&gt; 
&gt; I wonder why we do not fail this test, at least until 145792 is actually
&gt; landed.

I&apos;ll recheck it too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101908</commentid>
    <comment_count>11</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-15 04:51:34 -0700</bug_when>
    <thetext> 
&gt; I think I explained it though I missed some words when writing. I&apos;ll rewrite
&gt; it and try to be more verbose. Btw, what do you mean by editorial?

Some files are changed (removal of tests/addition of tests/changing of tests).
Some other files are changed but not in a functional way, hence &quot;editorial&quot;/improving style.

&gt; &gt; &gt; LayoutTests/streams/reference-implementation/readable-stream-templated-expected.txt:42
&gt; &gt; &gt; +PASS Running templatedRSErrored with ReadableStream (errored via returning a rejected promise in start) 
&gt; &gt; 
&gt; &gt; I wonder why we do not fail this test, at least until 145792 is actually
&gt; &gt; landed.
&gt; 
&gt; I&apos;ll recheck it too.

Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101926</commentid>
    <comment_count>12</comment_count>
      <attachid>254876</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-06-15 07:39:41 -0700</bug_when>
    <thetext>Created attachment 254876
Patch

Honored Youenn&apos;s comments. I also tested the remaining custom tests and adapted some of them to the referecence implementation behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101928</commentid>
    <comment_count>13</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-06-15 07:58:27 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; Changelog is missing some new entries
&gt; 
&gt; I think I explained it though I missed some words when writing. I&apos;ll rewrite
&gt; it and try to be more verbose. Btw, what do you mean by editorial?
&gt; 
&gt; It is no problem as I have to recompile and rerun after the latest landing.

Done.

&gt; &gt; &gt; LayoutTests/streams/reference-implementation/readable-stream-templated-expected.txt:36
&gt; &gt; &gt;  PASS getReader() should return a reader that acts errored 
&gt; &gt; 
&gt; &gt; I still fear that this particular test may turn TIMEOUT in slow bots.
&gt; &gt; If I am not mistaken, it will only PASS if ending faster than 5O ms.
&gt; &gt; Hopefully, this will always happen as this is really a sync test (exception
&gt; &gt; throwing).
&gt; &gt; 
&gt; &gt; If that is ok, let&apos;s ensure everything is fine at cq time.
&gt; 
&gt; I&apos;ll recheck it too.

I removed that timeout as both instances pass the test. Good catch. I also checked the other timeouts and removed some of them that are passing now.

&gt; &gt; &gt; LayoutTests/streams/reference-implementation/readable-stream-templated-expected.txt:42
&gt; &gt; &gt; +PASS Running templatedRSErrored with ReadableStream (errored via returning a rejected promise in start) 
&gt; &gt; 
&gt; &gt; I wonder why we do not fail this test, at least until 145792 is actually
&gt; &gt; landed.
&gt; 
&gt; I&apos;ll recheck it too.

Bug 145792 landed and test passes properly, so moved on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101937</commentid>
    <comment_count>14</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-15 09:17:10 -0700</bug_when>
    <thetext>That looks good to me.
Once landed, we can get proper coverage for bug 145965 patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102194</commentid>
    <comment_count>15</comment_count>
      <attachid>254876</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-16 01:19:44 -0700</bug_when>
    <thetext>Comment on attachment 254876
Patch

Clearing flags on attachment: 254876

Committed r185586: &lt;http://trac.webkit.org/changeset/185586&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102195</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-16 01:19:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254719</attachid>
            <date>2015-06-11 06:17:41 -0700</date>
            <delta_ts>2015-06-12 06:26:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145839-20150611151707.patch</filename>
            <type>text/plain</type>
            <size>169029</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1NDUyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjQ2MWYzZWFmZTVkNWY4OWMyOTli
ZmE0YWZkMTE0YmMwZDJlNTdhNC4uN2RiZTU0YTM3ZDdmYjI0YmYzYjM5M2FjOGI0YmRmYzVmMjJl
Zjk3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE1LTA2LTExICBZb3Vlbm4gRmFibGV0IDx5
b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4gYW5kIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8
Y2FsdmFyaXNAaWdhbGlhLmNvbT4KKworICAgICAgICBTeW5jIFN0cmVhbXMgQVBJIHRlc3RzIHdp
dGggc3BlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ1ODM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Q29uc2lkZXJlZCBhbGwgY2hhbmdlcyBpbiB0aGUgc3BlYyB0ZXN0cyBhbmQgYnJvdWdodCB0aGVt
IHRvIFdlYktpdC4KKworICAgICAgICBTb21lIG9mIHRob3NlIGNoYW5nZXMgd2VyZSByZWxhdGVk
IHRvIHNwZWMgY2hhbmdlcywgbGlrZSB0aGUgc3RyYXRlZ3kgb3Igc29tZSBvZiB0aGUgYWxnb3Jp
dGhtcy4gU29tZSBsaWtlIHRoZQorICAgICAgICB0ZWUgb25lcyB3ZXJlIG5ld2x5IGFkZGVkIGFz
IHRoZXkgd2lsbCBiZSBpbXBsZW1lbnRlZCBzb29uLiBUaGVyZSBhcmUgYWxzbyBzb21lIHRlc3Rz
IHRoYXQgc2h1ZmZsZWQgYXJvdW5kCisgICAgICAgIGJlY2F1c2UgdGhleSB3ZXJlIGp1c3QgbW92
ZWQgYXQgdGhlIHNwZWMgb3IgaW50ZWdyYXRlZCBmcm9tIHRoZSBjaGFuZ2VzIHdlIHN1Ym1pdHRl
ZCwgd2hpY2ggd2FzIHN1YnN0YW50aWFsbHkKKyAgICAgICAgaW1wb3J0YW50IGFzIGl0IGFsbG93
ZWQgdXMgdG8gcmVtb3ZlIGFsbCBvdXIgY3VzdG9tIHRlc3RzIHRoYXQgYXJlIG5vdyBjb3ZlcmVk
IGJ5IHRoZSBzcGVjLgorCisgICAgICAgICogcmVzb3VyY2VzL2djLmpzOgorICAgICAgICAoLndp
bmRvdy5nYyk6CisgICAgICAgICgud2luZG93LmdjLmdjUmVjKTogRGVsZXRlZC4KKyAgICAgICAg
KiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtc3RyYXRlZ2llcy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9u
L2JhZC1zdHJhdGVnaWVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNl
LWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNv
dXJjZXMuaHRtbDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9i
cmFuZC1jaGVja3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWlt
cGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy5odG1sOgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9i
eXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0cmVh
bXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50
LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tY2FuY2VsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tY2FuY2Vs
Lmh0bWw6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFi
bGUtc3RyZWFtLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVy
Lmh0bWw6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFi
bGUtc3RyZWFtLXRlZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0cmVhbXMvcmVm
ZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZWUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFt
LXRlbXBsYXRlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1w
bGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC5odG1sOgorICAgICAgICAqIHN0
cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1sOgorICAg
ICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3Jlc291cmNlcy9ieXRlLWxl
bmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmpzOgorICAgICAgICAodHlwZUlzT2JqZWN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNob3VsZEFw
cGx5QmFja3ByZXNzdXJlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9yZXNvdXJjZXMvY291bnQtcXVldWluZy1zdHJhdGVneS5qczoKKyAgICAg
ICAgKHR5cGVJc09iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChDb3VudFF1ZXVpbmdTdHJhdGVn
eS5wcm90b3R5cGUuc2hvdWxkQXBwbHlCYWNrcHJlc3N1cmUpOiBEZWxldGVkLgorICAgICAgICAo
dHlwZUlzT2JqZWN0KTogQWRkZWQuCisgICAgICAgIChjcmVhdGVEYXRhUHJvcGVydHkpOiBBZGRl
ZC4KKwogMjAxNS0wNi0xMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxODQ4OTUpOiBWZXJ0aWNhbCBib3JkZXIgZWxl
bWVudHMgKFstd2Via2l0XS1ib3JkZXItaW1hZ2Ugc2V0IHRvICdyZXBlYXQnKSB0aGF0IHVzZWQg
dG8gcmVuZGVyIHBlcmZlY3RseSBhcmUgbm93IHJlbmRlcmluZyBpbmNvcnJlY3RseS4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9nYy5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNl
cy9nYy5qcwppbmRleCAwNzRiM2M4ZjI0YjBhMmMzNDdkYTEzYjY0Y2RlMGZkNzczNDM4ZDhiLi4y
OGYzYTcwMmZiZTU4MGI1MDJmMzlkOTc0YjY4ZTIyYmFmODY5ZWNiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9yZXNvdXJjZXMvZ2MuanMKKysrIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2djLmpz
CkBAIC03LDE0ICs3LDggQEAgaWYgKCF3aW5kb3cuZ2MpCiAgICAgewogICAgICAgICBpZiAod2lu
ZG93LkdDQ29udHJvbGxlcikKICAgICAgICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIuY29sbGVj
dCgpOwotICAgICAgICBmdW5jdGlvbiBnY1JlYyhuKSB7Ci0gICAgICAgICAgICBpZiAobiA8IDEp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHt9OwotICAgICAgICAgICAgdmFyIHRlbXAgPSB7aTog
ImFiIiArIGkgKyAoaSAvIDEwMDAwMCl9OwotICAgICAgICAgICAgdGVtcCArPSAiZm9vIjsKLSAg
ICAgICAgICAgIGdjUmVjKG4tMSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY29uc29s
ZS53YXJuKCdUZXN0cyBhcmUgcnVubmluZyB3aXRob3V0IHRoZSBhYmlsaXR5IHRvIGRvIG1hbnVh
bCBnYXJiYWdlIGNvbGxlY3Rpb24uIFRoZXkgd2lsbCBzdGlsbCB3b3JrLCBidXQgY292ZXJhZ2Ug
d2lsbCBiZSBzdWJvcHRpbWFsLicpOwogICAgICAgICB9Ci0gICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDA7IGkrKykKLSAgICAgICAgICAgIGdjUmVjKDEwKTsKICAgICB9CiB9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQt
c3RyYXRlZ2llcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9iYWQtc3RyYXRlZ2llcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTll
MWI4YjE4MWNjN2YxN2ZjOTdlZjZiZmQ0ZGM4MWZhYTg5NjA1NgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC1zdHJhdGVn
aWVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMwIEBACisKK0ZBSUwgUmVhZGFibGUgc3RyZWFt
OiB0aHJvd2luZyBzdHJhdGVneS5zaXplIGdldHRlciBhc3NlcnRfdGhyb3dzOiBjb25zdHJ1Y3Rp
b24gc2hvdWxkIHJlLXRocm93IHRoZSBlcnJvciBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeworICAg
ICAgICBuZXcgUmVhZGFibGVTdHJlYW0oe30sIHsKKyAgICAgICAgICAuLi4iIGRpZCBub3QgdGhy
b3cKK0ZBSUwgUmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIG1ldGhvZCBh
c3NlcnRfdGhyb3dzOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB0aGUgZXJyb3IgZnVuY3Rpb24gImZ1
bmN0aW9uICgpIHsgYy5lbnF1ZXVlKCdhJyk7IH0iIGRpZCBub3QgdGhyb3cKK0ZBSUwgUmVhZGFi
bGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIGdldHRlciBhc3NlcnRf
dGhyb3dzOiBjb25zdHJ1Y3Rpb24gc2hvdWxkIHJlLXRocm93IHRoZSBlcnJvciBmdW5jdGlvbiAi
ZnVuY3Rpb24gKCkgeworICAgICAgICBuZXcgUmVhZGFibGVTdHJlYW0oe30sIHsKKyAgICAgICAg
ICAuLi4iIGRpZCBub3QgdGhyb3cKK0ZBSUwgUmVhZGFibGUgc3RyZWFtOiBpbnZhbGlkIHN0cmF0
ZWd5LmhpZ2hXYXRlck1hcmsgYXNzZXJ0X3Rocm93czogY29uc3RydWN0aW9uIHNob3VsZCB0aHJv
dyBhIFJhbmdlRXJyb3IgZm9yIC0xIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICBuZXcgUmVhZGFibGVTdHJlYW0oe30sIHsKKyAgICAgIC4uLiIgZGlkIG5vdCB0aHJvdworRkFJ
TCBSZWFkYWJsZSBzdHJlYW06IG5lZ2F0aXZlIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgYXNzZXJ0
X3Rocm93czogY29uc3RydWN0aW9uIHNob3VsZCB0aHJvdyBhIFJhbmdlRXJyb3IgZnVuY3Rpb24g
ImZ1bmN0aW9uICgpIHsKKyAgICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7CisgICAgICAg
ICAgLi4uIiBkaWQgbm90IHRocm93CitGQUlMIFJlYWRhYmxlIHN0cmVhbTogc3RyYXRlZ3kuc2l6
ZSByZXR1cm5pbmcgTmFOIGFzc2VydF9lcXVhbHM6IGVucXVldWUgc2hvdWxkIHRocm93IGEgUmFu
Z2VFcnJvciBleHBlY3RlZCBmdW5jdGlvbiAiZnVuY3Rpb24gUmFuZ2VFcnJvcigpIHsKKyAgICBb
bmF0aXZlIGNvZGVdCit9IiBidXQgZ290IGZ1bmN0aW9uICJmdW5jdGlvbiBBc3NlcnRpb25FcnJv
cihtZXNzYWdlKQorICAgIHsKKyAgICAgICAgdGhpcy5tZXNzYS4uLiIKK0ZBSUwgUmVhZGFibGUg
c3RyZWFtOiBzdHJhdGVneS5zaXplIHJldHVybmluZyAtSW5maW5pdHkgYXNzZXJ0X2VxdWFsczog
ZW5xdWV1ZSBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yIGV4cGVjdGVkIGZ1bmN0aW9uICJmdW5j
dGlvbiBSYW5nZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iIGJ1dCBnb3QgZnVuY3Rp
b24gImZ1bmN0aW9uIEFzc2VydGlvbkVycm9yKG1lc3NhZ2UpCisgICAgeworICAgICAgICB0aGlz
Lm1lc3NhLi4uIgorRkFJTCBSZWFkYWJsZSBzdHJlYW06IHN0cmF0ZWd5LnNpemUgcmV0dXJuaW5n
ICtJbmZpbml0eSBhc3NlcnRfZXF1YWxzOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyBhIFJhbmdlRXJy
b3IgZXhwZWN0ZWQgZnVuY3Rpb24gImZ1bmN0aW9uIFJhbmdlRXJyb3IoKSB7CisgICAgW25hdGl2
ZSBjb2RlXQorfSIgYnV0IGdvdCBmdW5jdGlvbiAiZnVuY3Rpb24gQXNzZXJ0aW9uRXJyb3IobWVz
c2FnZSkKKyAgICB7CisgICAgICAgIHRoaXMubWVzc2EuLi4iCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC1zdHJhdGVnaWVzLmh0
bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtc3Ry
YXRlZ2llcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmZGFkYjVkZjk0N2E1MzcyMGNkN2ExYWU3ODAwZjU4
OGM5NGZmMjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5j
ZS1pbXBsZW1lbnRhdGlvbi9iYWQtc3RyYXRlZ2llcy5odG1sCkBAIC0wLDAgKzEsMTg2IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMnPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Jy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyc+PC9zY3JpcHQ+Cis8c2NyaXB0PgordGVzdChmdW5jdGlvbigpIHsKKyAgICB2YXIg
dGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOworCisgICAgYXNzZXJ0X3Ro
cm93cyh0aGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7
fSwgeworICAgICAgICAgICAgZ2V0IHNpemUoKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgdGhl
RXJyb3I7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgaGlnaFdhdGVyTWFyazogNQorICAg
ICAgICB9KTsKKyAgICB9LCAnY29uc3RydWN0aW9uIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3In
KTsKK30sICdSZWFkYWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgZ2V0dGVyJyk7
CisKK3ZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3Ry
YXRlZ3kuc2l6ZSBtZXRob2QnKTsKK3Rlc3QxLnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIHRo
ZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKyAgICB2YXIgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihj
KSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwgZnVuY3Rpb24oKSB7
IGMuZW5xdWV1ZSgnYScpOyB9LCAnZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhlIGVycm9yJyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHNpemU6IGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRocm93IHRoZUVycm9yOworICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgIGhpZ2hXYXRlck1hcms6IDUKKyAgICAgICAgfQorICAgICk7CisKKyAg
ICBycy5nZXRSZWFkZXIoKS5jbG9zZWQuY2F0Y2godGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKGUp
IHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVq
ZWN0IHdpdGggdGhlIGVycm9yJyk7CisgICAgICAgIHRlc3QxLmRvbmUoKTsKKyAgICB9KSkKK30p
OworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHZhciB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1
bmlxdWUgc3RyaW5nJyk7CisKKyAgICBhc3NlcnRfdGhyb3dzKHRoZUVycm9yLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7CisgICAgICAgICAgICBzaXplOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICBnZXQgaGlnaFdhdGVyTWFyaygpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyB0
aGVFcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfSwgJ2NvbnN0cnVjdGlv
biBzaG91bGQgcmUtdGhyb3cgdGhlIGVycm9yJyk7Cit9LCAnUmVhZGFibGUgc3RyZWFtOiB0aHJv
d2luZyBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIGdldHRlcicpOworCit0ZXN0KGZ1bmN0aW9uKCkg
eworICAgIGZvciAodmFyIGhpZ2hXYXRlck1hcmsgb2YgWy0xLCAtSW5maW5pdHldKSB7CisgICAg
ICAgIGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJyb3IoKSwgZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICBuZXcgUmVhZGFibGVTdHJlYW0oe30sIHsKKyAgICAgICAgICAgICAgICBzaXplOiBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICBoaWdoV2F0ZXJNYXJrCisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfSwgJ2NvbnN0cnVjdGlvbiBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yIGZvciAnICsgaGln
aFdhdGVyTWFyayk7CisgICAgfQorCisgICAgZm9yICh2YXIgaGlnaFdhdGVyTWFyayBvZiBbTmFO
LCAnZm9vJywge31dKSB7CisgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwgeworICAgICAg
ICAgICAgICAgIHNpemU6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
MTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGhpZ2hXYXRlck1hcmsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9LCAnY29uc3RydWN0aW9uIHNob3VsZCB0aHJvdyBhIFR5
cGVFcnJvciBmb3IgJyArIGhpZ2hXYXRlck1hcmspOworICAgIH0KK30sICdSZWFkYWJsZSBzdHJl
YW06IGludmFsaWQgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaycpOworCit0ZXN0KGZ1bmN0aW9uKCkg
eworICAgIGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJyb3IoKSwgZnVuY3Rpb24oKSB7CisgICAg
ICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwgeworICAgICAgICAgICAgc2l6ZTogZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgaGlnaFdhdGVyTWFyazogLTEKKyAgICAgICAgfSk7CisgICAgfSwgJ2NvbnN0cnVjdGlvbiBz
aG91bGQgdGhyb3cgYSBSYW5nZUVycm9yJyk7Cit9LCAnUmVhZGFibGUgc3RyZWFtOiBuZWdhdGl2
ZSBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrJyk7CisKK3ZhciB0ZXN0MiA9IGFzeW5jX3Rlc3QoJ1Jl
YWRhYmxlIHN0cmVhbTogc3RyYXRlZ3kuc2l6ZSByZXR1cm5pbmcgTmFOJyk7Cit0ZXN0Mi5zdGVw
KGZ1bmN0aW9uKCkgeworICAgIHZhciB0aGVFcnJvcjsKKyAgICB2YXIgc3RhcnRDYWxsZWQgPSBm
YWxzZTsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgICAgICAgICAgYy5lbnF1ZXVlKCdoaScpOworICAgICAgICAgICAgICAgICAgICBhc3Nl
cnRfdW5yZWFjaGVkKCdlbnF1ZXVlIGRpZG5cJ3QgdGhyb3cnKTsKKyAgICAgICAgICAgICAgICB9
IGNhdGNoIChlcnJvcikgeworICAgICAgICAgICAgICAgICAgICBzdGFydENhbGxlZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXJyb3IuY29uc3RydWN0b3IsIFJh
bmdlRXJyb3IsICdlbnF1ZXVlIHNob3VsZCB0aHJvdyBhIFJhbmdlRXJyb3InKTsKKyAgICAgICAg
ICAgICAgICAgICAgdGhlRXJyb3IgPSBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHNpemU6IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgIHJldHVybiBOYU47CisgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgaGlnaFdhdGVyTWFyazogNQorICAgICAgICB9CisgICAgKTsKKworICAgIHJzLmdldFJl
YWRlcigpLmNsb3NlZC5jYXRjaCh0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeworICAgICAg
ICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0
aGUgZXJyb3InKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworICAgICAgICB0
ZXN0Mi5kb25lKCk7CisgICAgfSkpOworfSk7CisKK3ZhciB0ZXN0MyA9IGFzeW5jX3Rlc3QoJ1Jl
YWRhYmxlIHN0cmVhbTogc3RyYXRlZ3kuc2l6ZSByZXR1cm5pbmcgLUluZmluaXR5Jyk7Cit0ZXN0
My5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciB0aGVFcnJvcjsKKyAgICB2YXIgc3RhcnRDYWxs
ZWQgPSBmYWxzZTsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oCisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgICAgICAgICAgYy5lbnF1ZXVlKCdoaScpOworICAgICAgICAgICAgICAgICAg
ICBhc3NlcnRfdW5yZWFjaGVkKCdlbnF1ZXVlIGRpZG5cJ3QgdGhyb3cnKTsKKyAgICAgICAgICAg
ICAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICAgICAgICAgICAgICBzdGFydENhbGxlZCA9
IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXJyb3IuY29uc3RydWN0
b3IsIFJhbmdlRXJyb3IsICdlbnF1ZXVlIHNob3VsZCB0aHJvdyBhIFJhbmdlRXJyb3InKTsKKyAg
ICAgICAgICAgICAgICAgICAgdGhlRXJyb3IgPSBlcnJvcjsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHNpemU6IGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAtSW5maW5pdHk7CisgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgaGlnaFdhdGVyTWFyazogNQorICAgICAgICB9CisgICAgKTsKKwor
ICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaCh0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24o
ZSkgeworICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnY2xvc2VkIHNob3VsZCBy
ZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQp
OworICAgICAgICB0ZXN0My5kb25lKCk7CisgICAgfSkpOworfSk7CisKK3ZhciB0ZXN0NCA9IGFz
eW5jX3Rlc3QoJ1JlYWRhYmxlIHN0cmVhbTogc3RyYXRlZ3kuc2l6ZSByZXR1cm5pbmcgK0luZmlu
aXR5Jyk7Cit0ZXN0NC5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciB0aGVFcnJvcjsKKyAgICB2
YXIgc3RhcnRDYWxsZWQgPSBmYWxzZTsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgYy5lbnF1ZXVlKCdoaScpOworICAgICAg
ICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdlbnF1ZXVlIGRpZG5cJ3QgdGhyb3cnKTsK
KyAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICAgICAgICAgICAgICBz
dGFydENhbGxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXJy
b3IuY29uc3RydWN0b3IsIFJhbmdlRXJyb3IsICdlbnF1ZXVlIHNob3VsZCB0aHJvdyBhIFJhbmdl
RXJyb3InKTsKKyAgICAgICAgICAgICAgICAgICAgdGhlRXJyb3IgPSBlcnJvcjsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHNpemU6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiArSW5maW5pdHk7
CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgaGlnaFdhdGVyTWFyazogNQorICAgICAgICB9
CisgICAgKTsKKworICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaCh0ZXN0NC5zdGVwX2Z1
bmMoZnVuY3Rpb24oZSkgeworICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnY2xv
c2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKKyAgICAgICAgYXNzZXJ0X3RydWUo
c3RhcnRDYWxsZWQpOworICAgICAgICB0ZXN0NC5kb25lKCk7CisgICAgfSkpOworfSk7Cis8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVu
dGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNlcy1l
eHBlY3RlZC50eHQKaW5kZXggMjg0MTlmYTIyNWZiZjY0NDg5YTUzOGM3NGViZWQxZWRiNWIyN2Fh
OS4uNTZjZjkyZGYxNjJjOTkwMDI3OGRmYTc1ZDQxNDVhNGIyMmFhMDA2YSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlp
bmctc291cmNlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50eHQKQEAg
LTcsMTQgKzcsMTAgQEAgUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBnZXR0
ZXIgKHNlY29uZCBwdWxsKQogUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBt
ZXRob2QgKHNlY29uZCBwdWxsKSAKIEZBSUwgVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIGNh
bmNlbCBnZXR0ZXIgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBVbmRlcmx5aW5nIHNv
dXJjZTogdGhyb3dpbmcgY2FuY2VsIG1ldGhvZCBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCi1G
QUlMIFVuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBzdHJhdGVneSBnZXR0ZXIgYXNzZXJ0X3Ro
cm93czogZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhlIGVycm9yIGZ1bmN0aW9uICJmdW5jdGlvbiAo
KSB7IGMuZW5xdWV1ZSgnYScpOyB9IiBkaWQgbm90IHRocm93Ci1GQUlMIFVuZGVybHlpbmcgc291
cmNlOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIGdldHRlciBhc3NlcnRfdGhyb3dzOiBlbnF1ZXVl
IHNob3VsZCB0aHJvdyB0aGUgZXJyb3IgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgYy5lbnF1ZXVl
KCdhJyk7IH0iIGRpZCBub3QgdGhyb3cKLUZBSUwgVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5n
IHN0cmF0ZWd5LnNpemUgbWV0aG9kIGFzc2VydF90aHJvd3M6IGVucXVldWUgc2hvdWxkIHRocm93
IHRoZSBlcnJvciBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyBjLmVucXVldWUoJ2EnKTsgfSIgZGlk
IG5vdCB0aHJvdwotRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgc3RyYXRlZ3kuc2hv
dWxkQXBwbHlCYWNrcHJlc3N1cmUgZ2V0dGVyIGFzc2VydF90aHJvd3M6IGVucXVldWUgc2hvdWxk
IHRocm93IHRoZSBlcnJvciBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyBjLmVucXVldWUoJ2EnKTsg
fSIgZGlkIG5vdCB0aHJvdwotRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgc3RyYXRl
Z3kuc2hvdWxkQXBwbHlCYWNrcHJlc3N1cmUgbWV0aG9kIGFzc2VydF90aHJvd3M6IGVucXVldWUg
c2hvdWxkIHRocm93IHRoZSBlcnJvciBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyBjLmVucXVldWUo
J2EnKTsgfSIgZGlkIG5vdCB0aHJvdwotRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogc3RyYXRlZ3ku
c2l6ZSByZXR1cm5pbmcgTmFOIGFzc2VydF91bnJlYWNoZWQ6IGVucXVldWUgZGlkbid0IHRocm93
IFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQotRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogc3RyYXRl
Z3kuc2l6ZSByZXR1cm5pbmcgLUluZmluaXR5IGFzc2VydF91bnJlYWNoZWQ6IGVucXVldWUgZGlk
bid0IHRocm93IFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQotRkFJTCBVbmRlcmx5aW5nIHNvdXJj
ZTogc3RyYXRlZ3kuc2l6ZSByZXR1cm5pbmcgK0luZmluaXR5IGFzc2VydF91bnJlYWNoZWQ6IGVu
cXVldWUgZGlkbid0IHRocm93IFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBVbmRlcmx5
aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGFuIGVtcHR5IGNhbmNlbGVkIHN0cmVhbSBz
aG91bGQgbm90IHRocm93IGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKK0ZBSUwgVW5kZXJseWlu
ZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIG5vbi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0g
c2hvdWxkIG5vdCB0aHJvdyBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCitQQVNTIFVuZGVybHlp
bmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYSBjbG9zZWQgc3RyZWFtIHNob3VsZCB0aHJv
dyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlcnJvcmVk
IHN0cmVhbSBzaG91bGQgdGhyb3cgCiBQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNs
b3NlIHR3aWNlIG9uIGFuIGVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1l
IAogUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSB0d2ljZSBvbiBhIG5vbi1l
bXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZSAKIEZBSUwgVW5kZXJseWlu
ZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYW4gZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3Vs
ZCBub3QgdGhyb3cgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZApAQCAtMjIsNCArMTgsNiBAQCBG
QUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIG9uIGEgbm9uLWVtcHR5IGNhbmNl
bGVkIHN0cmVhbSBzaG91bGQgbm90CiBQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNs
b3NlIGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdyAKIFBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNh
bGxpbmcgZXJyb3IgdHdpY2Ugc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZSAKIFBBU1MgVW5k
ZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYWZ0ZXIgY2xvc2Ugc2hvdWxkIHRocm93IAor
UEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEgcmVq
ZWN0ZWQgcHJvbWlzZSBmcm9tIHN0YXJ0IHNob3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRvIGVycm9y
IHdpdGggdGhlIGZpcnN0IGVycm9yIAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBl
cnJvciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHB1bGwgc2hvdWxkIGNh
dXNlIHRoZSBzdHJlYW0gdG8gZXJyb3Igd2l0aCB0aGUgZmlyc3QgZXJyb3IgCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRl
cmx5aW5nLXNvdXJjZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxl
bWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuaHRtbAppbmRleCAyM2ZmZDg5MWRkOGE4
NTU5MzdlZTIyOGYwNzY2M2I1ZDA1YmI1YzcyLi4zNWRlZjM4ZTA0ZjJkMjU4NzVlOWE1MzUwZGI0
YTEyNTMzY2NjMzViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNl
cy5odG1sCkBAIC0xNDksMjMxICsxNDksODAgQEAgdGVzdDYuc3RlcChmdW5jdGlvbigpIHsKICAg
ICAgICAgfSkpOwogfSk7CiAKLXZhciB0ZXN0NyA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291
cmNlOiB0aHJvd2luZyBzdHJhdGVneSBnZXR0ZXInLCB7IHRpbWVvdXQ6IDUwIH0pOwordmFyIHRl
c3Q3ID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBh
biBlbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdycpOwogdGVzdDcuc3RlcChm
dW5jdGlvbigpIHsKLSAgICB2YXIgc3RhcnRlZCA9IGZhbHNlOwotICAgIHZhciB0aGVFcnJvciA9
IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7Ci0KKyAgICB2YXIgY29udHJvbGxlcjsKICAg
ICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewogICAgICAgICBzdGFydDogZnVuY3Rpb24o
YykgewotICAgICAgICAgICAgc3RhcnRlZCA9IHRydWU7Ci0gICAgICAgICAgICBhc3NlcnRfdGhy
b3dzKHRoZUVycm9yLCBmdW5jdGlvbigpIHsgYy5lbnF1ZXVlKCdhJyk7IH0sICdlbnF1ZXVlIHNo
b3VsZCB0aHJvdyB0aGUgZXJyb3InKTsKLSAgICAgICAgfSwKLSAgICAgICAgZ2V0IHN0cmF0ZWd5
KCkgewotICAgICAgICAgICAgdGhyb3cgdGhlRXJyb3I7CisgICAgICAgICAgICBjb250cm9sbGVy
ID0gYzsKICAgICAgICAgfQogICAgIH0pOwogCi0gICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLmNh
dGNoKHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAgIGFzc2VydF90cnVlKHN0
YXJ0ZWQpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnY2xvc2VkIHNob3Vs
ZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKLSAgICAgICAgdGVzdDcuZG9uZSgpOworICAgIHJz
LmNhbmNlbCgpOworICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpIC8vIENhbGxpbmcgZW5xdWV1
ZSBhZnRlciBjYW5jZWxpbmcgc2hvdWxkIG5vdCB0aHJvdyBhbnl0aGluZy4KKworICAgIHJzLmdl
dFJlYWRlcigpLmNsb3NlZC50aGVuKHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAg
ICAgdGVzdDcuZG9uZSgnY2xvc2VkIHNob3VsZCBmdWxmaWxsJyk7CiAgICAgfSkpOwogfSk7CiAK
LXZhciB0ZXN0OCA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBzdHJh
dGVneS5zaXplIGdldHRlcicsIHsgdGltZW91dDogNTAgfSk7Cit2YXIgdGVzdDggPSBhc3luY190
ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGEgbm9uLWVtcHR5IGNh
bmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93Jyk7CiB0ZXN0OC5zdGVwKGZ1bmN0aW9uKCkg
ewotICAgIHZhciBzdGFydGVkID0gZmFsc2U7Ci0gICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9y
KCdhIHVuaXF1ZSBzdHJpbmcnKTsKKyAgICB2YXIgY29udHJvbGxlcjsKICAgICB2YXIgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oewogICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAg
ICAgICAgc3RhcnRlZCA9IHRydWU7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKHRoZUVycm9y
LCBmdW5jdGlvbigpIHsgYy5lbnF1ZXVlKCdhJyk7IH0sICdlbnF1ZXVlIHNob3VsZCB0aHJvdyB0
aGUgZXJyb3InKTsKLSAgICAgICAgfSwKLSAgICAgICAgc3RyYXRlZ3k6IHsKLSAgICAgICAgICAg
IGdldCBzaXplKCkgewotICAgICAgICAgICAgICAgIHRocm93IHRoZUVycm9yOwotICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgIHNob3VsZEFwcGx5QmFja3ByZXNzdXJlOiBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGMuZW5xdWV1ZSgnYScpOworICAgICAgICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICAgICAg
ICBjb250cm9sbGVyID0gYzsKICAgICAgICAgfQogICAgIH0pOwogCi0gICAgcnMuZ2V0UmVhZGVy
KCkuY2xvc2VkLmNhdGNoKHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAgIGFz
c2VydF90cnVlKHN0YXJ0ZWQpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAn
Y2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKLSAgICAgICAgdGVzdDguZG9u
ZSgpOworICAgIHJzLmNhbmNlbCgpOworICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpIC8vIENh
bGxpbmcgZW5xdWV1ZSBhZnRlciBjYW5jZWxpbmcgc2hvdWxkIG5vdCB0aHJvdyBhbnl0aGluZy4K
KworICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlv
bigpIHsKKyAgICAgICAgdGVzdDguZG9uZSgnY2xvc2VkIHNob3VsZCBmdWxmaWxsJyk7CiAgICAg
fSkpOwogfSk7CiAKLXZhciB0ZXN0OSA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiB0
aHJvd2luZyBzdHJhdGVneS5zaXplIG1ldGhvZCcsIHsgdGltZW91dDogNTAgfSk7Cit2YXIgdGVz
dDkgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGEg
Y2xvc2VkIHN0cmVhbSBzaG91bGQgdGhyb3cnKTsKIHRlc3Q5LnN0ZXAoZnVuY3Rpb24oKSB7Ci0g
ICAgdmFyIHN0YXJ0ZWQgPSBmYWxzZTsKLSAgICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2Eg
dW5pcXVlIHN0cmluZycpOwotICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAg
bmV3IFJlYWRhYmxlU3RyZWFtKHsKICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAg
ICAgICAgIHN0YXJ0ZWQgPSB0cnVlOwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh0aGVFcnJv
ciwgZnVuY3Rpb24oKSB7IGMuZW5xdWV1ZSgnYScpOyB9LCAnZW5xdWV1ZSBzaG91bGQgdGhyb3cg
dGhlIGVycm9yJyk7Ci0gICAgICAgIH0sCi0gICAgICAgIHN0cmF0ZWd5OiB7Ci0gICAgICAgICAg
ICBzaXplOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICB0aHJvdyB0aGVFcnJvcjsKLSAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICBzaG91bGRBcHBseUJhY2twcmVzc3VyZTogZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9CisgICAg
ICAgICAgICBjLmNsb3NlKCk7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJy
b3IoKSwgZnVuY3Rpb24oKSB7IGMuZW5xdWV1ZSgnYScpIH0sICdjYWxsIHRvIGVucXVldWUgc2hv
dWxkIHRocm93IGEgVHlwZUVycm9yJyk7CiAgICAgICAgIH0KLSAgICB9KTsKLQotICAgIHJzLmdl
dFJlYWRlcigpLmNsb3NlZC5jYXRjaCh0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAg
ICAgICBhc3NlcnRfdHJ1ZShzdGFydGVkKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVF
cnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7Ci0gICAgICAgIHRl
c3Q5LmRvbmUoKTsKKyAgICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQudGhlbih0ZXN0OS5zdGVwX2Z1
bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIHRlc3Q5LmRvbmUoJ2Nsb3NlZCBzaG91bGQgZnVsZmls
bCcpOwogICAgIH0pKTsKIH0pOwogCi12YXIgdGVzdDEwID0gYXN5bmNfdGVzdCgnVW5kZXJseWlu
ZyBzb3VyY2U6IHRocm93aW5nIHN0cmF0ZWd5LnNob3VsZEFwcGx5QmFja3ByZXNzdXJlIGdldHRl
cicsIHsgdGltZW91dDogNTAgfSk7Cit2YXIgdGVzdDEwID0gYXN5bmNfdGVzdCgnVW5kZXJseWlu
ZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlcnJvcmVkIHN0cmVhbSBzaG91bGQgdGhy
b3cnKTsKIHRlc3QxMC5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciBzdGFydGVkID0gZmFsc2U7
Ci0gICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKLSAgICB2
YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHZhciB0aGVFcnJvciA9IG5ldyBFcnJv
cignYm9vJyk7CisgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKICAgICAgICAgc3RhcnQ6IGZ1bmN0
aW9uKGMpIHsKLSAgICAgICAgICAgIHN0YXJ0ZWQgPSB0cnVlOwotICAgICAgICAgICAgYXNzZXJ0
X3Rocm93cyh0aGVFcnJvciwgZnVuY3Rpb24oKSB7IGMuZW5xdWV1ZSgnYScpOyB9LCAnZW5xdWV1
ZSBzaG91bGQgdGhyb3cgdGhlIGVycm9yJyk7Ci0gICAgICAgIH0sCi0gICAgICAgIHN0cmF0ZWd5
OiB7Ci0gICAgICAgICAgICBzaXplOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gMTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBnZXQgc2hvdWxkQXBwbHlCYWNrcHJl
c3N1cmUoKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3cgdGhlRXJyb3I7Ci0gICAgICAgICAgICB9
CisgICAgICAgICAgICBjLmVycm9yKHRoZUVycm9yKTsKKyAgICAgICAgICAgIGFzc2VydF90aHJv
d3ModGhlRXJyb3IsIGZ1bmN0aW9uKCkgeyBjLmVucXVldWUoJ2EnKSB9LCAnY2FsbCB0byBlbnF1
ZXVlIHNob3VsZCB0aHJvdyB0aGUgZXJyb3InKTsKICAgICAgICAgfQotICAgIH0pOwotCi0gICAg
cnMuZ2V0UmVhZGVyKCkuY2xvc2VkLmNhdGNoKHRlc3QxMC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkg
ewotICAgICAgICBhc3NlcnRfdHJ1ZShzdGFydGVkKTsKKyAgICB9KS5nZXRSZWFkZXIoKS5jbG9z
ZWQuY2F0Y2godGVzdDEwLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CiAgICAgICAgIGFzc2VydF9l
cXVhbHMoZSwgdGhlRXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicp
OwogICAgICAgICB0ZXN0MTAuZG9uZSgpOwogICAgIH0pKTsKIH0pOwogCi12YXIgdGVzdDExID0g
YXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHN0cmF0ZWd5LnNob3VsZEFw
cGx5QmFja3ByZXNzdXJlIG1ldGhvZCcsIHsgdGltZW91dDogNTAgfSk7Cit2YXIgdGVzdDExID0g
YXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ugb24gYW4g
ZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUnKTsKIHRlc3QxMS5zdGVw
KGZ1bmN0aW9uKCkgewotICAgIHZhciBzdGFydGVkID0gZmFsc2U7Ci0gICAgdmFyIHRoZUVycm9y
ID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgc3Rh
cnRlZCA9IHRydWU7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKHRoZUVycm9yLCBmdW5jdGlv
bigpIHsgYy5lbnF1ZXVlKCdhJyk7IH0sICdlbnF1ZXVlIHNob3VsZCB0aHJvdyB0aGUgZXJyb3In
KTsKLSAgICAgICAgfSwKLSAgICAgICAgc3RyYXRlZ3k6IHsKLSAgICAgICAgICAgIHNpemU6IGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgIHNob3VsZEFwcGx5QmFja3ByZXNzdXJlOiBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgICAgICB0aHJvdyB0aGVFcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0p
OwotCi0gICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLmNhdGNoKHRlc3QxMS5zdGVwX2Z1bmMoZnVu
Y3Rpb24oZSkgewotICAgICAgICBhc3NlcnRfdHJ1ZShzdGFydGVkKTsKLSAgICAgICAgYXNzZXJ0
X2VxdWFscyhlLCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9y
Jyk7Ci0gICAgICAgIHRlc3QxMS5kb25lKCk7Ci0gICAgfSkpOwotfSk7Ci0KLXZhciB0ZXN0MTIg
PSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogc3RyYXRlZ3kuc2l6ZSByZXR1cm5pbmcg
TmFOJywgeyB0aW1lb3V0OiA1MCB9KTsKLXRlc3QxMi5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZh
ciB0aGVFcnJvciA9IHVuZGVmaW5lZDsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
ewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAg
ICAgICAgICAgICBjLmVucXVldWUoJ2hpJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3VucmVh
Y2hlZCgnZW5xdWV1ZSBkaWRuXCd0IHRocm93Jyk7Ci0gICAgICAgICAgICB9IGNhdGNoIChlcnJv
cikgewotICAgICAgICAgICAgICAgIHRoZUVycm9yID0gZXJyb3I7Ci0gICAgICAgICAgICAgICAg
YXNzZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigpLCBmdW5jdGlvbigpIHsgdGhyb3cgZXJyb3I7
IH0sICdlbnF1ZXVlIHNob3VsZCB0aHJvdyBhIFJhbmdlRXJyb3InKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfSwKLSAgICAgICAgc3RyYXRlZ3k6IHsKLSAgICAgICAgICAgIHNpemU6IGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgICAgIHJldHVybiBOYU47Ci0gICAgICAgICAgICB9LAotICAg
ICAgICAgICAgc2hvdWxkQXBwbHlCYWNrcHJlc3N1cmU6IGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSk7Ci0K
LSAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQuY2F0Y2godGVzdDEyLnN0ZXBfZnVuYyhmdW5jdGlv
bihlKSB7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdjbG9zZWQgc2hvdWxk
IHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOwotICAgICAgICB0ZXN0MTIuZG9uZSgpOwotICAgIH0p
KTsKLX0pOwotCi12YXIgdGVzdDEzID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IHN0
cmF0ZWd5LnNpemUgcmV0dXJuaW5nIC1JbmZpbml0eScsIHsgdGltZW91dDogNTAgfSk7Ci10ZXN0
MTMuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgdGhlRXJyb3IgPSB1bmRlZmluZWQ7Ci0gICAg
dmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMp
IHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgYy5lbnF1ZXVlKCdoaScpOwot
ICAgICAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ2VucXVldWUgZGlkblwndCB0aHJvdycp
OwotICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKLSAgICAgICAgICAgICAgICB0aGVFcnJv
ciA9IGVycm9yOwotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJyb3Io
KSwgZnVuY3Rpb24oKSB7IHRocm93IGVycm9yOyB9LCAnZW5xdWV1ZSBzaG91bGQgdGhyb3cgYSBS
YW5nZUVycm9yJyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgIHN0cmF0ZWd5
OiB7Ci0gICAgICAgICAgICBzaXplOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gLUluZmluaXR5OwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHNob3VsZEFwcGx5QmFj
a3ByZXNzdXJlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgcnMuZ2V0UmVhZGVyKCkuY2xv
c2VkLmNhdGNoKHRlc3QxMy5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAgICBhc3NlcnRf
ZXF1YWxzKGUsIHRoZUVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3In
KTsKLSAgICAgICAgdGVzdDEzLmRvbmUoKTsKLSAgICB9KSk7Ci19KTsKLQotdmFyIHRlc3QxNCA9
IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiBzdHJhdGVneS5zaXplIHJldHVybmluZyAr
SW5maW5pdHknLCB7IHRpbWVvdXQ6IDUwIH0pOwotdGVzdDE0LnN0ZXAoZnVuY3Rpb24oKSB7Ci0g
ICAgdmFyIHRoZUVycm9yID0gdW5kZWZpbmVkOwotICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICB0cnkgewot
ICAgICAgICAgICAgICAgIGMuZW5xdWV1ZSgnaGknKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRf
dW5yZWFjaGVkKCdlbnF1ZXVlIGRpZG5cJ3QgdGhyb3cnKTsKLSAgICAgICAgICAgIH0gY2F0Y2gg
KGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgdGhlRXJyb3IgPSBlcnJvcjsKLSAgICAgICAgICAg
ICAgICBhc3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCksIGZ1bmN0aW9uKCkgeyB0aHJvdyBl
cnJvcjsgfSwgJ2VucXVldWUgc2hvdWxkIHRocm93IGEgUmFuZ2VFcnJvcicpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9LAotICAgICAgICBzdHJhdGVneTogewotICAgICAgICAgICAgc2l6ZTog
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICtJbmZpbml0eTsKLSAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICBzaG91bGRBcHBseUJhY2twcmVzc3VyZTogZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9KTsKLQotICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaCh0ZXN0MTQuc3RlcF9m
dW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2Ns
b3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7Ci0gICAgICAgIHRlc3QxNC5kb25l
KCk7Ci0gICAgfSkpOwotfSk7Ci0KLXZhciB0ZXN0MTUgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5n
IHNvdXJjZTogY2FsbGluZyBjbG9zZSB0d2ljZSBvbiBhbiBlbXB0eSBzdHJlYW0gc2hvdWxkIHRo
cm93IHRoZSBzZWNvbmQgdGltZScpOwotdGVzdDE1LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgbmV3
IFJlYWRhYmxlU3RyZWFtKHsKICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKICAgICAgICAg
ICAgIGMuY2xvc2UoKTsKICAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigp
LCBjLmNsb3NlLCAnc2Vjb25kIGNhbGwgdG8gY2xvc2Ugc2hvdWxkIHRocm93IGEgVHlwZUVycm9y
Jyk7CiAgICAgICAgIH0KLSAgICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQudGhlbih0ZXN0MTUuc3Rl
cF9mdW5jKGZ1bmN0aW9uKCkgeyB0ZXN0MTUuZG9uZSgnY2xvc2VkIHNob3VsZCBmdWxmaWxsJyk7
IH0pKTsKKyAgICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQudGhlbih0ZXN0MTEuc3RlcF9mdW5jKGZ1
bmN0aW9uKCkgeyB0ZXN0MTEuZG9uZSgnY2xvc2VkIHNob3VsZCBmdWxmaWxsJyk7IH0pKTsKIH0p
OwogCi12YXIgdGVzdDE2ID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcg
Y2xvc2UgdHdpY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25k
IHRpbWUnKTsKLXRlc3QxNi5zdGVwKGZ1bmN0aW9uKCkgewordmFyIHRlc3QxMiA9IGFzeW5jX3Rl
c3QoJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGEgbm9uLWVtcHR5
IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lJyk7Cit0ZXN0MTIuc3RlcChmdW5j
dGlvbigpIHsKICAgICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxzZTsKICAgICB2YXIgcmVhZENhbGxl
ZCA9IGZhbHNlOwogICAgIHZhciByZWFkZXIgPSBuZXcgUmVhZGFibGVTdHJlYW0oewpAQCAtMzg1
LDE5ICsyMzQsMTkgQEAgdGVzdDE2LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgIH0KICAgICB9
KS5nZXRSZWFkZXIoKTsKIAotICAgIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MTYuc3RlcF9mdW5j
KGZ1bmN0aW9uKHIpIHsKKyAgICByZWFkZXIucmVhZCgpLnRoZW4odGVzdDEyLnN0ZXBfZnVuYyhm
dW5jdGlvbihyKSB7CiAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdh
JywgZG9uZTogZmFsc2UgfSwgJ3JlYWQoKSBzaG91bGQgcmVhZCB0aGUgZW5xdWV1ZWQgY2h1bmsn
KTsKICAgICAgICAgcmVhZENhbGxlZCA9IHRydWU7CiAgICAgfSkpOwotICAgIHJlYWRlci5jbG9z
ZWQudGhlbih0ZXN0MTYuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgIHJlYWRlci5jbG9zZWQu
dGhlbih0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewogICAgICAgICBhc3NlcnRfdHJ1ZShz
dGFydENhbGxlZCk7CiAgICAgICAgIGFzc2VydF90cnVlKHJlYWRDYWxsZWQpOwotICAgICAgICB0
ZXN0MTYuZG9uZSgnY2xvc2VkIHNob3VsZCBmdWxmaWxsJyk7CisgICAgICAgIHRlc3QxMi5kb25l
KCdjbG9zZWQgc2hvdWxkIGZ1bGZpbGwnKTsKICAgICB9KSk7CiB9KTsKIAotdmFyIHRlc3QxNyA9
IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIG9uIGFuIGVtcHR5
IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93Jyk7Ci10ZXN0MTcuc3RlcChmdW5jdGlv
bigpIHsKK3ZhciB0ZXN0MTMgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGlu
ZyBjbG9zZSBvbiBhbiBlbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdycpOwor
dGVzdDEzLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIGNvbnRyb2xsZXI7CiAgICAgdmFyIHN0
YXJ0Q2FsbGVkID0gZmFsc2U7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKQEAg
LTQxMCwxNCArMjU5LDE0IEBAIHRlc3QxNy5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHJzLmNhbmNl
bCgpOwogICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsgLy8gQ2FsbGluZyBjbG9zZSBhZnRlciBjYW5j
ZWxpbmcgc2hvdWxkIG5vdCB0aHJvdyBhbnl0aGluZy4KIAotICAgIHJzLmdldFJlYWRlcigpLmNs
b3NlZC50aGVuKHRlc3QxNy5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgcnMuZ2V0UmVhZGVy
KCkuY2xvc2VkLnRoZW4odGVzdDEzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKICAgICAgICAgYXNz
ZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwotICAgICAgICB0ZXN0MTcuZG9uZSgnY2xvc2VkIHNob3Vs
ZCBmdWxmaWxsJyk7CisgICAgICAgIHRlc3QxMy5kb25lKCdjbG9zZWQgc2hvdWxkIGZ1bGZpbGwn
KTsKICAgICB9KSk7CiB9KTsKIAotdmFyIHRlc3QxOCA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcg
c291cmNlOiBjYWxsaW5nIGNsb3NlIG9uIGEgbm9uLWVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91
bGQgbm90IHRocm93Jyk7Ci10ZXN0MTguc3RlcChmdW5jdGlvbigpIHsKK3ZhciB0ZXN0MTQgPSBh
c3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBvbiBhIG5vbi1lbXB0
eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdycpOwordGVzdDE0LnN0ZXAoZnVuY3Rp
b24oKSB7CiAgICAgdmFyIGNvbnRyb2xsZXI7CiAgICAgdmFyIHN0YXJ0Q2FsbGVkID0gZmFsc2U7
CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKQEAgLTQzMSwxNCArMjgwLDE0IEBA
IHRlc3QxOC5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHJzLmNhbmNlbCgpOwogICAgIGNvbnRyb2xs
ZXIuY2xvc2UoKTsgLy8gQ2FsbGluZyBjbG9zZSBhZnRlciBjYW5jZWxpbmcgc2hvdWxkIG5vdCB0
aHJvdyBhbnl0aGluZy4KIAotICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKHRlc3QxOC5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4odGVz
dDE0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKICAgICAgICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxs
ZWQpOwotICAgICAgICB0ZXN0MTguZG9uZSgnY2xvc2VkIHNob3VsZCBmdWxmaWxsJyk7CisgICAg
ICAgIHRlc3QxNC5kb25lKCdjbG9zZWQgc2hvdWxkIGZ1bGZpbGwnKTsKICAgICB9KSk7CiB9KTsK
IAotdmFyIHRlc3QxOSA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNs
b3NlIGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdycpOwotdGVzdDE5LnN0ZXAoZnVuY3Rpb24oKSB7
Cit2YXIgdGVzdDE1ID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xv
c2UgYWZ0ZXIgZXJyb3Igc2hvdWxkIHRocm93Jyk7Cit0ZXN0MTUuc3RlcChmdW5jdGlvbigpIHsK
ICAgICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2JvbycpOwogICAgIHZhciBzdGFydENhbGxl
ZCA9IGZhbHNlOwogICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7CkBAIC00NDcsMTUgKzI5NiwxNSBA
QCB0ZXN0MTkuc3RlcChmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigpLCBjLmNsb3NlLCAnY2FsbCB0byBjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBl
RXJyb3InKTsKICAgICAgICAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKICAgICAgICAgfQotICAg
IH0pLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaCh0ZXN0MTkuc3RlcF9mdW5jKGZ1bmN0aW9uKGUp
IHsKKyAgICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQuY2F0Y2godGVzdDE1LnN0ZXBfZnVuYyhmdW5j
dGlvbihlKSB7CiAgICAgICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVy
cm9yJykKLSAgICAgICAgdGVzdDE5LmRvbmUoKTsKKyAgICAgICAgdGVzdDE1LmRvbmUoKTsKICAg
ICB9KSk7CiB9KTsKIAotdmFyIHRlc3QyMCA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNl
OiBjYWxsaW5nIGVycm9yIHR3aWNlIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUnKTsKLXRl
c3QyMC5zdGVwKGZ1bmN0aW9uKCkgewordmFyIHRlc3QxNiA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlp
bmcgc291cmNlOiBjYWxsaW5nIGVycm9yIHR3aWNlIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRp
bWUnKTsKK3Rlc3QxNi5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciB0aGVFcnJvciA9IG5ldyBF
cnJvcignYm9vJyk7CiAgICAgdmFyIHN0YXJ0Q2FsbGVkID0gZmFsc2U7CiAgICAgbmV3IFJlYWRh
YmxlU3RyZWFtKHsKQEAgLTQ2NCwxNSArMzEzLDE1IEBAIHRlc3QyMC5zdGVwKGZ1bmN0aW9uKCkg
ewogICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGMuZXJyb3IsICdz
ZWNvbmQgY2FsbCB0byBlcnJvciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKICAgICAgICAg
ICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKICAgICAgICAgfQotICAgIH0pLmdldFJlYWRlcigpLmNs
b3NlZC5jYXRjaCh0ZXN0MjAuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKKyAgICB9KS5nZXRSZWFk
ZXIoKS5jbG9zZWQuY2F0Y2godGVzdDE2LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CiAgICAgICAg
IGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVF
cnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7Ci0gICAgICAgIHRl
c3QyMC5kb25lKCk7CisgICAgICAgIHRlc3QxNi5kb25lKCk7CiAgICAgfSkpOwogfSk7CiAKLXZh
ciB0ZXN0MjEgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBh
ZnRlciBjbG9zZSBzaG91bGQgdGhyb3cnKTsKLXRlc3QyMS5zdGVwKGZ1bmN0aW9uKCkgewordmFy
IHRlc3QxNyA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIGFm
dGVyIGNsb3NlIHNob3VsZCB0aHJvdycpOwordGVzdDE3LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAg
dmFyIHN0YXJ0Q2FsbGVkID0gZmFsc2U7CiAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKICAgICAg
ICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKQEAgLTQ4MCw5ICszMjksNDkgQEAgdGVzdDIxLnN0ZXAo
ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwg
Yy5lcnJvciwgJ2NhbGwgdG8gZXJyb3Igc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7CiAgICAg
ICAgICAgICBzdGFydENhbGxlZCA9IHRydWU7CiAgICAgICAgIH0KLSAgICB9KS5nZXRSZWFkZXIo
KS5jbG9zZWQudGhlbih0ZXN0MjEuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgIH0pLmdldFJl
YWRlcigpLmNsb3NlZC50aGVuKHRlc3QxNy5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CiAgICAgICAg
IGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKLSAgICAgICAgdGVzdDIxLmRvbmUoJ2Nsb3NlZCBz
aG91bGQgZnVsZmlsbCcpOworICAgICAgICB0ZXN0MTcuZG9uZSgnY2xvc2VkIHNob3VsZCBmdWxm
aWxsJyk7CisgICAgfSkpOworfSk7CisKK3ZhciB0ZXN0MTggPSBhc3luY190ZXN0KCdVbmRlcmx5
aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlz
ZSBmcm9tIHN0YXJ0IHNob3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRvIGVycm9yIHdpdGggdGhlIGZp
cnN0IGVycm9yJyk7Cit0ZXN0MTguc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgc3RhcnRDYWxs
ZWQgPSBmYWxzZTsKKyAgICB2YXIgZmlyc3RFcnJvciA9IG5ldyBFcnJvcignMScpOworICAgIHZh
ciBzZWNvbmRFcnJvciA9IG5ldyBFcnJvcignMicpOworICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7
CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAgICBjLmVycm9yKGZpcnN0
RXJyb3IpOworCisgICAgICAgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisKKyAgICAgICAgICAg
IHJldHVybiBQcm9taXNlLnJlamVjdChzZWNvbmRFcnJvcik7CisgICAgICAgIH0KKyAgICB9KS5n
ZXRSZWFkZXIoKS5jbG9zZWQuY2F0Y2godGVzdDE4LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Cisg
ICAgICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhl
LCBmaXJzdEVycm9yLCAnc3RyZWFtIHNob3VsZCBlcnJvciB3aXRoIHRoZSBmaXJzdCBlcnJvcicp
OworICAgICAgICB0ZXN0MTguZG9uZSgpOworICAgIH0pKTsKK30pOworCit2YXIgdGVzdDE5ID0g
YXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYW5kIHJldHVybmlu
ZyBhIHJlamVjdGVkIHByb21pc2UgZnJvbSBwdWxsIHNob3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRv
IGVycm9yIHdpdGggdGhlIGZpcnN0IGVycm9yJyk7Cit0ZXN0MTkuc3RlcChmdW5jdGlvbigpIHsK
KyAgICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxzZTsKKyAgICB2YXIgZmlyc3RFcnJvciA9IG5ldyBF
cnJvcignMScpOworICAgIHZhciBzZWNvbmRFcnJvciA9IG5ldyBFcnJvcignMicpOworICAgIG5l
dyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHB1bGw6IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAg
ICAgIGMuZXJyb3IoZmlyc3RFcnJvcik7CisKKyAgICAgICAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1
ZTsKKworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHNlY29uZEVycm9yKTsKKyAg
ICAgICAgfQorICAgIH0pLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaCh0ZXN0MTkuc3RlcF9mdW5j
KGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworICAgICAg
ICBhc3NlcnRfZXF1YWxzKGUsIGZpcnN0RXJyb3IsICdzdHJlYW0gc2hvdWxkIGVycm9yIHdpdGgg
dGhlIGZpcnN0IGVycm9yJyk7CisgICAgICAgIHRlc3QxOS5kb25lKCk7CiAgICAgfSkpOwogfSk7
CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWlt
cGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9icmFuZC1jaGVja3MtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGU1ZTdmM2YzM2I5YzI0YmViMzNiNWNhYmM3MjY0MTUyM2Y1OWM3YmEuLmVmNDlmNGIxZDFl
MDhiMzJhNWUwNDZlZjZjNzY4ZWRhMGFhOWY1NDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYnJhbmQt
Y2hlY2tzLWV4cGVjdGVkLnR4dApAQCAtMSwxOCArMSwxOCBAQAogCiBQQVNTIENhbiBnZXQgdGhl
IFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgCiBQQVNTIENhbiBn
ZXQgdGhlIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5IAor
RkFJTCBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggd29ya3MgZ2VuZXJpY2Fs
bHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMgQ2FuIG9ubHkgY2FsbCBSZWFkYWJsZVN0
cmVhbS5waXBlVGhyb3VnaCBvbiBpbnN0YW5jZXMgb2YgUmVhZGFibGVTdHJlYW0KIFBBU1MgUmVh
ZGFibGVTdHJlYW1SZWFkZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBvbiBpdHMgYXJndW1lbnQg
CiBGQUlMIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5jbG9zZWQgZW5mb3JjZXMgYSBi
cmFuZCBjaGVjayB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGdldHRlck5hbWUpLmdldCcpCiBGQUlMIFJl
YWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5jYW5jZWwgZW5mb3JjZXMgYSBicmFuZCBjaGVj
ayBDYW4gb25seSBjYWxsIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmNhbmNlbCBvbiBpbnN0YW5jZXMg
b2YgUmVhZGFibGVTdHJlYW1SZWFkZXIKIEZBSUwgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90
eXBlLnJlYWQgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBDYW4gb25seSBjYWxsIFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyLnJlYWQgb24gaW5zdGFuY2VzIG9mIFJlYWRhYmxlU3RyZWFtUmVhZGVyCitGQUlM
IFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5yZWFkIGVuZm9yY2VzIGEgYnJhbmQgY2hl
Y2sgQ2FuIG9ubHkgY2FsbCBSZWFkYWJsZVN0cmVhbVJlYWRlci5yZWFkIG9uIGluc3RhbmNlcyBv
ZiBSZWFkYWJsZVN0cmVhbVJlYWRlcgogUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5
cGUucmVsZWFzZUxvY2sgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKIFBBU1MgUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50IAogUEFT
UyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgY2FuJ3QgYmUgZ2l2ZW4gYSBmdWxseS1jb25zdHJ1
Y3RlZCBSZWFkYWJsZVN0cmVhbSAKIFBBU1MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3Rv
dHlwZS5jbG9zZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAogUEFTUyBSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIucHJvdG90eXBlLmVucXVldWUgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKIFBBU1Mg
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5lcnJvciBlbmZvcmNlcyBhIGJyYW5k
IGNoZWNrIAotUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaG91bGRB
cHBseUJhY2twcmVzc3VyZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAogUEFTUyBCeXRlTGVuZ3Ro
UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplIHNob3VsZCB3b3JrIGdlbmVyaWNhbGx5IG9u
IGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzIAotUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneS5w
cm90b3R5cGUuc2hvdWxkQXBwbHlCYWNrcHJlc3N1cmUgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAK
IFBBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUgc2hvdWxkIHdvcmsgZ2Vu
ZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMgCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYnJhbmQt
Y2hlY2tzLmh0bWwKaW5kZXggOWNiZjExZDI2NjZiYWU1ODdlNjllMGU2NmVjMDNjYTBlY2MyMjk4
NC4uMTk3YjhhNmNjZDUwZWE5NmJjZjA1ZjM2MzM4MmQ1MzI3Nzg5NTNkMyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYnJhbmQtY2hlY2tz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24v
YnJhbmQtY2hlY2tzLmh0bWwKQEAgLTI1LDkgKzI1LDEwIEBAIHRlc3QoZnVuY3Rpb24oKSB7CiBm
dW5jdGlvbiBmYWtlUmVhZGFibGVTdHJlYW0oKSB7CiAgICAgcmV0dXJuIHsKICAgICAgICAgY2Fu
Y2VsOiBmdW5jdGlvbihyZWFzb24pIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOyB9LAorICAg
ICAgICBnZXRSZWFkZXI6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKG5l
dyBSZWFkYWJsZVN0cmVhbSgpKTsgfSwKICAgICAgICAgcGlwZVRocm91Z2g6IGZ1bmN0aW9uKG9i
aiwgb3B0aW9ucykgeyByZXR1cm4gb2JqLnJlYWRhYmxlOyB9LAogICAgICAgICBwaXBlVG86IGZ1
bmN0aW9uKCkgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7IH0sCi0gICAgICAgIGdldFJlYWRl
cjogZnVuY3Rpb24oKSB7IHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0obmV3IFJlYWRhYmxlU3Ry
ZWFtKCkpOyB9CisgICAgICAgIHRlZTogZnVuY3Rpb24oKSB7IHJldHVybiBbcmVhbFJlYWRhYmxl
U3RyZWFtKCksIHJlYWxSZWFkYWJsZVN0cmVhbSgpXTsgfQogICAgIH07CiB9CiAKQEAgLTU0LDkg
KzU1LDcgQEAgZnVuY3Rpb24gZmFrZVJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcigpIHsKIAogZnVu
Y3Rpb24gZmFrZUJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koKSB7CiAgICAgcmV0dXJuIHsKLSAg
ICAgICAgc2hvdWxkQXBwbHlCYWNrcHJlc3N1cmU6IGZ1bmN0aW9uKHF1ZXVlU2l6ZSkgewotICAg
ICAgICAgICAgcmV0dXJuIHF1ZXVlU2l6ZSA+IDE7Ci0gICAgICAgIH0sCisgICAgICAgIGhpZ2hX
YXRlck1hcms6IDAsCiAgICAgICAgIHNpemU6IGZ1bmN0aW9uKGNodW5rKSB7CiAgICAgICAgICAg
ICByZXR1cm4gY2h1bmsuYnl0ZUxlbmd0aDsKICAgICAgICAgfQpAQCAtNjQsMjIgKzYzLDIwIEBA
IGZ1bmN0aW9uIGZha2VCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KCkgewogfQogCiBmdW5jdGlv
biByZWFsQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSgpIHsKLSAgICByZXR1cm4gbmV3IEJ5dGVM
ZW5ndGhRdWV1aW5nU3RyYXRlZ3koeyAiaGlnaFdhdGVyTWFyayI6IDF9KTsKKyAgICByZXR1cm4g
bmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAxIH0pOwogfQog
CiBmdW5jdGlvbiBmYWtlQ291bnRRdWV1aW5nU3RyYXRlZ3koKSB7CiAgICAgcmV0dXJuIHsKLSAg
ICAgICAgc2hvdWxkQXBwbHlCYWNrcHJlc3N1cmU6IGZ1bmN0aW9uKHF1ZXVlU2l6ZSkgewotICAg
ICAgICAgICAgcmV0dXJuIHF1ZXVlU2l6ZSA+IDE7Ci0gICAgICAgIH0sCisgICAgICAgIGhpZ2hX
YXRlck1hcms6IDAsCiAgICAgICAgIHNpemU6IGZ1bmN0aW9uKGNodW5rKSB7CiAgICAgICAgICAg
ICByZXR1cm4gMTsKICAgICAgICAgfQotICAgIH07CisgICAgfQogfQogCiBmdW5jdGlvbiByZWFs
Q291bnRRdWV1aW5nU3RyYXRlZ3koKSB7Ci0gICAgcmV0dXJuIG5ldyBDb3VudFF1ZXVpbmdTdHJh
dGVneSh7ICJoaWdoV2F0ZXJNYXJrIjogMX0pOworICAgIHJldHVybiBuZXcgQ291bnRRdWV1aW5n
U3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAxIH0pOwogfQogCiBmdW5jdGlvbiBnZXR0ZXJSZWpl
Y3RzKHRlc3QsIG9iaiwgZ2V0dGVyTmFtZSwgdGFyZ2V0LCBlbmRUZXN0KSB7CkBAIC0xMTUsNiAr
MTEyLDIyIEBAIGZ1bmN0aW9uIG1ldGhvZFRocm93cyhvYmosIG1ldGhvZE5hbWUsIHRhcmdldCkg
ewogfQogCiB0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHZhciBwaXBlVG9Bcmd1bWVudHM7CisgICAg
dmFyIHRoaXNWYWx1ZSA9IHsKKyAgICAgICAgcGlwZVRvOiBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIHBpcGVUb0FyZ3VtZW50cyA9IGFyZ3VtZW50czsKKyAgICAgICAgfQorICAgIH07CisKKyAg
ICB2YXIgaW5wdXQgPSB7IHJlYWRhYmxlOiB7fSwgd3JpdGFibGU6IHt9IH07CisgICAgdmFyIG9w
dGlvbnMgPSB7fTsKKyAgICB2YXIgcmVzdWx0ID0gUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBp
cGVUaHJvdWdoLmNhbGwodGhpc1ZhbHVlLCBpbnB1dCwgb3B0aW9ucyk7CisKKyAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKHBpcGVUb0FyZ3VtZW50cywgW2lucHV0LndyaXRhYmxlLCBvcHRpb25zXSwg
J2NvcnJlY3QgYXJndW1lbnRzIHNob3VsZCBiZSBwYXNzZWQgdG8gdGhpc1ZhbHVlLnBpcGVUbycp
OworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBpbnB1dC5yZWFkYWJsZSwgJ3JldHVybiB2YWx1
ZSBzaG91bGQgYmUgdGhlIHBhc3NlZCByZWFkYWJsZSBwcm9wZXJ0eScpOworfSwgJ1JlYWRhYmxl
U3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCB3b3JrcyBnZW5lcmljYWxseSBvbiBpdHMgdGhp
cyBhbmQgaXRzIGFyZ3VtZW50cycpOworCit0ZXN0KGZ1bmN0aW9uKCkgewogICAgIGFzc2VydF90
aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgbmV3IFJlYWRhYmxlU3RyZWFtUmVh
ZGVyKGZha2VSZWFkYWJsZVN0cmVhbSgpKTsgfSwgJ0NvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyIHNob3VsZCB0aHJvdycpOwogfSwgJ1JlYWRhYmxlU3RyZWFtUmVhZGVyIGVuZm9y
Y2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50Jyk7CiAKQEAgLTEzNiw2ICsxNDksMTIg
QEAgdGVzdDMuc3RlcChmdW5jdGlvbigpIHsKICAgICBtZXRob2RSZWplY3RzKHRlc3QzLCBSZWFk
YWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUsICdyZWFkJywgcmVhbFJlYWRhYmxlU3RyZWFtKCks
IHRydWUpOwogfSk7CiAKK3ZhciB0ZXN0NCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtUmVh
ZGVyLnByb3RvdHlwZS5yZWFkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKK3Rlc3Q0LnN0ZXAo
ZnVuY3Rpb24oKSB7CisgICAgbWV0aG9kUmVqZWN0cyh0ZXN0NCwgUmVhZGFibGVTdHJlYW1SZWFk
ZXIucHJvdG90eXBlLCAncmVhZCcsIGZha2VSZWFkYWJsZVN0cmVhbVJlYWRlcigpKTsKKyAgICBt
ZXRob2RSZWplY3RzKHRlc3Q0LCBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUsICdyZWFk
JywgcmVhbFJlYWRhYmxlU3RyZWFtKCksIHRydWUpOworfSk7CisKIHRlc3QoZnVuY3Rpb24oKSB7
CiAgICAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZSwgJ3JlbGVh
c2VMb2NrJywgZmFrZVJlYWRhYmxlU3RyZWFtUmVhZGVyKCkpOwogICAgIG1ldGhvZFRocm93cyhS
ZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUsICdyZWxlYXNlTG9jaycsIHJlYWxSZWFkYWJs
ZVN0cmVhbSgpKTsKQEAgLTE2MiwxMSArMTgxLDYgQEAgdGVzdChmdW5jdGlvbigpIHsKIH0sICdS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmVycm9yIGVuZm9yY2VzIGEgYnJhbmQg
Y2hlY2snKTsKIAogdGVzdChmdW5jdGlvbigpIHsKLSAgICBtZXRob2RUaHJvd3MoQnl0ZUxlbmd0
aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUsICdzaG91bGRBcHBseUJhY2twcmVzc3VyZScsIGZh
a2VCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KCkpOwotICAgIG1ldGhvZFRocm93cyhCeXRlTGVu
Z3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZSwgJ3Nob3VsZEFwcGx5QmFja3ByZXNzdXJlJywg
cmVhbENvdW50UXVldWluZ1N0cmF0ZWd5KCkpOwotfSwgJ0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRl
Z3kucHJvdG90eXBlLnNob3VsZEFwcGx5QmFja3ByZXNzdXJlIGVuZm9yY2VzIGEgYnJhbmQgY2hl
Y2snKTsKLQotdGVzdChmdW5jdGlvbigpIHsKICAgICB2YXIgdGhpc1ZhbHVlID0gbnVsbDsKICAg
ICB2YXIgcmV0dXJuVmFsdWUgPSB7ICdyZXR1cm5lZCBmcm9tJzogJ2J5dGVMZW5ndGggZ2V0dGVy
JyB9OwogICAgIHZhciBjaHVuayA9IHsKQEAgLTE3OSwxMSArMTkzLDYgQEAgdGVzdChmdW5jdGlv
bigpIHsKIH0sICdCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplIHNob3Vs
ZCB3b3JrIGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzJyk7CiAKIHRl
c3QoZnVuY3Rpb24oKSB7Ci0gICAgbWV0aG9kVGhyb3dzKENvdW50UXVldWluZ1N0cmF0ZWd5LnBy
b3RvdHlwZSwgJ3Nob3VsZEFwcGx5QmFja3ByZXNzdXJlJywgZmFrZUNvdW50UXVldWluZ1N0cmF0
ZWd5KCkpOwotICAgIG1ldGhvZFRocm93cyhDb3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUs
ICdzaG91bGRBcHBseUJhY2twcmVzc3VyZScsIHJlYWxCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5
KCkpOwotfSwgJ0NvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaG91bGRBcHBseUJhY2tw
cmVzc3VyZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7CiAg
ICAgdmFyIHRoaXNWYWx1ZSA9IG51bGw7CiAgICAgdmFyIGNodW5rID0gewogICAgICAgICBnZXQg
Ynl0ZUxlbmd0aCgpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNl
LWltcGxlbWVudGF0aW9uL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYnl0ZS1sZW5n
dGgtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRhMmRmNTQxZDU0
OTlhY2M2YjNlNjRlNTgwMGI5OWMwZTBhMjExYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2J5dGUtbGVuZ3RoLXF1ZXVpbmct
c3RyYXRlZ3ktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorCitQQVNTIENhbiBjb25zdHJ1
Y3QgYSBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1h
cmsgCitQQVNTIENhbiBjb25zdHJ1Y3QgYSBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IHdpdGgg
YW55IHZhbHVlIGFzIGl0cyBoaWdoIHdhdGVyIG1hcmsgCitQQVNTIEJ5dGVMZW5ndGhRdWV1aW5n
U3RyYXRlZ3kgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgcHJvcGVydGllcyAKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYnl0ZS1s
ZW5ndGgtcXVldWluZy1zdHJhdGVneS5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmUzMDU5MWZhZjQ1MmExNDIxMjA5MmM3ZWRiYjUxNzI3ZmUzNzczNGIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9i
eXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPCFET0NU
WVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0nLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJz48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMnPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9J3Jlc291cmNlcy9zdHJlYW1zLXV0aWxzLmpzJz48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSdyZXNvdXJjZXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJh
dGVneS5qcyc+PC9zY3JpcHQ+Cis8c2NyaXB0PgordGVzdChmdW5jdGlvbigpIHsKKyAgICB2YXIg
c3RyYXRlZ3kgPSBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6
IDQgfSk7Cit9LCAnQ2FuIGNvbnN0cnVjdCBhIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgd2l0
aCBhIHZhbGlkIGhpZ2ggd2F0ZXIgbWFyaycpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGZv
ciAodmFyIGhpZ2hXYXRlck1hcmsgb2YgWy1JbmZpbml0eSwgTmFOLCAnZm9vJywge30sIGZ1bmN0
aW9uICgpIHt9XSkgeworICAgICAgICB2YXIgc3RyYXRlZ3kgPSBuZXcgQnl0ZUxlbmd0aFF1ZXVp
bmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcmsgfSk7CisgICAgICAgIGFzc2VydF90cnVlKE9iamVj
dC5pcyhzdHJhdGVneS5oaWdoV2F0ZXJNYXJrLCBoaWdoV2F0ZXJNYXJrKSwgaGlnaFdhdGVyTWFy
ayArICcgZ2V0cyBzZXQgY29ycmVjdGx5Jyk7CisgICAgfQorfSwgJ0NhbiBjb25zdHJ1Y3QgYSBC
eXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IHdpdGggYW55IHZhbHVlIGFzIGl0cyBoaWdoIHdhdGVy
IG1hcmsnKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB2YXIgc3RyYXRlZ3kgPSBuZXcgQnl0
ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSk7CisKKyAgICBhc3Nl
cnRfb2JqZWN0X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHN0cmF0ZWd5
LCAnaGlnaFdhdGVyTWFyaycpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IDQs
IHdyaXRhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAnaGlnaFdhdGVyTWFyayBwcm9wZXJ0eSBzaG91bGQg
YmUgYSBkYXRhIHByb3BlcnR5IHdpdGggdGhlIHZhbHVlIHBhc3NlZCB0aGUgY29ubnN0cnVjdG9y
Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Ygc3RyYXRlZ3kuc2l6ZSwgJ2Z1bmN0aW9uJyk7
Cit9LCAnQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVj
dCBwcm9wZXJ0aWVzJyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVh
bXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vY291
bnQtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQKaW5kZXggYjliYjczNTBiZDg4N2M3NGEy
MjExOWQ1NTcxOWM4MDZlYmYxNzUzYy4uMmZhZWY2ZTYzNDQ0ZDVkMjU2YTViYTE5YzBiZmY0NzJl
ZmY0Y2M3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJh
dGVneS1leHBlY3RlZC50eHQKQEAgLTEsOCArMSw5IEBACiAKIFBBU1MgQ2FuIGNvbnN0cnVjdCBh
IENvdW50UXVldWluZ1N0cmF0ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsgCi1QQVNT
IEdpdmVzIGEgUmFuZ2VFcnJvciB3aGVuIHRoZSBudW1iZXIgaXMgbmVnYXRpdmUgCitQQVNTIENh
biBjb25zdHJ1Y3QgYSBDb3VudFF1ZXVpbmdTdHJhdGVneSB3aXRoIGFueSB2YWx1ZSBhcyBpdHMg
aGlnaCB3YXRlciBtYXJrIAorUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneSBpbnN0YW5jZXMgaGF2
ZSB0aGUgY29ycmVjdCBwcm9wZXJ0aWVzIAogUEFTUyBDYW4gY29uc3RydWN0IGEgcmVhZGFibGUg
c3RyZWFtIHdpdGggYSB2YWxpZCBDb3VudFF1ZXVpbmdTdHJhdGVneSAKLUZBSUwgQ29ycmVjdGx5
IGdvdmVybnMgdGhlIHJldHVybiB2YWx1ZSBvZiBhIFJlYWRhYmxlU3RyZWFtJ3MgZW5xdWV1ZSBm
dW5jdGlvbiAoSFdNID0gMCkgYXNzZXJ0X2VxdWFsczogQWZ0ZXIgMCByZWFkcywgMXN0IGVucXVl
dWUgc2hvdWxkIHJldHVybiBmYWxzZSAocXVldWUgbm93IGNvbnRhaW5zIDEgY2h1bmspIGV4cGVj
dGVkIChib29sZWFuKSBmYWxzZSBidXQgZ290ICh1bmRlZmluZWQpIHVuZGVmaW5lZAotRkFJTCBD
b3JyZWN0bHkgZ292ZXJucyB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgUmVhZGFibGVTdHJlYW0ncyBl
bnF1ZXVlIGZ1bmN0aW9uIChIV00gPSAxKSBhc3NlcnRfZXF1YWxzOiBBZnRlciAwIHJlYWRzLCAx
c3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5r
KSBleHBlY3RlZCAoYm9vbGVhbikgdHJ1ZSBidXQgZ290ICh1bmRlZmluZWQpIHVuZGVmaW5lZAot
RkFJTCBDb3JyZWN0bHkgZ292ZXJucyB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgUmVhZGFibGVTdHJl
YW0ncyBlbnF1ZXVlIGZ1bmN0aW9uIChIV00gPSA0KSBhc3NlcnRfZXF1YWxzOiBBZnRlciAwIHJl
YWRzLCAxc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUgKHF1ZXVlIG5vdyBjb250YWlucyAx
IGNodW5rKSBleHBlY3RlZCAoYm9vbGVhbikgdHJ1ZSBidXQgZ290ICh1bmRlZmluZWQpIHVuZGVm
aW5lZAorRkFJTCBDb3JyZWN0bHkgZ292ZXJucyB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgUmVhZGFi
bGVTdHJlYW0ncyBlbnF1ZXVlIGZ1bmN0aW9uIChIV00gPSAwKSBhc3NlcnRfZXF1YWxzOiAwIHJl
YWRzLCAwIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCBleHBlY3RlZCAobnVtYmVy
KSAwIGJ1dCBnb3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkCitGQUlMIENvcnJlY3RseSBnb3Zlcm5z
IGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyJ3MgZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9
IDEpIGFzc2VydF9lcXVhbHM6IDAgcmVhZHMsIDAgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3Vs
ZCBiZSAxIGV4cGVjdGVkIChudW1iZXIpIDEgYnV0IGdvdCAodW5kZWZpbmVkKSB1bmRlZmluZWQK
K0ZBSUwgQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIncyBkZXNp
cmVkU2l6ZSBwcm9wZXJ0eSAoSFdNID0gNCkgYXNzZXJ0X2VxdWFsczogMCByZWFkcywgMCBlbnF1
ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDQgZXhwZWN0ZWQgKG51bWJlcikgNCBidXQgZ290
ICh1bmRlZmluZWQpIHVuZGVmaW5lZAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwgYi9M
YXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1aW5n
LXN0cmF0ZWd5Lmh0bWwKaW5kZXggM2I5NjQ1YjRmOTkzN2U0YWU5NDVkNzVkNDI3NmJiNWFhOGIz
ZGFjZS4uNTU1Y2E1MTVlZGVkNzVkNjc3NWQyOWZhN2U5M2I1NTllOTVjMWY4NiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vY291bnQtcXVl
dWluZy1zdHJhdGVneS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWlt
cGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbApAQCAtNSwzMSArNSw1MCBA
QAogPHNjcmlwdCBzcmM9J3Jlc291cmNlcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmpzJz48L3Nj
cmlwdD4KIDxzY3JpcHQ+CiB0ZXN0KGZ1bmN0aW9uKCkgewotICAgIG5ldyBDb3VudFF1ZXVpbmdT
dHJhdGVneSh7ICJoaWdoV2F0ZXJNYXJrIjogNH0pOworICAgIG5ldyBDb3VudFF1ZXVpbmdTdHJh
dGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSk7CiB9LCAnQ2FuIGNvbnN0cnVjdCBhIENvdW50UXVl
dWluZ1N0cmF0ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsnKTsKIAogdGVzdChmdW5j
dGlvbigpIHsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCksIGZ1bmN0aW9uKCkg
eyBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyAiaGlnaFdhdGVyTWFyayI6IC00IH0pIH0sICd0
aHJvd3MgZm9yIHsgaGlnaFdhdGVyTWFyazogLTQgfScpOwotICAgIGFzc2VydF90aHJvd3MobmV3
IFJhbmdlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7ICJo
aWdoV2F0ZXJNYXJrIjogJy00JyB9KSB9LCAndGhyb3dzIGZvciB7IGhpZ2hXYXRlck1hcms6IFwn
LTRcJyB9Jyk7Ci19LCAnR2l2ZXMgYSBSYW5nZUVycm9yIHdoZW4gdGhlIG51bWJlciBpcyBuZWdh
dGl2ZScpOworICAgIGZvciAodmFyIGhpZ2hXYXRlck1hcmsgb2YgWy1JbmZpbml0eSwgTmFOLCAn
Zm9vJywge30sIGZ1bmN0aW9uICgpIHt9XSkgeworICAgICAgICB2YXIgc3RyYXRlZ3kgPSBuZXcg
Q291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrIH0pOworICAgICAgICBhc3NlcnRf
dHJ1ZShPYmplY3QuaXMoc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaywgaGlnaFdhdGVyTWFyayksIGhp
Z2hXYXRlck1hcmsgKyAnIGdldHMgc2V0IGNvcnJlY3RseScpOworICAgIH0KK30sICdDYW4gY29u
c3RydWN0IGEgQ291bnRRdWV1aW5nU3RyYXRlZ3kgd2l0aCBhbnkgdmFsdWUgYXMgaXRzIGhpZ2gg
d2F0ZXIgbWFyaycpOwogCiB0ZXN0KGZ1bmN0aW9uKCkgewotICAgIG5ldyBSZWFkYWJsZVN0cmVh
bSh7IHN0cmF0ZWd5OiBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyAiaGlnaFdhdGVyTWFyayI6
IDQgfSkgfSk7CisgICAgdmFyIHN0cmF0ZWd5ID0gbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsg
aGlnaFdhdGVyTWFyazogNCB9KTsKKworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc3RyYXRlZ3ksICdoaWdoV2F0ZXJNYXJrJyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogNCwgd3JpdGFibGU6IHRydWUsIGVudW1lcmFi
bGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICdoaWdoV2F0ZXJNYXJrIHByb3BlcnR5IHNob3VsZCBiZSBhIGRhdGEgcHJvcGVydHkgd2l0aCB0
aGUgdmFsdWUgcGFzc2VkIHRoZSBjb25uc3RydWN0b3InKTsKKyAgICBhc3NlcnRfZXF1YWxzKHR5
cGVvZiBzdHJhdGVneS5zaXplLCAnZnVuY3Rpb24nKTsKK30sICdDb3VudFF1ZXVpbmdTdHJhdGVn
eSBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBwcm9wZXJ0aWVzJyk7CisKK3Rlc3QoZnVuY3Rp
b24oKSB7CisgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCBuZXcgQ291bnRRdWV1aW5nU3RyYXRl
Z3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0pKTsKIH0sICdDYW4gY29uc3RydWN0IGEgcmVhZGFibGUg
c3RyZWFtIHdpdGggYSB2YWxpZCBDb3VudFF1ZXVpbmdTdHJhdGVneScpOwogCiB2YXIgdGVzdDEg
PSBhc3luY190ZXN0KCdDb3JyZWN0bHkgZ292ZXJucyB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgUmVh
ZGFibGVTdHJlYW1cJ3MgZW5xdWV1ZSBmdW5jdGlvbiAoSFdNID0gMCknKTsKIHRlc3QxLnN0ZXAo
ZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGVucXVldWU7CisgICAgdmFyIGNvbnRyb2xsZXI7CiAgICAg
dmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMp
IHsgZW5xdWV1ZSA9IGMuZW5xdWV1ZS5iaW5kKGMpOyB9LAotICAgICAgICBzdHJhdGVneTogbmV3
IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgImhpZ2hXYXRlck1hcmsiOiAwIH0pCi0gICAgfSk7Cisg
ICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAgICBjb250cm9sbGVyID0gYzsK
KyAgICAgICAgfQorICAgIH0sCisgICAgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdh
dGVyTWFyazogMCB9KQorICAgICk7CiAgICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwog
Ci0gICAgYXNzZXJ0X2VxdWFscyhlbnF1ZXVlKCdhJyksIGZhbHNlLCAnQWZ0ZXIgMCByZWFkcywg
MXN0IGVucXVldWUgc2hvdWxkIHJldHVybiBmYWxzZSAocXVldWUgbm93IGNvbnRhaW5zIDEgY2h1
bmspJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhlbnF1ZXVlKCdiJyksIGZhbHNlLCAnQWZ0ZXIgMCBy
ZWFkcywgMm5kIGVucXVldWUgc2hvdWxkIHJldHVybiBmYWxzZSAocXVldWUgbm93IGNvbnRhaW5z
IDIgY2h1bmtzKScpOwotICAgIGFzc2VydF9lcXVhbHMoZW5xdWV1ZSgnYycpLCBmYWxzZSwgJ0Fm
dGVyIDAgcmVhZHMsIDNyZCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gZmFsc2UgKHF1ZXVlIG5vdyBj
b250YWlucyAzIGNodW5rcyknKTsKLSAgICBhc3NlcnRfZXF1YWxzKGVucXVldWUoJ2QnKSwgZmFs
c2UsICdBZnRlciAwIHJlYWRzLCA0dGggZW5xdWV1ZSBzaG91bGQgcmV0dXJuIGZhbHNlIChxdWV1
ZSBub3cgY29udGFpbnMgNCBjaHVua3MpJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVy
LmRlc2lyZWRTaXplLCAwLCAnMCByZWFkcywgMCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxk
IGJlIDAnKTsKKyAgICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgICBhc3NlcnRfZXF1YWxz
KGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMCByZWFkcywgMSBlbnF1ZXVlOiBkZXNpcmVk
U2l6ZSBzaG91bGQgYmUgLTEnKTsKKyAgICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKKyAgICBh
c3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0yLCAnMCByZWFkcywgMiBlbnF1
ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7CisgICAgY29udHJvbGxlci5lbnF1ZXVl
KCdjJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMywgJzAg
cmVhZHMsIDMgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMycpOworICAgIGNvbnRy
b2xsZXIuZW5xdWV1ZSgnZCcpOworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVk
U2l6ZSwgLTQsICcwIHJlYWRzLCA0IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTQn
KTsKIAogICAgIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVz
dWx0KSB7CiAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2En
LCBkb25lOiBmYWxzZSB9LCAnMXN0IHJlYWQgZ2l2ZXMgYmFjayB0aGUgMXN0IGNodW5rIGVucXVl
dWVkIChxdWV1ZSBub3cgY29udGFpbnMgMyBjaHVua3MpJyk7CkBAIC0zOSwzMiArNTgsNDkgQEAg
dGVzdDEuc3RlcChmdW5jdGlvbigpIHsKICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CiAg
ICAgfSkpLnRoZW4odGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgewogICAgICAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFsc2UgfSwg
JzNyZCByZWFkIGdpdmVzIGJhY2sgdGhlIDNyZCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNv
bnRhaW5zIDEgY2h1bmspJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoZW5xdWV1ZSgnZScpLCBm
YWxzZSwgJ0FmdGVyIDMgcmVhZHMsIDV0aCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gZmFsc2UgKHF1
ZXVlIG5vdyBjb250YWlucyAyIGNodW5rcyknKTsKKworICAgICAgICBhc3NlcnRfZXF1YWxzKGNv
bnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMyByZWFkcywgNCBlbnF1ZXVlczogZGVzaXJlZFNp
emUgc2hvdWxkIGJlIC0xJyk7CisgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZScpOworICAg
ICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0yLCAnMyByZWFkcywg
NSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7CisKICAgICAgICAgcmV0dXJu
IHJlYWRlci5yZWFkKCk7CiAgICAgfSkpLnRoZW4odGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKHJl
c3VsdCkgewogICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdk
JywgZG9uZTogZmFsc2UgfSwgJzR0aCByZWFkIGdpdmVzIGJhY2sgdGhlIDR0aCBjaHVuayBlbnF1
ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDEgY2h1bmtzKScpOwogICAgICAgICByZXR1cm4gcmVh
ZGVyLnJlYWQoKTsKICAgICB9KSkudGhlbih0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0
KSB7CiAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2UnLCBk
b25lOiBmYWxzZSB9LCAnNXRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNXRoIGNodW5rIGVucXVldWVk
IChxdWV1ZSBub3cgY29udGFpbnMgMCBjaHVua3MpJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMo
ZW5xdWV1ZSgnZicpLCBmYWxzZSwgJ0FmdGVyIDUgcmVhZHMsIDZ0aCBlbnF1ZXVlIHNob3VsZCBy
ZXR1cm4gZmFsc2UgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5rKScpOwotICAgICAgICBhc3Nl
cnRfZXF1YWxzKGVucXVldWUoJ2cnKSwgZmFsc2UsICdBZnRlciA1IHJlYWRzLCA3dGggZW5xdWV1
ZSBzaG91bGQgcmV0dXJuIGZhbHNlIChxdWV1ZSBub3cgY29udGFpbnMgMiBjaHVua3MpJyk7CisK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnNSByZWFk
cywgNSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKKyAgICAgICAgY29udHJv
bGxlci5lbnF1ZXVlKCdmJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNp
cmVkU2l6ZSwgLTEsICc1IHJlYWRzLCA2IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUg
LTEnKTsKKyAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdnJyk7CisgICAgICAgIGFzc2VydF9l
cXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTIsICc1IHJlYWRzLCA3IGVucXVldWVzOiBk
ZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTInKTsKKwogICAgICAgICB0ZXN0MS5kb25lKCk7CiAgICAg
fSkpLmNhdGNoKHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNoZWQo
ZSk7IH0gKSk7CiB9KTsKIAotdmFyIHRlc3QyID0gYXN5bmNfdGVzdCgnQ29ycmVjdGx5IGdvdmVy
bnMgdGhlIHJldHVybiB2YWx1ZSBvZiBhIFJlYWRhYmxlU3RyZWFtXCdzIGVucXVldWUgZnVuY3Rp
b24gKEhXTSA9IDEpJyk7Cit2YXIgdGVzdDIgPSBhc3luY190ZXN0KCdDb3JyZWN0bHkgZ292ZXJu
cyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlclwncyBkZXNpcmVkU2l6ZSBwcm9wZXJ0eSAoSFdN
ID0gMSknKTsKIHRlc3QyLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGVucXVldWU7CisgICAg
dmFyIGNvbnRyb2xsZXI7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAg
ICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsgZW5xdWV1ZSA9IGMuZW5xdWV1ZS5iaW5kKGMpOyB9LAot
ICAgICAgICBzdHJhdGVneTogbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgImhpZ2hXYXRlck1h
cmsiOiAxIH0pCi0gICAgfSk7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAgICAg
ICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgICAgfSwKKyAgICB9LAorICAgIG5ldyBDb3VudFF1
ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDEgfSkKKyAgICApOwogICAgIHZhciByZWFk
ZXIgPSBycy5nZXRSZWFkZXIoKTsKIAotICAgIGFzc2VydF9lcXVhbHMoZW5xdWV1ZSgnYScpLCB0
cnVlLCAnQWZ0ZXIgMCByZWFkcywgMXN0IGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlIChxdWV1
ZSBub3cgY29udGFpbnMgMSBjaHVuayknKTsKLSAgICBhc3NlcnRfZXF1YWxzKGVucXVldWUoJ2In
KSwgZmFsc2UsICdBZnRlciAwIHJlYWRzLCAybmQgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIGZhbHNl
IChxdWV1ZSBub3cgY29udGFpbnMgMiBjaHVua3MpJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhlbnF1
ZXVlKCdjJyksIGZhbHNlLCAnQWZ0ZXIgMCByZWFkcywgM3JkIGVucXVldWUgc2hvdWxkIHJldHVy
biBmYWxzZSAocXVldWUgbm93IGNvbnRhaW5zIDMgY2h1bmtzKScpOwotICAgIGFzc2VydF9lcXVh
bHMoZW5xdWV1ZSgnZCcpLCBmYWxzZSwgJ0FmdGVyIDAgcmVhZHMsIDR0aCBlbnF1ZXVlIHNob3Vs
ZCByZXR1cm4gZmFsc2UgKHF1ZXVlIG5vdyBjb250YWlucyA0IGNodW5rcyknKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICcwIHJlYWRzLCAwIGVucXVldWVz
OiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMScpOworICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScp
OworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzAgcmVhZHMs
IDEgZW5xdWV1ZTogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKKyAgICBjb250cm9sbGVyLmVu
cXVldWUoJ2InKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0x
LCAnMCByZWFkcywgMiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisgICAg
Y29udHJvbGxlci5lbnF1ZXVlKCdjJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRl
c2lyZWRTaXplLCAtMiwgJzAgcmVhZHMsIDMgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBi
ZSAtMicpOworICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZCcpOworICAgIGFzc2VydF9lcXVhbHMo
Y29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTMsICcwIHJlYWRzLCA0IGVucXVldWVzOiBkZXNpcmVk
U2l6ZSBzaG91bGQgYmUgLTMnKTsKIAogICAgIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0Mi5zdGVw
X2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJl
c3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnMXN0IHJlYWQgZ2l2ZXMgYmFjayB0
aGUgMXN0IGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMyBjaHVua3MpJyk7CkBA
IC03NCw0MSArMTEwLDY1IEBAIHRlc3QyLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgIHJldHVy
biByZWFkZXIucmVhZCgpOwogICAgIH0pKS50aGVuKHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbihy
ZXN1bHQpIHsKICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAn
YycsIGRvbmU6IGZhbHNlIH0sICczcmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAzcmQgY2h1bmsgZW5x
dWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5rKScpOwotICAgICAgICBhc3NlcnRfZXF1
YWxzKGVucXVldWUoJ2UnKSwgZmFsc2UsICdBZnRlciAzIHJlYWRzLCA1dGggZW5xdWV1ZSBzaG91
bGQgcmV0dXJuIGZhbHNlIChxdWV1ZSBub3cgY29udGFpbnMgMiBjaHVua3MpJyk7CisKKyAgICAg
ICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnMyByZWFkcywgNCBl
bnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKKyAgICAgICAgY29udHJvbGxlci5l
bnF1ZXVlKCdlJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6
ZSwgLTEsICczIHJlYWRzLCA1IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsK
KwogICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKICAgICB9KSkudGhlbih0ZXN0Mi5zdGVw
X2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJl
c3VsdCwgeyB2YWx1ZTogJ2QnLCBkb25lOiBmYWxzZSB9LCAnNHRoIHJlYWQgZ2l2ZXMgYmFjayB0
aGUgNHRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMSBjaHVua3MpJyk7CiAg
ICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwogICAgIH0pKS50aGVuKHRlc3QyLnN0ZXBfZnVu
YyhmdW5jdGlvbihyZXN1bHQpIHsKICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0
LCB7IHZhbHVlOiAnZScsIGRvbmU6IGZhbHNlIH0sICc1dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA1
dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAwIGNodW5rcyknKTsKLSAgICAg
ICAgYXNzZXJ0X2VxdWFscyhlbnF1ZXVlKCdmJyksIHRydWUsICdBZnRlciA1IHJlYWRzLCA2dGgg
ZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5rKScp
OwotICAgICAgICBhc3NlcnRfZXF1YWxzKGVucXVldWUoJ2cnKSwgZmFsc2UsICdBZnRlciA1IHJl
YWRzLCA3dGggZW5xdWV1ZSBzaG91bGQgcmV0dXJuIGZhbHNlIChxdWV1ZSBub3cgY29udGFpbnMg
MiBjaHVua3MpJyk7CisKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRT
aXplLCAxLCAnNSByZWFkcywgNSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEnKTsK
KyAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdmJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMo
Y29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzUgcmVhZHMsIDYgZW5xdWV1ZXM6IGRlc2lyZWRT
aXplIHNob3VsZCBiZSAwJyk7CisgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZycpOworICAg
ICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnNSByZWFkcywg
NyBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisKICAgICAgICAgdGVzdDIu
ZG9uZSgpOwogICAgIH0pKS5jYXRjaCh0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3Nl
cnRfdW5yZWFjaGVkKGUpOyB9ICkpOwogfSk7CiAKLXZhciB0ZXN0MyA9IGFzeW5jX3Rlc3QoJ0Nv
cnJlY3RseSBnb3Zlcm5zIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBSZWFkYWJsZVN0cmVhbVwncyBl
bnF1ZXVlIGZ1bmN0aW9uIChIV00gPSA0KScpOwordmFyIHRlc3QzID0gYXN5bmNfdGVzdCgnQ29y
cmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJcJ3MgZGVzaXJlZFNpemUg
cHJvcGVydHkgKEhXTSA9IDQpJyk7CiB0ZXN0My5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciBl
bnF1ZXVlOworICAgIHZhciBjb250cm9sbGVyOwogICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7IGVucXVldWUgPSBjLmVucXVldWUu
YmluZChjKTsgfSwKLSAgICAgICAgc3RyYXRlZ3k6IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7
ICJoaWdoV2F0ZXJNYXJrIjogNCB9KQotICAgIH0pOworICAgICAgICBzdGFydDogZnVuY3Rpb24o
YykgeworICAgICAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICAgIH0KKyAgICB9LAorICAg
IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSkKKyAgICApOwog
ICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKIAotICAgIGFzc2VydF9lcXVhbHMoZW5x
dWV1ZSgnYScpLCB0cnVlLCAnQWZ0ZXIgMCByZWFkcywgMXN0IGVucXVldWUgc2hvdWxkIHJldHVy
biB0cnVlIChxdWV1ZSBub3cgY29udGFpbnMgMSBjaHVuayknKTsKLSAgICBhc3NlcnRfZXF1YWxz
KGVucXVldWUoJ2InKSwgdHJ1ZSwgJ0FmdGVyIDAgcmVhZHMsIDJuZCBlbnF1ZXVlIHNob3VsZCBy
ZXR1cm4gdHJ1ZSAocXVldWUgbm93IGNvbnRhaW5zIDIgY2h1bmtzKScpOwotICAgIGFzc2VydF9l
cXVhbHMoZW5xdWV1ZSgnYycpLCB0cnVlLCAnQWZ0ZXIgMCByZWFkcywgM3JkIGVucXVldWUgc2hv
dWxkIHJldHVybiB0cnVlIChxdWV1ZSBub3cgY29udGFpbnMgMyBjaHVua3MpJyk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhlbnF1ZXVlKCdkJyksIHRydWUsICdBZnRlciAwIHJlYWRzLCA0dGggZW5xdWV1
ZSBzaG91bGQgcmV0dXJuIHRydWUgKHF1ZXVlIG5vdyBjb250YWlucyA0IGNodW5rcyknKTsKLSAg
ICBhc3NlcnRfZXF1YWxzKGVucXVldWUoJ2UnKSwgZmFsc2UsICdBZnRlciAwIHJlYWRzLCA1dGgg
ZW5xdWV1ZSBzaG91bGQgcmV0dXJuIGZhbHNlIChxdWV1ZSBub3cgY29udGFpbnMgNSBjaHVua3Mp
Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhlbnF1ZXVlKCdmJyksIGZhbHNlLCAnQWZ0ZXIgMCByZWFk
cywgNnRoIGVucXVldWUgc2hvdWxkIHJldHVybiBmYWxzZSAocXVldWUgbm93IGNvbnRhaW5zIDYg
Y2h1bmtzKScpOworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgNCwg
JzAgcmVhZHMsIDAgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSA0Jyk7CisgICAgY29u
dHJvbGxlci5lbnF1ZXVlKCdhJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2ly
ZWRTaXplLCAzLCAnMCByZWFkcywgMSBlbnF1ZXVlOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMycp
OworICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOworICAgIGFzc2VydF9lcXVhbHMoY29udHJv
bGxlci5kZXNpcmVkU2l6ZSwgMiwgJzAgcmVhZHMsIDIgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNo
b3VsZCBiZSAyJyk7CisgICAgY29udHJvbGxlci5lbnF1ZXVlKCdjJyk7CisgICAgYXNzZXJ0X2Vx
dWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnMCByZWFkcywgMyBlbnF1ZXVlczogZGVz
aXJlZFNpemUgc2hvdWxkIGJlIDEnKTsKKyAgICBjb250cm9sbGVyLmVucXVldWUoJ2QnKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICcwIHJlYWRzLCA0IGVu
cXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOworICAgIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnZScpOworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICcw
IHJlYWRzLCA1IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKKyAgICBjb250
cm9sbGVyLmVucXVldWUoJ2YnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJl
ZFNpemUsIC0yLCAnMCByZWFkcywgNiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0y
Jyk7CisKIAogICAgIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24o
cmVzdWx0KSB7CiAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTog
J2EnLCBkb25lOiBmYWxzZSB9LCAnMXN0IHJlYWQgZ2l2ZXMgYmFjayB0aGUgMXN0IGNodW5rIGVu
cXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgNSBjaHVua3MpJyk7CiAgICAgICAgIHJldHVybiBy
ZWFkZXIucmVhZCgpOwogICAgIH0pKS50aGVuKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1
bHQpIHsKICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYics
IGRvbmU6IGZhbHNlIH0sICcybmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAybmQgY2h1bmsgZW5xdWV1
ZWQgKHF1ZXVlIG5vdyBjb250YWlucyA0IGNodW5rcyknKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFs
cyhlbnF1ZXVlKCdnJyksIGZhbHNlLCAnQWZ0ZXIgMiByZWFkcywgN3RoIGVucXVldWUgc2hvdWxk
IHJldHVybiBmYWxzZSAocXVldWUgbm93IGNvbnRhaW5zIDUgY2h1bmtzKScpOworCisgICAgICAg
IGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzIgcmVhZHMsIDYgZW5x
dWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7CisgICAgICAgIGNvbnRyb2xsZXIuZW5x
dWV1ZSgnZycpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUs
IC0xLCAnMiByZWFkcywgNyBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisK
ICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CiAgICAgfSkpLnRoZW4odGVzdDMuc3RlcF9m
dW5jKGZ1bmN0aW9uKHJlc3VsdCkgewogICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1
bHQsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFsc2UgfSwgJzNyZCByZWFkIGdpdmVzIGJhY2sgdGhl
IDNyZCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDQgY2h1bmtzKScpOwpAQCAt
MTIwLDEyICsxODAsMTkgQEAgdGVzdDMuc3RlcChmdW5jdGlvbigpIHsKICAgICAgICAgYXNzZXJ0
X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZScsIGRvbmU6IGZhbHNlIH0sICc1dGgg
cmVhZCBnaXZlcyBiYWNrIHRoZSA1dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlu
cyAyIGNodW5rcyknKTsKICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CiAgICAgfSkpLnRo
ZW4odGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgewotICAgICAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdmJywgZG9uZTogZmFsc2UgfSwgJzZ0aCByZWFk
IGdpdmVzIGJhY2sgdGhlIDZ0aCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDEg
Y2h1bmspJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoZW5xdWV1ZSgnaCcpLCB0cnVlLCAnQWZ0
ZXIgNiByZWFkcywgOHRoIGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlIChxdWV1ZSBub3cgY29u
dGFpbnMgMiBjaHVua3MpJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoZW5xdWV1ZSgnaScpLCB0
cnVlLCAnQWZ0ZXIgNiByZWFkcywgOXRoIGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlIChxdWV1
ZSBub3cgY29udGFpbnMgMyBjaHVua3MpJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoZW5xdWV1
ZSgnaicpLCB0cnVlLCAnQWZ0ZXIgNiByZWFkcywgMTB0aCBlbnF1ZXVlIHNob3VsZCByZXR1cm4g
dHJ1ZSAocXVldWUgbm93IGNvbnRhaW5zIDQgY2h1bmtzKScpOwotICAgICAgICBhc3NlcnRfZXF1
YWxzKGVucXVldWUoJ2snKSwgZmFsc2UsICdBZnRlciA2IHJlYWRzLCAxMXRoIGVucXVldWUgc2hv
dWxkIHJldHVybiBmYWxzZSAocXVldWUgbm93IGNvbnRhaW5zIDUgY2h1bmtzKScpOworICAgICAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdmJywgZG9uZTogZmFsc2Ug
fSwgJzZ0aCByZWFkIGdpdmVzIGJhY2sgdGhlIDZ0aCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93
IGNvbnRhaW5zIDAgY2h1bmtzKScpOworCisgICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxl
ci5kZXNpcmVkU2l6ZSwgMywgJzYgcmVhZHMsIDcgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3Vs
ZCBiZSAzJyk7CisgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnaCcpOworICAgICAgICBhc3Nl
cnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDIsICc2IHJlYWRzLCA4IGVucXVldWVz
OiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMicpOworICAgICAgICBjb250cm9sbGVyLmVucXVldWUo
J2knKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAn
NiByZWFkcywgOSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEnKTsKKyAgICAgICAg
Y29udHJvbGxlci5lbnF1ZXVlKCdqJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxl
ci5kZXNpcmVkU2l6ZSwgMCwgJzYgcmVhZHMsIDEwIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91
bGQgYmUgMCcpOworICAgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2snKTsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzYgcmVhZHMsIDExIGVucXVl
dWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKKwogICAgICAgICB0ZXN0My5kb25lKCk7
Ci0gICAgfSkpLmNhdGNoKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF9yZWFj
aGVkKGUpOyB9ICkpOworICAgIH0pKS5jYXRjaCh0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkg
eyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9ICkpOwogfSk7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0
cmVhbS1jYW5jZWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWNhbmNlbC1leHBlY3RlZC50eHQKaW5kZXgg
OWI3NTU0Mjg1OGQ1NTUzYmJlMzUzYmRhNTI4ZjA0NGEwZTAyY2M1My4uNzUwYTlkZTgyNDQ2NGU5
N2U0MmQ1MDhjYmZmZDViNjRlYWFjZDkyZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFt
cy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWNhbmNlbC1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24v
cmVhZGFibGUtc3RyZWFtLWNhbmNlbC1leHBlY3RlZC50eHQKQEAgLTIsMTEgKzIsMTEgQEAKIEZB
SUwgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpbnRlZ3JhdGlvbiB0ZXN0IG9uIGFuIGlu
ZmluaXRlIHN0cmVhbSBkZXJpdmVkIGZyb20gYSByYW5kb20gcHVzaCBzb3VyY2UgY2FuY2VsIGlz
IG5vdCBpbXBsZW1lbnRlZAogRkFJTCBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGNhbmNl
bChyZWFzb24pIHNob3VsZCBwYXNzIHRocm91Z2ggdGhlIGdpdmVuIHJlYXNvbiB0byB0aGUgdW5k
ZXJseWluZyBzb3VyY2UgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBSZWFkYWJsZVN0
cmVhbSBjYW5jZWxsYXRpb246IGNhbmNlbCgpIG9uIGEgbG9ja2VkIHN0cmVhbSBzaG91bGQgZmFp
bCBhbmQgbm90IGNhbGwgdGhlIHVuZGVybHlpbmcgc291cmNlIGNhbmNlbCBjYW5jZWwgaXMgbm90
IGltcGxlbWVudGVkCitGQUlMIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogc2hvdWxkIGZ1
bGZpbGwgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayB3ZW50IGZpbmUgY2FuY2VsIGlzIG5v
dCBpbXBsZW1lbnRlZAogRkFJTCBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHJldHVybmlu
ZyBhIHZhbHVlIGZyb20gdGhlIHVuZGVybHlpbmcgc291cmNlJ3MgY2FuY2VsIHNob3VsZCBub3Qg
YWZmZWN0IHRoZSBmdWxmaWxsbWVudCB2YWx1ZSBvZiB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0
aGUgc3RyZWFtJ3MgY2FuY2VsIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwgUmVhZGFi
bGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2UncyBjYW5jZWwg
bWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3Ry
ZWFtJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBvbmUgZG9lcyBjYW5jZWwgaXMg
bm90IGltcGxlbWVudGVkCitGQUlMIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogc2hvdWxk
IHJlamVjdCBwcm9taXNlIHdoZW4gY2FuY2VsIGNhbGxiYWNrIHJhaXNlcyBhbiBleGNlcHRpb24g
Y2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAorRkFJTCBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRp
b246IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHBy
b21pc2UsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgc2hvdWxk
IGZ1bGZpbGwgd2hlbiB0aGF0IG9uZSBkb2VzICgxKSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVk
CitGQUlMIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291
cmNlJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJu
ZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBzaG91bGQgZnVsZmlsbCB3aGVuIHRoYXQgb25lIGRv
ZXMgKDIpIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgUmVhZGFibGVTdHJlYW0gY2Fu
Y2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2UncyBjYW5jZWwgbWV0aG9kIHJldHVy
bnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtJ3MgY2FuY2Vs
IHNob3VsZCByZWplY3Qgd2hlbiB0aGF0IG9uZSBkb2VzIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50
ZWQKIEZBSUwgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWxsaW5nIGJlZm9yZSBz
dGFydCBmaW5pc2hlcyBzaG91bGQgcHJldmVudCBwdWxsKCkgZnJvbSBiZWluZyBjYWxsZWQgY2Fu
Y2VsIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBSZWFkYWJsZVN0cmVhbSBjYW5jZWwgc2hvdWxk
IGZ1bGZpbGwgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayB3ZW50IGZpbmUgY2FuY2VsIGlz
IG5vdCBpbXBsZW1lbnRlZAotRkFJTCBSZWFkYWJsZVN0cmVhbSBjYW5jZWwgc2hvdWxkIHJlamVj
dCBwcm9taXNlIHdoZW4gY2FuY2VsIGNhbGxiYWNrIHJhaXNlcyBhbiBleGNlcHRpb24gY2FuY2Vs
IGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBSZWFkYWJsZVN0cmVhbSBjYW5jZWwgc2hvdWxkIGZ1
bGZpbGwgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayB3ZW50IGZpbmUgYWZ0ZXIgcmV0dXJu
aW5nIGEgcHJvbWlzZSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVh
bS1jYW5jZWwuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0
aW9uL3JlYWRhYmxlLXN0cmVhbS1jYW5jZWwuaHRtbAppbmRleCBiMDZjMzg2MmUxNWY4ZTg5ZTc4
ZDhmMWFhYmUwNzE1NTM4NGRiYzM4Li4zOTc0YmE4MjE4NGNhMDM2YjEwODFiOTdiY2E4ZjJmMjI1
YThlYWFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tY2FuY2VsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWNhbmNlbC5odG1s
CkBAIC0yNyw3ICsyNyw3IEBAIHRlc3QxLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAg
ICAgc2V0VGltZW91dCh0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGNhbmNlbGxhdGlvbkZpbmlzaGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAg
cmVzb2x2ZSgpOwotICAgICAgICAgICAgICAgIH0pLCBzdGFuZGFyZFRpbWVvdXQpOworICAgICAg
ICAgICAgICAgIH0pLCA1MCk7CiAgICAgICAgICAgICB9KSk7CiAgICAgICAgIH0KICAgICB9KTsK
QEAgLTM3LDcgKzM3LDcgQEAgdGVzdDEuc3RlcChmdW5jdGlvbigpIHsKICAgICAgICAgYXNzZXJ0
X2VxdWFscyhjYW5jZWxsYXRpb25GaW5pc2hlZCwgZmFsc2UsICdpdCBkaWQgbm90IHdhaXQgZm9y
IHRoZSBjYW5jZWxsYXRpb24gcHJvY2VzcyB0byBmaW5pc2ggYmVmb3JlIGNsb3NpbmcnKTsKICAg
ICAgICAgYXNzZXJ0X2dyZWF0ZXJfdGhhbihjaHVua3MubGVuZ3RoLCAwLCAnYXQgbGVhc3Qgb25l
IGNodW5rIHNob3VsZCBiZSByZWFkJyk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2h1
bmtzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNodW5rc1tpXS5s
ZW5ndGgsIDEyOCwgImNodW5rIHNob3VsZCBoYXZlIDEyOCBieXRlcyIpOworICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhjaHVua3NbaV0ubGVuZ3RoLCAxMjgsICdjaHVuayAnICsgaSArICcgc2hv
dWxkIGhhdmUgMTI4IGJ5dGVzJyk7CiAgICAgICAgIH0KICAgICB9KSwgdGVzdDEuc3RlcF9mdW5j
KGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSkpOwogCkBAIC00Niw3ICs0Niw3
IEBAIHRlc3QxLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNh
bmNlbGxhdGlvbkZpbmlzaGVkLCB0cnVlLCAnaXQgcmV0dXJucyBhIHByb21pc2UgdGhhdCBpcyBm
dWxmaWxsZWQgd2hlbiB0aGUgY2FuY2VsbGF0aW9uIGZpbmlzaGVzJyk7CiAgICAgICAgICAgICB0
ZXN0MS5kb25lKCk7CiAgICAgICAgIH0pKS5jYXRjaCh0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24o
ZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9KSk7Ci0gICAgfSksIHN0YW5kYXJkVGltZW91dCAr
IDUwKTsKKyAgICB9KSwgMTUwKTsKIH0pOwogCiB0ZXN0KGZ1bmN0aW9uKCkgewpAQCAtOTEsMzMg
KzkxLDEwMyBAQCB0ZXN0Mi5zdGVwKGZ1bmN0aW9uKCkgewogICAgIH0pKTsKIH0pOwogCi12YXIg
dGVzdDMgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHJldHVybmlu
ZyBhIHZhbHVlIGZyb20gdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCBzaG91bGQgbm90
IGFmZmVjdCB0aGUgZnVsZmlsbG1lbnQgdmFsdWUgb2YgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkg
dGhlIHN0cmVhbVwncyBjYW5jZWwnKTsKLXRlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7Cit2YXIgdGVz
dDMgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHNob3VsZCBmdWxm
aWxsIHByb21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJhY2sgd2VudCBmaW5lJyk7Cit0ZXN0My5zdGVw
KGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgY2FuY2VsUmVjZWl2ZWQgPSBmYWxzZTsKKyAgICB2YXIg
Y2FuY2VsUmVhc29uID0gbmV3IEVycm9yKCdJIGFtIHRpcmVkIG9mIHRoaXMgc3RyZWFtLCBJIHBy
ZWZlciB0byBjYW5jZWwgaXQnKTsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewor
ICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKHJlYXNvbikgeworICAgICAgICAgICAgY2FuY2VsUmVj
ZWl2ZWQgPSB0cnVlOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZWFzb24sIGNhbmNlbFJl
YXNvbiwgJ2NhbmNlbGxhdGlvbiByZWFzb24gZ2l2ZW4gdG8gdGhlIHVuZGVybHlpbmcgc291cmNl
IHNob3VsZCBiZSBlcXVhbCB0byB0aGUgb25lIHBhc3NlZCcpOworICAgICAgICB9CisgICAgfSk7
CisKKyAgICBycy5jYW5jZWwoY2FuY2VsUmVhc29uKS50aGVuKAorICAgICAgICB0ZXN0My5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjYW5jZWxSZWNlaXZl
ZCk7CisgICAgICAgICAgICB0ZXN0My5kb25lKCdzdHJlYW0gd2FzIHN1Y2Nlc3NmdWxseSBjYW5j
ZWxsZWQnKTsKKyAgICAgICAgfSksCisgICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihl
KSB7CisgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJyZWNlaXZlZCBlcnJvciAiICsgZSkK
KyAgICAgICAgfSkpOworfSk7CisKK3ZhciB0ZXN0NCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3Ry
ZWFtIGNhbmNlbGxhdGlvbjogcmV0dXJuaW5nIGEgdmFsdWUgZnJvbSB0aGUgdW5kZXJseWluZyBz
b3VyY2VcJ3MgY2FuY2VsIHNob3VsZCBub3QgYWZmZWN0IHRoZSBmdWxmaWxsbWVudCB2YWx1ZSBv
ZiB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtXCdzIGNhbmNlbCcpOwordGVzdDQu
c3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewogICAg
ICAgICBjYW5jZWw6IGZ1bmN0aW9uKHJlYXNvbikgewogICAgICAgICAgICAgcmV0dXJuICdIZWxs
byc7CiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIHJzLmNhbmNlbCgpLnRoZW4odGVzdDMuc3Rl
cF9mdW5jKGZ1bmN0aW9uKHYpIHsKKyAgICBycy5jYW5jZWwoKS50aGVuKHRlc3Q0LnN0ZXBfZnVu
YyhmdW5jdGlvbih2KSB7CiAgICAgICAgIGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAnY2Fu
Y2VsKCkgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSBmdWxmaWxsZWQgd2l0aCB1bmRlZmluZWQnKTsK
LSAgICAgICAgdGVzdDMuZG9uZSgpOwotICAgIH0pLCB0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24o
KSB7CisgICAgICAgIHRlc3Q0LmRvbmUoKTsKKyAgICB9KSwgdGVzdDQuc3RlcF9mdW5jKGZ1bmN0
aW9uKCkgewogICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdjYW5jZWwoKSByZXR1cm4gdmFsdWUg
c2hvdWxkIG5vdCBiZSByZWplY3RlZCcpOwogICAgIH0pKTsKIH0pOwogCi12YXIgdGVzdDQgPSBh
c3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5n
IHNvdXJjZVwncyBjYW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSBy
ZXR1cm5lZCBieSB0aGUgc3RyZWFtXCdzIGNhbmNlbCBzaG91bGQgZnVsZmlsbCB3aGVuIHRoYXQg
b25lIGRvZXMnKTsKLXRlc3Q0LnN0ZXAoZnVuY3Rpb24oKSB7Cit2YXIgdGVzdDUgPSBhc3luY190
ZXN0KCdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHNob3VsZCByZWplY3QgcHJvbWlzZSB3
aGVuIGNhbmNlbCBjYWxsYmFjayByYWlzZXMgYW4gZXhjZXB0aW9uJyk7Cit0ZXN0NS5zdGVwKGZ1
bmN0aW9uKCkKK3sKKyAgICB2YXIgdGhyb3duRXJyb3IgPSBuZXcgRXJyb3IoJ3Rlc3QnKTsKKyAg
ICB2YXIgY2FuY2VsQ2FsbGVkID0gZmFsc2U7CisKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgY2FuY2Vs
Q2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHRocm93IHRocm93bkVycm9yOworICAgICAgICB9
CisgICAgfSk7CisKKyAgICBycy5jYW5jZWwoJ3Rlc3QnKS50aGVuKAorICAgICAgICB0ZXN0NS5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ2NhbmNlbCBzaG91bGQgcmVq
ZWN0Jyk7IH0pLAorICAgICAgICB0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeworICAgICAg
ICAgICAgYXNzZXJ0X3RydWUoY2FuY2VsQ2FsbGVkKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMoZSwgdGhyb3duRXJyb3IpOworICAgICAgICAgICAgdGVzdDUuZG9uZSgpOworICAgICAgICB9
KQorICAgICk7Cit9KTsKKwordmFyIHRlc3Q2ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0g
Y2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2VsIG1ldGhvZCBy
ZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbVwncyBj
YW5jZWwgc2hvdWxkIGZ1bGZpbGwgd2hlbiB0aGF0IG9uZSBkb2VzICgxKScpOwordGVzdDYuc3Rl
cChmdW5jdGlvbigpCit7CisgICAgdmFyIGNhbmNlbFJlYXNvbiA9IG5ldyBFcnJvcigndGVzdCcp
OworCisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgY2FuY2VsOiBm
dW5jdGlvbihlcnJvcikgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlcnJvciwgY2FuY2Vs
UmVhc29uKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSh0ZXN0Ni5zdGVwX2Z1bmMo
ZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dCh0
ZXN0Ni5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmUo
KTsKKyAgICAgICAgICAgICAgICB9KSwgNTApOworICAgICAgICAgICAgfSkpCisgICAgICAgIH0K
KyAgICB9KQorCisgICAgcnMuY2FuY2VsKGNhbmNlbFJlYXNvbikudGhlbigKKyAgICAgICAgdGVz
dDYuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdDYuZG9uZSgnc3RyZWFt
IHN1Y2Nlc3NmdWxseSBjYW5jZWxsZWQnKTsKKyAgICAgICAgfSksCisgICAgICAgIHRlc3Q2LnN0
ZXBfZnVuYyhmdW5jdGlvbihlKSB7CisgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJyZWNl
aXZlZCBlcnJvciAiICsgZSkKKyAgICAgICAgfSkpCit9KTsKKwordmFyIHRlc3Q3ID0gYXN5bmNf
dGVzdCgnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3Vy
Y2VcJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJu
ZWQgYnkgdGhlIHN0cmVhbVwncyBjYW5jZWwgc2hvdWxkIGZ1bGZpbGwgd2hlbiB0aGF0IG9uZSBk
b2VzICgyKScpOwordGVzdDcuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgcmVzb2x2ZVNvdXJj
ZUNhbmNlbFByb21pc2U7CiAgICAgdmFyIHNvdXJjZUNhbmNlbFByb21pc2VIYXNGdWxmaWxsZWQg
PSBmYWxzZTsKICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewogICAgICAgICBjYW5j
ZWw6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdmFyIHNvdXJjZUNhbmNlbFByb21pc2UgPSBu
ZXcgUHJvbWlzZSh0ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7Cisg
ICAgICAgICAgICB2YXIgc291cmNlQ2FuY2VsUHJvbWlzZSA9IG5ldyBQcm9taXNlKHRlc3Q3LnN0
ZXBfZnVuYyhmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgICAgICByZXNv
bHZlU291cmNlQ2FuY2VsUHJvbWlzZSA9IHJlc29sdmU7CiAgICAgICAgICAgICB9KSk7CiAKLSAg
ICAgICAgICAgIHNvdXJjZUNhbmNlbFByb21pc2UudGhlbih0ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBzb3VyY2VDYW5jZWxQcm9taXNlLnRoZW4odGVzdDcuc3RlcF9m
dW5jKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIHNvdXJjZUNhbmNlbFByb21pc2VIYXNG
dWxmaWxsZWQgPSB0cnVlOwogICAgICAgICAgICAgfSkpOwogCkBAIC0xMjUsMjggKzE5NSwzMiBA
QCB0ZXN0NC5zdGVwKGZ1bmN0aW9uKCkgewogICAgICAgICB9CiAgICAgfSk7CiAKLSAgICBycy5j
YW5jZWwoKS50aGVuKHRlc3Q0LnN0ZXBfZnVuYyhmdW5jdGlvbih2YWx1ZSkgewotICAgICAgICBh
c3NlcnRfZXF1YWxzKHNvdXJjZUNhbmNlbFByb21pc2VIYXNGdWxmaWxsZWQsIHRydWUsICdjYW5j
ZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIGZ1bGZpbGxlZCBvbmx5IGFmdGVyIHRoZSBwcm9t
aXNlIHJldHVybmVkIGJ5IHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBjYW5jZWwnKTsKLSAgICAg
ICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVkLCAnY2FuY2VsKCkgcmV0dXJuIHZhbHVl
IHNob3VsZCBiZSBmdWxmaWxsZWQgd2l0aCB1bmRlZmluZWQnKTsKLSAgICAgICAgdGVzdDQuZG9u
ZSgpOwotICAgIH0pLCB0ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNo
ZWQoJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQgbm90IGJlIHJlamVjdGVkJyk7IH0gKSk7
CiAKLSAgICBzZXRUaW1lb3V0KHRlc3Q0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICBycy5j
YW5jZWwoKS50aGVuKAorICAgICAgICB0ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rpb24odmFsdWUpIHsK
KyAgICAgICAgICAgIGFzc2VydF90cnVlKHNvdXJjZUNhbmNlbFByb21pc2VIYXNGdWxmaWxsZWQs
ICdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIGZ1bGZpbGxlZCBvbmx5IGFmdGVyIHRo
ZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBjYW5jZWwnKTsK
KyAgICAgICAgICAgIGFzc2VydF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCwgJ2NhbmNlbCgpIHJl
dHVybiB2YWx1ZSBzaG91bGQgYmUgZnVsZmlsbGVkIHdpdGggdW5kZWZpbmVkJyk7CisgICAgICAg
ICAgICB0ZXN0Ny5kb25lKCk7CisgICAgICAgIH0pLAorICAgICAgICB0ZXN0Ny5zdGVwX2Z1bmMo
ZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91
bGQgbm90IGJlIHJlamVjdGVkJyk7IH0pCisgICAgKTsKKworICAgIHNldFRpbWVvdXQodGVzdDcu
c3RlcF9mdW5jKGZ1bmN0aW9uKCkgewogICAgICAgICByZXNvbHZlU291cmNlQ2FuY2VsUHJvbWlz
ZSgnSGVsbG8nKTsKLSAgICB9KSwgc3RhbmRhcmRUaW1lb3V0KTsKKyAgICB9KSwgMzApOwogfSk7
CiAKLXZhciB0ZXN0NSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjog
aWYgdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21p
c2UsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW1cJ3MgY2FuY2VsIHNob3VsZCBy
ZWplY3Qgd2hlbiB0aGF0IG9uZSBkb2VzJyk7Ci10ZXN0NS5zdGVwKGZ1bmN0aW9uKCkgewordmFy
IHRlc3Q4ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUg
dW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhl
IHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbVwncyBjYW5jZWwgc2hvdWxkIHJlamVjdCB3
aGVuIHRoYXQgb25lIGRvZXMnKTsKK3Rlc3Q4LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHJl
amVjdFNvdXJjZUNhbmNlbFByb21pc2U7CiAgICAgdmFyIHNvdXJjZUNhbmNlbFByb21pc2VIYXNS
ZWplY3RlZCA9IGZhbHNlOwogICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CiAgICAg
ICAgIGNhbmNlbDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB2YXIgc291cmNlQ2FuY2VsUHJv
bWlzZSA9IG5ldyBQcm9taXNlKHRlc3Q1LnN0ZXBfZnVuYyhmdW5jdGlvbihyZXNvbHZlLCByZWpl
Y3QpIHsKKyAgICAgICAgICAgIHZhciBzb3VyY2VDYW5jZWxQcm9taXNlID0gbmV3IFByb21pc2Uo
dGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAg
ICAgIHJlamVjdFNvdXJjZUNhbmNlbFByb21pc2UgPSByZWplY3Q7CiAgICAgICAgICAgICB9KSk7
CiAKLSAgICAgICAgICAgIHNvdXJjZUNhbmNlbFByb21pc2UuY2F0Y2godGVzdDUuc3RlcF9mdW5j
KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgc291cmNlQ2FuY2VsUHJvbWlzZS5jYXRjaCh0ZXN0
OC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgc291cmNlQ2FuY2VsUHJv
bWlzZUhhc1JlamVjdGVkID0gdHJ1ZTsKICAgICAgICAgICAgIH0pKTsKIApAQCAtMTU3LDk4ICsy
MzEsMjkgQEAgdGVzdDUuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgZXJyb3JJbkNhbmNlbCA9
IG5ldyBFcnJvcignU29ycnksIGl0IGp1c3Qgd2FzblwndCBtZWFudCB0byBiZS4nKTsKIAogICAg
IHJzLmNhbmNlbCgpLnRoZW4oCi0gICAgICAgIHRlc3Q1LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsg
YXNzZXJ0X2Z1bmN0aW9uKCdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIG5vdCBiZSByZWpl
Y3RlZCcpOyB9KSwKLSAgICAgICAgdGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKLSAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMoc291cmNlQ2FuY2VsUHJvbWlzZUhhc1JlamVjdGVkLCB0cnVl
LCAnY2FuY2VsKCkgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSByZWplY3RlZCBvbmx5IGFmdGVyIHRo
ZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBjYW5jZWwnKTsK
KyAgICAgICAgdGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdj
YW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIG5vdCBiZSByZWplY3RlZCcpOyB9KSwKKyAgICAg
ICAgdGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKKyAgICAgICAgICAgIGFzc2VydF90cnVl
KHNvdXJjZUNhbmNlbFByb21pc2VIYXNSZWplY3RlZCwgJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBz
aG91bGQgYmUgcmVqZWN0ZWQgb25seSBhZnRlciB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUg
dW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2VsJyk7CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KHIsIGVycm9ySW5DYW5jZWwsICdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIHJlamVj
dGVkIHdpdGggdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIHJlamVjdGlvbiByZWFzb24nKTsKLSAg
ICAgICAgICAgIHRlc3Q1LmRvbmUoKTsKLSAgICAgICAgfSkpOworICAgICAgICAgICAgdGVzdDgu
ZG9uZSgpOworICAgICAgICB9KQorICAgICk7CiAKLSAgICBzZXRUaW1lb3V0KHRlc3Q1LnN0ZXBf
ZnVuYyhmdW5jdGlvbigpIHsKKyAgICBzZXRUaW1lb3V0KHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlv
bigpIHsKICAgICAgICAgcmVqZWN0U291cmNlQ2FuY2VsUHJvbWlzZShlcnJvckluQ2FuY2VsKTsK
LSAgICB9KSwgc3RhbmRhcmRUaW1lb3V0KTsKKyAgICB9KSwgMzApOwogfSk7CiAKLXZhciB0ZXN0
NiA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsbGluZyBi
ZWZvcmUgc3RhcnQgZmluaXNoZXMgc2hvdWxkIHByZXZlbnQgcHVsbCgpIGZyb20gYmVpbmcgY2Fs
bGVkJyk7Ci10ZXN0Ni5zdGVwKGZ1bmN0aW9uKCkgewordmFyIHRlc3Q5ID0gYXN5bmNfdGVzdCgn
UmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWxsaW5nIGJlZm9yZSBzdGFydCBmaW5p
c2hlcyBzaG91bGQgcHJldmVudCBwdWxsKCkgZnJvbSBiZWluZyBjYWxsZWQnKTsKK3Rlc3Q5LnN0
ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKICAgICAg
ICAgcHVsbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdwdWxs
IHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCcpOwogICAgICAgICB9CiAgICAgfSk7CiAKLSAg
ICBQcm9taXNlLmFsbChbcnMuY2FuY2VsKCksIHJzLmdldFJlYWRlcigpLmNsb3NlZF0pLnRoZW4o
dGVzdDYuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0Ni5kb25lKCdwdWxsIHNo
b3VsZCBuZXZlciBoYXZlIGJlZW4gY2FsbGVkJyk7Ci0gICAgfSkpLmNhdGNoKHRlc3Q2LnN0ZXBf
ZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF9yZWFjaGVkKGUpOyB9ICkpOwotfSk7Ci0KLXZhciB0
ZXN0NyA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbCBzaG91bGQgZnVsZmlsbCBw
cm9taXNlIHdoZW4gY2FuY2VsIGNhbGxiYWNrIHdlbnQgZmluZScpOwotdGVzdDcuc3RlcChmdW5j
dGlvbigpCi17Ci0gICAgdmFyIGNhbmNlbFJlY2VpdmVkID0gZmFsc2U7Ci0gICAgdmFyIGNhbmNl
bFJlYXNvbiA9ICJJIGFtIHRpcmVkIG9mIHRoaXMgc3RyZWFtLCBJIHByZWZlciB0byBjYW5jZWwg
aXQiOwotICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIGNhbmNlbDog
ZnVuY3Rpb24ocmVhc29uKSB7Ci0gICAgICAgICAgICBjYW5jZWxSZWNlaXZlZCA9IHRydWU7Ci0g
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlYXNvbiwgY2FuY2VsUmVhc29uKTsKLSAgICAgICAg
fQotICAgIH0pOwotICAgIHJzLmNhbmNlbChjYW5jZWxSZWFzb24pLnRoZW4oCi0gICAgICAgIHRl
c3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKGNhbmNl
bFJlY2VpdmVkKTsKLSAgICAgICAgICAgIHRlc3Q3LmRvbmUoKTsKLSAgICAgICAgfSksCi0gICAg
ICAgIHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBhc3NlcnRfdW5y
ZWFjaGVkKCJyZWNlaXZlZCBlcnJvciAiICsgZSkKLSAgICAgICAgfSkpOwotfSk7Ci0KLXZhciB0
ZXN0OCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbCBzaG91bGQgcmVqZWN0IHBy
b21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJhY2sgcmFpc2VzIGFuIGV4Y2VwdGlvbicpOwotdGVzdDgu
c3RlcChmdW5jdGlvbigpCi17Ci0gICAgdmFyIHRocm93bkVycm9yID0gdW5kZWZpbmVkOwotCi0g
ICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgY2FuY2VsOiBmdW5jdGlv
bihlcnJvcikgewotICAgICAgICAgICAgdGhyb3duRXJyb3IgPSBuZXcgRXJyb3IoZXJyb3IpOwot
ICAgICAgICAgICAgdGhyb3cgdGhyb3duRXJyb3I7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAg
IHJzLmNhbmNlbCgidGVzdCIpLnRoZW4oCi0gICAgICAgIHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoImNhbmNlbCBzaG91bGQgZmFpbCIp
Ci0gICAgICAgIH0pLAotICAgICAgICB0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAg
ICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHModGhyb3duRXJyb3IsIHVuZGVmaW5lZCk7Ci0gICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRocm93bkVycm9yKTsKLSAgICAgICAgICAgIHRlc3Q4
LmRvbmUoKTsKLSAgICAgICAgfSkKLSAgICApOwotfSk7Ci0KLXZhciB0ZXN0OSA9IGFzeW5jX3Rl
c3QoJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbCBzaG91bGQgZnVsZmlsbCBwcm9taXNlIHdoZW4gY2Fu
Y2VsIGNhbGxiYWNrIHdlbnQgZmluZSBhZnRlciByZXR1cm5pbmcgYSBwcm9taXNlJyk7Ci10ZXN0
OS5zdGVwKGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgY2FuY2VsUmVhc29uID0gInRlc3QiOwotCi0g
ICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgY2FuY2VsOiBmdW5jdGlv
bihlcnJvcikgewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlcnJvciwgY2FuY2VsUmVhc29u
KTsKLSAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSh0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rp
b24ocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICAgICAgc2V0VGltZW91dCh0ZXN0OS5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAg
ICAgICAgICAgICAgICB9KSwgc3RhbmRhcmRUaW1lb3V0KTsKLSAgICAgICAgICAgIH0pKQotICAg
ICAgICB9Ci0gICAgfSkKLQotICAgIHJzLmNhbmNlbChjYW5jZWxSZWFzb24pLnRoZW4oCi0gICAg
ICAgIHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHRlc3Q5LmRvbmUo
KTsKLSAgICAgICAgfSksCi0gICAgICAgIHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0g
ICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJyZWNlaXZlZCBlcnJvciAiICsgZSkKLSAgICAg
ICAgfSkpCisgICAgUHJvbWlzZS5hbGwoW3JzLmNhbmNlbCgpLCBycy5nZXRSZWFkZXIoKS5jbG9z
ZWRdKS50aGVuKHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgdGVzdDkuZG9u
ZSgncHVsbCBzaG91bGQgbmV2ZXIgaGF2ZSBiZWVuIGNhbGxlZCcpOworICAgIH0pKS5jYXRjaCh0
ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfcmVhY2hlZChlKTsgfSApKTsKIH0p
OwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVk
LnR4dAppbmRleCA3M2UyYjgxY2RmNmIxYzkwOWU5NjhkOWY4Yjk4NDFkODdjN2QxNzNlLi4zMWY1
ZjYyYWQzYjc5MGFiN2VhMTE4YzlmZGRiMjJlY2Y2YjhlMTdjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0
aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQKQEAgLTEsMjUgKzEsMzMgQEAKIAogUEFT
UyBSZWFkYWJsZVN0cmVhbSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBubyBlcnJvcnMgCi1GQUlM
IFJlYWRhYmxlU3RyZWFtIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9m
IHByb3BlcnRpZXMgYXNzZXJ0X2FycmF5X2VxdWFsczogc2hvdWxkIGhhdmUgYWxsIHRoZSBjb3Jy
ZWN0IG1ldGhvZHMgbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIDYgZ290IDUKK1BBU1MgUmVhZGFi
bGVTdHJlYW0gY2FuJ3QgYmUgY29uc3RydWN0ZWQgd2l0aCBnYXJiYWdlIAorRkFJTCBSZWFkYWJs
ZVN0cmVhbSBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0
aWVzIGFzc2VydF9hcnJheV9lcXVhbHM6IHNob3VsZCBoYXZlIGFsbCB0aGUgY29ycmVjdCBtZXRo
b2RzIGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCA3IGdvdCA1CiBQQVNTIFJlYWRhYmxlU3RyZWFt
IGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmb3Igbm9uLWZ1bmN0aW9uIHN0YXJ0IGFyZ3VtZW50
cyAKIFBBU1MgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJh
Z2UgYXMgY2FuY2VsIGFyZ3VtZW50IAogUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBj
YW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBwdWxsIGFyZ3VtZW50IAotUEFTUyBSZWFkYWJsZVN0
cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBzdHJhdGVneSBhcmd1
bWVudCAKLVRJTUVPVVQgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0
dXJuIGEgcHJvbWlzZSBUZXN0IHRpbWVkIG91dAorRkFJTCBSZWFkYWJsZVN0cmVhbSBzdGFydCBz
aG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHByb3BlciBwYXJhbWV0ZXJzIGFzc2VydF9hcnJheV9l
cXVhbHM6IHRoZSBjb250cm9sbGVyIHNob3VsZCBoYXZlIHRoZSByaWdodCBwcm9wZXJ0aWVzIGxl
bmd0aHMgZGlmZmVyLCBleHBlY3RlZCA1IGdvdCA0CitGQUlMIFJlYWRhYmxlU3RyZWFtIHN0YXJ0
IGNvbnRyb2xsZXIgcGFyYW1ldGVyIHNob3VsZCBiZSBleHRlbnNpYmxlIGFzc2VydF9hcnJheV9l
cXVhbHM6IHByb3RvdHlwZSBzaG91bGQgaGF2ZSB0aGUgcmlnaHQgcHJvcGVydGllcyBsZW5ndGhz
IGRpZmZlciwgZXhwZWN0ZWQgNSBnb3QgNAorUEFTUyBSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUg
YWJsZSB0byBjYWxsIHN0YXJ0IG1ldGhvZCB3aXRoaW4gcHJvdG90eXBlIGNoYWluIG9mIGl0cyBz
b3VyY2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVy
biBhIHByb21pc2UgCiBUSU1FT1VUIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxl
IHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCBUZXN0IHRpbWVkIG91dAogUEFTUyBS
ZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBlbnF1ZXVlIGRpZmZlcmVudCBvYmplY3Rz
LiAKLVBBU1MgUmVhZGFibGVTdHJlYW06IGlmIHN0YXJ0IHRocm93cyBhbiBlcnJvciwgaXQgc2hv
dWxkIGJlIHJlLXRocm93biAKIFRJTUVPVVQgUmVhZGFibGVTdHJlYW06IGlmIHB1bGwgcmVqZWN0
cywgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0gVGVzdCB0aW1lZCBvdXQKLUZBSUwgUmVhZGFi
bGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIHVudGlsIHRoZSBwcmV2aW91cyBwdWxsIGNh
bGwncyBwcm9taXNlIGZ1bGZpbGxzIGFzc2VydF9lcXVhbHM6IGFmdGVyIHRoZSBwcm9taXNlIHJl
dHVybmVkIGJ5IHB1bGwgaXMgZnVsZmlsbGVkLCBwdWxsIHNob3VsZCBiZSBjYWxsZWQgYSBzZWNv
bmQgdGltZSBleHBlY3RlZCAyIGJ1dCBnb3QgMQorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxk
IG9ubHkgY2FsbCBwdWxsIG9uY2UgdXBvbiBzdGFydGluZyB0aGUgc3RyZWFtIAorRkFJTCBSZWFk
YWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCB3aGVuIHRyeWluZyB0byByZWFkIGZyb20gYSBz
dGFydGVkLCBlbXB0eSBzdHJlYW0gYXNzZXJ0X2VxdWFsczogcHVsbCBzaG91bGQgYmUgY2FsbGVk
IGFnYWluIGluIHJlYWN0aW9uIHRvIGNhbGxpbmcgcmVhZCBleHBlY3RlZCAyIGJ1dCBnb3QgMwor
UEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ugb24gYSBub24t
ZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBiZWZvcmUgc3RhcnQgZnVsZmlsbHMgCitQQVNTIFJlYWRh
YmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJl
YW0gcmVhZCBmcm9tIGFmdGVyIHN0YXJ0IGZ1bGZpbGxzIAorUEFTUyBSZWFkYWJsZVN0cmVhbTog
c2hvdWxkIG5vdCBjYWxsIHB1bGwoKSBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3Qg
Y2h1bmssIGlmIGRyYWluaW5nIAorRkFJTCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxs
IHB1bGwgdW50aWwgdGhlIHByZXZpb3VzIHB1bGwgY2FsbCdzIHByb21pc2UgZnVsZmlsbHMgYXNz
ZXJ0X2VxdWFsczogcHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlIGFmdGVyIHN0YXJ0
LCBidXQgbm90IHlldCBoYXZlIGJlZW4gY2FsbGVkIGEgc2Vjb25kIHRpbWUgZXhwZWN0ZWQgMSBi
dXQgZ290IDIKK0ZBSUwgUmVhZGFibGVTdHJlYW06IHNob3VsZCBwdWxsIGFmdGVyIHN0YXJ0LCBh
bmQgYWZ0ZXIgZXZlcnkgcmVhZCBhc3NlcnRfZXF1YWxzOiBwdWxsKCkgc2hvdWxkIGJlIGNhbGxl
ZCBleGFjdGx5IGZvdXIgdGltZXMgZXhwZWN0ZWQgNCBidXQgZ290IDEKIFBBU1MgUmVhZGFibGVT
dHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIGFmdGVyIHN0YXJ0IGlmIHRoZSBzdHJlYW0gaXMg
bm93IGNsb3NlZCAKIEZBSUwgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgYWZ0ZXIg
ZW5xdWV1ZWluZyBmcm9tIGluc2lkZSBwdWxsICh3aXRoIG5vIHJlYWQgcmVxdWVzdHMpLCBpZiBz
dHJhdGVneSBhbGxvd3MgYXNzZXJ0X2VxdWFsczogcHVsbCgpIHNob3VsZCBoYXZlIGJlZW4gY2Fs
bGVkIGZvdXIgdGltZXMgZXhwZWN0ZWQgNCBidXQgZ290IDEKIFBBU1MgUmVhZGFibGVTdHJlYW0g
cHVsbCBzaG91bGQgYmUgYWJsZSB0byBjbG9zZSBhIHN0cmVhbS4gCi1GQUlMIFJlYWRhYmxlU3Ry
ZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMgcmVhZGFibGUgYnV0
IGRyYWluaW5nIGFzc2VydF9lcXVhbHM6IHRoZSBmaXJzdCBlbnF1ZXVlIHNob3VsZCByZXR1cm4g
dHJ1ZSBleHBlY3RlZCAoYm9vbGVhbikgdHJ1ZSBidXQgZ290ICh1bmRlZmluZWQpIHVuZGVmaW5l
ZAorUEFTUyBSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc3Ry
ZWFtIGlzIHJlYWRhYmxlIGJ1dCBkcmFpbmluZyAKIFBBU1MgUmVhZGFibGVTdHJlYW06IGVucXVl
dWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyBjbG9zZWQgCiBQQVNTIFJlYWRhYmxl
U3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB0aGUgc3RvcmVkIGVycm9yIHdoZW4gdGhlIHN0
cmVhbSBpcyBlcnJvcmVkIAogRkFJTCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgdW5kZXJs
eWluZyBzb3VyY2UgbWV0aG9kcyBhcyBtZXRob2RzIHJlbGVhc2VMb2NrIGlzIG5vdCBpbXBsZW1l
bnRlZAotRkFJTCBSZWFkYWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVn
eSBzaG91bGQgcmV0dXJuIGZhbHNlIGZvciBhbGwgYnV0IHRoZSBmaXJzdCBlbnF1ZXVlIGNhbGwg
YXNzZXJ0X2VxdWFsczogZmlyc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUgZXhwZWN0ZWQg
KGJvb2xlYW4pIHRydWUgYnV0IGdvdCAodW5kZWZpbmVkKSB1bmRlZmluZWQKLUZBSUwgUmVhZGFi
bGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGNvbnRpbnVl
IHJldHVybmluZyB0cnVlIGZyb20gZW5xdWV1ZSBpZiB0aGUgY2h1bmtzIGFyZSByZWFkIGltbWVk
aWF0ZWx5IGFzc2VydF9lcXVhbHM6IGZpcnN0IGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlIGV4
cGVjdGVkIChib29sZWFuKSB0cnVlIGJ1dCBnb3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkCi1USU1F
T1VUIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgcmFuZG9tIHB1
c2ggc291cmNlIFRlc3QgdGltZWQgb3V0CitGQUlMIFJlYWRhYmxlU3RyZWFtIHN0cmF0ZWdpZXM6
IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCBnaXZlIGRlc2lyZWRTaXplIG9mIDEgdG8gc3Rh
cnQsIGRlY3JlYXNpbmcgYnkgMSBwZXIgZW5xdWV1ZSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAo
bnVtYmVyKSAxIGJ1dCBnb3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkCitGQUlMIFJlYWRhYmxlU3Ry
ZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCBjb250aW51ZSBnaXZp
bmcgZGVzaXJlZFNpemUgb2YgMSBpZiB0aGUgY2h1bmtzIGFyZSByZWFkIGltbWVkaWF0ZWx5IGFz
c2VydF9lcXVhbHM6IGRlc2lyZWRTaXplIHNob3VsZCBzdGFydCBhdCAxIGV4cGVjdGVkIChudW1i
ZXIpIDEgYnV0IGdvdCAodW5kZWZpbmVkKSB1bmRlZmluZWQKK1BBU1MgUmVhZGFibGVTdHJlYW0g
aW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYSByYW5kb20gcHVzaCBzb3VyY2UgCiBQQVNTIFJl
YWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgc3luYyBwdWxsIHNvdXJj
ZSAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50
YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9z
dHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4
cGVjdGVkLnR4dAppbmRleCBlMDAwMTg0MmUzOTk5YTIyMzNhNTc0M2FkZDhiNGEwZWMwNDgzNWEz
Li43OWIwMDM0NzdiZWEzMzhkNDFjYWMzZTY3YjliYzFhNDE2MWY2YWYwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJl
YW0tcmVhZGVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5j
ZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dApAQCAt
NiwxMyArNiwxNiBAQCBQQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBzaG91bGQgYWx3
YXlzIHJldHVybiB0aGUgc2FtZSBwcm9taXNlIG9iamVjdAogUEFTUyBDb25zdHJ1Y3RpbmcgYSBS
ZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlz
IGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0IGNvbnN0cnVjdGlvbikgCiBQQVNTIEdldHRpbmcg
YSBSZWFkYWJsZVN0cmVhbVJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBz
dHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgY29uc3RydWN0aW9uKSAKIFBBU1Mg
Q29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwg
aWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRlcikgCi1QQVNTIEdl
dHRpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlm
IHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgZ2V0UmVhZGVyKSAKK1BB
U1MgR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZh
aWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRlcikgCiBQQVNT
IENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBP
SyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCAKIFBBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVT
dHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgZXJyb3Jl
ZCAKIFBBU1MgUmVhZGluZyBmcm9tIGEgcmVhZGVyIGZvciBhbiBlbXB0eSBzdHJlYW0gd2lsbCB3
YWl0IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxhYmxlIAogRkFJTCBjYW5jZWwoKSBvbiBhIHJlYWRl
ciByZWxlYXNlcyB0aGUgcmVhZGVyIGJlZm9yZSBjYWxsaW5nIHRocm91Z2ggY2FuY2VsIGlzIG5v
dCBpbXBsZW1lbnRlZAogUEFTUyBjbG9zZWQgc2hvdWxkIGJlIGZ1bGZpbGxlZCBhZnRlciBzdHJl
YW0gaXMgY2xvc2VkICguY2xvc2VkIGFjY2VzcyBiZWZvcmUgYWNxdWlyaW5nKSAKIEZBSUwgY2xv
c2VkIHNob3VsZCBiZSBmdWxmaWxsZWQgYWZ0ZXIgcmVhZGVyIHJlbGVhc2VzIGl0cyBsb2NrICht
dWx0aXBsZSBzdHJlYW0gbG9ja3MpIHJlbGVhc2VMb2NrIGlzIG5vdCBpbXBsZW1lbnRlZAorRkFJ
TCBNdWx0aXBsZSByZWFkZXJzIGNhbiBhY2Nlc3MgdGhlIHN0cmVhbSBpbiBzZXF1ZW5jZSByZWxl
YXNlTG9jayBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgQ2Fubm90IHVzZSBhbiBhbHJlYWR5LXJl
bGVhc2VkIHJlYWRlciB0byB1bmxvY2sgYSBzdHJlYW0gYWdhaW4gcmVsZWFzZUxvY2sgaXMgbm90
IGltcGxlbWVudGVkCitGQUlMIGNhbmNlbCgpIG9uIGEgcmVsZWFzZWQgcmVhZGVyIGlzIGEgbm8t
b3AgYW5kIGRvZXMgbm90IHBhc3MgdGhyb3VnaCByZWxlYXNlTG9jayBpcyBub3QgaW1wbGVtZW50
ZWQKIFBBU1MgR2V0dGluZyBhIHNlY29uZCByZWFkZXIgYWZ0ZXIgZXJyb3JpbmcgdGhlIHN0cmVh
bSBzaG91bGQgc3VjY2VlZCAKK1BBU1MgR2FyYmFnZS1jb2xsZWN0aW5nIGEgUmVhZGFibGVTdHJl
YW1SZWFkZXIgc2hvdWxkIG5vdCB1bmxvY2sgaXRzIHN0cmVhbSAKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFt
LXJlYWRlci5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRp
b24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1sCmluZGV4IDM1ODM0M2FlNDI5YjQ2MGRiNWQy
YWY4MzFiMWMzNmRhN2FmN2NlODkuLjk4OWFmNDk5NDZkMzlhMWMyNGYzMmRhMTI5ZTlhYWRlZjNi
ZmI1ZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVu
dGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmh0bWwK
QEAgLTIsNiArMiw3IEBACiA8c2NyaXB0IHNyYz0nLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzJz48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMnPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9J3Jlc291cmNlcy9zdHJlYW1zLXV0aWxz
LmpzJz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPScuLi8uLi9yZXNvdXJjZXMvZ2MuanMnPjwvc2Ny
aXB0PgogPHNjcmlwdD4KIHZhciBSZWFkYWJsZVN0cmVhbVJlYWRlcjsKIApAQCAtODQsNyArODUs
NyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgp
OwogICAgIHJzLmdldFJlYWRlcigpOyAvLyBnZXRSZWFkZXIoKSBzaG91bGQgYmUgZmluZS4KICAg
ICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IHJzLmdldFJlYWRl
cigpOyB9LCAnZ2V0UmVhZGVyKCkgc2hvdWxkIGZhaWwnKTsKLX0sICdHZXR0aW5nIGEgUmVhZGFi
bGVTdHJlYW1SZWFkZXIgdmlhIGdldFJlYWRlciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlz
IGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0IGdldFJlYWRlciknKTsKK30sICdHZXR0aW5nIGEg
UmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdldFJlYWRlciBzaG91bGQgZmFpbCBpZiB0aGUgc3Ry
ZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVhZGVyKScpOwogCiB0ZXN0KGZ1bmN0aW9u
KCkgewogICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CkBAIC0xOTAsMzYgKzE5MSwz
MiBAQCB0ZXN0NC5zdGVwKGZ1bmN0aW9uKCkgewogICAgIH0pKTsKIH0pOwogCi0vLyB2YXIgdGVz
dDUgPSBhc3luY190ZXN0KCdNdWx0aXBsZSByZWFkZXJzIGNhbiBhY2Nlc3MgdGhlIHN0cmVhbSBp
biBzZXF1ZW5jZScpOwotLy8gdGVzdDUuc3RlcChmdW5jdGlvbigpIHsKLS8vICAgICB2YXIgcmVh
ZENvdW50ID0gMDsKLS8vICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotLy8gICAg
ICAgICBzdGFydDogZnVuY3Rpb24oYykgewotLy8gICAgICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7
Ci0vLyAgICAgICAgICAgICBjLmVucXVldWUoJ2InKTsKLS8vICAgICAgICAgICAgIGMuY2xvc2Uo
KTsKLS8vICAgICAgICAgfQotLy8gICAgIH0pOwotCi0vLyAgICAgdmFyIHJlYWRlcjEgPSBycy5n
ZXRSZWFkZXIoKTsKLS8vICAgICByZWFkZXIxLnJlYWQoKS50aGVuKHRlc3Q1LnN0ZXBfZnVuYyhm
dW5jdGlvbihyKSB7Ci0vLyAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6
ICdhJywgZG9uZTogZmFsc2UgfSwgJ3JlYWRpbmcgdGhlIGZpcnN0IGNodW5rIGZyb20gcmVhZGVy
MSB3b3JrcycpOwotLy8gICAgICAgICArK3JlYWRDb3VudDsKLS8vICAgICB9KSk7Ci0vLyAgICAg
cmVhZGVyMS5yZWxlYXNlTG9jaygpOwotCi0vLyAgICAgdmFyIHJlYWRlcjIgPSBycy5nZXRSZWFk
ZXIoKTsKLS8vICAgICByZWFkZXIyLnJlYWQoKS50aGVuKHRlc3Q1LnN0ZXBfZnVuYyhmdW5jdGlv
bihyKSB7Ci0vLyAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdiJywg
ZG9uZTogZmFsc2UgfSwgJ3JlYWRpbmcgdGhlIHNlY29uZCBjaHVuayBmcm9tIHJlYWRlcjIgd29y
a3MnKTsKLS8vICAgICAgICAgKytyZWFkQ291bnQ7Ci0vLyAgICAgfSkpOwotLy8gICAgIHJlYWRl
cjIucmVsZWFzZUxvY2soKTsKLQotLy8gICAgIHNldFRpbWVvdXQodGVzdDUuc3RlcF9mdW5jKGZ1
bmN0aW9uKCkgewotLy8gICAgICAgICBhc3NlcnRfZXF1YWxzKHJlYWRDb3VudCwgMik7Ci0vLyAg
ICAgICAgIHRlc3Q1LmRvbmUoKTsKLS8vICAgICB9KSwgc3RhbmRhcmRUaW1lb3V0KTsKLS8vIH0p
OwordmFyIHRlc3Q1ID0gYXN5bmNfdGVzdCgnTXVsdGlwbGUgcmVhZGVycyBjYW4gYWNjZXNzIHRo
ZSBzdHJlYW0gaW4gc2VxdWVuY2UnKTsKK3Rlc3Q1LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFy
IHJlYWRDb3VudCA9IDA7CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAg
ICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOworICAg
ICAgICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICAgICAgICBjLmNsb3NlKCk7CisgICAgICAg
IH0KKyAgICB9KTsKKworICAgIHZhciByZWFkZXIxID0gcnMuZ2V0UmVhZGVyKCk7CisgICAgcmVh
ZGVyMS5yZWFkKCkudGhlbih0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgeworICAgICAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdyZWFk
aW5nIHRoZSBmaXJzdCBjaHVuayBmcm9tIHJlYWRlcjEgd29ya3MnKTsKKyAgICAgICAgKytyZWFk
Q291bnQ7CisgICAgfSkpOworICAgIHJlYWRlcjEucmVsZWFzZUxvY2soKTsKKworICAgIHZhciBy
ZWFkZXIyID0gcnMuZ2V0UmVhZGVyKCk7CisgICAgcmVhZGVyMi5yZWFkKCkudGhlbih0ZXN0NS5z
dGVwX2Z1bmMoZnVuY3Rpb24ocikgeworICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7
IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sICdyZWFkaW5nIHRoZSBzZWNvbmQgY2h1bmsgZnJv
bSByZWFkZXIyIHdvcmtzJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoKytyZWFkQ291bnQsIDIp
OworICAgICAgICB0ZXN0NS5kb25lKCk7CisgICAgfSkpOworICAgIHJlYWRlcjIucmVsZWFzZUxv
Y2soKTsKK30pOwogCiB2YXIgdGVzdDYgPSBhc3luY190ZXN0KCdDYW5ub3QgdXNlIGFuIGFscmVh
ZHktcmVsZWFzZWQgcmVhZGVyIHRvIHVubG9jayBhIHN0cmVhbSBhZ2FpbicpOwogdGVzdDYuc3Rl
cChmdW5jdGlvbigpIHsKQEAgLTI0MSwzOCArMjM4LDMyIEBAIHRlc3Q2LnN0ZXAoZnVuY3Rpb24o
KSB7CiAgICAgfSkpOwogfSk7CiAKLS8vIHZhciB0ZXN0NyA9IGFzeW5jX3Rlc3QoJ2NhbmNlbCgp
IG9uIGEgcmVsZWFzZWQgcmVhZGVyIGlzIGEgbm8tb3AgYW5kIGRvZXMgbm90IHBhc3MgdGhyb3Vn
aCcpOwotLy8gdGVzdDcuc3RlcChmdW5jdGlvbigpIHsKLS8vICAgICB2YXIgcmVhZENvdW50cyA9
IDA7Ci0vLyAgICAgdmFyIGNhbmNlbGxlZCA9IGZhbHNlOwotLy8gICAgIHZhciBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7Ci0vLyAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0vLyAgICAg
ICAgICAgICBjLmVucXVldWUoJ2EnKTsKLS8vICAgICAgICAgfSwKLS8vICAgICAgICAgY2FuY2Vs
OiBmdW5jdGlvbigpIHsKLS8vICAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ3VuZGVybHlp
bmcgc291cmNlIGNhbmNlbCBzaG91bGQgbm90IGJlIGNhbGxlZCcpOwotLy8gICAgICAgICB9Ci0v
LyAgICAgfSk7Ci0KLS8vICAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0vLyAgICAg
cmVhZGVyLnJlbGVhc2VMb2NrKCk7Ci0vLyAgICAgcmVhZGVyLmNhbmNlbCgpLnRoZW4odGVzdDcu
c3RlcF9mdW5jKGZ1bmN0aW9uKHYpIHsKLS8vICAgICAgICAgYXNzZXJ0X2VxdWFscyh2LCB1bmRl
ZmluZWQsICdjYW5jZWwoKSBvbiB0aGUgcmVhZGVyIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZp
bmVkJykKLS8vICAgICAgICAgY2FuY2VsbGVkID0gdHJ1ZTsKLS8vICAgICB9KSk7Ci0KLS8vICAg
ICB2YXIgcmVhZGVyMiA9IHJzLmdldFJlYWRlcigpOwotLy8gICAgIHJlYWRlcjIucmVhZCgpLnRo
ZW4odGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKLS8vICAgICAgICAgYXNzZXJ0X29iamVj
dF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnYSBuZXcgcmVhZGVyIHNo
b3VsZCBiZSBhYmxlIHRvIHJlYWQgYSBjaHVuaycpOwotLy8gICAgICAgICArK3JlYWRDb3VudHM7
Ci0vLyAgICAgfSkpOwotCi0vLyAgICAgc2V0VGltZW91dCh0ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rp
b24oKSB7Ci0vLyAgICAgICAgIGFzc2VydF90cnVlKGNhbmNlbGxlZCk7Ci0vLyAgICAgICAgIGFz
c2VydF9lcXVhbHMocmVhZENvdW50cywgMSk7Ci0vLyAgICAgICAgIHRlc3Q3LmRvbmUoKTsKLS8v
ICAgICB9KSwgc3RhbmRhcmRUaW1lb3V0KTsKLS8vIH0pOwordmFyIHRlc3Q3ID0gYXN5bmNfdGVz
dCgnY2FuY2VsKCkgb24gYSByZWxlYXNlZCByZWFkZXIgaXMgYSBuby1vcCBhbmQgZG9lcyBub3Qg
cGFzcyB0aHJvdWdoJyk7Cit0ZXN0Ny5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciBjYW5jZWxs
ZWQgPSBmYWxzZTsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBz
dGFydDogZnVuY3Rpb24oYykgeworICAgICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICAg
IH0sCisgICAgICAgIGNhbmNlbDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdW5y
ZWFjaGVkKCd1bmRlcmx5aW5nIHNvdXJjZSBjYW5jZWwgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKTsK
KyAgICAgICAgfQorICAgIH0pOworCisgICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwor
ICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOworICAgIHJlYWRlci5jYW5jZWwoKS50aGVuKHRlc3Q3
LnN0ZXBfZnVuYyhmdW5jdGlvbih2KSB7CisgICAgICAgIGFzc2VydF9lcXVhbHModiwgdW5kZWZp
bmVkLCAnY2FuY2VsKCkgb24gdGhlIHJlYWRlciBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5l
ZCcpCisgICAgICAgIGNhbmNlbGxlZCA9IHRydWU7CisgICAgfSkpOworCisgICAgdmFyIHJlYWRl
cjIgPSBycy5nZXRSZWFkZXIoKTsKKyAgICByZWFkZXIyLnJlYWQoKS50aGVuKHRlc3Q3LnN0ZXBf
ZnVuYyhmdW5jdGlvbihyKSB7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFs
dWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2EgbmV3IHJlYWRlciBzaG91bGQgYmUgYWJsZSB0byBy
ZWFkIGEgY2h1bmsnKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoY2FuY2VsbGVkKTsKKyAgICAgICAg
dGVzdDcuZG9uZSgpOworICAgIH0pKTsKK30pOwogCiB2YXIgdGVzdDggPSBhc3luY190ZXN0KCdH
ZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBhZnRlciBlcnJvcmluZyB0aGUgc3RyZWFtIHNob3VsZCBz
dWNjZWVkJyk7CiB0ZXN0OC5zdGVwKGZ1bmN0aW9uKCkgewpAQCAtMzEyLDQgKzMwMywxMyBAQCB0
ZXN0OC5zdGVwKGZ1bmN0aW9uKCkgewogICAgICAgICB0ZXN0OC5kb25lKCk7CiAgICAgfSkpOwog
fSk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHt9KTsKKworICAgIHJzLmdldFJlYWRlcigpOworICAgIHdpbmRvdy5nYygpOworCisgICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBycy5nZXRSZWFkZXIoKTsg
fSwgJ29sZCByZWFkZXIgc2hvdWxkIHN0aWxsIGJlIGxvY2tpbmcgdGhlIHN0cmVhbSBldmVuIGFm
dGVyIGdhcmJhZ2UgY29sbGVjdGlvbicpOworfSwgJ0dhcmJhZ2UtY29sbGVjdGluZyBhIFJlYWRh
YmxlU3RyZWFtUmVhZGVyIHNob3VsZCBub3QgdW5sb2NrIGl0cyBzdHJlYW0nKTsKIDwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRp
b24vcmVhZGFibGUtc3RyZWFtLXRlZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVlLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lNzVmMjZmMTEwY2IyZDdmYjgxNGFlYzRjMzUzMDIzNjkyZmI3NWIyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50
YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAor
CitGQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogcnMudGVlKCkgcmV0dXJucyBhbiBhcnJheSBv
ZiB0d28gUmVhZGFibGVTdHJlYW1zIHJzLnRlZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdycy50
ZWUoKScsICdycy50ZWUnIGlzIHVuZGVmaW5lZCkKK0ZBSUwgUmVhZGFibGVTdHJlYW0gdGVlaW5n
OiBzaG91bGQgYmUgYWJsZSB0byByZWFkIG9uZSBicmFuY2ggdG8gdGhlIGVuZCB3aXRob3V0IGFm
ZmVjdGluZyB0aGUgb3RoZXIgcnMudGVlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnRlZSgp
JywgJ3JzLnRlZScgaXMgdW5kZWZpbmVkKQorRkFJTCBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHZh
bHVlcyBzaG91bGQgYmUgZXF1YWwgYWNyb3NzIGVhY2ggYnJhbmNoIHJzLnRlZSBpcyBub3QgYSBm
dW5jdGlvbi4gKEluICdycy50ZWUoKScsICdycy50ZWUnIGlzIHVuZGVmaW5lZCkKK0ZBSUwgUmVh
ZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcnMgaW4gdGhlIHNvdXJjZSBzaG91bGQgcHJvcGFnYXRl
IHRvIGJvdGggYnJhbmNoZXMgcnMudGVlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnRlZSgp
JywgJ3JzLnRlZScgaXMgdW5kZWZpbmVkKQorRkFJTCBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNh
bmNlbGluZyBicmFuY2gxIHNob3VsZCBub3QgaW1wYWN0IGJyYW5jaDIgcnMudGVlIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ3JzLnRlZSgpJywgJ3JzLnRlZScgaXMgdW5kZWZpbmVkKQorRkFJTCBS
ZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBicmFuY2gyIHNob3VsZCBub3QgaW1wYWN0
IGJyYW5jaDEgcnMudGVlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnRlZSgpJywgJ3JzLnRl
ZScgaXMgdW5kZWZpbmVkKQorRkFJTCBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBi
b3RoIGJyYW5jaGVzIHNob3VsZCBhZ2dyZWdhdGUgdGhlIGNhbmNlbCByZWFzb25zIGludG8gYW4g
YXJyYXkgcnMudGVlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnRlZSgpJywgJ3JzLnRlZScg
aXMgdW5kZWZpbmVkKQorRkFJTCBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGZhaWxpbmcgdG8gY2Fu
Y2VsIHRoZSBvcmlnaW5hbCBzdHJlYW0gc2hvdWxkIGNhdXNlIGNhbmNlbCgpIHRvIHJlamVjdCBv
biBicmFuY2hlcyBycy50ZWUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudGVlKCknLCAncnMu
dGVlJyBpcyB1bmRlZmluZWQpCitGQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2xvc2luZyB0
aGUgb3JpZ2luYWwgc2hvdWxkIGltbWVkaWF0ZWx5IGNsb3NlIHRoZSBicmFuY2hlcyBycy50ZWUg
aXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudGVlKCknLCAncnMudGVlJyBpcyB1bmRlZmluZWQp
CitGQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogZXJyb3JpbmcgdGhlIG9yaWdpbmFsIHNob3Vs
ZCBpbW1lZGlhdGVseSBlcnJvciB0aGUgYnJhbmNoZXMgcnMudGVlIGlzIG5vdCBhIGZ1bmN0aW9u
LiAoSW4gJ3JzLnRlZSgpJywgJ3JzLnRlZScgaXMgdW5kZWZpbmVkKQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJl
YW0tdGVlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlv
bi9yZWFkYWJsZS1zdHJlYW0tdGVlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGRhNjlkMjkzMDlkN2UyYTdj
ZWMwM2ZmNmI5MjY2NzBmZjMwYzllNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZWUuaHRtbApA
QCAtMCwwICsxLDMwNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0nLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzJz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPScuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMnPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9J3Jlc291
cmNlcy9zdHJlYW1zLXV0aWxzLmpzJz48L3NjcmlwdD4KKzxzY3JpcHQ+Cit0ZXN0KGZ1bmN0aW9u
KCkgeworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworCisgICAgdmFyIHJlc3Vs
dCA9IHJzLnRlZSgpOworCisgICAgYXNzZXJ0X3RydWUoQXJyYXkuaXNBcnJheShyZXN1bHQpLCAn
cmV0dXJuIHZhbHVlIHNob3VsZCBiZSBhbiBhcnJheScpOworICAgIGFzc2VydF9lcXVhbHMocmVz
dWx0Lmxlbmd0aCwgMiwgJ2FycmF5IHNob3VsZCBoYXZlIGxlbmd0aCAyJyk7CisgICAgYXNzZXJ0
X2VxdWFscyhyZXN1bHRbMF0uY29uc3RydWN0b3IsIFJlYWRhYmxlU3RyZWFtLCAnMHRoIGVsZW1l
bnQgc2hvdWxkIGJlIGEgUmVhZGFibGVTdHJlYW0nKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3Vs
dFsxXS5jb25zdHJ1Y3RvciwgUmVhZGFibGVTdHJlYW0sICcxc3QgZWxlbWVudCBzaG91bGQgYmUg
YSBSZWFkYWJsZVN0cmVhbScpOworfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogcnMudGVlKCkg
cmV0dXJucyBhbiBhcnJheSBvZiB0d28gUmVhZGFibGVTdHJlYW1zJyk7CisKK3ZhciB0ZXN0MSA9
IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogc2hvdWxkIGJlIGFibGUgdG8gcmVh
ZCBvbmUgYnJhbmNoIHRvIHRoZSBlbmQgd2l0aG91dCBhZmZlY3RpbmcgdGhlIG90aGVyJyk7Cit0
ZXN0MS5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciBjbG9zZWRDYWxsZWQgPSBmYWxzZTsKKyAg
ICB2YXIgcmVhZENhbGxzID0gMDsKKyAgICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAgICBjLmVucXVldWUoJ2En
KTsKKyAgICAgICAgICAgIGMuZW5xdWV1ZSgnYicpOworICAgICAgICAgICAgYy5jbG9zZSgpOwor
ICAgICAgICB9CisgICAgfSk7CisKKyAgICB2YXIgYnJhbmNoID0gcnMudGVlKCk7CisgICAgdmFy
IGJyYW5jaDEgPSBicmFuY2hbMF07CisgICAgdmFyIGJyYW5jaDIgPSBicmFuY2hbMV07CisgICAg
dmFyIHJlYWRlcjEgPSBicmFuY2gxLmdldFJlYWRlcigpOworICAgIHZhciByZWFkZXIyID0gYnJh
bmNoMi5nZXRSZWFkZXIoKTsKKworICAgIHJlYWRlcjEuY2xvc2VkLnRoZW4odGVzdDEuc3RlcF9m
dW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBjbG9zZWRDYWxsZWQgPSB0cnVlOworICAgIH0pKS5j
YXRjaCh0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9
KSk7CisgICAgcmVhZGVyMi5jbG9zZWQudGhlbih0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
IGFzc2VydF91bnJlYWNoZWQoJ2JyYW5jaDIgc2hvdWxkIG5vdCBiZSBjbG9zZWQnKTsgfSkpOwor
CisgICAgcmVhZGVyMS5yZWFkKCkudGhlbih0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgewor
ICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNl
IH0sICdmaXJzdCBjaHVuayBmcm9tIGJyYW5jaDEgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKyAgICAg
ICAgKytyZWFkQ2FsbHM7CisgICAgfSkpOworICAgIHJlYWRlcjEucmVhZCgpLnRoZW4odGVzdDEu
c3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKKyAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwg
eyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LCAnc2Vjb25kIGNodW5rIGZyb20gYnJhbmNoMSBz
aG91bGQgYmUgY29ycmVjdCcpOworICAgICAgICArK3JlYWRDYWxsczsKKyAgICB9KSk7CisgICAg
cmVhZGVyMS5yZWFkKCkudGhlbih0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgeworICAgICAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUg
fSwgJ3RoaXJkIHJlYWQoKSBmcm9tIGJyYW5jaDEgc2hvdWxkIGJlIGRvbmUnKTsKKyAgICAgICAg
YXNzZXJ0X3RydWUoY2xvc2VkQ2FsbGVkKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscygrK3JlYWRD
YWxscywgNCk7CisgICAgICAgIHRlc3QxLmRvbmUoKTsKKyAgICB9KSk7CisKKyAgICByZWFkZXIy
LnJlYWQoKS50aGVuKHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7CisgICAgICAgIGFzc2Vy
dF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IGNo
dW5rIGZyb20gYnJhbmNoMiBzaG91bGQgYmUgY29ycmVjdCcpOworICAgICAgICArK3JlYWRDYWxs
czsKKyAgICB9KSk7Cit9KTsKKwordmFyIHRlc3QyID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJl
YW0gdGVlaW5nOiB2YWx1ZXMgc2hvdWxkIGJlIGVxdWFsIGFjcm9zcyBlYWNoIGJyYW5jaCcpOwor
dGVzdDIuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgdGhlT2JqZWN0ID0geyB0aGU6ICd0ZXN0
IG9iamVjdCcgfTsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBz
dGFydDogZnVuY3Rpb24oYykgeworICAgICAgICAgICAgYy5lbnF1ZXVlKHRoZU9iamVjdCk7Cisg
ICAgICAgIH0KKyAgICB9KTsKKworICAgIHZhciBicmFuY2ggPSBycy50ZWUoKTsKKyAgICB2YXIg
YnJhbmNoMSA9IGJyYW5jaFswXTsKKyAgICB2YXIgYnJhbmNoMiA9IGJyYW5jaFsxXTsKKyAgICB2
YXIgcmVhZGVyMSA9IGJyYW5jaDEuZ2V0UmVhZGVyKCk7CisgICAgdmFyIHJlYWRlcjIgPSBicmFu
Y2gyLmdldFJlYWRlcigpOworCisgICAgUHJvbWlzZS5hbGwoW3JlYWRlcjEucmVhZCgpLCByZWFk
ZXIyLnJlYWQoKV0pLnRoZW4odGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKHZhbHVlcykgeworICAg
ICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyh2YWx1ZXNbMF0sIHZhbHVlc1sxXSwgJ3RoZSB2YWx1
ZXMgc2hvdWxkIGJlIGVxdWFsJyk7CisgICAgICAgIHRlc3QyLmRvbmUoKTsKKyAgICB9KSk7Cit9
KTsKKwordmFyIHRlc3QzID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJv
cnMgaW4gdGhlIHNvdXJjZSBzaG91bGQgcHJvcGFnYXRlIHRvIGJvdGggYnJhbmNoZXMnKTsKK3Rl
c3QzLnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIGNsb3NlZFJlamVjdHMgPSAwOworICAgIHZh
ciByZWFkQ2FsbHMgPSAwOworICAgIHZhciByZWFkUmVqZWN0cyA9IDA7CisgICAgdmFyIHRoZUVy
cm9yID0gbmV3IEVycm9yKCdib28hJyk7CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgICAgIGMuZW5xdWV1ZSgn
YScpOworICAgICAgICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICAgIH0sCisgICAgICAgIHB1
bGw6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGhyb3cgdGhlRXJyb3I7CisgICAgICAgIH0K
KyAgICB9KTsKKworICAgIHZhciBicmFuY2ggPSBycy50ZWUoKTsKKyAgICB2YXIgYnJhbmNoMSA9
IGJyYW5jaFswXTsKKyAgICB2YXIgYnJhbmNoMiA9IGJyYW5jaFsxXTsKKyAgICB2YXIgcmVhZGVy
MSA9IGJyYW5jaDEuZ2V0UmVhZGVyKCk7CisgICAgdmFyIHJlYWRlcjIgPSBicmFuY2gyLmdldFJl
YWRlcigpOworCisgICAgcmVhZGVyMS5sYWJlbCA9ICdyZWFkZXIxJzsKKyAgICByZWFkZXIyLmxh
YmVsID0gJ3JlYWRlcjInOworCisgICAgcmVhZGVyMS5jbG9zZWQuY2F0Y2godGVzdDMuc3RlcF9m
dW5jKGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgKytjbG9zZWRSZWplY3RzOworICAgICAgICBhc3Nl
cnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnYnJhbmNoMSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgcmVq
ZWN0IHdpdGggdGhlIGVycm9yJyk7CisgICAgfSkpOworICAgIHJlYWRlcjIuY2xvc2VkLmNhdGNo
KHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CisgICAgICAgICsrY2xvc2VkUmVqZWN0czsK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2JyYW5jaDIgY2xvc2VkIHByb21p
c2Ugc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOworICAgIH0pKTsKKworICAgIHJlYWRl
cjEucmVhZCgpLnRoZW4odGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKKyAgICAgICAgKyty
ZWFkQ2FsbHM7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywg
ZG9uZTogZmFsc2UgfSwgJ3Nob3VsZCBiZSBhYmxlIHRvIHJlYWQgdGhlIGZpcnN0IGNodW5rIGlu
IGJyYW5jaDEnKTsKKyAgICB9KSk7CisKKyAgICByZWFkZXIxLnJlYWQoKS50aGVuKHRlc3QzLnN0
ZXBfZnVuYyhmdW5jdGlvbihyKSB7CisgICAgICAgICsrcmVhZENhbGxzOworICAgICAgICBhc3Nl
cnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sICdzaG91bGQg
YmUgYWJsZSB0byByZWFkIHRoZSBzZWNvbmQgY2h1bmsgaW4gYnJhbmNoMScpOworCisgICAgICAg
IHJldHVybiByZWFkZXIyLnJlYWQoKS50aGVuKAorICAgICAgICAgICAgdGVzdDMuc3RlcF9mdW5j
KGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdvbmNlIHRoZSByb290IHN0cmVhbSBoYXMg
ZXJyb3JlZCwgeW91IHNob3VsZCBub3QgYmUgYWJsZSB0byByZWFkIGZyb20gYnJhbmNoMicpOyB9
KSwKKyAgICAgICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CisgICAgICAgICAg
ICAgICAgKytyZWFkUmVqZWN0czsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRo
ZUVycm9yLCAnYnJhbmNoMiByZWFkKCkgcHJvbWlzZSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVy
cm9yJyk7CisgICAgICAgICAgICB9KSk7CisgICAgfSkpLnRoZW4odGVzdDMuc3RlcF9mdW5jKGZ1
bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gcmVhZGVyMS5yZWFkKCkudGhlbigKKyAgICAgICAg
ICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnb25jZSB0
aGUgcm9vdCBzdHJlYW0gaGFzIGVycm9yZWQsIHlvdSBzaG91bGQgbm90IGJlIGFibGUgdG8gcmVh
ZCBmcm9tIGJyYW5jaDEgZWl0aGVyJyk7IH0pLAorICAgICAgICAgICAgdGVzdDMuc3RlcF9mdW5j
KGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNsb3NlZFJlamVj
dHMsIDIpOworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVhZENhbGxzLCAyKTsKKyAg
ICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKCsrcmVhZFJlamVjdHMsIDIpOworICAgICAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdicmFuY2gxIHJlYWQoKSBwcm9taXNl
IHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKKyAgICAgICAgICAgICAgICB0ZXN0My5k
b25lKCk7CisgICAgICAgICAgICB9KQorICAgICAgICApOworICAgIH0pKS5jYXRjaCh0ZXN0My5z
dGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9KSk7Cit9KTsKKwor
dmFyIHRlc3Q0ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcg
YnJhbmNoMSBzaG91bGQgbm90IGltcGFjdCBicmFuY2gyJyk7Cit0ZXN0NC5zdGVwKGZ1bmN0aW9u
KCkgeworICAgIHZhciBicmFuY2gxUmVhZCA9IGZhbHNlOworICAgIHZhciBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAgICBj
LmVucXVldWUoJ2EnKTsKKyAgICAgICAgICAgIGMuZW5xdWV1ZSgnYicpOworICAgICAgICAgICAg
Yy5jbG9zZSgpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICB2YXIgYnJhbmNoID0gcnMudGVl
KCk7CisgICAgdmFyIGJyYW5jaDEgPSBicmFuY2hbMF07CisgICAgdmFyIGJyYW5jaDIgPSBicmFu
Y2hbMV07CisgICAgYnJhbmNoMS5jYW5jZWwoKTsKKworICAgIHJlYWRhYmxlU3RyZWFtVG9BcnJh
eShicmFuY2gxKS50aGVuKHRlc3Q0LnN0ZXBfZnVuYyhmdW5jdGlvbihjaHVua3MpIHsKKyAgICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3MsIFtdLCAnYnJhbmNoMSBzaG91bGQgaGF2ZSBu
byBjaHVua3MnKTsKKyAgICAgICAgYnJhbmNoMVJlYWQgPSB0cnVlOworICAgIH0pKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBy
ZWFkYWJsZVN0cmVhbVRvQXJyYXkoYnJhbmNoMikudGhlbih0ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rp
b24oY2h1bmtzKSB7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbJ2EnLCAn
YiddLCAnYnJhbmNoMiBzaG91bGQgaGF2ZSB0d28gY2h1bmtzJyk7CisgICAgICAgIGFzc2VydF90
cnVlKGJyYW5jaDFSZWFkKTsKKyAgICAgICAgdGVzdDQuZG9uZSgpOworICAgIH0pKTsKK30pOwor
Cit2YXIgdGVzdDUgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGlu
ZyBicmFuY2gyIHNob3VsZCBub3QgaW1wYWN0IGJyYW5jaDEnKTsKK3Rlc3Q1LnN0ZXAoZnVuY3Rp
b24oKSB7CisgICAgdmFyIGJyYW5jaDJSZWFkID0gZmFsc2U7CisgICAgdmFyIHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgICAg
IGMuZW5xdWV1ZSgnYScpOworICAgICAgICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICAgICAg
ICBjLmNsb3NlKCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHZhciBicmFuY2ggPSBycy50
ZWUoKTsKKyAgICB2YXIgYnJhbmNoMSA9IGJyYW5jaFswXTsKKyAgICB2YXIgYnJhbmNoMiA9IGJy
YW5jaFsxXTsKKyAgICBicmFuY2gyLmNhbmNlbCgpOworCisgICAgcmVhZGFibGVTdHJlYW1Ub0Fy
cmF5KGJyYW5jaDEpLnRoZW4odGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKGNodW5rcykgeworICAg
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywgWydhJywgJ2InXSwgJ2JyYW5jaDEgc2hv
dWxkIGhhdmUgdHdvIGNodW5rcycpOworICAgICAgICBhc3NlcnRfdHJ1ZShicmFuY2gyUmVhZCk7
CisgICAgICAgIHRlc3Q1LmRvbmUoKTsKKyAgICB9KSk7CisgICAgcmVhZGFibGVTdHJlYW1Ub0Fy
cmF5KGJyYW5jaDIpLnRoZW4odGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKGNodW5rcykgeworICAg
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywgW10sICdicmFuY2gyIHNob3VsZCBoYXZl
IG5vIGNodW5rcycpOworICAgICAgICBicmFuY2gyUmVhZCA9IHRydWU7CisgICAgfSkpOworfSk7
CisKK3ZhciB0ZXN0NiA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2Vs
aW5nIGJvdGggYnJhbmNoZXMgc2hvdWxkIGFnZ3JlZ2F0ZSB0aGUgY2FuY2VsIHJlYXNvbnMgaW50
byBhbiBhcnJheScpOwordGVzdDYuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgcmVhc29uMSA9
IG5ldyBFcnJvcignV2VcJ3JlIHdhbnRlZCBtZW4uJyk7CisgICAgdmFyIHJlYXNvbjIgPSBuZXcg
RXJyb3IoJ0kgaGF2ZSB0aGUgZGVhdGggc2VudGVuY2Ugb24gdHdlbHZlIHN5c3RlbXMuJyk7CisK
KyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBjYW5jZWw6IGZ1bmN0
aW9uKHJlYXNvbikgeworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhyZWFzb24sIFty
ZWFzb24xLCByZWFzb24yXSwgJ3RoZSBjYW5jZWwgcmVhc29uIHNob3VsZCBiZSBhbiBhcnJheSBj
b250YWluaW5nIHRob3NlIGZyb20gdGhlIGJyYW5jaGVzJyk7CisgICAgICAgICAgICB0ZXN0Ni5k
b25lKCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHZhciBicmFuY2ggPSBycy50ZWUoKTsK
KyAgICB2YXIgYnJhbmNoMSA9IGJyYW5jaFswXTsKKyAgICB2YXIgYnJhbmNoMiA9IGJyYW5jaFsx
XTsKKyAgICBicmFuY2gxLmNhbmNlbChyZWFzb24xKTsKKyAgICBicmFuY2gyLmNhbmNlbChyZWFz
b24yKTsKK30pOworCit2YXIgdGVzdDcgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSB0ZWVp
bmc6IGZhaWxpbmcgdG8gY2FuY2VsIHRoZSBvcmlnaW5hbCBzdHJlYW0gc2hvdWxkIGNhdXNlIGNh
bmNlbCgpIHRvIHJlamVjdCBvbiBicmFuY2hlcycpOwordGVzdDcuc3RlcChmdW5jdGlvbigpIHsK
KyAgICB2YXIgY2FuY2VsMVJlamVjdGVkID0gZmFsc2U7CisgICAgdmFyIHRoZUVycm9yID0gbmV3
IEVycm9yKCdJXCdsbCBiZSBjYXJlZnVsLicpOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7CisgICAgICAgIGNhbmNlbDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0aHJvdyB0
aGVFcnJvcjsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgdmFyIGJyYW5jaCA9IHJzLnRlZSgp
OworICAgIHZhciBicmFuY2gxID0gYnJhbmNoWzBdOworICAgIHZhciBicmFuY2gyID0gYnJhbmNo
WzFdOworICAgIGJyYW5jaDEuY2FuY2VsKCkuY2F0Y2godGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9u
KGUpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2JyYW5jaDEuY2FuY2Vs
KCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOworICAgICAgICBjYW5jZWwxUmVqZWN0
ZWQgPSB0cnVlOworICAgIH0pKTsKKyAgICBicmFuY2gyLmNhbmNlbCgpLmNhdGNoKHRlc3Q3LnN0
ZXBfZnVuYyhmdW5jdGlvbihlKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3Is
ICdicmFuY2gyLmNhbmNlbCgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKKyAgICAg
ICAgYXNzZXJ0X3RydWUoY2FuY2VsMVJlamVjdGVkKTsKKyAgICAgICAgdGVzdDcuZG9uZSgpOwor
ICAgIH0pKTsKK30pOworCit2YXIgdGVzdDggPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSB0
ZWVpbmc6IGNsb3NpbmcgdGhlIG9yaWdpbmFsIHNob3VsZCBpbW1lZGlhdGVseSBjbG9zZSB0aGUg
YnJhbmNoZXMnKTsKK3Rlc3Q4LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIHJlYWRlcjFDbG9z
ZWQgPSBmYWxzZTsKKyAgICB2YXIgY29udHJvbGxlcjsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgeworICAgICAgICAgICAgY29u
dHJvbGxlciA9IGM7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHZhciBicmFuY2ggPSBycy50
ZWUoKTsKKyAgICB2YXIgYnJhbmNoMSA9IGJyYW5jaFswXTsKKyAgICB2YXIgYnJhbmNoMiA9IGJy
YW5jaFsxXTsKKyAgICB2YXIgcmVhZGVyMSA9IGJyYW5jaDEuZ2V0UmVhZGVyKCk7CisgICAgdmFy
IHJlYWRlcjIgPSBicmFuY2gyLmdldFJlYWRlcigpOworCisgICAgcmVhZGVyMS5jbG9zZWQudGhl
bih0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIHJlYWRlcjFDbG9zZWQgPSB0
cnVlOyAvL2JyYW5jaDEgc2hvdWxkIGJlIGNsb3NlZAorICAgIH0pKS5jYXRjaCh0ZXN0OC5zdGVw
X2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9KSk7CisgICAgcmVhZGVy
Mi5jbG9zZWQudGhlbih0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2Vy
dF90cnVlKHJlYWRlcjFDbG9zZWQpOworICAgICAgICB0ZXN0OC5kb25lKCdicmFuY2gyIHNob3Vs
ZCBiZSBjbG9zZWQnKTsKKyAgICB9KSkuY2F0Y2godGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9uKGUp
IHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSkpOworCisgICAgY29udHJvbGxlci5jbG9zZSgpOwor
fSk7CisKK3ZhciB0ZXN0OSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogZXJy
b3JpbmcgdGhlIG9yaWdpbmFsIHNob3VsZCBpbW1lZGlhdGVseSBlcnJvciB0aGUgYnJhbmNoZXMn
KTsKK3Rlc3Q5LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIHJlYWRlcjFSZWplY3RlZCA9IGZh
bHNlOworICAgIHZhciBjb250cm9sbGVyOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7CisgICAgICAgIHN0YXJ0KGMpIHsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBjOworICAg
ICAgICB9CisgICAgfSk7CisKKyAgICB2YXIgYnJhbmNoID0gcnMudGVlKCk7CisgICAgdmFyIGJy
YW5jaDEgPSBicmFuY2hbMF07CisgICAgdmFyIGJyYW5jaDIgPSBicmFuY2hbMV07CisgICAgdmFy
IHJlYWRlcjEgPSBicmFuY2gxLmdldFJlYWRlcigpOworICAgIHZhciByZWFkZXIyID0gYnJhbmNo
Mi5nZXRSZWFkZXIoKTsKKworICAgIHZhciB0aGVFcnJvciA9IG5ldyBFcnJvcignYm9vIScpOwor
CisgICAgcmVhZGVyMS5jbG9zZWQudGhlbigKKyAgICAgICAgdGVzdDkuc3RlcF9mdW5jKGZ1bmN0
aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdicmFuY2gxIHNob3VsZCBub3QgYmUgY2xvc2VkJyk7
IH0pLAorICAgICAgICB0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeworICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2JyYW5jaDEgc2hvdWxkIGJlIGVycm9yZWQgd2l0
aCB0aGUgZXJyb3InKTsKKyAgICAgICAgICAgIHJlYWRlcjFSZWplY3RlZCA9IHRydWU7CisgICAg
ICAgIH0pCisgICAgKTsKKyAgICByZWFkZXIyLmNsb3NlZC50aGVuKAorICAgICAgICB0ZXN0OS5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ2JyYW5jaDIgc2hvdWxkIG5v
dCBiZSBjbG9zZWQnKTsgfSksCisgICAgICAgIHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7
CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnYnJhbmNoMiBzaG91bGQg
YmUgZXJyb3JlZCB3aXRoIHRoZSBlcnJvcicpOworICAgICAgICAgICAgYXNzZXJ0X3RydWUocmVh
ZGVyMVJlamVjdGVkKTsKKyAgICAgICAgICAgIHRlc3Q5LmRvbmUoKTsKKyAgICAgICAgfSkKKyAg
ICApOworCisgICAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7Cit9KTsKKzwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24v
cmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4
cGVjdGVkLnR4dAppbmRleCBkNjFiYzkwYzNiM2VmNzI4NzY4NzM3YTVhNzMzYjNhZjE3YzJiMGJh
Li5hMWNkYzU5YzkzZTExZTdmNjhhNzBiN2YxYjk1OWViYzMwY2EzMGNiIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJl
YW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVy
ZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4
dApAQCAtMSwzNCArMSw1MCBAQAogCiBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFbXB0eSB3aXRo
IFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgCi1QQVNTIGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0
IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgCitGQUlMIGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0
IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgYXNzZXJ0X2VxdWFsczogaGFzIGEgYm9vbGVhbiBsb2Nr
ZWQgZ2V0dGVyIGV4cGVjdGVkICJib29sZWFuIiBidXQgZ290ICJ1bmRlZmluZWQiCiBQQVNTIFJ1
bm5pbmcgdGVtcGxhdGVkUlNFbXB0eVJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkg
cmVhZGVyIAogUEFTUyBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9w
ZXJ0aWVzIAorRkFJTCBsb2NrZWQgc2hvdWxkIGJlIHRydWUgYXNzZXJ0X3RydWU6IGxvY2tlZCBn
ZXR0ZXIgc2hvdWxkIHJldHVybiB0cnVlIGV4cGVjdGVkIHRydWUgZ290IHVuZGVmaW5lZAorUEFT
UyByZWFkKCkgc2hvdWxkIG5ldmVyIHNldHRsZSAKK1BBU1MgdHdvIHJlYWQoKXMgc2hvdWxkIGJv
dGggbmV2ZXIgc2V0dGxlIAogUEFTUyByZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9t
aXNlcyBlYWNoIHRpbWUgCiBQQVNTIGdldFJlYWRlcigpIGFnYWluIG9uIHRoZSBzdHJlYW0gc2hv
dWxkIGZhaWwgCitGQUlMIHJlbGVhc2luZyB0aGUgbG9jayB3aXRoIHBlbmRpbmcgcmVhZCByZXF1
ZXN0cyBzaG91bGQgdGhyb3cgYnV0IHRoZSByZWFkIHJlcXVlc3RzIHNob3VsZCBzdGF5IHBlbmRp
bmcgcmVsZWFzZUxvY2sgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIHJlbGVhc2luZyB0aGUgbG9j
ayBzaG91bGQgY2F1c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVzb2x2ZSBhcyBpZiB0aGUg
c3RyZWFtIGlzIGNsb3NlZCByZWxlYXNlTG9jayBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgcmVs
ZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gZnVsZmlsbCByZWxlYXNlTG9j
ayBpcyBub3QgaW1wbGVtZW50ZWQKK0ZBSUwgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVz
ZSBsb2NrZWQgdG8gYmVjb21lIGZhbHNlIHJlbGVhc2VMb2NrIGlzIG5vdCBpbXBsZW1lbnRlZAog
RkFJTCBjYW5jZWxpbmcgdmlhIHRoZSByZWFkZXIgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgdG8g
YWN0IGNsb3NlZCBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIGNhbmNlbGluZyB2aWEg
dGhlIHN0cmVhbSBzaG91bGQgZmFpbCBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBQQVNTIFJ1
bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBj
YWxsIGluIHN0YXJ0KSAKIEZBSUwgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1
bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCitGQUlM
IGxvY2tlZCBzaG91bGQgYmUgZmFsc2UgYXNzZXJ0X2ZhbHNlOiBsb2NrZWQgZ2V0dGVyIHNob3Vs
ZCByZXR1cm4gZmFsc2UgZXhwZWN0ZWQgZmFsc2UgZ290IHVuZGVmaW5lZAogUEFTUyBnZXRSZWFk
ZXIoKSBzaG91bGQgYmUgT0sgCiBQQVNTIHNob3VsZCBiZSBhYmxlIHRvIGFjcXVpcmUgbXVsdGlw
bGUgcmVhZGVycywgc2luY2UgdGhleSBhcmUgYWxsIGF1dG8tcmVsZWFzZWQgCiBQQVNTIFJ1bm5p
bmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZp
YSBjYWxsIGluIHN0YXJ0KSByZWFkZXIgCiBQQVNTIHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRo
IHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAogUEFTUyBjbG9zZWQgc2hvdWxkIGZ1
bGZpbGwgd2l0aCB1bmRlZmluZWQgCitGQUlMIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0
aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRl
ZAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkIHdpdGggUmVhZGFibGVTdHJlYW0gKGNs
b3NlZCB2aWEgY2FuY2VsKSAKIEZBSUwgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0
IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCitG
QUlMIGxvY2tlZCBzaG91bGQgYmUgZmFsc2UgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJ
TCBnZXRSZWFkZXIoKSBzaG91bGQgYmUgT0sgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJ
TCBzaG91bGQgYmUgYWJsZSB0byBhY3F1aXJlIG11bHRpcGxlIHJlYWRlcnMsIHNpbmNlIHRoZXkg
YXJlIGFsbCBhdXRvLXJlbGVhc2VkIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIFBBU1MgUnVu
bmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQg
dmlhIGNhbmNlbCkgcmVhZGVyIAogRkFJTCByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZh
bHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBG
QUlMIGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCBjYW5jZWwgaXMgbm90IGlt
cGxlbWVudGVkCitGQUlMIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxs
ZWQgcHJvbWlzZSBlYWNoIHRpbWUgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogUEFTUyBSdW5u
aW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBj
YWxsIGluIHN0YXJ0KSAKIFBBU1MgZ2V0UmVhZGVyKCkgc2hvdWxkIHJldHVybiBhIHJlYWRlciB0
aGF0IGFjdHMgZXJyb3JlZCAKK0ZBSUwgbG9ja2VkIHNob3VsZCBiZSBmYWxzZSBhc3NlcnRfZmFs
c2U6IGxvY2tlZCBnZXR0ZXIgc2hvdWxkIHJldHVybiBmYWxzZSBleHBlY3RlZCBmYWxzZSBnb3Qg
dW5kZWZpbmVkCiBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkgd2l0aCBS
ZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCkgCiBGQUlMIGNhbmNlbCgp
IHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZSBjYW5j
ZWwgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIHJlYWRlciBjYW5jZWwoKSBzaG91bGQgcmV0dXJu
IGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUgY2FuY2VsIGlzIG5vdCBpbXBs
ZW1lbnRlZAogUEFTUyBzaG91bGQgYmUgYWJsZSB0byBhY3F1aXJlIG11bHRpcGxlIHJlYWRlcnMs
IHNpbmNlIHRoZXkgYXJlIGFsbCBhdXRvLXJlbGVhc2VkIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRl
ZFJTRXJyb3JlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSBy
ZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSAKK1RJTUVPVVQgZ2V0UmVhZGVyKCkgc2hvdWxkIHJl
dHVybiBhIHJlYWRlciB0aGF0IGFjdHMgZXJyb3JlZCBUZXN0IHRpbWVkIG91dAorRkFJTCBsb2Nr
ZWQgc2hvdWxkIGJlIGZhbHNlIGFzc2VydF9mYWxzZTogbG9ja2VkIGdldHRlciBzaG91bGQgcmV0
dXJuIGZhbHNlIGV4cGVjdGVkIGZhbHNlIGdvdCB1bmRlZmluZWQKK1BBU1MgUnVubmluZyB0ZW1w
bGF0ZWRSU0Vycm9yZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0
dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgcmVhZGVyIAorVElNRU9VVCBjbG9z
ZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciBUZXN0IHRpbWVkIG91dAorVElNRU9VVCBy
ZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciBUZXN0IHRpbWVkIG91dAogUEFTUyBS
dW5uaW5nIHRlbXBsYXRlZFJTVHdvQ2h1bmtzT3BlblJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFt
ICh0d28gY2h1bmtzIGVucXVldWVkLCBzdGlsbCBvcGVuKSByZWFkZXIgCiBQQVNTIGNhbGxpbmcg
cmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNo
dW5rcyAKIFBBU1MgY2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aCB3YWl0aW5nIHdpbGwgZXZlbnR1
YWxseSBnaXZlIGJvdGggY2h1bmtzIApAQCAtMzcsNyArNTMsNyBAQCBGQUlMIGNhbmNlbCgpIGFm
dGVyIGEgcmVhZCgpIHNob3VsZCBzdGlsbCBnaXZlIHRoYXQgc2luZ2xlIHJlYWQgcmVzdWx0IGNh
bmNlbCBpcwogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTVHdvQ2h1bmtzQ2xvc2VkUmVhZGVyIHdp
dGggUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFk
ZXIgCiBQQVNTIHRoaXJkIHJlYWQoKSwgd2l0aG91dCB3YWl0aW5nLCBzaG91bGQgZ2l2ZSB7IHZh
bHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKIFBBU1MgdGhpcmQgcmVhZCwgd2l0aCB3YWl0
aW5nLCBzaG91bGQgZ2l2ZSB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKLVBBU1Mg
ZHJhaW5pbmcgdGhlIHN0cmVhbSB2aWEgcmVhZCgpIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIGNs
b3NlZCBwcm9taXNlIHRvIGZ1bGZpbGwgCitGQUlMIGRyYWluaW5nIHRoZSBzdHJlYW0gdmlhIHJl
YWQoKSBzaG91bGQgY2F1c2UgdGhlIHJlYWRlciBjbG9zZWQgcHJvbWlzZSB0byBmdWxmaWxsIGFu
ZCBsb2NrZWQgdG8gYmUgZmFsc2UgYXNzZXJ0X2ZhbHNlOiBzdHJlYW0gc2hvdWxkIG5vIGxvbmdl
ciBiZSBsb2NrZWQgZXhwZWN0ZWQgZmFsc2UgZ290IHVuZGVmaW5lZAogRkFJTCByZWxlYXNpbmcg
dGhlIGxvY2sgYWZ0ZXIgdGhlIHN0cmVhbSBpcyBjbG9zZWQgc2hvdWxkIGRvIG5vdGhpbmcgcmVs
ZWFzZUxvY2sgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIHJlbGVhc2luZyB0aGUgbG9jayBzaG91
bGQgY2F1c2UgcmVhZCgpIHRvIGFjdCBhcyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCByZWxlYXNl
TG9jayBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgcmVhZGVyJ3MgY2xvc2VkIHByb3BlcnR5IGFs
d2F5cyByZXR1cm5zIHRoZSBzYW1lIHByb21pc2UgcmVsZWFzZUxvY2sgaXMgbm90IGltcGxlbWVu
dGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRh
dGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLmh0bWwK
aW5kZXggZWQ0NDQyYzA1Njc4NGY5ZDgxNmNlMTQyOTU1MDkwZmNhNTk0YTUxMS4uY2Q1NjU3YmUy
ZjFiNjA0ZGM4ZWY5MjNkZWNkYzIyYzY4NzZhNDQ4NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRl
ZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9u
L3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQuaHRtbApAQCAtMTAsMTAgKzEwLDEyIEBAIGZ1bmN0
aW9uIHRlbXBsYXRlZFJTRW1wdHkobGFiZWwsIGZhY3RvcnkpIHsKICAgICB0ZXN0KGZ1bmN0aW9u
KCkgewogICAgICAgICB2YXIgcnMgPSBmYWN0b3J5KCk7CiAKKyAgICAgICAgYXNzZXJ0X2VxdWFs
cyh0eXBlb2YgcnMubG9ja2VkLCAnYm9vbGVhbicsICdoYXMgYSBib29sZWFuIGxvY2tlZCBnZXR0
ZXInKTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnMuY2FuY2VsLCAnZnVuY3Rpb24n
LCAnaGFzIGEgY2FuY2VsIG1ldGhvZCcpOwogICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBy
cy5nZXRSZWFkZXIsICdmdW5jdGlvbicsICdoYXMgYSBnZXRSZWFkZXIgbWV0aG9kJyk7CiAgICAg
ICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJzLnBpcGVUaHJvdWdoLCAnZnVuY3Rpb24nLCAnaGFz
IGEgcGlwZVRocm91Z2ggbWV0aG9kJyk7CiAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJz
LnBpcGVUbywgJ2Z1bmN0aW9uJywgJ2hhcyBhIHBpcGVUbyBtZXRob2QnKTsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyh0eXBlb2YgcnMudGVlLCAnZnVuY3Rpb24nLCAnaGFzIGEgdGVlIG1ldGhvZCcp
OwogICAgIH0sICdpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0
aWVzJyk7CiB9CiAKQEAgLTI1LDYgKzI3LDcgQEAgZnVuY3Rpb24gdGVtcGxhdGVkUlNDbG9zZWQo
bGFiZWwsIGZhY3RvcnkpIHsKICAgICB0ZXN0MS5zdGVwKGZ1bmN0aW9uKCkgewogICAgICAgICB2
YXIgcnMgPSBmYWN0b3J5KCk7CiAgICAgICAgIHZhciBwcm9taXNlc0NvdW50ID0gMDsKKyAgICAg
ICAgdmFyIGFsbENoZWNrZWQgPSBmYWxzZTsKIAogICAgICAgICB2YXIgY2FuY2VsUHJvbWlzZTEg
PSBycy5jYW5jZWwoKTsKICAgICAgICAgdmFyIGNhbmNlbFByb21pc2UyID0gcnMuY2FuY2VsKCk7
CkBAIC0zNiwxNCArMzksMjIgQEAgZnVuY3Rpb24gdGVtcGxhdGVkUlNDbG9zZWQobGFiZWwsIGZh
Y3RvcnkpIHsKICAgICAgICAgY2FuY2VsUHJvbWlzZTIudGhlbih0ZXN0MS5zdGVwX2Z1bmMoZnVu
Y3Rpb24odikgewogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdzZWNv
bmQgY2FuY2VsKCkgY2FsbCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpOwogICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscygrK3Byb21pc2VzQ291bnQsIDIpOworICAgICAgICAgICAgYXNz
ZXJ0X3RydWUoYWxsQ2hlY2tlZCk7CiAgICAgICAgICAgICB0ZXN0MS5kb25lKCk7CiAgICAgICAg
IH0pKTsKICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY2FuY2VsUHJvbWlzZTEsIGNhbmNlbFBy
b21pc2UyLCAnY2FuY2VsKCkgY2FsbHMgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcycp
OworICAgICAgICBhbGxDaGVja2VkID0gdHJ1ZTsKICAgICB9KTsKIAogICAgIHRlc3QoZnVuY3Rp
b24oKSB7CiAgICAgICAgIHZhciBycyA9IGZhY3RvcnkoKTsKIAorICAgICAgICBhc3NlcnRfZmFs
c2UocnMubG9ja2VkLCAnbG9ja2VkIGdldHRlciBzaG91bGQgcmV0dXJuIGZhbHNlJyk7CisgICAg
fSwgJ2xvY2tlZCBzaG91bGQgYmUgZmFsc2UnKTsKKworICAgIHRlc3QoZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHZhciBycyA9IGZhY3RvcnkoKTsKKwogICAgICAgICBycy5nZXRSZWFkZXIoKTsgLy8g
Z2V0UmVhZGVyKCkgc2hvdWxkIG5vdCB0aHJvdy4KICAgICB9LCAnZ2V0UmVhZGVyKCkgc2hvdWxk
IGJlIE9LJyk7CiAKQEAgLTYxLDcgKzcyLDcgQEAgZnVuY3Rpb24gdGVtcGxhdGVkUlNFcnJvcmVk
KGxhYmVsLCBmYWN0b3J5LCBlcnJvcikgewogICAgIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgfSwg
J1J1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkIHdpdGggJyArIGxhYmVsKTsKIAotICAgIHZhciB0
ZXN0MSA9IGFzeW5jX3Rlc3QoJ2dldFJlYWRlcigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIgdGhh
dCBhY3RzIGVycm9yZWQnKTsKKyAgICB2YXIgdGVzdDEgPSBhc3luY190ZXN0KCdnZXRSZWFkZXIo
KSBzaG91bGQgcmV0dXJuIGEgcmVhZGVyIHRoYXQgYWN0cyBlcnJvcmVkJywgeyB0aW1lb3V0OiA1
MCB9KTsKICAgICB0ZXN0MS5zdGVwKGZ1bmN0aW9uKCkgewogICAgICAgICB2YXIgcnMgPSBmYWN0
b3J5KCk7CiAgICAgICAgIHZhciBwcm9taXNlc0NvdW50ID0gMDsKQEAgLTc4LDYgKzg5LDEyIEBA
IGZ1bmN0aW9uIHRlbXBsYXRlZFJTRXJyb3JlZChsYWJlbCwgZmFjdG9yeSwgZXJyb3IpIHsKICAg
ICAgICAgICAgIHRlc3QxLmRvbmUoKTsKICAgICAgICAgfSkpOwogICAgIH0pOworCisgICAgdGVz
dChmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHJzID0gZmFjdG9yeSgpOworCisgICAgICAgIGFz
c2VydF9mYWxzZShycy5sb2NrZWQsICdsb2NrZWQgZ2V0dGVyIHNob3VsZCByZXR1cm4gZmFsc2Un
KTsKKyAgICB9LCAnbG9ja2VkIHNob3VsZCBiZSBmYWxzZScpOwogfTsKIAogZnVuY3Rpb24gdGVt
cGxhdGVkUlNFcnJvcmVkU3luY09ubHkobGFiZWwsIGZhY3RvcnksIGVycm9yKSB7CkBAIC04OCw2
ICsxMDUsNyBAQCBmdW5jdGlvbiB0ZW1wbGF0ZWRSU0Vycm9yZWRTeW5jT25seShsYWJlbCwgZmFj
dG9yeSwgZXJyb3IpIHsKICAgICB0ZXN0MS5zdGVwKGZ1bmN0aW9uKCkgewogICAgICAgICB2YXIg
cnMgPSBmYWN0b3J5KCk7CiAgICAgICAgIHZhciBwcm9taXNlc0NvdW50ID0gMDsKKyAgICAgICAg
dmFyIGFsbENoZWNrZWQgPSBmYWxzZTsKIAogICAgICAgICB2YXIgY2FuY2VsUHJvbWlzZTEgPSBy
cy5jYW5jZWwoKTsKICAgICAgICAgdmFyIGNhbmNlbFByb21pc2UyID0gcnMuY2FuY2VsKCk7CkBA
IC05OSw5ICsxMTcsMTEgQEAgZnVuY3Rpb24gdGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkobGFi
ZWwsIGZhY3RvcnksIGVycm9yKSB7CiAgICAgICAgIGNhbmNlbFByb21pc2UyLmNhdGNoKHRlc3Qx
LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIGVy
cm9yLCAnc2Vjb25kIGNhbmNlbCgpIGNhbGwgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicp
OwogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscygrK3Byb21pc2VzQ291bnQsIDIpOworICAgICAg
ICAgICAgYXNzZXJ0X3RydWUoYWxsQ2hlY2tlZCk7CiAgICAgICAgICAgICB0ZXN0MS5kb25lKCk7
CiAgICAgICAgIH0pKTsKICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY2FuY2VsUHJvbWlzZTEs
IGNhbmNlbFByb21pc2UyLCAnY2FuY2VsKCkgY2FsbHMgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBw
cm9taXNlcycpOworICAgICAgICBhbGxDaGVja2VkID0gdHJ1ZTsKICAgICB9KTsKIAogICAgIHZh
ciB0ZXN0MiA9IGFzeW5jX3Rlc3QoJ3JlYWRlciBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlz
dGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUnKTsKQEAgLTEwOSw2ICsxMjksNyBAQCBm
dW5jdGlvbiB0ZW1wbGF0ZWRSU0Vycm9yZWRTeW5jT25seShsYWJlbCwgZmFjdG9yeSwgZXJyb3Ip
IHsKICAgICAgICAgdmFyIHJzID0gZmFjdG9yeSgpOwogICAgICAgICB2YXIgcmVhZGVyID0gcnMu
Z2V0UmVhZGVyKCk7CiAgICAgICAgIHZhciBwcm9taXNlc0NvdW50ID0gMDsKKyAgICAgICAgdmFy
IGFsbENoZWNrZWQgPSBmYWxzZTsKIAogICAgICAgICB2YXIgY2FuY2VsUHJvbWlzZTEgPSByZWFk
ZXIuY2FuY2VsKCk7CiAgICAgICAgIHZhciBjYW5jZWxQcm9taXNlMiA9IHJlYWRlci5jYW5jZWwo
KTsKQEAgLTEyMCw5ICsxNDEsMTEgQEAgZnVuY3Rpb24gdGVtcGxhdGVkUlNFcnJvcmVkU3luY09u
bHkobGFiZWwsIGZhY3RvcnksIGVycm9yKSB7CiAgICAgICAgIGNhbmNlbFByb21pc2UyLmNhdGNo
KHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KGUsIGVycm9yLCAnc2Vjb25kIGNhbmNlbCgpIGNhbGwgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBl
cnJvcicpOwogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscygrK3Byb21pc2VzQ291bnQsIDIpOwor
ICAgICAgICAgICAgYXNzZXJ0X3RydWUoYWxsQ2hlY2tlZCk7CiAgICAgICAgICAgICB0ZXN0Mi5k
b25lKCk7CiAgICAgICAgIH0pKTsKICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY2FuY2VsUHJv
bWlzZTEsIGNhbmNlbFByb21pc2UyLCAnY2FuY2VsKCkgY2FsbHMgc2hvdWxkIHJldHVybiBkaXN0
aW5jdCBwcm9taXNlcycpOworICAgICAgICBhbGxDaGVja2VkID0gdHJ1ZTsKICAgICB9KTsKIAog
ICAgIHRlc3QoZnVuY3Rpb24oKSB7CkBAIC0xNTAsMzQgKzE3Myw0MCBAQCBmdW5jdGlvbiB0ZW1w
bGF0ZWRSU0VtcHR5UmVhZGVyKGxhYmVsLCBmYWN0b3J5KSB7CiAgICAgICAgIGFzc2VydF9lcXVh
bHModHlwZW9mIHJlYWRlci5yZWxlYXNlTG9jaywgJ2Z1bmN0aW9uJywgJ2hhcyBhIHJlbGVhc2VM
b2NrIG1ldGhvZCcpOwogICAgIH0sICdpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRob2Rz
IGFuZCBwcm9wZXJ0aWVzJyk7CiAKLSAgICAvLyB2YXIgdGVzdDEgPSBhc3luY190ZXN0KCdyZWFk
KCkgc2hvdWxkIG5ldmVyIHNldHRsZScpOwotICAgIC8vIHRlc3QxLnN0ZXAoZnVuY3Rpb24oKSB7
Ci0gICAgLy8gICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOworICAgIHRlc3QoZnVuY3Rp
b24oKSB7CisgICAgICAgIHZhciB7IHN0cmVhbSB9ID0gZmFjdG9yeSgpOwogCi0gICAgLy8gICAg
IHJlYWRlci5yZWFkKCkudGhlbigKLSAgICAvLyAgICAgICAgIHRlc3QxLnN0ZXBfZnVuYyhmdW5j
dGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgncmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpOyB9
KSwKLSAgICAvLyAgICAgICAgIHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3Vu
cmVhY2hlZCgncmVhZCgpIHNob3VsZCBub3QgcmVqZWN0Jyk7IH0pCi0gICAgLy8gICAgICk7Cisg
ICAgICAgIGFzc2VydF90cnVlKHN0cmVhbS5sb2NrZWQsICdsb2NrZWQgZ2V0dGVyIHNob3VsZCBy
ZXR1cm4gdHJ1ZScpOworICAgIH0sICdsb2NrZWQgc2hvdWxkIGJlIHRydWUnKTsKIAotICAgIC8v
ICAgICBzZXRUaW1lb3V0KHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgdGVzdDEuZG9uZSgp
OyB9KSwgc3RhbmRhcmRUaW1lb3V0KTsKLSAgICAvLyB9KTsKKyAgICB2YXIgdGVzdDEgPSBhc3lu
Y190ZXN0KCdyZWFkKCkgc2hvdWxkIG5ldmVyIHNldHRsZScpOworICAgIHRlc3QxLnN0ZXAoZnVu
Y3Rpb24oKSB7CisgICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwogCi0gICAgLy8g
dmFyIHRlc3QyID0gYXN5bmNfdGVzdCgndHdvIHJlYWQoKXMgc2hvdWxkIGJvdGggbmV2ZXIgc2V0
dGxlJyk7Ci0gICAgLy8gdGVzdDIuc3RlcChmdW5jdGlvbigpIHsKLSAgICAvLyAgICAgdmFyIHsg
cmVhZGVyIH0gPSBmYWN0b3J5KCk7CisgICAgICAgIHJlYWRlci5yZWFkKCkudGhlbigKKyAgICAg
ICAgICAgIHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgncmVh
ZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpOyB9KSwKKyAgICAgICAgICAgIHRlc3QxLnN0ZXBfZnVu
YyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgncmVhZCgpIHNob3VsZCBub3QgcmVqZWN0
Jyk7IH0pCisgICAgICAgICk7CiAKLSAgICAvLyAgICAgcmVhZGVyLnJlYWQoKS50aGVuKAotICAg
IC8vICAgICAgICAgdGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVk
KCdmaXJzdCByZWFkKCkgc2hvdWxkIG5vdCBmdWxmaWxsJyk7IH0pLAotICAgIC8vICAgICAgICAg
dGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdmaXJzdCByZWFk
KCkgc2hvdWxkIG5vdCByZWplY3QnKTsgfSkKLSAgICAvLyAgICAgKTsKKyAgICAgICAgc2V0VGlt
ZW91dCh0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IHRlc3QxLmRvbmUoKTsgfSksIDEwMCk7
CisgICAgfSk7CiAKLSAgICAvLyAgICAgcmVhZGVyLnJlYWQoKS50aGVuKAotICAgIC8vICAgICAg
ICAgdGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdzZWNvbmQg
cmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpOyB9KSwKLSAgICAvLyAgICAgICAgIHRlc3QyLnN0
ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnc2Vjb25kIHJlYWQoKSBzaG91
bGQgbm90IHJlamVjdCcpOyB9KQotICAgIC8vICAgICApOworICAgIHZhciB0ZXN0MiA9IGFzeW5j
X3Rlc3QoJ3R3byByZWFkKClzIHNob3VsZCBib3RoIG5ldmVyIHNldHRsZScpOworICAgIHRlc3Qy
LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwog
Ci0gICAgLy8gICAgIHNldFRpbWVvdXQodGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyB0ZXN0
Mi5kb25lKCk7IH0pLCBzdGFuZGFyZFRpbWVvdXQpOwotICAgIC8vIH0pOworICAgICAgICByZWFk
ZXIucmVhZCgpLnRoZW4oCisgICAgICAgICAgICB0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
IGFzc2VydF91bnJlYWNoZWQoJ2ZpcnN0IHJlYWQoKSBzaG91bGQgbm90IGZ1bGZpbGwnKTsgfSks
CisgICAgICAgICAgICB0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNo
ZWQoJ2ZpcnN0IHJlYWQoKSBzaG91bGQgbm90IHJlamVjdCcpOyB9KQorICAgICAgICApOworCisg
ICAgICAgIHJlYWRlci5yZWFkKCkudGhlbigKKyAgICAgICAgICAgIHRlc3QyLnN0ZXBfZnVuYyhm
dW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnc2Vjb25kIHJlYWQoKSBzaG91bGQgbm90IGZ1
bGZpbGwnKTsgfSksCisgICAgICAgICAgICB0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFz
c2VydF91bnJlYWNoZWQoJ3NlY29uZCByZWFkKCkgc2hvdWxkIG5vdCByZWplY3QnKTsgfSkKKyAg
ICAgICAgKTsKKworICAgICAgICBzZXRUaW1lb3V0KHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbigp
IHsgdGVzdDIuZG9uZSgpOyB9KSwgMTAwKTsKKyAgICB9KTsKIAogICAgIHRlc3QoZnVuY3Rpb24o
KSB7CiAgICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwpAQCAtMTkxLDI5ICsyMjAs
MjkgQEAgZnVuY3Rpb24gdGVtcGxhdGVkUlNFbXB0eVJlYWRlcihsYWJlbCwgZmFjdG9yeSkgewog
ICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IHN0cmVh
bS5nZXRSZWFkZXIoKTsgfSwgJ3N0cmVhbS5nZXRSZWFkZXIoKSBzaG91bGQgdGhyb3cgYSBUeXBl
RXJyb3InKTsKICAgICB9LCAnZ2V0UmVhZGVyKCkgYWdhaW4gb24gdGhlIHN0cmVhbSBzaG91bGQg
ZmFpbCcpOwogCi0gICAgLy8gdmFyIHRlc3QzID0gYXN5bmNfdGVzdCgncmVsZWFzaW5nIHRoZSBs
b2NrIHdpdGggcGVuZGluZyByZWFkIHJlcXVlc3RzIHNob3VsZCB0aHJvdyBidXQgdGhlIHJlYWQg
cmVxdWVzdHMgc2hvdWxkIHN0YXkgcGVuZGluZycpOwotICAgIC8vIHRlc3QzLnN0ZXAoZnVuY3Rp
b24oKSB7Ci0gICAgLy8gICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOworICAgIHZhciB0
ZXN0MyA9IGFzeW5jX3Rlc3QoJ3JlbGVhc2luZyB0aGUgbG9jayB3aXRoIHBlbmRpbmcgcmVhZCBy
ZXF1ZXN0cyBzaG91bGQgdGhyb3cgYnV0IHRoZSByZWFkIHJlcXVlc3RzIHNob3VsZCBzdGF5IHBl
bmRpbmcnKTsKKyAgICB0ZXN0My5zdGVwKGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgeyByZWFk
ZXIgfSA9IGZhY3RvcnkoKTsKIAotICAgIC8vICAgICByZWFkZXIucmVhZCgpLnRoZW4oCi0gICAg
Ly8gICAgICAgICB0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQo
J2ZpcnN0IHJlYWQoKSBzaG91bGQgbm90IGZ1bGZpbGwnKTsgfSksCi0gICAgLy8gICAgICAgICB0
ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ2ZpcnN0IHJlYWQo
KSBzaG91bGQgbm90IHJlamVjdCcpOyB9KQotICAgIC8vICAgICApOworICAgICAgICByZWFkZXIu
cmVhZCgpLnRoZW4oCisgICAgICAgICAgICB0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFz
c2VydF91bnJlYWNoZWQoJ2ZpcnN0IHJlYWQoKSBzaG91bGQgbm90IGZ1bGZpbGwnKTsgfSksCisg
ICAgICAgICAgICB0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQo
J2ZpcnN0IHJlYWQoKSBzaG91bGQgbm90IHJlamVjdCcpOyB9KQorICAgICAgICApOwogCi0gICAg
Ly8gICAgIHJlYWRlci5yZWFkKCkudGhlbigKLSAgICAvLyAgICAgICAgIHRlc3QzLnN0ZXBfZnVu
YyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnc2Vjb25kIHJlYWQoKSBzaG91bGQgbm90
IGZ1bGZpbGwnKTsgfSksCi0gICAgLy8gICAgICAgICB0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24o
KSB7IGFzc2VydF91bnJlYWNoZWQoJ3NlY29uZCByZWFkKCkgc2hvdWxkIG5vdCByZWplY3QnKTsg
fSkKLSAgICAvLyAgICAgKTsKKyAgICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKAorICAgICAgICAg
ICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdzZWNvbmQg
cmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpOyB9KSwKKyAgICAgICAgICAgIHRlc3QzLnN0ZXBf
ZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnc2Vjb25kIHJlYWQoKSBzaG91bGQg
bm90IHJlamVjdCcpOyB9KQorICAgICAgICApOwogCi0gICAgLy8gICAgIHJlYWRlci5jbG9zZWQu
dGhlbigKLSAgICAvLyAgICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0
X3VucmVhY2hlZCgnY2xvc2VkIHNob3VsZCBub3QgZnVsZmlsbCcpOyB9KSwKLSAgICAvLyAgICAg
ICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnY2xvc2Vk
IHNob3VsZCBub3QgcmVqZWN0Jyk7IH0pCi0gICAgLy8gICAgICk7CisgICAgICAgIHJlYWRlci5j
bG9zZWQudGhlbigKKyAgICAgICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNz
ZXJ0X3VucmVhY2hlZCgnY2xvc2VkIHNob3VsZCBub3QgZnVsZmlsbCcpOyB9KSwKKyAgICAgICAg
ICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnY2xvc2Vk
IHNob3VsZCBub3QgcmVqZWN0Jyk7IH0pCisgICAgICAgICk7CiAKLSAgICAvLyAgICAgYXNzZXJ0
X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgcmVh
ZGVyLnJlbGVhc2VMb2NrKCk7IH0sICdyZWxlYXNlTG9jayBzaG91bGQgdGhyb3cgYSBUeXBlRXJy
b3InKSk7CisgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCB0ZXN0My5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7IHJlYWRlci5yZWxlYXNlTG9jaygpOyB9LCAncmVsZWFzZUxvY2sg
c2hvdWxkIHRocm93IGEgVHlwZUVycm9yJykpOwogCi0gICAgLy8gICAgIHNldFRpbWVvdXQodGVz
dDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyB0ZXN0My5kb25lKCk7IH0pLCBzdGFuZGFyZFRpbWVv
dXQpOwotICAgIC8vIH0pOworICAgICAgICBzZXRUaW1lb3V0KHRlc3QzLnN0ZXBfZnVuYyhmdW5j
dGlvbigpIHsgdGVzdDMuZG9uZSgpOyB9KSwgNTApOworICAgIH0pOwogCiAgICAgdmFyIHRlc3Q0
ID0gYXN5bmNfdGVzdCgncmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBmdXJ0aGVyIHJl
YWQoKSBjYWxscyB0byByZXNvbHZlIGFzIGlmIHRoZSBzdHJlYW0gaXMgY2xvc2VkJyk7CiAgICAg
dGVzdDQuc3RlcChmdW5jdGlvbigpIHsKQEAgLTI1Miw2ICsyODEsMTMgQEAgZnVuY3Rpb24gdGVt
cGxhdGVkUlNFbXB0eVJlYWRlcihsYWJlbCwgZmFjdG9yeSkgewogICAgICAgICB9KSk7CiAgICAg
fSk7CiAKKyAgICB0ZXN0KGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgeyBzdHJlYW0sIHJlYWRl
ciB9ID0gZmFjdG9yeSgpOworCisgICAgICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOworICAgICAg
ICBhc3NlcnRfZmFsc2Uoc3RyZWFtLmxvY2tlZCwgJ2xvY2tlZCBnZXR0ZXIgc2hvdWxkIHJldHVy
biBmYWxzZScpOworICAgIH0sICdyZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGxvY2tl
ZCB0byBiZWNvbWUgZmFsc2UnKTsKKwogICAgIHZhciB0ZXN0NiA9IGFzeW5jX3Rlc3QoJ2NhbmNl
bGluZyB2aWEgdGhlIHJlYWRlciBzaG91bGQgY2F1c2UgdGhlIHJlYWRlciB0byBhY3QgY2xvc2Vk
Jyk7CiAgICAgdGVzdDYuc3RlcChmdW5jdGlvbigpIHsKICAgICAgICAgdmFyIHsgcmVhZGVyIH0g
PSBmYWN0b3J5KCk7CkBAIC0zMDQsMzIgKzM0MCwzMSBAQCBmdW5jdGlvbiB0ZW1wbGF0ZWRSU0Ns
b3NlZFJlYWRlcihsYWJlbCwgZmFjdG9yeSkgewogICAgICAgICApOwogICAgIH0pOwogCi0gICAg
Ly8gdmFyIHRlc3QzID0gYXN5bmNfdGVzdCgnY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3Rp
bmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZScpOwotICAgIC8vIHRlc3QzLnN0ZXAoZnVu
Y3Rpb24oKSB7Ci0gICAgLy8gICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwotICAgIC8v
ICAgICB2YXIgcHJvbWlzZUNvdW50ID0gMDsKLQotICAgIC8vICAgICB2YXIgY2FuY2VsUHJvbWlz
ZTEgPSByZWFkZXIuY2FuY2VsKCk7Ci0gICAgLy8gICAgIHZhciBjYW5jZWxQcm9taXNlMiA9IHJl
YWRlci5jYW5jZWwoKTsKLSAgICAvLyAgICAgdmFyIGNsb3NlZFJlYWRlclByb21pc2UgPSByZWFk
ZXIuY2xvc2VkOwotCi0gICAgLy8gICAgIGNhbmNlbFByb21pc2UxLnRoZW4odGVzdDMuc3RlcF9m
dW5jKGZ1bmN0aW9uKHYpIHsKLSAgICAvLyAgICAgICAgIGFzc2VydF9lcXVhbHModiwgdW5kZWZp
bmVkLCAnZmlyc3QgY2FuY2VsKCkgY2FsbCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcp
OwotICAgIC8vICAgICAgICAgKytwcm9taXNlQ291bnQ7Ci0gICAgLy8gICAgIH0pKTsKLSAgICAv
LyAgICAgY2FuY2VsUHJvbWlzZTIudGhlbih0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24odikgewot
ICAgIC8vICAgICAgICAgYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdzZWNvbmQgY2FuY2Vs
KCkgY2FsbCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpOwotICAgIC8vICAgICAgICAg
Kytwcm9taXNlQ291bnQ7Ci0gICAgLy8gICAgIH0pKTsKLSAgICAvLyAgICAgYXNzZXJ0X25vdF9l
cXVhbHMoY2FuY2VsUHJvbWlzZTEsIGNhbmNlbFByb21pc2UyLCAnY2FuY2VsKCkgY2FsbHMgc2hv
dWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcycpOwotICAgIC8vICAgICBhc3NlcnRfbm90X2Vx
dWFscyhjYW5jZWxQcm9taXNlMSwgY2xvc2VkUmVhZGVyUHJvbWlzZSwgJ2NhbmNlbCgpIHByb21p
c2UgMSBzaG91bGQgYmUgZGlzdGluY3QgZnJvbSByZWFkZXIuY2xvc2VkJyk7Ci0gICAgLy8gICAg
IGFzc2VydF9ub3RfZXF1YWxzKGNhbmNlbFByb21pc2UyLCBjbG9zZWRSZWFkZXJQcm9taXNlLCAn
Y2FuY2VsKCkgcHJvbWlzZSAyIHNob3VsZCBiZSBkaXN0aW5jdCBmcm9tIHJlYWRlci5jbG9zZWQn
KTsKLQotICAgIC8vICAgICBzZXRUaW1lb3V0KHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsK
LSAgICAvLyAgICAgICAgIGFzc2VydF9lcXVhbHMocHJvbWlzZUNvdW50LCAyKTsKLSAgICAvLyAg
ICAgICAgIHRlc3QzLmRvbmUoKTsKLSAgICAvLyAgICAgfSksIHN0YW5kYXJkVGltZW91dCk7Ci0g
ICAgLy8gfSk7CisgICAgdmFyIHRlc3QzID0gYXN5bmNfdGVzdCgnY2FuY2VsKCkgc2hvdWxkIHJl
dHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZScpOworICAgIHRlc3Qz
LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwor
ICAgICAgICB2YXIgcHJvbWlzZUNvdW50ID0gMDsKKyAgICAgICAgdmFyIGFsbENoZWNrZWQgPSBm
YWxzZTsKKworICAgICAgICB2YXIgY2FuY2VsUHJvbWlzZTEgPSByZWFkZXIuY2FuY2VsKCk7Cisg
ICAgICAgIHZhciBjYW5jZWxQcm9taXNlMiA9IHJlYWRlci5jYW5jZWwoKTsKKyAgICAgICAgdmFy
IGNsb3NlZFJlYWRlclByb21pc2UgPSByZWFkZXIuY2xvc2VkOworCisgICAgICAgIGNhbmNlbFBy
b21pc2UxLnRoZW4odGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKHYpIHsKKyAgICAgICAgICAgIGFz
c2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAnZmlyc3QgY2FuY2VsKCkgY2FsbCBzaG91bGQgZnVs
ZmlsbCB3aXRoIHVuZGVmaW5lZCcpOworICAgICAgICAgICAgKytwcm9taXNlQ291bnQ7CisgICAg
ICAgIH0pKTsKKyAgICAgICAgY2FuY2VsUHJvbWlzZTIudGhlbih0ZXN0My5zdGVwX2Z1bmMoZnVu
Y3Rpb24odikgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdzZWNv
bmQgY2FuY2VsKCkgY2FsbCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpOworICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscygrK3Byb21pc2VDb3VudCwgMik7CisgICAgICAgICAgICBhc3Nl
cnRfdHJ1ZShhbGxDaGVja2VkKTsKKyAgICAgICAgICAgIHRlc3QzLmRvbmUoKTsKKyAgICAgICAg
fSkpOworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjYW5jZWxQcm9taXNlMSwgY2FuY2VsUHJv
bWlzZTIsICdjYW5jZWwoKSBjYWxscyBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzJyk7
CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNhbmNlbFByb21pc2UxLCBjbG9zZWRSZWFkZXJQ
cm9taXNlLCAnY2FuY2VsKCkgcHJvbWlzZSAxIHNob3VsZCBiZSBkaXN0aW5jdCBmcm9tIHJlYWRl
ci5jbG9zZWQnKTsKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY2FuY2VsUHJvbWlzZTIsIGNs
b3NlZFJlYWRlclByb21pc2UsICdjYW5jZWwoKSBwcm9taXNlIDIgc2hvdWxkIGJlIGRpc3RpbmN0
IGZyb20gcmVhZGVyLmNsb3NlZCcpOworICAgICAgICBhbGxDaGVja2VkID0gdHJ1ZTsKKyAgICB9
KTsKIH07CiAKIGZ1bmN0aW9uIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlcihsYWJlbCwgZmFjdG9y
eSwgZXJyb3IpIHsKQEAgLTM0OSw3ICszODQsNyBAQCBmdW5jdGlvbiB0ZW1wbGF0ZWRSU0Vycm9y
ZWRSZWFkZXIobGFiZWwsIGZhY3RvcnksIGVycm9yKSB7CiAgICAgICAgICk7CiAgICAgfSk7CiAK
LSAgICB2YXIgdGVzdDIgPSBhc3luY190ZXN0KCdyZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRo
ZSBlcnJvcicpOworICAgIHZhciB0ZXN0MiA9IGFzeW5jX3Rlc3QoJ3JlYWQoKSBzaG91bGQgcmVq
ZWN0IHdpdGggdGhlIGVycm9yJywgeyB0aW1lb3V0OiA1MCB9KTsKICAgICB0ZXN0Mi5zdGVwKGZ1
bmN0aW9uKCkgewogICAgICAgICB2YXIgeyByZWFkZXIgfSA9IGZhY3RvcnkoKTsKIApAQCAtNDcy
LDE1ICs1MDcsMTYgQEAgZnVuY3Rpb24gdGVtcGxhdGVkUlNUd29DaHVua3NDbG9zZWRSZWFkZXIo
bGFiZWwsIGZhY3RvcnksIGNodW5rcykgewogICAgICAgICB9KSkuY2F0Y2godGVzdDIuc3RlcF9m
dW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSkpOwogICAgIH0pOwogCi0g
ICAgdmFyIHRlc3QzID0gYXN5bmNfdGVzdCgnZHJhaW5pbmcgdGhlIHN0cmVhbSB2aWEgcmVhZCgp
IHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIGNsb3NlZCBwcm9taXNlIHRvIGZ1bGZpbGwnKTsKKyAg
ICB2YXIgdGVzdDMgPSBhc3luY190ZXN0KCdkcmFpbmluZyB0aGUgc3RyZWFtIHZpYSByZWFkKCkg
c2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgY2xvc2VkIHByb21pc2UgdG8gZnVsZmlsbCBhbmQgbG9j
a2VkIHRvIGJlIGZhbHNlJyk7CiAgICAgdGVzdDMuc3RlcChmdW5jdGlvbigpIHsKLSAgICAgICAg
dmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7CisgICAgICAgIHZhciB7IHN0cmVhbSwgcmVhZGVy
IH0gPSBmYWN0b3J5KCk7CiAgICAgICAgIHZhciByZWFkQ2FsbGVkID0gZmFsc2U7CiAKICAgICAg
ICAgcmVhZGVyLmNsb3NlZC50aGVuKAogICAgICAgICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0
aW9uKHYpIHsKICAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShyZWFkQ2FsbGVkKTsKICAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ3JlYWRlciBjbG9zZWQgc2hv
dWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZmFs
c2Uoc3RyZWFtLmxvY2tlZCwgJ3N0cmVhbSBzaG91bGQgbm8gbG9uZ2VyIGJlIGxvY2tlZCcpOwog
ICAgICAgICAgICAgICAgIHRlc3QzLmRvbmUoKTsKICAgICAgICAgICAgIH0pLAogICAgICAgICAg
ICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdyZWFkZXIg
Y2xvc2VkIHNob3VsZCBub3QgcmVqZWN0Jyk7IH0pCkBAIC02MTUsMjQgKzY1MSwyMyBAQCB0ZW1w
bGF0ZWRSU0Vycm9yZWRTeW5jT25seSgnUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwg
aW4gc3RhcnQpJywgZnVuY3RpbwogICAgIHRoZUVycm9yCiApOwogCi0vLyBGSVhNRTogQWN0aXZh
dGUgdGhlc2UgdGVzdHMgb25jZSBQcm9taXNlIGhhbmRsaW5nIGlzIHN1cHBvcnRlZCBpbiBzdGFy
dCBmdW5jdGlvbi4KLS8vIHRlbXBsYXRlZFJTRXJyb3JlZCgnUmVhZGFibGVTdHJlYW0gKGVycm9y
ZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpJywgZnVuY3Rpb24o
KSB7Ci0vLyAgICAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0vLyAgICAgICAgIHN0YXJ0
OiBmdW5jdGlvbigpIHsKLS8vICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh0aGVF
cnJvcik7Ci0vLyAgICAgICAgIH0KLS8vICAgICB9KX0sCi0vLyAgICAgdGhlRXJyb3IKLS8vICk7
Ci0KLS8vIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlcignUmVhZGFibGVTdHJlYW0gKGVycm9yZWQg
dmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpIHJlYWRlcicsIGZ1bmN0
aW9uKCkgewotLy8gICAgIHJldHVybiBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0vLyAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHsKLS8vICAgICAgICAgICAg
IHJldHVybiBQcm9taXNlLnJlamVjdCh0aGVFcnJvcik7Ci0vLyAgICAgICAgIH0KLS8vICAgICB9
KSl9LAotLy8gICAgIHRoZUVycm9yCi0vLyApOwordGVtcGxhdGVkUlNFcnJvcmVkKCdSZWFkYWJs
ZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFy
dCknLCBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAg
ICAgc3RhcnQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0
KHRoZUVycm9yKTsKKyAgICAgICAgfQorICAgIH0pfSwKKyAgICB0aGVFcnJvcgorKTsKKwordGVt
cGxhdGVkUlNFcnJvcmVkUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJu
aW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgcmVhZGVyJywgZnVuY3Rpb24oKSB7Cisg
ICAgcmV0dXJuIHN0cmVhbUFuZERlZmF1bHRSZWFkZXIobmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVq
ZWN0KHRoZUVycm9yKTsKKyAgICAgICAgfQorICAgIH0pKX0sCisgICAgdGhlRXJyb3IKKyk7CiAK
IHZhciBjaHVua3MgPSBbJ2EnLCAnYiddOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbCBiL0xheW91
dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5o
dG1sCmluZGV4IDcwZjIzYTc2ZTkzMDMyOGMyMDg2Y2I3N2E2Y2ZiNGY2MTFkYzYwYjIuLmMwYjY3
Y2E5ZWEyYzMyYmFlZWM5NTBhZTY4ODJiMTc2OTI4ZTIwOGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1s
CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRh
YmxlLXN0cmVhbS5odG1sCkBAIC0xMiwyMSArMTIsMzMgQEAgdGVzdChmdW5jdGlvbigpIHsKIH0s
ICdSZWFkYWJsZVN0cmVhbSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBubyBlcnJvcnMnKTsKIAog
dGVzdChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVu
Y3Rpb24oKSB7IG5ldyBSZWFkYWJsZVN0cmVhbShudWxsKTsgfSwgJ2NvbnN0cnVjdG9yIHNob3Vs
ZCB0aHJvdyB3aGVuIHRoZSBzb3VyY2UgaXMgbnVsbCcpOworfSwgJ1JlYWRhYmxlU3RyZWFtIGNh
blwndCBiZSBjb25zdHJ1Y3RlZCB3aXRoIGdhcmJhZ2UnKTsKKwordGVzdChmdW5jdGlvbigpIHsK
ICAgICB2YXIgbWV0aG9kcyA9IFsnY2FuY2VsJywgJ2NvbnN0cnVjdG9yJywgJ2dldFJlYWRlcics
ICdwaXBlVGhyb3VnaCcsICdwaXBlVG8nLCAndGVlJ107CisgICAgdmFyIHByb3BlcnRpZXMgPSBt
ZXRob2RzLmNvbmNhdChbJ2xvY2tlZCddKS5zb3J0KCk7CiAKICAgICB2YXIgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oKTsKICAgICB2YXIgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocnMp
OwogCi0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhw
cm90bykuc29ydCgpLCBtZXRob2RzLCAnc2hvdWxkIGhhdmUgYWxsIHRoZSBjb3JyZWN0IG1ldGhv
ZHMnKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVz
KHByb3RvKS5zb3J0KCksIHByb3BlcnRpZXMsICdzaG91bGQgaGF2ZSBhbGwgdGhlIGNvcnJlY3Qg
bWV0aG9kcycpOwogCiAgICAgZm9yICh2YXIgbSBvZiBtZXRob2RzKSB7CiAgICAgICAgIHZhciBw
cm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIG0pOwotICAg
ICAgICBhc3NlcnRfZXF1YWxzKHByb3BEZXNjLmVudW1lcmFibGUsIGZhbHNlLCAnbWV0aG9kIHNo
b3VsZCBiZSBub24tZW51bWVyYWJsZScpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHByb3BEZXNj
LmNvbmZpZ3VyYWJsZSwgdHJ1ZSwgJ21ldGhvZCBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7Ci0g
ICAgICAgIGFzc2VydF9lcXVhbHMocHJvcERlc2Mud3JpdGFibGUsIHRydWUsICdtZXRob2Qgc2hv
dWxkIGJlIHdyaXRhYmxlJyk7CisgICAgICAgIGFzc2VydF9mYWxzZShwcm9wRGVzYy5lbnVtZXJh
YmxlLCAnbWV0aG9kIHNob3VsZCBiZSBub24tZW51bWVyYWJsZScpOworICAgICAgICBhc3NlcnRf
dHJ1ZShwcm9wRGVzYy5jb25maWd1cmFibGUsICdtZXRob2Qgc2hvdWxkIGJlIGNvbmZpZ3VyYWJs
ZScpOworICAgICAgICBhc3NlcnRfdHJ1ZShwcm9wRGVzYy53cml0YWJsZSwgJ21ldGhvZCBzaG91
bGQgYmUgd3JpdGFibGUnKTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNbbV0sICdm
dW5jdGlvbicsICdzaG91bGQgaGF2ZSBiZSBhIG1ldGhvZCcpOwogICAgIH0KIAorICAgIHZhciBs
b2NrZWRQcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sICds
b2NrZWQnKTsKKyAgICBhc3NlcnRfZmFsc2UobG9ja2VkUHJvcERlc2MuZW51bWVyYWJsZSwgJ2xv
Y2tlZCBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGxvY2tl
ZFByb3BEZXNjLndyaXRhYmxlLCB1bmRlZmluZWQsICdsb2NrZWQgc2hvdWxkIG5vdCBiZSBhIGRh
dGEgcHJvcGVydHknKTsKKyAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBsb2NrZWRQcm9wRGVzYy5n
ZXQsICdmdW5jdGlvbicsICdsb2NrZWQgc2hvdWxkIGhhdmUgYSBnZXR0ZXInKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKGxvY2tlZFByb3BEZXNjLnNldCwgdW5kZWZpbmVkLCAnbG9ja2VkIHNob3VsZCBu
b3QgaGF2ZSBhIHNldHRlcicpOworICAgIGFzc2VydF90cnVlKGxvY2tlZFByb3BEZXNjLmNvbmZp
Z3VyYWJsZSwgJ2xvY2tlZCBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7CisKICAgICBhc3NlcnRf
ZXF1YWxzKHJzLmNhbmNlbC5sZW5ndGgsIDEsICdjYW5jZWwgc2hvdWxkIGhhdmUgMSBwYXJhbWV0
ZXInKTsKICAgICBhc3NlcnRfZXF1YWxzKHJzLmNvbnN0cnVjdG9yLmxlbmd0aCwgMCwgJ2NvbnN0
cnVjdG9yIHNob3VsZCBoYXZlIG5vIHBhcmFtZXRlcnMnKTsKICAgICBhc3NlcnRfZXF1YWxzKHJz
LmdldFJlYWRlci5sZW5ndGgsIDAsICdnZXRSZWFkZXIgc2hvdWxkIGhhdmUgbm8gcGFyYW1ldGVy
cycpOwpAQCAtNTAsNjAgKzYyLDEzMiBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogfSwgJ1JlYWRhYmxl
U3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5pdGlhbCBnYXJiYWdlIGFzIHB1bGwgYXJndW1l
bnQnKTsKIAogdGVzdChmdW5jdGlvbigpIHsKLSAgICBuZXcgUmVhZGFibGVTdHJlYW0oeyBzdHJh
dGVneTogMiB9KTsgLy8gQ29uc3RydWN0b3Igc2hvdWxkIG5vdCB0aHJvdyB3aGVuIHN0cmF0ZWd5
IGlzIG5vdCBhbiBvYmplY3QuCi19LCAnUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgY2FuIGdl
dCBpbml0aWFsIGdhcmJhZ2UgYXMgc3RyYXRlZ3kgYXJndW1lbnQnKTsKKyAgICB2YXIgc3RhcnRD
YWxsZWQgPSBmYWxzZTsKKyAgICB2YXIgc291cmNlID0geworICAgICAgICBzdGFydDogZnVuY3Rp
b24oY29udHJvbGxlcikgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0aGlzLCBzb3VyY2Us
ICdzb3VyY2UgaXMgdGhpcyBkdXJpbmcgc3RhcnQnKTsKKworICAgICAgICAgICAgdmFyIG1ldGhv
ZHMgPSBbJ2Nsb3NlJywgJ2VucXVldWUnLCAnZXJyb3InLCAnY29uc3RydWN0b3InXTsKKyAgICAg
ICAgICAgIHZhciBwcm9wZXJ0aWVzID0gWydkZXNpcmVkU2l6ZSddLmNvbmNhdChtZXRob2RzKS5z
b3J0KCk7CisgICAgICAgICAgICB2YXIgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY29u
dHJvbGxlcik7CisKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoT2JqZWN0LmdldE93
blByb3BlcnR5TmFtZXMocHJvdG8pLnNvcnQoKSwgcHJvcGVydGllcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3RoZSBjb250cm9sbGVyIHNob3VsZCBoYXZlIHRoZSByaWdodCBw
cm9wZXJ0aWVzJyk7CisKKyAgICAgICAgICAgIGZvciAodmFyIG0gb2YgbWV0aG9kcykgeworICAg
ICAgICAgICAgICAgIHZhciBwcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IocHJvdG8sIG0pOworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGNvbnRy
b2xsZXJbbV0sICdmdW5jdGlvbicsIGBzaG91bGQgaGF2ZSBhICR7bX0gbWV0aG9kYCk7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKHByb3BEZXNjLmVudW1lcmFibGUsIG0gKyAiIHNob3Vs
ZCBiZSBub24tZW51bWVyYWJsZSIpOworICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKHByb3BE
ZXNjLmNvbmZpZ3VyYWJsZSwgbSArICIgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZSIpOworICAgICAg
ICAgICAgICAgIGFzc2VydF90cnVlKHByb3BEZXNjLndyaXRhYmxlLCBtICsgIiBzaG91bGQgYmUg
d3JpdGFibGUiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIGRlc2lyZWRTaXpl
UHJvcERlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCAnZGVzaXJl
ZFNpemUnKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZShkZXNpcmVkU2l6ZVByb3BEZXNjLmVu
dW1lcmFibGUsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUnKTsKKyAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMoZGVzaXJlZFNpemVQcm9wRGVzYy53cml0YWJsZSwgdW5kZWZp
bmVkLCAnZGVzaXJlZFNpemUgc2hvdWxkIG5vdCBiZSBhIGRhdGEgcHJvcGVydHknKTsKKyAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGRlc2lyZWRTaXplUHJvcERlc2MuZ2V0LCAnZnVu
Y3Rpb24nLCAnZGVzaXJlZFNpemUgc2hvdWxkIGhhdmUgYSBnZXR0ZXInKTsKKyAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMoZGVzaXJlZFNpemVQcm9wRGVzYy5zZXQsIHVuZGVmaW5lZCwgJ2Rlc2ly
ZWRTaXplIHNob3VsZCBub3QgaGF2ZSBhIHNldHRlcicpOworICAgICAgICAgICAgYXNzZXJ0X3Ry
dWUoZGVzaXJlZFNpemVQcm9wRGVzYy5jb25maWd1cmFibGUsICdkZXNpcmVkU2l6ZSBzaG91bGQg
YmUgY29uZmlndXJhYmxlJyk7CisKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxl
ci5jbG9zZS5sZW5ndGgsIDAsICdjbG9zZSBzaG91bGQgaGF2ZSBubyBwYXJhbWV0ZXJzJyk7Cisg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuY29uc3RydWN0b3IubGVuZ3RoLCAx
LCAnY29uc3RydWN0b3Igc2hvdWxkIGhhdmUgMSBwYXJhbWV0ZXInKTsKKyAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMoY29udHJvbGxlci5lbnF1ZXVlLmxlbmd0aCwgMSwgJ2VucXVldWUgc2hvdWxk
IGhhdmUgMSBwYXJhbWV0ZXInKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxl
ci5lcnJvci5sZW5ndGgsIDEsICdlcnJvciBzaG91bGQgaGF2ZSAxIHBhcmFtZXRlcicpOworCisg
ICAgICAgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9OworCisgICAg
bmV3IFJlYWRhYmxlU3RyZWFtKHNvdXJjZSk7CisgICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQp
OworfSwgJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgcHJv
cGVyIHBhcmFtZXRlcnMnKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB2YXIgc3RhcnRDYWxs
ZWQgPSBmYWxzZTsKKyAgICB2YXIgc291cmNlID0geworICAgICAgICBzdGFydDogZnVuY3Rpb24o
Y29udHJvbGxlcikgeworICAgICAgICAgICAgdmFyIHByb3BlcnRpZXMgPSBbJ2Nsb3NlJywgJ2Nv
bnN0cnVjdG9yJywgJ2Rlc2lyZWRTaXplJywgJ2VucXVldWUnLCAnZXJyb3InXTsKKyAgICAgICAg
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2JqZWN0
LmdldFByb3RvdHlwZU9mKGNvbnRyb2xsZXIpKS5zb3J0KCksIHByb3BlcnRpZXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdwcm90b3R5cGUgc2hvdWxkIGhhdmUgdGhlIHJpZ2h0
IHByb3BlcnRpZXMnKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIudGVzdCA9ICcnOworICAgICAg
ICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPYmpl
Y3QuZ2V0UHJvdG90eXBlT2YoY29udHJvbGxlcikpLnNvcnQoKSwgcHJvcGVydGllcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3RvdHlwZSBzaG91bGQgc3RpbGwgaGF2ZSB0
aGUgcmlnaHQgcHJvcGVydGllcycpOworICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoT2Jq
ZWN0LmdldE93blByb3BlcnR5TmFtZXMoY29udHJvbGxlcikuaW5kZXhPZigndGVzdCcpLCAtMSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcidGVzdCIgc2hvdWxkIGJlIGEgcHJvcGVy
dHkgb2YgdGhlIGNvbnRyb2xsZXInKTsKKworICAgICAgICAgICAgc3RhcnRDYWxsZWQgPSB0cnVl
OworICAgICAgICB9CisgICAgfTsKIAotdmFyIHRlc3QxID0gYXN5bmNfdGVzdCgnUmVhZGFibGVT
dHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZScsIHsgdGltZW91
dDogNTAgfSk7CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHNvdXJjZSk7CisgICAg
YXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworfSwgJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IGNvbnRy
b2xsZXIgcGFyYW1ldGVyIHNob3VsZCBiZSBleHRlbnNpYmxlJyk7CisKK3ZhciB0ZXN0MSA9IGFz
eW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHNob3VsZCBiZSBhYmxlIHRvIGNhbGwgc3RhcnQgbWV0
aG9kIHdpdGhpbiBwcm90b3R5cGUgY2hhaW4gb2YgaXRzIHNvdXJjZScpOwogdGVzdDEuc3RlcChm
dW5jdGlvbigpCiB7CisgICAgZnVuY3Rpb24gU2ltcGxlU3RyZWFtU291cmNlKCkgeworICAgIH07
CisgICAgU2ltcGxlU3RyZWFtU291cmNlLnByb3RvdHlwZSA9IHsKKyAgICAgICAgc3RhcnQ6IGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdDEuZG9uZSgnc3RhcnQgc2hvdWxkIGJlIGNhbGxl
ZCcpOworICAgICAgICB9LAorICAgIH0KKworICAgIG5ldyBSZWFkYWJsZVN0cmVhbShuZXcgU2lt
cGxlU3RyZWFtU291cmNlKCkpOworfSk7CisKK3ZhciB0ZXN0MiA9IGFzeW5jX3Rlc3QoJ1JlYWRh
YmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UnKTsKK3Rl
c3QyLnN0ZXAoZnVuY3Rpb24oKQorewogICAgIHZhciByZWFkQ2FsbGVkID0gZmFsc2U7CiAgICAg
dmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMp
IHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSh0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rp
b24ocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICAgICAgc2V0VGltZW91dCh0ZXN0MS5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UodGVz
dDIuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQodGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAg
ICAgICBjLmVucXVldWUoJ2EnKTsKICAgICAgICAgICAgICAgICAgICAgYy5jbG9zZSgpOwogICAg
ICAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgfSksIHN0YW5kYXJk
VGltZW91dCk7CisgICAgICAgICAgICAgICAgfSksIDUwKTsKICAgICAgICAgICAgIH0pKTsKICAg
ICAgICAgfSwKICAgICB9KTsKIAogICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKIAot
ICAgIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgeworICAg
IHJlYWRlci5yZWFkKCkudGhlbih0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgewogICAgICAg
ICByZWFkQ2FsbGVkID0gdHJ1ZTsKICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2
YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAndmFsdWUgcmVhZCBzaG91bGQgYmUgdGhlIG9uZSBl
bnF1ZXVlZCcpOwogICAgIH0pKTsKIAotICAgIHJlYWRlci5jbG9zZWQudGhlbih0ZXN0MS5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgcmVhZGVyLmNsb3NlZC50aGVuKHRlc3QyLnN0ZXBfZnVu
YyhmdW5jdGlvbigpIHsKICAgICAgICAgYXNzZXJ0X3RydWUocmVhZENhbGxlZCk7Ci0gICAgICAg
IHRlc3QxLmRvbmUoJ3N0cmVhbSBzaG91bGQgY2xvc2Ugc3VjY2Vzc2Z1bGx5Jyk7CisgICAgICAg
IHRlc3QyLmRvbmUoJ3N0cmVhbSBzaG91bGQgY2xvc2Ugc3VjY2Vzc2Z1bGx5Jyk7CiAgICAgfSkp
OwogfSk7CiAKLXZhciB0ZXN0MiA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IHNo
b3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCcsIHsgdGltZW91
dDogMTAwIH0pOwotdGVzdDIuc3RlcChmdW5jdGlvbigpCit2YXIgdGVzdDMgPSBhc3luY190ZXN0
KCdSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNl
IGFuZCByZWplY3QgaXQnLCB7IHRpbWVvdXQ6IDEwMCB9KTsKK3Rlc3QzLnN0ZXAoZnVuY3Rpb24o
KQogewogICAgIHZhciB0aGVFcnJvciA9IG5ldyBFcnJvcigncmVqZWN0ZWQhJyk7CiAgICAgdmFy
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbihy
ZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3QyLnN0ZXBf
ZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSh0ZXN0My5z
dGVwX2Z1bmMoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICAgICAgc2V0
VGltZW91dCh0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAg
IHJlamVjdCh0aGVFcnJvcik7Ci0gICAgICAgICAgICAgICAgfSksIHN0YW5kYXJkVGltZW91dCk7
CisgICAgICAgICAgICAgICAgfSksIDUwKTsKICAgICAgICAgICAgIH0pKTsKICAgICAgICAgfSwK
ICAgICB9KTsKIAotICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaCh0ZXN0Mi5zdGVwX2Z1
bmMoZnVuY3Rpb24oZSkgeworICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaCh0ZXN0My5z
dGVwX2Z1bmMoZnVuY3Rpb24oZSkgewogICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9y
LCAncHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgc2FtZSBlcnJvcicpOwotICAg
ICAgICB0ZXN0Mi5kb25lKCk7CisgICAgICAgIHRlc3QzLmRvbmUoKTsKICAgICB9KSk7CiB9KTsK
IAotdmFyIHRlc3QzID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gc2hvdWxkIGJlIGFibGUg
dG8gZW5xdWV1ZSBkaWZmZXJlbnQgb2JqZWN0cy4nKTsKLXRlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7
Cit2YXIgdGVzdDQgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0
byBlbnF1ZXVlIGRpZmZlcmVudCBvYmplY3RzLicpOwordGVzdDQuc3RlcChmdW5jdGlvbigpIHsK
ICAgICB2YXIgcmVhZENhbGxzID0gMDsKICAgICB2YXIgb2JqZWN0cyA9IFsKICAgICB7IHBvdGF0
bzogJ0dpdmUgbWUgbW9yZSEnfSwKQEAgLTEyMiwzMiArMjA2LDI2IEBAIHRlc3QzLnN0ZXAoZnVu
Y3Rpb24oKSB7CiAKICAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CiAKLSAgICByZWFk
ZXIucmVhZCgpLnRoZW4odGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKKyAgICByZWFkZXIu
cmVhZCgpLnRoZW4odGVzdDQuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgYXNzZXJ0
X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogb2JqZWN0c1tyZWFkQ2FsbHMrK10sIGRvbmU6IGZh
bHNlIH0sICd2YWx1ZSByZWFkIHNob3VsZCBiZSB0aGUgb25lIGVucXVldWVkJyk7CiAgICAgfSkp
OwogCi0gICAgcmVhZGVyLnJlYWQoKS50aGVuKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7
CisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHRlc3Q0LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7CiAg
ICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IG9iamVjdHNbcmVhZENhbGxz
KytdLCBkb25lOiBmYWxzZSB9LCAndmFsdWUgcmVhZCBzaG91bGQgYmUgdGhlIG9uZSBlbnF1ZXVl
ZCcpOwogICAgIH0pKTsKIAotICAgIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0My5zdGVwX2Z1bmMo
ZnVuY3Rpb24ocikgeworICAgIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0NC5zdGVwX2Z1bmMoZnVu
Y3Rpb24ocikgewogICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiBvYmpl
Y3RzW3JlYWRDYWxscysrXSwgZG9uZTogZmFsc2UgfSwgJ3ZhbHVlIHJlYWQgc2hvdWxkIGJlIHRo
ZSBvbmUgZW5xdWV1ZWQnKTsKICAgICB9KSk7CiAKLSAgICByZWFkZXIuY2xvc2VkLnRoZW4odGVz
dDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgIHJlYWRlci5jbG9zZWQudGhlbih0ZXN0NC5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7CiAgICAgICAgIGFzc2VydF9lcXVhbHMocmVhZENhbGxzLCAz
KTsKLSAgICAgICAgdGVzdDMuZG9uZSgnc3RyZWFtIHNob3VsZCBjbG9zZSBjb3JyZWN0bHkgY29y
cmVjdGx5Jyk7CisgICAgICAgIHRlc3Q0LmRvbmUoJ3N0cmVhbSBzaG91bGQgY2xvc2UgY29ycmVj
dGx5IGNvcnJlY3RseScpOwogICAgIH0pKTsKIH0pOwogCi10ZXN0KGZ1bmN0aW9uKCkgewotICAg
IHZhciBlcnJvciA9IG5ldyBFcnJvcignYWFhdWdoISEnKTsKLQotICAgIGFzc2VydF90aHJvd3Mo
ZXJyb3IsIGZ1bmN0aW9uKCkgeyBuZXcgUmVhZGFibGVTdHJlYW0oeyBzdGFydCgpIHsgdGhyb3cg
ZXJyb3I7IH0gfSkgfSwgJ2Vycm9yIHNob3VsZCBiZSByZS10aHJvd24nKTsKLX0sICdSZWFkYWJs
ZVN0cmVhbTogaWYgc3RhcnQgdGhyb3dzIGFuIGVycm9yLCBpdCBzaG91bGQgYmUgcmUtdGhyb3du
Jyk7Ci0KLXZhciB0ZXN0NCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBpZiBwdWxsIHJl
amVjdHMsIGl0IHNob3VsZCBlcnJvciB0aGUgc3RyZWFtJywgeyB0aW1lb3V0OiA1MCB9KTsKLXRl
c3Q0LnN0ZXAoZnVuY3Rpb24oKSB7Cit2YXIgdGVzdDUgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0
cmVhbTogaWYgcHVsbCByZWplY3RzLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbScsIHsgdGlt
ZW91dDogNTAgfSk7Cit0ZXN0NS5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciBlcnJvciA9IG5l
dyBFcnJvcigncHVsbCBmYWlsdXJlJyk7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKICAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7CkBAIC0xNjAsMjEzICsyMzgsMTcyIEBAIHRl
c3Q0LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIGNsb3NlZCA9IGZhbHNlOwogICAgIHZhciBy
ZWFkID0gZmFsc2U7CiAKLSAgICByZWFkZXIuY2xvc2VkLmNhdGNoKHRlc3Q0LnN0ZXBfZnVuYyhm
dW5jdGlvbihlKSB7CisgICAgcmVhZGVyLmNsb3NlZC5jYXRjaCh0ZXN0NS5zdGVwX2Z1bmMoZnVu
Y3Rpb24oZSkgewogICAgICAgICBjbG9zZWQgPSB0cnVlOwogICAgICAgICBhc3NlcnRfZmFsc2Uo
cmVhZCk7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoZSwgZXJyb3IsICdjbG9zZWQgc2hvdWxkIHJl
amVjdCB3aXRoIHRoZSB0aHJvd24gZXJyb3InKTsKICAgICB9KSk7CiAKLSAgICByZWFkZXIucmVh
ZCgpLmNhdGNoKHRlc3Q0LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CisgICAgcmVhZGVyLnJlYWQo
KS5jYXRjaCh0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewogICAgICAgICByZWFkID0gdHJ1
ZTsKICAgICAgICAgYXNzZXJ0X3RydWUoY2xvc2VkKTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhl
LCBlcnJvciwgJ3JlYWQoKSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIHRocm93biBlcnJvcicpOwot
ICAgICAgICB0ZXN0NC5kb25lKCk7CisgICAgICAgIHRlc3Q1LmRvbmUoKTsKICAgICB9KSk7CiB9
KTsKIAotLy8gdmFyIHRlc3Q1ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBv
bmx5IGNhbGwgcHVsbCBvbmNlIHVwb24gc3RhcnRpbmcgdGhlIHN0cmVhbScpOwotLy8gdGVzdDUu
c3RlcChmdW5jdGlvbigpIHsKLS8vICAgICB2YXIgcHVsbENvdW50ID0gMDsKLS8vICAgICB2YXIg
c3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0vLyAgICAgdmFyIHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKLS8vICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkgewotLy8gICAgICAg
ICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKLS8vICAgICAgICAgfSwKLS8vICAgICAgICAgcHVs
bDogZnVuY3Rpb24oKSB7Ci0vLyAgICAgICAgICAgICBwdWxsQ291bnQrKzsKLS8vICAgICAgICAg
fQotLy8gICAgIH0pOwotCi0vLyAgICAgc3RhcnRQcm9taXNlLnRoZW4odGVzdDUuc3RlcF9mdW5j
KGZ1bmN0aW9uKCkgewotLy8gICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1
bGwgc2hvdWxkIGJlIGNhbGxlZCBvbmNlIHN0YXJ0IGZpbmlzaGVzJyk7Ci0vLyAgICAgfSkpOwor
dmFyIHRlc3Q2ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwg
cHVsbCBvbmNlIHVwb24gc3RhcnRpbmcgdGhlIHN0cmVhbScpOwordGVzdDYuc3RlcChmdW5jdGlv
bigpIHsKKyAgICB2YXIgcHVsbENvdW50ID0gMDsKKyAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJv
bWlzZS5yZXNvbHZlKCk7CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAg
ICAgc3RhcnQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsK
KyAgICAgICAgfSwKKyAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWxs
Q291bnQrKzsKKyAgICAgICAgfQorICAgIH0pOwogCi0vLyAgICAgc2V0VGltZW91dCh0ZXN0NS5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0vLyAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50
LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgb25jZScpOwotLy8gICAgICAgICB0
ZXN0NS5kb25lKCk7Ci0vLyAgICAgfSksIHN0YW5kYXJkVGltZW91dCk7Ci0vLyB9KTsKKyAgICBz
dGFydFByb21pc2UudGhlbih0ZXN0Ni5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGFz
c2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIG9uY2Ugc3Rh
cnQgZmluaXNoZXMnKTsKKyAgICB9KSk7CiAKLS8vIHZhciB0ZXN0NiA9IGFzeW5jX3Rlc3QoJ1Jl
YWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSBmb3IgYSBmb3JldmVyLWVt
cHR5IHN0cmVhbSwgZXZlbiBhZnRlciByZWFkaW5nJyk7Ci0vLyB0ZXN0Ni5zdGVwKGZ1bmN0aW9u
KCkgewotLy8gICAgIHZhciBwdWxsQ291bnQgPSAwOwotLy8gICAgIHZhciBzdGFydFByb21pc2Ug
PSBQcm9taXNlLnJlc29sdmUoKTsKLS8vICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
ewotLy8gICAgICAgICBzdGFydDogZnVuY3Rpb24oKSB7Ci0vLyAgICAgICAgICAgICByZXR1cm4g
c3RhcnRQcm9taXNlOwotLy8gICAgICAgICB9LAotLy8gICAgICAgICBwdWxsOiBmdW5jdGlvbigp
IHsKLS8vICAgICAgICAgICAgIHB1bGxDb3VudCsrOwotLy8gICAgICAgICB9Ci0vLyAgICAgfSk7
Ci0KLS8vICAgICBzdGFydFByb21pc2UudGhlbih0ZXN0Ni5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
Ci0vLyAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUg
Y2FsbGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMnKTsKLS8vICAgICB9KSk7CisgICAgc2V0VGltZW91
dCh0ZXN0Ni5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMocHVs
bENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgb25jZScpOworICAgICAg
ICB0ZXN0Ni5kb25lKCk7CisgICAgfSksIDUwKTsKK30pOwogCi0vLyAgICAgcnMuZ2V0UmVhZGVy
KCkucmVhZCgpOwordmFyIHRlc3Q3ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3Vs
ZCBjYWxsIHB1bGwgd2hlbiB0cnlpbmcgdG8gcmVhZCBmcm9tIGEgc3RhcnRlZCwgZW1wdHkgc3Ry
ZWFtJyk7Cit0ZXN0Ny5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciBwdWxsQ291bnQgPSAwOwor
ICAgIHZhciBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKKyAgICB2YXIgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICByZXR1cm4gc3RhcnRQcm9taXNlOworICAgICAgICB9LAorICAgICAgICBwdWxsOiBmdW5j
dGlvbihjKSB7CisgICAgICAgICAgICAvLyBEb24ndCBlbnF1ZXVlIGltbWVkaWF0ZWx5IGFmdGVy
IHN0YXJ0LiBXZSB3YW50IHRoZSBzdHJlYW0gdG8gYmUgZW1wdHkgd2hlbiB3ZSBjYWxsIC5yZWFk
KCkgb24gaXQuCisgICAgICAgICAgICBpZiAocHVsbENvdW50ID4gMCkgeworICAgICAgICAgICAg
ICAgIGMuZW5xdWV1ZShwdWxsQ291bnQpOworICAgICAgICAgICAgfQogCi0vLyAgICAgc2V0VGlt
ZW91dCh0ZXN0Ni5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0vLyAgICAgICAgIGFzc2VydF9lcXVh
bHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgb25jZScpOwot
Ly8gICAgICAgICB0ZXN0Ni5kb25lKCk7Ci0vLyAgICAgfSksIHN0YW5kYXJkVGltZW91dCk7Ci0v
LyB9KTsKKyAgICAgICAgICAgICsrcHVsbENvdW50OworICAgICAgICB9CisgICAgfSk7CiAKLS8v
IHZhciB0ZXN0NyA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxs
IHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGJlZm9yZSBzdGFydCBm
dWxmaWxscycpOwotLy8gdGVzdDcuc3RlcChmdW5jdGlvbigpIHsKLS8vICAgICB2YXIgcHVsbENv
dW50ID0gMDsKLS8vICAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0v
LyAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLS8vICAgICAgICAgc3RhcnQ6IGZ1
bmN0aW9uKGMpIHsKLS8vICAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOwotLy8gICAgICAgICAg
ICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKLS8vICAgICAgICAgfSwKLS8vICAgICAgICAgcHVsbDog
ZnVuY3Rpb24oKSB7Ci0vLyAgICAgICAgICAgICBwdWxsQ291bnQrKzsKLS8vICAgICAgICAgfQot
Ly8gICAgIH0pOwotCi0vLyAgICAgc3RhcnRQcm9taXNlLnRoZW4odGVzdDcuc3RlcF9mdW5jKGZ1
bmN0aW9uKCkgewotLy8gICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwg
c2hvdWxkIGJlIGNhbGxlZCBvbmNlIHN0YXJ0IGZpbmlzaGVzJyk7Ci0vLyAgICAgfSkpOworICAg
IHN0YXJ0UHJvbWlzZS50aGVuKHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAg
YXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgb25jZSBz
dGFydCBmaW5pc2hlcycpOwogCi0vLyAgICAgcnMuZ2V0UmVhZGVyKCkucmVhZCgpLnRoZW4odGVz
dDcuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKLS8vICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVh
bHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgcmVhZCgpIHNob3VsZCBy
ZXR1cm4gZmlyc3QgY2h1bmsnKTsKLS8vICAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQs
IDEsICdwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCBhZ2FpbicpOwotLy8gICAgIH0p
KTsKKyAgICAgICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworICAgICAgICByZXR1cm4g
cmVhZGVyLnJlYWQoKS50aGVuKHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsKKyAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAyLCAncHVsbCBzaG91bGQgYmUgY2Fs
bGVkIGFnYWluIGluIHJlYWN0aW9uIHRvIGNhbGxpbmcgcmVhZCcpOworICAgICAgICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAxLCBkb25lOiBmYWxzZSB9LCAndGhl
IHJlc3VsdCByZWFkIHNob3VsZCBiZSB0aGUgb25lIGVucXVldWVkJyk7CisgICAgICAgICAgICB0
ZXN0Ny5kb25lKCk7CisgICAgICAgIH0pKTsKKyAgICB9KSkuY2F0Y2godGVzdDcuc3RlcF9mdW5j
KGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSkpOworfSk7CiAKLS8vICAgICBh
c3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCwgJ2NhbGxpbmcgcmVhZCgpIHNob3VsZCBub3QgY2F1
c2UgcHVsbCB0byBiZSBjYWxsZWQgeWV0Jyk7Cit2YXIgdGVzdDggPSBhc3luY190ZXN0KCdSZWFk
YWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ugb24gYSBub24tZW1wdHkgc3Ry
ZWFtIHJlYWQgZnJvbSBiZWZvcmUgc3RhcnQgZnVsZmlsbHMnKTsKK3Rlc3Q4LnN0ZXAoZnVuY3Rp
b24oKSB7CisgICAgdmFyIHB1bGxDb3VudCA9IDA7CisgICAgdmFyIHN0YXJ0UHJvbWlzZSA9IFBy
b21pc2UucmVzb2x2ZSgpOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAg
ICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAgICBjLmVucXVldWUoJ2EnKTsKKyAg
ICAgICAgICAgIHJldHVybiBzdGFydFByb21pc2U7CisgICAgICAgIH0sCisgICAgICAgIHB1bGw6
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcHVsbENvdW50Kys7CisgICAgICAgIH0KKyAgICB9
KTsKIAotLy8gICAgIHNldFRpbWVvdXQodGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotLy8g
ICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxl
ZCBleGFjdGx5IG9uY2UnKTsKLS8vICAgICAgICAgdGVzdDcuZG9uZSgpOwotLy8gICAgIH0pLCBz
dGFuZGFyZFRpbWVvdXQpOwotLy8gfSk7CisgICAgc3RhcnRQcm9taXNlLnRoZW4odGVzdDguc3Rl
cF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwg
J3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBvbmNlIHN0YXJ0IGZpbmlzaGVzJyk7CisgICAgfSkpOwog
Ci0vLyB2YXIgdGVzdDggPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkg
Y2FsbCBwdWxsIHR3aWNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSByZWFkIGZyb20gYWZ0ZXIgc3Rh
cnQgZnVsZmlsbHMnKTsKLS8vIHRlc3Q4LnN0ZXAoZnVuY3Rpb24oKSB7Ci0vLyAgICAgdmFyIHB1
bGxDb3VudCA9IDA7Ci0vLyAgICAgdmFyIHN0YXJ0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgp
OwotLy8gICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0vLyAgICAgICAgIHN0YXJ0
OiBmdW5jdGlvbihjKSB7Ci0vLyAgICAgICAgICAgICBjLmVucXVldWUoJ2EnKTsKLS8vICAgICAg
ICAgICAgIHJldHVybiBzdGFydFByb21pc2U7Ci0vLyAgICAgICAgIH0sCi0vLyAgICAgICAgIHB1
bGw6IGZ1bmN0aW9uKCkgewotLy8gICAgICAgICAgICAgcHVsbENvdW50Kys7Ci0vLyAgICAgICAg
IH0KLS8vICAgICB9KTsKLQotLy8gICAgIHN0YXJ0UHJvbWlzZS50aGVuKHRlc3Q4LnN0ZXBfZnVu
YyhmdW5jdGlvbigpIHsKLS8vICAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdw
dWxsIHNob3VsZCBiZSBjYWxsZWQgb25jZSBzdGFydCBmaW5pc2hlcycpOwotCi0vLyAgICAgICAg
IHJzLmdldFJlYWRlcigpLnJlYWQoKS50aGVuKHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7
Ci0vLyAgICAgICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRv
bmU6IGZhbHNlIH0sICdmaXJzdCByZWFkKCkgc2hvdWxkIHJldHVybiBmaXJzdCBjaHVuaycpOwot
Ly8gICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDIsICdwdWxsIHNob3VsZCBi
ZSBjYWxsZWQgYWdhaW4gb25jZSByZWFkIGZ1bGZpbGxzJyk7Ci0vLyAgICAgICAgIH0pKTsKLS8v
ICAgICB9KSk7CisgICAgcnMuZ2V0UmVhZGVyKCkucmVhZCgpLnRoZW4odGVzdDguc3RlcF9mdW5j
KGZ1bmN0aW9uKHIpIHsKKyAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTog
J2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgcmVhZCgpIHNob3VsZCByZXR1cm4gZmlyc3QgY2h1
bmsnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBu
b3QgaGF2ZSBiZWVuIGNhbGxlZCBhZ2FpbicpOworICAgIH0pKTsKIAotLy8gICAgIGFzc2VydF9l
cXVhbHMocHVsbENvdW50LCAwLCAnY2FsbGluZyByZWFkKCkgc2hvdWxkIG5vdCBjYXVzZSBwdWxs
IHRvIGJlIGNhbGxlZCB5ZXQnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCwgJ2Nh
bGxpbmcgcmVhZCgpIHNob3VsZCBub3QgY2F1c2UgcHVsbCB0byBiZSBjYWxsZWQgeWV0Jyk7CiAK
LS8vICAgICBzZXRUaW1lb3V0KHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLS8vICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDIsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgZXhh
Y3RseSB0d2ljZScpCi0vLyAgICAgICAgIHRlc3Q4LmRvbmUoKTsKLS8vICAgICB9KSwgc3RhbmRh
cmRUaW1lb3V0KTsKLS8vIH0pOworICAgIHNldFRpbWVvdXQodGVzdDguc3RlcF9mdW5jKGZ1bmN0
aW9uKCkgeworICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxk
IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UnKTsKKyAgICAgICAgdGVzdDguZG9uZSgpOworICAgIH0p
LCA1MCk7Cit9KTsKIAotLy8gdmFyIHRlc3Q5ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06
IHNob3VsZCBjYWxsIHB1bGwgaW4gcmVhY3Rpb24gdG8gcmVhZCgpaW5nIHRoZSBsYXN0IGNodW5r
LCBpZiBub3QgZHJhaW5pbmcnKTsKLS8vIHRlc3Q5LnN0ZXAoZnVuY3Rpb24oKSB7Ci0vLyAgICAg
dmFyIHB1bGxDb3VudCA9IDA7Ci0vLyAgICAgdmFyIGNvbnRyb2xsZXI7Ci0vLyAgICAgdmFyIHN0
YXJ0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOwotLy8gICAgIHZhciBwdWxsUHJvbWlzZSA9
IFByb21pc2UucmVzb2x2ZSgpOwotLy8gICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
Ci0vLyAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0vLyAgICAgICAgICAgICBjb250cm9s
bGVyID0gYzsKLS8vICAgICAgICAgICAgIHJldHVybiBzdGFydFByb21pc2U7Ci0vLyAgICAgICAg
IH0sCi0vLyAgICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkgewotLy8gICAgICAgICAgICAgKytwdWxs
Q291bnQ7Ci0vLyAgICAgICAgICAgICByZXR1cm4gcHVsbFByb21pc2U7Ci0vLyAgICAgICAgIH0K
LS8vICAgICB9KTsKLQotLy8gICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotLy8g
ICAgIHN0YXJ0UHJvbWlzZS50aGVuKHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLS8vICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBoYXZlIGJlZW4g
Y2FsbGVkIG9uY2UgYWZ0ZXIgcmVhZCcpOwotCi0vLyAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnYScpOwotCi0vLyAgICAgICAgIHJldHVybiBwdWxsUHJvbWlzZS50aGVuKHRlc3Q5LnN0ZXBf
ZnVuYyhmdW5jdGlvbigpIHsKLS8vICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50
LCAyLCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBhIHNlY29uZCB0aW1lIGFmdGVyIGVu
cXVldWUnKTsKLQotLy8gICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0
OS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0vLyAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhwdWxsQ291bnQsIDMsICdwdWxsIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGEgdGhpcmQgdGlt
ZSBhZnRlciByZWFkJyk7Ci0vLyAgICAgICAgICAgICB9KSk7Ci0vLyAgICAgICAgIH0pKTsKLS8v
ICAgICB9KSkuY2F0Y2godGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLS8vICAgICAgICAg
YXNzZXJ0X3VucmVhY2hlZChlKTsKLS8vICAgICB9KSk7Cit2YXIgdGVzdDkgPSBhc3luY190ZXN0
KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ugb24gYSBub24tZW1w
dHkgc3RyZWFtIHJlYWQgZnJvbSBhZnRlciBzdGFydCBmdWxmaWxscycpOwordGVzdDkuc3RlcChm
dW5jdGlvbigpIHsKKyAgICB2YXIgcHVsbENvdW50ID0gMDsKKyAgICB2YXIgc3RhcnRQcm9taXNl
ID0gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScp
OworICAgICAgICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKKyAgICAgICAgfSwKKyAgICAgICAg
cHVsbDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWxsQ291bnQrKzsKKyAgICAgICAgfQor
ICAgIH0pOwogCi0vLyAgICAgc2V0VGltZW91dCh0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
Ci0vLyAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAzLCAncHVsbCBzaG91bGQgYmUg
Y2FsbGVkIGV4YWN0bHkgdGhyaWNlJykKLS8vICAgICAgICAgdGVzdDkuZG9uZSgpOwotLy8gICAg
IH0pLCBzdGFuZGFyZFRpbWVvdXQpOwotLy8gfSk7CisgICAgc3RhcnRQcm9taXNlLnRoZW4odGVz
dDkuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3Vu
dCwgMCwgJ3B1bGwgc2hvdWxkIG5vdCBiZSBjYWxsZWQgb25jZSBzdGFydCBmaW5pc2hlcywgc2lu
Y2UgdGhlIHF1ZXVlIGlzIGZ1bGwnKTsKIAotLy8gdmFyIHRlc3QxMCA9IGFzeW5jX3Rlc3QoJ1Jl
YWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCgpIGluIHJlYWN0aW9uIHRvIHJlYWQo
KWluZyB0aGUgbGFzdCBjaHVuaywgaWYgZHJhaW5pbmcnKTsKLS8vIHRlc3QxMC5zdGVwKGZ1bmN0
aW9uKCkgewotLy8gICAgIHZhciBwdWxsQ291bnQgPSAwOwotLy8gICAgIHZhciBjb250cm9sbGVy
OwotLy8gICAgIHZhciBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKLS8vICAgICB2
YXIgcHVsbFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKLS8vICAgICB2YXIgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oewotLy8gICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotLy8gICAg
ICAgICAgICAgY29udHJvbGxlciA9IGM7Ci0vLyAgICAgICAgICAgICByZXR1cm4gc3RhcnRQcm9t
aXNlOwotLy8gICAgICAgICB9LAotLy8gICAgICAgICBwdWxsOiBmdW5jdGlvbigpIHsKLS8vICAg
ICAgICAgICAgICsrcHVsbENvdW50OwotLy8gICAgICAgICAgICAgcmV0dXJuIHB1bGxQcm9taXNl
OwotLy8gICAgICAgICB9Ci0vLyAgICAgfSk7Ci0KLS8vICAgICB2YXIgcmVhZGVyID0gcnMuZ2V0
UmVhZGVyKCk7Ci0KLS8vICAgICBzdGFydFByb21pc2UudGhlbih0ZXN0MTAuc3RlcF9mdW5jKGZ1
bmN0aW9uKCkgewotLy8gICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwg
c2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZSBhZnRlciByZWFkJyk7Ci0KLS8vICAgICAgICAg
Y29udHJvbGxlci5lbnF1ZXVlKCdhJyk7Ci0KLS8vICAgICAgICAgcmV0dXJuIHB1bGxQcm9taXNl
LnRoZW4odGVzdDEwLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLS8vICAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMocHVsbENvdW50LCAyLCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBhIHNl
Y29uZCB0aW1lIGFmdGVyIGVucXVldWUnKTsKLQotLy8gICAgICAgICAgICAgY29udHJvbGxlci5j
bG9zZSgpOwotCi0vLyAgICAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHRlc3Qx
MC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0vLyAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhwdWxsQ291bnQsIDIsICdwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCBhIHRoaXJk
IHRpbWUgYWZ0ZXIgcmVhZCcpOwotLy8gICAgICAgICAgICAgfSkpOwotLy8gICAgICAgICB9KSk7
Ci0vLyAgICAgfSkpLmNhdGNoKHRlc3QxMC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotLy8gICAg
ICAgICBhc3NlcnRfdW5yZWFjaGVkKGUpCi0vLyAgICAgfSkpOworICAgICAgICBycy5nZXRSZWFk
ZXIoKS5yZWFkKCkudGhlbih0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgeworICAgICAgICAg
ICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAn
Zmlyc3QgcmVhZCgpIHNob3VsZCByZXR1cm4gZmlyc3QgY2h1bmsnKTsKIAotLy8gICAgIHNldFRp
bWVvdXQodGVzdDEwLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLS8vICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhwdWxsQ291bnQsIDIsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgZXhhY3RseSB0d2ljZScp
Ci0vLyAgICAgICAgIHRlc3QxMC5kb25lKCk7Ci0vLyAgICAgfSksIHN0YW5kYXJkVGltZW91dCk7
Ci0vLyB9KTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBz
aG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgb25jZScpOworICAgICAgICAgICAgICAgIHRlc3Q5LmRv
bmUoKTsKKyAgICAgICAgICAgIH0pLCA1MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgfSkpOworCisgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENv
dW50LCAxLCAnY2FsbGluZyByZWFkKCkgc2hvdWxkIG5vdCBjYXVzZSBwdWxsIHRvIGJlIGNhbGxl
ZCBpbW1lZGlhdGVseScpOworICAgIH0pKTsKK30pOworCit2YXIgdGVzdDEwID0gYXN5bmNfdGVz
dCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsKCkgaW4gcmVhY3Rpb24gdG8g
cmVhZCgpaW5nIHRoZSBsYXN0IGNodW5rLCBpZiBkcmFpbmluZycpOwordGVzdDEwLnN0ZXAoZnVu
Y3Rpb24oKSB7CisgICAgdmFyIHB1bGxDb3VudCA9IDA7CisgICAgdmFyIGNvbnRyb2xsZXI7Cisg
ICAgdmFyIHN0YXJ0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworICAgIHZhciBwdWxsUHJv
bWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAgICBjb250cm9sbGVy
ID0gYzsKKyAgICAgICAgICAgIHJldHVybiBzdGFydFByb21pc2U7CisgICAgICAgIH0sCisgICAg
ICAgIHB1bGw6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgKytwdWxsQ291bnQ7CisgICAgICAg
ICAgICByZXR1cm4gcHVsbFByb21pc2U7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHZhciBy
ZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICAgIHN0YXJ0UHJvbWlzZS50aGVuKHRlc3QxMC5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAx
LCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlIGJ5IHRoZSB0aW1lIHRoZSBzdHJl
YW0gc3RhcnRzJyk7CisKKyAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisgICAgICAg
IGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBj
YWxsZWQgYWdhaW4gYWZ0ZXIgZW5xdWV1ZScpOworCisgICAgICAgIGNvbnRyb2xsZXIuY2xvc2Uo
KTsKKworICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHRlc3QxMC5zdGVwX2Z1bmMo
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1
bGwgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkIGEgc2Vjb25kIHRpbWUgYWZ0ZXIgcmVhZCcp
OworCisgICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3QxMC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3Vs
ZCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlJyk7CisgICAgICAgICAgICAgICAgdGVzdDEwLmRvbmUo
KTsKKyAgICAgICAgICAgIH0pLCA1MCk7CisgICAgICAgIH0pKTsKKyAgICB9KSkuY2F0Y2godGVz
dDEwLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0pKTsKK30p
OwogCiB2YXIgdGVzdDExID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3Qg
Y2FsbCBwdWxsIHVudGlsIHRoZSBwcmV2aW91cyBwdWxsIGNhbGxcJ3MgcHJvbWlzZSBmdWxmaWxs
cycpOwogdGVzdDExLnN0ZXAoZnVuY3Rpb24oKSB7CkBAIC0zNzUsMTIgKzQxMiwxMSBAQCB0ZXN0
MTEuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgdGltZXNDYWxsZWQgPSAwOwogICAgIHZhciBz
dGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKICAgICB2YXIgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgYy5l
bnF1ZXVlKCdhJyk7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHJl
dHVybiBzdGFydFByb21pc2U7CiAgICAgICAgIH0sCi0gICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgKyt0aW1lc0NhbGxlZDsKKyAgICAgICAgcHVsbDogZnVuY3Rpb24oYykg
eworICAgICAgICAgICAgYy5lbnF1ZXVlKCsrdGltZXNDYWxsZWQpOwogICAgICAgICAgICAgcmV0
dXJuZWRQcm9taXNlID0gbmV3IFByb21pc2UodGVzdDExLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7
IHJlc29sdmUgPSByOyB9KSk7CiAgICAgICAgICAgICByZXR1cm4gcmV0dXJuZWRQcm9taXNlOwog
ICAgICAgICB9CkBAIC0zODgsOSArNDI0LDEwIEBAIHRlc3QxMS5zdGVwKGZ1bmN0aW9uKCkgewog
ICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKIAogICAgIHN0YXJ0UHJvbWlzZS50aGVu
KHRlc3QxMS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJlYWRlci5yZWFkKCkudGhl
bih0ZXN0MTEuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdDEpIHsKLSAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHModGltZXNDYWxsZWQsIDEsICdwdWxsIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9u
Y2UgYWZ0ZXIgc3RhcnQsIGJ1dCBub3QgeWV0IGhhdmUgYmVlbiBjYWxsZWQgYSBzZWNvbmQgdGlt
ZScpOwotICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MSwgeyB2YWx1ZTog
J2EnLCBkb25lOiBmYWxzZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggdGhlIGVucXVl
dWVkIHZhbHVlJyk7CisgICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4odGVzdDExLnN0
ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQxKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHRp
bWVzQ2FsbGVkLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAncHVsbCBzaG91bGQgaGF2
ZSBiZWVuIGNhbGxlZCBvbmNlIGFmdGVyIHN0YXJ0LCBidXQgbm90IHlldCBoYXZlIGJlZW4gY2Fs
bGVkIGEgc2Vjb25kIHRpbWUnKTsKKyAgICAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJl
c3VsdDEsIHsgdmFsdWU6IDEsIGRvbmU6IGZhbHNlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwg
d2l0aCB0aGUgZW5xdWV1ZWQgdmFsdWUnKTsKIAogICAgICAgICAgICAgc2V0VGltZW91dCh0ZXN0
MTEuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
dGltZXNDYWxsZWQsIDEsICdhZnRlciAzMCBtcywgcHVsbCBzaG91bGQgc3RpbGwgb25seSBoYXZl
IGJlZW4gY2FsbGVkIG9uY2UnKTsKQEAgLTM5OCw2MSArNDM1LDU4IEBAIHRlc3QxMS5zdGVwKGZ1
bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKIAogICAgICAgICAgICAgICAg
IHJldHVybmVkUHJvbWlzZS50aGVuKHRlc3QxMS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModGltZXNDYWxsZWQsIDIsICdhZnRlciB0aGUg
cHJvbWlzZSByZXR1cm5lZCBieSBwdWxsIGlzIGZ1bGZpbGxlZCwgcHVsbCBzaG91bGQgYmUgY2Fs
bGVkIGEgc2Vjb25kIHRpbWUnKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0
aW1lc0NhbGxlZCwgMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWZ0ZXIg
dGhlIHByb21pc2UgcmV0dXJuZWQgYnkgcHVsbCBpcyBmdWxmaWxsZWQsIHB1bGwgc2hvdWxkIGJl
IGNhbGxlZCBhIHNlY29uZCB0aW1lJyk7CiAgICAgICAgICAgICAgICAgICAgIHRlc3QxMS5kb25l
KCk7CiAgICAgICAgICAgICAgICAgfSkpOwotICAgICAgICAgICAgfSksIHN0YW5kYXJkVGltZW91
dCk7Ci0gICAgICAgIH0pKQotICAgIH0pKS5jYXRjaCh0ZXN0MTEuc3RlcF9mdW5jKGZ1bmN0aW9u
KGUpIHsKLSAgICAgICAgYXNzZXJ0X3VucmVhY2hlZChlKQotICAgIH0pKTsKKyAgICAgICAgICAg
IH0pLCAzMCk7CisgICAgICAgIH0pKTsKKyAgICB9KSkuY2F0Y2godGVzdDExLnN0ZXBfZnVuYyhm
dW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0pKTsKIH0pOwogCi0vLyB2YXIgdGVz
dDEyID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBwdWxsIGFmdGVyIHN0YXJ0
LCBhbmQgYWZ0ZXIgZXZlcnkgcmVhZCcpOwotLy8gdGVzdDEyLnN0ZXAoZnVuY3Rpb24oKSB7Ci0v
LyAgICAgdmFyIHRpbWVzQ2FsbGVkID0gMDsKLS8vICAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJv
bWlzZS5yZXNvbHZlKCk7Ci0vLyAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLS8v
ICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLS8vICAgICAgICAgICAgIGMuZW5xdWV1ZSgn
YScpOwotLy8gICAgICAgICAgICAgYy5lbnF1ZXVlKCdiJyk7Ci0vLyAgICAgICAgICAgICBjLmVu
cXVldWUoJ2MnKTsKLS8vICAgICAgICAgICAgIHJldHVybiBzdGFydFByb21pc2U7Ci0vLyAgICAg
ICAgIH0sCi0vLyAgICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkgewotLy8gICAgICAgICAgICAgKyt0
aW1lc0NhbGxlZDsKLS8vICAgICAgICAgfSwKLS8vICAgICAgICAgc3RyYXRlZ3k6IHsKLS8vICAg
ICAgICAgICAgIHNpemU6IGZ1bmN0aW9uKCkgewotLy8gICAgICAgICAgICAgICAgIHJldHVybiAx
OwotLy8gICAgICAgICAgICAgfSwKLS8vICAgICAgICAgICAgIHNob3VsZEFwcGx5QmFja3ByZXNz
dXJlOiBmdW5jdGlvbigpIHsKLS8vICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0vLyAg
ICAgICAgICAgICB9Ci0vLyAgICAgICAgIH0KLS8vICAgICB9KTsKLS8vICAgICB2YXIgcmVhZGVy
ID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLS8vICAgICBzdGFydFByb21pc2UudGhlbih0ZXN0MTIuc3Rl
cF9mdW5jKGZ1bmN0aW9uKCkgewotLy8gICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVu
KHRlc3QxMi5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0MSkgewotLy8gICAgICAgICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MSwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAn
Zmlyc3QgY2h1bmsgc2hvdWxkIGJlIGFzIGV4cGVjdGVkJyk7Ci0KLS8vICAgICAgICAgICAgIHJl
dHVybiByZWFkZXIucmVhZCgpLnRoZW4odGVzdDEyLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQy
KSB7Ci0vLyAgICAgICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MiwgeyB2
YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LCAnc2Vjb25kIGNodW5rIHNob3VsZCBiZSBhcyBleHBl
Y3RlZCcpOwotCi0vLyAgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbih0
ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdDMpIHsKLS8vICAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MywgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxz
ZSB9LCAndGhpcmQgY2h1bmsgc2hvdWxkIGJlIGFzIGV4cGVjdGVkJyk7Ci0KLS8vICAgICAgICAg
ICAgICAgICAgICAgc2V0VGltZW91dCh0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotLy8g
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25jZSBmb3IgYWZ0ZXIgc3RhcnQsIGFuZCBvbmNl
IGZvciBldmVyeSByZWFkLgotLy8gICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyh0aW1lc0NhbGxlZCwgNCwgJ3B1bGwoKSBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgZm91ciB0
aW1lcycpOwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgdGVzdDEyLmRvbmUoKTsKLS8vICAg
ICAgICAgICAgICAgICAgICAgfSksIHN0YW5kYXJkVGltZW91dCk7Ci0vLyAgICAgICAgICAgICAg
ICAgfSkpOwotLy8gICAgICAgICAgICAgfSkpOwotLy8gICAgICAgICB9KSk7Ci0vLyAgICAgfSkp
LmNhdGNoKHRlc3QxMi5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUp
OyB9KSk7Ci0vLyB9KTsKK3ZhciB0ZXN0MTIgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTog
c2hvdWxkIHB1bGwgYWZ0ZXIgc3RhcnQsIGFuZCBhZnRlciBldmVyeSByZWFkJyk7Cit0ZXN0MTIu
c3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgdGltZXNDYWxsZWQgPSAwOworICAgIHZhciBzdGFy
dFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgeworICAgICAgICAgICAgYy5lbnF1
ZXVlKCdhJyk7CisgICAgICAgICAgICBjLmVucXVldWUoJ2InKTsKKyAgICAgICAgICAgIGMuZW5x
dWV1ZSgnYycpOworICAgICAgICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKKyAgICAgICAgfSwK
KyAgICAgICAgcHVsbCgpIHsKKyAgICAgICAgICAgICsrdGltZXNDYWxsZWQ7CisgICAgICAgIH0K
KyAgICB9LAorICAgIHsKKyAgICAgICAgc2l6ZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBy
ZXR1cm4gMTsKKyAgICAgICAgfSwKKyAgICAgICAgaGlnaFdhdGVyTWFyazogSW5maW5pdHkKKyAg
ICB9KTsKKyAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgICBzdGFydFByb21p
c2UudGhlbih0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gcmVh
ZGVyLnJlYWQoKS50aGVuKHRlc3QxMi5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0MSkgeworICAg
ICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MSwgeyB2YWx1ZTogJ2EnLCBkb25l
OiBmYWxzZSB9LCAnZmlyc3QgY2h1bmsgc2hvdWxkIGJlIGFzIGV4cGVjdGVkJyk7CisKKyAgICAg
ICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4odGVzdDEyLnN0ZXBfZnVuYyhmdW5jdGlv
bihyZXN1bHQyKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0
MiwgeyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LCAnc2Vjb25kIGNodW5rIHNob3VsZCBiZSBh
cyBleHBlY3RlZCcpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhl
bih0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdDMpIHsKKyAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MywgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxz
ZSB9LCAndGhpcmQgY2h1bmsgc2hvdWxkIGJlIGFzIGV4cGVjdGVkJyk7CisKKyAgICAgICAgICAg
ICAgICAgICAgc2V0VGltZW91dCh0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gT25jZSBmb3IgYWZ0ZXIgc3RhcnQsIGFuZCBvbmNlIGZvciBl
dmVyeSByZWFkLgorICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0aW1lc0Nh
bGxlZCwgNCwgJ3B1bGwoKSBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgZm91ciB0aW1lcycpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdDEyLmRvbmUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgfSksIDUwKTsKKyAgICAgICAgICAgICAgICB9KSk7CisgICAgICAgICAgICB9KSk7CisgICAg
ICAgIH0pKTsKKyAgICB9KSkuY2F0Y2godGVzdDEyLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFz
c2VydF91bnJlYWNoZWQoZSk7IH0pKTsKK30pOwogCiB2YXIgdGVzdDEzID0gYXN5bmNfdGVzdCgn
UmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIGFmdGVyIHN0YXJ0IGlmIHRoZSBz
dHJlYW0gaXMgbm93IGNsb3NlZCcpOwogdGVzdDEzLnN0ZXAoZnVuY3Rpb24oKSB7CkBAIC00OTQs
MTggKzUyOCwxNiBAQCB0ZXN0MTQuc3RlcChmdW5jdGlvbigpIHsKICAgICAgICAgfSwKICAgICAg
ICAgcHVsbDogZnVuY3Rpb24oYykgewogICAgICAgICAgICAgYy5lbnF1ZXVlKCsrdGltZXNDYWxs
ZWQpOwotICAgICAgICB9LAotICAgICAgICBzdHJhdGVneTogewotICAgICAgICAgICAgc2l6ZTog
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICB9LAot
ICAgICAgICAgICAgc2hvdWxkQXBwbHlCYWNrcHJlc3N1cmU6IGZ1bmN0aW9uKHNpemUpIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gc2l6ZSA+IDM7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0K
KyAgICB9LAorICAgIHsKKyAgICAgICAgc2l6ZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBy
ZXR1cm4gMTsKKyAgICAgICAgfSwKKyAgICAgICAgaGlnaFdhdGVyTWFyazogNAogICAgIH0pOwog
Ci0gICAgc3RhcnRQcm9taXNlLnRoZW4odGVzdDE0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAg
ICBzZXRUaW1lb3V0KHRlc3QxNC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CiAgICAgICAgIC8vIGFm
dGVyIHN0YXJ0OiBzaXplID0gMCwgcHVsbCgpCiAgICAgICAgIC8vIGFmdGVyIGVucXVldWUoMSk6
IHNpemUgPSAxLCBwdWxsKCkKICAgICAgICAgLy8gYWZ0ZXIgZW5xdWV1ZSgyKTogc2l6ZSA9IDIs
IHB1bGwoKQpAQCAtNTEzLDcgKzU0NSw3IEBAIHRlc3QxNC5zdGVwKGZ1bmN0aW9uKCkgewogICAg
ICAgICAvLyBhZnRlciBlbnF1ZXVlKDQpOiBzaXplID0gNCwgZG8gbm90IHB1bGwKICAgICAgICAg
YXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgNCwgJ3B1bGwoKSBzaG91bGQgaGF2ZSBiZWVuIGNh
bGxlZCBmb3VyIHRpbWVzJyk7CiAgICAgICAgIHRlc3QxNC5kb25lKCk7Ci0gICAgfSkpOworICAg
IH0pLCA1MCk7CiB9KTsKIAogdmFyIHRlc3QxNSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFt
IHB1bGwgc2hvdWxkIGJlIGFibGUgdG8gY2xvc2UgYSBzdHJlYW0uJyk7CkBAIC01MzQsMzUgKzU2
Niw0NCBAQCB0ZXN0MTUuc3RlcChmdW5jdGlvbigpIHsKIH0pOwogCiB0ZXN0KGZ1bmN0aW9uKCkg
ewotICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgc3RhcnQ6IGZ1bmN0aW9u
KGMpIHsKLSAgICAgICAgICBhc3NlcnRfZXF1YWxzKGMuZW5xdWV1ZSgnYScpLCB0cnVlLCAndGhl
IGZpcnN0IGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlJyk7Ci0gICAgICAgICAgYy5jbG9zZSgp
OwotCi0gICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCcnKSwgZnVuY3Rpb24o
KSB7IGMuZW5xdWV1ZSgnYicpOyB9LCAnZW5xdWV1ZSBhZnRlciBjbG9zZSBzaG91bGQgdGhyb3cg
YSBUeXBlRXJyb3InKTsKLSAgICAgIH0KLSAgfSk7CisgICAgdmFyIHN0YXJ0Q2FsbGVkID0gZmFs
c2U7CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1
bmN0aW9uKGMpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYy5lbnF1ZXVlKCdhJyksIHVu
ZGVmaW5lZCwgJ3RoZSBmaXJzdCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdW5kZWZpbmVkJyk7Cisg
ICAgICAgICAgICBjLmNsb3NlKCk7CisKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvcignJyksIGZ1bmN0aW9uKCkgeyBjLmVucXVldWUoJ2InKTsgfSwgJ2VucXVldWUgYWZ0
ZXIgY2xvc2Ugc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7CisgICAgICAgICAgICBzdGFydENh
bGxlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBhc3NlcnRfdHJ1ZShzdGFydENh
bGxlZCk7CiB9LCAnUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhl
IHN0cmVhbSBpcyByZWFkYWJsZSBidXQgZHJhaW5pbmcnKTsKIAogdGVzdChmdW5jdGlvbigpIHsK
KyAgICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxzZTsKICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oewogICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewogICAgICAgICAgICAgYy5jbG9z
ZSgpOwogCiAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rp
b24oKSB7IGMuZW5xdWV1ZSgnYScpOyB9LCAnZW5xdWV1ZSBhZnRlciBjbG9zZSBzaG91bGQgdGhy
b3cgYSBUeXBlRXJyb3InKTsKKyAgICAgICAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKICAgICAg
ICAgfQogICAgIH0pOworICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKIH0sICdSZWFkYWJs
ZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc3RyZWFtIGlzIGNsb3NlZCcp
OwogCiB0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHZhciBzdGFydENhbGxlZCA9IGZhbHNlOwogICAg
IHZhciBleHBlY3RlZEVycm9yID0gbmV3IEVycm9yKCdpIGFtIHNhZCcpOwogICAgIHZhciBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CiAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CiAgICAg
ICAgICAgICBjLmVycm9yKGV4cGVjdGVkRXJyb3IpOwogCiAgICAgICAgICAgICBhc3NlcnRfdGhy
b3dzKGV4cGVjdGVkRXJyb3IsIGZ1bmN0aW9uKCkgeyBjLmVucXVldWUoJ2EnKTsgfSwgJ2VucXVl
dWUgYWZ0ZXIgZXJyb3Igc2hvdWxkIHRocm93IHRoYXQgZXJyb3InKTsKKyAgICAgICAgICAgIHN0
YXJ0Q2FsbGVkID0gdHJ1ZTsKICAgICAgICAgfQogICAgIH0pOworICAgIGFzc2VydF90cnVlKHN0
YXJ0Q2FsbGVkKTsKIH0sICdSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhl
IHN0b3JlZCBlcnJvciB3aGVuIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCcpOwogCiB2YXIgdGVzdDE2
ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHVuZGVybHlpbmcgc291
cmNlIG1ldGhvZHMgYXMgbWV0aG9kcycpOwpAQCAtNTcwLDcgKzYxMSw2IEBAIHRlc3QxNi5zdGVw
KGZ1bmN0aW9uKCkgewogICAgIHZhciBzdGFydENhbGxlZCA9IDA7CiAgICAgdmFyIHB1bGxDYWxs
ZWQgPSAwOwogICAgIHZhciBjYW5jZWxDYWxsZWQgPSAwOwotICAgIHZhciBzdHJhdGVneUNhbGxl
ZCA9IDA7CiAKICAgICBmdW5jdGlvbiBTb3VyY2UoKSB7CiAgICAgfQpAQCAtNTkxLDEzICs2MzEs
NiBAQCB0ZXN0MTYuc3RlcChmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGNhbmNlbENhbGxlZCsr
OwogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0aGlzLCB0aGVTb3VyY2UsICdjYW5jZWwoKSBz
aG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIGNvcnJlY3QgdGhpcycpOwogICAgICAgICB9LAotCi0g
ICAgICAgIGdldCBzdHJhdGVneSgpIHsKLSAgICAgICAgICAgIC8vIENhbGxlZCB0aHJlZSB0aW1l
cwotICAgICAgICAgICAgc3RyYXRlZ3lDYWxsZWQrKzsKLSAgICAgICAgICAgIGFzc2VydF9lcXVh
bHModGhpcywgdGhlU291cmNlLCAnc3RyYXRlZ3kgZ2V0dGVyIHNob3VsZCBiZSBjYWxsZWQgd2l0
aCB0aGUgY29ycmVjdCB0aGlzJyk7Ci0gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwotICAg
ICAgICB9CiAgICAgfTsKIAogICAgIHZhciB0aGVTb3VyY2UgPSBuZXcgU291cmNlKCk7CkBAIC02
MTEsMjQgKzY0NCwzMSBAQCB0ZXN0MTYuc3RlcChmdW5jdGlvbigpIHsKICAgICAgICAgYXNzZXJ0
X2VxdWFscyhzdGFydENhbGxlZCwgMSk7CiAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENhbGxl
ZCwgMSk7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoY2FuY2VsQ2FsbGVkLCAxKTsKLSAgICAgICAg
YXNzZXJ0X2VxdWFscyhzdHJhdGVneUNhbGxlZCwgMyk7CiAgICAgICAgIHRlc3QxNi5kb25lKCk7
CiAgICAgfSkpLmNhdGNoKHRlc3QxNi5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5y
ZWFjaGVkKGUpOyB9ICkpOwogfSk7CiAKIHRlc3QoZnVuY3Rpb24oKSB7Ci0gIG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0gICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgIGFzc2VydF9l
cXVhbHMoYy5lbnF1ZXVlKCdhJyksIHRydWUsICdmaXJzdCBlbnF1ZXVlIHNob3VsZCByZXR1cm4g
dHJ1ZScpOwotICAgICAgICAgIGFzc2VydF9lcXVhbHMoYy5lbnF1ZXVlKCdiJyksIGZhbHNlLCAn
c2Vjb25kIGVucXVldWUgc2hvdWxkIHJldHVybiBmYWxzZScpOwotICAgICAgICAgIGFzc2VydF9l
cXVhbHMoYy5lbnF1ZXVlKCdjJyksIGZhbHNlLCAndGhpcmQgZW5xdWV1ZSBzaG91bGQgcmV0dXJu
IGZhbHNlJyk7Ci0gICAgICAgICAgYXNzZXJ0X2VxdWFscyhjLmVucXVldWUoJ2QnKSwgZmFsc2Us
ICdmb3VydGggZW5xdWV1ZSBzaG91bGQgcmV0dXJuIGZhbHNlJyk7Ci0gICAgICAgICAgYXNzZXJ0
X2VxdWFscyhjLmVucXVldWUoJ2UnKSwgZmFsc2UsICdmaWZ0aCBlbnF1ZXVlIHNob3VsZCByZXR1
cm4gZmFsc2UnKTsKLSAgICAgIH0KLSAgfSk7Ci19LCAnUmVhZGFibGVTdHJlYW0gc3RyYXRlZ2ll
czogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIHJldHVybiBmYWxzZSBmb3IgYWxsIGJ1dCB0
aGUgZmlyc3QgZW5xdWV1ZSBjYWxsJyk7Ci0KLXZhciB0ZXN0MTcgPSBhc3luY190ZXN0KCdSZWFk
YWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgY29udGlu
dWUgcmV0dXJuaW5nIHRydWUgZnJvbSBlbnF1ZXVlIGlmIHRoZSBjaHVua3MgYXJlIHJlYWQgaW1t
ZWRpYXRlbHknKTsKKyAgICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxzZTsKKyAgICBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgeworICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAxKTsKKyAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScp
OworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAwKTsKKyAgICAgICAg
ICAgIGMuZW5xdWV1ZSgnYicpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRT
aXplLCAtMSk7CisgICAgICAgICAgICBjLmVucXVldWUoJ2MnKTsKKyAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgLTIpOworICAgICAgICAgICAgYy5lbnF1ZXVlKCdkJyk7
CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGMuZGVzaXJlZFNpemUsIC0zKTsKKyAgICAgICAg
ICAgIGMuZW5xdWV1ZSgnZScpOworICAgICAgICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOworICAg
ICAgICB9CisgICAgfSk7CisgICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworfSwgJ1JlYWRh
YmxlU3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCBnaXZlIGRl
c2lyZWRTaXplIG9mIDEgdG8gc3RhcnQsIGRlY3JlYXNpbmcgYnkgMSBwZXIgZW5xdWV1ZScpOwor
Cit2YXIgdGVzdDE3ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhl
IGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGNvbnRpbnVlIGdpdmluZyBkZXNpcmVkU2l6ZSBvZiAx
IGlmIHRoZSBjaHVua3MgYXJlIHJlYWQgaW1tZWRpYXRlbHknKTsKIHRlc3QxNy5zdGVwKGZ1bmN0
aW9uKCkgewogICAgIHZhciBjb250cm9sbGVyOwogICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7CkBAIC02MzgsMjcgKzY3OCwzOCBAQCB0ZXN0MTcuc3RlcChmdW5jdGlvbigpIHsKICAg
ICB9KTsKICAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CiAKLSAgICBhc3NlcnRfZXF1
YWxzKGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpLCB0cnVlLCAnZmlyc3QgZW5xdWV1ZSBzaG91bGQg
cmV0dXJuIHRydWUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUs
IDEsICdkZXNpcmVkU2l6ZSBzaG91bGQgc3RhcnQgYXQgMScpOworICAgIGNvbnRyb2xsZXIuZW5x
dWV1ZSgnYScpOworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwg
J2Rlc2lyZWRTaXplIHNob3VsZCBkZWNyZWFzZSB0byAwIGFmdGVyIGZpcnN0IGVucXVldWUnKTsK
IAogICAgIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MTcuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3Vs
dDEpIHsKICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MSwgeyB2YWx1ZTogJ2En
LCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgY2h1bmsgcmVhZCBzaG91bGQgYmUgY29ycmVjdCcpOwot
ICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpLCB0cnVlLCAnc2Vj
b25kIGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlJyk7CisKKyAgICAgICAgYXNzZXJ0X2VxdWFs
cyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUgc2hvdWxkIGdvIHVwIHRv
IDEgYWZ0ZXIgdGhlIGZpcnN0IHJlYWQnKTsKKyAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdi
Jyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJ2Rl
c2lyZWRTaXplIHNob3VsZCBnbyBkb3duIHRvIDAgYWZ0ZXIgdGhlIHNlY29uZCBlbnF1ZXVlJyk7
CiAKICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CiAgICAgfSkpLnRoZW4odGVzdDE3LnN0
ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQyKSB7Ci0gICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxz
KHJlc3VsdDIsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwgJ3NlY29uZCBjaHVuayByZWFk
IHNob3VsZCBiZSBjb3JyZWN0Jyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5l
bnF1ZXVlKCdjJyksIHRydWUsICd0aGlyZCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZScpOwor
ICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MiwgeyB2YWx1ZTogJ2InLCBk
b25lOiBmYWxzZSB9LCAnc2Vjb25kIGNodW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKIAot
ICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
Y29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBnbyB1cCB0byAx
IGFmdGVyIHRoZSBzZWNvbmQgcmVhZCcpOworICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVl
KCdjJyk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUs
IDAsICdkZXNpcmVkU2l6ZSBzaG91bGQgZ28gZG93biB0byAwIGFmdGVyIHRoZSB0aGlyZCBlbnF1
ZXVlJyk7CisKKyAgICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwogICAgIH0pKS50aGVu
KHRlc3QxNy5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0MykgewotICAgICAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyZXN1bHQzLCB7IHZhbHVlOiAnYycsIGRvbmU6IGZhbHNlIH0sICd0aGlyZCBj
aHVuayByZWFkIHNob3VsZCBiZSBjb3JyZWN0Jyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoY29u
dHJvbGxlci5lbnF1ZXVlKCdkJyksIHRydWUsICdmb3VydGggZW5xdWV1ZSBzaG91bGQgcmV0dXJu
IHRydWUnKTsKKyAgICAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDMsIHsgdmFs
dWU6ICdjJywgZG9uZTogZmFsc2UgfSwgJ3RoaXJkIGNodW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJl
Y3QnKTsKIAotICAgICAgICB0ZXN0MTcuZG9uZSgpOwotICAgIH0pKS5jYXRjaCh0ZXN0MTcuc3Rl
cF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSApKTsKKyAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXpl
IHNob3VsZCBnbyB1cCB0byAxIGFmdGVyIHRoZSB0aGlyZCByZWFkJyk7CisgICAgICAgICAgICBj
b250cm9sbGVyLmVucXVldWUoJ2QnKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJv
bGxlci5kZXNpcmVkU2l6ZSwgMCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBnbyBkb3duIHRvIDAgYWZ0
ZXIgdGhlIGZvdXJ0aCBlbnF1ZXVlJyk7CisKKyAgICAgICAgICAgIHRlc3QxNy5kb25lKCk7Cisg
ICAgfSkpLmNhdGNoKHRlc3QxNy5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFj
aGVkKGUpOyB9KSk7CiB9KTsKIAotdmFyIHRlc3QxOCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3Ry
ZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgcmFuZG9tIHB1c2ggc291cmNlJywgeyB0
aW1lb3V0OiA1MCB9KTsKK3ZhciB0ZXN0MTggPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBp
bnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHJhbmRvbSBwdXNoIHNvdXJjZScpOwogdGVzdDE4
LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHB1bGxDaGVja2VkID0gZmFsc2U7CiAgICAgdmFy
IHJhbmRvbVNvdXJjZSA9IG5ldyBSYW5kb21QdXNoU291cmNlKDgpOwpAQCAtNjk5LDcgKzc1MCw3
IEBAIHRlc3QxOC5zdGVwKGZ1bmN0aW9uKCkgewogICAgICAgICB9CiAKICAgICAgICAgdGVzdDE4
LmRvbmUoKTsKLSAgICB9KSwgdGVzdDE4LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF9y
ZWFjaGVkKGUpOyB9KSk7CisgICAgfSksIHRlc3QxOC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBh
c3NlcnRfdW5yZWFjaGVkKGUpOyB9KSk7CiB9KTsKIAogdmFyIHRlc3QxOSA9IGFzeW5jX3Rlc3Qo
J1JlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgc3luYyBwdWxsIHNv
dXJjZScpOwpAQCAtNzA3LDIzICs3NTgsMjIgQEAgdGVzdDE5LnN0ZXAoZnVuY3Rpb24oKSB7CiAg
ICAgdmFyIHJzID0gc2VxdWVudGlhbFJlYWRhYmxlU3RyZWFtKDEwKTsKIAogICAgIHJlYWRhYmxl
U3RyZWFtVG9BcnJheShycykudGhlbih0ZXN0MTkuc3RlcF9mdW5jKGZ1bmN0aW9uKGNodW5rcykg
ewotICAgICAgICBhc3NlcnRfZXF1YWxzKHJzLnNvdXJjZS5jbG9zZWQsIHRydWUsICdzb3VyY2Ug
c2hvdWxkIGJlIGNsb3NlZCBhZnRlciBhbGwgY2h1bmtzIGFyZSByZWFkJyk7CisgICAgICAgIGFz
c2VydF90cnVlKHJzLnNvdXJjZS5jbG9zZWQsICdzb3VyY2Ugc2hvdWxkIGJlIGNsb3NlZCBhZnRl
ciBhbGwgY2h1bmtzIGFyZSByZWFkJyk7CiAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1
bmtzLCBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdLCAndGhlIGV4cGVjdGVkIDEwIGNo
dW5rcyBzaG91bGQgYmUgcmVhZCcpOwogCiAgICAgICAgIHRlc3QxOS5kb25lKCk7CiAgICAgfSkp
OwogfSk7Ci0vKgotdmFyIHRlc3QyMCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGludGVn
cmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGFuIGFzeW5jIHB1bGwgc291cmNlJywgeyB0aW1lb3V0OiA1
MCB9KTsKLXRlc3QyMC5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciBycyA9IHNlcXVlbnRpYWxS
ZWFkYWJsZVN0cmVhbSgxMCwgeyBhc3luYzogdHJ1ZSB9KTsKIAotICAgIHJlYWRhYmxlU3RyZWFt
VG9BcnJheShycykudGhlbih0ZXN0MjAuc3RlcF9mdW5jKGZ1bmN0aW9uKGNodW5rcykgewotICAg
ICAgICBhc3NlcnRfZXF1YWxzKHJzLnNvdXJjZS5jbG9zZWQsIHRydWUsICdzb3VyY2Ugc2hvdWxk
IGJlIGNsb3NlZCBhZnRlciBhbGwgY2h1bmtzIGFyZSByZWFkJyk7Ci0gICAgICAgIGFzc2VydF9h
cnJheV9lcXVhbHMoY2h1bmtzLCBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdLCAndGhl
IGV4cGVjdGVkIDEwIGNodW5rcyBzaG91bGQgYmUgcmVhZCcpOworLy8gdmFyIHRlc3QyMCA9IGFz
eW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGFuIGFz
eW5jIHB1bGwgc291cmNlJyk7CisvLyB0ZXN0MjAuc3RlcChmdW5jdGlvbigpIHsKKy8vICAgICB2
YXIgcnMgPSBzZXF1ZW50aWFsUmVhZGFibGVTdHJlYW0oMTAsIHsgYXN5bmM6IHRydWUgfSk7CiAK
LSAgICAgICAgdGVzdDIwLmRvbmUoKTsKLSAgICB9KSk7Ci19KTsKLSovCisvLyAgICAgcmVhZGFi
bGVTdHJlYW1Ub0FycmF5KHJzKS50aGVuKHRlc3QyMC5zdGVwX2Z1bmMoZnVuY3Rpb24oY2h1bmtz
KSB7CisvLyAgICAgICAgIGFzc2VydF90cnVlKHJzLnNvdXJjZS5jbG9zZWQsICdzb3VyY2Ugc2hv
dWxkIGJlIGNsb3NlZCBhZnRlciBhbGwgY2h1bmtzIGFyZSByZWFkJyk7CisvLyAgICAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBd
LCAndGhlIGV4cGVjdGVkIDEwIGNodW5rcyBzaG91bGQgYmUgcmVhZCcpOworCisvLyAgICAgICAg
IHRlc3QyMC5kb25lKCk7CisvLyAgICAgfSkpOworLy8gfSk7CiA8L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3Jlc291cmNl
cy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmpzIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9y
ZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVzb3VyY2VzL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3Ry
YXRlZ3kuanMKaW5kZXggZDc3ZTNiYmJlYmE3MzU2NjhjNjc4Y2RlZDkxOTE2M2MzYzI0NWNhMi4u
YjFjNzQ1M2VjNjFiN2U5ZDQ2Yzk3MjY1ZjQzMTMyMzY1NGQ1OTAzMyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVzb3VyY2VzL2J5dGUt
bGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZl
cmVuY2UtaW1wbGVtZW50YXRpb24vcmVzb3VyY2VzL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRl
Z3kuanMKQEAgLTEsMzggKzEsMTAgQEAKIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBmaWxlIHdoZW4g
aW1wbGVtZW50ZWQgaW4gV2ViQ29yZS4KIAotZnVuY3Rpb24gdHlwZUlzT2JqZWN0KHgpIHsKLSAg
ICByZXR1cm4gKHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiB4ICE9PSBudWxsKSB8fCB0eXBlb2Yg
eCA9PT0gJ2Z1bmN0aW9uJzsKLX0KLQotZnVuY3Rpb24gQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVn
eShvYmopIHsKLSAgICBpZiAoIXR5cGVJc09iamVjdChvYmopKSB7Ci0gICAgICB0aHJvdyBuZXcg
VHlwZUVycm9yKCdQYXJhbWV0ZXIgbXVzdCBiZSBhbiBvYmplY3QuJyk7Ci0gICAgfQotCi0gICAg
aGlnaFdhdGVyTWFyayA9IE51bWJlcihvYmouaGlnaFdhdGVyTWFyayk7Ci0KLSAgICBpZiAoTnVt
YmVyLmlzTmFOKGhpZ2hXYXRlck1hcmspKSB7Ci0gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdo
aWdoV2F0ZXJNYXJrIG11c3QgYmUgYSBudW1iZXIuJyk7Ci0gICAgfQotICAgIGlmIChoaWdoV2F0
ZXJNYXJrIDwgMCkgewotICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2hpZ2hXYXRlck1hcmsg
bXVzdCBiZSBub25uZWdhdGl2ZS4nKTsKLSAgICB9Ci0KLSAgICB0aGlzLl9ibHFzSGlnaFdhdGVy
TWFyayA9IGhpZ2hXYXRlck1hcms7CitmdW5jdGlvbiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5
KHsgaGlnaFdhdGVyTWFyayB9KSB7CisgICAgY3JlYXRlRGF0YVByb3BlcnR5KHRoaXMsICdoaWdo
V2F0ZXJNYXJrJywgaGlnaFdhdGVyTWFyayk7CiB9CiAKIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRl
Z3kucHJvdG90eXBlID0gewotICAgIHNob3VsZEFwcGx5QmFja3ByZXNzdXJlOiBmdW5jdGlvbihx
dWV1ZVNpemUpIHsKLSAgICAgICAgaWYgKCF0eXBlSXNPYmplY3QodGhpcykpIHsKLSAgICAgICAg
ICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90
eXBlLnNob3VsZEFwcGx5QmFja3ByZXNzdXJlIGNhbiBvbmx5IGJlIGFwcGxpZWQgdG8gb2JqZWN0
cycpOwotICAgICAgICB9Ci0gICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9w
ZXJ0eS5jYWxsKHRoaXMsICdfYmxxc0hpZ2hXYXRlck1hcmsnKSkgewotICAgICAgICAgICAgdGhy
b3cgbmV3IFR5cGVFcnJvcignQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2hv
dWxkQXBwbHlCYWNrcHJlc3N1cmUgY2FuIG9ubHkgYmUgYXBwbGllZCB0byBhICcgKwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneScpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHF1ZXVlU2l6ZSA+IHRoaXMuX2JscXNIaWdoV2F0
ZXJNYXJrOwotICAgIH0sCiAgICAgc2l6ZTogZnVuY3Rpb24oY2h1bmspIHsKICAgICAgICAgcmV0
dXJuIGNodW5rLmJ5dGVMZW5ndGg7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVzb3VyY2VzL2NvdW50LXF1ZXVpbmctc3Ry
YXRlZ3kuanMgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9y
ZXNvdXJjZXMvY291bnQtcXVldWluZy1zdHJhdGVneS5qcwppbmRleCA0N2Y0ZGZkZjc3NWVjZGY1
NDMwMTE4MDIzYTZiNDhiZDc1OTFlMmYyLi41ZmMyMWYyZmZjMmI3ZWYzNDhjODc3NmU4ZWY0MDM3
ZmEzMjhhNzNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9yZXNvdXJjZXMvY291bnQtcXVldWluZy1zdHJhdGVneS5qcworKysgYi9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZXNvdXJjZXMvY291bnQt
cXVldWluZy1zdHJhdGVneS5qcwpAQCAtMSwzOCArMSwxMCBAQAogLy8gRklYTUU6IFJlbW92ZSB0
aGlzIGZpbGUgd2hlbiBpbXBsZW1lbnRlZCBpbiBXZWJDb3JlLgogCi1mdW5jdGlvbiB0eXBlSXNP
YmplY3QoeCkgewotICByZXR1cm4gKHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiB4ICE9PSBudWxs
KSB8fCB0eXBlb2YgeCA9PT0gJ2Z1bmN0aW9uJzsKLX0KLQotZnVuY3Rpb24gQ291bnRRdWV1aW5n
U3RyYXRlZ3kob2JqKSB7Ci0gICAgaWYgKCF0eXBlSXNPYmplY3Qob2JqKSkgewotICAgICAgdGhy
b3cgbmV3IFR5cGVFcnJvcignUGFyYW1ldGVyIG11c3QgYmUgYW4gb2JqZWN0LicpOwotICAgIH0K
LQotICAgIGhpZ2hXYXRlck1hcmsgPSBOdW1iZXIob2JqLmhpZ2hXYXRlck1hcmspOwotCi0gICAg
aWYgKE51bWJlci5pc05hTihoaWdoV2F0ZXJNYXJrKSkgewotICAgICAgdGhyb3cgbmV3IFR5cGVF
cnJvcignaGlnaFdhdGVyTWFyayBtdXN0IGJlIGEgbnVtYmVyLicpOwotICAgIH0KLSAgICBpZiAo
aGlnaFdhdGVyTWFyayA8IDApIHsKLSAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdoaWdoV2F0
ZXJNYXJrIG11c3QgYmUgbm9ubmVnYXRpdmUuJyk7Ci0gICAgfQotCi0gICAgdGhpcy5fY3FzSGln
aFdhdGVyTWFyayA9IGhpZ2hXYXRlck1hcms7CitmdW5jdGlvbiBDb3VudFF1ZXVpbmdTdHJhdGVn
eSh7IGhpZ2hXYXRlck1hcmsgfSkgeworICAgIGNyZWF0ZURhdGFQcm9wZXJ0eSh0aGlzLCAnaGln
aFdhdGVyTWFyaycsIGhpZ2hXYXRlck1hcmspOwogfQogCiBDb3VudFF1ZXVpbmdTdHJhdGVneS5w
cm90b3R5cGUgPSB7Ci0gICAgc2hvdWxkQXBwbHlCYWNrcHJlc3N1cmU6IGZ1bmN0aW9uKHF1ZXVl
U2l6ZSkgewotICAgICAgICBpZiAoIXR5cGVJc09iamVjdCh0aGlzKSkgewotICAgICAgICAgICAg
dGhyb3cgbmV3IFR5cGVFcnJvcignQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNob3Vs
ZEFwcGx5QmFja3ByZXNzdXJlIGNhbiBvbmx5IGJlIGFwcGxpZWQgdG8gb2JqZWN0cycpOwotICAg
ICAgICB9Ci0gICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxs
KHRoaXMsICdfY3FzSGlnaFdhdGVyTWFyaycpKSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgVHlw
ZUVycm9yKCdDb3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2hvdWxkQXBwbHlCYWNrcHJl
c3N1cmUgY2FuIG9ubHkgYmUgYXBwbGllZCB0byBhICcgKwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnQ291bnRRdWV1aW5nU3RyYXRlZ3knKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHJldHVybiBxdWV1ZVNpemUgPiB0aGlzLl9jcXNIaWdoV2F0ZXJNYXJrOwotICAgIH0sCiAgICAg
c2l6ZTogZnVuY3Rpb24oY2h1bmspIHsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVzb3Vy
Y2VzL3N0cmVhbXMtdXRpbHMuanMgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9yZXNvdXJjZXMvc3RyZWFtcy11dGlscy5qcwppbmRleCA4M2E0MjA5ZGViYzYz
NDUyZmNiYmUxNTBjNDMwYjRhZTBhMWQzOTlhLi45NzI5NTdjMTBkY2I5ODg1MzRhNzBiMTY5OWRi
Njk3MzdkY2NmOWQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9yZXNvdXJjZXMvc3RyZWFtcy11dGlscy5qcworKysgYi9MYXlvdXRUZXN0
cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZXNvdXJjZXMvc3RyZWFtcy11dGls
cy5qcwpAQCAtMSw1ICsxLDMgQEAKLXZhciBzdGFuZGFyZFRpbWVvdXQgPSAxMDA7Ci0KIGZ1bmN0
aW9uIFJhbmRvbVB1c2hTb3VyY2UodG9QdXNoKSB7CiAgICAgdGhpcy5wdXNoZWQgPSAwOwogICAg
IHRoaXMudG9QdXNoID0gdG9QdXNoOwpAQCAtMjcsMjQgKzI1LDIzIEBAIFJhbmRvbVB1c2hTb3Vy
Y2UucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5wYXVzZWQgPSBmYWxzZTsKICAgICAg
ICAgfQogCi0gICAgICAgIHZhciBzdHJlYW0gPSB0aGlzOworICAgICAgICB2YXIgc291cmNlID0g
dGhpczsKICAgICAgICAgZnVuY3Rpb24gd3JpdGVDaHVuaygpIHsKLSAgICAgICAgICAgIGlmIChz
dHJlYW0ucGF1c2VkKSB7CisgICAgICAgICAgICBpZiAoc291cmNlLnBhdXNlZCkgewogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgc3RyZWFtLnB1
c2hlZCsrOworICAgICAgICAgICAgc291cmNlLnB1c2hlZCsrOwogCi0gICAgICAgICAgICBpZiAo
c3RyZWFtLnRvUHVzaCA+IDAgJiYgc3RyZWFtLnB1c2hlZCA+IHN0cmVhbS50b1B1c2gpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoc3RyZWFtLl9pbnRlcnZhbEhhbmRsZSkgewotICAgICAgICAgICAg
ICAgICAgICBjbGVhckludGVydmFsKHN0cmVhbS5faW50ZXJ2YWxIYW5kbGUpOwotICAgICAgICAg
ICAgICAgICAgICBzdHJlYW0uX2ludGVydmFsSGFuZGxlID0gdW5kZWZpbmVkOworICAgICAgICAg
ICAgaWYgKHNvdXJjZS50b1B1c2ggPiAwICYmIHNvdXJjZS5wdXNoZWQgPiBzb3VyY2UudG9QdXNo
KSB7CisgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5faW50ZXJ2YWxIYW5kbGUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChzb3VyY2UuX2ludGVydmFsSGFuZGxlKTsKKyAg
ICAgICAgICAgICAgICAgICAgc291cmNlLl9pbnRlcnZhbEhhbmRsZSA9IHVuZGVmaW5lZDsKICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3RyZWFtLmNsb3NlZCA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgc3RyZWFtLm9uZW5kKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgICBzdHJlYW0ub25kYXRhKHJhbmRvbUNodW5rKDEyOCkp
OworICAgICAgICAgICAgICAgIHNvdXJjZS5jbG9zZWQgPSB0cnVlOworICAgICAgICAgICAgICAg
IHNvdXJjZS5vbmVuZCgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBz
b3VyY2Uub25kYXRhKHJhbmRvbUNodW5rKDEyOCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfSwKQEAgLTE1MCw3ICsxNDcsNiBAQCBmdW5jdGlvbiBzZXF1ZW50aWFsUmVhZGFibGVT
dHJlYW0obGltaXQsIG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgICBzZXF1ZW50aWFsU291cmNl
Lm9wZW4oZnVuY3Rpb24oZXJyKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHJl
c29sdmUoKTsKICAgICAgICAgICAgICAgICB9KTsKQEAgLTE1OCwyMCArMTU0LDIzIEBAIGZ1bmN0
aW9uIHNlcXVlbnRpYWxSZWFkYWJsZVN0cmVhbShsaW1pdCwgb3B0aW9ucykgewogICAgICAgICB9
LAogCiAgICAgICAgIHB1bGw6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIHNlcXVlbnRpYWxT
b3VyY2UucmVhZChmdW5jdGlvbihlcnIsIGRvbmUsIGNodW5rKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKGVycikgewotICAgICAgICAgICAgICAgICAgICBjLmVycm9yKGVycik7Ci0gICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChkb25lKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlcXVlbnRpYWxT
b3VyY2UuY2xvc2UoZnVuY3Rpb24oZXJyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
ZXJyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5lcnJvcihlcnIpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgICAgIGMuY2xvc2UoKTsKLSAgICAgICAgICAgICAgICAgICAg
fSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgYy5lbnF1
ZXVlKGNodW5rKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbmV3IFBy
b21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICAgICAgc2VxdWVu
dGlhbFNvdXJjZS5yZWFkKGZ1bmN0aW9uKGVyciwgZG9uZSwgY2h1bmspIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGVycikgeworICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7
CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZG9uZSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgc2VxdWVudGlhbFNvdXJjZS5jbG9zZShmdW5jdGlvbihlcnIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlamVjdChlcnIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjLmVucXVldWUoY2h1
bmspOworICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwK
ICAgICB9KTsKQEAgLTE4MCwzICsxNzksMTUgQEAgZnVuY3Rpb24gc2VxdWVudGlhbFJlYWRhYmxl
U3RyZWFtKGxpbWl0LCBvcHRpb25zKSB7CiAKICAgICByZXR1cm4gc3RyZWFtOwogfTsKKworZnVu
Y3Rpb24gdHlwZUlzT2JqZWN0KHgpIHsKKyAgICByZXR1cm4gKHR5cGVvZiB4ID09PSAnb2JqZWN0
JyAmJiB4ICE9PSBudWxsKSB8fCB0eXBlb2YgeCA9PT0gJ2Z1bmN0aW9uJzsKK30KKworZnVuY3Rp
b24gY3JlYXRlRGF0YVByb3BlcnR5KG8sIHAsIHYpIHsKKyAgICBpZiAoIXR5cGVJc09iamVjdChv
KSkgeworICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQYXJhbWV0ZXIgbXVzdCBiZSBhbiBv
YmplY3QuJyk7CisgICAgICAgIHJldHVybgorICAgIH0KKyAgICBPYmplY3QuZGVmaW5lUHJvcGVy
dHkobywgcCwgeyB2YWx1ZTogdiwgd3JpdGFibGU6IHRydWUsIGVudW1lcmFibGU6IHRydWUsIGNv
bmZpZ3VyYWJsZTogdHJ1ZSB9KTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254798</attachid>
            <date>2015-06-12 06:26:21 -0700</date>
            <delta_ts>2015-06-15 07:39:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145839-20150612152548.patch</filename>
            <type>text/plain</type>
            <size>187261</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1NDk5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDIzOGNiZGE5MWFlY2UyOWQwNmEy
ZDI3ZDIzN2Q5YjcwNzIxYzk3Ni4uZmYyNzRjNTVhYTcxN2E1NDllYzZlMjdjZDg2YTBjYTE3OTUw
YWQ1MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE1LTA2LTEyICBZb3Vlbm4gRmFibGV0IDx5
b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4gYW5kIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8
Y2FsdmFyaXNAaWdhbGlhLmNvbT4KKworICAgICAgICBbU3RyZWFtcyBBUEldIFN5bmMgdGVzdHMg
d2l0aCBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDU4MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDb25zaWRlcmVkIGFsbCBjaGFuZ2VzIGluIHRoZSBzcGVjIHRlc3RzIGFuZCBicm91Z2h0IHRo
ZW0gdG8gV2ViS2l0LgorCisgICAgICAgIFNvbWUgb2YgdGhvc2UgY2hhbmdlcyB3ZXJlIHJlbGF0
ZWQgdG8gc3BlYyBjaGFuZ2VzLCBsaWtlIHRoZSBzdHJhdGVneSBvciBzb21lIG9mIHRoZSBhbGdv
cml0aG1zLiBTb21lIGxpa2UgdGhlCisgICAgICAgIHRlZSBvbmVzIHdlcmUgbmV3bHkgYWRkZWQg
YXMgdGhleSB3aWxsIGJlIGltcGxlbWVudGVkIHNvb24uIFRoZXJlIGFyZSBhbHNvIHNvbWUgdGVz
dHMgdGhhdCBzaHVmZmxlZCBhcm91bmQKKyAgICAgICAgYmVjYXVzZSB0aGV5IHdlcmUganVzdCBt
b3ZlZCBhdCB0aGUgc3BlYyBvciBpbnRlZ3JhdGVkIGZyb20gdGhlIGNoYW5nZXMgd2Ugc3VibWl0
dGVkLCB3aGljaCB3YXMgc3Vic3RhbnRpYWxseQorICAgICAgICBpbXBvcnRhbnQgYXMgaXQgYWxs
b3dlZCB1cyB0byBzb21lIG9mIG91ciBjdXN0b20gdGVzdHMgdGhhdCBhcmUgbm93IGNvdmVyZWQg
YnkgdGhlIHNwZWMuCisKKyAgICAgICAgKiByZXNvdXJjZXMvZ2MuanM6CisgICAgICAgICgud2lu
ZG93LmdjKToKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQt
c3RyYXRlZ2llcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL2JhZC1zdHJhdGVnaWVzLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9u
L2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuaHRtbDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5j
ZS1pbXBsZW1lbnRhdGlvbi9icmFuZC1jaGVja3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0
cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy5odG1sOgorICAgICAg
ICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2J5dGUtbGVuZ3RoLXF1ZXVpbmct
c3RyYXRlZ3ktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5j
ZS1pbXBsZW1lbnRhdGlvbi9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVp
bmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWlt
cGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbDoKKyAgICAgICAgKiBzdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tY2FuY2VsLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFk
YWJsZS1zdHJlYW0tY2FuY2VsLmh0bWw6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1w
bGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFk
YWJsZS1zdHJlYW0tcmVhZGVyLmh0bWw6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1w
bGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10
ZWUuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRp
b24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC5o
dG1sOgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxl
LXN0cmVhbS5odG1sOgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9u
L3Jlc291cmNlcy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmpzOgorICAgICAgICAodHlw
ZUlzT2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3ku
cHJvdG90eXBlLnNob3VsZEFwcGx5QmFja3ByZXNzdXJlKTogRGVsZXRlZC4KKyAgICAgICAgKiBz
dHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZXNvdXJjZXMvY291bnQtcXVldWluZy1z
dHJhdGVneS5qczoKKyAgICAgICAgKHR5cGVJc09iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChD
b3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2hvdWxkQXBwbHlCYWNrcHJlc3N1cmUpOiBE
ZWxldGVkLgorICAgICAgICAodHlwZUlzT2JqZWN0KTogQWRkZWQuCisgICAgICAgIChjcmVhdGVE
YXRhUHJvcGVydHkpOiBBZGRlZC4KKwogMjAxNS0wNi0xMiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0
LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE4
NTQ5Mi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9nYy5qcyBiL0xheW91dFRl
c3RzL3Jlc291cmNlcy9nYy5qcwppbmRleCAwNzRiM2M4ZjI0YjBhMmMzNDdkYTEzYjY0Y2RlMGZk
NzczNDM4ZDhiLi5iZDM1MTEwYzJkZTVhOTdlOTcyNTkzMzM1YjgzMWYwMGY2YzMzOWU1IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvZ2MuanMKKysrIGIvTGF5b3V0VGVzdHMvcmVz
b3VyY2VzL2djLmpzCkBAIC03LDYgKzcsOCBAQCBpZiAoIXdpbmRvdy5nYykKICAgICB7CiAgICAg
ICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQogICAgICAgICAgICAgcmV0dXJuIEdDQ29udHJv
bGxlci5jb2xsZWN0KCk7CisKKyAgICAgICAgY29uc29sZS53YXJuKCdUZXN0cyBhcmUgcnVubmlu
ZyB3aXRob3V0IHRoZSBhYmlsaXR5IHRvIGRvIG1hbnVhbCBnYXJiYWdlIGNvbGxlY3Rpb24uIFRo
ZXkgd2lsbCBzdGlsbCB3b3JrLCBidXQgY292ZXJhZ2Ugd2lsbCBiZSBzdWJvcHRpbWFsLicpOwog
ICAgICAgICBmdW5jdGlvbiBnY1JlYyhuKSB7CiAgICAgICAgICAgICBpZiAobiA8IDEpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHt9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW0tY29udHJvbGxlci1lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1jb250cm9sbGVyLWVycm9yLWV4cGVjdGVkLnR4dApp
bmRleCBmMDMzNmUwYjBlZjA5YTM0Yzc3MTQyYjAzNjAxMTNkMjlkOWM3MzA3Li43MzUxZTRlNjk0
ZTA4MWYzMjYwY2IxMzQxZWE4YzI0YTc3OWY4ZGU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1jb250cm9sbGVyLWVycm9yLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1jb250cm9sbGVyLWVycm9yLWV4
cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKIAogUEFTUyBFcnJvcmluZyBhIFJlYWRhYmxlU3Ry
ZWFtIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2UgcHJvbWlzZSAKIFBB
U1MgRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFt
UmVhZGVyIGNsb3NlIHByb21pc2UgCi1QQVNTIEVycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gd2l0
aG91dCBhbnkgdmFsdWUgCitGQUlMIEVycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gd2l0aG91dCBh
bnkgdmFsdWUgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgKHVuZGVmaW5lZCkgdW5kZWZpbmVkIGJ1
dCBnb3QgKG9iamVjdCkgb2JqZWN0ICJFcnJvcjogRXJyb3IgZnVuY3Rpb24gY2FsbGVkLiIKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tY29udHJvbGxl
ci1lcnJvci5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tY29udHJv
bGxlci1lcnJvci5odG1sCmluZGV4IDBjZTdhYTUwYWQ1OTc0NzI2ODM1MjY4ZWE2OTkwMDZmZGRi
ZmFmYmIuLmNlZWEzYmZhZjBlY2ZjZjNhODg3ZDBkZTA4MzNhMDdhNGQ3ZTY5NmMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWNvbnRyb2xsZXItZXJyb3Iu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1jb250cm9sbGVy
LWVycm9yLmh0bWwKQEAgLTIsOSArMiw4IEBACiA8c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzJz48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPScuLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMnPjwvc2NyaXB0PgogPHNjcmlwdD4KLQotdDIgPSBhc3luY190ZXN0KCdF
cnJvcmluZyBhIFJlYWRhYmxlU3RyZWFtIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1SZWFk
ZXIgY2xvc2UgcHJvbWlzZScpOwotdDIuc3RlcChmdW5jdGlvbigpIHsKK3ZhciB0ZXN0MSA9IGFz
eW5jX3Rlc3QoJ0Vycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gc2hvdWxkIHJlamVjdCBSZWFkYWJs
ZVN0cmVhbVJlYWRlciBjbG9zZSBwcm9taXNlJyk7Cit0ZXN0MS5zdGVwKGZ1bmN0aW9uKCkgewog
ICAgIHZhciBjb250cm9sbGVyOwogICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CiAg
ICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CkBAIC0xMiwxOSArMTEsMTkgQEAgdDIuc3RlcChm
dW5jdGlvbigpIHsKICAgICAgICAgfQogICAgIH0pOwogCi0gICBycy5nZXRSZWFkZXIoKS5jbG9z
ZWQudGhlbih0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICBycy5nZXRSZWFkZXIoKS5jbG9z
ZWQudGhlbih0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CiAgICAgICAgIGFzc2VydF91bnJl
YWNoZWQoImNsb3NlZCBwcm9taXNlIHNob3VsZCBub3QgYmUgcmVzb2x2ZWQgd2hlbiBzdHJlYW0g
aXMgZXJyb3JlZCIpOwotICAgIH0pLCB0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oZXJyKSB7CisgICAg
fSksIHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbihlcnIpIHsKICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhyc0Vycm9yLCBlcnIpOwotICAgICAgICB0Mi5kb25lKCk7CisgICAgICAgIHRlc3QxLmRvbmUo
KTsKICAgICB9KSk7CiAKICAgICB2YXIgcnNFcnJvciA9ICJteSBlcnJvciI7CiAgICAgY29udHJv
bGxlci5lcnJvcihyc0Vycm9yKTsKIH0pOwogCi10MyA9IGFzeW5jX3Rlc3QoJ0Vycm9yaW5nIGEg
UmVhZGFibGVTdHJlYW0gc2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZSBw
cm9taXNlJyk7Ci10My5zdGVwKGZ1bmN0aW9uKCkgewordmFyIHRlc3QyID0gYXN5bmNfdGVzdCgn
RXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFtUmVh
ZGVyIGNsb3NlIHByb21pc2UnKTsKK3Rlc3QyLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIGNv
bnRyb2xsZXI7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKICAgICAgICAgc3Rh
cnQ6IGZ1bmN0aW9uKGMpIHsKQEAgLTM3LDE2ICszNiwxNiBAQCB0My5zdGVwKGZ1bmN0aW9uKCkg
ewogCiAgICAgLy8gTGV0J3MgY2FsbCBnZXRSZWFkZXIgdHdpY2UgdG8gZW5zdXJlIHRoYXQgc3Ry
ZWFtIGlzIG5vdCBsb2NrZWQgdG8gYSByZWFkZXIuCiAgICAgcnMuZ2V0UmVhZGVyKCk7Ci0gICAg
cnMuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4odDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAg
IHJzLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsK
ICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgiY2xvc2VkIHByb21pc2Ugc2hvdWxkIG5vdCBiZSBy
ZXNvbHZlZCB3aGVuIHN0cmVhbSBpcyBlcnJvcmVkIik7Ci0gICAgfSksIHQzLnN0ZXBfZnVuYyhm
dW5jdGlvbihlcnIpIHsKKyAgICB9KSwgdGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKGVycikgewog
ICAgICAgICBhc3NlcnRfZXF1YWxzKHJzRXJyb3IsIGVycik7Ci0gICAgICAgIHQzLmRvbmUoKTsK
KyAgICAgICAgdGVzdDIuZG9uZSgpOwogICAgIH0pKTsKIH0pOwogCi10NCA9IGFzeW5jX3Rlc3Qo
J0Vycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gd2l0aG91dCBhbnkgdmFsdWUnKTsKLXQ0LnN0ZXAo
ZnVuY3Rpb24oKSB7Cit2YXIgdGVzdDMgPSBhc3luY190ZXN0KCdFcnJvcmluZyBhIFJlYWRhYmxl
U3RyZWFtIHdpdGhvdXQgYW55IHZhbHVlJyk7Cit0ZXN0My5zdGVwKGZ1bmN0aW9uKCkgewogICAg
IHZhciBjb250cm9sbGVyOwogICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CiAgICAg
ICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CkBAIC01NCwxNiArNTMsMTMgQEAgdDQuc3RlcChmdW5j
dGlvbigpIHsKICAgICAgICAgfQogICAgIH0pOwogCi0gICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2Vk
LnRoZW4odDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgIHJzLmdldFJlYWRlcigpLmNsb3Nl
ZC50aGVuKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKICAgICAgICAgYXNzZXJ0X3VucmVh
Y2hlZCgiY2xvc2VkIHByb21pc2Ugc2hvdWxkIG5vdCBiZSByZXNvbHZlZCB3aGVuIHN0cmVhbSBp
cyBlcnJvcmVkIik7Ci0gICAgfSksIHQ0LnN0ZXBfZnVuYyhmdW5jdGlvbihlcnIpIHsKLSAgICAg
ICAgLy8gRXJyb3IgZ2VuZXJhdGVkIGJ5IEpTIGVuZ2luZS4KLSAgICAgICAgYXNzZXJ0X3RydWUo
dHlwZW9mIGVyciA9PSAnb2JqZWN0Jyk7Ci0gICAgICAgIHQ0LmRvbmUoKTsKKyAgICB9KSwgdGVz
dDMuc3RlcF9mdW5jKGZ1bmN0aW9uKGVycikgeworICAgICAgICBhc3NlcnRfZXF1YWxzKGVyciwg
dW5kZWZpbmVkKTsKKyAgICAgICAgdGVzdDMuZG9uZSgpOwogICAgIH0pKTsKIAogICAgIGNvbnRy
b2xsZXIuZXJyb3IoKTsKIH0pOwotCi0KIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA3YTE2MTllZTMyMjhkNWEzZjRhNGJjMTJmZWNmZDIzMzEwMmM5ZmNmLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAs
MCBAQAotCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbid0IGJlIGNvbnN0cnVjdGVkIHdpdGggZ2Fy
YmFnZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRo
ZSBwcm9wZXIgcGFyYW1ldGVycyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gc2hvdWxkIGJlIGFibGUg
dG8gY2FsbCBzdGFydCBtZXRob2Qgd2l0aGluIHByb3RvdHlwZSBjaGFpbiBvZiBpdHMgc291cmNl
IAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1nYy5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tZ2MuaHRtbAppbmRleCBl
ODkyNzcyZjQ5OWM0NjU2ODZiMTZkNDViNDE2MTkwMTI2YTBlNmEwLi5kMDc0MjExMTVmYWM3NjIw
NGI4ODY4Mjk3MGJhNTU4OTkxZTFkNGRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbS1nYy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtLWdjLmh0bWwKQEAgLTMsNyArMyw2IEBACiA8c2NyaXB0IHNyYz0nLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzJz48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPScuLi9yZXNv
dXJjZXMvZ2MuanMnPjwvc2NyaXB0PgogPHNjcmlwdD4KLQogZnVuY3Rpb24gZ2FyYmFnZUNvbGxl
Y3RBbmREbyh0YXNrKQogewogICAgIHZhciB0aW1lb3V0ID0gNTA7CkBAIC0xNiw4ICsxNSw4IEBA
IGZ1bmN0aW9uIGdhcmJhZ2VDb2xsZWN0QW5kRG8odGFzaykKICAgICBzZXRUaW1lb3V0KHRhc2ss
IHRpbWVvdXQpOwogfQogCi10MSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlIHN0cmVhbSBjb250cm9s
bGVyIG1ldGhvZHMgc2hvdWxkIGNvbnRpbnVlIHdvcmtpbmcgcHJvcGVybHkgd2hlbiBzY3JpcHRz
IGFyZSBsb29zaW5nIHJlZmVyZW5jZSB0byB0aGUgcmVhZGFibGUgc3RyZWFtJyk7Ci10MS5zdGVw
KGZ1bmN0aW9uKCkgewordmFyIHRlc3QxID0gYXN5bmNfdGVzdCgnUmVhZGFibGUgc3RyZWFtIGNv
bnRyb2xsZXIgbWV0aG9kcyBzaG91bGQgY29udGludWUgd29ya2luZyBwcm9wZXJseSB3aGVuIHNj
cmlwdHMgYXJlIGxvb3NpbmcgcmVmZXJlbmNlIHRvIHRoZSByZWFkYWJsZSBzdHJlYW0nKTsKK3Rl
c3QxLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIGNvbnRyb2xsZXI7CiAgICAgbmV3IFJlYWRh
YmxlU3RyZWFtKHsKICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKQEAgLTI1LDQ0ICsyNCw0
MyBAQCB0MS5zdGVwKGZ1bmN0aW9uKCkgewogICAgICAgICB9CiAgICAgfSk7CiAKLSAgICBnYXJi
YWdlQ29sbGVjdEFuZERvKHQxLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICBnYXJiYWdlQ29s
bGVjdEFuZERvKHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKICAgICAgICAgY29udHJvbGxl
ci5jbG9zZSgpOwogICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rp
b24oKSB7IGNvbnRyb2xsZXIuY2xvc2UoKTsgfSk7CiAgICAgICAgIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgY29udHJvbGxlci5lcnJvcigpOyB9KTsKLSAgICAg
ICAgdDEuZG9uZSgpOworICAgICAgICB0ZXN0MS5kb25lKCk7CiAgICAgfSkpOwogfSk7CiAKLXQy
ID0gYXN5bmNfdGVzdCgnUmVhZGFibGUgc3RyZWFtIGNsb3NlZCBwcm9taXNlIHNob3VsZCByZXNv
bHZlIGV2ZW4gaWYgc3RyZWFtIGFuZCByZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCcpOwot
dDIuc3RlcChmdW5jdGlvbigpIHsKK3ZhciB0ZXN0MiA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlIHN0
cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgcmVzb2x2ZSBldmVuIGlmIHN0cmVhbSBhbmQgcmVh
ZGVyIEpTIHJlZmVyZW5jZXMgYXJlIGxvc3QnKTsKK3Rlc3QyLnN0ZXAoZnVuY3Rpb24oKSB7CiAg
ICAgdmFyIGNvbnRyb2xsZXI7CiAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKICAgICAgICAgc3Rh
cnQ6IGZ1bmN0aW9uKGMpIHsKICAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBjOwogICAgICAgICB9
Ci0gICAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4odDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
ewotICAgICAgICB0Mi5kb25lKCk7CisgICAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4odGVz
dDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICB0ZXN0Mi5kb25lKCk7CiAgICAgfSkp
OwogCi0gICAgZ2FyYmFnZUNvbGxlY3RBbmREbyh0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Cisg
ICAgZ2FyYmFnZUNvbGxlY3RBbmREbyh0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CiAgICAg
ICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKICAgICB9KSk7CiB9KTsKIAotdDMgPSBhc3luY190ZXN0
KCdSZWFkYWJsZSBzdHJlYW0gY2xvc2VkIHByb21pc2Ugc2hvdWxkIHJlamVjdCBldmVuIGlmIHN0
cmVhbSBhbmQgcmVhZGVyIEpTIHJlZmVyZW5jZXMgYXJlIGxvc3QnKTsKLXQzLnN0ZXAoZnVuY3Rp
b24oKSB7Cit2YXIgdGVzdDMgPSBhc3luY190ZXN0KCdSZWFkYWJsZSBzdHJlYW0gY2xvc2VkIHBy
b21pc2Ugc2hvdWxkIHJlamVjdCBldmVuIGlmIHN0cmVhbSBhbmQgcmVhZGVyIEpTIHJlZmVyZW5j
ZXMgYXJlIGxvc3QnKTsKK3Rlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIGNvbnRyb2xs
ZXI7CiAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMp
IHsKICAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBjOwogICAgICAgICB9Ci0gICAgfSkuZ2V0UmVh
ZGVyKCkuY2xvc2VkLmNhdGNoKHQzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgdDMu
ZG9uZSgpOworICAgIH0pLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaCh0ZXN0My5zdGVwX2Z1bmMo
ZnVuY3Rpb24oKSB7CisgICAgICAgIHRlc3QzLmRvbmUoKTsKICAgICB9KSk7CiAKLSAgICBnYXJi
YWdlQ29sbGVjdEFuZERvKHQzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICBnYXJiYWdlQ29s
bGVjdEFuZERvKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKICAgICAgICAgY29udHJvbGxl
ci5lcnJvcigpOwogICAgIH0pKTsKIH0pOwotCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzFhNGE1YTJmMjk3NDYwNDkyYjBkY2JlOWNmOTAy
ZGFlNTFiNGMwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLQotUEFTUyBDb2xsZWN0aW5nIGEgUmVhZGFi
bGVTdHJlYW1SZWFkZXIgc2hvdWxkIG5vdCB1bmxvY2sgaXRzIHN0cmVhbSAKLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLXJlYWQuaHRtbCBi
L0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1yZWFkLmh0bWwKaW5k
ZXggODI0MTdiNzFlMTJmZTk0MzA1NDk5NjE3YTE5NTgzYmIxOTM0MDU4MC4uMTFmNWQyODEyYWYw
M2I3ZjZhYmQ0YWQxYmU2NDg5NTYxODA4ODZhZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLXJlYWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItcmVhZC5odG1sCkBAIC0yLDggKzIsOCBAQAog
PHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyc+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0nLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzJz48L3NjcmlwdD4KIDxz
Y3JpcHQ+Ci12YXIgdDEgPSBhc3luY190ZXN0KCdSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRo
YXQgZ2V0cyBjbG9zZWQnKTsKLXQxLnN0ZXAoZnVuY3Rpb24oKSB7Cit2YXIgdGVzdDEgPSBhc3lu
Y190ZXN0KCdSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBjbG9zZWQnKTsKK3Rl
c3QxLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIGNvbnRyb2xsZXI7CiAgICAgdmFyIHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKQEAgLTEz
LDE4ICsxMywxOCBAQCB0MS5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciBjb3VudGVyID0gMDsK
ICAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CiAKLSAgICByZWFkZXIucmVhZCgpLnRo
ZW4odDEuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgIHJlYWRlci5yZWFkKCkudGhl
bih0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAgICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICdyZWFk
KCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCBjbG9zZScpOwogICAgICAgICBhc3NlcnRfZXF1YWxzKGNv
dW50ZXIsIDEpOwogICAgICAgICBjb3VudGVyKys7CiAgICAgfSkpOwotICAgIHJlYWRlci5yZWFk
KCkudGhlbih0MS5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgcmVhZGVyLnJlYWQo
KS50aGVuKHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsKICAgICAgICAgYXNzZXJ0
X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwg
J3JlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIGNsb3NlJyk7CiAgICAgICAgIGFzc2VydF9lcXVh
bHMoY291bnRlciwgMik7CiAgICAgICAgIGNvdW50ZXIrKzsKLSAgICAgICAgdDEuZG9uZSgpOwor
ICAgICAgICB0ZXN0MS5kb25lKCk7CiAgICAgfSkpOwotICAgIHJlYWRlci5jbG9zZWQudGhlbih0
MS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgcmVhZGVyLmNsb3NlZC50aGVuKHRlc3QxLnN0
ZXBfZnVuYyhmdW5jdGlvbigpIHsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyLCAwKTsK
ICAgICAgICAgY291bnRlcisrOwogICAgIH0pKTsKQEAgLTMyLDggKzMyLDggQEAgdDEuc3RlcChm
dW5jdGlvbigpIHsKICAgICBjb250cm9sbGVyLmNsb3NlKCk7CiB9KTsKIAotdmFyIHQyID0gYXN5
bmNfdGVzdCgnUmVhZGluZyB0d2ljZSBvbiBhIGNsb3NlZCBzdHJlYW0nKTsKLXQyLnN0ZXAoZnVu
Y3Rpb24oKSB7Cit2YXIgdGVzdDIgPSBhc3luY190ZXN0KCdSZWFkaW5nIHR3aWNlIG9uIGEgY2xv
c2VkIHN0cmVhbScpOwordGVzdDIuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgY29udHJvbGxl
cjsKICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewogICAgICAgICBzdGFydDogZnVu
Y3Rpb24oYykgewpAQCAtNDYsMjUgKzQ2LDI1IEBAIHQyLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAg
dmFyIGNvdW50ZXIgPSAwOwogICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKIAotICAg
IHJlYWRlci5yZWFkKCkudGhlbih0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7CisgICAg
cmVhZGVyLnJlYWQoKS50aGVuKHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsKICAg
ICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiB1bmRlZmluZWQsIGRv
bmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIGNsb3NlJyk7CiAgICAgICAg
IGFzc2VydF9lcXVhbHMoY291bnRlciwgMCk7CiAgICAgICAgIGNvdW50ZXIrKzsKICAgICB9KSk7
Ci0gICAgcmVhZGVyLnJlYWQoKS50aGVuKHQyLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsK
KyAgICByZWFkZXIucmVhZCgpLnRoZW4odGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkg
ewogICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5l
ZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UnKTsKICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyLCAxKTsKICAgICAgICAgY291bnRlcisrOwogICAg
IH0pKTsKLSAgICByZWFkZXIuY2xvc2VkLnRoZW4odDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewor
ICAgIHJlYWRlci5jbG9zZWQudGhlbih0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CiAgICAg
ICAgIGFzc2VydF9lcXVhbHMoY291bnRlciwgMik7CiAgICAgICAgIGNvdW50ZXIrKzsKLSAgICAg
ICAgdDIuZG9uZSgpOworICAgICAgICB0ZXN0Mi5kb25lKCk7CiAgICAgfSkpOwogfSk7CiAKLXZh
ciB0MyA9IGFzeW5jX3Rlc3QoJ1JlYWRpbmcgdHdpY2Ugb24gYW4gZXJyb3JlZCBzdHJlYW0nKTsK
LXQzLnN0ZXAoZnVuY3Rpb24oKSB7Cit2YXIgdGVzdDMgPSBhc3luY190ZXN0KCdSZWFkaW5nIHR3
aWNlIG9uIGFuIGVycm9yZWQgc3RyZWFtJyk7Cit0ZXN0My5zdGVwKGZ1bmN0aW9uKCkgewogICAg
IHZhciBjb250cm9sbGVyOwogICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CiAgICAg
ICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CkBAIC03OCwzMiArNzgsMzIgQEAgdDMuc3RlcChmdW5j
dGlvbigpIHsKICAgICB2YXIgY291bnRlciA9IDA7CiAgICAgdmFyIHJlYWRlciA9IHJzLmdldFJl
YWRlcigpOwogCi0gICAgcmVhZGVyLnJlYWQoKS50aGVuKHQzLnN0ZXBfZnVuYyhmdW5jdGlvbigp
IHsKKyAgICByZWFkZXIucmVhZCgpLnRoZW4odGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewog
ICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdyZWFkKCkgc2hvdWxkIHJlamVjdCBvbiBhbiBlcnJv
cmVkIHN0cmVhbScpOwotICAgIH0pLCB0My5zdGVwX2Z1bmMoZnVuY3Rpb24oZXJyKSB7CisgICAg
fSksIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihlcnIpIHsKICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhteUVycm9yLCBlcnIpOwogICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIsIDApOwogICAg
ICAgICBjb3VudGVyKys7CiAgICAgfSkpOwotICAgIHJlYWRlci5yZWFkKCkudGhlbih0My5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHRlc3QzLnN0ZXBfZnVu
YyhmdW5jdGlvbigpIHsKICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgncmVhZCgpIHNob3VsZCBy
ZWplY3Qgb24gYW4gZXJyb3JlZCBzdHJlYW0nKTsKLSAgICB9KSwgdDMuc3RlcF9mdW5jKGZ1bmN0
aW9uKGVycikgeworICAgIH0pLCB0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oZXJyKSB7CiAgICAg
ICAgIGFzc2VydF9lcXVhbHMobXlFcnJvciwgZXJyKTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhj
b3VudGVyLCAxKTsKICAgICAgICAgY291bnRlcisrOwogICAgIH0pKTsKLSAgICByZWFkZXIuY2xv
c2VkLnRoZW4odDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgIHJlYWRlci5jbG9zZWQudGhl
bih0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CiAgICAgICAgIGFzc2VydF91bnJlYWNoZWQo
J3JlYWQoKSBzaG91bGQgcmVqZWN0IG9uIGFuIGVycm9yZWQgc3RyZWFtJyk7Ci0gICAgfSksIHQz
LnN0ZXBfZnVuYyhmdW5jdGlvbihlcnIpIHsKKyAgICB9KSwgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0
aW9uKGVycikgewogICAgICAgICBhc3NlcnRfZXF1YWxzKG15RXJyb3IsIGVycik7CiAgICAgICAg
IGFzc2VydF9lcXVhbHMoY291bnRlciwgMik7CiAgICAgICAgIGNvdW50ZXIrKzsKLSAgICAgICAg
dDMuZG9uZSgpOworICAgICAgICB0ZXN0My5kb25lKCk7CiAgICAgfSkpOwogfSk7CiAKLXZhciB0
NCA9IGFzeW5jX3Rlc3QoJ1JlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGVycm9y
ZWQnKTsKLXQ0LnN0ZXAoZnVuY3Rpb24oKSB7Cit2YXIgdGVzdDQgPSBhc3luY190ZXN0KCdSZWFk
aW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBlcnJvcmVkJyk7Cit0ZXN0NC5zdGVwKGZ1
bmN0aW9uKCkgewogICAgIHZhciBjb250cm9sbGVyOwogICAgIHZhciBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CiAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CkBAIC0xMTQsMjQgKzExNCwy
NCBAQCB0NC5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciBjb3VudGVyID0gMDsKICAgICB2YXIg
cmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CiAKLSAgICByZWFkZXIucmVhZCgpLnRoZW4odDQuc3Rl
cF9mdW5jKGZ1bmN0aW9uKCkgeworICAgIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0NC5zdGVwX2Z1
bmMoZnVuY3Rpb24oKSB7CiAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ3JlYWQoKSBzaG91bGQg
cmVqZWN0IG9uIGFuIGVycm9yZWQgc3RyZWFtJyk7Ci0gICAgfSksIHQ0LnN0ZXBfZnVuYyhmdW5j
dGlvbihlcnIpIHsKKyAgICB9KSwgdGVzdDQuc3RlcF9mdW5jKGZ1bmN0aW9uKGVycikgewogICAg
ICAgICBhc3NlcnRfZXF1YWxzKG15RXJyb3IsIGVycik7CiAgICAgICAgIGFzc2VydF9lcXVhbHMo
Y291bnRlciwgMSk7CiAgICAgICAgIGNvdW50ZXIrKzsKICAgICB9KSk7Ci0gICAgcmVhZGVyLnJl
YWQoKS50aGVuKHQ0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICByZWFkZXIucmVhZCgpLnRo
ZW4odGVzdDQuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewogICAgICAgICBhc3NlcnRfdW5yZWFjaGVk
KCdyZWFkKCkgc2hvdWxkIHJlamVjdCBvbiBhbiBlcnJvcmVkIHN0cmVhbScpOwotICAgIH0pLCB0
NC5zdGVwX2Z1bmMoZnVuY3Rpb24oZXJyKSB7CisgICAgfSksIHRlc3Q0LnN0ZXBfZnVuYyhmdW5j
dGlvbihlcnIpIHsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhteUVycm9yLCBlcnIpOwogICAgICAg
ICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIsIDIpOwogICAgICAgICBjb3VudGVyKys7Ci0gICAgICAg
IHQ0LmRvbmUoKTsKKyAgICAgICAgdGVzdDQuZG9uZSgpOwogICAgIH0pKTsKLSAgICByZWFkZXIu
Y2xvc2VkLnRoZW4odDQuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgIHJlYWRlci5jbG9zZWQu
dGhlbih0ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CiAgICAgICAgIGFzc2VydF91bnJlYWNo
ZWQoJ3JlYWQoKSBzaG91bGQgcmVqZWN0IG9uIGFuIGVycm9yZWQgc3RyZWFtJyk7Ci0gICAgfSks
IHQ0LnN0ZXBfZnVuYyhmdW5jdGlvbihlcnIpIHsKKyAgICB9KSwgdGVzdDQuc3RlcF9mdW5jKGZ1
bmN0aW9uKGVycikgewogICAgICAgICBhc3NlcnRfZXF1YWxzKG15RXJyb3IsIGVycik7CiAgICAg
ICAgIGFzc2VydF9lcXVhbHMoY291bnRlciwgMCk7CiAgICAgICAgIGNvdW50ZXIrKzsKQEAgLTE0
MSw4ICsxNDEsOCBAQCB0NC5zdGVwKGZ1bmN0aW9uKCkgewogICAgIGNvbnRyb2xsZXIuZXJyb3Io
bXlFcnJvcik7CiAgfSk7CiAKLXZhciB0NSA9IGFzeW5jX3Rlc3QoJ1JlYWRpbmcgd2l0aGluIGEg
cmVhZCBwcm9taXNlIHJlc29sdmUgY2FsbGJhY2sgb24gYSBzdHJlYW0gdGhhdCBnZXRzIGNsb3Nl
ZCcpOwotdDUuc3RlcChmdW5jdGlvbigpIHsKK3ZhciB0ZXN0NSA9IGFzeW5jX3Rlc3QoJ1JlYWRp
bmcgd2l0aGluIGEgcmVhZCBwcm9taXNlIHJlc29sdmUgY2FsbGJhY2sgb24gYSBzdHJlYW0gdGhh
dCBnZXRzIGNsb3NlZCcpOwordGVzdDUuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgY29udHJv
bGxlcjsKICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewogICAgICAgICBzdGFydDog
ZnVuY3Rpb24oYykgewpAQCAtMTUyLDkgKzE1Miw5IEBAIHQ1LnN0ZXAoZnVuY3Rpb24oKSB7CiAK
ICAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CiAKLSAgICByZWFkZXIucmVhZCgpLnRo
ZW4odDUuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICByZWFkZXIucmVhZCgpLnRoZW4o
dDUuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdDUuZG9uZSgpOworICAgIHJl
YWRlci5yZWFkKCkudGhlbih0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIHJl
YWRlci5yZWFkKCkudGhlbih0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICB0ZXN0NS5kb25lKCk7CiAgICAgICAgIH0pKTsKICAgICB9KSk7CiAgICAgY29udHJvbGxlci5j
bG9zZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0t
cmVhZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDA4YTU4OWRlMGY2ZjFkNTUxNTZm
OWYzMDc5MWE0NWRjYzI1Y2E5NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPHNjcmlw
dCBzcmM9Jy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyc+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0nLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzJz48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPScuLi9yZXNvdXJjZXMvZ2MuanMnPjwvc2NyaXB0PgotPHNjcmlwdD4KLQotdDEgPSBhc3lu
Y190ZXN0KCdDb2xsZWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgc2hvdWxkIG5vdCB1bmxv
Y2sgaXRzIHN0cmVhbScpOwotdDEuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oe30pOwotICAgIHJzLmdldFJlYWRlcigpOwotICAgIHNldFRpbWVvdXQo
dDEuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICB3aW5kb3cuZ2MoKTsKLSAgICAgICAg
YXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBycy5nZXRSZWFkZXIo
KTsgfSwgJ29sZCByZWFkZXIgc2hvdWxkIHN0aWxsIGJlIGxvY2tpbmcgYSBuZXcgb25lIGV2ZW4g
YWZ0ZXIgZ2FyYmFnZSBjb2xsZWN0aW9uJyk7Ci0gICAgICAgIHQxLmRvbmUoKTsKLSAgICB9KSwg
MTApOwotfSk7Ci0KLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW0uaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwZDU1N2M2NzMzMWFhNWE1ZTVj
YTNlNjU5ZjYxNGRlNTdhZWU4MzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0uaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPHNjcmlwdCBzcmM9
Jy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyc+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0nLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzJz48L3NjcmlwdD4KLTxzY3JpcHQ+Ci10ZXN0
KGZ1bmN0aW9uKCkgewotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlv
bigpIHsKLSAgICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKG51bGwpOwotICAgIH0sICdjb25zdHJ1
Y3RvciBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc291cmNlIGlzIG51bGwnKTsKLX0sICdSZWFkYWJs
ZVN0cmVhbSBjYW5cJ3QgYmUgY29uc3RydWN0ZWQgd2l0aCBnYXJiYWdlJyk7Ci0KLXRlc3QoZnVu
Y3Rpb24oKQotewotICAgIHZhciBpc1N0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0gICAgdmFyIHNvdXJj
ZSA9IHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGNvbnRyb2xsZXIpIHsKLSAgICAgICAgICAg
IGFzc2VydF9lcXVhbHModGhpcywgc291cmNlLCAnc291cmNlIGlzIHRoaXMgZHVyaW5nIHN0YXJ0
Jyk7Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWRkIGNvbnN0cnVjdG9yIGF0
IHNvbWUgcG9pbnQuCi0gICAgICAgICAgICB2YXIgbWV0aG9kcyA9IFsgJ2Nsb3NlJywgJ2NvbnN0
cnVjdG9yJywgJ2VucXVldWUnLCAnZXJyb3InIF07Ci0gICAgICAgICAgICB2YXIgcHJvdG8gPSBP
YmplY3QuZ2V0UHJvdG90eXBlT2YoY29udHJvbGxlcik7Ci0KLSAgICAgICAgICAgIGFzc2VydF9h
cnJheV9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2JqZWN0LmdldFByb3RvdHlw
ZU9mKGNvbnRyb2xsZXIpKS5zb3J0KCksIG1ldGhvZHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAndGhlIGNvbnRyb2xsZXIgc2hvdWxkIGhhdmUgdGhlIHJpZ2h0IG1ldGhvZHMnKTsKLQotICAg
ICAgICAgICAgZm9yICh2YXIgbSBvZiBbICdjbG9zZScsICdlbnF1ZXVlJywgJ2Vycm9yJyBdKSB7
Ci0gICAgICAgICAgICAgICAgdmFyIG1ldGhvZFByb3BlcnRpZXMgPSBbICdsZW5ndGgnLCAnbmFt
ZScgXTsKLSAgICAgICAgICAgICAgICB2YXIgcHJvcERlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKHByb3RvLCBtKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHBy
b3BEZXNjLmVudW1lcmFibGUsIHRydWUsICdtZXRob2Qgc2hvdWxkIGJlIGVudW1lcmFibGUnKTsK
LSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHByb3BEZXNjLmNvbmZpZ3VyYWJsZSwgdHJ1
ZSwgJ21ldGhvZCBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhwcm9wRGVzYy53cml0YWJsZSwgdHJ1ZSwgJ21ldGhvZCBzaG91bGQgYmUgd3Jp
dGFibGUnKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBjb250cm9sbGVy
W21dLCAnZnVuY3Rpb24nLCAnc2hvdWxkIGhhdmUgYmUgYSBtZXRob2QnKTsKLSAgICAgICAgICAg
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGNvbnRy
b2xsZXJbbV0pLnNvcnQoKSwgbWV0aG9kUHJvcGVydGllcywgJ21ldGhvZCBzaG91bGQgaGF2ZSB0
aGUgcmlnaHQgcHJvcGVydGllcycpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKGNvbnRyb2xsZXIuY2xvc2UubGVuZ3RoLCAwLCAnY2xvc2Ugc2hvdWxkIGhhdmUg
bm8gcGFyYW1ldGVycycpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmVu
cXVldWUubGVuZ3RoLCAxLCAnZW5xdWV1ZSBzaG91bGQgaGF2ZSAxIHBhcmFtZXRlcicpOwotICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmVycm9yLmxlbmd0aCwgMSwgJ2Vycm9y
IHNob3VsZCBoYXZlIDEgcGFyYW1ldGVyJyk7Ci0KLSAgICAgICAgICAgIHZhciBwcm9wRGVzYyA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sICdjb25zdHJ1Y3RvcicpOwot
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhwcm9wRGVzYy5lbnVtZXJhYmxlLCBmYWxzZSwgJ2Nv
bnN0cnVjdG9yIHNob3VsZCBub3QgYmUgZW51bWVyYWJsZScpOwotICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhwcm9wRGVzYy5jb25maWd1cmFibGUsIHRydWUsICdjb25zdHJ1Y3RvciBzaG91bGQg
YmUgY29uZmlndXJhYmxlJyk7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHByb3BEZXNjLndy
aXRhYmxlLCBmYWxzZSwgJ2NvbnN0cnVjdG9yIHNob3VsZCBub3QgYmUgd3JpdGFibGUnKTsKLSAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGNvbnRyb2xsZXIuY29uc3RydWN0b3IsICdv
YmplY3QnLCAnY29uc3RydWN0b3Igc2hvdWxkIGJlIGFuIG9iamVjdCcpOwotCi0gICAgICAgICAg
ICBpc1N0YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB2YXIgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oc291cmNlKTsKLSAgICBhc3NlcnRfdHJ1ZShpc1N0YXJ0Q2Fs
bGVkKTsKLX0sICdSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhl
IHByb3BlciBwYXJhbWV0ZXJzJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKQotewotICAgIHZhciBpc1N0
YXJ0Q2FsbGVkID0gZmFsc2U7Ci0KLSAgICB2YXIgU2ltcGxlU3RyZWFtU291cmNlID0gZnVuY3Rp
b24oKSB7IH07Ci0gICAgU2ltcGxlU3RyZWFtU291cmNlLnByb3RvdHlwZS5zdGFydCA9IGZ1bmN0
aW9uKCkgeyBpc1N0YXJ0Q2FsbGVkID0gdHJ1ZTsgfTsKLSAgICBTaW1wbGVTdHJlYW1Tb3VyY2Uu
cHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU2ltcGxlU3RyZWFtU291cmNlOwotCi0gICAgdmFyIHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKG5ldyBTaW1wbGVTdHJlYW1Tb3VyY2UoKSk7Ci0gICAgYXNz
ZXJ0X3RydWUoaXNTdGFydENhbGxlZCk7Ci19LCAnUmVhZGFibGVTdHJlYW0gc2hvdWxkIGJlIGFi
bGUgdG8gY2FsbCBzdGFydCBtZXRob2Qgd2l0aGluIHByb3RvdHlwZSBjaGFpbiBvZiBpdHMgc291
cmNlJyk7Ci0KLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZl
cmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXN0cmF0ZWdpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXN0cmF0ZWdpZXMtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5ZTFiOGIxODFjYzdmMTdmYzk3ZWY2YmZkNGRjODFmYWE4
OTYwNTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9iYWQtc3RyYXRlZ2llcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMCBA
QAorCitGQUlMIFJlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBnZXR0ZXIg
YXNzZXJ0X3Rocm93czogY29uc3RydWN0aW9uIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3IgZnVu
Y3Rpb24gImZ1bmN0aW9uICgpIHsKKyAgICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7Cisg
ICAgICAgICAgLi4uIiBkaWQgbm90IHRocm93CitGQUlMIFJlYWRhYmxlIHN0cmVhbTogdGhyb3dp
bmcgc3RyYXRlZ3kuc2l6ZSBtZXRob2QgYXNzZXJ0X3Rocm93czogZW5xdWV1ZSBzaG91bGQgdGhy
b3cgdGhlIGVycm9yIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IGMuZW5xdWV1ZSgnYScpOyB9IiBk
aWQgbm90IHRocm93CitGQUlMIFJlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuaGln
aFdhdGVyTWFyayBnZXR0ZXIgYXNzZXJ0X3Rocm93czogY29uc3RydWN0aW9uIHNob3VsZCByZS10
aHJvdyB0aGUgZXJyb3IgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsKKyAgICAgICAgbmV3IFJlYWRh
YmxlU3RyZWFtKHt9LCB7CisgICAgICAgICAgLi4uIiBkaWQgbm90IHRocm93CitGQUlMIFJlYWRh
YmxlIHN0cmVhbTogaW52YWxpZCBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIGFzc2VydF90aHJvd3M6
IGNvbnN0cnVjdGlvbiBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yIGZvciAtMSBmdW5jdGlvbiAi
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7CisgICAg
ICAuLi4iIGRpZCBub3QgdGhyb3cKK0ZBSUwgUmVhZGFibGUgc3RyZWFtOiBuZWdhdGl2ZSBzdHJh
dGVneS5oaWdoV2F0ZXJNYXJrIGFzc2VydF90aHJvd3M6IGNvbnN0cnVjdGlvbiBzaG91bGQgdGhy
b3cgYSBSYW5nZUVycm9yIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7CisgICAgICAgIG5ldyBSZWFk
YWJsZVN0cmVhbSh7fSwgeworICAgICAgICAgIC4uLiIgZGlkIG5vdCB0aHJvdworRkFJTCBSZWFk
YWJsZSBzdHJlYW06IHN0cmF0ZWd5LnNpemUgcmV0dXJuaW5nIE5hTiBhc3NlcnRfZXF1YWxzOiBl
bnF1ZXVlIHNob3VsZCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhwZWN0ZWQgZnVuY3Rpb24gImZ1bmN0
aW9uIFJhbmdlRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgYnV0IGdvdCBmdW5jdGlv
biAiZnVuY3Rpb24gQXNzZXJ0aW9uRXJyb3IobWVzc2FnZSkKKyAgICB7CisgICAgICAgIHRoaXMu
bWVzc2EuLi4iCitGQUlMIFJlYWRhYmxlIHN0cmVhbTogc3RyYXRlZ3kuc2l6ZSByZXR1cm5pbmcg
LUluZmluaXR5IGFzc2VydF9lcXVhbHM6IGVucXVldWUgc2hvdWxkIHRocm93IGEgUmFuZ2VFcnJv
ciBleHBlY3RlZCBmdW5jdGlvbiAiZnVuY3Rpb24gUmFuZ2VFcnJvcigpIHsKKyAgICBbbmF0aXZl
IGNvZGVdCit9IiBidXQgZ290IGZ1bmN0aW9uICJmdW5jdGlvbiBBc3NlcnRpb25FcnJvcihtZXNz
YWdlKQorICAgIHsKKyAgICAgICAgdGhpcy5tZXNzYS4uLiIKK0ZBSUwgUmVhZGFibGUgc3RyZWFt
OiBzdHJhdGVneS5zaXplIHJldHVybmluZyArSW5maW5pdHkgYXNzZXJ0X2VxdWFsczogZW5xdWV1
ZSBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yIGV4cGVjdGVkIGZ1bmN0aW9uICJmdW5jdGlvbiBS
YW5nZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iIGJ1dCBnb3QgZnVuY3Rpb24gImZ1
bmN0aW9uIEFzc2VydGlvbkVycm9yKG1lc3NhZ2UpCisgICAgeworICAgICAgICB0aGlzLm1lc3Nh
Li4uIgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9iYWQtc3RyYXRlZ2llcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vYmFkLXN0cmF0ZWdpZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZmRhZGI1
ZGY5NDdhNTM3MjBjZDdhMWFlNzgwMGY1ODhjOTRmZjI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXN0cmF0ZWdpZXMu
aHRtbApAQCAtMCwwICsxLDE4NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0nLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPScuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMnPjwvc2NyaXB0PgorPHNjcmlwdD4KK3Rl
c3QoZnVuY3Rpb24oKSB7CisgICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBz
dHJpbmcnKTsKKworICAgIGFzc2VydF90aHJvd3ModGhlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAg
ICAgICBuZXcgUmVhZGFibGVTdHJlYW0oe30sIHsKKyAgICAgICAgICAgIGdldCBzaXplKCkgewor
ICAgICAgICAgICAgICAgIHRocm93IHRoZUVycm9yOworICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgIGhpZ2hXYXRlck1hcms6IDUKKyAgICAgICAgfSk7CisgICAgfSwgJ2NvbnN0cnVjdGlvbiBz
aG91bGQgcmUtdGhyb3cgdGhlIGVycm9yJyk7Cit9LCAnUmVhZGFibGUgc3RyZWFtOiB0aHJvd2lu
ZyBzdHJhdGVneS5zaXplIGdldHRlcicpOworCit2YXIgdGVzdDEgPSBhc3luY190ZXN0KCdSZWFk
YWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgbWV0aG9kJyk7Cit0ZXN0MS5zdGVw
KGZ1bmN0aW9uKCkgeworICAgIHZhciB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3Ry
aW5nJyk7CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAorICAgICAgICB7CisgICAg
ICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgeworICAgICAgICAgICAgICAgIGFzc2VydF90aHJv
d3ModGhlRXJyb3IsIGZ1bmN0aW9uKCkgeyBjLmVucXVldWUoJ2EnKTsgfSwgJ2VucXVldWUgc2hv
dWxkIHRocm93IHRoZSBlcnJvcicpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICBzaXplOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0aHJv
dyB0aGVFcnJvcjsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBoaWdoV2F0ZXJNYXJrOiA1
CisgICAgICAgIH0KKyAgICApOworCisgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLmNhdGNoKHRl
c3QxLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZSwgdGhl
RXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOworICAgICAgICB0
ZXN0MS5kb25lKCk7CisgICAgfSkpCit9KTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB2YXIg
dGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOworCisgICAgYXNzZXJ0X3Ro
cm93cyh0aGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7
fSwgeworICAgICAgICAgICAgc2l6ZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIDE7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZ2V0IGhpZ2hXYXRlck1hcmsoKSB7
CisgICAgICAgICAgICAgICAgdGhyb3cgdGhlRXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAg
IH0pOworICAgIH0sICdjb25zdHJ1Y3Rpb24gc2hvdWxkIHJlLXRocm93IHRoZSBlcnJvcicpOwor
fSwgJ1JlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayBnZXR0
ZXInKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBmb3IgKHZhciBoaWdoV2F0ZXJNYXJrIG9m
IFstMSwgLUluZmluaXR5XSkgeworICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVycm9y
KCksIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7Cisg
ICAgICAgICAgICAgICAgc2l6ZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAxOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgaGlnaFdhdGVyTWFy
aworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdjb25zdHJ1Y3Rpb24gc2hvdWxkIHRocm93
IGEgUmFuZ2VFcnJvciBmb3IgJyArIGhpZ2hXYXRlck1hcmspOworICAgIH0KKworICAgIGZvciAo
dmFyIGhpZ2hXYXRlck1hcmsgb2YgW05hTiwgJ2ZvbycsIHt9XSkgeworICAgICAgICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBuZXcgUmVh
ZGFibGVTdHJlYW0oe30sIHsKKyAgICAgICAgICAgICAgICBzaXplOiBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICBoaWdoV2F0ZXJNYXJrCisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ2NvbnN0
cnVjdGlvbiBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IgZm9yICcgKyBoaWdoV2F0ZXJNYXJrKTsK
KyAgICB9Cit9LCAnUmVhZGFibGUgc3RyZWFtOiBpbnZhbGlkIHN0cmF0ZWd5LmhpZ2hXYXRlck1h
cmsnKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVy
cm9yKCksIGZ1bmN0aW9uKCkgeworICAgICAgICBuZXcgUmVhZGFibGVTdHJlYW0oe30sIHsKKyAg
ICAgICAgICAgIHNpemU6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAxOwor
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGhpZ2hXYXRlck1hcms6IC0xCisgICAgICAgIH0p
OworICAgIH0sICdjb25zdHJ1Y3Rpb24gc2hvdWxkIHRocm93IGEgUmFuZ2VFcnJvcicpOworfSwg
J1JlYWRhYmxlIHN0cmVhbTogbmVnYXRpdmUgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaycpOworCit2
YXIgdGVzdDIgPSBhc3luY190ZXN0KCdSZWFkYWJsZSBzdHJlYW06IHN0cmF0ZWd5LnNpemUgcmV0
dXJuaW5nIE5hTicpOwordGVzdDIuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgdGhlRXJyb3I7
CisgICAgdmFyIHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKAorICAgICAgICB7CisgICAgICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgeworICAg
ICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGMuZW5xdWV1ZSgnaGknKTsK
KyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgnZW5xdWV1ZSBkaWRuXCd0IHRo
cm93Jyk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgICAgICAg
ICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKGVycm9yLmNvbnN0cnVjdG9yLCBSYW5nZUVycm9yLCAnZW5xdWV1ZSBzaG91bGQgdGhyb3cg
YSBSYW5nZUVycm9yJyk7CisgICAgICAgICAgICAgICAgICAgIHRoZUVycm9yID0gZXJyb3I7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICB7Cisg
ICAgICAgICAgICBzaXplOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTmFO
OworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGhpZ2hXYXRlck1hcms6IDUKKyAgICAgICAg
fQorICAgICk7CisKKyAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQuY2F0Y2godGVzdDIuc3RlcF9m
dW5jKGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2Ns
b3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7CisgICAgICAgIGFzc2VydF90cnVl
KHN0YXJ0Q2FsbGVkKTsKKyAgICAgICAgdGVzdDIuZG9uZSgpOworICAgIH0pKTsKK30pOworCit2
YXIgdGVzdDMgPSBhc3luY190ZXN0KCdSZWFkYWJsZSBzdHJlYW06IHN0cmF0ZWd5LnNpemUgcmV0
dXJuaW5nIC1JbmZpbml0eScpOwordGVzdDMuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgdGhl
RXJyb3I7CisgICAgdmFyIHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisgICAgdmFyIHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKAorICAgICAgICB7CisgICAgICAgICAgICBzdGFydDogZnVuY3Rpb24oYykg
eworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGMuZW5xdWV1ZSgn
aGknKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgnZW5xdWV1ZSBkaWRu
XCd0IHRocm93Jyk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAg
ICAgICAgICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKGVycm9yLmNvbnN0cnVjdG9yLCBSYW5nZUVycm9yLCAnZW5xdWV1ZSBzaG91bGQg
dGhyb3cgYSBSYW5nZUVycm9yJyk7CisgICAgICAgICAgICAgICAgICAgIHRoZUVycm9yID0gZXJy
b3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICBzaXplOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gLUluZmluaXR5OworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGhpZ2hXYXRlck1hcms6
IDUKKyAgICAgICAgfQorICAgICk7CisKKyAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQuY2F0Y2go
dGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCB0
aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7CisgICAgICAg
IGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKKyAgICAgICAgdGVzdDMuZG9uZSgpOworICAgIH0p
KTsKK30pOworCit2YXIgdGVzdDQgPSBhc3luY190ZXN0KCdSZWFkYWJsZSBzdHJlYW06IHN0cmF0
ZWd5LnNpemUgcmV0dXJuaW5nICtJbmZpbml0eScpOwordGVzdDQuc3RlcChmdW5jdGlvbigpIHsK
KyAgICB2YXIgdGhlRXJyb3I7CisgICAgdmFyIHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisgICAgdmFy
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAorICAgICAgICB7CisgICAgICAgICAgICBzdGFydDog
ZnVuY3Rpb24oYykgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAg
IGMuZW5xdWV1ZSgnaGknKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgn
ZW5xdWV1ZSBkaWRuXCd0IHRocm93Jyk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3Ip
IHsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKGVycm9yLmNvbnN0cnVjdG9yLCBSYW5nZUVycm9yLCAnZW5x
dWV1ZSBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yJyk7CisgICAgICAgICAgICAgICAgICAgIHRo
ZUVycm9yID0gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICB7CisgICAgICAgICAgICBzaXplOiBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gK0luZmluaXR5OworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGhp
Z2hXYXRlck1hcms6IDUKKyAgICAgICAgfQorICAgICk7CisKKyAgICBycy5nZXRSZWFkZXIoKS5j
bG9zZWQuY2F0Y2godGVzdDQuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgYXNzZXJ0
X2VxdWFscyhlLCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9y
Jyk7CisgICAgICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKKyAgICAgICAgdGVzdDQuZG9u
ZSgpOworICAgIH0pKTsKK30pOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWluZy1zb3VyY2VzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9u
L2JhZC11bmRlcmx5aW5nLXNvdXJjZXMtZXhwZWN0ZWQudHh0CmluZGV4IDI4NDE5ZmEyMjVmYmY2
NDQ4OWE1MzhjNzRlYmVkMWVkYjViMjdhYTkuLjU2Y2Y5MmRmMTYyYzk5MDAyNzhkZmE3NWQ0MTQ1
YTRiMjJhYTAwNmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWlt
cGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5n
LXNvdXJjZXMtZXhwZWN0ZWQudHh0CkBAIC03LDE0ICs3LDEwIEBAIFBBU1MgVW5kZXJseWluZyBz
b3VyY2U6IHRocm93aW5nIHB1bGwgZ2V0dGVyIChzZWNvbmQgcHVsbCkKIFBBU1MgVW5kZXJseWlu
ZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgbWV0aG9kIChzZWNvbmQgcHVsbCkgCiBGQUlMIFVuZGVy
bHlpbmcgc291cmNlOiB0aHJvd2luZyBjYW5jZWwgZ2V0dGVyIGNhbmNlbCBpcyBub3QgaW1wbGVt
ZW50ZWQKIEZBSUwgVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIGNhbmNlbCBtZXRob2QgY2Fu
Y2VsIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcg
c3RyYXRlZ3kgZ2V0dGVyIGFzc2VydF90aHJvd3M6IGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBl
cnJvciBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyBjLmVucXVldWUoJ2EnKTsgfSIgZGlkIG5vdCB0
aHJvdwotRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBnZXR0
ZXIgYXNzZXJ0X3Rocm93czogZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhlIGVycm9yIGZ1bmN0aW9u
ICJmdW5jdGlvbiAoKSB7IGMuZW5xdWV1ZSgnYScpOyB9IiBkaWQgbm90IHRocm93Ci1GQUlMIFVu
ZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIG1ldGhvZCBhc3NlcnRfdGhy
b3dzOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB0aGUgZXJyb3IgZnVuY3Rpb24gImZ1bmN0aW9uICgp
IHsgYy5lbnF1ZXVlKCdhJyk7IH0iIGRpZCBub3QgdGhyb3cKLUZBSUwgVW5kZXJseWluZyBzb3Vy
Y2U6IHRocm93aW5nIHN0cmF0ZWd5LnNob3VsZEFwcGx5QmFja3ByZXNzdXJlIGdldHRlciBhc3Nl
cnRfdGhyb3dzOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB0aGUgZXJyb3IgZnVuY3Rpb24gImZ1bmN0
aW9uICgpIHsgYy5lbnF1ZXVlKCdhJyk7IH0iIGRpZCBub3QgdGhyb3cKLUZBSUwgVW5kZXJseWlu
ZyBzb3VyY2U6IHRocm93aW5nIHN0cmF0ZWd5LnNob3VsZEFwcGx5QmFja3ByZXNzdXJlIG1ldGhv
ZCBhc3NlcnRfdGhyb3dzOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB0aGUgZXJyb3IgZnVuY3Rpb24g
ImZ1bmN0aW9uICgpIHsgYy5lbnF1ZXVlKCdhJyk7IH0iIGRpZCBub3QgdGhyb3cKLUZBSUwgVW5k
ZXJseWluZyBzb3VyY2U6IHN0cmF0ZWd5LnNpemUgcmV0dXJuaW5nIE5hTiBhc3NlcnRfdW5yZWFj
aGVkOiBlbnF1ZXVlIGRpZG4ndCB0aHJvdyBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKLUZBSUwg
VW5kZXJseWluZyBzb3VyY2U6IHN0cmF0ZWd5LnNpemUgcmV0dXJuaW5nIC1JbmZpbml0eSBhc3Nl
cnRfdW5yZWFjaGVkOiBlbnF1ZXVlIGRpZG4ndCB0aHJvdyBSZWFjaGVkIHVucmVhY2hhYmxlIGNv
ZGUKLUZBSUwgVW5kZXJseWluZyBzb3VyY2U6IHN0cmF0ZWd5LnNpemUgcmV0dXJuaW5nICtJbmZp
bml0eSBhc3NlcnRfdW5yZWFjaGVkOiBlbnF1ZXVlIGRpZG4ndCB0aHJvdyBSZWFjaGVkIHVucmVh
Y2hhYmxlIGNvZGUKK0ZBSUwgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBh
biBlbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdyBjYW5jZWwgaXMgbm90IGlt
cGxlbWVudGVkCitGQUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYSBu
b24tZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cgY2FuY2VsIGlzIG5vdCBp
bXBsZW1lbnRlZAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGEg
Y2xvc2VkIHN0cmVhbSBzaG91bGQgdGhyb3cgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxs
aW5nIGVucXVldWUgb24gYW4gZXJyb3JlZCBzdHJlYW0gc2hvdWxkIHRocm93IAogUEFTUyBVbmRl
cmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSB0d2ljZSBvbiBhbiBlbXB0eSBzdHJlYW0gc2hv
dWxkIHRocm93IHRoZSBzZWNvbmQgdGltZSAKIFBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxp
bmcgY2xvc2UgdHdpY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vj
b25kIHRpbWUgCiBGQUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIG9uIGFuIGVt
cHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93IGNhbmNlbCBpcyBub3QgaW1wbGVt
ZW50ZWQKQEAgLTIyLDQgKzE4LDYgQEAgRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBj
bG9zZSBvbiBhIG5vbi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdAogUEFTUyBVbmRl
cmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBhZnRlciBlcnJvciBzaG91bGQgdGhyb3cgCiBQ
QVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIHR3aWNlIHNob3VsZCB0aHJvdyB0
aGUgc2Vjb25kIHRpbWUgCiBQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIGFm
dGVyIGNsb3NlIHNob3VsZCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcg
ZXJyb3IgYW5kIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgZnJvbSBzdGFydCBzaG91bGQg
Y2F1c2UgdGhlIHN0cmVhbSB0byBlcnJvciB3aXRoIHRoZSBmaXJzdCBlcnJvciAKK1BBU1MgVW5k
ZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYW5kIHJldHVybmluZyBhIHJlamVjdGVkIHBy
b21pc2UgZnJvbSBwdWxsIHNob3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRvIGVycm9yIHdpdGggdGhl
IGZpcnN0IGVycm9yIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5j
ZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWluZy1zb3VyY2Vz
Lmh0bWwKaW5kZXggMjNmZmQ4OTFkZDhhODU1OTM3ZWUyMjhmMDc2NjNiNWQwNWJiNWM3Mi4uMzVk
ZWYzOGUwNGYyZDI1ODc1ZTlhNTM1MGRiNGExMjUzM2NjYzM1YiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291
cmNlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0
aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuaHRtbApAQCAtMTQ5LDIzMSArMTQ5LDgwIEBAIHRl
c3Q2LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgIH0pKTsKIH0pOwogCi12YXIgdGVzdDcgPSBh
c3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgc3RyYXRlZ3kgZ2V0dGVyJywg
eyB0aW1lb3V0OiA1MCB9KTsKK3ZhciB0ZXN0NyA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291
cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYW4gZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBu
b3QgdGhyb3cnKTsKIHRlc3Q3LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHN0YXJ0ZWQgPSBm
YWxzZTsKLSAgICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwot
CisgICAgdmFyIGNvbnRyb2xsZXI7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
ICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIHN0YXJ0ZWQgPSB0cnVl
OwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwgZnVuY3Rpb24oKSB7IGMuZW5x
dWV1ZSgnYScpOyB9LCAnZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhlIGVycm9yJyk7Ci0gICAgICAg
IH0sCi0gICAgICAgIGdldCBzdHJhdGVneSgpIHsKLSAgICAgICAgICAgIHRocm93IHRoZUVycm9y
OworICAgICAgICAgICAgY29udHJvbGxlciA9IGM7CiAgICAgICAgIH0KICAgICB9KTsKIAotICAg
IHJzLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaCh0ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkg
ewotICAgICAgICBhc3NlcnRfdHJ1ZShzdGFydGVkKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhl
LCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7Ci0gICAg
ICAgIHRlc3Q3LmRvbmUoKTsKKyAgICBycy5jYW5jZWwoKTsKKyAgICBjb250cm9sbGVyLmVucXVl
dWUoJ2EnKSAvLyBDYWxsaW5nIGVucXVldWUgYWZ0ZXIgY2FuY2VsaW5nIHNob3VsZCBub3QgdGhy
b3cgYW55dGhpbmcuCisKKyAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQudGhlbih0ZXN0Ny5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIHRlc3Q3LmRvbmUoJ2Nsb3NlZCBzaG91bGQgZnVs
ZmlsbCcpOwogICAgIH0pKTsKIH0pOwogCi12YXIgdGVzdDggPSBhc3luY190ZXN0KCdVbmRlcmx5
aW5nIHNvdXJjZTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBnZXR0ZXInLCB7IHRpbWVvdXQ6IDUw
IH0pOwordmFyIHRlc3Q4ID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcg
ZW5xdWV1ZSBvbiBhIG5vbi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdycp
OwogdGVzdDguc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgc3RhcnRlZCA9IGZhbHNlOwotICAg
IHZhciB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7CisgICAgdmFyIGNv
bnRyb2xsZXI7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKICAgICAgICAgc3Rh
cnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIHN0YXJ0ZWQgPSB0cnVlOwotICAgICAgICAg
ICAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwgZnVuY3Rpb24oKSB7IGMuZW5xdWV1ZSgnYScpOyB9
LCAnZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhlIGVycm9yJyk7Ci0gICAgICAgIH0sCi0gICAgICAg
IHN0cmF0ZWd5OiB7Ci0gICAgICAgICAgICBnZXQgc2l6ZSgpIHsKLSAgICAgICAgICAgICAgICB0
aHJvdyB0aGVFcnJvcjsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBzaG91bGRBcHBseUJh
Y2twcmVzc3VyZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgICAgICB9CisgICAgICAgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAgICAgICAgIGMu
ZW5xdWV1ZSgnYicpOworICAgICAgICAgICAgY29udHJvbGxlciA9IGM7CiAgICAgICAgIH0KICAg
ICB9KTsKIAotICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaCh0ZXN0OC5zdGVwX2Z1bmMo
ZnVuY3Rpb24oZSkgewotICAgICAgICBhc3NlcnRfdHJ1ZShzdGFydGVkKTsKLSAgICAgICAgYXNz
ZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVy
cm9yJyk7Ci0gICAgICAgIHRlc3Q4LmRvbmUoKTsKKyAgICBycy5jYW5jZWwoKTsKKyAgICBjb250
cm9sbGVyLmVucXVldWUoJ2MnKSAvLyBDYWxsaW5nIGVucXVldWUgYWZ0ZXIgY2FuY2VsaW5nIHNo
b3VsZCBub3QgdGhyb3cgYW55dGhpbmcuCisKKyAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQudGhl
bih0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIHRlc3Q4LmRvbmUoJ2Nsb3Nl
ZCBzaG91bGQgZnVsZmlsbCcpOwogICAgIH0pKTsKIH0pOwogCi12YXIgdGVzdDkgPSBhc3luY190
ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBtZXRob2QnLCB7
IHRpbWVvdXQ6IDUwIH0pOwordmFyIHRlc3Q5ID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3Vy
Y2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIGNsb3NlZCBzdHJlYW0gc2hvdWxkIHRocm93Jyk7CiB0
ZXN0OS5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciBzdGFydGVkID0gZmFsc2U7Ci0gICAgdmFy
IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKLSAgICB2YXIgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7CiAgICAgICAgIHN0
YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBzdGFydGVkID0gdHJ1ZTsKLSAgICAgICAg
ICAgIGFzc2VydF90aHJvd3ModGhlRXJyb3IsIGZ1bmN0aW9uKCkgeyBjLmVucXVldWUoJ2EnKTsg
fSwgJ2VucXVldWUgc2hvdWxkIHRocm93IHRoZSBlcnJvcicpOwotICAgICAgICB9LAotICAgICAg
ICBzdHJhdGVneTogewotICAgICAgICAgICAgc2l6ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICAgICAgdGhyb3cgdGhlRXJyb3I7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgc2hvdWxk
QXBwbHlCYWNrcHJlc3N1cmU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgYy5jbG9zZSgpOworICAgICAgICAgICAg
YXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBjLmVucXVldWUoJ2En
KSB9LCAnY2FsbCB0byBlbnF1ZXVlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwogICAgICAg
ICB9Ci0gICAgfSk7Ci0KLSAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQuY2F0Y2godGVzdDkuc3Rl
cF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgYXNzZXJ0X3RydWUoc3RhcnRlZCk7Ci0gICAg
ICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRo
IHRoZSBlcnJvcicpOwotICAgICAgICB0ZXN0OS5kb25lKCk7CisgICAgfSkuZ2V0UmVhZGVyKCku
Y2xvc2VkLnRoZW4odGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICB0ZXN0OS5k
b25lKCdjbG9zZWQgc2hvdWxkIGZ1bGZpbGwnKTsKICAgICB9KSk7CiB9KTsKIAotdmFyIHRlc3Qx
MCA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBzdHJhdGVneS5zaG91
bGRBcHBseUJhY2twcmVzc3VyZSBnZXR0ZXInLCB7IHRpbWVvdXQ6IDUwIH0pOwordmFyIHRlc3Qx
MCA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYW4g
ZXJyb3JlZCBzdHJlYW0gc2hvdWxkIHRocm93Jyk7CiB0ZXN0MTAuc3RlcChmdW5jdGlvbigpIHsK
LSAgICB2YXIgc3RhcnRlZCA9IGZhbHNlOwotICAgIHZhciB0aGVFcnJvciA9IG5ldyBFcnJvcign
YSB1bmlxdWUgc3RyaW5nJyk7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2JvbycpOworICAgIG5ldyBSZWFkYWJsZVN0cmVh
bSh7CiAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBzdGFydGVkID0g
dHJ1ZTsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3ModGhlRXJyb3IsIGZ1bmN0aW9uKCkgeyBj
LmVucXVldWUoJ2EnKTsgfSwgJ2VucXVldWUgc2hvdWxkIHRocm93IHRoZSBlcnJvcicpOwotICAg
ICAgICB9LAotICAgICAgICBzdHJhdGVneTogewotICAgICAgICAgICAgc2l6ZTogZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICB9LAotICAgICAgICAg
ICAgZ2V0IHNob3VsZEFwcGx5QmFja3ByZXNzdXJlKCkgewotICAgICAgICAgICAgICAgIHRocm93
IHRoZUVycm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgYy5lcnJvcih0aGVFcnJvcik7
CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKHRoZUVycm9yLCBmdW5jdGlvbigpIHsgYy5lbnF1
ZXVlKCdhJykgfSwgJ2NhbGwgdG8gZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhlIGVycm9yJyk7CiAg
ICAgICAgIH0KLSAgICB9KTsKLQotICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaCh0ZXN0
MTAuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgYXNzZXJ0X3RydWUoc3RhcnRlZCk7
CisgICAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkLmNhdGNoKHRlc3QxMC5zdGVwX2Z1bmMoZnVuY3Rp
b24oZSkgewogICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnY2xvc2VkIHNob3Vs
ZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKICAgICAgICAgdGVzdDEwLmRvbmUoKTsKICAgICB9
KSk7CiB9KTsKIAotdmFyIHRlc3QxMSA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiB0
aHJvd2luZyBzdHJhdGVneS5zaG91bGRBcHBseUJhY2twcmVzc3VyZSBtZXRob2QnLCB7IHRpbWVv
dXQ6IDUwIH0pOwordmFyIHRlc3QxMSA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiBj
YWxsaW5nIGNsb3NlIHR3aWNlIG9uIGFuIGVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNl
Y29uZCB0aW1lJyk7CiB0ZXN0MTEuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgc3RhcnRlZCA9
IGZhbHNlOwotICAgIHZhciB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7
Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0
aW9uKGMpIHsKLSAgICAgICAgICAgIHN0YXJ0ZWQgPSB0cnVlOwotICAgICAgICAgICAgYXNzZXJ0
X3Rocm93cyh0aGVFcnJvciwgZnVuY3Rpb24oKSB7IGMuZW5xdWV1ZSgnYScpOyB9LCAnZW5xdWV1
ZSBzaG91bGQgdGhyb3cgdGhlIGVycm9yJyk7Ci0gICAgICAgIH0sCi0gICAgICAgIHN0cmF0ZWd5
OiB7Ci0gICAgICAgICAgICBzaXplOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gMTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBzaG91bGRBcHBseUJhY2twcmVzc3Vy
ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3cgdGhlRXJyb3I7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZC5j
YXRjaCh0ZXN0MTEuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgYXNzZXJ0X3RydWUo
c3RhcnRlZCk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdjbG9zZWQgc2hv
dWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOwotICAgICAgICB0ZXN0MTEuZG9uZSgpOwotICAg
IH0pKTsKLX0pOwotCi12YXIgdGVzdDEyID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6
IHN0cmF0ZWd5LnNpemUgcmV0dXJuaW5nIE5hTicsIHsgdGltZW91dDogNTAgfSk7Ci10ZXN0MTIu
c3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgdGhlRXJyb3IgPSB1bmRlZmluZWQ7Ci0gICAgdmFy
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsK
LSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgYy5lbnF1ZXVlKCdoaScpOwotICAg
ICAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ2VucXVldWUgZGlkblwndCB0aHJvdycpOwot
ICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKLSAgICAgICAgICAgICAgICB0aGVFcnJvciA9
IGVycm9yOwotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJyb3IoKSwg
ZnVuY3Rpb24oKSB7IHRocm93IGVycm9yOyB9LCAnZW5xdWV1ZSBzaG91bGQgdGhyb3cgYSBSYW5n
ZUVycm9yJyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgIHN0cmF0ZWd5OiB7
Ci0gICAgICAgICAgICBzaXplOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
TmFOOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHNob3VsZEFwcGx5QmFja3ByZXNzdXJl
OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLmNhdGNo
KHRlc3QxMi5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAgICBhc3NlcnRfZXF1YWxzKGUs
IHRoZUVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKLSAgICAg
ICAgdGVzdDEyLmRvbmUoKTsKLSAgICB9KSk7Ci19KTsKLQotdmFyIHRlc3QxMyA9IGFzeW5jX3Rl
c3QoJ1VuZGVybHlpbmcgc291cmNlOiBzdHJhdGVneS5zaXplIHJldHVybmluZyAtSW5maW5pdHkn
LCB7IHRpbWVvdXQ6IDUwIH0pOwotdGVzdDEzLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHRo
ZUVycm9yID0gdW5kZWZpbmVkOwotICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0g
ICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAg
ICAgICAgIGMuZW5xdWV1ZSgnaGknKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVk
KCdlbnF1ZXVlIGRpZG5cJ3QgdGhyb3cnKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7
Ci0gICAgICAgICAgICAgICAgdGhlRXJyb3IgPSBlcnJvcjsKLSAgICAgICAgICAgICAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCksIGZ1bmN0aW9uKCkgeyB0aHJvdyBlcnJvcjsgfSwg
J2VucXVldWUgc2hvdWxkIHRocm93IGEgUmFuZ2VFcnJvcicpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9LAotICAgICAgICBzdHJhdGVneTogewotICAgICAgICAgICAgc2l6ZTogZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC1JbmZpbml0eTsKLSAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICBzaG91bGRBcHBseUJhY2twcmVzc3VyZTogZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9KTsK
LQotICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaCh0ZXN0MTMuc3RlcF9mdW5jKGZ1bmN0
aW9uKGUpIHsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91
bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7Ci0gICAgICAgIHRlc3QxMy5kb25lKCk7Ci0gICAg
fSkpOwotfSk7Ci0KLXZhciB0ZXN0MTQgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTog
c3RyYXRlZ3kuc2l6ZSByZXR1cm5pbmcgK0luZmluaXR5JywgeyB0aW1lb3V0OiA1MCB9KTsKLXRl
c3QxNC5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciB0aGVFcnJvciA9IHVuZGVmaW5lZDsKLSAg
ICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24o
YykgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBjLmVucXVldWUoJ2hpJyk7
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgnZW5xdWV1ZSBkaWRuXCd0IHRocm93
Jyk7Ci0gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikgewotICAgICAgICAgICAgICAgIHRoZUVy
cm9yID0gZXJyb3I7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJv
cigpLCBmdW5jdGlvbigpIHsgdGhyb3cgZXJyb3I7IH0sICdlbnF1ZXVlIHNob3VsZCB0aHJvdyBh
IFJhbmdlRXJyb3InKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgc3RyYXRl
Z3k6IHsKLSAgICAgICAgICAgIHNpemU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHJl
dHVybiArSW5maW5pdHk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgc2hvdWxkQXBwbHlC
YWNrcHJlc3N1cmU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBycy5nZXRSZWFkZXIoKS5j
bG9zZWQuY2F0Y2godGVzdDE0LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAgIGFzc2Vy
dF9lcXVhbHMoZSwgdGhlRXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJv
cicpOwotICAgICAgICB0ZXN0MTQuZG9uZSgpOwotICAgIH0pKTsKLX0pOwotCi12YXIgdGVzdDE1
ID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ugb24g
YW4gZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUnKTsKLXRlc3QxNS5z
dGVwKGZ1bmN0aW9uKCkgewogICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7CiAgICAgICAgIHN0YXJ0
OiBmdW5jdGlvbihjKSB7CiAgICAgICAgICAgICBjLmNsb3NlKCk7CiAgICAgICAgICAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgYy5jbG9zZSwgJ3NlY29uZCBjYWxsIHRvIGNsb3Nl
IHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwogICAgICAgICB9Ci0gICAgfSkuZ2V0UmVhZGVy
KCkuY2xvc2VkLnRoZW4odGVzdDE1LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgdGVzdDE1LmRvbmUo
J2Nsb3NlZCBzaG91bGQgZnVsZmlsbCcpOyB9KSk7CisgICAgfSkuZ2V0UmVhZGVyKCkuY2xvc2Vk
LnRoZW4odGVzdDExLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgdGVzdDExLmRvbmUoJ2Nsb3NlZCBz
aG91bGQgZnVsZmlsbCcpOyB9KSk7CiB9KTsKIAotdmFyIHRlc3QxNiA9IGFzeW5jX3Rlc3QoJ1Vu
ZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGEgbm9uLWVtcHR5IHN0cmVh
bSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lJyk7Ci10ZXN0MTYuc3RlcChmdW5jdGlvbigp
IHsKK3ZhciB0ZXN0MTIgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBj
bG9zZSB0d2ljZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNvbmQg
dGltZScpOwordGVzdDEyLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHN0YXJ0Q2FsbGVkID0g
ZmFsc2U7CiAgICAgdmFyIHJlYWRDYWxsZWQgPSBmYWxzZTsKICAgICB2YXIgcmVhZGVyID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKQEAgLTM4NSwxOSArMjM0LDE5IEBAIHRlc3QxNi5zdGVwKGZ1bmN0
aW9uKCkgewogICAgICAgICB9CiAgICAgfSkuZ2V0UmVhZGVyKCk7CiAKLSAgICByZWFkZXIucmVh
ZCgpLnRoZW4odGVzdDE2LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7CisgICAgcmVhZGVyLnJlYWQo
KS50aGVuKHRlc3QxMi5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgewogICAgICAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdyZWFkKCkgc2hvdWxk
IHJlYWQgdGhlIGVucXVldWVkIGNodW5rJyk7CiAgICAgICAgIHJlYWRDYWxsZWQgPSB0cnVlOwog
ICAgIH0pKTsKLSAgICByZWFkZXIuY2xvc2VkLnRoZW4odGVzdDE2LnN0ZXBfZnVuYyhmdW5jdGlv
bigpIHsKKyAgICByZWFkZXIuY2xvc2VkLnRoZW4odGVzdDEyLnN0ZXBfZnVuYyhmdW5jdGlvbigp
IHsKICAgICAgICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwogICAgICAgICBhc3NlcnRfdHJ1
ZShyZWFkQ2FsbGVkKTsKLSAgICAgICAgdGVzdDE2LmRvbmUoJ2Nsb3NlZCBzaG91bGQgZnVsZmls
bCcpOworICAgICAgICB0ZXN0MTIuZG9uZSgnY2xvc2VkIHNob3VsZCBmdWxmaWxsJyk7CiAgICAg
fSkpOwogfSk7CiAKLXZhciB0ZXN0MTcgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTog
Y2FsbGluZyBjbG9zZSBvbiBhbiBlbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJv
dycpOwotdGVzdDE3LnN0ZXAoZnVuY3Rpb24oKSB7Cit2YXIgdGVzdDEzID0gYXN5bmNfdGVzdCgn
VW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYW4gZW1wdHkgY2FuY2VsZWQgc3Ry
ZWFtIHNob3VsZCBub3QgdGhyb3cnKTsKK3Rlc3QxMy5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZh
ciBjb250cm9sbGVyOwogICAgIHZhciBzdGFydENhbGxlZCA9IGZhbHNlOwogICAgIHZhciBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CkBAIC00MTAsMTQgKzI1OSwxNCBAQCB0ZXN0MTcuc3RlcChm
dW5jdGlvbigpIHsKICAgICBycy5jYW5jZWwoKTsKICAgICBjb250cm9sbGVyLmNsb3NlKCk7IC8v
IENhbGxpbmcgY2xvc2UgYWZ0ZXIgY2FuY2VsaW5nIHNob3VsZCBub3QgdGhyb3cgYW55dGhpbmcu
CiAKLSAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQudGhlbih0ZXN0MTcuc3RlcF9mdW5jKGZ1bmN0
aW9uKCkgeworICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKHRlc3QxMy5zdGVwX2Z1bmMo
ZnVuY3Rpb24oKSB7CiAgICAgICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKLSAgICAgICAg
dGVzdDE3LmRvbmUoJ2Nsb3NlZCBzaG91bGQgZnVsZmlsbCcpOworICAgICAgICB0ZXN0MTMuZG9u
ZSgnY2xvc2VkIHNob3VsZCBmdWxmaWxsJyk7CiAgICAgfSkpOwogfSk7CiAKLXZhciB0ZXN0MTgg
PSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBvbiBhIG5vbi1l
bXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdycpOwotdGVzdDE4LnN0ZXAoZnVu
Y3Rpb24oKSB7Cit2YXIgdGVzdDE0ID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IGNh
bGxpbmcgY2xvc2Ugb24gYSBub24tZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhy
b3cnKTsKK3Rlc3QxNC5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciBjb250cm9sbGVyOwogICAg
IHZhciBzdGFydENhbGxlZCA9IGZhbHNlOwogICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7CkBAIC00MzEsMTQgKzI4MCwxNCBAQCB0ZXN0MTguc3RlcChmdW5jdGlvbigpIHsKICAgICBy
cy5jYW5jZWwoKTsKICAgICBjb250cm9sbGVyLmNsb3NlKCk7IC8vIENhbGxpbmcgY2xvc2UgYWZ0
ZXIgY2FuY2VsaW5nIHNob3VsZCBub3QgdGhyb3cgYW55dGhpbmcuCiAKLSAgICBycy5nZXRSZWFk
ZXIoKS5jbG9zZWQudGhlbih0ZXN0MTguc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgIHJzLmdl
dFJlYWRlcigpLmNsb3NlZC50aGVuKHRlc3QxNC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CiAgICAg
ICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKLSAgICAgICAgdGVzdDE4LmRvbmUoJ2Nsb3Nl
ZCBzaG91bGQgZnVsZmlsbCcpOworICAgICAgICB0ZXN0MTQuZG9uZSgnY2xvc2VkIHNob3VsZCBm
dWxmaWxsJyk7CiAgICAgfSkpOwogfSk7CiAKLXZhciB0ZXN0MTkgPSBhc3luY190ZXN0KCdVbmRl
cmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBhZnRlciBlcnJvciBzaG91bGQgdGhyb3cnKTsK
LXRlc3QxOS5zdGVwKGZ1bmN0aW9uKCkgewordmFyIHRlc3QxNSA9IGFzeW5jX3Rlc3QoJ1VuZGVy
bHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdycpOwor
dGVzdDE1LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdi
b28nKTsKICAgICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxzZTsKICAgICBuZXcgUmVhZGFibGVTdHJl
YW0oewpAQCAtNDQ3LDE1ICsyOTYsMTUgQEAgdGVzdDE5LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAg
ICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgYy5jbG9zZSwgJ2NhbGwgdG8g
Y2xvc2Ugc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7CiAgICAgICAgICAgICBzdGFydENhbGxl
ZCA9IHRydWU7CiAgICAgICAgIH0KLSAgICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQuY2F0Y2godGVz
dDE5LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CisgICAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkLmNh
dGNoKHRlc3QxNS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewogICAgICAgICBhc3NlcnRfdHJ1ZShz
dGFydENhbGxlZCk7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdjbG9zZWQg
c2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpCi0gICAgICAgIHRlc3QxOS5kb25lKCk7Cisg
ICAgICAgIHRlc3QxNS5kb25lKCk7CiAgICAgfSkpOwogfSk7CiAKLXZhciB0ZXN0MjAgPSBhc3lu
Y190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciB0d2ljZSBzaG91bGQgdGhy
b3cgdGhlIHNlY29uZCB0aW1lJyk7Ci10ZXN0MjAuc3RlcChmdW5jdGlvbigpIHsKK3ZhciB0ZXN0
MTYgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciB0d2ljZSBz
aG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lJyk7Cit0ZXN0MTYuc3RlcChmdW5jdGlvbigpIHsK
ICAgICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2JvbycpOwogICAgIHZhciBzdGFydENhbGxl
ZCA9IGZhbHNlOwogICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7CkBAIC00NjQsMTUgKzMxMywxNSBA
QCB0ZXN0MjAuc3RlcChmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigpLCBjLmVycm9yLCAnc2Vjb25kIGNhbGwgdG8gZXJyb3Igc2hvdWxkIHRocm93
IGEgVHlwZUVycm9yJyk7CiAgICAgICAgICAgICBzdGFydENhbGxlZCA9IHRydWU7CiAgICAgICAg
IH0KLSAgICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQuY2F0Y2godGVzdDIwLnN0ZXBfZnVuYyhmdW5j
dGlvbihlKSB7CisgICAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkLmNhdGNoKHRlc3QxNi5zdGVwX2Z1
bmMoZnVuY3Rpb24oZSkgewogICAgICAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7CiAgICAg
ICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRo
IHRoZSBlcnJvcicpOwotICAgICAgICB0ZXN0MjAuZG9uZSgpOworICAgICAgICB0ZXN0MTYuZG9u
ZSgpOwogICAgIH0pKTsKIH0pOwogCi12YXIgdGVzdDIxID0gYXN5bmNfdGVzdCgnVW5kZXJseWlu
ZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYWZ0ZXIgY2xvc2Ugc2hvdWxkIHRocm93Jyk7Ci10ZXN0
MjEuc3RlcChmdW5jdGlvbigpIHsKK3ZhciB0ZXN0MTcgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5n
IHNvdXJjZTogY2FsbGluZyBlcnJvciBhZnRlciBjbG9zZSBzaG91bGQgdGhyb3cnKTsKK3Rlc3Qx
Ny5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciBzdGFydENhbGxlZCA9IGZhbHNlOwogICAgIG5l
dyBSZWFkYWJsZVN0cmVhbSh7CiAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CkBAIC00ODAs
OSArMzI5LDQ5IEBAIHRlc3QyMS5zdGVwKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgYXNzZXJ0
X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGMuZXJyb3IsICdjYWxsIHRvIGVycm9yIHNob3VsZCB0
aHJvdyBhIFR5cGVFcnJvcicpOwogICAgICAgICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOwogICAg
ICAgICB9Ci0gICAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4odGVzdDIxLnN0ZXBfZnVuYyhm
dW5jdGlvbigpIHsKKyAgICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQudGhlbih0ZXN0MTcuc3RlcF9m
dW5jKGZ1bmN0aW9uKCkgewogICAgICAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7Ci0gICAg
ICAgIHRlc3QyMS5kb25lKCdjbG9zZWQgc2hvdWxkIGZ1bGZpbGwnKTsKKyAgICAgICAgdGVzdDE3
LmRvbmUoJ2Nsb3NlZCBzaG91bGQgZnVsZmlsbCcpOworICAgIH0pKTsKK30pOworCit2YXIgdGVz
dDE4ID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYW5kIHJl
dHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgZnJvbSBzdGFydCBzaG91bGQgY2F1c2UgdGhlIHN0
cmVhbSB0byBlcnJvciB3aXRoIHRoZSBmaXJzdCBlcnJvcicpOwordGVzdDE4LnN0ZXAoZnVuY3Rp
b24oKSB7CisgICAgdmFyIHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisgICAgdmFyIGZpcnN0RXJyb3Ig
PSBuZXcgRXJyb3IoJzEnKTsKKyAgICB2YXIgc2Vjb25kRXJyb3IgPSBuZXcgRXJyb3IoJzInKTsK
KyAgICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewor
ICAgICAgICAgICAgYy5lcnJvcihmaXJzdEVycm9yKTsKKworICAgICAgICAgICAgc3RhcnRDYWxs
ZWQgPSB0cnVlOworCisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoc2Vjb25kRXJy
b3IpOworICAgICAgICB9CisgICAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkLmNhdGNoKHRlc3QxOC5z
dGVwX2Z1bmMoZnVuY3Rpb24oZSkgeworICAgICAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7
CisgICAgICAgIGFzc2VydF9lcXVhbHMoZSwgZmlyc3RFcnJvciwgJ3N0cmVhbSBzaG91bGQgZXJy
b3Igd2l0aCB0aGUgZmlyc3QgZXJyb3InKTsKKyAgICAgICAgdGVzdDE4LmRvbmUoKTsKKyAgICB9
KSk7Cit9KTsKKwordmFyIHRlc3QxOSA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiBj
YWxsaW5nIGVycm9yIGFuZCByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGZyb20gcHVsbCBz
aG91bGQgY2F1c2UgdGhlIHN0cmVhbSB0byBlcnJvciB3aXRoIHRoZSBmaXJzdCBlcnJvcicpOwor
dGVzdDE5LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIHN0YXJ0Q2FsbGVkID0gZmFsc2U7Cisg
ICAgdmFyIGZpcnN0RXJyb3IgPSBuZXcgRXJyb3IoJzEnKTsKKyAgICB2YXIgc2Vjb25kRXJyb3Ig
PSBuZXcgRXJyb3IoJzInKTsKKyAgICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBwdWxs
OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAgICBjLmVycm9yKGZpcnN0RXJyb3IpOworCisgICAg
ICAgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNl
LnJlamVjdChzZWNvbmRFcnJvcik7CisgICAgICAgIH0KKyAgICB9KS5nZXRSZWFkZXIoKS5jbG9z
ZWQuY2F0Y2godGVzdDE5LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CisgICAgICAgIGFzc2VydF90
cnVlKHN0YXJ0Q2FsbGVkKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCBmaXJzdEVycm9yLCAn
c3RyZWFtIHNob3VsZCBlcnJvciB3aXRoIHRoZSBmaXJzdCBlcnJvcicpOworICAgICAgICB0ZXN0
MTkuZG9uZSgpOwogICAgIH0pKTsKIH0pOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9icmFuZC1jaGVja3MtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYnJh
bmQtY2hlY2tzLWV4cGVjdGVkLnR4dAppbmRleCBlNWU3ZjNmMzNiOWMyNGJlYjMzYjVjYWJjNzI2
NDE1MjNmNTljN2JhLi5lZjQ5ZjRiMWQxZTA4YjMyYTVlMDQ2ZWY2Yzc2OGVkYTBhYTlmNTQyIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9i
cmFuZC1jaGVja3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy1leHBlY3RlZC50eHQKQEAgLTEsMTggKzEs
MTggQEAKIAogUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3Rv
ciBpbmRpcmVjdGx5IAogUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIg
Y29uc3RydWN0b3IgaW5kaXJlY3RseSAKK0ZBSUwgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBp
cGVUaHJvdWdoIHdvcmtzIGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRz
IENhbiBvbmx5IGNhbGwgUmVhZGFibGVTdHJlYW0ucGlwZVRocm91Z2ggb24gaW5zdGFuY2VzIG9m
IFJlYWRhYmxlU3RyZWFtCiBQQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGVuZm9yY2VzIGEgYnJh
bmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50IAogRkFJTCBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90
b3R5cGUuY2xvc2VkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgdW5kZWZpbmVkIGlzIG5vdCBhbiBv
YmplY3QgKGV2YWx1YXRpbmcgJ09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBn
ZXR0ZXJOYW1lKS5nZXQnKQogRkFJTCBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUuY2Fu
Y2VsIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgQ2FuIG9ubHkgY2FsbCBSZWFkYWJsZVN0cmVhbVJl
YWRlci5jYW5jZWwgb24gaW5zdGFuY2VzIG9mIFJlYWRhYmxlU3RyZWFtUmVhZGVyCiBGQUlMIFJl
YWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5yZWFkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sg
Q2FuIG9ubHkgY2FsbCBSZWFkYWJsZVN0cmVhbVJlYWRlci5yZWFkIG9uIGluc3RhbmNlcyBvZiBS
ZWFkYWJsZVN0cmVhbVJlYWRlcgorRkFJTCBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUu
cmVhZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIENhbiBvbmx5IGNhbGwgUmVhZGFibGVTdHJlYW1S
ZWFkZXIucmVhZCBvbiBpbnN0YW5jZXMgb2YgUmVhZGFibGVTdHJlYW1SZWFkZXIKIFBBU1MgUmVh
ZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLnJlbGVhc2VMb2NrIGVuZm9yY2VzIGEgYnJhbmQg
Y2hlY2sgCiBQQVNTIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBlbmZvcmNlcyBhIGJyYW5kIGNo
ZWNrIG9uIGl0cyBhcmd1bWVudCAKIFBBU1MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIGNhbid0
IGJlIGdpdmVuIGEgZnVsbHktY29uc3RydWN0ZWQgUmVhZGFibGVTdHJlYW0gCiBQQVNTIFJlYWRh
YmxlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUuY2xvc2UgZW5mb3JjZXMgYSBicmFuZCBjaGVj
ayAKIFBBU1MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5lbnF1ZXVlIGVuZm9y
Y2VzIGEgYnJhbmQgY2hlY2sgCiBQQVNTIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5
cGUuZXJyb3IgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdT
dHJhdGVneS5wcm90b3R5cGUuc2hvdWxkQXBwbHlCYWNrcHJlc3N1cmUgZW5mb3JjZXMgYSBicmFu
ZCBjaGVjayAKIFBBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSBz
aG91bGQgd29yayBnZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cyAKLVBB
U1MgQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNob3VsZEFwcGx5QmFja3ByZXNzdXJl
IGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCiBQQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5LnByb3Rv
dHlwZS5zaXplIHNob3VsZCB3b3JrIGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJn
dW1lbnRzIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9icmFuZC1jaGVja3MuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy5odG1sCmluZGV4IDljYmYxMWQyNjY2YmFl
NTg3ZTY5ZTBlNjZlYzAzY2EwZWNjMjI5ODQuLjE5N2I4YTZjY2Q1MGVhOTZiY2YwNWYzNjMzODJk
NTMyNzc4OTUzZDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWlt
cGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy5odG1sCkBAIC0yNSw5ICsyNSwx
MCBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogZnVuY3Rpb24gZmFrZVJlYWRhYmxlU3RyZWFtKCkgewog
ICAgIHJldHVybiB7CiAgICAgICAgIGNhbmNlbDogZnVuY3Rpb24ocmVhc29uKSB7IHJldHVybiBQ
cm9taXNlLnJlc29sdmUoKTsgfSwKKyAgICAgICAgZ2V0UmVhZGVyOiBmdW5jdGlvbigpIHsgcmV0
dXJuIG5ldyBSZWFkYWJsZVN0cmVhbShuZXcgUmVhZGFibGVTdHJlYW0oKSk7IH0sCiAgICAgICAg
IHBpcGVUaHJvdWdoOiBmdW5jdGlvbihvYmosIG9wdGlvbnMpIHsgcmV0dXJuIG9iai5yZWFkYWJs
ZTsgfSwKICAgICAgICAgcGlwZVRvOiBmdW5jdGlvbigpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2
ZSgpOyB9LAotICAgICAgICBnZXRSZWFkZXI6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbmV3IFJlYWRh
YmxlU3RyZWFtKG5ldyBSZWFkYWJsZVN0cmVhbSgpKTsgfQorICAgICAgICB0ZWU6IGZ1bmN0aW9u
KCkgeyByZXR1cm4gW3JlYWxSZWFkYWJsZVN0cmVhbSgpLCByZWFsUmVhZGFibGVTdHJlYW0oKV07
IH0KICAgICB9OwogfQogCkBAIC01NCw5ICs1NSw3IEBAIGZ1bmN0aW9uIGZha2VSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIoKSB7CiAKIGZ1bmN0aW9uIGZha2VCeXRlTGVuZ3RoUXVldWluZ1N0cmF0
ZWd5KCkgewogICAgIHJldHVybiB7Ci0gICAgICAgIHNob3VsZEFwcGx5QmFja3ByZXNzdXJlOiBm
dW5jdGlvbihxdWV1ZVNpemUpIHsKLSAgICAgICAgICAgIHJldHVybiBxdWV1ZVNpemUgPiAxOwot
ICAgICAgICB9LAorICAgICAgICBoaWdoV2F0ZXJNYXJrOiAwLAogICAgICAgICBzaXplOiBmdW5j
dGlvbihjaHVuaykgewogICAgICAgICAgICAgcmV0dXJuIGNodW5rLmJ5dGVMZW5ndGg7CiAgICAg
ICAgIH0KQEAgLTY0LDIyICs2MywyMCBAQCBmdW5jdGlvbiBmYWtlQnl0ZUxlbmd0aFF1ZXVpbmdT
dHJhdGVneSgpIHsKIH0KIAogZnVuY3Rpb24gcmVhbEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3ko
KSB7Ci0gICAgcmV0dXJuIG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHsgImhpZ2hXYXRl
ck1hcmsiOiAxfSk7CisgICAgcmV0dXJuIG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHsg
aGlnaFdhdGVyTWFyazogMSB9KTsKIH0KIAogZnVuY3Rpb24gZmFrZUNvdW50UXVldWluZ1N0cmF0
ZWd5KCkgewogICAgIHJldHVybiB7Ci0gICAgICAgIHNob3VsZEFwcGx5QmFja3ByZXNzdXJlOiBm
dW5jdGlvbihxdWV1ZVNpemUpIHsKLSAgICAgICAgICAgIHJldHVybiBxdWV1ZVNpemUgPiAxOwot
ICAgICAgICB9LAorICAgICAgICBoaWdoV2F0ZXJNYXJrOiAwLAogICAgICAgICBzaXplOiBmdW5j
dGlvbihjaHVuaykgewogICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KLSAgICB9Owor
ICAgIH0KIH0KIAogZnVuY3Rpb24gcmVhbENvdW50UXVldWluZ1N0cmF0ZWd5KCkgewotICAgIHJl
dHVybiBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyAiaGlnaFdhdGVyTWFyayI6IDF9KTsKKyAg
ICByZXR1cm4gbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMSB9KTsK
IH0KIAogZnVuY3Rpb24gZ2V0dGVyUmVqZWN0cyh0ZXN0LCBvYmosIGdldHRlck5hbWUsIHRhcmdl
dCwgZW5kVGVzdCkgewpAQCAtMTE1LDYgKzExMiwyMiBAQCBmdW5jdGlvbiBtZXRob2RUaHJvd3Mo
b2JqLCBtZXRob2ROYW1lLCB0YXJnZXQpIHsKIH0KIAogdGVzdChmdW5jdGlvbigpIHsKKyAgICB2
YXIgcGlwZVRvQXJndW1lbnRzOworICAgIHZhciB0aGlzVmFsdWUgPSB7CisgICAgICAgIHBpcGVU
bzogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwaXBlVG9Bcmd1bWVudHMgPSBhcmd1bWVudHM7
CisgICAgICAgIH0KKyAgICB9OworCisgICAgdmFyIGlucHV0ID0geyByZWFkYWJsZToge30sIHdy
aXRhYmxlOiB7fSB9OworICAgIHZhciBvcHRpb25zID0ge307CisgICAgdmFyIHJlc3VsdCA9IFJl
YWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaC5jYWxsKHRoaXNWYWx1ZSwgaW5wdXQs
IG9wdGlvbnMpOworCisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhwaXBlVG9Bcmd1bWVudHMsIFtp
bnB1dC53cml0YWJsZSwgb3B0aW9uc10sICdjb3JyZWN0IGFyZ3VtZW50cyBzaG91bGQgYmUgcGFz
c2VkIHRvIHRoaXNWYWx1ZS5waXBlVG8nKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgaW5w
dXQucmVhZGFibGUsICdyZXR1cm4gdmFsdWUgc2hvdWxkIGJlIHRoZSBwYXNzZWQgcmVhZGFibGUg
cHJvcGVydHknKTsKK30sICdSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggd29y
a3MgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMnKTsKKwordGVzdChm
dW5jdGlvbigpIHsKICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24o
KSB7IG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihmYWtlUmVhZGFibGVTdHJlYW0oKSk7IH0sICdD
b25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBzaG91bGQgdGhyb3cnKTsKIH0sICdS
ZWFkYWJsZVN0cmVhbVJlYWRlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIG9uIGl0cyBhcmd1bWVu
dCcpOwogCkBAIC0xMzYsNiArMTQ5LDEyIEBAIHRlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAg
bWV0aG9kUmVqZWN0cyh0ZXN0MywgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLCAncmVh
ZCcsIHJlYWxSZWFkYWJsZVN0cmVhbSgpLCB0cnVlKTsKIH0pOwogCit2YXIgdGVzdDQgPSBhc3lu
Y190ZXN0KCdSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVhZCBlbmZvcmNlcyBhIGJy
YW5kIGNoZWNrJyk7Cit0ZXN0NC5zdGVwKGZ1bmN0aW9uKCkgeworICAgIG1ldGhvZFJlamVjdHMo
dGVzdDQsIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZSwgJ3JlYWQnLCBmYWtlUmVhZGFi
bGVTdHJlYW1SZWFkZXIoKSk7CisgICAgbWV0aG9kUmVqZWN0cyh0ZXN0NCwgUmVhZGFibGVTdHJl
YW1SZWFkZXIucHJvdG90eXBlLCAncmVhZCcsIHJlYWxSZWFkYWJsZVN0cmVhbSgpLCB0cnVlKTsK
K30pOworCiB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIG1ldGhvZFRocm93cyhSZWFkYWJsZVN0cmVh
bVJlYWRlci5wcm90b3R5cGUsICdyZWxlYXNlTG9jaycsIGZha2VSZWFkYWJsZVN0cmVhbVJlYWRl
cigpKTsKICAgICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLCAn
cmVsZWFzZUxvY2snLCByZWFsUmVhZGFibGVTdHJlYW0oKSk7CkBAIC0xNjIsMTEgKzE4MSw2IEBA
IHRlc3QoZnVuY3Rpb24oKSB7CiB9LCAnUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlw
ZS5lcnJvciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7CiAKIHRlc3QoZnVuY3Rpb24oKSB7Ci0g
ICAgbWV0aG9kVGhyb3dzKEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLCAnc2hv
dWxkQXBwbHlCYWNrcHJlc3N1cmUnLCBmYWtlQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSgpKTsK
LSAgICBtZXRob2RUaHJvd3MoQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUsICdz
aG91bGRBcHBseUJhY2twcmVzc3VyZScsIHJlYWxDb3VudFF1ZXVpbmdTdHJhdGVneSgpKTsKLX0s
ICdCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaG91bGRBcHBseUJhY2twcmVz
c3VyZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7CiAgICAg
dmFyIHRoaXNWYWx1ZSA9IG51bGw7CiAgICAgdmFyIHJldHVyblZhbHVlID0geyAncmV0dXJuZWQg
ZnJvbSc6ICdieXRlTGVuZ3RoIGdldHRlcicgfTsKICAgICB2YXIgY2h1bmsgPSB7CkBAIC0xNzks
MTEgKzE5Myw2IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiB9LCAnQnl0ZUxlbmd0aFF1ZXVpbmdTdHJh
dGVneS5wcm90b3R5cGUuc2l6ZSBzaG91bGQgd29yayBnZW5lcmljYWxseSBvbiBpdHMgdGhpcyBh
bmQgaXRzIGFyZ3VtZW50cycpOwogCiB0ZXN0KGZ1bmN0aW9uKCkgewotICAgIG1ldGhvZFRocm93
cyhDb3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUsICdzaG91bGRBcHBseUJhY2twcmVzc3Vy
ZScsIGZha2VDb3VudFF1ZXVpbmdTdHJhdGVneSgpKTsKLSAgICBtZXRob2RUaHJvd3MoQ291bnRR
dWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLCAnc2hvdWxkQXBwbHlCYWNrcHJlc3N1cmUnLCByZWFs
Qnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSgpKTsKLX0sICdDb3VudFF1ZXVpbmdTdHJhdGVneS5w
cm90b3R5cGUuc2hvdWxkQXBwbHlCYWNrcHJlc3N1cmUgZW5mb3JjZXMgYSBicmFuZCBjaGVjaycp
OwotCi10ZXN0KGZ1bmN0aW9uKCkgewogICAgIHZhciB0aGlzVmFsdWUgPSBudWxsOwogICAgIHZh
ciBjaHVuayA9IHsKICAgICAgICAgZ2V0IGJ5dGVMZW5ndGgoKSB7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9ieXRlLWxlbmd0aC1xdWV1
aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNl
LWltcGxlbWVudGF0aW9uL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjVkYTJkZjU0MWQ1NDk5YWNjNmIzZTY0ZTU4MDBiOTljMGUwYTIxMWIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRh
dGlvbi9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDUgQEAKKworUEFTUyBDYW4gY29uc3RydWN0IGEgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSB3
aXRoIGEgdmFsaWQgaGlnaCB3YXRlciBtYXJrIAorUEFTUyBDYW4gY29uc3RydWN0IGEgQnl0ZUxl
bmd0aFF1ZXVpbmdTdHJhdGVneSB3aXRoIGFueSB2YWx1ZSBhcyBpdHMgaGlnaCB3YXRlciBtYXJr
IAorUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IGluc3RhbmNlcyBoYXZlIHRoZSBjb3Jy
ZWN0IHByb3BlcnRpZXMgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuaHRtbCBiL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2J5dGUtbGVuZ3RoLXF1
ZXVpbmctc3RyYXRlZ3kuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzA1OTFmYWY0NTJhMTQyMTIwOTJjN2Vk
YmI1MTcyN2ZlMzc3MzRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9y
ZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5odG1s
CkBAIC0wLDAgKzEsMjYgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Jy4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyc+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0nLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzJz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSdyZXNv
dXJjZXMvc3RyZWFtcy11dGlscy5qcyc+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ncmVzb3VyY2Vz
L2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuanMnPjwvc2NyaXB0PgorPHNjcmlwdD4KK3Rl
c3QoZnVuY3Rpb24oKSB7CisgICAgdmFyIHN0cmF0ZWd5ID0gbmV3IEJ5dGVMZW5ndGhRdWV1aW5n
U3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0pOworfSwgJ0NhbiBjb25zdHJ1Y3QgYSBCeXRl
TGVuZ3RoUXVldWluZ1N0cmF0ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsnKTsKKwor
dGVzdChmdW5jdGlvbigpIHsKKyAgICBmb3IgKHZhciBoaWdoV2F0ZXJNYXJrIG9mIFstSW5maW5p
dHksIE5hTiwgJ2ZvbycsIHt9LCBmdW5jdGlvbiAoKSB7fV0pIHsKKyAgICAgICAgdmFyIHN0cmF0
ZWd5ID0gbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrIH0pOwor
ICAgICAgICBhc3NlcnRfdHJ1ZShPYmplY3QuaXMoc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaywgaGln
aFdhdGVyTWFyayksIGhpZ2hXYXRlck1hcmsgKyAnIGdldHMgc2V0IGNvcnJlY3RseScpOworICAg
IH0KK30sICdDYW4gY29uc3RydWN0IGEgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSB3aXRoIGFu
eSB2YWx1ZSBhcyBpdHMgaGlnaCB3YXRlciBtYXJrJyk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7Cisg
ICAgdmFyIHN0cmF0ZWd5ID0gbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0
ZXJNYXJrOiA0IH0pOworCisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMoT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihzdHJhdGVneSwgJ2hpZ2hXYXRlck1hcmsnKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICB7IHZhbHVlOiA0LCB3cml0YWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1
ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2hpZ2hX
YXRlck1hcmsgcHJvcGVydHkgc2hvdWxkIGJlIGEgZGF0YSBwcm9wZXJ0eSB3aXRoIHRoZSB2YWx1
ZSBwYXNzZWQgdGhlIGNvbm5zdHJ1Y3RvcicpOworICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHN0
cmF0ZWd5LnNpemUsICdmdW5jdGlvbicpOworfSwgJ0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kg
aW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgcHJvcGVydGllcycpOworPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3Vu
dC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVm
ZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0
CmluZGV4IGI5YmI3MzUwYmQ4ODdjNzRhMjIxMTlkNTU3MTljODA2ZWJmMTc1M2MuLjJmYWVmNmU2
MzQ0NGQ1ZDI1NmE1YmExOWMwYmZmNDcyZWZmNGNjN2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVu
dGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0CkBAIC0xLDggKzEsOSBA
QAogCiBQQVNTIENhbiBjb25zdHJ1Y3QgYSBDb3VudFF1ZXVpbmdTdHJhdGVneSB3aXRoIGEgdmFs
aWQgaGlnaCB3YXRlciBtYXJrIAotUEFTUyBHaXZlcyBhIFJhbmdlRXJyb3Igd2hlbiB0aGUgbnVt
YmVyIGlzIG5lZ2F0aXZlIAorUEFTUyBDYW4gY29uc3RydWN0IGEgQ291bnRRdWV1aW5nU3RyYXRl
Z3kgd2l0aCBhbnkgdmFsdWUgYXMgaXRzIGhpZ2ggd2F0ZXIgbWFyayAKK1BBU1MgQ291bnRRdWV1
aW5nU3RyYXRlZ3kgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgcHJvcGVydGllcyAKIFBBU1Mg
Q2FuIGNvbnN0cnVjdCBhIHJlYWRhYmxlIHN0cmVhbSB3aXRoIGEgdmFsaWQgQ291bnRRdWV1aW5n
U3RyYXRlZ3kgCi1GQUlMIENvcnJlY3RseSBnb3Zlcm5zIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBS
ZWFkYWJsZVN0cmVhbSdzIGVucXVldWUgZnVuY3Rpb24gKEhXTSA9IDApIGFzc2VydF9lcXVhbHM6
IEFmdGVyIDAgcmVhZHMsIDFzdCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gZmFsc2UgKHF1ZXVlIG5v
dyBjb250YWlucyAxIGNodW5rKSBleHBlY3RlZCAoYm9vbGVhbikgZmFsc2UgYnV0IGdvdCAodW5k
ZWZpbmVkKSB1bmRlZmluZWQKLUZBSUwgQ29ycmVjdGx5IGdvdmVybnMgdGhlIHJldHVybiB2YWx1
ZSBvZiBhIFJlYWRhYmxlU3RyZWFtJ3MgZW5xdWV1ZSBmdW5jdGlvbiAoSFdNID0gMSkgYXNzZXJ0
X2VxdWFsczogQWZ0ZXIgMCByZWFkcywgMXN0IGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlIChx
dWV1ZSBub3cgY29udGFpbnMgMSBjaHVuaykgZXhwZWN0ZWQgKGJvb2xlYW4pIHRydWUgYnV0IGdv
dCAodW5kZWZpbmVkKSB1bmRlZmluZWQKLUZBSUwgQ29ycmVjdGx5IGdvdmVybnMgdGhlIHJldHVy
biB2YWx1ZSBvZiBhIFJlYWRhYmxlU3RyZWFtJ3MgZW5xdWV1ZSBmdW5jdGlvbiAoSFdNID0gNCkg
YXNzZXJ0X2VxdWFsczogQWZ0ZXIgMCByZWFkcywgMXN0IGVucXVldWUgc2hvdWxkIHJldHVybiB0
cnVlIChxdWV1ZSBub3cgY29udGFpbnMgMSBjaHVuaykgZXhwZWN0ZWQgKGJvb2xlYW4pIHRydWUg
YnV0IGdvdCAodW5kZWZpbmVkKSB1bmRlZmluZWQKK0ZBSUwgQ29ycmVjdGx5IGdvdmVybnMgdGhl
IHJldHVybiB2YWx1ZSBvZiBhIFJlYWRhYmxlU3RyZWFtJ3MgZW5xdWV1ZSBmdW5jdGlvbiAoSFdN
ID0gMCkgYXNzZXJ0X2VxdWFsczogMCByZWFkcywgMCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hv
dWxkIGJlIDAgZXhwZWN0ZWQgKG51bWJlcikgMCBidXQgZ290ICh1bmRlZmluZWQpIHVuZGVmaW5l
ZAorRkFJTCBDb3JyZWN0bHkgZ292ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcidzIGRl
c2lyZWRTaXplIHByb3BlcnR5IChIV00gPSAxKSBhc3NlcnRfZXF1YWxzOiAwIHJlYWRzLCAwIGVu
cXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMSBleHBlY3RlZCAobnVtYmVyKSAxIGJ1dCBn
b3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkCitGQUlMIENvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyJ3MgZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDQpIGFzc2Vy
dF9lcXVhbHM6IDAgcmVhZHMsIDAgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSA0IGV4
cGVjdGVkIChudW1iZXIpIDQgYnV0IGdvdCAodW5kZWZpbmVkKSB1bmRlZmluZWQKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vY291bnQt
cXVldWluZy1zdHJhdGVneS5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1w
bGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS5odG1sCmluZGV4IDNiOTY0NWI0Zjk5
MzdlNGFlOTQ1ZDc1ZDQyNzZiYjVhYThiM2RhY2UuLjU1NWNhNTE1ZWRlZDc1ZDY3NzVkMjlmYTdl
OTNiNTU5ZTk1YzFmODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNl
LWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0
ZWd5Lmh0bWwKQEAgLTUsMzEgKzUsNTAgQEAKIDxzY3JpcHQgc3JjPSdyZXNvdXJjZXMvY291bnQt
cXVldWluZy1zdHJhdGVneS5qcyc+PC9zY3JpcHQ+CiA8c2NyaXB0PgogdGVzdChmdW5jdGlvbigp
IHsKLSAgICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyAiaGlnaFdhdGVyTWFyayI6IDR9KTsK
KyAgICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0pOwogfSwg
J0NhbiBjb25zdHJ1Y3QgYSBDb3VudFF1ZXVpbmdTdHJhdGVneSB3aXRoIGEgdmFsaWQgaGlnaCB3
YXRlciBtYXJrJyk7CiAKIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcg
UmFuZ2VFcnJvcigpLCBmdW5jdGlvbigpIHsgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgImhp
Z2hXYXRlck1hcmsiOiAtNCB9KSB9LCAndGhyb3dzIGZvciB7IGhpZ2hXYXRlck1hcms6IC00IH0n
KTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBuZXcg
Q291bnRRdWV1aW5nU3RyYXRlZ3koeyAiaGlnaFdhdGVyTWFyayI6ICctNCcgfSkgfSwgJ3Rocm93
cyBmb3IgeyBoaWdoV2F0ZXJNYXJrOiBcJy00XCcgfScpOwotfSwgJ0dpdmVzIGEgUmFuZ2VFcnJv
ciB3aGVuIHRoZSBudW1iZXIgaXMgbmVnYXRpdmUnKTsKKyAgICBmb3IgKHZhciBoaWdoV2F0ZXJN
YXJrIG9mIFstSW5maW5pdHksIE5hTiwgJ2ZvbycsIHt9LCBmdW5jdGlvbiAoKSB7fV0pIHsKKyAg
ICAgICAgdmFyIHN0cmF0ZWd5ID0gbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVy
TWFyayB9KTsKKyAgICAgICAgYXNzZXJ0X3RydWUoT2JqZWN0LmlzKHN0cmF0ZWd5LmhpZ2hXYXRl
ck1hcmssIGhpZ2hXYXRlck1hcmspLCBoaWdoV2F0ZXJNYXJrICsgJyBnZXRzIHNldCBjb3JyZWN0
bHknKTsKKyAgICB9Cit9LCAnQ2FuIGNvbnN0cnVjdCBhIENvdW50UXVldWluZ1N0cmF0ZWd5IHdp
dGggYW55IHZhbHVlIGFzIGl0cyBoaWdoIHdhdGVyIG1hcmsnKTsKIAogdGVzdChmdW5jdGlvbigp
IHsKLSAgICBuZXcgUmVhZGFibGVTdHJlYW0oeyBzdHJhdGVneTogbmV3IENvdW50UXVldWluZ1N0
cmF0ZWd5KHsgImhpZ2hXYXRlck1hcmsiOiA0IH0pIH0pOworICAgIHZhciBzdHJhdGVneSA9IG5l
dyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSk7CisKKyAgICBhc3Nl
cnRfb2JqZWN0X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHN0cmF0ZWd5
LCAnaGlnaFdhdGVyTWFyaycpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IDQs
IHdyaXRhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAnaGlnaFdhdGVyTWFyayBwcm9wZXJ0eSBzaG91bGQg
YmUgYSBkYXRhIHByb3BlcnR5IHdpdGggdGhlIHZhbHVlIHBhc3NlZCB0aGUgY29ubnN0cnVjdG9y
Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Ygc3RyYXRlZ3kuc2l6ZSwgJ2Z1bmN0aW9uJyk7
Cit9LCAnQ291bnRRdWV1aW5nU3RyYXRlZ3kgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgcHJv
cGVydGllcycpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7
fSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KSk7CiB9LCAn
Q2FuIGNvbnN0cnVjdCBhIHJlYWRhYmxlIHN0cmVhbSB3aXRoIGEgdmFsaWQgQ291bnRRdWV1aW5n
U3RyYXRlZ3knKTsKIAogdmFyIHRlc3QxID0gYXN5bmNfdGVzdCgnQ29ycmVjdGx5IGdvdmVybnMg
dGhlIHJldHVybiB2YWx1ZSBvZiBhIFJlYWRhYmxlU3RyZWFtXCdzIGVucXVldWUgZnVuY3Rpb24g
KEhXTSA9IDApJyk7CiB0ZXN0MS5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciBlbnF1ZXVlOwor
ICAgIHZhciBjb250cm9sbGVyOwogICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0g
ICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7IGVucXVldWUgPSBjLmVucXVldWUuYmluZChjKTsg
fSwKLSAgICAgICAgc3RyYXRlZ3k6IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7ICJoaWdoV2F0
ZXJNYXJrIjogMCB9KQotICAgIH0pOworICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgeworICAg
ICAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICAgIH0KKyAgICB9LAorICAgIG5ldyBDb3Vu
dFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDAgfSkKKyAgICApOwogICAgIHZhciBy
ZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKIAotICAgIGFzc2VydF9lcXVhbHMoZW5xdWV1ZSgnYScp
LCBmYWxzZSwgJ0FmdGVyIDAgcmVhZHMsIDFzdCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gZmFsc2Ug
KHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5rKScpOwotICAgIGFzc2VydF9lcXVhbHMoZW5xdWV1
ZSgnYicpLCBmYWxzZSwgJ0FmdGVyIDAgcmVhZHMsIDJuZCBlbnF1ZXVlIHNob3VsZCByZXR1cm4g
ZmFsc2UgKHF1ZXVlIG5vdyBjb250YWlucyAyIGNodW5rcyknKTsKLSAgICBhc3NlcnRfZXF1YWxz
KGVucXVldWUoJ2MnKSwgZmFsc2UsICdBZnRlciAwIHJlYWRzLCAzcmQgZW5xdWV1ZSBzaG91bGQg
cmV0dXJuIGZhbHNlIChxdWV1ZSBub3cgY29udGFpbnMgMyBjaHVua3MpJyk7Ci0gICAgYXNzZXJ0
X2VxdWFscyhlbnF1ZXVlKCdkJyksIGZhbHNlLCAnQWZ0ZXIgMCByZWFkcywgNHRoIGVucXVldWUg
c2hvdWxkIHJldHVybiBmYWxzZSAocXVldWUgbm93IGNvbnRhaW5zIDQgY2h1bmtzKScpOworICAg
IGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzAgcmVhZHMsIDAgZW5x
dWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7CisgICAgY29udHJvbGxlci5lbnF1ZXVl
KCdhJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzAg
cmVhZHMsIDEgZW5xdWV1ZTogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisgICAgY29udHJv
bGxlci5lbnF1ZXVlKCdiJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRT
aXplLCAtMiwgJzAgcmVhZHMsIDIgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMicp
OworICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOworICAgIGFzc2VydF9lcXVhbHMoY29udHJv
bGxlci5kZXNpcmVkU2l6ZSwgLTMsICcwIHJlYWRzLCAzIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBz
aG91bGQgYmUgLTMnKTsKKyAgICBjb250cm9sbGVyLmVucXVldWUoJ2QnKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC00LCAnMCByZWFkcywgNCBlbnF1ZXVlczog
ZGVzaXJlZFNpemUgc2hvdWxkIGJlIC00Jyk7CiAKICAgICByZWFkZXIucmVhZCgpLnRoZW4odGVz
dDEuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgewogICAgICAgICBhc3NlcnRfb2JqZWN0X2Vx
dWFscyhyZXN1bHQsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJzFzdCByZWFkIGdpdmVz
IGJhY2sgdGhlIDFzdCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDMgY2h1bmtz
KScpOwpAQCAtMzksMzIgKzU4LDQ5IEBAIHRlc3QxLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAg
IHJldHVybiByZWFkZXIucmVhZCgpOwogICAgIH0pKS50aGVuKHRlc3QxLnN0ZXBfZnVuYyhmdW5j
dGlvbihyZXN1bHQpIHsKICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZh
bHVlOiAnYycsIGRvbmU6IGZhbHNlIH0sICczcmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAzcmQgY2h1
bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5rKScpOwotICAgICAgICBhc3Nl
cnRfZXF1YWxzKGVucXVldWUoJ2UnKSwgZmFsc2UsICdBZnRlciAzIHJlYWRzLCA1dGggZW5xdWV1
ZSBzaG91bGQgcmV0dXJuIGZhbHNlIChxdWV1ZSBub3cgY29udGFpbnMgMiBjaHVua3MpJyk7CisK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzMgcmVh
ZHMsIDQgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMScpOworICAgICAgICBjb250
cm9sbGVyLmVucXVldWUoJ2UnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRl
c2lyZWRTaXplLCAtMiwgJzMgcmVhZHMsIDUgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBi
ZSAtMicpOworCiAgICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwogICAgIH0pKS50aGVuKHRl
c3QxLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsKICAgICAgICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZCcsIGRvbmU6IGZhbHNlIH0sICc0dGggcmVhZCBnaXZl
cyBiYWNrIHRoZSA0dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5r
cyknKTsKICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CiAgICAgfSkpLnRoZW4odGVzdDEu
c3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgewogICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFs
cyhyZXN1bHQsIHsgdmFsdWU6ICdlJywgZG9uZTogZmFsc2UgfSwgJzV0aCByZWFkIGdpdmVzIGJh
Y2sgdGhlIDV0aCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDAgY2h1bmtzKScp
OwotICAgICAgICBhc3NlcnRfZXF1YWxzKGVucXVldWUoJ2YnKSwgZmFsc2UsICdBZnRlciA1IHJl
YWRzLCA2dGggZW5xdWV1ZSBzaG91bGQgcmV0dXJuIGZhbHNlIChxdWV1ZSBub3cgY29udGFpbnMg
MSBjaHVuayknKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhlbnF1ZXVlKCdnJyksIGZhbHNlLCAn
QWZ0ZXIgNSByZWFkcywgN3RoIGVucXVldWUgc2hvdWxkIHJldHVybiBmYWxzZSAocXVldWUgbm93
IGNvbnRhaW5zIDIgY2h1bmtzKScpOworCisgICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxl
ci5kZXNpcmVkU2l6ZSwgMCwgJzUgcmVhZHMsIDUgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3Vs
ZCBiZSAwJyk7CisgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZicpOworICAgICAgICBhc3Nl
cnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnNSByZWFkcywgNiBlbnF1ZXVl
czogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnZycpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0y
LCAnNSByZWFkcywgNyBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7CisKICAg
ICAgICAgdGVzdDEuZG9uZSgpOwogICAgIH0pKS5jYXRjaCh0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rp
b24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9ICkpOwogfSk7CiAKLXZhciB0ZXN0MiA9IGFz
eW5jX3Rlc3QoJ0NvcnJlY3RseSBnb3Zlcm5zIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBSZWFkYWJs
ZVN0cmVhbVwncyBlbnF1ZXVlIGZ1bmN0aW9uIChIV00gPSAxKScpOwordmFyIHRlc3QyID0gYXN5
bmNfdGVzdCgnQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJcJ3Mg
ZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDEpJyk7CiB0ZXN0Mi5zdGVwKGZ1bmN0aW9uKCkg
ewotICAgIHZhciBlbnF1ZXVlOworICAgIHZhciBjb250cm9sbGVyOwogICAgIHZhciBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7IGVucXVldWUg
PSBjLmVucXVldWUuYmluZChjKTsgfSwKLSAgICAgICAgc3RyYXRlZ3k6IG5ldyBDb3VudFF1ZXVp
bmdTdHJhdGVneSh7ICJoaWdoV2F0ZXJNYXJrIjogMSB9KQotICAgIH0pOworICAgICAgICBzdGFy
dDogZnVuY3Rpb24oYykgeworICAgICAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICAgIH0s
CisgICAgfSwKKyAgICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAx
IH0pCisgICAgKTsKICAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CiAKLSAgICBhc3Nl
cnRfZXF1YWxzKGVucXVldWUoJ2EnKSwgdHJ1ZSwgJ0FmdGVyIDAgcmVhZHMsIDFzdCBlbnF1ZXVl
IHNob3VsZCByZXR1cm4gdHJ1ZSAocXVldWUgbm93IGNvbnRhaW5zIDEgY2h1bmspJyk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhlbnF1ZXVlKCdiJyksIGZhbHNlLCAnQWZ0ZXIgMCByZWFkcywgMm5kIGVu
cXVldWUgc2hvdWxkIHJldHVybiBmYWxzZSAocXVldWUgbm93IGNvbnRhaW5zIDIgY2h1bmtzKScp
OwotICAgIGFzc2VydF9lcXVhbHMoZW5xdWV1ZSgnYycpLCBmYWxzZSwgJ0FmdGVyIDAgcmVhZHMs
IDNyZCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gZmFsc2UgKHF1ZXVlIG5vdyBjb250YWlucyAzIGNo
dW5rcyknKTsKLSAgICBhc3NlcnRfZXF1YWxzKGVucXVldWUoJ2QnKSwgZmFsc2UsICdBZnRlciAw
IHJlYWRzLCA0dGggZW5xdWV1ZSBzaG91bGQgcmV0dXJuIGZhbHNlIChxdWV1ZSBub3cgY29udGFp
bnMgNCBjaHVua3MpJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXpl
LCAxLCAnMCByZWFkcywgMCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEnKTsKKyAg
ICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIu
ZGVzaXJlZFNpemUsIDAsICcwIHJlYWRzLCAxIGVucXVldWU6IGRlc2lyZWRTaXplIHNob3VsZCBi
ZSAwJyk7CisgICAgY29udHJvbGxlci5lbnF1ZXVlKCdiJyk7CisgICAgYXNzZXJ0X2VxdWFscyhj
b250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzAgcmVhZHMsIDIgZW5xdWV1ZXM6IGRlc2lyZWRT
aXplIHNob3VsZCBiZSAtMScpOworICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOworICAgIGFz
c2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTIsICcwIHJlYWRzLCAzIGVucXVl
dWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTInKTsKKyAgICBjb250cm9sbGVyLmVucXVldWUo
J2QnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0zLCAnMCBy
ZWFkcywgNCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0zJyk7CiAKICAgICByZWFk
ZXIucmVhZCgpLnRoZW4odGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgewogICAgICAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2Ug
fSwgJzFzdCByZWFkIGdpdmVzIGJhY2sgdGhlIDFzdCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93
IGNvbnRhaW5zIDMgY2h1bmtzKScpOwpAQCAtNzQsNDEgKzExMCw2NSBAQCB0ZXN0Mi5zdGVwKGZ1
bmN0aW9uKCkgewogICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKICAgICB9KSkudGhlbih0
ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAgICAgIGFzc2VydF9vYmplY3Rf
ZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LCAnM3JkIHJlYWQgZ2l2
ZXMgYmFjayB0aGUgM3JkIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMSBjaHVu
ayknKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhlbnF1ZXVlKCdlJyksIGZhbHNlLCAnQWZ0ZXIg
MyByZWFkcywgNXRoIGVucXVldWUgc2hvdWxkIHJldHVybiBmYWxzZSAocXVldWUgbm93IGNvbnRh
aW5zIDIgY2h1bmtzKScpOworCisgICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNp
cmVkU2l6ZSwgMCwgJzMgcmVhZHMsIDQgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAw
Jyk7CisgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZScpOworICAgICAgICBhc3NlcnRfZXF1
YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMyByZWFkcywgNSBlbnF1ZXVlczogZGVz
aXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisKICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7
CiAgICAgfSkpLnRoZW4odGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgewogICAgICAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdkJywgZG9uZTogZmFsc2Ug
fSwgJzR0aCByZWFkIGdpdmVzIGJhY2sgdGhlIDR0aCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93
IGNvbnRhaW5zIDEgY2h1bmtzKScpOwogICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKICAg
ICB9KSkudGhlbih0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAgICAgIGFz
c2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2UnLCBkb25lOiBmYWxzZSB9LCAn
NXRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNXRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29u
dGFpbnMgMCBjaHVua3MpJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoZW5xdWV1ZSgnZicpLCB0
cnVlLCAnQWZ0ZXIgNSByZWFkcywgNnRoIGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlIChxdWV1
ZSBub3cgY29udGFpbnMgMSBjaHVuayknKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhlbnF1ZXVl
KCdnJyksIGZhbHNlLCAnQWZ0ZXIgNSByZWFkcywgN3RoIGVucXVldWUgc2hvdWxkIHJldHVybiBm
YWxzZSAocXVldWUgbm93IGNvbnRhaW5zIDIgY2h1bmtzKScpOworCisgICAgICAgIGFzc2VydF9l
cXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJzUgcmVhZHMsIDUgZW5xdWV1ZXM6IGRl
c2lyZWRTaXplIHNob3VsZCBiZSAxJyk7CisgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZicp
OworICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICc1IHJl
YWRzLCA2IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOworICAgICAgICBjb250
cm9sbGVyLmVucXVldWUoJ2cnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRl
c2lyZWRTaXplLCAtMSwgJzUgcmVhZHMsIDcgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBi
ZSAtMScpOworCiAgICAgICAgIHRlc3QyLmRvbmUoKTsKICAgICB9KSkuY2F0Y2godGVzdDIuc3Rl
cF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSApKTsKIH0pOwogCi12
YXIgdGVzdDMgPSBhc3luY190ZXN0KCdDb3JyZWN0bHkgZ292ZXJucyB0aGUgcmV0dXJuIHZhbHVl
IG9mIGEgUmVhZGFibGVTdHJlYW1cJ3MgZW5xdWV1ZSBmdW5jdGlvbiAoSFdNID0gNCknKTsKK3Zh
ciB0ZXN0MyA9IGFzeW5jX3Rlc3QoJ0NvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyXCdzIGRlc2lyZWRTaXplIHByb3BlcnR5IChIV00gPSA0KScpOwogdGVzdDMuc3Rl
cChmdW5jdGlvbigpIHsKLSAgICB2YXIgZW5xdWV1ZTsKKyAgICB2YXIgY29udHJvbGxlcjsKICAg
ICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24o
YykgeyBlbnF1ZXVlID0gYy5lbnF1ZXVlLmJpbmQoYyk7IH0sCi0gICAgICAgIHN0cmF0ZWd5OiBu
ZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyAiaGlnaFdhdGVyTWFyayI6IDQgfSkKLSAgICB9KTsK
KyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBj
OworICAgICAgICB9CisgICAgfSwKKyAgICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdo
V2F0ZXJNYXJrOiA0IH0pCisgICAgKTsKICAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7
CiAKLSAgICBhc3NlcnRfZXF1YWxzKGVucXVldWUoJ2EnKSwgdHJ1ZSwgJ0FmdGVyIDAgcmVhZHMs
IDFzdCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZSAocXVldWUgbm93IGNvbnRhaW5zIDEgY2h1
bmspJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhlbnF1ZXVlKCdiJyksIHRydWUsICdBZnRlciAwIHJl
YWRzLCAybmQgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUgKHF1ZXVlIG5vdyBjb250YWlucyAy
IGNodW5rcyknKTsKLSAgICBhc3NlcnRfZXF1YWxzKGVucXVldWUoJ2MnKSwgdHJ1ZSwgJ0FmdGVy
IDAgcmVhZHMsIDNyZCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZSAocXVldWUgbm93IGNvbnRh
aW5zIDMgY2h1bmtzKScpOwotICAgIGFzc2VydF9lcXVhbHMoZW5xdWV1ZSgnZCcpLCB0cnVlLCAn
QWZ0ZXIgMCByZWFkcywgNHRoIGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlIChxdWV1ZSBub3cg
Y29udGFpbnMgNCBjaHVua3MpJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhlbnF1ZXVlKCdlJyksIGZh
bHNlLCAnQWZ0ZXIgMCByZWFkcywgNXRoIGVucXVldWUgc2hvdWxkIHJldHVybiBmYWxzZSAocXVl
dWUgbm93IGNvbnRhaW5zIDUgY2h1bmtzKScpOwotICAgIGFzc2VydF9lcXVhbHMoZW5xdWV1ZSgn
ZicpLCBmYWxzZSwgJ0FmdGVyIDAgcmVhZHMsIDZ0aCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gZmFs
c2UgKHF1ZXVlIG5vdyBjb250YWlucyA2IGNodW5rcyknKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNv
bnRyb2xsZXIuZGVzaXJlZFNpemUsIDQsICcwIHJlYWRzLCAwIGVucXVldWVzOiBkZXNpcmVkU2l6
ZSBzaG91bGQgYmUgNCcpOworICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICAgIGFzc2Vy
dF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMywgJzAgcmVhZHMsIDEgZW5xdWV1ZTog
ZGVzaXJlZFNpemUgc2hvdWxkIGJlIDMnKTsKKyAgICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsK
KyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDIsICcwIHJlYWRzLCAy
IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMicpOworICAgIGNvbnRyb2xsZXIuZW5x
dWV1ZSgnYycpOworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwg
JzAgcmVhZHMsIDMgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAxJyk7CisgICAgY29u
dHJvbGxlci5lbnF1ZXVlKCdkJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2ly
ZWRTaXplLCAwLCAnMCByZWFkcywgNCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAn
KTsKKyAgICBjb250cm9sbGVyLmVucXVldWUoJ2UnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRy
b2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMCByZWFkcywgNSBlbnF1ZXVlczogZGVzaXJlZFNpemUg
c2hvdWxkIGJlIC0xJyk7CisgICAgY29udHJvbGxlci5lbnF1ZXVlKCdmJyk7CisgICAgYXNzZXJ0
X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMiwgJzAgcmVhZHMsIDYgZW5xdWV1ZXM6
IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMicpOworCiAKICAgICByZWFkZXIucmVhZCgpLnRoZW4o
dGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgewogICAgICAgICBhc3NlcnRfb2JqZWN0
X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJzFzdCByZWFkIGdp
dmVzIGJhY2sgdGhlIDFzdCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDUgY2h1
bmtzKScpOwogICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKICAgICB9KSkudGhlbih0ZXN0
My5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1
YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LCAnMm5kIHJlYWQgZ2l2ZXMg
YmFjayB0aGUgMm5kIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgNCBjaHVua3Mp
Jyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoZW5xdWV1ZSgnZycpLCBmYWxzZSwgJ0FmdGVyIDIg
cmVhZHMsIDd0aCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gZmFsc2UgKHF1ZXVlIG5vdyBjb250YWlu
cyA1IGNodW5rcyknKTsKKworICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJl
ZFNpemUsIDAsICcyIHJlYWRzLCA2IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcp
OworICAgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2cnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFs
cyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzIgcmVhZHMsIDcgZW5xdWV1ZXM6IGRlc2ly
ZWRTaXplIHNob3VsZCBiZSAtMScpOworCiAgICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwog
ICAgIH0pKS50aGVuKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsKICAgICAgICAg
YXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYycsIGRvbmU6IGZhbHNlIH0s
ICczcmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAzcmQgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBj
b250YWlucyA0IGNodW5rcyknKTsKQEAgLTEyMCwxMiArMTgwLDE5IEBAIHRlc3QzLnN0ZXAoZnVu
Y3Rpb24oKSB7CiAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTog
J2UnLCBkb25lOiBmYWxzZSB9LCAnNXRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNXRoIGNodW5rIGVu
cXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMiBjaHVua3MpJyk7CiAgICAgICAgIHJldHVybiBy
ZWFkZXIucmVhZCgpOwogICAgIH0pKS50aGVuKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1
bHQpIHsKLSAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZics
IGRvbmU6IGZhbHNlIH0sICc2dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA2dGggY2h1bmsgZW5xdWV1
ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5rKScpOwotICAgICAgICBhc3NlcnRfZXF1YWxz
KGVucXVldWUoJ2gnKSwgdHJ1ZSwgJ0FmdGVyIDYgcmVhZHMsIDh0aCBlbnF1ZXVlIHNob3VsZCBy
ZXR1cm4gdHJ1ZSAocXVldWUgbm93IGNvbnRhaW5zIDIgY2h1bmtzKScpOwotICAgICAgICBhc3Nl
cnRfZXF1YWxzKGVucXVldWUoJ2knKSwgdHJ1ZSwgJ0FmdGVyIDYgcmVhZHMsIDl0aCBlbnF1ZXVl
IHNob3VsZCByZXR1cm4gdHJ1ZSAocXVldWUgbm93IGNvbnRhaW5zIDMgY2h1bmtzKScpOwotICAg
ICAgICBhc3NlcnRfZXF1YWxzKGVucXVldWUoJ2onKSwgdHJ1ZSwgJ0FmdGVyIDYgcmVhZHMsIDEw
dGggZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUgKHF1ZXVlIG5vdyBjb250YWlucyA0IGNodW5r
cyknKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhlbnF1ZXVlKCdrJyksIGZhbHNlLCAnQWZ0ZXIg
NiByZWFkcywgMTF0aCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gZmFsc2UgKHF1ZXVlIG5vdyBjb250
YWlucyA1IGNodW5rcyknKTsKKyAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7
IHZhbHVlOiAnZicsIGRvbmU6IGZhbHNlIH0sICc2dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA2dGgg
Y2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAwIGNodW5rcyknKTsKKworICAgICAg
ICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDMsICc2IHJlYWRzLCA3IGVu
cXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMycpOworICAgICAgICBjb250cm9sbGVyLmVu
cXVldWUoJ2gnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXpl
LCAyLCAnNiByZWFkcywgOCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDInKTsKKyAg
ICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdpJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY29u
dHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJzYgcmVhZHMsIDkgZW5xdWV1ZXM6IGRlc2lyZWRTaXpl
IHNob3VsZCBiZSAxJyk7CisgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnaicpOworICAgICAg
ICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICc2IHJlYWRzLCAxMCBl
bnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKKyAgICAgICAgY29udHJvbGxlci5l
bnF1ZXVlKCdrJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6
ZSwgLTEsICc2IHJlYWRzLCAxMSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7
CisKICAgICAgICAgdGVzdDMuZG9uZSgpOwotICAgIH0pKS5jYXRjaCh0ZXN0My5zdGVwX2Z1bmMo
ZnVuY3Rpb24oZSkgeyBhc3NlcnRfcmVhY2hlZChlKTsgfSApKTsKKyAgICB9KSkuY2F0Y2godGVz
dDMuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSApKTsKIH0p
OwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tY2FuY2VsLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1j
YW5jZWwtZXhwZWN0ZWQudHh0CmluZGV4IDliNzU1NDI4NThkNTU1M2JiZTM1M2JkYTUyOGYwNDRh
MGUwMmNjNTMuLjc1MGE5ZGU4MjQ0NjRlOTdlNDJkNTA4Y2JmZmQ1YjY0ZWFhY2Q5MmUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRh
YmxlLXN0cmVhbS1jYW5jZWwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1jYW5jZWwtZXhwZWN0ZWQu
dHh0CkBAIC0yLDExICsyLDExIEBACiBGQUlMIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjog
aW50ZWdyYXRpb24gdGVzdCBvbiBhbiBpbmZpbml0ZSBzdHJlYW0gZGVyaXZlZCBmcm9tIGEgcmFu
ZG9tIHB1c2ggc291cmNlIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgUmVhZGFibGVT
dHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWwocmVhc29uKSBzaG91bGQgcGFzcyB0aHJvdWdoIHRo
ZSBnaXZlbiByZWFzb24gdG8gdGhlIHVuZGVybHlpbmcgc291cmNlIGNhbmNlbCBpcyBub3QgaW1w
bGVtZW50ZWQKIEZBSUwgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWwoKSBvbiBh
IGxvY2tlZCBzdHJlYW0gc2hvdWxkIGZhaWwgYW5kIG5vdCBjYWxsIHRoZSB1bmRlcmx5aW5nIHNv
dXJjZSBjYW5jZWwgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAorRkFJTCBSZWFkYWJsZVN0cmVh
bSBjYW5jZWxsYXRpb246IHNob3VsZCBmdWxmaWxsIHByb21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJh
Y2sgd2VudCBmaW5lIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgUmVhZGFibGVTdHJl
YW0gY2FuY2VsbGF0aW9uOiByZXR1cm5pbmcgYSB2YWx1ZSBmcm9tIHRoZSB1bmRlcmx5aW5nIHNv
dXJjZSdzIGNhbmNlbCBzaG91bGQgbm90IGFmZmVjdCB0aGUgZnVsZmlsbG1lbnQgdmFsdWUgb2Yg
dGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBjYW5jZWwgaXMgbm90
IGltcGxlbWVudGVkCi1GQUlMIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVu
ZGVybHlpbmcgc291cmNlJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHBy
b21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBzaG91bGQgZnVsZmlsbCB3aGVu
IHRoYXQgb25lIGRvZXMgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAorRkFJTCBSZWFkYWJsZVN0
cmVhbSBjYW5jZWxsYXRpb246IHNob3VsZCByZWplY3QgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxs
YmFjayByYWlzZXMgYW4gZXhjZXB0aW9uIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKK0ZBSUwg
UmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2UncyBj
YW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0
aGUgc3RyZWFtJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBvbmUgZG9lcyAoMSkg
Y2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAorRkFJTCBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRp
b246IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHBy
b21pc2UsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgc2hvdWxk
IGZ1bGZpbGwgd2hlbiB0aGF0IG9uZSBkb2VzICgyKSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVk
CiBGQUlMIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291
cmNlJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJu
ZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBzaG91bGQgcmVqZWN0IHdoZW4gdGhhdCBvbmUgZG9l
cyBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxh
dGlvbjogY2FuY2VsbGluZyBiZWZvcmUgc3RhcnQgZmluaXNoZXMgc2hvdWxkIHByZXZlbnQgcHVs
bCgpIGZyb20gYmVpbmcgY2FsbGVkIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwgUmVh
ZGFibGVTdHJlYW0gY2FuY2VsIHNob3VsZCBmdWxmaWxsIHByb21pc2Ugd2hlbiBjYW5jZWwgY2Fs
bGJhY2sgd2VudCBmaW5lIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwgUmVhZGFibGVT
dHJlYW0gY2FuY2VsIHNob3VsZCByZWplY3QgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayBy
YWlzZXMgYW4gZXhjZXB0aW9uIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwgUmVhZGFi
bGVTdHJlYW0gY2FuY2VsIHNob3VsZCBmdWxmaWxsIHByb21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJh
Y2sgd2VudCBmaW5lIGFmdGVyIHJldHVybmluZyBhIHByb21pc2UgY2FuY2VsIGlzIG5vdCBpbXBs
ZW1lbnRlZAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tY2FuY2VsLmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tY2FuY2VsLmh0bWwK
aW5kZXggYjA2YzM4NjJlMTVmOGU4OWU3OGQ4ZjFhYWJlMDcxNTUzODRkYmMzOC4uZGFhNDVmZDRl
N2NhNWFmMDdjZDUwN2I2Mzk5NzA1ZmE2MGU0NDlmNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWNhbmNlbC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3Jl
YWRhYmxlLXN0cmVhbS1jYW5jZWwuaHRtbApAQCAtMjcsNyArMjcsNyBAQCB0ZXN0MS5zdGVwKGZ1
bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdDEuc3RlcF9mdW5jKGZ1
bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBjYW5jZWxsYXRpb25GaW5pc2hlZCA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAgICAgICB9KSwg
c3RhbmRhcmRUaW1lb3V0KTsKKyAgICAgICAgICAgICAgICB9KSwgNTAwKTsKICAgICAgICAgICAg
IH0pKTsKICAgICAgICAgfQogICAgIH0pOwpAQCAtMzcsNyArMzcsNyBAQCB0ZXN0MS5zdGVwKGZ1
bmN0aW9uKCkgewogICAgICAgICBhc3NlcnRfZXF1YWxzKGNhbmNlbGxhdGlvbkZpbmlzaGVkLCBm
YWxzZSwgJ2l0IGRpZCBub3Qgd2FpdCBmb3IgdGhlIGNhbmNlbGxhdGlvbiBwcm9jZXNzIHRvIGZp
bmlzaCBiZWZvcmUgY2xvc2luZycpOwogICAgICAgICBhc3NlcnRfZ3JlYXRlcl90aGFuKGNodW5r
cy5sZW5ndGgsIDAsICdhdCBsZWFzdCBvbmUgY2h1bmsgc2hvdWxkIGJlIHJlYWQnKTsKICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaHVua3MubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMoY2h1bmtzW2ldLmxlbmd0aCwgMTI4LCAiY2h1bmsgc2hvdWxkIGhhdmUg
MTI4IGJ5dGVzIik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNodW5rc1tpXS5sZW5ndGgs
IDEyOCwgJ2NodW5rICcgKyBpICsgJyBzaG91bGQgaGF2ZSAxMjggYnl0ZXMnKTsKICAgICAgICAg
fQogICAgIH0pLCB0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFjaGVk
KGUpOyB9KSk7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgdGVzdDEuc3RlcChmdW5jdGlvbigpIHsKICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMoY2FuY2VsbGF0aW9uRmluaXNoZWQsIHRydWUsICdpdCBy
ZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGlzIGZ1bGZpbGxlZCB3aGVuIHRoZSBjYW5jZWxsYXRpb24g
ZmluaXNoZXMnKTsKICAgICAgICAgICAgIHRlc3QxLmRvbmUoKTsKICAgICAgICAgfSkpLmNhdGNo
KHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0pKTsK
LSAgICB9KSwgc3RhbmRhcmRUaW1lb3V0ICsgNTApOworICAgIH0pLCAxMDAwKTsKIH0pOwogCiB0
ZXN0KGZ1bmN0aW9uKCkgewpAQCAtOTEsMzMgKzkxLDEwMyBAQCB0ZXN0Mi5zdGVwKGZ1bmN0aW9u
KCkgewogICAgIH0pKTsKIH0pOwogCi12YXIgdGVzdDMgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0
cmVhbSBjYW5jZWxsYXRpb246IHJldHVybmluZyBhIHZhbHVlIGZyb20gdGhlIHVuZGVybHlpbmcg
c291cmNlXCdzIGNhbmNlbCBzaG91bGQgbm90IGFmZmVjdCB0aGUgZnVsZmlsbG1lbnQgdmFsdWUg
b2YgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbVwncyBjYW5jZWwnKTsKLXRlc3Qz
LnN0ZXAoZnVuY3Rpb24oKSB7Cit2YXIgdGVzdDMgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVh
bSBjYW5jZWxsYXRpb246IHNob3VsZCBmdWxmaWxsIHByb21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJh
Y2sgd2VudCBmaW5lJyk7Cit0ZXN0My5zdGVwKGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgY2FuY2Vs
UmVjZWl2ZWQgPSBmYWxzZTsKKyAgICB2YXIgY2FuY2VsUmVhc29uID0gbmV3IEVycm9yKCdJIGFt
IHRpcmVkIG9mIHRoaXMgc3RyZWFtLCBJIHByZWZlciB0byBjYW5jZWwgaXQnKTsKKyAgICB2YXIg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKHJlYXNv
bikgeworICAgICAgICAgICAgY2FuY2VsUmVjZWl2ZWQgPSB0cnVlOworICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhyZWFzb24sIGNhbmNlbFJlYXNvbiwgJ2NhbmNlbGxhdGlvbiByZWFzb24gZ2l2
ZW4gdG8gdGhlIHVuZGVybHlpbmcgc291cmNlIHNob3VsZCBiZSBlcXVhbCB0byB0aGUgb25lIHBh
c3NlZCcpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBycy5jYW5jZWwoY2FuY2VsUmVhc29u
KS50aGVuKAorICAgICAgICB0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBhc3NlcnRfdHJ1ZShjYW5jZWxSZWNlaXZlZCk7CisgICAgICAgICAgICB0ZXN0My5kb25lKCdz
dHJlYW0gd2FzIHN1Y2Nlc3NmdWxseSBjYW5jZWxsZWQnKTsKKyAgICAgICAgfSksCisgICAgICAg
IHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CisgICAgICAgICAgICBhc3NlcnRfdW5yZWFj
aGVkKCJyZWNlaXZlZCBlcnJvciAiICsgZSkKKyAgICAgICAgfSkpOworfSk7CisKK3ZhciB0ZXN0
NCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogcmV0dXJuaW5nIGEg
dmFsdWUgZnJvbSB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2VsIHNob3VsZCBub3QgYWZm
ZWN0IHRoZSBmdWxmaWxsbWVudCB2YWx1ZSBvZiB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUg
c3RyZWFtXCdzIGNhbmNlbCcpOwordGVzdDQuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oewogICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKHJlYXNvbikg
ewogICAgICAgICAgICAgcmV0dXJuICdIZWxsbyc7CiAgICAgICAgIH0KICAgICB9KTsKIAotICAg
IHJzLmNhbmNlbCgpLnRoZW4odGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKHYpIHsKKyAgICBycy5j
YW5jZWwoKS50aGVuKHRlc3Q0LnN0ZXBfZnVuYyhmdW5jdGlvbih2KSB7CiAgICAgICAgIGFzc2Vy
dF9lcXVhbHModiwgdW5kZWZpbmVkLCAnY2FuY2VsKCkgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSBm
dWxmaWxsZWQgd2l0aCB1bmRlZmluZWQnKTsKLSAgICAgICAgdGVzdDMuZG9uZSgpOwotICAgIH0p
LCB0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIHRlc3Q0LmRvbmUoKTsKKyAg
ICB9KSwgdGVzdDQuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewogICAgICAgICBhc3NlcnRfdW5yZWFj
aGVkKCdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIG5vdCBiZSByZWplY3RlZCcpOwogICAg
IH0pKTsKIH0pOwogCi12YXIgdGVzdDQgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBjYW5j
ZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBjYW5jZWwgbWV0aG9kIHJldHVy
bnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtXCdzIGNhbmNl
bCBzaG91bGQgZnVsZmlsbCB3aGVuIHRoYXQgb25lIGRvZXMnKTsKLXRlc3Q0LnN0ZXAoZnVuY3Rp
b24oKSB7Cit2YXIgdGVzdDUgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRp
b246IHNob3VsZCByZWplY3QgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayByYWlzZXMgYW4g
ZXhjZXB0aW9uJyk7Cit0ZXN0NS5zdGVwKGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgdGhyb3duRXJy
b3IgPSBuZXcgRXJyb3IoJ3Rlc3QnKTsKKyAgICB2YXIgY2FuY2VsQ2FsbGVkID0gZmFsc2U7CisK
KyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBjYW5jZWw6IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgY2FuY2VsQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHRo
cm93IHRocm93bkVycm9yOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBycy5jYW5jZWwoJ3Rl
c3QnKS50aGVuKAorICAgICAgICB0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91
bnJlYWNoZWQoJ2NhbmNlbCBzaG91bGQgcmVqZWN0Jyk7IH0pLAorICAgICAgICB0ZXN0NS5zdGVw
X2Z1bmMoZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgYXNzZXJ0X3RydWUoY2FuY2VsQ2FsbGVk
KTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZSwgdGhyb3duRXJyb3IpOworICAgICAgICAg
ICAgdGVzdDUuZG9uZSgpOworICAgICAgICB9KQorICAgICk7Cit9KTsKKwordmFyIHRlc3Q2ID0g
YXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWlu
ZyBzb3VyY2VcJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2Ug
cmV0dXJuZWQgYnkgdGhlIHN0cmVhbVwncyBjYW5jZWwgc2hvdWxkIGZ1bGZpbGwgd2hlbiB0aGF0
IG9uZSBkb2VzICgxKScpOwordGVzdDYuc3RlcChmdW5jdGlvbigpCit7CisgICAgdmFyIGNhbmNl
bFJlYXNvbiA9IG5ldyBFcnJvcigndGVzdCcpOworCisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKKyAgICAgICAgY2FuY2VsOiBmdW5jdGlvbihlcnJvcikgeworICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhlcnJvciwgY2FuY2VsUmVhc29uKTsKKyAgICAgICAgICAgIHJldHVybiBu
ZXcgUHJvbWlzZSh0ZXN0Ni5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dCh0ZXN0Ni5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgICAgICB9KSwgNTAwKTsK
KyAgICAgICAgICAgIH0pKQorICAgICAgICB9CisgICAgfSkKKworICAgIHJzLmNhbmNlbChjYW5j
ZWxSZWFzb24pLnRoZW4oCisgICAgICAgIHRlc3Q2LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIHRlc3Q2LmRvbmUoJ3N0cmVhbSBzdWNjZXNzZnVsbHkgY2FuY2VsbGVkJyk7Cisg
ICAgICAgIH0pLAorICAgICAgICB0ZXN0Ni5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeworICAgICAg
ICAgICAgYXNzZXJ0X3VucmVhY2hlZCgicmVjZWl2ZWQgZXJyb3IgIiArIGUpCisgICAgICAgIH0p
KQorfSk7CisKK3ZhciB0ZXN0NyA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxh
dGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBh
IHByb21pc2UsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW1cJ3MgY2FuY2VsIHNo
b3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBvbmUgZG9lcyAoMiknKTsKK3Rlc3Q3LnN0ZXAoZnVuY3Rp
b24oKSB7CiAgICAgdmFyIHJlc29sdmVTb3VyY2VDYW5jZWxQcm9taXNlOwogICAgIHZhciBzb3Vy
Y2VDYW5jZWxQcm9taXNlSGFzRnVsZmlsbGVkID0gZmFsc2U7CiAgICAgdmFyIHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKICAgICAgICAgY2FuY2VsOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
IHZhciBzb3VyY2VDYW5jZWxQcm9taXNlID0gbmV3IFByb21pc2UodGVzdDQuc3RlcF9mdW5jKGZ1
bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgdmFyIHNvdXJjZUNhbmNlbFBy
b21pc2UgPSBuZXcgUHJvbWlzZSh0ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzb2x2ZSwgcmVq
ZWN0KSB7CiAgICAgICAgICAgICAgICAgcmVzb2x2ZVNvdXJjZUNhbmNlbFByb21pc2UgPSByZXNv
bHZlOwogICAgICAgICAgICAgfSkpOwogCi0gICAgICAgICAgICBzb3VyY2VDYW5jZWxQcm9taXNl
LnRoZW4odGVzdDQuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgc291cmNlQ2Fu
Y2VsUHJvbWlzZS50aGVuKHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKICAgICAgICAgICAg
ICAgICBzb3VyY2VDYW5jZWxQcm9taXNlSGFzRnVsZmlsbGVkID0gdHJ1ZTsKICAgICAgICAgICAg
IH0pKTsKIApAQCAtMTI1LDI4ICsxOTUsMzIgQEAgdGVzdDQuc3RlcChmdW5jdGlvbigpIHsKICAg
ICAgICAgfQogICAgIH0pOwogCi0gICAgcnMuY2FuY2VsKCkudGhlbih0ZXN0NC5zdGVwX2Z1bmMo
ZnVuY3Rpb24odmFsdWUpIHsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhzb3VyY2VDYW5jZWxQcm9t
aXNlSGFzRnVsZmlsbGVkLCB0cnVlLCAnY2FuY2VsKCkgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSBm
dWxmaWxsZWQgb25seSBhZnRlciB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgdW5kZXJseWlu
ZyBzb3VyY2VcJ3MgY2FuY2VsJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHModmFsdWUsIHVuZGVm
aW5lZCwgJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgZnVsZmlsbGVkIHdpdGggdW5k
ZWZpbmVkJyk7Ci0gICAgICAgIHRlc3Q0LmRvbmUoKTsKLSAgICB9KSwgdGVzdDQuc3RlcF9mdW5j
KGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hv
dWxkIG5vdCBiZSByZWplY3RlZCcpOyB9ICkpOwogCi0gICAgc2V0VGltZW91dCh0ZXN0NC5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgcnMuY2FuY2VsKCkudGhlbigKKyAgICAgICAgdGVzdDcu
c3RlcF9mdW5jKGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShzb3Vy
Y2VDYW5jZWxQcm9taXNlSGFzRnVsZmlsbGVkLCAnY2FuY2VsKCkgcmV0dXJuIHZhbHVlIHNob3Vs
ZCBiZSBmdWxmaWxsZWQgb25seSBhZnRlciB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgdW5k
ZXJseWluZyBzb3VyY2VcJ3MgY2FuY2VsJyk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHZh
bHVlLCB1bmRlZmluZWQsICdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIGZ1bGZpbGxl
ZCB3aXRoIHVuZGVmaW5lZCcpOworICAgICAgICAgICAgdGVzdDcuZG9uZSgpOworICAgICAgICB9
KSwKKyAgICAgICAgdGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVk
KCdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIG5vdCBiZSByZWplY3RlZCcpOyB9KQorICAg
ICk7CisKKyAgICBzZXRUaW1lb3V0KHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKICAgICAg
ICAgcmVzb2x2ZVNvdXJjZUNhbmNlbFByb21pc2UoJ0hlbGxvJyk7Ci0gICAgfSksIHN0YW5kYXJk
VGltZW91dCk7CisgICAgfSksIDUwMCk7CiB9KTsKIAotdmFyIHRlc3Q1ID0gYXN5bmNfdGVzdCgn
UmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3Mg
Y2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkg
dGhlIHN0cmVhbVwncyBjYW5jZWwgc2hvdWxkIHJlamVjdCB3aGVuIHRoYXQgb25lIGRvZXMnKTsK
LXRlc3Q1LnN0ZXAoZnVuY3Rpb24oKSB7Cit2YXIgdGVzdDggPSBhc3luY190ZXN0KCdSZWFkYWJs
ZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBjYW5jZWwg
bWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3Ry
ZWFtXCdzIGNhbmNlbCBzaG91bGQgcmVqZWN0IHdoZW4gdGhhdCBvbmUgZG9lcycpOwordGVzdDgu
c3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgcmVqZWN0U291cmNlQ2FuY2VsUHJvbWlzZTsKICAg
ICB2YXIgc291cmNlQ2FuY2VsUHJvbWlzZUhhc1JlamVjdGVkID0gZmFsc2U7CiAgICAgdmFyIHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKICAgICAgICAgY2FuY2VsOiBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIHZhciBzb3VyY2VDYW5jZWxQcm9taXNlID0gbmV3IFByb21pc2UodGVzdDUuc3Rl
cF9mdW5jKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgdmFyIHNvdXJj
ZUNhbmNlbFByb21pc2UgPSBuZXcgUHJvbWlzZSh0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVz
b2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICAgICAgcmVqZWN0U291cmNlQ2FuY2VsUHJvbWlz
ZSA9IHJlamVjdDsKICAgICAgICAgICAgIH0pKTsKIAotICAgICAgICAgICAgc291cmNlQ2FuY2Vs
UHJvbWlzZS5jYXRjaCh0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBz
b3VyY2VDYW5jZWxQcm9taXNlLmNhdGNoKHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKICAg
ICAgICAgICAgICAgICBzb3VyY2VDYW5jZWxQcm9taXNlSGFzUmVqZWN0ZWQgPSB0cnVlOwogICAg
ICAgICAgICAgfSkpOwogCkBAIC0xNTcsOTggKzIzMSwyOSBAQCB0ZXN0NS5zdGVwKGZ1bmN0aW9u
KCkgewogICAgIHZhciBlcnJvckluQ2FuY2VsID0gbmV3IEVycm9yKCdTb3JyeSwgaXQganVzdCB3
YXNuXCd0IG1lYW50IHRvIGJlLicpOwogCiAgICAgcnMuY2FuY2VsKCkudGhlbigKLSAgICAgICAg
dGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfZnVuY3Rpb24oJ2NhbmNlbCgpIHJl
dHVybiB2YWx1ZSBzaG91bGQgbm90IGJlIHJlamVjdGVkJyk7IH0pLAotICAgICAgICB0ZXN0NS5z
dGVwX2Z1bmMoZnVuY3Rpb24ocikgewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhzb3VyY2VD
YW5jZWxQcm9taXNlSGFzUmVqZWN0ZWQsIHRydWUsICdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hv
dWxkIGJlIHJlamVjdGVkIG9ubHkgYWZ0ZXIgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHVu
ZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCcpOworICAgICAgICB0ZXN0OC5zdGVwX2Z1bmMoZnVu
Y3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQg
bm90IGJlIHJlamVjdGVkJyk7IH0pLAorICAgICAgICB0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24o
cikgeworICAgICAgICAgICAgYXNzZXJ0X3RydWUoc291cmNlQ2FuY2VsUHJvbWlzZUhhc1JlamVj
dGVkLCAnY2FuY2VsKCkgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSByZWplY3RlZCBvbmx5IGFmdGVy
IHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBjYW5jZWwn
KTsKICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMociwgZXJyb3JJbkNhbmNlbCwgJ2NhbmNlbCgp
IHJldHVybiB2YWx1ZSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgdW5kZXJseWluZyBzb3Vy
Y2VcJ3MgcmVqZWN0aW9uIHJlYXNvbicpOwotICAgICAgICAgICAgdGVzdDUuZG9uZSgpOwotICAg
ICAgICB9KSk7CisgICAgICAgICAgICB0ZXN0OC5kb25lKCk7CisgICAgICAgIH0pCisgICAgKTsK
IAotICAgIHNldFRpbWVvdXQodGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgIHNldFRp
bWVvdXQodGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewogICAgICAgICByZWplY3RTb3VyY2VD
YW5jZWxQcm9taXNlKGVycm9ySW5DYW5jZWwpOwotICAgIH0pLCBzdGFuZGFyZFRpbWVvdXQpOwor
ICAgIH0pLCA1MDApOwogfSk7CiAKLXZhciB0ZXN0NiA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3Ry
ZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsbGluZyBiZWZvcmUgc3RhcnQgZmluaXNoZXMgc2hvdWxk
IHByZXZlbnQgcHVsbCgpIGZyb20gYmVpbmcgY2FsbGVkJyk7Ci10ZXN0Ni5zdGVwKGZ1bmN0aW9u
KCkgewordmFyIHRlc3Q5ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9u
OiBjYW5jZWxsaW5nIGJlZm9yZSBzdGFydCBmaW5pc2hlcyBzaG91bGQgcHJldmVudCBwdWxsKCkg
ZnJvbSBiZWluZyBjYWxsZWQnKTsKK3Rlc3Q5LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKICAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7CiAgICAg
ICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxl
ZCcpOwogICAgICAgICB9CiAgICAgfSk7CiAKLSAgICBQcm9taXNlLmFsbChbcnMuY2FuY2VsKCks
IHJzLmdldFJlYWRlcigpLmNsb3NlZF0pLnRoZW4odGVzdDYuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
ewotICAgICAgICB0ZXN0Ni5kb25lKCdwdWxsIHNob3VsZCBuZXZlciBoYXZlIGJlZW4gY2FsbGVk
Jyk7Ci0gICAgfSkpLmNhdGNoKHRlc3Q2LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF9y
ZWFjaGVkKGUpOyB9ICkpOwotfSk7Ci0KLXZhciB0ZXN0NyA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxl
U3RyZWFtIGNhbmNlbCBzaG91bGQgZnVsZmlsbCBwcm9taXNlIHdoZW4gY2FuY2VsIGNhbGxiYWNr
IHdlbnQgZmluZScpOwotdGVzdDcuc3RlcChmdW5jdGlvbigpCi17Ci0gICAgdmFyIGNhbmNlbFJl
Y2VpdmVkID0gZmFsc2U7Ci0gICAgdmFyIGNhbmNlbFJlYXNvbiA9ICJJIGFtIHRpcmVkIG9mIHRo
aXMgc3RyZWFtLCBJIHByZWZlciB0byBjYW5jZWwgaXQiOwotICAgIHZhciBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgICAgIGNhbmNlbDogZnVuY3Rpb24ocmVhc29uKSB7Ci0gICAgICAg
ICAgICBjYW5jZWxSZWNlaXZlZCA9IHRydWU7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJl
YXNvbiwgY2FuY2VsUmVhc29uKTsKLSAgICAgICAgfQotICAgIH0pOwotICAgIHJzLmNhbmNlbChj
YW5jZWxSZWFzb24pLnRoZW4oCi0gICAgICAgIHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgIGFzc2VydF90cnVlKGNhbmNlbFJlY2VpdmVkKTsKLSAgICAgICAgICAgIHRl
c3Q3LmRvbmUoKTsKLSAgICAgICAgfSksCi0gICAgICAgIHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlv
bihlKSB7Ci0gICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJyZWNlaXZlZCBlcnJvciAiICsg
ZSkKLSAgICAgICAgfSkpOwotfSk7Ci0KLXZhciB0ZXN0OCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxl
U3RyZWFtIGNhbmNlbCBzaG91bGQgcmVqZWN0IHByb21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJhY2sg
cmFpc2VzIGFuIGV4Y2VwdGlvbicpOwotdGVzdDguc3RlcChmdW5jdGlvbigpCi17Ci0gICAgdmFy
IHRocm93bkVycm9yID0gdW5kZWZpbmVkOwotCi0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKLSAgICAgICAgY2FuY2VsOiBmdW5jdGlvbihlcnJvcikgewotICAgICAgICAgICAgdGhy
b3duRXJyb3IgPSBuZXcgRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgdGhyb3cgdGhyb3duRXJy
b3I7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHJzLmNhbmNlbCgidGVzdCIpLnRoZW4oCi0g
ICAgICAgIHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGFzc2VydF91
bnJlYWNoZWQoImNhbmNlbCBzaG91bGQgZmFpbCIpCi0gICAgICAgIH0pLAotICAgICAgICB0ZXN0
OC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMo
dGhyb3duRXJyb3IsIHVuZGVmaW5lZCk7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRo
cm93bkVycm9yKTsKLSAgICAgICAgICAgIHRlc3Q4LmRvbmUoKTsKLSAgICAgICAgfSkKLSAgICAp
OwotfSk7Ci0KLXZhciB0ZXN0OSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbCBz
aG91bGQgZnVsZmlsbCBwcm9taXNlIHdoZW4gY2FuY2VsIGNhbGxiYWNrIHdlbnQgZmluZSBhZnRl
ciByZXR1cm5pbmcgYSBwcm9taXNlJyk7Ci10ZXN0OS5zdGVwKGZ1bmN0aW9uKCkKLXsKLSAgICB2
YXIgY2FuY2VsUmVhc29uID0gInRlc3QiOwotCi0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKLSAgICAgICAgY2FuY2VsOiBmdW5jdGlvbihlcnJvcikgewotICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhlcnJvciwgY2FuY2VsUmVhc29uKTsKLSAgICAgICAgICAgIHJldHVybiBuZXcg
UHJvbWlzZSh0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAg
ICAgICAgICAgICAgc2V0VGltZW91dCh0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAgICAgICB9KSwgc3RhbmRhcmRU
aW1lb3V0KTsKLSAgICAgICAgICAgIH0pKQotICAgICAgICB9Ci0gICAgfSkKLQotICAgIHJzLmNh
bmNlbChjYW5jZWxSZWFzb24pLnRoZW4oCi0gICAgICAgIHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgIHRlc3Q5LmRvbmUoKTsKLSAgICAgICAgfSksCi0gICAgICAgIHRl
c3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVk
KCJyZWNlaXZlZCBlcnJvciAiICsgZSkKLSAgICAgICAgfSkpCisgICAgUHJvbWlzZS5hbGwoW3Jz
LmNhbmNlbCgpLCBycy5nZXRSZWFkZXIoKS5jbG9zZWRdKS50aGVuKHRlc3Q5LnN0ZXBfZnVuYyhm
dW5jdGlvbigpIHsKKyAgICAgICAgdGVzdDkuZG9uZSgncHVsbCBzaG91bGQgbmV2ZXIgaGF2ZSBi
ZWVuIGNhbGxlZCcpOworICAgIH0pKS5jYXRjaCh0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkg
eyBhc3NlcnRfcmVhY2hlZChlKTsgfSApKTsKIH0pOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJl
YW0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50
YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dAppbmRleCA3M2UyYjgxY2RmNmIxYzkw
OWU5NjhkOWY4Yjk4NDFkODdjN2QxNzNlLi4zMWY1ZjYyYWQzYjc5MGFiN2VhMTE4YzlmZGRiMjJl
Y2Y2YjhlMTdjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBlY3Rl
ZC50eHQKQEAgLTEsMjUgKzEsMzMgQEAKIAogUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW4gYmUgY29u
c3RydWN0ZWQgd2l0aCBubyBlcnJvcnMgCi1GQUlMIFJlYWRhYmxlU3RyZWFtIGluc3RhbmNlcyBz
aG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMgYXNzZXJ0X2FycmF5X2Vx
dWFsczogc2hvdWxkIGhhdmUgYWxsIHRoZSBjb3JyZWN0IG1ldGhvZHMgbGVuZ3RocyBkaWZmZXIs
IGV4cGVjdGVkIDYgZ290IDUKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuJ3QgYmUgY29uc3RydWN0
ZWQgd2l0aCBnYXJiYWdlIAorRkFJTCBSZWFkYWJsZVN0cmVhbSBpbnN0YW5jZXMgc2hvdWxkIGhh
dmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzIGFzc2VydF9hcnJheV9lcXVhbHM6IHNo
b3VsZCBoYXZlIGFsbCB0aGUgY29ycmVjdCBtZXRob2RzIGxlbmd0aHMgZGlmZmVyLCBleHBlY3Rl
ZCA3IGdvdCA1CiBQQVNTIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBm
b3Igbm9uLWZ1bmN0aW9uIHN0YXJ0IGFyZ3VtZW50cyAKIFBBU1MgUmVhZGFibGVTdHJlYW0gY29u
c3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgY2FuY2VsIGFyZ3VtZW50IAogUEFT
UyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBw
dWxsIGFyZ3VtZW50IAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGlu
aXRpYWwgZ2FyYmFnZSBhcyBzdHJhdGVneSBhcmd1bWVudCAKLVRJTUVPVVQgUmVhZGFibGVTdHJl
YW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBUZXN0IHRpbWVkIG91
dAorRkFJTCBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHBy
b3BlciBwYXJhbWV0ZXJzIGFzc2VydF9hcnJheV9lcXVhbHM6IHRoZSBjb250cm9sbGVyIHNob3Vs
ZCBoYXZlIHRoZSByaWdodCBwcm9wZXJ0aWVzIGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCA1IGdv
dCA0CitGQUlMIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IGNvbnRyb2xsZXIgcGFyYW1ldGVyIHNob3Vs
ZCBiZSBleHRlbnNpYmxlIGFzc2VydF9hcnJheV9lcXVhbHM6IHByb3RvdHlwZSBzaG91bGQgaGF2
ZSB0aGUgcmlnaHQgcHJvcGVydGllcyBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgNSBnb3QgNAor
UEFTUyBSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBjYWxsIHN0YXJ0IG1ldGhvZCB3
aXRoaW4gcHJvdG90eXBlIGNoYWluIG9mIGl0cyBzb3VyY2UgCitQQVNTIFJlYWRhYmxlU3RyZWFt
IHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgCiBUSU1FT1VUIFJlYWRh
YmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJl
amVjdCBpdCBUZXN0IHRpbWVkIG91dAogUEFTUyBSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJs
ZSB0byBlbnF1ZXVlIGRpZmZlcmVudCBvYmplY3RzLiAKLVBBU1MgUmVhZGFibGVTdHJlYW06IGlm
IHN0YXJ0IHRocm93cyBhbiBlcnJvciwgaXQgc2hvdWxkIGJlIHJlLXRocm93biAKIFRJTUVPVVQg
UmVhZGFibGVTdHJlYW06IGlmIHB1bGwgcmVqZWN0cywgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJl
YW0gVGVzdCB0aW1lZCBvdXQKLUZBSUwgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBw
dWxsIHVudGlsIHRoZSBwcmV2aW91cyBwdWxsIGNhbGwncyBwcm9taXNlIGZ1bGZpbGxzIGFzc2Vy
dF9lcXVhbHM6IGFmdGVyIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHB1bGwgaXMgZnVsZmlsbGVk
LCBwdWxsIHNob3VsZCBiZSBjYWxsZWQgYSBzZWNvbmQgdGltZSBleHBlY3RlZCAyIGJ1dCBnb3Qg
MQorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2UgdXBvbiBz
dGFydGluZyB0aGUgc3RyZWFtIAorRkFJTCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVs
bCB3aGVuIHRyeWluZyB0byByZWFkIGZyb20gYSBzdGFydGVkLCBlbXB0eSBzdHJlYW0gYXNzZXJ0
X2VxdWFsczogcHVsbCBzaG91bGQgYmUgY2FsbGVkIGFnYWluIGluIHJlYWN0aW9uIHRvIGNhbGxp
bmcgcmVhZCBleHBlY3RlZCAyIGJ1dCBnb3QgMworUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxk
IG9ubHkgY2FsbCBwdWxsIG9uY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBiZWZv
cmUgc3RhcnQgZnVsZmlsbHMgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxs
IHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGFmdGVyIHN0YXJ0IGZ1
bGZpbGxzIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwoKSBpbiBy
ZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIGRyYWluaW5nIAorRkFJTCBS
ZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50aWwgdGhlIHByZXZpb3VzIHB1
bGwgY2FsbCdzIHByb21pc2UgZnVsZmlsbHMgYXNzZXJ0X2VxdWFsczogcHVsbCBzaG91bGQgaGF2
ZSBiZWVuIGNhbGxlZCBvbmNlIGFmdGVyIHN0YXJ0LCBidXQgbm90IHlldCBoYXZlIGJlZW4gY2Fs
bGVkIGEgc2Vjb25kIHRpbWUgZXhwZWN0ZWQgMSBidXQgZ290IDIKK0ZBSUwgUmVhZGFibGVTdHJl
YW06IHNob3VsZCBwdWxsIGFmdGVyIHN0YXJ0LCBhbmQgYWZ0ZXIgZXZlcnkgcmVhZCBhc3NlcnRf
ZXF1YWxzOiBwdWxsKCkgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IGZvdXIgdGltZXMgZXhwZWN0
ZWQgNCBidXQgZ290IDEKIFBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxs
IGFmdGVyIHN0YXJ0IGlmIHRoZSBzdHJlYW0gaXMgbm93IGNsb3NlZCAKIEZBSUwgUmVhZGFibGVT
dHJlYW06IHNob3VsZCBjYWxsIHB1bGwgYWZ0ZXIgZW5xdWV1ZWluZyBmcm9tIGluc2lkZSBwdWxs
ICh3aXRoIG5vIHJlYWQgcmVxdWVzdHMpLCBpZiBzdHJhdGVneSBhbGxvd3MgYXNzZXJ0X2VxdWFs
czogcHVsbCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGZvdXIgdGltZXMgZXhwZWN0ZWQgNCBi
dXQgZ290IDEKIFBBU1MgUmVhZGFibGVTdHJlYW0gcHVsbCBzaG91bGQgYmUgYWJsZSB0byBjbG9z
ZSBhIHN0cmVhbS4gCi1GQUlMIFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB3
aGVuIHRoZSBzdHJlYW0gaXMgcmVhZGFibGUgYnV0IGRyYWluaW5nIGFzc2VydF9lcXVhbHM6IHRo
ZSBmaXJzdCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZSBleHBlY3RlZCAoYm9vbGVhbikgdHJ1
ZSBidXQgZ290ICh1bmRlZmluZWQpIHVuZGVmaW5lZAorUEFTUyBSZWFkYWJsZVN0cmVhbTogZW5x
dWV1ZSBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc3RyZWFtIGlzIHJlYWRhYmxlIGJ1dCBkcmFpbmlu
ZyAKIFBBU1MgUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0
cmVhbSBpcyBjbG9zZWQgCiBQQVNTIFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJv
dyB0aGUgc3RvcmVkIGVycm9yIHdoZW4gdGhlIHN0cmVhbSBpcyBlcnJvcmVkIAogRkFJTCBSZWFk
YWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgdW5kZXJseWluZyBzb3VyY2UgbWV0aG9kcyBhcyBtZXRo
b2RzIHJlbGVhc2VMb2NrIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBSZWFkYWJsZVN0cmVhbSBz
dHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgcmV0dXJuIGZhbHNlIGZvciBh
bGwgYnV0IHRoZSBmaXJzdCBlbnF1ZXVlIGNhbGwgYXNzZXJ0X2VxdWFsczogZmlyc3QgZW5xdWV1
ZSBzaG91bGQgcmV0dXJuIHRydWUgZXhwZWN0ZWQgKGJvb2xlYW4pIHRydWUgYnV0IGdvdCAodW5k
ZWZpbmVkKSB1bmRlZmluZWQKLUZBSUwgUmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRl
ZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGNvbnRpbnVlIHJldHVybmluZyB0cnVlIGZyb20gZW5xdWV1
ZSBpZiB0aGUgY2h1bmtzIGFyZSByZWFkIGltbWVkaWF0ZWx5IGFzc2VydF9lcXVhbHM6IGZpcnN0
IGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlIGV4cGVjdGVkIChib29sZWFuKSB0cnVlIGJ1dCBn
b3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkCi1USU1FT1VUIFJlYWRhYmxlU3RyZWFtIGludGVncmF0
aW9uIHRlc3Q6IGFkYXB0aW5nIGEgcmFuZG9tIHB1c2ggc291cmNlIFRlc3QgdGltZWQgb3V0CitG
QUlMIFJlYWRhYmxlU3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3Vs
ZCBnaXZlIGRlc2lyZWRTaXplIG9mIDEgdG8gc3RhcnQsIGRlY3JlYXNpbmcgYnkgMSBwZXIgZW5x
dWV1ZSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAobnVtYmVyKSAxIGJ1dCBnb3QgKHVuZGVmaW5l
ZCkgdW5kZWZpbmVkCitGQUlMIFJlYWRhYmxlU3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0
IHN0cmF0ZWd5IHNob3VsZCBjb250aW51ZSBnaXZpbmcgZGVzaXJlZFNpemUgb2YgMSBpZiB0aGUg
Y2h1bmtzIGFyZSByZWFkIGltbWVkaWF0ZWx5IGFzc2VydF9lcXVhbHM6IGRlc2lyZWRTaXplIHNo
b3VsZCBzdGFydCBhdCAxIGV4cGVjdGVkIChudW1iZXIpIDEgYnV0IGdvdCAodW5kZWZpbmVkKSB1
bmRlZmluZWQKK1BBU1MgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcg
YSByYW5kb20gcHVzaCBzb3VyY2UgCiBQQVNTIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRl
c3Q6IGFkYXB0aW5nIGEgc3luYyBwdWxsIHNvdXJjZSAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRl
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRh
dGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dAppbmRleCBlMDAwMTg0MmUz
OTk5YTIyMzNhNTc0M2FkZDhiNGEwZWMwNDgzNWEzLi43OWIwMDM0NzdiZWEzMzhkNDFjYWMzZTY3
YjliYzFhNDE2MWY2YWYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5j
ZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1z
dHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dApAQCAtNiwxMyArNiwxNiBAQCBQQVNTIFJlYWRhYmxl
U3RyZWFtUmVhZGVyIGNsb3NlZCBzaG91bGQgYWx3YXlzIHJldHVybiB0aGUgc2FtZSBwcm9taXNl
IG9iamVjdAogUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3Rs
eSBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0
IGNvbnN0cnVjdGlvbikgCiBQQVNTIEdldHRpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciB2aWEg
Z2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZp
YSBkaXJlY3QgY29uc3RydWN0aW9uKSAKIFBBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJl
YW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxv
Y2tlZCAodmlhIGdldFJlYWRlcikgCi1QQVNTIEdldHRpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRl
ciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2Nr
ZWQgKHZpYSBkaXJlY3QgZ2V0UmVhZGVyKSAKK1BBU1MgR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFt
UmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5
IGxvY2tlZCAodmlhIGdldFJlYWRlcikgCiBQQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCAK
IFBBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxk
IGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCAKIFBBU1MgUmVhZGluZyBmcm9tIGEgcmVh
ZGVyIGZvciBhbiBlbXB0eSBzdHJlYW0gd2lsbCB3YWl0IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxh
YmxlIAogRkFJTCBjYW5jZWwoKSBvbiBhIHJlYWRlciByZWxlYXNlcyB0aGUgcmVhZGVyIGJlZm9y
ZSBjYWxsaW5nIHRocm91Z2ggY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogUEFTUyBjbG9zZWQg
c2hvdWxkIGJlIGZ1bGZpbGxlZCBhZnRlciBzdHJlYW0gaXMgY2xvc2VkICguY2xvc2VkIGFjY2Vz
cyBiZWZvcmUgYWNxdWlyaW5nKSAKIEZBSUwgY2xvc2VkIHNob3VsZCBiZSBmdWxmaWxsZWQgYWZ0
ZXIgcmVhZGVyIHJlbGVhc2VzIGl0cyBsb2NrIChtdWx0aXBsZSBzdHJlYW0gbG9ja3MpIHJlbGVh
c2VMb2NrIGlzIG5vdCBpbXBsZW1lbnRlZAorRkFJTCBNdWx0aXBsZSByZWFkZXJzIGNhbiBhY2Nl
c3MgdGhlIHN0cmVhbSBpbiBzZXF1ZW5jZSByZWxlYXNlTG9jayBpcyBub3QgaW1wbGVtZW50ZWQK
IEZBSUwgQ2Fubm90IHVzZSBhbiBhbHJlYWR5LXJlbGVhc2VkIHJlYWRlciB0byB1bmxvY2sgYSBz
dHJlYW0gYWdhaW4gcmVsZWFzZUxvY2sgaXMgbm90IGltcGxlbWVudGVkCitGQUlMIGNhbmNlbCgp
IG9uIGEgcmVsZWFzZWQgcmVhZGVyIGlzIGEgbm8tb3AgYW5kIGRvZXMgbm90IHBhc3MgdGhyb3Vn
aCByZWxlYXNlTG9jayBpcyBub3QgaW1wbGVtZW50ZWQKIFBBU1MgR2V0dGluZyBhIHNlY29uZCBy
ZWFkZXIgYWZ0ZXIgZXJyb3JpbmcgdGhlIHN0cmVhbSBzaG91bGQgc3VjY2VlZCAKK1BBU1MgR2Fy
YmFnZS1jb2xsZWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgc2hvdWxkIG5vdCB1bmxvY2sg
aXRzIHN0cmVhbSAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1sIGIvTGF5b3V0VGVzdHMv
c3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci5o
dG1sCmluZGV4IDM1ODM0M2FlNDI5YjQ2MGRiNWQyYWY4MzFiMWMzNmRhN2FmN2NlODkuLjk4OWFm
NDk5NDZkMzlhMWMyNGYzMmRhMTI5ZTlhYWRlZjNiZmI1ZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFk
ZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlv
bi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmh0bWwKQEAgLTIsNiArMiw3IEBACiA8c2NyaXB0IHNy
Yz0nLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJz48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMnPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9J3Jlc291cmNlcy9zdHJlYW1zLXV0aWxzLmpzJz48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PScuLi8uLi9yZXNvdXJjZXMvZ2MuanMnPjwvc2NyaXB0PgogPHNjcmlwdD4KIHZhciBSZWFkYWJs
ZVN0cmVhbVJlYWRlcjsKIApAQCAtODQsNyArODUsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAg
IHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwogICAgIHJzLmdldFJlYWRlcigpOyAvLyBn
ZXRSZWFkZXIoKSBzaG91bGQgYmUgZmluZS4KICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJy
b3IoKSwgZnVuY3Rpb24oKSB7IHJzLmdldFJlYWRlcigpOyB9LCAnZ2V0UmVhZGVyKCkgc2hvdWxk
IGZhaWwnKTsKLX0sICdHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdldFJlYWRl
ciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0
IGdldFJlYWRlciknKTsKK30sICdHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdl
dFJlYWRlciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEg
Z2V0UmVhZGVyKScpOwogCiB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIHZhciBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7CkBAIC0xOTAsMzYgKzE5MSwzMiBAQCB0ZXN0NC5zdGVwKGZ1bmN0aW9uKCkg
ewogICAgIH0pKTsKIH0pOwogCi0vLyB2YXIgdGVzdDUgPSBhc3luY190ZXN0KCdNdWx0aXBsZSBy
ZWFkZXJzIGNhbiBhY2Nlc3MgdGhlIHN0cmVhbSBpbiBzZXF1ZW5jZScpOwotLy8gdGVzdDUuc3Rl
cChmdW5jdGlvbigpIHsKLS8vICAgICB2YXIgcmVhZENvdW50ID0gMDsKLS8vICAgICB2YXIgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oewotLy8gICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewot
Ly8gICAgICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0vLyAgICAgICAgICAgICBjLmVucXVldWUo
J2InKTsKLS8vICAgICAgICAgICAgIGMuY2xvc2UoKTsKLS8vICAgICAgICAgfQotLy8gICAgIH0p
OwotCi0vLyAgICAgdmFyIHJlYWRlcjEgPSBycy5nZXRSZWFkZXIoKTsKLS8vICAgICByZWFkZXIx
LnJlYWQoKS50aGVuKHRlc3Q1LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0vLyAgICAgICAgIGFz
c2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3JlYWRp
bmcgdGhlIGZpcnN0IGNodW5rIGZyb20gcmVhZGVyMSB3b3JrcycpOwotLy8gICAgICAgICArK3Jl
YWRDb3VudDsKLS8vICAgICB9KSk7Ci0vLyAgICAgcmVhZGVyMS5yZWxlYXNlTG9jaygpOwotCi0v
LyAgICAgdmFyIHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKLS8vICAgICByZWFkZXIyLnJlYWQo
KS50aGVuKHRlc3Q1LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7Ci0vLyAgICAgICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwgJ3JlYWRpbmcgdGhl
IHNlY29uZCBjaHVuayBmcm9tIHJlYWRlcjIgd29ya3MnKTsKLS8vICAgICAgICAgKytyZWFkQ291
bnQ7Ci0vLyAgICAgfSkpOwotLy8gICAgIHJlYWRlcjIucmVsZWFzZUxvY2soKTsKLQotLy8gICAg
IHNldFRpbWVvdXQodGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotLy8gICAgICAgICBhc3Nl
cnRfZXF1YWxzKHJlYWRDb3VudCwgMik7Ci0vLyAgICAgICAgIHRlc3Q1LmRvbmUoKTsKLS8vICAg
ICB9KSwgc3RhbmRhcmRUaW1lb3V0KTsKLS8vIH0pOwordmFyIHRlc3Q1ID0gYXN5bmNfdGVzdCgn
TXVsdGlwbGUgcmVhZGVycyBjYW4gYWNjZXNzIHRoZSBzdHJlYW0gaW4gc2VxdWVuY2UnKTsKK3Rl
c3Q1LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIHJlYWRDb3VudCA9IDA7CisgICAgdmFyIHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAg
ICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgICAgICAgYy5lbnF1ZXVlKCdiJyk7Cisg
ICAgICAgICAgICBjLmNsb3NlKCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHZhciByZWFk
ZXIxID0gcnMuZ2V0UmVhZGVyKCk7CisgICAgcmVhZGVyMS5yZWFkKCkudGhlbih0ZXN0NS5zdGVw
X2Z1bmMoZnVuY3Rpb24ocikgeworICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZh
bHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdyZWFkaW5nIHRoZSBmaXJzdCBjaHVuayBmcm9tIHJl
YWRlcjEgd29ya3MnKTsKKyAgICAgICAgKytyZWFkQ291bnQ7CisgICAgfSkpOworICAgIHJlYWRl
cjEucmVsZWFzZUxvY2soKTsKKworICAgIHZhciByZWFkZXIyID0gcnMuZ2V0UmVhZGVyKCk7Cisg
ICAgcmVhZGVyMi5yZWFkKCkudGhlbih0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgeworICAg
ICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0s
ICdyZWFkaW5nIHRoZSBzZWNvbmQgY2h1bmsgZnJvbSByZWFkZXIyIHdvcmtzJyk7CisgICAgICAg
IGFzc2VydF9lcXVhbHMoKytyZWFkQ291bnQsIDIpOworICAgICAgICB0ZXN0NS5kb25lKCk7Cisg
ICAgfSkpOworICAgIHJlYWRlcjIucmVsZWFzZUxvY2soKTsKK30pOwogCiB2YXIgdGVzdDYgPSBh
c3luY190ZXN0KCdDYW5ub3QgdXNlIGFuIGFscmVhZHktcmVsZWFzZWQgcmVhZGVyIHRvIHVubG9j
ayBhIHN0cmVhbSBhZ2FpbicpOwogdGVzdDYuc3RlcChmdW5jdGlvbigpIHsKQEAgLTI0MSwzOCAr
MjM4LDMyIEBAIHRlc3Q2LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgfSkpOwogfSk7CiAKLS8vIHZh
ciB0ZXN0NyA9IGFzeW5jX3Rlc3QoJ2NhbmNlbCgpIG9uIGEgcmVsZWFzZWQgcmVhZGVyIGlzIGEg
bm8tb3AgYW5kIGRvZXMgbm90IHBhc3MgdGhyb3VnaCcpOwotLy8gdGVzdDcuc3RlcChmdW5jdGlv
bigpIHsKLS8vICAgICB2YXIgcmVhZENvdW50cyA9IDA7Ci0vLyAgICAgdmFyIGNhbmNlbGxlZCA9
IGZhbHNlOwotLy8gICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0vLyAgICAgICAg
IHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0vLyAgICAgICAgICAgICBjLmVucXVldWUoJ2EnKTsKLS8v
ICAgICAgICAgfSwKLS8vICAgICAgICAgY2FuY2VsOiBmdW5jdGlvbigpIHsKLS8vICAgICAgICAg
ICAgIGFzc2VydF91bnJlYWNoZWQoJ3VuZGVybHlpbmcgc291cmNlIGNhbmNlbCBzaG91bGQgbm90
IGJlIGNhbGxlZCcpOwotLy8gICAgICAgICB9Ci0vLyAgICAgfSk7Ci0KLS8vICAgICB2YXIgcmVh
ZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0vLyAgICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7Ci0vLyAg
ICAgcmVhZGVyLmNhbmNlbCgpLnRoZW4odGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKHYpIHsKLS8v
ICAgICAgICAgYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdjYW5jZWwoKSBvbiB0aGUgcmVh
ZGVyIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJykKLS8vICAgICAgICAgY2FuY2VsbGVk
ID0gdHJ1ZTsKLS8vICAgICB9KSk7Ci0KLS8vICAgICB2YXIgcmVhZGVyMiA9IHJzLmdldFJlYWRl
cigpOwotLy8gICAgIHJlYWRlcjIucmVhZCgpLnRoZW4odGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9u
KHIpIHsKLS8vICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBk
b25lOiBmYWxzZSB9LCAnYSBuZXcgcmVhZGVyIHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgYSBjaHVu
aycpOwotLy8gICAgICAgICArK3JlYWRDb3VudHM7Ci0vLyAgICAgfSkpOwotCi0vLyAgICAgc2V0
VGltZW91dCh0ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0vLyAgICAgICAgIGFzc2VydF90
cnVlKGNhbmNlbGxlZCk7Ci0vLyAgICAgICAgIGFzc2VydF9lcXVhbHMocmVhZENvdW50cywgMSk7
Ci0vLyAgICAgICAgIHRlc3Q3LmRvbmUoKTsKLS8vICAgICB9KSwgc3RhbmRhcmRUaW1lb3V0KTsK
LS8vIH0pOwordmFyIHRlc3Q3ID0gYXN5bmNfdGVzdCgnY2FuY2VsKCkgb24gYSByZWxlYXNlZCBy
ZWFkZXIgaXMgYSBuby1vcCBhbmQgZG9lcyBub3QgcGFzcyB0aHJvdWdoJyk7Cit0ZXN0Ny5zdGVw
KGZ1bmN0aW9uKCkgeworICAgIHZhciBjYW5jZWxsZWQgPSBmYWxzZTsKKyAgICB2YXIgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgeworICAgICAg
ICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICAgIH0sCisgICAgICAgIGNhbmNlbDogZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCd1bmRlcmx5aW5nIHNvdXJjZSBj
YW5jZWwgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAg
dmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOwor
ICAgIHJlYWRlci5jYW5jZWwoKS50aGVuKHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbih2KSB7Cisg
ICAgICAgIGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAnY2FuY2VsKCkgb24gdGhlIHJlYWRl
ciBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpCisgICAgICAgIGNhbmNlbGxlZCA9IHRy
dWU7CisgICAgfSkpOworCisgICAgdmFyIHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKKyAgICBy
ZWFkZXIyLnJlYWQoKS50aGVuKHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7CisgICAgICAg
IGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2Eg
bmV3IHJlYWRlciBzaG91bGQgYmUgYWJsZSB0byByZWFkIGEgY2h1bmsnKTsKKyAgICAgICAgYXNz
ZXJ0X3RydWUoY2FuY2VsbGVkKTsKKyAgICAgICAgdGVzdDcuZG9uZSgpOworICAgIH0pKTsKK30p
OwogCiB2YXIgdGVzdDggPSBhc3luY190ZXN0KCdHZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBhZnRl
ciBlcnJvcmluZyB0aGUgc3RyZWFtIHNob3VsZCBzdWNjZWVkJyk7CiB0ZXN0OC5zdGVwKGZ1bmN0
aW9uKCkgewpAQCAtMzEyLDQgKzMwMywxMyBAQCB0ZXN0OC5zdGVwKGZ1bmN0aW9uKCkgewogICAg
ICAgICB0ZXN0OC5kb25lKCk7CiAgICAgfSkpOwogfSk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7Cisg
ICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHt9KTsKKworICAgIHJzLmdldFJlYWRlcigp
OworICAgIHdpbmRvdy5nYygpOworCisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCks
IGZ1bmN0aW9uKCkgeyBycy5nZXRSZWFkZXIoKTsgfSwgJ29sZCByZWFkZXIgc2hvdWxkIHN0aWxs
IGJlIGxvY2tpbmcgdGhlIHN0cmVhbSBldmVuIGFmdGVyIGdhcmJhZ2UgY29sbGVjdGlvbicpOwor
fSwgJ0dhcmJhZ2UtY29sbGVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHNob3VsZCBub3Qg
dW5sb2NrIGl0cyBzdHJlYW0nKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9y
ZWFkYWJsZS1zdHJlYW0tdGVlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzVmMjZmMTEwY2Iy
ZDdmYjgxNGFlYzRjMzUzMDIzNjkyZmI3NWIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlZS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorCitGQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWlu
ZzogcnMudGVlKCkgcmV0dXJucyBhbiBhcnJheSBvZiB0d28gUmVhZGFibGVTdHJlYW1zIHJzLnRl
ZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdycy50ZWUoKScsICdycy50ZWUnIGlzIHVuZGVmaW5l
ZCkKK0ZBSUwgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBzaG91bGQgYmUgYWJsZSB0byByZWFkIG9u
ZSBicmFuY2ggdG8gdGhlIGVuZCB3aXRob3V0IGFmZmVjdGluZyB0aGUgb3RoZXIgcnMudGVlIGlz
IG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnRlZSgpJywgJ3JzLnRlZScgaXMgdW5kZWZpbmVkKQor
RkFJTCBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHZhbHVlcyBzaG91bGQgYmUgZXF1YWwgYWNyb3Nz
IGVhY2ggYnJhbmNoIHJzLnRlZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdycy50ZWUoKScsICdy
cy50ZWUnIGlzIHVuZGVmaW5lZCkKK0ZBSUwgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcnMg
aW4gdGhlIHNvdXJjZSBzaG91bGQgcHJvcGFnYXRlIHRvIGJvdGggYnJhbmNoZXMgcnMudGVlIGlz
IG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnRlZSgpJywgJ3JzLnRlZScgaXMgdW5kZWZpbmVkKQor
RkFJTCBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBicmFuY2gxIHNob3VsZCBub3Qg
aW1wYWN0IGJyYW5jaDIgcnMudGVlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnRlZSgpJywg
J3JzLnRlZScgaXMgdW5kZWZpbmVkKQorRkFJTCBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNl
bGluZyBicmFuY2gyIHNob3VsZCBub3QgaW1wYWN0IGJyYW5jaDEgcnMudGVlIGlzIG5vdCBhIGZ1
bmN0aW9uLiAoSW4gJ3JzLnRlZSgpJywgJ3JzLnRlZScgaXMgdW5kZWZpbmVkKQorRkFJTCBSZWFk
YWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBib3RoIGJyYW5jaGVzIHNob3VsZCBhZ2dyZWdh
dGUgdGhlIGNhbmNlbCByZWFzb25zIGludG8gYW4gYXJyYXkgcnMudGVlIGlzIG5vdCBhIGZ1bmN0
aW9uLiAoSW4gJ3JzLnRlZSgpJywgJ3JzLnRlZScgaXMgdW5kZWZpbmVkKQorRkFJTCBSZWFkYWJs
ZVN0cmVhbSB0ZWVpbmc6IGZhaWxpbmcgdG8gY2FuY2VsIHRoZSBvcmlnaW5hbCBzdHJlYW0gc2hv
dWxkIGNhdXNlIGNhbmNlbCgpIHRvIHJlamVjdCBvbiBicmFuY2hlcyBycy50ZWUgaXMgbm90IGEg
ZnVuY3Rpb24uIChJbiAncnMudGVlKCknLCAncnMudGVlJyBpcyB1bmRlZmluZWQpCitGQUlMIFJl
YWRhYmxlU3RyZWFtIHRlZWluZzogY2xvc2luZyB0aGUgb3JpZ2luYWwgc2hvdWxkIGltbWVkaWF0
ZWx5IGNsb3NlIHRoZSBicmFuY2hlcyBycy50ZWUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMu
dGVlKCknLCAncnMudGVlJyBpcyB1bmRlZmluZWQpCitGQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWlu
ZzogZXJyb3JpbmcgdGhlIG9yaWdpbmFsIHNob3VsZCBpbW1lZGlhdGVseSBlcnJvciB0aGUgYnJh
bmNoZXMgcnMudGVlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnRlZSgpJywgJ3JzLnRlZScg
aXMgdW5kZWZpbmVkKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5j
ZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVlLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGRhNjlkMjkzMDlkN2UyYTdjZWMwM2ZmNmI5MjY2NzBmZjMwYzllNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0
aW9uL3JlYWRhYmxlLXN0cmVhbS10ZWUuaHRtbApAQCAtMCwwICsxLDMwNiBAQAorPCFET0NUWVBF
IGh0bWw+Cis8c2NyaXB0IHNyYz0nLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJz48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMn
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9J3Jlc291cmNlcy9zdHJlYW1zLXV0aWxzLmpzJz48L3Nj
cmlwdD4KKzxzY3JpcHQ+Cit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHZhciBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSgpOworCisgICAgdmFyIHJlc3VsdCA9IHJzLnRlZSgpOworCisgICAgYXNzZXJ0
X3RydWUoQXJyYXkuaXNBcnJheShyZXN1bHQpLCAncmV0dXJuIHZhbHVlIHNob3VsZCBiZSBhbiBh
cnJheScpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0Lmxlbmd0aCwgMiwgJ2FycmF5IHNob3Vs
ZCBoYXZlIGxlbmd0aCAyJyk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbMF0uY29uc3RydWN0
b3IsIFJlYWRhYmxlU3RyZWFtLCAnMHRoIGVsZW1lbnQgc2hvdWxkIGJlIGEgUmVhZGFibGVTdHJl
YW0nKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsxXS5jb25zdHJ1Y3RvciwgUmVhZGFibGVT
dHJlYW0sICcxc3QgZWxlbWVudCBzaG91bGQgYmUgYSBSZWFkYWJsZVN0cmVhbScpOworfSwgJ1Jl
YWRhYmxlU3RyZWFtIHRlZWluZzogcnMudGVlKCkgcmV0dXJucyBhbiBhcnJheSBvZiB0d28gUmVh
ZGFibGVTdHJlYW1zJyk7CisKK3ZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFt
IHRlZWluZzogc2hvdWxkIGJlIGFibGUgdG8gcmVhZCBvbmUgYnJhbmNoIHRvIHRoZSBlbmQgd2l0
aG91dCBhZmZlY3RpbmcgdGhlIG90aGVyJyk7Cit0ZXN0MS5zdGVwKGZ1bmN0aW9uKCkgeworICAg
IHZhciBjbG9zZWRDYWxsZWQgPSBmYWxzZTsKKyAgICB2YXIgcmVhZENhbGxzID0gMDsKKyAgICBj
b25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihj
KSB7CisgICAgICAgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAgICAgICAgIGMuZW5xdWV1ZSgn
YicpOworICAgICAgICAgICAgYy5jbG9zZSgpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICB2
YXIgYnJhbmNoID0gcnMudGVlKCk7CisgICAgdmFyIGJyYW5jaDEgPSBicmFuY2hbMF07CisgICAg
dmFyIGJyYW5jaDIgPSBicmFuY2hbMV07CisgICAgdmFyIHJlYWRlcjEgPSBicmFuY2gxLmdldFJl
YWRlcigpOworICAgIHZhciByZWFkZXIyID0gYnJhbmNoMi5nZXRSZWFkZXIoKTsKKworICAgIHJl
YWRlcjEuY2xvc2VkLnRoZW4odGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBj
bG9zZWRDYWxsZWQgPSB0cnVlOworICAgIH0pKS5jYXRjaCh0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rp
b24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9KSk7CisgICAgcmVhZGVyMi5jbG9zZWQudGhl
bih0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ2JyYW5jaDIg
c2hvdWxkIG5vdCBiZSBjbG9zZWQnKTsgfSkpOworCisgICAgcmVhZGVyMS5yZWFkKCkudGhlbih0
ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgeworICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFs
cyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCBjaHVuayBmcm9tIGJyYW5j
aDEgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKyAgICAgICAgKytyZWFkQ2FsbHM7CisgICAgfSkpOwor
ICAgIHJlYWRlcjEucmVhZCgpLnRoZW4odGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKKyAg
ICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9
LCAnc2Vjb25kIGNodW5rIGZyb20gYnJhbmNoMSBzaG91bGQgYmUgY29ycmVjdCcpOworICAgICAg
ICArK3JlYWRDYWxsczsKKyAgICB9KSk7CisgICAgcmVhZGVyMS5yZWFkKCkudGhlbih0ZXN0MS5z
dGVwX2Z1bmMoZnVuY3Rpb24ocikgeworICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7
IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3RoaXJkIHJlYWQoKSBmcm9tIGJyYW5j
aDEgc2hvdWxkIGJlIGRvbmUnKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoY2xvc2VkQ2FsbGVkKTsK
KyAgICAgICAgYXNzZXJ0X2VxdWFscygrK3JlYWRDYWxscywgNCk7CisgICAgICAgIHRlc3QxLmRv
bmUoKTsKKyAgICB9KSk7CisKKyAgICByZWFkZXIyLnJlYWQoKS50aGVuKHRlc3QxLnN0ZXBfZnVu
YyhmdW5jdGlvbihyKSB7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6
ICdhJywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IGNodW5rIGZyb20gYnJhbmNoMiBzaG91bGQgYmUg
Y29ycmVjdCcpOworICAgICAgICArK3JlYWRDYWxsczsKKyAgICB9KSk7Cit9KTsKKwordmFyIHRl
c3QyID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiB2YWx1ZXMgc2hvdWxkIGJl
IGVxdWFsIGFjcm9zcyBlYWNoIGJyYW5jaCcpOwordGVzdDIuc3RlcChmdW5jdGlvbigpIHsKKyAg
ICB2YXIgdGhlT2JqZWN0ID0geyB0aGU6ICd0ZXN0IG9iamVjdCcgfTsKKyAgICB2YXIgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgeworICAgICAg
ICAgICAgYy5lbnF1ZXVlKHRoZU9iamVjdCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHZh
ciBicmFuY2ggPSBycy50ZWUoKTsKKyAgICB2YXIgYnJhbmNoMSA9IGJyYW5jaFswXTsKKyAgICB2
YXIgYnJhbmNoMiA9IGJyYW5jaFsxXTsKKyAgICB2YXIgcmVhZGVyMSA9IGJyYW5jaDEuZ2V0UmVh
ZGVyKCk7CisgICAgdmFyIHJlYWRlcjIgPSBicmFuY2gyLmdldFJlYWRlcigpOworCisgICAgUHJv
bWlzZS5hbGwoW3JlYWRlcjEucmVhZCgpLCByZWFkZXIyLnJlYWQoKV0pLnRoZW4odGVzdDIuc3Rl
cF9mdW5jKGZ1bmN0aW9uKHZhbHVlcykgeworICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyh2
YWx1ZXNbMF0sIHZhbHVlc1sxXSwgJ3RoZSB2YWx1ZXMgc2hvdWxkIGJlIGVxdWFsJyk7CisgICAg
ICAgIHRlc3QyLmRvbmUoKTsKKyAgICB9KSk7Cit9KTsKKwordmFyIHRlc3QzID0gYXN5bmNfdGVz
dCgnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcnMgaW4gdGhlIHNvdXJjZSBzaG91bGQgcHJv
cGFnYXRlIHRvIGJvdGggYnJhbmNoZXMnKTsKK3Rlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7CisgICAg
dmFyIGNsb3NlZFJlamVjdHMgPSAwOworICAgIHZhciByZWFkQ2FsbHMgPSAwOworICAgIHZhciBy
ZWFkUmVqZWN0cyA9IDA7CisgICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdib28hJyk7Cisg
ICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9u
KGMpIHsKKyAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgICAgICAgYy5lbnF1ZXVl
KCdiJyk7CisgICAgICAgIH0sCisgICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgdGhyb3cgdGhlRXJyb3I7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHZhciBicmFuY2gg
PSBycy50ZWUoKTsKKyAgICB2YXIgYnJhbmNoMSA9IGJyYW5jaFswXTsKKyAgICB2YXIgYnJhbmNo
MiA9IGJyYW5jaFsxXTsKKyAgICB2YXIgcmVhZGVyMSA9IGJyYW5jaDEuZ2V0UmVhZGVyKCk7Cisg
ICAgdmFyIHJlYWRlcjIgPSBicmFuY2gyLmdldFJlYWRlcigpOworCisgICAgcmVhZGVyMS5sYWJl
bCA9ICdyZWFkZXIxJzsKKyAgICByZWFkZXIyLmxhYmVsID0gJ3JlYWRlcjInOworCisgICAgcmVh
ZGVyMS5jbG9zZWQuY2F0Y2godGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKKyAgICAgICAg
KytjbG9zZWRSZWplY3RzOworICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnYnJh
bmNoMSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7CisgICAg
fSkpOworICAgIHJlYWRlcjIuY2xvc2VkLmNhdGNoKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihl
KSB7CisgICAgICAgICsrY2xvc2VkUmVqZWN0czsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCB0
aGVFcnJvciwgJ2JyYW5jaDIgY2xvc2VkIHByb21pc2Ugc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBl
cnJvcicpOworICAgIH0pKTsKKworICAgIHJlYWRlcjEucmVhZCgpLnRoZW4odGVzdDMuc3RlcF9m
dW5jKGZ1bmN0aW9uKHIpIHsKKyAgICAgICAgKytyZWFkQ2FsbHM7CisgICAgICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3Nob3VsZCBiZSBh
YmxlIHRvIHJlYWQgdGhlIGZpcnN0IGNodW5rIGluIGJyYW5jaDEnKTsKKyAgICB9KSk7CisKKyAg
ICByZWFkZXIxLnJlYWQoKS50aGVuKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7CisgICAg
ICAgICsrcmVhZENhbGxzOworICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVl
OiAnYicsIGRvbmU6IGZhbHNlIH0sICdzaG91bGQgYmUgYWJsZSB0byByZWFkIHRoZSBzZWNvbmQg
Y2h1bmsgaW4gYnJhbmNoMScpOworCisgICAgICAgIHJldHVybiByZWFkZXIyLnJlYWQoKS50aGVu
KAorICAgICAgICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFj
aGVkKCdvbmNlIHRoZSByb290IHN0cmVhbSBoYXMgZXJyb3JlZCwgeW91IHNob3VsZCBub3QgYmUg
YWJsZSB0byByZWFkIGZyb20gYnJhbmNoMicpOyB9KSwKKyAgICAgICAgICAgIHRlc3QzLnN0ZXBf
ZnVuYyhmdW5jdGlvbihlKSB7CisgICAgICAgICAgICAgICAgKytyZWFkUmVqZWN0czsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnYnJhbmNoMiByZWFkKCkgcHJv
bWlzZSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7CisgICAgICAgICAgICB9KSk7Cisg
ICAgfSkpLnRoZW4odGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4g
cmVhZGVyMS5yZWFkKCkudGhlbigKKyAgICAgICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlv
bigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnb25jZSB0aGUgcm9vdCBzdHJlYW0gaGFzIGVycm9yZWQs
IHlvdSBzaG91bGQgbm90IGJlIGFibGUgdG8gcmVhZCBmcm9tIGJyYW5jaDEgZWl0aGVyJyk7IH0p
LAorICAgICAgICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKGNsb3NlZFJlamVjdHMsIDIpOworICAgICAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMocmVhZENhbGxzLCAyKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KCsrcmVhZFJlamVjdHMsIDIpOworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZSwgdGhl
RXJyb3IsICdicmFuY2gxIHJlYWQoKSBwcm9taXNlIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJy
b3InKTsKKyAgICAgICAgICAgICAgICB0ZXN0My5kb25lKCk7CisgICAgICAgICAgICB9KQorICAg
ICAgICApOworICAgIH0pKS5jYXRjaCh0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3Nl
cnRfdW5yZWFjaGVkKGUpOyB9KSk7Cit9KTsKKwordmFyIHRlc3Q0ID0gYXN5bmNfdGVzdCgnUmVh
ZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYnJhbmNoMSBzaG91bGQgbm90IGltcGFjdCBi
cmFuY2gyJyk7Cit0ZXN0NC5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciBicmFuY2gxUmVhZCA9
IGZhbHNlOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0
OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAgICAgICAg
IGMuZW5xdWV1ZSgnYicpOworICAgICAgICAgICAgYy5jbG9zZSgpOworICAgICAgICB9CisgICAg
fSk7CisKKyAgICB2YXIgYnJhbmNoID0gcnMudGVlKCk7CisgICAgdmFyIGJyYW5jaDEgPSBicmFu
Y2hbMF07CisgICAgdmFyIGJyYW5jaDIgPSBicmFuY2hbMV07CisgICAgYnJhbmNoMS5jYW5jZWwo
KTsKKworICAgIHJlYWRhYmxlU3RyZWFtVG9BcnJheShicmFuY2gxKS50aGVuKHRlc3Q0LnN0ZXBf
ZnVuYyhmdW5jdGlvbihjaHVua3MpIHsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVu
a3MsIFtdLCAnYnJhbmNoMSBzaG91bGQgaGF2ZSBubyBjaHVua3MnKTsKKyAgICAgICAgYnJhbmNo
MVJlYWQgPSB0cnVlOworICAgIH0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICByZWFkYWJsZVN0cmVhbVRvQXJyYXkoYnJhbmNo
MikudGhlbih0ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rpb24oY2h1bmtzKSB7CisgICAgICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbJ2EnLCAnYiddLCAnYnJhbmNoMiBzaG91bGQgaGF2ZSB0
d28gY2h1bmtzJyk7CisgICAgICAgIGFzc2VydF90cnVlKGJyYW5jaDFSZWFkKTsKKyAgICAgICAg
dGVzdDQuZG9uZSgpOworICAgIH0pKTsKK30pOworCit2YXIgdGVzdDUgPSBhc3luY190ZXN0KCdS
ZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBicmFuY2gyIHNob3VsZCBub3QgaW1wYWN0
IGJyYW5jaDEnKTsKK3Rlc3Q1LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIGJyYW5jaDJSZWFk
ID0gZmFsc2U7CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3Rh
cnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgICAg
ICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICAgICAgICBjLmNsb3NlKCk7CisgICAgICAgIH0KKyAg
ICB9KTsKKworICAgIHZhciBicmFuY2ggPSBycy50ZWUoKTsKKyAgICB2YXIgYnJhbmNoMSA9IGJy
YW5jaFswXTsKKyAgICB2YXIgYnJhbmNoMiA9IGJyYW5jaFsxXTsKKyAgICBicmFuY2gyLmNhbmNl
bCgpOworCisgICAgcmVhZGFibGVTdHJlYW1Ub0FycmF5KGJyYW5jaDEpLnRoZW4odGVzdDUuc3Rl
cF9mdW5jKGZ1bmN0aW9uKGNodW5rcykgeworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNo
dW5rcywgWydhJywgJ2InXSwgJ2JyYW5jaDEgc2hvdWxkIGhhdmUgdHdvIGNodW5rcycpOworICAg
ICAgICBhc3NlcnRfdHJ1ZShicmFuY2gyUmVhZCk7CisgICAgICAgIHRlc3Q1LmRvbmUoKTsKKyAg
ICB9KSk7CisgICAgcmVhZGFibGVTdHJlYW1Ub0FycmF5KGJyYW5jaDIpLnRoZW4odGVzdDUuc3Rl
cF9mdW5jKGZ1bmN0aW9uKGNodW5rcykgeworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNo
dW5rcywgW10sICdicmFuY2gyIHNob3VsZCBoYXZlIG5vIGNodW5rcycpOworICAgICAgICBicmFu
Y2gyUmVhZCA9IHRydWU7CisgICAgfSkpOworfSk7CisKK3ZhciB0ZXN0NiA9IGFzeW5jX3Rlc3Qo
J1JlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJvdGggYnJhbmNoZXMgc2hvdWxkIGFn
Z3JlZ2F0ZSB0aGUgY2FuY2VsIHJlYXNvbnMgaW50byBhbiBhcnJheScpOwordGVzdDYuc3RlcChm
dW5jdGlvbigpIHsKKyAgICB2YXIgcmVhc29uMSA9IG5ldyBFcnJvcignV2VcJ3JlIHdhbnRlZCBt
ZW4uJyk7CisgICAgdmFyIHJlYXNvbjIgPSBuZXcgRXJyb3IoJ0kgaGF2ZSB0aGUgZGVhdGggc2Vu
dGVuY2Ugb24gdHdlbHZlIHN5c3RlbXMuJyk7CisKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKHJlYXNvbikgeworICAgICAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhyZWFzb24sIFtyZWFzb24xLCByZWFzb24yXSwgJ3RoZSBjYW5j
ZWwgcmVhc29uIHNob3VsZCBiZSBhbiBhcnJheSBjb250YWluaW5nIHRob3NlIGZyb20gdGhlIGJy
YW5jaGVzJyk7CisgICAgICAgICAgICB0ZXN0Ni5kb25lKCk7CisgICAgICAgIH0KKyAgICB9KTsK
KworICAgIHZhciBicmFuY2ggPSBycy50ZWUoKTsKKyAgICB2YXIgYnJhbmNoMSA9IGJyYW5jaFsw
XTsKKyAgICB2YXIgYnJhbmNoMiA9IGJyYW5jaFsxXTsKKyAgICBicmFuY2gxLmNhbmNlbChyZWFz
b24xKTsKKyAgICBicmFuY2gyLmNhbmNlbChyZWFzb24yKTsKK30pOworCit2YXIgdGVzdDcgPSBh
c3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGZhaWxpbmcgdG8gY2FuY2VsIHRoZSBv
cmlnaW5hbCBzdHJlYW0gc2hvdWxkIGNhdXNlIGNhbmNlbCgpIHRvIHJlamVjdCBvbiBicmFuY2hl
cycpOwordGVzdDcuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgY2FuY2VsMVJlamVjdGVkID0g
ZmFsc2U7CisgICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdJXCdsbCBiZSBjYXJlZnVsLicp
OworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIGNhbmNlbDogZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICB0aHJvdyB0aGVFcnJvcjsKKyAgICAgICAgfQorICAgIH0p
OworCisgICAgdmFyIGJyYW5jaCA9IHJzLnRlZSgpOworICAgIHZhciBicmFuY2gxID0gYnJhbmNo
WzBdOworICAgIHZhciBicmFuY2gyID0gYnJhbmNoWzFdOworICAgIGJyYW5jaDEuY2FuY2VsKCku
Y2F0Y2godGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFs
cyhlLCB0aGVFcnJvciwgJ2JyYW5jaDEuY2FuY2VsKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBl
cnJvcicpOworICAgICAgICBjYW5jZWwxUmVqZWN0ZWQgPSB0cnVlOworICAgIH0pKTsKKyAgICBi
cmFuY2gyLmNhbmNlbCgpLmNhdGNoKHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CisgICAg
ICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdicmFuY2gyLmNhbmNlbCgpIHNob3VsZCBy
ZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoY2FuY2VsMVJlamVj
dGVkKTsKKyAgICAgICAgdGVzdDcuZG9uZSgpOworICAgIH0pKTsKK30pOworCit2YXIgdGVzdDgg
PSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNsb3NpbmcgdGhlIG9yaWdpbmFs
IHNob3VsZCBpbW1lZGlhdGVseSBjbG9zZSB0aGUgYnJhbmNoZXMnKTsKK3Rlc3Q4LnN0ZXAoZnVu
Y3Rpb24oKSB7CisgICAgdmFyIHJlYWRlcjFDbG9zZWQgPSBmYWxzZTsKKyAgICB2YXIgY29udHJv
bGxlcjsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDog
ZnVuY3Rpb24oYykgeworICAgICAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICAgIH0KKyAg
ICB9KTsKKworICAgIHZhciBicmFuY2ggPSBycy50ZWUoKTsKKyAgICB2YXIgYnJhbmNoMSA9IGJy
YW5jaFswXTsKKyAgICB2YXIgYnJhbmNoMiA9IGJyYW5jaFsxXTsKKyAgICB2YXIgcmVhZGVyMSA9
IGJyYW5jaDEuZ2V0UmVhZGVyKCk7CisgICAgdmFyIHJlYWRlcjIgPSBicmFuY2gyLmdldFJlYWRl
cigpOworCisgICAgcmVhZGVyMS5jbG9zZWQudGhlbih0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24o
KSB7CisgICAgICAgIHJlYWRlcjFDbG9zZWQgPSB0cnVlOyAvL2JyYW5jaDEgc2hvdWxkIGJlIGNs
b3NlZAorICAgIH0pKS5jYXRjaCh0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRf
dW5yZWFjaGVkKGUpOyB9KSk7CisgICAgcmVhZGVyMi5jbG9zZWQudGhlbih0ZXN0OC5zdGVwX2Z1
bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF90cnVlKHJlYWRlcjFDbG9zZWQpOworICAg
ICAgICB0ZXN0OC5kb25lKCdicmFuY2gyIHNob3VsZCBiZSBjbG9zZWQnKTsKKyAgICB9KSkuY2F0
Y2godGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSkp
OworCisgICAgY29udHJvbGxlci5jbG9zZSgpOworfSk7CisKK3ZhciB0ZXN0OSA9IGFzeW5jX3Rl
c3QoJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogZXJyb3JpbmcgdGhlIG9yaWdpbmFsIHNob3VsZCBp
bW1lZGlhdGVseSBlcnJvciB0aGUgYnJhbmNoZXMnKTsKK3Rlc3Q5LnN0ZXAoZnVuY3Rpb24oKSB7
CisgICAgdmFyIHJlYWRlcjFSZWplY3RlZCA9IGZhbHNlOworICAgIHZhciBjb250cm9sbGVyOwor
ICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0KGMpIHsKKyAg
ICAgICAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgICB9CisgICAgfSk7CisKKyAgICB2YXIg
YnJhbmNoID0gcnMudGVlKCk7CisgICAgdmFyIGJyYW5jaDEgPSBicmFuY2hbMF07CisgICAgdmFy
IGJyYW5jaDIgPSBicmFuY2hbMV07CisgICAgdmFyIHJlYWRlcjEgPSBicmFuY2gxLmdldFJlYWRl
cigpOworICAgIHZhciByZWFkZXIyID0gYnJhbmNoMi5nZXRSZWFkZXIoKTsKKworICAgIHZhciB0
aGVFcnJvciA9IG5ldyBFcnJvcignYm9vIScpOworCisgICAgcmVhZGVyMS5jbG9zZWQudGhlbigK
KyAgICAgICAgdGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdi
cmFuY2gxIHNob3VsZCBub3QgYmUgY2xvc2VkJyk7IH0pLAorICAgICAgICB0ZXN0OS5zdGVwX2Z1
bmMoZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwg
J2JyYW5jaDEgc2hvdWxkIGJlIGVycm9yZWQgd2l0aCB0aGUgZXJyb3InKTsKKyAgICAgICAgICAg
IHJlYWRlcjFSZWplY3RlZCA9IHRydWU7CisgICAgICAgIH0pCisgICAgKTsKKyAgICByZWFkZXIy
LmNsb3NlZC50aGVuKAorICAgICAgICB0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2Vy
dF91bnJlYWNoZWQoJ2JyYW5jaDIgc2hvdWxkIG5vdCBiZSBjbG9zZWQnKTsgfSksCisgICAgICAg
IHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KGUsIHRoZUVycm9yLCAnYnJhbmNoMiBzaG91bGQgYmUgZXJyb3JlZCB3aXRoIHRoZSBlcnJvcicp
OworICAgICAgICAgICAgYXNzZXJ0X3RydWUocmVhZGVyMVJlamVjdGVkKTsKKyAgICAgICAgICAg
IHRlc3Q5LmRvbmUoKTsKKyAgICAgICAgfSkKKyAgICApOworCisgICAgY29udHJvbGxlci5lcnJv
cih0aGVFcnJvcik7Cit9KTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlv
bi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dAppbmRleCBkNjFiYzkwYzNi
M2VmNzI4NzY4NzM3YTVhNzMzYjNhZjE3YzJiMGJhLi5hMWNkYzU5YzkzZTExZTdmNjhhNzBiN2Yx
Yjk1OWViYzMwY2EzMGNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5j
ZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJs
ZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dApAQCAtMSwzNCArMSw1MCBAQAogCiBQQVNT
IFJ1bm5pbmcgdGVtcGxhdGVkUlNFbXB0eSB3aXRoIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgCi1Q
QVNTIGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgCitG
QUlMIGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgYXNz
ZXJ0X2VxdWFsczogaGFzIGEgYm9vbGVhbiBsb2NrZWQgZ2V0dGVyIGV4cGVjdGVkICJib29sZWFu
IiBidXQgZ290ICJ1bmRlZmluZWQiCiBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFbXB0eVJlYWRl
ciB3aXRoIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyIAogUEFTUyBpbnN0YW5jZXMgaGF2
ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIAorRkFJTCBsb2NrZWQgc2hvdWxk
IGJlIHRydWUgYXNzZXJ0X3RydWU6IGxvY2tlZCBnZXR0ZXIgc2hvdWxkIHJldHVybiB0cnVlIGV4
cGVjdGVkIHRydWUgZ290IHVuZGVmaW5lZAorUEFTUyByZWFkKCkgc2hvdWxkIG5ldmVyIHNldHRs
ZSAKK1BBU1MgdHdvIHJlYWQoKXMgc2hvdWxkIGJvdGggbmV2ZXIgc2V0dGxlIAogUEFTUyByZWFk
KCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcyBlYWNoIHRpbWUgCiBQQVNTIGdldFJl
YWRlcigpIGFnYWluIG9uIHRoZSBzdHJlYW0gc2hvdWxkIGZhaWwgCitGQUlMIHJlbGVhc2luZyB0
aGUgbG9jayB3aXRoIHBlbmRpbmcgcmVhZCByZXF1ZXN0cyBzaG91bGQgdGhyb3cgYnV0IHRoZSBy
ZWFkIHJlcXVlc3RzIHNob3VsZCBzdGF5IHBlbmRpbmcgcmVsZWFzZUxvY2sgaXMgbm90IGltcGxl
bWVudGVkCiBGQUlMIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgZnVydGhlciByZWFk
KCkgY2FsbHMgdG8gcmVzb2x2ZSBhcyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCByZWxlYXNlTG9j
ayBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVz
ZSBjbG9zZWQgdG8gZnVsZmlsbCByZWxlYXNlTG9jayBpcyBub3QgaW1wbGVtZW50ZWQKK0ZBSUwg
cmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBsb2NrZWQgdG8gYmVjb21lIGZhbHNlIHJl
bGVhc2VMb2NrIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBjYW5jZWxpbmcgdmlhIHRoZSByZWFk
ZXIgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgdG8gYWN0IGNsb3NlZCBjYW5jZWwgaXMgbm90IGlt
cGxlbWVudGVkCiBGQUlMIGNhbmNlbGluZyB2aWEgdGhlIHN0cmVhbSBzaG91bGQgZmFpbCBjYW5j
ZWwgaXMgbm90IGltcGxlbWVudGVkCiBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWQgd2l0
aCBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0YXJ0KSAKIEZBSUwgY2FuY2Vs
KCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSBj
YW5jZWwgaXMgbm90IGltcGxlbWVudGVkCitGQUlMIGxvY2tlZCBzaG91bGQgYmUgZmFsc2UgYXNz
ZXJ0X2ZhbHNlOiBsb2NrZWQgZ2V0dGVyIHNob3VsZCByZXR1cm4gZmFsc2UgZXhwZWN0ZWQgZmFs
c2UgZ290IHVuZGVmaW5lZAogUEFTUyBnZXRSZWFkZXIoKSBzaG91bGQgYmUgT0sgCiBQQVNTIHNo
b3VsZCBiZSBhYmxlIHRvIGFjcXVpcmUgbXVsdGlwbGUgcmVhZGVycywgc2luY2UgdGhleSBhcmUg
YWxsIGF1dG8tcmVsZWFzZWQgCiBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIg
d2l0aCBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0YXJ0KSByZWFkZXIgCiBQ
QVNTIHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTog
dHJ1ZSB9IAogUEFTUyBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQgCitGQUlM
IGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNo
IHRpbWUgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJT
Q2xvc2VkIHdpdGggUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKSAKIEZBSUwgY2Fu
Y2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGlt
ZSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCitGQUlMIGxvY2tlZCBzaG91bGQgYmUgZmFsc2Ug
Y2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBnZXRSZWFkZXIoKSBzaG91bGQgYmUgT0sg
Y2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBzaG91bGQgYmUgYWJsZSB0byBhY3F1aXJl
IG11bHRpcGxlIHJlYWRlcnMsIHNpbmNlIHRoZXkgYXJlIGFsbCBhdXRvLXJlbGVhc2VkIGNhbmNl
bCBpcyBub3QgaW1wbGVtZW50ZWQKIFBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRl
ciB3aXRoIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbmNlbCkgcmVhZGVyIAogRkFJTCBy
ZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUg
fSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3
aXRoIHVuZGVmaW5lZCBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCitGQUlMIGNhbmNlbCgpIHNo
b3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgY2FuY2Vs
IGlzIG5vdCBpbXBsZW1lbnRlZAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRo
IFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KSAKIFBBU1MgZ2V0UmVh
ZGVyKCkgc2hvdWxkIHJldHVybiBhIHJlYWRlciB0aGF0IGFjdHMgZXJyb3JlZCAKK0ZBSUwgbG9j
a2VkIHNob3VsZCBiZSBmYWxzZSBhc3NlcnRfZmFsc2U6IGxvY2tlZCBnZXR0ZXIgc2hvdWxkIHJl
dHVybiBmYWxzZSBleHBlY3RlZCBmYWxzZSBnb3QgdW5kZWZpbmVkCiBQQVNTIFJ1bm5pbmcgdGVt
cGxhdGVkUlNFcnJvcmVkU3luY09ubHkgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEg
Y2FsbCBpbiBzdGFydCkgCiBGQUlMIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBy
ZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBGQUlM
IHJlYWRlciBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlz
ZSBlYWNoIHRpbWUgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogUEFTUyBzaG91bGQgYmUgYWJs
ZSB0byBhY3F1aXJlIG11bHRpcGxlIHJlYWRlcnMsIHNpbmNlIHRoZXkgYXJlIGFsbCBhdXRvLXJl
bGVhc2VkIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRoIFJlYWRhYmxlU3Ry
ZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSAK
K1RJTUVPVVQgZ2V0UmVhZGVyKCkgc2hvdWxkIHJldHVybiBhIHJlYWRlciB0aGF0IGFjdHMgZXJy
b3JlZCBUZXN0IHRpbWVkIG91dAorRkFJTCBsb2NrZWQgc2hvdWxkIGJlIGZhbHNlIGFzc2VydF9m
YWxzZTogbG9ja2VkIGdldHRlciBzaG91bGQgcmV0dXJuIGZhbHNlIGV4cGVjdGVkIGZhbHNlIGdv
dCB1bmRlZmluZWQKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIgd2l0aCBS
ZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBp
biBzdGFydCkgcmVhZGVyIAorVElNRU9VVCBjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBl
cnJvciBUZXN0IHRpbWVkIG91dAorVElNRU9VVCByZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRo
ZSBlcnJvciBUZXN0IHRpbWVkIG91dAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTVHdvQ2h1bmtz
T3BlblJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCBzdGls
bCBvcGVuKSByZWFkZXIgCiBQQVNTIGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGlu
ZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcyAKIFBBU1MgY2FsbGluZyByZWFkKCkg
dHdpY2Ugd2l0aCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1bmtzIApAQCAt
MzcsNyArNTMsNyBAQCBGQUlMIGNhbmNlbCgpIGFmdGVyIGEgcmVhZCgpIHNob3VsZCBzdGlsbCBn
aXZlIHRoYXQgc2luZ2xlIHJlYWQgcmVzdWx0IGNhbmNlbCBpcwogUEFTUyBSdW5uaW5nIHRlbXBs
YXRlZFJTVHdvQ2h1bmtzQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKHR3byBjaHVu
a3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXIgCiBQQVNTIHRoaXJkIHJlYWQoKSwgd2l0
aG91dCB3YWl0aW5nLCBzaG91bGQgZ2l2ZSB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUg
fSAKIFBBU1MgdGhpcmQgcmVhZCwgd2l0aCB3YWl0aW5nLCBzaG91bGQgZ2l2ZSB7IHZhbHVlOiB1
bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKLVBBU1MgZHJhaW5pbmcgdGhlIHN0cmVhbSB2aWEgcmVh
ZCgpIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIGNsb3NlZCBwcm9taXNlIHRvIGZ1bGZpbGwgCitG
QUlMIGRyYWluaW5nIHRoZSBzdHJlYW0gdmlhIHJlYWQoKSBzaG91bGQgY2F1c2UgdGhlIHJlYWRl
ciBjbG9zZWQgcHJvbWlzZSB0byBmdWxmaWxsIGFuZCBsb2NrZWQgdG8gYmUgZmFsc2UgYXNzZXJ0
X2ZhbHNlOiBzdHJlYW0gc2hvdWxkIG5vIGxvbmdlciBiZSBsb2NrZWQgZXhwZWN0ZWQgZmFsc2Ug
Z290IHVuZGVmaW5lZAogRkFJTCByZWxlYXNpbmcgdGhlIGxvY2sgYWZ0ZXIgdGhlIHN0cmVhbSBp
cyBjbG9zZWQgc2hvdWxkIGRvIG5vdGhpbmcgcmVsZWFzZUxvY2sgaXMgbm90IGltcGxlbWVudGVk
CiBGQUlMIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgcmVhZCgpIHRvIGFjdCBhcyBp
ZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCByZWxlYXNlTG9jayBpcyBub3QgaW1wbGVtZW50ZWQKIEZB
SUwgcmVhZGVyJ3MgY2xvc2VkIHByb3BlcnR5IGFsd2F5cyByZXR1cm5zIHRoZSBzYW1lIHByb21p
c2UgcmVsZWFzZUxvY2sgaXMgbm90IGltcGxlbWVudGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxh
dGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9y
ZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLmh0bWwKaW5kZXggZWQ0NDQyYzA1Njc4NGY5ZDgxNmNl
MTQyOTU1MDkwZmNhNTk0YTUxMS4uN2RkMmM1YjUyMDRjOWNkZjIzYTFiOWZmM2ExNjE0MWY0ZWJm
ZmM2NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50
YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQu
aHRtbApAQCAtMTAsMTAgKzEwLDEyIEBAIGZ1bmN0aW9uIHRlbXBsYXRlZFJTRW1wdHkobGFiZWws
IGZhY3RvcnkpIHsKICAgICB0ZXN0KGZ1bmN0aW9uKCkgewogICAgICAgICB2YXIgcnMgPSBmYWN0
b3J5KCk7CiAKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnMubG9ja2VkLCAnYm9vbGVh
bicsICdoYXMgYSBib29sZWFuIGxvY2tlZCBnZXR0ZXInKTsKICAgICAgICAgYXNzZXJ0X2VxdWFs
cyh0eXBlb2YgcnMuY2FuY2VsLCAnZnVuY3Rpb24nLCAnaGFzIGEgY2FuY2VsIG1ldGhvZCcpOwog
ICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBycy5nZXRSZWFkZXIsICdmdW5jdGlvbicsICdo
YXMgYSBnZXRSZWFkZXIgbWV0aG9kJyk7CiAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJz
LnBpcGVUaHJvdWdoLCAnZnVuY3Rpb24nLCAnaGFzIGEgcGlwZVRocm91Z2ggbWV0aG9kJyk7CiAg
ICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJzLnBpcGVUbywgJ2Z1bmN0aW9uJywgJ2hhcyBh
IHBpcGVUbyBtZXRob2QnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnMudGVlLCAn
ZnVuY3Rpb24nLCAnaGFzIGEgdGVlIG1ldGhvZCcpOwogICAgIH0sICdpbnN0YW5jZXMgaGF2ZSB0
aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzJyk7CiB9CiAKQEAgLTI1LDYgKzI3LDcg
QEAgZnVuY3Rpb24gdGVtcGxhdGVkUlNDbG9zZWQobGFiZWwsIGZhY3RvcnkpIHsKICAgICB0ZXN0
MS5zdGVwKGZ1bmN0aW9uKCkgewogICAgICAgICB2YXIgcnMgPSBmYWN0b3J5KCk7CiAgICAgICAg
IHZhciBwcm9taXNlc0NvdW50ID0gMDsKKyAgICAgICAgdmFyIGFsbENoZWNrZWQgPSBmYWxzZTsK
IAogICAgICAgICB2YXIgY2FuY2VsUHJvbWlzZTEgPSBycy5jYW5jZWwoKTsKICAgICAgICAgdmFy
IGNhbmNlbFByb21pc2UyID0gcnMuY2FuY2VsKCk7CkBAIC0zNiwxNCArMzksMjIgQEAgZnVuY3Rp
b24gdGVtcGxhdGVkUlNDbG9zZWQobGFiZWwsIGZhY3RvcnkpIHsKICAgICAgICAgY2FuY2VsUHJv
bWlzZTIudGhlbih0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24odikgewogICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdzZWNvbmQgY2FuY2VsKCkgY2FsbCBzaG91bGQgZnVs
ZmlsbCB3aXRoIHVuZGVmaW5lZCcpOwogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscygrK3Byb21p
c2VzQ291bnQsIDIpOworICAgICAgICAgICAgYXNzZXJ0X3RydWUoYWxsQ2hlY2tlZCk7CiAgICAg
ICAgICAgICB0ZXN0MS5kb25lKCk7CiAgICAgICAgIH0pKTsKICAgICAgICAgYXNzZXJ0X25vdF9l
cXVhbHMoY2FuY2VsUHJvbWlzZTEsIGNhbmNlbFByb21pc2UyLCAnY2FuY2VsKCkgY2FsbHMgc2hv
dWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcycpOworICAgICAgICBhbGxDaGVja2VkID0gdHJ1
ZTsKICAgICB9KTsKIAogICAgIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciBycyA9IGZh
Y3RvcnkoKTsKIAorICAgICAgICBhc3NlcnRfZmFsc2UocnMubG9ja2VkLCAnbG9ja2VkIGdldHRl
ciBzaG91bGQgcmV0dXJuIGZhbHNlJyk7CisgICAgfSwgJ2xvY2tlZCBzaG91bGQgYmUgZmFsc2Un
KTsKKworICAgIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBycyA9IGZhY3RvcnkoKTsK
KwogICAgICAgICBycy5nZXRSZWFkZXIoKTsgLy8gZ2V0UmVhZGVyKCkgc2hvdWxkIG5vdCB0aHJv
dy4KICAgICB9LCAnZ2V0UmVhZGVyKCkgc2hvdWxkIGJlIE9LJyk7CiAKQEAgLTYxLDcgKzcyLDcg
QEAgZnVuY3Rpb24gdGVtcGxhdGVkUlNFcnJvcmVkKGxhYmVsLCBmYWN0b3J5LCBlcnJvcikgewog
ICAgIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgfSwgJ1J1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVk
IHdpdGggJyArIGxhYmVsKTsKIAotICAgIHZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ2dldFJlYWRl
cigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQnKTsKKyAgICB2YXIg
dGVzdDEgPSBhc3luY190ZXN0KCdnZXRSZWFkZXIoKSBzaG91bGQgcmV0dXJuIGEgcmVhZGVyIHRo
YXQgYWN0cyBlcnJvcmVkJywgeyB0aW1lb3V0OiA1MCB9KTsKICAgICB0ZXN0MS5zdGVwKGZ1bmN0
aW9uKCkgewogICAgICAgICB2YXIgcnMgPSBmYWN0b3J5KCk7CiAgICAgICAgIHZhciBwcm9taXNl
c0NvdW50ID0gMDsKQEAgLTc4LDYgKzg5LDEyIEBAIGZ1bmN0aW9uIHRlbXBsYXRlZFJTRXJyb3Jl
ZChsYWJlbCwgZmFjdG9yeSwgZXJyb3IpIHsKICAgICAgICAgICAgIHRlc3QxLmRvbmUoKTsKICAg
ICAgICAgfSkpOwogICAgIH0pOworCisgICAgdGVzdChmdW5jdGlvbigpIHsKKyAgICAgICAgdmFy
IHJzID0gZmFjdG9yeSgpOworCisgICAgICAgIGFzc2VydF9mYWxzZShycy5sb2NrZWQsICdsb2Nr
ZWQgZ2V0dGVyIHNob3VsZCByZXR1cm4gZmFsc2UnKTsKKyAgICB9LCAnbG9ja2VkIHNob3VsZCBi
ZSBmYWxzZScpOwogfTsKIAogZnVuY3Rpb24gdGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkobGFi
ZWwsIGZhY3RvcnksIGVycm9yKSB7CkBAIC04OCw2ICsxMDUsNyBAQCBmdW5jdGlvbiB0ZW1wbGF0
ZWRSU0Vycm9yZWRTeW5jT25seShsYWJlbCwgZmFjdG9yeSwgZXJyb3IpIHsKICAgICB0ZXN0MS5z
dGVwKGZ1bmN0aW9uKCkgewogICAgICAgICB2YXIgcnMgPSBmYWN0b3J5KCk7CiAgICAgICAgIHZh
ciBwcm9taXNlc0NvdW50ID0gMDsKKyAgICAgICAgdmFyIGFsbENoZWNrZWQgPSBmYWxzZTsKIAog
ICAgICAgICB2YXIgY2FuY2VsUHJvbWlzZTEgPSBycy5jYW5jZWwoKTsKICAgICAgICAgdmFyIGNh
bmNlbFByb21pc2UyID0gcnMuY2FuY2VsKCk7CkBAIC05OSw5ICsxMTcsMTEgQEAgZnVuY3Rpb24g
dGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkobGFiZWwsIGZhY3RvcnksIGVycm9yKSB7CiAgICAg
ICAgIGNhbmNlbFByb21pc2UyLmNhdGNoKHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CiAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIGVycm9yLCAnc2Vjb25kIGNhbmNlbCgpIGNhbGwg
c2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOwogICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cygrK3Byb21pc2VzQ291bnQsIDIpOworICAgICAgICAgICAgYXNzZXJ0X3RydWUoYWxsQ2hlY2tl
ZCk7CiAgICAgICAgICAgICB0ZXN0MS5kb25lKCk7CiAgICAgICAgIH0pKTsKICAgICAgICAgYXNz
ZXJ0X25vdF9lcXVhbHMoY2FuY2VsUHJvbWlzZTEsIGNhbmNlbFByb21pc2UyLCAnY2FuY2VsKCkg
Y2FsbHMgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcycpOworICAgICAgICBhbGxDaGVj
a2VkID0gdHJ1ZTsKICAgICB9KTsKIAogICAgIHZhciB0ZXN0MiA9IGFzeW5jX3Rlc3QoJ3JlYWRl
ciBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNo
IHRpbWUnKTsKQEAgLTEwOSw2ICsxMjksNyBAQCBmdW5jdGlvbiB0ZW1wbGF0ZWRSU0Vycm9yZWRT
eW5jT25seShsYWJlbCwgZmFjdG9yeSwgZXJyb3IpIHsKICAgICAgICAgdmFyIHJzID0gZmFjdG9y
eSgpOwogICAgICAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CiAgICAgICAgIHZhciBw
cm9taXNlc0NvdW50ID0gMDsKKyAgICAgICAgdmFyIGFsbENoZWNrZWQgPSBmYWxzZTsKIAogICAg
ICAgICB2YXIgY2FuY2VsUHJvbWlzZTEgPSByZWFkZXIuY2FuY2VsKCk7CiAgICAgICAgIHZhciBj
YW5jZWxQcm9taXNlMiA9IHJlYWRlci5jYW5jZWwoKTsKQEAgLTEyMCw5ICsxNDEsMTEgQEAgZnVu
Y3Rpb24gdGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkobGFiZWwsIGZhY3RvcnksIGVycm9yKSB7
CiAgICAgICAgIGNhbmNlbFByb21pc2UyLmNhdGNoKHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbihl
KSB7CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIGVycm9yLCAnc2Vjb25kIGNhbmNlbCgp
IGNhbGwgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOwogICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscygrK3Byb21pc2VzQ291bnQsIDIpOworICAgICAgICAgICAgYXNzZXJ0X3RydWUoYWxs
Q2hlY2tlZCk7CiAgICAgICAgICAgICB0ZXN0Mi5kb25lKCk7CiAgICAgICAgIH0pKTsKICAgICAg
ICAgYXNzZXJ0X25vdF9lcXVhbHMoY2FuY2VsUHJvbWlzZTEsIGNhbmNlbFByb21pc2UyLCAnY2Fu
Y2VsKCkgY2FsbHMgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcycpOworICAgICAgICBh
bGxDaGVja2VkID0gdHJ1ZTsKICAgICB9KTsKIAogICAgIHRlc3QoZnVuY3Rpb24oKSB7CkBAIC0x
NTAsMzQgKzE3Myw0MCBAQCBmdW5jdGlvbiB0ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyKGxhYmVsLCBm
YWN0b3J5KSB7CiAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJlYWRlci5yZWxlYXNlTG9j
aywgJ2Z1bmN0aW9uJywgJ2hhcyBhIHJlbGVhc2VMb2NrIG1ldGhvZCcpOwogICAgIH0sICdpbnN0
YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzJyk7CiAKLSAgICAv
LyB2YXIgdGVzdDEgPSBhc3luY190ZXN0KCdyZWFkKCkgc2hvdWxkIG5ldmVyIHNldHRsZScpOwot
ICAgIC8vIHRlc3QxLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgLy8gICAgIHZhciB7IHJlYWRlciB9
ID0gZmFjdG9yeSgpOworICAgIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciB7IHN0cmVh
bSB9ID0gZmFjdG9yeSgpOwogCi0gICAgLy8gICAgIHJlYWRlci5yZWFkKCkudGhlbigKLSAgICAv
LyAgICAgICAgIHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgn
cmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpOyB9KSwKLSAgICAvLyAgICAgICAgIHRlc3QxLnN0
ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgncmVhZCgpIHNob3VsZCBub3Qg
cmVqZWN0Jyk7IH0pCi0gICAgLy8gICAgICk7CisgICAgICAgIGFzc2VydF90cnVlKHN0cmVhbS5s
b2NrZWQsICdsb2NrZWQgZ2V0dGVyIHNob3VsZCByZXR1cm4gdHJ1ZScpOworICAgIH0sICdsb2Nr
ZWQgc2hvdWxkIGJlIHRydWUnKTsKIAotICAgIC8vICAgICBzZXRUaW1lb3V0KHRlc3QxLnN0ZXBf
ZnVuYyhmdW5jdGlvbigpIHsgdGVzdDEuZG9uZSgpOyB9KSwgc3RhbmRhcmRUaW1lb3V0KTsKLSAg
ICAvLyB9KTsKKyAgICB2YXIgdGVzdDEgPSBhc3luY190ZXN0KCdyZWFkKCkgc2hvdWxkIG5ldmVy
IHNldHRsZScpOworICAgIHRlc3QxLnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciB7IHJl
YWRlciB9ID0gZmFjdG9yeSgpOwogCi0gICAgLy8gdmFyIHRlc3QyID0gYXN5bmNfdGVzdCgndHdv
IHJlYWQoKXMgc2hvdWxkIGJvdGggbmV2ZXIgc2V0dGxlJyk7Ci0gICAgLy8gdGVzdDIuc3RlcChm
dW5jdGlvbigpIHsKLSAgICAvLyAgICAgdmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7CisgICAg
ICAgIHJlYWRlci5yZWFkKCkudGhlbigKKyAgICAgICAgICAgIHRlc3QxLnN0ZXBfZnVuYyhmdW5j
dGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgncmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpOyB9
KSwKKyAgICAgICAgICAgIHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVh
Y2hlZCgncmVhZCgpIHNob3VsZCBub3QgcmVqZWN0Jyk7IH0pCisgICAgICAgICk7CiAKLSAgICAv
LyAgICAgcmVhZGVyLnJlYWQoKS50aGVuKAotICAgIC8vICAgICAgICAgdGVzdDIuc3RlcF9mdW5j
KGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdmaXJzdCByZWFkKCkgc2hvdWxkIG5vdCBm
dWxmaWxsJyk7IH0pLAotICAgIC8vICAgICAgICAgdGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
eyBhc3NlcnRfdW5yZWFjaGVkKCdmaXJzdCByZWFkKCkgc2hvdWxkIG5vdCByZWplY3QnKTsgfSkK
LSAgICAvLyAgICAgKTsKKyAgICAgICAgc2V0VGltZW91dCh0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rp
b24oKSB7IHRlc3QxLmRvbmUoKTsgfSksIDEwMDApOworICAgIH0pOwogCi0gICAgLy8gICAgIHJl
YWRlci5yZWFkKCkudGhlbigKLSAgICAvLyAgICAgICAgIHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlv
bigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnc2Vjb25kIHJlYWQoKSBzaG91bGQgbm90IGZ1bGZpbGwn
KTsgfSksCi0gICAgLy8gICAgICAgICB0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2Vy
dF91bnJlYWNoZWQoJ3NlY29uZCByZWFkKCkgc2hvdWxkIG5vdCByZWplY3QnKTsgfSkKLSAgICAv
LyAgICAgKTsKKyAgICB2YXIgdGVzdDIgPSBhc3luY190ZXN0KCd0d28gcmVhZCgpcyBzaG91bGQg
Ym90aCBuZXZlciBzZXR0bGUnKTsKKyAgICB0ZXN0Mi5zdGVwKGZ1bmN0aW9uKCkgeworICAgICAg
ICB2YXIgeyByZWFkZXIgfSA9IGZhY3RvcnkoKTsKIAotICAgIC8vICAgICBzZXRUaW1lb3V0KHRl
c3QyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgdGVzdDIuZG9uZSgpOyB9KSwgc3RhbmRhcmRUaW1l
b3V0KTsKLSAgICAvLyB9KTsKKyAgICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKAorICAgICAgICAg
ICAgdGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdmaXJzdCBy
ZWFkKCkgc2hvdWxkIG5vdCBmdWxmaWxsJyk7IH0pLAorICAgICAgICAgICAgdGVzdDIuc3RlcF9m
dW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdmaXJzdCByZWFkKCkgc2hvdWxkIG5v
dCByZWplY3QnKTsgfSkKKyAgICAgICAgKTsKKworICAgICAgICByZWFkZXIucmVhZCgpLnRoZW4o
CisgICAgICAgICAgICB0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNo
ZWQoJ3NlY29uZCByZWFkKCkgc2hvdWxkIG5vdCBmdWxmaWxsJyk7IH0pLAorICAgICAgICAgICAg
dGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdzZWNvbmQgcmVh
ZCgpIHNob3VsZCBub3QgcmVqZWN0Jyk7IH0pCisgICAgICAgICk7CisKKyAgICAgICAgc2V0VGlt
ZW91dCh0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IHRlc3QyLmRvbmUoKTsgfSksIDEwMDAp
OworICAgIH0pOwogCiAgICAgdGVzdChmdW5jdGlvbigpIHsKICAgICAgICAgdmFyIHsgcmVhZGVy
IH0gPSBmYWN0b3J5KCk7CkBAIC0xOTEsMjkgKzIyMCwyOSBAQCBmdW5jdGlvbiB0ZW1wbGF0ZWRS
U0VtcHR5UmVhZGVyKGxhYmVsLCBmYWN0b3J5KSB7CiAgICAgICAgIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgc3RyZWFtLmdldFJlYWRlcigpOyB9LCAnc3RyZWFt
LmdldFJlYWRlcigpIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwogICAgIH0sICdnZXRSZWFk
ZXIoKSBhZ2FpbiBvbiB0aGUgc3RyZWFtIHNob3VsZCBmYWlsJyk7CiAKLSAgICAvLyB2YXIgdGVz
dDMgPSBhc3luY190ZXN0KCdyZWxlYXNpbmcgdGhlIGxvY2sgd2l0aCBwZW5kaW5nIHJlYWQgcmVx
dWVzdHMgc2hvdWxkIHRocm93IGJ1dCB0aGUgcmVhZCByZXF1ZXN0cyBzaG91bGQgc3RheSBwZW5k
aW5nJyk7Ci0gICAgLy8gdGVzdDMuc3RlcChmdW5jdGlvbigpIHsKLSAgICAvLyAgICAgdmFyIHsg
cmVhZGVyIH0gPSBmYWN0b3J5KCk7CisgICAgdmFyIHRlc3QzID0gYXN5bmNfdGVzdCgncmVsZWFz
aW5nIHRoZSBsb2NrIHdpdGggcGVuZGluZyByZWFkIHJlcXVlc3RzIHNob3VsZCB0aHJvdyBidXQg
dGhlIHJlYWQgcmVxdWVzdHMgc2hvdWxkIHN0YXkgcGVuZGluZycpOworICAgIHRlc3QzLnN0ZXAo
ZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwogCi0gICAg
Ly8gICAgIHJlYWRlci5yZWFkKCkudGhlbigKLSAgICAvLyAgICAgICAgIHRlc3QzLnN0ZXBfZnVu
YyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnZmlyc3QgcmVhZCgpIHNob3VsZCBub3Qg
ZnVsZmlsbCcpOyB9KSwKLSAgICAvLyAgICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigp
IHsgYXNzZXJ0X3VucmVhY2hlZCgnZmlyc3QgcmVhZCgpIHNob3VsZCBub3QgcmVqZWN0Jyk7IH0p
Ci0gICAgLy8gICAgICk7CisgICAgICAgIHJlYWRlci5yZWFkKCkudGhlbigKKyAgICAgICAgICAg
IHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnZmlyc3QgcmVh
ZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpOyB9KSwKKyAgICAgICAgICAgIHRlc3QzLnN0ZXBfZnVu
YyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnZmlyc3QgcmVhZCgpIHNob3VsZCBub3Qg
cmVqZWN0Jyk7IH0pCisgICAgICAgICk7CiAKLSAgICAvLyAgICAgcmVhZGVyLnJlYWQoKS50aGVu
KAotICAgIC8vICAgICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5y
ZWFjaGVkKCdzZWNvbmQgcmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpOyB9KSwKLSAgICAvLyAg
ICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnc2Vj
b25kIHJlYWQoKSBzaG91bGQgbm90IHJlamVjdCcpOyB9KQotICAgIC8vICAgICApOworICAgICAg
ICByZWFkZXIucmVhZCgpLnRoZW4oCisgICAgICAgICAgICB0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rp
b24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ3NlY29uZCByZWFkKCkgc2hvdWxkIG5vdCBmdWxmaWxs
Jyk7IH0pLAorICAgICAgICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRf
dW5yZWFjaGVkKCdzZWNvbmQgcmVhZCgpIHNob3VsZCBub3QgcmVqZWN0Jyk7IH0pCisgICAgICAg
ICk7CiAKLSAgICAvLyAgICAgcmVhZGVyLmNsb3NlZC50aGVuKAotICAgIC8vICAgICAgICAgdGVz
dDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdjbG9zZWQgc2hvdWxk
IG5vdCBmdWxmaWxsJyk7IH0pLAotICAgIC8vICAgICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0
aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdjbG9zZWQgc2hvdWxkIG5vdCByZWplY3QnKTsgfSkK
LSAgICAvLyAgICAgKTsKKyAgICAgICAgcmVhZGVyLmNsb3NlZC50aGVuKAorICAgICAgICAgICAg
dGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdjbG9zZWQgc2hv
dWxkIG5vdCBmdWxmaWxsJyk7IH0pLAorICAgICAgICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0
aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdjbG9zZWQgc2hvdWxkIG5vdCByZWplY3QnKTsgfSkK
KyAgICAgICAgKTsKIAotICAgIC8vICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwg
dGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyByZWFkZXIucmVsZWFzZUxvY2soKTsgfSwgJ3Jl
bGVhc2VMb2NrIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpKTsKKyAgICAgICAgYXNzZXJ0X3Ro
cm93cyhuZXcgVHlwZUVycm9yKCksIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgcmVhZGVy
LnJlbGVhc2VMb2NrKCk7IH0sICdyZWxlYXNlTG9jayBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3In
KSk7CiAKLSAgICAvLyAgICAgc2V0VGltZW91dCh0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
IHRlc3QzLmRvbmUoKTsgfSksIHN0YW5kYXJkVGltZW91dCk7Ci0gICAgLy8gfSk7CisgICAgICAg
IHNldFRpbWVvdXQodGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyB0ZXN0My5kb25lKCk7IH0p
LCAxMDAwKTsKKyAgICB9KTsKIAogICAgIHZhciB0ZXN0NCA9IGFzeW5jX3Rlc3QoJ3JlbGVhc2lu
ZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVzb2x2ZSBh
cyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCcpOwogICAgIHRlc3Q0LnN0ZXAoZnVuY3Rpb24oKSB7
CkBAIC0yNTIsNiArMjgxLDEzIEBAIGZ1bmN0aW9uIHRlbXBsYXRlZFJTRW1wdHlSZWFkZXIobGFi
ZWwsIGZhY3RvcnkpIHsKICAgICAgICAgfSkpOwogICAgIH0pOwogCisgICAgdGVzdChmdW5jdGlv
bigpIHsKKyAgICAgICAgdmFyIHsgc3RyZWFtLCByZWFkZXIgfSA9IGZhY3RvcnkoKTsKKworICAg
ICAgICByZWFkZXIucmVsZWFzZUxvY2soKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKHN0cmVhbS5s
b2NrZWQsICdsb2NrZWQgZ2V0dGVyIHNob3VsZCByZXR1cm4gZmFsc2UnKTsKKyAgICB9LCAncmVs
ZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBsb2NrZWQgdG8gYmVjb21lIGZhbHNlJyk7CisK
ICAgICB2YXIgdGVzdDYgPSBhc3luY190ZXN0KCdjYW5jZWxpbmcgdmlhIHRoZSByZWFkZXIgc2hv
dWxkIGNhdXNlIHRoZSByZWFkZXIgdG8gYWN0IGNsb3NlZCcpOwogICAgIHRlc3Q2LnN0ZXAoZnVu
Y3Rpb24oKSB7CiAgICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwpAQCAtMzA0LDMy
ICszNDAsMzEgQEAgZnVuY3Rpb24gdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIobGFiZWwsIGZhY3Rv
cnkpIHsKICAgICAgICAgKTsKICAgICB9KTsKIAotICAgIC8vIHZhciB0ZXN0MyA9IGFzeW5jX3Rl
c3QoJ2NhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBl
YWNoIHRpbWUnKTsKLSAgICAvLyB0ZXN0My5zdGVwKGZ1bmN0aW9uKCkgewotICAgIC8vICAgICB2
YXIgeyByZWFkZXIgfSA9IGZhY3RvcnkoKTsKLSAgICAvLyAgICAgdmFyIHByb21pc2VDb3VudCA9
IDA7Ci0KLSAgICAvLyAgICAgdmFyIGNhbmNlbFByb21pc2UxID0gcmVhZGVyLmNhbmNlbCgpOwot
ICAgIC8vICAgICB2YXIgY2FuY2VsUHJvbWlzZTIgPSByZWFkZXIuY2FuY2VsKCk7Ci0gICAgLy8g
ICAgIHZhciBjbG9zZWRSZWFkZXJQcm9taXNlID0gcmVhZGVyLmNsb3NlZDsKLQotICAgIC8vICAg
ICBjYW5jZWxQcm9taXNlMS50aGVuKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbih2KSB7Ci0gICAg
Ly8gICAgICAgICBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ2ZpcnN0IGNhbmNlbCgpIGNh
bGwgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKLSAgICAvLyAgICAgICAgICsrcHJv
bWlzZUNvdW50OwotICAgIC8vICAgICB9KSk7Ci0gICAgLy8gICAgIGNhbmNlbFByb21pc2UyLnRo
ZW4odGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKHYpIHsKLSAgICAvLyAgICAgICAgIGFzc2VydF9l
cXVhbHModiwgdW5kZWZpbmVkLCAnc2Vjb25kIGNhbmNlbCgpIGNhbGwgc2hvdWxkIGZ1bGZpbGwg
d2l0aCB1bmRlZmluZWQnKTsKLSAgICAvLyAgICAgICAgICsrcHJvbWlzZUNvdW50OwotICAgIC8v
ICAgICB9KSk7Ci0gICAgLy8gICAgIGFzc2VydF9ub3RfZXF1YWxzKGNhbmNlbFByb21pc2UxLCBj
YW5jZWxQcm9taXNlMiwgJ2NhbmNlbCgpIGNhbGxzIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJv
bWlzZXMnKTsKLSAgICAvLyAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY2FuY2VsUHJvbWlzZTEsIGNs
b3NlZFJlYWRlclByb21pc2UsICdjYW5jZWwoKSBwcm9taXNlIDEgc2hvdWxkIGJlIGRpc3RpbmN0
IGZyb20gcmVhZGVyLmNsb3NlZCcpOwotICAgIC8vICAgICBhc3NlcnRfbm90X2VxdWFscyhjYW5j
ZWxQcm9taXNlMiwgY2xvc2VkUmVhZGVyUHJvbWlzZSwgJ2NhbmNlbCgpIHByb21pc2UgMiBzaG91
bGQgYmUgZGlzdGluY3QgZnJvbSByZWFkZXIuY2xvc2VkJyk7Ci0KLSAgICAvLyAgICAgc2V0VGlt
ZW91dCh0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgLy8gICAgICAgICBhc3NlcnRf
ZXF1YWxzKHByb21pc2VDb3VudCwgMik7Ci0gICAgLy8gICAgICAgICB0ZXN0My5kb25lKCk7Ci0g
ICAgLy8gICAgIH0pLCBzdGFuZGFyZFRpbWVvdXQpOwotICAgIC8vIH0pOworICAgIHZhciB0ZXN0
MyA9IGFzeW5jX3Rlc3QoJ2NhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxs
ZWQgcHJvbWlzZSBlYWNoIHRpbWUnKTsKKyAgICB0ZXN0My5zdGVwKGZ1bmN0aW9uKCkgeworICAg
ICAgICB2YXIgeyByZWFkZXIgfSA9IGZhY3RvcnkoKTsKKyAgICAgICAgdmFyIHByb21pc2VDb3Vu
dCA9IDA7CisgICAgICAgIHZhciBhbGxDaGVja2VkID0gZmFsc2U7CisKKyAgICAgICAgdmFyIGNh
bmNlbFByb21pc2UxID0gcmVhZGVyLmNhbmNlbCgpOworICAgICAgICB2YXIgY2FuY2VsUHJvbWlz
ZTIgPSByZWFkZXIuY2FuY2VsKCk7CisgICAgICAgIHZhciBjbG9zZWRSZWFkZXJQcm9taXNlID0g
cmVhZGVyLmNsb3NlZDsKKworICAgICAgICBjYW5jZWxQcm9taXNlMS50aGVuKHRlc3QzLnN0ZXBf
ZnVuYyhmdW5jdGlvbih2KSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5l
ZCwgJ2ZpcnN0IGNhbmNlbCgpIGNhbGwgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsK
KyAgICAgICAgICAgICsrcHJvbWlzZUNvdW50OworICAgICAgICB9KSk7CisgICAgICAgIGNhbmNl
bFByb21pc2UyLnRoZW4odGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKHYpIHsKKyAgICAgICAgICAg
IGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAnc2Vjb25kIGNhbmNlbCgpIGNhbGwgc2hvdWxk
IGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoKytw
cm9taXNlQ291bnQsIDIpOworICAgICAgICAgICAgYXNzZXJ0X3RydWUoYWxsQ2hlY2tlZCk7Cisg
ICAgICAgICAgICB0ZXN0My5kb25lKCk7CisgICAgICAgIH0pKTsKKyAgICAgICAgYXNzZXJ0X25v
dF9lcXVhbHMoY2FuY2VsUHJvbWlzZTEsIGNhbmNlbFByb21pc2UyLCAnY2FuY2VsKCkgY2FsbHMg
c2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcycpOworICAgICAgICBhc3NlcnRfbm90X2Vx
dWFscyhjYW5jZWxQcm9taXNlMSwgY2xvc2VkUmVhZGVyUHJvbWlzZSwgJ2NhbmNlbCgpIHByb21p
c2UgMSBzaG91bGQgYmUgZGlzdGluY3QgZnJvbSByZWFkZXIuY2xvc2VkJyk7CisgICAgICAgIGFz
c2VydF9ub3RfZXF1YWxzKGNhbmNlbFByb21pc2UyLCBjbG9zZWRSZWFkZXJQcm9taXNlLCAnY2Fu
Y2VsKCkgcHJvbWlzZSAyIHNob3VsZCBiZSBkaXN0aW5jdCBmcm9tIHJlYWRlci5jbG9zZWQnKTsK
KyAgICAgICAgYWxsQ2hlY2tlZCA9IHRydWU7CisgICAgfSk7CiB9OwogCiBmdW5jdGlvbiB0ZW1w
bGF0ZWRSU0Vycm9yZWRSZWFkZXIobGFiZWwsIGZhY3RvcnksIGVycm9yKSB7CkBAIC0zNDksNyAr
Mzg0LDcgQEAgZnVuY3Rpb24gdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyKGxhYmVsLCBmYWN0b3J5
LCBlcnJvcikgewogICAgICAgICApOwogICAgIH0pOwogCi0gICAgdmFyIHRlc3QyID0gYXN5bmNf
dGVzdCgncmVhZCgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKKyAgICB2YXIgdGVz
dDIgPSBhc3luY190ZXN0KCdyZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicsIHsg
dGltZW91dDogNTAgfSk7CiAgICAgdGVzdDIuc3RlcChmdW5jdGlvbigpIHsKICAgICAgICAgdmFy
IHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7CiAKQEAgLTQ3MiwxNSArNTA3LDE2IEBAIGZ1bmN0aW9u
IHRlbXBsYXRlZFJTVHdvQ2h1bmtzQ2xvc2VkUmVhZGVyKGxhYmVsLCBmYWN0b3J5LCBjaHVua3Mp
IHsKICAgICAgICAgfSkpLmNhdGNoKHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2Vy
dF91bnJlYWNoZWQoZSk7IH0pKTsKICAgICB9KTsKIAotICAgIHZhciB0ZXN0MyA9IGFzeW5jX3Rl
c3QoJ2RyYWluaW5nIHRoZSBzdHJlYW0gdmlhIHJlYWQoKSBzaG91bGQgY2F1c2UgdGhlIHJlYWRl
ciBjbG9zZWQgcHJvbWlzZSB0byBmdWxmaWxsJyk7CisgICAgdmFyIHRlc3QzID0gYXN5bmNfdGVz
dCgnZHJhaW5pbmcgdGhlIHN0cmVhbSB2aWEgcmVhZCgpIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVy
IGNsb3NlZCBwcm9taXNlIHRvIGZ1bGZpbGwgYW5kIGxvY2tlZCB0byBiZSBmYWxzZScpOwogICAg
IHRlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9y
eSgpOworICAgICAgICB2YXIgeyBzdHJlYW0sIHJlYWRlciB9ID0gZmFjdG9yeSgpOwogICAgICAg
ICB2YXIgcmVhZENhbGxlZCA9IGZhbHNlOwogCiAgICAgICAgIHJlYWRlci5jbG9zZWQudGhlbigK
ICAgICAgICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbih2KSB7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0X3RydWUocmVhZENhbGxlZCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyh2LCB1bmRlZmluZWQsICdyZWFkZXIgY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZp
bmVkJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKHN0cmVhbS5sb2NrZWQsICdzdHJl
YW0gc2hvdWxkIG5vIGxvbmdlciBiZSBsb2NrZWQnKTsKICAgICAgICAgICAgICAgICB0ZXN0My5k
b25lKCk7CiAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5j
dGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgncmVhZGVyIGNsb3NlZCBzaG91bGQgbm90IHJlamVj
dCcpOyB9KQpAQCAtNjE1LDI0ICs2NTEsMjMgQEAgdGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHko
J1JlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KScsIGZ1bmN0aW8KICAg
ICB0aGVFcnJvcgogKTsKIAotLy8gRklYTUU6IEFjdGl2YXRlIHRoZXNlIHRlc3RzIG9uY2UgUHJv
bWlzZSBoYW5kbGluZyBpcyBzdXBwb3J0ZWQgaW4gc3RhcnQgZnVuY3Rpb24uCi0vLyB0ZW1wbGF0
ZWRSU0Vycm9yZWQoJ1JlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWpl
Y3RlZCBwcm9taXNlIGluIHN0YXJ0KScsIGZ1bmN0aW9uKCkgewotLy8gICAgIHJldHVybiBuZXcg
UmVhZGFibGVTdHJlYW0oewotLy8gICAgICAgICBzdGFydDogZnVuY3Rpb24oKSB7Ci0vLyAgICAg
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QodGhlRXJyb3IpOwotLy8gICAgICAgICB9Ci0v
LyAgICAgfSl9LAotLy8gICAgIHRoZUVycm9yCi0vLyApOwotCi0vLyB0ZW1wbGF0ZWRSU0Vycm9y
ZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3Rl
ZCBwcm9taXNlIGluIHN0YXJ0KSByZWFkZXInLCBmdW5jdGlvbigpIHsKLS8vICAgICByZXR1cm4g
c3RyZWFtQW5kRGVmYXVsdFJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oewotLy8gICAgICAgICBz
dGFydDogZnVuY3Rpb24oKSB7Ci0vLyAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qo
dGhlRXJyb3IpOwotLy8gICAgICAgICB9Ci0vLyAgICAgfSkpfSwKLS8vICAgICB0aGVFcnJvcgot
Ly8gKTsKK3RlbXBsYXRlZFJTRXJyb3JlZCgnUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJl
dHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpJywgZnVuY3Rpb24oKSB7CisgICAg
cmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh0aGVFcnJvcik7CisgICAgICAgIH0K
KyAgICB9KX0sCisgICAgdGhlRXJyb3IKKyk7CisKK3RlbXBsYXRlZFJTRXJyb3JlZFJlYWRlcign
UmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2Ug
aW4gc3RhcnQpIHJlYWRlcicsIGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBzdHJlYW1BbmREZWZh
dWx0UmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh0aGVFcnJvcik7CisgICAgICAg
IH0KKyAgICB9KSl9LAorICAgIHRoZUVycm9yCispOwogCiB2YXIgY2h1bmtzID0gWydhJywgJ2In
XTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50
YXRpb24vcmVhZGFibGUtc3RyZWFtLmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5j
ZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbAppbmRleCA3MGYyM2E3NmU5MzAz
MjhjMjA4NmNiNzdhNmNmYjRmNjExZGM2MGIyLi5lMzllMDY0NDg0NDRhZGRmZjRjNDU3MDk2ZDhi
ZGI3YjFhNjRjNDM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbApAQCAtMTIs
MjEgKzEyLDMzIEBAIHRlc3QoZnVuY3Rpb24oKSB7CiB9LCAnUmVhZGFibGVTdHJlYW0gY2FuIGJl
IGNvbnN0cnVjdGVkIHdpdGggbm8gZXJyb3JzJyk7CiAKIHRlc3QoZnVuY3Rpb24oKSB7CisgICAg
YXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBuZXcgUmVhZGFibGVT
dHJlYW0obnVsbCk7IH0sICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc291cmNl
IGlzIG51bGwnKTsKK30sICdSZWFkYWJsZVN0cmVhbSBjYW5cJ3QgYmUgY29uc3RydWN0ZWQgd2l0
aCBnYXJiYWdlJyk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CiAgICAgdmFyIG1ldGhvZHMgPSBbJ2Nh
bmNlbCcsICdjb25zdHJ1Y3RvcicsICdnZXRSZWFkZXInLCAncGlwZVRocm91Z2gnLCAncGlwZVRv
JywgJ3RlZSddOworICAgIHZhciBwcm9wZXJ0aWVzID0gbWV0aG9kcy5jb25jYXQoWydsb2NrZWQn
XSkuc29ydCgpOwogCiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CiAgICAgdmFy
IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHJzKTsKIAotICAgIGFzc2VydF9hcnJheV9l
cXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvdG8pLnNvcnQoKSwgbWV0aG9kcywg
J3Nob3VsZCBoYXZlIGFsbCB0aGUgY29ycmVjdCBtZXRob2RzJyk7CisgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhwcm90bykuc29ydCgpLCBwcm9wZXJ0
aWVzLCAnc2hvdWxkIGhhdmUgYWxsIHRoZSBjb3JyZWN0IG1ldGhvZHMnKTsKIAogICAgIGZvciAo
dmFyIG0gb2YgbWV0aG9kcykgewogICAgICAgICB2YXIgcHJvcERlc2MgPSBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBtKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhwcm9w
RGVzYy5lbnVtZXJhYmxlLCBmYWxzZSwgJ21ldGhvZCBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUn
KTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhwcm9wRGVzYy5jb25maWd1cmFibGUsIHRydWUsICdt
ZXRob2Qgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZScpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHBy
b3BEZXNjLndyaXRhYmxlLCB0cnVlLCAnbWV0aG9kIHNob3VsZCBiZSB3cml0YWJsZScpOworICAg
ICAgICBhc3NlcnRfZmFsc2UocHJvcERlc2MuZW51bWVyYWJsZSwgJ21ldGhvZCBzaG91bGQgYmUg
bm9uLWVudW1lcmFibGUnKTsKKyAgICAgICAgYXNzZXJ0X3RydWUocHJvcERlc2MuY29uZmlndXJh
YmxlLCAnbWV0aG9kIHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsKKyAgICAgICAgYXNzZXJ0X3Ry
dWUocHJvcERlc2Mud3JpdGFibGUsICdtZXRob2Qgc2hvdWxkIGJlIHdyaXRhYmxlJyk7CiAgICAg
ICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJzW21dLCAnZnVuY3Rpb24nLCAnc2hvdWxkIGhhdmUg
YmUgYSBtZXRob2QnKTsKICAgICB9CiAKKyAgICB2YXIgbG9ja2VkUHJvcERlc2MgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCAnbG9ja2VkJyk7CisgICAgYXNzZXJ0X2Zh
bHNlKGxvY2tlZFByb3BEZXNjLmVudW1lcmFibGUsICdsb2NrZWQgc2hvdWxkIGJlIG5vbi1lbnVt
ZXJhYmxlJyk7CisgICAgYXNzZXJ0X2VxdWFscyhsb2NrZWRQcm9wRGVzYy53cml0YWJsZSwgdW5k
ZWZpbmVkLCAnbG9ja2VkIHNob3VsZCBub3QgYmUgYSBkYXRhIHByb3BlcnR5Jyk7CisgICAgYXNz
ZXJ0X2VxdWFscyh0eXBlb2YgbG9ja2VkUHJvcERlc2MuZ2V0LCAnZnVuY3Rpb24nLCAnbG9ja2Vk
IHNob3VsZCBoYXZlIGEgZ2V0dGVyJyk7CisgICAgYXNzZXJ0X2VxdWFscyhsb2NrZWRQcm9wRGVz
Yy5zZXQsIHVuZGVmaW5lZCwgJ2xvY2tlZCBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXInKTsKKyAg
ICBhc3NlcnRfdHJ1ZShsb2NrZWRQcm9wRGVzYy5jb25maWd1cmFibGUsICdsb2NrZWQgc2hvdWxk
IGJlIGNvbmZpZ3VyYWJsZScpOworCiAgICAgYXNzZXJ0X2VxdWFscyhycy5jYW5jZWwubGVuZ3Ro
LCAxLCAnY2FuY2VsIHNob3VsZCBoYXZlIDEgcGFyYW1ldGVyJyk7CiAgICAgYXNzZXJ0X2VxdWFs
cyhycy5jb25zdHJ1Y3Rvci5sZW5ndGgsIDAsICdjb25zdHJ1Y3RvciBzaG91bGQgaGF2ZSBubyBw
YXJhbWV0ZXJzJyk7CiAgICAgYXNzZXJ0X2VxdWFscyhycy5nZXRSZWFkZXIubGVuZ3RoLCAwLCAn
Z2V0UmVhZGVyIHNob3VsZCBoYXZlIG5vIHBhcmFtZXRlcnMnKTsKQEAgLTUwLDYwICs2MiwxMzIg
QEAgdGVzdChmdW5jdGlvbigpIHsKIH0sICdSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4g
Z2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBwdWxsIGFyZ3VtZW50Jyk7CiAKIHRlc3QoZnVuY3Rpb24o
KSB7Ci0gICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsgc3RyYXRlZ3k6IDIgfSk7IC8vIENvbnN0cnVj
dG9yIHNob3VsZCBub3QgdGhyb3cgd2hlbiBzdHJhdGVneSBpcyBub3QgYW4gb2JqZWN0LgotfSwg
J1JlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5pdGlhbCBnYXJiYWdlIGFzIHN0
cmF0ZWd5IGFyZ3VtZW50Jyk7CisgICAgdmFyIHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisgICAgdmFy
IHNvdXJjZSA9IHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGNvbnRyb2xsZXIpIHsKKyAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHModGhpcywgc291cmNlLCAnc291cmNlIGlzIHRoaXMgZHVyaW5n
IHN0YXJ0Jyk7CisKKyAgICAgICAgICAgIHZhciBtZXRob2RzID0gWydjbG9zZScsICdlbnF1ZXVl
JywgJ2Vycm9yJywgJ2NvbnN0cnVjdG9yJ107CisgICAgICAgICAgICB2YXIgcHJvcGVydGllcyA9
IFsnZGVzaXJlZFNpemUnXS5jb25jYXQobWV0aG9kcykuc29ydCgpOworICAgICAgICAgICAgdmFy
IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGNvbnRyb2xsZXIpOworCisgICAgICAgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvKS5z
b3J0KCksIHByb3BlcnRpZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUg
Y29udHJvbGxlciBzaG91bGQgaGF2ZSB0aGUgcmlnaHQgcHJvcGVydGllcycpOworCisgICAgICAg
ICAgICBmb3IgKHZhciBtIG9mIG1ldGhvZHMpIHsKKyAgICAgICAgICAgICAgICB2YXIgcHJvcERl
c2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBtKTsKKyAgICAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBjb250cm9sbGVyW21dLCAnZnVuY3Rpb24nLCBg
c2hvdWxkIGhhdmUgYSAke219IG1ldGhvZGApOworICAgICAgICAgICAgICAgIGFzc2VydF9mYWxz
ZShwcm9wRGVzYy5lbnVtZXJhYmxlLCBtICsgIiBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUiKTsK
KyAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShwcm9wRGVzYy5jb25maWd1cmFibGUsIG0gKyAi
IHNob3VsZCBiZSBjb25maWd1cmFibGUiKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShw
cm9wRGVzYy53cml0YWJsZSwgbSArICIgc2hvdWxkIGJlIHdyaXRhYmxlIik7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciBkZXNpcmVkU2l6ZVByb3BEZXNjID0gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgJ2Rlc2lyZWRTaXplJyk7CisgICAgICAgICAgICBh
c3NlcnRfZmFsc2UoZGVzaXJlZFNpemVQcm9wRGVzYy5lbnVtZXJhYmxlLCAnZGVzaXJlZFNpemUg
c2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlJyk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRl
c2lyZWRTaXplUHJvcERlc2Mud3JpdGFibGUsIHVuZGVmaW5lZCwgJ2Rlc2lyZWRTaXplIHNob3Vs
ZCBub3QgYmUgYSBkYXRhIHByb3BlcnR5Jyk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5
cGVvZiBkZXNpcmVkU2l6ZVByb3BEZXNjLmdldCwgJ2Z1bmN0aW9uJywgJ2Rlc2lyZWRTaXplIHNo
b3VsZCBoYXZlIGEgZ2V0dGVyJyk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2lyZWRT
aXplUHJvcERlc2Muc2V0LCB1bmRlZmluZWQsICdkZXNpcmVkU2l6ZSBzaG91bGQgbm90IGhhdmUg
YSBzZXR0ZXInKTsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKGRlc2lyZWRTaXplUHJvcERlc2Mu
Y29uZmlndXJhYmxlLCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZScpOworCisg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuY2xvc2UubGVuZ3RoLCAwLCAnY2xv
c2Ugc2hvdWxkIGhhdmUgbm8gcGFyYW1ldGVycycpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhjb250cm9sbGVyLmNvbnN0cnVjdG9yLmxlbmd0aCwgMSwgJ2NvbnN0cnVjdG9yIHNob3VsZCBo
YXZlIDEgcGFyYW1ldGVyJyk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIu
ZW5xdWV1ZS5sZW5ndGgsIDEsICdlbnF1ZXVlIHNob3VsZCBoYXZlIDEgcGFyYW1ldGVyJyk7Cisg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZXJyb3IubGVuZ3RoLCAxLCAnZXJy
b3Igc2hvdWxkIGhhdmUgMSBwYXJhbWV0ZXInKTsKKworICAgICAgICAgICAgc3RhcnRDYWxsZWQg
PSB0cnVlOworICAgICAgICB9CisgICAgfTsKKworICAgIG5ldyBSZWFkYWJsZVN0cmVhbShzb3Vy
Y2UpOworICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKK30sICdSZWFkYWJsZVN0cmVhbSBz
dGFydCBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHByb3BlciBwYXJhbWV0ZXJzJyk7CisKK3Rl
c3QoZnVuY3Rpb24oKSB7CisgICAgdmFyIHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisgICAgdmFyIHNv
dXJjZSA9IHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGNvbnRyb2xsZXIpIHsKKyAgICAgICAg
ICAgIHZhciBwcm9wZXJ0aWVzID0gWydjbG9zZScsICdjb25zdHJ1Y3RvcicsICdkZXNpcmVkU2l6
ZScsICdlbnF1ZXVlJywgJ2Vycm9yJ107CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE9iamVjdC5nZXRQcm90b3R5cGVPZihjb250cm9s
bGVyKSkuc29ydCgpLCBwcm9wZXJ0aWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAncHJvdG90eXBlIHNob3VsZCBoYXZlIHRoZSByaWdodCBwcm9wZXJ0aWVzJyk7CisgICAgICAg
ICAgICBjb250cm9sbGVyLnRlc3QgPSAnJzsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2JqZWN0LmdldFByb3RvdHlwZU9mKGNvbnRy
b2xsZXIpKS5zb3J0KCksIHByb3BlcnRpZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdwcm90b3R5cGUgc2hvdWxkIHN0aWxsIGhhdmUgdGhlIHJpZ2h0IHByb3BlcnRpZXMnKTsK
KyAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVz
KGNvbnRyb2xsZXIpLmluZGV4T2YoJ3Rlc3QnKSwgLTEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnInRlc3QiIHNob3VsZCBiZSBhIHByb3BlcnR5IG9mIHRoZSBjb250cm9sbGVyJyk7
CisKKyAgICAgICAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH07CiAK
LXZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBh
YmxlIHRvIHJldHVybiBhIHByb21pc2UnLCB7IHRpbWVvdXQ6IDUwIH0pOworICAgIHZhciBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbShzb3VyY2UpOworICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVk
KTsKK30sICdSZWFkYWJsZVN0cmVhbSBzdGFydCBjb250cm9sbGVyIHBhcmFtZXRlciBzaG91bGQg
YmUgZXh0ZW5zaWJsZScpOworCit2YXIgdGVzdDEgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVh
bSBzaG91bGQgYmUgYWJsZSB0byBjYWxsIHN0YXJ0IG1ldGhvZCB3aXRoaW4gcHJvdG90eXBlIGNo
YWluIG9mIGl0cyBzb3VyY2UnKTsKIHRlc3QxLnN0ZXAoZnVuY3Rpb24oKQogeworICAgIGZ1bmN0
aW9uIFNpbXBsZVN0cmVhbVNvdXJjZSgpIHsKKyAgICB9OworICAgIFNpbXBsZVN0cmVhbVNvdXJj
ZS5wcm90b3R5cGUgPSB7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IHRlc3QxLmRvbmUoJ3N0YXJ0IHNob3VsZCBiZSBjYWxsZWQnKTsKKyAgICAgICAgfSwKKyAgICB9
CisKKyAgICBuZXcgUmVhZGFibGVTdHJlYW0obmV3IFNpbXBsZVN0cmVhbVNvdXJjZSgpKTsKK30p
OworCit2YXIgdGVzdDIgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQg
YmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNlJyk7Cit0ZXN0Mi5zdGVwKGZ1bmN0aW9uKCkKK3sK
ICAgICB2YXIgcmVhZENhbGxlZCA9IGZhbHNlOwogICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7CiAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICByZXR1cm4g
bmV3IFByb21pc2UodGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewot
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbihy
ZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3QyLnN0ZXBf
ZnVuYyhmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7CiAg
ICAgICAgICAgICAgICAgICAgIGMuY2xvc2UoKTsKICAgICAgICAgICAgICAgICAgICAgcmVzb2x2
ZSgpOwotICAgICAgICAgICAgICAgIH0pLCBzdGFuZGFyZFRpbWVvdXQpOworICAgICAgICAgICAg
ICAgIH0pLCA1MDApOwogICAgICAgICAgICAgfSkpOwogICAgICAgICB9LAogICAgIH0pOwogCiAg
ICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwogCi0gICAgcmVhZGVyLnJlYWQoKS50aGVu
KHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7CisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHRl
c3QyLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7CiAgICAgICAgIHJlYWRDYWxsZWQgPSB0cnVlOwog
ICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNl
IH0sICd2YWx1ZSByZWFkIHNob3VsZCBiZSB0aGUgb25lIGVucXVldWVkJyk7CiAgICAgfSkpOwog
Ci0gICAgcmVhZGVyLmNsb3NlZC50aGVuKHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAg
ICByZWFkZXIuY2xvc2VkLnRoZW4odGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewogICAgICAg
ICBhc3NlcnRfdHJ1ZShyZWFkQ2FsbGVkKTsKLSAgICAgICAgdGVzdDEuZG9uZSgnc3RyZWFtIHNo
b3VsZCBjbG9zZSBzdWNjZXNzZnVsbHknKTsKKyAgICAgICAgdGVzdDIuZG9uZSgnc3RyZWFtIHNo
b3VsZCBjbG9zZSBzdWNjZXNzZnVsbHknKTsKICAgICB9KSk7CiB9KTsKIAotdmFyIHRlc3QyID0g
YXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJu
IGEgcHJvbWlzZSBhbmQgcmVqZWN0IGl0JywgeyB0aW1lb3V0OiAxMDAgfSk7Ci10ZXN0Mi5zdGVw
KGZ1bmN0aW9uKCkKK3ZhciB0ZXN0MyA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0
IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCcsIHsgdGlt
ZW91dDogMTAwIH0pOwordGVzdDMuc3RlcChmdW5jdGlvbigpCiB7CiAgICAgdmFyIHRoZUVycm9y
ID0gbmV3IEVycm9yKCdyZWplY3RlZCEnKTsKICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oewogICAgICAgICBzdGFydDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3
IFByb21pc2UodGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewotICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXNv
bHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3QzLnN0ZXBfZnVu
YyhmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHRoZUVycm9yKTsKLSAg
ICAgICAgICAgICAgICB9KSwgc3RhbmRhcmRUaW1lb3V0KTsKKyAgICAgICAgICAgICAgICB9KSwg
NTAwKTsKICAgICAgICAgICAgIH0pKTsKICAgICAgICAgfSwKICAgICB9KTsKIAotICAgIHJzLmdl
dFJlYWRlcigpLmNsb3NlZC5jYXRjaCh0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeworICAg
IHJzLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaCh0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkg
ewogICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAncHJvbWlzZSBzaG91bGQgYmUg
cmVqZWN0ZWQgd2l0aCB0aGUgc2FtZSBlcnJvcicpOwotICAgICAgICB0ZXN0Mi5kb25lKCk7Cisg
ICAgICAgIHRlc3QzLmRvbmUoKTsKICAgICB9KSk7CiB9KTsKIAotdmFyIHRlc3QzID0gYXN5bmNf
dGVzdCgnUmVhZGFibGVTdHJlYW0gc2hvdWxkIGJlIGFibGUgdG8gZW5xdWV1ZSBkaWZmZXJlbnQg
b2JqZWN0cy4nKTsKLXRlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7Cit2YXIgdGVzdDQgPSBhc3luY190
ZXN0KCdSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBlbnF1ZXVlIGRpZmZlcmVudCBv
YmplY3RzLicpOwordGVzdDQuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgcmVhZENhbGxzID0g
MDsKICAgICB2YXIgb2JqZWN0cyA9IFsKICAgICB7IHBvdGF0bzogJ0dpdmUgbWUgbW9yZSEnfSwK
QEAgLTEyMiwzMiArMjA2LDI2IEBAIHRlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7CiAKICAgICB2YXIg
cmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CiAKLSAgICByZWFkZXIucmVhZCgpLnRoZW4odGVzdDMu
c3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKKyAgICByZWFkZXIucmVhZCgpLnRoZW4odGVzdDQuc3Rl
cF9mdW5jKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2
YWx1ZTogb2JqZWN0c1tyZWFkQ2FsbHMrK10sIGRvbmU6IGZhbHNlIH0sICd2YWx1ZSByZWFkIHNo
b3VsZCBiZSB0aGUgb25lIGVucXVldWVkJyk7CiAgICAgfSkpOwogCi0gICAgcmVhZGVyLnJlYWQo
KS50aGVuKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7CisgICAgcmVhZGVyLnJlYWQoKS50
aGVuKHRlc3Q0LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7CiAgICAgICAgIGFzc2VydF9vYmplY3Rf
ZXF1YWxzKHIsIHsgdmFsdWU6IG9iamVjdHNbcmVhZENhbGxzKytdLCBkb25lOiBmYWxzZSB9LCAn
dmFsdWUgcmVhZCBzaG91bGQgYmUgdGhlIG9uZSBlbnF1ZXVlZCcpOwogICAgIH0pKTsKIAotICAg
IHJlYWRlci5yZWFkKCkudGhlbih0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgeworICAgIHJl
YWRlci5yZWFkKCkudGhlbih0ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgewogICAgICAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiBvYmplY3RzW3JlYWRDYWxscysrXSwgZG9u
ZTogZmFsc2UgfSwgJ3ZhbHVlIHJlYWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQnKTsKICAg
ICB9KSk7CiAKLSAgICByZWFkZXIuY2xvc2VkLnRoZW4odGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9u
KCkgeworICAgIHJlYWRlci5jbG9zZWQudGhlbih0ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
CiAgICAgICAgIGFzc2VydF9lcXVhbHMocmVhZENhbGxzLCAzKTsKLSAgICAgICAgdGVzdDMuZG9u
ZSgnc3RyZWFtIHNob3VsZCBjbG9zZSBjb3JyZWN0bHkgY29ycmVjdGx5Jyk7CisgICAgICAgIHRl
c3Q0LmRvbmUoJ3N0cmVhbSBzaG91bGQgY2xvc2UgY29ycmVjdGx5IGNvcnJlY3RseScpOwogICAg
IH0pKTsKIH0pOwogCi10ZXN0KGZ1bmN0aW9uKCkgewotICAgIHZhciBlcnJvciA9IG5ldyBFcnJv
cignYWFhdWdoISEnKTsKLQotICAgIGFzc2VydF90aHJvd3MoZXJyb3IsIGZ1bmN0aW9uKCkgeyBu
ZXcgUmVhZGFibGVTdHJlYW0oeyBzdGFydCgpIHsgdGhyb3cgZXJyb3I7IH0gfSkgfSwgJ2Vycm9y
IHNob3VsZCBiZSByZS10aHJvd24nKTsKLX0sICdSZWFkYWJsZVN0cmVhbTogaWYgc3RhcnQgdGhy
b3dzIGFuIGVycm9yLCBpdCBzaG91bGQgYmUgcmUtdGhyb3duJyk7Ci0KLXZhciB0ZXN0NCA9IGFz
eW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBpZiBwdWxsIHJlamVjdHMsIGl0IHNob3VsZCBlcnJv
ciB0aGUgc3RyZWFtJywgeyB0aW1lb3V0OiA1MCB9KTsKLXRlc3Q0LnN0ZXAoZnVuY3Rpb24oKSB7
Cit2YXIgdGVzdDUgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogaWYgcHVsbCByZWplY3Rz
LCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbScsIHsgdGltZW91dDogNTAgfSk7Cit0ZXN0NS5z
dGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcigncHVsbCBmYWlsdXJl
Jyk7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKICAgICAgICAgcHVsbDogZnVu
Y3Rpb24oKSB7CkBAIC0xNjAsMjEzICsyMzgsMTcyIEBAIHRlc3Q0LnN0ZXAoZnVuY3Rpb24oKSB7
CiAgICAgdmFyIGNsb3NlZCA9IGZhbHNlOwogICAgIHZhciByZWFkID0gZmFsc2U7CiAKLSAgICBy
ZWFkZXIuY2xvc2VkLmNhdGNoKHRlc3Q0LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CisgICAgcmVh
ZGVyLmNsb3NlZC5jYXRjaCh0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewogICAgICAgICBj
bG9zZWQgPSB0cnVlOwogICAgICAgICBhc3NlcnRfZmFsc2UocmVhZCk7CiAgICAgICAgIGFzc2Vy
dF9lcXVhbHMoZSwgZXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSB0aHJvd24g
ZXJyb3InKTsKICAgICB9KSk7CiAKLSAgICByZWFkZXIucmVhZCgpLmNhdGNoKHRlc3Q0LnN0ZXBf
ZnVuYyhmdW5jdGlvbihlKSB7CisgICAgcmVhZGVyLnJlYWQoKS5jYXRjaCh0ZXN0NS5zdGVwX2Z1
bmMoZnVuY3Rpb24oZSkgewogICAgICAgICByZWFkID0gdHJ1ZTsKICAgICAgICAgYXNzZXJ0X3Ry
dWUoY2xvc2VkKTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCBlcnJvciwgJ3JlYWQoKSBzaG91
bGQgcmVqZWN0IHdpdGggdGhlIHRocm93biBlcnJvcicpOwotICAgICAgICB0ZXN0NC5kb25lKCk7
CisgICAgICAgIHRlc3Q1LmRvbmUoKTsKICAgICB9KSk7CiB9KTsKIAotLy8gdmFyIHRlc3Q1ID0g
YXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIHVw
b24gc3RhcnRpbmcgdGhlIHN0cmVhbScpOwotLy8gdGVzdDUuc3RlcChmdW5jdGlvbigpIHsKLS8v
ICAgICB2YXIgcHVsbENvdW50ID0gMDsKLS8vICAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlz
ZS5yZXNvbHZlKCk7Ci0vLyAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLS8vICAg
ICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkgewotLy8gICAgICAgICAgICAgcmV0dXJuIHN0YXJ0UHJv
bWlzZTsKLS8vICAgICAgICAgfSwKLS8vICAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7Ci0vLyAg
ICAgICAgICAgICBwdWxsQ291bnQrKzsKLS8vICAgICAgICAgfQotLy8gICAgIH0pOwotCi0vLyAg
ICAgc3RhcnRQcm9taXNlLnRoZW4odGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotLy8gICAg
ICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBv
bmNlIHN0YXJ0IGZpbmlzaGVzJyk7Ci0vLyAgICAgfSkpOwordmFyIHRlc3Q2ID0gYXN5bmNfdGVz
dCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIHVwb24gc3RhcnRp
bmcgdGhlIHN0cmVhbScpOwordGVzdDYuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgcHVsbENv
dW50ID0gMDsKKyAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAg
dmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKKyAgICAgICAgfSwKKyAgICAgICAg
cHVsbDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWxsQ291bnQrKzsKKyAgICAgICAgfQor
ICAgIH0pOwogCi0vLyAgICAgc2V0VGltZW91dCh0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
Ci0vLyAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUg
Y2FsbGVkIGV4YWN0bHkgb25jZScpOwotLy8gICAgICAgICB0ZXN0NS5kb25lKCk7Ci0vLyAgICAg
fSksIHN0YW5kYXJkVGltZW91dCk7Ci0vLyB9KTsKKyAgICBzdGFydFByb21pc2UudGhlbih0ZXN0
Ni5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50
LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMnKTsKKyAgICB9
KSk7CiAKLS8vIHZhciB0ZXN0NiA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQg
b25seSBjYWxsIHB1bGwgb25jZSBmb3IgYSBmb3JldmVyLWVtcHR5IHN0cmVhbSwgZXZlbiBhZnRl
ciByZWFkaW5nJyk7Ci0vLyB0ZXN0Ni5zdGVwKGZ1bmN0aW9uKCkgewotLy8gICAgIHZhciBwdWxs
Q291bnQgPSAwOwotLy8gICAgIHZhciBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsK
LS8vICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotLy8gICAgICAgICBzdGFydDog
ZnVuY3Rpb24oKSB7Ci0vLyAgICAgICAgICAgICByZXR1cm4gc3RhcnRQcm9taXNlOwotLy8gICAg
ICAgICB9LAotLy8gICAgICAgICBwdWxsOiBmdW5jdGlvbigpIHsKLS8vICAgICAgICAgICAgIHB1
bGxDb3VudCsrOwotLy8gICAgICAgICB9Ci0vLyAgICAgfSk7Ci0KLS8vICAgICBzdGFydFByb21p
c2UudGhlbih0ZXN0Ni5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0vLyAgICAgICAgIGFzc2VydF9l
cXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIG9uY2Ugc3RhcnQgZmlu
aXNoZXMnKTsKLS8vICAgICB9KSk7CisgICAgc2V0VGltZW91dCh0ZXN0Ni5zdGVwX2Z1bmMoZnVu
Y3Rpb24oKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91
bGQgYmUgY2FsbGVkIGV4YWN0bHkgb25jZScpOworICAgICAgICB0ZXN0Ni5kb25lKCk7CisgICAg
fSksIDEwMDApOworfSk7CiAKLS8vICAgICBycy5nZXRSZWFkZXIoKS5yZWFkKCk7Cit2YXIgdGVz
dDcgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCB3aGVuIHRy
eWluZyB0byByZWFkIGZyb20gYSBzdGFydGVkLCBlbXB0eSBzdHJlYW0nKTsKK3Rlc3Q3LnN0ZXAo
ZnVuY3Rpb24oKSB7CisgICAgdmFyIHB1bGxDb3VudCA9IDA7CisgICAgdmFyIHN0YXJ0UHJvbWlz
ZSA9IFByb21pc2UucmVzb2x2ZSgpOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJldHVybiBzdGFydFBy
b21pc2U7CisgICAgICAgIH0sCisgICAgICAgIHB1bGw6IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAg
ICAgIC8vIERvbid0IGVucXVldWUgaW1tZWRpYXRlbHkgYWZ0ZXIgc3RhcnQuIFdlIHdhbnQgdGhl
IHN0cmVhbSB0byBiZSBlbXB0eSB3aGVuIHdlIGNhbGwgLnJlYWQoKSBvbiBpdC4KKyAgICAgICAg
ICAgIGlmIChwdWxsQ291bnQgPiAwKSB7CisgICAgICAgICAgICAgICAgYy5lbnF1ZXVlKHB1bGxD
b3VudCk7CisgICAgICAgICAgICB9CiAKLS8vICAgICBzZXRUaW1lb3V0KHRlc3Q2LnN0ZXBfZnVu
YyhmdW5jdGlvbigpIHsKLS8vICAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdw
dWxsIHNob3VsZCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlJyk7Ci0vLyAgICAgICAgIHRlc3Q2LmRv
bmUoKTsKLS8vICAgICB9KSwgc3RhbmRhcmRUaW1lb3V0KTsKLS8vIH0pOworICAgICAgICAgICAg
KytwdWxsQ291bnQ7CisgICAgICAgIH0KKyAgICB9KTsKIAotLy8gdmFyIHRlc3Q3ID0gYXN5bmNf
dGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIG9uIGEgbm9u
LWVtcHR5IHN0cmVhbSByZWFkIGZyb20gYmVmb3JlIHN0YXJ0IGZ1bGZpbGxzJyk7Ci0vLyB0ZXN0
Ny5zdGVwKGZ1bmN0aW9uKCkgewotLy8gICAgIHZhciBwdWxsQ291bnQgPSAwOwotLy8gICAgIHZh
ciBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKLS8vICAgICB2YXIgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oewotLy8gICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotLy8gICAg
ICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0vLyAgICAgICAgICAgICByZXR1cm4gc3RhcnRQcm9t
aXNlOwotLy8gICAgICAgICB9LAotLy8gICAgICAgICBwdWxsOiBmdW5jdGlvbigpIHsKLS8vICAg
ICAgICAgICAgIHB1bGxDb3VudCsrOwotLy8gICAgICAgICB9Ci0vLyAgICAgfSk7Ci0KLS8vICAg
ICBzdGFydFByb21pc2UudGhlbih0ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0vLyAgICAg
ICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIG9u
Y2Ugc3RhcnQgZmluaXNoZXMnKTsKLS8vICAgICB9KSk7CisgICAgc3RhcnRQcm9taXNlLnRoZW4o
dGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxD
b3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBvbmNlIHN0YXJ0IGZpbmlzaGVzJyk7CiAK
LS8vICAgICBycy5nZXRSZWFkZXIoKS5yZWFkKCkudGhlbih0ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rp
b24ocikgewotLy8gICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScs
IGRvbmU6IGZhbHNlIH0sICdmaXJzdCByZWFkKCkgc2hvdWxkIHJldHVybiBmaXJzdCBjaHVuaycp
OwotLy8gICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIG5v
dCBoYXZlIGJlZW4gY2FsbGVkIGFnYWluJyk7Ci0vLyAgICAgfSkpOworICAgICAgICB2YXIgcmVh
ZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisgICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4o
dGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhwdWxsQ291bnQsIDIsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgYWdhaW4gaW4gcmVhY3Rp
b24gdG8gY2FsbGluZyByZWFkJyk7CisgICAgICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhy
ZXN1bHQsIHsgdmFsdWU6IDEsIGRvbmU6IGZhbHNlIH0sICd0aGUgcmVzdWx0IHJlYWQgc2hvdWxk
IGJlIHRoZSBvbmUgZW5xdWV1ZWQnKTsKKyAgICAgICAgICAgIHRlc3Q3LmRvbmUoKTsKKyAgICAg
ICAgfSkpOworICAgIH0pKS5jYXRjaCh0ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3Nl
cnRfdW5yZWFjaGVkKGUpOyB9KSk7Cit9KTsKIAotLy8gICAgIGFzc2VydF9lcXVhbHMocHVsbENv
dW50LCAwLCAnY2FsbGluZyByZWFkKCkgc2hvdWxkIG5vdCBjYXVzZSBwdWxsIHRvIGJlIGNhbGxl
ZCB5ZXQnKTsKK3ZhciB0ZXN0OCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQg
b25seSBjYWxsIHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGJlZm9y
ZSBzdGFydCBmdWxmaWxscycpOwordGVzdDguc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgcHVs
bENvdW50ID0gMDsKKyAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Cisg
ICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9u
KGMpIHsKKyAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgICAgICAgcmV0dXJuIHN0
YXJ0UHJvbWlzZTsKKyAgICAgICAgfSwKKyAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBwdWxsQ291bnQrKzsKKyAgICAgICAgfQorICAgIH0pOwogCi0vLyAgICAgc2V0VGlt
ZW91dCh0ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0vLyAgICAgICAgIGFzc2VydF9lcXVh
bHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgb25jZScpOwot
Ly8gICAgICAgICB0ZXN0Ny5kb25lKCk7Ci0vLyAgICAgfSksIHN0YW5kYXJkVGltZW91dCk7Ci0v
LyB9KTsKKyAgICBzdGFydFByb21pc2UudGhlbih0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
CisgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2Fs
bGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMnKTsKKyAgICB9KSk7CiAKLS8vIHZhciB0ZXN0OCA9IGFz
eW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgdHdpY2Ugb24g
YSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBhZnRlciBzdGFydCBmdWxmaWxscycpOwotLy8g
dGVzdDguc3RlcChmdW5jdGlvbigpIHsKLS8vICAgICB2YXIgcHVsbENvdW50ID0gMDsKLS8vICAg
ICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0vLyAgICAgdmFyIHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKLS8vICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLS8v
ICAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOwotLy8gICAgICAgICAgICAgcmV0dXJuIHN0YXJ0
UHJvbWlzZTsKLS8vICAgICAgICAgfSwKLS8vICAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7Ci0v
LyAgICAgICAgICAgICBwdWxsQ291bnQrKzsKLS8vICAgICAgICAgfQotLy8gICAgIH0pOwotCi0v
LyAgICAgc3RhcnRQcm9taXNlLnRoZW4odGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotLy8g
ICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxl
ZCBvbmNlIHN0YXJ0IGZpbmlzaGVzJyk7Ci0KLS8vICAgICAgICAgcnMuZ2V0UmVhZGVyKCkucmVh
ZCgpLnRoZW4odGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKLS8vICAgICAgICAgICAgIGFz
c2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0
IHJlYWQoKSBzaG91bGQgcmV0dXJuIGZpcnN0IGNodW5rJyk7Ci0vLyAgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBhZ2FpbiBvbmNl
IHJlYWQgZnVsZmlsbHMnKTsKLS8vICAgICAgICAgfSkpOwotLy8gICAgIH0pKTsKKyAgICBycy5n
ZXRSZWFkZXIoKS5yZWFkKCkudGhlbih0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgeworICAg
ICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0s
ICdmaXJzdCByZWFkKCkgc2hvdWxkIHJldHVybiBmaXJzdCBjaHVuaycpOworICAgICAgICBhc3Nl
cnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVk
IGFnYWluJyk7CisgICAgfSkpOwogCi0vLyAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAs
ICdjYWxsaW5nIHJlYWQoKSBzaG91bGQgbm90IGNhdXNlIHB1bGwgdG8gYmUgY2FsbGVkIHlldCcp
OworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAwLCAnY2FsbGluZyByZWFkKCkgc2hvdWxk
IG5vdCBjYXVzZSBwdWxsIHRvIGJlIGNhbGxlZCB5ZXQnKTsKIAotLy8gICAgIHNldFRpbWVvdXQo
dGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotLy8gICAgICAgICBhc3NlcnRfZXF1YWxzKHB1
bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IHR3aWNlJykKLS8vICAg
ICAgICAgdGVzdDguZG9uZSgpOwotLy8gICAgIH0pLCBzdGFuZGFyZFRpbWVvdXQpOwotLy8gfSk7
CisgICAgc2V0VGltZW91dCh0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGFz
c2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkg
b25jZScpOworICAgICAgICB0ZXN0OC5kb25lKCk7CisgICAgfSksIDEwMDApOworfSk7CiAKLS8v
IHZhciB0ZXN0OSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxs
IGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0aGUgbGFzdCBjaHVuaywgaWYgbm90IGRyYWluaW5n
Jyk7Ci0vLyB0ZXN0OS5zdGVwKGZ1bmN0aW9uKCkgewotLy8gICAgIHZhciBwdWxsQ291bnQgPSAw
OwotLy8gICAgIHZhciBjb250cm9sbGVyOwotLy8gICAgIHZhciBzdGFydFByb21pc2UgPSBQcm9t
aXNlLnJlc29sdmUoKTsKLS8vICAgICB2YXIgcHVsbFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUo
KTsKLS8vICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotLy8gICAgICAgICBzdGFy
dDogZnVuY3Rpb24oYykgewotLy8gICAgICAgICAgICAgY29udHJvbGxlciA9IGM7Ci0vLyAgICAg
ICAgICAgICByZXR1cm4gc3RhcnRQcm9taXNlOwotLy8gICAgICAgICB9LAotLy8gICAgICAgICBw
dWxsOiBmdW5jdGlvbigpIHsKLS8vICAgICAgICAgICAgICsrcHVsbENvdW50OwotLy8gICAgICAg
ICAgICAgcmV0dXJuIHB1bGxQcm9taXNlOwotLy8gICAgICAgICB9Ci0vLyAgICAgfSk7Ci0KLS8v
ICAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLS8vICAgICBzdGFydFByb21pc2Uu
dGhlbih0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0vLyAgICAgICAgIGFzc2VydF9lcXVh
bHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlIGFmdGVy
IHJlYWQnKTsKLQotLy8gICAgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKLQotLy8gICAg
ICAgICByZXR1cm4gcHVsbFByb21pc2UudGhlbih0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
Ci0vLyAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxk
IGhhdmUgYmVlbiBjYWxsZWQgYSBzZWNvbmQgdGltZSBhZnRlciBlbnF1ZXVlJyk7Ci0KLS8vICAg
ICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4odGVzdDkuc3RlcF9mdW5jKGZ1bmN0
aW9uKCkgewotLy8gICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAzLCAn
cHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBhIHRoaXJkIHRpbWUgYWZ0ZXIgcmVhZCcpOwot
Ly8gICAgICAgICAgICAgfSkpOwotLy8gICAgICAgICB9KSk7Ci0vLyAgICAgfSkpLmNhdGNoKHRl
c3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0vLyAgICAgICAgIGFzc2VydF91bnJlYWNoZWQo
ZSk7Ci0vLyAgICAgfSkpOwordmFyIHRlc3Q5ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06
IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSByZWFkIGZy
b20gYWZ0ZXIgc3RhcnQgZnVsZmlsbHMnKTsKK3Rlc3Q5LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAg
dmFyIHB1bGxDb3VudCA9IDA7CisgICAgdmFyIHN0YXJ0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2
ZSgpOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0OiBm
dW5jdGlvbihjKSB7CisgICAgICAgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAgICAgICAgIHJl
dHVybiBzdGFydFByb21pc2U7CisgICAgICAgIH0sCisgICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgcHVsbENvdW50Kys7CisgICAgICAgIH0KKyAgICB9KTsKIAotLy8gICAg
IHNldFRpbWVvdXQodGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotLy8gICAgICAgICBhc3Nl
cnRfZXF1YWxzKHB1bGxDb3VudCwgMywgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IHRo
cmljZScpCi0vLyAgICAgICAgIHRlc3Q5LmRvbmUoKTsKLS8vICAgICB9KSwgc3RhbmRhcmRUaW1l
b3V0KTsKLS8vIH0pOworICAgIHN0YXJ0UHJvbWlzZS50aGVuKHRlc3Q5LnN0ZXBfZnVuYyhmdW5j
dGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAsICdwdWxsIHNob3Vs
ZCBub3QgYmUgY2FsbGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMsIHNpbmNlIHRoZSBxdWV1ZSBpcyBm
dWxsJyk7CiAKLS8vIHZhciB0ZXN0MTAgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hv
dWxkIG5vdCBjYWxsIHB1bGwoKSBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1
bmssIGlmIGRyYWluaW5nJyk7Ci0vLyB0ZXN0MTAuc3RlcChmdW5jdGlvbigpIHsKLS8vICAgICB2
YXIgcHVsbENvdW50ID0gMDsKLS8vICAgICB2YXIgY29udHJvbGxlcjsKLS8vICAgICB2YXIgc3Rh
cnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0vLyAgICAgdmFyIHB1bGxQcm9taXNlID0g
UHJvbWlzZS5yZXNvbHZlKCk7Ci0vLyAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
LS8vICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLS8vICAgICAgICAgICAgIGNvbnRyb2xs
ZXIgPSBjOwotLy8gICAgICAgICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKLS8vICAgICAgICAg
fSwKLS8vICAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7Ci0vLyAgICAgICAgICAgICArK3B1bGxD
b3VudDsKLS8vICAgICAgICAgICAgIHJldHVybiBwdWxsUHJvbWlzZTsKLS8vICAgICAgICAgfQot
Ly8gICAgIH0pOwotCi0vLyAgICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0vLyAg
ICAgc3RhcnRQcm9taXNlLnRoZW4odGVzdDEwLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLS8vICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBoYXZlIGJlZW4g
Y2FsbGVkIG9uY2UgYWZ0ZXIgcmVhZCcpOwotCi0vLyAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnYScpOwotCi0vLyAgICAgICAgIHJldHVybiBwdWxsUHJvbWlzZS50aGVuKHRlc3QxMC5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7Ci0vLyAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3Vu
dCwgMiwgJ3B1bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgYSBzZWNvbmQgdGltZSBhZnRlciBl
bnF1ZXVlJyk7Ci0KLS8vICAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKLQotLy8gICAg
ICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MTAuc3RlcF9mdW5jKGZ1bmN0
aW9uKCkgewotLy8gICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAyLCAn
cHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYSB0aGlyZCB0aW1lIGFmdGVyIHJlYWQn
KTsKLS8vICAgICAgICAgICAgIH0pKTsKLS8vICAgICAgICAgfSkpOwotLy8gICAgIH0pKS5jYXRj
aCh0ZXN0MTAuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLS8vICAgICAgICAgYXNzZXJ0X3VucmVh
Y2hlZChlKQotLy8gICAgIH0pKTsKKyAgICAgICAgcnMuZ2V0UmVhZGVyKCkucmVhZCgpLnRoZW4o
dGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKKyAgICAgICAgICAgIGFzc2VydF9vYmplY3Rf
ZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IHJlYWQoKSBzaG91
bGQgcmV0dXJuIGZpcnN0IGNodW5rJyk7CiAKLS8vICAgICBzZXRUaW1lb3V0KHRlc3QxMC5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7Ci0vLyAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAy
LCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgdHdpY2UnKQotLy8gICAgICAgICB0ZXN0
MTAuZG9uZSgpOwotLy8gICAgIH0pLCBzdGFuZGFyZFRpbWVvdXQpOwotLy8gfSk7CisgICAgICAg
ICAgICBzZXRUaW1lb3V0KHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBl
eGFjdGx5IG9uY2UnKTsKKyAgICAgICAgICAgICAgICB0ZXN0OS5kb25lKCk7CisgICAgICAgICAg
ICB9KSwgMTAwMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgfSkpOworCisgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAnY2FsbGlu
ZyByZWFkKCkgc2hvdWxkIG5vdCBjYXVzZSBwdWxsIHRvIGJlIGNhbGxlZCBpbW1lZGlhdGVseScp
OworICAgIH0pKTsKK30pOworCit2YXIgdGVzdDEwID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJl
YW06IHNob3VsZCBub3QgY2FsbCBwdWxsKCkgaW4gcmVhY3Rpb24gdG8gcmVhZCgpaW5nIHRoZSBs
YXN0IGNodW5rLCBpZiBkcmFpbmluZycpOwordGVzdDEwLnN0ZXAoZnVuY3Rpb24oKSB7CisgICAg
dmFyIHB1bGxDb3VudCA9IDA7CisgICAgdmFyIGNvbnRyb2xsZXI7CisgICAgdmFyIHN0YXJ0UHJv
bWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworICAgIHZhciBwdWxsUHJvbWlzZSA9IFByb21pc2Uu
cmVzb2x2ZSgpOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0
YXJ0OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgICAg
ICAgIHJldHVybiBzdGFydFByb21pc2U7CisgICAgICAgIH0sCisgICAgICAgIHB1bGw6IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgKytwdWxsQ291bnQ7CisgICAgICAgICAgICByZXR1cm4gcHVs
bFByb21pc2U7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHZhciByZWFkZXIgPSBycy5nZXRS
ZWFkZXIoKTsKKworICAgIHN0YXJ0UHJvbWlzZS50aGVuKHRlc3QxMC5zdGVwX2Z1bmMoZnVuY3Rp
b24oKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQg
aGF2ZSBiZWVuIGNhbGxlZCBvbmNlIGJ5IHRoZSB0aW1lIHRoZSBzdHJlYW0gc3RhcnRzJyk7CisK
KyAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMo
cHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYWdhaW4gYWZ0
ZXIgZW5xdWV1ZScpOworCisgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKworICAgICAgICBy
ZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHRlc3QxMC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIG5vdCBo
YXZlIGJlZW4gY2FsbGVkIGEgc2Vjb25kIHRpbWUgYWZ0ZXIgcmVhZCcpOworCisgICAgICAgICAg
ICBzZXRUaW1lb3V0KHRlc3QxMC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgZXhh
Y3RseSBvbmNlJyk7CisgICAgICAgICAgICAgICAgdGVzdDEwLmRvbmUoKTsKKyAgICAgICAgICAg
IH0pLCAxMDAwKTsKKyAgICAgICAgfSkpOworICAgIH0pKS5jYXRjaCh0ZXN0MTAuc3RlcF9mdW5j
KGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSkpOworfSk7CiAKIHZhciB0ZXN0
MTEgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50
aWwgdGhlIHByZXZpb3VzIHB1bGwgY2FsbFwncyBwcm9taXNlIGZ1bGZpbGxzJyk7CiB0ZXN0MTEu
c3RlcChmdW5jdGlvbigpIHsKQEAgLTM3NSwxMiArNDEyLDExIEBAIHRlc3QxMS5zdGVwKGZ1bmN0
aW9uKCkgewogICAgIHZhciB0aW1lc0NhbGxlZCA9IDA7CiAgICAgdmFyIHN0YXJ0UHJvbWlzZSA9
IFByb21pc2UucmVzb2x2ZSgpOwogICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0g
ICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBjLmVucXVldWUoJ2EnKTsK
KyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgcmV0dXJuIHN0YXJ0UHJv
bWlzZTsKICAgICAgICAgfSwKLSAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICArK3RpbWVzQ2FsbGVkOworICAgICAgICBwdWxsOiBmdW5jdGlvbihjKSB7CisgICAgICAgICAg
ICBjLmVucXVldWUoKyt0aW1lc0NhbGxlZCk7CiAgICAgICAgICAgICByZXR1cm5lZFByb21pc2Ug
PSBuZXcgUHJvbWlzZSh0ZXN0MTEuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsgcmVzb2x2ZSA9IHI7
IH0pKTsKICAgICAgICAgICAgIHJldHVybiByZXR1cm5lZFByb21pc2U7CiAgICAgICAgIH0KQEAg
LTM4OCw5ICs0MjQsMTAgQEAgdGVzdDExLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHJlYWRl
ciA9IHJzLmdldFJlYWRlcigpOwogCiAgICAgc3RhcnRQcm9taXNlLnRoZW4odGVzdDExLnN0ZXBf
ZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKHRlc3QxMS5zdGVw
X2Z1bmMoZnVuY3Rpb24ocmVzdWx0MSkgewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0aW1l
c0NhbGxlZCwgMSwgJ3B1bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZSBhZnRlciBzdGFy
dCwgYnV0IG5vdCB5ZXQgaGF2ZSBiZWVuIGNhbGxlZCBhIHNlY29uZCB0aW1lJyk7Ci0gICAgICAg
ICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQxLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZh
bHNlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB0aGUgZW5xdWV1ZWQgdmFsdWUnKTsK
KyAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MTEuc3RlcF9mdW5jKGZ1bmN0
aW9uKHJlc3VsdDEpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHModGltZXNDYWxsZWQsIDEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICdwdWxsIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVk
IG9uY2UgYWZ0ZXIgc3RhcnQsIGJ1dCBub3QgeWV0IGhhdmUgYmVlbiBjYWxsZWQgYSBzZWNvbmQg
dGltZScpOworICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MSwgeyB2YWx1
ZTogMSwgZG9uZTogZmFsc2UgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHRoZSBlbnF1
ZXVlZCB2YWx1ZScpOwogCiAgICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3QxMS5zdGVwX2Z1bmMo
ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwg
MSwgJ2FmdGVyIDMwIG1zLCBwdWxsIHNob3VsZCBzdGlsbCBvbmx5IGhhdmUgYmVlbiBjYWxsZWQg
b25jZScpOwpAQCAtMzk4LDYxICs0MzUsNTggQEAgdGVzdDExLnN0ZXAoZnVuY3Rpb24oKSB7CiAg
ICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogCiAgICAgICAgICAgICAgICAgcmV0dXJuZWRQcm9t
aXNlLnRoZW4odGVzdDExLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgMiwgJ2FmdGVyIHRoZSBwcm9taXNlIHJldHVy
bmVkIGJ5IHB1bGwgaXMgZnVsZmlsbGVkLCBwdWxsIHNob3VsZCBiZSBjYWxsZWQgYSBzZWNvbmQg
dGltZScpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCAy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhZnRlciB0aGUgcHJvbWlzZSBy
ZXR1cm5lZCBieSBwdWxsIGlzIGZ1bGZpbGxlZCwgcHVsbCBzaG91bGQgYmUgY2FsbGVkIGEgc2Vj
b25kIHRpbWUnKTsKICAgICAgICAgICAgICAgICAgICAgdGVzdDExLmRvbmUoKTsKICAgICAgICAg
ICAgICAgICB9KSk7Ci0gICAgICAgICAgICB9KSwgc3RhbmRhcmRUaW1lb3V0KTsKLSAgICAgICAg
fSkpCi0gICAgfSkpLmNhdGNoKHRlc3QxMS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAg
ICBhc3NlcnRfdW5yZWFjaGVkKGUpCi0gICAgfSkpOworICAgICAgICAgICAgfSksIDUwMCk7Cisg
ICAgICAgIH0pKTsKKyAgICB9KSkuY2F0Y2godGVzdDExLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7
IGFzc2VydF91bnJlYWNoZWQoZSk7IH0pKTsKIH0pOwogCi0vLyB2YXIgdGVzdDEyID0gYXN5bmNf
dGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBwdWxsIGFmdGVyIHN0YXJ0LCBhbmQgYWZ0ZXIg
ZXZlcnkgcmVhZCcpOwotLy8gdGVzdDEyLnN0ZXAoZnVuY3Rpb24oKSB7Ci0vLyAgICAgdmFyIHRp
bWVzQ2FsbGVkID0gMDsKLS8vICAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZl
KCk7Ci0vLyAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLS8vICAgICAgICAgc3Rh
cnQ6IGZ1bmN0aW9uKGMpIHsKLS8vICAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOwotLy8gICAg
ICAgICAgICAgYy5lbnF1ZXVlKCdiJyk7Ci0vLyAgICAgICAgICAgICBjLmVucXVldWUoJ2MnKTsK
LS8vICAgICAgICAgICAgIHJldHVybiBzdGFydFByb21pc2U7Ci0vLyAgICAgICAgIH0sCi0vLyAg
ICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkgewotLy8gICAgICAgICAgICAgKyt0aW1lc0NhbGxlZDsK
LS8vICAgICAgICAgfSwKLS8vICAgICAgICAgc3RyYXRlZ3k6IHsKLS8vICAgICAgICAgICAgIHNp
emU6IGZ1bmN0aW9uKCkgewotLy8gICAgICAgICAgICAgICAgIHJldHVybiAxOwotLy8gICAgICAg
ICAgICAgfSwKLS8vICAgICAgICAgICAgIHNob3VsZEFwcGx5QmFja3ByZXNzdXJlOiBmdW5jdGlv
bigpIHsKLS8vICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0vLyAgICAgICAgICAgICB9
Ci0vLyAgICAgICAgIH0KLS8vICAgICB9KTsKLS8vICAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVh
ZGVyKCk7Ci0KLS8vICAgICBzdGFydFByb21pc2UudGhlbih0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0
aW9uKCkgewotLy8gICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHRlc3QxMi5zdGVw
X2Z1bmMoZnVuY3Rpb24ocmVzdWx0MSkgewotLy8gICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMocmVzdWx0MSwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgY2h1bmsg
c2hvdWxkIGJlIGFzIGV4cGVjdGVkJyk7Ci0KLS8vICAgICAgICAgICAgIHJldHVybiByZWFkZXIu
cmVhZCgpLnRoZW4odGVzdDEyLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQyKSB7Ci0vLyAgICAg
ICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MiwgeyB2YWx1ZTogJ2InLCBk
b25lOiBmYWxzZSB9LCAnc2Vjb25kIGNodW5rIHNob3VsZCBiZSBhcyBleHBlY3RlZCcpOwotCi0v
LyAgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MTIuc3RlcF9m
dW5jKGZ1bmN0aW9uKHJlc3VsdDMpIHsKLS8vICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X29i
amVjdF9lcXVhbHMocmVzdWx0MywgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LCAndGhpcmQg
Y2h1bmsgc2hvdWxkIGJlIGFzIGV4cGVjdGVkJyk7Ci0KLS8vICAgICAgICAgICAgICAgICAgICAg
c2V0VGltZW91dCh0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gT25jZSBmb3IgYWZ0ZXIgc3RhcnQsIGFuZCBvbmNlIGZvciBldmVyeSBy
ZWFkLgotLy8gICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxl
ZCwgNCwgJ3B1bGwoKSBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgZm91ciB0aW1lcycpOwotLy8g
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdDEyLmRvbmUoKTsKLS8vICAgICAgICAgICAgICAg
ICAgICAgfSksIHN0YW5kYXJkVGltZW91dCk7Ci0vLyAgICAgICAgICAgICAgICAgfSkpOwotLy8g
ICAgICAgICAgICAgfSkpOwotLy8gICAgICAgICB9KSk7Ci0vLyAgICAgfSkpLmNhdGNoKHRlc3Qx
Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9KSk7Ci0vLyB9
KTsKK3ZhciB0ZXN0MTIgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIHB1bGwg
YWZ0ZXIgc3RhcnQsIGFuZCBhZnRlciBldmVyeSByZWFkJyk7Cit0ZXN0MTIuc3RlcChmdW5jdGlv
bigpIHsKKyAgICB2YXIgdGltZXNDYWxsZWQgPSAwOworICAgIHZhciBzdGFydFByb21pc2UgPSBQ
cm9taXNlLnJlc29sdmUoKTsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAg
ICAgICBzdGFydDogZnVuY3Rpb24oYykgeworICAgICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7Cisg
ICAgICAgICAgICBjLmVucXVldWUoJ2InKTsKKyAgICAgICAgICAgIGMuZW5xdWV1ZSgnYycpOwor
ICAgICAgICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKKyAgICAgICAgfSwKKyAgICAgICAgcHVs
bCgpIHsKKyAgICAgICAgICAgICsrdGltZXNDYWxsZWQ7CisgICAgICAgIH0KKyAgICB9LAorICAg
IHsKKyAgICAgICAgc2l6ZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAg
ICAgICAgfSwKKyAgICAgICAgaGlnaFdhdGVyTWFyazogSW5maW5pdHkKKyAgICB9KTsKKyAgICB2
YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgICBzdGFydFByb21pc2UudGhlbih0ZXN0
MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50
aGVuKHRlc3QxMi5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0MSkgeworICAgICAgICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MSwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAn
Zmlyc3QgY2h1bmsgc2hvdWxkIGJlIGFzIGV4cGVjdGVkJyk7CisKKyAgICAgICAgICAgIHJldHVy
biByZWFkZXIucmVhZCgpLnRoZW4odGVzdDEyLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQyKSB7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MiwgeyB2YWx1ZTog
J2InLCBkb25lOiBmYWxzZSB9LCAnc2Vjb25kIGNodW5rIHNob3VsZCBiZSBhcyBleHBlY3RlZCcp
OworCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MTIuc3Rl
cF9mdW5jKGZ1bmN0aW9uKHJlc3VsdDMpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X29i
amVjdF9lcXVhbHMocmVzdWx0MywgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LCAndGhpcmQg
Y2h1bmsgc2hvdWxkIGJlIGFzIGV4cGVjdGVkJyk7CisKKyAgICAgICAgICAgICAgICAgICAgc2V0
VGltZW91dCh0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gT25jZSBmb3IgYWZ0ZXIgc3RhcnQsIGFuZCBvbmNlIGZvciBldmVyeSByZWFkLgor
ICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgNCwgJ3B1
bGwoKSBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgZm91ciB0aW1lcycpOworICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdDEyLmRvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSksIDEwMDAp
OworICAgICAgICAgICAgICAgIH0pKTsKKyAgICAgICAgICAgIH0pKTsKKyAgICAgICAgfSkpOwor
ICAgIH0pKS5jYXRjaCh0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVh
Y2hlZChlKTsgfSkpOworfSk7CiAKIHZhciB0ZXN0MTMgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0
cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgYWZ0ZXIgc3RhcnQgaWYgdGhlIHN0cmVhbSBpcyBu
b3cgY2xvc2VkJyk7CiB0ZXN0MTMuc3RlcChmdW5jdGlvbigpIHsKQEAgLTQ5NCwxOCArNTI4LDE2
IEBAIHRlc3QxNC5zdGVwKGZ1bmN0aW9uKCkgewogICAgICAgICB9LAogICAgICAgICBwdWxsOiBm
dW5jdGlvbihjKSB7CiAgICAgICAgICAgICBjLmVucXVldWUoKyt0aW1lc0NhbGxlZCk7Ci0gICAg
ICAgIH0sCi0gICAgICAgIHN0cmF0ZWd5OiB7Ci0gICAgICAgICAgICBzaXplOiBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICBzaG91bGRBcHBseUJhY2twcmVzc3VyZTogZnVuY3Rpb24oc2l6ZSkgewotICAgICAgICAgICAg
ICAgIHJldHVybiBzaXplID4gMzsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgIH0sCisg
ICAgeworICAgICAgICBzaXplOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJldHVybiAxOwor
ICAgICAgICB9LAorICAgICAgICBoaWdoV2F0ZXJNYXJrOiA0CiAgICAgfSk7CiAKLSAgICBzdGFy
dFByb21pc2UudGhlbih0ZXN0MTQuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgIHNldFRpbWVv
dXQodGVzdDE0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKICAgICAgICAgLy8gYWZ0ZXIgc3RhcnQ6
IHNpemUgPSAwLCBwdWxsKCkKICAgICAgICAgLy8gYWZ0ZXIgZW5xdWV1ZSgxKTogc2l6ZSA9IDEs
IHB1bGwoKQogICAgICAgICAvLyBhZnRlciBlbnF1ZXVlKDIpOiBzaXplID0gMiwgcHVsbCgpCkBA
IC01MTMsNyArNTQ1LDcgQEAgdGVzdDE0LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgIC8vIGFm
dGVyIGVucXVldWUoNCk6IHNpemUgPSA0LCBkbyBub3QgcHVsbAogICAgICAgICBhc3NlcnRfZXF1
YWxzKHRpbWVzQ2FsbGVkLCA0LCAncHVsbCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGZvdXIg
dGltZXMnKTsKICAgICAgICAgdGVzdDE0LmRvbmUoKTsKLSAgICB9KSk7CisgICAgfSksIDEwMDAp
OwogfSk7CiAKIHZhciB0ZXN0MTUgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBwdWxsIHNo
b3VsZCBiZSBhYmxlIHRvIGNsb3NlIGEgc3RyZWFtLicpOwpAQCAtNTM0LDM1ICs1NjYsNDQgQEAg
dGVzdDE1LnN0ZXAoZnVuY3Rpb24oKSB7CiB9KTsKIAogdGVzdChmdW5jdGlvbigpIHsKLSAgdmFy
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0g
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhjLmVucXVldWUoJ2EnKSwgdHJ1ZSwgJ3RoZSBmaXJzdCBl
bnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZScpOwotICAgICAgICAgIGMuY2xvc2UoKTsKLQotICAg
ICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcignJyksIGZ1bmN0aW9uKCkgeyBjLmVu
cXVldWUoJ2InKTsgfSwgJ2VucXVldWUgYWZ0ZXIgY2xvc2Ugc2hvdWxkIHRocm93IGEgVHlwZUVy
cm9yJyk7Ci0gICAgICB9Ci0gIH0pOworICAgIHZhciBzdGFydENhbGxlZCA9IGZhbHNlOworICAg
IHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihj
KSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGMuZW5xdWV1ZSgnYScpLCB1bmRlZmluZWQs
ICd0aGUgZmlyc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCcpOworICAgICAgICAg
ICAgYy5jbG9zZSgpOworCisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3Io
JycpLCBmdW5jdGlvbigpIHsgYy5lbnF1ZXVlKCdiJyk7IH0sICdlbnF1ZXVlIGFmdGVyIGNsb3Nl
IHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOworICAgICAgICAgICAgc3RhcnRDYWxsZWQgPSB0
cnVlOworICAgICAgICB9CisgICAgfSk7CisgICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwog
fSwgJ1JlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJlYW0g
aXMgcmVhZGFibGUgYnV0IGRyYWluaW5nJyk7CiAKIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgdmFy
IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
ICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKICAgICAgICAgICAgIGMuY2xvc2UoKTsKIAog
ICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBj
LmVucXVldWUoJ2EnKTsgfSwgJ2VucXVldWUgYWZ0ZXIgY2xvc2Ugc2hvdWxkIHRocm93IGEgVHlw
ZUVycm9yJyk7CisgICAgICAgICAgICBzdGFydENhbGxlZCA9IHRydWU7CiAgICAgICAgIH0KICAg
ICB9KTsKKyAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7CiB9LCAnUmVhZGFibGVTdHJlYW06
IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyBjbG9zZWQnKTsKIAogdGVz
dChmdW5jdGlvbigpIHsKKyAgICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxzZTsKICAgICB2YXIgZXhw
ZWN0ZWRFcnJvciA9IG5ldyBFcnJvcignaSBhbSBzYWQnKTsKICAgICB2YXIgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oewogICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewogICAgICAgICAgICAg
Yy5lcnJvcihleHBlY3RlZEVycm9yKTsKIAogICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhleHBl
Y3RlZEVycm9yLCBmdW5jdGlvbigpIHsgYy5lbnF1ZXVlKCdhJyk7IH0sICdlbnF1ZXVlIGFmdGVy
IGVycm9yIHNob3VsZCB0aHJvdyB0aGF0IGVycm9yJyk7CisgICAgICAgICAgICBzdGFydENhbGxl
ZCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9KTsKKyAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxl
ZCk7CiB9LCAnUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBzdG9yZWQg
ZXJyb3Igd2hlbiB0aGUgc3RyZWFtIGlzIGVycm9yZWQnKTsKIAogdmFyIHRlc3QxNiA9IGFzeW5j
X3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRo
b2RzIGFzIG1ldGhvZHMnKTsKQEAgLTU3MCw3ICs2MTEsNiBAQCB0ZXN0MTYuc3RlcChmdW5jdGlv
bigpIHsKICAgICB2YXIgc3RhcnRDYWxsZWQgPSAwOwogICAgIHZhciBwdWxsQ2FsbGVkID0gMDsK
ICAgICB2YXIgY2FuY2VsQ2FsbGVkID0gMDsKLSAgICB2YXIgc3RyYXRlZ3lDYWxsZWQgPSAwOwog
CiAgICAgZnVuY3Rpb24gU291cmNlKCkgewogICAgIH0KQEAgLTU5MSwxMyArNjMxLDYgQEAgdGVz
dDE2LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBjYW5jZWxDYWxsZWQrKzsKICAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHModGhpcywgdGhlU291cmNlLCAnY2FuY2VsKCkgc2hvdWxkIGJl
IGNhbGxlZCB3aXRoIHRoZSBjb3JyZWN0IHRoaXMnKTsKICAgICAgICAgfSwKLQotICAgICAgICBn
ZXQgc3RyYXRlZ3koKSB7Ci0gICAgICAgICAgICAvLyBDYWxsZWQgdGhyZWUgdGltZXMKLSAgICAg
ICAgICAgIHN0cmF0ZWd5Q2FsbGVkKys7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHRoaXMs
IHRoZVNvdXJjZSwgJ3N0cmF0ZWd5IGdldHRlciBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIGNv
cnJlY3QgdGhpcycpOwotICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKLSAgICAgICAgfQog
ICAgIH07CiAKICAgICB2YXIgdGhlU291cmNlID0gbmV3IFNvdXJjZSgpOwpAQCAtNjExLDI0ICs2
NDQsMzEgQEAgdGVzdDE2LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgIGFzc2VydF9lcXVhbHMo
c3RhcnRDYWxsZWQsIDEpOwogICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDYWxsZWQsIDEpOwog
ICAgICAgICBhc3NlcnRfZXF1YWxzKGNhbmNlbENhbGxlZCwgMSk7Ci0gICAgICAgIGFzc2VydF9l
cXVhbHMoc3RyYXRlZ3lDYWxsZWQsIDMpOwogICAgICAgICB0ZXN0MTYuZG9uZSgpOwogICAgIH0p
KS5jYXRjaCh0ZXN0MTYuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChl
KTsgfSApKTsKIH0pOwogCiB0ZXN0KGZ1bmN0aW9uKCkgewotICBuZXcgUmVhZGFibGVTdHJlYW0o
ewotICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICBhc3NlcnRfZXF1YWxzKGMu
ZW5xdWV1ZSgnYScpLCB0cnVlLCAnZmlyc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUnKTsK
LSAgICAgICAgICBhc3NlcnRfZXF1YWxzKGMuZW5xdWV1ZSgnYicpLCBmYWxzZSwgJ3NlY29uZCBl
bnF1ZXVlIHNob3VsZCByZXR1cm4gZmFsc2UnKTsKLSAgICAgICAgICBhc3NlcnRfZXF1YWxzKGMu
ZW5xdWV1ZSgnYycpLCBmYWxzZSwgJ3RoaXJkIGVucXVldWUgc2hvdWxkIHJldHVybiBmYWxzZScp
OwotICAgICAgICAgIGFzc2VydF9lcXVhbHMoYy5lbnF1ZXVlKCdkJyksIGZhbHNlLCAnZm91cnRo
IGVucXVldWUgc2hvdWxkIHJldHVybiBmYWxzZScpOwotICAgICAgICAgIGFzc2VydF9lcXVhbHMo
Yy5lbnF1ZXVlKCdlJyksIGZhbHNlLCAnZmlmdGggZW5xdWV1ZSBzaG91bGQgcmV0dXJuIGZhbHNl
Jyk7Ci0gICAgICB9Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBk
ZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCByZXR1cm4gZmFsc2UgZm9yIGFsbCBidXQgdGhlIGZpcnN0
IGVucXVldWUgY2FsbCcpOwotCi12YXIgdGVzdDE3ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJl
YW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGNvbnRpbnVlIHJldHVy
bmluZyB0cnVlIGZyb20gZW5xdWV1ZSBpZiB0aGUgY2h1bmtzIGFyZSByZWFkIGltbWVkaWF0ZWx5
Jyk7CisgICAgdmFyIHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisgICAgbmV3IFJlYWRhYmxlU3RyZWFt
KHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMoYy5kZXNpcmVkU2l6ZSwgMSk7CisgICAgICAgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgMCk7CisgICAgICAgICAgICBjLmVu
cXVldWUoJ2InKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgLTEp
OworICAgICAgICAgICAgYy5lbnF1ZXVlKCdjJyk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KGMuZGVzaXJlZFNpemUsIC0yKTsKKyAgICAgICAgICAgIGMuZW5xdWV1ZSgnZCcpOworICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAtMyk7CisgICAgICAgICAgICBjLmVu
cXVldWUoJ2UnKTsKKyAgICAgICAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgfQor
ICAgIH0pOworICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKK30sICdSZWFkYWJsZVN0cmVh
bSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgZ2l2ZSBkZXNpcmVkU2l6
ZSBvZiAxIHRvIHN0YXJ0LCBkZWNyZWFzaW5nIGJ5IDEgcGVyIGVucXVldWUnKTsKKwordmFyIHRl
c3QxNyA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0
IHN0cmF0ZWd5IHNob3VsZCBjb250aW51ZSBnaXZpbmcgZGVzaXJlZFNpemUgb2YgMSBpZiB0aGUg
Y2h1bmtzIGFyZSByZWFkIGltbWVkaWF0ZWx5Jyk7CiB0ZXN0MTcuc3RlcChmdW5jdGlvbigpIHsK
ICAgICB2YXIgY29udHJvbGxlcjsKICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewpA
QCAtNjM4LDI3ICs2NzgsMzggQEAgdGVzdDE3LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgfSk7CiAg
ICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwogCi0gICAgYXNzZXJ0X2VxdWFscyhjb250
cm9sbGVyLmVucXVldWUoJ2EnKSwgdHJ1ZSwgJ2ZpcnN0IGVucXVldWUgc2hvdWxkIHJldHVybiB0
cnVlJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnZGVz
aXJlZFNpemUgc2hvdWxkIHN0YXJ0IGF0IDEnKTsKKyAgICBjb250cm9sbGVyLmVucXVldWUoJ2En
KTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICdkZXNpcmVk
U2l6ZSBzaG91bGQgZGVjcmVhc2UgdG8gMCBhZnRlciBmaXJzdCBlbnF1ZXVlJyk7CiAKICAgICBy
ZWFkZXIucmVhZCgpLnRoZW4odGVzdDE3LnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQxKSB7CiAg
ICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDEsIHsgdmFsdWU6ICdhJywgZG9uZTog
ZmFsc2UgfSwgJ2ZpcnN0IGNodW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLSAgICAgICAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmVucXVldWUoJ2InKSwgdHJ1ZSwgJ3NlY29uZCBlbnF1
ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZScpOworCisgICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJv
bGxlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBnbyB1cCB0byAxIGFmdGVy
IHRoZSBmaXJzdCByZWFkJyk7CisgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOworICAg
ICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICdkZXNpcmVkU2l6
ZSBzaG91bGQgZ28gZG93biB0byAwIGFmdGVyIHRoZSBzZWNvbmQgZW5xdWV1ZScpOwogCiAgICAg
ICAgIHJldHVybiByZWFkZXIucmVhZCgpOwogICAgIH0pKS50aGVuKHRlc3QxNy5zdGVwX2Z1bmMo
ZnVuY3Rpb24ocmVzdWx0MikgewotICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQy
LCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sICdzZWNvbmQgY2h1bmsgcmVhZCBzaG91bGQg
YmUgY29ycmVjdCcpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZW5xdWV1ZSgn
YycpLCB0cnVlLCAndGhpcmQgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUnKTsKKyAgICAgICAg
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDIsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFs
c2UgfSwgJ3NlY29uZCBjaHVuayByZWFkIHNob3VsZCBiZSBjb3JyZWN0Jyk7CiAKLSAgICAgICAg
cmV0dXJuIHJlYWRlci5yZWFkKCk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xs
ZXIuZGVzaXJlZFNpemUsIDEsICdkZXNpcmVkU2l6ZSBzaG91bGQgZ28gdXAgdG8gMSBhZnRlciB0
aGUgc2Vjb25kIHJlYWQnKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOwor
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnZGVz
aXJlZFNpemUgc2hvdWxkIGdvIGRvd24gdG8gMCBhZnRlciB0aGUgdGhpcmQgZW5xdWV1ZScpOwor
CisgICAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKICAgICB9KSkudGhlbih0ZXN0MTcu
c3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdDMpIHsKLSAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVh
bHMocmVzdWx0MywgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LCAndGhpcmQgY2h1bmsgcmVh
ZCBzaG91bGQgYmUgY29ycmVjdCcpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIu
ZW5xdWV1ZSgnZCcpLCB0cnVlLCAnZm91cnRoIGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlJyk7
CisgICAgICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQzLCB7IHZhbHVlOiAnYycs
IGRvbmU6IGZhbHNlIH0sICd0aGlyZCBjaHVuayByZWFkIHNob3VsZCBiZSBjb3JyZWN0Jyk7CiAK
LSAgICAgICAgdGVzdDE3LmRvbmUoKTsKLSAgICB9KSkuY2F0Y2godGVzdDE3LnN0ZXBfZnVuYyhm
dW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0gKSk7CisgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICdkZXNpcmVkU2l6ZSBzaG91bGQg
Z28gdXAgdG8gMSBhZnRlciB0aGUgdGhpcmQgcmVhZCcpOworICAgICAgICAgICAgY29udHJvbGxl
ci5lbnF1ZXVlKCdkJyk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVz
aXJlZFNpemUsIDAsICdkZXNpcmVkU2l6ZSBzaG91bGQgZ28gZG93biB0byAwIGFmdGVyIHRoZSBm
b3VydGggZW5xdWV1ZScpOworCisgICAgICAgICAgICB0ZXN0MTcuZG9uZSgpOworICAgIH0pKS5j
YXRjaCh0ZXN0MTcuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsg
fSkpOwogfSk7CiAKLXZhciB0ZXN0MTggPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBpbnRl
Z3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHJhbmRvbSBwdXNoIHNvdXJjZScsIHsgdGltZW91dDog
NTAgfSk7Cit2YXIgdGVzdDE4ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRp
b24gdGVzdDogYWRhcHRpbmcgYSByYW5kb20gcHVzaCBzb3VyY2UnKTsKIHRlc3QxOC5zdGVwKGZ1
bmN0aW9uKCkgewogICAgIHZhciBwdWxsQ2hlY2tlZCA9IGZhbHNlOwogICAgIHZhciByYW5kb21T
b3VyY2UgPSBuZXcgUmFuZG9tUHVzaFNvdXJjZSg4KTsKQEAgLTY5OSw3ICs3NTAsNyBAQCB0ZXN0
MTguc3RlcChmdW5jdGlvbigpIHsKICAgICAgICAgfQogCiAgICAgICAgIHRlc3QxOC5kb25lKCk7
Ci0gICAgfSksIHRlc3QxOC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfcmVhY2hlZChl
KTsgfSkpOworICAgIH0pLCB0ZXN0MTguc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3Vu
cmVhY2hlZChlKTsgfSkpOwogfSk7CiAKIHZhciB0ZXN0MTkgPSBhc3luY190ZXN0KCdSZWFkYWJs
ZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHN5bmMgcHVsbCBzb3VyY2UnKTsK
QEAgLTcwNywyMyArNzU4LDIyIEBAIHRlc3QxOS5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciBy
cyA9IHNlcXVlbnRpYWxSZWFkYWJsZVN0cmVhbSgxMCk7CiAKICAgICByZWFkYWJsZVN0cmVhbVRv
QXJyYXkocnMpLnRoZW4odGVzdDE5LnN0ZXBfZnVuYyhmdW5jdGlvbihjaHVua3MpIHsKLSAgICAg
ICAgYXNzZXJ0X2VxdWFscyhycy5zb3VyY2UuY2xvc2VkLCB0cnVlLCAnc291cmNlIHNob3VsZCBi
ZSBjbG9zZWQgYWZ0ZXIgYWxsIGNodW5rcyBhcmUgcmVhZCcpOworICAgICAgICBhc3NlcnRfdHJ1
ZShycy5zb3VyY2UuY2xvc2VkLCAnc291cmNlIHNob3VsZCBiZSBjbG9zZWQgYWZ0ZXIgYWxsIGNo
dW5rcyBhcmUgcmVhZCcpOwogICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywgWzEs
IDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXSwgJ3RoZSBleHBlY3RlZCAxMCBjaHVua3Mgc2hv
dWxkIGJlIHJlYWQnKTsKIAogICAgICAgICB0ZXN0MTkuZG9uZSgpOwogICAgIH0pKTsKIH0pOwot
LyoKLXZhciB0ZXN0MjAgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0
ZXN0OiBhZGFwdGluZyBhbiBhc3luYyBwdWxsIHNvdXJjZScsIHsgdGltZW91dDogNTAgfSk7Ci10
ZXN0MjAuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgcnMgPSBzZXF1ZW50aWFsUmVhZGFibGVT
dHJlYW0oMTAsIHsgYXN5bmM6IHRydWUgfSk7CiAKLSAgICByZWFkYWJsZVN0cmVhbVRvQXJyYXko
cnMpLnRoZW4odGVzdDIwLnN0ZXBfZnVuYyhmdW5jdGlvbihjaHVua3MpIHsKLSAgICAgICAgYXNz
ZXJ0X2VxdWFscyhycy5zb3VyY2UuY2xvc2VkLCB0cnVlLCAnc291cmNlIHNob3VsZCBiZSBjbG9z
ZWQgYWZ0ZXIgYWxsIGNodW5rcyBhcmUgcmVhZCcpOwotICAgICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKGNodW5rcywgWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXSwgJ3RoZSBleHBlY3Rl
ZCAxMCBjaHVua3Mgc2hvdWxkIGJlIHJlYWQnKTsKKy8vIHZhciB0ZXN0MjAgPSBhc3luY190ZXN0
KCdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhbiBhc3luYyBwdWxs
IHNvdXJjZScpOworLy8gdGVzdDIwLnN0ZXAoZnVuY3Rpb24oKSB7CisvLyAgICAgdmFyIHJzID0g
c2VxdWVudGlhbFJlYWRhYmxlU3RyZWFtKDEwLCB7IGFzeW5jOiB0cnVlIH0pOwogCi0gICAgICAg
IHRlc3QyMC5kb25lKCk7Ci0gICAgfSkpOwotfSk7Ci0qLworLy8gICAgIHJlYWRhYmxlU3RyZWFt
VG9BcnJheShycykudGhlbih0ZXN0MjAuc3RlcF9mdW5jKGZ1bmN0aW9uKGNodW5rcykgeworLy8g
ICAgICAgICBhc3NlcnRfdHJ1ZShycy5zb3VyY2UuY2xvc2VkLCAnc291cmNlIHNob3VsZCBiZSBj
bG9zZWQgYWZ0ZXIgYWxsIGNodW5rcyBhcmUgcmVhZCcpOworLy8gICAgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKGNodW5rcywgWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXSwgJ3RoZSBl
eHBlY3RlZCAxMCBjaHVua3Mgc2hvdWxkIGJlIHJlYWQnKTsKKworLy8gICAgICAgICB0ZXN0MjAu
ZG9uZSgpOworLy8gICAgIH0pKTsKKy8vIH0pOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZXNvdXJjZXMvYnl0ZS1s
ZW5ndGgtcXVldWluZy1zdHJhdGVneS5qcyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNl
LWltcGxlbWVudGF0aW9uL3Jlc291cmNlcy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5Lmpz
CmluZGV4IGQ3N2UzYmJiZWJhNzM1NjY4YzY3OGNkZWQ5MTkxNjNjM2MyNDVjYTIuLmIxYzc0NTNl
YzYxYjdlOWQ0NmM5NzI2NWY0MzEzMjM2NTRkNTkwMzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3Jlc291cmNlcy9ieXRlLWxlbmd0aC1x
dWV1aW5nLXN0cmF0ZWd5LmpzCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWlt
cGxlbWVudGF0aW9uL3Jlc291cmNlcy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmpzCkBA
IC0xLDM4ICsxLDEwIEBACiAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgZmlsZSB3aGVuIGltcGxlbWVu
dGVkIGluIFdlYkNvcmUuCiAKLWZ1bmN0aW9uIHR5cGVJc09iamVjdCh4KSB7Ci0gICAgcmV0dXJu
ICh0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgeCAhPT0gbnVsbCkgfHwgdHlwZW9mIHggPT09ICdm
dW5jdGlvbic7Ci19Ci0KLWZ1bmN0aW9uIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kob2JqKSB7
Ci0gICAgaWYgKCF0eXBlSXNPYmplY3Qob2JqKSkgewotICAgICAgdGhyb3cgbmV3IFR5cGVFcnJv
cignUGFyYW1ldGVyIG11c3QgYmUgYW4gb2JqZWN0LicpOwotICAgIH0KLQotICAgIGhpZ2hXYXRl
ck1hcmsgPSBOdW1iZXIob2JqLmhpZ2hXYXRlck1hcmspOwotCi0gICAgaWYgKE51bWJlci5pc05h
TihoaWdoV2F0ZXJNYXJrKSkgewotICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaGlnaFdhdGVy
TWFyayBtdXN0IGJlIGEgbnVtYmVyLicpOwotICAgIH0KLSAgICBpZiAoaGlnaFdhdGVyTWFyayA8
IDApIHsKLSAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdoaWdoV2F0ZXJNYXJrIG11c3QgYmUg
bm9ubmVnYXRpdmUuJyk7Ci0gICAgfQotCi0gICAgdGhpcy5fYmxxc0hpZ2hXYXRlck1hcmsgPSBo
aWdoV2F0ZXJNYXJrOworZnVuY3Rpb24gQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hX
YXRlck1hcmsgfSkgeworICAgIGNyZWF0ZURhdGFQcm9wZXJ0eSh0aGlzLCAnaGlnaFdhdGVyTWFy
aycsIGhpZ2hXYXRlck1hcmspOwogfQogCiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3Rv
dHlwZSA9IHsKLSAgICBzaG91bGRBcHBseUJhY2twcmVzc3VyZTogZnVuY3Rpb24ocXVldWVTaXpl
KSB7Ci0gICAgICAgIGlmICghdHlwZUlzT2JqZWN0KHRoaXMpKSB7Ci0gICAgICAgICAgICB0aHJv
dyBuZXcgVHlwZUVycm9yKCdCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaG91
bGRBcHBseUJhY2twcmVzc3VyZSBjYW4gb25seSBiZSBhcHBsaWVkIHRvIG9iamVjdHMnKTsKLSAg
ICAgICAgfQotICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2Fs
bCh0aGlzLCAnX2JscXNIaWdoV2F0ZXJNYXJrJykpIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBU
eXBlRXJyb3IoJ0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNob3VsZEFwcGx5
QmFja3ByZXNzdXJlIGNhbiBvbmx5IGJlIGFwcGxpZWQgdG8gYSAnICsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3knKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHJldHVybiBxdWV1ZVNpemUgPiB0aGlzLl9ibHFzSGlnaFdhdGVyTWFyazsK
LSAgICB9LAogICAgIHNpemU6IGZ1bmN0aW9uKGNodW5rKSB7CiAgICAgICAgIHJldHVybiBjaHVu
ay5ieXRlTGVuZ3RoOwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVm
ZXJlbmNlLWltcGxlbWVudGF0aW9uL3Jlc291cmNlcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5Lmpz
IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVzb3VyY2Vz
L2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuanMKaW5kZXggNDdmNGRmZGY3NzVlY2RmNTQzMDExODAy
M2E2YjQ4YmQ3NTkxZTJmMi4uNWZjMjFmMmZmYzJiN2VmMzQ4Yzg3NzZlOGVmNDAzN2ZhMzI4YTcz
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRp
b24vcmVzb3VyY2VzL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuanMKKysrIGIvTGF5b3V0VGVzdHMv
c3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVzb3VyY2VzL2NvdW50LXF1ZXVpbmct
c3RyYXRlZ3kuanMKQEAgLTEsMzggKzEsMTAgQEAKIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBmaWxl
IHdoZW4gaW1wbGVtZW50ZWQgaW4gV2ViQ29yZS4KIAotZnVuY3Rpb24gdHlwZUlzT2JqZWN0KHgp
IHsKLSAgcmV0dXJuICh0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgeCAhPT0gbnVsbCkgfHwgdHlw
ZW9mIHggPT09ICdmdW5jdGlvbic7Ci19Ci0KLWZ1bmN0aW9uIENvdW50UXVldWluZ1N0cmF0ZWd5
KG9iaikgewotICAgIGlmICghdHlwZUlzT2JqZWN0KG9iaikpIHsKLSAgICAgIHRocm93IG5ldyBU
eXBlRXJyb3IoJ1BhcmFtZXRlciBtdXN0IGJlIGFuIG9iamVjdC4nKTsKLSAgICB9Ci0KLSAgICBo
aWdoV2F0ZXJNYXJrID0gTnVtYmVyKG9iai5oaWdoV2F0ZXJNYXJrKTsKLQotICAgIGlmIChOdW1i
ZXIuaXNOYU4oaGlnaFdhdGVyTWFyaykpIHsKLSAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2hp
Z2hXYXRlck1hcmsgbXVzdCBiZSBhIG51bWJlci4nKTsKLSAgICB9Ci0gICAgaWYgKGhpZ2hXYXRl
ck1hcmsgPCAwKSB7Ci0gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignaGlnaFdhdGVyTWFyayBt
dXN0IGJlIG5vbm5lZ2F0aXZlLicpOwotICAgIH0KLQotICAgIHRoaXMuX2Nxc0hpZ2hXYXRlck1h
cmsgPSBoaWdoV2F0ZXJNYXJrOworZnVuY3Rpb24gQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdo
V2F0ZXJNYXJrIH0pIHsKKyAgICBjcmVhdGVEYXRhUHJvcGVydHkodGhpcywgJ2hpZ2hXYXRlck1h
cmsnLCBoaWdoV2F0ZXJNYXJrKTsKIH0KIAogQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBl
ID0gewotICAgIHNob3VsZEFwcGx5QmFja3ByZXNzdXJlOiBmdW5jdGlvbihxdWV1ZVNpemUpIHsK
LSAgICAgICAgaWYgKCF0eXBlSXNPYmplY3QodGhpcykpIHsKLSAgICAgICAgICAgIHRocm93IG5l
dyBUeXBlRXJyb3IoJ0NvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaG91bGRBcHBseUJh
Y2twcmVzc3VyZSBjYW4gb25seSBiZSBhcHBsaWVkIHRvIG9iamVjdHMnKTsKLSAgICAgICAgfQot
ICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLCAn
X2Nxc0hpZ2hXYXRlck1hcmsnKSkgewotICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcign
Q291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNob3VsZEFwcGx5QmFja3ByZXNzdXJlIGNh
biBvbmx5IGJlIGFwcGxpZWQgdG8gYSAnICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ0NvdW50UXVldWluZ1N0cmF0ZWd5Jyk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4g
cXVldWVTaXplID4gdGhpcy5fY3FzSGlnaFdhdGVyTWFyazsKLSAgICB9LAogICAgIHNpemU6IGZ1
bmN0aW9uKGNodW5rKSB7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3Jlc291cmNlcy9zdHJl
YW1zLXV0aWxzLmpzIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRp
b24vcmVzb3VyY2VzL3N0cmVhbXMtdXRpbHMuanMKaW5kZXggODNhNDIwOWRlYmM2MzQ1MmZjYmJl
MTUwYzQzMGI0YWUwYTFkMzk5YS4uOTcyOTU3YzEwZGNiOTg4NTM0YTcwYjE2OTlkYjY5NzM3ZGNj
ZjlkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50
YXRpb24vcmVzb3VyY2VzL3N0cmVhbXMtdXRpbHMuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFt
cy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVzb3VyY2VzL3N0cmVhbXMtdXRpbHMuanMKQEAg
LTEsNSArMSwzIEBACi12YXIgc3RhbmRhcmRUaW1lb3V0ID0gMTAwOwotCiBmdW5jdGlvbiBSYW5k
b21QdXNoU291cmNlKHRvUHVzaCkgewogICAgIHRoaXMucHVzaGVkID0gMDsKICAgICB0aGlzLnRv
UHVzaCA9IHRvUHVzaDsKQEAgLTI3LDI0ICsyNSwyMyBAQCBSYW5kb21QdXNoU291cmNlLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMucGF1c2VkID0gZmFsc2U7CiAgICAgICAgIH0KIAot
ICAgICAgICB2YXIgc3RyZWFtID0gdGhpczsKKyAgICAgICAgdmFyIHNvdXJjZSA9IHRoaXM7CiAg
ICAgICAgIGZ1bmN0aW9uIHdyaXRlQ2h1bmsoKSB7Ci0gICAgICAgICAgICBpZiAoc3RyZWFtLnBh
dXNlZCkgeworICAgICAgICAgICAgaWYgKHNvdXJjZS5wYXVzZWQpIHsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHN0cmVhbS5wdXNoZWQrKzsK
KyAgICAgICAgICAgIHNvdXJjZS5wdXNoZWQrKzsKIAotICAgICAgICAgICAgaWYgKHN0cmVhbS50
b1B1c2ggPiAwICYmIHN0cmVhbS5wdXNoZWQgPiBzdHJlYW0udG9QdXNoKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHN0cmVhbS5faW50ZXJ2YWxIYW5kbGUpIHsKLSAgICAgICAgICAgICAgICAgICAg
Y2xlYXJJbnRlcnZhbChzdHJlYW0uX2ludGVydmFsSGFuZGxlKTsKLSAgICAgICAgICAgICAgICAg
ICAgc3RyZWFtLl9pbnRlcnZhbEhhbmRsZSA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIGlmIChz
b3VyY2UudG9QdXNoID4gMCAmJiBzb3VyY2UucHVzaGVkID4gc291cmNlLnRvUHVzaCkgeworICAg
ICAgICAgICAgICAgIGlmIChzb3VyY2UuX2ludGVydmFsSGFuZGxlKSB7CisgICAgICAgICAgICAg
ICAgICAgIGNsZWFySW50ZXJ2YWwoc291cmNlLl9pbnRlcnZhbEhhbmRsZSk7CisgICAgICAgICAg
ICAgICAgICAgIHNvdXJjZS5faW50ZXJ2YWxIYW5kbGUgPSB1bmRlZmluZWQ7CiAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIHN0cmVhbS5jbG9zZWQgPSB0cnVlOwotICAgICAgICAg
ICAgICAgIHN0cmVhbS5vbmVuZCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgc3RyZWFtLm9uZGF0YShyYW5kb21DaHVuaygxMjgpKTsKKyAgICAg
ICAgICAgICAgICBzb3VyY2UuY2xvc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBzb3VyY2Uu
b25lbmQoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc291cmNlLm9u
ZGF0YShyYW5kb21DaHVuaygxMjgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0s
CkBAIC0xNTAsNyArMTQ3LDYgQEAgZnVuY3Rpb24gc2VxdWVudGlhbFJlYWRhYmxlU3RyZWFtKGxp
bWl0LCBvcHRpb25zKSB7CiAgICAgICAgICAgICAgICAgc2VxdWVudGlhbFNvdXJjZS5vcGVuKGZ1
bmN0aW9uKGVycikgewogICAgICAgICAgICAgICAgICAgICBpZiAoZXJyKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICByZWplY3QoZXJyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7
CiAgICAgICAgICAgICAgICAgfSk7CkBAIC0xNTgsMjAgKzE1NCwyMyBAQCBmdW5jdGlvbiBzZXF1
ZW50aWFsUmVhZGFibGVTdHJlYW0obGltaXQsIG9wdGlvbnMpIHsKICAgICAgICAgfSwKIAogICAg
ICAgICBwdWxsOiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBzZXF1ZW50aWFsU291cmNlLnJl
YWQoZnVuY3Rpb24oZXJyLCBkb25lLCBjaHVuaykgewotICAgICAgICAgICAgICAgIGlmIChlcnIp
IHsKLSAgICAgICAgICAgICAgICAgICAgYy5lcnJvcihlcnIpOwotICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoZG9uZSkgewotICAgICAgICAgICAgICAgICAgICBzZXF1ZW50aWFsU291cmNlLmNs
b3NlKGZ1bmN0aW9uKGVycikgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycikgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZXJyb3IoZXJyKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBjLmNsb3NlKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGMuZW5xdWV1ZShjaHVu
ayk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1
bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgICAgIHNlcXVlbnRpYWxTb3Vy
Y2UucmVhZChmdW5jdGlvbihlcnIsIGRvbmUsIGNodW5rKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChlcnIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpOworICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHNlcXVlbnRpYWxTb3VyY2UuY2xvc2UoZnVuY3Rpb24oZXJyKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGVycikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWplY3QoZXJyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYy5jbG9zZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c29sdmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgYy5lbnF1ZXVlKGNodW5rKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0sCiAgICAgfSk7
CkBAIC0xODAsMyArMTc5LDE1IEBAIGZ1bmN0aW9uIHNlcXVlbnRpYWxSZWFkYWJsZVN0cmVhbShs
aW1pdCwgb3B0aW9ucykgewogCiAgICAgcmV0dXJuIHN0cmVhbTsKIH07CisKK2Z1bmN0aW9uIHR5
cGVJc09iamVjdCh4KSB7CisgICAgcmV0dXJuICh0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgeCAh
PT0gbnVsbCkgfHwgdHlwZW9mIHggPT09ICdmdW5jdGlvbic7Cit9CisKK2Z1bmN0aW9uIGNyZWF0
ZURhdGFQcm9wZXJ0eShvLCBwLCB2KSB7CisgICAgaWYgKCF0eXBlSXNPYmplY3QobykpIHsKKyAg
ICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUGFyYW1ldGVyIG11c3QgYmUgYW4gb2JqZWN0Licp
OworICAgICAgICByZXR1cm4KKyAgICB9CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIHAs
IHsgdmFsdWU6IHYsIHdyaXRhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFi
bGU6IHRydWUgfSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254876</attachid>
            <date>2015-06-15 07:39:41 -0700</date>
            <delta_ts>2015-06-16 01:19:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145839-20150615163903.patch</filename>
            <type>text/plain</type>
            <size>187848</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1NTUwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzZmMWVhYzgwZjhhZDUzNmJkOTVi
ODA1ZjAzOGZiMzMxNjU1NWEzZS4uZmVkY2FkZTRiOGVmMDc3Mjg2ZjNjNjc4MmQ2NGQ2ODY2MzQw
MDBmMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE1LTA2LTE1ICBZb3Vlbm4gRmFibGV0IDx5
b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4gYW5kIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8
Y2FsdmFyaXNAaWdhbGlhLmNvbT4KKworICAgICAgICBbU3RyZWFtcyBBUEldIFN5bmMgdGVzdHMg
d2l0aCBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDU4MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDb25zaWRlcmVkIGFsbCBjaGFuZ2VzIGluIHRoZSBzcGVjIHRlc3RzIGFuZCBicm91Z2h0IHRo
ZW0gdG8gV2ViS2l0LgorCisgICAgICAgIFNvbWUgb2YgdGhvc2UgY2hhbmdlcyB3ZXJlIHJlbGF0
ZWQgdG8gc3BlYyBjaGFuZ2VzLCBsaWtlIHRoZSBzdHJhdGVneSBvciBzb21lIG9mIHRoZSBhbGdv
cml0aG1zLiBTb21lIGxpa2UgdGhlCisgICAgICAgIHRlZSBvbmVzIHdlcmUgbmV3bHkgYWRkZWQg
YXMgdGhleSB3aWxsIGJlIGltcGxlbWVudGVkIHNvb24uIFRoZXJlIGFyZSBhbHNvIHNvbWUgdGVz
dHMgdGhhdCBzaHVmZmxlZCBhcm91bmQKKyAgICAgICAgYmVjYXVzZSB0aGV5IHdlcmUganVzdCBt
b3ZlZCBhdCB0aGUgc3BlYyBvciBpbnRlZ3JhdGVkIGZyb20gdGhlIGNoYW5nZXMgd2Ugc3VibWl0
dGVkLCB3aGljaCB3YXMgc3Vic3RhbnRpYWxseQorICAgICAgICBpbXBvcnRhbnQgYXMgaXQgYWxs
b3dlZCB1cyB0byByZW1vdmUgc29tZSBvZiBvdXIgY3VzdG9tIHRlc3RzIHRoYXQgYXJlIG5vdyBj
b3ZlcmVkIGJ5IHRoZSBzcGVjIG9uZXMuCisKKyAgICAgICAgKiByZXNvdXJjZXMvZ2MuanM6IEFk
ZGVkIHdhcm5pbmcgYWJvdXQgdXNpbmcgZ2NSZWMsIHJlc3VsdHMgbWlnaHQgbm90IGJlIHJlbGlh
YmxlLgorICAgICAgICAqIHN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWNvbnRyb2xsZXItZXJyb3It
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWNvbnRyb2xs
ZXItZXJyb3IuaHRtbDogTmV3IGZhaWxpbmcgdGVzdCBkdWUgdG8gZGlzY3JlcGFuY2llcyB3aXRo
IHRoZSByZWZlcmVuY2UKKyAgICAgICAgaW1wbGVtZW50YXRpb24uIFNvbWV0aGluZyB3ZSB3aWxs
IGFkZHJlc3MuCisgICAgICAgICogc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIHN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWdjLmh0bWw6IFJl
bnVtYmVyZWQuCisgICAgICAgICogc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFk
ZXItcmVhZC5odG1sOiBSZW51bWJlcmVkLgorICAgICAgICAqIHN0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtLXJlYWRlci5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHN0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50
YXRpb24vYmFkLXN0cmF0ZWdpZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtc3RyYXRlZ2llcy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWlu
Zy1zb3VyY2VzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmh0bWw6IFVwZGF0ZWQgZnJvbSBzcGVj
IGFuZCBleHBlY3RhdGlvbnMuCisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50
YXRpb24vYnJhbmQtY2hlY2tzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVy
ZW5jZS1pbXBsZW1lbnRhdGlvbi9icmFuZC1jaGVja3MuaHRtbDogVXBkYXRlZCBmcm9tIHNwZWMg
YW5kIGV4cGVjdGF0aW9ucy4KKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRh
dGlvbi9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYnl0ZS1sZW5ndGgtcXVl
dWluZy1zdHJhdGVneS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0
ZWd5Lmh0bWw6IFVwZGF0ZWQgZnJvbSBzcGVjIGFuZCBleHBlY3RhdGlvbnMuCisgICAgICAgICog
c3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWNhbmNlbC1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24v
cmVhZGFibGUtc3RyZWFtLWNhbmNlbC5odG1sOiBVcGRhdGVkIGZyb20gc3BlYyBhbmQgZXhwZWN0
YXRpb25zIGFuZCBjb3JyZWN0ZWQKKyAgICAgICAgdGltZW91dHMgdG8gdHJ5IHRvIG92ZXJjb21l
IHByb2JsZW1zIGluIHNsb3dlciBib3RzLgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWlt
cGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVh
ZGFibGUtc3RyZWFtLXJlYWRlci5odG1sOiBVcGRhdGVkIGZyb20gc3BlYyBhbmQgZXhwZWN0YXRp
b25zLgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxl
LXN0cmVhbS10ZWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdHJlYW1zL3JlZmVy
ZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVlLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10
ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxl
bWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQuaHRtbDogVXBkYXRlZCBmcm9tIHNw
ZWMgYW5kIGV4cGVjdGF0aW9ucy4KKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbDogVXBkYXRlZCBmcm9tIHNwZWMgYW5kIGV4cGVj
dGF0aW9ucy4KKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZXNv
dXJjZXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5qczoKKyAgICAgICAgKEJ5dGVMZW5n
dGhRdWV1aW5nU3RyYXRlZ3kpOiBVcGRhdGVkIGZyb20gc3BlYy4KKyAgICAgICAgKHR5cGVJc09i
amVjdCk6IERlbGV0ZWQuCisgICAgICAgIChCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3Rv
dHlwZS5zaG91bGRBcHBseUJhY2twcmVzc3VyZSk6IERlbGV0ZWQuCisgICAgICAgICogc3RyZWFt
cy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVzb3VyY2VzL2NvdW50LXF1ZXVpbmctc3RyYXRl
Z3kuanM6CisgICAgICAgIChDb3VudFF1ZXVpbmdTdHJhdGVneSk6IFVwZGF0ZWQgZnJvbSBzcGVj
LgorICAgICAgICAodHlwZUlzT2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKENvdW50UXVldWlu
Z1N0cmF0ZWd5LnByb3RvdHlwZS5zaG91bGRBcHBseUJhY2twcmVzc3VyZSk6IERlbGV0ZWQuCisg
ICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVzb3VyY2VzL3N0cmVh
bXMtdXRpbHMuanM6CisgICAgICAgIChSYW5kb21QdXNoU291cmNlLnByb3RvdHlwZS5yZWFkU3Rh
cnQud3JpdGVDaHVuayk6CisgICAgICAgIChSYW5kb21QdXNoU291cmNlLnByb3RvdHlwZS5yZWFk
U3RhcnQpOiBSZW5hbWVkIHN0cmVhbSBhcyBzb3VyY2UKKyAgICAgICAgKC5zdHJlYW0ubmV3LlJl
YWRhYmxlU3RyZWFtKToKKyAgICAgICAgKHNlcXVlbnRpYWxSZWFkYWJsZVN0cmVhbSk6IFVwZGF0
ZWQgZnJvbSBzcGVjLgorICAgICAgICAodHlwZUlzT2JqZWN0KTogQWRkZWQuCisgICAgICAgIChj
cmVhdGVEYXRhUHJvcGVydHkpOiBBZGRlZC4KKwogMjAxNS0wNi0xMyAgQ2hyaXMgRmxlaXphY2gg
IDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBXZWJLaXQgZXhwb3NlcyBhbGwg
UnVieSBUZXh0IGFzIFVua25vd24gKEphcGFuZXNlIEVQVUIgYWNjZXNzaWJpbGl0eSBibG9ja2Vy
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2djLmpzIGIvTGF5b3V0VGVzdHMv
cmVzb3VyY2VzL2djLmpzCmluZGV4IDA3NGIzYzhmMjRiMGEyYzM0N2RhMTNiNjRjZGUwZmQ3NzM0
MzhkOGIuLmJkMzUxMTBjMmRlNWE5N2U5NzI1OTMzMzViODMxZjAwZjZjMzM5ZTUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9nYy5qcworKysgYi9MYXlvdXRUZXN0cy9yZXNvdXJj
ZXMvZ2MuanMKQEAgLTcsNiArNyw4IEBAIGlmICghd2luZG93LmdjKQogICAgIHsKICAgICAgICAg
aWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCiAgICAgICAgICAgICByZXR1cm4gR0NDb250cm9sbGVy
LmNvbGxlY3QoKTsKKworICAgICAgICBjb25zb2xlLndhcm4oJ1Rlc3RzIGFyZSBydW5uaW5nIHdp
dGhvdXQgdGhlIGFiaWxpdHkgdG8gZG8gbWFudWFsIGdhcmJhZ2UgY29sbGVjdGlvbi4gVGhleSB3
aWxsIHN0aWxsIHdvcmssIGJ1dCBjb3ZlcmFnZSB3aWxsIGJlIHN1Ym9wdGltYWwuJyk7CiAgICAg
ICAgIGZ1bmN0aW9uIGdjUmVjKG4pIHsKICAgICAgICAgICAgIGlmIChuIDwgMSkKICAgICAgICAg
ICAgICAgICByZXR1cm4ge307CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbS1jb250cm9sbGVyLWVycm9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtc3RyZWFtLWNvbnRyb2xsZXItZXJyb3ItZXhwZWN0ZWQudHh0CmluZGV4
IGYwMzM2ZTBiMGVmMDlhMzRjNzcxNDJiMDM2MDExM2QyOWQ5YzczMDcuLjczNTFlNGU2OTRlMDgx
ZjMyNjBjYjEzNDFlYThjMjRhNzc5ZjhkZTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtLWNvbnRyb2xsZXItZXJyb3ItZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWNvbnRyb2xsZXItZXJyb3ItZXhwZWN0
ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAogCiBQQVNTIEVycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0g
c2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZSBwcm9taXNlIAogUEFTUyBF
cnJvcmluZyBhIFJlYWRhYmxlU3RyZWFtIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1SZWFk
ZXIgY2xvc2UgcHJvbWlzZSAKLVBBU1MgRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSB3aXRob3V0
IGFueSB2YWx1ZSAKK0ZBSUwgRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSB3aXRob3V0IGFueSB2
YWx1ZSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAodW5kZWZpbmVkKSB1bmRlZmluZWQgYnV0IGdv
dCAob2JqZWN0KSBvYmplY3QgIkVycm9yOiBFcnJvciBmdW5jdGlvbiBjYWxsZWQuIgogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1jb250cm9sbGVyLWVy
cm9yLmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1jb250cm9sbGVy
LWVycm9yLmh0bWwKaW5kZXggMGNlN2FhNTBhZDU5NzQ3MjY4MzUyNjhlYTY5OTAwNmZkZGJmYWZi
Yi4uY2VlYTNiZmFmMGVjZmNmM2E4ODdkMGRlMDgzM2EwN2E0ZDdlNjk2YyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tY29udHJvbGxlci1lcnJvci5odG1s
CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWNvbnRyb2xsZXItZXJy
b3IuaHRtbApAQCAtMiw5ICsyLDggQEAKIDxzY3JpcHQgc3JjPScuLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMnPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyc+PC9zY3JpcHQ+CiA8c2NyaXB0PgotCi10MiA9IGFzeW5jX3Rlc3QoJ0Vycm9y
aW5nIGEgUmVhZGFibGVTdHJlYW0gc2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0cmVhbVJlYWRlciBj
bG9zZSBwcm9taXNlJyk7Ci10Mi5zdGVwKGZ1bmN0aW9uKCkgewordmFyIHRlc3QxID0gYXN5bmNf
dGVzdCgnRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyIGNsb3NlIHByb21pc2UnKTsKK3Rlc3QxLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAg
dmFyIGNvbnRyb2xsZXI7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKICAgICAg
ICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKQEAgLTEyLDE5ICsxMSwxOSBAQCB0Mi5zdGVwKGZ1bmN0
aW9uKCkgewogICAgICAgICB9CiAgICAgfSk7CiAKLSAgIHJzLmdldFJlYWRlcigpLmNsb3NlZC50
aGVuKHQyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgIHJzLmdldFJlYWRlcigpLmNsb3NlZC50
aGVuKHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKICAgICAgICAgYXNzZXJ0X3VucmVhY2hl
ZCgiY2xvc2VkIHByb21pc2Ugc2hvdWxkIG5vdCBiZSByZXNvbHZlZCB3aGVuIHN0cmVhbSBpcyBl
cnJvcmVkIik7Ci0gICAgfSksIHQyLnN0ZXBfZnVuYyhmdW5jdGlvbihlcnIpIHsKKyAgICB9KSwg
dGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKGVycikgewogICAgICAgICBhc3NlcnRfZXF1YWxzKHJz
RXJyb3IsIGVycik7Ci0gICAgICAgIHQyLmRvbmUoKTsKKyAgICAgICAgdGVzdDEuZG9uZSgpOwog
ICAgIH0pKTsKIAogICAgIHZhciByc0Vycm9yID0gIm15IGVycm9yIjsKICAgICBjb250cm9sbGVy
LmVycm9yKHJzRXJyb3IpOwogfSk7CiAKLXQzID0gYXN5bmNfdGVzdCgnRXJyb3JpbmcgYSBSZWFk
YWJsZVN0cmVhbSBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlIHByb21p
c2UnKTsKLXQzLnN0ZXAoZnVuY3Rpb24oKSB7Cit2YXIgdGVzdDIgPSBhc3luY190ZXN0KCdFcnJv
cmluZyBhIFJlYWRhYmxlU3RyZWFtIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1SZWFkZXIg
Y2xvc2UgcHJvbWlzZScpOwordGVzdDIuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgY29udHJv
bGxlcjsKICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewogICAgICAgICBzdGFydDog
ZnVuY3Rpb24oYykgewpAQCAtMzcsMTYgKzM2LDE2IEBAIHQzLnN0ZXAoZnVuY3Rpb24oKSB7CiAK
ICAgICAvLyBMZXQncyBjYWxsIGdldFJlYWRlciB0d2ljZSB0byBlbnN1cmUgdGhhdCBzdHJlYW0g
aXMgbm90IGxvY2tlZCB0byBhIHJlYWRlci4KICAgICBycy5nZXRSZWFkZXIoKTsKLSAgICBycy5n
ZXRSZWFkZXIoKS5jbG9zZWQudGhlbih0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgcnMu
Z2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4odGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewogICAg
ICAgICBhc3NlcnRfdW5yZWFjaGVkKCJjbG9zZWQgcHJvbWlzZSBzaG91bGQgbm90IGJlIHJlc29s
dmVkIHdoZW4gc3RyZWFtIGlzIGVycm9yZWQiKTsKLSAgICB9KSwgdDMuc3RlcF9mdW5jKGZ1bmN0
aW9uKGVycikgeworICAgIH0pLCB0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oZXJyKSB7CiAgICAg
ICAgIGFzc2VydF9lcXVhbHMocnNFcnJvciwgZXJyKTsKLSAgICAgICAgdDMuZG9uZSgpOworICAg
ICAgICB0ZXN0Mi5kb25lKCk7CiAgICAgfSkpOwogfSk7CiAKLXQ0ID0gYXN5bmNfdGVzdCgnRXJy
b3JpbmcgYSBSZWFkYWJsZVN0cmVhbSB3aXRob3V0IGFueSB2YWx1ZScpOwotdDQuc3RlcChmdW5j
dGlvbigpIHsKK3ZhciB0ZXN0MyA9IGFzeW5jX3Rlc3QoJ0Vycm9yaW5nIGEgUmVhZGFibGVTdHJl
YW0gd2l0aG91dCBhbnkgdmFsdWUnKTsKK3Rlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFy
IGNvbnRyb2xsZXI7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKICAgICAgICAg
c3RhcnQ6IGZ1bmN0aW9uKGMpIHsKQEAgLTU0LDE2ICs1MywxMyBAQCB0NC5zdGVwKGZ1bmN0aW9u
KCkgewogICAgICAgICB9CiAgICAgfSk7CiAKLSAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQudGhl
bih0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLnRo
ZW4odGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewogICAgICAgICBhc3NlcnRfdW5yZWFjaGVk
KCJjbG9zZWQgcHJvbWlzZSBzaG91bGQgbm90IGJlIHJlc29sdmVkIHdoZW4gc3RyZWFtIGlzIGVy
cm9yZWQiKTsKLSAgICB9KSwgdDQuc3RlcF9mdW5jKGZ1bmN0aW9uKGVycikgewotICAgICAgICAv
LyBFcnJvciBnZW5lcmF0ZWQgYnkgSlMgZW5naW5lLgotICAgICAgICBhc3NlcnRfdHJ1ZSh0eXBl
b2YgZXJyID09ICdvYmplY3QnKTsKLSAgICAgICAgdDQuZG9uZSgpOworICAgIH0pLCB0ZXN0My5z
dGVwX2Z1bmMoZnVuY3Rpb24oZXJyKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZXJyLCB1bmRl
ZmluZWQpOworICAgICAgICB0ZXN0My5kb25lKCk7CiAgICAgfSkpOwogCiAgICAgY29udHJvbGxl
ci5lcnJvcigpOwogfSk7Ci0KLQogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDdhMTYxOWVlMzIyOGQ1YTNmNGE0YmMxMmZlY2ZkMjMzMTAyYzlmY2YuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBA
Ci0KLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuJ3QgYmUgY29uc3RydWN0ZWQgd2l0aCBnYXJiYWdl
IAotUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHBy
b3BlciBwYXJhbWV0ZXJzIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBj
YWxsIHN0YXJ0IG1ldGhvZCB3aXRoaW4gcHJvdG90eXBlIGNoYWluIG9mIGl0cyBzb3VyY2UgCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWdjLmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1nYy5odG1sCmluZGV4IGU4OTI3
NzJmNDk5YzQ2NTY4NmIxNmQ0NWI0MTYxOTAxMjZhMGU2YTAuLmQwNzQyMTExNWZhYzc2MjA0Yjg4
NjgyOTcwYmE1NTg5OTFlMWQ0ZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtLWdjLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW0tZ2MuaHRtbApAQCAtMyw3ICszLDYgQEAKIDxzY3JpcHQgc3JjPScuLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMnPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNl
cy9nYy5qcyc+PC9zY3JpcHQ+CiA8c2NyaXB0PgotCiBmdW5jdGlvbiBnYXJiYWdlQ29sbGVjdEFu
ZERvKHRhc2spCiB7CiAgICAgdmFyIHRpbWVvdXQgPSA1MDsKQEAgLTE2LDggKzE1LDggQEAgZnVu
Y3Rpb24gZ2FyYmFnZUNvbGxlY3RBbmREbyh0YXNrKQogICAgIHNldFRpbWVvdXQodGFzaywgdGlt
ZW91dCk7CiB9CiAKLXQxID0gYXN5bmNfdGVzdCgnUmVhZGFibGUgc3RyZWFtIGNvbnRyb2xsZXIg
bWV0aG9kcyBzaG91bGQgY29udGludWUgd29ya2luZyBwcm9wZXJseSB3aGVuIHNjcmlwdHMgYXJl
IGxvb3NpbmcgcmVmZXJlbmNlIHRvIHRoZSByZWFkYWJsZSBzdHJlYW0nKTsKLXQxLnN0ZXAoZnVu
Y3Rpb24oKSB7Cit2YXIgdGVzdDEgPSBhc3luY190ZXN0KCdSZWFkYWJsZSBzdHJlYW0gY29udHJv
bGxlciBtZXRob2RzIHNob3VsZCBjb250aW51ZSB3b3JraW5nIHByb3Blcmx5IHdoZW4gc2NyaXB0
cyBhcmUgbG9vc2luZyByZWZlcmVuY2UgdG8gdGhlIHJlYWRhYmxlIHN0cmVhbScpOwordGVzdDEu
c3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgY29udHJvbGxlcjsKICAgICBuZXcgUmVhZGFibGVT
dHJlYW0oewogICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewpAQCAtMjUsNDQgKzI0LDQzIEBA
IHQxLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIGdhcmJhZ2VD
b2xsZWN0QW5kRG8odDEuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgIGdhcmJhZ2VDb2xsZWN0
QW5kRG8odGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewogICAgICAgICBjb250cm9sbGVyLmNs
b3NlKCk7CiAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigp
IHsgY29udHJvbGxlci5jbG9zZSgpOyB9KTsKICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlw
ZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBjb250cm9sbGVyLmVycm9yKCk7IH0pOwotICAgICAgICB0
MS5kb25lKCk7CisgICAgICAgIHRlc3QxLmRvbmUoKTsKICAgICB9KSk7CiB9KTsKIAotdDIgPSBh
c3luY190ZXN0KCdSZWFkYWJsZSBzdHJlYW0gY2xvc2VkIHByb21pc2Ugc2hvdWxkIHJlc29sdmUg
ZXZlbiBpZiBzdHJlYW0gYW5kIHJlYWRlciBKUyByZWZlcmVuY2VzIGFyZSBsb3N0Jyk7Ci10Mi5z
dGVwKGZ1bmN0aW9uKCkgewordmFyIHRlc3QyID0gYXN5bmNfdGVzdCgnUmVhZGFibGUgc3RyZWFt
IGNsb3NlZCBwcm9taXNlIHNob3VsZCByZXNvbHZlIGV2ZW4gaWYgc3RyZWFtIGFuZCByZWFkZXIg
SlMgcmVmZXJlbmNlcyBhcmUgbG9zdCcpOwordGVzdDIuc3RlcChmdW5jdGlvbigpIHsKICAgICB2
YXIgY29udHJvbGxlcjsKICAgICBuZXcgUmVhZGFibGVTdHJlYW0oewogICAgICAgICBzdGFydDog
ZnVuY3Rpb24oYykgewogICAgICAgICAgICAgY29udHJvbGxlciA9IGM7CiAgICAgICAgIH0KLSAg
ICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQudGhlbih0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIHQyLmRvbmUoKTsKKyAgICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQudGhlbih0ZXN0Mi5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIHRlc3QyLmRvbmUoKTsKICAgICB9KSk7CiAK
LSAgICBnYXJiYWdlQ29sbGVjdEFuZERvKHQyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICBn
YXJiYWdlQ29sbGVjdEFuZERvKHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKICAgICAgICAg
Y29udHJvbGxlci5jbG9zZSgpOwogICAgIH0pKTsKIH0pOwogCi10MyA9IGFzeW5jX3Rlc3QoJ1Jl
YWRhYmxlIHN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgcmVqZWN0IGV2ZW4gaWYgc3RyZWFt
IGFuZCByZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCcpOwotdDMuc3RlcChmdW5jdGlvbigp
IHsKK3ZhciB0ZXN0MyA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlIHN0cmVhbSBjbG9zZWQgcHJvbWlz
ZSBzaG91bGQgcmVqZWN0IGV2ZW4gaWYgc3RyZWFtIGFuZCByZWFkZXIgSlMgcmVmZXJlbmNlcyBh
cmUgbG9zdCcpOwordGVzdDMuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgY29udHJvbGxlcjsK
ICAgICBuZXcgUmVhZGFibGVTdHJlYW0oewogICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewog
ICAgICAgICAgICAgY29udHJvbGxlciA9IGM7CiAgICAgICAgIH0KLSAgICB9KS5nZXRSZWFkZXIo
KS5jbG9zZWQuY2F0Y2godDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICB0My5kb25l
KCk7CisgICAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkLmNhdGNoKHRlc3QzLnN0ZXBfZnVuYyhmdW5j
dGlvbigpIHsKKyAgICAgICAgdGVzdDMuZG9uZSgpOwogICAgIH0pKTsKIAotICAgIGdhcmJhZ2VD
b2xsZWN0QW5kRG8odDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgIGdhcmJhZ2VDb2xsZWN0
QW5kRG8odGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewogICAgICAgICBjb250cm9sbGVyLmVy
cm9yKCk7CiAgICAgfSkpOwogfSk7Ci0KIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjMWE0YTVhMmYyOTc0NjA0OTJiMGRjYmU5Y2Y5MDJkYWU1
MWI0YzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIENvbGxlY3RpbmcgYSBSZWFkYWJsZVN0
cmVhbVJlYWRlciBzaG91bGQgbm90IHVubG9jayBpdHMgc3RyZWFtIAotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItcmVhZC5odG1sIGIvTGF5
b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLXJlYWQuaHRtbAppbmRleCA4
MjQxN2I3MWUxMmZlOTQzMDU0OTk2MTdhMTk1ODNiYjE5MzQwNTgwLi4xMWY1ZDI4MTJhZjAzYjdm
NmFiZDRhZDFiZTY0ODk1NjE4MDg4NmFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItcmVhZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1yZWFkLmh0bWwKQEAgLTIsOCArMiw4IEBACiA8c2Ny
aXB0IHNyYz0nLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJz48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPScuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMnPjwvc2NyaXB0PgogPHNjcmlw
dD4KLXZhciB0MSA9IGFzeW5jX3Rlc3QoJ1JlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBn
ZXRzIGNsb3NlZCcpOwotdDEuc3RlcChmdW5jdGlvbigpIHsKK3ZhciB0ZXN0MSA9IGFzeW5jX3Rl
c3QoJ1JlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGNsb3NlZCcpOwordGVzdDEu
c3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgY29udHJvbGxlcjsKICAgICB2YXIgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oewogICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewpAQCAtMTMsMTgg
KzEzLDE4IEBAIHQxLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIGNvdW50ZXIgPSAwOwogICAg
IHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKIAotICAgIHJlYWRlci5yZWFkKCkudGhlbih0
MS5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHRl
c3QxLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsKICAgICAgICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMocmVzdWx0LCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQoKSBz
aG91bGQgZnVsZmlsbCB3aXRoIGNsb3NlJyk7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoY291bnRl
ciwgMSk7CiAgICAgICAgIGNvdW50ZXIrKzsKICAgICB9KSk7Ci0gICAgcmVhZGVyLnJlYWQoKS50
aGVuKHQxLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsKKyAgICByZWFkZXIucmVhZCgpLnRo
ZW4odGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgewogICAgICAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVh
ZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UnKTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhj
b3VudGVyLCAyKTsKICAgICAgICAgY291bnRlcisrOwotICAgICAgICB0MS5kb25lKCk7CisgICAg
ICAgIHRlc3QxLmRvbmUoKTsKICAgICB9KSk7Ci0gICAgcmVhZGVyLmNsb3NlZC50aGVuKHQxLnN0
ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICByZWFkZXIuY2xvc2VkLnRoZW4odGVzdDEuc3RlcF9m
dW5jKGZ1bmN0aW9uKCkgewogICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIsIDApOwogICAg
ICAgICBjb3VudGVyKys7CiAgICAgfSkpOwpAQCAtMzIsOCArMzIsOCBAQCB0MS5zdGVwKGZ1bmN0
aW9uKCkgewogICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKIH0pOwogCi12YXIgdDIgPSBhc3luY190
ZXN0KCdSZWFkaW5nIHR3aWNlIG9uIGEgY2xvc2VkIHN0cmVhbScpOwotdDIuc3RlcChmdW5jdGlv
bigpIHsKK3ZhciB0ZXN0MiA9IGFzeW5jX3Rlc3QoJ1JlYWRpbmcgdHdpY2Ugb24gYSBjbG9zZWQg
c3RyZWFtJyk7Cit0ZXN0Mi5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciBjb250cm9sbGVyOwog
ICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CiAgICAgICAgIHN0YXJ0OiBmdW5jdGlv
bihjKSB7CkBAIC00NiwyNSArNDYsMjUgQEAgdDIuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIg
Y291bnRlciA9IDA7CiAgICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwogCi0gICAgcmVh
ZGVyLnJlYWQoKS50aGVuKHQyLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsKKyAgICByZWFk
ZXIucmVhZCgpLnRoZW4odGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgewogICAgICAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTog
dHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UnKTsKICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhjb3VudGVyLCAwKTsKICAgICAgICAgY291bnRlcisrOwogICAgIH0pKTsKLSAg
ICByZWFkZXIucmVhZCgpLnRoZW4odDIuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgeworICAg
IHJlYWRlci5yZWFkKCkudGhlbih0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7CiAg
ICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogdW5kZWZpbmVkLCBk
b25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCBjbG9zZScpOwogICAgICAg
ICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIsIDEpOwogICAgICAgICBjb3VudGVyKys7CiAgICAgfSkp
OwotICAgIHJlYWRlci5jbG9zZWQudGhlbih0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAg
cmVhZGVyLmNsb3NlZC50aGVuKHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKICAgICAgICAg
YXNzZXJ0X2VxdWFscyhjb3VudGVyLCAyKTsKICAgICAgICAgY291bnRlcisrOwotICAgICAgICB0
Mi5kb25lKCk7CisgICAgICAgIHRlc3QyLmRvbmUoKTsKICAgICB9KSk7CiB9KTsKIAotdmFyIHQz
ID0gYXN5bmNfdGVzdCgnUmVhZGluZyB0d2ljZSBvbiBhbiBlcnJvcmVkIHN0cmVhbScpOwotdDMu
c3RlcChmdW5jdGlvbigpIHsKK3ZhciB0ZXN0MyA9IGFzeW5jX3Rlc3QoJ1JlYWRpbmcgdHdpY2Ug
b24gYW4gZXJyb3JlZCBzdHJlYW0nKTsKK3Rlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFy
IGNvbnRyb2xsZXI7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKICAgICAgICAg
c3RhcnQ6IGZ1bmN0aW9uKGMpIHsKQEAgLTc4LDMyICs3OCwzMiBAQCB0My5zdGVwKGZ1bmN0aW9u
KCkgewogICAgIHZhciBjb3VudGVyID0gMDsKICAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVy
KCk7CiAKLSAgICByZWFkZXIucmVhZCgpLnRoZW4odDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewor
ICAgIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CiAgICAg
ICAgIGFzc2VydF91bnJlYWNoZWQoJ3JlYWQoKSBzaG91bGQgcmVqZWN0IG9uIGFuIGVycm9yZWQg
c3RyZWFtJyk7Ci0gICAgfSksIHQzLnN0ZXBfZnVuYyhmdW5jdGlvbihlcnIpIHsKKyAgICB9KSwg
dGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKGVycikgewogICAgICAgICBhc3NlcnRfZXF1YWxzKG15
RXJyb3IsIGVycik7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoY291bnRlciwgMCk7CiAgICAgICAg
IGNvdW50ZXIrKzsKICAgICB9KSk7Ci0gICAgcmVhZGVyLnJlYWQoKS50aGVuKHQzLnN0ZXBfZnVu
YyhmdW5jdGlvbigpIHsKKyAgICByZWFkZXIucmVhZCgpLnRoZW4odGVzdDMuc3RlcF9mdW5jKGZ1
bmN0aW9uKCkgewogICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdyZWFkKCkgc2hvdWxkIHJlamVj
dCBvbiBhbiBlcnJvcmVkIHN0cmVhbScpOwotICAgIH0pLCB0My5zdGVwX2Z1bmMoZnVuY3Rpb24o
ZXJyKSB7CisgICAgfSksIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihlcnIpIHsKICAgICAgICAg
YXNzZXJ0X2VxdWFscyhteUVycm9yLCBlcnIpOwogICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50
ZXIsIDEpOwogICAgICAgICBjb3VudGVyKys7CiAgICAgfSkpOwotICAgIHJlYWRlci5jbG9zZWQu
dGhlbih0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgcmVhZGVyLmNsb3NlZC50aGVuKHRl
c3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgncmVh
ZCgpIHNob3VsZCByZWplY3Qgb24gYW4gZXJyb3JlZCBzdHJlYW0nKTsKLSAgICB9KSwgdDMuc3Rl
cF9mdW5jKGZ1bmN0aW9uKGVycikgeworICAgIH0pLCB0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24o
ZXJyKSB7CiAgICAgICAgIGFzc2VydF9lcXVhbHMobXlFcnJvciwgZXJyKTsKICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhjb3VudGVyLCAyKTsKICAgICAgICAgY291bnRlcisrOwotICAgICAgICB0My5k
b25lKCk7CisgICAgICAgIHRlc3QzLmRvbmUoKTsKICAgICB9KSk7CiB9KTsKIAotdmFyIHQ0ID0g
YXN5bmNfdGVzdCgnUmVhZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0aGF0IGdldHMgZXJyb3JlZCcp
OwotdDQuc3RlcChmdW5jdGlvbigpIHsKK3ZhciB0ZXN0NCA9IGFzeW5jX3Rlc3QoJ1JlYWRpbmcg
dHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGVycm9yZWQnKTsKK3Rlc3Q0LnN0ZXAoZnVuY3Rp
b24oKSB7CiAgICAgdmFyIGNvbnRyb2xsZXI7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKQEAgLTExNCwyNCArMTE0LDI0IEBA
IHQ0LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIGNvdW50ZXIgPSAwOwogICAgIHZhciByZWFk
ZXIgPSBycy5nZXRSZWFkZXIoKTsKIAotICAgIHJlYWRlci5yZWFkKCkudGhlbih0NC5zdGVwX2Z1
bmMoZnVuY3Rpb24oKSB7CisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHRlc3Q0LnN0ZXBfZnVuYyhm
dW5jdGlvbigpIHsKICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgncmVhZCgpIHNob3VsZCByZWpl
Y3Qgb24gYW4gZXJyb3JlZCBzdHJlYW0nKTsKLSAgICB9KSwgdDQuc3RlcF9mdW5jKGZ1bmN0aW9u
KGVycikgeworICAgIH0pLCB0ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rpb24oZXJyKSB7CiAgICAgICAg
IGFzc2VydF9lcXVhbHMobXlFcnJvciwgZXJyKTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3Vu
dGVyLCAxKTsKICAgICAgICAgY291bnRlcisrOwogICAgIH0pKTsKLSAgICByZWFkZXIucmVhZCgp
LnRoZW4odDQuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgIHJlYWRlci5yZWFkKCkudGhlbih0
ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CiAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ3Jl
YWQoKSBzaG91bGQgcmVqZWN0IG9uIGFuIGVycm9yZWQgc3RyZWFtJyk7Ci0gICAgfSksIHQ0LnN0
ZXBfZnVuYyhmdW5jdGlvbihlcnIpIHsKKyAgICB9KSwgdGVzdDQuc3RlcF9mdW5jKGZ1bmN0aW9u
KGVycikgewogICAgICAgICBhc3NlcnRfZXF1YWxzKG15RXJyb3IsIGVycik7CiAgICAgICAgIGFz
c2VydF9lcXVhbHMoY291bnRlciwgMik7CiAgICAgICAgIGNvdW50ZXIrKzsKLSAgICAgICAgdDQu
ZG9uZSgpOworICAgICAgICB0ZXN0NC5kb25lKCk7CiAgICAgfSkpOwotICAgIHJlYWRlci5jbG9z
ZWQudGhlbih0NC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgcmVhZGVyLmNsb3NlZC50aGVu
KHRlc3Q0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgn
cmVhZCgpIHNob3VsZCByZWplY3Qgb24gYW4gZXJyb3JlZCBzdHJlYW0nKTsKLSAgICB9KSwgdDQu
c3RlcF9mdW5jKGZ1bmN0aW9uKGVycikgeworICAgIH0pLCB0ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rp
b24oZXJyKSB7CiAgICAgICAgIGFzc2VydF9lcXVhbHMobXlFcnJvciwgZXJyKTsKICAgICAgICAg
YXNzZXJ0X2VxdWFscyhjb3VudGVyLCAwKTsKICAgICAgICAgY291bnRlcisrOwpAQCAtMTQxLDgg
KzE0MSw4IEBAIHQ0LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgY29udHJvbGxlci5lcnJvcihteUVy
cm9yKTsKICB9KTsKIAotdmFyIHQ1ID0gYXN5bmNfdGVzdCgnUmVhZGluZyB3aXRoaW4gYSByZWFk
IHByb21pc2UgcmVzb2x2ZSBjYWxsYmFjayBvbiBhIHN0cmVhbSB0aGF0IGdldHMgY2xvc2VkJyk7
Ci10NS5zdGVwKGZ1bmN0aW9uKCkgewordmFyIHRlc3Q1ID0gYXN5bmNfdGVzdCgnUmVhZGluZyB3
aXRoaW4gYSByZWFkIHByb21pc2UgcmVzb2x2ZSBjYWxsYmFjayBvbiBhIHN0cmVhbSB0aGF0IGdl
dHMgY2xvc2VkJyk7Cit0ZXN0NS5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciBjb250cm9sbGVy
OwogICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CiAgICAgICAgIHN0YXJ0OiBmdW5j
dGlvbihjKSB7CkBAIC0xNTIsOSArMTUyLDkgQEAgdDUuc3RlcChmdW5jdGlvbigpIHsKIAogICAg
IHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKIAotICAgIHJlYWRlci5yZWFkKCkudGhlbih0
NS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJlYWRlci5yZWFkKCkudGhlbih0NS5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB0NS5kb25lKCk7CisgICAgcmVhZGVy
LnJlYWQoKS50aGVuKHRlc3Q1LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgcmVhZGVy
LnJlYWQoKS50aGVuKHRlc3Q1LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRl
c3Q1LmRvbmUoKTsKICAgICAgICAgfSkpOwogICAgIH0pKTsKICAgICBjb250cm9sbGVyLmNsb3Nl
KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFk
ZXIuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDhhNTg5ZGUwZjZmMWQ1NTE1NmY5ZjMw
NzkxYTQ1ZGNjMjVjYTk0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08c2NyaXB0IHNy
Yz0nLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJz48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPScu
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMnPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Jy4uL3Jlc291cmNlcy9nYy5qcyc+PC9zY3JpcHQ+Ci08c2NyaXB0PgotCi10MSA9IGFzeW5jX3Rl
c3QoJ0NvbGxlY3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBzaG91bGQgbm90IHVubG9jayBp
dHMgc3RyZWFtJyk7Ci10MS5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7fSk7Ci0gICAgcnMuZ2V0UmVhZGVyKCk7Ci0gICAgc2V0VGltZW91dCh0MS5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHdpbmRvdy5nYygpOwotICAgICAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IHJzLmdldFJlYWRlcigpOyB9
LCAnb2xkIHJlYWRlciBzaG91bGQgc3RpbGwgYmUgbG9ja2luZyBhIG5ldyBvbmUgZXZlbiBhZnRl
ciBnYXJiYWdlIGNvbGxlY3Rpb24nKTsKLSAgICAgICAgdDEuZG9uZSgpOwotICAgIH0pLCAxMCk7
Ci19KTsKLQotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbS5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0uaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzBkNTU3YzY3MzMxYWE1YTVlNWNhM2U2
NTlmNjE0ZGU1N2FlZTgzNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsNjUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08c2NyaXB0IHNyYz0nLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJz48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPScuLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMnPjwvc2NyaXB0PgotPHNjcmlwdD4KLXRlc3QoZnVu
Y3Rpb24oKSB7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkg
ewotICAgICAgICBuZXcgUmVhZGFibGVTdHJlYW0obnVsbCk7Ci0gICAgfSwgJ2NvbnN0cnVjdG9y
IHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzb3VyY2UgaXMgbnVsbCcpOwotfSwgJ1JlYWRhYmxlU3Ry
ZWFtIGNhblwndCBiZSBjb25zdHJ1Y3RlZCB3aXRoIGdhcmJhZ2UnKTsKLQotdGVzdChmdW5jdGlv
bigpCi17Ci0gICAgdmFyIGlzU3RhcnRDYWxsZWQgPSBmYWxzZTsKLSAgICB2YXIgc291cmNlID0g
ewotICAgICAgICBzdGFydDogZnVuY3Rpb24oY29udHJvbGxlcikgewotICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyh0aGlzLCBzb3VyY2UsICdzb3VyY2UgaXMgdGhpcyBkdXJpbmcgc3RhcnQnKTsK
LQotICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhZGQgY29uc3RydWN0b3IgYXQgc29t
ZSBwb2ludC4KLSAgICAgICAgICAgIHZhciBtZXRob2RzID0gWyAnY2xvc2UnLCAnY29uc3RydWN0
b3InLCAnZW5xdWV1ZScsICdlcnJvcicgXTsKLSAgICAgICAgICAgIHZhciBwcm90byA9IE9iamVj
dC5nZXRQcm90b3R5cGVPZihjb250cm9sbGVyKTsKLQotICAgICAgICAgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPYmplY3QuZ2V0UHJvdG90eXBlT2Yo
Y29udHJvbGxlcikpLnNvcnQoKSwgbWV0aG9kcywKLSAgICAgICAgICAgICAgICAgICAgICAgICd0
aGUgY29udHJvbGxlciBzaG91bGQgaGF2ZSB0aGUgcmlnaHQgbWV0aG9kcycpOwotCi0gICAgICAg
ICAgICBmb3IgKHZhciBtIG9mIFsgJ2Nsb3NlJywgJ2VucXVldWUnLCAnZXJyb3InIF0pIHsKLSAg
ICAgICAgICAgICAgICB2YXIgbWV0aG9kUHJvcGVydGllcyA9IFsgJ2xlbmd0aCcsICduYW1lJyBd
OwotICAgICAgICAgICAgICAgIHZhciBwcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IocHJvdG8sIG0pOwotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHJvcERl
c2MuZW51bWVyYWJsZSwgdHJ1ZSwgJ21ldGhvZCBzaG91bGQgYmUgZW51bWVyYWJsZScpOwotICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHJvcERlc2MuY29uZmlndXJhYmxlLCB0cnVlLCAn
bWV0aG9kIHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHByb3BEZXNjLndyaXRhYmxlLCB0cnVlLCAnbWV0aG9kIHNob3VsZCBiZSB3cml0YWJs
ZScpOwotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGNvbnRyb2xsZXJbbV0s
ICdmdW5jdGlvbicsICdzaG91bGQgaGF2ZSBiZSBhIG1ldGhvZCcpOwotICAgICAgICAgICAgICAg
IGFzc2VydF9hcnJheV9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoY29udHJvbGxl
clttXSkuc29ydCgpLCBtZXRob2RQcm9wZXJ0aWVzLCAnbWV0aG9kIHNob3VsZCBoYXZlIHRoZSBy
aWdodCBwcm9wZXJ0aWVzJyk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoY29udHJvbGxlci5jbG9zZS5sZW5ndGgsIDAsICdjbG9zZSBzaG91bGQgaGF2ZSBubyBw
YXJhbWV0ZXJzJyk7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZW5xdWV1
ZS5sZW5ndGgsIDEsICdlbnF1ZXVlIHNob3VsZCBoYXZlIDEgcGFyYW1ldGVyJyk7Ci0gICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZXJyb3IubGVuZ3RoLCAxLCAnZXJyb3Igc2hv
dWxkIGhhdmUgMSBwYXJhbWV0ZXInKTsKLQotICAgICAgICAgICAgdmFyIHByb3BEZXNjID0gT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgJ2NvbnN0cnVjdG9yJyk7Ci0gICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHByb3BEZXNjLmVudW1lcmFibGUsIGZhbHNlLCAnY29uc3Ry
dWN0b3Igc2hvdWxkIG5vdCBiZSBlbnVtZXJhYmxlJyk7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHByb3BEZXNjLmNvbmZpZ3VyYWJsZSwgdHJ1ZSwgJ2NvbnN0cnVjdG9yIHNob3VsZCBiZSBj
b25maWd1cmFibGUnKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHJvcERlc2Mud3JpdGFi
bGUsIGZhbHNlLCAnY29uc3RydWN0b3Igc2hvdWxkIG5vdCBiZSB3cml0YWJsZScpOwotICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgY29udHJvbGxlci5jb25zdHJ1Y3RvciwgJ29iamVj
dCcsICdjb25zdHJ1Y3RvciBzaG91bGQgYmUgYW4gb2JqZWN0Jyk7Ci0KLSAgICAgICAgICAgIGlz
U3RhcnRDYWxsZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHZhciBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbShzb3VyY2UpOwotICAgIGFzc2VydF90cnVlKGlzU3RhcnRDYWxsZWQp
OwotfSwgJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgcHJv
cGVyIHBhcmFtZXRlcnMnKTsKLQotdGVzdChmdW5jdGlvbigpCi17Ci0gICAgdmFyIGlzU3RhcnRD
YWxsZWQgPSBmYWxzZTsKLQotICAgIHZhciBTaW1wbGVTdHJlYW1Tb3VyY2UgPSBmdW5jdGlvbigp
IHsgfTsKLSAgICBTaW1wbGVTdHJlYW1Tb3VyY2UucHJvdG90eXBlLnN0YXJ0ID0gZnVuY3Rpb24o
KSB7IGlzU3RhcnRDYWxsZWQgPSB0cnVlOyB9OwotICAgIFNpbXBsZVN0cmVhbVNvdXJjZS5wcm90
b3R5cGUuY29uc3RydWN0b3IgPSBTaW1wbGVTdHJlYW1Tb3VyY2U7Ci0KLSAgICB2YXIgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0obmV3IFNpbXBsZVN0cmVhbVNvdXJjZSgpKTsKLSAgICBhc3NlcnRf
dHJ1ZShpc1N0YXJ0Q2FsbGVkKTsKLX0sICdSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0
byBjYWxsIHN0YXJ0IG1ldGhvZCB3aXRoaW4gcHJvdG90eXBlIGNoYWluIG9mIGl0cyBzb3VyY2Un
KTsKLQotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5j
ZS1pbXBsZW1lbnRhdGlvbi9iYWQtc3RyYXRlZ2llcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtc3RyYXRlZ2llcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTllMWI4YjE4MWNjN2YxN2ZjOTdlZjZiZmQ0ZGM4MWZhYTg5NjA1
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxl
bWVudGF0aW9uL2JhZC1zdHJhdGVnaWVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMwIEBACisK
K0ZBSUwgUmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIGdldHRlciBhc3Nl
cnRfdGhyb3dzOiBjb25zdHJ1Y3Rpb24gc2hvdWxkIHJlLXRocm93IHRoZSBlcnJvciBmdW5jdGlv
biAiZnVuY3Rpb24gKCkgeworICAgICAgICBuZXcgUmVhZGFibGVTdHJlYW0oe30sIHsKKyAgICAg
ICAgICAuLi4iIGRpZCBub3QgdGhyb3cKK0ZBSUwgUmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBz
dHJhdGVneS5zaXplIG1ldGhvZCBhc3NlcnRfdGhyb3dzOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB0
aGUgZXJyb3IgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgYy5lbnF1ZXVlKCdhJyk7IH0iIGRpZCBu
b3QgdGhyb3cKK0ZBSUwgUmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5oaWdoV2F0
ZXJNYXJrIGdldHRlciBhc3NlcnRfdGhyb3dzOiBjb25zdHJ1Y3Rpb24gc2hvdWxkIHJlLXRocm93
IHRoZSBlcnJvciBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeworICAgICAgICBuZXcgUmVhZGFibGVT
dHJlYW0oe30sIHsKKyAgICAgICAgICAuLi4iIGRpZCBub3QgdGhyb3cKK0ZBSUwgUmVhZGFibGUg
c3RyZWFtOiBpbnZhbGlkIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgYXNzZXJ0X3Rocm93czogY29u
c3RydWN0aW9uIHNob3VsZCB0aHJvdyBhIFJhbmdlRXJyb3IgZm9yIC0xIGZ1bmN0aW9uICJmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICBuZXcgUmVhZGFibGVTdHJlYW0oe30sIHsKKyAgICAgIC4u
LiIgZGlkIG5vdCB0aHJvdworRkFJTCBSZWFkYWJsZSBzdHJlYW06IG5lZ2F0aXZlIHN0cmF0ZWd5
LmhpZ2hXYXRlck1hcmsgYXNzZXJ0X3Rocm93czogY29uc3RydWN0aW9uIHNob3VsZCB0aHJvdyBh
IFJhbmdlRXJyb3IgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsKKyAgICAgICAgbmV3IFJlYWRhYmxl
U3RyZWFtKHt9LCB7CisgICAgICAgICAgLi4uIiBkaWQgbm90IHRocm93CitGQUlMIFJlYWRhYmxl
IHN0cmVhbTogc3RyYXRlZ3kuc2l6ZSByZXR1cm5pbmcgTmFOIGFzc2VydF9lcXVhbHM6IGVucXVl
dWUgc2hvdWxkIHRocm93IGEgUmFuZ2VFcnJvciBleHBlY3RlZCBmdW5jdGlvbiAiZnVuY3Rpb24g
UmFuZ2VFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiBidXQgZ290IGZ1bmN0aW9uICJm
dW5jdGlvbiBBc3NlcnRpb25FcnJvcihtZXNzYWdlKQorICAgIHsKKyAgICAgICAgdGhpcy5tZXNz
YS4uLiIKK0ZBSUwgUmVhZGFibGUgc3RyZWFtOiBzdHJhdGVneS5zaXplIHJldHVybmluZyAtSW5m
aW5pdHkgYXNzZXJ0X2VxdWFsczogZW5xdWV1ZSBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yIGV4
cGVjdGVkIGZ1bmN0aW9uICJmdW5jdGlvbiBSYW5nZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29k
ZV0KK30iIGJ1dCBnb3QgZnVuY3Rpb24gImZ1bmN0aW9uIEFzc2VydGlvbkVycm9yKG1lc3NhZ2Up
CisgICAgeworICAgICAgICB0aGlzLm1lc3NhLi4uIgorRkFJTCBSZWFkYWJsZSBzdHJlYW06IHN0
cmF0ZWd5LnNpemUgcmV0dXJuaW5nICtJbmZpbml0eSBhc3NlcnRfZXF1YWxzOiBlbnF1ZXVlIHNo
b3VsZCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhwZWN0ZWQgZnVuY3Rpb24gImZ1bmN0aW9uIFJhbmdl
RXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgYnV0IGdvdCBmdW5jdGlvbiAiZnVuY3Rp
b24gQXNzZXJ0aW9uRXJyb3IobWVzc2FnZSkKKyAgICB7CisgICAgICAgIHRoaXMubWVzc2EuLi4i
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0
aW9uL2JhZC1zdHJhdGVnaWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9iYWQtc3RyYXRlZ2llcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmZGFkYjVkZjk0
N2E1MzcyMGNkN2ExYWU3ODAwZjU4OGM5NGZmMjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtc3RyYXRlZ2llcy5odG1s
CkBAIC0wLDAgKzEsMTg2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPScuLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Jy4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyc+PC9zY3JpcHQ+Cis8c2NyaXB0PgordGVzdChm
dW5jdGlvbigpIHsKKyAgICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmlu
ZycpOworCisgICAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAg
IG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwgeworICAgICAgICAgICAgZ2V0IHNpemUoKSB7CisgICAg
ICAgICAgICAgICAgdGhyb3cgdGhlRXJyb3I7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAg
aGlnaFdhdGVyTWFyazogNQorICAgICAgICB9KTsKKyAgICB9LCAnY29uc3RydWN0aW9uIHNob3Vs
ZCByZS10aHJvdyB0aGUgZXJyb3InKTsKK30sICdSZWFkYWJsZSBzdHJlYW06IHRocm93aW5nIHN0
cmF0ZWd5LnNpemUgZ2V0dGVyJyk7CisKK3ZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxl
IHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBtZXRob2QnKTsKK3Rlc3QxLnN0ZXAoZnVu
Y3Rpb24oKSB7CisgICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcn
KTsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh0
aGVFcnJvciwgZnVuY3Rpb24oKSB7IGMuZW5xdWV1ZSgnYScpOyB9LCAnZW5xdWV1ZSBzaG91bGQg
dGhyb3cgdGhlIGVycm9yJyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgIHNpemU6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRocm93IHRo
ZUVycm9yOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGhpZ2hXYXRlck1hcms6IDUKKyAg
ICAgICAgfQorICAgICk7CisKKyAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQuY2F0Y2godGVzdDEu
c3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJv
ciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7CisgICAgICAgIHRlc3Qx
LmRvbmUoKTsKKyAgICB9KSkKK30pOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHZhciB0aGVF
cnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7CisKKyAgICBhc3NlcnRfdGhyb3dz
KHRoZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7
CisgICAgICAgICAgICBzaXplOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
MTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBnZXQgaGlnaFdhdGVyTWFyaygpIHsKKyAg
ICAgICAgICAgICAgICB0aHJvdyB0aGVFcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7
CisgICAgfSwgJ2NvbnN0cnVjdGlvbiBzaG91bGQgcmUtdGhyb3cgdGhlIGVycm9yJyk7Cit9LCAn
UmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIGdldHRlcicp
OworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGZvciAodmFyIGhpZ2hXYXRlck1hcmsgb2YgWy0x
LCAtSW5maW5pdHldKSB7CisgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJyb3IoKSwg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBuZXcgUmVhZGFibGVTdHJlYW0oe30sIHsKKyAgICAg
ICAgICAgICAgICBzaXplOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDE7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBoaWdoV2F0ZXJNYXJrCisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ2NvbnN0cnVjdGlvbiBzaG91bGQgdGhyb3cgYSBS
YW5nZUVycm9yIGZvciAnICsgaGlnaFdhdGVyTWFyayk7CisgICAgfQorCisgICAgZm9yICh2YXIg
aGlnaFdhdGVyTWFyayBvZiBbTmFOLCAnZm9vJywge31dKSB7CisgICAgICAgIGFzc2VydF90aHJv
d3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIG5ldyBSZWFkYWJs
ZVN0cmVhbSh7fSwgeworICAgICAgICAgICAgICAgIHNpemU6IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgIGhpZ2hXYXRlck1hcmsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnY29uc3RydWN0
aW9uIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciBmb3IgJyArIGhpZ2hXYXRlck1hcmspOworICAg
IH0KK30sICdSZWFkYWJsZSBzdHJlYW06IGludmFsaWQgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaycp
OworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJyb3Io
KSwgZnVuY3Rpb24oKSB7CisgICAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwgeworICAgICAg
ICAgICAgc2l6ZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgaGlnaFdhdGVyTWFyazogLTEKKyAgICAgICAgfSk7Cisg
ICAgfSwgJ2NvbnN0cnVjdGlvbiBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yJyk7Cit9LCAnUmVh
ZGFibGUgc3RyZWFtOiBuZWdhdGl2ZSBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrJyk7CisKK3ZhciB0
ZXN0MiA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlIHN0cmVhbTogc3RyYXRlZ3kuc2l6ZSByZXR1cm5p
bmcgTmFOJyk7Cit0ZXN0Mi5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciB0aGVFcnJvcjsKKyAg
ICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxzZTsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAgICAg
ICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgYy5lbnF1ZXVlKCdoaScpOworICAg
ICAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdlbnF1ZXVlIGRpZG5cJ3QgdGhyb3cn
KTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICAgICAgICAgICAg
ICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
ZXJyb3IuY29uc3RydWN0b3IsIFJhbmdlRXJyb3IsICdlbnF1ZXVlIHNob3VsZCB0aHJvdyBhIFJh
bmdlRXJyb3InKTsKKyAgICAgICAgICAgICAgICAgICAgdGhlRXJyb3IgPSBlcnJvcjsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHNpemU6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBOYU47Cisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgaGlnaFdhdGVyTWFyazogNQorICAgICAgICB9Cisg
ICAgKTsKKworICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaCh0ZXN0Mi5zdGVwX2Z1bmMo
ZnVuY3Rpb24oZSkgeworICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnY2xvc2Vk
IHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoc3Rh
cnRDYWxsZWQpOworICAgICAgICB0ZXN0Mi5kb25lKCk7CisgICAgfSkpOworfSk7CisKK3ZhciB0
ZXN0MyA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlIHN0cmVhbTogc3RyYXRlZ3kuc2l6ZSByZXR1cm5p
bmcgLUluZmluaXR5Jyk7Cit0ZXN0My5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciB0aGVFcnJv
cjsKKyAgICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxzZTsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Cisg
ICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgYy5lbnF1ZXVlKCdoaScp
OworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdlbnF1ZXVlIGRpZG5cJ3Qg
dGhyb3cnKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICAgICAg
ICAgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoZXJyb3IuY29uc3RydWN0b3IsIFJhbmdlRXJyb3IsICdlbnF1ZXVlIHNob3VsZCB0aHJv
dyBhIFJhbmdlRXJyb3InKTsKKyAgICAgICAgICAgICAgICAgICAgdGhlRXJyb3IgPSBlcnJvcjsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgIHNpemU6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAt
SW5maW5pdHk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgaGlnaFdhdGVyTWFyazogNQor
ICAgICAgICB9CisgICAgKTsKKworICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaCh0ZXN0
My5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeworICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVy
cm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKKyAgICAgICAgYXNz
ZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworICAgICAgICB0ZXN0My5kb25lKCk7CisgICAgfSkpOwor
fSk7CisKK3ZhciB0ZXN0NCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlIHN0cmVhbTogc3RyYXRlZ3ku
c2l6ZSByZXR1cm5pbmcgK0luZmluaXR5Jyk7Cit0ZXN0NC5zdGVwKGZ1bmN0aW9uKCkgeworICAg
IHZhciB0aGVFcnJvcjsKKyAgICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxzZTsKKyAgICB2YXIgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXJ0OiBmdW5j
dGlvbihjKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgYy5l
bnF1ZXVlKCdoaScpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdlbnF1
ZXVlIGRpZG5cJ3QgdGhyb3cnKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikgewor
ICAgICAgICAgICAgICAgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMoZXJyb3IuY29uc3RydWN0b3IsIFJhbmdlRXJyb3IsICdlbnF1ZXVl
IHNob3VsZCB0aHJvdyBhIFJhbmdlRXJyb3InKTsKKyAgICAgICAgICAgICAgICAgICAgdGhlRXJy
b3IgPSBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICAgIHNpemU6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIHJldHVybiArSW5maW5pdHk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgaGlnaFdh
dGVyTWFyazogNQorICAgICAgICB9CisgICAgKTsKKworICAgIHJzLmdldFJlYWRlcigpLmNsb3Nl
ZC5jYXRjaCh0ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeworICAgICAgICBhc3NlcnRfZXF1
YWxzKGUsIHRoZUVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsK
KyAgICAgICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworICAgICAgICB0ZXN0NC5kb25lKCk7
CisgICAgfSkpOworfSk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVh
bXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFk
LXVuZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50eHQKaW5kZXggMjg0MTlmYTIyNWZiZjY0NDg5
YTUzOGM3NGViZWQxZWRiNWIyN2FhOS4uNTZjZjkyZGYxNjJjOTkwMDI3OGRmYTc1ZDQxNDVhNGIy
MmFhMDA2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291
cmNlcy1leHBlY3RlZC50eHQKQEAgLTcsMTQgKzcsMTAgQEAgUEFTUyBVbmRlcmx5aW5nIHNvdXJj
ZTogdGhyb3dpbmcgcHVsbCBnZXR0ZXIgKHNlY29uZCBwdWxsKQogUEFTUyBVbmRlcmx5aW5nIHNv
dXJjZTogdGhyb3dpbmcgcHVsbCBtZXRob2QgKHNlY29uZCBwdWxsKSAKIEZBSUwgVW5kZXJseWlu
ZyBzb3VyY2U6IHRocm93aW5nIGNhbmNlbCBnZXR0ZXIgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRl
ZAogRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgY2FuY2VsIG1ldGhvZCBjYW5jZWwg
aXMgbm90IGltcGxlbWVudGVkCi1GQUlMIFVuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBzdHJh
dGVneSBnZXR0ZXIgYXNzZXJ0X3Rocm93czogZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhlIGVycm9y
IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IGMuZW5xdWV1ZSgnYScpOyB9IiBkaWQgbm90IHRocm93
Ci1GQUlMIFVuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIGdldHRlciBh
c3NlcnRfdGhyb3dzOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB0aGUgZXJyb3IgZnVuY3Rpb24gImZ1
bmN0aW9uICgpIHsgYy5lbnF1ZXVlKCdhJyk7IH0iIGRpZCBub3QgdGhyb3cKLUZBSUwgVW5kZXJs
eWluZyBzb3VyY2U6IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgbWV0aG9kIGFzc2VydF90aHJvd3M6
IGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBlcnJvciBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyBj
LmVucXVldWUoJ2EnKTsgfSIgZGlkIG5vdCB0aHJvdwotRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTog
dGhyb3dpbmcgc3RyYXRlZ3kuc2hvdWxkQXBwbHlCYWNrcHJlc3N1cmUgZ2V0dGVyIGFzc2VydF90
aHJvd3M6IGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBlcnJvciBmdW5jdGlvbiAiZnVuY3Rpb24g
KCkgeyBjLmVucXVldWUoJ2EnKTsgfSIgZGlkIG5vdCB0aHJvdwotRkFJTCBVbmRlcmx5aW5nIHNv
dXJjZTogdGhyb3dpbmcgc3RyYXRlZ3kuc2hvdWxkQXBwbHlCYWNrcHJlc3N1cmUgbWV0aG9kIGFz
c2VydF90aHJvd3M6IGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBlcnJvciBmdW5jdGlvbiAiZnVu
Y3Rpb24gKCkgeyBjLmVucXVldWUoJ2EnKTsgfSIgZGlkIG5vdCB0aHJvdwotRkFJTCBVbmRlcmx5
aW5nIHNvdXJjZTogc3RyYXRlZ3kuc2l6ZSByZXR1cm5pbmcgTmFOIGFzc2VydF91bnJlYWNoZWQ6
IGVucXVldWUgZGlkbid0IHRocm93IFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQotRkFJTCBVbmRl
cmx5aW5nIHNvdXJjZTogc3RyYXRlZ3kuc2l6ZSByZXR1cm5pbmcgLUluZmluaXR5IGFzc2VydF91
bnJlYWNoZWQ6IGVucXVldWUgZGlkbid0IHRocm93IFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQot
RkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogc3RyYXRlZ3kuc2l6ZSByZXR1cm5pbmcgK0luZmluaXR5
IGFzc2VydF91bnJlYWNoZWQ6IGVucXVldWUgZGlkbid0IHRocm93IFJlYWNoZWQgdW5yZWFjaGFi
bGUgY29kZQorRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGFuIGVt
cHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93IGNhbmNlbCBpcyBub3QgaW1wbGVt
ZW50ZWQKK0ZBSUwgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIG5vbi1l
bXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdyBjYW5jZWwgaXMgbm90IGltcGxl
bWVudGVkCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYSBjbG9z
ZWQgc3RyZWFtIHNob3VsZCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcg
ZW5xdWV1ZSBvbiBhbiBlcnJvcmVkIHN0cmVhbSBzaG91bGQgdGhyb3cgCiBQQVNTIFVuZGVybHlp
bmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGFuIGVtcHR5IHN0cmVhbSBzaG91bGQg
dGhyb3cgdGhlIHNlY29uZCB0aW1lIAogUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBj
bG9zZSB0d2ljZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNvbmQg
dGltZSAKIEZBSUwgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYW4gZW1wdHkg
Y2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRl
ZApAQCAtMjIsNCArMTgsNiBAQCBGQUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3Nl
IG9uIGEgbm9uLWVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgbm90CiBQQVNTIFVuZGVybHlp
bmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdyAKIFBBU1Mg
VW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgdHdpY2Ugc2hvdWxkIHRocm93IHRoZSBz
ZWNvbmQgdGltZSAKIFBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYWZ0ZXIg
Y2xvc2Ugc2hvdWxkIHRocm93IAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJv
ciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHN0YXJ0IHNob3VsZCBjYXVz
ZSB0aGUgc3RyZWFtIHRvIGVycm9yIHdpdGggdGhlIGZpcnN0IGVycm9yIAorUEFTUyBVbmRlcmx5
aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlz
ZSBmcm9tIHB1bGwgc2hvdWxkIGNhdXNlIHRoZSBzdHJlYW0gdG8gZXJyb3Igd2l0aCB0aGUgZmly
c3QgZXJyb3IgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWlt
cGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0
cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuaHRt
bAppbmRleCAyM2ZmZDg5MWRkOGE4NTU5MzdlZTIyOGYwNzY2M2I1ZDA1YmI1YzcyLi4zNWRlZjM4
ZTA0ZjJkMjU4NzVlOWE1MzUwZGI0YTEyNTMzY2NjMzViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWluZy1zb3VyY2Vz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24v
YmFkLXVuZGVybHlpbmctc291cmNlcy5odG1sCkBAIC0xNDksMjMxICsxNDksODAgQEAgdGVzdDYu
c3RlcChmdW5jdGlvbigpIHsKICAgICAgICAgfSkpOwogfSk7CiAKLXZhciB0ZXN0NyA9IGFzeW5j
X3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBzdHJhdGVneSBnZXR0ZXInLCB7IHRp
bWVvdXQ6IDUwIH0pOwordmFyIHRlc3Q3ID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6
IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0
aHJvdycpOwogdGVzdDcuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgc3RhcnRlZCA9IGZhbHNl
OwotICAgIHZhciB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7Ci0KKyAg
ICB2YXIgY29udHJvbGxlcjsKICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewogICAg
ICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgc3RhcnRlZCA9IHRydWU7Ci0g
ICAgICAgICAgICBhc3NlcnRfdGhyb3dzKHRoZUVycm9yLCBmdW5jdGlvbigpIHsgYy5lbnF1ZXVl
KCdhJyk7IH0sICdlbnF1ZXVlIHNob3VsZCB0aHJvdyB0aGUgZXJyb3InKTsKLSAgICAgICAgfSwK
LSAgICAgICAgZ2V0IHN0cmF0ZWd5KCkgewotICAgICAgICAgICAgdGhyb3cgdGhlRXJyb3I7Cisg
ICAgICAgICAgICBjb250cm9sbGVyID0gYzsKICAgICAgICAgfQogICAgIH0pOwogCi0gICAgcnMu
Z2V0UmVhZGVyKCkuY2xvc2VkLmNhdGNoKHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0g
ICAgICAgIGFzc2VydF90cnVlKHN0YXJ0ZWQpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRo
ZUVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKLSAgICAgICAg
dGVzdDcuZG9uZSgpOworICAgIHJzLmNhbmNlbCgpOworICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgn
YScpIC8vIENhbGxpbmcgZW5xdWV1ZSBhZnRlciBjYW5jZWxpbmcgc2hvdWxkIG5vdCB0aHJvdyBh
bnl0aGluZy4KKworICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKHRlc3Q3LnN0ZXBfZnVu
YyhmdW5jdGlvbigpIHsKKyAgICAgICAgdGVzdDcuZG9uZSgnY2xvc2VkIHNob3VsZCBmdWxmaWxs
Jyk7CiAgICAgfSkpOwogfSk7CiAKLXZhciB0ZXN0OCA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcg
c291cmNlOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIGdldHRlcicsIHsgdGltZW91dDogNTAgfSk7
Cit2YXIgdGVzdDggPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1
ZXVlIG9uIGEgbm9uLWVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93Jyk7CiB0
ZXN0OC5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciBzdGFydGVkID0gZmFsc2U7Ci0gICAgdmFy
IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKyAgICB2YXIgY29udHJv
bGxlcjsKICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewogICAgICAgICBzdGFydDog
ZnVuY3Rpb24oYykgewotICAgICAgICAgICAgc3RhcnRlZCA9IHRydWU7Ci0gICAgICAgICAgICBh
c3NlcnRfdGhyb3dzKHRoZUVycm9yLCBmdW5jdGlvbigpIHsgYy5lbnF1ZXVlKCdhJyk7IH0sICdl
bnF1ZXVlIHNob3VsZCB0aHJvdyB0aGUgZXJyb3InKTsKLSAgICAgICAgfSwKLSAgICAgICAgc3Ry
YXRlZ3k6IHsKLSAgICAgICAgICAgIGdldCBzaXplKCkgewotICAgICAgICAgICAgICAgIHRocm93
IHRoZUVycm9yOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHNob3VsZEFwcGx5QmFja3By
ZXNzdXJlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgICAgICAgYy5lbnF1
ZXVlKCdiJyk7CisgICAgICAgICAgICBjb250cm9sbGVyID0gYzsKICAgICAgICAgfQogICAgIH0p
OwogCi0gICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLmNhdGNoKHRlc3Q4LnN0ZXBfZnVuYyhmdW5j
dGlvbihlKSB7Ci0gICAgICAgIGFzc2VydF90cnVlKHN0YXJ0ZWQpOwotICAgICAgICBhc3NlcnRf
ZXF1YWxzKGUsIHRoZUVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3In
KTsKLSAgICAgICAgdGVzdDguZG9uZSgpOworICAgIHJzLmNhbmNlbCgpOworICAgIGNvbnRyb2xs
ZXIuZW5xdWV1ZSgnYycpIC8vIENhbGxpbmcgZW5xdWV1ZSBhZnRlciBjYW5jZWxpbmcgc2hvdWxk
IG5vdCB0aHJvdyBhbnl0aGluZy4KKworICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKHRl
c3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgdGVzdDguZG9uZSgnY2xvc2VkIHNo
b3VsZCBmdWxmaWxsJyk7CiAgICAgfSkpOwogfSk7CiAKLXZhciB0ZXN0OSA9IGFzeW5jX3Rlc3Qo
J1VuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIG1ldGhvZCcsIHsgdGlt
ZW91dDogNTAgfSk7Cit2YXIgdGVzdDkgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTog
Y2FsbGluZyBlbnF1ZXVlIG9uIGEgY2xvc2VkIHN0cmVhbSBzaG91bGQgdGhyb3cnKTsKIHRlc3Q5
LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHN0YXJ0ZWQgPSBmYWxzZTsKLSAgICB2YXIgdGhl
RXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwotICAgIHZhciBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKICAgICAgICAgc3RhcnQ6
IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIHN0YXJ0ZWQgPSB0cnVlOwotICAgICAgICAgICAg
YXNzZXJ0X3Rocm93cyh0aGVFcnJvciwgZnVuY3Rpb24oKSB7IGMuZW5xdWV1ZSgnYScpOyB9LCAn
ZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhlIGVycm9yJyk7Ci0gICAgICAgIH0sCi0gICAgICAgIHN0
cmF0ZWd5OiB7Ci0gICAgICAgICAgICBzaXplOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg
ICB0aHJvdyB0aGVFcnJvcjsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBzaG91bGRBcHBs
eUJhY2twcmVzc3VyZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBjLmNsb3NlKCk7CisgICAgICAgICAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IGMuZW5xdWV1ZSgnYScpIH0s
ICdjYWxsIHRvIGVucXVldWUgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7CiAgICAgICAgIH0K
LSAgICB9KTsKLQotICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaCh0ZXN0OS5zdGVwX2Z1
bmMoZnVuY3Rpb24oZSkgewotICAgICAgICBhc3NlcnRfdHJ1ZShzdGFydGVkKTsKLSAgICAgICAg
YXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhl
IGVycm9yJyk7Ci0gICAgICAgIHRlc3Q5LmRvbmUoKTsKKyAgICB9KS5nZXRSZWFkZXIoKS5jbG9z
ZWQudGhlbih0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIHRlc3Q5LmRvbmUo
J2Nsb3NlZCBzaG91bGQgZnVsZmlsbCcpOwogICAgIH0pKTsKIH0pOwogCi12YXIgdGVzdDEwID0g
YXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHN0cmF0ZWd5LnNob3VsZEFw
cGx5QmFja3ByZXNzdXJlIGdldHRlcicsIHsgdGltZW91dDogNTAgfSk7Cit2YXIgdGVzdDEwID0g
YXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlcnJv
cmVkIHN0cmVhbSBzaG91bGQgdGhyb3cnKTsKIHRlc3QxMC5zdGVwKGZ1bmN0aW9uKCkgewotICAg
IHZhciBzdGFydGVkID0gZmFsc2U7Ci0gICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVu
aXF1ZSBzdHJpbmcnKTsKLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHZh
ciB0aGVFcnJvciA9IG5ldyBFcnJvcignYm9vJyk7CisgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsK
ICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIHN0YXJ0ZWQgPSB0cnVl
OwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwgZnVuY3Rpb24oKSB7IGMuZW5x
dWV1ZSgnYScpOyB9LCAnZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhlIGVycm9yJyk7Ci0gICAgICAg
IH0sCi0gICAgICAgIHN0cmF0ZWd5OiB7Ci0gICAgICAgICAgICBzaXplOiBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBn
ZXQgc2hvdWxkQXBwbHlCYWNrcHJlc3N1cmUoKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3cgdGhl
RXJyb3I7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBjLmVycm9yKHRoZUVycm9yKTsKKyAg
ICAgICAgICAgIGFzc2VydF90aHJvd3ModGhlRXJyb3IsIGZ1bmN0aW9uKCkgeyBjLmVucXVldWUo
J2EnKSB9LCAnY2FsbCB0byBlbnF1ZXVlIHNob3VsZCB0aHJvdyB0aGUgZXJyb3InKTsKICAgICAg
ICAgfQotICAgIH0pOwotCi0gICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLmNhdGNoKHRlc3QxMC5z
dGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAgICBhc3NlcnRfdHJ1ZShzdGFydGVkKTsKKyAg
ICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQuY2F0Y2godGVzdDEwLnN0ZXBfZnVuYyhmdW5jdGlvbihl
KSB7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdjbG9zZWQgc2hvdWxkIHJl
amVjdCB3aXRoIHRoZSBlcnJvcicpOwogICAgICAgICB0ZXN0MTAuZG9uZSgpOwogICAgIH0pKTsK
IH0pOwogCi12YXIgdGVzdDExID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IHRocm93
aW5nIHN0cmF0ZWd5LnNob3VsZEFwcGx5QmFja3ByZXNzdXJlIG1ldGhvZCcsIHsgdGltZW91dDog
NTAgfSk7Cit2YXIgdGVzdDExID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxp
bmcgY2xvc2UgdHdpY2Ugb24gYW4gZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25k
IHRpbWUnKTsKIHRlc3QxMS5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciBzdGFydGVkID0gZmFs
c2U7Ci0gICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKLSAg
ICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24o
YykgewotICAgICAgICAgICAgc3RhcnRlZCA9IHRydWU7Ci0gICAgICAgICAgICBhc3NlcnRfdGhy
b3dzKHRoZUVycm9yLCBmdW5jdGlvbigpIHsgYy5lbnF1ZXVlKCdhJyk7IH0sICdlbnF1ZXVlIHNo
b3VsZCB0aHJvdyB0aGUgZXJyb3InKTsKLSAgICAgICAgfSwKLSAgICAgICAgc3RyYXRlZ3k6IHsK
LSAgICAgICAgICAgIHNpemU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHJldHVybiAx
OwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHNob3VsZEFwcGx5QmFja3ByZXNzdXJlOiBm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICB0aHJvdyB0aGVFcnJvcjsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLmNhdGNo
KHRlc3QxMS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAgICAgICBhc3NlcnRfdHJ1ZShzdGFy
dGVkKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQg
cmVqZWN0IHdpdGggdGhlIGVycm9yJyk7Ci0gICAgICAgIHRlc3QxMS5kb25lKCk7Ci0gICAgfSkp
OwotfSk7Ci0KLXZhciB0ZXN0MTIgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogc3Ry
YXRlZ3kuc2l6ZSByZXR1cm5pbmcgTmFOJywgeyB0aW1lb3V0OiA1MCB9KTsKLXRlc3QxMi5zdGVw
KGZ1bmN0aW9uKCkgewotICAgIHZhciB0aGVFcnJvciA9IHVuZGVmaW5lZDsKLSAgICB2YXIgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAg
ICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBjLmVucXVldWUoJ2hpJyk7Ci0gICAgICAg
ICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgnZW5xdWV1ZSBkaWRuXCd0IHRocm93Jyk7Ci0gICAg
ICAgICAgICB9IGNhdGNoIChlcnJvcikgewotICAgICAgICAgICAgICAgIHRoZUVycm9yID0gZXJy
b3I7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigpLCBmdW5j
dGlvbigpIHsgdGhyb3cgZXJyb3I7IH0sICdlbnF1ZXVlIHNob3VsZCB0aHJvdyBhIFJhbmdlRXJy
b3InKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgc3RyYXRlZ3k6IHsKLSAg
ICAgICAgICAgIHNpemU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHJldHVybiBOYU47
Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgc2hvdWxkQXBwbHlCYWNrcHJlc3N1cmU6IGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQuY2F0Y2godGVz
dDEyLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoZSwgdGhl
RXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOwotICAgICAgICB0
ZXN0MTIuZG9uZSgpOwotICAgIH0pKTsKLX0pOwotCi12YXIgdGVzdDEzID0gYXN5bmNfdGVzdCgn
VW5kZXJseWluZyBzb3VyY2U6IHN0cmF0ZWd5LnNpemUgcmV0dXJuaW5nIC1JbmZpbml0eScsIHsg
dGltZW91dDogNTAgfSk7Ci10ZXN0MTMuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIgdGhlRXJy
b3IgPSB1bmRlZmluZWQ7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAg
ICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAg
ICAgYy5lbnF1ZXVlKCdoaScpOwotICAgICAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ2Vu
cXVldWUgZGlkblwndCB0aHJvdycpOwotICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKLSAg
ICAgICAgICAgICAgICB0aGVFcnJvciA9IGVycm9yOwotICAgICAgICAgICAgICAgIGFzc2VydF90
aHJvd3MobmV3IFJhbmdlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IHRocm93IGVycm9yOyB9LCAnZW5x
dWV1ZSBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yJyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0sCi0gICAgICAgIHN0cmF0ZWd5OiB7Ci0gICAgICAgICAgICBzaXplOiBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgICAgICByZXR1cm4gLUluZmluaXR5OwotICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgIHNob3VsZEFwcGx5QmFja3ByZXNzdXJlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0pOwotCi0g
ICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLmNhdGNoKHRlc3QxMy5zdGVwX2Z1bmMoZnVuY3Rpb24o
ZSkgewotICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnY2xvc2VkIHNob3VsZCBy
ZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKLSAgICAgICAgdGVzdDEzLmRvbmUoKTsKLSAgICB9KSk7
Ci19KTsKLQotdmFyIHRlc3QxNCA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiBzdHJh
dGVneS5zaXplIHJldHVybmluZyArSW5maW5pdHknLCB7IHRpbWVvdXQ6IDUwIH0pOwotdGVzdDE0
LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHRoZUVycm9yID0gdW5kZWZpbmVkOwotICAgIHZh
ciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7
Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGMuZW5xdWV1ZSgnaGknKTsKLSAg
ICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdlbnF1ZXVlIGRpZG5cJ3QgdGhyb3cnKTsK
LSAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgdGhlRXJyb3Ig
PSBlcnJvcjsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCks
IGZ1bmN0aW9uKCkgeyB0aHJvdyBlcnJvcjsgfSwgJ2VucXVldWUgc2hvdWxkIHRocm93IGEgUmFu
Z2VFcnJvcicpOwotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICBzdHJhdGVneTog
ewotICAgICAgICAgICAgc2l6ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
ICtJbmZpbml0eTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBzaG91bGRBcHBseUJhY2tw
cmVzc3VyZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHJzLmdldFJlYWRlcigpLmNsb3Nl
ZC5jYXRjaCh0ZXN0MTQuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgYXNzZXJ0X2Vx
dWFscyhlLCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7
Ci0gICAgICAgIHRlc3QxNC5kb25lKCk7Ci0gICAgfSkpOwotfSk7Ci0KLXZhciB0ZXN0MTUgPSBh
c3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSB0d2ljZSBvbiBhbiBl
bXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZScpOwotdGVzdDE1LnN0ZXAo
ZnVuY3Rpb24oKSB7CiAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKICAgICAgICAgc3RhcnQ6IGZ1
bmN0aW9uKGMpIHsKICAgICAgICAgICAgIGMuY2xvc2UoKTsKICAgICAgICAgICAgIGFzc2VydF90
aHJvd3MobmV3IFR5cGVFcnJvcigpLCBjLmNsb3NlLCAnc2Vjb25kIGNhbGwgdG8gY2xvc2Ugc2hv
dWxkIHRocm93IGEgVHlwZUVycm9yJyk7CiAgICAgICAgIH0KLSAgICB9KS5nZXRSZWFkZXIoKS5j
bG9zZWQudGhlbih0ZXN0MTUuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyB0ZXN0MTUuZG9uZSgnY2xv
c2VkIHNob3VsZCBmdWxmaWxsJyk7IH0pKTsKKyAgICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQudGhl
bih0ZXN0MTEuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyB0ZXN0MTEuZG9uZSgnY2xvc2VkIHNob3Vs
ZCBmdWxmaWxsJyk7IH0pKTsKIH0pOwogCi12YXIgdGVzdDE2ID0gYXN5bmNfdGVzdCgnVW5kZXJs
eWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHNo
b3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUnKTsKLXRlc3QxNi5zdGVwKGZ1bmN0aW9uKCkgewor
dmFyIHRlc3QxMiA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3Nl
IHR3aWNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1l
Jyk7Cit0ZXN0MTIuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxz
ZTsKICAgICB2YXIgcmVhZENhbGxlZCA9IGZhbHNlOwogICAgIHZhciByZWFkZXIgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oewpAQCAtMzg1LDE5ICsyMzQsMTkgQEAgdGVzdDE2LnN0ZXAoZnVuY3Rpb24o
KSB7CiAgICAgICAgIH0KICAgICB9KS5nZXRSZWFkZXIoKTsKIAotICAgIHJlYWRlci5yZWFkKCku
dGhlbih0ZXN0MTYuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKKyAgICByZWFkZXIucmVhZCgpLnRo
ZW4odGVzdDEyLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7CiAgICAgICAgIGFzc2VydF9vYmplY3Rf
ZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3JlYWQoKSBzaG91bGQgcmVh
ZCB0aGUgZW5xdWV1ZWQgY2h1bmsnKTsKICAgICAgICAgcmVhZENhbGxlZCA9IHRydWU7CiAgICAg
fSkpOwotICAgIHJlYWRlci5jbG9zZWQudGhlbih0ZXN0MTYuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
eworICAgIHJlYWRlci5jbG9zZWQudGhlbih0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewog
ICAgICAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7CiAgICAgICAgIGFzc2VydF90cnVlKHJl
YWRDYWxsZWQpOwotICAgICAgICB0ZXN0MTYuZG9uZSgnY2xvc2VkIHNob3VsZCBmdWxmaWxsJyk7
CisgICAgICAgIHRlc3QxMi5kb25lKCdjbG9zZWQgc2hvdWxkIGZ1bGZpbGwnKTsKICAgICB9KSk7
CiB9KTsKIAotdmFyIHRlc3QxNyA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiBjYWxs
aW5nIGNsb3NlIG9uIGFuIGVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93Jyk7
Ci10ZXN0MTcuc3RlcChmdW5jdGlvbigpIHsKK3ZhciB0ZXN0MTMgPSBhc3luY190ZXN0KCdVbmRl
cmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBvbiBhbiBlbXB0eSBjYW5jZWxlZCBzdHJlYW0g
c2hvdWxkIG5vdCB0aHJvdycpOwordGVzdDEzLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIGNv
bnRyb2xsZXI7CiAgICAgdmFyIHN0YXJ0Q2FsbGVkID0gZmFsc2U7CiAgICAgdmFyIHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKQEAgLTQxMCwxNCArMjU5LDE0IEBAIHRlc3QxNy5zdGVwKGZ1bmN0
aW9uKCkgewogICAgIHJzLmNhbmNlbCgpOwogICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsgLy8gQ2Fs
bGluZyBjbG9zZSBhZnRlciBjYW5jZWxpbmcgc2hvdWxkIG5vdCB0aHJvdyBhbnl0aGluZy4KIAot
ICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKHRlc3QxNy5zdGVwX2Z1bmMoZnVuY3Rpb24o
KSB7CisgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4odGVzdDEzLnN0ZXBfZnVuYyhmdW5j
dGlvbigpIHsKICAgICAgICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwotICAgICAgICB0ZXN0
MTcuZG9uZSgnY2xvc2VkIHNob3VsZCBmdWxmaWxsJyk7CisgICAgICAgIHRlc3QxMy5kb25lKCdj
bG9zZWQgc2hvdWxkIGZ1bGZpbGwnKTsKICAgICB9KSk7CiB9KTsKIAotdmFyIHRlc3QxOCA9IGFz
eW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIG9uIGEgbm9uLWVtcHR5
IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93Jyk7Ci10ZXN0MTguc3RlcChmdW5jdGlv
bigpIHsKK3ZhciB0ZXN0MTQgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGlu
ZyBjbG9zZSBvbiBhIG5vbi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdycp
OwordGVzdDE0LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIGNvbnRyb2xsZXI7CiAgICAgdmFy
IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
QEAgLTQzMSwxNCArMjgwLDE0IEBAIHRlc3QxOC5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHJzLmNh
bmNlbCgpOwogICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsgLy8gQ2FsbGluZyBjbG9zZSBhZnRlciBj
YW5jZWxpbmcgc2hvdWxkIG5vdCB0aHJvdyBhbnl0aGluZy4KIAotICAgIHJzLmdldFJlYWRlcigp
LmNsb3NlZC50aGVuKHRlc3QxOC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgcnMuZ2V0UmVh
ZGVyKCkuY2xvc2VkLnRoZW4odGVzdDE0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKICAgICAgICAg
YXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwotICAgICAgICB0ZXN0MTguZG9uZSgnY2xvc2VkIHNo
b3VsZCBmdWxmaWxsJyk7CisgICAgICAgIHRlc3QxNC5kb25lKCdjbG9zZWQgc2hvdWxkIGZ1bGZp
bGwnKTsKICAgICB9KSk7CiB9KTsKIAotdmFyIHRlc3QxOSA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlp
bmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdycpOwotdGVz
dDE5LnN0ZXAoZnVuY3Rpb24oKSB7Cit2YXIgdGVzdDE1ID0gYXN5bmNfdGVzdCgnVW5kZXJseWlu
ZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgYWZ0ZXIgZXJyb3Igc2hvdWxkIHRocm93Jyk7Cit0ZXN0
MTUuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2Jvbycp
OwogICAgIHZhciBzdGFydENhbGxlZCA9IGZhbHNlOwogICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7
CkBAIC00NDcsMTUgKzI5NiwxNSBAQCB0ZXN0MTkuc3RlcChmdW5jdGlvbigpIHsKICAgICAgICAg
ICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBjLmNsb3NlLCAnY2FsbCB0byBjbG9z
ZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKICAgICAgICAgICAgIHN0YXJ0Q2FsbGVkID0g
dHJ1ZTsKICAgICAgICAgfQotICAgIH0pLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaCh0ZXN0MTku
c3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKKyAgICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQuY2F0Y2go
dGVzdDE1LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CiAgICAgICAgIGFzc2VydF90cnVlKHN0YXJ0
Q2FsbGVkKTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91
bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJykKLSAgICAgICAgdGVzdDE5LmRvbmUoKTsKKyAgICAg
ICAgdGVzdDE1LmRvbmUoKTsKICAgICB9KSk7CiB9KTsKIAotdmFyIHRlc3QyMCA9IGFzeW5jX3Rl
c3QoJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIHR3aWNlIHNob3VsZCB0aHJvdyB0
aGUgc2Vjb25kIHRpbWUnKTsKLXRlc3QyMC5zdGVwKGZ1bmN0aW9uKCkgewordmFyIHRlc3QxNiA9
IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIHR3aWNlIHNob3Vs
ZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUnKTsKK3Rlc3QxNi5zdGVwKGZ1bmN0aW9uKCkgewogICAg
IHZhciB0aGVFcnJvciA9IG5ldyBFcnJvcignYm9vJyk7CiAgICAgdmFyIHN0YXJ0Q2FsbGVkID0g
ZmFsc2U7CiAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKQEAgLTQ2NCwxNSArMzEzLDE1IEBAIHRl
c3QyMC5zdGVwKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlw
ZUVycm9yKCksIGMuZXJyb3IsICdzZWNvbmQgY2FsbCB0byBlcnJvciBzaG91bGQgdGhyb3cgYSBU
eXBlRXJyb3InKTsKICAgICAgICAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKICAgICAgICAgfQot
ICAgIH0pLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaCh0ZXN0MjAuc3RlcF9mdW5jKGZ1bmN0aW9u
KGUpIHsKKyAgICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQuY2F0Y2godGVzdDE2LnN0ZXBfZnVuYyhm
dW5jdGlvbihlKSB7CiAgICAgICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKICAgICAgICAg
YXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhl
IGVycm9yJyk7Ci0gICAgICAgIHRlc3QyMC5kb25lKCk7CisgICAgICAgIHRlc3QxNi5kb25lKCk7
CiAgICAgfSkpOwogfSk7CiAKLXZhciB0ZXN0MjEgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNv
dXJjZTogY2FsbGluZyBlcnJvciBhZnRlciBjbG9zZSBzaG91bGQgdGhyb3cnKTsKLXRlc3QyMS5z
dGVwKGZ1bmN0aW9uKCkgewordmFyIHRlc3QxNyA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291
cmNlOiBjYWxsaW5nIGVycm9yIGFmdGVyIGNsb3NlIHNob3VsZCB0aHJvdycpOwordGVzdDE3LnN0
ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHN0YXJ0Q2FsbGVkID0gZmFsc2U7CiAgICAgbmV3IFJl
YWRhYmxlU3RyZWFtKHsKICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKQEAgLTQ4MCw5ICsz
MjksNDkgQEAgdGVzdDIxLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBhc3NlcnRfdGhy
b3dzKG5ldyBUeXBlRXJyb3IoKSwgYy5lcnJvciwgJ2NhbGwgdG8gZXJyb3Igc2hvdWxkIHRocm93
IGEgVHlwZUVycm9yJyk7CiAgICAgICAgICAgICBzdGFydENhbGxlZCA9IHRydWU7CiAgICAgICAg
IH0KLSAgICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQudGhlbih0ZXN0MjEuc3RlcF9mdW5jKGZ1bmN0
aW9uKCkgeworICAgIH0pLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKHRlc3QxNy5zdGVwX2Z1bmMo
ZnVuY3Rpb24oKSB7CiAgICAgICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKLSAgICAgICAg
dGVzdDIxLmRvbmUoJ2Nsb3NlZCBzaG91bGQgZnVsZmlsbCcpOworICAgICAgICB0ZXN0MTcuZG9u
ZSgnY2xvc2VkIHNob3VsZCBmdWxmaWxsJyk7CisgICAgfSkpOworfSk7CisKK3ZhciB0ZXN0MTgg
PSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhbmQgcmV0dXJu
aW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHN0YXJ0IHNob3VsZCBjYXVzZSB0aGUgc3RyZWFt
IHRvIGVycm9yIHdpdGggdGhlIGZpcnN0IGVycm9yJyk7Cit0ZXN0MTguc3RlcChmdW5jdGlvbigp
IHsKKyAgICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxzZTsKKyAgICB2YXIgZmlyc3RFcnJvciA9IG5l
dyBFcnJvcignMScpOworICAgIHZhciBzZWNvbmRFcnJvciA9IG5ldyBFcnJvcignMicpOworICAg
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAg
ICAgICAgICBjLmVycm9yKGZpcnN0RXJyb3IpOworCisgICAgICAgICAgICBzdGFydENhbGxlZCA9
IHRydWU7CisKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChzZWNvbmRFcnJvcik7
CisgICAgICAgIH0KKyAgICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQuY2F0Y2godGVzdDE4LnN0ZXBf
ZnVuYyhmdW5jdGlvbihlKSB7CisgICAgICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKKyAg
ICAgICAgYXNzZXJ0X2VxdWFscyhlLCBmaXJzdEVycm9yLCAnc3RyZWFtIHNob3VsZCBlcnJvciB3
aXRoIHRoZSBmaXJzdCBlcnJvcicpOworICAgICAgICB0ZXN0MTguZG9uZSgpOworICAgIH0pKTsK
K30pOworCit2YXIgdGVzdDE5ID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxp
bmcgZXJyb3IgYW5kIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgZnJvbSBwdWxsIHNob3Vs
ZCBjYXVzZSB0aGUgc3RyZWFtIHRvIGVycm9yIHdpdGggdGhlIGZpcnN0IGVycm9yJyk7Cit0ZXN0
MTkuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxzZTsKKyAgICB2
YXIgZmlyc3RFcnJvciA9IG5ldyBFcnJvcignMScpOworICAgIHZhciBzZWNvbmRFcnJvciA9IG5l
dyBFcnJvcignMicpOworICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHB1bGw6IGZ1
bmN0aW9uKGMpIHsKKyAgICAgICAgICAgIGMuZXJyb3IoZmlyc3RFcnJvcik7CisKKyAgICAgICAg
ICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVq
ZWN0KHNlY29uZEVycm9yKTsKKyAgICAgICAgfQorICAgIH0pLmdldFJlYWRlcigpLmNsb3NlZC5j
YXRjaCh0ZXN0MTkuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgYXNzZXJ0X3RydWUo
c3RhcnRDYWxsZWQpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIGZpcnN0RXJyb3IsICdzdHJl
YW0gc2hvdWxkIGVycm9yIHdpdGggdGhlIGZpcnN0IGVycm9yJyk7CisgICAgICAgIHRlc3QxOS5k
b25lKCk7CiAgICAgfSkpOwogfSk7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9icmFuZC1j
aGVja3MtZXhwZWN0ZWQudHh0CmluZGV4IGU1ZTdmM2YzM2I5YzI0YmViMzNiNWNhYmM3MjY0MTUy
M2Y1OWM3YmEuLmVmNDlmNGIxZDFlMDhiMzJhNWUwNDZlZjZjNzY4ZWRhMGFhOWY1NDIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JyYW5k
LWNoZWNrcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vYnJhbmQtY2hlY2tzLWV4cGVjdGVkLnR4dApAQCAtMSwxOCArMSwxOCBA
QAogCiBQQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIGlu
ZGlyZWN0bHkgCiBQQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBjb25z
dHJ1Y3RvciBpbmRpcmVjdGx5IAorRkFJTCBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRo
cm91Z2ggd29ya3MgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMgQ2Fu
IG9ubHkgY2FsbCBSZWFkYWJsZVN0cmVhbS5waXBlVGhyb3VnaCBvbiBpbnN0YW5jZXMgb2YgUmVh
ZGFibGVTdHJlYW0KIFBBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIgZW5mb3JjZXMgYSBicmFuZCBj
aGVjayBvbiBpdHMgYXJndW1lbnQgCiBGQUlMIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlw
ZS5jbG9zZWQgZW5mb3JjZXMgYSBicmFuZCBjaGVjayB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVj
dCAoZXZhbHVhdGluZyAnT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGdldHRl
ck5hbWUpLmdldCcpCiBGQUlMIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5jYW5jZWwg
ZW5mb3JjZXMgYSBicmFuZCBjaGVjayBDYW4gb25seSBjYWxsIFJlYWRhYmxlU3RyZWFtUmVhZGVy
LmNhbmNlbCBvbiBpbnN0YW5jZXMgb2YgUmVhZGFibGVTdHJlYW1SZWFkZXIKIEZBSUwgUmVhZGFi
bGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLnJlYWQgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBDYW4g
b25seSBjYWxsIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnJlYWQgb24gaW5zdGFuY2VzIG9mIFJlYWRh
YmxlU3RyZWFtUmVhZGVyCitGQUlMIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5yZWFk
IGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgQ2FuIG9ubHkgY2FsbCBSZWFkYWJsZVN0cmVhbVJlYWRl
ci5yZWFkIG9uIGluc3RhbmNlcyBvZiBSZWFkYWJsZVN0cmVhbVJlYWRlcgogUEFTUyBSZWFkYWJs
ZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVsZWFzZUxvY2sgZW5mb3JjZXMgYSBicmFuZCBjaGVj
ayAKIFBBU1MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sg
b24gaXRzIGFyZ3VtZW50IAogUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgY2FuJ3QgYmUg
Z2l2ZW4gYSBmdWxseS1jb25zdHJ1Y3RlZCBSZWFkYWJsZVN0cmVhbSAKIFBBU1MgUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5jbG9zZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAog
UEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmVucXVldWUgZW5mb3JjZXMg
YSBicmFuZCBjaGVjayAKIFBBU1MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5l
cnJvciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0
ZWd5LnByb3RvdHlwZS5zaG91bGRBcHBseUJhY2twcmVzc3VyZSBlbmZvcmNlcyBhIGJyYW5kIGNo
ZWNrIAogUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplIHNob3Vs
ZCB3b3JrIGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzIAotUEFTUyBD
b3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2hvdWxkQXBwbHlCYWNrcHJlc3N1cmUgZW5m
b3JjZXMgYSBicmFuZCBjaGVjayAKIFBBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBl
LnNpemUgc2hvdWxkIHdvcmsgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVu
dHMgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVu
dGF0aW9uL2JyYW5kLWNoZWNrcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vYnJhbmQtY2hlY2tzLmh0bWwKaW5kZXggOWNiZjExZDI2NjZiYWU1ODdl
NjllMGU2NmVjMDNjYTBlY2MyMjk4NC4uMTk3YjhhNmNjZDUwZWE5NmJjZjA1ZjM2MzM4MmQ1MzI3
Nzg5NTNkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vYnJhbmQtY2hlY2tzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZl
cmVuY2UtaW1wbGVtZW50YXRpb24vYnJhbmQtY2hlY2tzLmh0bWwKQEAgLTI1LDkgKzI1LDEwIEBA
IHRlc3QoZnVuY3Rpb24oKSB7CiBmdW5jdGlvbiBmYWtlUmVhZGFibGVTdHJlYW0oKSB7CiAgICAg
cmV0dXJuIHsKICAgICAgICAgY2FuY2VsOiBmdW5jdGlvbihyZWFzb24pIHsgcmV0dXJuIFByb21p
c2UucmVzb2x2ZSgpOyB9LAorICAgICAgICBnZXRSZWFkZXI6IGZ1bmN0aW9uKCkgeyByZXR1cm4g
bmV3IFJlYWRhYmxlU3RyZWFtKG5ldyBSZWFkYWJsZVN0cmVhbSgpKTsgfSwKICAgICAgICAgcGlw
ZVRocm91Z2g6IGZ1bmN0aW9uKG9iaiwgb3B0aW9ucykgeyByZXR1cm4gb2JqLnJlYWRhYmxlOyB9
LAogICAgICAgICBwaXBlVG86IGZ1bmN0aW9uKCkgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7
IH0sCi0gICAgICAgIGdldFJlYWRlcjogZnVuY3Rpb24oKSB7IHJldHVybiBuZXcgUmVhZGFibGVT
dHJlYW0obmV3IFJlYWRhYmxlU3RyZWFtKCkpOyB9CisgICAgICAgIHRlZTogZnVuY3Rpb24oKSB7
IHJldHVybiBbcmVhbFJlYWRhYmxlU3RyZWFtKCksIHJlYWxSZWFkYWJsZVN0cmVhbSgpXTsgfQog
ICAgIH07CiB9CiAKQEAgLTU0LDkgKzU1LDcgQEAgZnVuY3Rpb24gZmFrZVJlYWRhYmxlU3RyZWFt
Q29udHJvbGxlcigpIHsKIAogZnVuY3Rpb24gZmFrZUJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3ko
KSB7CiAgICAgcmV0dXJuIHsKLSAgICAgICAgc2hvdWxkQXBwbHlCYWNrcHJlc3N1cmU6IGZ1bmN0
aW9uKHF1ZXVlU2l6ZSkgewotICAgICAgICAgICAgcmV0dXJuIHF1ZXVlU2l6ZSA+IDE7Ci0gICAg
ICAgIH0sCisgICAgICAgIGhpZ2hXYXRlck1hcms6IDAsCiAgICAgICAgIHNpemU6IGZ1bmN0aW9u
KGNodW5rKSB7CiAgICAgICAgICAgICByZXR1cm4gY2h1bmsuYnl0ZUxlbmd0aDsKICAgICAgICAg
fQpAQCAtNjQsMjIgKzYzLDIwIEBAIGZ1bmN0aW9uIGZha2VCeXRlTGVuZ3RoUXVldWluZ1N0cmF0
ZWd5KCkgewogfQogCiBmdW5jdGlvbiByZWFsQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSgpIHsK
LSAgICByZXR1cm4gbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koeyAiaGlnaFdhdGVyTWFy
ayI6IDF9KTsKKyAgICByZXR1cm4gbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koeyBoaWdo
V2F0ZXJNYXJrOiAxIH0pOwogfQogCiBmdW5jdGlvbiBmYWtlQ291bnRRdWV1aW5nU3RyYXRlZ3ko
KSB7CiAgICAgcmV0dXJuIHsKLSAgICAgICAgc2hvdWxkQXBwbHlCYWNrcHJlc3N1cmU6IGZ1bmN0
aW9uKHF1ZXVlU2l6ZSkgewotICAgICAgICAgICAgcmV0dXJuIHF1ZXVlU2l6ZSA+IDE7Ci0gICAg
ICAgIH0sCisgICAgICAgIGhpZ2hXYXRlck1hcms6IDAsCiAgICAgICAgIHNpemU6IGZ1bmN0aW9u
KGNodW5rKSB7CiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQotICAgIH07CisgICAg
fQogfQogCiBmdW5jdGlvbiByZWFsQ291bnRRdWV1aW5nU3RyYXRlZ3koKSB7Ci0gICAgcmV0dXJu
IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7ICJoaWdoV2F0ZXJNYXJrIjogMX0pOworICAgIHJl
dHVybiBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAxIH0pOwogfQog
CiBmdW5jdGlvbiBnZXR0ZXJSZWplY3RzKHRlc3QsIG9iaiwgZ2V0dGVyTmFtZSwgdGFyZ2V0LCBl
bmRUZXN0KSB7CkBAIC0xMTUsNiArMTEyLDIyIEBAIGZ1bmN0aW9uIG1ldGhvZFRocm93cyhvYmos
IG1ldGhvZE5hbWUsIHRhcmdldCkgewogfQogCiB0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHZhciBw
aXBlVG9Bcmd1bWVudHM7CisgICAgdmFyIHRoaXNWYWx1ZSA9IHsKKyAgICAgICAgcGlwZVRvOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIHBpcGVUb0FyZ3VtZW50cyA9IGFyZ3VtZW50czsKKyAg
ICAgICAgfQorICAgIH07CisKKyAgICB2YXIgaW5wdXQgPSB7IHJlYWRhYmxlOiB7fSwgd3JpdGFi
bGU6IHt9IH07CisgICAgdmFyIG9wdGlvbnMgPSB7fTsKKyAgICB2YXIgcmVzdWx0ID0gUmVhZGFi
bGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoLmNhbGwodGhpc1ZhbHVlLCBpbnB1dCwgb3B0
aW9ucyk7CisKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHBpcGVUb0FyZ3VtZW50cywgW2lucHV0
LndyaXRhYmxlLCBvcHRpb25zXSwgJ2NvcnJlY3QgYXJndW1lbnRzIHNob3VsZCBiZSBwYXNzZWQg
dG8gdGhpc1ZhbHVlLnBpcGVUbycpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBpbnB1dC5y
ZWFkYWJsZSwgJ3JldHVybiB2YWx1ZSBzaG91bGQgYmUgdGhlIHBhc3NlZCByZWFkYWJsZSBwcm9w
ZXJ0eScpOworfSwgJ1JlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCB3b3JrcyBn
ZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cycpOworCit0ZXN0KGZ1bmN0
aW9uKCkgewogICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsg
bmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKGZha2VSZWFkYWJsZVN0cmVhbSgpKTsgfSwgJ0NvbnN0
cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHNob3VsZCB0aHJvdycpOwogfSwgJ1JlYWRh
YmxlU3RyZWFtUmVhZGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50Jyk7
CiAKQEAgLTEzNiw2ICsxNDksMTIgQEAgdGVzdDMuc3RlcChmdW5jdGlvbigpIHsKICAgICBtZXRo
b2RSZWplY3RzKHRlc3QzLCBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUsICdyZWFkJywg
cmVhbFJlYWRhYmxlU3RyZWFtKCksIHRydWUpOwogfSk7CiAKK3ZhciB0ZXN0NCA9IGFzeW5jX3Rl
c3QoJ1JlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5yZWFkIGVuZm9yY2VzIGEgYnJhbmQg
Y2hlY2snKTsKK3Rlc3Q0LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgbWV0aG9kUmVqZWN0cyh0ZXN0
NCwgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLCAncmVhZCcsIGZha2VSZWFkYWJsZVN0
cmVhbVJlYWRlcigpKTsKKyAgICBtZXRob2RSZWplY3RzKHRlc3Q0LCBSZWFkYWJsZVN0cmVhbVJl
YWRlci5wcm90b3R5cGUsICdyZWFkJywgcmVhbFJlYWRhYmxlU3RyZWFtKCksIHRydWUpOworfSk7
CisKIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtUmVh
ZGVyLnByb3RvdHlwZSwgJ3JlbGVhc2VMb2NrJywgZmFrZVJlYWRhYmxlU3RyZWFtUmVhZGVyKCkp
OwogICAgIG1ldGhvZFRocm93cyhSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUsICdyZWxl
YXNlTG9jaycsIHJlYWxSZWFkYWJsZVN0cmVhbSgpKTsKQEAgLTE2MiwxMSArMTgxLDYgQEAgdGVz
dChmdW5jdGlvbigpIHsKIH0sICdSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmVy
cm9yIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKIAogdGVzdChmdW5jdGlvbigpIHsKLSAgICBt
ZXRob2RUaHJvd3MoQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUsICdzaG91bGRB
cHBseUJhY2twcmVzc3VyZScsIGZha2VCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KCkpOwotICAg
IG1ldGhvZFRocm93cyhCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZSwgJ3Nob3Vs
ZEFwcGx5QmFja3ByZXNzdXJlJywgcmVhbENvdW50UXVldWluZ1N0cmF0ZWd5KCkpOwotfSwgJ0J5
dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNob3VsZEFwcGx5QmFja3ByZXNzdXJl
IGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKLQotdGVzdChmdW5jdGlvbigpIHsKICAgICB2YXIg
dGhpc1ZhbHVlID0gbnVsbDsKICAgICB2YXIgcmV0dXJuVmFsdWUgPSB7ICdyZXR1cm5lZCBmcm9t
JzogJ2J5dGVMZW5ndGggZ2V0dGVyJyB9OwogICAgIHZhciBjaHVuayA9IHsKQEAgLTE3OSwxMSAr
MTkzLDYgQEAgdGVzdChmdW5jdGlvbigpIHsKIH0sICdCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5
LnByb3RvdHlwZS5zaXplIHNob3VsZCB3b3JrIGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBp
dHMgYXJndW1lbnRzJyk7CiAKIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgbWV0aG9kVGhyb3dzKENv
dW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZSwgJ3Nob3VsZEFwcGx5QmFja3ByZXNzdXJlJywg
ZmFrZUNvdW50UXVldWluZ1N0cmF0ZWd5KCkpOwotICAgIG1ldGhvZFRocm93cyhDb3VudFF1ZXVp
bmdTdHJhdGVneS5wcm90b3R5cGUsICdzaG91bGRBcHBseUJhY2twcmVzc3VyZScsIHJlYWxCeXRl
TGVuZ3RoUXVldWluZ1N0cmF0ZWd5KCkpOwotfSwgJ0NvdW50UXVldWluZ1N0cmF0ZWd5LnByb3Rv
dHlwZS5zaG91bGRBcHBseUJhY2twcmVzc3VyZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7Ci0K
LXRlc3QoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHRoaXNWYWx1ZSA9IG51bGw7CiAgICAgdmFyIGNo
dW5rID0gewogICAgICAgICBnZXQgYnl0ZUxlbmd0aCgpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2J5dGUtbGVuZ3RoLXF1ZXVpbmct
c3RyYXRlZ3ktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1w
bGVtZW50YXRpb24vYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNWRhMmRmNTQxZDU0OTlhY2M2YjNlNjRlNTgwMGI5OWMwZTBhMjExYgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9u
L2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBA
QAorCitQQVNTIENhbiBjb25zdHJ1Y3QgYSBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IHdpdGgg
YSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsgCitQQVNTIENhbiBjb25zdHJ1Y3QgYSBCeXRlTGVuZ3Ro
UXVldWluZ1N0cmF0ZWd5IHdpdGggYW55IHZhbHVlIGFzIGl0cyBoaWdoIHdhdGVyIG1hcmsgCitQ
QVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3Qg
cHJvcGVydGllcyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5odG1sIGIvTGF5b3V0
VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYnl0ZS1sZW5ndGgtcXVldWlu
Zy1zdHJhdGVneS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzMDU5MWZhZjQ1MmExNDIxMjA5MmM3ZWRiYjUx
NzI3ZmUzNzczNGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVy
ZW5jZS1pbXBsZW1lbnRhdGlvbi9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwKQEAg
LTAsMCArMSwyNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0nLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzJz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPScuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMnPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9J3Jlc291cmNl
cy9zdHJlYW1zLXV0aWxzLmpzJz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSdyZXNvdXJjZXMvYnl0
ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5qcyc+PC9zY3JpcHQ+Cis8c2NyaXB0PgordGVzdChm
dW5jdGlvbigpIHsKKyAgICB2YXIgc3RyYXRlZ3kgPSBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJh
dGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSk7Cit9LCAnQ2FuIGNvbnN0cnVjdCBhIEJ5dGVMZW5n
dGhRdWV1aW5nU3RyYXRlZ3kgd2l0aCBhIHZhbGlkIGhpZ2ggd2F0ZXIgbWFyaycpOworCit0ZXN0
KGZ1bmN0aW9uKCkgeworICAgIGZvciAodmFyIGhpZ2hXYXRlck1hcmsgb2YgWy1JbmZpbml0eSwg
TmFOLCAnZm9vJywge30sIGZ1bmN0aW9uICgpIHt9XSkgeworICAgICAgICB2YXIgc3RyYXRlZ3kg
PSBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcmsgfSk7CisgICAg
ICAgIGFzc2VydF90cnVlKE9iamVjdC5pcyhzdHJhdGVneS5oaWdoV2F0ZXJNYXJrLCBoaWdoV2F0
ZXJNYXJrKSwgaGlnaFdhdGVyTWFyayArICcgZ2V0cyBzZXQgY29ycmVjdGx5Jyk7CisgICAgfQor
fSwgJ0NhbiBjb25zdHJ1Y3QgYSBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IHdpdGggYW55IHZh
bHVlIGFzIGl0cyBoaWdoIHdhdGVyIG1hcmsnKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB2
YXIgc3RyYXRlZ3kgPSBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1h
cms6IDQgfSk7CisKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKHN0cmF0ZWd5LCAnaGlnaFdhdGVyTWFyaycpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIHsgdmFsdWU6IDQsIHdyaXRhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiB0cnVlLCBj
b25maWd1cmFibGU6IHRydWUgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnaGlnaFdhdGVy
TWFyayBwcm9wZXJ0eSBzaG91bGQgYmUgYSBkYXRhIHByb3BlcnR5IHdpdGggdGhlIHZhbHVlIHBh
c3NlZCB0aGUgY29ubnN0cnVjdG9yJyk7CisgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Ygc3RyYXRl
Z3kuc2l6ZSwgJ2Z1bmN0aW9uJyk7Cit9LCAnQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSBpbnN0
YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBwcm9wZXJ0aWVzJyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1
ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQKaW5k
ZXggYjliYjczNTBiZDg4N2M3NGEyMjExOWQ1NTcxOWM4MDZlYmYxNzUzYy4uMmZhZWY2ZTYzNDQ0
ZDVkMjU2YTViYTE5YzBiZmY0NzJlZmY0Y2M3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRp
b24vY291bnQtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQKQEAgLTEsOCArMSw5IEBACiAK
IFBBU1MgQ2FuIGNvbnN0cnVjdCBhIENvdW50UXVldWluZ1N0cmF0ZWd5IHdpdGggYSB2YWxpZCBo
aWdoIHdhdGVyIG1hcmsgCi1QQVNTIEdpdmVzIGEgUmFuZ2VFcnJvciB3aGVuIHRoZSBudW1iZXIg
aXMgbmVnYXRpdmUgCitQQVNTIENhbiBjb25zdHJ1Y3QgYSBDb3VudFF1ZXVpbmdTdHJhdGVneSB3
aXRoIGFueSB2YWx1ZSBhcyBpdHMgaGlnaCB3YXRlciBtYXJrIAorUEFTUyBDb3VudFF1ZXVpbmdT
dHJhdGVneSBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBwcm9wZXJ0aWVzIAogUEFTUyBDYW4g
Y29uc3RydWN0IGEgcmVhZGFibGUgc3RyZWFtIHdpdGggYSB2YWxpZCBDb3VudFF1ZXVpbmdTdHJh
dGVneSAKLUZBSUwgQ29ycmVjdGx5IGdvdmVybnMgdGhlIHJldHVybiB2YWx1ZSBvZiBhIFJlYWRh
YmxlU3RyZWFtJ3MgZW5xdWV1ZSBmdW5jdGlvbiAoSFdNID0gMCkgYXNzZXJ0X2VxdWFsczogQWZ0
ZXIgMCByZWFkcywgMXN0IGVucXVldWUgc2hvdWxkIHJldHVybiBmYWxzZSAocXVldWUgbm93IGNv
bnRhaW5zIDEgY2h1bmspIGV4cGVjdGVkIChib29sZWFuKSBmYWxzZSBidXQgZ290ICh1bmRlZmlu
ZWQpIHVuZGVmaW5lZAotRkFJTCBDb3JyZWN0bHkgZ292ZXJucyB0aGUgcmV0dXJuIHZhbHVlIG9m
IGEgUmVhZGFibGVTdHJlYW0ncyBlbnF1ZXVlIGZ1bmN0aW9uIChIV00gPSAxKSBhc3NlcnRfZXF1
YWxzOiBBZnRlciAwIHJlYWRzLCAxc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUgKHF1ZXVl
IG5vdyBjb250YWlucyAxIGNodW5rKSBleHBlY3RlZCAoYm9vbGVhbikgdHJ1ZSBidXQgZ290ICh1
bmRlZmluZWQpIHVuZGVmaW5lZAotRkFJTCBDb3JyZWN0bHkgZ292ZXJucyB0aGUgcmV0dXJuIHZh
bHVlIG9mIGEgUmVhZGFibGVTdHJlYW0ncyBlbnF1ZXVlIGZ1bmN0aW9uIChIV00gPSA0KSBhc3Nl
cnRfZXF1YWxzOiBBZnRlciAwIHJlYWRzLCAxc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUg
KHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5rKSBleHBlY3RlZCAoYm9vbGVhbikgdHJ1ZSBidXQg
Z290ICh1bmRlZmluZWQpIHVuZGVmaW5lZAorRkFJTCBDb3JyZWN0bHkgZ292ZXJucyB0aGUgcmV0
dXJuIHZhbHVlIG9mIGEgUmVhZGFibGVTdHJlYW0ncyBlbnF1ZXVlIGZ1bmN0aW9uIChIV00gPSAw
KSBhc3NlcnRfZXF1YWxzOiAwIHJlYWRzLCAwIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQg
YmUgMCBleHBlY3RlZCAobnVtYmVyKSAwIGJ1dCBnb3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkCitG
QUlMIENvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyJ3MgZGVzaXJl
ZFNpemUgcHJvcGVydHkgKEhXTSA9IDEpIGFzc2VydF9lcXVhbHM6IDAgcmVhZHMsIDAgZW5xdWV1
ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAxIGV4cGVjdGVkIChudW1iZXIpIDEgYnV0IGdvdCAo
dW5kZWZpbmVkKSB1bmRlZmluZWQKK0ZBSUwgQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIncyBkZXNpcmVkU2l6ZSBwcm9wZXJ0eSAoSFdNID0gNCkgYXNzZXJ0X2Vx
dWFsczogMCByZWFkcywgMCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDQgZXhwZWN0
ZWQgKG51bWJlcikgNCBidXQgZ290ICh1bmRlZmluZWQpIHVuZGVmaW5lZAogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1
aW5nLXN0cmF0ZWd5Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwKaW5kZXggM2I5NjQ1YjRmOTkzN2U0
YWU5NDVkNzVkNDI3NmJiNWFhOGIzZGFjZS4uNTU1Y2E1MTVlZGVkNzVkNjc3NWQyOWZhN2U5M2I1
NTllOTVjMWY4NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1w
bGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ku
aHRtbApAQCAtNSwzMSArNSw1MCBAQAogPHNjcmlwdCBzcmM9J3Jlc291cmNlcy9jb3VudC1xdWV1
aW5nLXN0cmF0ZWd5LmpzJz48L3NjcmlwdD4KIDxzY3JpcHQ+CiB0ZXN0KGZ1bmN0aW9uKCkgewot
ICAgIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7ICJoaWdoV2F0ZXJNYXJrIjogNH0pOworICAg
IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSk7CiB9LCAnQ2Fu
IGNvbnN0cnVjdCBhIENvdW50UXVldWluZ1N0cmF0ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVy
IG1hcmsnKTsKIAogdGVzdChmdW5jdGlvbigpIHsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBSYW5n
ZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyAiaGlnaFdh
dGVyTWFyayI6IC00IH0pIH0sICd0aHJvd3MgZm9yIHsgaGlnaFdhdGVyTWFyazogLTQgfScpOwot
ICAgIGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IG5ldyBDb3Vu
dFF1ZXVpbmdTdHJhdGVneSh7ICJoaWdoV2F0ZXJNYXJrIjogJy00JyB9KSB9LCAndGhyb3dzIGZv
ciB7IGhpZ2hXYXRlck1hcms6IFwnLTRcJyB9Jyk7Ci19LCAnR2l2ZXMgYSBSYW5nZUVycm9yIHdo
ZW4gdGhlIG51bWJlciBpcyBuZWdhdGl2ZScpOworICAgIGZvciAodmFyIGhpZ2hXYXRlck1hcmsg
b2YgWy1JbmZpbml0eSwgTmFOLCAnZm9vJywge30sIGZ1bmN0aW9uICgpIHt9XSkgeworICAgICAg
ICB2YXIgc3RyYXRlZ3kgPSBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJr
IH0pOworICAgICAgICBhc3NlcnRfdHJ1ZShPYmplY3QuaXMoc3RyYXRlZ3kuaGlnaFdhdGVyTWFy
aywgaGlnaFdhdGVyTWFyayksIGhpZ2hXYXRlck1hcmsgKyAnIGdldHMgc2V0IGNvcnJlY3RseScp
OworICAgIH0KK30sICdDYW4gY29uc3RydWN0IGEgQ291bnRRdWV1aW5nU3RyYXRlZ3kgd2l0aCBh
bnkgdmFsdWUgYXMgaXRzIGhpZ2ggd2F0ZXIgbWFyaycpOwogCiB0ZXN0KGZ1bmN0aW9uKCkgewot
ICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7IHN0cmF0ZWd5OiBuZXcgQ291bnRRdWV1aW5nU3RyYXRl
Z3koeyAiaGlnaFdhdGVyTWFyayI6IDQgfSkgfSk7CisgICAgdmFyIHN0cmF0ZWd5ID0gbmV3IENv
dW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KTsKKworICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc3RyYXRlZ3ksICdo
aWdoV2F0ZXJNYXJrJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogNCwgd3Jp
dGFibGU6IHRydWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICdoaWdoV2F0ZXJNYXJrIHByb3BlcnR5IHNob3VsZCBiZSBh
IGRhdGEgcHJvcGVydHkgd2l0aCB0aGUgdmFsdWUgcGFzc2VkIHRoZSBjb25uc3RydWN0b3InKTsK
KyAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBzdHJhdGVneS5zaXplLCAnZnVuY3Rpb24nKTsKK30s
ICdDb3VudFF1ZXVpbmdTdHJhdGVneSBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBwcm9wZXJ0
aWVzJyk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCBu
ZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0pKTsKIH0sICdDYW4g
Y29uc3RydWN0IGEgcmVhZGFibGUgc3RyZWFtIHdpdGggYSB2YWxpZCBDb3VudFF1ZXVpbmdTdHJh
dGVneScpOwogCiB2YXIgdGVzdDEgPSBhc3luY190ZXN0KCdDb3JyZWN0bHkgZ292ZXJucyB0aGUg
cmV0dXJuIHZhbHVlIG9mIGEgUmVhZGFibGVTdHJlYW1cJ3MgZW5xdWV1ZSBmdW5jdGlvbiAoSFdN
ID0gMCknKTsKIHRlc3QxLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGVucXVldWU7CisgICAg
dmFyIGNvbnRyb2xsZXI7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAg
ICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsgZW5xdWV1ZSA9IGMuZW5xdWV1ZS5iaW5kKGMpOyB9LAot
ICAgICAgICBzdHJhdGVneTogbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgImhpZ2hXYXRlck1h
cmsiOiAwIH0pCi0gICAgfSk7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAgICAg
ICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgICAgfQorICAgIH0sCisgICAgbmV3IENvdW50UXVl
dWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMCB9KQorICAgICk7CiAgICAgdmFyIHJlYWRl
ciA9IHJzLmdldFJlYWRlcigpOwogCi0gICAgYXNzZXJ0X2VxdWFscyhlbnF1ZXVlKCdhJyksIGZh
bHNlLCAnQWZ0ZXIgMCByZWFkcywgMXN0IGVucXVldWUgc2hvdWxkIHJldHVybiBmYWxzZSAocXVl
dWUgbm93IGNvbnRhaW5zIDEgY2h1bmspJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhlbnF1ZXVlKCdi
JyksIGZhbHNlLCAnQWZ0ZXIgMCByZWFkcywgMm5kIGVucXVldWUgc2hvdWxkIHJldHVybiBmYWxz
ZSAocXVldWUgbm93IGNvbnRhaW5zIDIgY2h1bmtzKScpOwotICAgIGFzc2VydF9lcXVhbHMoZW5x
dWV1ZSgnYycpLCBmYWxzZSwgJ0FmdGVyIDAgcmVhZHMsIDNyZCBlbnF1ZXVlIHNob3VsZCByZXR1
cm4gZmFsc2UgKHF1ZXVlIG5vdyBjb250YWlucyAzIGNodW5rcyknKTsKLSAgICBhc3NlcnRfZXF1
YWxzKGVucXVldWUoJ2QnKSwgZmFsc2UsICdBZnRlciAwIHJlYWRzLCA0dGggZW5xdWV1ZSBzaG91
bGQgcmV0dXJuIGZhbHNlIChxdWV1ZSBub3cgY29udGFpbnMgNCBjaHVua3MpJyk7CisgICAgYXNz
ZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnMCByZWFkcywgMCBlbnF1ZXVl
czogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKKyAgICBjb250cm9sbGVyLmVucXVldWUoJ2En
KTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMCByZWFk
cywgMSBlbnF1ZXVlOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKKyAgICBjb250cm9sbGVy
LmVucXVldWUoJ2InKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUs
IC0yLCAnMCByZWFkcywgMiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7Cisg
ICAgY29udHJvbGxlci5lbnF1ZXVlKCdjJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVy
LmRlc2lyZWRTaXplLCAtMywgJzAgcmVhZHMsIDMgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3Vs
ZCBiZSAtMycpOworICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZCcpOworICAgIGFzc2VydF9lcXVh
bHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTQsICcwIHJlYWRzLCA0IGVucXVldWVzOiBkZXNp
cmVkU2l6ZSBzaG91bGQgYmUgLTQnKTsKIAogICAgIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MS5z
dGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxz
KHJlc3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnMXN0IHJlYWQgZ2l2ZXMgYmFj
ayB0aGUgMXN0IGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMyBjaHVua3MpJyk7
CkBAIC0zOSwzMiArNTgsNDkgQEAgdGVzdDEuc3RlcChmdW5jdGlvbigpIHsKICAgICAgICAgcmV0
dXJuIHJlYWRlci5yZWFkKCk7CiAgICAgfSkpLnRoZW4odGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9u
KHJlc3VsdCkgewogICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6
ICdjJywgZG9uZTogZmFsc2UgfSwgJzNyZCByZWFkIGdpdmVzIGJhY2sgdGhlIDNyZCBjaHVuayBl
bnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDEgY2h1bmspJyk7Ci0gICAgICAgIGFzc2VydF9l
cXVhbHMoZW5xdWV1ZSgnZScpLCBmYWxzZSwgJ0FmdGVyIDMgcmVhZHMsIDV0aCBlbnF1ZXVlIHNo
b3VsZCByZXR1cm4gZmFsc2UgKHF1ZXVlIG5vdyBjb250YWlucyAyIGNodW5rcyknKTsKKworICAg
ICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMyByZWFkcywg
NCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisgICAgICAgIGNvbnRyb2xs
ZXIuZW5xdWV1ZSgnZScpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJl
ZFNpemUsIC0yLCAnMyByZWFkcywgNSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0y
Jyk7CisKICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CiAgICAgfSkpLnRoZW4odGVzdDEu
c3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgewogICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFs
cyhyZXN1bHQsIHsgdmFsdWU6ICdkJywgZG9uZTogZmFsc2UgfSwgJzR0aCByZWFkIGdpdmVzIGJh
Y2sgdGhlIDR0aCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDEgY2h1bmtzKScp
OwogICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKICAgICB9KSkudGhlbih0ZXN0MS5zdGVw
X2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJl
c3VsdCwgeyB2YWx1ZTogJ2UnLCBkb25lOiBmYWxzZSB9LCAnNXRoIHJlYWQgZ2l2ZXMgYmFjayB0
aGUgNXRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMCBjaHVua3MpJyk7Ci0g
ICAgICAgIGFzc2VydF9lcXVhbHMoZW5xdWV1ZSgnZicpLCBmYWxzZSwgJ0FmdGVyIDUgcmVhZHMs
IDZ0aCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gZmFsc2UgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNo
dW5rKScpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGVucXVldWUoJ2cnKSwgZmFsc2UsICdBZnRl
ciA1IHJlYWRzLCA3dGggZW5xdWV1ZSBzaG91bGQgcmV0dXJuIGZhbHNlIChxdWV1ZSBub3cgY29u
dGFpbnMgMiBjaHVua3MpJyk7CisKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRl
c2lyZWRTaXplLCAwLCAnNSByZWFkcywgNSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJl
IDAnKTsKKyAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdmJyk7CisgICAgICAgIGFzc2VydF9l
cXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICc1IHJlYWRzLCA2IGVucXVldWVzOiBk
ZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKKyAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdn
Jyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTIsICc1
IHJlYWRzLCA3IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTInKTsKKwogICAgICAg
ICB0ZXN0MS5kb25lKCk7CiAgICAgfSkpLmNhdGNoKHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbihl
KSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0gKSk7CiB9KTsKIAotdmFyIHRlc3QyID0gYXN5bmNf
dGVzdCgnQ29ycmVjdGx5IGdvdmVybnMgdGhlIHJldHVybiB2YWx1ZSBvZiBhIFJlYWRhYmxlU3Ry
ZWFtXCdzIGVucXVldWUgZnVuY3Rpb24gKEhXTSA9IDEpJyk7Cit2YXIgdGVzdDIgPSBhc3luY190
ZXN0KCdDb3JyZWN0bHkgZ292ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlclwncyBkZXNp
cmVkU2l6ZSBwcm9wZXJ0eSAoSFdNID0gMSknKTsKIHRlc3QyLnN0ZXAoZnVuY3Rpb24oKSB7Ci0g
ICAgdmFyIGVucXVldWU7CisgICAgdmFyIGNvbnRyb2xsZXI7CiAgICAgdmFyIHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsgZW5xdWV1ZSA9IGMu
ZW5xdWV1ZS5iaW5kKGMpOyB9LAotICAgICAgICBzdHJhdGVneTogbmV3IENvdW50UXVldWluZ1N0
cmF0ZWd5KHsgImhpZ2hXYXRlck1hcmsiOiAxIH0pCi0gICAgfSk7CisgICAgICAgIHN0YXJ0OiBm
dW5jdGlvbihjKSB7CisgICAgICAgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgICAgfSwKKyAg
ICB9LAorICAgIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDEgfSkK
KyAgICApOwogICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKIAotICAgIGFzc2VydF9l
cXVhbHMoZW5xdWV1ZSgnYScpLCB0cnVlLCAnQWZ0ZXIgMCByZWFkcywgMXN0IGVucXVldWUgc2hv
dWxkIHJldHVybiB0cnVlIChxdWV1ZSBub3cgY29udGFpbnMgMSBjaHVuayknKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKGVucXVldWUoJ2InKSwgZmFsc2UsICdBZnRlciAwIHJlYWRzLCAybmQgZW5xdWV1
ZSBzaG91bGQgcmV0dXJuIGZhbHNlIChxdWV1ZSBub3cgY29udGFpbnMgMiBjaHVua3MpJyk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhlbnF1ZXVlKCdjJyksIGZhbHNlLCAnQWZ0ZXIgMCByZWFkcywgM3Jk
IGVucXVldWUgc2hvdWxkIHJldHVybiBmYWxzZSAocXVldWUgbm93IGNvbnRhaW5zIDMgY2h1bmtz
KScpOwotICAgIGFzc2VydF9lcXVhbHMoZW5xdWV1ZSgnZCcpLCBmYWxzZSwgJ0FmdGVyIDAgcmVh
ZHMsIDR0aCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gZmFsc2UgKHF1ZXVlIG5vdyBjb250YWlucyA0
IGNodW5rcyknKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEs
ICcwIHJlYWRzLCAwIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMScpOworICAgIGNv
bnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNp
cmVkU2l6ZSwgMCwgJzAgcmVhZHMsIDEgZW5xdWV1ZTogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAn
KTsKKyAgICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRy
b2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMCByZWFkcywgMiBlbnF1ZXVlczogZGVzaXJlZFNpemUg
c2hvdWxkIGJlIC0xJyk7CisgICAgY29udHJvbGxlci5lbnF1ZXVlKCdjJyk7CisgICAgYXNzZXJ0
X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMiwgJzAgcmVhZHMsIDMgZW5xdWV1ZXM6
IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMicpOworICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZCcp
OworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTMsICcwIHJlYWRz
LCA0IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTMnKTsKIAogICAgIHJlYWRlci5y
ZWFkKCkudGhlbih0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAgICAgIGFz
c2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAn
MXN0IHJlYWQgZ2l2ZXMgYmFjayB0aGUgMXN0IGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29u
dGFpbnMgMyBjaHVua3MpJyk7CkBAIC03NCw0MSArMTEwLDY1IEBAIHRlc3QyLnN0ZXAoZnVuY3Rp
b24oKSB7CiAgICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwogICAgIH0pKS50aGVuKHRlc3Qy
LnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsKICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVh
bHMocmVzdWx0LCB7IHZhbHVlOiAnYycsIGRvbmU6IGZhbHNlIH0sICczcmQgcmVhZCBnaXZlcyBi
YWNrIHRoZSAzcmQgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5rKScp
OwotICAgICAgICBhc3NlcnRfZXF1YWxzKGVucXVldWUoJ2UnKSwgZmFsc2UsICdBZnRlciAzIHJl
YWRzLCA1dGggZW5xdWV1ZSBzaG91bGQgcmV0dXJuIGZhbHNlIChxdWV1ZSBub3cgY29udGFpbnMg
MiBjaHVua3MpJyk7CisKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRT
aXplLCAwLCAnMyByZWFkcywgNCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsK
KyAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdlJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMo
Y29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICczIHJlYWRzLCA1IGVucXVldWVzOiBkZXNpcmVk
U2l6ZSBzaG91bGQgYmUgLTEnKTsKKwogICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKICAg
ICB9KSkudGhlbih0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAgICAgIGFz
c2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2QnLCBkb25lOiBmYWxzZSB9LCAn
NHRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNHRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29u
dGFpbnMgMSBjaHVua3MpJyk7CiAgICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwogICAgIH0p
KS50aGVuKHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsKICAgICAgICAgYXNzZXJ0
X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZScsIGRvbmU6IGZhbHNlIH0sICc1dGgg
cmVhZCBnaXZlcyBiYWNrIHRoZSA1dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlu
cyAwIGNodW5rcyknKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhlbnF1ZXVlKCdmJyksIHRydWUs
ICdBZnRlciA1IHJlYWRzLCA2dGggZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUgKHF1ZXVlIG5v
dyBjb250YWlucyAxIGNodW5rKScpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGVucXVldWUoJ2cn
KSwgZmFsc2UsICdBZnRlciA1IHJlYWRzLCA3dGggZW5xdWV1ZSBzaG91bGQgcmV0dXJuIGZhbHNl
IChxdWV1ZSBub3cgY29udGFpbnMgMiBjaHVua3MpJyk7CisKKyAgICAgICAgYXNzZXJ0X2VxdWFs
cyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnNSByZWFkcywgNSBlbnF1ZXVlczogZGVzaXJl
ZFNpemUgc2hvdWxkIGJlIDEnKTsKKyAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdmJyk7Cisg
ICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzUgcmVhZHMs
IDYgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7CisgICAgICAgIGNvbnRyb2xs
ZXIuZW5xdWV1ZSgnZycpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJl
ZFNpemUsIC0xLCAnNSByZWFkcywgNyBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0x
Jyk7CisKICAgICAgICAgdGVzdDIuZG9uZSgpOwogICAgIH0pKS5jYXRjaCh0ZXN0Mi5zdGVwX2Z1
bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9ICkpOwogfSk7CiAKLXZhciB0
ZXN0MyA9IGFzeW5jX3Rlc3QoJ0NvcnJlY3RseSBnb3Zlcm5zIHRoZSByZXR1cm4gdmFsdWUgb2Yg
YSBSZWFkYWJsZVN0cmVhbVwncyBlbnF1ZXVlIGZ1bmN0aW9uIChIV00gPSA0KScpOwordmFyIHRl
c3QzID0gYXN5bmNfdGVzdCgnQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXJcJ3MgZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDQpJyk7CiB0ZXN0My5zdGVwKGZ1
bmN0aW9uKCkgewotICAgIHZhciBlbnF1ZXVlOworICAgIHZhciBjb250cm9sbGVyOwogICAgIHZh
ciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7
IGVucXVldWUgPSBjLmVucXVldWUuYmluZChjKTsgfSwKLSAgICAgICAgc3RyYXRlZ3k6IG5ldyBD
b3VudFF1ZXVpbmdTdHJhdGVneSh7ICJoaWdoV2F0ZXJNYXJrIjogNCB9KQotICAgIH0pOworICAg
ICAgICBzdGFydDogZnVuY3Rpb24oYykgeworICAgICAgICAgICAgY29udHJvbGxlciA9IGM7Cisg
ICAgICAgIH0KKyAgICB9LAorICAgIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRl
ck1hcms6IDQgfSkKKyAgICApOwogICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKIAot
ICAgIGFzc2VydF9lcXVhbHMoZW5xdWV1ZSgnYScpLCB0cnVlLCAnQWZ0ZXIgMCByZWFkcywgMXN0
IGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlIChxdWV1ZSBub3cgY29udGFpbnMgMSBjaHVuaykn
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGVucXVldWUoJ2InKSwgdHJ1ZSwgJ0FmdGVyIDAgcmVhZHMs
IDJuZCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZSAocXVldWUgbm93IGNvbnRhaW5zIDIgY2h1
bmtzKScpOwotICAgIGFzc2VydF9lcXVhbHMoZW5xdWV1ZSgnYycpLCB0cnVlLCAnQWZ0ZXIgMCBy
ZWFkcywgM3JkIGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlIChxdWV1ZSBub3cgY29udGFpbnMg
MyBjaHVua3MpJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhlbnF1ZXVlKCdkJyksIHRydWUsICdBZnRl
ciAwIHJlYWRzLCA0dGggZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUgKHF1ZXVlIG5vdyBjb250
YWlucyA0IGNodW5rcyknKTsKLSAgICBhc3NlcnRfZXF1YWxzKGVucXVldWUoJ2UnKSwgZmFsc2Us
ICdBZnRlciAwIHJlYWRzLCA1dGggZW5xdWV1ZSBzaG91bGQgcmV0dXJuIGZhbHNlIChxdWV1ZSBu
b3cgY29udGFpbnMgNSBjaHVua3MpJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhlbnF1ZXVlKCdmJyks
IGZhbHNlLCAnQWZ0ZXIgMCByZWFkcywgNnRoIGVucXVldWUgc2hvdWxkIHJldHVybiBmYWxzZSAo
cXVldWUgbm93IGNvbnRhaW5zIDYgY2h1bmtzKScpOworICAgIGFzc2VydF9lcXVhbHMoY29udHJv
bGxlci5kZXNpcmVkU2l6ZSwgNCwgJzAgcmVhZHMsIDAgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNo
b3VsZCBiZSA0Jyk7CisgICAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisgICAgYXNzZXJ0X2Vx
dWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAzLCAnMCByZWFkcywgMSBlbnF1ZXVlOiBkZXNp
cmVkU2l6ZSBzaG91bGQgYmUgMycpOworICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOworICAg
IGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMiwgJzAgcmVhZHMsIDIgZW5x
dWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAyJyk7CisgICAgY29udHJvbGxlci5lbnF1ZXVl
KCdjJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnMCBy
ZWFkcywgMyBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEnKTsKKyAgICBjb250cm9s
bGVyLmVucXVldWUoJ2QnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNp
emUsIDAsICcwIHJlYWRzLCA0IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOwor
ICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZScpOworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxl
ci5kZXNpcmVkU2l6ZSwgLTEsICcwIHJlYWRzLCA1IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91
bGQgYmUgLTEnKTsKKyAgICBjb250cm9sbGVyLmVucXVldWUoJ2YnKTsKKyAgICBhc3NlcnRfZXF1
YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0yLCAnMCByZWFkcywgNiBlbnF1ZXVlczogZGVz
aXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7CisKIAogICAgIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0
My5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1
YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnMXN0IHJlYWQgZ2l2ZXMg
YmFjayB0aGUgMXN0IGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgNSBjaHVua3Mp
Jyk7CiAgICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwogICAgIH0pKS50aGVuKHRlc3QzLnN0
ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsKICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMo
cmVzdWx0LCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sICcybmQgcmVhZCBnaXZlcyBiYWNr
IHRoZSAybmQgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyA0IGNodW5rcyknKTsK
LSAgICAgICAgYXNzZXJ0X2VxdWFscyhlbnF1ZXVlKCdnJyksIGZhbHNlLCAnQWZ0ZXIgMiByZWFk
cywgN3RoIGVucXVldWUgc2hvdWxkIHJldHVybiBmYWxzZSAocXVldWUgbm93IGNvbnRhaW5zIDUg
Y2h1bmtzKScpOworCisgICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6
ZSwgMCwgJzIgcmVhZHMsIDYgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7Cisg
ICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZycpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNv
bnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMiByZWFkcywgNyBlbnF1ZXVlczogZGVzaXJlZFNp
emUgc2hvdWxkIGJlIC0xJyk7CisKICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CiAgICAg
fSkpLnRoZW4odGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgewogICAgICAgICBhc3Nl
cnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFsc2UgfSwgJzNy
ZCByZWFkIGdpdmVzIGJhY2sgdGhlIDNyZCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRh
aW5zIDQgY2h1bmtzKScpOwpAQCAtMTIwLDEyICsxODAsMTkgQEAgdGVzdDMuc3RlcChmdW5jdGlv
bigpIHsKICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZScs
IGRvbmU6IGZhbHNlIH0sICc1dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA1dGggY2h1bmsgZW5xdWV1
ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAyIGNodW5rcyknKTsKICAgICAgICAgcmV0dXJuIHJlYWRl
ci5yZWFkKCk7CiAgICAgfSkpLnRoZW4odGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkg
ewotICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdmJywgZG9u
ZTogZmFsc2UgfSwgJzZ0aCByZWFkIGdpdmVzIGJhY2sgdGhlIDZ0aCBjaHVuayBlbnF1ZXVlZCAo
cXVldWUgbm93IGNvbnRhaW5zIDEgY2h1bmspJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoZW5x
dWV1ZSgnaCcpLCB0cnVlLCAnQWZ0ZXIgNiByZWFkcywgOHRoIGVucXVldWUgc2hvdWxkIHJldHVy
biB0cnVlIChxdWV1ZSBub3cgY29udGFpbnMgMiBjaHVua3MpJyk7Ci0gICAgICAgIGFzc2VydF9l
cXVhbHMoZW5xdWV1ZSgnaScpLCB0cnVlLCAnQWZ0ZXIgNiByZWFkcywgOXRoIGVucXVldWUgc2hv
dWxkIHJldHVybiB0cnVlIChxdWV1ZSBub3cgY29udGFpbnMgMyBjaHVua3MpJyk7Ci0gICAgICAg
IGFzc2VydF9lcXVhbHMoZW5xdWV1ZSgnaicpLCB0cnVlLCAnQWZ0ZXIgNiByZWFkcywgMTB0aCBl
bnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZSAocXVldWUgbm93IGNvbnRhaW5zIDQgY2h1bmtzKScp
OwotICAgICAgICBhc3NlcnRfZXF1YWxzKGVucXVldWUoJ2snKSwgZmFsc2UsICdBZnRlciA2IHJl
YWRzLCAxMXRoIGVucXVldWUgc2hvdWxkIHJldHVybiBmYWxzZSAocXVldWUgbm93IGNvbnRhaW5z
IDUgY2h1bmtzKScpOworICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFs
dWU6ICdmJywgZG9uZTogZmFsc2UgfSwgJzZ0aCByZWFkIGdpdmVzIGJhY2sgdGhlIDZ0aCBjaHVu
ayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDAgY2h1bmtzKScpOworCisgICAgICAgIGFz
c2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMywgJzYgcmVhZHMsIDcgZW5xdWV1
ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAzJyk7CisgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnaCcpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDIs
ICc2IHJlYWRzLCA4IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMicpOworICAgICAg
ICBjb250cm9sbGVyLmVucXVldWUoJ2knKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9s
bGVyLmRlc2lyZWRTaXplLCAxLCAnNiByZWFkcywgOSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hv
dWxkIGJlIDEnKTsKKyAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdqJyk7CisgICAgICAgIGFz
c2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzYgcmVhZHMsIDEwIGVucXVl
dWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOworICAgICAgICBjb250cm9sbGVyLmVucXVl
dWUoJ2snKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAt
MSwgJzYgcmVhZHMsIDExIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKKwog
ICAgICAgICB0ZXN0My5kb25lKCk7Ci0gICAgfSkpLmNhdGNoKHRlc3QzLnN0ZXBfZnVuYyhmdW5j
dGlvbihlKSB7IGFzc2VydF9yZWFjaGVkKGUpOyB9ICkpOworICAgIH0pKS5jYXRjaCh0ZXN0My5z
dGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9ICkpOwogfSk7CiA8
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxl
bWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1jYW5jZWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWNhbmNl
bC1leHBlY3RlZC50eHQKaW5kZXggOWI3NTU0Mjg1OGQ1NTUzYmJlMzUzYmRhNTI4ZjA0NGEwZTAy
Y2M1My4uNzUwYTlkZTgyNDQ2NGU5N2U0MmQ1MDhjYmZmZDViNjRlYWFjZDkyZSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUt
c3RyZWFtLWNhbmNlbC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZl
cmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWNhbmNlbC1leHBlY3RlZC50eHQK
QEAgLTIsMTEgKzIsMTEgQEAKIEZBSUwgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpbnRl
Z3JhdGlvbiB0ZXN0IG9uIGFuIGluZmluaXRlIHN0cmVhbSBkZXJpdmVkIGZyb20gYSByYW5kb20g
cHVzaCBzb3VyY2UgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBSZWFkYWJsZVN0cmVh
bSBjYW5jZWxsYXRpb246IGNhbmNlbChyZWFzb24pIHNob3VsZCBwYXNzIHRocm91Z2ggdGhlIGdp
dmVuIHJlYXNvbiB0byB0aGUgdW5kZXJseWluZyBzb3VyY2UgY2FuY2VsIGlzIG5vdCBpbXBsZW1l
bnRlZAogRkFJTCBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGNhbmNlbCgpIG9uIGEgbG9j
a2VkIHN0cmVhbSBzaG91bGQgZmFpbCBhbmQgbm90IGNhbGwgdGhlIHVuZGVybHlpbmcgc291cmNl
IGNhbmNlbCBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCitGQUlMIFJlYWRhYmxlU3RyZWFtIGNh
bmNlbGxhdGlvbjogc2hvdWxkIGZ1bGZpbGwgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayB3
ZW50IGZpbmUgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBSZWFkYWJsZVN0cmVhbSBj
YW5jZWxsYXRpb246IHJldHVybmluZyBhIHZhbHVlIGZyb20gdGhlIHVuZGVybHlpbmcgc291cmNl
J3MgY2FuY2VsIHNob3VsZCBub3QgYWZmZWN0IHRoZSBmdWxmaWxsbWVudCB2YWx1ZSBvZiB0aGUg
cHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtJ3MgY2FuY2VsIGNhbmNlbCBpcyBub3QgaW1w
bGVtZW50ZWQKLUZBSUwgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJs
eWluZyBzb3VyY2UncyBjYW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlz
ZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhh
dCBvbmUgZG9lcyBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCitGQUlMIFJlYWRhYmxlU3RyZWFt
IGNhbmNlbGxhdGlvbjogc2hvdWxkIHJlamVjdCBwcm9taXNlIHdoZW4gY2FuY2VsIGNhbGxiYWNr
IHJhaXNlcyBhbiBleGNlcHRpb24gY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAorRkFJTCBSZWFk
YWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNl
bCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBz
dHJlYW0ncyBjYW5jZWwgc2hvdWxkIGZ1bGZpbGwgd2hlbiB0aGF0IG9uZSBkb2VzICgxKSBjYW5j
ZWwgaXMgbm90IGltcGxlbWVudGVkCitGQUlMIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjog
aWYgdGhlIHVuZGVybHlpbmcgc291cmNlJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlz
ZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBzaG91bGQgZnVs
ZmlsbCB3aGVuIHRoYXQgb25lIGRvZXMgKDIpIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIEZB
SUwgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2Un
cyBjYW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBi
eSB0aGUgc3RyZWFtJ3MgY2FuY2VsIHNob3VsZCByZWplY3Qgd2hlbiB0aGF0IG9uZSBkb2VzIGNh
bmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9u
OiBjYW5jZWxsaW5nIGJlZm9yZSBzdGFydCBmaW5pc2hlcyBzaG91bGQgcHJldmVudCBwdWxsKCkg
ZnJvbSBiZWluZyBjYWxsZWQgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBSZWFkYWJs
ZVN0cmVhbSBjYW5jZWwgc2hvdWxkIGZ1bGZpbGwgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFj
ayB3ZW50IGZpbmUgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBSZWFkYWJsZVN0cmVh
bSBjYW5jZWwgc2hvdWxkIHJlamVjdCBwcm9taXNlIHdoZW4gY2FuY2VsIGNhbGxiYWNrIHJhaXNl
cyBhbiBleGNlcHRpb24gY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBSZWFkYWJsZVN0
cmVhbSBjYW5jZWwgc2hvdWxkIGZ1bGZpbGwgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayB3
ZW50IGZpbmUgYWZ0ZXIgcmV0dXJuaW5nIGEgcHJvbWlzZSBjYW5jZWwgaXMgbm90IGltcGxlbWVu
dGVkCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVu
dGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1jYW5jZWwuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1jYW5jZWwuaHRtbAppbmRl
eCBiMDZjMzg2MmUxNWY4ZTg5ZTc4ZDhmMWFhYmUwNzE1NTM4NGRiYzM4Li5kYWE0NWZkNGU3Y2E1
YWYwN2NkNTA3YjYzOTk3MDVmYTYwZTQ0OWY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tY2FuY2VsLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFi
bGUtc3RyZWFtLWNhbmNlbC5odG1sCkBAIC0yNyw3ICsyNyw3IEBAIHRlc3QxLnN0ZXAoZnVuY3Rp
b24oKSB7CiAgICAgICAgICAgICAgICAgc2V0VGltZW91dCh0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rp
b24oKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhbmNlbGxhdGlvbkZpbmlzaGVkID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICAgICAgICAgIH0pLCBzdGFu
ZGFyZFRpbWVvdXQpOworICAgICAgICAgICAgICAgIH0pLCA1MDApOwogICAgICAgICAgICAgfSkp
OwogICAgICAgICB9CiAgICAgfSk7CkBAIC0zNyw3ICszNyw3IEBAIHRlc3QxLnN0ZXAoZnVuY3Rp
b24oKSB7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoY2FuY2VsbGF0aW9uRmluaXNoZWQsIGZhbHNl
LCAnaXQgZGlkIG5vdCB3YWl0IGZvciB0aGUgY2FuY2VsbGF0aW9uIHByb2Nlc3MgdG8gZmluaXNo
IGJlZm9yZSBjbG9zaW5nJyk7CiAgICAgICAgIGFzc2VydF9ncmVhdGVyX3RoYW4oY2h1bmtzLmxl
bmd0aCwgMCwgJ2F0IGxlYXN0IG9uZSBjaHVuayBzaG91bGQgYmUgcmVhZCcpOwogICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGNodW5rcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhjaHVua3NbaV0ubGVuZ3RoLCAxMjgsICJjaHVuayBzaG91bGQgaGF2ZSAxMjgg
Ynl0ZXMiKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoY2h1bmtzW2ldLmxlbmd0aCwgMTI4
LCAnY2h1bmsgJyArIGkgKyAnIHNob3VsZCBoYXZlIDEyOCBieXRlcycpOwogICAgICAgICB9CiAg
ICAgfSksIHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7
IH0pKTsKIApAQCAtNDYsNyArNDYsNyBAQCB0ZXN0MS5zdGVwKGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhjYW5jZWxsYXRpb25GaW5pc2hlZCwgdHJ1ZSwgJ2l0IHJldHVy
bnMgYSBwcm9taXNlIHRoYXQgaXMgZnVsZmlsbGVkIHdoZW4gdGhlIGNhbmNlbGxhdGlvbiBmaW5p
c2hlcycpOwogICAgICAgICAgICAgdGVzdDEuZG9uZSgpOwogICAgICAgICB9KSkuY2F0Y2godGVz
dDEuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSkpOwotICAg
IH0pLCBzdGFuZGFyZFRpbWVvdXQgKyA1MCk7CisgICAgfSksIDEwMDApOwogfSk7CiAKIHRlc3Qo
ZnVuY3Rpb24oKSB7CkBAIC05MSwzMyArOTEsMTAzIEBAIHRlc3QyLnN0ZXAoZnVuY3Rpb24oKSB7
CiAgICAgfSkpOwogfSk7CiAKLXZhciB0ZXN0MyA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFt
IGNhbmNlbGxhdGlvbjogcmV0dXJuaW5nIGEgdmFsdWUgZnJvbSB0aGUgdW5kZXJseWluZyBzb3Vy
Y2VcJ3MgY2FuY2VsIHNob3VsZCBub3QgYWZmZWN0IHRoZSBmdWxmaWxsbWVudCB2YWx1ZSBvZiB0
aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtXCdzIGNhbmNlbCcpOwotdGVzdDMuc3Rl
cChmdW5jdGlvbigpIHsKK3ZhciB0ZXN0MyA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGNh
bmNlbGxhdGlvbjogc2hvdWxkIGZ1bGZpbGwgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayB3
ZW50IGZpbmUnKTsKK3Rlc3QzLnN0ZXAoZnVuY3Rpb24oKQoreworICAgIHZhciBjYW5jZWxSZWNl
aXZlZCA9IGZhbHNlOworICAgIHZhciBjYW5jZWxSZWFzb24gPSBuZXcgRXJyb3IoJ0kgYW0gdGly
ZWQgb2YgdGhpcyBzdHJlYW0sIEkgcHJlZmVyIHRvIGNhbmNlbCBpdCcpOworICAgIHZhciBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIGNhbmNlbDogZnVuY3Rpb24ocmVhc29uKSB7
CisgICAgICAgICAgICBjYW5jZWxSZWNlaXZlZCA9IHRydWU7CisgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHJlYXNvbiwgY2FuY2VsUmVhc29uLCAnY2FuY2VsbGF0aW9uIHJlYXNvbiBnaXZlbiB0
byB0aGUgdW5kZXJseWluZyBzb3VyY2Ugc2hvdWxkIGJlIGVxdWFsIHRvIHRoZSBvbmUgcGFzc2Vk
Jyk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHJzLmNhbmNlbChjYW5jZWxSZWFzb24pLnRo
ZW4oCisgICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFz
c2VydF90cnVlKGNhbmNlbFJlY2VpdmVkKTsKKyAgICAgICAgICAgIHRlc3QzLmRvbmUoJ3N0cmVh
bSB3YXMgc3VjY2Vzc2Z1bGx5IGNhbmNlbGxlZCcpOworICAgICAgICB9KSwKKyAgICAgICAgdGVz
dDMuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQo
InJlY2VpdmVkIGVycm9yICIgKyBlKQorICAgICAgICB9KSk7Cit9KTsKKwordmFyIHRlc3Q0ID0g
YXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiByZXR1cm5pbmcgYSB2YWx1
ZSBmcm9tIHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBjYW5jZWwgc2hvdWxkIG5vdCBhZmZlY3Qg
dGhlIGZ1bGZpbGxtZW50IHZhbHVlIG9mIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJl
YW1cJ3MgY2FuY2VsJyk7Cit0ZXN0NC5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7CiAgICAgICAgIGNhbmNlbDogZnVuY3Rpb24ocmVhc29uKSB7CiAg
ICAgICAgICAgICByZXR1cm4gJ0hlbGxvJzsKICAgICAgICAgfQogICAgIH0pOwogCi0gICAgcnMu
Y2FuY2VsKCkudGhlbih0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24odikgeworICAgIHJzLmNhbmNl
bCgpLnRoZW4odGVzdDQuc3RlcF9mdW5jKGZ1bmN0aW9uKHYpIHsKICAgICAgICAgYXNzZXJ0X2Vx
dWFscyh2LCB1bmRlZmluZWQsICdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIGZ1bGZp
bGxlZCB3aXRoIHVuZGVmaW5lZCcpOwotICAgICAgICB0ZXN0My5kb25lKCk7Ci0gICAgfSksIHRl
c3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgdGVzdDQuZG9uZSgpOworICAgIH0p
LCB0ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CiAgICAgICAgIGFzc2VydF91bnJlYWNoZWQo
J2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQgbm90IGJlIHJlamVjdGVkJyk7CiAgICAgfSkp
OwogfSk7CiAKLXZhciB0ZXN0NCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxh
dGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBh
IHByb21pc2UsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW1cJ3MgY2FuY2VsIHNo
b3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBvbmUgZG9lcycpOwotdGVzdDQuc3RlcChmdW5jdGlvbigp
IHsKK3ZhciB0ZXN0NSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjog
c2hvdWxkIHJlamVjdCBwcm9taXNlIHdoZW4gY2FuY2VsIGNhbGxiYWNrIHJhaXNlcyBhbiBleGNl
cHRpb24nKTsKK3Rlc3Q1LnN0ZXAoZnVuY3Rpb24oKQoreworICAgIHZhciB0aHJvd25FcnJvciA9
IG5ldyBFcnJvcigndGVzdCcpOworICAgIHZhciBjYW5jZWxDYWxsZWQgPSBmYWxzZTsKKworICAg
IHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIGNhbmNlbDogZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBjYW5jZWxDYWxsZWQgPSB0cnVlOworICAgICAgICAgICAgdGhyb3cg
dGhyb3duRXJyb3I7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHJzLmNhbmNlbCgndGVzdCcp
LnRoZW4oCisgICAgICAgIHRlc3Q1LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVh
Y2hlZCgnY2FuY2VsIHNob3VsZCByZWplY3QnKTsgfSksCisgICAgICAgIHRlc3Q1LnN0ZXBfZnVu
YyhmdW5jdGlvbihlKSB7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjYW5jZWxDYWxsZWQpOwor
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCB0aHJvd25FcnJvcik7CisgICAgICAgICAgICB0
ZXN0NS5kb25lKCk7CisgICAgICAgIH0pCisgICAgKTsKK30pOworCit2YXIgdGVzdDYgPSBhc3lu
Y190ZXN0KCdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5nIHNv
dXJjZVwncyBjYW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1
cm5lZCBieSB0aGUgc3RyZWFtXCdzIGNhbmNlbCBzaG91bGQgZnVsZmlsbCB3aGVuIHRoYXQgb25l
IGRvZXMgKDEpJyk7Cit0ZXN0Ni5zdGVwKGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgY2FuY2VsUmVh
c29uID0gbmV3IEVycm9yKCd0ZXN0Jyk7CisKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKGVycm9yLCBjYW5jZWxSZWFzb24pOworICAgICAgICAgICAgcmV0dXJuIG5ldyBQ
cm9taXNlKHRlc3Q2LnN0ZXBfZnVuYyhmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3Q2LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICAgIH0pLCA1MDApOworICAg
ICAgICAgICAgfSkpCisgICAgICAgIH0KKyAgICB9KQorCisgICAgcnMuY2FuY2VsKGNhbmNlbFJl
YXNvbikudGhlbigKKyAgICAgICAgdGVzdDYuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgdGVzdDYuZG9uZSgnc3RyZWFtIHN1Y2Nlc3NmdWxseSBjYW5jZWxsZWQnKTsKKyAgICAg
ICAgfSksCisgICAgICAgIHRlc3Q2LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CisgICAgICAgICAg
ICBhc3NlcnRfdW5yZWFjaGVkKCJyZWNlaXZlZCBlcnJvciAiICsgZSkKKyAgICAgICAgfSkpCit9
KTsKKwordmFyIHRlc3Q3ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9u
OiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJv
bWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbVwncyBjYW5jZWwgc2hvdWxk
IGZ1bGZpbGwgd2hlbiB0aGF0IG9uZSBkb2VzICgyKScpOwordGVzdDcuc3RlcChmdW5jdGlvbigp
IHsKICAgICB2YXIgcmVzb2x2ZVNvdXJjZUNhbmNlbFByb21pc2U7CiAgICAgdmFyIHNvdXJjZUNh
bmNlbFByb21pc2VIYXNGdWxmaWxsZWQgPSBmYWxzZTsKICAgICB2YXIgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oewogICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdmFy
IHNvdXJjZUNhbmNlbFByb21pc2UgPSBuZXcgUHJvbWlzZSh0ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rp
b24ocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICB2YXIgc291cmNlQ2FuY2VsUHJvbWlz
ZSA9IG5ldyBQcm9taXNlKHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbihyZXNvbHZlLCByZWplY3Qp
IHsKICAgICAgICAgICAgICAgICByZXNvbHZlU291cmNlQ2FuY2VsUHJvbWlzZSA9IHJlc29sdmU7
CiAgICAgICAgICAgICB9KSk7CiAKLSAgICAgICAgICAgIHNvdXJjZUNhbmNlbFByb21pc2UudGhl
bih0ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBzb3VyY2VDYW5jZWxQ
cm9taXNlLnRoZW4odGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAg
IHNvdXJjZUNhbmNlbFByb21pc2VIYXNGdWxmaWxsZWQgPSB0cnVlOwogICAgICAgICAgICAgfSkp
OwogCkBAIC0xMjUsMjggKzE5NSwzMiBAQCB0ZXN0NC5zdGVwKGZ1bmN0aW9uKCkgewogICAgICAg
ICB9CiAgICAgfSk7CiAKLSAgICBycy5jYW5jZWwoKS50aGVuKHRlc3Q0LnN0ZXBfZnVuYyhmdW5j
dGlvbih2YWx1ZSkgewotICAgICAgICBhc3NlcnRfZXF1YWxzKHNvdXJjZUNhbmNlbFByb21pc2VI
YXNGdWxmaWxsZWQsIHRydWUsICdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIGZ1bGZp
bGxlZCBvbmx5IGFmdGVyIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSB1bmRlcmx5aW5nIHNv
dXJjZVwncyBjYW5jZWwnKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVk
LCAnY2FuY2VsKCkgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSBmdWxmaWxsZWQgd2l0aCB1bmRlZmlu
ZWQnKTsKLSAgICAgICAgdGVzdDQuZG9uZSgpOwotICAgIH0pLCB0ZXN0NC5zdGVwX2Z1bmMoZnVu
Y3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQg
bm90IGJlIHJlamVjdGVkJyk7IH0gKSk7CiAKLSAgICBzZXRUaW1lb3V0KHRlc3Q0LnN0ZXBfZnVu
YyhmdW5jdGlvbigpIHsKKyAgICBycy5jYW5jZWwoKS50aGVuKAorICAgICAgICB0ZXN0Ny5zdGVw
X2Z1bmMoZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKHNvdXJjZUNh
bmNlbFByb21pc2VIYXNGdWxmaWxsZWQsICdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJl
IGZ1bGZpbGxlZCBvbmx5IGFmdGVyIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSB1bmRlcmx5
aW5nIHNvdXJjZVwncyBjYW5jZWwnKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHModmFsdWUs
IHVuZGVmaW5lZCwgJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgZnVsZmlsbGVkIHdp
dGggdW5kZWZpbmVkJyk7CisgICAgICAgICAgICB0ZXN0Ny5kb25lKCk7CisgICAgICAgIH0pLAor
ICAgICAgICB0ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ2Nh
bmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQgbm90IGJlIHJlamVjdGVkJyk7IH0pCisgICAgKTsK
KworICAgIHNldFRpbWVvdXQodGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewogICAgICAgICBy
ZXNvbHZlU291cmNlQ2FuY2VsUHJvbWlzZSgnSGVsbG8nKTsKLSAgICB9KSwgc3RhbmRhcmRUaW1l
b3V0KTsKKyAgICB9KSwgNTAwKTsKIH0pOwogCi12YXIgdGVzdDUgPSBhc3luY190ZXN0KCdSZWFk
YWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBjYW5j
ZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUg
c3RyZWFtXCdzIGNhbmNlbCBzaG91bGQgcmVqZWN0IHdoZW4gdGhhdCBvbmUgZG9lcycpOwotdGVz
dDUuc3RlcChmdW5jdGlvbigpIHsKK3ZhciB0ZXN0OCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3Ry
ZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCBtZXRo
b2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW1c
J3MgY2FuY2VsIHNob3VsZCByZWplY3Qgd2hlbiB0aGF0IG9uZSBkb2VzJyk7Cit0ZXN0OC5zdGVw
KGZ1bmN0aW9uKCkgewogICAgIHZhciByZWplY3RTb3VyY2VDYW5jZWxQcm9taXNlOwogICAgIHZh
ciBzb3VyY2VDYW5jZWxQcm9taXNlSGFzUmVqZWN0ZWQgPSBmYWxzZTsKICAgICB2YXIgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oewogICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgdmFyIHNvdXJjZUNhbmNlbFByb21pc2UgPSBuZXcgUHJvbWlzZSh0ZXN0NS5zdGVwX2Z1
bmMoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICB2YXIgc291cmNlQ2Fu
Y2VsUHJvbWlzZSA9IG5ldyBQcm9taXNlKHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbihyZXNvbHZl
LCByZWplY3QpIHsKICAgICAgICAgICAgICAgICByZWplY3RTb3VyY2VDYW5jZWxQcm9taXNlID0g
cmVqZWN0OwogICAgICAgICAgICAgfSkpOwogCi0gICAgICAgICAgICBzb3VyY2VDYW5jZWxQcm9t
aXNlLmNhdGNoKHRlc3Q1LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHNvdXJj
ZUNhbmNlbFByb21pc2UuY2F0Y2godGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgICAgIHNvdXJjZUNhbmNlbFByb21pc2VIYXNSZWplY3RlZCA9IHRydWU7CiAgICAgICAg
ICAgICB9KSk7CiAKQEAgLTE1Nyw5OCArMjMxLDI5IEBAIHRlc3Q1LnN0ZXAoZnVuY3Rpb24oKSB7
CiAgICAgdmFyIGVycm9ySW5DYW5jZWwgPSBuZXcgRXJyb3IoJ1NvcnJ5LCBpdCBqdXN0IHdhc25c
J3QgbWVhbnQgdG8gYmUuJyk7CiAKICAgICBycy5jYW5jZWwoKS50aGVuKAotICAgICAgICB0ZXN0
NS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF9mdW5jdGlvbignY2FuY2VsKCkgcmV0dXJu
IHZhbHVlIHNob3VsZCBub3QgYmUgcmVqZWN0ZWQnKTsgfSksCi0gICAgICAgIHRlc3Q1LnN0ZXBf
ZnVuYyhmdW5jdGlvbihyKSB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHNvdXJjZUNhbmNl
bFByb21pc2VIYXNSZWplY3RlZCwgdHJ1ZSwgJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQg
YmUgcmVqZWN0ZWQgb25seSBhZnRlciB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgdW5kZXJs
eWluZyBzb3VyY2VcJ3MgY2FuY2VsJyk7CisgICAgICAgIHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlv
bigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnY2FuY2VsKCkgcmV0dXJuIHZhbHVlIHNob3VsZCBub3Qg
YmUgcmVqZWN0ZWQnKTsgfSksCisgICAgICAgIHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7
CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShzb3VyY2VDYW5jZWxQcm9taXNlSGFzUmVqZWN0ZWQs
ICdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIHJlamVjdGVkIG9ubHkgYWZ0ZXIgdGhl
IHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCcpOwog
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyLCBlcnJvckluQ2FuY2VsLCAnY2FuY2VsKCkgcmV0
dXJuIHZhbHVlIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwn
cyByZWplY3Rpb24gcmVhc29uJyk7Ci0gICAgICAgICAgICB0ZXN0NS5kb25lKCk7Ci0gICAgICAg
IH0pKTsKKyAgICAgICAgICAgIHRlc3Q4LmRvbmUoKTsKKyAgICAgICAgfSkKKyAgICApOwogCi0g
ICAgc2V0VGltZW91dCh0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgc2V0VGltZW91
dCh0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CiAgICAgICAgIHJlamVjdFNvdXJjZUNhbmNl
bFByb21pc2UoZXJyb3JJbkNhbmNlbCk7Ci0gICAgfSksIHN0YW5kYXJkVGltZW91dCk7CisgICAg
fSksIDUwMCk7CiB9KTsKIAotdmFyIHRlc3Q2ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0g
Y2FuY2VsbGF0aW9uOiBjYW5jZWxsaW5nIGJlZm9yZSBzdGFydCBmaW5pc2hlcyBzaG91bGQgcHJl
dmVudCBwdWxsKCkgZnJvbSBiZWluZyBjYWxsZWQnKTsKLXRlc3Q2LnN0ZXAoZnVuY3Rpb24oKSB7
Cit2YXIgdGVzdDkgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGNh
bmNlbGxpbmcgYmVmb3JlIHN0YXJ0IGZpbmlzaGVzIHNob3VsZCBwcmV2ZW50IHB1bGwoKSBmcm9t
IGJlaW5nIGNhbGxlZCcpOwordGVzdDkuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oewogICAgICAgICBwdWxsOiBmdW5jdGlvbigpIHsKICAgICAgICAg
ICAgIGFzc2VydF91bnJlYWNoZWQoJ3B1bGwgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkJyk7
CiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIFByb21pc2UuYWxsKFtycy5jYW5jZWwoKSwgcnMu
Z2V0UmVhZGVyKCkuY2xvc2VkXSkudGhlbih0ZXN0Ni5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIHRlc3Q2LmRvbmUoJ3B1bGwgc2hvdWxkIG5ldmVyIGhhdmUgYmVlbiBjYWxsZWQnKTsK
LSAgICB9KSkuY2F0Y2godGVzdDYuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3JlYWNo
ZWQoZSk7IH0gKSk7Ci19KTsKLQotdmFyIHRlc3Q3ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJl
YW0gY2FuY2VsIHNob3VsZCBmdWxmaWxsIHByb21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJhY2sgd2Vu
dCBmaW5lJyk7Ci10ZXN0Ny5zdGVwKGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgY2FuY2VsUmVjZWl2
ZWQgPSBmYWxzZTsKLSAgICB2YXIgY2FuY2VsUmVhc29uID0gIkkgYW0gdGlyZWQgb2YgdGhpcyBz
dHJlYW0sIEkgcHJlZmVyIHRvIGNhbmNlbCBpdCI7Ci0gICAgdmFyIHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKLSAgICAgICAgY2FuY2VsOiBmdW5jdGlvbihyZWFzb24pIHsKLSAgICAgICAgICAg
IGNhbmNlbFJlY2VpdmVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVhc29u
LCBjYW5jZWxSZWFzb24pOwotICAgICAgICB9Ci0gICAgfSk7Ci0gICAgcnMuY2FuY2VsKGNhbmNl
bFJlYXNvbikudGhlbigKLSAgICAgICAgdGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgYXNzZXJ0X3RydWUoY2FuY2VsUmVjZWl2ZWQpOwotICAgICAgICAgICAgdGVzdDcu
ZG9uZSgpOwotICAgICAgICB9KSwKLSAgICAgICAgdGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKGUp
IHsKLSAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoInJlY2VpdmVkIGVycm9yICIgKyBlKQot
ICAgICAgICB9KSk7Ci19KTsKLQotdmFyIHRlc3Q4ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJl
YW0gY2FuY2VsIHNob3VsZCByZWplY3QgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayByYWlz
ZXMgYW4gZXhjZXB0aW9uJyk7Ci10ZXN0OC5zdGVwKGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgdGhy
b3duRXJyb3IgPSB1bmRlZmluZWQ7Ci0KLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
ewotICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKGVycm9yKSB7Ci0gICAgICAgICAgICB0aHJvd25F
cnJvciA9IG5ldyBFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICB0aHJvdyB0aHJvd25FcnJvcjsK
LSAgICAgICAgfQotICAgIH0pOwotCi0gICAgcnMuY2FuY2VsKCJ0ZXN0IikudGhlbigKLSAgICAg
ICAgdGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgYXNzZXJ0X3VucmVh
Y2hlZCgiY2FuY2VsIHNob3VsZCBmYWlsIikKLSAgICAgICAgfSksCi0gICAgICAgIHRlc3Q4LnN0
ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyh0aHJv
d25FcnJvciwgdW5kZWZpbmVkKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZSwgdGhyb3du
RXJyb3IpOwotICAgICAgICAgICAgdGVzdDguZG9uZSgpOwotICAgICAgICB9KQotICAgICk7Ci19
KTsKLQotdmFyIHRlc3Q5ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gY2FuY2VsIHNob3Vs
ZCBmdWxmaWxsIHByb21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJhY2sgd2VudCBmaW5lIGFmdGVyIHJl
dHVybmluZyBhIHByb21pc2UnKTsKLXRlc3Q5LnN0ZXAoZnVuY3Rpb24oKQotewotICAgIHZhciBj
YW5jZWxSZWFzb24gPSAidGVzdCI7Ci0KLSAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
ewotICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKGVycm9yKSB7Ci0gICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKGVycm9yLCBjYW5jZWxSZWFzb24pOwotICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9t
aXNlKHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICAgICAgICAgIH0pLCBzdGFuZGFyZFRpbWVv
dXQpOwotICAgICAgICAgICAgfSkpCi0gICAgICAgIH0KLSAgICB9KQotCi0gICAgcnMuY2FuY2Vs
KGNhbmNlbFJlYXNvbikudGhlbigKLSAgICAgICAgdGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgdGVzdDkuZG9uZSgpOwotICAgICAgICB9KSwKLSAgICAgICAgdGVzdDku
c3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoInJl
Y2VpdmVkIGVycm9yICIgKyBlKQotICAgICAgICB9KSkKKyAgICBQcm9taXNlLmFsbChbcnMuY2Fu
Y2VsKCksIHJzLmdldFJlYWRlcigpLmNsb3NlZF0pLnRoZW4odGVzdDkuc3RlcF9mdW5jKGZ1bmN0
aW9uKCkgeworICAgICAgICB0ZXN0OS5kb25lKCdwdWxsIHNob3VsZCBuZXZlciBoYXZlIGJlZW4g
Y2FsbGVkJyk7CisgICAgfSkpLmNhdGNoKHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFz
c2VydF9yZWFjaGVkKGUpOyB9ICkpOwogfSk7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlv
bi9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0CmluZGV4IDM3ZmQyNjY1ZTNhYTQ4ZTJkZTVh
ODU1MWJjMTRhY2JjMzA2M2ZkNWMuLjMxZjVmNjJhZDNiNzkwYWI3ZWExMThjOWZkZGIyMmVjZjZi
OGUxN2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVu
dGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4
dApAQCAtMSwyNSArMSwzMyBAQAogCiBQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbiBiZSBjb25zdHJ1
Y3RlZCB3aXRoIG5vIGVycm9ycyAKLUZBSUwgUmVhZGFibGVTdHJlYW0gaW5zdGFuY2VzIHNob3Vs
ZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVydGllcyBhc3NlcnRfYXJyYXlfZXF1YWxz
OiBzaG91bGQgaGF2ZSBhbGwgdGhlIGNvcnJlY3QgbWV0aG9kcyBsZW5ndGhzIGRpZmZlciwgZXhw
ZWN0ZWQgNiBnb3QgNQorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW4ndCBiZSBjb25zdHJ1Y3RlZCB3
aXRoIGdhcmJhZ2UgCitGQUlMIFJlYWRhYmxlU3RyZWFtIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0
aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMgYXNzZXJ0X2FycmF5X2VxdWFsczogc2hvdWxk
IGhhdmUgYWxsIHRoZSBjb3JyZWN0IG1ldGhvZHMgbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIDcg
Z290IDUKIFBBU1MgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igc2hvdWxkIHRocm93IGZvciBu
b24tZnVuY3Rpb24gc3RhcnQgYXJndW1lbnRzIAogUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1
Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBjYW5jZWwgYXJndW1lbnQgCiBQQVNTIFJl
YWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5pdGlhbCBnYXJiYWdlIGFzIHB1bGwg
YXJndW1lbnQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5pdGlh
bCBnYXJiYWdlIGFzIHN0cmF0ZWd5IGFyZ3VtZW50IAorRkFJTCBSZWFkYWJsZVN0cmVhbSBzdGFy
dCBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHByb3BlciBwYXJhbWV0ZXJzIGFzc2VydF9hcnJh
eV9lcXVhbHM6IHRoZSBjb250cm9sbGVyIHNob3VsZCBoYXZlIHRoZSByaWdodCBwcm9wZXJ0aWVz
IGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCA1IGdvdCA0CitGQUlMIFJlYWRhYmxlU3RyZWFtIHN0
YXJ0IGNvbnRyb2xsZXIgcGFyYW1ldGVyIHNob3VsZCBiZSBleHRlbnNpYmxlIGFzc2VydF9hcnJh
eV9lcXVhbHM6IHByb3RvdHlwZSBzaG91bGQgaGF2ZSB0aGUgcmlnaHQgcHJvcGVydGllcyBsZW5n
dGhzIGRpZmZlciwgZXhwZWN0ZWQgNSBnb3QgNAorUEFTUyBSZWFkYWJsZVN0cmVhbSBzaG91bGQg
YmUgYWJsZSB0byBjYWxsIHN0YXJ0IG1ldGhvZCB3aXRoaW4gcHJvdG90eXBlIGNoYWluIG9mIGl0
cyBzb3VyY2UgCiBQQVNTIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJl
dHVybiBhIHByb21pc2UgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxl
IHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCAKK1RJTUVPVVQgUmVhZGFibGVTdHJl
YW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBhbmQgcmVqZWN0IGl0
IFRlc3QgdGltZWQgb3V0CiBQQVNTIFJlYWRhYmxlU3RyZWFtIHNob3VsZCBiZSBhYmxlIHRvIGVu
cXVldWUgZGlmZmVyZW50IG9iamVjdHMuIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogaWYgc3RhcnQg
dGhyb3dzIGFuIGVycm9yLCBpdCBzaG91bGQgYmUgcmUtdGhyb3duIAogVElNRU9VVCBSZWFkYWJs
ZVN0cmVhbTogaWYgcHVsbCByZWplY3RzLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSBUZXN0
IHRpbWVkIG91dAotRkFJTCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50
aWwgdGhlIHByZXZpb3VzIHB1bGwgY2FsbCdzIHByb21pc2UgZnVsZmlsbHMgYXNzZXJ0X2VxdWFs
czogYWZ0ZXIgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgcHVsbCBpcyBmdWxmaWxsZWQsIHB1bGwg
c2hvdWxkIGJlIGNhbGxlZCBhIHNlY29uZCB0aW1lIGV4cGVjdGVkIDIgYnV0IGdvdCAxCitQQVNT
IFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSB1cG9uIHN0YXJ0aW5n
IHRoZSBzdHJlYW0gCitGQUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIHdoZW4g
dHJ5aW5nIHRvIHJlYWQgZnJvbSBhIHN0YXJ0ZWQsIGVtcHR5IHN0cmVhbSBhc3NlcnRfZXF1YWxz
OiBwdWxsIHNob3VsZCBiZSBjYWxsZWQgYWdhaW4gaW4gcmVhY3Rpb24gdG8gY2FsbGluZyByZWFk
IGV4cGVjdGVkIDIgYnV0IGdvdCAzCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBj
YWxsIHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGJlZm9yZSBzdGFy
dCBmdWxmaWxscyAKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBv
bmNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSByZWFkIGZyb20gYWZ0ZXIgc3RhcnQgZnVsZmlsbHMg
CitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCgpIGluIHJlYWN0aW9u
IHRvIHJlYWQoKWluZyB0aGUgbGFzdCBjaHVuaywgaWYgZHJhaW5pbmcgCitGQUlMIFJlYWRhYmxl
U3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCB1bnRpbCB0aGUgcHJldmlvdXMgcHVsbCBjYWxs
J3MgcHJvbWlzZSBmdWxmaWxscyBhc3NlcnRfZXF1YWxzOiBwdWxsIHNob3VsZCBoYXZlIGJlZW4g
Y2FsbGVkIG9uY2UgYWZ0ZXIgc3RhcnQsIGJ1dCBub3QgeWV0IGhhdmUgYmVlbiBjYWxsZWQgYSBz
ZWNvbmQgdGltZSBleHBlY3RlZCAxIGJ1dCBnb3QgMgorRkFJTCBSZWFkYWJsZVN0cmVhbTogc2hv
dWxkIHB1bGwgYWZ0ZXIgc3RhcnQsIGFuZCBhZnRlciBldmVyeSByZWFkIGFzc2VydF9lcXVhbHM6
IHB1bGwoKSBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgZm91ciB0aW1lcyBleHBlY3RlZCA0IGJ1
dCBnb3QgMQogUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgYWZ0ZXIg
c3RhcnQgaWYgdGhlIHN0cmVhbSBpcyBub3cgY2xvc2VkIAogRkFJTCBSZWFkYWJsZVN0cmVhbTog
c2hvdWxkIGNhbGwgcHVsbCBhZnRlciBlbnF1ZXVlaW5nIGZyb20gaW5zaWRlIHB1bGwgKHdpdGgg
bm8gcmVhZCByZXF1ZXN0cyksIGlmIHN0cmF0ZWd5IGFsbG93cyBhc3NlcnRfZXF1YWxzOiBwdWxs
KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgZm91ciB0aW1lcyBleHBlY3RlZCA0IGJ1dCBnb3Qg
MQogUEFTUyBSZWFkYWJsZVN0cmVhbSBwdWxsIHNob3VsZCBiZSBhYmxlIHRvIGNsb3NlIGEgc3Ry
ZWFtLiAKLUZBSUwgUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhl
IHN0cmVhbSBpcyByZWFkYWJsZSBidXQgZHJhaW5pbmcgYXNzZXJ0X2VxdWFsczogdGhlIGZpcnN0
IGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlIGV4cGVjdGVkIChib29sZWFuKSB0cnVlIGJ1dCBn
b3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNo
b3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMgcmVhZGFibGUgYnV0IGRyYWluaW5nIAogUEFT
UyBSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc3RyZWFtIGlz
IGNsb3NlZCAKIFBBU1MgUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBz
dG9yZWQgZXJyb3Igd2hlbiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgCiBGQUlMIFJlYWRhYmxlU3Ry
ZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2RzIGFzIG1ldGhvZHMgcmVs
ZWFzZUxvY2sgaXMgbm90IGltcGxlbWVudGVkCi1GQUlMIFJlYWRhYmxlU3RyZWFtIHN0cmF0ZWdp
ZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCByZXR1cm4gZmFsc2UgZm9yIGFsbCBidXQg
dGhlIGZpcnN0IGVucXVldWUgY2FsbCBhc3NlcnRfZXF1YWxzOiBmaXJzdCBlbnF1ZXVlIHNob3Vs
ZCByZXR1cm4gdHJ1ZSBleHBlY3RlZCAoYm9vbGVhbikgdHJ1ZSBidXQgZ290ICh1bmRlZmluZWQp
IHVuZGVmaW5lZAotRkFJTCBSZWFkYWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBz
dHJhdGVneSBzaG91bGQgY29udGludWUgcmV0dXJuaW5nIHRydWUgZnJvbSBlbnF1ZXVlIGlmIHRo
ZSBjaHVua3MgYXJlIHJlYWQgaW1tZWRpYXRlbHkgYXNzZXJ0X2VxdWFsczogZmlyc3QgZW5xdWV1
ZSBzaG91bGQgcmV0dXJuIHRydWUgZXhwZWN0ZWQgKGJvb2xlYW4pIHRydWUgYnV0IGdvdCAodW5k
ZWZpbmVkKSB1bmRlZmluZWQKK0ZBSUwgUmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRl
ZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGdpdmUgZGVzaXJlZFNpemUgb2YgMSB0byBzdGFydCwgZGVj
cmVhc2luZyBieSAxIHBlciBlbnF1ZXVlIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIChudW1iZXIp
IDEgYnV0IGdvdCAodW5kZWZpbmVkKSB1bmRlZmluZWQKK0ZBSUwgUmVhZGFibGVTdHJlYW0gc3Ry
YXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGNvbnRpbnVlIGdpdmluZyBkZXNp
cmVkU2l6ZSBvZiAxIGlmIHRoZSBjaHVua3MgYXJlIHJlYWQgaW1tZWRpYXRlbHkgYXNzZXJ0X2Vx
dWFsczogZGVzaXJlZFNpemUgc2hvdWxkIHN0YXJ0IGF0IDEgZXhwZWN0ZWQgKG51bWJlcikgMSBi
dXQgZ290ICh1bmRlZmluZWQpIHVuZGVmaW5lZAogUEFTUyBSZWFkYWJsZVN0cmVhbSBpbnRlZ3Jh
dGlvbiB0ZXN0OiBhZGFwdGluZyBhIHJhbmRvbSBwdXNoIHNvdXJjZSAKIFBBU1MgUmVhZGFibGVT
dHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYSBzeW5jIHB1bGwgc291cmNlIAogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9y
ZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItZXhwZWN0ZWQu
dHh0CmluZGV4IGUwMDAxODQyZTM5OTlhMjIzM2E1NzQzYWRkOGI0YTBlYzA0ODM1YTMuLjc5YjAw
MzQ3N2JlYTMzOGQ0MWNhYzNlNjdiOWJjMWE0MTYxZjZhZjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFk
ZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxl
bWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItZXhwZWN0ZWQudHh0CkBAIC02LDEzICs2
LDE2IEBAIFBBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHNob3VsZCBhbHdheXMgcmV0
dXJuIHRoZSBzYW1lIHByb21pc2Ugb2JqZWN0CiBQQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxl
U3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFk
eSBsb2NrZWQgKHZpYSBkaXJlY3QgY29uc3RydWN0aW9uKSAKIFBBU1MgR2V0dGluZyBhIFJlYWRh
YmxlU3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBp
cyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1Y3Rpb24pIAogUEFTUyBDb25zdHJ1
Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0aGUg
c3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVhZGVyKSAKLVBBU1MgR2V0dGluZyBh
IFJlYWRhYmxlU3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0
cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCBnZXRSZWFkZXIpIAorUEFTUyBHZXR0
aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdldFJlYWRlciBzaG91bGQgZmFpbCBpZiB0
aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVhZGVyKSAKIFBBU1MgQ29uc3Ry
dWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRo
ZSBzdHJlYW0gaXMgY2xvc2VkIAogUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJl
YWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBlcnJvcmVkIAogUEFT
UyBSZWFkaW5nIGZyb20gYSByZWFkZXIgZm9yIGFuIGVtcHR5IHN0cmVhbSB3aWxsIHdhaXQgdW50
aWwgYSBjaHVuayBpcyBhdmFpbGFibGUgCiBGQUlMIGNhbmNlbCgpIG9uIGEgcmVhZGVyIHJlbGVh
c2VzIHRoZSByZWFkZXIgYmVmb3JlIGNhbGxpbmcgdGhyb3VnaCBjYW5jZWwgaXMgbm90IGltcGxl
bWVudGVkCiBQQVNTIGNsb3NlZCBzaG91bGQgYmUgZnVsZmlsbGVkIGFmdGVyIHN0cmVhbSBpcyBj
bG9zZWQgKC5jbG9zZWQgYWNjZXNzIGJlZm9yZSBhY3F1aXJpbmcpIAogRkFJTCBjbG9zZWQgc2hv
dWxkIGJlIGZ1bGZpbGxlZCBhZnRlciByZWFkZXIgcmVsZWFzZXMgaXRzIGxvY2sgKG11bHRpcGxl
IHN0cmVhbSBsb2NrcykgcmVsZWFzZUxvY2sgaXMgbm90IGltcGxlbWVudGVkCitGQUlMIE11bHRp
cGxlIHJlYWRlcnMgY2FuIGFjY2VzcyB0aGUgc3RyZWFtIGluIHNlcXVlbmNlIHJlbGVhc2VMb2Nr
IGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBDYW5ub3QgdXNlIGFuIGFscmVhZHktcmVsZWFzZWQg
cmVhZGVyIHRvIHVubG9jayBhIHN0cmVhbSBhZ2FpbiByZWxlYXNlTG9jayBpcyBub3QgaW1wbGVt
ZW50ZWQKK0ZBSUwgY2FuY2VsKCkgb24gYSByZWxlYXNlZCByZWFkZXIgaXMgYSBuby1vcCBhbmQg
ZG9lcyBub3QgcGFzcyB0aHJvdWdoIHJlbGVhc2VMb2NrIGlzIG5vdCBpbXBsZW1lbnRlZAogUEFT
UyBHZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBhZnRlciBlcnJvcmluZyB0aGUgc3RyZWFtIHNob3Vs
ZCBzdWNjZWVkIAorUEFTUyBHYXJiYWdlLWNvbGxlY3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRl
ciBzaG91bGQgbm90IHVubG9jayBpdHMgc3RyZWFtIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVy
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFk
YWJsZS1zdHJlYW0tcmVhZGVyLmh0bWwKaW5kZXggMzU4MzQzYWU0MjliNDYwZGI1ZDJhZjgzMWIx
YzM2ZGE3YWY3Y2U4OS4uOTg5YWY0OTk0NmQzOWExYzI0ZjMyZGExMjllOWFhZGVmM2JmYjVkYSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24v
cmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVm
ZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRtbApAQCAtMiw2
ICsyLDcgQEAKIDxzY3JpcHQgc3JjPScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Jy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyc+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0ncmVzb3VyY2VzL3N0cmVhbXMtdXRpbHMuanMnPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Jy4uLy4uL3Jlc291cmNlcy9nYy5qcyc+PC9zY3JpcHQ+CiA8
c2NyaXB0PgogdmFyIFJlYWRhYmxlU3RyZWFtUmVhZGVyOwogCkBAIC04NCw3ICs4NSw3IEBAIHRl
c3QoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CiAgICAg
cnMuZ2V0UmVhZGVyKCk7IC8vIGdldFJlYWRlcigpIHNob3VsZCBiZSBmaW5lLgogICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgcnMuZ2V0UmVhZGVyKCk7IH0s
ICdnZXRSZWFkZXIoKSBzaG91bGQgZmFpbCcpOwotfSwgJ0dldHRpbmcgYSBSZWFkYWJsZVN0cmVh
bVJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFk
eSBsb2NrZWQgKHZpYSBkaXJlY3QgZ2V0UmVhZGVyKScpOworfSwgJ0dldHRpbmcgYSBSZWFkYWJs
ZVN0cmVhbVJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMg
YWxyZWFkeSBsb2NrZWQgKHZpYSBnZXRSZWFkZXIpJyk7CiAKIHRlc3QoZnVuY3Rpb24oKSB7CiAg
ICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKQEAgLTE5MCwzNiArMTkxLDMyIEBAIHRl
c3Q0LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgfSkpOwogfSk7CiAKLS8vIHZhciB0ZXN0NSA9IGFz
eW5jX3Rlc3QoJ011bHRpcGxlIHJlYWRlcnMgY2FuIGFjY2VzcyB0aGUgc3RyZWFtIGluIHNlcXVl
bmNlJyk7Ci0vLyB0ZXN0NS5zdGVwKGZ1bmN0aW9uKCkgewotLy8gICAgIHZhciByZWFkQ291bnQg
PSAwOwotLy8gICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0vLyAgICAgICAgIHN0
YXJ0OiBmdW5jdGlvbihjKSB7Ci0vLyAgICAgICAgICAgICBjLmVucXVldWUoJ2EnKTsKLS8vICAg
ICAgICAgICAgIGMuZW5xdWV1ZSgnYicpOwotLy8gICAgICAgICAgICAgYy5jbG9zZSgpOwotLy8g
ICAgICAgICB9Ci0vLyAgICAgfSk7Ci0KLS8vICAgICB2YXIgcmVhZGVyMSA9IHJzLmdldFJlYWRl
cigpOwotLy8gICAgIHJlYWRlcjEucmVhZCgpLnRoZW4odGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9u
KHIpIHsKLS8vICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBk
b25lOiBmYWxzZSB9LCAncmVhZGluZyB0aGUgZmlyc3QgY2h1bmsgZnJvbSByZWFkZXIxIHdvcmtz
Jyk7Ci0vLyAgICAgICAgICsrcmVhZENvdW50OwotLy8gICAgIH0pKTsKLS8vICAgICByZWFkZXIx
LnJlbGVhc2VMb2NrKCk7Ci0KLS8vICAgICB2YXIgcmVhZGVyMiA9IHJzLmdldFJlYWRlcigpOwot
Ly8gICAgIHJlYWRlcjIucmVhZCgpLnRoZW4odGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsK
LS8vICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2InLCBkb25lOiBm
YWxzZSB9LCAncmVhZGluZyB0aGUgc2Vjb25kIGNodW5rIGZyb20gcmVhZGVyMiB3b3JrcycpOwot
Ly8gICAgICAgICArK3JlYWRDb3VudDsKLS8vICAgICB9KSk7Ci0vLyAgICAgcmVhZGVyMi5yZWxl
YXNlTG9jaygpOwotCi0vLyAgICAgc2V0VGltZW91dCh0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24o
KSB7Ci0vLyAgICAgICAgIGFzc2VydF9lcXVhbHMocmVhZENvdW50LCAyKTsKLS8vICAgICAgICAg
dGVzdDUuZG9uZSgpOwotLy8gICAgIH0pLCBzdGFuZGFyZFRpbWVvdXQpOwotLy8gfSk7Cit2YXIg
dGVzdDUgPSBhc3luY190ZXN0KCdNdWx0aXBsZSByZWFkZXJzIGNhbiBhY2Nlc3MgdGhlIHN0cmVh
bSBpbiBzZXF1ZW5jZScpOwordGVzdDUuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgcmVhZENv
dW50ID0gMDsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFy
dDogZnVuY3Rpb24oYykgeworICAgICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICAgICAg
ICBjLmVucXVldWUoJ2InKTsKKyAgICAgICAgICAgIGMuY2xvc2UoKTsKKyAgICAgICAgfQorICAg
IH0pOworCisgICAgdmFyIHJlYWRlcjEgPSBycy5nZXRSZWFkZXIoKTsKKyAgICByZWFkZXIxLnJl
YWQoKS50aGVuKHRlc3Q1LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7CisgICAgICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3JlYWRpbmcgdGhl
IGZpcnN0IGNodW5rIGZyb20gcmVhZGVyMSB3b3JrcycpOworICAgICAgICArK3JlYWRDb3VudDsK
KyAgICB9KSk7CisgICAgcmVhZGVyMS5yZWxlYXNlTG9jaygpOworCisgICAgdmFyIHJlYWRlcjIg
PSBycy5nZXRSZWFkZXIoKTsKKyAgICByZWFkZXIyLnJlYWQoKS50aGVuKHRlc3Q1LnN0ZXBfZnVu
YyhmdW5jdGlvbihyKSB7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6
ICdiJywgZG9uZTogZmFsc2UgfSwgJ3JlYWRpbmcgdGhlIHNlY29uZCBjaHVuayBmcm9tIHJlYWRl
cjIgd29ya3MnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscygrK3JlYWRDb3VudCwgMik7CisgICAg
ICAgIHRlc3Q1LmRvbmUoKTsKKyAgICB9KSk7CisgICAgcmVhZGVyMi5yZWxlYXNlTG9jaygpOwor
fSk7CiAKIHZhciB0ZXN0NiA9IGFzeW5jX3Rlc3QoJ0Nhbm5vdCB1c2UgYW4gYWxyZWFkeS1yZWxl
YXNlZCByZWFkZXIgdG8gdW5sb2NrIGEgc3RyZWFtIGFnYWluJyk7CiB0ZXN0Ni5zdGVwKGZ1bmN0
aW9uKCkgewpAQCAtMjQxLDM4ICsyMzgsMzIgQEAgdGVzdDYuc3RlcChmdW5jdGlvbigpIHsKICAg
ICB9KSk7CiB9KTsKIAotLy8gdmFyIHRlc3Q3ID0gYXN5bmNfdGVzdCgnY2FuY2VsKCkgb24gYSBy
ZWxlYXNlZCByZWFkZXIgaXMgYSBuby1vcCBhbmQgZG9lcyBub3QgcGFzcyB0aHJvdWdoJyk7Ci0v
LyB0ZXN0Ny5zdGVwKGZ1bmN0aW9uKCkgewotLy8gICAgIHZhciByZWFkQ291bnRzID0gMDsKLS8v
ICAgICB2YXIgY2FuY2VsbGVkID0gZmFsc2U7Ci0vLyAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKLS8vICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLS8vICAgICAgICAgICAg
IGMuZW5xdWV1ZSgnYScpOwotLy8gICAgICAgICB9LAotLy8gICAgICAgICBjYW5jZWw6IGZ1bmN0
aW9uKCkgewotLy8gICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgndW5kZXJseWluZyBzb3Vy
Y2UgY2FuY2VsIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7Ci0vLyAgICAgICAgIH0KLS8vICAgICB9
KTsKLQotLy8gICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLS8vICAgICByZWFkZXIu
cmVsZWFzZUxvY2soKTsKLS8vICAgICByZWFkZXIuY2FuY2VsKCkudGhlbih0ZXN0Ny5zdGVwX2Z1
bmMoZnVuY3Rpb24odikgewotLy8gICAgICAgICBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwg
J2NhbmNlbCgpIG9uIHRoZSByZWFkZXIgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKQot
Ly8gICAgICAgICBjYW5jZWxsZWQgPSB0cnVlOwotLy8gICAgIH0pKTsKLQotLy8gICAgIHZhciBy
ZWFkZXIyID0gcnMuZ2V0UmVhZGVyKCk7Ci0vLyAgICAgcmVhZGVyMi5yZWFkKCkudGhlbih0ZXN0
Ny5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgewotLy8gICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFs
cyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdhIG5ldyByZWFkZXIgc2hvdWxkIGJl
IGFibGUgdG8gcmVhZCBhIGNodW5rJyk7Ci0vLyAgICAgICAgICsrcmVhZENvdW50czsKLS8vICAg
ICB9KSk7Ci0KLS8vICAgICBzZXRUaW1lb3V0KHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsK
LS8vICAgICAgICAgYXNzZXJ0X3RydWUoY2FuY2VsbGVkKTsKLS8vICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhyZWFkQ291bnRzLCAxKTsKLS8vICAgICAgICAgdGVzdDcuZG9uZSgpOwotLy8gICAgIH0p
LCBzdGFuZGFyZFRpbWVvdXQpOwotLy8gfSk7Cit2YXIgdGVzdDcgPSBhc3luY190ZXN0KCdjYW5j
ZWwoKSBvbiBhIHJlbGVhc2VkIHJlYWRlciBpcyBhIG5vLW9wIGFuZCBkb2VzIG5vdCBwYXNzIHRo
cm91Z2gnKTsKK3Rlc3Q3LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIGNhbmNlbGxlZCA9IGZh
bHNlOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0OiBm
dW5jdGlvbihjKSB7CisgICAgICAgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAgICAgfSwKKyAg
ICAgICAgY2FuY2VsOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQo
J3VuZGVybHlpbmcgc291cmNlIGNhbmNlbCBzaG91bGQgbm90IGJlIGNhbGxlZCcpOworICAgICAg
ICB9CisgICAgfSk7CisKKyAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisgICAgcmVh
ZGVyLnJlbGVhc2VMb2NrKCk7CisgICAgcmVhZGVyLmNhbmNlbCgpLnRoZW4odGVzdDcuc3RlcF9m
dW5jKGZ1bmN0aW9uKHYpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdj
YW5jZWwoKSBvbiB0aGUgcmVhZGVyIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJykKKyAg
ICAgICAgY2FuY2VsbGVkID0gdHJ1ZTsKKyAgICB9KSk7CisKKyAgICB2YXIgcmVhZGVyMiA9IHJz
LmdldFJlYWRlcigpOworICAgIHJlYWRlcjIucmVhZCgpLnRoZW4odGVzdDcuc3RlcF9mdW5jKGZ1
bmN0aW9uKHIpIHsKKyAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2En
LCBkb25lOiBmYWxzZSB9LCAnYSBuZXcgcmVhZGVyIHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgYSBj
aHVuaycpOworICAgICAgICBhc3NlcnRfdHJ1ZShjYW5jZWxsZWQpOworICAgICAgICB0ZXN0Ny5k
b25lKCk7CisgICAgfSkpOworfSk7CiAKIHZhciB0ZXN0OCA9IGFzeW5jX3Rlc3QoJ0dldHRpbmcg
YSBzZWNvbmQgcmVhZGVyIGFmdGVyIGVycm9yaW5nIHRoZSBzdHJlYW0gc2hvdWxkIHN1Y2NlZWQn
KTsKIHRlc3Q4LnN0ZXAoZnVuY3Rpb24oKSB7CkBAIC0zMTIsNCArMzAzLDEzIEBAIHRlc3Q4LnN0
ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgIHRlc3Q4LmRvbmUoKTsKICAgICB9KSk7CiB9KTsKKwor
dGVzdChmdW5jdGlvbigpIHsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oe30pOwor
CisgICAgcnMuZ2V0UmVhZGVyKCk7CisgICAgd2luZG93LmdjKCk7CisKKyAgICBhc3NlcnRfdGhy
b3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IHJzLmdldFJlYWRlcigpOyB9LCAnb2xk
IHJlYWRlciBzaG91bGQgc3RpbGwgYmUgbG9ja2luZyB0aGUgc3RyZWFtIGV2ZW4gYWZ0ZXIgZ2Fy
YmFnZSBjb2xsZWN0aW9uJyk7Cit9LCAnR2FyYmFnZS1jb2xsZWN0aW5nIGEgUmVhZGFibGVTdHJl
YW1SZWFkZXIgc2hvdWxkIG5vdCB1bmxvY2sgaXRzIHN0cmVhbScpOwogPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFk
YWJsZS1zdHJlYW0tdGVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZWUtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU3NWYyNmYxMTBjYjJkN2ZiODE0YWVjNGMzNTMwMjM2OTJmYjc1YjIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9y
ZWFkYWJsZS1zdHJlYW0tdGVlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACisKK0ZBSUwg
UmVhZGFibGVTdHJlYW0gdGVlaW5nOiBycy50ZWUoKSByZXR1cm5zIGFuIGFycmF5IG9mIHR3byBS
ZWFkYWJsZVN0cmVhbXMgcnMudGVlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JzLnRlZSgpJywg
J3JzLnRlZScgaXMgdW5kZWZpbmVkKQorRkFJTCBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHNob3Vs
ZCBiZSBhYmxlIHRvIHJlYWQgb25lIGJyYW5jaCB0byB0aGUgZW5kIHdpdGhvdXQgYWZmZWN0aW5n
IHRoZSBvdGhlciBycy50ZWUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudGVlKCknLCAncnMu
dGVlJyBpcyB1bmRlZmluZWQpCitGQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogdmFsdWVzIHNo
b3VsZCBiZSBlcXVhbCBhY3Jvc3MgZWFjaCBicmFuY2ggcnMudGVlIGlzIG5vdCBhIGZ1bmN0aW9u
LiAoSW4gJ3JzLnRlZSgpJywgJ3JzLnRlZScgaXMgdW5kZWZpbmVkKQorRkFJTCBSZWFkYWJsZVN0
cmVhbSB0ZWVpbmc6IGVycm9ycyBpbiB0aGUgc291cmNlIHNob3VsZCBwcm9wYWdhdGUgdG8gYm90
aCBicmFuY2hlcyBycy50ZWUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudGVlKCknLCAncnMu
dGVlJyBpcyB1bmRlZmluZWQpCitGQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5n
IGJyYW5jaDEgc2hvdWxkIG5vdCBpbXBhY3QgYnJhbmNoMiBycy50ZWUgaXMgbm90IGEgZnVuY3Rp
b24uIChJbiAncnMudGVlKCknLCAncnMudGVlJyBpcyB1bmRlZmluZWQpCitGQUlMIFJlYWRhYmxl
U3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJyYW5jaDIgc2hvdWxkIG5vdCBpbXBhY3QgYnJhbmNo
MSBycy50ZWUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudGVlKCknLCAncnMudGVlJyBpcyB1
bmRlZmluZWQpCitGQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJvdGggYnJh
bmNoZXMgc2hvdWxkIGFnZ3JlZ2F0ZSB0aGUgY2FuY2VsIHJlYXNvbnMgaW50byBhbiBhcnJheSBy
cy50ZWUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAncnMudGVlKCknLCAncnMudGVlJyBpcyB1bmRl
ZmluZWQpCitGQUlMIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogZmFpbGluZyB0byBjYW5jZWwgdGhl
IG9yaWdpbmFsIHN0cmVhbSBzaG91bGQgY2F1c2UgY2FuY2VsKCkgdG8gcmVqZWN0IG9uIGJyYW5j
aGVzIHJzLnRlZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdycy50ZWUoKScsICdycy50ZWUnIGlz
IHVuZGVmaW5lZCkKK0ZBSUwgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjbG9zaW5nIHRoZSBvcmln
aW5hbCBzaG91bGQgaW1tZWRpYXRlbHkgY2xvc2UgdGhlIGJyYW5jaGVzIHJzLnRlZSBpcyBub3Qg
YSBmdW5jdGlvbi4gKEluICdycy50ZWUoKScsICdycy50ZWUnIGlzIHVuZGVmaW5lZCkKK0ZBSUwg
UmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcmluZyB0aGUgb3JpZ2luYWwgc2hvdWxkIGltbWVk
aWF0ZWx5IGVycm9yIHRoZSBicmFuY2hlcyBycy50ZWUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAn
cnMudGVlKCknLCAncnMudGVlJyBpcyB1bmRlZmluZWQpCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZWUu
aHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRh
YmxlLXN0cmVhbS10ZWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZGE2OWQyOTMwOWQ3ZTJhN2NlYzAzZmY2
YjkyNjY3MGZmMzBjOWU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9y
ZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlZS5odG1sCkBAIC0wLDAg
KzEsMzA2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPScuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMnPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Jy4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyc+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ncmVzb3VyY2VzL3N0
cmVhbXMtdXRpbHMuanMnPjwvc2NyaXB0PgorPHNjcmlwdD4KK3Rlc3QoZnVuY3Rpb24oKSB7Cisg
ICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisKKyAgICB2YXIgcmVzdWx0ID0gcnMu
dGVlKCk7CisKKyAgICBhc3NlcnRfdHJ1ZShBcnJheS5pc0FycmF5KHJlc3VsdCksICdyZXR1cm4g
dmFsdWUgc2hvdWxkIGJlIGFuIGFycmF5Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQubGVu
Z3RoLCAyLCAnYXJyYXkgc2hvdWxkIGhhdmUgbGVuZ3RoIDInKTsKKyAgICBhc3NlcnRfZXF1YWxz
KHJlc3VsdFswXS5jb25zdHJ1Y3RvciwgUmVhZGFibGVTdHJlYW0sICcwdGggZWxlbWVudCBzaG91
bGQgYmUgYSBSZWFkYWJsZVN0cmVhbScpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WzFdLmNv
bnN0cnVjdG9yLCBSZWFkYWJsZVN0cmVhbSwgJzFzdCBlbGVtZW50IHNob3VsZCBiZSBhIFJlYWRh
YmxlU3RyZWFtJyk7Cit9LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBycy50ZWUoKSByZXR1cm5z
IGFuIGFycmF5IG9mIHR3byBSZWFkYWJsZVN0cmVhbXMnKTsKKwordmFyIHRlc3QxID0gYXN5bmNf
dGVzdCgnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBzaG91bGQgYmUgYWJsZSB0byByZWFkIG9uZSBi
cmFuY2ggdG8gdGhlIGVuZCB3aXRob3V0IGFmZmVjdGluZyB0aGUgb3RoZXInKTsKK3Rlc3QxLnN0
ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIGNsb3NlZENhbGxlZCA9IGZhbHNlOworICAgIHZhciBy
ZWFkQ2FsbHMgPSAwOworICAgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAg
ICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOworICAg
ICAgICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICAgICAgICBjLmNsb3NlKCk7CisgICAgICAg
IH0KKyAgICB9KTsKKworICAgIHZhciBicmFuY2ggPSBycy50ZWUoKTsKKyAgICB2YXIgYnJhbmNo
MSA9IGJyYW5jaFswXTsKKyAgICB2YXIgYnJhbmNoMiA9IGJyYW5jaFsxXTsKKyAgICB2YXIgcmVh
ZGVyMSA9IGJyYW5jaDEuZ2V0UmVhZGVyKCk7CisgICAgdmFyIHJlYWRlcjIgPSBicmFuY2gyLmdl
dFJlYWRlcigpOworCisgICAgcmVhZGVyMS5jbG9zZWQudGhlbih0ZXN0MS5zdGVwX2Z1bmMoZnVu
Y3Rpb24oKSB7CisgICAgICAgIGNsb3NlZENhbGxlZCA9IHRydWU7CisgICAgfSkpLmNhdGNoKHRl
c3QxLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0pKTsKKyAg
ICByZWFkZXIyLmNsb3NlZC50aGVuKHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0
X3VucmVhY2hlZCgnYnJhbmNoMiBzaG91bGQgbm90IGJlIGNsb3NlZCcpOyB9KSk7CisKKyAgICBy
ZWFkZXIxLnJlYWQoKS50aGVuKHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7CisgICAgICAg
IGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2Zp
cnN0IGNodW5rIGZyb20gYnJhbmNoMSBzaG91bGQgYmUgY29ycmVjdCcpOworICAgICAgICArK3Jl
YWRDYWxsczsKKyAgICB9KSk7CisgICAgcmVhZGVyMS5yZWFkKCkudGhlbih0ZXN0MS5zdGVwX2Z1
bmMoZnVuY3Rpb24ocikgeworICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVl
OiAnYicsIGRvbmU6IGZhbHNlIH0sICdzZWNvbmQgY2h1bmsgZnJvbSBicmFuY2gxIHNob3VsZCBi
ZSBjb3JyZWN0Jyk7CisgICAgICAgICsrcmVhZENhbGxzOworICAgIH0pKTsKKyAgICByZWFkZXIx
LnJlYWQoKS50aGVuKHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7CisgICAgICAgIGFzc2Vy
dF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAndGhp
cmQgcmVhZCgpIGZyb20gYnJhbmNoMSBzaG91bGQgYmUgZG9uZScpOworICAgICAgICBhc3NlcnRf
dHJ1ZShjbG9zZWRDYWxsZWQpOworICAgICAgICBhc3NlcnRfZXF1YWxzKCsrcmVhZENhbGxzLCA0
KTsKKyAgICAgICAgdGVzdDEuZG9uZSgpOworICAgIH0pKTsKKworICAgIHJlYWRlcjIucmVhZCgp
LnRoZW4odGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKKyAgICAgICAgYXNzZXJ0X29iamVj
dF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgY2h1bmsgZnJv
bSBicmFuY2gyIHNob3VsZCBiZSBjb3JyZWN0Jyk7CisgICAgICAgICsrcmVhZENhbGxzOworICAg
IH0pKTsKK30pOworCit2YXIgdGVzdDIgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSB0ZWVp
bmc6IHZhbHVlcyBzaG91bGQgYmUgZXF1YWwgYWNyb3NzIGVhY2ggYnJhbmNoJyk7Cit0ZXN0Mi5z
dGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciB0aGVPYmplY3QgPSB7IHRoZTogJ3Rlc3Qgb2JqZWN0
JyB9OworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0OiBm
dW5jdGlvbihjKSB7CisgICAgICAgICAgICBjLmVucXVldWUodGhlT2JqZWN0KTsKKyAgICAgICAg
fQorICAgIH0pOworCisgICAgdmFyIGJyYW5jaCA9IHJzLnRlZSgpOworICAgIHZhciBicmFuY2gx
ID0gYnJhbmNoWzBdOworICAgIHZhciBicmFuY2gyID0gYnJhbmNoWzFdOworICAgIHZhciByZWFk
ZXIxID0gYnJhbmNoMS5nZXRSZWFkZXIoKTsKKyAgICB2YXIgcmVhZGVyMiA9IGJyYW5jaDIuZ2V0
UmVhZGVyKCk7CisKKyAgICBQcm9taXNlLmFsbChbcmVhZGVyMS5yZWFkKCksIHJlYWRlcjIucmVh
ZCgpXSkudGhlbih0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24odmFsdWVzKSB7CisgICAgICAgIGFz
c2VydF9vYmplY3RfZXF1YWxzKHZhbHVlc1swXSwgdmFsdWVzWzFdLCAndGhlIHZhbHVlcyBzaG91
bGQgYmUgZXF1YWwnKTsKKyAgICAgICAgdGVzdDIuZG9uZSgpOworICAgIH0pKTsKK30pOworCit2
YXIgdGVzdDMgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9ycyBpbiB0
aGUgc291cmNlIHNob3VsZCBwcm9wYWdhdGUgdG8gYm90aCBicmFuY2hlcycpOwordGVzdDMuc3Rl
cChmdW5jdGlvbigpIHsKKyAgICB2YXIgY2xvc2VkUmVqZWN0cyA9IDA7CisgICAgdmFyIHJlYWRD
YWxscyA9IDA7CisgICAgdmFyIHJlYWRSZWplY3RzID0gMDsKKyAgICB2YXIgdGhlRXJyb3IgPSBu
ZXcgRXJyb3IoJ2JvbyEnKTsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAg
ICAgICBzdGFydDogZnVuY3Rpb24oYykgeworICAgICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7Cisg
ICAgICAgICAgICBjLmVucXVldWUoJ2InKTsKKyAgICAgICAgfSwKKyAgICAgICAgcHVsbDogZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICB0aHJvdyB0aGVFcnJvcjsKKyAgICAgICAgfQorICAgIH0p
OworCisgICAgdmFyIGJyYW5jaCA9IHJzLnRlZSgpOworICAgIHZhciBicmFuY2gxID0gYnJhbmNo
WzBdOworICAgIHZhciBicmFuY2gyID0gYnJhbmNoWzFdOworICAgIHZhciByZWFkZXIxID0gYnJh
bmNoMS5nZXRSZWFkZXIoKTsKKyAgICB2YXIgcmVhZGVyMiA9IGJyYW5jaDIuZ2V0UmVhZGVyKCk7
CisKKyAgICByZWFkZXIxLmxhYmVsID0gJ3JlYWRlcjEnOworICAgIHJlYWRlcjIubGFiZWwgPSAn
cmVhZGVyMic7CisKKyAgICByZWFkZXIxLmNsb3NlZC5jYXRjaCh0ZXN0My5zdGVwX2Z1bmMoZnVu
Y3Rpb24oZSkgeworICAgICAgICArK2Nsb3NlZFJlamVjdHM7CisgICAgICAgIGFzc2VydF9lcXVh
bHMoZSwgdGhlRXJyb3IsICdicmFuY2gxIGNsb3NlZCBwcm9taXNlIHNob3VsZCByZWplY3Qgd2l0
aCB0aGUgZXJyb3InKTsKKyAgICB9KSk7CisgICAgcmVhZGVyMi5jbG9zZWQuY2F0Y2godGVzdDMu
c3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgKytjbG9zZWRSZWplY3RzOworICAgICAg
ICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnYnJhbmNoMiBjbG9zZWQgcHJvbWlzZSBzaG91
bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7CisgICAgfSkpOworCisgICAgcmVhZGVyMS5yZWFk
KCkudGhlbih0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgeworICAgICAgICArK3JlYWRDYWxs
czsKKyAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBm
YWxzZSB9LCAnc2hvdWxkIGJlIGFibGUgdG8gcmVhZCB0aGUgZmlyc3QgY2h1bmsgaW4gYnJhbmNo
MScpOworICAgIH0pKTsKKworICAgIHJlYWRlcjEucmVhZCgpLnRoZW4odGVzdDMuc3RlcF9mdW5j
KGZ1bmN0aW9uKHIpIHsKKyAgICAgICAgKytyZWFkQ2FsbHM7CisgICAgICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwgJ3Nob3VsZCBiZSBhYmxl
IHRvIHJlYWQgdGhlIHNlY29uZCBjaHVuayBpbiBicmFuY2gxJyk7CisKKyAgICAgICAgcmV0dXJu
IHJlYWRlcjIucmVhZCgpLnRoZW4oCisgICAgICAgICAgICB0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rp
b24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ29uY2UgdGhlIHJvb3Qgc3RyZWFtIGhhcyBlcnJvcmVk
LCB5b3Ugc2hvdWxkIG5vdCBiZSBhYmxlIHRvIHJlYWQgZnJvbSBicmFuY2gyJyk7IH0pLAorICAg
ICAgICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgICAgICAr
K3JlYWRSZWplY3RzOworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3Is
ICdicmFuY2gyIHJlYWQoKSBwcm9taXNlIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsK
KyAgICAgICAgICAgIH0pKTsKKyAgICB9KSkudGhlbih0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24o
KSB7CisgICAgICAgIHJldHVybiByZWFkZXIxLnJlYWQoKS50aGVuKAorICAgICAgICAgICAgdGVz
dDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdvbmNlIHRoZSByb290
IHN0cmVhbSBoYXMgZXJyb3JlZCwgeW91IHNob3VsZCBub3QgYmUgYWJsZSB0byByZWFkIGZyb20g
YnJhbmNoMSBlaXRoZXInKTsgfSksCisgICAgICAgICAgICB0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rp
b24oZSkgeworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoY2xvc2VkUmVqZWN0cywgMik7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZWFkQ2FsbHMsIDIpOworICAgICAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMoKytyZWFkUmVqZWN0cywgMik7CisgICAgICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2JyYW5jaDEgcmVhZCgpIHByb21pc2Ugc2hvdWxk
IHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOworICAgICAgICAgICAgICAgIHRlc3QzLmRvbmUoKTsK
KyAgICAgICAgICAgIH0pCisgICAgICAgICk7CisgICAgfSkpLmNhdGNoKHRlc3QzLnN0ZXBfZnVu
YyhmdW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0pKTsKK30pOworCit2YXIgdGVz
dDQgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBicmFuY2gx
IHNob3VsZCBub3QgaW1wYWN0IGJyYW5jaDInKTsKK3Rlc3Q0LnN0ZXAoZnVuY3Rpb24oKSB7Cisg
ICAgdmFyIGJyYW5jaDFSZWFkID0gZmFsc2U7CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgICAgIGMuZW5xdWV1
ZSgnYScpOworICAgICAgICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICAgICAgICBjLmNsb3Nl
KCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHZhciBicmFuY2ggPSBycy50ZWUoKTsKKyAg
ICB2YXIgYnJhbmNoMSA9IGJyYW5jaFswXTsKKyAgICB2YXIgYnJhbmNoMiA9IGJyYW5jaFsxXTsK
KyAgICBicmFuY2gxLmNhbmNlbCgpOworCisgICAgcmVhZGFibGVTdHJlYW1Ub0FycmF5KGJyYW5j
aDEpLnRoZW4odGVzdDQuc3RlcF9mdW5jKGZ1bmN0aW9uKGNodW5rcykgeworICAgICAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKGNodW5rcywgW10sICdicmFuY2gxIHNob3VsZCBoYXZlIG5vIGNodW5r
cycpOworICAgICAgICBicmFuY2gxUmVhZCA9IHRydWU7CisgICAgfSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIHJlYWRhYmxl
U3RyZWFtVG9BcnJheShicmFuY2gyKS50aGVuKHRlc3Q0LnN0ZXBfZnVuYyhmdW5jdGlvbihjaHVu
a3MpIHsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3MsIFsnYScsICdiJ10sICdi
cmFuY2gyIHNob3VsZCBoYXZlIHR3byBjaHVua3MnKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoYnJh
bmNoMVJlYWQpOworICAgICAgICB0ZXN0NC5kb25lKCk7CisgICAgfSkpOworfSk7CisKK3ZhciB0
ZXN0NSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJyYW5j
aDIgc2hvdWxkIG5vdCBpbXBhY3QgYnJhbmNoMScpOwordGVzdDUuc3RlcChmdW5jdGlvbigpIHsK
KyAgICB2YXIgYnJhbmNoMlJlYWQgPSBmYWxzZTsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgeworICAgICAgICAgICAgYy5lbnF1
ZXVlKCdhJyk7CisgICAgICAgICAgICBjLmVucXVldWUoJ2InKTsKKyAgICAgICAgICAgIGMuY2xv
c2UoKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgdmFyIGJyYW5jaCA9IHJzLnRlZSgpOwor
ICAgIHZhciBicmFuY2gxID0gYnJhbmNoWzBdOworICAgIHZhciBicmFuY2gyID0gYnJhbmNoWzFd
OworICAgIGJyYW5jaDIuY2FuY2VsKCk7CisKKyAgICByZWFkYWJsZVN0cmVhbVRvQXJyYXkoYnJh
bmNoMSkudGhlbih0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24oY2h1bmtzKSB7CisgICAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbJ2EnLCAnYiddLCAnYnJhbmNoMSBzaG91bGQgaGF2
ZSB0d28gY2h1bmtzJyk7CisgICAgICAgIGFzc2VydF90cnVlKGJyYW5jaDJSZWFkKTsKKyAgICAg
ICAgdGVzdDUuZG9uZSgpOworICAgIH0pKTsKKyAgICByZWFkYWJsZVN0cmVhbVRvQXJyYXkoYnJh
bmNoMikudGhlbih0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24oY2h1bmtzKSB7CisgICAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbXSwgJ2JyYW5jaDIgc2hvdWxkIGhhdmUgbm8gY2h1
bmtzJyk7CisgICAgICAgIGJyYW5jaDJSZWFkID0gdHJ1ZTsKKyAgICB9KSk7Cit9KTsKKwordmFy
IHRlc3Q2ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYm90
aCBicmFuY2hlcyBzaG91bGQgYWdncmVnYXRlIHRoZSBjYW5jZWwgcmVhc29ucyBpbnRvIGFuIGFy
cmF5Jyk7Cit0ZXN0Ni5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciByZWFzb24xID0gbmV3IEVy
cm9yKCdXZVwncmUgd2FudGVkIG1lbi4nKTsKKyAgICB2YXIgcmVhc29uMiA9IG5ldyBFcnJvcign
SSBoYXZlIHRoZSBkZWF0aCBzZW50ZW5jZSBvbiB0d2VsdmUgc3lzdGVtcy4nKTsKKworICAgIHZh
ciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIGNhbmNlbDogZnVuY3Rpb24ocmVh
c29uKSB7CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJlYXNvbiwgW3JlYXNvbjEs
IHJlYXNvbjJdLCAndGhlIGNhbmNlbCByZWFzb24gc2hvdWxkIGJlIGFuIGFycmF5IGNvbnRhaW5p
bmcgdGhvc2UgZnJvbSB0aGUgYnJhbmNoZXMnKTsKKyAgICAgICAgICAgIHRlc3Q2LmRvbmUoKTsK
KyAgICAgICAgfQorICAgIH0pOworCisgICAgdmFyIGJyYW5jaCA9IHJzLnRlZSgpOworICAgIHZh
ciBicmFuY2gxID0gYnJhbmNoWzBdOworICAgIHZhciBicmFuY2gyID0gYnJhbmNoWzFdOworICAg
IGJyYW5jaDEuY2FuY2VsKHJlYXNvbjEpOworICAgIGJyYW5jaDIuY2FuY2VsKHJlYXNvbjIpOwor
fSk7CisKK3ZhciB0ZXN0NyA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogZmFp
bGluZyB0byBjYW5jZWwgdGhlIG9yaWdpbmFsIHN0cmVhbSBzaG91bGQgY2F1c2UgY2FuY2VsKCkg
dG8gcmVqZWN0IG9uIGJyYW5jaGVzJyk7Cit0ZXN0Ny5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZh
ciBjYW5jZWwxUmVqZWN0ZWQgPSBmYWxzZTsKKyAgICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3Io
J0lcJ2xsIGJlIGNhcmVmdWwuJyk7CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICAgICAgY2FuY2VsOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRocm93IHRoZUVycm9y
OworICAgICAgICB9CisgICAgfSk7CisKKyAgICB2YXIgYnJhbmNoID0gcnMudGVlKCk7CisgICAg
dmFyIGJyYW5jaDEgPSBicmFuY2hbMF07CisgICAgdmFyIGJyYW5jaDIgPSBicmFuY2hbMV07Cisg
ICAgYnJhbmNoMS5jYW5jZWwoKS5jYXRjaCh0ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewor
ICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnYnJhbmNoMS5jYW5jZWwoKSBzaG91
bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7CisgICAgICAgIGNhbmNlbDFSZWplY3RlZCA9IHRy
dWU7CisgICAgfSkpOworICAgIGJyYW5jaDIuY2FuY2VsKCkuY2F0Y2godGVzdDcuc3RlcF9mdW5j
KGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2JyYW5j
aDIuY2FuY2VsKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOworICAgICAgICBhc3Nl
cnRfdHJ1ZShjYW5jZWwxUmVqZWN0ZWQpOworICAgICAgICB0ZXN0Ny5kb25lKCk7CisgICAgfSkp
OworfSk7CisKK3ZhciB0ZXN0OCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzog
Y2xvc2luZyB0aGUgb3JpZ2luYWwgc2hvdWxkIGltbWVkaWF0ZWx5IGNsb3NlIHRoZSBicmFuY2hl
cycpOwordGVzdDguc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgcmVhZGVyMUNsb3NlZCA9IGZh
bHNlOworICAgIHZhciBjb250cm9sbGVyOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAgICBjb250cm9sbGVy
ID0gYzsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgdmFyIGJyYW5jaCA9IHJzLnRlZSgpOwor
ICAgIHZhciBicmFuY2gxID0gYnJhbmNoWzBdOworICAgIHZhciBicmFuY2gyID0gYnJhbmNoWzFd
OworICAgIHZhciByZWFkZXIxID0gYnJhbmNoMS5nZXRSZWFkZXIoKTsKKyAgICB2YXIgcmVhZGVy
MiA9IGJyYW5jaDIuZ2V0UmVhZGVyKCk7CisKKyAgICByZWFkZXIxLmNsb3NlZC50aGVuKHRlc3Q4
LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgcmVhZGVyMUNsb3NlZCA9IHRydWU7IC8v
YnJhbmNoMSBzaG91bGQgYmUgY2xvc2VkCisgICAgfSkpLmNhdGNoKHRlc3Q4LnN0ZXBfZnVuYyhm
dW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0pKTsKKyAgICByZWFkZXIyLmNsb3Nl
ZC50aGVuKHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3RydWUo
cmVhZGVyMUNsb3NlZCk7CisgICAgICAgIHRlc3Q4LmRvbmUoJ2JyYW5jaDIgc2hvdWxkIGJlIGNs
b3NlZCcpOworICAgIH0pKS5jYXRjaCh0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3Nl
cnRfdW5yZWFjaGVkKGUpOyB9KSk7CisKKyAgICBjb250cm9sbGVyLmNsb3NlKCk7Cit9KTsKKwor
dmFyIHRlc3Q5ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcmluZyB0
aGUgb3JpZ2luYWwgc2hvdWxkIGltbWVkaWF0ZWx5IGVycm9yIHRoZSBicmFuY2hlcycpOwordGVz
dDkuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgcmVhZGVyMVJlamVjdGVkID0gZmFsc2U7Cisg
ICAgdmFyIGNvbnRyb2xsZXI7CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICAgICAgc3RhcnQoYykgeworICAgICAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICAgIH0K
KyAgICB9KTsKKworICAgIHZhciBicmFuY2ggPSBycy50ZWUoKTsKKyAgICB2YXIgYnJhbmNoMSA9
IGJyYW5jaFswXTsKKyAgICB2YXIgYnJhbmNoMiA9IGJyYW5jaFsxXTsKKyAgICB2YXIgcmVhZGVy
MSA9IGJyYW5jaDEuZ2V0UmVhZGVyKCk7CisgICAgdmFyIHJlYWRlcjIgPSBicmFuY2gyLmdldFJl
YWRlcigpOworCisgICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdib28hJyk7CisKKyAgICBy
ZWFkZXIxLmNsb3NlZC50aGVuKAorICAgICAgICB0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
IGFzc2VydF91bnJlYWNoZWQoJ2JyYW5jaDEgc2hvdWxkIG5vdCBiZSBjbG9zZWQnKTsgfSksCisg
ICAgICAgIHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CisgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKGUsIHRoZUVycm9yLCAnYnJhbmNoMSBzaG91bGQgYmUgZXJyb3JlZCB3aXRoIHRoZSBl
cnJvcicpOworICAgICAgICAgICAgcmVhZGVyMVJlamVjdGVkID0gdHJ1ZTsKKyAgICAgICAgfSkK
KyAgICApOworICAgIHJlYWRlcjIuY2xvc2VkLnRoZW4oCisgICAgICAgIHRlc3Q5LnN0ZXBfZnVu
YyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnYnJhbmNoMiBzaG91bGQgbm90IGJlIGNs
b3NlZCcpOyB9KSwKKyAgICAgICAgdGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKKyAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdicmFuY2gyIHNob3VsZCBiZSBlcnJv
cmVkIHdpdGggdGhlIGVycm9yJyk7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShyZWFkZXIxUmVq
ZWN0ZWQpOworICAgICAgICAgICAgdGVzdDkuZG9uZSgpOworICAgICAgICB9KQorICAgICk7CisK
KyAgICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKK30pOworPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJs
ZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVm
ZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0ZWQu
dHh0CmluZGV4IGQ2MWJjOTBjM2IzZWY3Mjg3Njg3MzdhNWE3MzNiM2FmMTdjMmIwYmEuLmE1ZGJl
OTE2MTRmZGY5YjhhYzY4MmFiYWI5MGU5ZDZhNDg0MTQ2ZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1w
bGF0ZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWlt
cGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0CkBAIC0x
LDM0ICsxLDUwIEBACiAKIFBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0VtcHR5IHdpdGggUmVhZGFi
bGVTdHJlYW0gKGVtcHR5KSAKLVBBU1MgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9k
cyBhbmQgcHJvcGVydGllcyAKK0ZBSUwgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9k
cyBhbmQgcHJvcGVydGllcyBhc3NlcnRfZXF1YWxzOiBoYXMgYSBib29sZWFuIGxvY2tlZCBnZXR0
ZXIgZXhwZWN0ZWQgImJvb2xlYW4iIGJ1dCBnb3QgInVuZGVmaW5lZCIKIFBBU1MgUnVubmluZyB0
ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXIg
CiBQQVNTIGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMg
CitGQUlMIGxvY2tlZCBzaG91bGQgYmUgdHJ1ZSBhc3NlcnRfdHJ1ZTogbG9ja2VkIGdldHRlciBz
aG91bGQgcmV0dXJuIHRydWUgZXhwZWN0ZWQgdHJ1ZSBnb3QgdW5kZWZpbmVkCitQQVNTIHJlYWQo
KSBzaG91bGQgbmV2ZXIgc2V0dGxlIAorUEFTUyB0d28gcmVhZCgpcyBzaG91bGQgYm90aCBuZXZl
ciBzZXR0bGUgCiBQQVNTIHJlYWQoKSBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzIGVh
Y2ggdGltZSAKIFBBU1MgZ2V0UmVhZGVyKCkgYWdhaW4gb24gdGhlIHN0cmVhbSBzaG91bGQgZmFp
bCAKK0ZBSUwgcmVsZWFzaW5nIHRoZSBsb2NrIHdpdGggcGVuZGluZyByZWFkIHJlcXVlc3RzIHNo
b3VsZCB0aHJvdyBidXQgdGhlIHJlYWQgcmVxdWVzdHMgc2hvdWxkIHN0YXkgcGVuZGluZyByZWxl
YXNlTG9jayBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3Vs
ZCBjYXVzZSBmdXJ0aGVyIHJlYWQoKSBjYWxscyB0byByZXNvbHZlIGFzIGlmIHRoZSBzdHJlYW0g
aXMgY2xvc2VkIHJlbGVhc2VMb2NrIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCByZWxlYXNpbmcg
dGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byBmdWxmaWxsIHJlbGVhc2VMb2NrIGlzIG5v
dCBpbXBsZW1lbnRlZAorRkFJTCByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGxvY2tl
ZCB0byBiZWNvbWUgZmFsc2UgcmVsZWFzZUxvY2sgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIGNh
bmNlbGluZyB2aWEgdGhlIHJlYWRlciBzaG91bGQgY2F1c2UgdGhlIHJlYWRlciB0byBhY3QgY2xv
c2VkIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgY2FuY2VsaW5nIHZpYSB0aGUgc3Ry
ZWFtIHNob3VsZCBmYWlsIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIFBBU1MgUnVubmluZyB0
ZW1wbGF0ZWRSU0Nsb3NlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbGwgaW4g
c3RhcnQpIAogRkFJTCBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVk
IHByb21pc2UgZWFjaCB0aW1lIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKK0ZBSUwgbG9ja2Vk
IHNob3VsZCBiZSBmYWxzZSBhc3NlcnRfZmFsc2U6IGxvY2tlZCBnZXR0ZXIgc2hvdWxkIHJldHVy
biBmYWxzZSBleHBlY3RlZCBmYWxzZSBnb3QgdW5kZWZpbmVkCiBQQVNTIGdldFJlYWRlcigpIHNo
b3VsZCBiZSBPSyAKIFBBU1Mgc2hvdWxkIGJlIGFibGUgdG8gYWNxdWlyZSBtdWx0aXBsZSByZWFk
ZXJzLCBzaW5jZSB0aGV5IGFyZSBhbGwgYXV0by1yZWxlYXNlZCAKIFBBU1MgUnVubmluZyB0ZW1w
bGF0ZWRSU0Nsb3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbGwg
aW4gc3RhcnQpIHJlYWRlciAKIFBBU1MgcmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1
ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCiBQQVNTIGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3
aXRoIHVuZGVmaW5lZCAKK0ZBSUwgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1
bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBQQVNT
IFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZp
YSBjYW5jZWwpIAogRkFJTCBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmls
bGVkIHByb21pc2UgZWFjaCB0aW1lIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKK0ZBSUwgbG9j
a2VkIHNob3VsZCBiZSBmYWxzZSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIGdldFJl
YWRlcigpIHNob3VsZCBiZSBPSyBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIHNob3Vs
ZCBiZSBhYmxlIHRvIGFjcXVpcmUgbXVsdGlwbGUgcmVhZGVycywgc2luY2UgdGhleSBhcmUgYWxs
IGF1dG8tcmVsZWFzZWQgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogUEFTUyBSdW5uaW5nIHRl
bXBsYXRlZFJTQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2Fu
Y2VsKSByZWFkZXIgCiBGQUlMIHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVu
ZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgY2xv
c2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50
ZWQKK0ZBSUwgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9t
aXNlIGVhY2ggdGltZSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBQQVNTIFJ1bm5pbmcgdGVt
cGxhdGVkUlNFcnJvcmVkIHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4g
c3RhcnQpIAogUEFTUyBnZXRSZWFkZXIoKSBzaG91bGQgcmV0dXJuIGEgcmVhZGVyIHRoYXQgYWN0
cyBlcnJvcmVkIAorRkFJTCBsb2NrZWQgc2hvdWxkIGJlIGZhbHNlIGFzc2VydF9mYWxzZTogbG9j
a2VkIGdldHRlciBzaG91bGQgcmV0dXJuIGZhbHNlIGV4cGVjdGVkIGZhbHNlIGdvdCB1bmRlZmlu
ZWQKIFBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRTeW5jT25seSB3aXRoIFJlYWRhYmxl
U3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KSAKIEZBSUwgY2FuY2VsKCkgc2hvdWxk
IHJldHVybiBhIGRpc3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFjaCB0aW1lIGNhbmNlbCBpcyBu
b3QgaW1wbGVtZW50ZWQKIEZBSUwgcmVhZGVyIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0
aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVk
CiBQQVNTIHNob3VsZCBiZSBhYmxlIHRvIGFjcXVpcmUgbXVsdGlwbGUgcmVhZGVycywgc2luY2Ug
dGhleSBhcmUgYWxsIGF1dG8tcmVsZWFzZWQgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJv
cmVkIHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVk
IHByb21pc2UgaW4gc3RhcnQpIAorUEFTUyBnZXRSZWFkZXIoKSBzaG91bGQgcmV0dXJuIGEgcmVh
ZGVyIHRoYXQgYWN0cyBlcnJvcmVkIAorRkFJTCBsb2NrZWQgc2hvdWxkIGJlIGZhbHNlIGFzc2Vy
dF9mYWxzZTogbG9ja2VkIGdldHRlciBzaG91bGQgcmV0dXJuIGZhbHNlIGV4cGVjdGVkIGZhbHNl
IGdvdCB1bmRlZmluZWQKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIgd2l0
aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlz
ZSBpbiBzdGFydCkgcmVhZGVyIAorUEFTUyBjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBl
cnJvciAKK1BBU1MgcmVhZCgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCiBQQVNTIFJ1
bm5pbmcgdGVtcGxhdGVkUlNUd29DaHVua3NPcGVuUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0g
KHR3byBjaHVua3MgZW5xdWV1ZWQsIHN0aWxsIG9wZW4pIHJlYWRlciAKIFBBU1MgY2FsbGluZyBy
ZWFkKCkgdHdpY2Ugd2l0aG91dCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1
bmtzIAogUEFTUyBjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRoIHdhaXRpbmcgd2lsbCBldmVudHVh
bGx5IGdpdmUgYm90aCBjaHVua3MgCkBAIC0zNyw3ICs1Myw3IEBAIEZBSUwgY2FuY2VsKCkgYWZ0
ZXIgYSByZWFkKCkgc2hvdWxkIHN0aWxsIGdpdmUgdGhhdCBzaW5nbGUgcmVhZCByZXN1bHQgY2Fu
Y2VsIGlzCiBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNUd29DaHVua3NDbG9zZWRSZWFkZXIgd2l0
aCBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRl
ciAKIFBBU1MgdGhpcmQgcmVhZCgpLCB3aXRob3V0IHdhaXRpbmcsIHNob3VsZCBnaXZlIHsgdmFs
dWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAogUEFTUyB0aGlyZCByZWFkLCB3aXRoIHdhaXRp
bmcsIHNob3VsZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAotUEFTUyBk
cmFpbmluZyB0aGUgc3RyZWFtIHZpYSByZWFkKCkgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgY2xv
c2VkIHByb21pc2UgdG8gZnVsZmlsbCAKK0ZBSUwgZHJhaW5pbmcgdGhlIHN0cmVhbSB2aWEgcmVh
ZCgpIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIGNsb3NlZCBwcm9taXNlIHRvIGZ1bGZpbGwgYW5k
IGxvY2tlZCB0byBiZSBmYWxzZSBhc3NlcnRfZmFsc2U6IHN0cmVhbSBzaG91bGQgbm8gbG9uZ2Vy
IGJlIGxvY2tlZCBleHBlY3RlZCBmYWxzZSBnb3QgdW5kZWZpbmVkCiBGQUlMIHJlbGVhc2luZyB0
aGUgbG9jayBhZnRlciB0aGUgc3RyZWFtIGlzIGNsb3NlZCBzaG91bGQgZG8gbm90aGluZyByZWxl
YXNlTG9jayBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3Vs
ZCBjYXVzZSByZWFkKCkgdG8gYWN0IGFzIGlmIHRoZSBzdHJlYW0gaXMgY2xvc2VkIHJlbGVhc2VM
b2NrIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCByZWFkZXIncyBjbG9zZWQgcHJvcGVydHkgYWx3
YXlzIHJldHVybnMgdGhlIHNhbWUgcHJvbWlzZSByZWxlYXNlTG9jayBpcyBub3QgaW1wbGVtZW50
ZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0
aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQuaHRtbApp
bmRleCBlZDQ0NDJjMDU2Nzg0ZjlkODE2Y2UxNDI5NTUwOTBmY2E1OTRhNTExLi41OGZmM2JkN2Q1
NDJkNTc1MTFkN2E2NzI1OWUyNTI3ZTVmNmM4MjA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVk
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24v
cmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC5odG1sCkBAIC0xMCwxMCArMTAsMTIgQEAgZnVuY3Rp
b24gdGVtcGxhdGVkUlNFbXB0eShsYWJlbCwgZmFjdG9yeSkgewogICAgIHRlc3QoZnVuY3Rpb24o
KSB7CiAgICAgICAgIHZhciBycyA9IGZhY3RvcnkoKTsKIAorICAgICAgICBhc3NlcnRfZXF1YWxz
KHR5cGVvZiBycy5sb2NrZWQsICdib29sZWFuJywgJ2hhcyBhIGJvb2xlYW4gbG9ja2VkIGdldHRl
cicpOwogICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBycy5jYW5jZWwsICdmdW5jdGlvbics
ICdoYXMgYSBjYW5jZWwgbWV0aG9kJyk7CiAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJz
LmdldFJlYWRlciwgJ2Z1bmN0aW9uJywgJ2hhcyBhIGdldFJlYWRlciBtZXRob2QnKTsKICAgICAg
ICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnMucGlwZVRocm91Z2gsICdmdW5jdGlvbicsICdoYXMg
YSBwaXBlVGhyb3VnaCBtZXRob2QnKTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnMu
cGlwZVRvLCAnZnVuY3Rpb24nLCAnaGFzIGEgcGlwZVRvIG1ldGhvZCcpOworICAgICAgICBhc3Nl
cnRfZXF1YWxzKHR5cGVvZiBycy50ZWUsICdmdW5jdGlvbicsICdoYXMgYSB0ZWUgbWV0aG9kJyk7
CiAgICAgfSwgJ2luc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRp
ZXMnKTsKIH0KIApAQCAtMjUsNiArMjcsNyBAQCBmdW5jdGlvbiB0ZW1wbGF0ZWRSU0Nsb3NlZChs
YWJlbCwgZmFjdG9yeSkgewogICAgIHRlc3QxLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgIHZh
ciBycyA9IGZhY3RvcnkoKTsKICAgICAgICAgdmFyIHByb21pc2VzQ291bnQgPSAwOworICAgICAg
ICB2YXIgYWxsQ2hlY2tlZCA9IGZhbHNlOwogCiAgICAgICAgIHZhciBjYW5jZWxQcm9taXNlMSA9
IHJzLmNhbmNlbCgpOwogICAgICAgICB2YXIgY2FuY2VsUHJvbWlzZTIgPSBycy5jYW5jZWwoKTsK
QEAgLTM2LDE0ICszOSwyMiBAQCBmdW5jdGlvbiB0ZW1wbGF0ZWRSU0Nsb3NlZChsYWJlbCwgZmFj
dG9yeSkgewogICAgICAgICBjYW5jZWxQcm9taXNlMi50aGVuKHRlc3QxLnN0ZXBfZnVuYyhmdW5j
dGlvbih2KSB7CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ3NlY29u
ZCBjYW5jZWwoKSBjYWxsIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7CiAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKCsrcHJvbWlzZXNDb3VudCwgMik7CisgICAgICAgICAgICBhc3Nl
cnRfdHJ1ZShhbGxDaGVja2VkKTsKICAgICAgICAgICAgIHRlc3QxLmRvbmUoKTsKICAgICAgICAg
fSkpOwogICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjYW5jZWxQcm9taXNlMSwgY2FuY2VsUHJv
bWlzZTIsICdjYW5jZWwoKSBjYWxscyBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzJyk7
CisgICAgICAgIGFsbENoZWNrZWQgPSB0cnVlOwogICAgIH0pOwogCiAgICAgdGVzdChmdW5jdGlv
bigpIHsKICAgICAgICAgdmFyIHJzID0gZmFjdG9yeSgpOwogCisgICAgICAgIGFzc2VydF9mYWxz
ZShycy5sb2NrZWQsICdsb2NrZWQgZ2V0dGVyIHNob3VsZCByZXR1cm4gZmFsc2UnKTsKKyAgICB9
LCAnbG9ja2VkIHNob3VsZCBiZSBmYWxzZScpOworCisgICAgdGVzdChmdW5jdGlvbigpIHsKKyAg
ICAgICAgdmFyIHJzID0gZmFjdG9yeSgpOworCiAgICAgICAgIHJzLmdldFJlYWRlcigpOyAvLyBn
ZXRSZWFkZXIoKSBzaG91bGQgbm90IHRocm93LgogICAgIH0sICdnZXRSZWFkZXIoKSBzaG91bGQg
YmUgT0snKTsKIApAQCAtNzgsNiArODksMTIgQEAgZnVuY3Rpb24gdGVtcGxhdGVkUlNFcnJvcmVk
KGxhYmVsLCBmYWN0b3J5LCBlcnJvcikgewogICAgICAgICAgICAgdGVzdDEuZG9uZSgpOwogICAg
ICAgICB9KSk7CiAgICAgfSk7CisKKyAgICB0ZXN0KGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIg
cnMgPSBmYWN0b3J5KCk7CisKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKHJzLmxvY2tlZCwgJ2xvY2tl
ZCBnZXR0ZXIgc2hvdWxkIHJldHVybiBmYWxzZScpOworICAgIH0sICdsb2NrZWQgc2hvdWxkIGJl
IGZhbHNlJyk7CiB9OwogCiBmdW5jdGlvbiB0ZW1wbGF0ZWRSU0Vycm9yZWRTeW5jT25seShsYWJl
bCwgZmFjdG9yeSwgZXJyb3IpIHsKQEAgLTg4LDYgKzEwNSw3IEBAIGZ1bmN0aW9uIHRlbXBsYXRl
ZFJTRXJyb3JlZFN5bmNPbmx5KGxhYmVsLCBmYWN0b3J5LCBlcnJvcikgewogICAgIHRlc3QxLnN0
ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciBycyA9IGZhY3RvcnkoKTsKICAgICAgICAgdmFy
IHByb21pc2VzQ291bnQgPSAwOworICAgICAgICB2YXIgYWxsQ2hlY2tlZCA9IGZhbHNlOwogCiAg
ICAgICAgIHZhciBjYW5jZWxQcm9taXNlMSA9IHJzLmNhbmNlbCgpOwogICAgICAgICB2YXIgY2Fu
Y2VsUHJvbWlzZTIgPSBycy5jYW5jZWwoKTsKQEAgLTk5LDkgKzExNywxMSBAQCBmdW5jdGlvbiB0
ZW1wbGF0ZWRSU0Vycm9yZWRTeW5jT25seShsYWJlbCwgZmFjdG9yeSwgZXJyb3IpIHsKICAgICAg
ICAgY2FuY2VsUHJvbWlzZTIuY2F0Y2godGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMoZSwgZXJyb3IsICdzZWNvbmQgY2FuY2VsKCkgY2FsbCBz
aG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KCsrcHJvbWlzZXNDb3VudCwgMik7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShhbGxDaGVja2Vk
KTsKICAgICAgICAgICAgIHRlc3QxLmRvbmUoKTsKICAgICAgICAgfSkpOwogICAgICAgICBhc3Nl
cnRfbm90X2VxdWFscyhjYW5jZWxQcm9taXNlMSwgY2FuY2VsUHJvbWlzZTIsICdjYW5jZWwoKSBj
YWxscyBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzJyk7CisgICAgICAgIGFsbENoZWNr
ZWQgPSB0cnVlOwogICAgIH0pOwogCiAgICAgdmFyIHRlc3QyID0gYXN5bmNfdGVzdCgncmVhZGVy
IGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2gg
dGltZScpOwpAQCAtMTA5LDYgKzEyOSw3IEBAIGZ1bmN0aW9uIHRlbXBsYXRlZFJTRXJyb3JlZFN5
bmNPbmx5KGxhYmVsLCBmYWN0b3J5LCBlcnJvcikgewogICAgICAgICB2YXIgcnMgPSBmYWN0b3J5
KCk7CiAgICAgICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKICAgICAgICAgdmFyIHBy
b21pc2VzQ291bnQgPSAwOworICAgICAgICB2YXIgYWxsQ2hlY2tlZCA9IGZhbHNlOwogCiAgICAg
ICAgIHZhciBjYW5jZWxQcm9taXNlMSA9IHJlYWRlci5jYW5jZWwoKTsKICAgICAgICAgdmFyIGNh
bmNlbFByb21pc2UyID0gcmVhZGVyLmNhbmNlbCgpOwpAQCAtMTIwLDkgKzE0MSwxMSBAQCBmdW5j
dGlvbiB0ZW1wbGF0ZWRSU0Vycm9yZWRTeW5jT25seShsYWJlbCwgZmFjdG9yeSwgZXJyb3IpIHsK
ICAgICAgICAgY2FuY2VsUHJvbWlzZTIuY2F0Y2godGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKGUp
IHsKICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZSwgZXJyb3IsICdzZWNvbmQgY2FuY2VsKCkg
Y2FsbCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7CiAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKCsrcHJvbWlzZXNDb3VudCwgMik7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShhbGxD
aGVja2VkKTsKICAgICAgICAgICAgIHRlc3QyLmRvbmUoKTsKICAgICAgICAgfSkpOwogICAgICAg
ICBhc3NlcnRfbm90X2VxdWFscyhjYW5jZWxQcm9taXNlMSwgY2FuY2VsUHJvbWlzZTIsICdjYW5j
ZWwoKSBjYWxscyBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzJyk7CisgICAgICAgIGFs
bENoZWNrZWQgPSB0cnVlOwogICAgIH0pOwogCiAgICAgdGVzdChmdW5jdGlvbigpIHsKQEAgLTE1
MCwzNCArMTczLDQwIEBAIGZ1bmN0aW9uIHRlbXBsYXRlZFJTRW1wdHlSZWFkZXIobGFiZWwsIGZh
Y3RvcnkpIHsKICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcmVhZGVyLnJlbGVhc2VMb2Nr
LCAnZnVuY3Rpb24nLCAnaGFzIGEgcmVsZWFzZUxvY2sgbWV0aG9kJyk7CiAgICAgfSwgJ2luc3Rh
bmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMnKTsKIAotICAgIC8v
IHZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ3JlYWQoKSBzaG91bGQgbmV2ZXIgc2V0dGxlJyk7Ci0g
ICAgLy8gdGVzdDEuc3RlcChmdW5jdGlvbigpIHsKLSAgICAvLyAgICAgdmFyIHsgcmVhZGVyIH0g
PSBmYWN0b3J5KCk7CisgICAgdGVzdChmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHsgc3RyZWFt
IH0gPSBmYWN0b3J5KCk7CiAKLSAgICAvLyAgICAgcmVhZGVyLnJlYWQoKS50aGVuKAotICAgIC8v
ICAgICAgICAgdGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdy
ZWFkKCkgc2hvdWxkIG5vdCBmdWxmaWxsJyk7IH0pLAotICAgIC8vICAgICAgICAgdGVzdDEuc3Rl
cF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdyZWFkKCkgc2hvdWxkIG5vdCBy
ZWplY3QnKTsgfSkKLSAgICAvLyAgICAgKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoc3RyZWFtLmxv
Y2tlZCwgJ2xvY2tlZCBnZXR0ZXIgc2hvdWxkIHJldHVybiB0cnVlJyk7CisgICAgfSwgJ2xvY2tl
ZCBzaG91bGQgYmUgdHJ1ZScpOwogCi0gICAgLy8gICAgIHNldFRpbWVvdXQodGVzdDEuc3RlcF9m
dW5jKGZ1bmN0aW9uKCkgeyB0ZXN0MS5kb25lKCk7IH0pLCBzdGFuZGFyZFRpbWVvdXQpOwotICAg
IC8vIH0pOworICAgIHZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ3JlYWQoKSBzaG91bGQgbmV2ZXIg
c2V0dGxlJyk7CisgICAgdGVzdDEuc3RlcChmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHsgcmVh
ZGVyIH0gPSBmYWN0b3J5KCk7CiAKLSAgICAvLyB2YXIgdGVzdDIgPSBhc3luY190ZXN0KCd0d28g
cmVhZCgpcyBzaG91bGQgYm90aCBuZXZlciBzZXR0bGUnKTsKLSAgICAvLyB0ZXN0Mi5zdGVwKGZ1
bmN0aW9uKCkgewotICAgIC8vICAgICB2YXIgeyByZWFkZXIgfSA9IGZhY3RvcnkoKTsKKyAgICAg
ICAgcmVhZGVyLnJlYWQoKS50aGVuKAorICAgICAgICAgICAgdGVzdDEuc3RlcF9mdW5jKGZ1bmN0
aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdyZWFkKCkgc2hvdWxkIG5vdCBmdWxmaWxsJyk7IH0p
LAorICAgICAgICAgICAgdGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFj
aGVkKCdyZWFkKCkgc2hvdWxkIG5vdCByZWplY3QnKTsgfSkKKyAgICAgICAgKTsKIAotICAgIC8v
ICAgICByZWFkZXIucmVhZCgpLnRoZW4oCi0gICAgLy8gICAgICAgICB0ZXN0Mi5zdGVwX2Z1bmMo
ZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ2ZpcnN0IHJlYWQoKSBzaG91bGQgbm90IGZ1
bGZpbGwnKTsgfSksCi0gICAgLy8gICAgICAgICB0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
IGFzc2VydF91bnJlYWNoZWQoJ2ZpcnN0IHJlYWQoKSBzaG91bGQgbm90IHJlamVjdCcpOyB9KQot
ICAgIC8vICAgICApOworICAgICAgICBzZXRUaW1lb3V0KHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlv
bigpIHsgdGVzdDEuZG9uZSgpOyB9KSwgMTAwMCk7CisgICAgfSk7CiAKLSAgICAvLyAgICAgcmVh
ZGVyLnJlYWQoKS50aGVuKAotICAgIC8vICAgICAgICAgdGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9u
KCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdzZWNvbmQgcmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcp
OyB9KSwKLSAgICAvLyAgICAgICAgIHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0
X3VucmVhY2hlZCgnc2Vjb25kIHJlYWQoKSBzaG91bGQgbm90IHJlamVjdCcpOyB9KQotICAgIC8v
ICAgICApOworICAgIHZhciB0ZXN0MiA9IGFzeW5jX3Rlc3QoJ3R3byByZWFkKClzIHNob3VsZCBi
b3RoIG5ldmVyIHNldHRsZScpOworICAgIHRlc3QyLnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgICAg
IHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwogCi0gICAgLy8gICAgIHNldFRpbWVvdXQodGVz
dDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyB0ZXN0Mi5kb25lKCk7IH0pLCBzdGFuZGFyZFRpbWVv
dXQpOwotICAgIC8vIH0pOworICAgICAgICByZWFkZXIucmVhZCgpLnRoZW4oCisgICAgICAgICAg
ICB0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ2ZpcnN0IHJl
YWQoKSBzaG91bGQgbm90IGZ1bGZpbGwnKTsgfSksCisgICAgICAgICAgICB0ZXN0Mi5zdGVwX2Z1
bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ2ZpcnN0IHJlYWQoKSBzaG91bGQgbm90
IHJlamVjdCcpOyB9KQorICAgICAgICApOworCisgICAgICAgIHJlYWRlci5yZWFkKCkudGhlbigK
KyAgICAgICAgICAgIHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hl
ZCgnc2Vjb25kIHJlYWQoKSBzaG91bGQgbm90IGZ1bGZpbGwnKTsgfSksCisgICAgICAgICAgICB0
ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ3NlY29uZCByZWFk
KCkgc2hvdWxkIG5vdCByZWplY3QnKTsgfSkKKyAgICAgICAgKTsKKworICAgICAgICBzZXRUaW1l
b3V0KHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgdGVzdDIuZG9uZSgpOyB9KSwgMTAwMCk7
CisgICAgfSk7CiAKICAgICB0ZXN0KGZ1bmN0aW9uKCkgewogICAgICAgICB2YXIgeyByZWFkZXIg
fSA9IGZhY3RvcnkoKTsKQEAgLTE5MSwyOSArMjIwLDI5IEBAIGZ1bmN0aW9uIHRlbXBsYXRlZFJT
RW1wdHlSZWFkZXIobGFiZWwsIGZhY3RvcnkpIHsKICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBzdHJlYW0uZ2V0UmVhZGVyKCk7IH0sICdzdHJlYW0u
Z2V0UmVhZGVyKCkgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7CiAgICAgfSwgJ2dldFJlYWRl
cigpIGFnYWluIG9uIHRoZSBzdHJlYW0gc2hvdWxkIGZhaWwnKTsKIAotICAgIC8vIHZhciB0ZXN0
MyA9IGFzeW5jX3Rlc3QoJ3JlbGVhc2luZyB0aGUgbG9jayB3aXRoIHBlbmRpbmcgcmVhZCByZXF1
ZXN0cyBzaG91bGQgdGhyb3cgYnV0IHRoZSByZWFkIHJlcXVlc3RzIHNob3VsZCBzdGF5IHBlbmRp
bmcnKTsKLSAgICAvLyB0ZXN0My5zdGVwKGZ1bmN0aW9uKCkgewotICAgIC8vICAgICB2YXIgeyBy
ZWFkZXIgfSA9IGZhY3RvcnkoKTsKKyAgICB2YXIgdGVzdDMgPSBhc3luY190ZXN0KCdyZWxlYXNp
bmcgdGhlIGxvY2sgd2l0aCBwZW5kaW5nIHJlYWQgcmVxdWVzdHMgc2hvdWxkIHRocm93IGJ1dCB0
aGUgcmVhZCByZXF1ZXN0cyBzaG91bGQgc3RheSBwZW5kaW5nJyk7CisgICAgdGVzdDMuc3RlcChm
dW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7CiAKLSAgICAv
LyAgICAgcmVhZGVyLnJlYWQoKS50aGVuKAotICAgIC8vICAgICAgICAgdGVzdDMuc3RlcF9mdW5j
KGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdmaXJzdCByZWFkKCkgc2hvdWxkIG5vdCBm
dWxmaWxsJyk7IH0pLAotICAgIC8vICAgICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
eyBhc3NlcnRfdW5yZWFjaGVkKCdmaXJzdCByZWFkKCkgc2hvdWxkIG5vdCByZWplY3QnKTsgfSkK
LSAgICAvLyAgICAgKTsKKyAgICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKAorICAgICAgICAgICAg
dGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdmaXJzdCByZWFk
KCkgc2hvdWxkIG5vdCBmdWxmaWxsJyk7IH0pLAorICAgICAgICAgICAgdGVzdDMuc3RlcF9mdW5j
KGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdmaXJzdCByZWFkKCkgc2hvdWxkIG5vdCBy
ZWplY3QnKTsgfSkKKyAgICAgICAgKTsKIAotICAgIC8vICAgICByZWFkZXIucmVhZCgpLnRoZW4o
Ci0gICAgLy8gICAgICAgICB0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJl
YWNoZWQoJ3NlY29uZCByZWFkKCkgc2hvdWxkIG5vdCBmdWxmaWxsJyk7IH0pLAotICAgIC8vICAg
ICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCdzZWNv
bmQgcmVhZCgpIHNob3VsZCBub3QgcmVqZWN0Jyk7IH0pCi0gICAgLy8gICAgICk7CisgICAgICAg
IHJlYWRlci5yZWFkKCkudGhlbigKKyAgICAgICAgICAgIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlv
bigpIHsgYXNzZXJ0X3VucmVhY2hlZCgnc2Vjb25kIHJlYWQoKSBzaG91bGQgbm90IGZ1bGZpbGwn
KTsgfSksCisgICAgICAgICAgICB0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91
bnJlYWNoZWQoJ3NlY29uZCByZWFkKCkgc2hvdWxkIG5vdCByZWplY3QnKTsgfSkKKyAgICAgICAg
KTsKIAotICAgIC8vICAgICByZWFkZXIuY2xvc2VkLnRoZW4oCi0gICAgLy8gICAgICAgICB0ZXN0
My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ2Nsb3NlZCBzaG91bGQg
bm90IGZ1bGZpbGwnKTsgfSksCi0gICAgLy8gICAgICAgICB0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rp
b24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ2Nsb3NlZCBzaG91bGQgbm90IHJlamVjdCcpOyB9KQot
ICAgIC8vICAgICApOworICAgICAgICByZWFkZXIuY2xvc2VkLnRoZW4oCisgICAgICAgICAgICB0
ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ2Nsb3NlZCBzaG91
bGQgbm90IGZ1bGZpbGwnKTsgfSksCisgICAgICAgICAgICB0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rp
b24oKSB7IGFzc2VydF91bnJlYWNoZWQoJ2Nsb3NlZCBzaG91bGQgbm90IHJlamVjdCcpOyB9KQor
ICAgICAgICApOwogCi0gICAgLy8gICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCB0
ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IHJlYWRlci5yZWxlYXNlTG9jaygpOyB9LCAncmVs
ZWFzZUxvY2sgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJykpOworICAgICAgICBhc3NlcnRfdGhy
b3dzKG5ldyBUeXBlRXJyb3IoKSwgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyByZWFkZXIu
cmVsZWFzZUxvY2soKTsgfSwgJ3JlbGVhc2VMb2NrIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicp
KTsKIAotICAgIC8vICAgICBzZXRUaW1lb3V0KHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsg
dGVzdDMuZG9uZSgpOyB9KSwgc3RhbmRhcmRUaW1lb3V0KTsKLSAgICAvLyB9KTsKKyAgICAgICAg
c2V0VGltZW91dCh0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7IHRlc3QzLmRvbmUoKTsgfSks
IDEwMDApOworICAgIH0pOwogCiAgICAgdmFyIHRlc3Q0ID0gYXN5bmNfdGVzdCgncmVsZWFzaW5n
IHRoZSBsb2NrIHNob3VsZCBjYXVzZSBmdXJ0aGVyIHJlYWQoKSBjYWxscyB0byByZXNvbHZlIGFz
IGlmIHRoZSBzdHJlYW0gaXMgY2xvc2VkJyk7CiAgICAgdGVzdDQuc3RlcChmdW5jdGlvbigpIHsK
QEAgLTI1Miw2ICsyODEsMTMgQEAgZnVuY3Rpb24gdGVtcGxhdGVkUlNFbXB0eVJlYWRlcihsYWJl
bCwgZmFjdG9yeSkgewogICAgICAgICB9KSk7CiAgICAgfSk7CiAKKyAgICB0ZXN0KGZ1bmN0aW9u
KCkgeworICAgICAgICB2YXIgeyBzdHJlYW0sIHJlYWRlciB9ID0gZmFjdG9yeSgpOworCisgICAg
ICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOworICAgICAgICBhc3NlcnRfZmFsc2Uoc3RyZWFtLmxv
Y2tlZCwgJ2xvY2tlZCBnZXR0ZXIgc2hvdWxkIHJldHVybiBmYWxzZScpOworICAgIH0sICdyZWxl
YXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGxvY2tlZCB0byBiZWNvbWUgZmFsc2UnKTsKKwog
ICAgIHZhciB0ZXN0NiA9IGFzeW5jX3Rlc3QoJ2NhbmNlbGluZyB2aWEgdGhlIHJlYWRlciBzaG91
bGQgY2F1c2UgdGhlIHJlYWRlciB0byBhY3QgY2xvc2VkJyk7CiAgICAgdGVzdDYuc3RlcChmdW5j
dGlvbigpIHsKICAgICAgICAgdmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7CkBAIC0zMDQsMzkg
KzM0MCwzOCBAQCBmdW5jdGlvbiB0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlcihsYWJlbCwgZmFjdG9y
eSkgewogICAgICAgICApOwogICAgIH0pOwogCi0gICAgLy8gdmFyIHRlc3QzID0gYXN5bmNfdGVz
dCgnY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVh
Y2ggdGltZScpOwotICAgIC8vIHRlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgLy8gICAgIHZh
ciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwotICAgIC8vICAgICB2YXIgcHJvbWlzZUNvdW50ID0g
MDsKLQotICAgIC8vICAgICB2YXIgY2FuY2VsUHJvbWlzZTEgPSByZWFkZXIuY2FuY2VsKCk7Ci0g
ICAgLy8gICAgIHZhciBjYW5jZWxQcm9taXNlMiA9IHJlYWRlci5jYW5jZWwoKTsKLSAgICAvLyAg
ICAgdmFyIGNsb3NlZFJlYWRlclByb21pc2UgPSByZWFkZXIuY2xvc2VkOwotCi0gICAgLy8gICAg
IGNhbmNlbFByb21pc2UxLnRoZW4odGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKHYpIHsKLSAgICAv
LyAgICAgICAgIGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAnZmlyc3QgY2FuY2VsKCkgY2Fs
bCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpOwotICAgIC8vICAgICAgICAgKytwcm9t
aXNlQ291bnQ7Ci0gICAgLy8gICAgIH0pKTsKLSAgICAvLyAgICAgY2FuY2VsUHJvbWlzZTIudGhl
bih0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24odikgewotICAgIC8vICAgICAgICAgYXNzZXJ0X2Vx
dWFscyh2LCB1bmRlZmluZWQsICdzZWNvbmQgY2FuY2VsKCkgY2FsbCBzaG91bGQgZnVsZmlsbCB3
aXRoIHVuZGVmaW5lZCcpOwotICAgIC8vICAgICAgICAgKytwcm9taXNlQ291bnQ7Ci0gICAgLy8g
ICAgIH0pKTsKLSAgICAvLyAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY2FuY2VsUHJvbWlzZTEsIGNh
bmNlbFByb21pc2UyLCAnY2FuY2VsKCkgY2FsbHMgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9t
aXNlcycpOwotICAgIC8vICAgICBhc3NlcnRfbm90X2VxdWFscyhjYW5jZWxQcm9taXNlMSwgY2xv
c2VkUmVhZGVyUHJvbWlzZSwgJ2NhbmNlbCgpIHByb21pc2UgMSBzaG91bGQgYmUgZGlzdGluY3Qg
ZnJvbSByZWFkZXIuY2xvc2VkJyk7Ci0gICAgLy8gICAgIGFzc2VydF9ub3RfZXF1YWxzKGNhbmNl
bFByb21pc2UyLCBjbG9zZWRSZWFkZXJQcm9taXNlLCAnY2FuY2VsKCkgcHJvbWlzZSAyIHNob3Vs
ZCBiZSBkaXN0aW5jdCBmcm9tIHJlYWRlci5jbG9zZWQnKTsKLQotICAgIC8vICAgICBzZXRUaW1l
b3V0KHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAvLyAgICAgICAgIGFzc2VydF9l
cXVhbHMocHJvbWlzZUNvdW50LCAyKTsKLSAgICAvLyAgICAgICAgIHRlc3QzLmRvbmUoKTsKLSAg
ICAvLyAgICAgfSksIHN0YW5kYXJkVGltZW91dCk7Ci0gICAgLy8gfSk7CisgICAgdmFyIHRlc3Qz
ID0gYXN5bmNfdGVzdCgnY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxl
ZCBwcm9taXNlIGVhY2ggdGltZScpOworICAgIHRlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7CisgICAg
ICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOworICAgICAgICB2YXIgcHJvbWlzZUNvdW50
ID0gMDsKKyAgICAgICAgdmFyIGFsbENoZWNrZWQgPSBmYWxzZTsKKworICAgICAgICB2YXIgY2Fu
Y2VsUHJvbWlzZTEgPSByZWFkZXIuY2FuY2VsKCk7CisgICAgICAgIHZhciBjYW5jZWxQcm9taXNl
MiA9IHJlYWRlci5jYW5jZWwoKTsKKyAgICAgICAgdmFyIGNsb3NlZFJlYWRlclByb21pc2UgPSBy
ZWFkZXIuY2xvc2VkOworCisgICAgICAgIGNhbmNlbFByb21pc2UxLnRoZW4odGVzdDMuc3RlcF9m
dW5jKGZ1bmN0aW9uKHYpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVk
LCAnZmlyc3QgY2FuY2VsKCkgY2FsbCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpOwor
ICAgICAgICAgICAgKytwcm9taXNlQ291bnQ7CisgICAgICAgIH0pKTsKKyAgICAgICAgY2FuY2Vs
UHJvbWlzZTIudGhlbih0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24odikgeworICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdzZWNvbmQgY2FuY2VsKCkgY2FsbCBzaG91bGQg
ZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscygrK3By
b21pc2VDb3VudCwgMik7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShhbGxDaGVja2VkKTsKKyAg
ICAgICAgICAgIHRlc3QzLmRvbmUoKTsKKyAgICAgICAgfSkpOworICAgICAgICBhc3NlcnRfbm90
X2VxdWFscyhjYW5jZWxQcm9taXNlMSwgY2FuY2VsUHJvbWlzZTIsICdjYW5jZWwoKSBjYWxscyBz
aG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzJyk7CisgICAgICAgIGFzc2VydF9ub3RfZXF1
YWxzKGNhbmNlbFByb21pc2UxLCBjbG9zZWRSZWFkZXJQcm9taXNlLCAnY2FuY2VsKCkgcHJvbWlz
ZSAxIHNob3VsZCBiZSBkaXN0aW5jdCBmcm9tIHJlYWRlci5jbG9zZWQnKTsKKyAgICAgICAgYXNz
ZXJ0X25vdF9lcXVhbHMoY2FuY2VsUHJvbWlzZTIsIGNsb3NlZFJlYWRlclByb21pc2UsICdjYW5j
ZWwoKSBwcm9taXNlIDIgc2hvdWxkIGJlIGRpc3RpbmN0IGZyb20gcmVhZGVyLmNsb3NlZCcpOwor
ICAgICAgICBhbGxDaGVja2VkID0gdHJ1ZTsKKyAgICB9KTsKIH07CiAKIGZ1bmN0aW9uIHRlbXBs
YXRlZFJTRXJyb3JlZFJlYWRlcihsYWJlbCwgZmFjdG9yeSwgZXJyb3IpIHsKICAgICB0ZXN0KGZ1
bmN0aW9uKCkgewogICAgIH0sICdSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlciB3aXRo
ICcgKyBsYWJlbCk7CiAKLSAgICB2YXIgdGVzdDEgPSBhc3luY190ZXN0KCdjbG9zZWQgc2hvdWxk
IHJlamVjdCB3aXRoIHRoZSBlcnJvcicsIHsgdGltZW91dDogNTAgfSk7CisgICAgdmFyIHRlc3Qx
ID0gYXN5bmNfdGVzdCgnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKICAg
ICB0ZXN0MS5zdGVwKGZ1bmN0aW9uKCkgewogICAgICAgICB2YXIgeyByZWFkZXIgfSA9IGZhY3Rv
cnkoKTsKIApAQCAtNDcyLDE1ICs1MDcsMTYgQEAgZnVuY3Rpb24gdGVtcGxhdGVkUlNUd29DaHVu
a3NDbG9zZWRSZWFkZXIobGFiZWwsIGZhY3RvcnksIGNodW5rcykgewogICAgICAgICB9KSkuY2F0
Y2godGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSkp
OwogICAgIH0pOwogCi0gICAgdmFyIHRlc3QzID0gYXN5bmNfdGVzdCgnZHJhaW5pbmcgdGhlIHN0
cmVhbSB2aWEgcmVhZCgpIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIGNsb3NlZCBwcm9taXNlIHRv
IGZ1bGZpbGwnKTsKKyAgICB2YXIgdGVzdDMgPSBhc3luY190ZXN0KCdkcmFpbmluZyB0aGUgc3Ry
ZWFtIHZpYSByZWFkKCkgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgY2xvc2VkIHByb21pc2UgdG8g
ZnVsZmlsbCBhbmQgbG9ja2VkIHRvIGJlIGZhbHNlJyk7CiAgICAgdGVzdDMuc3RlcChmdW5jdGlv
bigpIHsKLSAgICAgICAgdmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7CisgICAgICAgIHZhciB7
IHN0cmVhbSwgcmVhZGVyIH0gPSBmYWN0b3J5KCk7CiAgICAgICAgIHZhciByZWFkQ2FsbGVkID0g
ZmFsc2U7CiAKICAgICAgICAgcmVhZGVyLmNsb3NlZC50aGVuKAogICAgICAgICAgICAgdGVzdDMu
c3RlcF9mdW5jKGZ1bmN0aW9uKHYpIHsKICAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShyZWFk
Q2FsbGVkKTsKICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ3Jl
YWRlciBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKKyAgICAgICAgICAg
ICAgICBhc3NlcnRfZmFsc2Uoc3RyZWFtLmxvY2tlZCwgJ3N0cmVhbSBzaG91bGQgbm8gbG9uZ2Vy
IGJlIGxvY2tlZCcpOwogICAgICAgICAgICAgICAgIHRlc3QzLmRvbmUoKTsKICAgICAgICAgICAg
IH0pLAogICAgICAgICAgICAgdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5y
ZWFjaGVkKCdyZWFkZXIgY2xvc2VkIHNob3VsZCBub3QgcmVqZWN0Jyk7IH0pCkBAIC02MTUsMjQg
KzY1MSwyMyBAQCB0ZW1wbGF0ZWRSU0Vycm9yZWRTeW5jT25seSgnUmVhZGFibGVTdHJlYW0gKGVy
cm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpJywgZnVuY3RpbwogICAgIHRoZUVycm9yCiApOwogCi0v
LyBGSVhNRTogQWN0aXZhdGUgdGhlc2UgdGVzdHMgb25jZSBQcm9taXNlIGhhbmRsaW5nIGlzIHN1
cHBvcnRlZCBpbiBzdGFydCBmdW5jdGlvbi4KLS8vIHRlbXBsYXRlZFJTRXJyb3JlZCgnUmVhZGFi
bGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3Rh
cnQpJywgZnVuY3Rpb24oKSB7Ci0vLyAgICAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0v
LyAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHsKLS8vICAgICAgICAgICAgIHJldHVybiBQcm9t
aXNlLnJlamVjdCh0aGVFcnJvcik7Ci0vLyAgICAgICAgIH0KLS8vICAgICB9KX0sCi0vLyAgICAg
dGhlRXJyb3IKLS8vICk7Ci0KLS8vIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlcignUmVhZGFibGVT
dHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQp
IHJlYWRlcicsIGZ1bmN0aW9uKCkgewotLy8gICAgIHJldHVybiBzdHJlYW1BbmREZWZhdWx0UmVh
ZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0vLyAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHsK
LS8vICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh0aGVFcnJvcik7Ci0vLyAgICAg
ICAgIH0KLS8vICAgICB9KSl9LAotLy8gICAgIHRoZUVycm9yCi0vLyApOwordGVtcGxhdGVkUlNF
cnJvcmVkKCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQg
cHJvbWlzZSBpbiBzdGFydCknLCBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJu
IFByb21pc2UucmVqZWN0KHRoZUVycm9yKTsKKyAgICAgICAgfQorICAgIH0pfSwKKyAgICB0aGVF
cnJvcgorKTsKKwordGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSAoZXJy
b3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgcmVhZGVyJywg
ZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHN0cmVhbUFuZERlZmF1bHRSZWFkZXIobmV3IFJlYWRh
YmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0
dXJuIFByb21pc2UucmVqZWN0KHRoZUVycm9yKTsKKyAgICAgICAgfQorICAgIH0pKX0sCisgICAg
dGhlRXJyb3IKKyk7CiAKIHZhciBjaHVua3MgPSBbJ2EnLCAnYiddOwogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJl
YW0uaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3Jl
YWRhYmxlLXN0cmVhbS5odG1sCmluZGV4IDZjMTgwZDQ2ZTRmNjBhMDVlMDg4OTU5ODM0OGU5MDVk
ZWMwNWYxYjYuLmUzOWUwNjQ0ODQ0NGFkZGZmNGM0NTcwOTZkOGJkYjdiMWE2NGM0MzggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRh
YmxlLXN0cmVhbS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxl
bWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1sCkBAIC0xMiwyMSArMTIsMzMgQEAgdGVzdChm
dW5jdGlvbigpIHsKIH0sICdSZWFkYWJsZVN0cmVhbSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBu
byBlcnJvcnMnKTsKIAogdGVzdChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IG5ldyBSZWFkYWJsZVN0cmVhbShudWxsKTsgfSwgJ2Nv
bnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzb3VyY2UgaXMgbnVsbCcpOworfSwgJ1Jl
YWRhYmxlU3RyZWFtIGNhblwndCBiZSBjb25zdHJ1Y3RlZCB3aXRoIGdhcmJhZ2UnKTsKKwordGVz
dChmdW5jdGlvbigpIHsKICAgICB2YXIgbWV0aG9kcyA9IFsnY2FuY2VsJywgJ2NvbnN0cnVjdG9y
JywgJ2dldFJlYWRlcicsICdwaXBlVGhyb3VnaCcsICdwaXBlVG8nLCAndGVlJ107CisgICAgdmFy
IHByb3BlcnRpZXMgPSBtZXRob2RzLmNvbmNhdChbJ2xvY2tlZCddKS5zb3J0KCk7CiAKICAgICB2
YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKICAgICB2YXIgcHJvdG8gPSBPYmplY3QuZ2V0
UHJvdG90eXBlT2YocnMpOwogCi0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhPYmplY3QuZ2V0T3du
UHJvcGVydHlOYW1lcyhwcm90bykuc29ydCgpLCBtZXRob2RzLCAnc2hvdWxkIGhhdmUgYWxsIHRo
ZSBjb3JyZWN0IG1ldGhvZHMnKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKE9iamVjdC5nZXRP
d25Qcm9wZXJ0eU5hbWVzKHByb3RvKS5zb3J0KCksIHByb3BlcnRpZXMsICdzaG91bGQgaGF2ZSBh
bGwgdGhlIGNvcnJlY3QgbWV0aG9kcycpOwogCiAgICAgZm9yICh2YXIgbSBvZiBtZXRob2RzKSB7
CiAgICAgICAgIHZhciBwcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
cHJvdG8sIG0pOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHByb3BEZXNjLmVudW1lcmFibGUsIGZh
bHNlLCAnbWV0aG9kIHNob3VsZCBiZSBub24tZW51bWVyYWJsZScpOwotICAgICAgICBhc3NlcnRf
ZXF1YWxzKHByb3BEZXNjLmNvbmZpZ3VyYWJsZSwgdHJ1ZSwgJ21ldGhvZCBzaG91bGQgYmUgY29u
ZmlndXJhYmxlJyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocHJvcERlc2Mud3JpdGFibGUsIHRy
dWUsICdtZXRob2Qgc2hvdWxkIGJlIHdyaXRhYmxlJyk7CisgICAgICAgIGFzc2VydF9mYWxzZShw
cm9wRGVzYy5lbnVtZXJhYmxlLCAnbWV0aG9kIHNob3VsZCBiZSBub24tZW51bWVyYWJsZScpOwor
ICAgICAgICBhc3NlcnRfdHJ1ZShwcm9wRGVzYy5jb25maWd1cmFibGUsICdtZXRob2Qgc2hvdWxk
IGJlIGNvbmZpZ3VyYWJsZScpOworICAgICAgICBhc3NlcnRfdHJ1ZShwcm9wRGVzYy53cml0YWJs
ZSwgJ21ldGhvZCBzaG91bGQgYmUgd3JpdGFibGUnKTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyh0
eXBlb2YgcnNbbV0sICdmdW5jdGlvbicsICdzaG91bGQgaGF2ZSBiZSBhIG1ldGhvZCcpOwogICAg
IH0KIAorICAgIHZhciBsb2NrZWRQcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IocHJvdG8sICdsb2NrZWQnKTsKKyAgICBhc3NlcnRfZmFsc2UobG9ja2VkUHJvcERlc2Mu
ZW51bWVyYWJsZSwgJ2xvY2tlZCBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUnKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKGxvY2tlZFByb3BEZXNjLndyaXRhYmxlLCB1bmRlZmluZWQsICdsb2NrZWQgc2hv
dWxkIG5vdCBiZSBhIGRhdGEgcHJvcGVydHknKTsKKyAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBs
b2NrZWRQcm9wRGVzYy5nZXQsICdmdW5jdGlvbicsICdsb2NrZWQgc2hvdWxkIGhhdmUgYSBnZXR0
ZXInKTsKKyAgICBhc3NlcnRfZXF1YWxzKGxvY2tlZFByb3BEZXNjLnNldCwgdW5kZWZpbmVkLCAn
bG9ja2VkIHNob3VsZCBub3QgaGF2ZSBhIHNldHRlcicpOworICAgIGFzc2VydF90cnVlKGxvY2tl
ZFByb3BEZXNjLmNvbmZpZ3VyYWJsZSwgJ2xvY2tlZCBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7
CisKICAgICBhc3NlcnRfZXF1YWxzKHJzLmNhbmNlbC5sZW5ndGgsIDEsICdjYW5jZWwgc2hvdWxk
IGhhdmUgMSBwYXJhbWV0ZXInKTsKICAgICBhc3NlcnRfZXF1YWxzKHJzLmNvbnN0cnVjdG9yLmxl
bmd0aCwgMCwgJ2NvbnN0cnVjdG9yIHNob3VsZCBoYXZlIG5vIHBhcmFtZXRlcnMnKTsKICAgICBh
c3NlcnRfZXF1YWxzKHJzLmdldFJlYWRlci5sZW5ndGgsIDAsICdnZXRSZWFkZXIgc2hvdWxkIGhh
dmUgbm8gcGFyYW1ldGVycycpOwpAQCAtNTAsNjAgKzYyLDEzMiBAQCB0ZXN0KGZ1bmN0aW9uKCkg
ewogfSwgJ1JlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5pdGlhbCBnYXJiYWdl
IGFzIHB1bGwgYXJndW1lbnQnKTsKIAogdGVzdChmdW5jdGlvbigpIHsKLSAgICBuZXcgUmVhZGFi
bGVTdHJlYW0oeyBzdHJhdGVneTogMiB9KTsgLy8gQ29uc3RydWN0b3Igc2hvdWxkIG5vdCB0aHJv
dyB3aGVuIHN0cmF0ZWd5IGlzIG5vdCBhbiBvYmplY3QuCi19LCAnUmVhZGFibGVTdHJlYW0gY29u
c3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgc3RyYXRlZ3kgYXJndW1lbnQnKTsK
KyAgICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxzZTsKKyAgICB2YXIgc291cmNlID0geworICAgICAg
ICBzdGFydDogZnVuY3Rpb24oY29udHJvbGxlcikgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyh0aGlzLCBzb3VyY2UsICdzb3VyY2UgaXMgdGhpcyBkdXJpbmcgc3RhcnQnKTsKKworICAgICAg
ICAgICAgdmFyIG1ldGhvZHMgPSBbJ2Nsb3NlJywgJ2VucXVldWUnLCAnZXJyb3InLCAnY29uc3Ry
dWN0b3InXTsKKyAgICAgICAgICAgIHZhciBwcm9wZXJ0aWVzID0gWydkZXNpcmVkU2l6ZSddLmNv
bmNhdChtZXRob2RzKS5zb3J0KCk7CisgICAgICAgICAgICB2YXIgcHJvdG8gPSBPYmplY3QuZ2V0
UHJvdG90eXBlT2YoY29udHJvbGxlcik7CisKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvdG8pLnNvcnQoKSwgcHJvcGVydGllcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBjb250cm9sbGVyIHNob3VsZCBo
YXZlIHRoZSByaWdodCBwcm9wZXJ0aWVzJyk7CisKKyAgICAgICAgICAgIGZvciAodmFyIG0gb2Yg
bWV0aG9kcykgeworICAgICAgICAgICAgICAgIHZhciBwcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIG0pOworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVh
bHModHlwZW9mIGNvbnRyb2xsZXJbbV0sICdmdW5jdGlvbicsIGBzaG91bGQgaGF2ZSBhICR7bX0g
bWV0aG9kYCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKHByb3BEZXNjLmVudW1lcmFi
bGUsIG0gKyAiIHNob3VsZCBiZSBub24tZW51bWVyYWJsZSIpOworICAgICAgICAgICAgICAgIGFz
c2VydF90cnVlKHByb3BEZXNjLmNvbmZpZ3VyYWJsZSwgbSArICIgc2hvdWxkIGJlIGNvbmZpZ3Vy
YWJsZSIpOworICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKHByb3BEZXNjLndyaXRhYmxlLCBt
ICsgIiBzaG91bGQgYmUgd3JpdGFibGUiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIGRlc2lyZWRTaXplUHJvcERlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KHByb3RvLCAnZGVzaXJlZFNpemUnKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZShkZXNpcmVk
U2l6ZVByb3BEZXNjLmVudW1lcmFibGUsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgbm9uLWVudW1l
cmFibGUnKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzaXJlZFNpemVQcm9wRGVzYy53
cml0YWJsZSwgdW5kZWZpbmVkLCAnZGVzaXJlZFNpemUgc2hvdWxkIG5vdCBiZSBhIGRhdGEgcHJv
cGVydHknKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGRlc2lyZWRTaXplUHJv
cERlc2MuZ2V0LCAnZnVuY3Rpb24nLCAnZGVzaXJlZFNpemUgc2hvdWxkIGhhdmUgYSBnZXR0ZXIn
KTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzaXJlZFNpemVQcm9wRGVzYy5zZXQsIHVu
ZGVmaW5lZCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBub3QgaGF2ZSBhIHNldHRlcicpOworICAgICAg
ICAgICAgYXNzZXJ0X3RydWUoZGVzaXJlZFNpemVQcm9wRGVzYy5jb25maWd1cmFibGUsICdkZXNp
cmVkU2l6ZSBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7CisKKyAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoY29udHJvbGxlci5jbG9zZS5sZW5ndGgsIDAsICdjbG9zZSBzaG91bGQgaGF2ZSBubyBw
YXJhbWV0ZXJzJyk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuY29uc3Ry
dWN0b3IubGVuZ3RoLCAxLCAnY29uc3RydWN0b3Igc2hvdWxkIGhhdmUgMSBwYXJhbWV0ZXInKTsK
KyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5lbnF1ZXVlLmxlbmd0aCwgMSwg
J2VucXVldWUgc2hvdWxkIGhhdmUgMSBwYXJhbWV0ZXInKTsKKyAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoY29udHJvbGxlci5lcnJvci5sZW5ndGgsIDEsICdlcnJvciBzaG91bGQgaGF2ZSAxIHBh
cmFtZXRlcicpOworCisgICAgICAgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgICAgIH0K
KyAgICB9OworCisgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHNvdXJjZSk7CisgICAgYXNzZXJ0X3Ry
dWUoc3RhcnRDYWxsZWQpOworfSwgJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBjYWxs
ZWQgd2l0aCB0aGUgcHJvcGVyIHBhcmFtZXRlcnMnKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAg
ICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxzZTsKKyAgICB2YXIgc291cmNlID0geworICAgICAgICBz
dGFydDogZnVuY3Rpb24oY29udHJvbGxlcikgeworICAgICAgICAgICAgdmFyIHByb3BlcnRpZXMg
PSBbJ2Nsb3NlJywgJ2NvbnN0cnVjdG9yJywgJ2Rlc2lyZWRTaXplJywgJ2VucXVldWUnLCAnZXJy
b3InXTsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoT2JqZWN0LmdldE93blByb3Bl
cnR5TmFtZXMoT2JqZWN0LmdldFByb3RvdHlwZU9mKGNvbnRyb2xsZXIpKS5zb3J0KCksIHByb3Bl
cnRpZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm90b3R5cGUgc2hvdWxk
IGhhdmUgdGhlIHJpZ2h0IHByb3BlcnRpZXMnKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIudGVz
dCA9ICcnOworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhPYmplY3QuZ2V0T3duUHJv
cGVydHlOYW1lcyhPYmplY3QuZ2V0UHJvdG90eXBlT2YoY29udHJvbGxlcikpLnNvcnQoKSwgcHJv
cGVydGllcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3RvdHlwZSBzaG91
bGQgc3RpbGwgaGF2ZSB0aGUgcmlnaHQgcHJvcGVydGllcycpOworICAgICAgICAgICAgYXNzZXJ0
X25vdF9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoY29udHJvbGxlcikuaW5kZXhP
ZigndGVzdCcpLCAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcidGVzdCIgc2hv
dWxkIGJlIGEgcHJvcGVydHkgb2YgdGhlIGNvbnRyb2xsZXInKTsKKworICAgICAgICAgICAgc3Rh
cnRDYWxsZWQgPSB0cnVlOworICAgICAgICB9CisgICAgfTsKIAotdmFyIHRlc3QxID0gYXN5bmNf
dGVzdCgnUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJv
bWlzZScpOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbShzb3VyY2UpOworICAgIGFz
c2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKK30sICdSZWFkYWJsZVN0cmVhbSBzdGFydCBjb250cm9s
bGVyIHBhcmFtZXRlciBzaG91bGQgYmUgZXh0ZW5zaWJsZScpOworCit2YXIgdGVzdDEgPSBhc3lu
Y190ZXN0KCdSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBjYWxsIHN0YXJ0IG1ldGhv
ZCB3aXRoaW4gcHJvdG90eXBlIGNoYWluIG9mIGl0cyBzb3VyY2UnKTsKIHRlc3QxLnN0ZXAoZnVu
Y3Rpb24oKQogeworICAgIGZ1bmN0aW9uIFNpbXBsZVN0cmVhbVNvdXJjZSgpIHsKKyAgICB9Owor
ICAgIFNpbXBsZVN0cmVhbVNvdXJjZS5wcm90b3R5cGUgPSB7CisgICAgICAgIHN0YXJ0OiBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIHRlc3QxLmRvbmUoJ3N0YXJ0IHNob3VsZCBiZSBjYWxsZWQn
KTsKKyAgICAgICAgfSwKKyAgICB9CisKKyAgICBuZXcgUmVhZGFibGVTdHJlYW0obmV3IFNpbXBs
ZVN0cmVhbVNvdXJjZSgpKTsKK30pOworCit2YXIgdGVzdDIgPSBhc3luY190ZXN0KCdSZWFkYWJs
ZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNlJyk7Cit0ZXN0
Mi5zdGVwKGZ1bmN0aW9uKCkKK3sKICAgICB2YXIgcmVhZENhbGxlZCA9IGZhbHNlOwogICAgIHZh
ciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CiAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7
Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UodGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9u
KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdDEuc3Rl
cF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHRlc3Qy
LnN0ZXBfZnVuYyhmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAg
ICAgYy5lbnF1ZXVlKCdhJyk7CiAgICAgICAgICAgICAgICAgICAgIGMuY2xvc2UoKTsKICAgICAg
ICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICAgICAgICAgIH0pLCBzdGFuZGFyZFRp
bWVvdXQpOworICAgICAgICAgICAgICAgIH0pLCA1MDApOwogICAgICAgICAgICAgfSkpOwogICAg
ICAgICB9LAogICAgIH0pOwogCiAgICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwogCi0g
ICAgcmVhZGVyLnJlYWQoKS50aGVuKHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7CisgICAg
cmVhZGVyLnJlYWQoKS50aGVuKHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7CiAgICAgICAg
IHJlYWRDYWxsZWQgPSB0cnVlOwogICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZh
bHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICd2YWx1ZSByZWFkIHNob3VsZCBiZSB0aGUgb25lIGVu
cXVldWVkJyk7CiAgICAgfSkpOwogCi0gICAgcmVhZGVyLmNsb3NlZC50aGVuKHRlc3QxLnN0ZXBf
ZnVuYyhmdW5jdGlvbigpIHsKKyAgICByZWFkZXIuY2xvc2VkLnRoZW4odGVzdDIuc3RlcF9mdW5j
KGZ1bmN0aW9uKCkgewogICAgICAgICBhc3NlcnRfdHJ1ZShyZWFkQ2FsbGVkKTsKLSAgICAgICAg
dGVzdDEuZG9uZSgnc3RyZWFtIHNob3VsZCBjbG9zZSBzdWNjZXNzZnVsbHknKTsKKyAgICAgICAg
dGVzdDIuZG9uZSgnc3RyZWFtIHNob3VsZCBjbG9zZSBzdWNjZXNzZnVsbHknKTsKICAgICB9KSk7
CiB9KTsKIAotdmFyIHRlc3QyID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hv
dWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBhbmQgcmVqZWN0IGl0Jyk7Ci10ZXN0Mi5z
dGVwKGZ1bmN0aW9uKCkKK3ZhciB0ZXN0MyA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHN0
YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCcsIHsg
dGltZW91dDogMTAwIH0pOwordGVzdDMuc3RlcChmdW5jdGlvbigpCiB7CiAgICAgdmFyIHRoZUVy
cm9yID0gbmV3IEVycm9yKCdyZWplY3RlZCEnKTsKICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oewogICAgICAgICBzdGFydDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4g
bmV3IFByb21pc2UodGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewot
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihy
ZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3QzLnN0ZXBf
ZnVuYyhmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHRoZUVycm9yKTsK
LSAgICAgICAgICAgICAgICB9KSwgc3RhbmRhcmRUaW1lb3V0KTsKKyAgICAgICAgICAgICAgICB9
KSwgNTAwKTsKICAgICAgICAgICAgIH0pKTsKICAgICAgICAgfSwKICAgICB9KTsKIAotICAgIHJz
LmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaCh0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewor
ICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaCh0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24o
ZSkgewogICAgICAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAncHJvbWlzZSBzaG91bGQg
YmUgcmVqZWN0ZWQgd2l0aCB0aGUgc2FtZSBlcnJvcicpOwotICAgICAgICB0ZXN0Mi5kb25lKCk7
CisgICAgICAgIHRlc3QzLmRvbmUoKTsKICAgICB9KSk7CiB9KTsKIAotdmFyIHRlc3QzID0gYXN5
bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gc2hvdWxkIGJlIGFibGUgdG8gZW5xdWV1ZSBkaWZmZXJl
bnQgb2JqZWN0cy4nKTsKLXRlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7Cit2YXIgdGVzdDQgPSBhc3lu
Y190ZXN0KCdSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBlbnF1ZXVlIGRpZmZlcmVu
dCBvYmplY3RzLicpOwordGVzdDQuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgcmVhZENhbGxz
ID0gMDsKICAgICB2YXIgb2JqZWN0cyA9IFsKICAgICB7IHBvdGF0bzogJ0dpdmUgbWUgbW9yZSEn
fSwKQEAgLTEyMiwzMiArMjA2LDI2IEBAIHRlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7CiAKICAgICB2
YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CiAKLSAgICByZWFkZXIucmVhZCgpLnRoZW4odGVz
dDMuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKKyAgICByZWFkZXIucmVhZCgpLnRoZW4odGVzdDQu
c3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwg
eyB2YWx1ZTogb2JqZWN0c1tyZWFkQ2FsbHMrK10sIGRvbmU6IGZhbHNlIH0sICd2YWx1ZSByZWFk
IHNob3VsZCBiZSB0aGUgb25lIGVucXVldWVkJyk7CiAgICAgfSkpOwogCi0gICAgcmVhZGVyLnJl
YWQoKS50aGVuKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7CisgICAgcmVhZGVyLnJlYWQo
KS50aGVuKHRlc3Q0LnN0ZXBfZnVuYyhmdW5jdGlvbihyKSB7CiAgICAgICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKHIsIHsgdmFsdWU6IG9iamVjdHNbcmVhZENhbGxzKytdLCBkb25lOiBmYWxzZSB9
LCAndmFsdWUgcmVhZCBzaG91bGQgYmUgdGhlIG9uZSBlbnF1ZXVlZCcpOwogICAgIH0pKTsKIAot
ICAgIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgeworICAg
IHJlYWRlci5yZWFkKCkudGhlbih0ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgewogICAgICAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiBvYmplY3RzW3JlYWRDYWxscysrXSwg
ZG9uZTogZmFsc2UgfSwgJ3ZhbHVlIHJlYWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQnKTsK
ICAgICB9KSk7CiAKLSAgICByZWFkZXIuY2xvc2VkLnRoZW4odGVzdDMuc3RlcF9mdW5jKGZ1bmN0
aW9uKCkgeworICAgIHJlYWRlci5jbG9zZWQudGhlbih0ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rpb24o
KSB7CiAgICAgICAgIGFzc2VydF9lcXVhbHMocmVhZENhbGxzLCAzKTsKLSAgICAgICAgdGVzdDMu
ZG9uZSgnc3RyZWFtIHNob3VsZCBjbG9zZSBjb3JyZWN0bHkgY29ycmVjdGx5Jyk7CisgICAgICAg
IHRlc3Q0LmRvbmUoJ3N0cmVhbSBzaG91bGQgY2xvc2UgY29ycmVjdGx5IGNvcnJlY3RseScpOwog
ICAgIH0pKTsKIH0pOwogCi10ZXN0KGZ1bmN0aW9uKCkgewotICAgIHZhciBlcnJvciA9IG5ldyBF
cnJvcignYWFhdWdoISEnKTsKLQotICAgIGFzc2VydF90aHJvd3MoZXJyb3IsIGZ1bmN0aW9uKCkg
eyBuZXcgUmVhZGFibGVTdHJlYW0oeyBzdGFydCgpIHsgdGhyb3cgZXJyb3I7IH0gfSkgfSwgJ2Vy
cm9yIHNob3VsZCBiZSByZS10aHJvd24nKTsKLX0sICdSZWFkYWJsZVN0cmVhbTogaWYgc3RhcnQg
dGhyb3dzIGFuIGVycm9yLCBpdCBzaG91bGQgYmUgcmUtdGhyb3duJyk7Ci0KLXZhciB0ZXN0NCA9
IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBpZiBwdWxsIHJlamVjdHMsIGl0IHNob3VsZCBl
cnJvciB0aGUgc3RyZWFtJywgeyB0aW1lb3V0OiA1MCB9KTsKLXRlc3Q0LnN0ZXAoZnVuY3Rpb24o
KSB7Cit2YXIgdGVzdDUgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogaWYgcHVsbCByZWpl
Y3RzLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbScsIHsgdGltZW91dDogNTAgfSk7Cit0ZXN0
NS5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcigncHVsbCBmYWls
dXJlJyk7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKICAgICAgICAgcHVsbDog
ZnVuY3Rpb24oKSB7CkBAIC0xNjAsMjEzICsyMzgsMTcyIEBAIHRlc3Q0LnN0ZXAoZnVuY3Rpb24o
KSB7CiAgICAgdmFyIGNsb3NlZCA9IGZhbHNlOwogICAgIHZhciByZWFkID0gZmFsc2U7CiAKLSAg
ICByZWFkZXIuY2xvc2VkLmNhdGNoKHRlc3Q0LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CisgICAg
cmVhZGVyLmNsb3NlZC5jYXRjaCh0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewogICAgICAg
ICBjbG9zZWQgPSB0cnVlOwogICAgICAgICBhc3NlcnRfZmFsc2UocmVhZCk7CiAgICAgICAgIGFz
c2VydF9lcXVhbHMoZSwgZXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSB0aHJv
d24gZXJyb3InKTsKICAgICB9KSk7CiAKLSAgICByZWFkZXIucmVhZCgpLmNhdGNoKHRlc3Q0LnN0
ZXBfZnVuYyhmdW5jdGlvbihlKSB7CisgICAgcmVhZGVyLnJlYWQoKS5jYXRjaCh0ZXN0NS5zdGVw
X2Z1bmMoZnVuY3Rpb24oZSkgewogICAgICAgICByZWFkID0gdHJ1ZTsKICAgICAgICAgYXNzZXJ0
X3RydWUoY2xvc2VkKTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhlLCBlcnJvciwgJ3JlYWQoKSBz
aG91bGQgcmVqZWN0IHdpdGggdGhlIHRocm93biBlcnJvcicpOwotICAgICAgICB0ZXN0NC5kb25l
KCk7CisgICAgICAgIHRlc3Q1LmRvbmUoKTsKICAgICB9KSk7CiB9KTsKIAotLy8gdmFyIHRlc3Q1
ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNl
IHVwb24gc3RhcnRpbmcgdGhlIHN0cmVhbScpOwotLy8gdGVzdDUuc3RlcChmdW5jdGlvbigpIHsK
LS8vICAgICB2YXIgcHVsbENvdW50ID0gMDsKLS8vICAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJv
bWlzZS5yZXNvbHZlKCk7Ci0vLyAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLS8v
ICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkgewotLy8gICAgICAgICAgICAgcmV0dXJuIHN0YXJ0
UHJvbWlzZTsKLS8vICAgICAgICAgfSwKLS8vICAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7Ci0v
LyAgICAgICAgICAgICBwdWxsQ291bnQrKzsKLS8vICAgICAgICAgfQotLy8gICAgIH0pOwotCi0v
LyAgICAgc3RhcnRQcm9taXNlLnRoZW4odGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotLy8g
ICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxl
ZCBvbmNlIHN0YXJ0IGZpbmlzaGVzJyk7Ci0vLyAgICAgfSkpOwordmFyIHRlc3Q2ID0gYXN5bmNf
dGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIHVwb24gc3Rh
cnRpbmcgdGhlIHN0cmVhbScpOwordGVzdDYuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgcHVs
bENvdW50ID0gMDsKKyAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Cisg
ICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKKyAgICAgICAgfSwKKyAgICAg
ICAgcHVsbDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWxsQ291bnQrKzsKKyAgICAgICAg
fQorICAgIH0pOwogCi0vLyAgICAgc2V0VGltZW91dCh0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24o
KSB7Ci0vLyAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQg
YmUgY2FsbGVkIGV4YWN0bHkgb25jZScpOwotLy8gICAgICAgICB0ZXN0NS5kb25lKCk7Ci0vLyAg
ICAgfSksIHN0YW5kYXJkVGltZW91dCk7Ci0vLyB9KTsKKyAgICBzdGFydFByb21pc2UudGhlbih0
ZXN0Ni5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENv
dW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMnKTsKKyAg
ICB9KSk7CiAKLS8vIHZhciB0ZXN0NiA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91
bGQgb25seSBjYWxsIHB1bGwgb25jZSBmb3IgYSBmb3JldmVyLWVtcHR5IHN0cmVhbSwgZXZlbiBh
ZnRlciByZWFkaW5nJyk7Ci0vLyB0ZXN0Ni5zdGVwKGZ1bmN0aW9uKCkgewotLy8gICAgIHZhciBw
dWxsQ291bnQgPSAwOwotLy8gICAgIHZhciBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUo
KTsKLS8vICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotLy8gICAgICAgICBzdGFy
dDogZnVuY3Rpb24oKSB7Ci0vLyAgICAgICAgICAgICByZXR1cm4gc3RhcnRQcm9taXNlOwotLy8g
ICAgICAgICB9LAotLy8gICAgICAgICBwdWxsOiBmdW5jdGlvbigpIHsKLS8vICAgICAgICAgICAg
IHB1bGxDb3VudCsrOwotLy8gICAgICAgICB9Ci0vLyAgICAgfSk7Ci0KLS8vICAgICBzdGFydFBy
b21pc2UudGhlbih0ZXN0Ni5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0vLyAgICAgICAgIGFzc2Vy
dF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIG9uY2Ugc3RhcnQg
ZmluaXNoZXMnKTsKLS8vICAgICB9KSk7CisgICAgc2V0VGltZW91dCh0ZXN0Ni5zdGVwX2Z1bmMo
ZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBz
aG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgb25jZScpOworICAgICAgICB0ZXN0Ni5kb25lKCk7Cisg
ICAgfSksIDEwMDApOworfSk7CiAKLS8vICAgICBycy5nZXRSZWFkZXIoKS5yZWFkKCk7Cit2YXIg
dGVzdDcgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCB3aGVu
IHRyeWluZyB0byByZWFkIGZyb20gYSBzdGFydGVkLCBlbXB0eSBzdHJlYW0nKTsKK3Rlc3Q3LnN0
ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIHB1bGxDb3VudCA9IDA7CisgICAgdmFyIHN0YXJ0UHJv
bWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJldHVybiBzdGFy
dFByb21pc2U7CisgICAgICAgIH0sCisgICAgICAgIHB1bGw6IGZ1bmN0aW9uKGMpIHsKKyAgICAg
ICAgICAgIC8vIERvbid0IGVucXVldWUgaW1tZWRpYXRlbHkgYWZ0ZXIgc3RhcnQuIFdlIHdhbnQg
dGhlIHN0cmVhbSB0byBiZSBlbXB0eSB3aGVuIHdlIGNhbGwgLnJlYWQoKSBvbiBpdC4KKyAgICAg
ICAgICAgIGlmIChwdWxsQ291bnQgPiAwKSB7CisgICAgICAgICAgICAgICAgYy5lbnF1ZXVlKHB1
bGxDb3VudCk7CisgICAgICAgICAgICB9CiAKLS8vICAgICBzZXRUaW1lb3V0KHRlc3Q2LnN0ZXBf
ZnVuYyhmdW5jdGlvbigpIHsKLS8vICAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEs
ICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlJyk7Ci0vLyAgICAgICAgIHRlc3Q2
LmRvbmUoKTsKLS8vICAgICB9KSwgc3RhbmRhcmRUaW1lb3V0KTsKLS8vIH0pOworICAgICAgICAg
ICAgKytwdWxsQ291bnQ7CisgICAgICAgIH0KKyAgICB9KTsKIAotLy8gdmFyIHRlc3Q3ID0gYXN5
bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIG9uIGEg
bm9uLWVtcHR5IHN0cmVhbSByZWFkIGZyb20gYmVmb3JlIHN0YXJ0IGZ1bGZpbGxzJyk7Ci0vLyB0
ZXN0Ny5zdGVwKGZ1bmN0aW9uKCkgewotLy8gICAgIHZhciBwdWxsQ291bnQgPSAwOwotLy8gICAg
IHZhciBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKLS8vICAgICB2YXIgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oewotLy8gICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotLy8g
ICAgICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0vLyAgICAgICAgICAgICByZXR1cm4gc3RhcnRQ
cm9taXNlOwotLy8gICAgICAgICB9LAotLy8gICAgICAgICBwdWxsOiBmdW5jdGlvbigpIHsKLS8v
ICAgICAgICAgICAgIHB1bGxDb3VudCsrOwotLy8gICAgICAgICB9Ci0vLyAgICAgfSk7Ci0KLS8v
ICAgICBzdGFydFByb21pc2UudGhlbih0ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0vLyAg
ICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVk
IG9uY2Ugc3RhcnQgZmluaXNoZXMnKTsKLS8vICAgICB9KSk7CisgICAgc3RhcnRQcm9taXNlLnRo
ZW4odGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfZXF1YWxzKHB1
bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBvbmNlIHN0YXJ0IGZpbmlzaGVzJyk7
CiAKLS8vICAgICBycy5nZXRSZWFkZXIoKS5yZWFkKCkudGhlbih0ZXN0Ny5zdGVwX2Z1bmMoZnVu
Y3Rpb24ocikgewotLy8gICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAn
YScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCByZWFkKCkgc2hvdWxkIHJldHVybiBmaXJzdCBjaHVu
aycpOwotLy8gICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxk
IG5vdCBoYXZlIGJlZW4gY2FsbGVkIGFnYWluJyk7Ci0vLyAgICAgfSkpOworICAgICAgICB2YXIg
cmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisgICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRo
ZW4odGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhwdWxsQ291bnQsIDIsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgYWdhaW4gaW4gcmVh
Y3Rpb24gdG8gY2FsbGluZyByZWFkJyk7CisgICAgICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFs
cyhyZXN1bHQsIHsgdmFsdWU6IDEsIGRvbmU6IGZhbHNlIH0sICd0aGUgcmVzdWx0IHJlYWQgc2hv
dWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQnKTsKKyAgICAgICAgICAgIHRlc3Q3LmRvbmUoKTsKKyAg
ICAgICAgfSkpOworICAgIH0pKS5jYXRjaCh0ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBh
c3NlcnRfdW5yZWFjaGVkKGUpOyB9KSk7Cit9KTsKIAotLy8gICAgIGFzc2VydF9lcXVhbHMocHVs
bENvdW50LCAwLCAnY2FsbGluZyByZWFkKCkgc2hvdWxkIG5vdCBjYXVzZSBwdWxsIHRvIGJlIGNh
bGxlZCB5ZXQnKTsKK3ZhciB0ZXN0OCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91
bGQgb25seSBjYWxsIHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGJl
Zm9yZSBzdGFydCBmdWxmaWxscycpOwordGVzdDguc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIg
cHVsbENvdW50ID0gMDsKKyAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7
CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0
aW9uKGMpIHsKKyAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgICAgICAgcmV0dXJu
IHN0YXJ0UHJvbWlzZTsKKyAgICAgICAgfSwKKyAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBwdWxsQ291bnQrKzsKKyAgICAgICAgfQorICAgIH0pOwogCi0vLyAgICAgc2V0
VGltZW91dCh0ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0vLyAgICAgICAgIGFzc2VydF9l
cXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgb25jZScp
OwotLy8gICAgICAgICB0ZXN0Ny5kb25lKCk7Ci0vLyAgICAgfSksIHN0YW5kYXJkVGltZW91dCk7
Ci0vLyB9KTsKKyAgICBzdGFydFByb21pc2UudGhlbih0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24o
KSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUg
Y2FsbGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMnKTsKKyAgICB9KSk7CiAKLS8vIHZhciB0ZXN0OCA9
IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgdHdpY2Ug
b24gYSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBhZnRlciBzdGFydCBmdWxmaWxscycpOwot
Ly8gdGVzdDguc3RlcChmdW5jdGlvbigpIHsKLS8vICAgICB2YXIgcHVsbENvdW50ID0gMDsKLS8v
ICAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0vLyAgICAgdmFyIHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLS8vICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsK
LS8vICAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOwotLy8gICAgICAgICAgICAgcmV0dXJuIHN0
YXJ0UHJvbWlzZTsKLS8vICAgICAgICAgfSwKLS8vICAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7
Ci0vLyAgICAgICAgICAgICBwdWxsQ291bnQrKzsKLS8vICAgICAgICAgfQotLy8gICAgIH0pOwot
Ci0vLyAgICAgc3RhcnRQcm9taXNlLnRoZW4odGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewot
Ly8gICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNh
bGxlZCBvbmNlIHN0YXJ0IGZpbmlzaGVzJyk7Ci0KLS8vICAgICAgICAgcnMuZ2V0UmVhZGVyKCku
cmVhZCgpLnRoZW4odGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKLS8vICAgICAgICAgICAg
IGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2Zp
cnN0IHJlYWQoKSBzaG91bGQgcmV0dXJuIGZpcnN0IGNodW5rJyk7Ci0vLyAgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBhZ2FpbiBv
bmNlIHJlYWQgZnVsZmlsbHMnKTsKLS8vICAgICAgICAgfSkpOwotLy8gICAgIH0pKTsKKyAgICBy
cy5nZXRSZWFkZXIoKS5yZWFkKCkudGhlbih0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24ocikgewor
ICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNl
IH0sICdmaXJzdCByZWFkKCkgc2hvdWxkIHJldHVybiBmaXJzdCBjaHVuaycpOworICAgICAgICBh
c3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2Fs
bGVkIGFnYWluJyk7CisgICAgfSkpOwogCi0vLyAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQs
IDAsICdjYWxsaW5nIHJlYWQoKSBzaG91bGQgbm90IGNhdXNlIHB1bGwgdG8gYmUgY2FsbGVkIHll
dCcpOworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAwLCAnY2FsbGluZyByZWFkKCkgc2hv
dWxkIG5vdCBjYXVzZSBwdWxsIHRvIGJlIGNhbGxlZCB5ZXQnKTsKIAotLy8gICAgIHNldFRpbWVv
dXQodGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotLy8gICAgICAgICBhc3NlcnRfZXF1YWxz
KHB1bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IHR3aWNlJykKLS8v
ICAgICAgICAgdGVzdDguZG9uZSgpOwotLy8gICAgIH0pLCBzdGFuZGFyZFRpbWVvdXQpOwotLy8g
fSk7CisgICAgc2V0VGltZW91dCh0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAg
IGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4YWN0
bHkgb25jZScpOworICAgICAgICB0ZXN0OC5kb25lKCk7CisgICAgfSksIDEwMDApOworfSk7CiAK
LS8vIHZhciB0ZXN0OSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBw
dWxsIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0aGUgbGFzdCBjaHVuaywgaWYgbm90IGRyYWlu
aW5nJyk7Ci0vLyB0ZXN0OS5zdGVwKGZ1bmN0aW9uKCkgewotLy8gICAgIHZhciBwdWxsQ291bnQg
PSAwOwotLy8gICAgIHZhciBjb250cm9sbGVyOwotLy8gICAgIHZhciBzdGFydFByb21pc2UgPSBQ
cm9taXNlLnJlc29sdmUoKTsKLS8vICAgICB2YXIgcHVsbFByb21pc2UgPSBQcm9taXNlLnJlc29s
dmUoKTsKLS8vICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotLy8gICAgICAgICBz
dGFydDogZnVuY3Rpb24oYykgewotLy8gICAgICAgICAgICAgY29udHJvbGxlciA9IGM7Ci0vLyAg
ICAgICAgICAgICByZXR1cm4gc3RhcnRQcm9taXNlOwotLy8gICAgICAgICB9LAotLy8gICAgICAg
ICBwdWxsOiBmdW5jdGlvbigpIHsKLS8vICAgICAgICAgICAgICsrcHVsbENvdW50OwotLy8gICAg
ICAgICAgICAgcmV0dXJuIHB1bGxQcm9taXNlOwotLy8gICAgICAgICB9Ci0vLyAgICAgfSk7Ci0K
LS8vICAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLS8vICAgICBzdGFydFByb21p
c2UudGhlbih0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0vLyAgICAgICAgIGFzc2VydF9l
cXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlIGFm
dGVyIHJlYWQnKTsKLQotLy8gICAgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKLQotLy8g
ICAgICAgICByZXR1cm4gcHVsbFByb21pc2UudGhlbih0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rpb24o
KSB7Ci0vLyAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwgc2hv
dWxkIGhhdmUgYmVlbiBjYWxsZWQgYSBzZWNvbmQgdGltZSBhZnRlciBlbnF1ZXVlJyk7Ci0KLS8v
ICAgICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4odGVzdDkuc3RlcF9mdW5jKGZ1
bmN0aW9uKCkgewotLy8gICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAz
LCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBhIHRoaXJkIHRpbWUgYWZ0ZXIgcmVhZCcp
OwotLy8gICAgICAgICAgICAgfSkpOwotLy8gICAgICAgICB9KSk7Ci0vLyAgICAgfSkpLmNhdGNo
KHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0vLyAgICAgICAgIGFzc2VydF91bnJlYWNo
ZWQoZSk7Ci0vLyAgICAgfSkpOwordmFyIHRlc3Q5ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJl
YW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSByZWFk
IGZyb20gYWZ0ZXIgc3RhcnQgZnVsZmlsbHMnKTsKK3Rlc3Q5LnN0ZXAoZnVuY3Rpb24oKSB7Cisg
ICAgdmFyIHB1bGxDb3VudCA9IDA7CisgICAgdmFyIHN0YXJ0UHJvbWlzZSA9IFByb21pc2UucmVz
b2x2ZSgpOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0
OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAgICAgICAg
IHJldHVybiBzdGFydFByb21pc2U7CisgICAgICAgIH0sCisgICAgICAgIHB1bGw6IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgcHVsbENvdW50Kys7CisgICAgICAgIH0KKyAgICB9KTsKIAotLy8g
ICAgIHNldFRpbWVvdXQodGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotLy8gICAgICAgICBh
c3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMywgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5
IHRocmljZScpCi0vLyAgICAgICAgIHRlc3Q5LmRvbmUoKTsKLS8vICAgICB9KSwgc3RhbmRhcmRU
aW1lb3V0KTsKLS8vIH0pOworICAgIHN0YXJ0UHJvbWlzZS50aGVuKHRlc3Q5LnN0ZXBfZnVuYyhm
dW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAsICdwdWxsIHNo
b3VsZCBub3QgYmUgY2FsbGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMsIHNpbmNlIHRoZSBxdWV1ZSBp
cyBmdWxsJyk7CiAKLS8vIHZhciB0ZXN0MTAgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTog
c2hvdWxkIG5vdCBjYWxsIHB1bGwoKSBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3Qg
Y2h1bmssIGlmIGRyYWluaW5nJyk7Ci0vLyB0ZXN0MTAuc3RlcChmdW5jdGlvbigpIHsKLS8vICAg
ICB2YXIgcHVsbENvdW50ID0gMDsKLS8vICAgICB2YXIgY29udHJvbGxlcjsKLS8vICAgICB2YXIg
c3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0vLyAgICAgdmFyIHB1bGxQcm9taXNl
ID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0vLyAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKLS8vICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLS8vICAgICAgICAgICAgIGNvbnRy
b2xsZXIgPSBjOwotLy8gICAgICAgICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKLS8vICAgICAg
ICAgfSwKLS8vICAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7Ci0vLyAgICAgICAgICAgICArK3B1
bGxDb3VudDsKLS8vICAgICAgICAgICAgIHJldHVybiBwdWxsUHJvbWlzZTsKLS8vICAgICAgICAg
fQotLy8gICAgIH0pOwotCi0vLyAgICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0v
LyAgICAgc3RhcnRQcm9taXNlLnRoZW4odGVzdDEwLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLS8v
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBoYXZlIGJl
ZW4gY2FsbGVkIG9uY2UgYWZ0ZXIgcmVhZCcpOwotCi0vLyAgICAgICAgIGNvbnRyb2xsZXIuZW5x
dWV1ZSgnYScpOwotCi0vLyAgICAgICAgIHJldHVybiBwdWxsUHJvbWlzZS50aGVuKHRlc3QxMC5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0vLyAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxD
b3VudCwgMiwgJ3B1bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgYSBzZWNvbmQgdGltZSBhZnRl
ciBlbnF1ZXVlJyk7Ci0KLS8vICAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKLQotLy8g
ICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MTAuc3RlcF9mdW5jKGZ1
bmN0aW9uKCkgewotLy8gICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAy
LCAncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYSB0aGlyZCB0aW1lIGFmdGVyIHJl
YWQnKTsKLS8vICAgICAgICAgICAgIH0pKTsKLS8vICAgICAgICAgfSkpOwotLy8gICAgIH0pKS5j
YXRjaCh0ZXN0MTAuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLS8vICAgICAgICAgYXNzZXJ0X3Vu
cmVhY2hlZChlKQotLy8gICAgIH0pKTsKKyAgICAgICAgcnMuZ2V0UmVhZGVyKCkucmVhZCgpLnRo
ZW4odGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsKKyAgICAgICAgICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IHJlYWQoKSBz
aG91bGQgcmV0dXJuIGZpcnN0IGNodW5rJyk7CiAKLS8vICAgICBzZXRUaW1lb3V0KHRlc3QxMC5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0vLyAgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50
LCAyLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgdHdpY2UnKQotLy8gICAgICAgICB0
ZXN0MTAuZG9uZSgpOwotLy8gICAgIH0pLCBzdGFuZGFyZFRpbWVvdXQpOwotLy8gfSk7CisgICAg
ICAgICAgICBzZXRUaW1lb3V0KHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxl
ZCBleGFjdGx5IG9uY2UnKTsKKyAgICAgICAgICAgICAgICB0ZXN0OS5kb25lKCk7CisgICAgICAg
ICAgICB9KSwgMTAwMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgfSkpOworCisgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAnY2Fs
bGluZyByZWFkKCkgc2hvdWxkIG5vdCBjYXVzZSBwdWxsIHRvIGJlIGNhbGxlZCBpbW1lZGlhdGVs
eScpOworICAgIH0pKTsKK30pOworCit2YXIgdGVzdDEwID0gYXN5bmNfdGVzdCgnUmVhZGFibGVT
dHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsKCkgaW4gcmVhY3Rpb24gdG8gcmVhZCgpaW5nIHRo
ZSBsYXN0IGNodW5rLCBpZiBkcmFpbmluZycpOwordGVzdDEwLnN0ZXAoZnVuY3Rpb24oKSB7Cisg
ICAgdmFyIHB1bGxDb3VudCA9IDA7CisgICAgdmFyIGNvbnRyb2xsZXI7CisgICAgdmFyIHN0YXJ0
UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworICAgIHZhciBwdWxsUHJvbWlzZSA9IFByb21p
c2UucmVzb2x2ZSgpOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAg
IHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAg
ICAgICAgIHJldHVybiBzdGFydFByb21pc2U7CisgICAgICAgIH0sCisgICAgICAgIHB1bGw6IGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgKytwdWxsQ291bnQ7CisgICAgICAgICAgICByZXR1cm4g
cHVsbFByb21pc2U7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHZhciByZWFkZXIgPSBycy5n
ZXRSZWFkZXIoKTsKKworICAgIHN0YXJ0UHJvbWlzZS50aGVuKHRlc3QxMC5zdGVwX2Z1bmMoZnVu
Y3Rpb24oKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91
bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlIGJ5IHRoZSB0aW1lIHRoZSBzdHJlYW0gc3RhcnRzJyk7
CisKKyAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisgICAgICAgIGFzc2VydF9lcXVh
bHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYWdhaW4g
YWZ0ZXIgZW5xdWV1ZScpOworCisgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKworICAgICAg
ICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHRlc3QxMC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIG5v
dCBoYXZlIGJlZW4gY2FsbGVkIGEgc2Vjb25kIHRpbWUgYWZ0ZXIgcmVhZCcpOworCisgICAgICAg
ICAgICBzZXRUaW1lb3V0KHRlc3QxMC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQg
ZXhhY3RseSBvbmNlJyk7CisgICAgICAgICAgICAgICAgdGVzdDEwLmRvbmUoKTsKKyAgICAgICAg
ICAgIH0pLCAxMDAwKTsKKyAgICAgICAgfSkpOworICAgIH0pKS5jYXRjaCh0ZXN0MTAuc3RlcF9m
dW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSkpOworfSk7CiAKIHZhciB0
ZXN0MTEgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwg
dW50aWwgdGhlIHByZXZpb3VzIHB1bGwgY2FsbFwncyBwcm9taXNlIGZ1bGZpbGxzJyk7CiB0ZXN0
MTEuc3RlcChmdW5jdGlvbigpIHsKQEAgLTM3NSwxMiArNDEyLDExIEBAIHRlc3QxMS5zdGVwKGZ1
bmN0aW9uKCkgewogICAgIHZhciB0aW1lc0NhbGxlZCA9IDA7CiAgICAgdmFyIHN0YXJ0UHJvbWlz
ZSA9IFByb21pc2UucmVzb2x2ZSgpOwogICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
Ci0gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgICBjLmVucXVldWUoJ2En
KTsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgcmV0dXJuIHN0YXJ0
UHJvbWlzZTsKICAgICAgICAgfSwKLSAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICArK3RpbWVzQ2FsbGVkOworICAgICAgICBwdWxsOiBmdW5jdGlvbihjKSB7CisgICAgICAg
ICAgICBjLmVucXVldWUoKyt0aW1lc0NhbGxlZCk7CiAgICAgICAgICAgICByZXR1cm5lZFByb21p
c2UgPSBuZXcgUHJvbWlzZSh0ZXN0MTEuc3RlcF9mdW5jKGZ1bmN0aW9uKHIpIHsgcmVzb2x2ZSA9
IHI7IH0pKTsKICAgICAgICAgICAgIHJldHVybiByZXR1cm5lZFByb21pc2U7CiAgICAgICAgIH0K
QEAgLTM4OCw5ICs0MjQsMTAgQEAgdGVzdDExLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHJl
YWRlciA9IHJzLmdldFJlYWRlcigpOwogCiAgICAgc3RhcnRQcm9taXNlLnRoZW4odGVzdDExLnN0
ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKHRlc3QxMS5z
dGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0MSkgewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0
aW1lc0NhbGxlZCwgMSwgJ3B1bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZSBhZnRlciBz
dGFydCwgYnV0IG5vdCB5ZXQgaGF2ZSBiZWVuIGNhbGxlZCBhIHNlY29uZCB0aW1lJyk7Ci0gICAg
ICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQxLCB7IHZhbHVlOiAnYScsIGRvbmU6
IGZhbHNlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB0aGUgZW5xdWV1ZWQgdmFsdWUn
KTsKKyAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MTEuc3RlcF9mdW5jKGZ1
bmN0aW9uKHJlc3VsdDEpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHModGltZXNDYWxsZWQs
IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdwdWxsIHNob3VsZCBoYXZlIGJlZW4gY2Fs
bGVkIG9uY2UgYWZ0ZXIgc3RhcnQsIGJ1dCBub3QgeWV0IGhhdmUgYmVlbiBjYWxsZWQgYSBzZWNv
bmQgdGltZScpOworICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MSwgeyB2
YWx1ZTogMSwgZG9uZTogZmFsc2UgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHRoZSBl
bnF1ZXVlZCB2YWx1ZScpOwogCiAgICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3QxMS5zdGVwX2Z1
bmMoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxl
ZCwgMSwgJ2FmdGVyIDMwIG1zLCBwdWxsIHNob3VsZCBzdGlsbCBvbmx5IGhhdmUgYmVlbiBjYWxs
ZWQgb25jZScpOwpAQCAtMzk4LDYxICs0MzUsNTggQEAgdGVzdDExLnN0ZXAoZnVuY3Rpb24oKSB7
CiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogCiAgICAgICAgICAgICAgICAgcmV0dXJuZWRQ
cm9taXNlLnRoZW4odGVzdDExLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgMiwgJ2FmdGVyIHRoZSBwcm9taXNlIHJl
dHVybmVkIGJ5IHB1bGwgaXMgZnVsZmlsbGVkLCBwdWxsIHNob3VsZCBiZSBjYWxsZWQgYSBzZWNv
bmQgdGltZScpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVk
LCAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhZnRlciB0aGUgcHJvbWlz
ZSByZXR1cm5lZCBieSBwdWxsIGlzIGZ1bGZpbGxlZCwgcHVsbCBzaG91bGQgYmUgY2FsbGVkIGEg
c2Vjb25kIHRpbWUnKTsKICAgICAgICAgICAgICAgICAgICAgdGVzdDExLmRvbmUoKTsKICAgICAg
ICAgICAgICAgICB9KSk7Ci0gICAgICAgICAgICB9KSwgc3RhbmRhcmRUaW1lb3V0KTsKLSAgICAg
ICAgfSkpCi0gICAgfSkpLmNhdGNoKHRlc3QxMS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAg
ICAgICBhc3NlcnRfdW5yZWFjaGVkKGUpCi0gICAgfSkpOworICAgICAgICAgICAgfSksIDUwMCk7
CisgICAgICAgIH0pKTsKKyAgICB9KSkuY2F0Y2godGVzdDExLnN0ZXBfZnVuYyhmdW5jdGlvbihl
KSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0pKTsKIH0pOwogCi0vLyB2YXIgdGVzdDEyID0gYXN5
bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBwdWxsIGFmdGVyIHN0YXJ0LCBhbmQgYWZ0
ZXIgZXZlcnkgcmVhZCcpOwotLy8gdGVzdDEyLnN0ZXAoZnVuY3Rpb24oKSB7Ci0vLyAgICAgdmFy
IHRpbWVzQ2FsbGVkID0gMDsKLS8vICAgICB2YXIgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNv
bHZlKCk7Ci0vLyAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLS8vICAgICAgICAg
c3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLS8vICAgICAgICAgICAgIGMuZW5xdWV1ZSgnYScpOwotLy8g
ICAgICAgICAgICAgYy5lbnF1ZXVlKCdiJyk7Ci0vLyAgICAgICAgICAgICBjLmVucXVldWUoJ2Mn
KTsKLS8vICAgICAgICAgICAgIHJldHVybiBzdGFydFByb21pc2U7Ci0vLyAgICAgICAgIH0sCi0v
LyAgICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkgewotLy8gICAgICAgICAgICAgKyt0aW1lc0NhbGxl
ZDsKLS8vICAgICAgICAgfSwKLS8vICAgICAgICAgc3RyYXRlZ3k6IHsKLS8vICAgICAgICAgICAg
IHNpemU6IGZ1bmN0aW9uKCkgewotLy8gICAgICAgICAgICAgICAgIHJldHVybiAxOwotLy8gICAg
ICAgICAgICAgfSwKLS8vICAgICAgICAgICAgIHNob3VsZEFwcGx5QmFja3ByZXNzdXJlOiBmdW5j
dGlvbigpIHsKLS8vICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0vLyAgICAgICAgICAg
ICB9Ci0vLyAgICAgICAgIH0KLS8vICAgICB9KTsKLS8vICAgICB2YXIgcmVhZGVyID0gcnMuZ2V0
UmVhZGVyKCk7Ci0KLS8vICAgICBzdGFydFByb21pc2UudGhlbih0ZXN0MTIuc3RlcF9mdW5jKGZ1
bmN0aW9uKCkgewotLy8gICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHRlc3QxMi5z
dGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0MSkgewotLy8gICAgICAgICAgICAgYXNzZXJ0X29iamVj
dF9lcXVhbHMocmVzdWx0MSwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgY2h1
bmsgc2hvdWxkIGJlIGFzIGV4cGVjdGVkJyk7Ci0KLS8vICAgICAgICAgICAgIHJldHVybiByZWFk
ZXIucmVhZCgpLnRoZW4odGVzdDEyLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQyKSB7Ci0vLyAg
ICAgICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MiwgeyB2YWx1ZTogJ2In
LCBkb25lOiBmYWxzZSB9LCAnc2Vjb25kIGNodW5rIHNob3VsZCBiZSBhcyBleHBlY3RlZCcpOwot
Ci0vLyAgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MTIuc3Rl
cF9mdW5jKGZ1bmN0aW9uKHJlc3VsdDMpIHsKLS8vICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0
X29iamVjdF9lcXVhbHMocmVzdWx0MywgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LCAndGhp
cmQgY2h1bmsgc2hvdWxkIGJlIGFzIGV4cGVjdGVkJyk7Ci0KLS8vICAgICAgICAgICAgICAgICAg
ICAgc2V0VGltZW91dCh0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gT25jZSBmb3IgYWZ0ZXIgc3RhcnQsIGFuZCBvbmNlIGZvciBldmVy
eSByZWFkLgotLy8gICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0aW1lc0Nh
bGxlZCwgNCwgJ3B1bGwoKSBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgZm91ciB0aW1lcycpOwot
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgdGVzdDEyLmRvbmUoKTsKLS8vICAgICAgICAgICAg
ICAgICAgICAgfSksIHN0YW5kYXJkVGltZW91dCk7Ci0vLyAgICAgICAgICAgICAgICAgfSkpOwot
Ly8gICAgICAgICAgICAgfSkpOwotLy8gICAgICAgICB9KSk7Ci0vLyAgICAgfSkpLmNhdGNoKHRl
c3QxMi5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9KSk7Ci0v
LyB9KTsKK3ZhciB0ZXN0MTIgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIHB1
bGwgYWZ0ZXIgc3RhcnQsIGFuZCBhZnRlciBldmVyeSByZWFkJyk7Cit0ZXN0MTIuc3RlcChmdW5j
dGlvbigpIHsKKyAgICB2YXIgdGltZXNDYWxsZWQgPSAwOworICAgIHZhciBzdGFydFByb21pc2Ug
PSBQcm9taXNlLnJlc29sdmUoKTsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewor
ICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgeworICAgICAgICAgICAgYy5lbnF1ZXVlKCdhJyk7
CisgICAgICAgICAgICBjLmVucXVldWUoJ2InKTsKKyAgICAgICAgICAgIGMuZW5xdWV1ZSgnYycp
OworICAgICAgICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKKyAgICAgICAgfSwKKyAgICAgICAg
cHVsbCgpIHsKKyAgICAgICAgICAgICsrdGltZXNDYWxsZWQ7CisgICAgICAgIH0KKyAgICB9LAor
ICAgIHsKKyAgICAgICAgc2l6ZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICByZXR1cm4gMTsK
KyAgICAgICAgfSwKKyAgICAgICAgaGlnaFdhdGVyTWFyazogSW5maW5pdHkKKyAgICB9KTsKKyAg
ICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgICBzdGFydFByb21pc2UudGhlbih0
ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQo
KS50aGVuKHRlc3QxMi5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0MSkgeworICAgICAgICAgICAg
YXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MSwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9
LCAnZmlyc3QgY2h1bmsgc2hvdWxkIGJlIGFzIGV4cGVjdGVkJyk7CisKKyAgICAgICAgICAgIHJl
dHVybiByZWFkZXIucmVhZCgpLnRoZW4odGVzdDEyLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQy
KSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MiwgeyB2YWx1
ZTogJ2InLCBkb25lOiBmYWxzZSB9LCAnc2Vjb25kIGNodW5rIHNob3VsZCBiZSBhcyBleHBlY3Rl
ZCcpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MTIu
c3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdDMpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0
X29iamVjdF9lcXVhbHMocmVzdWx0MywgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LCAndGhp
cmQgY2h1bmsgc2hvdWxkIGJlIGFzIGV4cGVjdGVkJyk7CisKKyAgICAgICAgICAgICAgICAgICAg
c2V0VGltZW91dCh0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gT25jZSBmb3IgYWZ0ZXIgc3RhcnQsIGFuZCBvbmNlIGZvciBldmVyeSByZWFk
LgorICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgNCwg
J3B1bGwoKSBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgZm91ciB0aW1lcycpOworICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdDEyLmRvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSksIDEw
MDApOworICAgICAgICAgICAgICAgIH0pKTsKKyAgICAgICAgICAgIH0pKTsKKyAgICAgICAgfSkp
OworICAgIH0pKS5jYXRjaCh0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3Vu
cmVhY2hlZChlKTsgfSkpOworfSk7CiAKIHZhciB0ZXN0MTMgPSBhc3luY190ZXN0KCdSZWFkYWJs
ZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgYWZ0ZXIgc3RhcnQgaWYgdGhlIHN0cmVhbSBp
cyBub3cgY2xvc2VkJyk7CiB0ZXN0MTMuc3RlcChmdW5jdGlvbigpIHsKQEAgLTQ5NCwxOCArNTI4
LDE2IEBAIHRlc3QxNC5zdGVwKGZ1bmN0aW9uKCkgewogICAgICAgICB9LAogICAgICAgICBwdWxs
OiBmdW5jdGlvbihjKSB7CiAgICAgICAgICAgICBjLmVucXVldWUoKyt0aW1lc0NhbGxlZCk7Ci0g
ICAgICAgIH0sCi0gICAgICAgIHN0cmF0ZWd5OiB7Ci0gICAgICAgICAgICBzaXplOiBmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICBzaG91bGRBcHBseUJhY2twcmVzc3VyZTogZnVuY3Rpb24oc2l6ZSkgewotICAgICAgICAg
ICAgICAgIHJldHVybiBzaXplID4gMzsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgIH0s
CisgICAgeworICAgICAgICBzaXplOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJldHVybiAx
OworICAgICAgICB9LAorICAgICAgICBoaWdoV2F0ZXJNYXJrOiA0CiAgICAgfSk7CiAKLSAgICBz
dGFydFByb21pc2UudGhlbih0ZXN0MTQuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgIHNldFRp
bWVvdXQodGVzdDE0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKICAgICAgICAgLy8gYWZ0ZXIgc3Rh
cnQ6IHNpemUgPSAwLCBwdWxsKCkKICAgICAgICAgLy8gYWZ0ZXIgZW5xdWV1ZSgxKTogc2l6ZSA9
IDEsIHB1bGwoKQogICAgICAgICAvLyBhZnRlciBlbnF1ZXVlKDIpOiBzaXplID0gMiwgcHVsbCgp
CkBAIC01MTMsNyArNTQ1LDcgQEAgdGVzdDE0LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgIC8v
IGFmdGVyIGVucXVldWUoNCk6IHNpemUgPSA0LCBkbyBub3QgcHVsbAogICAgICAgICBhc3NlcnRf
ZXF1YWxzKHRpbWVzQ2FsbGVkLCA0LCAncHVsbCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGZv
dXIgdGltZXMnKTsKICAgICAgICAgdGVzdDE0LmRvbmUoKTsKLSAgICB9KSk7CisgICAgfSksIDEw
MDApOwogfSk7CiAKIHZhciB0ZXN0MTUgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBwdWxs
IHNob3VsZCBiZSBhYmxlIHRvIGNsb3NlIGEgc3RyZWFtLicpOwpAQCAtNTM0LDM1ICs1NjYsNDQg
QEAgdGVzdDE1LnN0ZXAoZnVuY3Rpb24oKSB7CiB9KTsKIAogdGVzdChmdW5jdGlvbigpIHsKLSAg
dmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7
Ci0gICAgICAgICAgYXNzZXJ0X2VxdWFscyhjLmVucXVldWUoJ2EnKSwgdHJ1ZSwgJ3RoZSBmaXJz
dCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZScpOwotICAgICAgICAgIGMuY2xvc2UoKTsKLQot
ICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcignJyksIGZ1bmN0aW9uKCkgeyBj
LmVucXVldWUoJ2InKTsgfSwgJ2VucXVldWUgYWZ0ZXIgY2xvc2Ugc2hvdWxkIHRocm93IGEgVHlw
ZUVycm9yJyk7Ci0gICAgICB9Ci0gIH0pOworICAgIHZhciBzdGFydENhbGxlZCA9IGZhbHNlOwor
ICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlv
bihjKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGMuZW5xdWV1ZSgnYScpLCB1bmRlZmlu
ZWQsICd0aGUgZmlyc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCcpOworICAgICAg
ICAgICAgYy5jbG9zZSgpOworCisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJy
b3IoJycpLCBmdW5jdGlvbigpIHsgYy5lbnF1ZXVlKCdiJyk7IH0sICdlbnF1ZXVlIGFmdGVyIGNs
b3NlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOworICAgICAgICAgICAgc3RhcnRDYWxsZWQg
PSB0cnVlOworICAgICAgICB9CisgICAgfSk7CisgICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQp
OwogfSwgJ1JlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJl
YW0gaXMgcmVhZGFibGUgYnV0IGRyYWluaW5nJyk7CiAKIHRlc3QoZnVuY3Rpb24oKSB7CisgICAg
dmFyIHN0YXJ0Q2FsbGVkID0gZmFsc2U7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKICAgICAgICAgICAgIGMuY2xvc2UoKTsK
IAogICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkg
eyBjLmVucXVldWUoJ2EnKTsgfSwgJ2VucXVldWUgYWZ0ZXIgY2xvc2Ugc2hvdWxkIHRocm93IGEg
VHlwZUVycm9yJyk7CisgICAgICAgICAgICBzdGFydENhbGxlZCA9IHRydWU7CiAgICAgICAgIH0K
ICAgICB9KTsKKyAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7CiB9LCAnUmVhZGFibGVTdHJl
YW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyBjbG9zZWQnKTsKIAog
dGVzdChmdW5jdGlvbigpIHsKKyAgICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxzZTsKICAgICB2YXIg
ZXhwZWN0ZWRFcnJvciA9IG5ldyBFcnJvcignaSBhbSBzYWQnKTsKICAgICB2YXIgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oewogICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewogICAgICAgICAg
ICAgYy5lcnJvcihleHBlY3RlZEVycm9yKTsKIAogICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhl
eHBlY3RlZEVycm9yLCBmdW5jdGlvbigpIHsgYy5lbnF1ZXVlKCdhJyk7IH0sICdlbnF1ZXVlIGFm
dGVyIGVycm9yIHNob3VsZCB0aHJvdyB0aGF0IGVycm9yJyk7CisgICAgICAgICAgICBzdGFydENh
bGxlZCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9KTsKKyAgICBhc3NlcnRfdHJ1ZShzdGFydENh
bGxlZCk7CiB9LCAnUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBzdG9y
ZWQgZXJyb3Igd2hlbiB0aGUgc3RyZWFtIGlzIGVycm9yZWQnKTsKIAogdmFyIHRlc3QxNiA9IGFz
eW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBt
ZXRob2RzIGFzIG1ldGhvZHMnKTsKQEAgLTU3MCw3ICs2MTEsNiBAQCB0ZXN0MTYuc3RlcChmdW5j
dGlvbigpIHsKICAgICB2YXIgc3RhcnRDYWxsZWQgPSAwOwogICAgIHZhciBwdWxsQ2FsbGVkID0g
MDsKICAgICB2YXIgY2FuY2VsQ2FsbGVkID0gMDsKLSAgICB2YXIgc3RyYXRlZ3lDYWxsZWQgPSAw
OwogCiAgICAgZnVuY3Rpb24gU291cmNlKCkgewogICAgIH0KQEAgLTU5MSwxMyArNjMxLDYgQEAg
dGVzdDE2LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBjYW5jZWxDYWxsZWQrKzsKICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHModGhpcywgdGhlU291cmNlLCAnY2FuY2VsKCkgc2hvdWxk
IGJlIGNhbGxlZCB3aXRoIHRoZSBjb3JyZWN0IHRoaXMnKTsKICAgICAgICAgfSwKLQotICAgICAg
ICBnZXQgc3RyYXRlZ3koKSB7Ci0gICAgICAgICAgICAvLyBDYWxsZWQgdGhyZWUgdGltZXMKLSAg
ICAgICAgICAgIHN0cmF0ZWd5Q2FsbGVkKys7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHRo
aXMsIHRoZVNvdXJjZSwgJ3N0cmF0ZWd5IGdldHRlciBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhl
IGNvcnJlY3QgdGhpcycpOwotICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKLSAgICAgICAg
fQogICAgIH07CiAKICAgICB2YXIgdGhlU291cmNlID0gbmV3IFNvdXJjZSgpOwpAQCAtNjExLDI0
ICs2NDQsMzEgQEAgdGVzdDE2LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgIGFzc2VydF9lcXVh
bHMoc3RhcnRDYWxsZWQsIDEpOwogICAgICAgICBhc3NlcnRfZXF1YWxzKHB1bGxDYWxsZWQsIDEp
OwogICAgICAgICBhc3NlcnRfZXF1YWxzKGNhbmNlbENhbGxlZCwgMSk7Ci0gICAgICAgIGFzc2Vy
dF9lcXVhbHMoc3RyYXRlZ3lDYWxsZWQsIDMpOwogICAgICAgICB0ZXN0MTYuZG9uZSgpOwogICAg
IH0pKS5jYXRjaCh0ZXN0MTYuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hl
ZChlKTsgfSApKTsKIH0pOwogCiB0ZXN0KGZ1bmN0aW9uKCkgewotICBuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICBhc3NlcnRfZXF1YWxz
KGMuZW5xdWV1ZSgnYScpLCB0cnVlLCAnZmlyc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUn
KTsKLSAgICAgICAgICBhc3NlcnRfZXF1YWxzKGMuZW5xdWV1ZSgnYicpLCBmYWxzZSwgJ3NlY29u
ZCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gZmFsc2UnKTsKLSAgICAgICAgICBhc3NlcnRfZXF1YWxz
KGMuZW5xdWV1ZSgnYycpLCBmYWxzZSwgJ3RoaXJkIGVucXVldWUgc2hvdWxkIHJldHVybiBmYWxz
ZScpOwotICAgICAgICAgIGFzc2VydF9lcXVhbHMoYy5lbnF1ZXVlKCdkJyksIGZhbHNlLCAnZm91
cnRoIGVucXVldWUgc2hvdWxkIHJldHVybiBmYWxzZScpOwotICAgICAgICAgIGFzc2VydF9lcXVh
bHMoYy5lbnF1ZXVlKCdlJyksIGZhbHNlLCAnZmlmdGggZW5xdWV1ZSBzaG91bGQgcmV0dXJuIGZh
bHNlJyk7Ci0gICAgICB9Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtIHN0cmF0ZWdpZXM6IHRo
ZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCByZXR1cm4gZmFsc2UgZm9yIGFsbCBidXQgdGhlIGZp
cnN0IGVucXVldWUgY2FsbCcpOwotCi12YXIgdGVzdDE3ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVT
dHJlYW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGNvbnRpbnVlIHJl
dHVybmluZyB0cnVlIGZyb20gZW5xdWV1ZSBpZiB0aGUgY2h1bmtzIGFyZSByZWFkIGltbWVkaWF0
ZWx5Jyk7CisgICAgdmFyIHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisgICAgbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoYy5kZXNpcmVkU2l6ZSwgMSk7CisgICAgICAgICAgICBjLmVucXVldWUoJ2EnKTsKKyAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgMCk7CisgICAgICAgICAgICBj
LmVucXVldWUoJ2InKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwg
LTEpOworICAgICAgICAgICAgYy5lbnF1ZXVlKCdjJyk7CisgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKGMuZGVzaXJlZFNpemUsIC0yKTsKKyAgICAgICAgICAgIGMuZW5xdWV1ZSgnZCcpOworICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAtMyk7CisgICAgICAgICAgICBj
LmVucXVldWUoJ2UnKTsKKyAgICAgICAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICAgICAg
fQorICAgIH0pOworICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKK30sICdSZWFkYWJsZVN0
cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgZ2l2ZSBkZXNpcmVk
U2l6ZSBvZiAxIHRvIHN0YXJ0LCBkZWNyZWFzaW5nIGJ5IDEgcGVyIGVucXVldWUnKTsKKwordmFy
IHRlc3QxNyA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZh
dWx0IHN0cmF0ZWd5IHNob3VsZCBjb250aW51ZSBnaXZpbmcgZGVzaXJlZFNpemUgb2YgMSBpZiB0
aGUgY2h1bmtzIGFyZSByZWFkIGltbWVkaWF0ZWx5Jyk7CiB0ZXN0MTcuc3RlcChmdW5jdGlvbigp
IHsKICAgICB2YXIgY29udHJvbGxlcjsKICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
ewpAQCAtNjM4LDI0ICs2NzgsMzUgQEAgdGVzdDE3LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgfSk7
CiAgICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwogCi0gICAgYXNzZXJ0X2VxdWFscyhj
b250cm9sbGVyLmVucXVldWUoJ2EnKSwgdHJ1ZSwgJ2ZpcnN0IGVucXVldWUgc2hvdWxkIHJldHVy
biB0cnVlJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAn
ZGVzaXJlZFNpemUgc2hvdWxkIHN0YXJ0IGF0IDEnKTsKKyAgICBjb250cm9sbGVyLmVucXVldWUo
J2EnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICdkZXNp
cmVkU2l6ZSBzaG91bGQgZGVjcmVhc2UgdG8gMCBhZnRlciBmaXJzdCBlbnF1ZXVlJyk7CiAKICAg
ICByZWFkZXIucmVhZCgpLnRoZW4odGVzdDE3LnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQxKSB7
CiAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDEsIHsgdmFsdWU6ICdhJywgZG9u
ZTogZmFsc2UgfSwgJ2ZpcnN0IGNodW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLSAgICAg
ICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmVucXVldWUoJ2InKSwgdHJ1ZSwgJ3NlY29uZCBl
bnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZScpOworCisgICAgICAgIGFzc2VydF9lcXVhbHMoY29u
dHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBnbyB1cCB0byAxIGFm
dGVyIHRoZSBmaXJzdCByZWFkJyk7CisgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOwor
ICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICdkZXNpcmVk
U2l6ZSBzaG91bGQgZ28gZG93biB0byAwIGFmdGVyIHRoZSBzZWNvbmQgZW5xdWV1ZScpOwogCiAg
ICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwogICAgIH0pKS50aGVuKHRlc3QxNy5zdGVwX2Z1
bmMoZnVuY3Rpb24ocmVzdWx0MikgewotICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1
bHQyLCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sICdzZWNvbmQgY2h1bmsgcmVhZCBzaG91
bGQgYmUgY29ycmVjdCcpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZW5xdWV1
ZSgnYycpLCB0cnVlLCAndGhpcmQgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUnKTsKKyAgICAg
ICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDIsIHsgdmFsdWU6ICdiJywgZG9uZTog
ZmFsc2UgfSwgJ3NlY29uZCBjaHVuayByZWFkIHNob3VsZCBiZSBjb3JyZWN0Jyk7CiAKLSAgICAg
ICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRy
b2xsZXIuZGVzaXJlZFNpemUsIDEsICdkZXNpcmVkU2l6ZSBzaG91bGQgZ28gdXAgdG8gMSBhZnRl
ciB0aGUgc2Vjb25kIHJlYWQnKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycp
OworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAn
ZGVzaXJlZFNpemUgc2hvdWxkIGdvIGRvd24gdG8gMCBhZnRlciB0aGUgdGhpcmQgZW5xdWV1ZScp
OworCisgICAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKICAgICB9KSkudGhlbih0ZXN0
MTcuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdDMpIHsKLSAgICAgICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMocmVzdWx0MywgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LCAndGhpcmQgY2h1bmsg
cmVhZCBzaG91bGQgYmUgY29ycmVjdCcpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xs
ZXIuZW5xdWV1ZSgnZCcpLCB0cnVlLCAnZm91cnRoIGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVl
Jyk7CisgICAgICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQzLCB7IHZhbHVlOiAn
YycsIGRvbmU6IGZhbHNlIH0sICd0aGlyZCBjaHVuayByZWFkIHNob3VsZCBiZSBjb3JyZWN0Jyk7
CiAKLSAgICAgICAgdGVzdDE3LmRvbmUoKTsKLSAgICB9KSkuY2F0Y2godGVzdDE3LnN0ZXBfZnVu
YyhmdW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0gKSk7CisgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICdkZXNpcmVkU2l6ZSBzaG91
bGQgZ28gdXAgdG8gMSBhZnRlciB0aGUgdGhpcmQgcmVhZCcpOworICAgICAgICAgICAgY29udHJv
bGxlci5lbnF1ZXVlKCdkJyk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIu
ZGVzaXJlZFNpemUsIDAsICdkZXNpcmVkU2l6ZSBzaG91bGQgZ28gZG93biB0byAwIGFmdGVyIHRo
ZSBmb3VydGggZW5xdWV1ZScpOworCisgICAgICAgICAgICB0ZXN0MTcuZG9uZSgpOworICAgIH0p
KS5jYXRjaCh0ZXN0MTcuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChl
KTsgfSkpOwogfSk7CiAKIHZhciB0ZXN0MTggPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBp
bnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHJhbmRvbSBwdXNoIHNvdXJjZScpOwpAQCAtNjk5
LDcgKzc1MCw3IEBAIHRlc3QxOC5zdGVwKGZ1bmN0aW9uKCkgewogICAgICAgICB9CiAKICAgICAg
ICAgdGVzdDE4LmRvbmUoKTsKLSAgICB9KSwgdGVzdDE4LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7
IGFzc2VydF9yZWFjaGVkKGUpOyB9KSk7CisgICAgfSksIHRlc3QxOC5zdGVwX2Z1bmMoZnVuY3Rp
b24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9KSk7CiB9KTsKIAogdmFyIHRlc3QxOSA9IGFz
eW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgc3lu
YyBwdWxsIHNvdXJjZScpOwpAQCAtNzA3LDIzICs3NTgsMjIgQEAgdGVzdDE5LnN0ZXAoZnVuY3Rp
b24oKSB7CiAgICAgdmFyIHJzID0gc2VxdWVudGlhbFJlYWRhYmxlU3RyZWFtKDEwKTsKIAogICAg
IHJlYWRhYmxlU3RyZWFtVG9BcnJheShycykudGhlbih0ZXN0MTkuc3RlcF9mdW5jKGZ1bmN0aW9u
KGNodW5rcykgewotICAgICAgICBhc3NlcnRfZXF1YWxzKHJzLnNvdXJjZS5jbG9zZWQsIHRydWUs
ICdzb3VyY2Ugc2hvdWxkIGJlIGNsb3NlZCBhZnRlciBhbGwgY2h1bmtzIGFyZSByZWFkJyk7Cisg
ICAgICAgIGFzc2VydF90cnVlKHJzLnNvdXJjZS5jbG9zZWQsICdzb3VyY2Ugc2hvdWxkIGJlIGNs
b3NlZCBhZnRlciBhbGwgY2h1bmtzIGFyZSByZWFkJyk7CiAgICAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMoY2h1bmtzLCBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdLCAndGhlIGV4cGVj
dGVkIDEwIGNodW5rcyBzaG91bGQgYmUgcmVhZCcpOwogCiAgICAgICAgIHRlc3QxOS5kb25lKCk7
CiAgICAgfSkpOwogfSk7Ci0vKgotdmFyIHRlc3QyMCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3Ry
ZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGFuIGFzeW5jIHB1bGwgc291cmNlJywgeyB0
aW1lb3V0OiA1MCB9KTsKLXRlc3QyMC5zdGVwKGZ1bmN0aW9uKCkgewotICAgIHZhciBycyA9IHNl
cXVlbnRpYWxSZWFkYWJsZVN0cmVhbSgxMCwgeyBhc3luYzogdHJ1ZSB9KTsKIAotICAgIHJlYWRh
YmxlU3RyZWFtVG9BcnJheShycykudGhlbih0ZXN0MjAuc3RlcF9mdW5jKGZ1bmN0aW9uKGNodW5r
cykgewotICAgICAgICBhc3NlcnRfZXF1YWxzKHJzLnNvdXJjZS5jbG9zZWQsIHRydWUsICdzb3Vy
Y2Ugc2hvdWxkIGJlIGNsb3NlZCBhZnRlciBhbGwgY2h1bmtzIGFyZSByZWFkJyk7Ci0gICAgICAg
IGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwg
MTBdLCAndGhlIGV4cGVjdGVkIDEwIGNodW5rcyBzaG91bGQgYmUgcmVhZCcpOworLy8gdmFyIHRl
c3QyMCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0
aW5nIGFuIGFzeW5jIHB1bGwgc291cmNlJyk7CisvLyB0ZXN0MjAuc3RlcChmdW5jdGlvbigpIHsK
Ky8vICAgICB2YXIgcnMgPSBzZXF1ZW50aWFsUmVhZGFibGVTdHJlYW0oMTAsIHsgYXN5bmM6IHRy
dWUgfSk7CiAKLSAgICAgICAgdGVzdDIwLmRvbmUoKTsKLSAgICB9KSk7Ci19KTsKLSovCisvLyAg
ICAgcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJzKS50aGVuKHRlc3QyMC5zdGVwX2Z1bmMoZnVuY3Rp
b24oY2h1bmtzKSB7CisvLyAgICAgICAgIGFzc2VydF90cnVlKHJzLnNvdXJjZS5jbG9zZWQsICdz
b3VyY2Ugc2hvdWxkIGJlIGNsb3NlZCBhZnRlciBhbGwgY2h1bmtzIGFyZSByZWFkJyk7CisvLyAg
ICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbMSwgMiwgMywgNCwgNSwgNiwgNywg
OCwgOSwgMTBdLCAndGhlIGV4cGVjdGVkIDEwIGNodW5rcyBzaG91bGQgYmUgcmVhZCcpOworCisv
LyAgICAgICAgIHRlc3QyMC5kb25lKCk7CisvLyAgICAgfSkpOworLy8gfSk7CiA8L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9u
L3Jlc291cmNlcy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmpzIGIvTGF5b3V0VGVzdHMv
c3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVzb3VyY2VzL2J5dGUtbGVuZ3RoLXF1
ZXVpbmctc3RyYXRlZ3kuanMKaW5kZXggZDc3ZTNiYmJlYmE3MzU2NjhjNjc4Y2RlZDkxOTE2M2Mz
YzI0NWNhMi4uYjFjNzQ1M2VjNjFiN2U5ZDQ2Yzk3MjY1ZjQzMTMyMzY1NGQ1OTAzMyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVzb3Vy
Y2VzL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuanMKKysrIGIvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVzb3VyY2VzL2J5dGUtbGVuZ3RoLXF1ZXVp
bmctc3RyYXRlZ3kuanMKQEAgLTEsMzggKzEsMTAgQEAKIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBm
aWxlIHdoZW4gaW1wbGVtZW50ZWQgaW4gV2ViQ29yZS4KIAotZnVuY3Rpb24gdHlwZUlzT2JqZWN0
KHgpIHsKLSAgICByZXR1cm4gKHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiB4ICE9PSBudWxsKSB8
fCB0eXBlb2YgeCA9PT0gJ2Z1bmN0aW9uJzsKLX0KLQotZnVuY3Rpb24gQnl0ZUxlbmd0aFF1ZXVp
bmdTdHJhdGVneShvYmopIHsKLSAgICBpZiAoIXR5cGVJc09iamVjdChvYmopKSB7Ci0gICAgICB0
aHJvdyBuZXcgVHlwZUVycm9yKCdQYXJhbWV0ZXIgbXVzdCBiZSBhbiBvYmplY3QuJyk7Ci0gICAg
fQotCi0gICAgaGlnaFdhdGVyTWFyayA9IE51bWJlcihvYmouaGlnaFdhdGVyTWFyayk7Ci0KLSAg
ICBpZiAoTnVtYmVyLmlzTmFOKGhpZ2hXYXRlck1hcmspKSB7Ci0gICAgICB0aHJvdyBuZXcgVHlw
ZUVycm9yKCdoaWdoV2F0ZXJNYXJrIG11c3QgYmUgYSBudW1iZXIuJyk7Ci0gICAgfQotICAgIGlm
IChoaWdoV2F0ZXJNYXJrIDwgMCkgewotICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2hpZ2hX
YXRlck1hcmsgbXVzdCBiZSBub25uZWdhdGl2ZS4nKTsKLSAgICB9Ci0KLSAgICB0aGlzLl9ibHFz
SGlnaFdhdGVyTWFyayA9IGhpZ2hXYXRlck1hcms7CitmdW5jdGlvbiBCeXRlTGVuZ3RoUXVldWlu
Z1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyayB9KSB7CisgICAgY3JlYXRlRGF0YVByb3BlcnR5KHRo
aXMsICdoaWdoV2F0ZXJNYXJrJywgaGlnaFdhdGVyTWFyayk7CiB9CiAKIEJ5dGVMZW5ndGhRdWV1
aW5nU3RyYXRlZ3kucHJvdG90eXBlID0gewotICAgIHNob3VsZEFwcGx5QmFja3ByZXNzdXJlOiBm
dW5jdGlvbihxdWV1ZVNpemUpIHsKLSAgICAgICAgaWYgKCF0eXBlSXNPYmplY3QodGhpcykpIHsK
LSAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRl
Z3kucHJvdG90eXBlLnNob3VsZEFwcGx5QmFja3ByZXNzdXJlIGNhbiBvbmx5IGJlIGFwcGxpZWQg
dG8gb2JqZWN0cycpOwotICAgICAgICB9Ci0gICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5o
YXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMsICdfYmxxc0hpZ2hXYXRlck1hcmsnKSkgewotICAgICAg
ICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90
b3R5cGUuc2hvdWxkQXBwbHlCYWNrcHJlc3N1cmUgY2FuIG9ubHkgYmUgYXBwbGllZCB0byBhICcg
KwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQnl0ZUxlbmd0aFF1ZXVpbmdTdHJh
dGVneScpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHF1ZXVlU2l6ZSA+IHRoaXMuX2Js
cXNIaWdoV2F0ZXJNYXJrOwotICAgIH0sCiAgICAgc2l6ZTogZnVuY3Rpb24oY2h1bmspIHsKICAg
ICAgICAgcmV0dXJuIGNodW5rLmJ5dGVMZW5ndGg7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVzb3VyY2VzL2NvdW50LXF1
ZXVpbmctc3RyYXRlZ3kuanMgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9yZXNvdXJjZXMvY291bnQtcXVldWluZy1zdHJhdGVneS5qcwppbmRleCA0N2Y0ZGZk
Zjc3NWVjZGY1NDMwMTE4MDIzYTZiNDhiZDc1OTFlMmYyLi41ZmMyMWYyZmZjMmI3ZWYzNDhjODc3
NmU4ZWY0MDM3ZmEzMjhhNzNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVy
ZW5jZS1pbXBsZW1lbnRhdGlvbi9yZXNvdXJjZXMvY291bnQtcXVldWluZy1zdHJhdGVneS5qcwor
KysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZXNvdXJj
ZXMvY291bnQtcXVldWluZy1zdHJhdGVneS5qcwpAQCAtMSwzOCArMSwxMCBAQAogLy8gRklYTUU6
IFJlbW92ZSB0aGlzIGZpbGUgd2hlbiBpbXBsZW1lbnRlZCBpbiBXZWJDb3JlLgogCi1mdW5jdGlv
biB0eXBlSXNPYmplY3QoeCkgewotICByZXR1cm4gKHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiB4
ICE9PSBudWxsKSB8fCB0eXBlb2YgeCA9PT0gJ2Z1bmN0aW9uJzsKLX0KLQotZnVuY3Rpb24gQ291
bnRRdWV1aW5nU3RyYXRlZ3kob2JqKSB7Ci0gICAgaWYgKCF0eXBlSXNPYmplY3Qob2JqKSkgewot
ICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUGFyYW1ldGVyIG11c3QgYmUgYW4gb2JqZWN0Licp
OwotICAgIH0KLQotICAgIGhpZ2hXYXRlck1hcmsgPSBOdW1iZXIob2JqLmhpZ2hXYXRlck1hcmsp
OwotCi0gICAgaWYgKE51bWJlci5pc05hTihoaWdoV2F0ZXJNYXJrKSkgewotICAgICAgdGhyb3cg
bmV3IFR5cGVFcnJvcignaGlnaFdhdGVyTWFyayBtdXN0IGJlIGEgbnVtYmVyLicpOwotICAgIH0K
LSAgICBpZiAoaGlnaFdhdGVyTWFyayA8IDApIHsKLSAgICAgIHRocm93IG5ldyBSYW5nZUVycm9y
KCdoaWdoV2F0ZXJNYXJrIG11c3QgYmUgbm9ubmVnYXRpdmUuJyk7Ci0gICAgfQotCi0gICAgdGhp
cy5fY3FzSGlnaFdhdGVyTWFyayA9IGhpZ2hXYXRlck1hcms7CitmdW5jdGlvbiBDb3VudFF1ZXVp
bmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcmsgfSkgeworICAgIGNyZWF0ZURhdGFQcm9wZXJ0eSh0
aGlzLCAnaGlnaFdhdGVyTWFyaycsIGhpZ2hXYXRlck1hcmspOwogfQogCiBDb3VudFF1ZXVpbmdT
dHJhdGVneS5wcm90b3R5cGUgPSB7Ci0gICAgc2hvdWxkQXBwbHlCYWNrcHJlc3N1cmU6IGZ1bmN0
aW9uKHF1ZXVlU2l6ZSkgewotICAgICAgICBpZiAoIXR5cGVJc09iamVjdCh0aGlzKSkgewotICAg
ICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90
eXBlLnNob3VsZEFwcGx5QmFja3ByZXNzdXJlIGNhbiBvbmx5IGJlIGFwcGxpZWQgdG8gb2JqZWN0
cycpOwotICAgICAgICB9Ci0gICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9w
ZXJ0eS5jYWxsKHRoaXMsICdfY3FzSGlnaFdhdGVyTWFyaycpKSB7Ci0gICAgICAgICAgICB0aHJv
dyBuZXcgVHlwZUVycm9yKCdDb3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2hvdWxkQXBw
bHlCYWNrcHJlc3N1cmUgY2FuIG9ubHkgYmUgYXBwbGllZCB0byBhICcgKwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnQ291bnRRdWV1aW5nU3RyYXRlZ3knKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHJldHVybiBxdWV1ZVNpemUgPiB0aGlzLl9jcXNIaWdoV2F0ZXJNYXJrOwotICAg
IH0sCiAgICAgc2l6ZTogZnVuY3Rpb24oY2h1bmspIHsKICAgICAgICAgcmV0dXJuIDE7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRp
b24vcmVzb3VyY2VzL3N0cmVhbXMtdXRpbHMuanMgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVy
ZW5jZS1pbXBsZW1lbnRhdGlvbi9yZXNvdXJjZXMvc3RyZWFtcy11dGlscy5qcwppbmRleCA4M2E0
MjA5ZGViYzYzNDUyZmNiYmUxNTBjNDMwYjRhZTBhMWQzOTlhLi45NzI5NTdjMTBkY2I5ODg1MzRh
NzBiMTY5OWRiNjk3MzdkY2NmOWQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3Jl
ZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZXNvdXJjZXMvc3RyZWFtcy11dGlscy5qcworKysgYi9M
YXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZXNvdXJjZXMvc3Ry
ZWFtcy11dGlscy5qcwpAQCAtMSw1ICsxLDMgQEAKLXZhciBzdGFuZGFyZFRpbWVvdXQgPSAxMDA7
Ci0KIGZ1bmN0aW9uIFJhbmRvbVB1c2hTb3VyY2UodG9QdXNoKSB7CiAgICAgdGhpcy5wdXNoZWQg
PSAwOwogICAgIHRoaXMudG9QdXNoID0gdG9QdXNoOwpAQCAtMjcsMjQgKzI1LDIzIEBAIFJhbmRv
bVB1c2hTb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5wYXVzZWQgPSBmYWxz
ZTsKICAgICAgICAgfQogCi0gICAgICAgIHZhciBzdHJlYW0gPSB0aGlzOworICAgICAgICB2YXIg
c291cmNlID0gdGhpczsKICAgICAgICAgZnVuY3Rpb24gd3JpdGVDaHVuaygpIHsKLSAgICAgICAg
ICAgIGlmIChzdHJlYW0ucGF1c2VkKSB7CisgICAgICAgICAgICBpZiAoc291cmNlLnBhdXNlZCkg
ewogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
c3RyZWFtLnB1c2hlZCsrOworICAgICAgICAgICAgc291cmNlLnB1c2hlZCsrOwogCi0gICAgICAg
ICAgICBpZiAoc3RyZWFtLnRvUHVzaCA+IDAgJiYgc3RyZWFtLnB1c2hlZCA+IHN0cmVhbS50b1B1
c2gpIHsKLSAgICAgICAgICAgICAgICBpZiAoc3RyZWFtLl9pbnRlcnZhbEhhbmRsZSkgewotICAg
ICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHN0cmVhbS5faW50ZXJ2YWxIYW5kbGUpOwot
ICAgICAgICAgICAgICAgICAgICBzdHJlYW0uX2ludGVydmFsSGFuZGxlID0gdW5kZWZpbmVkOwor
ICAgICAgICAgICAgaWYgKHNvdXJjZS50b1B1c2ggPiAwICYmIHNvdXJjZS5wdXNoZWQgPiBzb3Vy
Y2UudG9QdXNoKSB7CisgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5faW50ZXJ2YWxIYW5kbGUp
IHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChzb3VyY2UuX2ludGVydmFsSGFu
ZGxlKTsKKyAgICAgICAgICAgICAgICAgICAgc291cmNlLl9pbnRlcnZhbEhhbmRsZSA9IHVuZGVm
aW5lZDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3RyZWFtLmNsb3NlZCA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgc3RyZWFtLm9uZW5kKCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBzdHJlYW0ub25kYXRhKHJhbmRvbUNo
dW5rKDEyOCkpOworICAgICAgICAgICAgICAgIHNvdXJjZS5jbG9zZWQgPSB0cnVlOworICAgICAg
ICAgICAgICAgIHNvdXJjZS5vbmVuZCgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBzb3VyY2Uub25kYXRhKHJhbmRvbUNodW5rKDEyOCkpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfSwKQEAgLTE1MCw3ICsxNDcsNiBAQCBmdW5jdGlvbiBzZXF1ZW50aWFs
UmVhZGFibGVTdHJlYW0obGltaXQsIG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgICBzZXF1ZW50
aWFsU291cmNlLm9wZW4oZnVuY3Rpb24oZXJyKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChl
cnIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIHJlc29sdmUoKTsKICAgICAgICAgICAgICAgICB9KTsKQEAgLTE1OCwyMCArMTU0LDIz
IEBAIGZ1bmN0aW9uIHNlcXVlbnRpYWxSZWFkYWJsZVN0cmVhbShsaW1pdCwgb3B0aW9ucykgewog
ICAgICAgICB9LAogCiAgICAgICAgIHB1bGw6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIHNl
cXVlbnRpYWxTb3VyY2UucmVhZChmdW5jdGlvbihlcnIsIGRvbmUsIGNodW5rKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGVycikgewotICAgICAgICAgICAgICAgICAgICBjLmVycm9yKGVycik7Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkb25lKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNl
cXVlbnRpYWxTb3VyY2UuY2xvc2UoZnVuY3Rpb24oZXJyKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoZXJyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5lcnJvcihlcnIp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGMuY2xvc2UoKTsKLSAgICAgICAgICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgYy5lbnF1ZXVlKGNodW5rKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1
cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICAg
ICAgc2VxdWVudGlhbFNvdXJjZS5yZWFkKGZ1bmN0aW9uKGVyciwgZG9uZSwgY2h1bmspIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGVycikgeworICAgICAgICAgICAgICAgICAgICAgICAgcmVq
ZWN0KGVycik7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZG9uZSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgc2VxdWVudGlhbFNvdXJjZS5jbG9zZShmdW5jdGlvbihlcnIpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlamVjdChlcnIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmNsb3NlKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjLmVu
cXVldWUoY2h1bmspOworICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAg
ICAgICAgfSwKICAgICB9KTsKQEAgLTE4MCwzICsxNzksMTUgQEAgZnVuY3Rpb24gc2VxdWVudGlh
bFJlYWRhYmxlU3RyZWFtKGxpbWl0LCBvcHRpb25zKSB7CiAKICAgICByZXR1cm4gc3RyZWFtOwog
fTsKKworZnVuY3Rpb24gdHlwZUlzT2JqZWN0KHgpIHsKKyAgICByZXR1cm4gKHR5cGVvZiB4ID09
PSAnb2JqZWN0JyAmJiB4ICE9PSBudWxsKSB8fCB0eXBlb2YgeCA9PT0gJ2Z1bmN0aW9uJzsKK30K
KworZnVuY3Rpb24gY3JlYXRlRGF0YVByb3BlcnR5KG8sIHAsIHYpIHsKKyAgICBpZiAoIXR5cGVJ
c09iamVjdChvKSkgeworICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQYXJhbWV0ZXIgbXVz
dCBiZSBhbiBvYmplY3QuJyk7CisgICAgICAgIHJldHVybgorICAgIH0KKyAgICBPYmplY3QuZGVm
aW5lUHJvcGVydHkobywgcCwgeyB2YWx1ZTogdiwgd3JpdGFibGU6IHRydWUsIGVudW1lcmFibGU6
IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTsKK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>