<?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>226800</bug_id>
          
          <creation_ts>2021-06-08 17:37:48 -0700</creation_ts>
          <short_desc>[LayoutTests] Delete unused LayoutTests/inspector resources</short_desc>
          <delta_ts>2021-07-27 18:38:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Amir Mark Jr">amir_mark</reporter>
          <assigned_to name="Amir Mark Jr">amir_mark</assigned_to>
          <cc>4536uik</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hi</cc>
    
    <cc>jbedard</cc>
    
    <cc>jenner</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1767993</commentid>
    <comment_count>0</comment_count>
    <who name="Amir Mark Jr">amir_mark</who>
    <bug_when>2021-06-08 17:37:48 -0700</bug_when>
    <thetext>There a number of unused LayoutTest/inspector resources that are not used that should be deleted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767995</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-08 17:39:07 -0700</bug_when>
    <thetext>&lt;rdar://problem/79045870&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767999</commentid>
    <comment_count>2</comment_count>
      <attachid>430925</attachid>
    <who name="Amir Mark Jr">amir_mark</who>
    <bug_when>2021-06-08 17:45:03 -0700</bug_when>
    <thetext>Created attachment 430925
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768010</commentid>
    <comment_count>3</comment_count>
      <attachid>430925</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-06-08 18:08:27 -0700</bug_when>
    <thetext>Comment on attachment 430925
Patch

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

&gt; LayoutTests/ChangeLog:12
&gt; +        * inspector/formatting/resources/css-tests/basic-expected.css: Removed.

These are used by tests inside `inspector/formatting-*.html`.  They&apos;re just not included directly and instead are loaded by Web Inspector (see `loadFormattingTestAndExpectedResults` inside `inspector/formatting/resources/formatting-utilities.js`).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768363</commentid>
    <comment_count>4</comment_count>
    <who name="Robert Jenner">jenner</who>
    <bug_when>2021-06-09 15:17:30 -0700</bug_when>
    <thetext>These were the three tests that started to fail with the proposed patch above:
inspector/formatting/formatting-xml.html
inspector/formatting/formatting-css.html
inspector/formatting/formatting-html.html

They required the following resources that were deleted in that patch:
inspector/formatting/resources/xml-tests/atom-expected.xml
inspector/formatting/resources/xml-tests/basic-expected.xml
inspector/formatting/resources/xml-tests/rss-expected.xml
inspector/formatting/resources/xml-tests/self-closing-expected.xml
inspector/formatting/resources/xml-tests/tag-case-expected.xml
inspector/formatting/resources/xml-tests/valid-html-invalid-xml-expected.xml
inspector/formatting/resources/xml-tests/xslt-expected.xml
inspector/formatting/resources/css-tests/basic-expected.css
inspector/formatting/resources/css-tests/comment-expected.css
inspector/formatting/resources/css-tests/gradient-expected.css
inspector/formatting/resources/css-tests/keyframes-expected.css
inspector/formatting/resources/css-tests/media-query-expected.css
inspector/formatting/resources/css-tests/selectors-expected.css
inspector/formatting/resources/css-tests/url-expected.css
inspector/formatting/resources/css-tests/wrapping-expected.css
inspector/formatting/resources/html-tests/attributes-expected.html
inspector/formatting/resources/html-tests/auto-close-normal-expected.html
inspector/formatting/resources/html-tests/auto-close-special-expected.html
inspector/formatting/resources/html-tests/basic-1-expected.html
inspector/formatting/resources/html-tests/basic-2-expected.html
inspector/formatting/resources/html-tests/comments-expected.html
inspector/formatting/resources/html-tests/eof-1-expected.html
inspector/formatting/resources/html-tests/eof-2-expected.html
inspector/formatting/resources/html-tests/eof-3-expected.html
inspector/formatting/resources/html-tests/eof-4-expected.html
inspector/formatting/resources/html-tests/eof-5-expected.html
inspector/formatting/resources/html-tests/eof-6-expected.html
inspector/formatting/resources/html-tests/eof-7-expected.html
inspector/formatting/resources/html-tests/eof-8-expected.html
inspector/formatting/resources/html-tests/eof-9-expected.html
inspector/formatting/resources/html-tests/inline-script-expected.html
inspector/formatting/resources/html-tests/inline-style-expected.html
inspector/formatting/resources/html-tests/list-expected.html
inspector/formatting/resources/html-tests/not-well-formed-1-expected.html
inspector/formatting/resources/html-tests/not-well-formed-2-expected.html
inspector/formatting/resources/html-tests/not-well-formed-3-expected.html
inspector/formatting/resources/html-tests/p-expected.html
inspector/formatting/resources/html-tests/self-closing-expected.html
inspector/formatting/resources/html-tests/table-expected.html
inspector/formatting/resources/html-tests/tag-case-expected.html

@Amir will need to resubmit the patch excluding those resources, and just deleting the following:

inspector/console/resources/errors.css
inspector/dom/resources/highlight-iframe.html
inspector/formatting/resources/javascript-tests/arrow-functions-expected.js
inspector/formatting/resources/javascript-tests/classes-expected.js
inspector/formatting/resources/javascript-tests/comma-expressions-expected.js
inspector/formatting/resources/javascript-tests/comments-and-preserve-newlines-expected.js
inspector/formatting/resources/javascript-tests/comments-only-expected.js
inspector/formatting/resources/javascript-tests/do-while-statement-expected.js
inspector/formatting/resources/javascript-tests/for-statements-expected.js
inspector/formatting/resources/javascript-tests/functions-expected.js
inspector/formatting/resources/javascript-tests/generators-expected.js
inspector/formatting/resources/javascript-tests/if-statement-expected.js
inspector/formatting/resources/javascript-tests/import-expected.js
inspector/formatting/resources/javascript-tests/label-break-continue-block-expected.js
inspector/formatting/resources/javascript-tests/logic-expressions-expected.js
inspector/formatting/resources/javascript-tests/modules-expected.js
inspector/formatting/resources/javascript-tests/new-expression-expected.js
inspector/formatting/resources/javascript-tests/numbers-expected.js
inspector/formatting/resources/javascript-tests/object-array-literal-expected.js
inspector/formatting/resources/javascript-tests/other-statements-expected.js
inspector/formatting/resources/javascript-tests/return-statement-expected.js
inspector/formatting/resources/javascript-tests/sample-jquery-expected.js
inspector/formatting/resources/javascript-tests/sample-normal-utilities-expected.js
inspector/formatting/resources/javascript-tests/sample-webinspector-object-expected.js
inspector/formatting/resources/javascript-tests/switch-case-default-expected.js
inspector/formatting/resources/javascript-tests/template-strings-expected.js
inspector/formatting/resources/javascript-tests/ternary-expressions-expected.js
inspector/formatting/resources/javascript-tests/try-catch-finally-statements-expected.js
inspector/formatting/resources/javascript-tests/unary-binary-expressions-expected.js
inspector/formatting/resources/javascript-tests/variable-declaration-expected.js
inspector/formatting/resources/javascript-tests/while-statement-expected.js
inspector/formatting/resources/javascript-tests/with-statement-expected.js
inspector/network/resources/data-intercepted.json


After running the re-submitted patch, we should have a more clearer picture on what resources are un-used, and can be deleted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768364</commentid>
    <comment_count>5</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-06-09 15:19:59 -0700</bug_when>
    <thetext>I&apos;m not sure why EWS didn&apos;t pick this up, but the files inside `inspector/formatting/resources/javascript-tests` are used by `inspector/formatting/formatting-javascript.html`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768367</commentid>
    <comment_count>6</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2021-06-09 15:27:06 -0700</bug_when>
    <thetext>(In reply to Devin Rousso from comment #5)
&gt; I&apos;m not sure why EWS didn&apos;t pick this up, but the files inside
&gt; `inspector/formatting/resources/javascript-tests` are used by
&gt; `inspector/formatting/formatting-javascript.html`
That test is marked as flaky (webkit.org/b/156634), so EWS skips it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768408</commentid>
    <comment_count>7</comment_count>
      <attachid>431033</attachid>
    <who name="Amir Mark Jr">amir_mark</who>
    <bug_when>2021-06-09 17:41:23 -0700</bug_when>
    <thetext>Created attachment 431033
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768710</commentid>
    <comment_count>8</comment_count>
    <who name="Amir Mark Jr">amir_mark</who>
    <bug_when>2021-06-10 13:50:04 -0700</bug_when>
    <thetext>The failing test imported/w3c/web-platform-tests/navigation-timing/nav2_test_attributes_values.html appears to be a flaky failure and not caused by this patch in particular. 

A bug was already filed for it. https://bugs.webkit.org/show_bug.cgi?id=226881</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768743</commentid>
    <comment_count>9</comment_count>
      <attachid>431132</attachid>
    <who name="Amir Mark Jr">amir_mark</who>
    <bug_when>2021-06-10 14:35:09 -0700</bug_when>
    <thetext>Created attachment 431132
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768744</commentid>
    <comment_count>10</comment_count>
    <who name="Amir Mark Jr">amir_mark</who>
    <bug_when>2021-06-10 14:36:09 -0700</bug_when>
    <thetext>Resubmitting patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768745</commentid>
    <comment_count>11</comment_count>
      <attachid>431132</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-06-10 14:41:54 -0700</bug_when>
    <thetext>Comment on attachment 431132
Patch

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

&gt; LayoutTests/ChangeLog:10
&gt; +        * inspector/formatting/resources/javascript-tests/arrow-functions-expected.js: Removed.

Once again, the files in `inspector/formatting/resources/javascript-tests` are used by `inspector/formatting/formatting-javascript.html`.  Please do not delete them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768985</commentid>
    <comment_count>12</comment_count>
    <who name="Amir Mark Jr">amir_mark</who>
    <bug_when>2021-06-11 10:46:53 -0700</bug_when>
    <thetext>(In reply to Devin Rousso from comment #11)
&gt; Comment on attachment 431132 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=431132&amp;action=review
&gt; 
&gt; &gt; LayoutTests/ChangeLog:10
&gt; &gt; +        * inspector/formatting/resources/javascript-tests/arrow-functions-expected.js: Removed.
&gt; 
&gt; Once again, the files in `inspector/formatting/resources/javascript-tests`
&gt; are used by `inspector/formatting/formatting-javascript.html`.  Please do
&gt; not delete them.

Okay will only remove these:

inspector/console/resources/errors.css
inspector/dom/resources/highlight-iframe.html
inspector/network/resources/data-intercepted.json</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769067</commentid>
    <comment_count>13</comment_count>
      <attachid>431230</attachid>
    <who name="Amir Mark Jr">amir_mark</who>
    <bug_when>2021-06-11 14:07:01 -0700</bug_when>
    <thetext>Created attachment 431230
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769068</commentid>
    <comment_count>14</comment_count>
    <who name="Amir Mark Jr">amir_mark</who>
    <bug_when>2021-06-11 14:13:18 -0700</bug_when>
    <thetext>Resubmitted patch with only three test removed:

inspector/console/resources/errors.css
inspector/dom/resources/highlight-iframe.html
inspector/network/resources/data-intercepted.json</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779910</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-27 17:13:16 -0700</bug_when>
    <thetext>ChangeLog entry in LayoutTests/ChangeLog contains OOPS!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779917</commentid>
    <comment_count>16</comment_count>
      <attachid>434389</attachid>
    <who name="Robert Jenner">jenner</who>
    <bug_when>2021-07-27 17:37:15 -0700</bug_when>
    <thetext>Created attachment 434389
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779927</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-27 18:38:13 -0700</bug_when>
    <thetext>Committed r280368 (240015@main): &lt;https://commits.webkit.org/240015@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 434389.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430925</attachid>
            <date>2021-06-08 17:45:03 -0700</date>
            <delta_ts>2021-06-09 17:41:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226800-20210608194501.patch</filename>
            <type>text/plain</type>
            <size>392529</size>
            <attacher name="Amir Mark Jr">amir_mark</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NjM0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjBhMjAyOWFkMmUyOTliZmVhZmEx
OWQwNWU2ZGRiODQzMTkyZDJhNC4uZWZiMjAyYzBiOWM1MGJkMzIxM2Y2MTFmNzU3YmQyZWY4Mzcw
ODZiNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDIxLTA2LTA4ICBBbWlyIE1hcmsgSnIgIDxh
bWlyX21hcmtAYXBwbGUuY29tPgorCisgICAgICAgIFtMYXlvdXRUZXN0c10gRGVsZXRlIHVudXNl
ZCBMYXlvdXRUZXN0cy9pbnNwZWN0b3IgcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY4MDAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdW51c2VkIHBocCByZXNvdXJjZXMgZm9y
IHRlc3QgdGhhdCBoYXZlIGJlZW4gY29udmVydGVkIHRvIHB5dGhvbi4KKworICAgICAgICAqIGlu
c3BlY3Rvci9jb25zb2xlL3Jlc291cmNlcy9lcnJvcnMuY3NzOiBSZW1vdmVkLgorICAgICAgICAq
IGluc3BlY3Rvci9kb20vcmVzb3VyY2VzL2hpZ2hsaWdodC1pZnJhbWUuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvY3NzLXRlc3RzL2Jhc2lj
LWV4cGVjdGVkLmNzczogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9y
ZXNvdXJjZXMvY3NzLXRlc3RzL2NvbW1lbnQtZXhwZWN0ZWQuY3NzOiBSZW1vdmVkLgorICAgICAg
ICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9jc3MtdGVzdHMvZ3JhZGllbnQtZXhw
ZWN0ZWQuY3NzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291
cmNlcy9jc3MtdGVzdHMva2V5ZnJhbWVzLWV4cGVjdGVkLmNzczogUmVtb3ZlZC4KKyAgICAgICAg
KiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvY3NzLXRlc3RzL21lZGlhLXF1ZXJ5LWV4
cGVjdGVkLmNzczogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNv
dXJjZXMvY3NzLXRlc3RzL3NlbGVjdG9ycy1leHBlY3RlZC5jc3M6IFJlbW92ZWQuCisgICAgICAg
ICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2Nzcy10ZXN0cy91cmwtZXhwZWN0ZWQu
Y3NzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9j
c3MtdGVzdHMvd3JhcHBpbmctZXhwZWN0ZWQuY3NzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3Bl
Y3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9odG1sLXRlc3RzL2F0dHJpYnV0ZXMtZXhwZWN0ZWQu
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMv
aHRtbC10ZXN0cy9hdXRvLWNsb3NlLW5vcm1hbC1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9odG1sLXRlc3RzL2F1dG8tY2xv
c2Utc3BlY2lhbC1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9m
b3JtYXR0aW5nL3Jlc291cmNlcy9odG1sLXRlc3RzL2Jhc2ljLTEtZXhwZWN0ZWQuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvaHRtbC10ZXN0
cy9iYXNpYy0yLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zv
cm1hdHRpbmcvcmVzb3VyY2VzL2h0bWwtdGVzdHMvY29tbWVudHMtZXhwZWN0ZWQuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvaHRtbC10ZXN0
cy9lb2YtMS1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mb3Jt
YXR0aW5nL3Jlc291cmNlcy9odG1sLXRlc3RzL2VvZi0yLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2h0bWwtdGVzdHMvZW9m
LTMtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGlu
Zy9yZXNvdXJjZXMvaHRtbC10ZXN0cy9lb2YtNC1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9odG1sLXRlc3RzL2VvZi01LWV4
cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVz
b3VyY2VzL2h0bWwtdGVzdHMvZW9mLTYtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvaHRtbC10ZXN0cy9lb2YtNy1leHBlY3Rl
ZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNl
cy9odG1sLXRlc3RzL2VvZi04LWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaW5z
cGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2h0bWwtdGVzdHMvZW9mLTktZXhwZWN0ZWQuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvaHRt
bC10ZXN0cy9pbmxpbmUtc2NyaXB0LWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
aW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2h0bWwtdGVzdHMvaW5saW5lLXN0eWxlLWV4
cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVz
b3VyY2VzL2h0bWwtdGVzdHMvbGlzdC1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9odG1sLXRlc3RzL25vdC13ZWxsLWZvcm1l
ZC0xLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRp
bmcvcmVzb3VyY2VzL2h0bWwtdGVzdHMvbm90LXdlbGwtZm9ybWVkLTItZXhwZWN0ZWQuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvaHRtbC10
ZXN0cy9ub3Qtd2VsbC1mb3JtZWQtMy1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9odG1sLXRlc3RzL3AtZXhwZWN0ZWQuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvaHRt
bC10ZXN0cy9zZWxmLWNsb3NpbmctZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvaHRtbC10ZXN0cy90YWJsZS1leHBlY3RlZC5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9o
dG1sLXRlc3RzL3RhZy1jYXNlLWV4cGVjdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaW5z
cGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvYXJyb3ctZnVuY3Rp
b25zLWV4cGVjdGVkLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5n
L3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2NsYXNzZXMtZXhwZWN0ZWQuanM6IFJlbW92ZWQu
CisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVz
dHMvY29tbWEtZXhwcmVzc2lvbnMtZXhwZWN0ZWQuanM6IFJlbW92ZWQuCisgICAgICAgICogaW5z
cGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvY29tbWVudHMtYW5k
LXByZXNlcnZlLW5ld2xpbmVzLWV4cGVjdGVkLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3Bl
Y3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2NvbW1lbnRzLW9ubHkt
ZXhwZWN0ZWQuanM6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVz
b3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvZG8td2hpbGUtc3RhdGVtZW50LWV4cGVjdGVkLmpzOiBS
ZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2Ny
aXB0LXRlc3RzL2Zvci1zdGF0ZW1lbnRzLWV4cGVjdGVkLmpzOiBSZW1vdmVkLgorICAgICAgICAq
IGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2Z1bmN0aW9u
cy1leHBlY3RlZC5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9y
ZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9nZW5lcmF0b3JzLWV4cGVjdGVkLmpzOiBSZW1vdmVk
LgorICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRl
c3RzL2lmLXN0YXRlbWVudC1leHBlY3RlZC5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9pbXBvcnQtZXhwZWN0ZWQu
anM6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2ph
dmFzY3JpcHQtdGVzdHMvbGFiZWwtYnJlYWstY29udGludWUtYmxvY2stZXhwZWN0ZWQuanM6IFJl
bW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3Jp
cHQtdGVzdHMvbG9naWMtZXhwcmVzc2lvbnMtZXhwZWN0ZWQuanM6IFJlbW92ZWQuCisgICAgICAg
ICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvbW9kdWxl
cy1leHBlY3RlZC5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9y
ZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9uZXctZXhwcmVzc2lvbi1leHBlY3RlZC5qczogUmVt
b3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlw
dC10ZXN0cy9udW1iZXJzLWV4cGVjdGVkLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rv
ci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL29iamVjdC1hcnJheS1saXRl
cmFsLWV4cGVjdGVkLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5n
L3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL290aGVyLXN0YXRlbWVudHMtZXhwZWN0ZWQuanM6
IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFz
Y3JpcHQtdGVzdHMvcmV0dXJuLXN0YXRlbWVudC1leHBlY3RlZC5qczogUmVtb3ZlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9zYW1w
bGUtanF1ZXJ5LWV4cGVjdGVkLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mb3Jt
YXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3NhbXBsZS1ub3JtYWwtdXRpbGl0aWVz
LWV4cGVjdGVkLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jl
c291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3NhbXBsZS13ZWJpbnNwZWN0b3Itb2JqZWN0LWV4cGVj
dGVkLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNl
cy9qYXZhc2NyaXB0LXRlc3RzL3N3aXRjaC1jYXNlLWRlZmF1bHQtZXhwZWN0ZWQuanM6IFJlbW92
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQt
dGVzdHMvdGVtcGxhdGUtc3RyaW5ncy1leHBlY3RlZC5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy90ZXJuYXJ5LWV4
cHJlc3Npb25zLWV4cGVjdGVkLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mb3Jt
YXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3RyeS1jYXRjaC1maW5hbGx5LXN0YXRl
bWVudHMtZXhwZWN0ZWQuanM6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRp
bmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvdW5hcnktYmluYXJ5LWV4cHJlc3Npb25zLWV4
cGVjdGVkLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291
cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3ZhcmlhYmxlLWRlY2xhcmF0aW9uLWV4cGVjdGVkLmpzOiBS
ZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2Ny
aXB0LXRlc3RzL3doaWxlLXN0YXRlbWVudC1leHBlY3RlZC5qczogUmVtb3ZlZC4KKyAgICAgICAg
KiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy93aXRoLXN0
YXRlbWVudC1leHBlY3RlZC5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0
dGluZy9yZXNvdXJjZXMveG1sLXRlc3RzL2F0b20tZXhwZWN0ZWQueG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy94bWwtdGVzdHMvYmFzaWMtZXhw
ZWN0ZWQueG1sOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291
cmNlcy94bWwtdGVzdHMvcnNzLWV4cGVjdGVkLnhtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMveG1sLXRlc3RzL3NlbGYtY2xvc2luZy1leHBlY3Rl
ZC54bWw6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2Vz
L3htbC10ZXN0cy90YWctY2FzZS1leHBlY3RlZC54bWw6IFJlbW92ZWQuCisgICAgICAgICogaW5z
cGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL3htbC10ZXN0cy92YWxpZC1odG1sLWludmFsaWQt
eG1sLWV4cGVjdGVkLnhtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGlu
Zy9yZXNvdXJjZXMveG1sLXRlc3RzL3hzbHQtZXhwZWN0ZWQueG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIGluc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9kYXRhLWludGVyY2VwdGVkLmpzb246IFJl
bW92ZWQuCisKIDIwMjEtMDYtMDggIERpZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR0xJQl1bV1BFXSBVbnJldmlld2VkIHRlc3QgZ2FyZGVuaW5nLiBNb3Zl
IFdQRSBiYXNlbGluZSBmb3IgV1BUIHRlc3QgJ3JlcG9ydC1zYW1lLW9yaWdpbi13aXRoLWNvb2tp
ZXMuaHRtbCcgdG8gR0xJQi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25z
b2xlL3Jlc291cmNlcy9lcnJvcnMuY3NzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUv
cmVzb3VyY2VzL2Vycm9ycy5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4NWI0
MjFhNmYwYzNmZTU0ZGIwMDA3MzEwZDdhODRhZjViYmZjNGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUv
cmVzb3VyY2VzL2Vycm9ycy5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLWRpdiB7
ICogY29sb3I6IHJlZDsgfSBkaXYgeyAqIGNvbG9yOiByZWQ7IH0KLQotZGl2IHsKLSAgICAqCi0g
ICAgY29sb3I6Ci0gICAgcmVkOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RvbS9yZXNvdXJjZXMvaGlnaGxpZ2h0LWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RvbS9yZXNvdXJjZXMvaGlnaGxpZ2h0LWlmcmFtZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwYjM0YTU0MWNkOThjNmIwMTU1Y2Y2NDFhYTQxNGY4NjI0YWZjZTUxLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kb20vcmVzb3VyY2VzL2hpZ2hsaWdodC1pZnJhbWUuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDggKzAsMCBAQAotPGh0bWw+Ci0gICAgPGhlYWQ+Ci0gICAgPC9oZWFkPgotICAg
IDxib2R5PgotICAgICAgICA8ZGl2IGlkPSJpZC1vbmUiIHN0eWxlPSJ3aWR0aDoxNTBweDsgaGVp
Z2h0OiAyNTBweCI+PC9kaXY+Ci0gICAgICAgIDxkaXY+PC9kaXY+Ci0gICAgPC9ib2R5PgotPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9jc3MtdGVzdHMvYmFzaWMtZXhwZWN0ZWQu
Y3NzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2Nzcy10ZXN0
cy9iYXNpYy1leHBlY3RlZC5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1NDMw
ZWU1N2MxNmM4MjY4Y2ZmMjdkOTg5ZDE5MmU0OWNjOTFmODAuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRp
bmcvcmVzb3VyY2VzL2Nzcy10ZXN0cy9iYXNpYy1leHBlY3RlZC5jc3MKKysrIC9kZXYvbnVsbApA
QCAtMSw4OSArMCwwIEBACi0vKiBSRVNFVCAqLwotaHRtbCwgYm9keSwgZGl2LCB1bCwgb2wsIGxp
LCBkbCwgZHQsIGRkLCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwcmUsIGZvcm0sIHAsIGJsb2Nr
cXVvdGUsIGZpZWxkc2V0LCBpbnB1dCwgYWJiciwgYXJ0aWNsZSwgYXNpZGUsIGNvbW1hbmQsIGRl
dGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFyaywg
bWV0ZXIsIG5hdiwgb3V0cHV0LCBwcm9ncmVzcywgc2VjdGlvbiwgc3VtbWFyeSwgdGltZSB7Ci0g
ICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7Ci19Ci0KLWgxLCBoMiwgaDMsIGg0LCBoNSwg
aDYsIHByZSwgY29kZSwgYWRkcmVzcywgY2FwdGlvbiwgY2l0ZSwgY29kZSwgZW0sIHN0cm9uZywg
dGgsIGZpZ2NhcHRpb24gewotICAgIGZvbnQtc2l6ZTogMWVtOwotICAgIGZvbnQtd2VpZ2h0OiBu
b3JtYWw7Ci0gICAgZm9udC1zdHlsZTogbm9ybWFsOwotfQotCi1maWVsZHNldCwgaWZyYW1lIHsK
LSAgICBib3JkZXI6IG5vbmUKLX0KLQotdGFibGUgewotICAgIGJvcmRlci1jb2xsYXBzZTogY29s
bGFwc2U7Ci0gICAgYm9yZGVyLXNwYWNpbmc6IDAKLX0KLQotYXJ0aWNsZSwgYXNpZGUsIGZvb3Rl
ciwgaGVhZGVyLCBoZ3JvdXAsIG5hdiwgc2VjdGlvbiwgZmlndXJlLCBmaWdjYXB0aW9uIHsKLSAg
ICBkaXNwbGF5OiBibG9jazsKLX0KLQotY2FwdGlvbiwgdGggewotICAgIHRleHQtYWxpZ246IGxl
ZnQ7Ci19Ci0KLS8qIElNUE9SVEFOVCAqLwotYm9keSB7Ci0gICAgY29sb3I6IHJlZCAhaW1wb3J0
YW50OwotfQotCi1ib2R5IHsKLSAgICBjb2xvcjogcmVkICFpbXBvcnRhbnQ7Ci19Ci0KLWJvZHkg
ewotICAgIGNvbG9yOiByZWQgIWltcG9ydGFudDsKLX0KLQotLyogSU5MSU5FIENPTU1FTlQgKi8K
LWJvZHkgewotICAgIGNvbG9yOiByZWQ7Ci0gICAgLyogYmx1ZSAqLwotfQotCi0vKiBVUkxTICov
Ci0ubXlpbWFnZSB7Ci0gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGh0dHA6Ly9leGFtcGxlLmNv
bS9pbWFnZS5wbmcpLCB1cmwodHdvLnBuZykKLX0KLQotLm15aW1hZ2UgewotICAgIGJhY2tncm91
bmQtaW1hZ2U6IHVybCgiaHR0cDovL2V4YW1wbGUuY29tL2ltYWdlLnBuZyIpLCB1cmwoInR3by5w
bmciKQotfQotCi0vKiBQUkVGSVhFRCBTRUxFQ1RPUlMgQU5EIFBST1BFUlRJRVMgKi8KLS5mb28g
Om1hdGNoZXMoYSwgYiwgYykgewotICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsOwotICAgIGNv
bG9yOiByZWQKLX0KLQotLyogUFNFVURPIFNFTEVDVE9SUyAqLwotYTpsaW5rLCBhOnZpc2l0ZWQg
ewotICAgIGNvbG9yOiBibGFjawotfQotCi0vKiBQU0VVRE8gRUxFTUVOVFMgKi8KLXA6OmJlZm9y
ZSwgcDo6YWZ0ZXIgewotICAgIGNvbnRlbnQ6ICJ0ZXN0IjsKLX0KLQotLyogUkdCLCBIU0wgKi8K
LWJvZHkgewotICAgIGNvbG9yOiByZ2IoMSwgMSwgMSk7Ci0gICAgY29sb3I6IHJnYmEoMTAwLCAw
LCAyNTUsIDAuNSk7Ci0gICAgY29sb3I6IGhzbCgxMjAsIDEwMCUsIDUwJSk7Ci0gICAgY29sb3I6
IGhzbGEoMTIwLCA2MCUsIDcwJSwgMC4zKTsKLX0KLQotLyoKLSAqIFRoaXMgaXMgYSBtdWx0aS1s
aW5lIGNvbW1lbnQuCi0gKiAtIHdpdGggaW5kZW50YXRpb24KLSAqIC0gYW5kIGlzIGdlbmVyYWxs
eSBhd2Vzb21lLgotICovCi1ib2R5IHsKLSAgICBjb2xvcjogcmVkCi19CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvY3NzLXRlc3RzL2NvbW1l
bnQtZXhwZWN0ZWQuY3NzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3Vy
Y2VzL2Nzcy10ZXN0cy9jb21tZW50LWV4cGVjdGVkLmNzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDVkMGQxOWY2OWQ4M2Y2ZWNiNDM2MjRjODk2NDg3OWEwYWFlY2ZmMy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvY3NzLXRlc3RzL2NvbW1lbnQtZXhwZWN0ZWQuY3Nz
CisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotLyogdGVzdCBcKi8KLXggewotICAgIGE6
IGI7Ci0gICAgYzogZAotfQotLyogcmVzZXQgKi8KLQotLyogdGVzdCBcKi8KLXggewotICAgIGE6
IGI7Ci0gICAgYzogZAotfQotLyogcmVzZXQgKi8KLQoteCAvKiB0ZXN0IFwqLyB7Ci0gICAgYTog
YjsKLSAgICBjOiBkCi19Ci0vKiByZXNldCAqLwotCi14IHsKLSAgICAvKiB0ZXN0IFwqLwotICAg
IGE6IGI7Ci0gICAgYzogZAotfQotLyogcmVzZXQgKi8KLQoteCB7Ci0gICAgYSAvKiB0ZXN0IFwq
LzogYjsKLSAgICBjOiBkCi19Ci0vKiByZXNldCAqLwotCi14IHsKLSAgICBhOiAvKiB0ZXN0IFwq
LyBiOwotICAgIGM6IGQKLX0KLS8qIHJlc2V0ICovCi0KLXggewotICAgIGE6IGIgLyogdGVzdCBc
Ki87Ci0gICAgYzogZAotfQotLyogcmVzZXQgKi8KLQoteCB7Ci0gICAgYTogYjsKLSAgICAvKiB0
ZXN0IFwqLwotICAgIGM6IGQKLX0KLS8qIHJlc2V0ICovCi0KLXggewotICAgIGE6IGI7Ci0gICAg
YyAvKiB0ZXN0IFwqLzogZAotfQotLyogcmVzZXQgKi8KLQoteCB7Ci0gICAgYTogYjsKLSAgICBj
OiAvKiB0ZXN0IFwqLyBkCi19Ci0vKiByZXNldCAqLwotCi14IHsKLSAgICBhOiBiOwotICAgIGM6
IGQgLyogdGVzdCBcKi8KLX0KLS8qIHJlc2V0ICovCi0KLXggewotICAgIGE6IGI7Ci0gICAgYzog
ZAotfQotLyogdGVzdCBcKi8KLS8qIHJlc2V0ICovCi0KLS8qIDEgXCovCi0vKiAyIFwqLwotLyog
MyBcKi8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291
cmNlcy9jc3MtdGVzdHMvZ3JhZGllbnQtZXhwZWN0ZWQuY3NzIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2Nzcy10ZXN0cy9ncmFkaWVudC1leHBlY3RlZC5jc3MK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmNGVkZDRlYTE3NDZlYzU1NmFhYzgyMTkw
NGViZjljOTE3YjA3ZmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2Nzcy10ZXN0
cy9ncmFkaWVudC1leHBlY3RlZC5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLS5k
b3QtbmF2Om50aC1jaGlsZCgxbikgbGkgYS5hY3RpdmUgewotICAgIHRvcDogMDsKLSAgICBiYWNr
Z3JvdW5kOiAjMDhjOwotICAgIGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBs
ZWZ0dG9wLCBsZWZ0Ym90dG9tLCBjb2xvci1zdG9wKDAlLCByZ2IoMTI2LCAxOTgsIDIzNCkpLCBj
b2xvci1zdG9wKDI0JSwgcmdiKDcwLCAxNzksIDIzNCkpLCBjb2xvci1zdG9wKDEwMCUsIHJnYigz
LCAxMzUsIDIwMSkpKTsKLSAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0
b3AsIHJnYigxMjYsIDE5OCwgMjM0KSAwJSwgcmdiKDcwLCAxNzksIDIzNCkgNDUlLCByZ2IoMywg
MTM1LCAyMDEpIDEwMCUpOwotICAgIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KHRv
cCwgcmdiKDEyNiwgMTk4LCAyMzQpIDAlLCByZ2IoNzAsIDE3OSwgMjM0KSA0NSUsIHJnYigzLCAx
MzUsIDIwMSkgMTAwJSk7Ci0gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvcCwgcmdi
KDEyNiwgMTk4LCAyMzQpIDAlLCByZ2IoNzAsIDE3OSwgMjM0KSA0NSUsIHJnYigzLCAxMzUsIDIw
MSkgMTAwJSk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGlu
Zy9yZXNvdXJjZXMvY3NzLXRlc3RzL2tleWZyYW1lcy1leHBlY3RlZC5jc3MgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvY3NzLXRlc3RzL2tleWZyYW1lcy1leHBl
Y3RlZC5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzNDhlODdlMTVlOGFjYjE0
YTM3ZDc3YzE3OGE1OTg0OWQxY2ViZDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2Vz
L2Nzcy10ZXN0cy9rZXlmcmFtZXMtZXhwZWN0ZWQuY3NzCisrKyAvZGV2L251bGwKQEAgLTEsMTkg
KzAsMCBAQAotQC13ZWJraXQta2V5ZnJhbWVzIHNwaW4gewotICAgIDAlIHsKLSAgICAgICAgLXdl
YmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtMTgwZGVnKSB0cmFuc2xhdGUoMHB4LCAwcHgpOwotICAg
IH0KLQotICAgIDEwMCUgewotICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDE4MGRl
ZykgdHJhbnNsYXRlKDEwcHgsIDc1cHgpOwotICAgIH0KLX0KLQotQC13ZWJraXQta2V5ZnJhbWVz
IHNwaW4gewotICAgIDAlIHsKLSAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtMTgw
ZGVnKSB0cmFuc2xhdGUoMHB4LCAwcHgpOwotICAgIH0KLQotICAgIDEwMCUgewotICAgICAgICAt
d2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZykgdHJhbnNsYXRlKDEwcHgsIDc1cHgpOwot
ICAgIH0KLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jl
c291cmNlcy9jc3MtdGVzdHMvbWVkaWEtcXVlcnktZXhwZWN0ZWQuY3NzIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2Nzcy10ZXN0cy9tZWRpYS1xdWVyeS1leHBl
Y3RlZC5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzN2JjMTliNzZjYzc2M2Ni
ZmIyNmQzZWViODNkNDhhZmJiNjE1NWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2Vz
L2Nzcy10ZXN0cy9tZWRpYS1xdWVyeS1leHBlY3RlZC5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSw5
MyArMCwwIEBACi0vKiBNRURJQSBRVUVSWSBJTkRFTlRBVElPTiAqLwotQG1lZGlhIHByaW50IHsK
LSAgICBib2R5LCAjbWFpbiwgI2NvbnRlbnQgewotICAgICAgICBjb2xvcjogIzAwMCAhaW1wb3J0
YW50OwotICAgIH0KLQotICAgIGEsIGE6bGluaywgYTp2aXNpdGVkIHsKLSAgICAgICAgY29sb3I6
ICMwMDAgIWltcG9ydGFudDsKLSAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRh
bnQ7Ci0gICAgfQotCi0gICAgI3RhYnMsICNnbG9iYWxoZWFkZXIsICNnbG9iYWxmb290ZXIsICNk
aXJlY3RvcnluYXYsIC5ub3ByaW50LCAuaGlkZSB7Ci0gICAgICAgIGRpc3BsYXk6IG5vbmUgIWlt
cG9ydGFudDsKLSAgICB9Ci0KLSAgICAjbWFpbiBhLnBkZiwgI21haW4gYS5odG1sLCAjbWFpbiBh
LnF0LCAjbWFpbiBhLmljYWwsICNtYWluIGEuZGwsICNtYWluIGEuZG1nLCAjbWFpbiBhLnppcCwg
I21haW4gYS5rZXlub3RlLCAjbWFpbiBhLmF1ZGlvIHsKLSAgICAgICAgcGFkZGluZy1sZWZ0OiAw
OwotICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwotICAgIH0KLX0KLQotQG1lZGlhIHBy
aW50IHsKLSAgICBAbWVkaWEgc2NyZWVuIHsKLSAgICAgICAgYm9keSB7Ci0gICAgICAgICAgICBj
b2xvcjogcmVkOwotICAgICAgICB9Ci0gICAgfQotfQotCi0vKiBNRURJQSBRVUVSWSAqLwotQG1l
ZGlhIHNjcmVlbiBhbmQgKG1heC1kZXZpY2Utd2lkdGg6IDQ4MHB4KSB7Ci0gICAgaHRtbCB7Ci0g
ICAgICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogbm9uZTsKLSAgICB9Ci19Ci0KLUBtZWRp
YSBzY3JlZW4gYW5kIChtYXgtZGV2aWNlLXdpZHRoOiA0ODBweCkgewotICAgIGh0bWwgewotICAg
ICAgICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IG5vbmU7Ci0gICAgfQotfQotCi1AbWVkaWEg
bm90ICgoc2NyZWVuKSBhbmQgKHByaW50KSksIChwcmludCkgewotICAgIGJvZHkgewotICAgICAg
ICBjb2xvcjogcmVkCi0gICAgfQotfQotCi1AbWVkaWEgbm90ICgoc2NyZWVuKSBhbmQgKHByaW50
KSksIChwcmludCkgewotICAgIGJvZHkgewotICAgICAgICBjb2xvcjogcmVkCi0gICAgfQotfQot
Ci0vKiBmb250LWZhY2UgKi8KLUBmb250LWZhY2UgewotICAgIGZvbnQtZmFtaWx5OiAiTXlXZWJG
b250IjsKLSAgICBzcmM6IHVybCgibXlmb250LndvZmYyIikgZm9ybWF0KCJ3b2ZmMiIpLCB1cmwo
Im15Zm9udC53b2ZmIikgZm9ybWF0KCJ3b2ZmIik7Ci19Ci0KLS8qIHBhZ2UgKi8KLUBwYWdlIDpm
aXJzdCB7Ci0gICAgbWFyZ2luOiAxaW47Ci19Ci0KLUBwYWdlIDpmaXJzdCB7Ci0gICAgbWFyZ2lu
OiAxaW47Ci19Ci0KLS8qIHN1cHBvcnRzICovCi1Ac3VwcG9ydHMgKGRpc3BsYXk6IGZsZXgpIHsK
LSAgICAubW9kdWxlIHsKLSAgICAgICAgZGlzcGxheTogZmxleDsKLSAgICB9Ci19Ci0KLUBzdXBw
b3J0cyAoZGlzcGxheTogZmxleCkgewotICAgIC5tb2R1bGUgewotICAgICAgICBkaXNwbGF5OiBm
bGV4OwotICAgIH0KLX0KLQotQHN1cHBvcnRzICgtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1
cigxMHB4KSkgewotICAgIC5ob21lIGhlYWRlciB7Ci0gICAgICAgIC13ZWJraXQtYmFja2Ryb3At
ZmlsdGVyOiBibHVyKDEwcHgpOwotICAgIH0KLX0KLQotQHN1cHBvcnRzICgtd2Via2l0LWJhY2tk
cm9wLWZpbHRlcjogYmx1cigxMHB4KSkgewotICAgIC5ob21lIGhlYWRlciB7Ci0gICAgICAgIC13
ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9jc3MtdGVzdHMvc2Vs
ZWN0b3JzLWV4cGVjdGVkLmNzcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jl
c291cmNlcy9jc3MtdGVzdHMvc2VsZWN0b3JzLWV4cGVjdGVkLmNzcwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYTcwMGMxZGQ5MDIyMjQwNGEyOGVmNzRlYThkZDk1OTM1NGQzNDg3NC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvY3NzLXRlc3RzL3NlbGVjdG9ycy1leHBl
Y3RlZC5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKiBTSE9SVCBTRUxFQ1RP
UiwgRU1QVFkgQ09OVEVOVCAqLwotYSB7Ci19Ci0KLS8qIENPTVBMRVggU0VMRUNUT1IgKi8KLWRp
diBkaXYgPiBkaXYjaWQuZm9vLmJhcjpob3ZlciAuc29tZXRoaW5nID4gLmNoaWxkIH4gLnNpYmxp
bmcgKyAuc2libGluZzphZnRlciB7Ci0gICAgY29sb3I6IHJlZDsKLX0KLQotZGl2IGRpdiA+IGRp
diNpZC5mb28uYmFyOmhvdmVyIC5zb21ldGhpbmcgPiAuY2hpbGQgfiAuc2libGluZyArIC5zaWJs
aW5nOmFmdGVyIHsKLSAgICBjb2xvcjogcmVkOwotfQotCi1kaXYgZGl2ID4gZGl2I2lkLmZvby5i
YXI6aG92ZXIgLnNvbWV0aGluZyA+IC5jaGlsZCB+IC5zaWJsaW5nICsgLnNpYmxpbmc6OmFmdGVy
IHsKLSAgICBjb2xvcjogcmVkOwotfQotCi1kaXYgZGl2ID4gZGl2I2lkLmZvby5iYXI6aG92ZXIg
LnNvbWV0aGluZyA+IC5jaGlsZCB+IC5zaWJsaW5nICsgLnNpYmxpbmc6OmFmdGVyIHsKLSAgICBj
b2xvcjogcmVkOwotfQotCi1kaXYgZGl2ID4gZGl2I2lkLmZvby5iYXI6aG92ZXIgLnNvbWV0aGlu
ZyA+IC5jaGlsZCB+IC5zaWJsaW5nICsgOm1hdGNoZXMoLnNpYmxpbmcpOmFmdGVyIHsKLSAgICBj
b2xvcjogcmVkOwotfQotCi1kaXYgZGl2ID4gZGl2I2lkLmZvby5iYXI6aG92ZXIgLnNvbWV0aGlu
ZyA+IC5jaGlsZCB+IC5zaWJsaW5nICsgOm1hdGNoZXMoLnNpYmxpbmcpOmFmdGVyIHsKLSAgICBj
b2xvcjogcmVkOwotfQotCi1kaXYgZGl2ID4gZGl2I2lkLmZvby5iYXI6aG92ZXIgLnNvbWV0aGlu
ZyA+IC5jaGlsZCB+IC5zaWJsaW5nICsgOm1hdGNoZXMoLnNpYmxpbmcpOjphZnRlciB7Ci0gICAg
Y29sb3I6IHJlZDsKLX0KLQotZGl2IGRpdiA+IGRpdiNpZC5mb28uYmFyOmhvdmVyIC5zb21ldGhp
bmcgPiAuY2hpbGQgfiAuc2libGluZyArIDptYXRjaGVzKC5zaWJsaW5nKTo6YWZ0ZXIgewotICAg
IGNvbG9yOiByZWQ7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0
dGluZy9yZXNvdXJjZXMvY3NzLXRlc3RzL3VybC1leHBlY3RlZC5jc3MgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvY3NzLXRlc3RzL3VybC1leHBlY3RlZC5jc3MK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0MzhhZTEyZGQ2MGM5YzhjNzMyYTZhOGU2
OTU1OGMzMzc3ZTkxNjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2Nzcy10ZXN0
cy91cmwtZXhwZWN0ZWQuY3NzCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotYm9keSB7
Ci0gICAgYmFja2dyb3VuZDogdXJsKGJhc2ljKTsKLSAgICBiYWNrZ3JvdW5kOiB1cmwod2l0aCBz
cGFjZSk7Ci0gICAgYmFja2dyb3VuZDogdXJsKCcgIHNpbmdsZSAgJyk7Ci0gICAgYmFja2dyb3Vu
ZDogdXJsKCIgIGRvdWJsZSAgIik7Ci0gICAgYmFja2dyb3VuZDogdXJsKCcgIG5lc3RlZCAgIiAg
ZG91YmxlICAiICBzaW5nbGUgICcpOwotICAgIGJhY2tncm91bmQ6IHVybCgiICBuZXN0ZWQgICcg
IHNpbmdsZSAgJyAgZG91YmxlICAiKTsKLSAgICBiYWNrZ3JvdW5kOiB1cmwoJyAgZXNjYXBlZCAg
XCcgIHNpbmdsZSAgXCcgIHNpbmdsZSAgJyk7Ci0gICAgYmFja2dyb3VuZDogdXJsKCIgIGVzY2Fw
ZWQgIFwiICBkb3VibGUgIFwiICBkb3VibGUgICIpOwotICAgIGJhY2tncm91bmQ6IHVybCgnICBl
c2NhcGVkICBcXFwnICBzaW5nbGUgIFxcXCcgIHNpbmdsZSAgJyk7Ci0gICAgYmFja2dyb3VuZDog
dXJsKCIgIGVzY2FwZWQgIFxcXCIgIGRvdWJsZSAgXFxcIiAgZG91YmxlICAiKTsKLSAgICBiYWNr
Z3JvdW5kOiB1cmwoJyAgbmVzdGVkICAvKiAgY29tbWVudCAgKi8gIHNpbmdsZSAgJyk7Ci0gICAg
YmFja2dyb3VuZDogdXJsKCIgIG5lc3RlZCAgLyogIGNvbW1lbnQgICovICBkb2J1bGUgICIpOwot
ICAgIGJhY2tncm91bmQ6IHVybCggLyogIGJlZm9yZSAgKi8gJyAgc2luZ2xlICAnIC8qICBhZnRl
ciAgKi8pOwotICAgIGJhY2tncm91bmQ6IHVybCggLyogIGJlZm9yZSAgKi8gIiAgZG91YmxlICAi
IC8qICBhZnRlciAgKi8pOwotfQotCi1ib2R5IHsKLSAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVy
OwotICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7Ci0gICAgYmFja2dyb3VuZC1pbWFn
ZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmcgY2xpcC1ydWxl
PSdldmVub2RkJyBmaWxsLXJ1bGU9J2V2ZW5vZGQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIHN0
cm9rZS1taXRlcmxpbWl0PScxLjUnIHZpZXdCb3g9JzAgMCAyMDAgMjAwJyB4bWxucz0naHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmcnIHhtbG5zOnhsaW5rPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rJyUzRSUzQ2NsaXBQYXRoIGlkPSdhJyUzRSUzQ3BhdGggZD0nTTAgMGgyMDB2MjAwSDB6
Jy8lM0UlM0MvY2xpcFBhdGglM0UlM0NnIGNsaXAtcGF0aD0ndXJsKCUyM2EpJyB0cmFuc2Zvcm09
J3NjYWxlKDAuNSknJTNFJTNDaW1hZ2UgaGVpZ2h0PScyMDAnIHRyYW5zZm9ybT0nc2NhbGUoMiAy
KScgd2lkdGg9JzIwMCcgeGxpbms6aHJlZj0nZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCxhYmNkZWYn
LyUzRSUzQy9nJTNFJTNDL3N2ZyUzRSIpCi19Ci0KLWJvZHkgewotICAgIGJhY2tncm91bmQtaW1h
Z2U6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHdoaXRlLCByZ2JhKDAsIDAsIDAsIDApIDIwMHB4
KTsKLSAgICBtaW4taGVpZ2h0OiAyMDBweAotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2Nzcy10ZXN0cy93cmFwcGluZy1leHBlY3RlZC5j
c3MgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvY3NzLXRlc3Rz
L3dyYXBwaW5nLWV4cGVjdGVkLmNzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWRk
YzRjM2YyZjllMjc2M2YyOTY2ZjlhOTEwYjc5ZjhkNWMxMTA3Ni4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0
dGluZy9yZXNvdXJjZXMvY3NzLXRlc3RzL3dyYXBwaW5nLWV4cGVjdGVkLmNzcworKysgL2Rldi9u
dWxsCkBAIC0xLDEzICswLDAgQEAKLS8qIExPTkcgTElTVFMgU0hPVUxETidUIFdSQVAgKi8KLWEu
YnJvd3Nld2ViYXBwc3MsIGEuYnVzaW5lc3NzdG9yZXMsIGEuYnV5aXBob25lcywgYS5idXlub3dz
LCBhLmJ1eW5vd3MtYXJyb3csIGEuY29taW5nc29vbnMsIHA6OmJlZm9yZSwgYS5kZXNjYXJnYXJh
aG9yYXMsIGEuZG93bmxvYWRpdHVuZXNzLCBhLmRvd25sb2Fkbm93cywgYS5maW5kcywgYS5mcmVl
dHJpYWxzLCBhLmdldHN0YXJ0ZWRzLCBhLmdvcywgYS5ob3d0b2FwcGx5cywgYS5ob3d0b2J1eXMs
IGEuam9pbm5vd3MsIGEubGVhcm5tb3JlcywgYS5uaWtlYnV5bm93cywgYS5ub3RpZnltZXMsIGEu
b3JkZXJub3dzLCBhLnByZW9yZGVybm93cywgYS5wcmVvcmRlcnMsIGEucmVzZXJ2ZXMsIGEuc3Rh
cnR5b3Vyc2VhcmNocywgYS5zdWJtaXRzLCBhLnRyeWFtYWNzLCBhLnVwZ3JhZGVub3dzIHsKLSAg
ICBjb2xvcjogcmVkCi19Ci0KLWEuYnJvd3Nld2ViYXBwc3M6aG92ZXIsIGEuYnVzaW5lc3NzdG9y
ZXM6aG92ZXIsIGEuYnV5aXBob25lczpob3ZlciwgYS5idXlub3dzOmhvdmVyLCBhLmJ1eW5vd3Mt
YXJyb3c6aG92ZXIsIGEuY29taW5nc29vbnM6aG92ZXIsIHA6OmJlZm9yZSwgYS5kZXNjYXJnYXJh
aG9yYXM6aG92ZXIsIGEuZG93bmxvYWRpdHVuZXNzOmhvdmVyLCBhLmRvd25sb2Fkbm93czpob3Zl
ciwgYS5maW5kczpob3ZlciwgYS5mcmVldHJpYWxzOmhvdmVyLCBhLmdldHN0YXJ0ZWRzOmhvdmVy
LCBhLmdvczpob3ZlciwgYS5ob3d0b2FwcGx5czpob3ZlciwgYS5ob3d0b2J1eXM6aG92ZXIsIGEu
am9pbm5vd3M6aG92ZXIsIGEubGVhcm5tb3Jlczpob3ZlciwgYS5uaWtlYnV5bm93czpob3Zlciwg
YS5ub3RpZnltZXM6aG92ZXIsIGEub3JkZXJub3dzOmhvdmVyLCBhLnByZW9yZGVybm93czpob3Zl
ciwgYS5wcmVvcmRlcnM6aG92ZXIsIGEucmVzZXJ2ZXM6aG92ZXIsIGEuc3RhcnR5b3Vyc2VhcmNo
czpob3ZlciwgYS5zdWJtaXRzOmhvdmVyLCBhLnRyeWFtYWNzOmhvdmVyLCBhLnVwZ3JhZGVub3dz
OmhvdmVyIHsKLSAgICBjb2xvcjogcmVkCi19Ci0KLS8qIE5FV0xJTkUtU0VQQVJBVEVEIFNFTEVD
VE9SUyBTSE9VTEQgQ09NQklORSAqLwotaDEsIGgyLCBoMywgaDQsIGg1LCBoNiB7Ci0gICAgZm9u
dC1zaXplOiAxZW0KLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0
aW5nL3Jlc291cmNlcy9odG1sLXRlc3RzL2F0dHJpYnV0ZXMtZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9odG1sLXRlc3RzL2F0dHJpYnV0
ZXMtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTUyNDM2MTBh
ZWQ1NDA3ZGQzNDY4MWEwMjQ0ZGY5OWNkYWZjNzU4My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9y
ZXNvdXJjZXMvaHRtbC10ZXN0cy9hdHRyaWJ1dGVzLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSwyNSArMCwwIEBACi08cD48L3A+Ci08cD48L3A+Ci08cCBhdHRyPjwvcD4KLTxwIGF0
dHI+PC9wPgotPHA+PC9wPgotPHAgYXR0cj12YWx1ZT48L3A+Ci08cCBhdHRyPXZhbHVlPjwvcD4K
LTxwIGF0dHI9IiI+PC9wPgotPHAgYXR0cj0idmFsdWUiPjwvcD4KLTxwIGF0dHI9InZhbHVlIDEg
MiAzIj48L3A+Ci08cCBhdHRyPSJ2YWx1ZSI+PC9wPgotPHAgYXR0cj0nJz48L3A+Ci08cCBhdHRy
PSd2YWx1ZSc+PC9wPgotPHAgYXR0cj0ndmFsdWUnPjwvcD4KLTxwIGF0dHI9J3ZhbHVlIDEgMiAz
Jz48L3A+Ci08cCBhdHRyPXZhbHVlMSBhdHRyPXZhbHVlMj48L3A+Ci08cCBhPTEgYj0yPjwvcD4K
LTxwIGhyZWYxPSNmcmFnbWVudCBocmVmMj0vcGF0aC9wYWdlLmh0bWwgaHJlZjM9ZXhhbXBsZS5v
cmcgaHJlZjQ9Ly9leGFtcGxlLm9yZyBocmVmNT1odHRwOi8vZXhhbXBsZS5vcmc+PC9wPgotCi08
cCBhPTEgYj0yPjwvcD4KLQotPCEtLSBJbnZhbGlkIC0tPgotPHAgInZhbHVlIj48L3A+Ci08cCAx
PjwvcD4KLTwvcCBhdHRyPSJ2YWx1ZSI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvaHRtbC10ZXN0cy9hdXRvLWNsb3NlLW5vcm1hbC1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2h0
bWwtdGVzdHMvYXV0by1jbG9zZS1ub3JtYWwtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggY2E4NGQ1ZjRkYTU1MGIxNGYxYmRiZGQ1YzhiZWFiZTJiNTExMDI5NC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvaHRtbC10ZXN0cy9hdXRvLWNsb3NlLW5v
cm1hbC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi08YT4KLSAg
ICA8Yj4KLSAgICAgICAgPGM+Ci0gICAgICAgICAgICA8ZD4KLSAgICAgICAgICAgICAgICA8ZT5m
b28KLTwvYT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jl
c291cmNlcy9odG1sLXRlc3RzL2F1dG8tY2xvc2Utc3BlY2lhbC1leHBlY3RlZC5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2h0bWwtdGVzdHMvYXV0by1j
bG9zZS1zcGVjaWFsLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDM0ZTkzNWVkMzhkZjQ1MzIxNzBjZDVkM2YyMjI4ZmNmZmFkMTNmOTcuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zv
cm1hdHRpbmcvcmVzb3VyY2VzL2h0bWwtdGVzdHMvYXV0by1jbG9zZS1zcGVjaWFsLWV4cGVjdGVk
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi08IS0tIGJvZHkgY2xvc2VzIGhl
YWQgLS0+Ci08aGVhZD4KLSAgICA8dGl0bGU+VGl0bGUKLTxib2R5PgotCi0gICAgPCEtLSBvcHRp
b24gYW5kIG9wdGdyb3VwIC0tPgotICAgIDxzZWxlY3Q+Ci0gICAgICAgIDxvcHRpb24+MQotICAg
ICAgICA8b3B0aW9uPjIKLSAgICAgICAgICAgIAotICAgICAgICA8b3B0Z3JvdXAgbGFiZWw9Ikdy
b3VwIDEiPgotICAgICAgICAgICAgPG9wdGlvbj4xCi0gICAgICAgICAgICA8b3B0aW9uPjIKLSAg
ICAgICAgICAgICAgICAKLSAgICAgICAgPG9wdGdyb3VwIGxhYmVsPSJHcm91cCAyIj4KLSAgICAg
ICAgICAgIDxvcHRpb24+MQotICAgICAgICAgICAgPG9wdGlvbj4yCi0gICAgPC9zZWxlY3Q+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvaHRt
bC10ZXN0cy9iYXNpYy0xLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9y
bWF0dGluZy9yZXNvdXJjZXMvaHRtbC10ZXN0cy9iYXNpYy0xLWV4cGVjdGVkLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3YzhhYzAwNDc1OGIwYWY3ZWEwMGNmYWU3ZTJkZTZi
YTAzNjk5NTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2h0bWwtdGVzdHMvYmFz
aWMtMS1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDx0aXRsZT5UZXN0PC90aXRsZT4KLSAgICA8
c2NyaXB0IHNyYz0ianMvc2NyaXB0LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotICAg
IDwhLS0gQ29tbWVudCAtLT4KLSAgICA8ZGl2IGNsYXNzPSJmb28iPgotICAgICAgICA8aW5wdXQg
dHlwZT10ZXh0PgotICAgICAgICA8YnI+Ci0gICAgICAgIDxwPlRlc3Q8L3A+Ci0gICAgPC9kaXY+
Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9y
bWF0dGluZy9yZXNvdXJjZXMvaHRtbC10ZXN0cy9iYXNpYy0yLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvaHRtbC10ZXN0cy9iYXNpYy0y
LWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3OTEzZjBlMzcz
MGEwNWVlZmE0MTJhNWJjNDg5ZjZiZjhlNTkwYTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVz
b3VyY2VzL2h0bWwtdGVzdHMvYmFzaWMtMi1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMjIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDx0aXRs
ZT5UZXN0PC90aXRsZT4KLSAgICA8c2NyaXB0IHNyYz0ianMvc2NyaXB0LmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotCi0gICAgPCEtLSBTZWN0aW9uIE9uZSAtLT4KLSAgICA8ZGl2IGNs
YXNzPSJtYWluIj4KLSAgICAgICAgPGgxPlRlc3Q8L2gxPgotICAgIDwvZGl2PgotCi0gICAgPCEt
LSBTZWN0aW9uIFR3byAtLT4KLSAgICA8dWw+Ci0gICAgICAgIDxsaT5PbmU8L2xpPgotICAgICAg
ICA8bGk+VHdvPC9saT4KLSAgICAgICAgPGxpPlRocmVlPC9saT4KLSAgICA8L3VsPgotCi08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGlu
Zy9yZXNvdXJjZXMvaHRtbC10ZXN0cy9jb21tZW50cy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2h0bWwtdGVzdHMvY29tbWVudHMtZXhw
ZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE3NDA0ZDM2ZWNhYTY1
ZDQ0NTk5MGYxMWVjZDNkMDQxZDcyMGY3Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJj
ZXMvaHRtbC10ZXN0cy9jb21tZW50cy1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MTUgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgotPCFET0NUWVBFIGh0bWw+Ci08IWRvY3R5cGUgaHRtbD4KLTwhZE9jVHlQZSBodG1sPgotPD94
bWwgdmVyc2lvbj0iMS4wIj8+Ci08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/
PgotPCEtLVRleHQtLT4KLTwhLS0gQ29weXJpZ2h0IMKpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLiAtLT4KLTxwPgotICAgIDwhW0NEQVRBW1Rlc3RdXT4KLTwvcD4KLTxwPgot
ICAgIDwhW0NEQVRBWyBUZXN0IF1dPgotPC9wPgotPCEtLWFzZGYtLT4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9odG1sLXRlc3RzL2VvZi0x
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJj
ZXMvaHRtbC10ZXN0cy9lb2YtMS1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAxNGM3OTViMzVjZmIyYTVlZWQyMTAzMTM5ODJiMWRmMjJiMTFhZTkwLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9odG1sLXRlc3RzL2VvZi0xLWV4cGVjdGVkLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLTxwPgotICAgIGZvbzxhCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvaHRtbC10ZXN0cy9l
b2YtMi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVz
b3VyY2VzL2h0bWwtdGVzdHMvZW9mLTItZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggY2RjZjc0ZWYwZGI1ZDNiNWMwN2UxY2MxNGUzYjVkMTg4MWM0YWQxMS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvaHRtbC10ZXN0cy9lb2YtMi1leHBlY3RlZC5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi08cD4KLSAgICBmb288ZGl2IGF0dHI9
IgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2Vz
L2h0bWwtdGVzdHMvZW9mLTMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9m
b3JtYXR0aW5nL3Jlc291cmNlcy9odG1sLXRlc3RzL2VvZi0zLWV4cGVjdGVkLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3NGZkZDllODM5ZWQzMzQ1M2QzZjk0MDNjMTM5MWM2
OTY0MWVkNmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2h0bWwtdGVzdHMvZW9m
LTMtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotPHA+Ci0gICAg
Zm9vPGRpdiBhdHRyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGlu
Zy9yZXNvdXJjZXMvaHRtbC10ZXN0cy9lb2YtNC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2h0bWwtdGVzdHMvZW9mLTQtZXhwZWN0ZWQu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNiNjUwOTU3ZGQ0MmU3NWFlMjZj
OWRiZTZjMDc2ZmEwNmZjZjgzYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvaHRt
bC10ZXN0cy9lb2YtNC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBA
Ci08cD4KLSAgICBmb288ZGl2IGF0dHI9dmFsdWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9odG1sLXRlc3RzL2VvZi01LWV4cGVjdGVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvaHRtbC10ZXN0
cy9lb2YtNS1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzk1
YzU0YTBhMzhkOTNjYWRlMjkwNjYyYWEzYjNlYzZmZjYwYTFlLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0
aW5nL3Jlc291cmNlcy9odG1sLXRlc3RzL2VvZi01LWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSArMCwwIEBACi08IS0tZm9vCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvaHRtbC10ZXN0cy9lb2YtNi1leHBlY3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2h0bWwtdGVzdHMvZW9m
LTYtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTMxODQxODM0
NGE4ZDAwODQ3YWI2ZGMwOGQwYzk3OTI0OGI5MmEwYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9y
ZXNvdXJjZXMvaHRtbC10ZXN0cy9lb2YtNi1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEgKzAsMCBAQAotPApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRp
bmcvcmVzb3VyY2VzL2h0bWwtdGVzdHMvZW9mLTctZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9odG1sLXRlc3RzL2VvZi03LWV4cGVjdGVk
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmZWQ0N2IwMTFlZmU4YTdiODc2
YTkzMDA3YWFjYTRkMTMzNzI1NzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2h0
bWwtdGVzdHMvZW9mLTctZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAK
LTxzY3JpcHQgc3JjPSJmb28uanMiPiA8L3NjCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvaHRtbC10ZXN0cy9lb2YtOC1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2h0bWwtdGVzdHMv
ZW9mLTgtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjAzMDNm
YzhhYmRmZGM2OTZkNGRiY2FhMDkzMzhhZjg2OGYwNmNmNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGlu
Zy9yZXNvdXJjZXMvaHRtbC10ZXN0cy9lb2YtOC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEgKzAsMCBAQAotPHA+MTIzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
Zm9ybWF0dGluZy9yZXNvdXJjZXMvaHRtbC10ZXN0cy9lb2YtOS1leHBlY3RlZC5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2h0bWwtdGVzdHMvZW9mLTkt
ZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGU4OGQ5MWFkZjhk
ZmEwNGJiN2Q0YWM3MjMyNGE0Y2YyOTNlOGE4NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNv
dXJjZXMvaHRtbC10ZXN0cy9lb2YtOS1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MiArMCwwIEBACi08cD4KLSAgICAxMjM8CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvaHRtbC10ZXN0cy9pbmxpbmUtc2NyaXB0LWV4cGVjdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvaHRtbC10
ZXN0cy9pbmxpbmUtc2NyaXB0LWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDA3NGQ1N2EzZTQ1MzVlMWQ2NjRlMDhjNWM5MDdjZTQ2NjA3NmQ4NTEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2h0bWwtdGVzdHMvaW5saW5lLXNjcmlwdC1leHBlY3Rl
ZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPHNjcmlwdD48L3NjcmlwdD4K
LTxzY3JpcHQgdHlwZT0ibW9kdWxlIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLShmdW5jdGlvbihh
LCBiLCBjKSB7Ci0gICAgbGV0IHN1bSA9IGE7Ci0gICAgc3VtICs9IGI7Ci0gICAgc3VtICs9IGM7
Ci0gICAgcmV0dXJuIHN1bTsKLX0pKCkKLTwvc2NyaXB0PgotPHNjcmlwdCB0eXBlPSJtb2R1bGUi
PgotaW1wb3J0IHsgYSwgYiwgYyB9IGZyb20gIm1vZHVsZSI7Ci1sZXQgeCA9IGEgKyBiICsgYzsK
LTwvc2NyaXB0PgotCi08ZGl2PgotICAgIDxzY3JpcHQ+Ci0gICAgKGZ1bmN0aW9uKGEsIGIsIGMp
IHsKLSAgICAgICAgbGV0IHN1bSA9IGE7Ci0gICAgICAgIHN1bSArPSBiOwotICAgICAgICBzdW0g
Kz0gYzsKLSAgICAgICAgcmV0dXJuIHN1bTsKLSAgICB9KSgpCi0gICAgPC9zY3JpcHQ+Ci0gICAg
PHNjcmlwdCB0eXBlPSJtb2R1bGUiPgotICAgIGltcG9ydCB7IGEsIGIsIGMgfSBmcm9tICJtb2R1
bGUiOwotICAgIGxldCB4ID0gYSArIGIgKyBjOwotICAgIDwvc2NyaXB0PgotPC9kaXY+Ci0KLTwh
LS0gU2NyaXB0IGlzOiBgPGE+PGI+PC9hPjwvYj5gIC0tPgotPHNjcmlwdD48YT48Yj48L2E+PC9i
Pjwvc2NyaXB0PgotCi08IS0tIFNjcmlwdCBpczogYGxldCBzdHIgPSAiYCAtLT4KLTxzY3JpcHQ+
bGV0IHN0ciA9ICI8L3NjcmlwdD4KLSI7Ci08cD5UZXN0PC9wPgotPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvaHRtbC10ZXN0
cy9pbmxpbmUtc3R5bGUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3Jt
YXR0aW5nL3Jlc291cmNlcy9odG1sLXRlc3RzL2lubGluZS1zdHlsZS1leHBlY3RlZC5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTE4ODAyYjAxYjI2ZjJmNGMzZmRiZjdiY2Jh
YmUzNmI0Y2JmZWFlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9odG1sLXRlc3Rz
L2lubGluZS1zdHlsZS1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBA
QAotPHN0eWxlPjwvc3R5bGU+Ci08c3R5bGU+Ci1ib2R5IHsKLSAgICBjb2xvcjogcmVkCi19Ci08
L3N0eWxlPgotPHN0eWxlPgotYm9keSB7Ci0gICAgY29sb3I6cmVkCi19Ci0KLXAgewotICAgIGNv
bG9yOiBibHVlOwotICAgIGJhY2tncm91bmQ6IGJsdWU7Ci19Ci0KLWRpdiwgKiB7Ci0gICAgY29s
b3I6IHJlZDsKLX0KLTwvc3R5bGU+Ci0KLTxkaXY+Ci0gICAgPHN0eWxlPjwvc3R5bGU+Ci0gICAg
PHN0eWxlPgotICAgIGJvZHkgewotICAgICAgICBjb2xvcjogcmVkCi0gICAgfQotICAgIDwvc3R5
bGU+Ci08L2Rpdj4KLQotPCEtLSBTdHlsZSBpczogYGJvZHkgeyBiYWNrZ3JvdW5kOiB1cmwoImAg
LS0+Ci08c3R5bGU+Ci1ib2R5IHsKLSAgICBiYWNrZ3JvdW5kOiB1cmwoIgotICAgIDwvc3R5bGU+
Ci0iKTsKLTxwPlRlc3Q8L3A+Ci08L3N0eWxlPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2h0bWwtdGVzdHMvbGlzdC1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2h0bWwtdGVzdHMv
bGlzdC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODA0MTFi
MTNiNWU5YTM3YTllZWM0YzhlMWUwNWFhZDZmMmE5NzIzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5n
L3Jlc291cmNlcy9odG1sLXRlc3RzL2xpc3QtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDU1ICswLDAgQEAKLTx1bD4KLSAgICA8bGk+T25lPC9saT4KLSAgICA8bGk+VHdvPC9saT4K
LSAgICA8bGk+VGhyZWU8L2xpPgotPC91bD4KLTxvbD4KLSAgICA8bGk+T25lPC9saT4KLSAgICA8
bGk+VHdvPC9saT4KLSAgICA8bGk+VGhyZWU8L2xpPgotPC9vbD4KLQotPHVsPgotICAgIDxsaT5P
bmUKLSAgICA8bGk+VHdvCi0gICAgPGxpPlRocmVlCi08L3VsPgotPG9sPgotICAgIDxsaT5PbmUK
LSAgICA8bGk+VHdvCi0gICAgPGxpPlRocmVlCi08L29sPgotCi08IS0tIE5lc3RlZCAtLT4KLTxv
bD4KLSAgICA8bGk+Ci0gICAgICAgIDx1bD4KLSAgICAgICAgICAgIDxsaT4xCi0gICAgICAgICAg
ICA8bGk+MgotICAgICAgICA8L3VsPgotICAgIDxsaT5UZXN0Ci08L29sPgotPHVsPgotICAgIDxs
aT4KLSAgICAgICAgPG9sPgotICAgICAgICAgICAgPGxpPjEKLSAgICAgICAgICAgIDxsaT4yCi0g
ICAgICAgIDwvb2w+Ci0gICAgPGxpPlRlc3QKLTwvdWw+Ci08b2w+Ci0gICAgPGxpPgotICAgICAg
ICA8b2w+Ci0gICAgICAgICAgICA8bGk+MQotICAgICAgICAgICAgPGxpPjIKLSAgICAgICAgPC9v
bD4KLSAgICA8bGk+VGVzdAotPC9vbD4KLTx1bD4KLSAgICA8bGk+Ci0gICAgICAgIDx1bD4KLSAg
ICAgICAgICAgIDxsaT4xCi0gICAgICAgICAgICA8bGk+MgotICAgICAgICA8L3VsPgotICAgIDxs
aT5UZXN0Ci08L3VsPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRp
bmcvcmVzb3VyY2VzL2h0bWwtdGVzdHMvbm90LXdlbGwtZm9ybWVkLTEtZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9odG1sLXRlc3RzL25v
dC13ZWxsLWZvcm1lZC0xLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDE5OGE5ODM1ZTc2ZTA0OWFlYzVhMDQ5ZmZmMzUxMzJmZTI3OTFiNGEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2h0bWwtdGVzdHMvbm90LXdlbGwtZm9ybWVkLTEtZXhwZWN0
ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPHg+Ci0gICAgPC9icj4KLSAg
ICA8eD5UZXN0PC94PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRp
bmcvcmVzb3VyY2VzL2h0bWwtdGVzdHMvbm90LXdlbGwtZm9ybWVkLTItZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9odG1sLXRlc3RzL25v
dC13ZWxsLWZvcm1lZC0yLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDJlNGMwZmExZGQxMGJlYmEyZDhiMDAzMzczMWQ3OTk5ZGM3YmE5Y2QuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2h0bWwtdGVzdHMvbm90LXdlbGwtZm9ybWVkLTItZXhwZWN0
ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotPGE+Ci0gICAgPC96PgotICAg
IDxiPgotICAgICAgICA8L3o+Ci0gICAgICAgIDxjPgotICAgICAgICAgICAgPC96PgotICAgICAg
ICA8L2M+Ci0gICAgPC9iPgotPC9hPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2h0bWwtdGVzdHMvbm90LXdlbGwtZm9ybWVkLTMtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9odG1s
LXRlc3RzL25vdC13ZWxsLWZvcm1lZC0zLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGFlMjJmY2I3YTgyMjIwZTVmZjM5NWJkNjdhZDEzNjM4NGM4OGY2NmQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2h0bWwtdGVzdHMvbm90LXdlbGwtZm9ybWVk
LTMtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotPAotPGE+Ci0g
ICAgPjwKLSAgICA8Yj4KLSAgICAgICAgPjwKLSAgICA8L2I+Ci0gICAgPjwKLTwvYT4KLT4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9odG1s
LXRlc3RzL3AtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5n
L3Jlc291cmNlcy9odG1sLXRlc3RzL3AtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMmJlMGQ2NTllMDhhOGY1ZWQyNDg1ZGQ4NmVkOTJiMzQ3YmMxMWJmNi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvaHRtbC10ZXN0cy9wLWV4cGVjdGVkLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi08cD4xCi08cD4yCi08cD4zCi0KLTxkaXY+
Ci0gICAgPHA+MQotICAgIDxwPjIKLSAgICA8cD4zCi08L2Rpdj4KLQotPGRpdj4KLSAgICA8c2Vj
dGlvbj4KLSAgICAgICAgPHA+MQotICAgICAgICA8cD4yCi0gICAgICAgIDxzZWN0aW9uPgotICAg
ICAgICAgICAgPHA+MwotICAgICAgICAgICAgPHA+NAotPC9kaXY+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvaHRtbC10ZXN0cy9zZWxmLWNs
b3NpbmctZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jl
c291cmNlcy9odG1sLXRlc3RzL3NlbGYtY2xvc2luZy1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA3ZDQ4ZGE2MjA2MTgxYTAxYjUxZjI4YjliNmY5NDIxZDhhNWZl
ZjNjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9odG1sLXRlc3RzL3NlbGYtY2xv
c2luZy1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJmb28uY3NzIj4K
LTxpbWcgc3JjPSJmb28ucG5nIj4KLTxpbWcgc3JjPSJmb28ucG5nIi8+Ci08cD4KLSAgICBhCi0g
ICAgPGJyPgotICAgIGIKLTwvcD4KLTxwPgotICAgIGEKLSAgICA8YnIvPgotICAgIGIKLTwvcD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9o
dG1sLXRlc3RzL3RhYmxlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9y
bWF0dGluZy9yZXNvdXJjZXMvaHRtbC10ZXN0cy90YWJsZS1leHBlY3RlZC5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjkwZWZiMjkxMTk4MmNjODI1MTNlYzEyMThiZDEzMjdh
MzRjNTNiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9odG1sLXRlc3RzL3RhYmxl
LWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi08dGFibGU+Ci0g
ICAgPHRyPgotICAgICAgICA8dGg+MQotICAgICAgICA8dGQ+MgotICAgICAgICA8dGQ+MwotICAg
ICAgICAgICAgCi0gICAgPHRyPgotICAgICAgICA8dGQ+MQotICAgICAgICA8dGg+MgotICAgICAg
ICA8dGQ+MwotICAgICAgICAgICAgCi0gICAgPHRyPgotICAgICAgICA8dGQ+MQotICAgICAgICA8
dGQ+MgotICAgICAgICA8dGg+MwotICAgICAgICAgICAgCi0gICAgPHRyPgotICAgICAgICA8dGg+
MQotICAgICAgICA8dGg+MgotICAgICAgICA8dGg+MwotPC90YWJsZT4KLQotPHRhYmxlPgotICAg
IDx0ZD4xCi0gICAgPHRkPjIKLSAgICA8dHI+Ci0gICAgICAgIDx0ZD4zCi0gICAgICAgIDx0ZD40
Ci08L3RhYmxlPgotPHRhYmxlPgotICAgIDx0aD4xCi0gICAgPHRoPjIKLSAgICA8dHI+Ci0gICAg
ICAgIDx0aD4zCi0gICAgICAgIDx0aD40Ci08L3RhYmxlPgotCi08dGFibGU+Ci0gICAgPHRoZWFk
PkhlYWQKLSAgICA8dGJvZHk+Qm9keQotICAgIDx0Zm9vdD5Gb290Ci08L3RhYmxlPgotPHRhYmxl
PgotICAgIDx0cj4KLSAgICAgICAgPHRkPjEKLSAgICA8dGZvb3Q+VGV4dAotPC90YWJsZT4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9odG1s
LXRlc3RzL3RhZy1jYXNlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9y
bWF0dGluZy9yZXNvdXJjZXMvaHRtbC10ZXN0cy90YWctY2FzZS1leHBlY3RlZC5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDhjOTVmYWMxMTc3ODUyMTdlZmJhNTVlZTk5MGI0
OTk3N2UyNGVhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9odG1sLXRlc3RzL3Rh
Zy1jYXNlLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLTxkaXY+
dGV4dDwvRElWPgotPERJVj50ZXh0PC9kaXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9hcnJvdy1mdW5jdGlv
bnMtZXhwZWN0ZWQuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJj
ZXMvamF2YXNjcmlwdC10ZXN0cy9hcnJvdy1mdW5jdGlvbnMtZXhwZWN0ZWQuanMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlYjEwZmJmMjRhMGYzN2M1MGJhNzNhN2JmOWJkZTdhYjZj
Y2E4ZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMv
YXJyb3ctZnVuY3Rpb25zLWV4cGVjdGVkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBA
QAoteCA9PiB4OwoteCA9PiB4ICogeDsKLXggPT4gewotICAgIHggKiB4Ci19OwoteCA9PiB7Ci0g
ICAgeCAqIHg7Ci19OwotKCkgPT4gMTsKLSh4KSA9PiB4OwotKHgpID0+IHggKiB4OwotKHgpID0+
IHsKLSAgICB4ICogeAotfTsKLSh4KSA9PiB7Ci0gICAgeCAqIHg7Ci19OwotCi14ID0+IHsKLSAg
ICB4ICo9IHg7Ci0gICAgeAotfTsKLQotKHgpID0+IHsKLSAgICB4ICo9IHg7Ci0gICAgeAotfTsK
LQotW10uc29ydCgoYSwgYikgPT4gYSAtIGIpOwotW10uc29ydCgoYSwgYikgPT4gZm9vKGEsIGIp
KTsKLVtdLnJlZHVjZSgoc3VtLCB7YSwgYn0pID0+IHN1bSArPSBhICsgYiwgMCk7Ci0KLXNldFRp
bWVvdXQoKCkgPT4gewotICAgIDE7Ci0gICAgMjsKLSAgICAzCi19KTsKLQotZm9vKChhPTEsIC4u
LnJlc3QpID0+IHJlc3RbYV0pOwotCi1mb28oKGE9MSwgYikgPT4gYik7Ci0KLWZvbygoYT0xLCBi
LCApID0+IGIpOwotCi1hc3luYyB4ID0+IHgKLWFzeW5jICh4KSA9PiB4Ci1hc3luYyAoeCkgPT4g
ewotICAgIHgKLX0KLQotYSA9PiB7Ci0gICAgZm9yIChiIG9mIFtdKQotICAgICAgICA7Ci19Ci0o
KSA9PiB7Ci0gICAgdHJ5IHsKLSAgICAgICAgMQotICAgIH0gY2F0Y2ggewotICAgICAgICAyCi0g
ICAgfQotfQotCi0oKSA9PiB7Ci0gICAgYSgpLAotICAgIGIoKSwKLSAgICBjKCkKLX0KLQotKCkg
PT4gewotICAgIHJldHVybgotfQotKCkgPT4gewotICAgIHJldHVybiA0MgotfQotKCkgPT4gewot
ICAgIHJldHVybiA0MiwgYSgpLCBiKCkKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2NsYXNzZXMtZXhwZWN0
ZWQuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNj
cmlwdC10ZXN0cy9jbGFzc2VzLWV4cGVjdGVkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiMzI3N2JlODU2Zjg3NGJjYTZlZjI5YTc1ODg2NDdmZDljMGY0ZDI3Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2NsYXNzZXMtZXhwZWN0ZWQu
anMKKysrIC9kZXYvbnVsbApAQCAtMSwxOTkgKzAsMCBAQAotY2xhc3MgeCB7fQotCi1jbGFzcyBG
b28ge30KLWNsYXNzIEZvbyBleHRlbmRzIEJhciB7fQotCi1jbGFzcyBGb28gewotICAgIGNvbnN0
cnVjdG9yKCkKLSAgICB7Ci0gICAgICAgIDEKLSAgICB9Ci19Ci0KLWNsYXNzIEZvbyB7Ci0gICAg
Y29uc3RydWN0b3IoKQotICAgIHsKLSAgICAgICAgMQotICAgIH0KLSAgICBzdGF0aWMgc3RhdGlj
TWV0aG9kKCkKLSAgICB7Ci0gICAgICAgIDEKLSAgICB9Ci19Ci0KLWNsYXNzIEZvbyB7Ci0gICAg
c3RhdGljIHN0YXRpY01ldGhvZCgpCi0gICAgewotICAgICAgICAxCi0gICAgfQotfQotCi1jbGFz
cyBGb28gZXh0ZW5kcyBCYXIgewotICAgIGNvbnN0cnVjdG9yKCkKLSAgICB7Ci0gICAgICAgIHN1
cGVyKCkKLSAgICB9Ci19Ci0KLWNsYXNzIEZvbyBleHRlbmRzIEJhciB7Ci0gICAgY29uc3RydWN0
b3IoKQotICAgIHsKLSAgICAgICAgMQotICAgIH0KLSAgICBzdGF0aWMgc3RhdGljTWV0aG9kKCkK
LSAgICB7Ci0gICAgICAgIHN1cGVyLnN0YXRpY01ldGhvZCgpCi0gICAgfQotfQotCi1jbGFzcyBG
b28gZXh0ZW5kcyBCYXIgewotICAgIGNvbnN0cnVjdG9yKCkKLSAgICB7Ci0gICAgICAgIDEKLSAg
ICB9Ci0gICAgc3RhdGljIHN0YXRpY01ldGhvZCgpCi0gICAgewotICAgICAgICBzdXBlci5zdGF0
aWNNZXRob2QoKQotICAgIH0KLSAgICBtZXRob2QxKCkKLSAgICB7Ci0gICAgICAgIDEKLSAgICB9
Ci0gICAgbWV0aG9kMihuYW1lLCB7b3B0aW9uc30pCi0gICAgewotICAgICAgICAxCi0gICAgfQot
ICAgIGdldCBnZXR0ZXIoKQotICAgIHsKLSAgICAgICAgMQotICAgIH0KLSAgICBzZXQgc2V0dGVy
KHgpCi0gICAgewotICAgICAgICAxCi0gICAgfQotICAgICpnZW4xKCkKLSAgICB7Ci0gICAgICAg
IDEKLSAgICB9Ci0gICAgKmdlbjIoKQotICAgIHsKLSAgICAgICAgMQotICAgIH0KLSAgICBhc3lu
YyBhKCkKLSAgICB7Ci0gICAgICAgIDEKLSAgICB9Ci19Ci0KLUEgPSBjbGFzcyBGb28gZXh0ZW5k
cyAoYiA/IEJhciA6IEJhcikgewotICAgIGNvbnN0cnVjdG9yKCkKLSAgICB7Ci0gICAgICAgIG5l
dy50YXJnZXQuc3RhdGljTWV0aG9kKCkKLSAgICB9Ci0gICAgc3RhdGljIHN0YXRpY01ldGhvZCgp
Ci0gICAgewotICAgICAgICBzdXBlci5zdGF0aWNNZXRob2QoKQotICAgIH0KLSAgICBtZXRob2Qx
KCkKLSAgICB7Ci0gICAgICAgIDEKLSAgICB9Ci0gICAgbWV0aG9kMihuYW1lLCB7b3B0aW9uc30p
Ci0gICAgewotICAgICAgICBzdXBlci5tZXRob2QoKQotICAgIH0KLSAgICBnZXQgZ2V0dGVyKCkK
LSAgICB7Ci0gICAgICAgIDEKLSAgICB9Ci0gICAgc2V0IHNldHRlcih4KQotICAgIHsKLSAgICAg
ICAgMQotICAgIH0KLSAgICAqZ2VuMSgpCi0gICAgewotICAgICAgICAxCi0gICAgfQotICAgICpn
ZW4yKCkKLSAgICB7Ci0gICAgICAgIDEKLSAgICB9Ci0gICAgYXN5bmMgYSgpCi0gICAgewotICAg
ICAgICAxCi0gICAgfQotfQotCi1jbGFzcyBGb28gewotICAgIHN0YXRpYyBhc3luYyBhc3luYygp
Ci0gICAgewotICAgICAgICAxCi0gICAgfQotICAgIGFzeW5jIGFzeW5jKCkKLSAgICB7Ci0gICAg
ICAgIDEKLSAgICB9Ci0gICAgYXN5bmMoKQotICAgIHsKLSAgICAgICAgMQotICAgIH0KLX0KLQot
Y2xhc3MgRm9vIHsKLSAgICBhc3luYyAiZiIoKSB7fQotICAgIGFzeW5jIDEoKSB7fQotICAgIGFz
eW5jIFsiZiJdKCkge30KLX0KLQotLy8gRVMyMDE4IC0gQXN5bmMgSXRlcmF0aW9uIC8gQXN5bmMg
R2VuZXJhdG9ycwotCi1jbGFzcyBGb28gewotICAgIHN0YXRpYyBhc3luYyAqYXN5bmMoKQotICAg
IHsKLSAgICAgICAgMQotICAgIH0KLSAgICBhc3luYyAqYXN5bmMoKQotICAgIHsKLSAgICAgICAg
MQotICAgIH0KLSAgICAqYXN5bmMoKQotICAgIHsKLSAgICAgICAgMQotICAgIH0KLX0KLQotY2xh
c3MgRm9vIHsKLSAgICBzdGF0aWMgYXN5bmMgKmFzeW5jKCkKLSAgICB7Ci0gICAgICAgIDEKLSAg
ICB9Ci0gICAgYXN5bmMgKmFzeW5jKCkKLSAgICB7Ci0gICAgICAgIDEKLSAgICB9Ci0gICAgKmFz
eW5jKCkKLSAgICB7Ci0gICAgICAgIDEKLSAgICB9Ci19Ci0KLWNsYXNzIEZvbyB7Ci0gICAgc3Rh
dGljIGFzeW5jICphc3luYygpCi0gICAgewotICAgICAgICAxCi0gICAgfQotICAgIGFzeW5jICph
c3luYygpCi0gICAgewotICAgICAgICAxCi0gICAgfQotICAgICphc3luYygpCi0gICAgewotICAg
ICAgICAxCi0gICAgfQotfQotCi1jbGFzcyBGb28gewotICAgIGFzeW5jICoiZiIoKSB7fQotICAg
IGFzeW5jICoxKCkge30KLSAgICBhc3luYyAqWyJmIl0oKSB7fQotfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMv
Y29tbWEtZXhwcmVzc2lvbnMtZXhwZWN0ZWQuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9y
bWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9jb21tYS1leHByZXNzaW9ucy1leHBl
Y3RlZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2I3YTY5YjUxOWUxZDFlMDNh
NTI5NTI4NTlhMjM5YzdjYTM3MmI1YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMv
amF2YXNjcmlwdC10ZXN0cy9jb21tYS1leHByZXNzaW9ucy1leHBlY3RlZC5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDM5ICswLDAgQEAKLWEoeCwgeSwgeiksCi1iKHgsIHksIHopLAotYyh4LCB5LCB6
KTsKLQotaWYgKGEoeCwgeSwgeiksIGIoeCwgeSwgeiksIGMoeCwgeSwgeikpIHt9Ci0KLXRydWUg
JiYgKGEoeCwgeSwgeiksIGIoeCwgeSwgeiksIGMoeCwgeSwgeikpICYmIHRydWU7Ci0KLSh4LCB5
LCB6KSA9PiB7Ci0gICAgYSh4LCB5LCB6KSwKLSAgICBiKHgsIHksIHopLAotICAgIGMoeCwgeSwg
eikKLX0KLQotKHgsIHksIHopID0+IHsKLSAgICBpZiAoYSh4LCB5LCB6KSwgYih4LCB5LCB6KSwg
Yyh4LCB5LCB6KSkge30KLX0KLQotKHgsIHksIHopID0+IHsKLSAgICB0cnVlICYmIChhKHgsIHks
IHopLCBiKHgsIHksIHopLCBjKHgsIHksIHopKSAmJiB0cnVlOwotfQotCi0oeCwgeSwgeikgPT4g
KGEoeCwgeSwgeiksIGIoeCwgeSwgeiksIGMoeCwgeSwgeikpOwotCi0oeCwgeSwgeikgPT4gdHJ1
ZSAmJiAoYSh4LCB5LCB6KSwgYih4LCB5LCB6KSwgYyh4LCB5LCB6KSkgJiYgdHJ1ZTsKLQotZnVu
Y3Rpb24gZm9vKHgsIHksIHopIHsKLSAgICBhKHgsIHksIHopLAotICAgIGIoeCwgeSwgeiksCi0g
ICAgYyh4LCB5LCB6KQotfQotCi1mdW5jdGlvbiBmb28oeCwgeSwgeikgewotICAgIGlmIChhKHgs
IHksIHopLCBiKHgsIHksIHopLCBjKHgsIHksIHopKSB7fQotfQotCi1mdW5jdGlvbiBmb28oeCwg
eSwgeikgewotICAgIHRydWUgJiYgKGEoeCwgeSwgeiksIGIoeCwgeSwgeiksIGMoeCwgeSwgeikp
ICYmIHRydWU7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGlu
Zy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9jb21tZW50cy1hbmQtcHJlc2VydmUtbmV3bGlu
ZXMtZXhwZWN0ZWQuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJj
ZXMvamF2YXNjcmlwdC10ZXN0cy9jb21tZW50cy1hbmQtcHJlc2VydmUtbmV3bGluZXMtZXhwZWN0
ZWQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwYWVhMDhkMWU3NmMzODc1NjQ5
MWYzY2M3OTdiODA4ODRmMzdmYTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2ph
dmFzY3JpcHQtdGVzdHMvY29tbWVudHMtYW5kLXByZXNlcnZlLW5ld2xpbmVzLWV4cGVjdGVkLmpz
CisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLy8gVE9QCi0KLS8vIFRoaXMgaXMgYSBs
aW5lIGNvbW1lbnQuCi0xOwotCi0vKiBUaGlzIGlzIGEgYmxvY2sgY29tbWVudCAqLwotMjsKLQot
Ly8gTGluZSAtIGJlZm9yZQotLyogQmxvY2sgKi8KLS8vIExpbmUgLSBhZnRlcgotMzsKLQotLyog
QmxvY2sgLSBiZWZvcmUgKi8KLS8vIExpbmUKLS8qIEJsb2NrIC0gYWZ0ZXIgKi8KLTQ7Ci0KLS8q
Ci0gKiBNdWx0aWxpbmUgQmxvY2sKLSAqLwotNTsKLQotLy8gLS0tLS0tLS0tLS0tLS0tCi0vLyAg
IExpbmUgSGVhZGVyCi0vLyAtLS0tLS0tLS0tLS0tLS0KLTY7Ci0KLTc7IC8vIENvbW1lbnQgb24g
bGluZSB3aXRoIGNvZGUuCi0KLS8vIExlYWRpbmcgY29tbWVudCBmb3IgeC4KLXZhciB4ID0gMTsg
Ly8gVHJhaWxpbmcgY29tbWVudCBmb3IgeC4KLS8vIExlYWRpbmcgY29tbWVudCBmb3IgeS4KLXZh
ciB5ID0gMjsgLy8gVHJhaWxpbmcgY29tbWVudCBmb3IgeS4KLQotdmFyIHggPSAxOyAvLyBUcmFp
bGluZyBjb21tZW50IGZvciB4LgotdmFyIHkgPSAyOyAvLyBUcmFpbGluZyBjb21tZW50IGZvciB5
LgotCi0vLyBMZWFkaW5nIGNvbW1lbnQgZm9yIHguCi12YXIgeCA9IDE7Ci0vLyBMZWFkaW5nIGNv
bW1lbnQgZm9yIHkuCi12YXIgeSA9IDI7Ci0KLS8qIEFscGhhICovCi12YXIgeCA9IDE7IC8qIEFs
cGhhICovIC8qIEJldGEgKi8KLS8qIEdhbW1hICovCi0KLShmdW5jdGlvbigpIHsKLSAgICAvLyBJ
bmNyZW1lbnQuCi0gICAgeCsrOwotICAgIHkrKzsKLQotICAgIC8vIFN1bSB0aGUgbGlzdC4KLSAg
ICBsZXQgc3VtID0gMDsKLSAgICBmb3IgKGxldCB4IG9mIGxpc3QpCi0gICAgICAgIHN1bSArPSB4
OwotCi0gICAgLy8gUmV0dXJuIHJlc3VsdC4KLSAgICByZXR1cm4gc3VtOwotfSkoKTsKLQotLy8g
Qk9UVE9NCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNv
dXJjZXMvamF2YXNjcmlwdC10ZXN0cy9jb21tZW50cy1vbmx5LWV4cGVjdGVkLmpzIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvY29t
bWVudHMtb25seS1leHBlY3RlZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjc5
MDgyMjg2MDA1YjBkODU4NjNmZTA1MWIyNWM0MGMxODYzODA2Zi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0
dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9jb21tZW50cy1vbmx5LWV4cGVjdGVkLmpz
CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotLy8gQ29tbWVudCBsaW5lIG9uZS4KLQot
Ly8gQ29tbWVudCBsaW5lIHRocmVlLgotCi0vKgotICogQ29tbWVudCBzcGFubmluZyBsaW5lIDUt
NgotICovCi0vLyBBbm90aGVyIGNvbW1lbnQgb24gbGluZSA2LgotCi0vKiBUaGUgZW5kICovCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2
YXNjcmlwdC10ZXN0cy9kby13aGlsZS1zdGF0ZW1lbnQtZXhwZWN0ZWQuanMgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9kby13aGls
ZS1zdGF0ZW1lbnQtZXhwZWN0ZWQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYx
MTdjMzg3MTc3OTljY2ZjMDkwMGE4NzdhNjAyZjcwYjViYzMyYjUuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1h
dHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvZG8td2hpbGUtc3RhdGVtZW50LWV4cGVj
dGVkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotZG8ge30gd2hpbGUgKDEpOwot
ZG8ge30gd2hpbGUgKCgxKSk7Ci0KLWRvIHsKLSAgICAxCi19IHdoaWxlICgxKTsKLWRvIHsKLSAg
ICAxCi19IHdoaWxlICgoMSkpOwotCi1kbyB7fSB3aGlsZSAoMSk7Ci1kbyB7fSB3aGlsZSAoMSk7
Ci0KLWRvIHsKLSAgICAxCi19IHdoaWxlICgxKTsKLWRvIHsKLSAgICAxCi19IHdoaWxlICgxKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9q
YXZhc2NyaXB0LXRlc3RzL2Zvci1zdGF0ZW1lbnRzLWV4cGVjdGVkLmpzIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvZm9yLXN0YXRl
bWVudHMtZXhwZWN0ZWQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjODg3YzU3
YmVkMzIwMTRmZDgyMDM1ZTU3MjNmZDMxMDlkYmM5YmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcv
cmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvZm9yLXN0YXRlbWVudHMtZXhwZWN0ZWQuanMKKysr
IC9kZXYvbnVsbApAQCAtMSwxODUgKzAsMCBAQAotZm9yICg7OykKLSAgICA7Ci1mb3IgKDs7KQot
ICAgIDEKLWZvciAoMTs7KQotICAgIDEKLWZvciAoOyAxOykKLSAgICAxCi1mb3IgKDs7IDEpCi0g
ICAgMQotCi1mb3IgKDs7KSB7fQotZm9yICgxOzspIHt9Ci1mb3IgKDsgMTspIHt9Ci1mb3IgKDs7
IDEpIHt9Ci0KLWZvciAoOzspIHsKLSAgICAxCi19Ci1mb3IgKDE7OykgewotICAgIDEKLX0KLWZv
ciAoOyAxOykgewotICAgIDEKLX0KLWZvciAoOzsgMSkgewotICAgIDEKLX0KLQotZm9yICg7OykK
LSAgICA7Ci1mb3IgKDs7KQotICAgIDsKLWZvciAoOzspIHt9Ci1mb3IgKDs7KSB7fQotCi1mb3Ig
KDs7KSB7Ci0gICAgMQotfQotMQoteAotLy8gZm9yCi0KLWZvciAoMTsgMjsgMykKLSAgICAxOwot
Zm9yICgxOyAyOyAzKSB7Ci0gICAgMQotfQotOwotCi1mb3IgKCgxKTsoMik7KDMpKQotICAgIDEK
LWZvciAoKDEpOygyKTsoMykpIHsKLSAgICAxCi19Ci0KLWZvciAoKDEpOygyKTsoMykpCi0gICAg
MQotZm9yICgoMSk7KDIpOygzKSkgewotICAgIDEKLX0KLQotZm9yICgxOyAyOyAzKQotICAgIDEK
LWZvciAoMTsgMjsgMykgewotICAgIDEKLX0KLQotZm9yICh2YXIgeCA9IDE7IHggPCAxMDsgKyt4
KQotICAgIDE7Ci1mb3IgKHZhciB4ID0gMTsgeCA8IGxlbjsgKyt4KQotICAgIDE7Ci1mb3IgKHZh
ciB4ID0gMSwgbGVuID0gMTA7IHggPCBsZW47ICsreCkKLSAgICAxOwotZm9yICh2YXIgeCA9IDEs
IGxlbiA9IDEwOyBsZW4gPSAyMCwgeCA8IGxlbjsgKyt4KQotICAgIDE7Ci1mb3IgKHZhciB4ID0g
MSwgbGVuID0gMTA7IGxlbiA9IDIwLCB4IDwgbGVuOyBsZW4gPSAxNSwgKyt4KQotICAgIDE7Ci0K
LWZvciAoeCA9IDE7IHggPCAxMDsgKyt4KSB7Ci0gICAgMQotfQotZm9yICh4ID0gMTsgeCA8IGxl
bjsgKyt4KSB7Ci0gICAgMQotfQotZm9yICh4ID0gMSwgbGVuID0gMTA7IHggPCBsZW47ICsreCkg
ewotICAgIDEKLX0KLWZvciAoeCA9IDEsIGxlbiA9IDEwOyBsZW4gPSAyMCwgeCA8IGxlbjsgKyt4
KSB7Ci0gICAgMQotfQotZm9yICh4ID0gMSwgbGVuID0gMTA7IGxlbiA9IDIwLCB4IDwgbGVuOyBs
ZW4gPSAxNSwgKyt4KSB7Ci0gICAgMQotfQotCi1mb3IgKHZhciB4ID0gMTsgeCA8IDEwOyArK3gp
IHsKLSAgICAxCi19Ci1mb3IgKHZhciB4ID0gMTsgeCA8IGxlbjsgKyt4KSB7Ci0gICAgMQotfQot
Zm9yICh2YXIgeCA9IDEsIGxlbiA9IDEwOyB4IDwgbGVuOyArK3gpIHsKLSAgICAxCi19Ci1mb3Ig
KHZhciB4ID0gMSwgbGVuID0gMTA7IGxlbiA9IDIwLCB4IDwgbGVuOyBsZW4gPSAxNSwgKyt4KSB7
Ci0gICAgMQotfQotCi1mb3IgKHZhciB4ID0gMTsgeCA8IDEwOyArK3gpIHsKLSAgICAxCi19Ci1m
b3IgKHZhciB4ID0gMTsgeCA8IGxlbjsgKyt4KSB7Ci0gICAgMQotfQotZm9yICh2YXIgeCA9IDEs
IGxlbiA9IDEwOyB4IDwgbGVuOyArK3gpIHsKLSAgICAxCi19Ci1mb3IgKHZhciB4ID0gMSwgbGVu
ID0gMTA7IGxlbiA9IDIwLCB4IDwgbGVuOyBsZW4gPSAxNSwgKyt4KSB7Ci0gICAgMQotfQotCi1m
b3IgKDE7IDI7IDMpCi0gICAgZm9yICg0OyA1OyA2KQotICAgICAgICBmb3IgKDc7IDg7IDkpCi0g
ICAgICAgICAgICA7Ci1mb3IgKDE7IDI7IDMpIHsKLSAgICBpZiAodHJ1ZSkgewotICAgICAgICBm
b3IgKDQ7IDU7IDYpCi0gICAgICAgICAgICAwCi0gICAgfQotICAgIGZvciAoNzsgODsgOSkKLSAg
ICAgICAgOwotfQotCi1mb3IgKHZhciB4LCB5LCB6OyAheCAmJiB5OyArK3gsICsreSkge30KLWZv
ciAodmFyIHggPSBbXSwgeSA9IFsxLCAyLCAzXTsgdHJ1ZTsgZmFsc2UpIHt9Ci0KLS8vIGZvci4u
aW4KLQotZm9yICh4IGluIG9iaikKLSAgICA7Ci1mb3IgKHggaW4gKG9iaikpCi0gICAgOwotZm9y
ICh2YXIgeCBpbiB3aW5kb3cpCi0gICAgOwotZm9yICh2YXIgeCBpbiAod2luZG93KSkKLSAgICA7
Ci1mb3IgKHZhciB7Zm9vfSBpbiB3aW5kb3cpCi0gICAgOwotZm9yICh2YXIgW3gsIHldIGluIFsx
LCAyLCAzXSkKLSAgICA7Ci0KLS8vIGZvci4ub2YKLQotZm9yICh4IG9mIFsxLCAyLCAzXSkKLSAg
ICA7Ci1mb3IgKHggb2YgKFsxLCAyLCAzXSkpCi0gICAgOwotZm9yICh2YXIgeCBvZiB3aW5kb3cp
Ci0gICAgOwotZm9yICh2YXIgeCBvZiAod2luZG93KSkKLSAgICA7Ci1mb3IgKHZhciB7Zm9vfSBv
ZiB3aW5kb3cpCi0gICAgOwotZm9yICh2YXIgW3gsIHldIG9mIFsxLCAyLCAzXSkKLSAgICA7Ci0K
LS8vIEVTMjAxOCAtIEFzeW5jIEl0ZXJhdGlvbiAvIEFzeW5jIEdlbmVyYXRvcnMKLQotYXN5bmMg
ZnVuY3Rpb24gZigpIHsKLSAgICBmb3IgYXdhaXQgKHggb2YgW10pCi0gICAgICAgIDsKLSAgICBm
b3IgYXdhaXQgKHggb2YgWzEsIDIsIDNdKQotICAgICAgICA7Ci0gICAgZm9yIGF3YWl0ICh4IG9m
IChbMSwgMiwgM10pKQotICAgICAgICA7Ci0gICAgZm9yIGF3YWl0ICh2YXIgeCBvZiB3aW5kb3cp
Ci0gICAgICAgIDsKLSAgICBmb3IgYXdhaXQgKHZhciB4IG9mICh3aW5kb3cpKQotICAgICAgICA7
Ci0gICAgZm9yIGF3YWl0IChsZXQge2Zvb30gb2Ygd2luZG93KQotICAgICAgICA7Ci0gICAgZm9y
IGF3YWl0IChsZXQgW3gsIHldIG9mIFsxLCAyLCAzXSkKLSAgICAgICAgOwotfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQt
dGVzdHMvZnVuY3Rpb25zLWV4cGVjdGVkLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1h
dHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvZnVuY3Rpb25zLWV4cGVjdGVkLmpzCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZWY4ZTc2ZTgwZWRjMDliNDg5MWIzYWEwZGQ5
ODVjZjBjMjBjZjVlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0
LXRlc3RzL2Z1bmN0aW9ucy1leHBlY3RlZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCww
IEBACi0vLyBDYWxscwotCi1mb28oKTsKLWZvbygxKTsKLWZvbygxLCAyKTsKLWZvbygxLCAyLCAp
OwotZm9vKDEsIDIsIDMpOwotZm9vKGZvbygxKSk7Ci1mb28oZm9vKDEpLCBmb28oMiwgMykpOwot
Zm9vKC4uLnNwcmVhZCk7Ci1mb28oeCwgLi4uc3ByZWFkKTsKLWZvbyh4LCAuLi5mb28oKSk7Ci0K
LWZvbyh7Ci0gICAgYTogMSwKLSAgICBiOiAyLAotICAgIGM6IDMKLX0pOwotCi1mb28oMSwgMiwg
MywgZnVuY3Rpb24oZSkgewotICAgIGUuZm9vKCkKLX0pOwotCi1mb28oZnVuY3Rpb24oZSkgewot
ICAgIGUuZm9vKCkKLX0sIGZ1bmN0aW9uKGUpIHsKLSAgICBlLmJhcigpCi19KTsKLQotLy8gQmFz
aWMgRnVuY3Rpb25zCi0KLWZ1bmN0aW9uIGYoKSB7fQotKGZ1bmN0aW9uKCkge30pOwotKGZ1bmN0
aW9uKCkge30pKCk7Ci0oZnVuY3Rpb24gZigpIHt9KTsKLShmdW5jdGlvbiBmKCkge30pKCk7Ci0K
LWZ1bmN0aW9uIGYoKSB7Ci0gICAgMQotfQotKGZ1bmN0aW9uKCkgewotICAgIDEKLX0pOwotKGZ1
bmN0aW9uKCkgewotICAgIDEKLX0pKCk7Ci0oZnVuY3Rpb24gZigpIHsKLSAgICAxCi19KTsKLShm
dW5jdGlvbiBmKCkgewotICAgIDEKLX0pKCk7Ci0KLS8vIFBhcmFtZXRlcnMKLQotZnVuY3Rpb24g
Zm9vKGEsIGIsIGMpIHsKLSAgICAxCi19Ci0KLWZ1bmN0aW9uIGZvbyhhPTEsIGIsIGMpIHsKLSAg
ICAxCi19Ci0KLWZ1bmN0aW9uIGZvbyhhPTEsIGI9MiwgYz0zKSB7Ci0gICAgMQotfQotCi1mdW5j
dGlvbiBmb28oYSwgLi4ucmVzdCkgewotICAgIDEKLX0KLQotZnVuY3Rpb24gZm9vKGE9MSwgLi4u
cmVzdCkgewotICAgIDEKLX0KLQotZnVuY3Rpb24gZm9vKHthLCBifSkgewotICAgIDEKLX0KLQot
ZnVuY3Rpb24gZm9vKFthLCBiXSkgewotICAgIDEKLX0KLQotZnVuY3Rpb24gZm9vKFthLCBiLCBd
KSB7Ci0gICAgMQotfQotCi0vLyBNZXRob2RzCi0KLW8gPSB7Ci0gICAgcHJvcDogZnVuY3Rpb24o
KSB7fSwKLSAgICBtZXRob2QoKSB7fSwKLSAgICBnZXQgZ2V0dGVyKCkge30sCi0gICAgc2V0IHNl
dHRlcih4KSB7fSwKLSAgICAqZ2VuMSgpIHt9LAotICAgICpnZW4yKCkge30sCi0gICAgYXN5bmMg
YSgpIHt9Ci19Ci0KLW8gPSB7Ci0gICAgcHJvcDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIDEKLSAg
ICB9LAotICAgIG1ldGhvZCgpIHsKLSAgICAgICAgMQotICAgIH0sCi0gICAgZ2V0IGdldHRlcigp
IHsKLSAgICAgICAgMQotICAgIH0sCi0gICAgc2V0IHNldHRlcih4KSB7Ci0gICAgICAgIDEKLSAg
ICB9LAotICAgICpnZW4xKCkgewotICAgICAgICAxCi0gICAgfSwKLSAgICAqZ2VuMigpIHsKLSAg
ICAgICAgMQotICAgIH0sCi0gICAgYXN5bmMgYSgpIHsKLSAgICAgICAgMQotICAgIH0KLX0KLS8v
IE11bHRpcGxlIC8gTmVzdGVkCi0KLWZ1bmN0aW9uIGYoKSB7fQotZnVuY3Rpb24gZigpIHt9Ci0K
LWZ1bmN0aW9uIG91dGVyKCkgewotICAgIDE7Ci0gICAgZnVuY3Rpb24gaW5uZXIoKSB7Ci0gICAg
ICAgIDIKLSAgICB9Ci0gICAgMwotfQotCi0vLyBBc3luYyAvIEF3YWl0Ci0KLWFzeW5jIGZ1bmN0
aW9uIGZvbygpIHt9Ci1hc3luYyBmdW5jdGlvbiBmb28oKSB7Ci0gICAgMQotfQotYXN5bmMgZnVu
Y3Rpb24gZm9vKCkgewotICAgIGF3YWl0IGZvbygpCi19Ci1vID0gewotICAgIGFzeW5jIGFzeW5j
KCkge30sCi0gICAgYXN5bmMoKSB7fSwKLSAgICBhc3luYzogMQotfQotbyA9IHsKLSAgICBhc3lu
YyAxKCkge30KLX0KLW8gPSB7Ci0gICAgYXN5bmMgImZvbyIoKSB7fQotfQotbyA9IHsKLSAgICBh
c3luYyBbImZvbyJdKCkge30KLX0KLW8gPSB7Ci0gICAgZm9vOiBhc3luYyBmdW5jdGlvbigpIHt9
Ci19Ci0vLyBDb21tYXMKLQotZnVuY3Rpb24gZm9vKCkgewotICAgIGEoKSwKLSAgICBiKCksCi0g
ICAgYygpCi19Ci0KLS8vIFJldHVybgotCi1mdW5jdGlvbiBmb28oKSB7Ci0gICAgcmV0dXJuCi19
Ci1mdW5jdGlvbiBmb28oKSB7Ci0gICAgcmV0dXJuIDQyCi19Ci1mdW5jdGlvbiBmb28oKSB7Ci0g
ICAgcmV0dXJuIDQyLCBhKCksIGIoKQotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvZ2VuZXJhdG9ycy1leHBl
Y3RlZC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZh
c2NyaXB0LXRlc3RzL2dlbmVyYXRvcnMtZXhwZWN0ZWQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGMzN2I3ZmRmODY0MGU2NTI4YzY4YjA5Y2ZiZmYzODU3NTA5ZjE0MDguLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvZ2VuZXJhdG9ycy1l
eHBlY3RlZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLWZ1bmN0aW9uKiBnZW4o
KSB7fQotZnVuY3Rpb24qIGdlbigpIHsKLSAgICAxCi19Ci1mdW5jdGlvbiogZ2VuKCkge30KLWZ1
bmN0aW9uKiBnZW4oKSB7Ci0gICAgMQotfQotZnVuY3Rpb24qIGdlbigpIHt9Ci1mdW5jdGlvbiog
Z2VuKCkgewotICAgIDEKLX0KLQotZnVuY3Rpb24qIGdlbigpIHsKLSAgICB5aWVsZAotfQotZnVu
Y3Rpb24qIGdlbigpIHsKLSAgICB5aWVsZCB4Ci19Ci1mdW5jdGlvbiogZ2VuKCkgewotICAgIHlp
ZWxkICJ4IgotfQotZnVuY3Rpb24qIGdlbigpIHsKLSAgICB5aWVsZCBbeF0KLX0KLWZ1bmN0aW9u
KiBnZW4oKSB7Ci0gICAgeWllbGQgZm9vKCkKLX0KLQotZnVuY3Rpb24qIGdlbihhPTEsIFtiLCBj
XSwgLi4ucmVzdCkgewotICAgIHJldHVybiB5aWVsZCB5aWVsZCBmb28oImZvbyIpCi19Ci0KLS8v
IEVTMjAxOCAtIEFzeW5jIEl0ZXJhdGlvbiAvIEFzeW5jIEdlbmVyYXRvcnMKLQotYXN5bmMgZnVu
Y3Rpb24qIGdlbigpIHt9Ci1hc3luYyBmdW5jdGlvbiogZ2VuKCkgewotICAgIDEKLX0KLWFzeW5j
IGZ1bmN0aW9uKiBnZW4oKSB7fQotYXN5bmMgZnVuY3Rpb24qIGdlbigpIHsKLSAgICAxCi19Ci1h
c3luYyBmdW5jdGlvbiogZ2VuKCkge30KLWFzeW5jIGZ1bmN0aW9uKiBnZW4oKSB7Ci0gICAgMQot
fQotCi1hc3luYyBmdW5jdGlvbiogZ2VuKCkgewotICAgIHlpZWxkCi19Ci1hc3luYyBmdW5jdGlv
biogZ2VuKCkgewotICAgIHlpZWxkIHgKLX0KLWFzeW5jIGZ1bmN0aW9uKiBnZW4oKSB7Ci0gICAg
eWllbGQgIngiCi19Ci1hc3luYyBmdW5jdGlvbiogZ2VuKCkgewotICAgIHlpZWxkIFt4XQotfQot
YXN5bmMgZnVuY3Rpb24qIGdlbigpIHsKLSAgICB5aWVsZCBmb28oKQotfQotCi1hc3luYyBmdW5j
dGlvbiogZ2VuKGE9MSwgW2IsIGNdLCAuLi5yZXN0KSB7Ci0gICAgcmV0dXJuIHlpZWxkIHlpZWxk
IGZvbygiZm9vIikKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0
aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2lmLXN0YXRlbWVudC1leHBlY3RlZC5qcyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRl
c3RzL2lmLXN0YXRlbWVudC1leHBlY3RlZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYzYyMGRlNmY0MjI3Y2RkM2FmZjAwOTMzOWFjY2MzOTZhYzkxNjk2MC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
Zm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9pZi1zdGF0ZW1lbnQtZXhwZWN0
ZWQuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNzAgKzAsMCBAQAotaWYgKHRydWUpCi0gICAgMQot
aWYgKHRydWUpCi0gICAgMTsKLWlmICh0cnVlKSB7fQotaWYgKHRydWUpIHt9Ci14Ci1pZiAodHJ1
ZSkge30KLWlmICh0cnVlKSB7fQoteAotaWYgKHRydWUpIHsKLSAgICAxCi19Ci1pZiAodHJ1ZSkg
ewotICAgIDEKLX0KLXgKLWlmICh0cnVlKSB7fSBlbHNlIHt9Ci1pZiAodHJ1ZSkge30gZWxzZSB7
fQoteAotaWYgKHRydWUpIHsKLSAgICAxCi19IGVsc2Uge30KLWlmICh0cnVlKSB7Ci0gICAgMQot
fSBlbHNlIHsKLSAgICAyCi19Ci1pZiAodHJ1ZSkgewotICAgIDEKLX0gZWxzZSB7Ci0gICAgMgot
fQoteAotaWYgKHRydWUpIHt9IGVsc2UgaWYgKHRydWUpIHt9Ci1pZiAodHJ1ZSkgewotICAgIDEK
LX0gZWxzZSBpZiAodHJ1ZSkge30KLWlmICh0cnVlKSB7Ci0gICAgMQotfSBlbHNlIGlmICh0cnVl
KSB7Ci0gICAgMgotfQotaWYgKHRydWUpCi0gICAgMTsKLWVsc2UgaWYgKHRydWUpCi0gICAgMgot
aWYgKHRydWUpIHsKLSAgICAxCi19IGVsc2UgaWYgKHRydWUpCi0gICAgMjsKLWVsc2UKLSAgICAz
Ci1pZiAodHJ1ZSkgewotICAgIDEKLX0gZWxzZSBpZiAodHJ1ZSkKLSAgICAyOwotZWxzZSB7Ci0g
ICAgMwotfQotCi1pZiAodHJ1ZSkge30KLWlmICgodHJ1ZSkpCi0gICAgOwotaWYgKDEpCi0gICAg
OwotaWYgKDIpCi0gICAgOwotCi1pZiAodHJ1ZSkKLSAgICBpZiAoZmFsc2UpCi0gICAgICAgIDE7
Ci0gICAgZWxzZQotICAgICAgICAyOwotCi1pZiAodHJ1ZSkKLSAgICBpZiAodHJ1ZSkKLSAgICAg
ICAgaWYgKHRydWUpCi0gICAgICAgICAgICBpZiAodHJ1ZSkKLSAgICAgICAgICAgICAgICAxOwot
Ci1pZiAodHJ1ZSkKLSAgICBpZiAodHJ1ZSkKLSAgICAgICAgaWYgKHRydWUpCi0gICAgICAgICAg
ICBpZiAodHJ1ZSkKLSAgICAgICAgICAgICAgICAxOwotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIDI7Ci0KLWlmICh0cnVlKSB7Ci0gICAgaWYgKHRydWUpIHsKLSAgICAgICAgMTsK
LSAgICAgICAgaWYgKHRydWUpIHsKLSAgICAgICAgICAgIDIKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIDMKLSAgICAgICAgfQotICAgICAgICA0Ci0gICAgfQotICAgIDUKLX0KLQotaWYg
KHRydWUpIHsKLSAgICBpZiAodHJ1ZSkgewotICAgICAgICAxOwotICAgICAgICBpZiAodHJ1ZSkK
LSAgICAgICAgICAgIDI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIDM7Ci0gICAgICAgIDQK
LSAgICB9Ci0gICAgNQotfQotCi1pZiAodHJ1ZSkgewotICAgIGlmICh0cnVlKQotICAgICAgICAx
OwotfSBlbHNlIGlmICh0cnVlKQotICAgIGlmICh0cnVlKQotICAgICAgICAyCi0KLWlmICh0cnVl
KQotICAgIGlmICh0cnVlKQotICAgICAgICBhbGVydCgxKTsKLSAgICBlbHNlIGlmICh0cnVlKQot
ICAgICAgICBhbGVydCgyKTsKLSAgICBlbHNlCi0gICAgICAgIGFsZXJ0KDMpOwotCi1pZiAodHJ1
ZSkKLSAgICBpZiAodHJ1ZSkgewotICAgICAgICBhbGVydCgxKQotICAgIH0gZWxzZQotICAgICAg
ICBhbGVydCgyKTsKLQotaWYgKHRydWUpCi0gICAgaWYgKHRydWUpIHsKLSAgICAgICAgdmFyIGEg
PSAxOwotICAgICAgICB2YXIgYiA9IHsKLSAgICAgICAgICAgIGE6IDEKLSAgICAgICAgfTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgYWxlcnQoMik7Ci0KLWlmICh0cnVlKSB7Ci0gICAgaWYgKGZhbHNl
KQotICAgICAgICBpZiAodHJ1ZSkgewotICAgICAgICAgICAgdHJ1ZTsKLSAgICAgICAgfQotICAg
IDI7Ci19Ci0KLWlmICh0cnVlKSB7Ci0gICAgaWYgKGZhbHNlKQotICAgICAgICBpZiAodHJ1ZSkK
LSAgICAgICAgICAgIHRydWU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZhbHNlOwotICAg
IGVsc2UgaWYgKHRydWUpCi0gICAgICAgIHRydWU7Ci0gICAgZWxzZQotICAgICAgICBmYWxzZTsK
LX0KLQotaWYgKHRydWUpCi0gICAgaWYgKHRydWUpCi0gICAgICAgIDE7Ci0KLWlmICgxLCAyLCAz
KSB7fQotaWYgKDEsIDIsIDMpIHt9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
Zm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9pbXBvcnQtZXhwZWN0ZWQuanMg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10
ZXN0cy9pbXBvcnQtZXhwZWN0ZWQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkw
YzQ4MDM2NmVjNTY4MzkyMmI3YzIzODk1MmI3YjgwZmI3ZTI3OGQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1h
dHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvaW1wb3J0LWV4cGVjdGVkLmpzCisrKyAv
ZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1pbXBvcnQoIi4vQ29jb2EuanMiKTsKLWltcG9ydCho
b3N0ICsgIi9Db2NvYS5qcyIpOwotCi1hc3luYyBmdW5jdGlvbiBsb2FkKCkgewotICAgIHJldHVy
biBhd2FpdCBpbXBvcnQoIi4vQ2FwcHVjY2luby5qcyIpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvbGFi
ZWwtYnJlYWstY29udGludWUtYmxvY2stZXhwZWN0ZWQuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9sYWJlbC1icmVhay1jb250
aW51ZS1ibG9jay1leHBlY3RlZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Ji
Y2JhN2UxMGE3ZTg3NzVkMjNmZGY4NmMzN2U2YWFhYzI2MzRmNS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0
dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9sYWJlbC1icmVhay1jb250aW51ZS1ibG9j
ay1leHBlY3RlZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi17fQotOwotewot
ICAgIDEKLX0KLTsKLXsKLSAgICB7fQotfQotOwotewotICAgIHsKLSAgICAgICAgMQotICAgIH0K
LX0KLTsKLXsKLSAgICAxOwotICAgIHsKLSAgICAgICAgMgotICAgIH0KLSAgICAzCi19Ci00Owot
ewotICAgIGxhYmVsOgotICAgIDEKLX0KLTsKLQotbGFiZWwxOgotbGFiZWwyOgotdHJ1ZTsKLQot
bGFiZWw6Ci1mb3IgKDs7KQotICAgIGNvbnRpbnVlOwotbGFiZWw6Ci1mb3IgKDs7KSB7Ci0gICAg
Y29udGludWU7Ci19Ci0KLWxhYmVsOgotd2hpbGUgKDEpCi0gICAgY29udGludWU7Ci1sYWJlbDoK
LXdoaWxlICgxKSB7Ci0gICAgY29udGludWU7Ci19Ci0KLWxhYmVsOgotZm9yICg7OykKLSAgICBi
cmVhazsKLWxhYmVsOgotZm9yICg7OykgewotICAgIGJyZWFrOwotfQotCi1sYWJlbDoKLXdoaWxl
ICgxKQotICAgIGJyZWFrOwotbGFiZWw6Ci13aGlsZSAoMSkgewotICAgIGJyZWFrOwotfQotCi1s
YWJlbDoKLWZvciAoOzspCi0gICAgY29udGludWUgbGFiZWw7Ci1sYWJlbDoKLWZvciAoOzspIHsK
LSAgICBjb250aW51ZSBsYWJlbDsKLX0KLQotbGFiZWw6Ci13aGlsZSAoMSkKLSAgICBjb250aW51
ZSBsYWJlbDsKLWxhYmVsOgotd2hpbGUgKDEpIHsKLSAgICBjb250aW51ZSBsYWJlbDsKLX0KLQot
bGFiZWw6Ci1mb3IgKDs7KQotICAgIGJyZWFrIGxhYmVsOwotbGFiZWw6Ci1mb3IgKDs7KSB7Ci0g
ICAgYnJlYWsgbGFiZWw7Ci19Ci0KLWxhYmVsOgotd2hpbGUgKDEpCi0gICAgYnJlYWsgbGFiZWw7
Ci1sYWJlbDoKLXdoaWxlICgxKSB7Ci0gICAgYnJlYWsgbGFiZWw7Ci19Ci0KLW91dGVyOgotd2hp
bGUgKHRydWUpIHsKLSAgICBpZiAoZmFsc2UpCi0gICAgICAgIGNvbnRpbnVlOwotICAgIGlmICh0
cnVlKQotICAgICAgICBjb250aW51ZSBvdXRlcjsKLSAgICBicmVhazsKLX0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRl
c3RzL2xvZ2ljLWV4cHJlc3Npb25zLWV4cGVjdGVkLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvbG9naWMtZXhwcmVzc2lvbnMt
ZXhwZWN0ZWQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkYjZmMjgwNjUzZWEx
ZDI1MWRkMTI3YjhlYTNkYjI4ODExYmJkOGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3Vy
Y2VzL2phdmFzY3JpcHQtdGVzdHMvbG9naWMtZXhwcmVzc2lvbnMtZXhwZWN0ZWQuanMKKysrIC9k
ZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLTEgJiYgMTsKLTEgfHwgMTsKLTEgJiYgMSB8fCAxOwot
MSB8fCAxICYmIDE7Ci0xIHx8ICgxKSAmJiAxOwotKDEpIHx8ICgxKSAmJiAxOwotKCgxKSB8fCAo
MSkpICYmIDE7Ci0oMSkgfHwgKCgxKSAmJiAxKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL21vZHVsZXMtZXhw
ZWN0ZWQuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2
YXNjcmlwdC10ZXN0cy9tb2R1bGVzLWV4cGVjdGVkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA4N2EyMmRjMTI2NDMwYzFkYTMzNmU1YTkzZWE2MmIyMDlhNjUyOWYzLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL21vZHVsZXMtZXhwZWN0
ZWQuanMKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1pbXBvcnQgIm1vZHVsZSI7Ci1p
bXBvcnQgeCBmcm9tICJtb2R1bGUiOwotaW1wb3J0IHsgeCB9IGZyb20gIm1vZHVsZSI7Ci1pbXBv
cnQgeyBhLCBiLCBjIH0gZnJvbSAibW9kdWxlIjsKLWltcG9ydCB7IGEsIGIsIGMsICB9IGZyb20g
Im1vZHVsZSI7Ci1pbXBvcnQgeyBhIGFzIEEgfSBmcm9tICJtb2R1bGUiOwotaW1wb3J0IHsgYSwg
YSBhcyBBLCBhIH0gZnJvbSAibW9kdWxlIjsKLWltcG9ydCB7IGEgYXMgQSwgYSBhcyBBIH0gZnJv
bSAibW9kdWxlIjsKLWltcG9ydCBhLCB7IGEgfSBmcm9tICJtb2R1bGUiOwotaW1wb3J0IGEsIHsg
YSBhcyBBIH0gZnJvbSAibW9kdWxlIjsKLWltcG9ydCB4LCAqIGFzIEEgZnJvbSAibW9kdWxlIjsK
LWltcG9ydCAqIGFzIEEgZnJvbSAibW9kdWxlIjsKLQotZXhwb3J0IHsgeCB9OwotZXhwb3J0IGxl
dCB4OwotZXhwb3J0IHZhciB4OwotZXhwb3J0IGNvbnN0IHggPSAxOwotZXhwb3J0IGxldCB4ID0g
MSwKLSAgICB5ID0gMTsKLWV4cG9ydCBsZXQge3gsIHksIHp9ID0gbzsKLWV4cG9ydCBsZXQgW3gs
IHksIHpdID0gYTsKLWV4cG9ydCB7IHggYXMgWCB9OwotZXhwb3J0IHsgeCBhcyBYLCBhIGFzIEEg
fTsKLWV4cG9ydCAqIGZyb20gIm1vZHVsZSI7Ci1leHBvcnQgeyB4IH0gZnJvbSAibW9kdWxlIjsK
LWV4cG9ydCB7IHgsIHkgfSBmcm9tICJtb2R1bGUiOwotZXhwb3J0IHsgeCBhcyBBIH0gZnJvbSAi
bW9kdWxlIjsKLWV4cG9ydCB7IHggYXMgZGVmYXVsdCB9OwotZXhwb3J0IGRlZmF1bHQgeDsKLWV4
cG9ydCBkZWZhdWx0IDE7Ci1leHBvcnQgZGVmYXVsdCB7fTsKLWV4cG9ydCBkZWZhdWx0ICgxKTsK
LWV4cG9ydCBkZWZhdWx0IFsxXTsKLWV4cG9ydCBkZWZhdWx0IC9yLzsKLWV4cG9ydCBkZWZhdWx0
IGZ1bmN0aW9uKCkge30KLWV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGYoKSB7fQotZXhwb3J0IGRl
ZmF1bHQgZnVuY3Rpb24qICgpIHt9Ci1leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiogZigpIHt9Ci1l
eHBvcnQgZGVmYXVsdCBjbGFzcyB7fQotZXhwb3J0IGRlZmF1bHQgY2xhc3MgWCB7fQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3Jp
cHQtdGVzdHMvbmV3LWV4cHJlc3Npb24tZXhwZWN0ZWQuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9uZXctZXhwcmVzc2lvbi1l
eHBlY3RlZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDY0ZTM2NWExODMzNGMz
OGUzZDJjNGQ2ODI2OWVlYjZlODhlNDFmMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJj
ZXMvamF2YXNjcmlwdC10ZXN0cy9uZXctZXhwcmVzc2lvbi1leHBlY3RlZC5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDUgKzAsMCBAQAotbmV3IEZvbzsKLW5ldyBGb28oKTsKLW5ldyAoRm9vKSgpOwot
bmV3IChmb28oKSkoKTsKLW5ldyBbRm9vXVswXTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL251bWJlcnMtZXhw
ZWN0ZWQuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2
YXNjcmlwdC10ZXN0cy9udW1iZXJzLWV4cGVjdGVkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAzMzIwNjZjYWViYzlkMDg3NjZmZGZkYmY2YWNkNjA1OTVjMGNmMDcwLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL251bWJlcnMtZXhwZWN0
ZWQuanMKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vLyBCYXNpY3MKLTA7Ci0xOwot
MTIzOwotTmFOOwotSW5maW5pdHk7Ci0KLS8vIEZsb2F0cwotMS4yOwotMWUyOwotMS5lMzsKLTEu
MmUzOwotMS4yZSszOwotMS4yZS0zOwotCi0vLyBEZWNpbWFsIFByZWZpeAotLjI7Ci0uMmUzOwot
LjJlKzM7Ci0uMmUtMzsKLQotLy8gWmVybyBQcmVmaXhlZCAvIExlZ2FjeSBPY3RhbAotMDA7Ci0w
MTA7Ci0wMDk7Ci0KLS8vIEhleCwgT2N0YWwsIEJpbmFyeQotMHgxMDE7Ci0wWDIwMTsKLTBvMTAx
OwotME8yMDE7Ci0wYjEwMTsKLTBCMTAxOwotCi0vLyBFUzIwMTkgLSBOdW1lcmljIFNlcGFyYXRv
cnMKLTFfMl8zXzQ7Ci0xXzAwMF8wMDA7Ci0xMDAwMF8wMDsKLTFfMDAwMDAwXzBfMF8wOwotMV8y
LjNfNGU1XzY7Ci0xXzEuMl8yOwotMV8xZTJfMjsKLTB4MV8wOwotMFgyXzA7Ci0wbzFfMDsKLTBP
Ml8wOwotMGIxXzA7Ci0wQjFfMDsKLQotLy8gRVMyMDIwIC0gQmlnSW50Ci0wbjsKLTEyM247Ci0x
MjM0NTY3ODkxMjM0NTY3ODkxMjM0NTY3ODkxMjM0NTY3ODkxMjM0NTY3ODkxMjM0NTY3ODkxMjM0
NTY3ODluOwotMV8yXzNuOwotMHgxMjNuOwotMHgyMjNuOwotMG8xMjNuOwotME8yMjNuOwotMGIx
MDFuOwotMEIxMDFuOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRp
bmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvb2JqZWN0LWFycmF5LWxpdGVyYWwtZXhwZWN0
ZWQuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNj
cmlwdC10ZXN0cy9vYmplY3QtYXJyYXktbGl0ZXJhbC1leHBlY3RlZC5qcwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMWUxNWExMWZhNWYzZWUwZjdjNDQ2OGE2YWQzOTdhODMwMzE2ZjFk
YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9vYmpl
Y3QtYXJyYXktbGl0ZXJhbC1leHBlY3RlZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAg
QEAKLSh7fSkKLSh7Ci0gICAgYQotfSkKLQotbyA9IHt9Ci1vID0gewotICAgIGEKLX0KLW8gPSB7
Ci0gICAgYSwKLSAgICBiCi19Ci1vID0gewotICAgIGE6IDEKLX0KLW8gPSB7Ci0gICAgYTogMSwK
LSAgICBiOiAyCi19Ci1vID0gewotICAgIGE6IDEsCi0gICAgYjogMiwKLSAgICBjOiAzCi19Ci1v
ID0gewotICAgIGE6IDEsCi0gICAgYjogMiwKLSAgICBjOiAzLAotICAgIGQ6IDQKLX0KLW8gPSB7
Ci0gICAgYTogMSwKLSAgICBiOiAyLAotICAgIGM6IDMsCi0gICAgZDogNCwKLSAgICAuLi5lCi19
Ci1vID0gewotICAgIC4uLmEKLX0KLQotOwotW107Ci1bMSwgMl07Ci0KLWEgPSBbXTsKLWEgPSBb
MV07Ci1hID0gWzEsIDJdOwotYSA9IFsxLCAyLCAzXTsKLWEgPSBbMSwgMiwgMywgNF07Ci1hID0g
WzEsIDIsIDMsIDQsIDVdOwotCi1vID0gewotICAgIG91dGVyOiB7Ci0gICAgICAgIGE6IDEsCi0g
ICAgICAgIGI6IDIKLSAgICB9Ci19Ci0KLW8gPSB7Ci0gICAgW3hdOiB7Ci0gICAgICAgIGE6IDEs
Ci0gICAgICAgIGI6IDIsCi0gICAgICAgIGM6IDMsCi0gICAgICAgIGQ6IDQKLSAgICB9Ci19Ci0K
LW8gPSB7Ci0gICAgYTogewotICAgICAgICBhOiAxCi0gICAgfSwKLSAgICBiOiB7Ci0gICAgICAg
IGE6IDEKLSAgICB9LAotICAgIGM6IHsKLSAgICAgICAgYTogMQotICAgIH0KLX0KLQotbyA9IHsK
LSAgICBhOiBbMSwgMiwgM10KLX0KLQotYSA9IFtbMV0sIFsyXSwgWzNdLCBbNF0sIFs1XV0KLQot
YSA9IFt7Ci0gICAgYTogMSwKLSAgICBiOiAyLAotICAgIGM6IDMsCi0gICAgZDogNAotfV0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZh
c2NyaXB0LXRlc3RzL290aGVyLXN0YXRlbWVudHMtZXhwZWN0ZWQuanMgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9vdGhlci1zdGF0
ZW1lbnRzLWV4cGVjdGVkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjFlMjk2
ZDY2OGE0NTIyODVjYzI1ODY4ZTZlMGI3YTYxNzE1ZmU0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5n
L3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL290aGVyLXN0YXRlbWVudHMtZXhwZWN0ZWQuanMK
KysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi10aHJvdyAxOwotdGhyb3cgeDsKLXRocm93
IFtdOwotdGhyb3cgKDEpOwotdGhyb3cgIngiOwotdGhyb3cgbmV3IHg7Ci10aHJvdyB7Ci0gICAg
YTogMQotfTsKLQotZGVsZXRlIHg7Ci1kZWxldGUgeC5hOwotZGVsZXRlIHhbMF07Ci0KLWRlYnVn
Z2VyCi1kZWJ1Z2dlcjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0
aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3JldHVybi1zdGF0ZW1lbnQtZXhwZWN0ZWQu
anMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlw
dC10ZXN0cy9yZXR1cm4tc3RhdGVtZW50LWV4cGVjdGVkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA0OTI0Y2U3NjM3MzYwYmM0MDA1NDlkNTA0MWY1NTA2NzAzMmI5Y2YzLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3JldHVybi1zdGF0
ZW1lbnQtZXhwZWN0ZWQuanMKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0oZnVuY3Rp
b24oKSB7Ci0gICAgcmV0dXJuCi19KSgpOwotCi0oZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIDEK
LX0pKCk7Ci0KLShmdW5jdGlvbigpIHsKLSAgICBpZiAodHJ1ZSkKLSAgICAgICAgcmV0dXJuIDE7
Ci0gICAgcmV0dXJuIGZhbHNlCi19KSgpOwotCi0oZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIHsK
LSAgICAgICAgYTogMSwKLSAgICAgICAgYjogMgotICAgIH0KLX0pKCk7Ci0KLShmdW5jdGlvbigp
IHsKLSAgICByZXR1cm4gZnVuY3Rpb24oKSB7Ci0gICAgICAgIDEKLSAgICB9Ci19KSgpOwotCi0o
ZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIGEKLSAgICAgICAgfHwgYgotICAgICAgICB8fCBjOwot
fSkoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291
cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3NhbXBsZS1qcXVlcnktZXhwZWN0ZWQuanMgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9zYW1w
bGUtanF1ZXJ5LWV4cGVjdGVkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWYx
Zjk3MWQwMmNkOTFlNjYxOTFlYmY5NTdlMGY1YTI4NWIzNjIyLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0
aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3NhbXBsZS1qcXVlcnktZXhwZWN0ZWQuanMK
KysrIC9kZXYvbnVsbApAQCAtMSw0MTY5ICswLDAgQEAKLS8qISBqUXVlcnkgdjEuOS4xIHwgKGMp
IDIwMDUsIDIwMTIgalF1ZXJ5IEZvdW5kYXRpb24sIEluYy4gfCBqcXVlcnkub3JnL2xpY2Vuc2UK
LS8vQCBzb3VyY2VNYXBwaW5nVVJMPWpxdWVyeS5taW4ubWFwCi0qLwotKGZ1bmN0aW9uKGUsIHQp
IHsKLSAgICB2YXIgbiwKLSAgICAgICAgciwKLSAgICAgICAgaSA9IHR5cGVvZiB0LAotICAgICAg
ICBvID0gZS5kb2N1bWVudCwKLSAgICAgICAgYSA9IGUubG9jYXRpb24sCi0gICAgICAgIHMgPSBl
LmpRdWVyeSwKLSAgICAgICAgdSA9IGUuJCwKLSAgICAgICAgbCA9IHt9LAotICAgICAgICBjID0g
W10sCi0gICAgICAgIHAgPSAiMS45LjEiLAotICAgICAgICBmID0gYy5jb25jYXQsCi0gICAgICAg
IGQgPSBjLnB1c2gsCi0gICAgICAgIGggPSBjLnNsaWNlLAotICAgICAgICBnID0gYy5pbmRleE9m
LAotICAgICAgICBtID0gbC50b1N0cmluZywKLSAgICAgICAgeSA9IGwuaGFzT3duUHJvcGVydHks
Ci0gICAgICAgIHYgPSBwLnRyaW0sCi0gICAgICAgIGIgPSBmdW5jdGlvbihlLCB0KSB7Ci0gICAg
ICAgICAgICByZXR1cm4gbmV3IGIuZm4uaW5pdChlLCB0LCByKQotICAgICAgICB9LAotICAgICAg
ICB4ID0gL1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsCi0gICAg
ICAgIHcgPSAvXFMrL2csCi0gICAgICAgIFQgPSAvXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZc
eEEwXSskL2csCi0gICAgICAgIE4gPSAvXig/Oig8W1x3XFddKz4pW14+XSp8IyhbXHctXSopKSQv
LAotICAgICAgICBDID0gL148KFx3KylccypcLz8+KD86PFwvXDE+fCkkLywKLSAgICAgICAgayA9
IC9eW1xdLDp7fVxzXSokLywKLSAgICAgICAgRSA9IC8oPzpefDp8LCkoPzpccypcWykrL2csCi0g
ICAgICAgIFMgPSAvXFwoPzpbIlxcXC9iZm5ydF18dVtcZGEtZkEtRl17NH0pL2csCi0gICAgICAg
IEEgPSAvIlteIlxcXHJcbl0qInx0cnVlfGZhbHNlfG51bGx8LT8oPzpcZCtcLnwpXGQrKD86W2VF
XVsrLV0/XGQrfCkvZywKLSAgICAgICAgaiA9IC9eLW1zLS8sCi0gICAgICAgIEQgPSAvLShbXGRh
LXpdKS9naSwKLSAgICAgICAgTCA9IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgIHJldHVy
biB0LnRvVXBwZXJDYXNlKCkKLSAgICAgICAgfSwKLSAgICAgICAgSCA9IGZ1bmN0aW9uKGUpIHsK
LSAgICAgICAgICAgIChvLmFkZEV2ZW50TGlzdGVuZXIgfHwgImxvYWQiID09PSBlLnR5cGUgfHwg
ImNvbXBsZXRlIiA9PT0gby5yZWFkeVN0YXRlKSAmJiAocSgpLCBiLnJlYWR5KCkpCi0gICAgICAg
IH0sCi0gICAgICAgIHEgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIG8uYWRkRXZlbnRMaXN0
ZW5lciA/IChvLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBILCAhMSks
IGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsIEgsICExKSkgOiAoby5kZXRhY2hFdmVudCgi
b25yZWFkeXN0YXRlY2hhbmdlIiwgSCksIGUuZGV0YWNoRXZlbnQoIm9ubG9hZCIsIEgpKQotICAg
ICAgICB9OwotICAgIGIuZm4gPSBiLnByb3RvdHlwZSA9IHsKLSAgICAgICAganF1ZXJ5OiBwLAot
ICAgICAgICBjb25zdHJ1Y3RvcjogYiwKLSAgICAgICAgaW5pdDogZnVuY3Rpb24oZSwgbiwgcikg
ewotICAgICAgICAgICAgdmFyIGksCi0gICAgICAgICAgICAgICAgYTsKLSAgICAgICAgICAgIGlm
ICghZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgICAgIGlmICgic3Ry
aW5nIiA9PSB0eXBlb2YgZSkgewotICAgICAgICAgICAgICAgIGlmIChpID0gIjwiID09PSBlLmNo
YXJBdCgwKSAmJiAiPiIgPT09IGUuY2hhckF0KGUubGVuZ3RoIC0gMSkgJiYgZS5sZW5ndGggPj0g
MyA/IFtudWxsLCBlLCBudWxsXSA6IE4uZXhlYyhlKSwgIWkgfHwgIWlbMV0gJiYgbikKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuICFuIHx8IG4uanF1ZXJ5ID8gKG4gfHwgcikuZmluZChlKSA6
IHRoaXMuY29uc3RydWN0b3IobikuZmluZChlKTsKLSAgICAgICAgICAgICAgICBpZiAoaVsxXSkg
ewotICAgICAgICAgICAgICAgICAgICBpZiAobiA9IG4gaW5zdGFuY2VvZiBiID8gblswXSA6IG4s
IGIubWVyZ2UodGhpcywgYi5wYXJzZUhUTUwoaVsxXSwgbiAmJiBuLm5vZGVUeXBlID8gbi5vd25l
ckRvY3VtZW50IHx8IG4gOiBvLCAhMCkpLCBDLnRlc3QoaVsxXSkgJiYgYi5pc1BsYWluT2JqZWN0
KG4pKQotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpIGluIG4pCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYi5pc0Z1bmN0aW9uKHRoaXNbaV0pID8gdGhpc1tpXShuW2ldKSA6IHRo
aXMuYXR0cihpLCBuW2ldKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGEgPSBvLmdldEVsZW1lbnRCeUlkKGlb
Ml0pLCBhICYmIGEucGFyZW50Tm9kZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoYS5pZCAh
PT0gaVsyXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByLmZpbmQoZSk7Ci0gICAg
ICAgICAgICAgICAgICAgIHRoaXMubGVuZ3RoID0gMSwKLSAgICAgICAgICAgICAgICAgICAgdGhp
c1swXSA9IGEKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMu
Y29udGV4dCA9IG8sIHRoaXMuc2VsZWN0b3IgPSBlLCB0aGlzCi0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICByZXR1cm4gZS5ub2RlVHlwZSA/ICh0aGlzLmNvbnRleHQgPSB0aGlzWzBdID0gZSwg
dGhpcy5sZW5ndGggPSAxLCB0aGlzKSA6IGIuaXNGdW5jdGlvbihlKSA/IHIucmVhZHkoZSkgOiAo
ZS5zZWxlY3RvciAhPT0gdCAmJiAodGhpcy5zZWxlY3RvciA9IGUuc2VsZWN0b3IsIHRoaXMuY29u
dGV4dCA9IGUuY29udGV4dCksIGIubWFrZUFycmF5KGUsIHRoaXMpKQotICAgICAgICB9LAotICAg
ICAgICBzZWxlY3RvcjogIiIsCi0gICAgICAgIGxlbmd0aDogMCwKLSAgICAgICAgc2l6ZTogZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5sZW5ndGgKLSAgICAgICAgfSwKLSAg
ICAgICAgdG9BcnJheTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gaC5jYWxsKHRo
aXMpCi0gICAgICAgIH0sCi0gICAgICAgIGdldDogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAg
cmV0dXJuIG51bGwgPT0gZSA/IHRoaXMudG9BcnJheSgpIDogMCA+IGUgPyB0aGlzW3RoaXMubGVu
Z3RoICsgZV0gOiB0aGlzW2VdCi0gICAgICAgIH0sCi0gICAgICAgIHB1c2hTdGFjazogZnVuY3Rp
b24oZSkgewotICAgICAgICAgICAgdmFyIHQgPSBiLm1lcmdlKHRoaXMuY29uc3RydWN0b3IoKSwg
ZSk7Ci0gICAgICAgICAgICByZXR1cm4gdC5wcmV2T2JqZWN0ID0gdGhpcywgdC5jb250ZXh0ID0g
dGhpcy5jb250ZXh0LCB0Ci0gICAgICAgIH0sCi0gICAgICAgIGVhY2g6IGZ1bmN0aW9uKGUsIHQp
IHsKLSAgICAgICAgICAgIHJldHVybiBiLmVhY2godGhpcywgZSwgdCkKLSAgICAgICAgfSwKLSAg
ICAgICAgcmVhZHk6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHJldHVybiBiLnJlYWR5LnBy
b21pc2UoKS5kb25lKGUpLCB0aGlzCi0gICAgICAgIH0sCi0gICAgICAgIHNsaWNlOiBmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayhoLmFwcGx5KHRoaXMsIGFy
Z3VtZW50cykpCi0gICAgICAgIH0sCi0gICAgICAgIGZpcnN0OiBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIHJldHVybiB0aGlzLmVxKDApCi0gICAgICAgIH0sCi0gICAgICAgIGxhc3Q6IGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXEoLTEpCi0gICAgICAgIH0sCi0gICAg
ICAgIGVxOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICB2YXIgdCA9IHRoaXMubGVuZ3RoLAot
ICAgICAgICAgICAgICAgIG4gPSArZSArICgwID4gZSA/IHQgOiAwKTsKLSAgICAgICAgICAgIHJl
dHVybiB0aGlzLnB1c2hTdGFjayhuID49IDAgJiYgdCA+IG4gPyBbdGhpc1tuXV0gOiBbXSkKLSAg
ICAgICAgfSwKLSAgICAgICAgbWFwOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICByZXR1cm4g
dGhpcy5wdXNoU3RhY2soYi5tYXAodGhpcywgZnVuY3Rpb24odCwgbikgewotICAgICAgICAgICAg
ICAgIHJldHVybiBlLmNhbGwodCwgbiwgdCkKLSAgICAgICAgICAgIH0pKQotICAgICAgICB9LAot
ICAgICAgICBlbmQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJldk9i
amVjdCB8fCB0aGlzLmNvbnN0cnVjdG9yKG51bGwpCi0gICAgICAgIH0sCi0gICAgICAgIHB1c2g6
IGQsCi0gICAgICAgIHNvcnQ6IFtdLnNvcnQsCi0gICAgICAgIHNwbGljZTogW10uc3BsaWNlCi0g
ICAgfSwKLSAgICBiLmZuLmluaXQucHJvdG90eXBlID0gYi5mbiwKLSAgICBiLmV4dGVuZCA9IGIu
Zm4uZXh0ZW5kID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBlLAotICAgICAgICAgICAgbiwK
LSAgICAgICAgICAgIHIsCi0gICAgICAgICAgICBpLAotICAgICAgICAgICAgbywKLSAgICAgICAg
ICAgIGEsCi0gICAgICAgICAgICBzID0gYXJndW1lbnRzWzBdIHx8IHt9LAotICAgICAgICAgICAg
dSA9IDEsCi0gICAgICAgICAgICBsID0gYXJndW1lbnRzLmxlbmd0aCwKLSAgICAgICAgICAgIGMg
PSAhMTsKLSAgICAgICAgZm9yICgiYm9vbGVhbiIgPT0gdHlwZW9mIHMgJiYgKGMgPSBzLCBzID0g
YXJndW1lbnRzWzFdIHx8IHt9LCB1ID0gMiksICJvYmplY3QiID09IHR5cGVvZiBzIHx8IGIuaXNG
dW5jdGlvbihzKSB8fCAocyA9IHt9KSwgbCA9PT0gdSAmJiAocyA9IHRoaXMsIC0tdSk7IGwgPiB1
OyB1KyspCi0gICAgICAgICAgICBpZiAobnVsbCAhPSAobyA9IGFyZ3VtZW50c1t1XSkpCi0gICAg
ICAgICAgICAgICAgZm9yIChpIGluIG8pCi0gICAgICAgICAgICAgICAgICAgIGUgPSBzW2ldLAot
ICAgICAgICAgICAgICAgICAgICByID0gb1tpXSwKLSAgICAgICAgICAgICAgICAgICAgcyAhPT0g
ciAmJiAoYyAmJiByICYmIChiLmlzUGxhaW5PYmplY3QocikgfHwgKG4gPSBiLmlzQXJyYXkocikp
KSA/IChuID8gKG4gPSAhMSwgYSA9IGUgJiYgYi5pc0FycmF5KGUpID8gZSA6IFtdKSA6IGEgPSBl
ICYmIGIuaXNQbGFpbk9iamVjdChlKSA/IGUgOiB7fSwgc1tpXSA9IGIuZXh0ZW5kKGMsIGEsIHIp
KSA6IHIgIT09IHQgJiYgKHNbaV0gPSByKSk7Ci0gICAgICAgIHJldHVybiBzCi0gICAgfSwKLSAg
ICBiLmV4dGVuZCh7Ci0gICAgICAgIG5vQ29uZmxpY3Q6IGZ1bmN0aW9uKHQpIHsKLSAgICAgICAg
ICAgIHJldHVybiBlLiQgPT09IGIgJiYgKGUuJCA9IHUpLCB0ICYmIGUualF1ZXJ5ID09PSBiICYm
IChlLmpRdWVyeSA9IHMpLCBiCi0gICAgICAgIH0sCi0gICAgICAgIGlzUmVhZHk6ICExLAotICAg
ICAgICByZWFkeVdhaXQ6IDEsCi0gICAgICAgIGhvbGRSZWFkeTogZnVuY3Rpb24oZSkgewotICAg
ICAgICAgICAgZSA/IGIucmVhZHlXYWl0KysgOiBiLnJlYWR5KCEwKQotICAgICAgICB9LAotICAg
ICAgICByZWFkeTogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgaWYgKGUgPT09ICEwID8gIS0t
Yi5yZWFkeVdhaXQgOiAhYi5pc1JlYWR5KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFvLmJvZHkp
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGIucmVhZHkpOwotICAgICAg
ICAgICAgICAgIGIuaXNSZWFkeSA9ICEwLAotICAgICAgICAgICAgICAgIGUgIT09ICEwICYmIC0t
Yi5yZWFkeVdhaXQgPiAwIHx8IChuLnJlc29sdmVXaXRoKG8sIFtiXSksIGIuZm4udHJpZ2dlciAm
JiBiKG8pLnRyaWdnZXIoInJlYWR5Iikub2ZmKCJyZWFkeSIpKQotICAgICAgICAgICAgfQotICAg
ICAgICB9LAotICAgICAgICBpc0Z1bmN0aW9uOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gImZ1bmN0aW9uIiA9PT0gYi50eXBlKGUpCi0gICAgICAgIH0sCi0gICAgICAgIGlzQXJy
YXk6IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgcmV0dXJuICJh
cnJheSIgPT09IGIudHlwZShlKQotICAgICAgICB9LAotICAgICAgICBpc1dpbmRvdzogZnVuY3Rp
b24oZSkgewotICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gZSAmJiBlID09IGUud2luZG93Ci0g
ICAgICAgIH0sCi0gICAgICAgIGlzTnVtZXJpYzogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAg
cmV0dXJuICFpc05hTihwYXJzZUZsb2F0KGUpKSAmJiBpc0Zpbml0ZShlKQotICAgICAgICB9LAot
ICAgICAgICB0eXBlOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBl
ID8gZSArICIiIDogIm9iamVjdCIgPT0gdHlwZW9mIGUgfHwgImZ1bmN0aW9uIiA9PSB0eXBlb2Yg
ZSA/IGxbbS5jYWxsKGUpXSB8fCAib2JqZWN0IiA6IHR5cGVvZiBlCi0gICAgICAgIH0sCi0gICAg
ICAgIGlzUGxhaW5PYmplY3Q6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGlmICghZSB8fCAi
b2JqZWN0IiAhPT0gYi50eXBlKGUpIHx8IGUubm9kZVR5cGUgfHwgYi5pc1dpbmRvdyhlKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gITE7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAg
ICAgIGlmIChlLmNvbnN0cnVjdG9yICYmICF5LmNhbGwoZSwgImNvbnN0cnVjdG9yIikgJiYgIXku
Y2FsbChlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwgImlzUHJvdG90eXBlT2YiKSkKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuICExCi0gICAgICAgICAgICB9IGNhdGNoIChuKSB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuICExCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgcjsKLSAg
ICAgICAgICAgIGZvciAociBpbiBlKQotICAgICAgICAgICAgICAgIDsKLSAgICAgICAgICAgIHJl
dHVybiByID09PSB0IHx8IHkuY2FsbChlLCByKQotICAgICAgICB9LAotICAgICAgICBpc0VtcHR5
T2JqZWN0OiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICB2YXIgdDsKLSAgICAgICAgICAgIGZv
ciAodCBpbiBlKQotICAgICAgICAgICAgICAgIHJldHVybiAhMTsKLSAgICAgICAgICAgIHJldHVy
biAhMAotICAgICAgICB9LAotICAgICAgICBlcnJvcjogZnVuY3Rpb24oZSkgewotICAgICAgICAg
ICAgdGhyb3cgRXJyb3IoZSkKLSAgICAgICAgfSwKLSAgICAgICAgcGFyc2VIVE1MOiBmdW5jdGlv
bihlLCB0LCBuKSB7Ci0gICAgICAgICAgICBpZiAoIWUgfHwgInN0cmluZyIgIT0gdHlwZW9mIGUp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICAiYm9vbGVhbiIgPT0g
dHlwZW9mIHQgJiYgKG4gPSB0LCB0ID0gITEpLAotICAgICAgICAgICAgdCA9IHQgfHwgbzsKLSAg
ICAgICAgICAgIHZhciByID0gQy5leGVjKGUpLAotICAgICAgICAgICAgICAgIGkgPSAhbiAmJiBb
XTsKLSAgICAgICAgICAgIHJldHVybiByID8gW3QuY3JlYXRlRWxlbWVudChyWzFdKV0gOiAociA9
IGIuYnVpbGRGcmFnbWVudChbZV0sIHQsIGkpLCBpICYmIGIoaSkucmVtb3ZlKCksIGIubWVyZ2Uo
W10sIHIuY2hpbGROb2RlcykpCi0gICAgICAgIH0sCi0gICAgICAgIHBhcnNlSlNPTjogZnVuY3Rp
b24obikgewotICAgICAgICAgICAgcmV0dXJuIGUuSlNPTiAmJiBlLkpTT04ucGFyc2UgPyBlLkpT
T04ucGFyc2UobikgOiBudWxsID09PSBuID8gbiA6ICJzdHJpbmciID09IHR5cGVvZiBuICYmIChu
ID0gYi50cmltKG4pLCBuICYmIGsudGVzdChuLnJlcGxhY2UoUywgIkAiKS5yZXBsYWNlKEEsICJd
IikucmVwbGFjZShFLCAiIikpKSA/IEZ1bmN0aW9uKCJyZXR1cm4gIiArIG4pKCkgOiAoYi5lcnJv
cigiSW52YWxpZCBKU09OOiAiICsgbiksIHQpCi0gICAgICAgIH0sCi0gICAgICAgIHBhcnNlWE1M
OiBmdW5jdGlvbihuKSB7Ci0gICAgICAgICAgICB2YXIgciwKLSAgICAgICAgICAgICAgICBpOwot
ICAgICAgICAgICAgaWYgKCFuIHx8ICJzdHJpbmciICE9IHR5cGVvZiBuKQotICAgICAgICAgICAg
ICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBlLkRP
TVBhcnNlciA/IChpID0gbmV3IERPTVBhcnNlciwgciA9IGkucGFyc2VGcm9tU3RyaW5nKG4sICJ0
ZXh0L3htbCIpKSA6IChyID0gbmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxET00iKSwg
ci5hc3luYyA9ICJmYWxzZSIsIHIubG9hZFhNTChuKSkKLSAgICAgICAgICAgIH0gY2F0Y2ggKG8p
IHsKLSAgICAgICAgICAgICAgICByID0gdAotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0
dXJuIHIgJiYgci5kb2N1bWVudEVsZW1lbnQgJiYgIXIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInBh
cnNlcmVycm9yIikubGVuZ3RoIHx8IGIuZXJyb3IoIkludmFsaWQgWE1MOiAiICsgbiksIHIKLSAg
ICAgICAgfSwKLSAgICAgICAgbm9vcDogZnVuY3Rpb24oKSB7fSwKLSAgICAgICAgZ2xvYmFsRXZh
bDogZnVuY3Rpb24odCkgewotICAgICAgICAgICAgdCAmJiBiLnRyaW0odCkgJiYgKGUuZXhlY1Nj
cmlwdCB8fCBmdW5jdGlvbih0KSB7Ci0gICAgICAgICAgICAgICAgZS5ldmFsLmNhbGwoZSwgdCkK
LSAgICAgICAgICAgIH0pKHQpCi0gICAgICAgIH0sCi0gICAgICAgIGNhbWVsQ2FzZTogZnVuY3Rp
b24oZSkgewotICAgICAgICAgICAgcmV0dXJuIGUucmVwbGFjZShqLCAibXMtIikucmVwbGFjZShE
LCBMKQotICAgICAgICB9LAotICAgICAgICBub2RlTmFtZTogZnVuY3Rpb24oZSwgdCkgewotICAg
ICAgICAgICAgcmV0dXJuIGUubm9kZU5hbWUgJiYgZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09
PSB0LnRvTG93ZXJDYXNlKCkKLSAgICAgICAgfSwKLSAgICAgICAgZWFjaDogZnVuY3Rpb24oZSwg
dCwgbikgewotICAgICAgICAgICAgdmFyIHIsCi0gICAgICAgICAgICAgICAgaSA9IDAsCi0gICAg
ICAgICAgICAgICAgbyA9IGUubGVuZ3RoLAotICAgICAgICAgICAgICAgIGEgPSBNKGUpOwotICAg
ICAgICAgICAgaWYgKG4pIHsKLSAgICAgICAgICAgICAgICBpZiAoYSkgewotICAgICAgICAgICAg
ICAgICAgICBmb3IgKDsgbyA+IGk7IGkrKykKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChy
ID0gdC5hcHBseShlW2ldLCBuKSwgciA9PT0gITEpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZm9y
IChpIGluIGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHQuYXBwbHkoZVtpXSwg
biksIHIgPT09ICExKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAg
ICAgICB9IGVsc2UgaWYgKGEpIHsKLSAgICAgICAgICAgICAgICBmb3IgKDsgbyA+IGk7IGkrKykK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSB0LmNhbGwoZVtpXSwgaSwgZVtpXSksIHIgPT09
ICExKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgIGZvciAoaSBpbiBlKQotICAgICAgICAgICAgICAgICAgICBpZiAociA9
IHQuY2FsbChlW2ldLCBpLCBlW2ldKSwgciA9PT0gITEpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIHJldHVybiBlCi0gICAgICAgIH0sCi0gICAgICAgIHRyaW06
IHYgJiYgIXYuY2FsbCgiXHVmZWZmXHUwMGEwIikgPyBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gbnVsbCA9PSBlID8gIiIgOiB2LmNhbGwoZSkKLSAgICAgICAgfSA6IGZ1bmN0aW9u
KGUpIHsKLSAgICAgICAgICAgIHJldHVybiBudWxsID09IGUgPyAiIiA6IChlICsgIiIpLnJlcGxh
Y2UoVCwgIiIpCi0gICAgICAgIH0sCi0gICAgICAgIG1ha2VBcnJheTogZnVuY3Rpb24oZSwgdCkg
ewotICAgICAgICAgICAgdmFyIG4gPSB0IHx8IFtdOwotICAgICAgICAgICAgcmV0dXJuIG51bGwg
IT0gZSAmJiAoTShPYmplY3QoZSkpID8gYi5tZXJnZShuLCAic3RyaW5nIiA9PSB0eXBlb2YgZSA/
IFtlXSA6IGUpIDogZC5jYWxsKG4sIGUpKSwgbgotICAgICAgICB9LAotICAgICAgICBpbkFycmF5
OiBmdW5jdGlvbihlLCB0LCBuKSB7Ci0gICAgICAgICAgICB2YXIgcjsKLSAgICAgICAgICAgIGlm
ICh0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGcpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBnLmNhbGwodCwgZSwgbik7Ci0gICAgICAgICAgICAgICAgZm9yIChyID0gdC5sZW5ndGgsIG4g
PSBuID8gMCA+IG4gPyBNYXRoLm1heCgwLCByICsgbikgOiBuIDogMDsgciA+IG47IG4rKykKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKG4gaW4gdCAmJiB0W25dID09PSBlKQotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG4KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiAt
MQotICAgICAgICB9LAotICAgICAgICBtZXJnZTogZnVuY3Rpb24oZSwgbikgewotICAgICAgICAg
ICAgdmFyIHIgPSBuLmxlbmd0aCwKLSAgICAgICAgICAgICAgICBpID0gZS5sZW5ndGgsCi0gICAg
ICAgICAgICAgICAgbyA9IDA7Ci0gICAgICAgICAgICBpZiAoIm51bWJlciIgPT0gdHlwZW9mIHIp
Ci0gICAgICAgICAgICAgICAgZm9yICg7IHIgPiBvOyBvKyspCi0gICAgICAgICAgICAgICAgICAg
IGVbaSsrXSA9IG5bb107Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgd2hpbGUg
KG5bb10gIT09IHQpCi0gICAgICAgICAgICAgICAgICAgIGVbaSsrXSA9IG5bbysrXTsKLSAgICAg
ICAgICAgIHJldHVybiBlLmxlbmd0aCA9IGksIGUKLSAgICAgICAgfSwKLSAgICAgICAgZ3JlcDog
ZnVuY3Rpb24oZSwgdCwgbikgewotICAgICAgICAgICAgdmFyIHIsCi0gICAgICAgICAgICAgICAg
aSA9IFtdLAotICAgICAgICAgICAgICAgIG8gPSAwLAotICAgICAgICAgICAgICAgIGEgPSBlLmxl
bmd0aDsKLSAgICAgICAgICAgIGZvciAobiA9ICEhbjsgYSA+IG87IG8rKykKLSAgICAgICAgICAg
ICAgICByID0gISF0KGVbb10sIG8pLAotICAgICAgICAgICAgICAgIG4gIT09IHIgJiYgaS5wdXNo
KGVbb10pOwotICAgICAgICAgICAgcmV0dXJuIGkKLSAgICAgICAgfSwKLSAgICAgICAgbWFwOiBm
dW5jdGlvbihlLCB0LCBuKSB7Ci0gICAgICAgICAgICB2YXIgciwKLSAgICAgICAgICAgICAgICBp
ID0gMCwKLSAgICAgICAgICAgICAgICBvID0gZS5sZW5ndGgsCi0gICAgICAgICAgICAgICAgYSA9
IE0oZSksCi0gICAgICAgICAgICAgICAgcyA9IFtdOwotICAgICAgICAgICAgaWYgKGEpCi0gICAg
ICAgICAgICAgICAgZm9yICg7IG8gPiBpOyBpKyspCi0gICAgICAgICAgICAgICAgICAgIHIgPSB0
KGVbaV0sIGksIG4pLAotICAgICAgICAgICAgICAgICAgICBudWxsICE9IHIgJiYgKHNbcy5sZW5n
dGhdID0gcik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZm9yIChpIGluIGUp
Ci0gICAgICAgICAgICAgICAgICAgIHIgPSB0KGVbaV0sIGksIG4pLAotICAgICAgICAgICAgICAg
ICAgICBudWxsICE9IHIgJiYgKHNbcy5sZW5ndGhdID0gcik7Ci0gICAgICAgICAgICByZXR1cm4g
Zi5hcHBseShbXSwgcykKLSAgICAgICAgfSwKLSAgICAgICAgZ3VpZDogMSwKLSAgICAgICAgcHJv
eHk6IGZ1bmN0aW9uKGUsIG4pIHsKLSAgICAgICAgICAgIHZhciByLAotICAgICAgICAgICAgICAg
IGksCi0gICAgICAgICAgICAgICAgbzsKLSAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiA9PSB0
eXBlb2YgbiAmJiAobyA9IGVbbl0sIG4gPSBlLCBlID0gbyksIGIuaXNGdW5jdGlvbihlKSA/IChy
ID0gaC5jYWxsKGFyZ3VtZW50cywgMiksIGkgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZS5hcHBseShuIHx8IHRoaXMsIHIuY29uY2F0KGguY2FsbChhcmd1bWVudHMpKSkK
LSAgICAgICAgICAgIH0sIGkuZ3VpZCA9IGUuZ3VpZCA9IGUuZ3VpZCB8fCBiLmd1aWQrKywgaSkg
OiB0Ci0gICAgICAgIH0sCi0gICAgICAgIGFjY2VzczogZnVuY3Rpb24oZSwgbiwgciwgaSwgbywg
YSwgcykgewotICAgICAgICAgICAgdmFyIHUgPSAwLAotICAgICAgICAgICAgICAgIGwgPSBlLmxl
bmd0aCwKLSAgICAgICAgICAgICAgICBjID0gbnVsbCA9PSByOwotICAgICAgICAgICAgaWYgKCJv
YmplY3QiID09PSBiLnR5cGUocikpIHsKLSAgICAgICAgICAgICAgICBvID0gITA7Ci0gICAgICAg
ICAgICAgICAgZm9yICh1IGluIHIpCi0gICAgICAgICAgICAgICAgICAgIGIuYWNjZXNzKGUsIG4s
IHUsIHJbdV0sICEwLCBhLCBzKQotICAgICAgICAgICAgfSBlbHNlIGlmIChpICE9PSB0ICYmIChv
ID0gITAsIGIuaXNGdW5jdGlvbihpKSB8fCAocyA9ICEwKSwgYyAmJiAocyA/IChuLmNhbGwoZSwg
aSksIG4gPSBudWxsKSA6IChjID0gbiwgbiA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gYy5jYWxsKGIoZSksIG4pCi0gICAgICAgICAgICB9KSksIG4pKQotICAg
ICAgICAgICAgICAgIGZvciAoOyBsID4gdTsgdSsrKQotICAgICAgICAgICAgICAgICAgICBuKGVb
dV0sIHIsIHMgPyBpIDogaS5jYWxsKGVbdV0sIHUsIG4oZVt1XSwgcikpKTsKLSAgICAgICAgICAg
IHJldHVybiBvID8gZSA6IGMgPyBuLmNhbGwoZSkgOiBsID8gbihlWzBdLCByKSA6IGEKLSAgICAg
ICAgfSwKLSAgICAgICAgbm93OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiAobmV3
IERhdGUpLmdldFRpbWUoKQotICAgICAgICB9Ci0gICAgfSksCi0gICAgYi5yZWFkeS5wcm9taXNl
ID0gZnVuY3Rpb24odCkgewotICAgICAgICBpZiAoIW4pCi0gICAgICAgICAgICBpZiAobiA9IGIu
RGVmZXJyZWQoKSwgImNvbXBsZXRlIiA9PT0gby5yZWFkeVN0YXRlKQotICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoYi5yZWFkeSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChvLmFkZEV2ZW50TGlz
dGVuZXIpCi0gICAgICAgICAgICAgICAgby5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9h
ZGVkIiwgSCwgITEpLAotICAgICAgICAgICAgICAgIGUuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIs
IEgsICExKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIG8uYXR0YWNoRXZl
bnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsIEgpLAotICAgICAgICAgICAgICAgIGUuYXR0YWNoRXZl
bnQoIm9ubG9hZCIsIEgpOwotICAgICAgICAgICAgICAgIHZhciByID0gITE7Ci0gICAgICAgICAg
ICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgciA9IG51bGwgPT0gZS5mcmFtZUVsZW1l
bnQgJiYgby5kb2N1bWVudEVsZW1lbnQKLSAgICAgICAgICAgICAgICB9IGNhdGNoIChpKSB7fQot
ICAgICAgICAgICAgICAgIHIgJiYgci5kb1Njcm9sbCAmJiBmdW5jdGlvbiBhKCkgewotICAgICAg
ICAgICAgICAgICAgICBpZiAoIWIuaXNSZWFkeSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
dHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmRvU2Nyb2xsKCJsZWZ0IikKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gc2V0VGltZW91dChhLCA1MCkKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGIucmVhZHkoKQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSgpCi0g
ICAgICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuLnByb21pc2UodCkKLSAgICB9LAotICAgIGIu
ZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9i
amVjdCBFcnJvciIuc3BsaXQoIiAiKSwgZnVuY3Rpb24oZSwgdCkgewotICAgICAgICBsWyJbb2Jq
ZWN0ICIgKyB0ICsgIl0iXSA9IHQudG9Mb3dlckNhc2UoKQotICAgIH0pOwotICAgIGZ1bmN0aW9u
IE0oZSkgewotICAgICAgICB2YXIgdCA9IGUubGVuZ3RoLAotICAgICAgICAgICAgbiA9IGIudHlw
ZShlKTsKLSAgICAgICAgcmV0dXJuIGIuaXNXaW5kb3coZSkgPyAhMSA6IDEgPT09IGUubm9kZVR5
cGUgJiYgdCA/ICEwIDogImFycmF5IiA9PT0gbiB8fCAiZnVuY3Rpb24iICE9PSBuICYmICgwID09
PSB0IHx8ICJudW1iZXIiID09IHR5cGVvZiB0ICYmIHQgPiAwICYmIHQgLSAxIGluIGUpCi0gICAg
fQotICAgIHIgPSBiKG8pOwotICAgIHZhciBfID0ge307Ci0gICAgZnVuY3Rpb24gRihlKSB7Ci0g
ICAgICAgIHZhciB0ID0gX1tlXSA9IHt9OwotICAgICAgICByZXR1cm4gYi5lYWNoKGUubWF0Y2go
dykgfHwgW10sIGZ1bmN0aW9uKGUsIG4pIHsKLSAgICAgICAgICAgIHRbbl0gPSAhMAotICAgICAg
ICB9KSwgdAotICAgIH0KLSAgICBiLkNhbGxiYWNrcyA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAg
ZSA9ICJzdHJpbmciID09IHR5cGVvZiBlID8gX1tlXSB8fCBGKGUpIDogYi5leHRlbmQoe30sIGUp
OwotICAgICAgICB2YXIgbiwKLSAgICAgICAgICAgIHIsCi0gICAgICAgICAgICBpLAotICAgICAg
ICAgICAgbywKLSAgICAgICAgICAgIGEsCi0gICAgICAgICAgICBzLAotICAgICAgICAgICAgdSA9
IFtdLAotICAgICAgICAgICAgbCA9ICFlLm9uY2UgJiYgW10sCi0gICAgICAgICAgICBjID0gZnVu
Y3Rpb24odCkgewotICAgICAgICAgICAgICAgIGZvciAociA9IGUubWVtb3J5ICYmIHQsIGkgPSAh
MCwgYSA9IHMgfHwgMCwgcyA9IDAsIG8gPSB1Lmxlbmd0aCwgbiA9ICEwOyB1ICYmIG8gPiBhOyBh
KyspCi0gICAgICAgICAgICAgICAgICAgIGlmICh1W2FdLmFwcGx5KHRbMF0sIHRbMV0pID09PSAh
MSAmJiBlLnN0b3BPbkZhbHNlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByID0gITE7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgbiA9ICExLAotICAgICAgICAgICAgICAgIHUgJiYgKGwgPyBsLmxlbmd0aCAm
JiBjKGwuc2hpZnQoKSkgOiByID8gdSA9IFtdIDogcC5kaXNhYmxlKCkpCi0gICAgICAgICAgICB9
LAotICAgICAgICAgICAgcCA9IHsKLSAgICAgICAgICAgICAgICBhZGQ6IGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgICAgICAgICBpZiAodSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IHQgPSB1Lmxlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvbiBpKHQpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLmVhY2godCwgZnVuY3Rpb24odCwgbikgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGIudHlwZShuKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIiA9PT0gciA/IGUudW5pcXVlICYm
IHAuaGFzKG4pIHx8IHUucHVzaChuKSA6IG4gJiYgbi5sZW5ndGggJiYgInN0cmluZyIgIT09IHIg
JiYgaShuKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCi0gICAgICAgICAgICAgICAg
ICAgICAgICB9KShhcmd1bWVudHMpLAotICAgICAgICAgICAgICAgICAgICAgICAgbiA/IG8gPSB1
Lmxlbmd0aCA6IHIgJiYgKHMgPSB0LCBjKHIpKQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICByZW1vdmU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dSAmJiBiLmVhY2goYXJndW1lbnRzLCBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgociA9IGIuaW5B
cnJheSh0LCB1LCByKSkgPiAtMSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1LnNwbGlj
ZShyLCAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuICYmIChvID49IHIgJiYgby0t
LCBhID49IHIgJiYgYS0tKQotICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcwotICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgaGFzOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBlID8gYi5pbkFycmF5KGUsIHUpID4gLTEgOiAhKCF1IHx8ICF1Lmxl
bmd0aCkKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIGVtcHR5OiBmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHUgPSBbXSwgdGhpcwotICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgZGlzYWJsZTogZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiB1ID0gbCA9IHIgPSB0LCB0aGlzCi0gICAgICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiAhdQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgbG9j
azogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsID0gdCwgciB8fCBw
LmRpc2FibGUoKSwgdGhpcwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgbG9j
a2VkOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFsCi0gICAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBmaXJlV2l0aDogZnVuY3Rpb24oZSwgdCkgewot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA9IHQgfHwgW10sIHQgPSBbZSwgdC5zbGljZSA/
IHQuc2xpY2UoKSA6IHRdLCAhdSB8fCBpICYmICFsIHx8IChuID8gbC5wdXNoKHQpIDogYyh0KSks
IHRoaXMKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIGZpcmU6IGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcC5maXJlV2l0aCh0aGlzLCBhcmd1bWVu
dHMpLCB0aGlzCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBmaXJlZDogZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAhIWkKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICByZXR1cm4gcAotICAgIH0sCi0gICAgYi5leHRl
bmQoewotICAgICAgICBEZWZlcnJlZDogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgdmFyIHQg
PSBbWyJyZXNvbHZlIiwgImRvbmUiLCBiLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwgInJlc29s
dmVkIl0sIFsicmVqZWN0IiwgImZhaWwiLCBiLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwgInJl
amVjdGVkIl0sIFsibm90aWZ5IiwgInByb2dyZXNzIiwgYi5DYWxsYmFja3MoIm1lbW9yeSIpXV0s
Ci0gICAgICAgICAgICAgICAgbiA9ICJwZW5kaW5nIiwKLSAgICAgICAgICAgICAgICByID0gewot
ICAgICAgICAgICAgICAgICAgICBzdGF0ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbgotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICAgICBhbHdheXM6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGkuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSwgdGhpcwotICAgICAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciBlID0gYXJndW1lbnRzOwotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGIuRGVmZXJyZWQoZnVuY3Rpb24obikgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGIuZWFjaCh0LCBmdW5jdGlvbih0LCBvKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBhID0gb1swXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHMgPSBiLmlzRnVuY3Rpb24oZVt0XSkgJiYgZVt0XTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaVtvWzFdXShmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBlID0gcyAmJiBzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlICYmIGIuaXNGdW5jdGlvbihlLnByb21p
c2UpID8gZS5wcm9taXNlKCkuZG9uZShuLnJlc29sdmUpLmZhaWwobi5yZWplY3QpLnByb2dyZXNz
KG4ubm90aWZ5KSA6IG5bYSArICJXaXRoIl0odGhpcyA9PT0gciA/IG4ucHJvbWlzZSgpIDogdGhp
cywgcyA/IFtlXSA6IGFyZ3VtZW50cykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlID0gbnVsbAotICAgICAgICAgICAgICAgICAgICAgICAgfSkucHJvbWlzZSgpCi0g
ICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHByb21pc2U6IGZ1bmN0
aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9IGUgPyBiLmV4
dGVuZChlLCByKSA6IHIKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAgICAgaSA9IHt9OwotICAgICAgICAgICAgcmV0dXJuIHIucGlwZSA9IHIu
dGhlbiwgYi5lYWNoKHQsIGZ1bmN0aW9uKGUsIG8pIHsKLSAgICAgICAgICAgICAgICB2YXIgYSA9
IG9bMl0sCi0gICAgICAgICAgICAgICAgICAgIHMgPSBvWzNdOwotICAgICAgICAgICAgICAgIHJb
b1sxXV0gPSBhLmFkZCwKLSAgICAgICAgICAgICAgICBzICYmIGEuYWRkKGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgICAgICAgICBuID0gcwotICAgICAgICAgICAgICAgIH0sIHRbMSBeIGVdWzJd
LmRpc2FibGUsIHRbMl1bMl0ubG9jayksCi0gICAgICAgICAgICAgICAgaVtvWzBdXSA9IGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gaVtvWzBdICsgIldpdGgiXSh0aGlz
ID09PSBpID8gciA6IHRoaXMsIGFyZ3VtZW50cyksIHRoaXMKLSAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgIGlbb1swXSArICJXaXRoIl0gPSBhLmZpcmVXaXRoCi0gICAgICAgICAg
ICB9KSwgci5wcm9taXNlKGkpLCBlICYmIGUuY2FsbChpLCBpKSwgaQotICAgICAgICB9LAotICAg
ICAgICB3aGVuOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICB2YXIgdCA9IDAsCi0gICAgICAg
ICAgICAgICAgbiA9IGguY2FsbChhcmd1bWVudHMpLAotICAgICAgICAgICAgICAgIHIgPSBuLmxl
bmd0aCwKLSAgICAgICAgICAgICAgICBpID0gMSAhPT0gciB8fCBlICYmIGIuaXNGdW5jdGlvbihl
LnByb21pc2UpID8gciA6IDAsCi0gICAgICAgICAgICAgICAgbyA9IDEgPT09IGkgPyBlIDogYi5E
ZWZlcnJlZCgpLAotICAgICAgICAgICAgICAgIGEgPSBmdW5jdGlvbihlLCB0LCBuKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihyKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB0W2VdID0gdGhpcywKLSAgICAgICAgICAgICAgICAgICAgICAgIG5bZV0gPSBhcmd1bWVu
dHMubGVuZ3RoID4gMSA/IGguY2FsbChhcmd1bWVudHMpIDogciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG4gPT09IHMgPyBvLm5vdGlmeVdpdGgodCwgbikgOiAtLWkgfHwgby5yZXNvbHZlV2l0
aCh0LCBuKQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICBzLAotICAgICAgICAgICAgICAgIHUsCi0gICAgICAgICAgICAgICAgbDsKLSAg
ICAgICAgICAgIGlmIChyID4gMSkKLSAgICAgICAgICAgICAgICBmb3IgKHMgPSBBcnJheShyKSwg
dSA9IEFycmF5KHIpLCBsID0gQXJyYXkocik7IHIgPiB0OyB0KyspCi0gICAgICAgICAgICAgICAg
ICAgIG5bdF0gJiYgYi5pc0Z1bmN0aW9uKG5bdF0ucHJvbWlzZSkgPyBuW3RdLnByb21pc2UoKS5k
b25lKGEodCwgbCwgbikpLmZhaWwoby5yZWplY3QpLnByb2dyZXNzKGEodCwgdSwgcykpIDogLS1p
OwotICAgICAgICAgICAgcmV0dXJuIGkgfHwgby5yZXNvbHZlV2l0aChsLCBuKSwgby5wcm9taXNl
KCkKLSAgICAgICAgfQotICAgIH0pLAotICAgIGIuc3VwcG9ydCA9IGZ1bmN0aW9uKCkgewotICAg
ICAgICB2YXIgdCwKLSAgICAgICAgICAgIG4sCi0gICAgICAgICAgICByLAotICAgICAgICAgICAg
YSwKLSAgICAgICAgICAgIHMsCi0gICAgICAgICAgICB1LAotICAgICAgICAgICAgbCwKLSAgICAg
ICAgICAgIGMsCi0gICAgICAgICAgICBwLAotICAgICAgICAgICAgZiwKLSAgICAgICAgICAgIGQg
PSBvLmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBpZiAoZC5zZXRBdHRyaWJ1dGUoImNs
YXNzTmFtZSIsICJ0IiksIGQuaW5uZXJIVE1MID0gIiAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxh
IGhyZWY9Jy9hJz5hPC9hPjxpbnB1dCB0eXBlPSdjaGVja2JveCcvPiIsIG4gPSBkLmdldEVsZW1l
bnRzQnlUYWdOYW1lKCIqIiksIHIgPSBkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhIilbMF0sICFu
IHx8ICFyIHx8ICFuLmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiB7fTsKLSAgICAgICAgcyA9
IG8uY3JlYXRlRWxlbWVudCgic2VsZWN0IiksCi0gICAgICAgIGwgPSBzLmFwcGVuZENoaWxkKG8u
Y3JlYXRlRWxlbWVudCgib3B0aW9uIikpLAotICAgICAgICBhID0gZC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiaW5wdXQiKVswXSwKLSAgICAgICAgci5zdHlsZS5jc3NUZXh0ID0gInRvcDoxcHg7Zmxv
YXQ6bGVmdDtvcGFjaXR5Oi41IiwKLSAgICAgICAgdCA9IHsKLSAgICAgICAgICAgIGdldFNldEF0
dHJpYnV0ZTogInQiICE9PSBkLmNsYXNzTmFtZSwKLSAgICAgICAgICAgIGxlYWRpbmdXaGl0ZXNw
YWNlOiAzID09PSBkLmZpcnN0Q2hpbGQubm9kZVR5cGUsCi0gICAgICAgICAgICB0Ym9keTogIWQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IikubGVuZ3RoLAotICAgICAgICAgICAgaHRtbFNl
cmlhbGl6ZTogISFkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIikubGVuZ3RoLAotICAgICAg
ICAgICAgc3R5bGU6IC90b3AvLnRlc3Qoci5nZXRBdHRyaWJ1dGUoInN0eWxlIikpLAotICAgICAg
ICAgICAgaHJlZk5vcm1hbGl6ZWQ6ICIvYSIgPT09IHIuZ2V0QXR0cmlidXRlKCJocmVmIiksCi0g
ICAgICAgICAgICBvcGFjaXR5OiAvXjAuNS8udGVzdChyLnN0eWxlLm9wYWNpdHkpLAotICAgICAg
ICAgICAgY3NzRmxvYXQ6ICEhci5zdHlsZS5jc3NGbG9hdCwKLSAgICAgICAgICAgIGNoZWNrT246
ICEhYS52YWx1ZSwKLSAgICAgICAgICAgIG9wdFNlbGVjdGVkOiBsLnNlbGVjdGVkLAotICAgICAg
ICAgICAgZW5jdHlwZTogISFvLmNyZWF0ZUVsZW1lbnQoImZvcm0iKS5lbmN0eXBlLAotICAgICAg
ICAgICAgaHRtbDVDbG9uZTogIjw6bmF2PjwvOm5hdj4iICE9PSBvLmNyZWF0ZUVsZW1lbnQoIm5h
diIpLmNsb25lTm9kZSghMCkub3V0ZXJIVE1MLAotICAgICAgICAgICAgYm94TW9kZWw6ICJDU1Mx
Q29tcGF0IiA9PT0gby5jb21wYXRNb2RlLAotICAgICAgICAgICAgZGVsZXRlRXhwYW5kbzogITAs
Ci0gICAgICAgICAgICBub0Nsb25lRXZlbnQ6ICEwLAotICAgICAgICAgICAgaW5saW5lQmxvY2tO
ZWVkc0xheW91dDogITEsCi0gICAgICAgICAgICBzaHJpbmtXcmFwQmxvY2tzOiAhMSwKLSAgICAg
ICAgICAgIHJlbGlhYmxlTWFyZ2luUmlnaHQ6ICEwLAotICAgICAgICAgICAgYm94U2l6aW5nUmVs
aWFibGU6ICEwLAotICAgICAgICAgICAgcGl4ZWxQb3NpdGlvbjogITEKLSAgICAgICAgfSwKLSAg
ICAgICAgYS5jaGVja2VkID0gITAsCi0gICAgICAgIHQubm9DbG9uZUNoZWNrZWQgPSBhLmNsb25l
Tm9kZSghMCkuY2hlY2tlZCwKLSAgICAgICAgcy5kaXNhYmxlZCA9ICEwLAotICAgICAgICB0Lm9w
dERpc2FibGVkID0gIWwuZGlzYWJsZWQ7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBkZWxl
dGUgZC50ZXN0Ci0gICAgICAgIH0gY2F0Y2ggKGgpIHsKLSAgICAgICAgICAgIHQuZGVsZXRlRXhw
YW5kbyA9ICExCi0gICAgICAgIH0KLSAgICAgICAgYSA9IG8uY3JlYXRlRWxlbWVudCgiaW5wdXQi
KSwKLSAgICAgICAgYS5zZXRBdHRyaWJ1dGUoInZhbHVlIiwgIiIpLAotICAgICAgICB0LmlucHV0
ID0gIiIgPT09IGEuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpLAotICAgICAgICBhLnZhbHVlID0gInQi
LAotICAgICAgICBhLnNldEF0dHJpYnV0ZSgidHlwZSIsICJyYWRpbyIpLAotICAgICAgICB0LnJh
ZGlvVmFsdWUgPSAidCIgPT09IGEudmFsdWUsCi0gICAgICAgIGEuc2V0QXR0cmlidXRlKCJjaGVj
a2VkIiwgInQiKSwKLSAgICAgICAgYS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCAidCIpLAotICAgICAg
ICB1ID0gby5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksCi0gICAgICAgIHUuYXBwZW5kQ2hpbGQo
YSksCi0gICAgICAgIHQuYXBwZW5kQ2hlY2tlZCA9IGEuY2hlY2tlZCwKLSAgICAgICAgdC5jaGVj
a0Nsb25lID0gdS5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQs
Ci0gICAgICAgIGQuYXR0YWNoRXZlbnQgJiYgKGQuYXR0YWNoRXZlbnQoIm9uY2xpY2siLCBmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgIHQubm9DbG9uZUV2ZW50ID0gITEKLSAgICAgICAgfSksIGQu
Y2xvbmVOb2RlKCEwKS5jbGljaygpKTsKLSAgICAgICAgZm9yIChmIGluIHsKLSAgICAgICAgICAg
IHN1Ym1pdDogITAsCi0gICAgICAgICAgICBjaGFuZ2U6ICEwLAotICAgICAgICAgICAgZm9jdXNp
bjogITAKLSAgICAgICAgfSkKLSAgICAgICAgICAgIGQuc2V0QXR0cmlidXRlKGMgPSAib24iICsg
ZiwgInQiKSwKLSAgICAgICAgICAgIHRbZiArICJCdWJibGVzIl0gPSBjIGluIGUgfHwgZC5hdHRy
aWJ1dGVzW2NdLmV4cGFuZG8gPT09ICExOwotICAgICAgICByZXR1cm4gZC5zdHlsZS5iYWNrZ3Jv
dW5kQ2xpcCA9ICJjb250ZW50LWJveCIsIGQuY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5k
Q2xpcCA9ICIiLCB0LmNsZWFyQ2xvbmVTdHlsZSA9ICJjb250ZW50LWJveCIgPT09IGQuc3R5bGUu
YmFja2dyb3VuZENsaXAsIGIoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB2YXIgbiwKLSAgICAg
ICAgICAgICAgICByLAotICAgICAgICAgICAgICAgIGEsCi0gICAgICAgICAgICAgICAgcyA9ICJw
YWRkaW5nOjA7bWFyZ2luOjA7Ym9yZGVyOjA7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmNvbnRl
bnQtYm94Oy1tb3otYm94LXNpemluZzpjb250ZW50LWJveDstd2Via2l0LWJveC1zaXppbmc6Y29u
dGVudC1ib3g7IiwKLSAgICAgICAgICAgICAgICB1ID0gby5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdOwotICAgICAgICAgICAgdSAmJiAobiA9IG8uY3JlYXRlRWxlbWVudCgiZGl2Iiks
IG4uc3R5bGUuY3NzVGV4dCA9ICJib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3Bvc2l0aW9uOmFi
c29sdXRlO3RvcDowO2xlZnQ6LTk5OTlweDttYXJnaW4tdG9wOjFweCIsIHUuYXBwZW5kQ2hpbGQo
bikuYXBwZW5kQ2hpbGQoZCksIGQuaW5uZXJIVE1MID0gIjx0YWJsZT48dHI+PHRkPjwvdGQ+PHRk
PnQ8L3RkPjwvdHI+PC90YWJsZT4iLCBhID0gZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKSwg
YVswXS5zdHlsZS5jc3NUZXh0ID0gInBhZGRpbmc6MDttYXJnaW46MDtib3JkZXI6MDtkaXNwbGF5
Om5vbmUiLCBwID0gMCA9PT0gYVswXS5vZmZzZXRIZWlnaHQsIGFbMF0uc3R5bGUuZGlzcGxheSA9
ICIiLCBhWzFdLnN0eWxlLmRpc3BsYXkgPSAibm9uZSIsIHQucmVsaWFibGVIaWRkZW5PZmZzZXRz
ID0gcCAmJiAwID09PSBhWzBdLm9mZnNldEhlaWdodCwgZC5pbm5lckhUTUwgPSAiIiwgZC5zdHls
ZS5jc3NUZXh0ID0gImJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVy
LWJveDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjFweDtib3JkZXI6MXB4
O2Rpc3BsYXk6YmxvY2s7d2lkdGg6NHB4O21hcmdpbi10b3A6MSU7cG9zaXRpb246YWJzb2x1dGU7
dG9wOjElOyIsIHQuYm94U2l6aW5nID0gNCA9PT0gZC5vZmZzZXRXaWR0aCwgdC5kb2VzTm90SW5j
bHVkZU1hcmdpbkluQm9keU9mZnNldCA9IDEgIT09IHUub2Zmc2V0VG9wLCBlLmdldENvbXB1dGVk
U3R5bGUgJiYgKHQucGl4ZWxQb3NpdGlvbiA9ICIxJSIgIT09IChlLmdldENvbXB1dGVkU3R5bGUo
ZCwgbnVsbCkgfHwge30pLnRvcCwgdC5ib3hTaXppbmdSZWxpYWJsZSA9ICI0cHgiID09PSAoZS5n
ZXRDb21wdXRlZFN0eWxlKGQsIG51bGwpIHx8IHsKLSAgICAgICAgICAgICAgICB3aWR0aDogIjRw
eCIKLSAgICAgICAgICAgIH0pLndpZHRoLCByID0gZC5hcHBlbmRDaGlsZChvLmNyZWF0ZUVsZW1l
bnQoImRpdiIpKSwgci5zdHlsZS5jc3NUZXh0ID0gZC5zdHlsZS5jc3NUZXh0ID0gcywgci5zdHls
ZS5tYXJnaW5SaWdodCA9IHIuc3R5bGUud2lkdGggPSAiMCIsIGQuc3R5bGUud2lkdGggPSAiMXB4
IiwgdC5yZWxpYWJsZU1hcmdpblJpZ2h0ID0gIXBhcnNlRmxvYXQoKGUuZ2V0Q29tcHV0ZWRTdHls
ZShyLCBudWxsKSB8fCB7fSkubWFyZ2luUmlnaHQpKSwgdHlwZW9mIGQuc3R5bGUuem9vbSAhPT0g
aSAmJiAoZC5pbm5lckhUTUwgPSAiIiwgZC5zdHlsZS5jc3NUZXh0ID0gcyArICJ3aWR0aDoxcHg7
cGFkZGluZzoxcHg7ZGlzcGxheTppbmxpbmU7em9vbToxIiwgdC5pbmxpbmVCbG9ja05lZWRzTGF5
b3V0ID0gMyA9PT0gZC5vZmZzZXRXaWR0aCwgZC5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIiwgZC5p
bm5lckhUTUwgPSAiPGRpdj48L2Rpdj4iLCBkLmZpcnN0Q2hpbGQuc3R5bGUud2lkdGggPSAiNXB4
IiwgdC5zaHJpbmtXcmFwQmxvY2tzID0gMyAhPT0gZC5vZmZzZXRXaWR0aCwgdC5pbmxpbmVCbG9j
a05lZWRzTGF5b3V0ICYmICh1LnN0eWxlLnpvb20gPSAxKSksIHUucmVtb3ZlQ2hpbGQobiksIG4g
PSBkID0gYSA9IHIgPSBudWxsKQotICAgICAgICB9KSwgbiA9IHMgPSB1ID0gbCA9IHIgPSBhID0g
bnVsbCwgdAotICAgIH0oKTsKLSAgICB2YXIgTyA9IC8oPzpce1tcc1xTXSpcfXxcW1tcc1xTXSpc
XSkkLywKLSAgICAgICAgQiA9IC8oW0EtWl0pL2c7Ci0gICAgZnVuY3Rpb24gUChlLCBuLCByLCBp
KSB7Ci0gICAgICAgIGlmIChiLmFjY2VwdERhdGEoZSkpIHsKLSAgICAgICAgICAgIHZhciBvLAot
ICAgICAgICAgICAgICAgIGEsCi0gICAgICAgICAgICAgICAgcyA9IGIuZXhwYW5kbywKLSAgICAg
ICAgICAgICAgICB1ID0gInN0cmluZyIgPT0gdHlwZW9mIG4sCi0gICAgICAgICAgICAgICAgbCA9
IGUubm9kZVR5cGUsCi0gICAgICAgICAgICAgICAgcCA9IGwgPyBiLmNhY2hlIDogZSwKLSAgICAg
ICAgICAgICAgICBmID0gbCA/IGVbc10gOiBlW3NdICYmIHM7Ci0gICAgICAgICAgICBpZiAoZiAm
JiBwW2ZdICYmIChpIHx8IHBbZl0uZGF0YSkgfHwgIXUgfHwgciAhPT0gdCkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZiB8fCAobCA/IGVbc10gPSBmID0gYy5wb3AoKSB8fCBiLmd1aWQrKyA6IGYg
PSBzKSwgcFtmXSB8fCAocFtmXSA9IHt9LCBsIHx8IChwW2ZdLnRvSlNPTiA9IGIubm9vcCkpLCAo
Im9iamVjdCIgPT0gdHlwZW9mIG4gfHwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgbikgJiYgKGkgPyBw
W2ZdID0gYi5leHRlbmQocFtmXSwgbikgOiBwW2ZdLmRhdGEgPSBiLmV4dGVuZChwW2ZdLmRhdGEs
IG4pKSwgbyA9IHBbZl0sIGkgfHwgKG8uZGF0YSB8fCAoby5kYXRhID0ge30pLCBvID0gby5kYXRh
KSwgciAhPT0gdCAmJiAob1tiLmNhbWVsQ2FzZShuKV0gPSByKSwgdSA/IChhID0gb1tuXSwgbnVs
bCA9PSBhICYmIChhID0gb1tiLmNhbWVsQ2FzZShuKV0pKSA6IGEgPSBvLCBhCi0gICAgICAgIH0K
LSAgICB9Ci0gICAgZnVuY3Rpb24gUihlLCB0LCBuKSB7Ci0gICAgICAgIGlmIChiLmFjY2VwdERh
dGEoZSkpIHsKLSAgICAgICAgICAgIHZhciByLAotICAgICAgICAgICAgICAgIGksCi0gICAgICAg
ICAgICAgICAgbywKLSAgICAgICAgICAgICAgICBhID0gZS5ub2RlVHlwZSwKLSAgICAgICAgICAg
ICAgICBzID0gYSA/IGIuY2FjaGUgOiBlLAotICAgICAgICAgICAgICAgIHUgPSBhID8gZVtiLmV4
cGFuZG9dIDogYi5leHBhbmRvOwotICAgICAgICAgICAgaWYgKHNbdV0pIHsKLSAgICAgICAgICAg
ICAgICBpZiAodCAmJiAobyA9IG4gPyBzW3VdIDogc1t1XS5kYXRhKSkgewotICAgICAgICAgICAg
ICAgICAgICBiLmlzQXJyYXkodCkgPyB0ID0gdC5jb25jYXQoYi5tYXAodCwgYi5jYW1lbENhc2Up
KSA6IHQgaW4gbyA/IHQgPSBbdF0gOiAodCA9IGIuY2FtZWxDYXNlKHQpLCB0ID0gdCBpbiBvID8g
W3RdIDogdC5zcGxpdCgiICIpKTsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChyID0gMCwgaSA9
IHQubGVuZ3RoOyBpID4gcjsgcisrKQotICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG9b
dFtyXV07Ci0gICAgICAgICAgICAgICAgICAgIGlmICghKG4gPyAkIDogYi5pc0VtcHR5T2JqZWN0
KShvKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAobiB8fCAoZGVsZXRlIHNbdV0uZGF0YSwgJChzW3VdKSkpICYmIChh
ID8gYi5jbGVhbkRhdGEoW2VdLCAhMCkgOiBiLnN1cHBvcnQuZGVsZXRlRXhwYW5kbyB8fCBzICE9
IHMud2luZG93ID8gZGVsZXRlIHNbdV0gOiBzW3VdID0gbnVsbCkKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KLSAgICBiLmV4dGVuZCh7Ci0gICAgICAgIGNhY2hlOiB7fSwKLSAgICAg
ICAgZXhwYW5kbzogImpRdWVyeSIgKyAocCArIE1hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xEL2cs
ICIiKSwKLSAgICAgICAgbm9EYXRhOiB7Ci0gICAgICAgICAgICBlbWJlZDogITAsCi0gICAgICAg
ICAgICBvYmplY3Q6ICJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAi
LAotICAgICAgICAgICAgYXBwbGV0OiAhMAotICAgICAgICB9LAotICAgICAgICBoYXNEYXRhOiBm
dW5jdGlvbihlKSB7Ci0gICAgICAgICAgICByZXR1cm4gZSA9IGUubm9kZVR5cGUgPyBiLmNhY2hl
W2VbYi5leHBhbmRvXV0gOiBlW2IuZXhwYW5kb10sICEhZSAmJiAhJChlKQotICAgICAgICB9LAot
ICAgICAgICBkYXRhOiBmdW5jdGlvbihlLCB0LCBuKSB7Ci0gICAgICAgICAgICByZXR1cm4gUChl
LCB0LCBuKQotICAgICAgICB9LAotICAgICAgICByZW1vdmVEYXRhOiBmdW5jdGlvbihlLCB0KSB7
Ci0gICAgICAgICAgICByZXR1cm4gUihlLCB0KQotICAgICAgICB9LAotICAgICAgICBfZGF0YTog
ZnVuY3Rpb24oZSwgdCwgbikgewotICAgICAgICAgICAgcmV0dXJuIFAoZSwgdCwgbiwgITApCi0g
ICAgICAgIH0sCi0gICAgICAgIF9yZW1vdmVEYXRhOiBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAg
ICAgICByZXR1cm4gUihlLCB0LCAhMCkKLSAgICAgICAgfSwKLSAgICAgICAgYWNjZXB0RGF0YTog
ZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgaWYgKGUubm9kZVR5cGUgJiYgMSAhPT0gZS5ub2Rl
VHlwZSAmJiA5ICE9PSBlLm5vZGVUeXBlKQotICAgICAgICAgICAgICAgIHJldHVybiAhMTsKLSAg
ICAgICAgICAgIHZhciB0ID0gZS5ub2RlTmFtZSAmJiBiLm5vRGF0YVtlLm5vZGVOYW1lLnRvTG93
ZXJDYXNlKCldOwotICAgICAgICAgICAgcmV0dXJuICF0IHx8IHQgIT09ICEwICYmIGUuZ2V0QXR0
cmlidXRlKCJjbGFzc2lkIikgPT09IHQKLSAgICAgICAgfQotICAgIH0pLAotICAgIGIuZm4uZXh0
ZW5kKHsKLSAgICAgICAgZGF0YTogZnVuY3Rpb24oZSwgbikgewotICAgICAgICAgICAgdmFyIHIs
Ci0gICAgICAgICAgICAgICAgaSwKLSAgICAgICAgICAgICAgICBvID0gdGhpc1swXSwKLSAgICAg
ICAgICAgICAgICBhID0gMCwKLSAgICAgICAgICAgICAgICBzID0gbnVsbDsKLSAgICAgICAgICAg
IGlmIChlID09PSB0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRoaXMubGVuZ3RoICYmIChzID0g
Yi5kYXRhKG8pLCAxID09PSBvLm5vZGVUeXBlICYmICFiLl9kYXRhKG8sICJwYXJzZWRBdHRycyIp
KSkgewotICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSBvLmF0dHJpYnV0ZXM7IHIubGVuZ3Ro
ID4gYTsgYSsrKQotICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHJbYV0ubmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGkuaW5kZXhPZigiZGF0YS0iKSB8fCAoaSA9IGIuY2FtZWxDYXNl
KGkuc2xpY2UoNSkpLCBXKG8sIGksIHNbaV0pKTsKLSAgICAgICAgICAgICAgICAgICAgYi5fZGF0
YShvLCAicGFyc2VkQXR0cnMiLCAhMCkKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHMKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiAib2JqZWN0IiA9
PSB0eXBlb2YgZSA/IHRoaXMuZWFjaChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBiLmRh
dGEodGhpcywgZSkKLSAgICAgICAgICAgIH0pIDogYi5hY2Nlc3ModGhpcywgZnVuY3Rpb24obikg
ewotICAgICAgICAgICAgICAgIHJldHVybiBuID09PSB0ID8gbyA/IFcobywgZSwgYi5kYXRhKG8s
IGUpKSA6IG51bGwgOiAodGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAg
ICBiLmRhdGEodGhpcywgZSwgbikKLSAgICAgICAgICAgICAgICB9KSwgdCkKLSAgICAgICAgICAg
IH0sIG51bGwsIG4sIGFyZ3VtZW50cy5sZW5ndGggPiAxLCBudWxsLCAhMCkKLSAgICAgICAgfSwK
LSAgICAgICAgcmVtb3ZlRGF0YTogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgcmV0dXJuIHRo
aXMuZWFjaChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBiLnJlbW92ZURhdGEodGhpcywg
ZSkKLSAgICAgICAgICAgIH0pCi0gICAgICAgIH0KLSAgICB9KTsKLSAgICBmdW5jdGlvbiBXKGUs
IG4sIHIpIHsKLSAgICAgICAgaWYgKHIgPT09IHQgJiYgMSA9PT0gZS5ub2RlVHlwZSkgewotICAg
ICAgICAgICAgdmFyIGkgPSAiZGF0YS0iICsgbi5yZXBsYWNlKEIsICItJDEiKS50b0xvd2VyQ2Fz
ZSgpOwotICAgICAgICAgICAgaWYgKHIgPSBlLmdldEF0dHJpYnV0ZShpKSwgInN0cmluZyIgPT0g
dHlwZW9mIHIpIHsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBy
ID0gInRydWUiID09PSByID8gITAgOiAiZmFsc2UiID09PSByID8gITEgOiAibnVsbCIgPT09IHIg
PyBudWxsIDogK3IgKyAiIiA9PT0gciA/ICtyIDogTy50ZXN0KHIpID8gYi5wYXJzZUpTT04ocikg
OiByCi0gICAgICAgICAgICAgICAgfSBjYXRjaCAobykge30KLSAgICAgICAgICAgICAgICBiLmRh
dGEoZSwgbiwgcikKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHIgPSB0Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHIKLSAgICB9Ci0gICAgZnVuY3Rpb24gJChlKSB7Ci0g
ICAgICAgIHZhciB0OwotICAgICAgICBmb3IgKHQgaW4gZSkKLSAgICAgICAgICAgIGlmICgoImRh
dGEiICE9PSB0IHx8ICFiLmlzRW1wdHlPYmplY3QoZVt0XSkpICYmICJ0b0pTT04iICE9PSB0KQot
ICAgICAgICAgICAgICAgIHJldHVybiAhMTsKLSAgICAgICAgcmV0dXJuICEwCi0gICAgfQotICAg
IGIuZXh0ZW5kKHsKLSAgICAgICAgcXVldWU6IGZ1bmN0aW9uKGUsIG4sIHIpIHsKLSAgICAgICAg
ICAgIHZhciBpOwotICAgICAgICAgICAgcmV0dXJuIGUgPyAobiA9IChuIHx8ICJmeCIpICsgInF1
ZXVlIiwgaSA9IGIuX2RhdGEoZSwgbiksIHIgJiYgKCFpIHx8IGIuaXNBcnJheShyKSA/IGkgPSBi
Ll9kYXRhKGUsIG4sIGIubWFrZUFycmF5KHIpKSA6IGkucHVzaChyKSksIGkgfHwgW10pIDogdAot
ICAgICAgICB9LAotICAgICAgICBkZXF1ZXVlOiBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAg
ICB0ID0gdCB8fCAiZngiOwotICAgICAgICAgICAgdmFyIG4gPSBiLnF1ZXVlKGUsIHQpLAotICAg
ICAgICAgICAgICAgIHIgPSBuLmxlbmd0aCwKLSAgICAgICAgICAgICAgICBpID0gbi5zaGlmdCgp
LAotICAgICAgICAgICAgICAgIG8gPSBiLl9xdWV1ZUhvb2tzKGUsIHQpLAotICAgICAgICAgICAg
ICAgIGEgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgYi5kZXF1ZXVlKGUsIHQp
Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICJpbnByb2dyZXNzIiA9PT0gaSAmJiAo
aSA9IG4uc2hpZnQoKSwgci0tKSwKLSAgICAgICAgICAgIG8uY3VyID0gaSwKLSAgICAgICAgICAg
IGkgJiYgKCJmeCIgPT09IHQgJiYgbi51bnNoaWZ0KCJpbnByb2dyZXNzIiksIGRlbGV0ZSBvLnN0
b3AsIGkuY2FsbChlLCBhLCBvKSksCi0gICAgICAgICAgICAhciAmJiBvICYmIG8uZW1wdHkuZmly
ZSgpCi0gICAgICAgIH0sCi0gICAgICAgIF9xdWV1ZUhvb2tzOiBmdW5jdGlvbihlLCB0KSB7Ci0g
ICAgICAgICAgICB2YXIgbiA9IHQgKyAicXVldWVIb29rcyI7Ci0gICAgICAgICAgICByZXR1cm4g
Yi5fZGF0YShlLCBuKSB8fCBiLl9kYXRhKGUsIG4sIHsKLSAgICAgICAgICAgICAgICAgICAgZW1w
dHk6IGIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLmFkZChmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGIuX3JlbW92ZURhdGEoZSwgdCArICJxdWV1ZSIpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgYi5fcmVtb3ZlRGF0YShlLCBuKQotICAgICAgICAgICAgICAgICAgICB9
KQotICAgICAgICAgICAgICAgIH0pCi0gICAgICAgIH0KLSAgICB9KSwKLSAgICBiLmZuLmV4dGVu
ZCh7Ci0gICAgICAgIHF1ZXVlOiBmdW5jdGlvbihlLCBuKSB7Ci0gICAgICAgICAgICB2YXIgciA9
IDI7Ci0gICAgICAgICAgICByZXR1cm4gInN0cmluZyIgIT0gdHlwZW9mIGUgJiYgKG4gPSBlLCBl
ID0gImZ4Iiwgci0tKSwgciA+IGFyZ3VtZW50cy5sZW5ndGggPyBiLnF1ZXVlKHRoaXNbMF0sIGUp
IDogbiA9PT0gdCA/IHRoaXMgOiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAg
ICAgdmFyIHQgPSBiLnF1ZXVlKHRoaXMsIGUsIG4pOwotICAgICAgICAgICAgICAgIGIuX3F1ZXVl
SG9va3ModGhpcywgZSksCi0gICAgICAgICAgICAgICAgImZ4IiA9PT0gZSAmJiAiaW5wcm9ncmVz
cyIgIT09IHRbMF0gJiYgYi5kZXF1ZXVlKHRoaXMsIGUpCi0gICAgICAgICAgICB9KQotICAgICAg
ICB9LAotICAgICAgICBkZXF1ZXVlOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICByZXR1cm4g
dGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGIuZGVxdWV1ZSh0aGlzLCBl
KQotICAgICAgICAgICAgfSkKLSAgICAgICAgfSwKLSAgICAgICAgZGVsYXk6IGZ1bmN0aW9uKGUs
IHQpIHsKLSAgICAgICAgICAgIHJldHVybiBlID0gYi5meCA/IGIuZnguc3BlZWRzW2VdIHx8IGUg
OiBlLCB0ID0gdCB8fCAiZngiLCB0aGlzLnF1ZXVlKHQsIGZ1bmN0aW9uKHQsIG4pIHsKLSAgICAg
ICAgICAgICAgICB2YXIgciA9IHNldFRpbWVvdXQodCwgZSk7Ci0gICAgICAgICAgICAgICAgbi5z
dG9wID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChyKQot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pCi0gICAgICAgIH0sCi0gICAgICAgIGNs
ZWFyUXVldWU6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLnF1ZXVlKGUg
fHwgImZ4IiwgW10pCi0gICAgICAgIH0sCi0gICAgICAgIHByb21pc2U6IGZ1bmN0aW9uKGUsIG4p
IHsKLSAgICAgICAgICAgIHZhciByLAotICAgICAgICAgICAgICAgIGkgPSAxLAotICAgICAgICAg
ICAgICAgIG8gPSBiLkRlZmVycmVkKCksCi0gICAgICAgICAgICAgICAgYSA9IHRoaXMsCi0gICAg
ICAgICAgICAgICAgcyA9IHRoaXMubGVuZ3RoLAotICAgICAgICAgICAgICAgIHUgPSBmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgICAgICAgICAgLS1pIHx8IG8ucmVzb2x2ZVdpdGgoYSwgW2FdKQot
ICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAic3RyaW5nIiAhPSB0eXBlb2YgZSAmJiAo
biA9IGUsIGUgPSB0KSwKLSAgICAgICAgICAgIGUgPSBlIHx8ICJmeCI7Ci0gICAgICAgICAgICB3
aGlsZSAocy0tKQotICAgICAgICAgICAgICAgIHIgPSBiLl9kYXRhKGFbc10sIGUgKyAicXVldWVI
b29rcyIpLAotICAgICAgICAgICAgICAgIHIgJiYgci5lbXB0eSAmJiAoaSsrLCByLmVtcHR5LmFk
ZCh1KSk7Ci0gICAgICAgICAgICByZXR1cm4gdSgpLCBvLnByb21pc2UobikKLSAgICAgICAgfQot
ICAgIH0pOwotICAgIHZhciBJLAotICAgICAgICB6LAotICAgICAgICBYID0gL1tcdFxyXG5dL2cs
Ci0gICAgICAgIFUgPSAvXHIvZywKLSAgICAgICAgViA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRh
cmVhfGJ1dHRvbnxvYmplY3QpJC9pLAotICAgICAgICBZID0gL14oPzphfGFyZWEpJC9pLAotICAg
ICAgICBKID0gL14oPzpjaGVja2VkfHNlbGVjdGVkfGF1dG9mb2N1c3xhdXRvcGxheXxhc3luY3xj
b250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5
fHJlcXVpcmVkfHNjb3BlZCkkL2ksCi0gICAgICAgIEcgPSAvXig/OmNoZWNrZWR8c2VsZWN0ZWQp
JC9pLAotICAgICAgICBRID0gYi5zdXBwb3J0LmdldFNldEF0dHJpYnV0ZSwKLSAgICAgICAgSyA9
IGIuc3VwcG9ydC5pbnB1dDsKLSAgICBiLmZuLmV4dGVuZCh7Ci0gICAgICAgIGF0dHI6IGZ1bmN0
aW9uKGUsIHQpIHsKLSAgICAgICAgICAgIHJldHVybiBiLmFjY2Vzcyh0aGlzLCBiLmF0dHIsIGUs
IHQsIGFyZ3VtZW50cy5sZW5ndGggPiAxKQotICAgICAgICB9LAotICAgICAgICByZW1vdmVBdHRy
OiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICAgIGIucmVtb3ZlQXR0cih0aGlzLCBlKQotICAgICAgICAgICAgfSkK
LSAgICAgICAgfSwKLSAgICAgICAgcHJvcDogZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAg
cmV0dXJuIGIuYWNjZXNzKHRoaXMsIGIucHJvcCwgZSwgdCwgYXJndW1lbnRzLmxlbmd0aCA+IDEp
Ci0gICAgICAgIH0sCi0gICAgICAgIHJlbW92ZVByb3A6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAg
ICAgIHJldHVybiBlID0gYi5wcm9wRml4W2VdIHx8IGUsIHRoaXMuZWFjaChmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICB0aGlzW2VdID0gdCwK
LSAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXNbZV0KLSAgICAgICAgICAgICAgICB9IGNh
dGNoIChuKSB7fQotICAgICAgICAgICAgfSkKLSAgICAgICAgfSwKLSAgICAgICAgYWRkQ2xhc3M6
IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHZhciB0LAotICAgICAgICAgICAgICAgIG4sCi0g
ICAgICAgICAgICAgICAgciwKLSAgICAgICAgICAgICAgICBpLAotICAgICAgICAgICAgICAgIG8s
Ci0gICAgICAgICAgICAgICAgYSA9IDAsCi0gICAgICAgICAgICAgICAgcyA9IHRoaXMubGVuZ3Ro
LAotICAgICAgICAgICAgICAgIHUgPSAic3RyaW5nIiA9PSB0eXBlb2YgZSAmJiBlOwotICAgICAg
ICAgICAgaWYgKGIuaXNGdW5jdGlvbihlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5l
YWNoKGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgICAgICAgICAgICAgYih0aGlzKS5hZGRDbGFzcyhl
LmNhbGwodGhpcywgdCwgdGhpcy5jbGFzc05hbWUpKQotICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgaWYgKHUpCi0gICAgICAgICAgICAgICAgZm9yICh0ID0gKGUgfHwgIiIpLm1hdGNo
KHcpIHx8IFtdOyBzID4gYTsgYSsrKQotICAgICAgICAgICAgICAgICAgICBpZiAobiA9IHRoaXNb
YV0sIHIgPSAxID09PSBuLm5vZGVUeXBlICYmIChuLmNsYXNzTmFtZSA/ICgiICIgKyBuLmNsYXNz
TmFtZSArICIgIikucmVwbGFjZShYLCAiICIpIDogIiAiKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgbyA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaSA9IHRbbysrXSkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAwID4gci5pbmRleE9mKCIgIiArIGkgKyAiICIp
ICYmIChyICs9IGkgKyAiICIpOwotICAgICAgICAgICAgICAgICAgICAgICAgbi5jbGFzc05hbWUg
PSBiLnRyaW0ocikKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRo
aXMKLSAgICAgICAgfSwKLSAgICAgICAgcmVtb3ZlQ2xhc3M6IGZ1bmN0aW9uKGUpIHsKLSAgICAg
ICAgICAgIHZhciB0LAotICAgICAgICAgICAgICAgIG4sCi0gICAgICAgICAgICAgICAgciwKLSAg
ICAgICAgICAgICAgICBpLAotICAgICAgICAgICAgICAgIG8sCi0gICAgICAgICAgICAgICAgYSA9
IDAsCi0gICAgICAgICAgICAgICAgcyA9IHRoaXMubGVuZ3RoLAotICAgICAgICAgICAgICAgIHUg
PSAwID09PSBhcmd1bWVudHMubGVuZ3RoIHx8ICJzdHJpbmciID09IHR5cGVvZiBlICYmIGU7Ci0g
ICAgICAgICAgICBpZiAoYi5pc0Z1bmN0aW9uKGUpKQotICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzLmVhY2goZnVuY3Rpb24odCkgewotICAgICAgICAgICAgICAgICAgICBiKHRoaXMpLnJlbW92
ZUNsYXNzKGUuY2FsbCh0aGlzLCB0LCB0aGlzLmNsYXNzTmFtZSkpCi0gICAgICAgICAgICAgICAg
fSk7Ci0gICAgICAgICAgICBpZiAodSkKLSAgICAgICAgICAgICAgICBmb3IgKHQgPSAoZSB8fCAi
IikubWF0Y2godykgfHwgW107IHMgPiBhOyBhKyspCi0gICAgICAgICAgICAgICAgICAgIGlmIChu
ID0gdGhpc1thXSwgciA9IDEgPT09IG4ubm9kZVR5cGUgJiYgKG4uY2xhc3NOYW1lID8gKCIgIiAr
IG4uY2xhc3NOYW1lICsgIiAiKS5yZXBsYWNlKFgsICIgIikgOiAiIikpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG8gPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGkgPSB0
W28rK10pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHIuaW5kZXhPZigiICIg
KyBpICsgIiAiKSA+PSAwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gci5y
ZXBsYWNlKCIgIiArIGkgKyAiICIsICIgIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuLmNs
YXNzTmFtZSA9IGUgPyBiLnRyaW0ocikgOiAiIgotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICByZXR1cm4gdGhpcwotICAgICAgICB9LAotICAgICAgICB0b2dnbGVDbGFzczogZnVu
Y3Rpb24oZSwgdCkgewotICAgICAgICAgICAgdmFyIG4gPSB0eXBlb2YgZSwKLSAgICAgICAgICAg
ICAgICByID0gImJvb2xlYW4iID09IHR5cGVvZiB0OwotICAgICAgICAgICAgcmV0dXJuIGIuaXNG
dW5jdGlvbihlKSA/IHRoaXMuZWFjaChmdW5jdGlvbihuKSB7Ci0gICAgICAgICAgICAgICAgYih0
aGlzKS50b2dnbGVDbGFzcyhlLmNhbGwodGhpcywgbiwgdGhpcy5jbGFzc05hbWUsIHQpLCB0KQot
ICAgICAgICAgICAgfSkgOiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKCJzdHJpbmciID09PSBuKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBvLAotICAgICAg
ICAgICAgICAgICAgICAgICAgYSA9IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICBzID0gYih0
aGlzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgbCA9IGUubWF0Y2godykgfHwgW107Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlIChv
ID0gbFthKytdKQotICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHIgPyB1IDogIXMuaGFzQ2xh
c3MobyksCi0gICAgICAgICAgICAgICAgICAgICAgICBzW3UgPyAiYWRkQ2xhc3MiIDogInJlbW92
ZUNsYXNzIl0obykKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
KG4gPT09IGkgfHwgImJvb2xlYW4iID09PSBuKSAmJiAodGhpcy5jbGFzc05hbWUgJiYgYi5fZGF0
YSh0aGlzLCAiX19jbGFzc05hbWVfXyIsIHRoaXMuY2xhc3NOYW1lKSwgdGhpcy5jbGFzc05hbWUg
PSB0aGlzLmNsYXNzTmFtZSB8fCBlID09PSAhMSA/ICIiIDogYi5fZGF0YSh0aGlzLCAiX19jbGFz
c05hbWVfXyIpIHx8ICIiKQotICAgICAgICAgICAgfSkKLSAgICAgICAgfSwKLSAgICAgICAgaGFz
Q2xhc3M6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHZhciB0ID0gIiAiICsgZSArICIgIiwK
LSAgICAgICAgICAgICAgICBuID0gMCwKLSAgICAgICAgICAgICAgICByID0gdGhpcy5sZW5ndGg7
Ci0gICAgICAgICAgICBmb3IgKDsgciA+IG47IG4rKykKLSAgICAgICAgICAgICAgICBpZiAoMSA9
PT0gdGhpc1tuXS5ub2RlVHlwZSAmJiAoIiAiICsgdGhpc1tuXS5jbGFzc05hbWUgKyAiICIpLnJl
cGxhY2UoWCwgIiAiKS5pbmRleE9mKHQpID49IDApCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biAhMDsKLSAgICAgICAgICAgIHJldHVybiAhMQotICAgICAgICB9LAotICAgICAgICB2YWw6IGZ1
bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHZhciBuLAotICAgICAgICAgICAgICAgIHIsCi0gICAg
ICAgICAgICAgICAgaSwKLSAgICAgICAgICAgICAgICBvID0gdGhpc1swXTsKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCkKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGkgPSBiLmlzRnVuY3Rpb24oZSksIHRoaXMuZWFjaChmdW5jdGlvbihuKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhID0gYih0aGlzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIDEgPT09IHRoaXMubm9k
ZVR5cGUgJiYgKG8gPSBpID8gZS5jYWxsKHRoaXMsIG4sIGEudmFsKCkpIDogZSwgbnVsbCA9PSBv
ID8gbyA9ICIiIDogIm51bWJlciIgPT0gdHlwZW9mIG8gPyBvICs9ICIiIDogYi5pc0FycmF5KG8p
ICYmIChvID0gYi5tYXAobywgZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBudWxsID09IGUgPyAiIiA6IGUgKyAiIgotICAgICAgICAgICAgICAgICAgICAg
ICAgfSkpLCByID0gYi52YWxIb29rc1t0aGlzLnR5cGVdIHx8IGIudmFsSG9va3NbdGhpcy5ub2Rl
TmFtZS50b0xvd2VyQ2FzZSgpXSwgciAmJiAic2V0IiBpbiByICYmIHIuc2V0KHRoaXMsIG8sICJ2
YWx1ZSIpICE9PSB0IHx8ICh0aGlzLnZhbHVlID0gbykpCi0gICAgICAgICAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgICAgIGlmIChvKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gciA9
IGIudmFsSG9va3Nbby50eXBlXSB8fCBiLnZhbEhvb2tzW28ubm9kZU5hbWUudG9Mb3dlckNhc2Uo
KV0sIHIgJiYgImdldCIgaW4gciAmJiAobiA9IHIuZ2V0KG8sICJ2YWx1ZSIpKSAhPT0gdCA/IG4g
OiAobiA9IG8udmFsdWUsICJzdHJpbmciID09IHR5cGVvZiBuID8gbi5yZXBsYWNlKFUsICIiKSA6
IG51bGwgPT0gbiA/ICIiIDogbikKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0pLAot
ICAgIGIuZXh0ZW5kKHsKLSAgICAgICAgdmFsSG9va3M6IHsKLSAgICAgICAgICAgIG9wdGlvbjog
ewotICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAg
ICB2YXIgdCA9IGUuYXR0cmlidXRlcy52YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICF0IHx8IHQuc3BlY2lmaWVkID8gZS52YWx1ZSA6IGUudGV4dAotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBzZWxlY3Q6IHsKLSAgICAgICAgICAgICAgICBn
ZXQ6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBuLAotICAgICAgICAgICAgICAgICAgICAgICAgciA9IGUub3B0aW9ucywK
LSAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLnNlbGVjdGVkSW5kZXgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBvID0gInNlbGVjdC1vbmUiID09PSBlLnR5cGUgfHwgMCA+IGksCi0gICAg
ICAgICAgICAgICAgICAgICAgICBhID0gbyA/IG51bGwgOiBbXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHMgPSBvID8gaSArIDEgOiByLmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg
IHUgPSAwID4gaSA/IHMgOiBvID8gaSA6IDA7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoOyBz
ID4gdTsgdSsrKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSByW3VdLCAhKCFuLnNl
bGVjdGVkICYmIHUgIT09IGkgfHwgKGIuc3VwcG9ydC5vcHREaXNhYmxlZCA/IG4uZGlzYWJsZWQg
OiBudWxsICE9PSBuLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKSkgfHwgbi5wYXJlbnROb2RlLmRp
c2FibGVkICYmIGIubm9kZU5hbWUobi5wYXJlbnROb2RlLCAib3B0Z3JvdXAiKSkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGIobikudmFsKCksIG8pCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0OwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGEucHVzaCh0KQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gYQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgc2V0OiBm
dW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBuID0gYi5tYWtlQXJyYXko
dCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBiKGUpLmZpbmQoIm9wdGlvbiIpLmVhY2go
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gYi5p
bkFycmF5KGIodGhpcykudmFsKCksIG4pID49IDAKLSAgICAgICAgICAgICAgICAgICAgfSksIG4u
bGVuZ3RoIHx8IChlLnNlbGVjdGVkSW5kZXggPSAtMSksIG4KLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgIGF0dHI6IGZ1bmN0aW9uKGUsIG4sIHIp
IHsKLSAgICAgICAgICAgIHZhciBvLAotICAgICAgICAgICAgICAgIGEsCi0gICAgICAgICAgICAg
ICAgcywKLSAgICAgICAgICAgICAgICB1ID0gZS5ub2RlVHlwZTsKLSAgICAgICAgICAgIGlmIChl
ICYmIDMgIT09IHUgJiYgOCAhPT0gdSAmJiAyICE9PSB1KQotICAgICAgICAgICAgICAgIHJldHVy
biB0eXBlb2YgZS5nZXRBdHRyaWJ1dGUgPT09IGkgPyBiLnByb3AoZSwgbiwgcikgOiAoYSA9IDEg
IT09IHUgfHwgIWIuaXNYTUxEb2MoZSksIGEgJiYgKG4gPSBuLnRvTG93ZXJDYXNlKCksIG8gPSBi
LmF0dHJIb29rc1tuXSB8fCAoSi50ZXN0KG4pID8geiA6IEkpKSwgciA9PT0gdCA/IG8gJiYgYSAm
JiAiZ2V0IiBpbiBvICYmIG51bGwgIT09IChzID0gby5nZXQoZSwgbikpID8gcyA6ICh0eXBlb2Yg
ZS5nZXRBdHRyaWJ1dGUgIT09IGkgJiYgKHMgPSBlLmdldEF0dHJpYnV0ZShuKSksIG51bGwgPT0g
cyA/IHQgOiBzKSA6IG51bGwgIT09IHIgPyBvICYmIGEgJiYgInNldCIgaW4gbyAmJiAocyA9IG8u
c2V0KGUsIHIsIG4pKSAhPT0gdCA/IHMgOiAoZS5zZXRBdHRyaWJ1dGUobiwgciArICIiKSwgcikg
OiAoYi5yZW1vdmVBdHRyKGUsIG4pLCB0KSkKLSAgICAgICAgfSwKLSAgICAgICAgcmVtb3ZlQXR0
cjogZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAgdmFyIG4sCi0gICAgICAgICAgICAgICAg
ciwKLSAgICAgICAgICAgICAgICBpID0gMCwKLSAgICAgICAgICAgICAgICBvID0gdCAmJiB0Lm1h
dGNoKHcpOwotICAgICAgICAgICAgaWYgKG8gJiYgMSA9PT0gZS5ub2RlVHlwZSkKLSAgICAgICAg
ICAgICAgICB3aGlsZSAobiA9IG9baSsrXSkKLSAgICAgICAgICAgICAgICAgICAgciA9IGIucHJv
cEZpeFtuXSB8fCBuLAotICAgICAgICAgICAgICAgICAgICBKLnRlc3QobikgPyAhUSAmJiBHLnRl
c3QobikgPyBlW2IuY2FtZWxDYXNlKCJkZWZhdWx0LSIgKyBuKV0gPSBlW3JdID0gITEgOiBlW3Jd
ID0gITEgOiBiLmF0dHIoZSwgbiwgIiIpLAotICAgICAgICAgICAgICAgICAgICBlLnJlbW92ZUF0
dHJpYnV0ZShRID8gbiA6IHIpCi0gICAgICAgIH0sCi0gICAgICAgIGF0dHJIb29rczogewotICAg
ICAgICAgICAgdHlwZTogewotICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24oZSwgdCkgewot
ICAgICAgICAgICAgICAgICAgICBpZiAoIWIuc3VwcG9ydC5yYWRpb1ZhbHVlICYmICJyYWRpbyIg
PT09IHQgJiYgYi5ub2RlTmFtZShlLCAiaW5wdXQiKSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIG4gPSBlLnZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuc2V0
QXR0cmlidXRlKCJ0eXBlIiwgdCksIG4gJiYgKGUudmFsdWUgPSBuKSwgdAotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9LAot
ICAgICAgICBwcm9wRml4OiB7Ci0gICAgICAgICAgICB0YWJpbmRleDogInRhYkluZGV4IiwKLSAg
ICAgICAgICAgIHJlYWRvbmx5OiAicmVhZE9ubHkiLAotICAgICAgICAgICAgImZvciI6ICJodG1s
Rm9yIiwKLSAgICAgICAgICAgICJjbGFzcyI6ICJjbGFzc05hbWUiLAotICAgICAgICAgICAgbWF4
bGVuZ3RoOiAibWF4TGVuZ3RoIiwKLSAgICAgICAgICAgIGNlbGxzcGFjaW5nOiAiY2VsbFNwYWNp
bmciLAotICAgICAgICAgICAgY2VsbHBhZGRpbmc6ICJjZWxsUGFkZGluZyIsCi0gICAgICAgICAg
ICByb3dzcGFuOiAicm93U3BhbiIsCi0gICAgICAgICAgICBjb2xzcGFuOiAiY29sU3BhbiIsCi0g
ICAgICAgICAgICB1c2VtYXA6ICJ1c2VNYXAiLAotICAgICAgICAgICAgZnJhbWVib3JkZXI6ICJm
cmFtZUJvcmRlciIsCi0gICAgICAgICAgICBjb250ZW50ZWRpdGFibGU6ICJjb250ZW50RWRpdGFi
bGUiCi0gICAgICAgIH0sCi0gICAgICAgIHByb3A6IGZ1bmN0aW9uKGUsIG4sIHIpIHsKLSAgICAg
ICAgICAgIHZhciBpLAotICAgICAgICAgICAgICAgIG8sCi0gICAgICAgICAgICAgICAgYSwKLSAg
ICAgICAgICAgICAgICBzID0gZS5ub2RlVHlwZTsKLSAgICAgICAgICAgIGlmIChlICYmIDMgIT09
IHMgJiYgOCAhPT0gcyAmJiAyICE9PSBzKQotICAgICAgICAgICAgICAgIHJldHVybiBhID0gMSAh
PT0gcyB8fCAhYi5pc1hNTERvYyhlKSwgYSAmJiAobiA9IGIucHJvcEZpeFtuXSB8fCBuLCBvID0g
Yi5wcm9wSG9va3Nbbl0pLCByICE9PSB0ID8gbyAmJiAic2V0IiBpbiBvICYmIChpID0gby5zZXQo
ZSwgciwgbikpICE9PSB0ID8gaSA6IGVbbl0gPSByIDogbyAmJiAiZ2V0IiBpbiBvICYmIG51bGwg
IT09IChpID0gby5nZXQoZSwgbikpID8gaSA6IGVbbl0KLSAgICAgICAgfSwKLSAgICAgICAgcHJv
cEhvb2tzOiB7Ci0gICAgICAgICAgICB0YWJJbmRleDogewotICAgICAgICAgICAgICAgIGdldDog
ZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUuZ2V0QXR0cmlidXRl
Tm9kZSgidGFiaW5kZXgiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgbi5zcGVj
aWZpZWQgPyBwYXJzZUludChuLnZhbHVlLCAxMCkgOiBWLnRlc3QoZS5ub2RlTmFtZSkgfHwgWS50
ZXN0KGUubm9kZU5hbWUpICYmIGUuaHJlZiA/IDAgOiB0Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSksCi0gICAgeiA9IHsKLSAgICAgICAgZ2V0OiBm
dW5jdGlvbihlLCBuKSB7Ci0gICAgICAgICAgICB2YXIgciA9IGIucHJvcChlLCBuKSwKLSAgICAg
ICAgICAgICAgICBpID0gImJvb2xlYW4iID09IHR5cGVvZiByICYmIGUuZ2V0QXR0cmlidXRlKG4p
LAotICAgICAgICAgICAgICAgIG8gPSAiYm9vbGVhbiIgPT0gdHlwZW9mIHIgPyBLICYmIFEgPyBu
dWxsICE9IGkgOiBHLnRlc3QobikgPyBlW2IuY2FtZWxDYXNlKCJkZWZhdWx0LSIgKyBuKV0gOiAh
IWkgOiBlLmdldEF0dHJpYnV0ZU5vZGUobik7Ci0gICAgICAgICAgICByZXR1cm4gbyAmJiBvLnZh
bHVlICE9PSAhMSA/IG4udG9Mb3dlckNhc2UoKSA6IHQKLSAgICAgICAgfSwKLSAgICAgICAgc2V0
OiBmdW5jdGlvbihlLCB0LCBuKSB7Ci0gICAgICAgICAgICByZXR1cm4gdCA9PT0gITEgPyBiLnJl
bW92ZUF0dHIoZSwgbikgOiBLICYmIFEgfHwgIUcudGVzdChuKSA/IGUuc2V0QXR0cmlidXRlKCFR
ICYmIGIucHJvcEZpeFtuXSB8fCBuLCBuKSA6IGVbYi5jYW1lbENhc2UoImRlZmF1bHQtIiArIG4p
XSA9IGVbbl0gPSAhMCwgbgotICAgICAgICB9Ci0gICAgfSwKLSAgICBLICYmIFEgfHwgKGIuYXR0
ckhvb2tzLnZhbHVlID0gewotICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUsIG4pIHsKLSAgICAgICAg
ICAgIHZhciByID0gZS5nZXRBdHRyaWJ1dGVOb2RlKG4pOwotICAgICAgICAgICAgcmV0dXJuIGIu
bm9kZU5hbWUoZSwgImlucHV0IikgPyBlLmRlZmF1bHRWYWx1ZSA6IHIgJiYgci5zcGVjaWZpZWQg
PyByLnZhbHVlIDogdAotICAgICAgICB9LAotICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUsIG4sIHIp
IHsKLSAgICAgICAgICAgIHJldHVybiBiLm5vZGVOYW1lKGUsICJpbnB1dCIpID8gKGUuZGVmYXVs
dFZhbHVlID0gbiwgdCkgOiBJICYmIEkuc2V0KGUsIG4sIHIpCi0gICAgICAgIH0KLSAgICB9KSwK
LSAgICBRIHx8IChJID0gYi52YWxIb29rcy5idXR0b24gPSB7Ci0gICAgICAgIGdldDogZnVuY3Rp
b24oZSwgbikgewotICAgICAgICAgICAgdmFyIHIgPSBlLmdldEF0dHJpYnV0ZU5vZGUobik7Ci0g
ICAgICAgICAgICByZXR1cm4gciAmJiAoImlkIiA9PT0gbiB8fCAibmFtZSIgPT09IG4gfHwgImNv
b3JkcyIgPT09IG4gPyAiIiAhPT0gci52YWx1ZSA6IHIuc3BlY2lmaWVkKSA/IHIudmFsdWUgOiB0
Ci0gICAgICAgIH0sCi0gICAgICAgIHNldDogZnVuY3Rpb24oZSwgbiwgcikgewotICAgICAgICAg
ICAgdmFyIGkgPSBlLmdldEF0dHJpYnV0ZU5vZGUocik7Ci0gICAgICAgICAgICByZXR1cm4gaSB8
fCBlLnNldEF0dHJpYnV0ZU5vZGUoaSA9IGUub3duZXJEb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGUo
cikpLCBpLnZhbHVlID0gbiArPSAiIiwgInZhbHVlIiA9PT0gciB8fCBuID09PSBlLmdldEF0dHJp
YnV0ZShyKSA/IG4gOiB0Ci0gICAgICAgIH0KLSAgICB9LCBiLmF0dHJIb29rcy5jb250ZW50ZWRp
dGFibGUgPSB7Ci0gICAgICAgIGdldDogSS5nZXQsCi0gICAgICAgIHNldDogZnVuY3Rpb24oZSwg
dCwgbikgewotICAgICAgICAgICAgSS5zZXQoZSwgIiIgPT09IHQgPyAhMSA6IHQsIG4pCi0gICAg
ICAgIH0KLSAgICB9LCBiLmVhY2goWyJ3aWR0aCIsICJoZWlnaHQiXSwgZnVuY3Rpb24oZSwgbikg
ewotICAgICAgICBiLmF0dHJIb29rc1tuXSA9IGIuZXh0ZW5kKGIuYXR0ckhvb2tzW25dLCB7Ci0g
ICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUsIHIpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
IiIgPT09IHIgPyAoZS5zZXRBdHRyaWJ1dGUobiwgImF1dG8iKSwgcikgOiB0Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0pCi0gICAgfSkpLAotICAgIGIuc3VwcG9ydC5ocmVmTm9ybWFsaXplZCB8
fCAoYi5lYWNoKFsiaHJlZiIsICJzcmMiLCAid2lkdGgiLCAiaGVpZ2h0Il0sIGZ1bmN0aW9uKGUs
IG4pIHsKLSAgICAgICAgYi5hdHRySG9va3Nbbl0gPSBiLmV4dGVuZChiLmF0dHJIb29rc1tuXSwg
ewotICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHIg
PSBlLmdldEF0dHJpYnV0ZShuLCAyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBy
ID8gdCA6IHIKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSkKLSAgICB9KSwgYi5lYWNoKFsiaHJl
ZiIsICJzcmMiXSwgZnVuY3Rpb24oZSwgdCkgewotICAgICAgICBiLnByb3BIb29rc1t0XSA9IHsK
LSAgICAgICAgICAgIGdldDogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgIHJldHVybiBl
LmdldEF0dHJpYnV0ZSh0LCA0KQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSkpLAot
ICAgIGIuc3VwcG9ydC5zdHlsZSB8fCAoYi5hdHRySG9va3Muc3R5bGUgPSB7Ci0gICAgICAgIGdl
dDogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgcmV0dXJuIGUuc3R5bGUuY3NzVGV4dCB8fCB0
Ci0gICAgICAgIH0sCi0gICAgICAgIHNldDogZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAg
cmV0dXJuIGUuc3R5bGUuY3NzVGV4dCA9IHQgKyAiIgotICAgICAgICB9Ci0gICAgfSksCi0gICAg
Yi5zdXBwb3J0Lm9wdFNlbGVjdGVkIHx8IChiLnByb3BIb29rcy5zZWxlY3RlZCA9IGIuZXh0ZW5k
KGIucHJvcEhvb2tzLnNlbGVjdGVkLCB7Ci0gICAgICAgIGdldDogZnVuY3Rpb24oZSkgewotICAg
ICAgICAgICAgdmFyIHQgPSBlLnBhcmVudE5vZGU7Ci0gICAgICAgICAgICByZXR1cm4gdCAmJiAo
dC5zZWxlY3RlZEluZGV4LCB0LnBhcmVudE5vZGUgJiYgdC5wYXJlbnROb2RlLnNlbGVjdGVkSW5k
ZXgpLCBudWxsCi0gICAgICAgIH0KLSAgICB9KSksCi0gICAgYi5zdXBwb3J0LmVuY3R5cGUgfHwg
KGIucHJvcEZpeC5lbmN0eXBlID0gImVuY29kaW5nIiksCi0gICAgYi5zdXBwb3J0LmNoZWNrT24g
fHwgYi5lYWNoKFsicmFkaW8iLCAiY2hlY2tib3giXSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGIu
dmFsSG9va3NbdGhpc10gPSB7Ci0gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUpIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gZS5nZXRBdHRyaWJ1dGUoInZhbHVlIikgPyAib24i
IDogZS52YWx1ZQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSksCi0gICAgYi5lYWNo
KFsicmFkaW8iLCAiY2hlY2tib3giXSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGIudmFsSG9va3Nb
dGhpc10gPSBiLmV4dGVuZChiLnZhbEhvb2tzW3RoaXNdLCB7Ci0gICAgICAgICAgICBzZXQ6IGZ1
bmN0aW9uKGUsIG4pIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYi5pc0FycmF5KG4pID8gZS5j
aGVja2VkID0gYi5pbkFycmF5KGIoZSkudmFsKCksIG4pID49IDAgOiB0Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0pCi0gICAgfSk7Ci0gICAgdmFyIFogPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0
YXJlYSkkL2ksCi0gICAgICAgIGV0ID0gL15rZXkvLAotICAgICAgICB0dCA9IC9eKD86bW91c2V8
Y29udGV4dG1lbnUpfGNsaWNrLywKLSAgICAgICAgbnQgPSAvXig/OmZvY3VzaW5mb2N1c3xmb2N1
c291dGJsdXIpJC8sCi0gICAgICAgIHJ0ID0gL14oW14uXSopKD86XC4oLispfCkkLzsKLSAgICBm
dW5jdGlvbiBpdCgpIHsKLSAgICAgICAgcmV0dXJuICEwCi0gICAgfQotICAgIGZ1bmN0aW9uIG90
KCkgewotICAgICAgICByZXR1cm4gITEKLSAgICB9Ci0gICAgYi5ldmVudCA9IHsKLSAgICAgICAg
Z2xvYmFsOiB7fSwKLSAgICAgICAgYWRkOiBmdW5jdGlvbihlLCBuLCByLCBvLCBhKSB7Ci0gICAg
ICAgICAgICB2YXIgcywKLSAgICAgICAgICAgICAgICB1LAotICAgICAgICAgICAgICAgIGwsCi0g
ICAgICAgICAgICAgICAgYywKLSAgICAgICAgICAgICAgICBwLAotICAgICAgICAgICAgICAgIGYs
Ci0gICAgICAgICAgICAgICAgZCwKLSAgICAgICAgICAgICAgICBoLAotICAgICAgICAgICAgICAg
IGcsCi0gICAgICAgICAgICAgICAgbSwKLSAgICAgICAgICAgICAgICB5LAotICAgICAgICAgICAg
ICAgIHYgPSBiLl9kYXRhKGUpOwotICAgICAgICAgICAgaWYgKHYpIHsKLSAgICAgICAgICAgICAg
ICByLmhhbmRsZXIgJiYgKGMgPSByLCByID0gYy5oYW5kbGVyLCBhID0gYy5zZWxlY3RvciksCi0g
ICAgICAgICAgICAgICAgci5ndWlkIHx8IChyLmd1aWQgPSBiLmd1aWQrKyksCi0gICAgICAgICAg
ICAgICAgKHUgPSB2LmV2ZW50cykgfHwgKHUgPSB2LmV2ZW50cyA9IHt9KSwKLSAgICAgICAgICAg
ICAgICAoZiA9IHYuaGFuZGxlKSB8fCAoZiA9IHYuaGFuZGxlID0gZnVuY3Rpb24oZSkgewotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIGIgPT09IGkgfHwgZSAmJiBiLmV2ZW50LnRy
aWdnZXJlZCA9PT0gZS50eXBlID8gdCA6IGIuZXZlbnQuZGlzcGF0Y2guYXBwbHkoZi5lbGVtLCBh
cmd1bWVudHMpCi0gICAgICAgICAgICAgICAgfSwgZi5lbGVtID0gZSksCi0gICAgICAgICAgICAg
ICAgbiA9IChuIHx8ICIiKS5tYXRjaCh3KSB8fCBbIiJdLAotICAgICAgICAgICAgICAgIGwgPSBu
Lmxlbmd0aDsKLSAgICAgICAgICAgICAgICB3aGlsZSAobC0tKQotICAgICAgICAgICAgICAgICAg
ICBzID0gcnQuZXhlYyhuW2xdKSB8fCBbXSwKLSAgICAgICAgICAgICAgICAgICAgZyA9IHkgPSBz
WzFdLAotICAgICAgICAgICAgICAgICAgICBtID0gKHNbMl0gfHwgIiIpLnNwbGl0KCIuIikuc29y
dCgpLAotICAgICAgICAgICAgICAgICAgICBwID0gYi5ldmVudC5zcGVjaWFsW2ddIHx8IHt9LAot
ICAgICAgICAgICAgICAgICAgICBnID0gKGEgPyBwLmRlbGVnYXRlVHlwZSA6IHAuYmluZFR5cGUp
IHx8IGcsCi0gICAgICAgICAgICAgICAgICAgIHAgPSBiLmV2ZW50LnNwZWNpYWxbZ10gfHwge30s
Ci0gICAgICAgICAgICAgICAgICAgIGQgPSBiLmV4dGVuZCh7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB0eXBlOiBnLAotICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ1R5cGU6IHksCi0gICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhOiBvLAotICAgICAgICAgICAgICAgICAgICAgICAgaGFu
ZGxlcjogciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGd1aWQ6IHIuZ3VpZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGVjdG9yOiBhLAotICAgICAgICAgICAgICAgICAgICAgICAgbmVl
ZHNDb250ZXh0OiBhICYmIGIuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdChhKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZTogbS5qb2luKCIuIikKLSAgICAgICAgICAgICAg
ICAgICAgfSwgYyksCi0gICAgICAgICAgICAgICAgICAgIChoID0gdVtnXSkgfHwgKGggPSB1W2dd
ID0gW10sIGguZGVsZWdhdGVDb3VudCA9IDAsIHAuc2V0dXAgJiYgcC5zZXR1cC5jYWxsKGUsIG8s
IG0sIGYpICE9PSAhMSB8fCAoZS5hZGRFdmVudExpc3RlbmVyID8gZS5hZGRFdmVudExpc3RlbmVy
KGcsIGYsICExKSA6IGUuYXR0YWNoRXZlbnQgJiYgZS5hdHRhY2hFdmVudCgib24iICsgZywgZikp
KSwKLSAgICAgICAgICAgICAgICAgICAgcC5hZGQgJiYgKHAuYWRkLmNhbGwoZSwgZCksIGQuaGFu
ZGxlci5ndWlkIHx8IChkLmhhbmRsZXIuZ3VpZCA9IHIuZ3VpZCkpLAotICAgICAgICAgICAgICAg
ICAgICBhID8gaC5zcGxpY2UoaC5kZWxlZ2F0ZUNvdW50KyssIDAsIGQpIDogaC5wdXNoKGQpLAot
ICAgICAgICAgICAgICAgICAgICBiLmV2ZW50Lmdsb2JhbFtnXSA9ICEwOwotICAgICAgICAgICAg
ICAgIGUgPSBudWxsCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgIHJlbW92ZTog
ZnVuY3Rpb24oZSwgdCwgbiwgciwgaSkgewotICAgICAgICAgICAgdmFyIG8sCi0gICAgICAgICAg
ICAgICAgYSwKLSAgICAgICAgICAgICAgICBzLAotICAgICAgICAgICAgICAgIHUsCi0gICAgICAg
ICAgICAgICAgbCwKLSAgICAgICAgICAgICAgICBjLAotICAgICAgICAgICAgICAgIHAsCi0gICAg
ICAgICAgICAgICAgZiwKLSAgICAgICAgICAgICAgICBkLAotICAgICAgICAgICAgICAgIGgsCi0g
ICAgICAgICAgICAgICAgZywKLSAgICAgICAgICAgICAgICBtID0gYi5oYXNEYXRhKGUpICYmIGIu
X2RhdGEoZSk7Ci0gICAgICAgICAgICBpZiAobSAmJiAoYyA9IG0uZXZlbnRzKSkgewotICAgICAg
ICAgICAgICAgIHQgPSAodCB8fCAiIikubWF0Y2godykgfHwgWyIiXSwKLSAgICAgICAgICAgICAg
ICBsID0gdC5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGwtLSkKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHMgPSBydC5leGVjKHRbbF0pIHx8IFtdLCBkID0gZyA9IHNbMV0sIGggPSAo
c1syXSB8fCAiIikuc3BsaXQoIi4iKS5zb3J0KCksIGQpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHAgPSBiLmV2ZW50LnNwZWNpYWxbZF0gfHwge30sCi0gICAgICAgICAgICAgICAgICAgICAg
ICBkID0gKHIgPyBwLmRlbGVnYXRlVHlwZSA6IHAuYmluZFR5cGUpIHx8IGQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBmID0gY1tkXSB8fCBbXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHMg
PSBzWzJdICYmIFJlZ0V4cCgiKF58XFwuKSIgKyBoLmpvaW4oIlxcLig/Oi4qXFwufCkiKSArICIo
XFwufCQpIiksCi0gICAgICAgICAgICAgICAgICAgICAgICB1ID0gbyA9IGYubGVuZ3RoOwotICAg
ICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG8tLSkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhID0gZltvXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaSAmJiBnICE9PSBh
Lm9yaWdUeXBlIHx8IG4gJiYgbi5ndWlkICE9PSBhLmd1aWQgfHwgcyAmJiAhcy50ZXN0KGEubmFt
ZXNwYWNlKSB8fCByICYmIHIgIT09IGEuc2VsZWN0b3IgJiYgKCIqKiIgIT09IHIgfHwgIWEuc2Vs
ZWN0b3IpIHx8IChmLnNwbGljZShvLCAxKSwgYS5zZWxlY3RvciAmJiBmLmRlbGVnYXRlQ291bnQt
LSwgcC5yZW1vdmUgJiYgcC5yZW1vdmUuY2FsbChlLCBhKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB1ICYmICFmLmxlbmd0aCAmJiAocC50ZWFyZG93biAmJiBwLnRlYXJkb3duLmNhbGwoZSwg
aCwgbS5oYW5kbGUpICE9PSAhMSB8fCBiLnJlbW92ZUV2ZW50KGUsIGQsIG0uaGFuZGxlKSwgZGVs
ZXRlIGNbZF0pCi0gICAgICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAg
ICAgICAgZm9yIChkIGluIGMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5ldmVudC5y
ZW1vdmUoZSwgZCArIHRbbF0sIG4sIHIsICEwKTsKLSAgICAgICAgICAgICAgICBiLmlzRW1wdHlP
YmplY3QoYykgJiYgKGRlbGV0ZSBtLmhhbmRsZSwgYi5fcmVtb3ZlRGF0YShlLCAiZXZlbnRzIikp
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgIHRyaWdnZXI6IGZ1bmN0aW9uKG4s
IHIsIGksIGEpIHsKLSAgICAgICAgICAgIHZhciBzLAotICAgICAgICAgICAgICAgIHUsCi0gICAg
ICAgICAgICAgICAgbCwKLSAgICAgICAgICAgICAgICBjLAotICAgICAgICAgICAgICAgIHAsCi0g
ICAgICAgICAgICAgICAgZiwKLSAgICAgICAgICAgICAgICBkLAotICAgICAgICAgICAgICAgIGgg
PSBbaSB8fCBvXSwKLSAgICAgICAgICAgICAgICBnID0geS5jYWxsKG4sICJ0eXBlIikgPyBuLnR5
cGUgOiBuLAotICAgICAgICAgICAgICAgIG0gPSB5LmNhbGwobiwgIm5hbWVzcGFjZSIpID8gbi5u
YW1lc3BhY2Uuc3BsaXQoIi4iKSA6IFtdOwotICAgICAgICAgICAgaWYgKGwgPSBmID0gaSA9IGkg
fHwgbywgMyAhPT0gaS5ub2RlVHlwZSAmJiA4ICE9PSBpLm5vZGVUeXBlICYmICFudC50ZXN0KGcg
KyBiLmV2ZW50LnRyaWdnZXJlZCkgJiYgKGcuaW5kZXhPZigiLiIpID49IDAgJiYgKG0gPSBnLnNw
bGl0KCIuIiksIGcgPSBtLnNoaWZ0KCksIG0uc29ydCgpKSwgdSA9IDAgPiBnLmluZGV4T2YoIjoi
KSAmJiAib24iICsgZywgbiA9IG5bYi5leHBhbmRvXSA/IG4gOiBuZXcgYi5FdmVudChnLCAib2Jq
ZWN0IiA9PSB0eXBlb2YgbiAmJiBuKSwgbi5pc1RyaWdnZXIgPSAhMCwgbi5uYW1lc3BhY2UgPSBt
LmpvaW4oIi4iKSwgbi5uYW1lc3BhY2VfcmUgPSBuLm5hbWVzcGFjZSA/IFJlZ0V4cCgiKF58XFwu
KSIgKyBtLmpvaW4oIlxcLig/Oi4qXFwufCkiKSArICIoXFwufCQpIikgOiBudWxsLCBuLnJlc3Vs
dCA9IHQsIG4udGFyZ2V0IHx8IChuLnRhcmdldCA9IGkpLCByID0gbnVsbCA9PSByID8gW25dIDog
Yi5tYWtlQXJyYXkociwgW25dKSwgcCA9IGIuZXZlbnQuc3BlY2lhbFtnXSB8fCB7fSwgYSB8fCAh
cC50cmlnZ2VyIHx8IHAudHJpZ2dlci5hcHBseShpLCByKSAhPT0gITEpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFhICYmICFwLm5vQnViYmxlICYmICFiLmlzV2luZG93KGkpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGZvciAoYyA9IHAuZGVsZWdhdGVUeXBlIHx8IGcsIG50LnRlc3QoYyArIGcp
IHx8IChsID0gbC5wYXJlbnROb2RlKTsgbDsgbCA9IGwucGFyZW50Tm9kZSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGgucHVzaChsKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBsOwot
ICAgICAgICAgICAgICAgICAgICBmID09PSAoaS5vd25lckRvY3VtZW50IHx8IG8pICYmIGgucHVz
aChmLmRlZmF1bHRWaWV3IHx8IGYucGFyZW50V2luZG93IHx8IGUpCi0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGQgPSAwOwotICAgICAgICAgICAgICAgIHdoaWxlICgobCA9IGhb
ZCsrXSkgJiYgIW4uaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkKLSAgICAgICAgICAgICAgICAgICAg
bi50eXBlID0gZCA+IDEgPyBjIDogcC5iaW5kVHlwZSB8fCBnLAotICAgICAgICAgICAgICAgICAg
ICBzID0gKGIuX2RhdGEobCwgImV2ZW50cyIpIHx8IHt9KVtuLnR5cGVdICYmIGIuX2RhdGEobCwg
ImhhbmRsZSIpLAotICAgICAgICAgICAgICAgICAgICBzICYmIHMuYXBwbHkobCwgciksCi0gICAg
ICAgICAgICAgICAgICAgIHMgPSB1ICYmIGxbdV0sCi0gICAgICAgICAgICAgICAgICAgIHMgJiYg
Yi5hY2NlcHREYXRhKGwpICYmIHMuYXBwbHkgJiYgcy5hcHBseShsLCByKSA9PT0gITEgJiYgbi5w
cmV2ZW50RGVmYXVsdCgpOwotICAgICAgICAgICAgICAgIGlmIChuLnR5cGUgPSBnLCAhKGEgfHwg
bi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSB8fCBwLl9kZWZhdWx0ICYmIHAuX2RlZmF1bHQuYXBwbHko
aS5vd25lckRvY3VtZW50LCByKSAhPT0gITEgfHwgImNsaWNrIiA9PT0gZyAmJiBiLm5vZGVOYW1l
KGksICJhIikgfHwgIWIuYWNjZXB0RGF0YShpKSB8fCAhdSB8fCAhaVtnXSB8fCBiLmlzV2luZG93
KGkpKSkgewotICAgICAgICAgICAgICAgICAgICBmID0gaVt1XSwKLSAgICAgICAgICAgICAgICAg
ICAgZiAmJiAoaVt1XSA9IG51bGwpLAotICAgICAgICAgICAgICAgICAgICBiLmV2ZW50LnRyaWdn
ZXJlZCA9IGc7Ci0gICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpW2ddKCkKLSAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAodikge30KLSAgICAgICAg
ICAgICAgICAgICAgYi5ldmVudC50cmlnZ2VyZWQgPSB0LAotICAgICAgICAgICAgICAgICAgICBm
ICYmIChpW3VdID0gZikKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IG4ucmVzdWx0Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgIGRpc3BhdGNoOiBm
dW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBlID0gYi5ldmVudC5maXgoZSk7Ci0gICAgICAgICAg
ICB2YXIgbiwKLSAgICAgICAgICAgICAgICByLAotICAgICAgICAgICAgICAgIGksCi0gICAgICAg
ICAgICAgICAgbywKLSAgICAgICAgICAgICAgICBhLAotICAgICAgICAgICAgICAgIHMgPSBbXSwK
LSAgICAgICAgICAgICAgICB1ID0gaC5jYWxsKGFyZ3VtZW50cyksCi0gICAgICAgICAgICAgICAg
bCA9IChiLl9kYXRhKHRoaXMsICJldmVudHMiKSB8fCB7fSlbZS50eXBlXSB8fCBbXSwKLSAgICAg
ICAgICAgICAgICBjID0gYi5ldmVudC5zcGVjaWFsW2UudHlwZV0gfHwge307Ci0gICAgICAgICAg
ICBpZiAodVswXSA9IGUsIGUuZGVsZWdhdGVUYXJnZXQgPSB0aGlzLCAhYy5wcmVEaXNwYXRjaCB8
fCBjLnByZURpc3BhdGNoLmNhbGwodGhpcywgZSkgIT09ICExKSB7Ci0gICAgICAgICAgICAgICAg
cyA9IGIuZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlzLCBlLCBsKSwKLSAgICAgICAgICAgICAgICBu
ID0gMDsKLSAgICAgICAgICAgICAgICB3aGlsZSAoKG8gPSBzW24rK10pICYmICFlLmlzUHJvcGFn
YXRpb25TdG9wcGVkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgZS5jdXJyZW50VGFyZ2V0ID0g
by5lbGVtLAotICAgICAgICAgICAgICAgICAgICBhID0gMDsKLSAgICAgICAgICAgICAgICAgICAg
d2hpbGUgKChpID0gby5oYW5kbGVyc1thKytdKSAmJiAhZS5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9u
U3RvcHBlZCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgKCFlLm5hbWVzcGFjZV9yZSB8fCBl
Lm5hbWVzcGFjZV9yZS50ZXN0KGkubmFtZXNwYWNlKSkgJiYgKGUuaGFuZGxlT2JqID0gaSwgZS5k
YXRhID0gaS5kYXRhLCByID0gKChiLmV2ZW50LnNwZWNpYWxbaS5vcmlnVHlwZV0gfHwge30pLmhh
bmRsZSB8fCBpLmhhbmRsZXIpLmFwcGx5KG8uZWxlbSwgdSksIHIgIT09IHQgJiYgKGUucmVzdWx0
ID0gcikgPT09ICExICYmIChlLnByZXZlbnREZWZhdWx0KCksIGUuc3RvcFByb3BhZ2F0aW9uKCkp
KQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gYy5wb3N0RGlzcGF0
Y2ggJiYgYy5wb3N0RGlzcGF0Y2guY2FsbCh0aGlzLCBlKSwgZS5yZXN1bHQKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfSwKLSAgICAgICAgaGFuZGxlcnM6IGZ1bmN0aW9uKGUsIG4pIHsKLSAgICAg
ICAgICAgIHZhciByLAotICAgICAgICAgICAgICAgIGksCi0gICAgICAgICAgICAgICAgbywKLSAg
ICAgICAgICAgICAgICBhLAotICAgICAgICAgICAgICAgIHMgPSBbXSwKLSAgICAgICAgICAgICAg
ICB1ID0gbi5kZWxlZ2F0ZUNvdW50LAotICAgICAgICAgICAgICAgIGwgPSBlLnRhcmdldDsKLSAg
ICAgICAgICAgIGlmICh1ICYmIGwubm9kZVR5cGUgJiYgKCFlLmJ1dHRvbiB8fCAiY2xpY2siICE9
PSBlLnR5cGUpKQotICAgICAgICAgICAgICAgIGZvciAoOyBsICE9IHRoaXM7IGwgPSBsLnBhcmVu
dE5vZGUgfHwgdGhpcykKLSAgICAgICAgICAgICAgICAgICAgaWYgKDEgPT09IGwubm9kZVR5cGUg
JiYgKGwuZGlzYWJsZWQgIT09ICEwIHx8ICJjbGljayIgIT09IGUudHlwZSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAobyA9IFtdLCBhID0gMDsgdSA+IGE7IGErKykKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpID0gblthXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByID0gaS5zZWxlY3RvciArICIgIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvW3Jd
ID09PSB0ICYmIChvW3JdID0gaS5uZWVkc0NvbnRleHQgPyBiKHIsIHRoaXMpLmluZGV4KGwpID49
IDAgOiBiLmZpbmQociwgdGhpcywgbnVsbCwgW2xdKS5sZW5ndGgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9bcl0gJiYgby5wdXNoKGkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
by5sZW5ndGggJiYgcy5wdXNoKHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtOiBs
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzOiBvCi0gICAgICAgICAgICAg
ICAgICAgICAgICB9KQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4g
bi5sZW5ndGggPiB1ICYmIHMucHVzaCh7Ci0gICAgICAgICAgICAgICAgZWxlbTogdGhpcywKLSAg
ICAgICAgICAgICAgICBoYW5kbGVyczogbi5zbGljZSh1KQotICAgICAgICAgICAgfSksIHMKLSAg
ICAgICAgfSwKLSAgICAgICAgZml4OiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBpZiAoZVti
LmV4cGFuZG9dKQotICAgICAgICAgICAgICAgIHJldHVybiBlOwotICAgICAgICAgICAgdmFyIHQs
Ci0gICAgICAgICAgICAgICAgbiwKLSAgICAgICAgICAgICAgICByLAotICAgICAgICAgICAgICAg
IGkgPSBlLnR5cGUsCi0gICAgICAgICAgICAgICAgYSA9IGUsCi0gICAgICAgICAgICAgICAgcyA9
IHRoaXMuZml4SG9va3NbaV07Ci0gICAgICAgICAgICBzIHx8ICh0aGlzLmZpeEhvb2tzW2ldID0g
cyA9IHR0LnRlc3QoaSkgPyB0aGlzLm1vdXNlSG9va3MgOiBldC50ZXN0KGkpID8gdGhpcy5rZXlI
b29rcyA6IHt9KSwKLSAgICAgICAgICAgIHIgPSBzLnByb3BzID8gdGhpcy5wcm9wcy5jb25jYXQo
cy5wcm9wcykgOiB0aGlzLnByb3BzLAotICAgICAgICAgICAgZSA9IG5ldyBiLkV2ZW50KGEpLAot
ICAgICAgICAgICAgdCA9IHIubGVuZ3RoOwotICAgICAgICAgICAgd2hpbGUgKHQtLSkKLSAgICAg
ICAgICAgICAgICBuID0gclt0XSwKLSAgICAgICAgICAgICAgICBlW25dID0gYVtuXTsKLSAgICAg
ICAgICAgIHJldHVybiBlLnRhcmdldCB8fCAoZS50YXJnZXQgPSBhLnNyY0VsZW1lbnQgfHwgbyks
IDMgPT09IGUudGFyZ2V0Lm5vZGVUeXBlICYmIChlLnRhcmdldCA9IGUudGFyZ2V0LnBhcmVudE5v
ZGUpLCBlLm1ldGFLZXkgPSAhIWUubWV0YUtleSwgcy5maWx0ZXIgPyBzLmZpbHRlcihlLCBhKSA6
IGUKLSAgICAgICAgfSwKLSAgICAgICAgcHJvcHM6ICJhbHRLZXkgYnViYmxlcyBjYW5jZWxhYmxl
IGN0cmxLZXkgY3VycmVudFRhcmdldCBldmVudFBoYXNlIG1ldGFLZXkgcmVsYXRlZFRhcmdldCBz
aGlmdEtleSB0YXJnZXQgdGltZVN0YW1wIHZpZXcgd2hpY2giLnNwbGl0KCIgIiksCi0gICAgICAg
IGZpeEhvb2tzOiB7fSwKLSAgICAgICAga2V5SG9va3M6IHsKLSAgICAgICAgICAgIHByb3BzOiAi
Y2hhciBjaGFyQ29kZSBrZXkga2V5Q29kZSIuc3BsaXQoIiAiKSwKLSAgICAgICAgICAgIGZpbHRl
cjogZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IGUud2hp
Y2ggJiYgKGUud2hpY2ggPSBudWxsICE9IHQuY2hhckNvZGUgPyB0LmNoYXJDb2RlIDogdC5rZXlD
b2RlKSwgZQotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICBtb3VzZUhvb2tzOiB7
Ci0gICAgICAgICAgICBwcm9wczogImJ1dHRvbiBidXR0b25zIGNsaWVudFggY2xpZW50WSBmcm9t
RWxlbWVudCBvZmZzZXRYIG9mZnNldFkgcGFnZVggcGFnZVkgc2NyZWVuWCBzY3JlZW5ZIHRvRWxl
bWVudCIuc3BsaXQoIiAiKSwKLSAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oZSwgbikgewot
ICAgICAgICAgICAgICAgIHZhciByLAotICAgICAgICAgICAgICAgICAgICBpLAotICAgICAgICAg
ICAgICAgICAgICBhLAotICAgICAgICAgICAgICAgICAgICBzID0gbi5idXR0b24sCi0gICAgICAg
ICAgICAgICAgICAgIHUgPSBuLmZyb21FbGVtZW50OwotICAgICAgICAgICAgICAgIHJldHVybiBu
dWxsID09IGUucGFnZVggJiYgbnVsbCAhPSBuLmNsaWVudFggJiYgKGkgPSBlLnRhcmdldC5vd25l
ckRvY3VtZW50IHx8IG8sIGEgPSBpLmRvY3VtZW50RWxlbWVudCwgciA9IGkuYm9keSwgZS5wYWdl
WCA9IG4uY2xpZW50WCArIChhICYmIGEuc2Nyb2xsTGVmdCB8fCByICYmIHIuc2Nyb2xsTGVmdCB8
fCAwKSAtIChhICYmIGEuY2xpZW50TGVmdCB8fCByICYmIHIuY2xpZW50TGVmdCB8fCAwKSwgZS5w
YWdlWSA9IG4uY2xpZW50WSArIChhICYmIGEuc2Nyb2xsVG9wIHx8IHIgJiYgci5zY3JvbGxUb3Ag
fHwgMCkgLSAoYSAmJiBhLmNsaWVudFRvcCB8fCByICYmIHIuY2xpZW50VG9wIHx8IDApKSwgIWUu
cmVsYXRlZFRhcmdldCAmJiB1ICYmIChlLnJlbGF0ZWRUYXJnZXQgPSB1ID09PSBlLnRhcmdldCA/
IG4udG9FbGVtZW50IDogdSksIGUud2hpY2ggfHwgcyA9PT0gdCB8fCAoZS53aGljaCA9IDEgJiBz
ID8gMSA6IDIgJiBzID8gMyA6IDQgJiBzID8gMiA6IDApLCBlCi0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0sCi0gICAgICAgIHNwZWNpYWw6IHsKLSAgICAgICAgICAgIGxvYWQ6IHsKLSAgICAgICAg
ICAgICAgICBub0J1YmJsZTogITAKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBjbGljazog
ewotICAgICAgICAgICAgICAgIHRyaWdnZXI6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gYi5ub2RlTmFtZSh0aGlzLCAiaW5wdXQiKSAmJiAiY2hlY2tib3giID09PSB0
aGlzLnR5cGUgJiYgdGhpcy5jbGljayA/ICh0aGlzLmNsaWNrKCksICExKSA6IHQKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgZm9jdXM6IHsKLSAgICAgICAg
ICAgICAgICB0cmlnZ2VyOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRo
aXMgIT09IG8uYWN0aXZlRWxlbWVudCAmJiB0aGlzLmZvY3VzKQotICAgICAgICAgICAgICAgICAg
ICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mb2N1
cygpLCAhMQotICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KLSAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgIGRlbGVnYXRlVHlwZTogImZvY3VzaW4iCi0gICAg
ICAgICAgICB9LAotICAgICAgICAgICAgYmx1cjogewotICAgICAgICAgICAgICAgIHRyaWdnZXI6
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcyA9PT0gby5hY3Rp
dmVFbGVtZW50ICYmIHRoaXMuYmx1ciA/ICh0aGlzLmJsdXIoKSwgITEpIDogdAotICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgZGVsZWdhdGVUeXBlOiAiZm9jdXNvdXQiCi0gICAg
ICAgICAgICB9LAotICAgICAgICAgICAgYmVmb3JldW5sb2FkOiB7Ci0gICAgICAgICAgICAgICAg
cG9zdERpc3BhdGNoOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGUucmVzdWx0
ICE9PSB0ICYmIChlLm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWUgPSBlLnJlc3VsdCkKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgIHNpbXVsYXRl
OiBmdW5jdGlvbihlLCB0LCBuLCByKSB7Ci0gICAgICAgICAgICB2YXIgaSA9IGIuZXh0ZW5kKG5l
dyBiLkV2ZW50LCBuLCB7Ci0gICAgICAgICAgICAgICAgdHlwZTogZSwKLSAgICAgICAgICAgICAg
ICBpc1NpbXVsYXRlZDogITAsCi0gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDoge30KLSAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgciA/IGIuZXZlbnQudHJpZ2dlcihpLCBudWxsLCB0
KSA6IGIuZXZlbnQuZGlzcGF0Y2guY2FsbCh0LCBpKSwKLSAgICAgICAgICAgIGkuaXNEZWZhdWx0
UHJldmVudGVkKCkgJiYgbi5wcmV2ZW50RGVmYXVsdCgpCi0gICAgICAgIH0KLSAgICB9LAotICAg
IGIucmVtb3ZlRXZlbnQgPSBvLnJlbW92ZUV2ZW50TGlzdGVuZXIgPyBmdW5jdGlvbihlLCB0LCBu
KSB7Ci0gICAgICAgIGUucmVtb3ZlRXZlbnRMaXN0ZW5lciAmJiBlLnJlbW92ZUV2ZW50TGlzdGVu
ZXIodCwgbiwgITEpCi0gICAgfSA6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKLSAgICAgICAgdmFyIHIg
PSAib24iICsgdDsKLSAgICAgICAgZS5kZXRhY2hFdmVudCAmJiAodHlwZW9mIGVbcl0gPT09IGkg
JiYgKGVbcl0gPSBudWxsKSwgZS5kZXRhY2hFdmVudChyLCBuKSkKLSAgICB9LAotICAgIGIuRXZl
bnQgPSBmdW5jdGlvbihlLCBuKSB7Ci0gICAgICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgYi5F
dmVudCA/IChlICYmIGUudHlwZSA/ICh0aGlzLm9yaWdpbmFsRXZlbnQgPSBlLCB0aGlzLnR5cGUg
PSBlLnR5cGUsIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gZS5kZWZhdWx0UHJldmVudGVkIHx8
IGUucmV0dXJuVmFsdWUgPT09ICExIHx8IGUuZ2V0UHJldmVudERlZmF1bHQgJiYgZS5nZXRQcmV2
ZW50RGVmYXVsdCgpID8gaXQgOiBvdCkgOiB0aGlzLnR5cGUgPSBlLCBuICYmIGIuZXh0ZW5kKHRo
aXMsIG4pLCB0aGlzLnRpbWVTdGFtcCA9IGUgJiYgZS50aW1lU3RhbXAgfHwgYi5ub3coKSwgdGhp
c1tiLmV4cGFuZG9dID0gITAsIHQpIDogbmV3IGIuRXZlbnQoZSwgbikKLSAgICB9LAotICAgIGIu
RXZlbnQucHJvdG90eXBlID0gewotICAgICAgICBpc0RlZmF1bHRQcmV2ZW50ZWQ6IG90LAotICAg
ICAgICBpc1Byb3BhZ2F0aW9uU3RvcHBlZDogb3QsCi0gICAgICAgIGlzSW1tZWRpYXRlUHJvcGFn
YXRpb25TdG9wcGVkOiBvdCwKLSAgICAgICAgcHJldmVudERlZmF1bHQ6IGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgdmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7Ci0gICAgICAgICAgICB0aGlz
LmlzRGVmYXVsdFByZXZlbnRlZCA9IGl0LAotICAgICAgICAgICAgZSAmJiAoZS5wcmV2ZW50RGVm
YXVsdCA/IGUucHJldmVudERlZmF1bHQoKSA6IGUucmV0dXJuVmFsdWUgPSAhMSkKLSAgICAgICAg
fSwKLSAgICAgICAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHZh
ciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50OwotICAgICAgICAgICAgdGhpcy5pc1Byb3BhZ2F0aW9u
U3RvcHBlZCA9IGl0LAotICAgICAgICAgICAgZSAmJiAoZS5zdG9wUHJvcGFnYXRpb24gJiYgZS5z
dG9wUHJvcGFnYXRpb24oKSwgZS5jYW5jZWxCdWJibGUgPSAhMCkKLSAgICAgICAgfSwKLSAgICAg
ICAgc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHRo
aXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQgPSBpdCwKLSAgICAgICAgICAgIHRoaXMu
c3RvcFByb3BhZ2F0aW9uKCkKLSAgICAgICAgfQotICAgIH0sCi0gICAgYi5lYWNoKHsKLSAgICAg
ICAgbW91c2VlbnRlcjogIm1vdXNlb3ZlciIsCi0gICAgICAgIG1vdXNlbGVhdmU6ICJtb3VzZW91
dCIKLSAgICB9LCBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgIGIuZXZlbnQuc3BlY2lhbFtlXSA9
IHsKLSAgICAgICAgICAgIGRlbGVnYXRlVHlwZTogdCwKLSAgICAgICAgICAgIGJpbmRUeXBlOiB0
LAotICAgICAgICAgICAgaGFuZGxlOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgdmFy
IG4sCi0gICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLAotICAgICAgICAgICAgICAgICAgICBp
ID0gZS5yZWxhdGVkVGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICBvID0gZS5oYW5kbGVPYmo7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuICghaSB8fCBpICE9PSByICYmICFiLmNvbnRhaW5zKHIs
IGkpKSAmJiAoZS50eXBlID0gby5vcmlnVHlwZSwgbiA9IG8uaGFuZGxlci5hcHBseSh0aGlzLCBh
cmd1bWVudHMpLCBlLnR5cGUgPSB0KSwgbgotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
fSksCi0gICAgYi5zdXBwb3J0LnN1Ym1pdEJ1YmJsZXMgfHwgKGIuZXZlbnQuc3BlY2lhbC5zdWJt
aXQgPSB7Ci0gICAgICAgIHNldHVwOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiBi
Lm5vZGVOYW1lKHRoaXMsICJmb3JtIikgPyAhMSA6IChiLmV2ZW50LmFkZCh0aGlzLCAiY2xpY2su
X3N1Ym1pdCBrZXlwcmVzcy5fc3VibWl0IiwgZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAg
IHZhciBuID0gZS50YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgIHIgPSBiLm5vZGVOYW1lKG4s
ICJpbnB1dCIpIHx8IGIubm9kZU5hbWUobiwgImJ1dHRvbiIpID8gbi5mb3JtIDogdDsKLSAgICAg
ICAgICAgICAgICByICYmICFiLl9kYXRhKHIsICJzdWJtaXRCdWJibGVzIikgJiYgKGIuZXZlbnQu
YWRkKHIsICJzdWJtaXQuX3N1Ym1pdCIsIGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAg
ICAgZS5fc3VibWl0X2J1YmJsZSA9ICEwCi0gICAgICAgICAgICAgICAgfSksIGIuX2RhdGEociwg
InN1Ym1pdEJ1YmJsZXMiLCAhMCkpCi0gICAgICAgICAgICB9KSwgdCkKLSAgICAgICAgfSwKLSAg
ICAgICAgcG9zdERpc3BhdGNoOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBlLl9zdWJtaXRf
YnViYmxlICYmIChkZWxldGUgZS5fc3VibWl0X2J1YmJsZSwgdGhpcy5wYXJlbnROb2RlICYmICFl
LmlzVHJpZ2dlciAmJiBiLmV2ZW50LnNpbXVsYXRlKCJzdWJtaXQiLCB0aGlzLnBhcmVudE5vZGUs
IGUsICEwKSkKLSAgICAgICAgfSwKLSAgICAgICAgdGVhcmRvd246IGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgcmV0dXJuIGIubm9kZU5hbWUodGhpcywgImZvcm0iKSA/ICExIDogKGIuZXZlbnQu
cmVtb3ZlKHRoaXMsICIuX3N1Ym1pdCIpLCB0KQotICAgICAgICB9Ci0gICAgfSksCi0gICAgYi5z
dXBwb3J0LmNoYW5nZUJ1YmJsZXMgfHwgKGIuZXZlbnQuc3BlY2lhbC5jaGFuZ2UgPSB7Ci0gICAg
ICAgIHNldHVwOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiBaLnRlc3QodGhpcy5u
b2RlTmFtZSkgPyAoKCJjaGVja2JveCIgPT09IHRoaXMudHlwZSB8fCAicmFkaW8iID09PSB0aGlz
LnR5cGUpICYmIChiLmV2ZW50LmFkZCh0aGlzLCAicHJvcGVydHljaGFuZ2UuX2NoYW5nZSIsIGZ1
bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAiY2hlY2tlZCIgPT09IGUub3JpZ2luYWxFdmVu
dC5wcm9wZXJ0eU5hbWUgJiYgKHRoaXMuX2p1c3RfY2hhbmdlZCA9ICEwKQotICAgICAgICAgICAg
fSksIGIuZXZlbnQuYWRkKHRoaXMsICJjbGljay5fY2hhbmdlIiwgZnVuY3Rpb24oZSkgewotICAg
ICAgICAgICAgICAgIHRoaXMuX2p1c3RfY2hhbmdlZCAmJiAhZS5pc1RyaWdnZXIgJiYgKHRoaXMu
X2p1c3RfY2hhbmdlZCA9ICExKSwKLSAgICAgICAgICAgICAgICBiLmV2ZW50LnNpbXVsYXRlKCJj
aGFuZ2UiLCB0aGlzLCBlLCAhMCkKLSAgICAgICAgICAgIH0pKSwgITEpIDogKGIuZXZlbnQuYWRk
KHRoaXMsICJiZWZvcmVhY3RpdmF0ZS5fY2hhbmdlIiwgZnVuY3Rpb24oZSkgewotICAgICAgICAg
ICAgICAgIHZhciB0ID0gZS50YXJnZXQ7Ci0gICAgICAgICAgICAgICAgWi50ZXN0KHQubm9kZU5h
bWUpICYmICFiLl9kYXRhKHQsICJjaGFuZ2VCdWJibGVzIikgJiYgKGIuZXZlbnQuYWRkKHQsICJj
aGFuZ2UuX2NoYW5nZSIsIGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgIXRoaXMu
cGFyZW50Tm9kZSB8fCBlLmlzU2ltdWxhdGVkIHx8IGUuaXNUcmlnZ2VyIHx8IGIuZXZlbnQuc2lt
dWxhdGUoImNoYW5nZSIsIHRoaXMucGFyZW50Tm9kZSwgZSwgITApCi0gICAgICAgICAgICAgICAg
fSksIGIuX2RhdGEodCwgImNoYW5nZUJ1YmJsZXMiLCAhMCkpCi0gICAgICAgICAgICB9KSwgdCkK
LSAgICAgICAgfSwKLSAgICAgICAgaGFuZGxlOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICB2
YXIgbiA9IGUudGFyZ2V0OwotICAgICAgICAgICAgcmV0dXJuIHRoaXMgIT09IG4gfHwgZS5pc1Np
bXVsYXRlZCB8fCBlLmlzVHJpZ2dlciB8fCAicmFkaW8iICE9PSBuLnR5cGUgJiYgImNoZWNrYm94
IiAhPT0gbi50eXBlID8gZS5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0aGlzLCBhcmd1bWVudHMp
IDogdAotICAgICAgICB9LAotICAgICAgICB0ZWFyZG93bjogZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gYi5ldmVudC5yZW1vdmUodGhpcywgIi5fY2hhbmdlIiksICFaLnRlc3QodGhp
cy5ub2RlTmFtZSkKLSAgICAgICAgfQotICAgIH0pLAotICAgIGIuc3VwcG9ydC5mb2N1c2luQnVi
YmxlcyB8fCBiLmVhY2goewotICAgICAgICBmb2N1czogImZvY3VzaW4iLAotICAgICAgICBibHVy
OiAiZm9jdXNvdXQiCi0gICAgfSwgZnVuY3Rpb24oZSwgdCkgewotICAgICAgICB2YXIgbiA9IDAs
Ci0gICAgICAgICAgICByID0gZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgIGIuZXZlbnQu
c2ltdWxhdGUodCwgZS50YXJnZXQsIGIuZXZlbnQuZml4KGUpLCAhMCkKLSAgICAgICAgICAgIH07
Ci0gICAgICAgIGIuZXZlbnQuc3BlY2lhbFt0XSA9IHsKLSAgICAgICAgICAgIHNldHVwOiBmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICAgICAwID09PSBuKysgJiYgby5hZGRFdmVudExpc3RlbmVy
KGUsIHIsICEwKQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHRlYXJkb3duOiBmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgICAgICAwID09PSAtLW4gJiYgby5yZW1vdmVFdmVudExpc3RlbmVy
KGUsIHIsICEwKQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSksCi0gICAgYi5mbi5l
eHRlbmQoewotICAgICAgICBvbjogZnVuY3Rpb24oZSwgbiwgciwgaSwgbykgewotICAgICAgICAg
ICAgdmFyIGEsCi0gICAgICAgICAgICAgICAgczsKLSAgICAgICAgICAgIGlmICgib2JqZWN0IiA9
PSB0eXBlb2YgZSkgewotICAgICAgICAgICAgICAgICJzdHJpbmciICE9IHR5cGVvZiBuICYmIChy
ID0gciB8fCBuLCBuID0gdCk7Ci0gICAgICAgICAgICAgICAgZm9yIChhIGluIGUpCi0gICAgICAg
ICAgICAgICAgICAgIHRoaXMub24oYSwgbiwgciwgZVthXSwgbyk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXMKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChudWxsID09IHIgJiYg
bnVsbCA9PSBpID8gKGkgPSBuLCByID0gbiA9IHQpIDogbnVsbCA9PSBpICYmICgic3RyaW5nIiA9
PSB0eXBlb2YgbiA/IChpID0gciwgciA9IHQpIDogKGkgPSByLCByID0gbiwgbiA9IHQpKSwgaSA9
PT0gITEpCi0gICAgICAgICAgICAgICAgaSA9IG90OwotICAgICAgICAgICAgZWxzZSBpZiAoIWkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAgICByZXR1cm4gMSA9PT0g
byAmJiAocyA9IGksIGkgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGIo
KS5vZmYoZSksIHMuYXBwbHkodGhpcywgYXJndW1lbnRzKQotICAgICAgICAgICAgfSwgaS5ndWlk
ID0gcy5ndWlkIHx8IChzLmd1aWQgPSBiLmd1aWQrKykpLCB0aGlzLmVhY2goZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICAgICAgYi5ldmVudC5hZGQodGhpcywgZSwgaSwgciwgbikKLSAgICAgICAg
ICAgIH0pCi0gICAgICAgIH0sCi0gICAgICAgIG9uZTogZnVuY3Rpb24oZSwgdCwgbiwgcikgewot
ICAgICAgICAgICAgcmV0dXJuIHRoaXMub24oZSwgdCwgbiwgciwgMSkKLSAgICAgICAgfSwKLSAg
ICAgICAgb2ZmOiBmdW5jdGlvbihlLCBuLCByKSB7Ci0gICAgICAgICAgICB2YXIgaSwKLSAgICAg
ICAgICAgICAgICBvOwotICAgICAgICAgICAgaWYgKGUgJiYgZS5wcmV2ZW50RGVmYXVsdCAmJiBl
LmhhbmRsZU9iaikKLSAgICAgICAgICAgICAgICByZXR1cm4gaSA9IGUuaGFuZGxlT2JqLCBiKGUu
ZGVsZWdhdGVUYXJnZXQpLm9mZihpLm5hbWVzcGFjZSA/IGkub3JpZ1R5cGUgKyAiLiIgKyBpLm5h
bWVzcGFjZSA6IGkub3JpZ1R5cGUsIGkuc2VsZWN0b3IsIGkuaGFuZGxlciksIHRoaXM7Ci0gICAg
ICAgICAgICBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIGUpIHsKLSAgICAgICAgICAgICAgICBmb3Ig
KG8gaW4gZSkKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5vZmYobywgbiwgZVtvXSk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXMKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVy
biAobiA9PT0gITEgfHwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgbikgJiYgKHIgPSBuLCBuID0gdCks
IHIgPT09ICExICYmIChyID0gb3QpLCB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICAgICAgYi5ldmVudC5yZW1vdmUodGhpcywgZSwgciwgbikKLSAgICAgICAgICAgIH0pCi0gICAg
ICAgIH0sCi0gICAgICAgIGJpbmQ6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKLSAgICAgICAgICAgIHJl
dHVybiB0aGlzLm9uKGUsIG51bGwsIHQsIG4pCi0gICAgICAgIH0sCi0gICAgICAgIHVuYmluZDog
ZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMub2ZmKGUsIG51bGwsIHQp
Ci0gICAgICAgIH0sCi0gICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbihlLCB0LCBuLCByKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gdGhpcy5vbih0LCBlLCBuLCByKQotICAgICAgICB9LAotICAgICAg
ICB1bmRlbGVnYXRlOiBmdW5jdGlvbihlLCB0LCBuKSB7Ci0gICAgICAgICAgICByZXR1cm4gMSA9
PT0gYXJndW1lbnRzLmxlbmd0aCA/IHRoaXMub2ZmKGUsICIqKiIpIDogdGhpcy5vZmYodCwgZSB8
fCAiKioiLCBuKQotICAgICAgICB9LAotICAgICAgICB0cmlnZ2VyOiBmdW5jdGlvbihlLCB0KSB7
Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ICAgIGIuZXZlbnQudHJpZ2dlcihlLCB0LCB0aGlzKQotICAgICAgICAgICAgfSkKLSAgICAgICAg
fSwKLSAgICAgICAgdHJpZ2dlckhhbmRsZXI6IGZ1bmN0aW9uKGUsIG4pIHsKLSAgICAgICAgICAg
IHZhciByID0gdGhpc1swXTsKLSAgICAgICAgICAgIHJldHVybiByID8gYi5ldmVudC50cmlnZ2Vy
KGUsIG4sIHIsICEwKSA6IHQKLSAgICAgICAgfQotICAgIH0pLAotICAgIGZ1bmN0aW9uKGUsIHQp
IHsKLSAgICAgICAgdmFyIG4sCi0gICAgICAgICAgICByLAotICAgICAgICAgICAgaSwKLSAgICAg
ICAgICAgIG8sCi0gICAgICAgICAgICBhLAotICAgICAgICAgICAgcywKLSAgICAgICAgICAgIHUs
Ci0gICAgICAgICAgICBsLAotICAgICAgICAgICAgYywKLSAgICAgICAgICAgIHAsCi0gICAgICAg
ICAgICBmLAotICAgICAgICAgICAgZCwKLSAgICAgICAgICAgIGgsCi0gICAgICAgICAgICBnLAot
ICAgICAgICAgICAgbSwKLSAgICAgICAgICAgIHksCi0gICAgICAgICAgICB2LAotICAgICAgICAg
ICAgeCA9ICJzaXp6bGUiICsgLW5ldyBEYXRlLAotICAgICAgICAgICAgdyA9IGUuZG9jdW1lbnQs
Ci0gICAgICAgICAgICBUID0ge30sCi0gICAgICAgICAgICBOID0gMCwKLSAgICAgICAgICAgIEMg
PSAwLAotICAgICAgICAgICAgayA9IGl0KCksCi0gICAgICAgICAgICBFID0gaXQoKSwKLSAgICAg
ICAgICAgIFMgPSBpdCgpLAotICAgICAgICAgICAgQSA9IHR5cGVvZiB0LAotICAgICAgICAgICAg
aiA9IDEgPDwgMzEsCi0gICAgICAgICAgICBEID0gW10sCi0gICAgICAgICAgICBMID0gRC5wb3As
Ci0gICAgICAgICAgICBIID0gRC5wdXNoLAotICAgICAgICAgICAgcSA9IEQuc2xpY2UsCi0gICAg
ICAgICAgICBNID0gRC5pbmRleE9mIHx8IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICB2
YXIgdCA9IDAsCi0gICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLmxlbmd0aDsKLSAgICAgICAg
ICAgICAgICBmb3IgKDsgbiA+IHQ7IHQrKykKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXNb
dF0gPT09IGUpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdDsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gLTEKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBfID0gIltcXHgyMFxc
dFxcclxcblxcZl0iLAotICAgICAgICAgICAgRiA9ICIoPzpcXFxcLnxbXFx3LV18W15cXHgwMC1c
XHhhMF0pKyIsCi0gICAgICAgICAgICBPID0gRi5yZXBsYWNlKCJ3IiwgIncjIiksCi0gICAgICAg
ICAgICBCID0gIihbKl4kfCF+XT89KSIsCi0gICAgICAgICAgICBQID0gIlxcWyIgKyBfICsgIioo
IiArIEYgKyAiKSIgKyBfICsgIiooPzoiICsgQiArIF8gKyAiKig/OihbJ1wiXSkoKD86XFxcXC58
W15cXFxcXSkqPylcXDN8KCIgKyBPICsgIil8KXwpIiArIF8gKyAiKlxcXSIsCi0gICAgICAgICAg
ICBSID0gIjooIiArIEYgKyAiKSg/OlxcKCgoWydcIl0pKCg/OlxcXFwufFteXFxcXF0pKj8pXFwz
fCgoPzpcXFxcLnxbXlxcXFwoKVtcXF1dfCIgKyBQLnJlcGxhY2UoMywgOCkgKyAiKSopfC4qKVxc
KXwpIiwKLSAgICAgICAgICAgIFcgPSBSZWdFeHAoIl4iICsgXyArICIrfCgoPzpefFteXFxcXF0p
KD86XFxcXC4pKikiICsgXyArICIrJCIsICJnIiksCi0gICAgICAgICAgICAkID0gUmVnRXhwKCJe
IiArIF8gKyAiKiwiICsgXyArICIqIiksCi0gICAgICAgICAgICBJID0gUmVnRXhwKCJeIiArIF8g
KyAiKihbXFx4MjBcXHRcXHJcXG5cXGY+K35dKSIgKyBfICsgIioiKSwKLSAgICAgICAgICAgIHog
PSBSZWdFeHAoUiksCi0gICAgICAgICAgICBYID0gUmVnRXhwKCJeIiArIE8gKyAiJCIpLAotICAg
ICAgICAgICAgVSA9IHsKLSAgICAgICAgICAgICAgICBJRDogUmVnRXhwKCJeIygiICsgRiArICIp
IiksCi0gICAgICAgICAgICAgICAgQ0xBU1M6IFJlZ0V4cCgiXlxcLigiICsgRiArICIpIiksCi0g
ICAgICAgICAgICAgICAgTkFNRTogUmVnRXhwKCJeXFxbbmFtZT1bJ1wiXT8oIiArIEYgKyAiKVsn
XCJdP1xcXSIpLAotICAgICAgICAgICAgICAgIFRBRzogUmVnRXhwKCJeKCIgKyBGLnJlcGxhY2Uo
InciLCAidyoiKSArICIpIiksCi0gICAgICAgICAgICAgICAgQVRUUjogUmVnRXhwKCJeIiArIFAp
LAotICAgICAgICAgICAgICAgIFBTRVVETzogUmVnRXhwKCJeIiArIFIpLAotICAgICAgICAgICAg
ICAgIENISUxEOiBSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGls
ZHxvZi10eXBlKSg/OlxcKCIgKyBfICsgIiooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilufCkiICsg
XyArICIqKD86KFsrLV18KSIgKyBfICsgIiooXFxkKyl8KSkiICsgXyArICIqXFwpfCkiLCAiaSIp
LAotICAgICAgICAgICAgICAgIG5lZWRzQ29udGV4dDogUmVnRXhwKCJeIiArIF8gKyAiKls+K35d
fDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFwoIiArIF8gKyAiKigoPzot
XFxkKT9cXGQqKSIgKyBfICsgIipcXCl8KSg/PVteLV18JCkiLCAiaSIpCi0gICAgICAgICAgICB9
LAotICAgICAgICAgICAgViA9IC9bXHgyMFx0XHJcblxmXSpbK35dLywKLSAgICAgICAgICAgIFkg
PSAvXltee10rXHtccypcW25hdGl2ZSBjb2RlLywKLSAgICAgICAgICAgIEogPSAvXig/OiMoW1x3
LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLAotICAgICAgICAgICAgRyA9IC9eKD86aW5wdXR8c2Vs
ZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksCi0gICAgICAgICAgICBRID0gL15oXGQkL2ksCi0gICAg
ICAgICAgICBLID0gLyd8XFwvZywKLSAgICAgICAgICAgIFogPSAvXD1bXHgyMFx0XHJcblxmXSoo
W14nIlxdXSopW1x4MjBcdFxyXG5cZl0qXF0vZywKLSAgICAgICAgICAgIGV0ID0gL1xcKFtcZGEt
ZkEtRl17MSw2fVtceDIwXHRcclxuXGZdP3wuKS9nLAotICAgICAgICAgICAgdHQgPSBmdW5jdGlv
bihlLCB0KSB7Ci0gICAgICAgICAgICAgICAgdmFyIG4gPSAiMHgiICsgdCAtIDY1NTM2OwotICAg
ICAgICAgICAgICAgIHJldHVybiBuICE9PSBuID8gdCA6IDAgPiBuID8gU3RyaW5nLmZyb21DaGFy
Q29kZShuICsgNjU1MzYpIDogU3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NiB8IG4gPj4gMTAsIDU2
MzIwIHwgMTAyMyAmIG4pCi0gICAgICAgICAgICB9OwotICAgICAgICB0cnkgewotICAgICAgICAg
ICAgcS5jYWxsKHcuZG9jdW1lbnRFbGVtZW50LmNoaWxkTm9kZXMsIDApWzBdLm5vZGVUeXBlCi0g
ICAgICAgIH0gY2F0Y2ggKG50KSB7Ci0gICAgICAgICAgICBxID0gZnVuY3Rpb24oZSkgewotICAg
ICAgICAgICAgICAgIHZhciB0LAotICAgICAgICAgICAgICAgICAgICBuID0gW107Ci0gICAgICAg
ICAgICAgICAgd2hpbGUgKHQgPSB0aGlzW2UrK10pCi0gICAgICAgICAgICAgICAgICAgIG4ucHVz
aCh0KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbgotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgIGZ1bmN0aW9uIHJ0KGUpIHsKLSAgICAgICAgICAgIHJldHVybiBZLnRlc3QoZSAr
ICIiKQotICAgICAgICB9Ci0gICAgICAgIGZ1bmN0aW9uIGl0KCkgewotICAgICAgICAgICAgdmFy
IGUsCi0gICAgICAgICAgICAgICAgdCA9IFtdOwotICAgICAgICAgICAgcmV0dXJuIGUgPSBmdW5j
dGlvbihuLCByKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHQucHVzaChuICs9ICIgIikgPiBp
LmNhY2hlTGVuZ3RoICYmIGRlbGV0ZSBlW3Quc2hpZnQoKV0sIGVbbl0gPSByCi0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgZnVuY3Rpb24gb3QoZSkgewotICAgICAgICAgICAgcmV0
dXJuIGVbeF0gPSAhMCwgZQotICAgICAgICB9Ci0gICAgICAgIGZ1bmN0aW9uIGF0KGUpIHsKLSAg
ICAgICAgICAgIHZhciB0ID0gcC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgICAgIHRy
eSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGUodCkKLSAgICAgICAgICAgIH0gY2F0Y2ggKG4p
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gITEKLSAgICAgICAgICAgIH0gZmluYWxseSB7Ci0g
ICAgICAgICAgICAgICAgdCA9IG51bGwKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg
ICBmdW5jdGlvbiBzdChlLCB0LCBuLCByKSB7Ci0gICAgICAgICAgICB2YXIgaSwKLSAgICAgICAg
ICAgICAgICBvLAotICAgICAgICAgICAgICAgIGEsCi0gICAgICAgICAgICAgICAgcywKLSAgICAg
ICAgICAgICAgICB1LAotICAgICAgICAgICAgICAgIGwsCi0gICAgICAgICAgICAgICAgZiwKLSAg
ICAgICAgICAgICAgICBnLAotICAgICAgICAgICAgICAgIG0sCi0gICAgICAgICAgICAgICAgdjsK
LSAgICAgICAgICAgIGlmICgodCA/IHQub3duZXJEb2N1bWVudCB8fCB0IDogdykgIT09IHAgJiYg
Yyh0KSwgdCA9IHQgfHwgcCwgbiA9IG4gfHwgW10sICFlIHx8ICJzdHJpbmciICE9IHR5cGVvZiBl
KQotICAgICAgICAgICAgICAgIHJldHVybiBuOwotICAgICAgICAgICAgaWYgKDEgIT09IChzID0g
dC5ub2RlVHlwZSkgJiYgOSAhPT0gcykKLSAgICAgICAgICAgICAgICByZXR1cm4gW107Ci0gICAg
ICAgICAgICBpZiAoIWQgJiYgIXIpIHsKLSAgICAgICAgICAgICAgICBpZiAoaSA9IEouZXhlYyhl
KSkKLSAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBpWzFdKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoOSA9PT0gcykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChv
ID0gdC5nZXRFbGVtZW50QnlJZChhKSwgIW8gfHwgIW8ucGFyZW50Tm9kZSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG47Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG8uaWQgPT09IGEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBuLnB1c2gobyksIG4KLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodC5vd25l
ckRvY3VtZW50ICYmIChvID0gdC5vd25lckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpKSAmJiB5
KHQsIG8pICYmIG8uaWQgPT09IGEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG4ucHVzaChvKSwgbgotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGlbMl0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEguYXBwbHkobiwgcS5jYWxsKHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSksIDApKSwgbjsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgoYSA9IGlbM10pICYmIFQuZ2V0QnlDbGFzc05hbWUg
JiYgdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBILmFwcGx5KG4sIHEuY2FsbCh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoYSksIDAp
KSwgbgotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFQucXNhICYm
ICFoLnRlc3QoZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSAhMCwgZyA9IHgsIG0g
PSB0LCB2ID0gOSA9PT0gcyAmJiBlLCAxID09PSBzICYmICJvYmplY3QiICE9PSB0Lm5vZGVOYW1l
LnRvTG93ZXJDYXNlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBmdChlKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIChmID0gdC5nZXRBdHRyaWJ1dGUoImlkIikpID8gZyA9IGYu
cmVwbGFjZShLLCAiXFwkJiIpIDogdC5zZXRBdHRyaWJ1dGUoImlkIiwgZyksCi0gICAgICAgICAg
ICAgICAgICAgICAgICBnID0gIltpZD0nIiArIGcgKyAiJ10gIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHUgPSBsLmxlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh1LS0p
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbFt1XSA9IGcgKyBkdChsW3VdKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG0gPSBWLnRlc3QoZSkgJiYgdC5wYXJlbnROb2RlIHx8IHQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICB2ID0gbC5qb2luKCIsIikKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAodikKLSAgICAgICAgICAgICAgICAgICAgICAg
IHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEguYXBwbHkobiwgcS5j
YWxsKG0ucXVlcnlTZWxlY3RvckFsbCh2KSwgMCkpLCBuCi0gICAgICAgICAgICAgICAgICAgICAg
ICB9IGNhdGNoIChiKSB7fSBmaW5hbGx5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
IHx8IHQucmVtb3ZlQXR0cmlidXRlKCJpZCIpCi0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHd0KGUu
cmVwbGFjZShXLCAiJDEiKSwgdCwgbiwgcikKLSAgICAgICAgfQotICAgICAgICBhID0gc3QuaXNY
TUwgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICB2YXIgdCA9IGUgJiYgKGUub3duZXJEb2N1
bWVudCB8fCBlKS5kb2N1bWVudEVsZW1lbnQ7Ci0gICAgICAgICAgICByZXR1cm4gdCA/ICJIVE1M
IiAhPT0gdC5ub2RlTmFtZSA6ICExCi0gICAgICAgIH0sCi0gICAgICAgIGMgPSBzdC5zZXREb2N1
bWVudCA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHZhciBuID0gZSA/IGUub3duZXJEb2N1
bWVudCB8fCBlIDogdzsKLSAgICAgICAgICAgIHJldHVybiBuICE9PSBwICYmIDkgPT09IG4ubm9k
ZVR5cGUgJiYgbi5kb2N1bWVudEVsZW1lbnQgPyAocCA9IG4sIGYgPSBuLmRvY3VtZW50RWxlbWVu
dCwgZCA9IGEobiksIFQudGFnTmFtZU5vQ29tbWVudHMgPSBhdChmdW5jdGlvbihlKSB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGUuYXBwZW5kQ2hpbGQobi5jcmVhdGVDb21tZW50KCIiKSksICFl
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RoCi0gICAgICAgICAgICB9KSwgVC5hdHRy
aWJ1dGVzID0gYXQoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgIGUuaW5uZXJIVE1MID0g
IjxzZWxlY3Q+PC9zZWxlY3Q+IjsKLSAgICAgICAgICAgICAgICB2YXIgdCA9IHR5cGVvZiBlLmxh
c3RDaGlsZC5nZXRBdHRyaWJ1dGUoIm11bHRpcGxlIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
ICJib29sZWFuIiAhPT0gdCAmJiAic3RyaW5nIiAhPT0gdAotICAgICAgICAgICAgfSksIFQuZ2V0
QnlDbGFzc05hbWUgPSBhdChmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGUu
aW5uZXJIVE1MID0gIjxkaXYgY2xhc3M9J2hpZGRlbiBlJz48L2Rpdj48ZGl2IGNsYXNzPSdoaWRk
ZW4nPjwvZGl2PiIsIGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJiBlLmdldEVsZW1lbnRzQnlD
bGFzc05hbWUoImUiKS5sZW5ndGggPyAoZS5sYXN0Q2hpbGQuY2xhc3NOYW1lID0gImUiLCAyID09
PSBlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImUiKS5sZW5ndGgpIDogITEKLSAgICAgICAgICAg
IH0pLCBULmdldEJ5TmFtZSA9IGF0KGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICBlLmlk
ID0geCArIDAsCi0gICAgICAgICAgICAgICAgZS5pbm5lckhUTUwgPSAiPGEgbmFtZT0nIiArIHgg
KyAiJz48L2E+PGRpdiBuYW1lPSciICsgeCArICInPjwvZGl2PiIsCi0gICAgICAgICAgICAgICAg
Zi5pbnNlcnRCZWZvcmUoZSwgZi5maXJzdENoaWxkKTsKLSAgICAgICAgICAgICAgICB2YXIgdCA9
IG4uZ2V0RWxlbWVudHNCeU5hbWUgJiYgbi5nZXRFbGVtZW50c0J5TmFtZSh4KS5sZW5ndGggPT09
IDIgKyBuLmdldEVsZW1lbnRzQnlOYW1lKHggKyAwKS5sZW5ndGg7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIFQuZ2V0SWROb3ROYW1lID0gIW4uZ2V0RWxlbWVudEJ5SWQoeCksIGYucmVtb3ZlQ2hp
bGQoZSksIHQKLSAgICAgICAgICAgIH0pLCBpLmF0dHJIYW5kbGUgPSBhdChmdW5jdGlvbihlKSB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGUuaW5uZXJIVE1MID0gIjxhIGhyZWY9JyMnPjwvYT4i
LCBlLmZpcnN0Q2hpbGQgJiYgdHlwZW9mIGUuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUgIT09IEEg
JiYgIiMiID09PSBlLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIikKLSAgICAgICAgICAg
IH0pID8ge30gOiB7Ci0gICAgICAgICAgICAgICAgaHJlZjogZnVuY3Rpb24oZSkgewotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZS5nZXRBdHRyaWJ1dGUoImhyZWYiLCAyKQotICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgdHlwZTogZnVuY3Rpb24oZSkgewotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZS5nZXRBdHRyaWJ1dGUoInR5cGUiKQotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0sIFQuZ2V0SWROb3ROYW1lID8gKGkuZmluZC5JRCA9IGZ1bmN0aW9u
KGUsIHQpIHsKLSAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQgIT09
IEEgJiYgIWQpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0LmdldEVsZW1lbnRCeUlk
KGUpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBuLnBhcmVudE5vZGUgPyBbbl0g
OiBbXQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sIGkuZmlsdGVyLklEID0gZnVu
Y3Rpb24oZSkgewotICAgICAgICAgICAgICAgIHZhciB0ID0gZS5yZXBsYWNlKGV0LCB0dCk7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGUuZ2V0QXR0cmlidXRlKCJpZCIpID09PSB0Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfSkgOiAoaS5maW5kLklEID0gZnVuY3Rpb24oZSwgbikgewotICAgICAgICAgICAg
ICAgIGlmICh0eXBlb2Ygbi5nZXRFbGVtZW50QnlJZCAhPT0gQSAmJiAhZCkgewotICAgICAgICAg
ICAgICAgICAgICB2YXIgciA9IG4uZ2V0RWxlbWVudEJ5SWQoZSk7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiByID8gci5pZCA9PT0gZSB8fCB0eXBlb2Ygci5nZXRBdHRyaWJ1dGVOb2RlICE9
PSBBICYmIHIuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKS52YWx1ZSA9PT0gZSA/IFtyXSA6IHQgOiBb
XQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sIGkuZmlsdGVyLklEID0gZnVuY3Rp
b24oZSkgewotICAgICAgICAgICAgICAgIHZhciB0ID0gZS5yZXBsYWNlKGV0LCB0dCk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFy
IG4gPSB0eXBlb2YgZS5nZXRBdHRyaWJ1dGVOb2RlICE9PSBBICYmIGUuZ2V0QXR0cmlidXRlTm9k
ZSgiaWQiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgbi52YWx1ZSA9PT0gdAot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pLCBpLmZpbmQuVEFHID0gVC50YWdOYW1l
Tm9Db21tZW50cyA/IGZ1bmN0aW9uKGUsIG4pIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHlw
ZW9mIG4uZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09IEEgPyBuLmdldEVsZW1lbnRzQnlUYWdOYW1l
KGUpIDogdAotICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgICAg
ICB2YXIgbiwKLSAgICAgICAgICAgICAgICAgICAgciA9IFtdLAotICAgICAgICAgICAgICAgICAg
ICBpID0gMCwKLSAgICAgICAgICAgICAgICAgICAgbyA9IHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCIqIiA9PT0gZSkgewotICAgICAgICAgICAgICAgICAg
ICB3aGlsZSAobiA9IG9baSsrXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIDEgPT09IG4ubm9k
ZVR5cGUgJiYgci5wdXNoKG4pOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcgotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gbwotICAgICAgICAgICAgfSwgaS5m
aW5kLk5BTUUgPSBULmdldEJ5TmFtZSAmJiBmdW5jdGlvbihlLCBuKSB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHR5cGVvZiBuLmdldEVsZW1lbnRzQnlOYW1lICE9PSBBID8gbi5nZXRFbGVtZW50
c0J5TmFtZShuYW1lKSA6IHQKLSAgICAgICAgICAgIH0sIGkuZmluZC5DTEFTUyA9IFQuZ2V0QnlD
bGFzc05hbWUgJiYgZnVuY3Rpb24oZSwgbikgewotICAgICAgICAgICAgICAgIHJldHVybiB0eXBl
b2Ygbi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lID09PSBBIHx8IGQgPyB0IDogbi5nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKGUpCi0gICAgICAgICAgICB9LCBnID0gW10sIGggPSBbIjpmb2N1cyJdLCAo
VC5xc2EgPSBydChuLnF1ZXJ5U2VsZWN0b3JBbGwpKSAmJiAoYXQoZnVuY3Rpb24oZSkgewotICAg
ICAgICAgICAgICAgIGUuaW5uZXJIVE1MID0gIjxzZWxlY3Q+PG9wdGlvbiBzZWxlY3RlZD0nJz48
L29wdGlvbj48L3NlbGVjdD4iLAotICAgICAgICAgICAgICAgIGUucXVlcnlTZWxlY3RvckFsbCgi
W3NlbGVjdGVkXSIpLmxlbmd0aCB8fCBoLnB1c2goIlxcWyIgKyBfICsgIiooPzpjaGVja2VkfGRp
c2FibGVkfGlzbWFwfG11bHRpcGxlfHJlYWRvbmx5fHNlbGVjdGVkfHZhbHVlKSIpLAotICAgICAg
ICAgICAgICAgIGUucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGggfHwgaC5wdXNo
KCI6Y2hlY2tlZCIpCi0gICAgICAgICAgICB9KSwgYXQoZnVuY3Rpb24oZSkgewotICAgICAgICAg
ICAgICAgIGUuaW5uZXJIVE1MID0gIjxpbnB1dCB0eXBlPSdoaWRkZW4nIGk9JycvPiIsCi0gICAg
ICAgICAgICAgICAgZS5xdWVyeVNlbGVjdG9yQWxsKCJbaV49JyddIikubGVuZ3RoICYmIGgucHVz
aCgiWypeJF09IiArIF8gKyAiKig/OlwiXCJ8JycpIiksCi0gICAgICAgICAgICAgICAgZS5xdWVy
eVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aCB8fCBoLnB1c2goIjplbmFibGVkIiwgIjpk
aXNhYmxlZCIpLAotICAgICAgICAgICAgICAgIGUucXVlcnlTZWxlY3RvckFsbCgiKiw6eCIpLAot
ICAgICAgICAgICAgICAgIGgucHVzaCgiLC4qOiIpCi0gICAgICAgICAgICB9KSksIChULm1hdGNo
ZXNTZWxlY3RvciA9IHJ0KG0gPSBmLm1hdGNoZXNTZWxlY3RvciB8fCBmLm1vek1hdGNoZXNTZWxl
Y3RvciB8fCBmLndlYmtpdE1hdGNoZXNTZWxlY3RvciB8fCBmLm9NYXRjaGVzU2VsZWN0b3IgfHwg
Zi5tc01hdGNoZXNTZWxlY3RvcikpICYmIGF0KGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAg
ICBULmRpc2Nvbm5lY3RlZE1hdGNoID0gbS5jYWxsKGUsICJkaXYiKSwKLSAgICAgICAgICAgICAg
ICBtLmNhbGwoZSwgIltzIT0nJ106eCIpLAotICAgICAgICAgICAgICAgIGcucHVzaCgiIT0iLCBS
KQotICAgICAgICAgICAgfSksIGggPSBSZWdFeHAoaC5qb2luKCJ8IikpLCBnID0gUmVnRXhwKGcu
am9pbigifCIpKSwgeSA9IHJ0KGYuY29udGFpbnMpIHx8IGYuY29tcGFyZURvY3VtZW50UG9zaXRp
b24gPyBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICAgICAgdmFyIG4gPSA5ID09PSBlLm5v
ZGVUeXBlID8gZS5kb2N1bWVudEVsZW1lbnQgOiBlLAotICAgICAgICAgICAgICAgICAgICByID0g
dCAmJiB0LnBhcmVudE5vZGU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGUgPT09IHIgfHwgISgh
ciB8fCAxICE9PSByLm5vZGVUeXBlIHx8ICEobi5jb250YWlucyA/IG4uY29udGFpbnMocikgOiBl
LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uICYmIDE2ICYgZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlv
bihyKSkpCi0gICAgICAgICAgICB9IDogZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAgICAg
IGlmICh0KQotICAgICAgICAgICAgICAgICAgICB3aGlsZSAodCA9IHQucGFyZW50Tm9kZSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID09PSBlKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAhMDsKLSAgICAgICAgICAgICAgICByZXR1cm4gITEKLSAgICAgICAgICAg
IH0sIHYgPSBmLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uID8gZnVuY3Rpb24oZSwgdCkgewotICAg
ICAgICAgICAgICAgIHZhciByOwotICAgICAgICAgICAgICAgIHJldHVybiBlID09PSB0ID8gKHUg
PSAhMCwgMCkgOiAociA9IHQuY29tcGFyZURvY3VtZW50UG9zaXRpb24gJiYgZS5jb21wYXJlRG9j
dW1lbnRQb3NpdGlvbiAmJiBlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpKSA/IDEgJiByIHx8
IGUucGFyZW50Tm9kZSAmJiAxMSA9PT0gZS5wYXJlbnROb2RlLm5vZGVUeXBlID8gZSA9PT0gbiB8
fCB5KHcsIGUpID8gLTEgOiB0ID09PSBuIHx8IHkodywgdCkgPyAxIDogMCA6IDQgJiByID8gLTEg
OiAxIDogZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiA/IC0xIDogMQotICAgICAgICAgICAgfSA6
IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgICAgICB2YXIgciwKLSAgICAgICAgICAgICAg
ICAgICAgaSA9IDAsCi0gICAgICAgICAgICAgICAgICAgIG8gPSBlLnBhcmVudE5vZGUsCi0gICAg
ICAgICAgICAgICAgICAgIGEgPSB0LnBhcmVudE5vZGUsCi0gICAgICAgICAgICAgICAgICAgIHMg
PSBbZV0sCi0gICAgICAgICAgICAgICAgICAgIGwgPSBbdF07Ci0gICAgICAgICAgICAgICAgaWYg
KGUgPT09IHQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB1ID0gITAsIDA7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFvIHx8ICFhKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9PT0g
biA/IC0xIDogdCA9PT0gbiA/IDEgOiBvID8gLTEgOiBhID8gMSA6IDA7Ci0gICAgICAgICAgICAg
ICAgaWYgKG8gPT09IGEpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB1dChlLCB0KTsKLSAg
ICAgICAgICAgICAgICByID0gZTsKLSAgICAgICAgICAgICAgICB3aGlsZSAociA9IHIucGFyZW50
Tm9kZSkKLSAgICAgICAgICAgICAgICAgICAgcy51bnNoaWZ0KHIpOwotICAgICAgICAgICAgICAg
IHIgPSB0OwotICAgICAgICAgICAgICAgIHdoaWxlIChyID0gci5wYXJlbnROb2RlKQotICAgICAg
ICAgICAgICAgICAgICBsLnVuc2hpZnQocik7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKHNbaV0g
PT09IGxbaV0pCi0gICAgICAgICAgICAgICAgICAgIGkrKzsKLSAgICAgICAgICAgICAgICByZXR1
cm4gaSA/IHV0KHNbaV0sIGxbaV0pIDogc1tpXSA9PT0gdyA/IC0xIDogbFtpXSA9PT0gdyA/IDEg
OiAwCi0gICAgICAgICAgICB9LCB1ID0gITEsIFswLCAwXS5zb3J0KHYpLCBULmRldGVjdER1cGxp
Y2F0ZXMgPSB1LCBwKSA6IHAKLSAgICAgICAgfSwKLSAgICAgICAgc3QubWF0Y2hlcyA9IGZ1bmN0
aW9uKGUsIHQpIHsKLSAgICAgICAgICAgIHJldHVybiBzdChlLCBudWxsLCBudWxsLCB0KQotICAg
ICAgICB9LAotICAgICAgICBzdC5tYXRjaGVzU2VsZWN0b3IgPSBmdW5jdGlvbihlLCB0KSB7Ci0g
ICAgICAgICAgICBpZiAoKGUub3duZXJEb2N1bWVudCB8fCBlKSAhPT0gcCAmJiBjKGUpLCB0ID0g
dC5yZXBsYWNlKFosICI9JyQxJ10iKSwgISghVC5tYXRjaGVzU2VsZWN0b3IgfHwgZCB8fCBnICYm
IGcudGVzdCh0KSB8fCBoLnRlc3QodCkpKQotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHZhciBuID0gbS5jYWxsKGUsIHQpOwotICAgICAgICAgICAgICAgICAgICBp
ZiAobiB8fCBULmRpc2Nvbm5lY3RlZE1hdGNoIHx8IGUuZG9jdW1lbnQgJiYgMTEgIT09IGUuZG9j
dW1lbnQubm9kZVR5cGUpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbgotICAgICAg
ICAgICAgICAgIH0gY2F0Y2ggKHIpIHt9Ci0gICAgICAgICAgICByZXR1cm4gc3QodCwgcCwgbnVs
bCwgW2VdKS5sZW5ndGggPiAwCi0gICAgICAgIH0sCi0gICAgICAgIHN0LmNvbnRhaW5zID0gZnVu
Y3Rpb24oZSwgdCkgewotICAgICAgICAgICAgcmV0dXJuIChlLm93bmVyRG9jdW1lbnQgfHwgZSkg
IT09IHAgJiYgYyhlKSwgeShlLCB0KQotICAgICAgICB9LAotICAgICAgICBzdC5hdHRyID0gZnVu
Y3Rpb24oZSwgdCkgewotICAgICAgICAgICAgdmFyIG47Ci0gICAgICAgICAgICByZXR1cm4gKGUu
b3duZXJEb2N1bWVudCB8fCBlKSAhPT0gcCAmJiBjKGUpLCBkIHx8ICh0ID0gdC50b0xvd2VyQ2Fz
ZSgpKSwgKG4gPSBpLmF0dHJIYW5kbGVbdF0pID8gbihlKSA6IGQgfHwgVC5hdHRyaWJ1dGVzID8g
ZS5nZXRBdHRyaWJ1dGUodCkgOiAoKG4gPSBlLmdldEF0dHJpYnV0ZU5vZGUodCkpIHx8IGUuZ2V0
QXR0cmlidXRlKHQpKSAmJiBlW3RdID09PSAhMCA/IHQgOiBuICYmIG4uc3BlY2lmaWVkID8gbi52
YWx1ZSA6IG51bGwKLSAgICAgICAgfSwKLSAgICAgICAgc3QuZXJyb3IgPSBmdW5jdGlvbihlKSB7
Ci0gICAgICAgICAgICB0aHJvdyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhw
cmVzc2lvbjogIiArIGUpCi0gICAgICAgIH0sCi0gICAgICAgIHN0LnVuaXF1ZVNvcnQgPSBmdW5j
dGlvbihlKSB7Ci0gICAgICAgICAgICB2YXIgdCwKLSAgICAgICAgICAgICAgICBuID0gW10sCi0g
ICAgICAgICAgICAgICAgciA9IDEsCi0gICAgICAgICAgICAgICAgaSA9IDA7Ci0gICAgICAgICAg
ICBpZiAodSA9ICFULmRldGVjdER1cGxpY2F0ZXMsIGUuc29ydCh2KSwgdSkgewotICAgICAgICAg
ICAgICAgIGZvciAoOyB0ID0gZVtyXTsgcisrKQotICAgICAgICAgICAgICAgICAgICB0ID09PSBl
W3IgLSAxXSAmJiAoaSA9IG4ucHVzaChyKSk7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGktLSkK
LSAgICAgICAgICAgICAgICAgICAgZS5zcGxpY2UobltpXSwgMSkKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHJldHVybiBlCi0gICAgICAgIH07Ci0gICAgICAgIGZ1bmN0aW9uIHV0KGUsIHQp
IHsKLSAgICAgICAgICAgIHZhciBuID0gdCAmJiBlLAotICAgICAgICAgICAgICAgIHIgPSBuICYm
ICh+dC5zb3VyY2VJbmRleCB8fCBqKSAtICh+ZS5zb3VyY2VJbmRleCB8fCBqKTsKLSAgICAgICAg
ICAgIGlmIChyKQotICAgICAgICAgICAgICAgIHJldHVybiByOwotICAgICAgICAgICAgaWYgKG4p
Ci0gICAgICAgICAgICAgICAgd2hpbGUgKG4gPSBuLm5leHRTaWJsaW5nKQotICAgICAgICAgICAg
ICAgICAgICBpZiAobiA9PT0gdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsK
LSAgICAgICAgICAgIHJldHVybiBlID8gMSA6IC0xCi0gICAgICAgIH0KLSAgICAgICAgZnVuY3Rp
b24gbHQoZSkgewotICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgICAg
ICAgICB2YXIgbiA9IHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gImlucHV0IiA9PT0gbiAmJiB0LnR5cGUgPT09IGUKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgICBmdW5jdGlvbiBjdChlKSB7Ci0gICAgICAgICAgICByZXR1cm4gZnVuY3Rp
b24odCkgewotICAgICAgICAgICAgICAgIHZhciBuID0gdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgp
OwotICAgICAgICAgICAgICAgIHJldHVybiAoImlucHV0IiA9PT0gbiB8fCAiYnV0dG9uIiA9PT0g
bikgJiYgdC50eXBlID09PSBlCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZnVu
Y3Rpb24gcHQoZSkgewotICAgICAgICAgICAgcmV0dXJuIG90KGZ1bmN0aW9uKHQpIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdCA9ICt0LCBvdChmdW5jdGlvbihuLCByKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHZhciBpLAotICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGUoW10sIG4ubGVu
Z3RoLCB0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBvLmxlbmd0aDsKLSAgICAgICAg
ICAgICAgICAgICAgd2hpbGUgKGEtLSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5baSA9IG9b
YV1dICYmIChuW2ldID0gIShyW2ldID0gbltpXSkpCi0gICAgICAgICAgICAgICAgfSkKLSAgICAg
ICAgICAgIH0pCi0gICAgICAgIH0KLSAgICAgICAgbyA9IHN0LmdldFRleHQgPSBmdW5jdGlvbihl
KSB7Ci0gICAgICAgICAgICB2YXIgdCwKLSAgICAgICAgICAgICAgICBuID0gIiIsCi0gICAgICAg
ICAgICAgICAgciA9IDAsCi0gICAgICAgICAgICAgICAgaSA9IGUubm9kZVR5cGU7Ci0gICAgICAg
ICAgICBpZiAoaSkgewotICAgICAgICAgICAgICAgIGlmICgxID09PSBpIHx8IDkgPT09IGkgfHwg
MTEgPT09IGkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBl
LnRleHRDb250ZW50KQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUudGV4dENvbnRl
bnQ7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoZSA9IGUuZmlyc3RDaGlsZDsgZTsgZSA9IGUu
bmV4dFNpYmxpbmcpCi0gICAgICAgICAgICAgICAgICAgICAgICBuICs9IG8oZSkKLSAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKDMgPT09IGkgfHwgNCA9PT0gaSkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGUubm9kZVZhbHVlCi0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAg
ICBmb3IgKDsgdCA9IGVbcl07IHIrKykKLSAgICAgICAgICAgICAgICAgICAgbiArPSBvKHQpOwot
ICAgICAgICAgICAgcmV0dXJuIG4KLSAgICAgICAgfSwKLSAgICAgICAgaSA9IHN0LnNlbGVjdG9y
cyA9IHsKLSAgICAgICAgICAgIGNhY2hlTGVuZ3RoOiA1MCwKLSAgICAgICAgICAgIGNyZWF0ZVBz
ZXVkbzogb3QsCi0gICAgICAgICAgICBtYXRjaDogVSwKLSAgICAgICAgICAgIGZpbmQ6IHt9LAot
ICAgICAgICAgICAgcmVsYXRpdmU6IHsKLSAgICAgICAgICAgICAgICAiPiI6IHsKLSAgICAgICAg
ICAgICAgICAgICAgZGlyOiAicGFyZW50Tm9kZSIsCi0gICAgICAgICAgICAgICAgICAgIGZpcnN0
OiAhMAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgIiAiOiB7Ci0gICAgICAg
ICAgICAgICAgICAgIGRpcjogInBhcmVudE5vZGUiCi0gICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAiKyI6IHsKLSAgICAgICAgICAgICAgICAgICAgZGlyOiAicHJldmlvdXNTaWJs
aW5nIiwKLSAgICAgICAgICAgICAgICAgICAgZmlyc3Q6ICEwCi0gICAgICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgICAgICAifiI6IHsKLSAgICAgICAgICAgICAgICAgICAgZGlyOiAicHJldmlv
dXNTaWJsaW5nIgotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICBwcmVGaWx0ZXI6IHsKLSAgICAgICAgICAgICAgICBBVFRSOiBmdW5jdGlvbihlKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBlWzFdID0gZVsxXS5yZXBsYWNlKGV0LCB0dCksIGVbM10g
PSAoZVs0XSB8fCBlWzVdIHx8ICIiKS5yZXBsYWNlKGV0LCB0dCksICJ+PSIgPT09IGVbMl0gJiYg
KGVbM10gPSAiICIgKyBlWzNdICsgIiAiKSwgZS5zbGljZSgwLCA0KQotICAgICAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAgICAgQ0hJTEQ6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGVbMV0gPSBlWzFdLnRvTG93ZXJDYXNlKCksICJudGgiID09PSBlWzFdLnNs
aWNlKDAsIDMpID8gKGVbM10gfHwgc3QuZXJyb3IoZVswXSksIGVbNF0gPSArKGVbNF0gPyBlWzVd
ICsgKGVbNl0gfHwgMSkgOiAyICogKCJldmVuIiA9PT0gZVszXSB8fCAib2RkIiA9PT0gZVszXSkp
LCBlWzVdID0gKyhlWzddICsgZVs4XSB8fCAib2RkIiA9PT0gZVszXSkpIDogZVszXSAmJiBzdC5l
cnJvcihlWzBdKSwgZQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgUFNFVURP
OiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciB0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgbiA9ICFlWzVdICYmIGVbMl07Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBVLkNISUxELnRlc3QoZVswXSkgPyBudWxsIDogKGVbNF0gPyBlWzJdID0gZVs0XSA6IG4gJiYg
ei50ZXN0KG4pICYmICh0ID0gZnQobiwgITApKSAmJiAodCA9IG4uaW5kZXhPZigiKSIsIG4ubGVu
Z3RoIC0gdCkgLSBuLmxlbmd0aCkgJiYgKGVbMF0gPSBlWzBdLnNsaWNlKDAsIHQpLCBlWzJdID0g
bi5zbGljZSgwLCB0KSksIGUuc2xpY2UoMCwgMykpCi0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgIGZpbHRlcjogewotICAgICAgICAgICAgICAgIFRBRzogZnVu
Y3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gIioiID09PSBlID8gZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITAKLSAgICAgICAgICAgICAg
ICAgICAgfSA6IChlID0gZS5yZXBsYWNlKGV0LCB0dCkudG9Mb3dlckNhc2UoKSwgZnVuY3Rpb24o
dCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQubm9kZU5hbWUgJiYgdC5ub2Rl
TmFtZS50b0xvd2VyQ2FzZSgpID09PSBlCi0gICAgICAgICAgICAgICAgICAgIH0pCi0gICAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBDTEFTUzogZnVuY3Rpb24oZSkgewotICAgICAg
ICAgICAgICAgICAgICB2YXIgdCA9IGtbZSArICIgIl07Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0IHx8ICh0ID0gUmVnRXhwKCIoXnwiICsgXyArICIpIiArIGUgKyAiKCIgKyBfICsgInwk
KSIpKSAmJiBrKGUsIGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdC50ZXN0KGUuY2xhc3NOYW1lIHx8IHR5cGVvZiBlLmdldEF0dHJpYnV0ZSAhPT0gQSAm
JiBlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKSB8fCAiIikKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0pCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBBVFRSOiBmdW5jdGlvbihl
LCB0LCBuKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihyKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHN0LmF0dHIociwgZSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBpID8gIiE9IiA9PT0gdCA6IHQgPyAoaSArPSAiIiwg
Ij0iID09PSB0ID8gaSA9PT0gbiA6ICIhPSIgPT09IHQgPyBpICE9PSBuIDogIl49IiA9PT0gdCA/
IG4gJiYgMCA9PT0gaS5pbmRleE9mKG4pIDogIio9IiA9PT0gdCA/IG4gJiYgaS5pbmRleE9mKG4p
ID4gLTEgOiAiJD0iID09PSB0ID8gbiAmJiBpLnNsaWNlKC1uLmxlbmd0aCkgPT09IG4gOiAifj0i
ID09PSB0ID8gKCIgIiArIGkgKyAiICIpLmluZGV4T2YobikgPiAtMSA6ICJ8PSIgPT09IHQgPyBp
ID09PSBuIHx8IGkuc2xpY2UoMCwgbi5sZW5ndGggKyAxKSA9PT0gbiArICItIiA6ICExKSA6ICEw
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg
ICAgIENISUxEOiBmdW5jdGlvbihlLCB0LCBuLCByLCBpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHZhciBvID0gIm50aCIgIT09IGUuc2xpY2UoMCwgMyksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBhID0gImxhc3QiICE9PSBlLnNsaWNlKC00KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHMg
PSAib2YtdHlwZSIgPT09IHQ7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAxID09PSByICYm
IDAgPT09IGkgPyBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ISFlLnBhcmVudE5vZGUKLSAgICAgICAgICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKHQsIG4sIHUp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0g
byAhPT0gYSA/ICJuZXh0U2libGluZyIgOiAicHJldmlvdXNTaWJsaW5nIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtID0gdC5wYXJlbnROb2RlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHkgPSBzICYmIHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2ID0gIXUgJiYgIXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdoaWxlIChnKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwID0gdDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdo
aWxlIChwID0gcFtnXSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAocyA/IHAubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0geSA6IDEgPT09IHAubm9kZVR5cGUp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBnID0gIm9ubHkiID09PSBl
ICYmICFoICYmICJuZXh0U2libGluZyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPSBb
YSA/IG0uZmlyc3RDaGlsZCA6IG0ubGFzdENoaWxkXSwgYSAmJiB2KSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGMgPSBtW3hdIHx8IChtW3hdID0ge30pLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsID0gY1tlXSB8fCBbXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZCA9IGxbMF0gPT09IE4gJiYgbFsxXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZiA9IGxbMF0gPT09IE4gJiYgbFsyXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcCA9IGQgJiYgbS5jaGlsZE5vZGVzW2RdOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3aGlsZSAocCA9ICsrZCAmJiBwICYmIHBbZ10gfHwgKGYgPSBkID0gMCkg
fHwgaC5wb3AoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgxID09
PSBwLm5vZGVUeXBlICYmICsrZiAmJiBwID09PSB0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY1tlXSA9IFtOLCBkLCBmXTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodiAmJiAobCA9
ICh0W3hdIHx8ICh0W3hdID0ge30pKVtlXSkgJiYgbFswXSA9PT0gTikKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZiA9IGxbMV07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocCA9ICsrZCAmJiBw
ICYmIHBbZ10gfHwgKGYgPSBkID0gMCkgfHwgaC5wb3AoKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICgocyA/IHAubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0geSA6
IDEgPT09IHAubm9kZVR5cGUpICYmICsrZiAmJiAodiAmJiAoKHBbeF0gfHwgKHBbeF0gPSB7fSkp
W2VdID0gW04sIGZdKSwgcCA9PT0gdCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYgLT0g
aSwgZiA9PT0gciB8fCAwID09PSBmICUgciAmJiBmIC8gciA+PSAwCi0gICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgIFBTRVVETzogZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAgICAgICAg
ICB2YXIgbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBpLnBzZXVkb3NbZV0gfHwgaS5z
ZXRGaWx0ZXJzW2UudG9Mb3dlckNhc2UoKV0gfHwgc3QuZXJyb3IoInVuc3VwcG9ydGVkIHBzZXVk
bzogIiArIGUpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gclt4XSA/IHIodCkgOiByLmxl
bmd0aCA+IDEgPyAobiA9IFtlLCBlLCAiIiwgdF0sIGkuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0
eShlLnRvTG93ZXJDYXNlKCkpID8gb3QoZnVuY3Rpb24oZSwgbikgewotICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIGksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHIoZSwgdCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG8ubGVuZ3RoOwotICAgICAgICAgICAg
ICAgICAgICAgICAgd2hpbGUgKGEtLSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0g
TS5jYWxsKGUsIG9bYV0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbaV0gPSAhKG5b
aV0gPSBvW2FdKQotICAgICAgICAgICAgICAgICAgICB9KSA6IGZ1bmN0aW9uKGUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiByKGUsIDAsIG4pCi0gICAgICAgICAgICAgICAgICAg
IH0pIDogcgotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBw
c2V1ZG9zOiB7Ci0gICAgICAgICAgICAgICAgbm90OiBvdChmdW5jdGlvbihlKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHZhciB0ID0gW10sCi0gICAgICAgICAgICAgICAgICAgICAgICBuID0gW10s
Ci0gICAgICAgICAgICAgICAgICAgICAgICByID0gcyhlLnJlcGxhY2UoVywgIiQxIikpOwotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gclt4XSA/IG90KGZ1bmN0aW9uKGUsIHQsIG4sIGkpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGEgPSByKGUsIG51bGwsIGksIFtdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ID0gZS5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocy0tKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChvID0gYVtzXSkgJiYgKGVbc10gPSAhKHRbc10gPSBvKSkK
LSAgICAgICAgICAgICAgICAgICAgfSkgOiBmdW5jdGlvbihlLCBpLCBvKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdFswXSA9IGUsIHIodCwgbnVsbCwgbywgbiksICFuLnBvcCgp
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KSwKLSAgICAgICAgICAg
ICAgICBoYXM6IG90KGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uKHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdChlLCB0KS5sZW5n
dGggPiAwCi0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KSwKLSAgICAg
ICAgICAgICAgICBjb250YWluczogb3QoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZnVuY3Rpb24odCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh0
LnRleHRDb250ZW50IHx8IHQuaW5uZXJUZXh0IHx8IG8odCkpLmluZGV4T2YoZSkgPiAtMQotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSksCi0gICAgICAgICAgICAgICAg
bGFuZzogb3QoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gWC50ZXN0
KGUgfHwgIiIpIHx8IHN0LmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAiICsgZSksIGUgPSBlLnJl
cGxhY2UoZXQsIHR0KS50b0xvd2VyQ2FzZSgpLCBmdW5jdGlvbih0KSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgbjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvIGlmIChuID0gZCA/
IHQuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpIHx8IHQuZ2V0QXR0cmlidXRlKCJsYW5nIikgOiB0
LmxhbmcpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gPSBuLnRvTG93ZXJD
YXNlKCksIG4gPT09IGUgfHwgMCA9PT0gbi5pbmRleE9mKGUgKyAiLSIpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgd2hpbGUgKCh0ID0gdC5wYXJlbnROb2RlKSAmJiAxID09PSB0Lm5vZGVUeXBl
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMQotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgfSksCi0gICAgICAgICAgICAgICAgdGFyZ2V0OiBmdW5jdGlv
bih0KSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS5sb2NhdGlvbiAmJiBlLmxvY2F0
aW9uLmhhc2g7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIG4uc2xpY2UoMSkgPT09
IHQuaWQKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHJvb3Q6IGZ1bmN0aW9u
KGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPT09IGYKLSAgICAgICAgICAgICAg
ICB9LAotICAgICAgICAgICAgICAgIGZvY3VzOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBlID09PSBwLmFjdGl2ZUVsZW1lbnQgJiYgKCFwLmhhc0ZvY3VzIHx8IHAu
aGFzRm9jdXMoKSkgJiYgISEoZS50eXBlIHx8IGUuaHJlZiB8fCB+ZS50YWJJbmRleCkKLSAgICAg
ICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIGVuYWJsZWQ6IGZ1bmN0aW9uKGUpIHsKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuZGlzYWJsZWQgPT09ICExCi0gICAgICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24oZSkgewotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZS5kaXNhYmxlZCA9PT0gITAKLSAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgIGNoZWNrZWQ6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAg
ICAgdmFyIHQgPSBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiAiaW5wdXQiID09PSB0ICYmICEhZS5jaGVja2VkIHx8ICJvcHRpb24iID09PSB0ICYm
ICEhZS5zZWxlY3RlZAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgc2VsZWN0
ZWQ6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUucGFyZW50Tm9k
ZSAmJiBlLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCwgZS5zZWxlY3RlZCA9PT0gITAKLSAgICAg
ICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIGVtcHR5OiBmdW5jdGlvbihlKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGZvciAoZSA9IGUuZmlyc3RDaGlsZDsgZTsgZSA9IGUubmV4dFNpYmxp
bmcpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5ub2RlTmFtZSA+ICJAIiB8fCAzID09
PSBlLm5vZGVUeXBlIHx8IDQgPT09IGUubm9kZVR5cGUpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuICExOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gITAKLSAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgIHBhcmVudDogZnVuY3Rpb24oZSkgewotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gIWkucHNldWRvcy5lbXB0eShlKQotICAgICAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAgICAgaGVhZGVyOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBRLnRlc3QoZS5ub2RlTmFtZSkKLSAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgIGlucHV0OiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBHLnRlc3QoZS5ub2RlTmFtZSkKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg
ICAgIGJ1dHRvbjogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUu
bm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJpbnB1
dCIgPT09IHQgJiYgImJ1dHRvbiIgPT09IGUudHlwZSB8fCAiYnV0dG9uIiA9PT0gdAotICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgdGV4dDogZnVuY3Rpb24oZSkgewotICAgICAg
ICAgICAgICAgICAgICB2YXIgdDsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJpbnB1dCIg
PT09IGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAmJiAidGV4dCIgPT09IGUudHlwZSAmJiAobnVs
bCA9PSAodCA9IGUuZ2V0QXR0cmlidXRlKCJ0eXBlIikpIHx8IHQudG9Mb3dlckNhc2UoKSA9PT0g
ZS50eXBlKQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgZmlyc3Q6IHB0KGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzBdCi0gICAgICAgICAgICAg
ICAgfSksCi0gICAgICAgICAgICAgICAgbGFzdDogcHQoZnVuY3Rpb24oZSwgdCkgewotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gW3QgLSAxXQotICAgICAgICAgICAgICAgIH0pLAotICAgICAg
ICAgICAgICAgIGVxOiBwdChmdW5jdGlvbihlLCB0LCBuKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBbMCA+IG4gPyBuICsgdCA6IG5dCi0gICAgICAgICAgICAgICAgfSksCi0gICAgICAg
ICAgICAgICAgZXZlbjogcHQoZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAgICAgICAgICB2
YXIgbiA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoOyB0ID4gbjsgbiArPSAyKQotICAg
ICAgICAgICAgICAgICAgICAgICAgZS5wdXNoKG4pOwotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZQotICAgICAgICAgICAgICAgIH0pLAotICAgICAgICAgICAgICAgIG9kZDogcHQoZnVuY3Rp
b24oZSwgdCkgewotICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IDE7Ci0gICAgICAgICAgICAg
ICAgICAgIGZvciAoOyB0ID4gbjsgbiArPSAyKQotICAgICAgICAgICAgICAgICAgICAgICAgZS5w
dXNoKG4pOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQotICAgICAgICAgICAgICAgIH0p
LAotICAgICAgICAgICAgICAgIGx0OiBwdChmdW5jdGlvbihlLCB0LCBuKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHZhciByID0gMCA+IG4gPyBuICsgdCA6IG47Ci0gICAgICAgICAgICAgICAgICAg
IGZvciAoOyAtLXIgPj0gMDspCi0gICAgICAgICAgICAgICAgICAgICAgICBlLnB1c2gocik7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBlCi0gICAgICAgICAgICAgICAgfSksCi0gICAgICAg
ICAgICAgICAgZ3Q6IHB0KGZ1bmN0aW9uKGUsIHQsIG4pIHsKLSAgICAgICAgICAgICAgICAgICAg
dmFyIHIgPSAwID4gbiA/IG4gKyB0IDogbjsKLSAgICAgICAgICAgICAgICAgICAgZm9yICg7IHQg
PiArK3I7KQotICAgICAgICAgICAgICAgICAgICAgICAgZS5wdXNoKHIpOwotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZQotICAgICAgICAgICAgICAgIH0pCi0gICAgICAgICAgICB9Ci0gICAg
ICAgIH07Ci0gICAgICAgIGZvciAobiBpbiB7Ci0gICAgICAgICAgICByYWRpbzogITAsCi0gICAg
ICAgICAgICBjaGVja2JveDogITAsCi0gICAgICAgICAgICBmaWxlOiAhMCwKLSAgICAgICAgICAg
IHBhc3N3b3JkOiAhMCwKLSAgICAgICAgICAgIGltYWdlOiAhMAotICAgICAgICB9KQotICAgICAg
ICAgICAgaS5wc2V1ZG9zW25dID0gbHQobik7Ci0gICAgICAgIGZvciAobiBpbiB7Ci0gICAgICAg
ICAgICBzdWJtaXQ6ICEwLAotICAgICAgICAgICAgcmVzZXQ6ICEwCi0gICAgICAgIH0pCi0gICAg
ICAgICAgICBpLnBzZXVkb3Nbbl0gPSBjdChuKTsKLSAgICAgICAgZnVuY3Rpb24gZnQoZSwgdCkg
ewotICAgICAgICAgICAgdmFyIG4sCi0gICAgICAgICAgICAgICAgciwKLSAgICAgICAgICAgICAg
ICBvLAotICAgICAgICAgICAgICAgIGEsCi0gICAgICAgICAgICAgICAgcywKLSAgICAgICAgICAg
ICAgICB1LAotICAgICAgICAgICAgICAgIGwsCi0gICAgICAgICAgICAgICAgYyA9IEVbZSArICIg
Il07Ci0gICAgICAgICAgICBpZiAoYykKLSAgICAgICAgICAgICAgICByZXR1cm4gdCA/IDAgOiBj
LnNsaWNlKDApOwotICAgICAgICAgICAgcyA9IGUsCi0gICAgICAgICAgICB1ID0gW10sCi0gICAg
ICAgICAgICBsID0gaS5wcmVGaWx0ZXI7Ci0gICAgICAgICAgICB3aGlsZSAocykgewotICAgICAg
ICAgICAgICAgICghbiB8fCAociA9ICQuZXhlYyhzKSkpICYmIChyICYmIChzID0gcy5zbGljZShy
WzBdLmxlbmd0aCkgfHwgcyksIHUucHVzaChvID0gW10pKSwKLSAgICAgICAgICAgICAgICBuID0g
ITEsCi0gICAgICAgICAgICAgICAgKHIgPSBJLmV4ZWMocykpICYmIChuID0gci5zaGlmdCgpLCBv
LnB1c2goewotICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbiwKLSAgICAgICAgICAgICAgICAg
ICAgdHlwZTogclswXS5yZXBsYWNlKFcsICIgIikKLSAgICAgICAgICAgICAgICB9KSwgcyA9IHMu
c2xpY2Uobi5sZW5ndGgpKTsKLSAgICAgICAgICAgICAgICBmb3IgKGEgaW4gaS5maWx0ZXIpCi0g
ICAgICAgICAgICAgICAgICAgICEociA9IFVbYV0uZXhlYyhzKSkgfHwgbFthXSAmJiAhKHIgPSBs
W2FdKHIpKSB8fCAobiA9IHIuc2hpZnQoKSwgby5wdXNoKHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHZhbHVlOiBuLAotICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogYSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1hdGNoZXM6IHIKLSAgICAgICAgICAgICAgICAgICAgfSksIHMgPSBz
LnNsaWNlKG4ubGVuZ3RoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFuKQotICAgICAgICAgICAg
ICAgICAgICBicmVhawotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHQgPyBzLmxl
bmd0aCA6IHMgPyBzdC5lcnJvcihlKSA6IEUoZSwgdSkuc2xpY2UoMCkKLSAgICAgICAgfQotICAg
ICAgICBmdW5jdGlvbiBkdChlKSB7Ci0gICAgICAgICAgICB2YXIgdCA9IDAsCi0gICAgICAgICAg
ICAgICAgbiA9IGUubGVuZ3RoLAotICAgICAgICAgICAgICAgIHIgPSAiIjsKLSAgICAgICAgICAg
IGZvciAoOyBuID4gdDsgdCsrKQotICAgICAgICAgICAgICAgIHIgKz0gZVt0XS52YWx1ZTsKLSAg
ICAgICAgICAgIHJldHVybiByCi0gICAgICAgIH0KLSAgICAgICAgZnVuY3Rpb24gaHQoZSwgdCwg
bikgewotICAgICAgICAgICAgdmFyIGkgPSB0LmRpciwKLSAgICAgICAgICAgICAgICBvID0gbiAm
JiAicGFyZW50Tm9kZSIgPT09IGksCi0gICAgICAgICAgICAgICAgYSA9IEMrKzsKLSAgICAgICAg
ICAgIHJldHVybiB0LmZpcnN0ID8gZnVuY3Rpb24odCwgbiwgcikgewotICAgICAgICAgICAgICAg
IHdoaWxlICh0ID0gdFtpXSkKLSAgICAgICAgICAgICAgICAgICAgaWYgKDEgPT09IHQubm9kZVR5
cGUgfHwgbykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlKHQsIG4sIHIpCi0gICAg
ICAgICAgICB9IDogZnVuY3Rpb24odCwgbiwgcykgewotICAgICAgICAgICAgICAgIHZhciB1LAot
ICAgICAgICAgICAgICAgICAgICBsLAotICAgICAgICAgICAgICAgICAgICBjLAotICAgICAgICAg
ICAgICAgICAgICBwID0gTiArICIgIiArIGE7Ci0gICAgICAgICAgICAgICAgaWYgKHMpIHsKLSAg
ICAgICAgICAgICAgICAgICAgd2hpbGUgKHQgPSB0W2ldKQotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCgxID09PSB0Lm5vZGVUeXBlIHx8IG8pICYmIGUodCwgbiwgcykpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuICEwCi0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIHdoaWxlICh0ID0gdFtpXSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmICgxID09PSB0Lm5vZGVUeXBlIHx8IG8pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGMgPSB0W3hdIHx8ICh0W3hdID0ge30pLCAobCA9IGNbaV0pICYmIGxbMF0gPT09IHApIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh1ID0gbFsxXSkgPT09ICEwIHx8
IHUgPT09IHIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdSA9
PT0gITAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGwgPSBjW2ldID0g
W3BdLCBsWzFdID0gZSh0LCBuLCBzKSB8fCByLCBsWzFdID09PSAhMCkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuICEwCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICAgICAgZnVuY3Rpb24gZ3QoZSkgewotICAgICAgICAgICAgcmV0dXJuIGUubGVuZ3RoID4gMSA/
IGZ1bmN0aW9uKHQsIG4sIHIpIHsKLSAgICAgICAgICAgICAgICB2YXIgaSA9IGUubGVuZ3RoOwot
ICAgICAgICAgICAgICAgIHdoaWxlIChpLS0pCi0gICAgICAgICAgICAgICAgICAgIGlmICghZVtp
XSh0LCBuLCByKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gITAKLSAgICAgICAgICAgIH0gOiBlWzBdCi0gICAgICAgIH0KLSAgICAg
ICAgZnVuY3Rpb24gbXQoZSwgdCwgbiwgciwgaSkgewotICAgICAgICAgICAgdmFyIG8sCi0gICAg
ICAgICAgICAgICAgYSA9IFtdLAotICAgICAgICAgICAgICAgIHMgPSAwLAotICAgICAgICAgICAg
ICAgIHUgPSBlLmxlbmd0aCwKLSAgICAgICAgICAgICAgICBsID0gbnVsbCAhPSB0OwotICAgICAg
ICAgICAgZm9yICg7IHUgPiBzOyBzKyspCi0gICAgICAgICAgICAgICAgKG8gPSBlW3NdKSAmJiAo
IW4gfHwgbihvLCByLCBpKSkgJiYgKGEucHVzaChvKSwgbCAmJiB0LnB1c2gocykpOwotICAgICAg
ICAgICAgcmV0dXJuIGEKLSAgICAgICAgfQotICAgICAgICBmdW5jdGlvbiB5dChlLCB0LCBuLCBy
LCBpLCBvKSB7Ci0gICAgICAgICAgICByZXR1cm4gciAmJiAhclt4XSAmJiAociA9IHl0KHIpKSwg
aSAmJiAhaVt4XSAmJiAoaSA9IHl0KGksIG8pKSwgb3QoZnVuY3Rpb24obywgYSwgcywgdSkgewot
ICAgICAgICAgICAgICAgIHZhciBsLAotICAgICAgICAgICAgICAgICAgICBjLAotICAgICAgICAg
ICAgICAgICAgICBwLAotICAgICAgICAgICAgICAgICAgICBmID0gW10sCi0gICAgICAgICAgICAg
ICAgICAgIGQgPSBbXSwKLSAgICAgICAgICAgICAgICAgICAgaCA9IGEubGVuZ3RoLAotICAgICAg
ICAgICAgICAgICAgICBnID0gbyB8fCB4dCh0IHx8ICIqIiwgcy5ub2RlVHlwZSA/IFtzXSA6IHMs
IFtdKSwKLSAgICAgICAgICAgICAgICAgICAgbSA9ICFlIHx8ICFvICYmIHQgPyBnIDogbXQoZywg
ZiwgZSwgcywgdSksCi0gICAgICAgICAgICAgICAgICAgIHkgPSBuID8gaSB8fCAobyA/IGUgOiBo
IHx8IHIpID8gW10gOiBhIDogbTsKLSAgICAgICAgICAgICAgICBpZiAobiAmJiBuKG0sIHksIHMs
IHUpLCByKSB7Ci0gICAgICAgICAgICAgICAgICAgIGwgPSBtdCh5LCBkKSwKLSAgICAgICAgICAg
ICAgICAgICAgcihsLCBbXSwgcywgdSksCi0gICAgICAgICAgICAgICAgICAgIGMgPSBsLmxlbmd0
aDsKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGMtLSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIChwID0gbFtjXSkgJiYgKHlbZFtjXV0gPSAhKG1bZFtjXV0gPSBwKSkKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKG8pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGkgfHwgZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsID0gW10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9
IHkubGVuZ3RoOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChjLS0pCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwID0geVtjXSkgJiYgbC5wdXNoKG1bY10gPSBw
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKG51bGwsIHkgPSBbXSwgbCwgdSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB5Lmxl
bmd0aDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChjLS0pCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHAgPSB5W2NdKSAmJiAobCA9IGkgPyBNLmNhbGwobywgcCkgOiBmW2Nd
KSA+IC0xICYmIChvW2xdID0gIShhW2xdID0gcCkpCi0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgeSA9IG10KHkgPT09IGEg
PyB5LnNwbGljZShoLCB5Lmxlbmd0aCkgOiB5KSwKLSAgICAgICAgICAgICAgICAgICAgaSA/IGko
bnVsbCwgYSwgeSwgdSkgOiBILmFwcGx5KGEsIHkpCi0gICAgICAgICAgICB9KQotICAgICAgICB9
Ci0gICAgICAgIGZ1bmN0aW9uIHZ0KGUpIHsKLSAgICAgICAgICAgIHZhciB0LAotICAgICAgICAg
ICAgICAgIG4sCi0gICAgICAgICAgICAgICAgciwKLSAgICAgICAgICAgICAgICBvID0gZS5sZW5n
dGgsCi0gICAgICAgICAgICAgICAgYSA9IGkucmVsYXRpdmVbZVswXS50eXBlXSwKLSAgICAgICAg
ICAgICAgICBzID0gYSB8fCBpLnJlbGF0aXZlWyIgIl0sCi0gICAgICAgICAgICAgICAgdSA9IGEg
PyAxIDogMCwKLSAgICAgICAgICAgICAgICBjID0gaHQoZnVuY3Rpb24oZSkgewotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZSA9PT0gdAotICAgICAgICAgICAgICAgIH0sIHMsICEwKSwKLSAg
ICAgICAgICAgICAgICBwID0gaHQoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gTS5jYWxsKHQsIGUpID4gLTEKLSAgICAgICAgICAgICAgICB9LCBzLCAhMCksCi0gICAg
ICAgICAgICAgICAgZiA9IFtmdW5jdGlvbihlLCBuLCByKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiAhYSAmJiAociB8fCBuICE9PSBsKSB8fCAoKHQgPSBuKS5ub2RlVHlwZSA/IGMoZSwg
biwgcikgOiBwKGUsIG4sIHIpKQotICAgICAgICAgICAgICAgIH1dOwotICAgICAgICAgICAgZm9y
ICg7IG8gPiB1OyB1KyspCi0gICAgICAgICAgICAgICAgaWYgKG4gPSBpLnJlbGF0aXZlW2VbdV0u
dHlwZV0pCi0gICAgICAgICAgICAgICAgICAgIGYgPSBbaHQoZ3QoZiksIG4pXTsKLSAgICAgICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBpLmZpbHRlcltlW3Vd
LnR5cGVdLmFwcGx5KG51bGwsIGVbdV0ubWF0Y2hlcyksIG5beF0pIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGZvciAociA9ICsrdTsgbyA+IHI7IHIrKykKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoaS5yZWxhdGl2ZVtlW3JdLnR5cGVdKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB5dCh1ID4g
MSAmJiBndChmKSwgdSA+IDEgJiYgZHQoZS5zbGljZSgwLCB1IC0gMSkpLnJlcGxhY2UoVywgIiQx
IiksIG4sIHIgPiB1ICYmIHZ0KGUuc2xpY2UodSwgcikpLCBvID4gciAmJiB2dChlID0gZS5zbGlj
ZShyKSksIG8gPiByICYmIGR0KGUpKQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIGYucHVzaChuKQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVy
biBndChmKQotICAgICAgICB9Ci0gICAgICAgIGZ1bmN0aW9uIGJ0KGUsIHQpIHsKLSAgICAgICAg
ICAgIHZhciBuID0gMCwKLSAgICAgICAgICAgICAgICBvID0gdC5sZW5ndGggPiAwLAotICAgICAg
ICAgICAgICAgIGEgPSBlLmxlbmd0aCA+IDAsCi0gICAgICAgICAgICAgICAgcyA9IGZ1bmN0aW9u
KHMsIHUsIGMsIGYsIGQpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBnLAotICAgICAgICAgICAgICAgICAgICAgICAgbSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHkgPSBbXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHYgPSAwLAotICAg
ICAgICAgICAgICAgICAgICAgICAgYiA9ICIwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHgg
PSBzICYmIFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgdyA9IG51bGwgIT0gZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIFQgPSBsLAotICAgICAgICAgICAgICAgICAgICAgICAgQyA9IHMg
fHwgYSAmJiBpLmZpbmQuVEFHKCIqIiwgZCAmJiB1LnBhcmVudE5vZGUgfHwgdSksCi0gICAgICAg
ICAgICAgICAgICAgICAgICBrID0gTiArPSBudWxsID09IFQgPyAxIDogTWF0aC5yYW5kb20oKSB8
fCAuMTsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh3ICYmIChsID0gdSAhPT0gcCAmJiB1LCBy
ID0gbik7IG51bGwgIT0gKGggPSBDW2JdKTsgYisrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoYSAmJiBoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IDA7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG0gPSBlW2crK10pCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChtKGgsIHUsIGMpKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmLnB1c2goaCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdyAmJiAoTiA9IGssIHIgPSArK24pCi0gICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBvICYmICgoaCA9ICFtICYmIGgp
ICYmIHYtLSwgcyAmJiB4LnB1c2goaCkpCi0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHYgKz0gYiwgbyAmJiBiICE9PSB2KSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBnID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChtID0gdFtnKytd
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0oeCwgeSwgdSwgYyk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAocykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2
ID4gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGItLSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhbYl0gfHwgeVtiXSB8fCAoeVtiXSA9IEwu
Y2FsbChmKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IG10KHkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBILmFwcGx5KGYsIHkp
LAotICAgICAgICAgICAgICAgICAgICAgICAgdyAmJiAhcyAmJiB5Lmxlbmd0aCA+IDAgJiYgdiAr
IHQubGVuZ3RoID4gMSAmJiBzdC51bmlxdWVTb3J0KGYpCi0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHcgJiYgKE4gPSBrLCBsID0gVCksIHgKLSAgICAg
ICAgICAgICAgICB9OwotICAgICAgICAgICAgcmV0dXJuIG8gPyBvdChzKSA6IHMKLSAgICAgICAg
fQotICAgICAgICBzID0gc3QuY29tcGlsZSA9IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAg
IHZhciBuLAotICAgICAgICAgICAgICAgIHIgPSBbXSwKLSAgICAgICAgICAgICAgICBpID0gW10s
Ci0gICAgICAgICAgICAgICAgbyA9IFNbZSArICIgIl07Ci0gICAgICAgICAgICBpZiAoIW8pIHsK
LSAgICAgICAgICAgICAgICB0IHx8ICh0ID0gZnQoZSkpLAotICAgICAgICAgICAgICAgIG4gPSB0
Lmxlbmd0aDsKLSAgICAgICAgICAgICAgICB3aGlsZSAobi0tKQotICAgICAgICAgICAgICAgICAg
ICBvID0gdnQodFtuXSksCi0gICAgICAgICAgICAgICAgICAgIG9beF0gPyByLnB1c2gobykgOiBp
LnB1c2gobyk7Ci0gICAgICAgICAgICAgICAgbyA9IFMoZSwgYnQoaSwgcikpCi0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICByZXR1cm4gbwotICAgICAgICB9OwotICAgICAgICBmdW5jdGlvbiB4
dChlLCB0LCBuKSB7Ci0gICAgICAgICAgICB2YXIgciA9IDAsCi0gICAgICAgICAgICAgICAgaSA9
IHQubGVuZ3RoOwotICAgICAgICAgICAgZm9yICg7IGkgPiByOyByKyspCi0gICAgICAgICAgICAg
ICAgc3QoZSwgdFtyXSwgbik7Ci0gICAgICAgICAgICByZXR1cm4gbgotICAgICAgICB9Ci0gICAg
ICAgIGZ1bmN0aW9uIHd0KGUsIHQsIG4sIHIpIHsKLSAgICAgICAgICAgIHZhciBvLAotICAgICAg
ICAgICAgICAgIGEsCi0gICAgICAgICAgICAgICAgdSwKLSAgICAgICAgICAgICAgICBsLAotICAg
ICAgICAgICAgICAgIGMsCi0gICAgICAgICAgICAgICAgcCA9IGZ0KGUpOwotICAgICAgICAgICAg
aWYgKCFyICYmIDEgPT09IHAubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGEgPSBwWzBd
ID0gcFswXS5zbGljZSgwKSwgYS5sZW5ndGggPiAyICYmICJJRCIgPT09ICh1ID0gYVswXSkudHlw
ZSAmJiA5ID09PSB0Lm5vZGVUeXBlICYmICFkICYmIGkucmVsYXRpdmVbYVsxXS50eXBlXSkgewot
ICAgICAgICAgICAgICAgICAgICBpZiAodCA9IGkuZmluZC5JRCh1Lm1hdGNoZXNbMF0ucmVwbGFj
ZShldCwgdHQpLCB0KVswXSwgIXQpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbjsK
LSAgICAgICAgICAgICAgICAgICAgZSA9IGUuc2xpY2UoYS5zaGlmdCgpLnZhbHVlLmxlbmd0aCkK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbyA9IFUubmVlZHNDb250ZXh0LnRl
c3QoZSkgPyAwIDogYS5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKG8tLSkgewotICAg
ICAgICAgICAgICAgICAgICBpZiAodSA9IGFbb10sIGkucmVsYXRpdmVbbCA9IHUudHlwZV0pCi0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgaWYgKChj
ID0gaS5maW5kW2xdKSAmJiAociA9IGModS5tYXRjaGVzWzBdLnJlcGxhY2UoZXQsIHR0KSwgVi50
ZXN0KGFbMF0udHlwZSkgJiYgdC5wYXJlbnROb2RlIHx8IHQpKSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGEuc3BsaWNlKG8sIDEpLCBlID0gci5sZW5ndGggJiYgZHQoYSksICFlKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBILmFwcGx5KG4sIHEuY2FsbChyLCAw
KSksIG47Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJu
IHMoZSwgcCkociwgdCwgZCwgbiwgVi50ZXN0KGUpKSwgbgotICAgICAgICB9Ci0gICAgICAgIGku
cHNldWRvcy5udGggPSBpLnBzZXVkb3MuZXE7Ci0gICAgICAgIGZ1bmN0aW9uIFR0KCkge30KLSAg
ICAgICAgaS5maWx0ZXJzID0gVHQucHJvdG90eXBlID0gaS5wc2V1ZG9zLAotICAgICAgICBpLnNl
dEZpbHRlcnMgPSBuZXcgVHQsCi0gICAgICAgIGMoKSwKLSAgICAgICAgc3QuYXR0ciA9IGIuYXR0
ciwKLSAgICAgICAgYi5maW5kID0gc3QsCi0gICAgICAgIGIuZXhwciA9IHN0LnNlbGVjdG9ycywK
LSAgICAgICAgYi5leHByWyI6Il0gPSBiLmV4cHIucHNldWRvcywKLSAgICAgICAgYi51bmlxdWUg
PSBzdC51bmlxdWVTb3J0LAotICAgICAgICBiLnRleHQgPSBzdC5nZXRUZXh0LAotICAgICAgICBi
LmlzWE1MRG9jID0gc3QuaXNYTUwsCi0gICAgICAgIGIuY29udGFpbnMgPSBzdC5jb250YWlucwot
ICAgIH0oZSk7Ci0gICAgdmFyIGF0ID0gL1VudGlsJC8sCi0gICAgICAgIHN0ID0gL14oPzpwYXJl
bnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sCi0gICAgICAgIHV0ID0gL14uW146I1xbXC4sXSokLywK
LSAgICAgICAgbHQgPSBiLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LAotICAgICAgICBjdCA9IHsK
LSAgICAgICAgICAgIGNoaWxkcmVuOiAhMCwKLSAgICAgICAgICAgIGNvbnRlbnRzOiAhMCwKLSAg
ICAgICAgICAgIG5leHQ6ICEwLAotICAgICAgICAgICAgcHJldjogITAKLSAgICAgICAgfTsKLSAg
ICBiLmZuLmV4dGVuZCh7Ci0gICAgICAgIGZpbmQ6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAg
IHZhciB0LAotICAgICAgICAgICAgICAgIG4sCi0gICAgICAgICAgICAgICAgciwKLSAgICAgICAg
ICAgICAgICBpID0gdGhpcy5sZW5ndGg7Ci0gICAgICAgICAgICBpZiAoInN0cmluZyIgIT0gdHlw
ZW9mIGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHIgPSB0aGlzLCB0aGlzLnB1c2hTdGFjayhi
KGUpLmZpbHRlcihmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gMDsg
aSA+IHQ7IHQrKykKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiLmNvbnRhaW5zKHJbdF0s
IHRoaXMpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAotICAgICAgICAg
ICAgICAgIH0pKTsKLSAgICAgICAgICAgIGZvciAobiA9IFtdLCB0ID0gMDsgaSA+IHQ7IHQrKykK
LSAgICAgICAgICAgICAgICBiLmZpbmQoZSwgdGhpc1t0XSwgbik7Ci0gICAgICAgICAgICByZXR1
cm4gbiA9IHRoaXMucHVzaFN0YWNrKGkgPiAxID8gYi51bmlxdWUobikgOiBuKSwgbi5zZWxlY3Rv
ciA9ICh0aGlzLnNlbGVjdG9yID8gdGhpcy5zZWxlY3RvciArICIgIiA6ICIiKSArIGUsIG4KLSAg
ICAgICAgfSwKLSAgICAgICAgaGFzOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICB2YXIgdCwK
LSAgICAgICAgICAgICAgICBuID0gYihlLCB0aGlzKSwKLSAgICAgICAgICAgICAgICByID0gbi5s
ZW5ndGg7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICAgICAgZm9yICh0ID0gMDsgciA+IHQ7IHQrKykKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGIuY29udGFpbnModGhpcywgblt0XSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gITAKLSAgICAgICAgICAgIH0pCi0gICAgICAgIH0sCi0gICAgICAgIG5vdDogZnVuY3Rpb24o
ZSkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKGZ0KHRoaXMsIGUsICExKSkK
LSAgICAgICAgfSwKLSAgICAgICAgZmlsdGVyOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gdGhpcy5wdXNoU3RhY2soZnQodGhpcywgZSwgITApKQotICAgICAgICB9LAotICAgICAg
ICBpczogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgcmV0dXJuICEhZSAmJiAoInN0cmluZyIg
PT0gdHlwZW9mIGUgPyBsdC50ZXN0KGUpID8gYihlLCB0aGlzLmNvbnRleHQpLmluZGV4KHRoaXNb
MF0pID49IDAgOiBiLmZpbHRlcihlLCB0aGlzKS5sZW5ndGggPiAwIDogdGhpcy5maWx0ZXIoZSku
bGVuZ3RoID4gMCkKLSAgICAgICAgfSwKLSAgICAgICAgY2xvc2VzdDogZnVuY3Rpb24oZSwgdCkg
ewotICAgICAgICAgICAgdmFyIG4sCi0gICAgICAgICAgICAgICAgciA9IDAsCi0gICAgICAgICAg
ICAgICAgaSA9IHRoaXMubGVuZ3RoLAotICAgICAgICAgICAgICAgIG8gPSBbXSwKLSAgICAgICAg
ICAgICAgICBhID0gbHQudGVzdChlKSB8fCAic3RyaW5nIiAhPSB0eXBlb2YgZSA/IGIoZSwgdCB8
fCB0aGlzLmNvbnRleHQpIDogMDsKLSAgICAgICAgICAgIGZvciAoOyBpID4gcjsgcisrKSB7Ci0g
ICAgICAgICAgICAgICAgbiA9IHRoaXNbcl07Ci0gICAgICAgICAgICAgICAgd2hpbGUgKG4gJiYg
bi5vd25lckRvY3VtZW50ICYmIG4gIT09IHQgJiYgMTEgIT09IG4ubm9kZVR5cGUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGEgPyBhLmluZGV4KG4pID4gLTEgOiBiLmZpbmQubWF0Y2hlc1Nl
bGVjdG9yKG4sIGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvLnB1c2gobik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIG4gPSBuLnBhcmVudE5vZGUKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soby5sZW5ndGggPiAxID8g
Yi51bmlxdWUobykgOiBvKQotICAgICAgICB9LAotICAgICAgICBpbmRleDogZnVuY3Rpb24oZSkg
ewotICAgICAgICAgICAgcmV0dXJuIGUgPyAic3RyaW5nIiA9PSB0eXBlb2YgZSA/IGIuaW5BcnJh
eSh0aGlzWzBdLCBiKGUpKSA6IGIuaW5BcnJheShlLmpxdWVyeSA/IGVbMF0gOiBlLCB0aGlzKSA6
IHRoaXNbMF0gJiYgdGhpc1swXS5wYXJlbnROb2RlID8gdGhpcy5maXJzdCgpLnByZXZBbGwoKS5s
ZW5ndGggOiAtMQotICAgICAgICB9LAotICAgICAgICBhZGQ6IGZ1bmN0aW9uKGUsIHQpIHsKLSAg
ICAgICAgICAgIHZhciBuID0gInN0cmluZyIgPT0gdHlwZW9mIGUgPyBiKGUsIHQpIDogYi5tYWtl
QXJyYXkoZSAmJiBlLm5vZGVUeXBlID8gW2VdIDogZSksCi0gICAgICAgICAgICAgICAgciA9IGIu
bWVyZ2UodGhpcy5nZXQoKSwgbik7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2so
Yi51bmlxdWUocikpCi0gICAgICAgIH0sCi0gICAgICAgIGFkZEJhY2s6IGZ1bmN0aW9uKGUpIHsK
LSAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZChudWxsID09IGUgPyB0aGlzLnByZXZPYmplY3Qg
OiB0aGlzLnByZXZPYmplY3QuZmlsdGVyKGUpKQotICAgICAgICB9Ci0gICAgfSksCi0gICAgYi5m
bi5hbmRTZWxmID0gYi5mbi5hZGRCYWNrOwotICAgIGZ1bmN0aW9uIHB0KGUsIHQpIHsKLSAgICAg
ICAgZG8gZSA9IGVbdF07Ci0gICAgICAgIHdoaWxlIChlICYmIDEgIT09IGUubm9kZVR5cGUpOwot
ICAgICAgICByZXR1cm4gZQotICAgIH0KLSAgICBiLmVhY2goewotICAgICAgICBwYXJlbnQ6IGZ1
bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHZhciB0ID0gZS5wYXJlbnROb2RlOwotICAgICAgICAg
ICAgcmV0dXJuIHQgJiYgMTEgIT09IHQubm9kZVR5cGUgPyB0IDogbnVsbAotICAgICAgICB9LAot
ICAgICAgICBwYXJlbnRzOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICByZXR1cm4gYi5kaXIo
ZSwgInBhcmVudE5vZGUiKQotICAgICAgICB9LAotICAgICAgICBwYXJlbnRzVW50aWw6IGZ1bmN0
aW9uKGUsIHQsIG4pIHsKLSAgICAgICAgICAgIHJldHVybiBiLmRpcihlLCAicGFyZW50Tm9kZSIs
IG4pCi0gICAgICAgIH0sCi0gICAgICAgIG5leHQ6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAg
IHJldHVybiBwdChlLCAibmV4dFNpYmxpbmciKQotICAgICAgICB9LAotICAgICAgICBwcmV2OiBm
dW5jdGlvbihlKSB7Ci0gICAgICAgICAgICByZXR1cm4gcHQoZSwgInByZXZpb3VzU2libGluZyIp
Ci0gICAgICAgIH0sCi0gICAgICAgIG5leHRBbGw6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAg
IHJldHVybiBiLmRpcihlLCAibmV4dFNpYmxpbmciKQotICAgICAgICB9LAotICAgICAgICBwcmV2
QWxsOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICByZXR1cm4gYi5kaXIoZSwgInByZXZpb3Vz
U2libGluZyIpCi0gICAgICAgIH0sCi0gICAgICAgIG5leHRVbnRpbDogZnVuY3Rpb24oZSwgdCwg
bikgewotICAgICAgICAgICAgcmV0dXJuIGIuZGlyKGUsICJuZXh0U2libGluZyIsIG4pCi0gICAg
ICAgIH0sCi0gICAgICAgIHByZXZVbnRpbDogZnVuY3Rpb24oZSwgdCwgbikgewotICAgICAgICAg
ICAgcmV0dXJuIGIuZGlyKGUsICJwcmV2aW91c1NpYmxpbmciLCBuKQotICAgICAgICB9LAotICAg
ICAgICBzaWJsaW5nczogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgcmV0dXJuIGIuc2libGlu
ZygoZS5wYXJlbnROb2RlIHx8IHt9KS5maXJzdENoaWxkLCBlKQotICAgICAgICB9LAotICAgICAg
ICBjaGlsZHJlbjogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgcmV0dXJuIGIuc2libGluZyhl
LmZpcnN0Q2hpbGQpCi0gICAgICAgIH0sCi0gICAgICAgIGNvbnRlbnRzOiBmdW5jdGlvbihlKSB7
Ci0gICAgICAgICAgICByZXR1cm4gYi5ub2RlTmFtZShlLCAiaWZyYW1lIikgPyBlLmNvbnRlbnRE
b2N1bWVudCB8fCBlLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQgOiBiLm1lcmdlKFtdLCBlLmNoaWxk
Tm9kZXMpCi0gICAgICAgIH0KLSAgICB9LCBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgIGIuZm5b
ZV0gPSBmdW5jdGlvbihuLCByKSB7Ci0gICAgICAgICAgICB2YXIgaSA9IGIubWFwKHRoaXMsIHQs
IG4pOwotICAgICAgICAgICAgcmV0dXJuIGF0LnRlc3QoZSkgfHwgKHIgPSBuKSwgciAmJiAic3Ry
aW5nIiA9PSB0eXBlb2YgciAmJiAoaSA9IGIuZmlsdGVyKHIsIGkpKSwgaSA9IHRoaXMubGVuZ3Ro
ID4gMSAmJiAhY3RbZV0gPyBiLnVuaXF1ZShpKSA6IGksIHRoaXMubGVuZ3RoID4gMSAmJiBzdC50
ZXN0KGUpICYmIChpID0gaS5yZXZlcnNlKCkpLCB0aGlzLnB1c2hTdGFjayhpKQotICAgICAgICB9
Ci0gICAgfSksCi0gICAgYi5leHRlbmQoewotICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKGUsIHQs
IG4pIHsKLSAgICAgICAgICAgIHJldHVybiBuICYmIChlID0gIjpub3QoIiArIGUgKyAiKSIpLCAx
ID09PSB0Lmxlbmd0aCA/IGIuZmluZC5tYXRjaGVzU2VsZWN0b3IodFswXSwgZSkgPyBbdFswXV0g
OiBbXSA6IGIuZmluZC5tYXRjaGVzKGUsIHQpCi0gICAgICAgIH0sCi0gICAgICAgIGRpcjogZnVu
Y3Rpb24oZSwgbiwgcikgewotICAgICAgICAgICAgdmFyIGkgPSBbXSwKLSAgICAgICAgICAgICAg
ICBvID0gZVtuXTsKLSAgICAgICAgICAgIHdoaWxlIChvICYmIDkgIT09IG8ubm9kZVR5cGUgJiYg
KHIgPT09IHQgfHwgMSAhPT0gby5ub2RlVHlwZSB8fCAhYihvKS5pcyhyKSkpCi0gICAgICAgICAg
ICAgICAgMSA9PT0gby5ub2RlVHlwZSAmJiBpLnB1c2gobyksCi0gICAgICAgICAgICAgICAgbyA9
IG9bbl07Ci0gICAgICAgICAgICByZXR1cm4gaQotICAgICAgICB9LAotICAgICAgICBzaWJsaW5n
OiBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICB2YXIgbiA9IFtdOwotICAgICAgICAgICAg
Zm9yICg7IGU7IGUgPSBlLm5leHRTaWJsaW5nKQotICAgICAgICAgICAgICAgIDEgPT09IGUubm9k
ZVR5cGUgJiYgZSAhPT0gdCAmJiBuLnB1c2goZSk7Ci0gICAgICAgICAgICByZXR1cm4gbgotICAg
ICAgICB9Ci0gICAgfSk7Ci0gICAgZnVuY3Rpb24gZnQoZSwgdCwgbikgewotICAgICAgICBpZiAo
dCA9IHQgfHwgMCwgYi5pc0Z1bmN0aW9uKHQpKQotICAgICAgICAgICAgcmV0dXJuIGIuZ3JlcChl
LCBmdW5jdGlvbihlLCByKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGkgPSAhIXQuY2FsbChlLCBy
LCBlKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gbgotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIGlmICh0Lm5vZGVUeXBlKQotICAgICAgICAgICAgcmV0dXJuIGIuZ3JlcChlLCBmdW5j
dGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGUgPT09IHQgPT09IG4KLSAgICAgICAg
ICAgIH0pOwotICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIHQpIHsKLSAgICAgICAgICAg
IHZhciByID0gYi5ncmVwKGUsIGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
MSA9PT0gZS5ub2RlVHlwZQotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBpZiAodXQudGVz
dCh0KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gYi5maWx0ZXIodCwgciwgIW4pOwotICAgICAg
ICAgICAgdCA9IGIuZmlsdGVyKHQsIHIpCi0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGIuZ3Jl
cChlLCBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICByZXR1cm4gYi5pbkFycmF5KGUsIHQpID49
IDAgPT09IG4KLSAgICAgICAgfSkKLSAgICB9Ci0gICAgZnVuY3Rpb24gZHQoZSkgewotICAgICAg
ICB2YXIgdCA9IGh0LnNwbGl0KCJ8IiksCi0gICAgICAgICAgICBuID0gZS5jcmVhdGVEb2N1bWVu
dEZyYWdtZW50KCk7Ci0gICAgICAgIGlmIChuLmNyZWF0ZUVsZW1lbnQpCi0gICAgICAgICAgICB3
aGlsZSAodC5sZW5ndGgpCi0gICAgICAgICAgICAgICAgbi5jcmVhdGVFbGVtZW50KHQucG9wKCkp
OwotICAgICAgICByZXR1cm4gbgotICAgIH0KLSAgICB2YXIgaHQgPSAiYWJicnxhcnRpY2xlfGFz
aWRlfGF1ZGlvfGJkaXxjYW52YXN8ZGF0YXxkYXRhbGlzdHxkZXRhaWxzfGZpZ2NhcHRpb258Zmln
dXJlfGZvb3RlcnxoZWFkZXJ8aGdyb3VwfG1hcmt8bWV0ZXJ8bmF2fG91dHB1dHxwcm9ncmVzc3xz
ZWN0aW9ufHN1bW1hcnl8dGltZXx2aWRlbyIsCi0gICAgICAgIGd0ID0gLyBqUXVlcnlcZCs9Iig/
Om51bGx8XGQrKSIvZywKLSAgICAgICAgbXQgPSBSZWdFeHAoIjwoPzoiICsgaHQgKyAiKVtcXHMv
Pl0iLCAiaSIpLAotICAgICAgICB5dCA9IC9eXHMrLywKLSAgICAgICAgdnQgPSAvPCg/IWFyZWF8
YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbXHc6XSspW14+XSop
XC8+L2dpLAotICAgICAgICBidCA9IC88KFtcdzpdKykvLAotICAgICAgICB4dCA9IC88dGJvZHkv
aSwKLSAgICAgICAgd3QgPSAvPHwmIz9cdys7LywKLSAgICAgICAgVHQgPSAvPCg/OnNjcmlwdHxz
dHlsZXxsaW5rKS9pLAotICAgICAgICBOdCA9IC9eKD86Y2hlY2tib3h8cmFkaW8pJC9pLAotICAg
ICAgICBDdCA9IC9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLAotICAgICAgICBr
dCA9IC9eJHxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaSwKLSAgICAgICAgRXQgPSAvXnRydWVcLygu
KikvLAotICAgICAgICBTdCA9IC9eXHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxz
KiQvZywKLSAgICAgICAgQXQgPSB7Ci0gICAgICAgICAgICBvcHRpb246IFsxLCAiPHNlbGVjdCBt
dWx0aXBsZT0nbXVsdGlwbGUnPiIsICI8L3NlbGVjdD4iXSwKLSAgICAgICAgICAgIGxlZ2VuZDog
WzEsICI8ZmllbGRzZXQ+IiwgIjwvZmllbGRzZXQ+Il0sCi0gICAgICAgICAgICBhcmVhOiBbMSwg
IjxtYXA+IiwgIjwvbWFwPiJdLAotICAgICAgICAgICAgcGFyYW06IFsxLCAiPG9iamVjdD4iLCAi
PC9vYmplY3Q+Il0sCi0gICAgICAgICAgICB0aGVhZDogWzEsICI8dGFibGU+IiwgIjwvdGFibGU+
Il0sCi0gICAgICAgICAgICB0cjogWzIsICI8dGFibGU+PHRib2R5PiIsICI8L3Rib2R5PjwvdGFi
bGU+Il0sCi0gICAgICAgICAgICBjb2w6IFsyLCAiPHRhYmxlPjx0Ym9keT48L3Rib2R5Pjxjb2xn
cm91cD4iLCAiPC9jb2xncm91cD48L3RhYmxlPiJdLAotICAgICAgICAgICAgdGQ6IFszLCAiPHRh
YmxlPjx0Ym9keT48dHI+IiwgIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLAotICAgICAgICAgICAg
X2RlZmF1bHQ6IGIuc3VwcG9ydC5odG1sU2VyaWFsaXplID8gWzAsICIiLCAiIl0gOiBbMSwgIlg8
ZGl2PiIsICI8L2Rpdj4iXQotICAgICAgICB9LAotICAgICAgICBqdCA9IGR0KG8pLAotICAgICAg
ICBEdCA9IGp0LmFwcGVuZENoaWxkKG8uY3JlYXRlRWxlbWVudCgiZGl2IikpOwotICAgIEF0Lm9w
dGdyb3VwID0gQXQub3B0aW9uLAotICAgIEF0LnRib2R5ID0gQXQudGZvb3QgPSBBdC5jb2xncm91
cCA9IEF0LmNhcHRpb24gPSBBdC50aGVhZCwKLSAgICBBdC50aCA9IEF0LnRkLAotICAgIGIuZm4u
ZXh0ZW5kKHsKLSAgICAgICAgdGV4dDogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgcmV0dXJu
IGIuYWNjZXNzKHRoaXMsIGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZSA9
PT0gdCA/IGIudGV4dCh0aGlzKSA6IHRoaXMuZW1wdHkoKS5hcHBlbmQoKHRoaXNbMF0gJiYgdGhp
c1swXS5vd25lckRvY3VtZW50IHx8IG8pLmNyZWF0ZVRleHROb2RlKGUpKQotICAgICAgICAgICAg
fSwgbnVsbCwgZSwgYXJndW1lbnRzLmxlbmd0aCkKLSAgICAgICAgfSwKLSAgICAgICAgd3JhcEFs
bDogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgaWYgKGIuaXNGdW5jdGlvbihlKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgYih0aGlzKS53cmFwQWxsKGUuY2FsbCh0aGlzLCB0KSkKLSAgICAgICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgIGlmICh0aGlzWzBdKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHQgPSBi
KGUsIHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApOwotICAgICAgICAgICAg
ICAgIHRoaXNbMF0ucGFyZW50Tm9kZSAmJiB0Lmluc2VydEJlZm9yZSh0aGlzWzBdKSwKLSAgICAg
ICAgICAgICAgICB0Lm1hcChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGUg
PSB0aGlzOwotICAgICAgICAgICAgICAgICAgICB3aGlsZSAoZS5maXJzdENoaWxkICYmIDEgPT09
IGUuZmlyc3RDaGlsZC5ub2RlVHlwZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBlLmZp
cnN0Q2hpbGQ7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlCi0gICAgICAgICAgICAgICAg
fSkuYXBwZW5kKHRoaXMpCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdGhpcwot
ICAgICAgICB9LAotICAgICAgICB3cmFwSW5uZXI6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAg
IHJldHVybiBiLmlzRnVuY3Rpb24oZSkgPyB0aGlzLmVhY2goZnVuY3Rpb24odCkgewotICAgICAg
ICAgICAgICAgIGIodGhpcykud3JhcElubmVyKGUuY2FsbCh0aGlzLCB0KSkKLSAgICAgICAgICAg
IH0pIDogdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHZhciB0ID0gYih0
aGlzKSwKLSAgICAgICAgICAgICAgICAgICAgbiA9IHQuY29udGVudHMoKTsKLSAgICAgICAgICAg
ICAgICBuLmxlbmd0aCA/IG4ud3JhcEFsbChlKSA6IHQuYXBwZW5kKGUpCi0gICAgICAgICAgICB9
KQotICAgICAgICB9LAotICAgICAgICB3cmFwOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICB2
YXIgdCA9IGIuaXNGdW5jdGlvbihlKTsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVu
Y3Rpb24obikgewotICAgICAgICAgICAgICAgIGIodGhpcykud3JhcEFsbCh0ID8gZS5jYWxsKHRo
aXMsIG4pIDogZSkKLSAgICAgICAgICAgIH0pCi0gICAgICAgIH0sCi0gICAgICAgIHVud3JhcDog
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgICAgIGIubm9kZU5hbWUodGhpcywgImJvZHkiKSB8fCBiKHRo
aXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2RlcykKLSAgICAgICAgICAgIH0pLmVuZCgpCi0g
ICAgICAgIH0sCi0gICAgICAgIGFwcGVuZDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1
cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsICEwLCBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAg
ICAgICAgKDEgPT09IHRoaXMubm9kZVR5cGUgfHwgMTEgPT09IHRoaXMubm9kZVR5cGUgfHwgOSA9
PT0gdGhpcy5ub2RlVHlwZSkgJiYgdGhpcy5hcHBlbmRDaGlsZChlKQotICAgICAgICAgICAgfSkK
LSAgICAgICAgfSwKLSAgICAgICAgcHJlcGVuZDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsICEwLCBmdW5jdGlvbihlKSB7Ci0gICAgICAg
ICAgICAgICAgKDEgPT09IHRoaXMubm9kZVR5cGUgfHwgMTEgPT09IHRoaXMubm9kZVR5cGUgfHwg
OSA9PT0gdGhpcy5ub2RlVHlwZSkgJiYgdGhpcy5pbnNlcnRCZWZvcmUoZSwgdGhpcy5maXJzdENo
aWxkKQotICAgICAgICAgICAgfSkKLSAgICAgICAgfSwKLSAgICAgICAgYmVmb3JlOiBmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywgITEsIGZ1
bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICB0aGlzLnBhcmVudE5vZGUgJiYgdGhpcy5wYXJl
bnROb2RlLmluc2VydEJlZm9yZShlLCB0aGlzKQotICAgICAgICAgICAgfSkKLSAgICAgICAgfSwK
LSAgICAgICAgYWZ0ZXI6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9t
TWFuaXAoYXJndW1lbnRzLCAhMSwgZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgIHRoaXMu
cGFyZW50Tm9kZSAmJiB0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsIHRoaXMubmV4dFNp
YmxpbmcpCi0gICAgICAgICAgICB9KQotICAgICAgICB9LAotICAgICAgICByZW1vdmU6IGZ1bmN0
aW9uKGUsIHQpIHsKLSAgICAgICAgICAgIHZhciBuLAotICAgICAgICAgICAgICAgIHIgPSAwOwot
ICAgICAgICAgICAgZm9yICg7IG51bGwgIT0gKG4gPSB0aGlzW3JdKTsgcisrKQotICAgICAgICAg
ICAgICAgICghZSB8fCBiLmZpbHRlcihlLCBbbl0pLmxlbmd0aCA+IDApICYmICh0IHx8IDEgIT09
IG4ubm9kZVR5cGUgfHwgYi5jbGVhbkRhdGEoT3QobikpLCBuLnBhcmVudE5vZGUgJiYgKHQgJiYg
Yi5jb250YWlucyhuLm93bmVyRG9jdW1lbnQsIG4pICYmIE10KE90KG4sICJzY3JpcHQiKSksIG4u
cGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKSkpOwotICAgICAgICAgICAgcmV0dXJuIHRoaXMKLSAg
ICAgICAgfSwKLSAgICAgICAgZW1wdHk6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdmFyIGUs
Ci0gICAgICAgICAgICAgICAgdCA9IDA7Ci0gICAgICAgICAgICBmb3IgKDsgbnVsbCAhPSAoZSA9
IHRoaXNbdF0pOyB0KyspIHsKLSAgICAgICAgICAgICAgICAxID09PSBlLm5vZGVUeXBlICYmIGIu
Y2xlYW5EYXRhKE90KGUsICExKSk7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGUuZmlyc3RDaGls
ZCkKLSAgICAgICAgICAgICAgICAgICAgZS5yZW1vdmVDaGlsZChlLmZpcnN0Q2hpbGQpOwotICAg
ICAgICAgICAgICAgIGUub3B0aW9ucyAmJiBiLm5vZGVOYW1lKGUsICJzZWxlY3QiKSAmJiAoZS5v
cHRpb25zLmxlbmd0aCA9IDApCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdGhp
cwotICAgICAgICB9LAotICAgICAgICBjbG9uZTogZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAg
ICAgcmV0dXJuIGUgPSBudWxsID09IGUgPyAhMSA6IGUsIHQgPSBudWxsID09IHQgPyBlIDogdCwg
dGhpcy5tYXAoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGIuY2xvbmUodGhp
cywgZSwgdCkKLSAgICAgICAgICAgIH0pCi0gICAgICAgIH0sCi0gICAgICAgIGh0bWw6IGZ1bmN0
aW9uKGUpIHsKLSAgICAgICAgICAgIHJldHVybiBiLmFjY2Vzcyh0aGlzLCBmdW5jdGlvbihlKSB7
Ci0gICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzWzBdIHx8IHt9LAotICAgICAgICAgICAgICAg
ICAgICByID0gMCwKLSAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMubGVuZ3RoOwotICAgICAg
ICAgICAgICAgIGlmIChlID09PSB0KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMSA9PT0g
bi5ub2RlVHlwZSA/IG4uaW5uZXJIVE1MLnJlcGxhY2UoZ3QsICIiKSA6IHQ7Ci0gICAgICAgICAg
ICAgICAgaWYgKCEoInN0cmluZyIgIT0gdHlwZW9mIGUgfHwgVHQudGVzdChlKSB8fCAhYi5zdXBw
b3J0Lmh0bWxTZXJpYWxpemUgJiYgbXQudGVzdChlKSB8fCAhYi5zdXBwb3J0LmxlYWRpbmdXaGl0
ZXNwYWNlICYmIHl0LnRlc3QoZSkgfHwgQXRbKGJ0LmV4ZWMoZSkgfHwgWyIiLCAiIl0pWzFdLnRv
TG93ZXJDYXNlKCldKSkgewotICAgICAgICAgICAgICAgICAgICBlID0gZS5yZXBsYWNlKHZ0LCAi
PCQxPjwvJDI+Iik7Ci0gICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBmb3IgKDsgaSA+IHI7IHIrKykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
ID0gdGhpc1tyXSB8fCB7fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAxID09PSBuLm5v
ZGVUeXBlICYmIChiLmNsZWFuRGF0YShPdChuLCAhMSkpLCBuLmlubmVySFRNTCA9IGUpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbiA9IDAKLSAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAo
bykge30KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbiAmJiB0aGlzLmVtcHR5
KCkuYXBwZW5kKGUpCi0gICAgICAgICAgICB9LCBudWxsLCBlLCBhcmd1bWVudHMubGVuZ3RoKQot
ICAgICAgICB9LAotICAgICAgICByZXBsYWNlV2l0aDogZnVuY3Rpb24oZSkgewotICAgICAgICAg
ICAgdmFyIHQgPSBiLmlzRnVuY3Rpb24oZSk7Ci0gICAgICAgICAgICByZXR1cm4gdCB8fCAic3Ry
aW5nIiA9PSB0eXBlb2YgZSB8fCAoZSA9IGIoZSkubm90KHRoaXMpLmRldGFjaCgpKSwgdGhpcy5k
b21NYW5pcChbZV0sICEwLCBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHQgPSB0
aGlzLm5leHRTaWJsaW5nLAotICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5wYXJlbnROb2Rl
OwotICAgICAgICAgICAgICAgIG4gJiYgKGIodGhpcykucmVtb3ZlKCksIG4uaW5zZXJ0QmVmb3Jl
KGUsIHQpKQotICAgICAgICAgICAgfSkKLSAgICAgICAgfSwKLSAgICAgICAgZGV0YWNoOiBmdW5j
dGlvbihlKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5yZW1vdmUoZSwgITApCi0gICAgICAg
IH0sCi0gICAgICAgIGRvbU1hbmlwOiBmdW5jdGlvbihlLCBuLCByKSB7Ci0gICAgICAgICAgICBl
ID0gZi5hcHBseShbXSwgZSk7Ci0gICAgICAgICAgICB2YXIgaSwKLSAgICAgICAgICAgICAgICBv
LAotICAgICAgICAgICAgICAgIGEsCi0gICAgICAgICAgICAgICAgcywKLSAgICAgICAgICAgICAg
ICB1LAotICAgICAgICAgICAgICAgIGwsCi0gICAgICAgICAgICAgICAgYyA9IDAsCi0gICAgICAg
ICAgICAgICAgcCA9IHRoaXMubGVuZ3RoLAotICAgICAgICAgICAgICAgIGQgPSB0aGlzLAotICAg
ICAgICAgICAgICAgIGggPSBwIC0gMSwKLSAgICAgICAgICAgICAgICBnID0gZVswXSwKLSAgICAg
ICAgICAgICAgICBtID0gYi5pc0Z1bmN0aW9uKGcpOwotICAgICAgICAgICAgaWYgKG0gfHwgISgx
ID49IHAgfHwgInN0cmluZyIgIT0gdHlwZW9mIGcgfHwgYi5zdXBwb3J0LmNoZWNrQ2xvbmUpICYm
IEN0LnRlc3QoZykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBvID0gZC5lcShpKTsKLSAgICAgICAgICAgICAg
ICAgICAgbSAmJiAoZVswXSA9IGcuY2FsbCh0aGlzLCBpLCBuID8gby5odG1sKCkgOiB0KSksCi0g
ICAgICAgICAgICAgICAgICAgIG8uZG9tTWFuaXAoZSwgbiwgcikKLSAgICAgICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgIGlmIChwICYmIChsID0gYi5idWlsZEZyYWdtZW50KGUsIHRoaXNbMF0u
b3duZXJEb2N1bWVudCwgITEsIHRoaXMpLCBpID0gbC5maXJzdENoaWxkLCAxID09PSBsLmNoaWxk
Tm9kZXMubGVuZ3RoICYmIChsID0gaSksIGkpKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChuID0g
biAmJiBiLm5vZGVOYW1lKGksICJ0ciIpLCBzID0gYi5tYXAoT3QobCwgInNjcmlwdCIpLCBIdCks
IGEgPSBzLmxlbmd0aDsgcCA+IGM7IGMrKykKLSAgICAgICAgICAgICAgICAgICAgbyA9IGwsCi0g
ICAgICAgICAgICAgICAgICAgIGMgIT09IGggJiYgKG8gPSBiLmNsb25lKG8sICEwLCAhMCksIGEg
JiYgYi5tZXJnZShzLCBPdChvLCAic2NyaXB0IikpKSwKLSAgICAgICAgICAgICAgICAgICAgci5j
YWxsKG4gJiYgYi5ub2RlTmFtZSh0aGlzW2NdLCAidGFibGUiKSA/IEx0KHRoaXNbY10sICJ0Ym9k
eSIpIDogdGhpc1tjXSwgbywgYyk7Ci0gICAgICAgICAgICAgICAgaWYgKGEpCi0gICAgICAgICAg
ICAgICAgICAgIGZvciAodSA9IHNbcy5sZW5ndGggLSAxXS5vd25lckRvY3VtZW50LCBiLm1hcChz
LCBxdCksIGMgPSAwOyBhID4gYzsgYysrKQotICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHNb
Y10sCi0gICAgICAgICAgICAgICAgICAgICAgICBrdC50ZXN0KG8udHlwZSB8fCAiIikgJiYgIWIu
X2RhdGEobywgImdsb2JhbEV2YWwiKSAmJiBiLmNvbnRhaW5zKHUsIG8pICYmIChvLnNyYyA/IGIu
YWpheCh7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBvLnNyYywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0eXBlOiAiR0VUIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhVHlwZTogInNjcmlwdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5
bmM6ICExLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbDogITEsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInRocm93cyI6ICEwCi0gICAgICAgICAgICAgICAgICAgICAg
ICB9KSA6IGIuZ2xvYmFsRXZhbCgoby50ZXh0IHx8IG8udGV4dENvbnRlbnQgfHwgby5pbm5lckhU
TUwgfHwgIiIpLnJlcGxhY2UoU3QsICIiKSkpOwotICAgICAgICAgICAgICAgIGwgPSBpID0gbnVs
bAotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRoaXMKLSAgICAgICAgfQotICAg
IH0pOwotICAgIGZ1bmN0aW9uIEx0KGUsIHQpIHsKLSAgICAgICAgcmV0dXJuIGUuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUodClbMF0gfHwgZS5hcHBlbmRDaGlsZChlLm93bmVyRG9jdW1lbnQuY3JlYXRl
RWxlbWVudCh0KSkKLSAgICB9Ci0gICAgZnVuY3Rpb24gSHQoZSkgewotICAgICAgICB2YXIgdCA9
IGUuZ2V0QXR0cmlidXRlTm9kZSgidHlwZSIpOwotICAgICAgICByZXR1cm4gZS50eXBlID0gKHQg
JiYgdC5zcGVjaWZpZWQpICsgIi8iICsgZS50eXBlLCBlCi0gICAgfQotICAgIGZ1bmN0aW9uIHF0
KGUpIHsKLSAgICAgICAgdmFyIHQgPSBFdC5leGVjKGUudHlwZSk7Ci0gICAgICAgIHJldHVybiB0
ID8gZS50eXBlID0gdFsxXSA6IGUucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksIGUKLSAgICB9Ci0g
ICAgZnVuY3Rpb24gTXQoZSwgdCkgewotICAgICAgICB2YXIgbiwKLSAgICAgICAgICAgIHIgPSAw
OwotICAgICAgICBmb3IgKDsgbnVsbCAhPSAobiA9IGVbcl0pOyByKyspCi0gICAgICAgICAgICBi
Ll9kYXRhKG4sICJnbG9iYWxFdmFsIiwgIXQgfHwgYi5fZGF0YSh0W3JdLCAiZ2xvYmFsRXZhbCIp
KQotICAgIH0KLSAgICBmdW5jdGlvbiBfdChlLCB0KSB7Ci0gICAgICAgIGlmICgxID09PSB0Lm5v
ZGVUeXBlICYmIGIuaGFzRGF0YShlKSkgewotICAgICAgICAgICAgdmFyIG4sCi0gICAgICAgICAg
ICAgICAgciwKLSAgICAgICAgICAgICAgICBpLAotICAgICAgICAgICAgICAgIG8gPSBiLl9kYXRh
KGUpLAotICAgICAgICAgICAgICAgIGEgPSBiLl9kYXRhKHQsIG8pLAotICAgICAgICAgICAgICAg
IHMgPSBvLmV2ZW50czsKLSAgICAgICAgICAgIGlmIChzKSB7Ci0gICAgICAgICAgICAgICAgZGVs
ZXRlIGEuaGFuZGxlLAotICAgICAgICAgICAgICAgIGEuZXZlbnRzID0ge307Ci0gICAgICAgICAg
ICAgICAgZm9yIChuIGluIHMpCi0gICAgICAgICAgICAgICAgICAgIGZvciAociA9IDAsIGkgPSBz
W25dLmxlbmd0aDsgaSA+IHI7IHIrKykKLSAgICAgICAgICAgICAgICAgICAgICAgIGIuZXZlbnQu
YWRkKHQsIG4sIHNbbl1bcl0pCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBhLmRhdGEgJiYg
KGEuZGF0YSA9IGIuZXh0ZW5kKHt9LCBhLmRhdGEpKQotICAgICAgICB9Ci0gICAgfQotICAgIGZ1
bmN0aW9uIEZ0KGUsIHQpIHsKLSAgICAgICAgdmFyIG4sCi0gICAgICAgICAgICByLAotICAgICAg
ICAgICAgaTsKLSAgICAgICAgaWYgKDEgPT09IHQubm9kZVR5cGUpIHsKLSAgICAgICAgICAgIGlm
IChuID0gdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLCAhYi5zdXBwb3J0Lm5vQ2xvbmVFdmVudCAm
JiB0W2IuZXhwYW5kb10pIHsKLSAgICAgICAgICAgICAgICBpID0gYi5fZGF0YSh0KTsKLSAgICAg
ICAgICAgICAgICBmb3IgKHIgaW4gaS5ldmVudHMpCi0gICAgICAgICAgICAgICAgICAgIGIucmVt
b3ZlRXZlbnQodCwgciwgaS5oYW5kbGUpOwotICAgICAgICAgICAgICAgIHQucmVtb3ZlQXR0cmli
dXRlKGIuZXhwYW5kbykKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICJzY3JpcHQiID09PSBu
ICYmIHQudGV4dCAhPT0gZS50ZXh0ID8gKEh0KHQpLnRleHQgPSBlLnRleHQsIHF0KHQpKSA6ICJv
YmplY3QiID09PSBuID8gKHQucGFyZW50Tm9kZSAmJiAodC5vdXRlckhUTUwgPSBlLm91dGVySFRN
TCksIGIuc3VwcG9ydC5odG1sNUNsb25lICYmIGUuaW5uZXJIVE1MICYmICFiLnRyaW0odC5pbm5l
ckhUTUwpICYmICh0LmlubmVySFRNTCA9IGUuaW5uZXJIVE1MKSkgOiAiaW5wdXQiID09PSBuICYm
IE50LnRlc3QoZS50eXBlKSA/ICh0LmRlZmF1bHRDaGVja2VkID0gdC5jaGVja2VkID0gZS5jaGVj
a2VkLCB0LnZhbHVlICE9PSBlLnZhbHVlICYmICh0LnZhbHVlID0gZS52YWx1ZSkpIDogIm9wdGlv
biIgPT09IG4gPyB0LmRlZmF1bHRTZWxlY3RlZCA9IHQuc2VsZWN0ZWQgPSBlLmRlZmF1bHRTZWxl
Y3RlZCA6ICgiaW5wdXQiID09PSBuIHx8ICJ0ZXh0YXJlYSIgPT09IG4pICYmICh0LmRlZmF1bHRW
YWx1ZSA9IGUuZGVmYXVsdFZhbHVlKQotICAgICAgICB9Ci0gICAgfQotICAgIGIuZWFjaCh7Ci0g
ICAgICAgIGFwcGVuZFRvOiAiYXBwZW5kIiwKLSAgICAgICAgcHJlcGVuZFRvOiAicHJlcGVuZCIs
Ci0gICAgICAgIGluc2VydEJlZm9yZTogImJlZm9yZSIsCi0gICAgICAgIGluc2VydEFmdGVyOiAi
YWZ0ZXIiLAotICAgICAgICByZXBsYWNlQWxsOiAicmVwbGFjZVdpdGgiCi0gICAgfSwgZnVuY3Rp
b24oZSwgdCkgewotICAgICAgICBiLmZuW2VdID0gZnVuY3Rpb24oZSkgewotICAgICAgICAgICAg
dmFyIG4sCi0gICAgICAgICAgICAgICAgciA9IDAsCi0gICAgICAgICAgICAgICAgaSA9IFtdLAot
ICAgICAgICAgICAgICAgIG8gPSBiKGUpLAotICAgICAgICAgICAgICAgIGEgPSBvLmxlbmd0aCAt
IDE7Ci0gICAgICAgICAgICBmb3IgKDsgYSA+PSByOyByKyspCi0gICAgICAgICAgICAgICAgbiA9
IHIgPT09IGEgPyB0aGlzIDogdGhpcy5jbG9uZSghMCksCi0gICAgICAgICAgICAgICAgYihvW3Jd
KVt0XShuKSwKLSAgICAgICAgICAgICAgICBkLmFwcGx5KGksIG4uZ2V0KCkpOwotICAgICAgICAg
ICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKGkpCi0gICAgICAgIH0KLSAgICB9KTsKLSAgICBmdW5j
dGlvbiBPdChlLCBuKSB7Ci0gICAgICAgIHZhciByLAotICAgICAgICAgICAgbywKLSAgICAgICAg
ICAgIGEgPSAwLAotICAgICAgICAgICAgcyA9IHR5cGVvZiBlLmdldEVsZW1lbnRzQnlUYWdOYW1l
ICE9PSBpID8gZS5nZXRFbGVtZW50c0J5VGFnTmFtZShuIHx8ICIqIikgOiB0eXBlb2YgZS5xdWVy
eVNlbGVjdG9yQWxsICE9PSBpID8gZS5xdWVyeVNlbGVjdG9yQWxsKG4gfHwgIioiKSA6IHQ7Ci0g
ICAgICAgIGlmICghcykKLSAgICAgICAgICAgIGZvciAocyA9IFtdLCByID0gZS5jaGlsZE5vZGVz
IHx8IGU7IG51bGwgIT0gKG8gPSByW2FdKTsgYSsrKQotICAgICAgICAgICAgICAgICFuIHx8IGIu
bm9kZU5hbWUobywgbikgPyBzLnB1c2gobykgOiBiLm1lcmdlKHMsIE90KG8sIG4pKTsKLSAgICAg
ICAgcmV0dXJuIG4gPT09IHQgfHwgbiAmJiBiLm5vZGVOYW1lKGUsIG4pID8gYi5tZXJnZShbZV0s
IHMpIDogcwotICAgIH0KLSAgICBmdW5jdGlvbiBCdChlKSB7Ci0gICAgICAgIE50LnRlc3QoZS50
eXBlKSAmJiAoZS5kZWZhdWx0Q2hlY2tlZCA9IGUuY2hlY2tlZCkKLSAgICB9Ci0gICAgYi5leHRl
bmQoewotICAgICAgICBjbG9uZTogZnVuY3Rpb24oZSwgdCwgbikgewotICAgICAgICAgICAgdmFy
IHIsCi0gICAgICAgICAgICAgICAgaSwKLSAgICAgICAgICAgICAgICBvLAotICAgICAgICAgICAg
ICAgIGEsCi0gICAgICAgICAgICAgICAgcywKLSAgICAgICAgICAgICAgICB1ID0gYi5jb250YWlu
cyhlLm93bmVyRG9jdW1lbnQsIGUpOwotICAgICAgICAgICAgaWYgKGIuc3VwcG9ydC5odG1sNUNs
b25lIHx8IGIuaXNYTUxEb2MoZSkgfHwgIW10LnRlc3QoIjwiICsgZS5ub2RlTmFtZSArICI+Iikg
PyBvID0gZS5jbG9uZU5vZGUoITApIDogKER0LmlubmVySFRNTCA9IGUub3V0ZXJIVE1MLCBEdC5y
ZW1vdmVDaGlsZChvID0gRHQuZmlyc3RDaGlsZCkpLCAhKGIuc3VwcG9ydC5ub0Nsb25lRXZlbnQg
JiYgYi5zdXBwb3J0Lm5vQ2xvbmVDaGVja2VkIHx8IDEgIT09IGUubm9kZVR5cGUgJiYgMTEgIT09
IGUubm9kZVR5cGUgfHwgYi5pc1hNTERvYyhlKSkpCi0gICAgICAgICAgICAgICAgZm9yIChyID0g
T3QobyksIHMgPSBPdChlKSwgYSA9IDA7IG51bGwgIT0gKGkgPSBzW2FdKTsgKythKQotICAgICAg
ICAgICAgICAgICAgICByW2FdICYmIEZ0KGksIHJbYV0pOwotICAgICAgICAgICAgaWYgKHQpCi0g
ICAgICAgICAgICAgICAgaWYgKG4pCi0gICAgICAgICAgICAgICAgICAgIGZvciAocyA9IHMgfHwg
T3QoZSksIHIgPSByIHx8IE90KG8pLCBhID0gMDsgbnVsbCAhPSAoaSA9IHNbYV0pOyBhKyspCi0g
ICAgICAgICAgICAgICAgICAgICAgICBfdChpLCByW2FdKTsKLSAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIF90KGUsIG8pOwotICAgICAgICAgICAgcmV0dXJuIHIgPSBP
dChvLCAic2NyaXB0IiksIHIubGVuZ3RoID4gMCAmJiBNdChyLCAhdSAmJiBPdChlLCAic2NyaXB0
IikpLCByID0gcyA9IGkgPSBudWxsLCBvCi0gICAgICAgIH0sCi0gICAgICAgIGJ1aWxkRnJhZ21l
bnQ6IGZ1bmN0aW9uKGUsIHQsIG4sIHIpIHsKLSAgICAgICAgICAgIHZhciBpLAotICAgICAgICAg
ICAgICAgIG8sCi0gICAgICAgICAgICAgICAgYSwKLSAgICAgICAgICAgICAgICBzLAotICAgICAg
ICAgICAgICAgIHUsCi0gICAgICAgICAgICAgICAgbCwKLSAgICAgICAgICAgICAgICBjLAotICAg
ICAgICAgICAgICAgIHAgPSBlLmxlbmd0aCwKLSAgICAgICAgICAgICAgICBmID0gZHQodCksCi0g
ICAgICAgICAgICAgICAgZCA9IFtdLAotICAgICAgICAgICAgICAgIGggPSAwOwotICAgICAgICAg
ICAgZm9yICg7IHAgPiBoOyBoKyspCi0gICAgICAgICAgICAgICAgaWYgKG8gPSBlW2hdLCBvIHx8
IDAgPT09IG8pCi0gICAgICAgICAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PT0gYi50eXBlKG8p
KQotICAgICAgICAgICAgICAgICAgICAgICAgYi5tZXJnZShkLCBvLm5vZGVUeXBlID8gW29dIDog
byk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHd0LnRlc3QobykpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHMgPSBzIHx8IGYuYXBwZW5kQ2hpbGQodC5jcmVhdGVFbGVtZW50KCJk
aXYiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICB1ID0gKGJ0LmV4ZWMobykgfHwgWyIiLCAi
Il0pWzFdLnRvTG93ZXJDYXNlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICBjID0gQXRbdV0g
fHwgQXQuX2RlZmF1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICBzLmlubmVySFRNTCA9IGNb
MV0gKyBvLnJlcGxhY2UodnQsICI8JDE+PC8kMj4iKSArIGNbMl0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICBpID0gY1swXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpLS0pCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHMubGFzdENoaWxkOwotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFiLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2UgJiYgeXQudGVzdChv
KSAmJiBkLnB1c2godC5jcmVhdGVUZXh0Tm9kZSh5dC5leGVjKG8pWzBdKSksICFiLnN1cHBvcnQu
dGJvZHkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gInRhYmxlIiAhPT0gdSB8
fCB4dC50ZXN0KG8pID8gIjx0YWJsZT4iICE9PSBjWzFdIHx8IHh0LnRlc3QobykgPyAwIDogcyA6
IHMuZmlyc3RDaGlsZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbyAmJiBvLmNo
aWxkTm9kZXMubGVuZ3RoOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpLS0p
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIubm9kZU5hbWUobCA9IG8uY2hpbGRO
b2Rlc1tpXSwgInRib2R5IikgJiYgIWwuY2hpbGROb2Rlcy5sZW5ndGggJiYgby5yZW1vdmVDaGls
ZChsKQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
Yi5tZXJnZShkLCBzLmNoaWxkTm9kZXMpLAotICAgICAgICAgICAgICAgICAgICAgICAgcy50ZXh0
Q29udGVudCA9ICIiOwotICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHMuZmlyc3RDaGls
ZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnJlbW92ZUNoaWxkKHMuZmlyc3RDaGls
ZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzID0gZi5sYXN0Q2hpbGQKLSAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2godC5jcmVhdGVU
ZXh0Tm9kZShvKSk7Ci0gICAgICAgICAgICBzICYmIGYucmVtb3ZlQ2hpbGQocyksCi0gICAgICAg
ICAgICBiLnN1cHBvcnQuYXBwZW5kQ2hlY2tlZCB8fCBiLmdyZXAoT3QoZCwgImlucHV0IiksIEJ0
KSwKLSAgICAgICAgICAgIGggPSAwOwotICAgICAgICAgICAgd2hpbGUgKG8gPSBkW2grK10pCi0g
ICAgICAgICAgICAgICAgaWYgKCghciB8fCAtMSA9PT0gYi5pbkFycmF5KG8sIHIpKSAmJiAoYSA9
IGIuY29udGFpbnMoby5vd25lckRvY3VtZW50LCBvKSwgcyA9IE90KGYuYXBwZW5kQ2hpbGQobyks
ICJzY3JpcHQiKSwgYSAmJiBNdChzKSwgbikpIHsKLSAgICAgICAgICAgICAgICAgICAgaSA9IDA7
Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlIChvID0gc1tpKytdKQotICAgICAgICAgICAgICAg
ICAgICAgICAga3QudGVzdChvLnR5cGUgfHwgIiIpICYmIG4ucHVzaChvKQotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHJldHVybiBzID0gbnVsbCwgZgotICAgICAgICB9LAotICAgICAg
ICBjbGVhbkRhdGE6IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgIHZhciBuLAotICAgICAg
ICAgICAgICAgIHIsCi0gICAgICAgICAgICAgICAgbywKLSAgICAgICAgICAgICAgICBhLAotICAg
ICAgICAgICAgICAgIHMgPSAwLAotICAgICAgICAgICAgICAgIHUgPSBiLmV4cGFuZG8sCi0gICAg
ICAgICAgICAgICAgbCA9IGIuY2FjaGUsCi0gICAgICAgICAgICAgICAgcCA9IGIuc3VwcG9ydC5k
ZWxldGVFeHBhbmRvLAotICAgICAgICAgICAgICAgIGYgPSBiLmV2ZW50LnNwZWNpYWw7Ci0gICAg
ICAgICAgICBmb3IgKDsgbnVsbCAhPSAobiA9IGVbc10pOyBzKyspCi0gICAgICAgICAgICAgICAg
aWYgKCh0IHx8IGIuYWNjZXB0RGF0YShuKSkgJiYgKG8gPSBuW3VdLCBhID0gbyAmJiBsW29dKSkg
ewotICAgICAgICAgICAgICAgICAgICBpZiAoYS5ldmVudHMpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBmb3IgKHIgaW4gYS5ldmVudHMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZlty
XSA/IGIuZXZlbnQucmVtb3ZlKG4sIHIpIDogYi5yZW1vdmVFdmVudChuLCByLCBhLmhhbmRsZSk7
Ci0gICAgICAgICAgICAgICAgICAgIGxbb10gJiYgKGRlbGV0ZSBsW29dLCBwID8gZGVsZXRlIG5b
dV0gOiB0eXBlb2Ygbi5yZW1vdmVBdHRyaWJ1dGUgIT09IGkgPyBuLnJlbW92ZUF0dHJpYnV0ZSh1
KSA6IG5bdV0gPSBudWxsLCBjLnB1c2gobykpCi0gICAgICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfSk7Ci0gICAgdmFyIFB0LAotICAgICAgICBSdCwKLSAgICAgICAgV3QsCi0gICAgICAg
ICR0ID0gL2FscGhhXChbXildKlwpL2ksCi0gICAgICAgIEl0ID0gL29wYWNpdHlccyo9XHMqKFte
KV0qKS8sCi0gICAgICAgIHp0ID0gL14odG9wfHJpZ2h0fGJvdHRvbXxsZWZ0KSQvLAotICAgICAg
ICBYdCA9IC9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLywKLSAgICAgICAgVXQgPSAvXm1hcmdp
bi8sCi0gICAgICAgIFZ0ID0gUmVnRXhwKCJeKCIgKyB4ICsgIikoLiopJCIsICJpIiksCi0gICAg
ICAgIFl0ID0gUmVnRXhwKCJeKCIgKyB4ICsgIikoPyFweClbYS16JV0rJCIsICJpIiksCi0gICAg
ICAgIEp0ID0gUmVnRXhwKCJeKFsrLV0pPSgiICsgeCArICIpIiwgImkiKSwKLSAgICAgICAgR3Qg
PSB7Ci0gICAgICAgICAgICBCT0RZOiAiYmxvY2siCi0gICAgICAgIH0sCi0gICAgICAgIFF0ID0g
ewotICAgICAgICAgICAgcG9zaXRpb246ICJhYnNvbHV0ZSIsCi0gICAgICAgICAgICB2aXNpYmls
aXR5OiAiaGlkZGVuIiwKLSAgICAgICAgICAgIGRpc3BsYXk6ICJibG9jayIKLSAgICAgICAgfSwK
LSAgICAgICAgS3QgPSB7Ci0gICAgICAgICAgICBsZXR0ZXJTcGFjaW5nOiAwLAotICAgICAgICAg
ICAgZm9udFdlaWdodDogNDAwCi0gICAgICAgIH0sCi0gICAgICAgIFp0ID0gWyJUb3AiLCAiUmln
aHQiLCAiQm90dG9tIiwgIkxlZnQiXSwKLSAgICAgICAgZW4gPSBbIldlYmtpdCIsICJPIiwgIk1v
eiIsICJtcyJdOwotICAgIGZ1bmN0aW9uIHRuKGUsIHQpIHsKLSAgICAgICAgaWYgKHQgaW4gZSkK
LSAgICAgICAgICAgIHJldHVybiB0OwotICAgICAgICB2YXIgbiA9IHQuY2hhckF0KDApLnRvVXBw
ZXJDYXNlKCkgKyB0LnNsaWNlKDEpLAotICAgICAgICAgICAgciA9IHQsCi0gICAgICAgICAgICBp
ID0gZW4ubGVuZ3RoOwotICAgICAgICB3aGlsZSAoaS0tKQotICAgICAgICAgICAgaWYgKHQgPSBl
bltpXSArIG4sIHQgaW4gZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdDsKLSAgICAgICAgcmV0
dXJuIHIKLSAgICB9Ci0gICAgZnVuY3Rpb24gbm4oZSwgdCkgewotICAgICAgICByZXR1cm4gZSA9
IHQgfHwgZSwgIm5vbmUiID09PSBiLmNzcyhlLCAiZGlzcGxheSIpIHx8ICFiLmNvbnRhaW5zKGUu
b3duZXJEb2N1bWVudCwgZSkKLSAgICB9Ci0gICAgZnVuY3Rpb24gcm4oZSwgdCkgewotICAgICAg
ICB2YXIgbiwKLSAgICAgICAgICAgIHIsCi0gICAgICAgICAgICBpLAotICAgICAgICAgICAgbyA9
IFtdLAotICAgICAgICAgICAgYSA9IDAsCi0gICAgICAgICAgICBzID0gZS5sZW5ndGg7Ci0gICAg
ICAgIGZvciAoOyBzID4gYTsgYSsrKQotICAgICAgICAgICAgciA9IGVbYV0sCi0gICAgICAgICAg
ICByLnN0eWxlICYmIChvW2FdID0gYi5fZGF0YShyLCAib2xkZGlzcGxheSIpLCBuID0gci5zdHls
ZS5kaXNwbGF5LCB0ID8gKG9bYV0gfHwgIm5vbmUiICE9PSBuIHx8IChyLnN0eWxlLmRpc3BsYXkg
PSAiIiksICIiID09PSByLnN0eWxlLmRpc3BsYXkgJiYgbm4ocikgJiYgKG9bYV0gPSBiLl9kYXRh
KHIsICJvbGRkaXNwbGF5IiwgdW4oci5ub2RlTmFtZSkpKSkgOiBvW2FdIHx8IChpID0gbm4ociks
IChuICYmICJub25lIiAhPT0gbiB8fCAhaSkgJiYgYi5fZGF0YShyLCAib2xkZGlzcGxheSIsIGkg
PyBuIDogYi5jc3MociwgImRpc3BsYXkiKSkpKTsKLSAgICAgICAgZm9yIChhID0gMDsgcyA+IGE7
IGErKykKLSAgICAgICAgICAgIHIgPSBlW2FdLAotICAgICAgICAgICAgci5zdHlsZSAmJiAodCAm
JiAibm9uZSIgIT09IHIuc3R5bGUuZGlzcGxheSAmJiAiIiAhPT0gci5zdHlsZS5kaXNwbGF5IHx8
IChyLnN0eWxlLmRpc3BsYXkgPSB0ID8gb1thXSB8fCAiIiA6ICJub25lIikpOwotICAgICAgICBy
ZXR1cm4gZQotICAgIH0KLSAgICBiLmZuLmV4dGVuZCh7Ci0gICAgICAgIGNzczogZnVuY3Rpb24o
ZSwgbikgewotICAgICAgICAgICAgcmV0dXJuIGIuYWNjZXNzKHRoaXMsIGZ1bmN0aW9uKGUsIG4s
IHIpIHsKLSAgICAgICAgICAgICAgICB2YXIgaSwKLSAgICAgICAgICAgICAgICAgICAgbywKLSAg
ICAgICAgICAgICAgICAgICAgYSA9IHt9LAotICAgICAgICAgICAgICAgICAgICBzID0gMDsKLSAg
ICAgICAgICAgICAgICBpZiAoYi5pc0FycmF5KG4pKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZv
ciAobyA9IFJ0KGUpLCBpID0gbi5sZW5ndGg7IGkgPiBzOyBzKyspCi0gICAgICAgICAgICAgICAg
ICAgICAgICBhW25bc11dID0gYi5jc3MoZSwgbltzXSwgITEsIG8pOwotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gYQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4g
ciAhPT0gdCA/IGIuc3R5bGUoZSwgbiwgcikgOiBiLmNzcyhlLCBuKQotICAgICAgICAgICAgfSwg
ZSwgbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEpCi0gICAgICAgIH0sCi0gICAgICAgIHNob3c6IGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJuIHJuKHRoaXMsICEwKQotICAgICAgICB9LAot
ICAgICAgICBoaWRlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiBybih0aGlzKQot
ICAgICAgICB9LAotICAgICAgICB0b2dnbGU6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHZh
ciB0ID0gImJvb2xlYW4iID09IHR5cGVvZiBlOwotICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFj
aChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAodCA/IGUgOiBubih0aGlzKSkgPyBiKHRo
aXMpLnNob3coKSA6IGIodGhpcykuaGlkZSgpCi0gICAgICAgICAgICB9KQotICAgICAgICB9Ci0g
ICAgfSksCi0gICAgYi5leHRlbmQoewotICAgICAgICBjc3NIb29rczogewotICAgICAgICAgICAg
b3BhY2l0eTogewotICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oZSwgdCkgewotICAgICAg
ICAgICAgICAgICAgICBpZiAodCkgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBX
dChlLCAib3BhY2l0eSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICIiID09PSBu
ID8gIjEiIDogbgotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICBjc3NOdW1iZXI6IHsKLSAgICAgICAgICAg
IGNvbHVtbkNvdW50OiAhMCwKLSAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAhMCwKLSAgICAgICAg
ICAgIGZvbnRXZWlnaHQ6ICEwLAotICAgICAgICAgICAgbGluZUhlaWdodDogITAsCi0gICAgICAg
ICAgICBvcGFjaXR5OiAhMCwKLSAgICAgICAgICAgIG9ycGhhbnM6ICEwLAotICAgICAgICAgICAg
d2lkb3dzOiAhMCwKLSAgICAgICAgICAgIHpJbmRleDogITAsCi0gICAgICAgICAgICB6b29tOiAh
MAotICAgICAgICB9LAotICAgICAgICBjc3NQcm9wczogewotICAgICAgICAgICAgImZsb2F0Ijog
Yi5zdXBwb3J0LmNzc0Zsb2F0ID8gImNzc0Zsb2F0IiA6ICJzdHlsZUZsb2F0IgotICAgICAgICB9
LAotICAgICAgICBzdHlsZTogZnVuY3Rpb24oZSwgbiwgciwgaSkgewotICAgICAgICAgICAgaWYg
KGUgJiYgMyAhPT0gZS5ub2RlVHlwZSAmJiA4ICE9PSBlLm5vZGVUeXBlICYmIGUuc3R5bGUpIHsK
LSAgICAgICAgICAgICAgICB2YXIgbywKLSAgICAgICAgICAgICAgICAgICAgYSwKLSAgICAgICAg
ICAgICAgICAgICAgcywKLSAgICAgICAgICAgICAgICAgICAgdSA9IGIuY2FtZWxDYXNlKG4pLAot
ICAgICAgICAgICAgICAgICAgICBsID0gZS5zdHlsZTsKLSAgICAgICAgICAgICAgICBpZiAobiA9
IGIuY3NzUHJvcHNbdV0gfHwgKGIuY3NzUHJvcHNbdV0gPSB0bihsLCB1KSksIHMgPSBiLmNzc0hv
b2tzW25dIHx8IGIuY3NzSG9va3NbdV0sIHIgPT09IHQpCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBzICYmICJnZXQiIGluIHMgJiYgKG8gPSBzLmdldChlLCAhMSwgaSkpICE9PSB0ID8gbyA6
IGxbbl07Ci0gICAgICAgICAgICAgICAgaWYgKGEgPSB0eXBlb2YgciwgInN0cmluZyIgPT09IGEg
JiYgKG8gPSBKdC5leGVjKHIpKSAmJiAociA9IChvWzFdICsgMSkgKiBvWzJdICsgcGFyc2VGbG9h
dChiLmNzcyhlLCBuKSksIGEgPSAibnVtYmVyIiksICEobnVsbCA9PSByIHx8ICJudW1iZXIiID09
PSBhICYmIGlzTmFOKHIpIHx8ICgibnVtYmVyIiAhPT0gYSB8fCBiLmNzc051bWJlclt1XSB8fCAo
ciArPSAicHgiKSwgYi5zdXBwb3J0LmNsZWFyQ2xvbmVTdHlsZSB8fCAiIiAhPT0gciB8fCAwICE9
PSBuLmluZGV4T2YoImJhY2tncm91bmQiKSB8fCAobFtuXSA9ICJpbmhlcml0IiksIHMgJiYgInNl
dCIgaW4gcyAmJiAociA9IHMuc2V0KGUsIHIsIGkpKSA9PT0gdCkpKQotICAgICAgICAgICAgICAg
ICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgbFtuXSA9IHIKLSAgICAgICAgICAg
ICAgICAgICAgfSBjYXRjaCAoYykge30KLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAg
ICAgY3NzOiBmdW5jdGlvbihlLCBuLCByLCBpKSB7Ci0gICAgICAgICAgICB2YXIgbywKLSAgICAg
ICAgICAgICAgICBhLAotICAgICAgICAgICAgICAgIHMsCi0gICAgICAgICAgICAgICAgdSA9IGIu
Y2FtZWxDYXNlKG4pOwotICAgICAgICAgICAgcmV0dXJuIG4gPSBiLmNzc1Byb3BzW3VdIHx8IChi
LmNzc1Byb3BzW3VdID0gdG4oZS5zdHlsZSwgdSkpLCBzID0gYi5jc3NIb29rc1tuXSB8fCBiLmNz
c0hvb2tzW3VdLCBzICYmICJnZXQiIGluIHMgJiYgKGEgPSBzLmdldChlLCAhMCwgcikpLCBhID09
PSB0ICYmIChhID0gV3QoZSwgbiwgaSkpLCAibm9ybWFsIiA9PT0gYSAmJiBuIGluIEt0ICYmIChh
ID0gS3Rbbl0pLCAiIiA9PT0gciB8fCByID8gKG8gPSBwYXJzZUZsb2F0KGEpLCByID09PSAhMCB8
fCBiLmlzTnVtZXJpYyhvKSA/IG8gfHwgMCA6IGEpIDogYQotICAgICAgICB9LAotICAgICAgICBz
d2FwOiBmdW5jdGlvbihlLCB0LCBuLCByKSB7Ci0gICAgICAgICAgICB2YXIgaSwKLSAgICAgICAg
ICAgICAgICBvLAotICAgICAgICAgICAgICAgIGEgPSB7fTsKLSAgICAgICAgICAgIGZvciAobyBp
biB0KQotICAgICAgICAgICAgICAgIGFbb10gPSBlLnN0eWxlW29dLAotICAgICAgICAgICAgICAg
IGUuc3R5bGVbb10gPSB0W29dOwotICAgICAgICAgICAgaSA9IG4uYXBwbHkoZSwgciB8fCBbXSk7
Ci0gICAgICAgICAgICBmb3IgKG8gaW4gdCkKLSAgICAgICAgICAgICAgICBlLnN0eWxlW29dID0g
YVtvXTsKLSAgICAgICAgICAgIHJldHVybiBpCi0gICAgICAgIH0KLSAgICB9KSwKLSAgICBlLmdl
dENvbXB1dGVkU3R5bGUgPyAoUnQgPSBmdW5jdGlvbih0KSB7Ci0gICAgICAgIHJldHVybiBlLmdl
dENvbXB1dGVkU3R5bGUodCwgbnVsbCkKLSAgICB9LCBXdCA9IGZ1bmN0aW9uKGUsIG4sIHIpIHsK
LSAgICAgICAgdmFyIGksCi0gICAgICAgICAgICBvLAotICAgICAgICAgICAgYSwKLSAgICAgICAg
ICAgIHMgPSByIHx8IFJ0KGUpLAotICAgICAgICAgICAgdSA9IHMgPyBzLmdldFByb3BlcnR5VmFs
dWUobikgfHwgc1tuXSA6IHQsCi0gICAgICAgICAgICBsID0gZS5zdHlsZTsKLSAgICAgICAgcmV0
dXJuIHMgJiYgKCIiICE9PSB1IHx8IGIuY29udGFpbnMoZS5vd25lckRvY3VtZW50LCBlKSB8fCAo
dSA9IGIuc3R5bGUoZSwgbikpLCBZdC50ZXN0KHUpICYmIFV0LnRlc3QobikgJiYgKGkgPSBsLndp
ZHRoLCBvID0gbC5taW5XaWR0aCwgYSA9IGwubWF4V2lkdGgsIGwubWluV2lkdGggPSBsLm1heFdp
ZHRoID0gbC53aWR0aCA9IHUsIHUgPSBzLndpZHRoLCBsLndpZHRoID0gaSwgbC5taW5XaWR0aCA9
IG8sIGwubWF4V2lkdGggPSBhKSksIHUKLSAgICB9KSA6IG8uZG9jdW1lbnRFbGVtZW50LmN1cnJl
bnRTdHlsZSAmJiAoUnQgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgIHJldHVybiBlLmN1cnJlbnRT
dHlsZQotICAgIH0sIFd0ID0gZnVuY3Rpb24oZSwgbiwgcikgewotICAgICAgICB2YXIgaSwKLSAg
ICAgICAgICAgIG8sCi0gICAgICAgICAgICBhLAotICAgICAgICAgICAgcyA9IHIgfHwgUnQoZSks
Ci0gICAgICAgICAgICB1ID0gcyA/IHNbbl0gOiB0LAotICAgICAgICAgICAgbCA9IGUuc3R5bGU7
Ci0gICAgICAgIHJldHVybiBudWxsID09IHUgJiYgbCAmJiBsW25dICYmICh1ID0gbFtuXSksIFl0
LnRlc3QodSkgJiYgIXp0LnRlc3QobikgJiYgKGkgPSBsLmxlZnQsIG8gPSBlLnJ1bnRpbWVTdHls
ZSwgYSA9IG8gJiYgby5sZWZ0LCBhICYmIChvLmxlZnQgPSBlLmN1cnJlbnRTdHlsZS5sZWZ0KSwg
bC5sZWZ0ID0gImZvbnRTaXplIiA9PT0gbiA/ICIxZW0iIDogdSwgdSA9IGwucGl4ZWxMZWZ0ICsg
InB4IiwgbC5sZWZ0ID0gaSwgYSAmJiAoby5sZWZ0ID0gYSkpLCAiIiA9PT0gdSA/ICJhdXRvIiA6
IHUKLSAgICB9KTsKLSAgICBmdW5jdGlvbiBvbihlLCB0LCBuKSB7Ci0gICAgICAgIHZhciByID0g
VnQuZXhlYyh0KTsKLSAgICAgICAgcmV0dXJuIHIgPyBNYXRoLm1heCgwLCByWzFdIC0gKG4gfHwg
MCkpICsgKHJbMl0gfHwgInB4IikgOiB0Ci0gICAgfQotICAgIGZ1bmN0aW9uIGFuKGUsIHQsIG4s
IHIsIGkpIHsKLSAgICAgICAgdmFyIG8gPSBuID09PSAociA/ICJib3JkZXIiIDogImNvbnRlbnQi
KSA/IDQgOiAid2lkdGgiID09PSB0ID8gMSA6IDAsCi0gICAgICAgICAgICBhID0gMDsKLSAgICAg
ICAgZm9yICg7IDQgPiBvOyBvICs9IDIpCi0gICAgICAgICAgICAibWFyZ2luIiA9PT0gbiAmJiAo
YSArPSBiLmNzcyhlLCBuICsgWnRbb10sICEwLCBpKSksCi0gICAgICAgICAgICByID8gKCJjb250
ZW50IiA9PT0gbiAmJiAoYSAtPSBiLmNzcyhlLCAicGFkZGluZyIgKyBadFtvXSwgITAsIGkpKSwg
Im1hcmdpbiIgIT09IG4gJiYgKGEgLT0gYi5jc3MoZSwgImJvcmRlciIgKyBadFtvXSArICJXaWR0
aCIsICEwLCBpKSkpIDogKGEgKz0gYi5jc3MoZSwgInBhZGRpbmciICsgWnRbb10sICEwLCBpKSwg
InBhZGRpbmciICE9PSBuICYmIChhICs9IGIuY3NzKGUsICJib3JkZXIiICsgWnRbb10gKyAiV2lk
dGgiLCAhMCwgaSkpKTsKLSAgICAgICAgcmV0dXJuIGEKLSAgICB9Ci0gICAgZnVuY3Rpb24gc24o
ZSwgdCwgbikgewotICAgICAgICB2YXIgciA9ICEwLAotICAgICAgICAgICAgaSA9ICJ3aWR0aCIg
PT09IHQgPyBlLm9mZnNldFdpZHRoIDogZS5vZmZzZXRIZWlnaHQsCi0gICAgICAgICAgICBvID0g
UnQoZSksCi0gICAgICAgICAgICBhID0gYi5zdXBwb3J0LmJveFNpemluZyAmJiAiYm9yZGVyLWJv
eCIgPT09IGIuY3NzKGUsICJib3hTaXppbmciLCAhMSwgbyk7Ci0gICAgICAgIGlmICgwID49IGkg
fHwgbnVsbCA9PSBpKSB7Ci0gICAgICAgICAgICBpZiAoaSA9IFd0KGUsIHQsIG8pLCAoMCA+IGkg
fHwgbnVsbCA9PSBpKSAmJiAoaSA9IGUuc3R5bGVbdF0pLCBZdC50ZXN0KGkpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBpOwotICAgICAgICAgICAgciA9IGEgJiYgKGIuc3VwcG9ydC5ib3hTaXpp
bmdSZWxpYWJsZSB8fCBpID09PSBlLnN0eWxlW3RdKSwKLSAgICAgICAgICAgIGkgPSBwYXJzZUZs
b2F0KGkpIHx8IDAKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gaSArIGFuKGUsIHQsIG4gfHwg
KGEgPyAiYm9yZGVyIiA6ICJjb250ZW50IiksIHIsIG8pICsgInB4IgotICAgIH0KLSAgICBmdW5j
dGlvbiB1bihlKSB7Ci0gICAgICAgIHZhciB0ID0gbywKLSAgICAgICAgICAgIG4gPSBHdFtlXTsK
LSAgICAgICAgcmV0dXJuIG4gfHwgKG4gPSBsbihlLCB0KSwgIm5vbmUiICE9PSBuICYmIG4gfHwg
KFB0ID0gKFB0IHx8IGIoIjxpZnJhbWUgZnJhbWVib3JkZXI9JzAnIHdpZHRoPScwJyBoZWlnaHQ9
JzAnLz4iKS5jc3MoImNzc1RleHQiLCAiZGlzcGxheTpibG9jayAhaW1wb3J0YW50IikpLmFwcGVu
ZFRvKHQuZG9jdW1lbnRFbGVtZW50KSwgdCA9IChQdFswXS5jb250ZW50V2luZG93IHx8IFB0WzBd
LmNvbnRlbnREb2N1bWVudCkuZG9jdW1lbnQsIHQud3JpdGUoIjwhZG9jdHlwZSBodG1sPjxodG1s
Pjxib2R5PiIpLCB0LmNsb3NlKCksIG4gPSBsbihlLCB0KSwgUHQuZGV0YWNoKCkpLCBHdFtlXSA9
IG4pLCBuCi0gICAgfQotICAgIGZ1bmN0aW9uIGxuKGUsIHQpIHsKLSAgICAgICAgdmFyIG4gPSBi
KHQuY3JlYXRlRWxlbWVudChlKSkuYXBwZW5kVG8odC5ib2R5KSwKLSAgICAgICAgICAgIHIgPSBi
LmNzcyhuWzBdLCAiZGlzcGxheSIpOwotICAgICAgICByZXR1cm4gbi5yZW1vdmUoKSwgcgotICAg
IH0KLSAgICBiLmVhY2goWyJoZWlnaHQiLCAid2lkdGgiXSwgZnVuY3Rpb24oZSwgbikgewotICAg
ICAgICBiLmNzc0hvb2tzW25dID0gewotICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbihlLCByLCBp
KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHIgPyAwID09PSBlLm9mZnNldFdpZHRoICYmIFh0
LnRlc3QoYi5jc3MoZSwgImRpc3BsYXkiKSkgPyBiLnN3YXAoZSwgUXQsIGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gc24oZSwgbiwgaSkKLSAgICAgICAgICAgICAgICB9
KSA6IHNuKGUsIG4sIGkpIDogdAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHNldDogZnVu
Y3Rpb24oZSwgdCwgcikgewotICAgICAgICAgICAgICAgIHZhciBpID0gciAmJiBSdChlKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gb24oZSwgdCwgciA/IGFuKGUsIG4sIHIsIGIuc3VwcG9ydC5i
b3hTaXppbmcgJiYgImJvcmRlci1ib3giID09PSBiLmNzcyhlLCAiYm94U2l6aW5nIiwgITEsIGkp
LCBpKSA6IDApCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9KSwKLSAgICBiLnN1cHBv
cnQub3BhY2l0eSB8fCAoYi5jc3NIb29rcy5vcGFjaXR5ID0gewotICAgICAgICBnZXQ6IGZ1bmN0
aW9uKGUsIHQpIHsKLSAgICAgICAgICAgIHJldHVybiBJdC50ZXN0KCh0ICYmIGUuY3VycmVudFN0
eWxlID8gZS5jdXJyZW50U3R5bGUuZmlsdGVyIDogZS5zdHlsZS5maWx0ZXIpIHx8ICIiKSA/IC4w
MSAqIHBhcnNlRmxvYXQoUmVnRXhwLiQxKSArICIiIDogdCA/ICIxIiA6ICIiCi0gICAgICAgIH0s
Ci0gICAgICAgIHNldDogZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAgdmFyIG4gPSBlLnN0
eWxlLAotICAgICAgICAgICAgICAgIHIgPSBlLmN1cnJlbnRTdHlsZSwKLSAgICAgICAgICAgICAg
ICBpID0gYi5pc051bWVyaWModCkgPyAiYWxwaGEob3BhY2l0eT0iICsgMTAwICogdCArICIpIiA6
ICIiLAotICAgICAgICAgICAgICAgIG8gPSByICYmIHIuZmlsdGVyIHx8IG4uZmlsdGVyIHx8ICIi
OwotICAgICAgICAgICAgbi56b29tID0gMSwKLSAgICAgICAgICAgICh0ID49IDEgfHwgIiIgPT09
IHQpICYmICIiID09PSBiLnRyaW0oby5yZXBsYWNlKCR0LCAiIikpICYmIG4ucmVtb3ZlQXR0cmli
dXRlICYmIChuLnJlbW92ZUF0dHJpYnV0ZSgiZmlsdGVyIiksICIiID09PSB0IHx8IHIgJiYgIXIu
ZmlsdGVyKSB8fCAobi5maWx0ZXIgPSAkdC50ZXN0KG8pID8gby5yZXBsYWNlKCR0LCBpKSA6IG8g
KyAiICIgKyBpKQotICAgICAgICB9Ci0gICAgfSksCi0gICAgYihmdW5jdGlvbigpIHsKLSAgICAg
ICAgYi5zdXBwb3J0LnJlbGlhYmxlTWFyZ2luUmlnaHQgfHwgKGIuY3NzSG9va3MubWFyZ2luUmln
aHQgPSB7Ci0gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUsIG4pIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbiA/IGIuc3dhcChlLCB7Ci0gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICJp
bmxpbmUtYmxvY2siCi0gICAgICAgICAgICAgICAgfSwgV3QsIFtlLCAibWFyZ2luUmlnaHQiXSkg
OiB0Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pLAotICAgICAgICAhYi5zdXBwb3J0LnBpeGVs
UG9zaXRpb24gJiYgYi5mbi5wb3NpdGlvbiAmJiBiLmVhY2goWyJ0b3AiLCAibGVmdCJdLCBmdW5j
dGlvbihlLCBuKSB7Ci0gICAgICAgICAgICBiLmNzc0hvb2tzW25dID0gewotICAgICAgICAgICAg
ICAgIGdldDogZnVuY3Rpb24oZSwgcikgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gciA/
IChyID0gV3QoZSwgbiksIFl0LnRlc3QocikgPyBiKGUpLnBvc2l0aW9uKClbbl0gKyAicHgiIDog
cikgOiB0Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9KQotICAg
IH0pLAotICAgIGIuZXhwciAmJiBiLmV4cHIuZmlsdGVycyAmJiAoYi5leHByLmZpbHRlcnMuaGlk
ZGVuID0gZnVuY3Rpb24oZSkgewotICAgICAgICByZXR1cm4gMCA+PSBlLm9mZnNldFdpZHRoICYm
IDAgPj0gZS5vZmZzZXRIZWlnaHQgfHwgIWIuc3VwcG9ydC5yZWxpYWJsZUhpZGRlbk9mZnNldHMg
JiYgIm5vbmUiID09PSAoZS5zdHlsZSAmJiBlLnN0eWxlLmRpc3BsYXkgfHwgYi5jc3MoZSwgImRp
c3BsYXkiKSkKLSAgICB9LCBiLmV4cHIuZmlsdGVycy52aXNpYmxlID0gZnVuY3Rpb24oZSkgewot
ICAgICAgICByZXR1cm4gIWIuZXhwci5maWx0ZXJzLmhpZGRlbihlKQotICAgIH0pLAotICAgIGIu
ZWFjaCh7Ci0gICAgICAgIG1hcmdpbjogIiIsCi0gICAgICAgIHBhZGRpbmc6ICIiLAotICAgICAg
ICBib3JkZXI6ICJXaWR0aCIKLSAgICB9LCBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgIGIuY3Nz
SG9va3NbZSArIHRdID0gewotICAgICAgICAgICAgZXhwYW5kOiBmdW5jdGlvbihuKSB7Ci0gICAg
ICAgICAgICAgICAgdmFyIHIgPSAwLAotICAgICAgICAgICAgICAgICAgICBpID0ge30sCi0gICAg
ICAgICAgICAgICAgICAgIG8gPSAic3RyaW5nIiA9PSB0eXBlb2YgbiA/IG4uc3BsaXQoIiAiKSA6
IFtuXTsKLSAgICAgICAgICAgICAgICBmb3IgKDsgNCA+IHI7IHIrKykKLSAgICAgICAgICAgICAg
ICAgICAgaVtlICsgWnRbcl0gKyB0XSA9IG9bcl0gfHwgb1tyIC0gMl0gfHwgb1swXTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gaQotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICBV
dC50ZXN0KGUpIHx8IChiLmNzc0hvb2tzW2UgKyB0XS5zZXQgPSBvbikKLSAgICB9KTsKLSAgICB2
YXIgY24gPSAvJTIwL2csCi0gICAgICAgIHBuID0gL1xbXF0kLywKLSAgICAgICAgZm4gPSAvXHI/
XG4vZywKLSAgICAgICAgZG4gPSAvXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkk
L2ksCi0gICAgICAgIGhuID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pOwot
ICAgIGIuZm4uZXh0ZW5kKHsKLSAgICAgICAgc2VyaWFsaXplOiBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIHJldHVybiBiLnBhcmFtKHRoaXMuc2VyaWFsaXplQXJyYXkoKSkKLSAgICAgICAgfSwK
LSAgICAgICAgc2VyaWFsaXplQXJyYXk6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJu
IHRoaXMubWFwKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHZhciBlID0gYi5wcm9wKHRo
aXMsICJlbGVtZW50cyIpOwotICAgICAgICAgICAgICAgIHJldHVybiBlID8gYi5tYWtlQXJyYXko
ZSkgOiB0aGlzCi0gICAgICAgICAgICB9KS5maWx0ZXIoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICAgICAgdmFyIGUgPSB0aGlzLnR5cGU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubmFt
ZSAmJiAhYih0aGlzKS5pcygiOmRpc2FibGVkIikgJiYgaG4udGVzdCh0aGlzLm5vZGVOYW1lKSAm
JiAhZG4udGVzdChlKSAmJiAodGhpcy5jaGVja2VkIHx8ICFOdC50ZXN0KGUpKQotICAgICAgICAg
ICAgfSkubWFwKGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgICAgICB2YXIgbiA9IGIodGhp
cykudmFsKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gbiA/IG51bGwgOiBiLmlz
QXJyYXkobikgPyBiLm1hcChuLCBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB0Lm5hbWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICB2YWx1ZTogZS5yZXBsYWNlKGZuLCAiXHJcbiIpCi0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KSA6IHsKLSAgICAgICAgICAgICAgICAgICAgbmFt
ZTogdC5uYW1lLAotICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbi5yZXBsYWNlKGZuLCAiXHJc
biIpCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSkuZ2V0KCkKLSAgICAgICAgfQot
ICAgIH0pLAotICAgIGIucGFyYW0gPSBmdW5jdGlvbihlLCBuKSB7Ci0gICAgICAgIHZhciByLAot
ICAgICAgICAgICAgaSA9IFtdLAotICAgICAgICAgICAgbyA9IGZ1bmN0aW9uKGUsIHQpIHsKLSAg
ICAgICAgICAgICAgICB0ID0gYi5pc0Z1bmN0aW9uKHQpID8gdCgpIDogbnVsbCA9PSB0ID8gIiIg
OiB0LAotICAgICAgICAgICAgICAgIGlbaS5sZW5ndGhdID0gZW5jb2RlVVJJQ29tcG9uZW50KGUp
ICsgIj0iICsgZW5jb2RlVVJJQ29tcG9uZW50KHQpCi0gICAgICAgICAgICB9OwotICAgICAgICBp
ZiAobiA9PT0gdCAmJiAobiA9IGIuYWpheFNldHRpbmdzICYmIGIuYWpheFNldHRpbmdzLnRyYWRp
dGlvbmFsKSwgYi5pc0FycmF5KGUpIHx8IGUuanF1ZXJ5ICYmICFiLmlzUGxhaW5PYmplY3QoZSkp
Ci0gICAgICAgICAgICBiLmVhY2goZSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgbyh0
aGlzLm5hbWUsIHRoaXMudmFsdWUpCi0gICAgICAgICAgICB9KTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgZm9yIChyIGluIGUpCi0gICAgICAgICAgICAgICAgZ24ociwgZVtyXSwgbiwgbyk7
Ci0gICAgICAgIHJldHVybiBpLmpvaW4oIiYiKS5yZXBsYWNlKGNuLCAiKyIpCi0gICAgfTsKLSAg
ICBmdW5jdGlvbiBnbihlLCB0LCBuLCByKSB7Ci0gICAgICAgIHZhciBpOwotICAgICAgICBpZiAo
Yi5pc0FycmF5KHQpKQotICAgICAgICAgICAgYi5lYWNoKHQsIGZ1bmN0aW9uKHQsIGkpIHsKLSAg
ICAgICAgICAgICAgICBuIHx8IHBuLnRlc3QoZSkgPyByKGUsIGkpIDogZ24oZSArICJbIiArICgi
b2JqZWN0IiA9PSB0eXBlb2YgaSA/IHQgOiAiIikgKyAiXSIsIGksIG4sIHIpCi0gICAgICAgICAg
ICB9KTsKLSAgICAgICAgZWxzZSBpZiAobiB8fCAib2JqZWN0IiAhPT0gYi50eXBlKHQpKQotICAg
ICAgICAgICAgcihlLCB0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZm9yIChpIGluIHQp
Ci0gICAgICAgICAgICAgICAgZ24oZSArICJbIiArIGkgKyAiXSIsIHRbaV0sIG4sIHIpCi0gICAg
fQotICAgIGIuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNj
cm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1v
dXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJt
aXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSwg
ZnVuY3Rpb24oZSwgdCkgewotICAgICAgICBiLmZuW3RdID0gZnVuY3Rpb24oZSwgbikgewotICAg
ICAgICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAwID8gdGhpcy5vbih0LCBudWxsLCBl
LCBuKSA6IHRoaXMudHJpZ2dlcih0KQotICAgICAgICB9Ci0gICAgfSksCi0gICAgYi5mbi5ob3Zl
ciA9IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubW91c2VlbnRlcihlKS5t
b3VzZWxlYXZlKHQgfHwgZSkKLSAgICB9OwotICAgIHZhciBtbiwKLSAgICAgICAgeW4sCi0gICAg
ICAgIHZuID0gYi5ub3coKSwKLSAgICAgICAgYm4gPSAvXD8vLAotICAgICAgICB4biA9IC8jLiok
LywKLSAgICAgICAgd24gPSAvKFs/Jl0pXz1bXiZdKi8sCi0gICAgICAgIFRuID0gL14oLio/KTpb
IFx0XSooW15cclxuXSopXHI/JC9nbSwKLSAgICAgICAgTm4gPSAvXig/OmFib3V0fGFwcHxhcHAt
c3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLywKLSAgICAgICAgQ24gPSAv
Xig/OkdFVHxIRUFEKSQvLAotICAgICAgICBrbiA9IC9eXC9cLy8sCi0gICAgICAgIEVuID0gL14o
W1x3ListXSs6KSg/OlwvXC8oW15cLz8jOl0qKSg/OjooXGQrKXwpfCkvLAotICAgICAgICBTbiA9
IGIuZm4ubG9hZCwKLSAgICAgICAgQW4gPSB7fSwKLSAgICAgICAgam4gPSB7fSwKLSAgICAgICAg
RG4gPSAiKi8iLmNvbmNhdCgiKiIpOwotICAgIHRyeSB7Ci0gICAgICAgIHluID0gYS5ocmVmCi0g
ICAgfSBjYXRjaCAoTG4pIHsKLSAgICAgICAgeW4gPSBvLmNyZWF0ZUVsZW1lbnQoImEiKSwKLSAg
ICAgICAgeW4uaHJlZiA9ICIiLAotICAgICAgICB5biA9IHluLmhyZWYKLSAgICB9Ci0gICAgbW4g
PSBFbi5leGVjKHluLnRvTG93ZXJDYXNlKCkpIHx8IFtdOwotICAgIGZ1bmN0aW9uIEhuKGUpIHsK
LSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIG4pIHsKLSAgICAgICAgICAgICJzdHJpbmciICE9
IHR5cGVvZiB0ICYmIChuID0gdCwgdCA9ICIqIik7Ci0gICAgICAgICAgICB2YXIgciwKLSAgICAg
ICAgICAgICAgICBpID0gMCwKLSAgICAgICAgICAgICAgICBvID0gdC50b0xvd2VyQ2FzZSgpLm1h
dGNoKHcpIHx8IFtdOwotICAgICAgICAgICAgaWYgKGIuaXNGdW5jdGlvbihuKSkKLSAgICAgICAg
ICAgICAgICB3aGlsZSAociA9IG9baSsrXSkKLSAgICAgICAgICAgICAgICAgICAgIisiID09PSBy
WzBdID8gKHIgPSByLnNsaWNlKDEpIHx8ICIqIiwgKGVbcl0gPSBlW3JdIHx8IFtdKS51bnNoaWZ0
KG4pKSA6IChlW3JdID0gZVtyXSB8fCBbXSkucHVzaChuKQotICAgICAgICB9Ci0gICAgfQotICAg
IGZ1bmN0aW9uIHFuKGUsIG4sIHIsIGkpIHsKLSAgICAgICAgdmFyIG8gPSB7fSwKLSAgICAgICAg
ICAgIGEgPSBlID09PSBqbjsKLSAgICAgICAgZnVuY3Rpb24gcyh1KSB7Ci0gICAgICAgICAgICB2
YXIgbDsKLSAgICAgICAgICAgIHJldHVybiBvW3VdID0gITAsIGIuZWFjaChlW3VdIHx8IFtdLCBm
dW5jdGlvbihlLCB1KSB7Ci0gICAgICAgICAgICAgICAgdmFyIGMgPSB1KG4sIHIsIGkpOwotICAg
ICAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiAhPSB0eXBlb2YgYyB8fCBhIHx8IG9bY10gPyBh
ID8gIShsID0gYykgOiB0IDogKG4uZGF0YVR5cGVzLnVuc2hpZnQoYyksIHMoYyksICExKQotICAg
ICAgICAgICAgfSksIGwKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcyhuLmRhdGFUeXBlc1sw
XSkgfHwgIW9bIioiXSAmJiBzKCIqIikKLSAgICB9Ci0gICAgZnVuY3Rpb24gTW4oZSwgbikgewot
ICAgICAgICB2YXIgciwKLSAgICAgICAgICAgIGksCi0gICAgICAgICAgICBvID0gYi5hamF4U2V0
dGluZ3MuZmxhdE9wdGlvbnMgfHwge307Ci0gICAgICAgIGZvciAoaSBpbiBuKQotICAgICAgICAg
ICAgbltpXSAhPT0gdCAmJiAoKG9baV0gPyBlIDogciB8fCAociA9IHt9KSlbaV0gPSBuW2ldKTsK
LSAgICAgICAgcmV0dXJuIHIgJiYgYi5leHRlbmQoITAsIGUsIHIpLCBlCi0gICAgfQotICAgIGIu
Zm4ubG9hZCA9IGZ1bmN0aW9uKGUsIG4sIHIpIHsKLSAgICAgICAgaWYgKCJzdHJpbmciICE9IHR5
cGVvZiBlICYmIFNuKQotICAgICAgICAgICAgcmV0dXJuIFNuLmFwcGx5KHRoaXMsIGFyZ3VtZW50
cyk7Ci0gICAgICAgIHZhciBpLAotICAgICAgICAgICAgbywKLSAgICAgICAgICAgIGEsCi0gICAg
ICAgICAgICBzID0gdGhpcywKLSAgICAgICAgICAgIHUgPSBlLmluZGV4T2YoIiAiKTsKLSAgICAg
ICAgcmV0dXJuIHUgPj0gMCAmJiAoaSA9IGUuc2xpY2UodSwgZS5sZW5ndGgpLCBlID0gZS5zbGlj
ZSgwLCB1KSksIGIuaXNGdW5jdGlvbihuKSA/IChyID0gbiwgbiA9IHQpIDogbiAmJiAib2JqZWN0
IiA9PSB0eXBlb2YgbiAmJiAoYSA9ICJQT1NUIiksIHMubGVuZ3RoID4gMCAmJiBiLmFqYXgoewot
ICAgICAgICAgICAgdXJsOiBlLAotICAgICAgICAgICAgdHlwZTogYSwKLSAgICAgICAgICAgIGRh
dGFUeXBlOiAiaHRtbCIsCi0gICAgICAgICAgICBkYXRhOiBuCi0gICAgICAgIH0pLmRvbmUoZnVu
Y3Rpb24oZSkgewotICAgICAgICAgICAgbyA9IGFyZ3VtZW50cywKLSAgICAgICAgICAgIHMuaHRt
bChpID8gYigiPGRpdj4iKS5hcHBlbmQoYi5wYXJzZUhUTUwoZSkpLmZpbmQoaSkgOiBlKQotICAg
ICAgICB9KS5jb21wbGV0ZShyICYmIGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgIHMuZWFj
aChyLCBvIHx8IFtlLnJlc3BvbnNlVGV4dCwgdCwgZV0pCi0gICAgICAgIH0pLCB0aGlzCi0gICAg
fSwKLSAgICBiLmVhY2goWyJhamF4U3RhcnQiLCAiYWpheFN0b3AiLCAiYWpheENvbXBsZXRlIiwg
ImFqYXhFcnJvciIsICJhamF4U3VjY2VzcyIsICJhamF4U2VuZCJdLCBmdW5jdGlvbihlLCB0KSB7
Ci0gICAgICAgIGIuZm5bdF0gPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhp
cy5vbih0LCBlKQotICAgICAgICB9Ci0gICAgfSksCi0gICAgYi5lYWNoKFsiZ2V0IiwgInBvc3Qi
XSwgZnVuY3Rpb24oZSwgbikgewotICAgICAgICBiW25dID0gZnVuY3Rpb24oZSwgciwgaSwgbykg
ewotICAgICAgICAgICAgcmV0dXJuIGIuaXNGdW5jdGlvbihyKSAmJiAobyA9IG8gfHwgaSwgaSA9
IHIsIHIgPSB0KSwgYi5hamF4KHsKLSAgICAgICAgICAgICAgICB1cmw6IGUsCi0gICAgICAgICAg
ICAgICAgdHlwZTogbiwKLSAgICAgICAgICAgICAgICBkYXRhVHlwZTogbywKLSAgICAgICAgICAg
ICAgICBkYXRhOiByLAotICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGkKLSAgICAgICAgICAgIH0p
Ci0gICAgICAgIH0KLSAgICB9KSwKLSAgICBiLmV4dGVuZCh7Ci0gICAgICAgIGFjdGl2ZTogMCwK
LSAgICAgICAgbGFzdE1vZGlmaWVkOiB7fSwKLSAgICAgICAgZXRhZzoge30sCi0gICAgICAgIGFq
YXhTZXR0aW5nczogewotICAgICAgICAgICAgdXJsOiB5biwKLSAgICAgICAgICAgIHR5cGU6ICJH
RVQiLAotICAgICAgICAgICAgaXNMb2NhbDogTm4udGVzdChtblsxXSksCi0gICAgICAgICAgICBn
bG9iYWw6ICEwLAotICAgICAgICAgICAgcHJvY2Vzc0RhdGE6ICEwLAotICAgICAgICAgICAgYXN5
bmM6ICEwLAotICAgICAgICAgICAgY29udGVudFR5cGU6ICJhcHBsaWNhdGlvbi94LXd3dy1mb3Jt
LXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiLAotICAgICAgICAgICAgYWNjZXB0czogewotICAg
ICAgICAgICAgICAgICIqIjogRG4sCi0gICAgICAgICAgICAgICAgdGV4dDogInRleHQvcGxhaW4i
LAotICAgICAgICAgICAgICAgIGh0bWw6ICJ0ZXh0L2h0bWwiLAotICAgICAgICAgICAgICAgIHht
bDogImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLAotICAgICAgICAgICAgICAgIGpzb246ICJh
cHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHQiCi0gICAgICAgICAgICB9LAotICAgICAg
ICAgICAgY29udGVudHM6IHsKLSAgICAgICAgICAgICAgICB4bWw6IC94bWwvLAotICAgICAgICAg
ICAgICAgIGh0bWw6IC9odG1sLywKLSAgICAgICAgICAgICAgICBqc29uOiAvanNvbi8KLSAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICByZXNwb25zZUZpZWxkczogewotICAgICAgICAgICAgICAg
IHhtbDogInJlc3BvbnNlWE1MIiwKLSAgICAgICAgICAgICAgICB0ZXh0OiAicmVzcG9uc2VUZXh0
IgotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGNvbnZlcnRlcnM6IHsKLSAgICAgICAgICAg
ICAgICAiKiB0ZXh0IjogZS5TdHJpbmcsCi0gICAgICAgICAgICAgICAgInRleHQgaHRtbCI6ICEw
LAotICAgICAgICAgICAgICAgICJ0ZXh0IGpzb24iOiBiLnBhcnNlSlNPTiwKLSAgICAgICAgICAg
ICAgICAidGV4dCB4bWwiOiBiLnBhcnNlWE1MCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAg
ZmxhdE9wdGlvbnM6IHsKLSAgICAgICAgICAgICAgICB1cmw6ICEwLAotICAgICAgICAgICAgICAg
IGNvbnRleHQ6ICEwCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgIGFqYXhTZXR1
cDogZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAgcmV0dXJuIHQgPyBNbihNbihlLCBiLmFq
YXhTZXR0aW5ncyksIHQpIDogTW4oYi5hamF4U2V0dGluZ3MsIGUpCi0gICAgICAgIH0sCi0gICAg
ICAgIGFqYXhQcmVmaWx0ZXI6IEhuKEFuKSwKLSAgICAgICAgYWpheFRyYW5zcG9ydDogSG4oam4p
LAotICAgICAgICBhamF4OiBmdW5jdGlvbihlLCBuKSB7Ci0gICAgICAgICAgICAib2JqZWN0IiA9
PSB0eXBlb2YgZSAmJiAobiA9IGUsIGUgPSB0KSwKLSAgICAgICAgICAgIG4gPSBuIHx8IHt9Owot
ICAgICAgICAgICAgdmFyIHIsCi0gICAgICAgICAgICAgICAgaSwKLSAgICAgICAgICAgICAgICBv
LAotICAgICAgICAgICAgICAgIGEsCi0gICAgICAgICAgICAgICAgcywKLSAgICAgICAgICAgICAg
ICB1LAotICAgICAgICAgICAgICAgIGwsCi0gICAgICAgICAgICAgICAgYywKLSAgICAgICAgICAg
ICAgICBwID0gYi5hamF4U2V0dXAoe30sIG4pLAotICAgICAgICAgICAgICAgIGYgPSBwLmNvbnRl
eHQgfHwgcCwKLSAgICAgICAgICAgICAgICBkID0gcC5jb250ZXh0ICYmIChmLm5vZGVUeXBlIHx8
IGYuanF1ZXJ5KSA/IGIoZikgOiBiLmV2ZW50LAotICAgICAgICAgICAgICAgIGggPSBiLkRlZmVy
cmVkKCksCi0gICAgICAgICAgICAgICAgZyA9IGIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLAot
ICAgICAgICAgICAgICAgIG0gPSBwLnN0YXR1c0NvZGUgfHwge30sCi0gICAgICAgICAgICAgICAg
eSA9IHt9LAotICAgICAgICAgICAgICAgIHYgPSB7fSwKLSAgICAgICAgICAgICAgICB4ID0gMCwK
LSAgICAgICAgICAgICAgICBUID0gImNhbmNlbGVkIiwKLSAgICAgICAgICAgICAgICBOID0gewot
ICAgICAgICAgICAgICAgICAgICByZWFkeVN0YXRlOiAwLAotICAgICAgICAgICAgICAgICAgICBn
ZXRSZXNwb25zZUhlYWRlcjogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoMiA9PT0geCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghYykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjID0ge307Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0ID0g
VG4uZXhlYyhhKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbdFsxXS50
b0xvd2VyQ2FzZSgpXSA9IHRbMl0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGNbZS50b0xvd2VyQ2FzZSgpXQotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0g
dCA/IG51bGwgOiB0Ci0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAg
IGdldEFsbFJlc3BvbnNlSGVhZGVyczogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gMiA9PT0geCA/IGEgOiBudWxsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgIHNldFJlcXVlc3RIZWFkZXI6IGZ1bmN0aW9uKGUsIHQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS50b0xvd2VyQ2FzZSgpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHggfHwgKGUgPSB2W25dID0gdltuXSB8fCBlLCB5W2VdID0g
dCksIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgb3Zl
cnJpZGVNaW1lVHlwZTogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHggfHwgKHAubWltZVR5cGUgPSBlKSwgdGhpcwotICAgICAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgICAgICBzdGF0dXNDb2RlOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgdDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgyID4geCkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yICh0IGluIGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtW3RdID0gW21bdF0sIGVbdF1dOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTi5hbHdheXMoZVtOLnN0YXR1c10p
OwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMKLSAgICAgICAgICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgICAgICAgICAgYWJvcnQ6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciB0ID0gZSB8fCBUOwotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGwgJiYgbC5hYm9ydCh0KSwgaygwLCB0KSwgdGhpcwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGlmIChoLnByb21pc2UoTikuY29t
cGxldGUgPSBnLmFkZCwgTi5zdWNjZXNzID0gTi5kb25lLCBOLmVycm9yID0gTi5mYWlsLCBwLnVy
bCA9ICgoZSB8fCBwLnVybCB8fCB5bikgKyAiIikucmVwbGFjZSh4biwgIiIpLnJlcGxhY2Uoa24s
IG1uWzFdICsgIi8vIiksIHAudHlwZSA9IG4ubWV0aG9kIHx8IG4udHlwZSB8fCBwLm1ldGhvZCB8
fCBwLnR5cGUsIHAuZGF0YVR5cGVzID0gYi50cmltKHAuZGF0YVR5cGUgfHwgIioiKS50b0xvd2Vy
Q2FzZSgpLm1hdGNoKHcpIHx8IFsiIl0sIG51bGwgPT0gcC5jcm9zc0RvbWFpbiAmJiAociA9IEVu
LmV4ZWMocC51cmwudG9Mb3dlckNhc2UoKSksIHAuY3Jvc3NEb21haW4gPSAhKCFyIHx8IHJbMV0g
PT09IG1uWzFdICYmIHJbMl0gPT09IG1uWzJdICYmIChyWzNdIHx8ICgiaHR0cDoiID09PSByWzFd
ID8gODAgOiA0NDMpKSA9PSAobW5bM10gfHwgKCJodHRwOiIgPT09IG1uWzFdID8gODAgOiA0NDMp
KSkpLCBwLmRhdGEgJiYgcC5wcm9jZXNzRGF0YSAmJiAic3RyaW5nIiAhPSB0eXBlb2YgcC5kYXRh
ICYmIChwLmRhdGEgPSBiLnBhcmFtKHAuZGF0YSwgcC50cmFkaXRpb25hbCkpLCBxbihBbiwgcCwg
biwgTiksIDIgPT09IHgpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE47Ci0gICAgICAgICAgICB1
ID0gcC5nbG9iYWwsCi0gICAgICAgICAgICB1ICYmIDAgPT09IGIuYWN0aXZlKysgJiYgYi5ldmVu
dC50cmlnZ2VyKCJhamF4U3RhcnQiKSwKLSAgICAgICAgICAgIHAudHlwZSA9IHAudHlwZS50b1Vw
cGVyQ2FzZSgpLAotICAgICAgICAgICAgcC5oYXNDb250ZW50ID0gIUNuLnRlc3QocC50eXBlKSwK
LSAgICAgICAgICAgIG8gPSBwLnVybCwKLSAgICAgICAgICAgIHAuaGFzQ29udGVudCB8fCAocC5k
YXRhICYmIChvID0gcC51cmwgKz0gKGJuLnRlc3QobykgPyAiJiIgOiAiPyIpICsgcC5kYXRhLCBk
ZWxldGUgcC5kYXRhKSwgcC5jYWNoZSA9PT0gITEgJiYgKHAudXJsID0gd24udGVzdChvKSA/IG8u
cmVwbGFjZSh3biwgIiQxXz0iICsgdm4rKykgOiBvICsgKGJuLnRlc3QobykgPyAiJiIgOiAiPyIp
ICsgIl89IiArIHZuKyspKSwKLSAgICAgICAgICAgIHAuaWZNb2RpZmllZCAmJiAoYi5sYXN0TW9k
aWZpZWRbb10gJiYgTi5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsIGIubGFz
dE1vZGlmaWVkW29dKSwgYi5ldGFnW29dICYmIE4uc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1N
YXRjaCIsIGIuZXRhZ1tvXSkpLAotICAgICAgICAgICAgKHAuZGF0YSAmJiBwLmhhc0NvbnRlbnQg
JiYgcC5jb250ZW50VHlwZSAhPT0gITEgfHwgbi5jb250ZW50VHlwZSkgJiYgTi5zZXRSZXF1ZXN0
SGVhZGVyKCJDb250ZW50LVR5cGUiLCBwLmNvbnRlbnRUeXBlKSwKLSAgICAgICAgICAgIE4uc2V0
UmVxdWVzdEhlYWRlcigiQWNjZXB0IiwgcC5kYXRhVHlwZXNbMF0gJiYgcC5hY2NlcHRzW3AuZGF0
YVR5cGVzWzBdXSA/IHAuYWNjZXB0c1twLmRhdGFUeXBlc1swXV0gKyAoIioiICE9PSBwLmRhdGFU
eXBlc1swXSA/ICIsICIgKyBEbiArICI7IHE9MC4wMSIgOiAiIikgOiBwLmFjY2VwdHNbIioiXSk7
Ci0gICAgICAgICAgICBmb3IgKGkgaW4gcC5oZWFkZXJzKQotICAgICAgICAgICAgICAgIE4uc2V0
UmVxdWVzdEhlYWRlcihpLCBwLmhlYWRlcnNbaV0pOwotICAgICAgICAgICAgaWYgKHAuYmVmb3Jl
U2VuZCAmJiAocC5iZWZvcmVTZW5kLmNhbGwoZiwgTiwgcCkgPT09ICExIHx8IDIgPT09IHgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBOLmFib3J0KCk7Ci0gICAgICAgICAgICBUID0gImFib3J0
IjsKLSAgICAgICAgICAgIGZvciAoaSBpbiB7Ci0gICAgICAgICAgICAgICAgc3VjY2VzczogMSwK
LSAgICAgICAgICAgICAgICBlcnJvcjogMSwKLSAgICAgICAgICAgICAgICBjb21wbGV0ZTogMQot
ICAgICAgICAgICAgfSkKLSAgICAgICAgICAgICAgICBOW2ldKHBbaV0pOwotICAgICAgICAgICAg
aWYgKGwgPSBxbihqbiwgcCwgbiwgTikpIHsKLSAgICAgICAgICAgICAgICBOLnJlYWR5U3RhdGUg
PSAxLAotICAgICAgICAgICAgICAgIHUgJiYgZC50cmlnZ2VyKCJhamF4U2VuZCIsIFtOLCBwXSks
Ci0gICAgICAgICAgICAgICAgcC5hc3luYyAmJiBwLnRpbWVvdXQgPiAwICYmIChzID0gc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgTi5hYm9ydCgidGltZW91dCIp
Ci0gICAgICAgICAgICAgICAgfSwgcC50aW1lb3V0KSk7Ci0gICAgICAgICAgICAgICAgdHJ5IHsK
LSAgICAgICAgICAgICAgICAgICAgeCA9IDEsCi0gICAgICAgICAgICAgICAgICAgIGwuc2VuZCh5
LCBrKQotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEMpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKCEoMiA+IHgpKQotICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgQzsKLSAgICAgICAg
ICAgICAgICAgICAgaygtMSwgQykKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICBrKC0xLCAiTm8gVHJhbnNwb3J0Iik7Ci0gICAgICAgICAgICBm
dW5jdGlvbiBrKGUsIG4sIHIsIGkpIHsKLSAgICAgICAgICAgICAgICB2YXIgYywKLSAgICAgICAg
ICAgICAgICAgICAgeSwKLSAgICAgICAgICAgICAgICAgICAgdiwKLSAgICAgICAgICAgICAgICAg
ICAgdywKLSAgICAgICAgICAgICAgICAgICAgVCwKLSAgICAgICAgICAgICAgICAgICAgQyA9IG47
Ci0gICAgICAgICAgICAgICAgMiAhPT0geCAmJiAoeCA9IDIsIHMgJiYgY2xlYXJUaW1lb3V0KHMp
LCBsID0gdCwgYSA9IGkgfHwgIiIsIE4ucmVhZHlTdGF0ZSA9IGUgPiAwID8gNCA6IDAsIHIgJiYg
KHcgPSBfbihwLCBOLCByKSksIGUgPj0gMjAwICYmIDMwMCA+IGUgfHwgMzA0ID09PSBlID8gKHAu
aWZNb2RpZmllZCAmJiAoVCA9IE4uZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSwg
VCAmJiAoYi5sYXN0TW9kaWZpZWRbb10gPSBUKSwgVCA9IE4uZ2V0UmVzcG9uc2VIZWFkZXIoImV0
YWciKSwgVCAmJiAoYi5ldGFnW29dID0gVCkpLCAyMDQgPT09IGUgPyAoYyA9ICEwLCBDID0gIm5v
Y29udGVudCIpIDogMzA0ID09PSBlID8gKGMgPSAhMCwgQyA9ICJub3Rtb2RpZmllZCIpIDogKGMg
PSBGbihwLCB3KSwgQyA9IGMuc3RhdGUsIHkgPSBjLmRhdGEsIHYgPSBjLmVycm9yLCBjID0gIXYp
KSA6ICh2ID0gQywgKGUgfHwgIUMpICYmIChDID0gImVycm9yIiwgMCA+IGUgJiYgKGUgPSAwKSkp
LCBOLnN0YXR1cyA9IGUsIE4uc3RhdHVzVGV4dCA9IChuIHx8IEMpICsgIiIsIGMgPyBoLnJlc29s
dmVXaXRoKGYsIFt5LCBDLCBOXSkgOiBoLnJlamVjdFdpdGgoZiwgW04sIEMsIHZdKSwgTi5zdGF0
dXNDb2RlKG0pLCBtID0gdCwgdSAmJiBkLnRyaWdnZXIoYyA/ICJhamF4U3VjY2VzcyIgOiAiYWph
eEVycm9yIiwgW04sIHAsIGMgPyB5IDogdl0pLCBnLmZpcmVXaXRoKGYsIFtOLCBDXSksIHUgJiYg
KGQudHJpZ2dlcigiYWpheENvbXBsZXRlIiwgW04sIHBdKSwgLS1iLmFjdGl2ZSB8fCBiLmV2ZW50
LnRyaWdnZXIoImFqYXhTdG9wIikpKQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJu
IE4KLSAgICAgICAgfSwKLSAgICAgICAgZ2V0U2NyaXB0OiBmdW5jdGlvbihlLCBuKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gYi5nZXQoZSwgdCwgbiwgInNjcmlwdCIpCi0gICAgICAgIH0sCi0gICAg
ICAgIGdldEpTT046IGZ1bmN0aW9uKGUsIHQsIG4pIHsKLSAgICAgICAgICAgIHJldHVybiBiLmdl
dChlLCB0LCBuLCAianNvbiIpCi0gICAgICAgIH0KLSAgICB9KTsKLSAgICBmdW5jdGlvbiBfbihl
LCBuLCByKSB7Ci0gICAgICAgIHZhciBpLAotICAgICAgICAgICAgbywKLSAgICAgICAgICAgIGEs
Ci0gICAgICAgICAgICBzLAotICAgICAgICAgICAgdSA9IGUuY29udGVudHMsCi0gICAgICAgICAg
ICBsID0gZS5kYXRhVHlwZXMsCi0gICAgICAgICAgICBjID0gZS5yZXNwb25zZUZpZWxkczsKLSAg
ICAgICAgZm9yIChzIGluIGMpCi0gICAgICAgICAgICBzIGluIHIgJiYgKG5bY1tzXV0gPSByW3Nd
KTsKLSAgICAgICAgd2hpbGUgKCIqIiA9PT0gbFswXSkKLSAgICAgICAgICAgIGwuc2hpZnQoKSwK
LSAgICAgICAgICAgIG8gPT09IHQgJiYgKG8gPSBlLm1pbWVUeXBlIHx8IG4uZ2V0UmVzcG9uc2VI
ZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTsKLSAgICAgICAgaWYgKG8pCi0gICAgICAgICAgICBmb3Ig
KHMgaW4gdSkKLSAgICAgICAgICAgICAgICBpZiAodVtzXSAmJiB1W3NdLnRlc3QobykpIHsKLSAg
ICAgICAgICAgICAgICAgICAgbC51bnNoaWZ0KHMpOwotICAgICAgICAgICAgICAgICAgICBicmVh
awotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgaWYgKGxbMF0gaW4gcikKLSAgICAgICAgICAg
IGEgPSBsWzBdOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZvciAocyBpbiByKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFsWzBdIHx8IGUuY29udmVydGVyc1tzICsgIiAiICsgbFswXV0p
IHsKLSAgICAgICAgICAgICAgICAgICAgYSA9IHM7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGkgfHwgKGkgPSBzKQotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgYSA9IGEgfHwgaQotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBhID8gKGEgIT09IGxbMF0gJiYgbC51bnNoaWZ0KGEpLCByW2FdKSA6IHQKLSAgICB9Ci0gICAg
ZnVuY3Rpb24gRm4oZSwgdCkgewotICAgICAgICB2YXIgbiwKLSAgICAgICAgICAgIHIsCi0gICAg
ICAgICAgICBpLAotICAgICAgICAgICAgbywKLSAgICAgICAgICAgIGEgPSB7fSwKLSAgICAgICAg
ICAgIHMgPSAwLAotICAgICAgICAgICAgdSA9IGUuZGF0YVR5cGVzLnNsaWNlKCksCi0gICAgICAg
ICAgICBsID0gdVswXTsKLSAgICAgICAgaWYgKGUuZGF0YUZpbHRlciAmJiAodCA9IGUuZGF0YUZp
bHRlcih0LCBlLmRhdGFUeXBlKSksIHVbMV0pCi0gICAgICAgICAgICBmb3IgKGkgaW4gZS5jb252
ZXJ0ZXJzKQotICAgICAgICAgICAgICAgIGFbaS50b0xvd2VyQ2FzZSgpXSA9IGUuY29udmVydGVy
c1tpXTsKLSAgICAgICAgZm9yICg7IHIgPSB1Wysrc107KQotICAgICAgICAgICAgaWYgKCIqIiAh
PT0gcikgewotICAgICAgICAgICAgICAgIGlmICgiKiIgIT09IGwgJiYgbCAhPT0gcikgewotICAg
ICAgICAgICAgICAgICAgICBpZiAoaSA9IGFbbCArICIgIiArIHJdIHx8IGFbIiogIiArIHJdLCAh
aSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobiBpbiBhKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChvID0gbi5zcGxpdCgiICIpLCBvWzFdID09PSByICYmIChpID0gYVts
ICsgIiAiICsgb1swXV0gfHwgYVsiKiAiICsgb1swXV0pKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGkgPT09ICEwID8gaSA9IGFbbl0gOiBhW25dICE9PSAhMCAmJiAociA9IG9b
MF0sIHUuc3BsaWNlKHMtLSwgMCwgcikpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhawotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgaWYgKGkgIT09ICEwKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgJiYgZVsidGhy
b3dzIl0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGkodCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGkodCkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9IGNhdGNoIChjKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogInBh
cnNlcmVycm9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBp
ID8gYyA6ICJObyBjb252ZXJzaW9uIGZyb20gIiArIGwgKyAiIHRvICIgKyByCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGwgPSByCi0gICAgICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBzdGF0ZTogInN1Y2Nlc3MiLAotICAgICAgICAg
ICAgZGF0YTogdAotICAgICAgICB9Ci0gICAgfQotICAgIGIuYWpheFNldHVwKHsKLSAgICAgICAg
YWNjZXB0czogewotICAgICAgICAgICAgc2NyaXB0OiAidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9lY21hc2NyaXB0LCBhcHBsaWNhdGlvbi94LWVj
bWFzY3JpcHQiCi0gICAgICAgIH0sCi0gICAgICAgIGNvbnRlbnRzOiB7Ci0gICAgICAgICAgICBz
Y3JpcHQ6IC8oPzpqYXZhfGVjbWEpc2NyaXB0LwotICAgICAgICB9LAotICAgICAgICBjb252ZXJ0
ZXJzOiB7Ci0gICAgICAgICAgICAidGV4dCBzY3JpcHQiOiBmdW5jdGlvbihlKSB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGIuZ2xvYmFsRXZhbChlKSwgZQotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgfSksCi0gICAgYi5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLCBmdW5jdGlvbihlKSB7
Ci0gICAgICAgIGUuY2FjaGUgPT09IHQgJiYgKGUuY2FjaGUgPSAhMSksCi0gICAgICAgIGUuY3Jv
c3NEb21haW4gJiYgKGUudHlwZSA9ICJHRVQiLCBlLmdsb2JhbCA9ICExKQotICAgIH0pLAotICAg
IGIuYWpheFRyYW5zcG9ydCgic2NyaXB0IiwgZnVuY3Rpb24oZSkgewotICAgICAgICBpZiAoZS5j
cm9zc0RvbWFpbikgewotICAgICAgICAgICAgdmFyIG4sCi0gICAgICAgICAgICAgICAgciA9IG8u
aGVhZCB8fCBiKCJoZWFkIilbMF0gfHwgby5kb2N1bWVudEVsZW1lbnQ7Ci0gICAgICAgICAgICBy
ZXR1cm4gewotICAgICAgICAgICAgICAgIHNlbmQ6IGZ1bmN0aW9uKHQsIGkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgbiA9IG8uY3JlYXRlRWxlbWVudCgic2NyaXB0IiksCi0gICAgICAgICAgICAg
ICAgICAgIG4uYXN5bmMgPSAhMCwKLSAgICAgICAgICAgICAgICAgICAgZS5zY3JpcHRDaGFyc2V0
ICYmIChuLmNoYXJzZXQgPSBlLnNjcmlwdENoYXJzZXQpLAotICAgICAgICAgICAgICAgICAgICBu
LnNyYyA9IGUudXJsLAotICAgICAgICAgICAgICAgICAgICBuLm9ubG9hZCA9IG4ub25yZWFkeXN0
YXRlY2hhbmdlID0gZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgKHQg
fHwgIW4ucmVhZHlTdGF0ZSB8fCAvbG9hZGVkfGNvbXBsZXRlLy50ZXN0KG4ucmVhZHlTdGF0ZSkp
ICYmIChuLm9ubG9hZCA9IG4ub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbCwgbi5wYXJlbnROb2Rl
ICYmIG4ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKSwgbiA9IG51bGwsIHQgfHwgaSgyMDAsICJz
dWNjZXNzIikpCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHIu
aW5zZXJ0QmVmb3JlKG4sIHIuZmlyc3RDaGlsZCkKLSAgICAgICAgICAgICAgICB9LAotICAgICAg
ICAgICAgICAgIGFib3J0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgbiAmJiBu
Lm9ubG9hZCh0LCAhMCkKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICB9KTsKLSAgICB2YXIgT24gPSBbXSwKLSAgICAgICAgQm4gPSAvKD0pXD8oPz0mfCQp
fFw/XD8vOwotICAgIGIuYWpheFNldHVwKHsKLSAgICAgICAganNvbnA6ICJjYWxsYmFjayIsCi0g
ICAgICAgIGpzb25wQ2FsbGJhY2s6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdmFyIGUgPSBP
bi5wb3AoKSB8fCBiLmV4cGFuZG8gKyAiXyIgKyB2bisrOwotICAgICAgICAgICAgcmV0dXJuIHRo
aXNbZV0gPSAhMCwgZQotICAgICAgICB9Ci0gICAgfSksCi0gICAgYi5hamF4UHJlZmlsdGVyKCJq
c29uIGpzb25wIiwgZnVuY3Rpb24obiwgciwgaSkgewotICAgICAgICB2YXIgbywKLSAgICAgICAg
ICAgIGEsCi0gICAgICAgICAgICBzLAotICAgICAgICAgICAgdSA9IG4uanNvbnAgIT09ICExICYm
IChCbi50ZXN0KG4udXJsKSA/ICJ1cmwiIDogInN0cmluZyIgPT0gdHlwZW9mIG4uZGF0YSAmJiAh
KG4uY29udGVudFR5cGUgfHwgIiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJs
ZW5jb2RlZCIpICYmIEJuLnRlc3Qobi5kYXRhKSAmJiAiZGF0YSIpOwotICAgICAgICByZXR1cm4g
dSB8fCAianNvbnAiID09PSBuLmRhdGFUeXBlc1swXSA/IChvID0gbi5qc29ucENhbGxiYWNrID0g
Yi5pc0Z1bmN0aW9uKG4uanNvbnBDYWxsYmFjaykgPyBuLmpzb25wQ2FsbGJhY2soKSA6IG4uanNv
bnBDYWxsYmFjaywgdSA/IG5bdV0gPSBuW3VdLnJlcGxhY2UoQm4sICIkMSIgKyBvKSA6IG4uanNv
bnAgIT09ICExICYmIChuLnVybCArPSAoYm4udGVzdChuLnVybCkgPyAiJiIgOiAiPyIpICsgbi5q
c29ucCArICI9IiArIG8pLCBuLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl0gPSBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgIHJldHVybiBzIHx8IGIuZXJyb3IobyArICIgd2FzIG5vdCBjYWxsZWQi
KSwgc1swXQotICAgICAgICB9LCBuLmRhdGFUeXBlc1swXSA9ICJqc29uIiwgYSA9IGVbb10sIGVb
b10gPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHMgPSBhcmd1bWVudHMKLSAgICAgICAgfSwg
aS5hbHdheXMoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBlW29dID0gYSwKLSAgICAgICAgICAg
IG5bb10gJiYgKG4uanNvbnBDYWxsYmFjayA9IHIuanNvbnBDYWxsYmFjaywgT24ucHVzaChvKSks
Ci0gICAgICAgICAgICBzICYmIGIuaXNGdW5jdGlvbihhKSAmJiBhKHNbMF0pLAotICAgICAgICAg
ICAgcyA9IGEgPSB0Ci0gICAgICAgIH0pLCAic2NyaXB0IikgOiB0Ci0gICAgfSk7Ci0gICAgdmFy
IFBuLAotICAgICAgICBSbiwKLSAgICAgICAgV24gPSAwLAotICAgICAgICAkbiA9IGUuQWN0aXZl
WE9iamVjdCAmJiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHZhciBlOwotICAgICAgICAgICAg
Zm9yIChlIGluIFBuKQotICAgICAgICAgICAgICAgIFBuW2VdKHQsICEwKQotICAgICAgICB9Owot
ICAgIGZ1bmN0aW9uIEluKCkgewotICAgICAgICB0cnkgewotICAgICAgICAgICAgcmV0dXJuIG5l
dyBlLlhNTEh0dHBSZXF1ZXN0Ci0gICAgICAgIH0gY2F0Y2ggKHQpIHt9Ci0gICAgfQotICAgIGZ1
bmN0aW9uIHpuKCkgewotICAgICAgICB0cnkgewotICAgICAgICAgICAgcmV0dXJuIG5ldyBlLkFj
dGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIikKLSAgICAgICAgfSBjYXRjaCAodCkge30K
LSAgICB9Ci0gICAgYi5hamF4U2V0dGluZ3MueGhyID0gZS5BY3RpdmVYT2JqZWN0ID8gZnVuY3Rp
b24oKSB7Ci0gICAgICAgIHJldHVybiAhdGhpcy5pc0xvY2FsICYmIEluKCkgfHwgem4oKQotICAg
IH0gOiBJbiwKLSAgICBSbiA9IGIuYWpheFNldHRpbmdzLnhocigpLAotICAgIGIuc3VwcG9ydC5j
b3JzID0gISFSbiAmJiAid2l0aENyZWRlbnRpYWxzIiBpbiBSbiwKLSAgICBSbiA9IGIuc3VwcG9y
dC5hamF4ID0gISFSbiwKLSAgICBSbiAmJiBiLmFqYXhUcmFuc3BvcnQoZnVuY3Rpb24obikgewot
ICAgICAgICBpZiAoIW4uY3Jvc3NEb21haW4gfHwgYi5zdXBwb3J0LmNvcnMpIHsKLSAgICAgICAg
ICAgIHZhciByOwotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICBzZW5kOiBm
dW5jdGlvbihpLCBvKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBhLAotICAgICAgICAgICAg
ICAgICAgICAgICAgcywKLSAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBuLnhocigpOwotICAg
ICAgICAgICAgICAgICAgICBpZiAobi51c2VybmFtZSA/IHUub3BlbihuLnR5cGUsIG4udXJsLCBu
LmFzeW5jLCBuLnVzZXJuYW1lLCBuLnBhc3N3b3JkKSA6IHUub3BlbihuLnR5cGUsIG4udXJsLCBu
LmFzeW5jKSwgbi54aHJGaWVsZHMpCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHMgaW4g
bi54aHJGaWVsZHMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdVtzXSA9IG4ueGhyRmll
bGRzW3NdOwotICAgICAgICAgICAgICAgICAgICBuLm1pbWVUeXBlICYmIHUub3ZlcnJpZGVNaW1l
VHlwZSAmJiB1Lm92ZXJyaWRlTWltZVR5cGUobi5taW1lVHlwZSksCi0gICAgICAgICAgICAgICAg
ICAgIG4uY3Jvc3NEb21haW4gfHwgaVsiWC1SZXF1ZXN0ZWQtV2l0aCJdIHx8IChpWyJYLVJlcXVl
c3RlZC1XaXRoIl0gPSAiWE1MSHR0cFJlcXVlc3QiKTsKLSAgICAgICAgICAgICAgICAgICAgdHJ5
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocyBpbiBpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHUuc2V0UmVxdWVzdEhlYWRlcihzLCBpW3NdKQotICAgICAgICAgICAgICAg
ICAgICB9IGNhdGNoIChsKSB7fQotICAgICAgICAgICAgICAgICAgICB1LnNlbmQobi5oYXNDb250
ZW50ICYmIG4uZGF0YSB8fCBudWxsKSwKLSAgICAgICAgICAgICAgICAgICAgciA9IGZ1bmN0aW9u
KGUsIGkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwOwotICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociAmJiAoaSB8fCA0ID09PSB1LnJlYWR5U3Rh
dGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IHQsIGEgJiYgKHUu
b25yZWFkeXN0YXRlY2hhbmdlID0gYi5ub29wLCAkbiAmJiBkZWxldGUgUG5bYV0pLCBpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNCAhPT0gdS5yZWFkeVN0YXRlICYmIHUu
YWJvcnQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0ge30sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzID0gdS5zdGF0dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsID0gdS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmciID09IHR5cGVvZiB1LnJlc3BvbnNlVGV4dCAm
JiAocC50ZXh0ID0gdS5yZXNwb25zZVRleHQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
ID0gdS5zdGF0dXNUZXh0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNh
dGNoIChmKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICIi
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzIHx8ICFuLmlzTG9jYWwgfHwgbi5jcm9zc0RvbWFpbiA/IDEy
MjMgPT09IHMgJiYgKHMgPSAyMDQpIDogcyA9IHAudGV4dCA/IDIwMCA6IDQwNAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNo
IChkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaSB8fCBvKC0xLCBkKQotICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgcCAmJiBvKHMsIGMs
IHAsIGwpCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIG4uYXN5
bmMgPyA0ID09PSB1LnJlYWR5U3RhdGUgPyBzZXRUaW1lb3V0KHIpIDogKGEgPSArK1duLCAkbiAm
JiAoUG4gfHwgKFBuID0ge30sIGIoZSkudW5sb2FkKCRuKSksIFBuW2FdID0gciksIHUub25yZWFk
eXN0YXRlY2hhbmdlID0gcikgOiByKCkKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg
ICAgIGFib3J0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgciAmJiByKHQsICEw
KQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0pOwot
ICAgIHZhciBYbiwKLSAgICAgICAgVW4sCi0gICAgICAgIFZuID0gL14oPzp0b2dnbGV8c2hvd3xo
aWRlKSQvLAotICAgICAgICBZbiA9IFJlZ0V4cCgiXig/OihbKy1dKT18KSgiICsgeCArICIpKFth
LXolXSopJCIsICJpIiksCi0gICAgICAgIEpuID0gL3F1ZXVlSG9va3MkLywKLSAgICAgICAgR24g
PSBbbnJdLAotICAgICAgICBRbiA9IHsKLSAgICAgICAgICAgICIqIjogW2Z1bmN0aW9uKGUsIHQp
IHsKLSAgICAgICAgICAgICAgICB2YXIgbiwKLSAgICAgICAgICAgICAgICAgICAgciwKLSAgICAg
ICAgICAgICAgICAgICAgaSA9IHRoaXMuY3JlYXRlVHdlZW4oZSwgdCksCi0gICAgICAgICAgICAg
ICAgICAgIG8gPSBZbi5leGVjKHQpLAotICAgICAgICAgICAgICAgICAgICBhID0gaS5jdXIoKSwK
LSAgICAgICAgICAgICAgICAgICAgcyA9ICthIHx8IDAsCi0gICAgICAgICAgICAgICAgICAgIHUg
PSAxLAotICAgICAgICAgICAgICAgICAgICBsID0gMjA7Ci0gICAgICAgICAgICAgICAgaWYgKG8p
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSArb1syXSwgciA9IG9bM10gfHwgKGIuY3Nz
TnVtYmVyW2VdID8gIiIgOiAicHgiKSwgInB4IiAhPT0gciAmJiBzKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBzID0gYi5jc3MoaS5lbGVtLCBlLCAhMCkgfHwgbiB8fCAxOwotICAgICAgICAg
ICAgICAgICAgICAgICAgZG8gdSA9IHUgfHwgIi41IiwKLSAgICAgICAgICAgICAgICAgICAgICAg
IHMgLz0gdSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGIuc3R5bGUoaS5lbGVtLCBlLCBzICsg
cik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodSAhPT0gKHUgPSBpLmN1cigpIC8g
YSkgJiYgMSAhPT0gdSAmJiAtLWwpCi0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgaS51bml0ID0gciwKLSAgICAgICAgICAgICAgICAgICAgaS5zdGFydCA9IHMsCi0g
ICAgICAgICAgICAgICAgICAgIGkuZW5kID0gb1sxXSA/IHMgKyAob1sxXSArIDEpICogbiA6IG4K
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGkKLSAgICAgICAgICAg
IH1dCi0gICAgICAgIH07Ci0gICAgZnVuY3Rpb24gS24oKSB7Ci0gICAgICAgIHJldHVybiBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgWG4gPSB0Ci0gICAgICAgIH0pLCBYbiA9
IGIubm93KCkKLSAgICB9Ci0gICAgZnVuY3Rpb24gWm4oZSwgdCkgewotICAgICAgICBiLmVhY2go
dCwgZnVuY3Rpb24odCwgbikgewotICAgICAgICAgICAgdmFyIHIgPSAoUW5bdF0gfHwgW10pLmNv
bmNhdChRblsiKiJdKSwKLSAgICAgICAgICAgICAgICBpID0gMCwKLSAgICAgICAgICAgICAgICBv
ID0gci5sZW5ndGg7Ci0gICAgICAgICAgICBmb3IgKDsgbyA+IGk7IGkrKykKLSAgICAgICAgICAg
ICAgICBpZiAocltpXS5jYWxsKGUsIHQsIG4pKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4K
LSAgICAgICAgfSkKLSAgICB9Ci0gICAgZnVuY3Rpb24gZXIoZSwgdCwgbikgewotICAgICAgICB2
YXIgciwKLSAgICAgICAgICAgIGksCi0gICAgICAgICAgICBvID0gMCwKLSAgICAgICAgICAgIGEg
PSBHbi5sZW5ndGgsCi0gICAgICAgICAgICBzID0gYi5EZWZlcnJlZCgpLmFsd2F5cyhmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgICAgICBkZWxldGUgdS5lbGVtCi0gICAgICAgICAgICB9KSwKLSAg
ICAgICAgICAgIHUgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBpZiAoaSkKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuICExOwotICAgICAgICAgICAgICAgIHZhciB0ID0gWG4gfHwg
S24oKSwKLSAgICAgICAgICAgICAgICAgICAgbiA9IE1hdGgubWF4KDAsIGwuc3RhcnRUaW1lICsg
bC5kdXJhdGlvbiAtIHQpLAotICAgICAgICAgICAgICAgICAgICByID0gbiAvIGwuZHVyYXRpb24g
fHwgMCwKLSAgICAgICAgICAgICAgICAgICAgbyA9IDEgLSByLAotICAgICAgICAgICAgICAgICAg
ICBhID0gMCwKLSAgICAgICAgICAgICAgICAgICAgdSA9IGwudHdlZW5zLmxlbmd0aDsKLSAgICAg
ICAgICAgICAgICBmb3IgKDsgdSA+IGE7IGErKykKLSAgICAgICAgICAgICAgICAgICAgbC50d2Vl
bnNbYV0ucnVuKG8pOwotICAgICAgICAgICAgICAgIHJldHVybiBzLm5vdGlmeVdpdGgoZSwgW2ws
IG8sIG5dKSwgMSA+IG8gJiYgdSA/IG4gOiAocy5yZXNvbHZlV2l0aChlLCBbbF0pLCAhMSkKLSAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICBsID0gcy5wcm9taXNlKHsKLSAgICAgICAgICAgICAg
ICBlbGVtOiBlLAotICAgICAgICAgICAgICAgIHByb3BzOiBiLmV4dGVuZCh7fSwgdCksCi0gICAg
ICAgICAgICAgICAgb3B0czogYi5leHRlbmQoITAsIHsKLSAgICAgICAgICAgICAgICAgICAgc3Bl
Y2lhbEVhc2luZzoge30KLSAgICAgICAgICAgICAgICB9LCBuKSwKLSAgICAgICAgICAgICAgICBv
cmlnaW5hbFByb3BlcnRpZXM6IHQsCi0gICAgICAgICAgICAgICAgb3JpZ2luYWxPcHRpb25zOiBu
LAotICAgICAgICAgICAgICAgIHN0YXJ0VGltZTogWG4gfHwgS24oKSwKLSAgICAgICAgICAgICAg
ICBkdXJhdGlvbjogbi5kdXJhdGlvbiwKLSAgICAgICAgICAgICAgICB0d2VlbnM6IFtdLAotICAg
ICAgICAgICAgICAgIGNyZWF0ZVR3ZWVuOiBmdW5jdGlvbih0LCBuKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHZhciByID0gYi5Ud2VlbihlLCBsLm9wdHMsIHQsIG4sIGwub3B0cy5zcGVjaWFsRWFz
aW5nW3RdIHx8IGwub3B0cy5lYXNpbmcpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbC50
d2VlbnMucHVzaChyKSwgcgotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgc3Rv
cDogZnVuY3Rpb24odCkgewotICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IDAsCi0gICAgICAg
ICAgICAgICAgICAgICAgICByID0gdCA/IGwudHdlZW5zLmxlbmd0aCA6IDA7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0g
ICAgICAgICAgICAgICAgICAgIGZvciAoaSA9ICEwOyByID4gbjsgbisrKQotICAgICAgICAgICAg
ICAgICAgICAgICAgbC50d2VlbnNbbl0ucnVuKDEpOwotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdCA/IHMucmVzb2x2ZVdpdGgoZSwgW2wsIHRdKSA6IHMucmVqZWN0V2l0aChlLCBbbCwgdF0p
LCB0aGlzCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSksCi0gICAgICAgICAgICBj
ID0gbC5wcm9wczsKLSAgICAgICAgZm9yICh0cihjLCBsLm9wdHMuc3BlY2lhbEVhc2luZyk7IGEg
PiBvOyBvKyspCi0gICAgICAgICAgICBpZiAociA9IEduW29dLmNhbGwobCwgZSwgYywgbC5vcHRz
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcjsKLSAgICAgICAgcmV0dXJuIFpuKGwsIGMpLCBi
LmlzRnVuY3Rpb24obC5vcHRzLnN0YXJ0KSAmJiBsLm9wdHMuc3RhcnQuY2FsbChlLCBsKSwgYi5m
eC50aW1lcihiLmV4dGVuZCh1LCB7Ci0gICAgICAgICAgICBlbGVtOiBlLAotICAgICAgICAgICAg
YW5pbTogbCwKLSAgICAgICAgICAgIHF1ZXVlOiBsLm9wdHMucXVldWUKLSAgICAgICAgfSkpLCBs
LnByb2dyZXNzKGwub3B0cy5wcm9ncmVzcykuZG9uZShsLm9wdHMuZG9uZSwgbC5vcHRzLmNvbXBs
ZXRlKS5mYWlsKGwub3B0cy5mYWlsKS5hbHdheXMobC5vcHRzLmFsd2F5cykKLSAgICB9Ci0gICAg
ZnVuY3Rpb24gdHIoZSwgdCkgewotICAgICAgICB2YXIgbiwKLSAgICAgICAgICAgIHIsCi0gICAg
ICAgICAgICBpLAotICAgICAgICAgICAgbywKLSAgICAgICAgICAgIGE7Ci0gICAgICAgIGZvciAo
aSBpbiBlKQotICAgICAgICAgICAgaWYgKHIgPSBiLmNhbWVsQ2FzZShpKSwgbyA9IHRbcl0sIG4g
PSBlW2ldLCBiLmlzQXJyYXkobikgJiYgKG8gPSBuWzFdLCBuID0gZVtpXSA9IG5bMF0pLCBpICE9
PSByICYmIChlW3JdID0gbiwgZGVsZXRlIGVbaV0pLCBhID0gYi5jc3NIb29rc1tyXSwgYSAmJiAi
ZXhwYW5kIiBpbiBhKSB7Ci0gICAgICAgICAgICAgICAgbiA9IGEuZXhwYW5kKG4pLAotICAgICAg
ICAgICAgICAgIGRlbGV0ZSBlW3JdOwotICAgICAgICAgICAgICAgIGZvciAoaSBpbiBuKQotICAg
ICAgICAgICAgICAgICAgICBpIGluIGUgfHwgKGVbaV0gPSBuW2ldLCB0W2ldID0gbykKLSAgICAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHRbcl0gPSBvCi0gICAgfQotICAgIGIuQW5p
bWF0aW9uID0gYi5leHRlbmQoZXIsIHsKLSAgICAgICAgdHdlZW5lcjogZnVuY3Rpb24oZSwgdCkg
ewotICAgICAgICAgICAgYi5pc0Z1bmN0aW9uKGUpID8gKHQgPSBlLCBlID0gWyIqIl0pIDogZSA9
IGUuc3BsaXQoIiAiKTsKLSAgICAgICAgICAgIHZhciBuLAotICAgICAgICAgICAgICAgIHIgPSAw
LAotICAgICAgICAgICAgICAgIGkgPSBlLmxlbmd0aDsKLSAgICAgICAgICAgIGZvciAoOyBpID4g
cjsgcisrKQotICAgICAgICAgICAgICAgIG4gPSBlW3JdLAotICAgICAgICAgICAgICAgIFFuW25d
ID0gUW5bbl0gfHwgW10sCi0gICAgICAgICAgICAgICAgUW5bbl0udW5zaGlmdCh0KQotICAgICAg
ICB9LAotICAgICAgICBwcmVmaWx0ZXI6IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgIHQg
PyBHbi51bnNoaWZ0KGUpIDogR24ucHVzaChlKQotICAgICAgICB9Ci0gICAgfSk7Ci0gICAgZnVu
Y3Rpb24gbnIoZSwgdCwgbikgewotICAgICAgICB2YXIgciwKLSAgICAgICAgICAgIGksCi0gICAg
ICAgICAgICBvLAotICAgICAgICAgICAgYSwKLSAgICAgICAgICAgIHMsCi0gICAgICAgICAgICB1
LAotICAgICAgICAgICAgbCwKLSAgICAgICAgICAgIGMsCi0gICAgICAgICAgICBwLAotICAgICAg
ICAgICAgZiA9IHRoaXMsCi0gICAgICAgICAgICBkID0gZS5zdHlsZSwKLSAgICAgICAgICAgIGgg
PSB7fSwKLSAgICAgICAgICAgIGcgPSBbXSwKLSAgICAgICAgICAgIG0gPSBlLm5vZGVUeXBlICYm
IG5uKGUpOwotICAgICAgICBuLnF1ZXVlIHx8IChjID0gYi5fcXVldWVIb29rcyhlLCAiZngiKSwg
bnVsbCA9PSBjLnVucXVldWVkICYmIChjLnVucXVldWVkID0gMCwgcCA9IGMuZW1wdHkuZmlyZSwg
Yy5lbXB0eS5maXJlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBjLnVucXVldWVkIHx8IHAo
KQotICAgICAgICB9KSwgYy51bnF1ZXVlZCsrLCBmLmFsd2F5cyhmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIGYuYWx3YXlzKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGMudW5xdWV1ZWQt
LSwKLSAgICAgICAgICAgICAgICBiLnF1ZXVlKGUsICJmeCIpLmxlbmd0aCB8fCBjLmVtcHR5LmZp
cmUoKQotICAgICAgICAgICAgfSkKLSAgICAgICAgfSkpLAotICAgICAgICAxID09PSBlLm5vZGVU
eXBlICYmICgiaGVpZ2h0IiBpbiB0IHx8ICJ3aWR0aCIgaW4gdCkgJiYgKG4ub3ZlcmZsb3cgPSBb
ZC5vdmVyZmxvdywgZC5vdmVyZmxvd1gsIGQub3ZlcmZsb3dZXSwgImlubGluZSIgPT09IGIuY3Nz
KGUsICJkaXNwbGF5IikgJiYgIm5vbmUiID09PSBiLmNzcyhlLCAiZmxvYXQiKSAmJiAoYi5zdXBw
b3J0LmlubGluZUJsb2NrTmVlZHNMYXlvdXQgJiYgImlubGluZSIgIT09IHVuKGUubm9kZU5hbWUp
ID8gZC56b29tID0gMSA6IGQuZGlzcGxheSA9ICJpbmxpbmUtYmxvY2siKSksCi0gICAgICAgIG4u
b3ZlcmZsb3cgJiYgKGQub3ZlcmZsb3cgPSAiaGlkZGVuIiwgYi5zdXBwb3J0LnNocmlua1dyYXBC
bG9ja3MgfHwgZi5hbHdheXMoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBkLm92ZXJmbG93ID0g
bi5vdmVyZmxvd1swXSwKLSAgICAgICAgICAgIGQub3ZlcmZsb3dYID0gbi5vdmVyZmxvd1sxXSwK
LSAgICAgICAgICAgIGQub3ZlcmZsb3dZID0gbi5vdmVyZmxvd1syXQotICAgICAgICB9KSk7Ci0g
ICAgICAgIGZvciAoaSBpbiB0KQotICAgICAgICAgICAgaWYgKGEgPSB0W2ldLCBWbi5leGVjKGEp
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGRlbGV0ZSB0W2ldLCB1ID0gdSB8fCAidG9nZ2xlIiA9
PT0gYSwgYSA9PT0gKG0gPyAiaGlkZSIgOiAic2hvdyIpKQotICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgICAgICBnLnB1c2goaSkKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgaWYgKG8gPSBnLmxlbmd0aCkgewotICAgICAgICAgICAgcyA9IGIuX2RhdGEoZSwgImZ4c2hv
dyIpIHx8IGIuX2RhdGEoZSwgImZ4c2hvdyIsIHt9KSwKLSAgICAgICAgICAgICJoaWRkZW4iIGlu
IHMgJiYgKG0gPSBzLmhpZGRlbiksCi0gICAgICAgICAgICB1ICYmIChzLmhpZGRlbiA9ICFtKSwK
LSAgICAgICAgICAgIG0gPyBiKGUpLnNob3coKSA6IGYuZG9uZShmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgICAgICBiKGUpLmhpZGUoKQotICAgICAgICAgICAgfSksCi0gICAgICAgICAgICBmLmRv
bmUoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHQ7Ci0gICAgICAgICAgICAgICAg
Yi5fcmVtb3ZlRGF0YShlLCAiZnhzaG93Iik7Ci0gICAgICAgICAgICAgICAgZm9yICh0IGluIGgp
Ci0gICAgICAgICAgICAgICAgICAgIGIuc3R5bGUoZSwgdCwgaFt0XSkKLSAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgZm9yIChpID0gMDsgbyA+IGk7IGkrKykKLSAgICAgICAgICAgICAgICBy
ID0gZ1tpXSwKLSAgICAgICAgICAgICAgICBsID0gZi5jcmVhdGVUd2VlbihyLCBtID8gc1tyXSA6
IDApLAotICAgICAgICAgICAgICAgIGhbcl0gPSBzW3JdIHx8IGIuc3R5bGUoZSwgciksCi0gICAg
ICAgICAgICAgICAgciBpbiBzIHx8IChzW3JdID0gbC5zdGFydCwgbSAmJiAobC5lbmQgPSBsLnN0
YXJ0LCBsLnN0YXJ0ID0gIndpZHRoIiA9PT0gciB8fCAiaGVpZ2h0IiA9PT0gciA/IDEgOiAwKSkK
LSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBycihlLCB0LCBuLCByLCBpKSB7Ci0gICAg
ICAgIHJldHVybiBuZXcgcnIucHJvdG90eXBlLmluaXQoZSwgdCwgbiwgciwgaSkKLSAgICB9Ci0g
ICAgYi5Ud2VlbiA9IHJyLAotICAgIHJyLnByb3RvdHlwZSA9IHsKLSAgICAgICAgY29uc3RydWN0
b3I6IHJyLAotICAgICAgICBpbml0OiBmdW5jdGlvbihlLCB0LCBuLCByLCBpLCBvKSB7Ci0gICAg
ICAgICAgICB0aGlzLmVsZW0gPSBlLAotICAgICAgICAgICAgdGhpcy5wcm9wID0gbiwKLSAgICAg
ICAgICAgIHRoaXMuZWFzaW5nID0gaSB8fCAic3dpbmciLAotICAgICAgICAgICAgdGhpcy5vcHRp
b25zID0gdCwKLSAgICAgICAgICAgIHRoaXMuc3RhcnQgPSB0aGlzLm5vdyA9IHRoaXMuY3VyKCks
Ci0gICAgICAgICAgICB0aGlzLmVuZCA9IHIsCi0gICAgICAgICAgICB0aGlzLnVuaXQgPSBvIHx8
IChiLmNzc051bWJlcltuXSA/ICIiIDogInB4IikKLSAgICAgICAgfSwKLSAgICAgICAgY3VyOiBm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgIHZhciBlID0gcnIucHJvcEhvb2tzW3RoaXMucHJvcF07
Ci0gICAgICAgICAgICByZXR1cm4gZSAmJiBlLmdldCA/IGUuZ2V0KHRoaXMpIDogcnIucHJvcEhv
b2tzLl9kZWZhdWx0LmdldCh0aGlzKQotICAgICAgICB9LAotICAgICAgICBydW46IGZ1bmN0aW9u
KGUpIHsKLSAgICAgICAgICAgIHZhciB0LAotICAgICAgICAgICAgICAgIG4gPSByci5wcm9wSG9v
a3NbdGhpcy5wcm9wXTsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLnBvcyA9IHQgPSB0aGlzLm9w
dGlvbnMuZHVyYXRpb24gPyBiLmVhc2luZ1t0aGlzLmVhc2luZ10oZSwgdGhpcy5vcHRpb25zLmR1
cmF0aW9uICogZSwgMCwgMSwgdGhpcy5vcHRpb25zLmR1cmF0aW9uKSA6IGUsIHRoaXMubm93ID0g
KHRoaXMuZW5kIC0gdGhpcy5zdGFydCkgKiB0ICsgdGhpcy5zdGFydCwgdGhpcy5vcHRpb25zLnN0
ZXAgJiYgdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sIHRoaXMubm93LCB0aGlzKSwg
biAmJiBuLnNldCA/IG4uc2V0KHRoaXMpIDogcnIucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlz
KSwgdGhpcwotICAgICAgICB9Ci0gICAgfSwKLSAgICByci5wcm90b3R5cGUuaW5pdC5wcm90b3R5
cGUgPSByci5wcm90b3R5cGUsCi0gICAgcnIucHJvcEhvb2tzID0gewotICAgICAgICBfZGVmYXVs
dDogewotICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgdmFy
IHQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gZS5lbGVtW2UucHJvcF0gfHwgZS5l
bGVtLnN0eWxlICYmIG51bGwgIT0gZS5lbGVtLnN0eWxlW2UucHJvcF0gPyAodCA9IGIuY3NzKGUu
ZWxlbSwgZS5wcm9wLCAiIiksIHQgJiYgImF1dG8iICE9PSB0ID8gdCA6IDApIDogZS5lbGVtW2Uu
cHJvcF0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUpIHsKLSAg
ICAgICAgICAgICAgICBiLmZ4LnN0ZXBbZS5wcm9wXSA/IGIuZnguc3RlcFtlLnByb3BdKGUpIDog
ZS5lbGVtLnN0eWxlICYmIChudWxsICE9IGUuZWxlbS5zdHlsZVtiLmNzc1Byb3BzW2UucHJvcF1d
IHx8IGIuY3NzSG9va3NbZS5wcm9wXSkgPyBiLnN0eWxlKGUuZWxlbSwgZS5wcm9wLCBlLm5vdyAr
IGUudW5pdCkgOiBlLmVsZW1bZS5wcm9wXSA9IGUubm93Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICB9LAotICAgIHJyLnByb3BIb29rcy5zY3JvbGxUb3AgPSByci5wcm9wSG9va3Muc2Ny
b2xsTGVmdCA9IHsKLSAgICAgICAgc2V0OiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBlLmVs
ZW0ubm9kZVR5cGUgJiYgZS5lbGVtLnBhcmVudE5vZGUgJiYgKGUuZWxlbVtlLnByb3BdID0gZS5u
b3cpCi0gICAgICAgIH0KLSAgICB9LAotICAgIGIuZWFjaChbInRvZ2dsZSIsICJzaG93IiwgImhp
ZGUiXSwgZnVuY3Rpb24oZSwgdCkgewotICAgICAgICB2YXIgbiA9IGIuZm5bdF07Ci0gICAgICAg
IGIuZm5bdF0gPSBmdW5jdGlvbihlLCByLCBpKSB7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbCA9
PSBlIHx8ICJib29sZWFuIiA9PSB0eXBlb2YgZSA/IG4uYXBwbHkodGhpcywgYXJndW1lbnRzKSA6
IHRoaXMuYW5pbWF0ZShpcih0LCAhMCksIGUsIHIsIGkpCi0gICAgICAgIH0KLSAgICB9KSwKLSAg
ICBiLmZuLmV4dGVuZCh7Ci0gICAgICAgIGZhZGVUbzogZnVuY3Rpb24oZSwgdCwgbiwgcikgewot
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKG5uKS5jc3MoIm9wYWNpdHkiLCAwKS5zaG93
KCkuZW5kKCkuYW5pbWF0ZSh7Ci0gICAgICAgICAgICAgICAgb3BhY2l0eTogdAotICAgICAgICAg
ICAgfSwgZSwgbiwgcikKLSAgICAgICAgfSwKLSAgICAgICAgYW5pbWF0ZTogZnVuY3Rpb24oZSwg
dCwgbiwgcikgewotICAgICAgICAgICAgdmFyIGkgPSBiLmlzRW1wdHlPYmplY3QoZSksCi0gICAg
ICAgICAgICAgICAgbyA9IGIuc3BlZWQodCwgbiwgciksCi0gICAgICAgICAgICAgICAgYSA9IGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGVyKHRoaXMsIGIuZXh0ZW5k
KHt9LCBlKSwgbyk7Ci0gICAgICAgICAgICAgICAgICAgIGEuZmluaXNoID0gZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0LnN0b3AoITApCi0gICAgICAgICAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAgICAgICAgIChpIHx8IGIuX2RhdGEodGhpcywgImZpbmlzaCIpKSAm
JiB0LnN0b3AoITApCi0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHJldHVybiBhLmZp
bmlzaCA9IGEsIGkgfHwgby5xdWV1ZSA9PT0gITEgPyB0aGlzLmVhY2goYSkgOiB0aGlzLnF1ZXVl
KG8ucXVldWUsIGEpCi0gICAgICAgIH0sCi0gICAgICAgIHN0b3A6IGZ1bmN0aW9uKGUsIG4sIHIp
IHsKLSAgICAgICAgICAgIHZhciBpID0gZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgIHZh
ciB0ID0gZS5zdG9wOwotICAgICAgICAgICAgICAgIGRlbGV0ZSBlLnN0b3AsCi0gICAgICAgICAg
ICAgICAgdChyKQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiAh
PSB0eXBlb2YgZSAmJiAociA9IG4sIG4gPSBlLCBlID0gdCksIG4gJiYgZSAhPT0gITEgJiYgdGhp
cy5xdWV1ZShlIHx8ICJmeCIsIFtdKSwgdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgICAgIHZhciB0ID0gITAsCi0gICAgICAgICAgICAgICAgICAgIG4gPSBudWxsICE9IGUgJiYg
ZSArICJxdWV1ZUhvb2tzIiwKLSAgICAgICAgICAgICAgICAgICAgbyA9IGIudGltZXJzLAotICAg
ICAgICAgICAgICAgICAgICBhID0gYi5fZGF0YSh0aGlzKTsKLSAgICAgICAgICAgICAgICBpZiAo
bikKLSAgICAgICAgICAgICAgICAgICAgYVtuXSAmJiBhW25dLnN0b3AgJiYgaShhW25dKTsKLSAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZvciAobiBpbiBhKQotICAg
ICAgICAgICAgICAgICAgICAgICAgYVtuXSAmJiBhW25dLnN0b3AgJiYgSm4udGVzdChuKSAmJiBp
KGFbbl0pOwotICAgICAgICAgICAgICAgIGZvciAobiA9IG8ubGVuZ3RoOyBuLS07KQotICAgICAg
ICAgICAgICAgICAgICBvW25dLmVsZW0gIT09IHRoaXMgfHwgbnVsbCAhPSBlICYmIG9bbl0ucXVl
dWUgIT09IGUgfHwgKG9bbl0uYW5pbS5zdG9wKHIpLCB0ID0gITEsIG8uc3BsaWNlKG4sIDEpKTsK
LSAgICAgICAgICAgICAgICAodCB8fCAhcikgJiYgYi5kZXF1ZXVlKHRoaXMsIGUpCi0gICAgICAg
ICAgICB9KQotICAgICAgICB9LAotICAgICAgICBmaW5pc2g6IGZ1bmN0aW9uKGUpIHsKLSAgICAg
ICAgICAgIHJldHVybiBlICE9PSAhMSAmJiAoZSA9IGUgfHwgImZ4IiksIHRoaXMuZWFjaChmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICAgICB2YXIgdCwKLSAgICAgICAgICAgICAgICAgICAgbiA9
IGIuX2RhdGEodGhpcyksCi0gICAgICAgICAgICAgICAgICAgIHIgPSBuW2UgKyAicXVldWUiXSwK
LSAgICAgICAgICAgICAgICAgICAgaSA9IG5bZSArICJxdWV1ZUhvb2tzIl0sCi0gICAgICAgICAg
ICAgICAgICAgIG8gPSBiLnRpbWVycywKLSAgICAgICAgICAgICAgICAgICAgYSA9IHIgPyByLmxl
bmd0aCA6IDA7Ci0gICAgICAgICAgICAgICAgZm9yIChuLmZpbmlzaCA9ICEwLCBiLnF1ZXVlKHRo
aXMsIGUsIFtdKSwgaSAmJiBpLmN1ciAmJiBpLmN1ci5maW5pc2ggJiYgaS5jdXIuZmluaXNoLmNh
bGwodGhpcyksIHQgPSBvLmxlbmd0aDsgdC0tOykKLSAgICAgICAgICAgICAgICAgICAgb1t0XS5l
bGVtID09PSB0aGlzICYmIG9bdF0ucXVldWUgPT09IGUgJiYgKG9bdF0uYW5pbS5zdG9wKCEwKSwg
by5zcGxpY2UodCwgMSkpOwotICAgICAgICAgICAgICAgIGZvciAodCA9IDA7IGEgPiB0OyB0Kysp
Ci0gICAgICAgICAgICAgICAgICAgIHJbdF0gJiYgclt0XS5maW5pc2ggJiYgclt0XS5maW5pc2gu
Y2FsbCh0aGlzKTsKLSAgICAgICAgICAgICAgICBkZWxldGUgbi5maW5pc2gKLSAgICAgICAgICAg
IH0pCi0gICAgICAgIH0KLSAgICB9KTsKLSAgICBmdW5jdGlvbiBpcihlLCB0KSB7Ci0gICAgICAg
IHZhciBuLAotICAgICAgICAgICAgciA9IHsKLSAgICAgICAgICAgICAgICBoZWlnaHQ6IGUKLSAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICBpID0gMDsKLSAgICAgICAgZm9yICh0ID0gdCA/IDEg
OiAwOyA0ID4gaTsgaSArPSAyIC0gdCkKLSAgICAgICAgICAgIG4gPSBadFtpXSwKLSAgICAgICAg
ICAgIHJbIm1hcmdpbiIgKyBuXSA9IHJbInBhZGRpbmciICsgbl0gPSBlOwotICAgICAgICByZXR1
cm4gdCAmJiAoci5vcGFjaXR5ID0gci53aWR0aCA9IGUpLCByCi0gICAgfQotICAgIGIuZWFjaCh7
Ci0gICAgICAgIHNsaWRlRG93bjogaXIoInNob3ciKSwKLSAgICAgICAgc2xpZGVVcDogaXIoImhp
ZGUiKSwKLSAgICAgICAgc2xpZGVUb2dnbGU6IGlyKCJ0b2dnbGUiKSwKLSAgICAgICAgZmFkZUlu
OiB7Ci0gICAgICAgICAgICBvcGFjaXR5OiAic2hvdyIKLSAgICAgICAgfSwKLSAgICAgICAgZmFk
ZU91dDogewotICAgICAgICAgICAgb3BhY2l0eTogImhpZGUiCi0gICAgICAgIH0sCi0gICAgICAg
IGZhZGVUb2dnbGU6IHsKLSAgICAgICAgICAgIG9wYWNpdHk6ICJ0b2dnbGUiCi0gICAgICAgIH0K
LSAgICB9LCBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgIGIuZm5bZV0gPSBmdW5jdGlvbihlLCBu
LCByKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5hbmltYXRlKHQsIGUsIG4sIHIpCi0gICAg
ICAgIH0KLSAgICB9KSwKLSAgICBiLnNwZWVkID0gZnVuY3Rpb24oZSwgdCwgbikgewotICAgICAg
ICB2YXIgciA9IGUgJiYgIm9iamVjdCIgPT0gdHlwZW9mIGUgPyBiLmV4dGVuZCh7fSwgZSkgOiB7
Ci0gICAgICAgICAgICBjb21wbGV0ZTogbiB8fCAhbiAmJiB0IHx8IGIuaXNGdW5jdGlvbihlKSAm
JiBlLAotICAgICAgICAgICAgZHVyYXRpb246IGUsCi0gICAgICAgICAgICBlYXNpbmc6IG4gJiYg
dCB8fCB0ICYmICFiLmlzRnVuY3Rpb24odCkgJiYgdAotICAgICAgICB9OwotICAgICAgICByZXR1
cm4gci5kdXJhdGlvbiA9IGIuZngub2ZmID8gMCA6ICJudW1iZXIiID09IHR5cGVvZiByLmR1cmF0
aW9uID8gci5kdXJhdGlvbiA6IHIuZHVyYXRpb24gaW4gYi5meC5zcGVlZHMgPyBiLmZ4LnNwZWVk
c1tyLmR1cmF0aW9uXSA6IGIuZnguc3BlZWRzLl9kZWZhdWx0LCAobnVsbCA9PSByLnF1ZXVlIHx8
IHIucXVldWUgPT09ICEwKSAmJiAoci5xdWV1ZSA9ICJmeCIpLCByLm9sZCA9IHIuY29tcGxldGUs
IHIuY29tcGxldGUgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGIuaXNGdW5jdGlvbihyLm9s
ZCkgJiYgci5vbGQuY2FsbCh0aGlzKSwKLSAgICAgICAgICAgIHIucXVldWUgJiYgYi5kZXF1ZXVl
KHRoaXMsIHIucXVldWUpCi0gICAgICAgIH0sIHIKLSAgICB9LAotICAgIGIuZWFzaW5nID0gewot
ICAgICAgICBsaW5lYXI6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHJldHVybiBlCi0gICAg
ICAgIH0sCi0gICAgICAgIHN3aW5nOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICByZXR1cm4g
LjUgLSBNYXRoLmNvcyhlICogTWF0aC5QSSkgLyAyCi0gICAgICAgIH0KLSAgICB9LAotICAgIGIu
dGltZXJzID0gW10sCi0gICAgYi5meCA9IHJyLnByb3RvdHlwZS5pbml0LAotICAgIGIuZngudGlj
ayA9IGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgZSwKLSAgICAgICAgICAgIG4gPSBiLnRpbWVy
cywKLSAgICAgICAgICAgIHIgPSAwOwotICAgICAgICBmb3IgKFhuID0gYi5ub3coKTsgbi5sZW5n
dGggPiByOyByKyspCi0gICAgICAgICAgICBlID0gbltyXSwKLSAgICAgICAgICAgIGUoKSB8fCBu
W3JdICE9PSBlIHx8IG4uc3BsaWNlKHItLSwgMSk7Ci0gICAgICAgIG4ubGVuZ3RoIHx8IGIuZngu
c3RvcCgpLAotICAgICAgICBYbiA9IHQKLSAgICB9LAotICAgIGIuZngudGltZXIgPSBmdW5jdGlv
bihlKSB7Ci0gICAgICAgIGUoKSAmJiBiLnRpbWVycy5wdXNoKGUpICYmIGIuZnguc3RhcnQoKQot
ICAgIH0sCi0gICAgYi5meC5pbnRlcnZhbCA9IDEzLAotICAgIGIuZnguc3RhcnQgPSBmdW5jdGlv
bigpIHsKLSAgICAgICAgVW4gfHwgKFVuID0gc2V0SW50ZXJ2YWwoYi5meC50aWNrLCBiLmZ4Lmlu
dGVydmFsKSkKLSAgICB9LAotICAgIGIuZnguc3RvcCA9IGZ1bmN0aW9uKCkgewotICAgICAgICBj
bGVhckludGVydmFsKFVuKSwKLSAgICAgICAgVW4gPSBudWxsCi0gICAgfSwKLSAgICBiLmZ4LnNw
ZWVkcyA9IHsKLSAgICAgICAgc2xvdzogNjAwLAotICAgICAgICBmYXN0OiAyMDAsCi0gICAgICAg
IF9kZWZhdWx0OiA0MDAKLSAgICB9LAotICAgIGIuZnguc3RlcCA9IHt9LAotICAgIGIuZXhwciAm
JiBiLmV4cHIuZmlsdGVycyAmJiAoYi5leHByLmZpbHRlcnMuYW5pbWF0ZWQgPSBmdW5jdGlvbihl
KSB7Ci0gICAgICAgIHJldHVybiBiLmdyZXAoYi50aW1lcnMsIGZ1bmN0aW9uKHQpIHsKLSAgICAg
ICAgICAgIHJldHVybiBlID09PSB0LmVsZW0KLSAgICAgICAgfSkubGVuZ3RoCi0gICAgfSksCi0g
ICAgYi5mbi5vZmZzZXQgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgIGlmIChhcmd1bWVudHMubGVu
Z3RoKQotICAgICAgICAgICAgcmV0dXJuIGUgPT09IHQgPyB0aGlzIDogdGhpcy5lYWNoKGZ1bmN0
aW9uKHQpIHsKLSAgICAgICAgICAgICAgICBiLm9mZnNldC5zZXRPZmZzZXQodGhpcywgZSwgdCkK
LSAgICAgICAgICAgIH0pOwotICAgICAgICB2YXIgbiwKLSAgICAgICAgICAgIHIsCi0gICAgICAg
ICAgICBvID0gewotICAgICAgICAgICAgICAgIHRvcDogMCwKLSAgICAgICAgICAgICAgICBsZWZ0
OiAwCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgYSA9IHRoaXNbMF0sCi0gICAgICAgICAg
ICBzID0gYSAmJiBhLm93bmVyRG9jdW1lbnQ7Ci0gICAgICAgIGlmIChzKQotICAgICAgICAgICAg
cmV0dXJuIG4gPSBzLmRvY3VtZW50RWxlbWVudCwgYi5jb250YWlucyhuLCBhKSA/ICh0eXBlb2Yg
YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QgIT09IGkgJiYgKG8gPSBhLmdldEJvdW5kaW5nQ2xpZW50
UmVjdCgpKSwgciA9IG9yKHMpLCB7Ci0gICAgICAgICAgICAgICAgdG9wOiBvLnRvcCArIChyLnBh
Z2VZT2Zmc2V0IHx8IG4uc2Nyb2xsVG9wKSAtIChuLmNsaWVudFRvcCB8fCAwKSwKLSAgICAgICAg
ICAgICAgICBsZWZ0OiBvLmxlZnQgKyAoci5wYWdlWE9mZnNldCB8fCBuLnNjcm9sbExlZnQpIC0g
KG4uY2xpZW50TGVmdCB8fCAwKQotICAgICAgICAgICAgfSkgOiBvCi0gICAgfSwKLSAgICBiLm9m
ZnNldCA9IHsKLSAgICAgICAgc2V0T2Zmc2V0OiBmdW5jdGlvbihlLCB0LCBuKSB7Ci0gICAgICAg
ICAgICB2YXIgciA9IGIuY3NzKGUsICJwb3NpdGlvbiIpOwotICAgICAgICAgICAgInN0YXRpYyIg
PT09IHIgJiYgKGUuc3R5bGUucG9zaXRpb24gPSAicmVsYXRpdmUiKTsKLSAgICAgICAgICAgIHZh
ciBpID0gYihlKSwKLSAgICAgICAgICAgICAgICBvID0gaS5vZmZzZXQoKSwKLSAgICAgICAgICAg
ICAgICBhID0gYi5jc3MoZSwgInRvcCIpLAotICAgICAgICAgICAgICAgIHMgPSBiLmNzcyhlLCAi
bGVmdCIpLAotICAgICAgICAgICAgICAgIHUgPSAoImFic29sdXRlIiA9PT0gciB8fCAiZml4ZWQi
ID09PSByKSAmJiBiLmluQXJyYXkoImF1dG8iLCBbYSwgc10pID4gLTEsCi0gICAgICAgICAgICAg
ICAgbCA9IHt9LAotICAgICAgICAgICAgICAgIGMgPSB7fSwKLSAgICAgICAgICAgICAgICBwLAot
ICAgICAgICAgICAgICAgIGY7Ci0gICAgICAgICAgICB1ID8gKGMgPSBpLnBvc2l0aW9uKCksIHAg
PSBjLnRvcCwgZiA9IGMubGVmdCkgOiAocCA9IHBhcnNlRmxvYXQoYSkgfHwgMCwgZiA9IHBhcnNl
RmxvYXQocykgfHwgMCksCi0gICAgICAgICAgICBiLmlzRnVuY3Rpb24odCkgJiYgKHQgPSB0LmNh
bGwoZSwgbiwgbykpLAotICAgICAgICAgICAgbnVsbCAhPSB0LnRvcCAmJiAobC50b3AgPSB0LnRv
cCAtIG8udG9wICsgcCksCi0gICAgICAgICAgICBudWxsICE9IHQubGVmdCAmJiAobC5sZWZ0ID0g
dC5sZWZ0IC0gby5sZWZ0ICsgZiksCi0gICAgICAgICAgICAidXNpbmciIGluIHQgPyB0LnVzaW5n
LmNhbGwoZSwgbCkgOiBpLmNzcyhsKQotICAgICAgICB9Ci0gICAgfSwKLSAgICBiLmZuLmV4dGVu
ZCh7Ci0gICAgICAgIHBvc2l0aW9uOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGlmICh0aGlz
WzBdKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGUsCi0gICAgICAgICAgICAgICAgICAgIHQsCi0g
ICAgICAgICAgICAgICAgICAgIG4gPSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0b3A6IDAs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwCi0gICAgICAgICAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzWzBdOwotICAgICAgICAgICAgICAgIHJldHVy
biAiZml4ZWQiID09PSBiLmNzcyhyLCAicG9zaXRpb24iKSA/IHQgPSByLmdldEJvdW5kaW5nQ2xp
ZW50UmVjdCgpIDogKGUgPSB0aGlzLm9mZnNldFBhcmVudCgpLCB0ID0gdGhpcy5vZmZzZXQoKSwg
Yi5ub2RlTmFtZShlWzBdLCAiaHRtbCIpIHx8IChuID0gZS5vZmZzZXQoKSksIG4udG9wICs9IGIu
Y3NzKGVbMF0sICJib3JkZXJUb3BXaWR0aCIsICEwKSwgbi5sZWZ0ICs9IGIuY3NzKGVbMF0sICJi
b3JkZXJMZWZ0V2lkdGgiLCAhMCkpLCB7Ci0gICAgICAgICAgICAgICAgICAgIHRvcDogdC50b3Ag
LSBuLnRvcCAtIGIuY3NzKHIsICJtYXJnaW5Ub3AiLCAhMCksCi0gICAgICAgICAgICAgICAgICAg
IGxlZnQ6IHQubGVmdCAtIG4ubGVmdCAtIGIuY3NzKHIsICJtYXJnaW5MZWZ0IiwgITApCi0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICBvZmZzZXRQ
YXJlbnQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5vZmZzZXRQYXJlbnQgfHwgby5kb2N1
bWVudEVsZW1lbnQ7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGUgJiYgIWIubm9kZU5hbWUoZSwg
Imh0bWwiKSAmJiAic3RhdGljIiA9PT0gYi5jc3MoZSwgInBvc2l0aW9uIikpCi0gICAgICAgICAg
ICAgICAgICAgIGUgPSBlLm9mZnNldFBhcmVudDsKLSAgICAgICAgICAgICAgICByZXR1cm4gZSB8
fCBvLmRvY3VtZW50RWxlbWVudAotICAgICAgICAgICAgfSkKLSAgICAgICAgfQotICAgIH0pLAot
ICAgIGIuZWFjaCh7Ci0gICAgICAgIHNjcm9sbExlZnQ6ICJwYWdlWE9mZnNldCIsCi0gICAgICAg
IHNjcm9sbFRvcDogInBhZ2VZT2Zmc2V0IgotICAgIH0sIGZ1bmN0aW9uKGUsIG4pIHsKLSAgICAg
ICAgdmFyIHIgPSAvWS8udGVzdChuKTsKLSAgICAgICAgYi5mbltlXSA9IGZ1bmN0aW9uKGkpIHsK
LSAgICAgICAgICAgIHJldHVybiBiLmFjY2Vzcyh0aGlzLCBmdW5jdGlvbihlLCBpLCBvKSB7Ci0g
ICAgICAgICAgICAgICAgdmFyIGEgPSBvcihlKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbyA9
PT0gdCA/IGEgPyBuIGluIGEgPyBhW25dIDogYS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbaV0g
OiBlW2ldIDogKGEgPyBhLnNjcm9sbFRvKHIgPyBiKGEpLnNjcm9sbExlZnQoKSA6IG8sIHIgPyBv
IDogYihhKS5zY3JvbGxUb3AoKSkgOiBlW2ldID0gbywgdCkKLSAgICAgICAgICAgIH0sIGUsIGks
IGFyZ3VtZW50cy5sZW5ndGgsIG51bGwpCi0gICAgICAgIH0KLSAgICB9KTsKLSAgICBmdW5jdGlv
biBvcihlKSB7Ci0gICAgICAgIHJldHVybiBiLmlzV2luZG93KGUpID8gZSA6IDkgPT09IGUubm9k
ZVR5cGUgPyBlLmRlZmF1bHRWaWV3IHx8IGUucGFyZW50V2luZG93IDogITEKLSAgICB9Ci0gICAg
Yi5lYWNoKHsKLSAgICAgICAgSGVpZ2h0OiAiaGVpZ2h0IiwKLSAgICAgICAgV2lkdGg6ICJ3aWR0
aCIKLSAgICB9LCBmdW5jdGlvbihlLCBuKSB7Ci0gICAgICAgIGIuZWFjaCh7Ci0gICAgICAgICAg
ICBwYWRkaW5nOiAiaW5uZXIiICsgZSwKLSAgICAgICAgICAgIGNvbnRlbnQ6IG4sCi0gICAgICAg
ICAgICAiIjogIm91dGVyIiArIGUKLSAgICAgICAgfSwgZnVuY3Rpb24ociwgaSkgewotICAgICAg
ICAgICAgYi5mbltpXSA9IGZ1bmN0aW9uKGksIG8pIHsKLSAgICAgICAgICAgICAgICB2YXIgYSA9
IGFyZ3VtZW50cy5sZW5ndGggJiYgKHIgfHwgImJvb2xlYW4iICE9IHR5cGVvZiBpKSwKLSAgICAg
ICAgICAgICAgICAgICAgcyA9IHIgfHwgKGkgPT09ICEwIHx8IG8gPT09ICEwID8gIm1hcmdpbiIg
OiAiYm9yZGVyIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGIuYWNjZXNzKHRoaXMsIGZ1bmN0
aW9uKG4sIHIsIGkpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIG87Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBiLmlzV2luZG93KG4pID8gbi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRb
ImNsaWVudCIgKyBlXSA6IDkgPT09IG4ubm9kZVR5cGUgPyAobyA9IG4uZG9jdW1lbnRFbGVtZW50
LCBNYXRoLm1heChuLmJvZHlbInNjcm9sbCIgKyBlXSwgb1sic2Nyb2xsIiArIGVdLCBuLmJvZHlb
Im9mZnNldCIgKyBlXSwgb1sib2Zmc2V0IiArIGVdLCBvWyJjbGllbnQiICsgZV0pKSA6IGkgPT09
IHQgPyBiLmNzcyhuLCByLCBzKSA6IGIuc3R5bGUobiwgciwgaSwgcykKLSAgICAgICAgICAgICAg
ICB9LCBuLCBhID8gaSA6IHQsIGEsIG51bGwpCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0pCi0g
ICAgfSksCi0gICAgZS5qUXVlcnkgPSBlLiQgPSBiLAotICAgICJmdW5jdGlvbiIgPT0gdHlwZW9m
IGRlZmluZSAmJiBkZWZpbmUuYW1kICYmIGRlZmluZS5hbWQualF1ZXJ5ICYmIGRlZmluZSgianF1
ZXJ5IiwgW10sIGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1cm4gYgotICAgIH0pCi19KSh3aW5k
b3cpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3Vy
Y2VzL2phdmFzY3JpcHQtdGVzdHMvc2FtcGxlLW5vcm1hbC11dGlsaXRpZXMtZXhwZWN0ZWQuanMg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10
ZXN0cy9zYW1wbGUtbm9ybWFsLXV0aWxpdGllcy1leHBlY3RlZC5qcwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNWU2YzIyNjU5ZjBjZGFiN2U0ZTFkMmE5MWJmM2NkMzgxMGE3ODdjMS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9zYW1wbGUt
bm9ybWFsLXV0aWxpdGllcy1leHBlY3RlZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDEyNjggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLXZhciBlbURhc2ggPSAiXHUyMDE0IjsKLXZhciBlbkRhc2ggPSAi
XHUyMDEzIjsKLXZhciBlbGxpcHNpcyA9ICJcdTIwMjYiOwotCi1PYmplY3QuZGVmaW5lUHJvcGVy
dHkoT2JqZWN0LCAic2hhbGxvd0NvcHkiLAotewotICAgIHZhbHVlOiBmdW5jdGlvbihvYmplY3Qp
Ci0gICAgewotICAgICAgICAvLyBNYWtlIGEgbmV3IG9iamVjdCBhbmQgY29weSBhbGwgdGhlIGtl
eS92YWx1ZXMuIFRoZSB2YWx1ZXMgYXJlIG5vdCBjb3BpZWQuCi0gICAgICAgIHZhciBjb3B5ID0g
e307Ci0gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsKLSAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgY29weVtrZXlz
W2ldXSA9IG9iamVjdFtrZXlzW2ldXTsKLSAgICAgICAgcmV0dXJuIGNvcHk7Ci0gICAgfQotfSk7
Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QsICJzaGFsbG93RXF1YWwiLAotewotICAg
IHZhbHVlOiBmdW5jdGlvbihhLCBiKQotICAgIHsKLSAgICAgICAgLy8gQ2hlY2tzIGlmIHR3byBv
YmplY3RzIGhhdmUgdGhlIHNhbWUgdG9wLWxldmVsIHByb3BlcnRpZXMuCi0KLSAgICAgICAgLy8g
Q2hlY2sgZm9yIHN0cmljdCBlcXVhbGl0eSBpbiBjYXNlIHRoZXkgYXJlIHRoZSBzYW1lIG9iamVj
dC4KLSAgICAgICAgaWYgKGEgPT09IGIpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
ICAgICAvLyBPbmx5IG9iamVjdHMgY2FuIHByb2NlZWQuIG51bGwgaXMgYW4gb2JqZWN0LCBidXQg
T2JqZWN0LmtleXMgdGhyb3dzIGZvciBudWxsLgotICAgICAgICBpZiAodHlwZW9mIGEgIT09ICJv
YmplY3QiIHx8IHR5cGVvZiBiICE9PSAib2JqZWN0IiB8fCBhID09PSBudWxsIHx8IGIgPT09IG51
bGwpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdmFyIGFLZXlzID0gT2Jq
ZWN0LmtleXMoYSk7Ci0gICAgICAgIHZhciBiS2V5cyA9IE9iamVjdC5rZXlzKGIpOwotCi0gICAg
ICAgIC8vIENoZWNrIHRoYXQgZWFjaCBvYmplY3QgaGFzIHRoZSBzYW1lIG51bWJlciBvZiBrZXlz
LgotICAgICAgICBpZiAoYUtleXMubGVuZ3RoICE9PSBiS2V5cy5sZW5ndGgpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgLy8gQ2hlY2sgaWYgYWxsIHRoZSBrZXlzIGFuZCB0
aGVpciB2YWx1ZXMgYXJlIGVxdWFsLgotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFLZXlz
Lmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAvLyBDaGVjayB0aGF0IGIgaGFzIHRoZSBzYW1l
IGtleSBhcyBhLgotICAgICAgICAgICAgaWYgKCEoYUtleXNbaV0gaW4gYikpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAvLyBDaGVjayB0aGF0IHRoZSB2YWx1
ZXMgYXJlIHN0cmljdCBlcXVhbCBzaW5jZSB0aGlzIGlzIG9ubHkKLSAgICAgICAgICAgIC8vIGEg
c2hhbGxvdyBjaGVjaywgbm90IGEgcmVjdXJzaXZlIG9uZS4KLSAgICAgICAgICAgIGlmIChhW2FL
ZXlzW2ldXSAhPT0gYlthS2V5c1tpXV0pCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShPYmplY3QucHJvdG90eXBlLCAidmFsdWVGb3JDYXNlSW5zZW5zaXRpdmVL
ZXkiLAotewotICAgIHZhbHVlOiBmdW5jdGlvbihrZXkpCi0gICAgewotICAgICAgICBpZiAodGhp
cy5oYXNPd25Qcm9wZXJ0eShrZXkpKQotICAgICAgICAgICAgcmV0dXJuIHRoaXNba2V5XTsKLQot
ICAgICAgICB2YXIgbG93ZXJDYXNlS2V5ID0ga2V5LnRvTG93ZXJDYXNlKCk7Ci0gICAgICAgIGZv
ciAodmFyIGN1cnJlbnRLZXkgaW4gdGhpcykgewotICAgICAgICAgICAgaWYgKGN1cnJlbnRLZXku
dG9Mb3dlckNhc2UoKSA9PT0gbG93ZXJDYXNlS2V5KQotICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzW2N1cnJlbnRLZXldOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsK
LSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KE1hcCwgImZyb21PYmplY3QiLAot
ewotICAgIHZhbHVlOiBmdW5jdGlvbihvYmplY3QpCi0gICAgewotICAgICAgICBsZXQgbWFwID0g
bmV3IE1hcDsKLSAgICAgICAgZm9yIChsZXQga2V5IGluIG9iamVjdCkKLSAgICAgICAgICAgIG1h
cC5zZXQoa2V5LCBvYmplY3Rba2V5XSk7Ci0gICAgICAgIHJldHVybiBtYXA7Ci0gICAgfQotfSk7
Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShNYXAucHJvdG90eXBlLCAidGFrZSIsCi17Ci0gICAg
dmFsdWU6IGZ1bmN0aW9uKGtleSkKLSAgICB7Ci0gICAgICAgIHZhciBkZWxldGVkVmFsdWUgPSB0
aGlzLmdldChrZXkpOwotICAgICAgICB0aGlzLmRlbGV0ZShrZXkpOwotICAgICAgICByZXR1cm4g
ZGVsZXRlZFZhbHVlOwotICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZS5w
cm90b3R5cGUsICJlbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzIiwKLXsKLSAgICB2YWx1ZTog
ZnVuY3Rpb24oY2xhc3NOYW1lKQotICAgIHsKLSAgICAgICAgZm9yICh2YXIgbm9kZSA9IHRoaXM7
IG5vZGUgJiYgbm9kZSAhPT0gdGhpcy5vd25lckRvY3VtZW50OyBub2RlID0gbm9kZS5wYXJlbnRO
b2RlKQotICAgICAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RF
ICYmIG5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIG5vZGU7Ci0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0KLX0pOwotCi1PYmplY3Qu
ZGVmaW5lUHJvcGVydHkoTm9kZS5wcm90b3R5cGUsICJlbmNsb3NpbmdOb2RlT3JTZWxmV2l0aE5v
ZGVOYW1lSW5BcnJheSIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKG5hbWVBcnJheSkKLSAgICB7
Ci0gICAgICAgIHZhciBsb3dlckNhc2VOYW1lQXJyYXkgPSBuYW1lQXJyYXkubWFwKGZ1bmN0aW9u
KG5hbWUpIHsKLSAgICAgICAgICAgIHJldHVybiBuYW1lLnRvTG93ZXJDYXNlKCk7Ci0gICAgICAg
IH0pOwotICAgICAgICBmb3IgKHZhciBub2RlID0gdGhpczsgbm9kZSAmJiBub2RlICE9PSB0aGlz
Lm93bmVyRG9jdW1lbnQ7IG5vZGUgPSBub2RlLnBhcmVudE5vZGUpIHsKLSAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbmFtZUFycmF5Lmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbG93ZXJDYXNlTmFtZUFycmF5
W2ldKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotCi0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0KLX0pOwotCi1PYmplY3QuZGVm
aW5lUHJvcGVydHkoTm9kZS5wcm90b3R5cGUsICJlbmNsb3NpbmdOb2RlT3JTZWxmV2l0aE5vZGVO
YW1lIiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24obm9kZU5hbWUpCi0gICAgewotICAgICAgICBy
ZXR1cm4gdGhpcy5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aE5vZGVOYW1lSW5BcnJheShbbm9kZU5h
bWVdKTsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBl
LCAiaXNBbmNlc3RvciIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKG5vZGUpCi0gICAgewotICAg
ICAgICBpZiAoIW5vZGUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdmFy
IGN1cnJlbnROb2RlID0gbm9kZS5wYXJlbnROb2RlOwotICAgICAgICB3aGlsZSAoY3VycmVudE5v
ZGUpIHsKLSAgICAgICAgICAgIGlmICh0aGlzID09PSBjdXJyZW50Tm9kZSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUu
cGFyZW50Tm9kZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19
KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBlLCAiaXNEZXNjZW5kYW50
IiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24oZGVzY2VuZGFudCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiAhIWRlc2NlbmRhbnQgJiYgZGVzY2VuZGFudC5pc0FuY2VzdG9yKHRoaXMpOwotICAgIH0K
LX0pOwotCi0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlwZSwgImlzU2VsZk9y
QW5jZXN0b3IiLAotewotICAgIHZhbHVlOiBmdW5jdGlvbihub2RlKQotICAgIHsKLSAgICAgICAg
cmV0dXJuICEhbm9kZSAmJiAobm9kZSA9PT0gdGhpcyB8fCB0aGlzLmlzQW5jZXN0b3Iobm9kZSkp
OwotICAgIH0KLX0pOwotCi0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlwZSwg
ImlzU2VsZk9yRGVzY2VuZGFudCIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKG5vZGUpCi0gICAg
ewotICAgICAgICByZXR1cm4gISFub2RlICYmIChub2RlID09PSB0aGlzIHx8IHRoaXMuaXNEZXNj
ZW5kYW50KG5vZGUpKTsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUu
cHJvdG90eXBlLCAidHJhdmVyc2VOZXh0Tm9kZSIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKHN0
YXlXaXRoaW4pCi0gICAgewotICAgICAgICB2YXIgbm9kZSA9IHRoaXMuZmlyc3RDaGlsZDsKLSAg
ICAgICAgaWYgKG5vZGUpCi0gICAgICAgICAgICByZXR1cm4gbm9kZTsKLQotICAgICAgICBpZiAo
c3RheVdpdGhpbiAmJiB0aGlzID09PSBzdGF5V2l0aGluKQotICAgICAgICAgICAgcmV0dXJuIG51
bGw7Ci0KLSAgICAgICAgbm9kZSA9IHRoaXMubmV4dFNpYmxpbmc7Ci0gICAgICAgIGlmIChub2Rl
KQotICAgICAgICAgICAgcmV0dXJuIG5vZGU7Ci0KLSAgICAgICAgbm9kZSA9IHRoaXM7Ci0gICAg
ICAgIHdoaWxlIChub2RlICYmICFub2RlLm5leHRTaWJsaW5nICYmICghc3RheVdpdGhpbiB8fCAh
bm9kZS5wYXJlbnROb2RlIHx8IG5vZGUucGFyZW50Tm9kZSAhPT0gc3RheVdpdGhpbikpCi0gICAg
ICAgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlOwotICAgICAgICBpZiAoIW5vZGUpCi0gICAg
ICAgICAgICByZXR1cm4gbnVsbDsKLQotICAgICAgICByZXR1cm4gbm9kZS5uZXh0U2libGluZzsK
LSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBlLCAidHJh
dmVyc2VQcmV2aW91c05vZGUiLAotewotICAgIHZhbHVlOiBmdW5jdGlvbihzdGF5V2l0aGluKQot
ICAgIHsKLSAgICAgICAgaWYgKHN0YXlXaXRoaW4gJiYgdGhpcyA9PT0gc3RheVdpdGhpbikKLSAg
ICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB2YXIgbm9kZSA9IHRoaXMucHJldmlvdXNT
aWJsaW5nOwotICAgICAgICB3aGlsZSAobm9kZSAmJiBub2RlLmxhc3RDaGlsZCkKLSAgICAgICAg
ICAgIG5vZGUgPSBub2RlLmxhc3RDaGlsZDsKLSAgICAgICAgaWYgKG5vZGUpCi0gICAgICAgICAg
ICByZXR1cm4gbm9kZTsKLSAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50Tm9kZTsKLSAgICB9Ci19
KTsKLQotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZS5wcm90b3R5cGUsICJyYW5nZU9mV29y
ZCIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKG9mZnNldCwgc3RvcENoYXJhY3RlcnMsIHN0YXlX
aXRoaW5Ob2RlLCBkaXJlY3Rpb24pCi0gICAgewotICAgICAgICB2YXIgc3RhcnROb2RlOwotICAg
ICAgICB2YXIgc3RhcnRPZmZzZXQgPSAwOwotICAgICAgICB2YXIgZW5kTm9kZTsKLSAgICAgICAg
dmFyIGVuZE9mZnNldCA9IDA7Ci0KLSAgICAgICAgaWYgKCFzdGF5V2l0aGluTm9kZSkKLSAgICAg
ICAgICAgIHN0YXlXaXRoaW5Ob2RlID0gdGhpczsKLQotICAgICAgICBpZiAoIWRpcmVjdGlvbiB8
fCBkaXJlY3Rpb24gPT09ICJiYWNrd2FyZCIgfHwgZGlyZWN0aW9uID09PSAiYm90aCIpIHsKLSAg
ICAgICAgICAgIHZhciBub2RlID0gdGhpczsKLSAgICAgICAgICAgIHdoaWxlIChub2RlKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKG5vZGUgPT09IHN0YXlXaXRoaW5Ob2RlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICghc3RhcnROb2RlKQotICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRO
b2RlID0gc3RheVdpdGhpbk5vZGU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2Rl
LlRFWFRfTk9ERSkgewotICAgICAgICAgICAgICAgICAgICB2YXIgc3RhcnQgPSAobm9kZSA9PT0g
dGhpcyA/IChvZmZzZXQgLSAxKSA6IChub2RlLm5vZGVWYWx1ZS5sZW5ndGggLSAxKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA+PSAwOyAtLWkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChzdG9wQ2hhcmFjdGVycy5pbmRleE9mKG5vZGUubm9kZVZh
bHVlW2ldKSAhPT0gLTEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydE5vZGUg
PSBub2RlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gaSArIDE7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICBpZiAoc3RhcnROb2RlKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLnRyYXZlcnNlUHJldmlvdXNOb2RlKHN0YXlXaXRo
aW5Ob2RlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFzdGFydE5vZGUpIHsK
LSAgICAgICAgICAgICAgICBzdGFydE5vZGUgPSBzdGF5V2l0aGluTm9kZTsKLSAgICAgICAgICAg
ICAgICBzdGFydE9mZnNldCA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBzdGFydE5vZGUgPSB0aGlzOwotICAgICAgICAgICAgc3RhcnRPZmZzZXQgPSBv
ZmZzZXQ7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIWRpcmVjdGlvbiB8fCBkaXJlY3Rpb24g
PT09ICJmb3J3YXJkIiB8fCBkaXJlY3Rpb24gPT09ICJib3RoIikgewotICAgICAgICAgICAgbm9k
ZSA9IHRoaXM7Ci0gICAgICAgICAgICB3aGlsZSAobm9kZSkgewotICAgICAgICAgICAgICAgIGlm
IChub2RlID09PSBzdGF5V2l0aGluTm9kZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIWVu
ZE5vZGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBlbmROb2RlID0gc3RheVdpdGhpbk5vZGU7
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkgewotICAgICAg
ICAgICAgICAgICAgICB2YXIgc3RhcnQgPSAobm9kZSA9PT0gdGhpcyA/IG9mZnNldCA6IDApOwot
ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBub2RlLm5vZGVWYWx1
ZS5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0b3BDaGFyYWN0
ZXJzLmluZGV4T2Yobm9kZS5ub2RlVmFsdWVbaV0pICE9PSAtMSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVuZE5vZGUgPSBub2RlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVuZE9mZnNldCA9IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoZW5kTm9kZSkKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICBub2RlID0gbm9kZS50cmF2ZXJzZU5leHROb2Rl
KHN0YXlXaXRoaW5Ob2RlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFlbmRO
b2RlKSB7Ci0gICAgICAgICAgICAgICAgZW5kTm9kZSA9IHN0YXlXaXRoaW5Ob2RlOwotICAgICAg
ICAgICAgICAgIGVuZE9mZnNldCA9IHN0YXlXaXRoaW5Ob2RlLm5vZGVUeXBlID09PSBOb2RlLlRF
WFRfTk9ERSA/IHN0YXlXaXRoaW5Ob2RlLm5vZGVWYWx1ZS5sZW5ndGggOiBzdGF5V2l0aGluTm9k
ZS5jaGlsZE5vZGVzLmxlbmd0aDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGVuZE5vZGUgPSB0aGlzOwotICAgICAgICAgICAgZW5kT2Zmc2V0ID0gb2Zmc2V0
OwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMub3duZXJEb2N1bWVudC5j
cmVhdGVSYW5nZSgpOwotICAgICAgICByZXN1bHQuc2V0U3RhcnQoc3RhcnROb2RlLCBzdGFydE9m
ZnNldCk7Ci0gICAgICAgIHJlc3VsdC5zZXRFbmQoZW5kTm9kZSwgZW5kT2Zmc2V0KTsKLQotICAg
ICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0
eShFbGVtZW50LnByb3RvdHlwZSwgInJlYWxPZmZzZXRXaWR0aCIsCi17Ci0gICAgZ2V0OiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KS53aWR0aDsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KEVsZW1lbnQucHJv
dG90eXBlLCAicmVhbE9mZnNldEhlaWdodCIsCi17Ci0gICAgZ2V0OiBmdW5jdGlvbigpCi0gICAg
ewotICAgICAgICByZXR1cm4gdGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7Ci0g
ICAgfQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShFbGVtZW50LnByb3RvdHlwZSwgInRv
dGFsT2Zmc2V0TGVmdCIsCi17Ci0gICAgZ2V0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBy
ZXR1cm4gdGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0OwotICAgIH0KLX0pOwotCi1P
YmplY3QuZGVmaW5lUHJvcGVydHkoRWxlbWVudC5wcm90b3R5cGUsICJ0b3RhbE9mZnNldFRvcCIs
Ci17Ci0gICAgZ2V0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKS50b3A7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShFbGVtZW50LnByb3RvdHlwZSwgInJlbW92ZUNoaWxkcmVuIiwKLXsKLSAgICB2YWx1ZTog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgLy8gVGhpcyBoYXMgYmVlbiB0ZXN0ZWQgdG8gYmUg
dGhlIGZhc3Rlc3QgcmVtb3ZhbCBtZXRob2QuCi0gICAgICAgIGlmICh0aGlzLmZpcnN0Q2hpbGQp
Ci0gICAgICAgICAgICB0aGlzLnRleHRDb250ZW50ID0gIiI7Ci0gICAgfQotfSk7Ci0KLU9iamVj
dC5kZWZpbmVQcm9wZXJ0eShFbGVtZW50LnByb3RvdHlwZSwgImlzSW5zZXJ0aW9uQ2FyZXRJbnNp
ZGUiLAotewotICAgIHZhbHVlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgc2VsZWN0
aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOwotICAgICAgICBpZiAoIXNlbGVjdGlvbi5yYW5n
ZUNvdW50IHx8ICFzZWxlY3Rpb24uaXNDb2xsYXBzZWQpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIHZhciBzZWxlY3Rpb25SYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDAp
OwotICAgICAgICByZXR1cm4gc2VsZWN0aW9uUmFuZ2Uuc3RhcnRDb250YWluZXIgPT09IHRoaXMg
fHwgc2VsZWN0aW9uUmFuZ2Uuc3RhcnRDb250YWluZXIuaXNEZXNjZW5kYW50KHRoaXMpOwotICAg
IH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoRWxlbWVudC5wcm90b3R5cGUsICJyZW1v
dmVNYXRjaGluZ1N0eWxlQ2xhc3NlcyIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKGNsYXNzTmFt
ZVJlZ2V4KQotICAgIHsKLSAgICAgICAgdmFyIHJlZ2V4ID0gbmV3IFJlZ0V4cCgiKF58XFxzKyki
ICsgY2xhc3NOYW1lUmVnZXggKyAiKCR8XFxzKykiKTsKLSAgICAgICAgaWYgKHJlZ2V4LnRlc3Qo
dGhpcy5jbGFzc05hbWUpKQotICAgICAgICAgICAgdGhpcy5jbGFzc05hbWUgPSB0aGlzLmNsYXNz
TmFtZS5yZXBsYWNlKHJlZ2V4LCAiICIpOwotICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJv
cGVydHkoRWxlbWVudC5wcm90b3R5cGUsICJjcmVhdGVDaGlsZCIsCi17Ci0gICAgdmFsdWU6IGZ1
bmN0aW9uKGVsZW1lbnROYW1lLCBjbGFzc05hbWUpCi0gICAgewotICAgICAgICB2YXIgZWxlbWVu
dCA9IHRoaXMub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsZW1lbnROYW1lKTsKLSAgICAg
ICAgaWYgKGNsYXNzTmFtZSkKLSAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3NO
YW1lOwotICAgICAgICB0aGlzLmFwcGVuZENoaWxkKGVsZW1lbnQpOwotICAgICAgICByZXR1cm4g
ZWxlbWVudDsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KEVsZW1lbnQucHJv
dG90eXBlLCAiaXNTY3JvbGxlZFRvQm90dG9tIiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgLy8gVGhpcyBjb2RlIHdvcmtzIG9ubHkgZm9yIDAtd2lkdGggYm9yZGVy
Ci0gICAgICAgIHJldHVybiB0aGlzLnNjcm9sbFRvcCArIHRoaXMuY2xpZW50SGVpZ2h0ID09PSB0
aGlzLnNjcm9sbEhlaWdodDsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KEVs
ZW1lbnQucHJvdG90eXBlLCAicmVjYWxjdWxhdGVTdHlsZXMiLAotewotICAgIHZhbHVlOiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICB0aGlzLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0
Q29tcHV0ZWRTdHlsZSh0aGlzKTsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5
KERvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLCAiY3JlYXRlQ2hpbGQiLAotewotICAgIHZhbHVl
OiBFbGVtZW50LnByb3RvdHlwZS5jcmVhdGVDaGlsZAotfSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShBcnJheS5wcm90b3R5cGUsICJsYXN0VmFsdWUiLAotewotICAgIGdldDogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiB1
bmRlZmluZWQ7Ci0gICAgICAgIHJldHVybiB0aGlzW3RoaXMubGVuZ3RoIC0gMV07Ci0gICAgfQot
fSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90b3R5cGUsICJyZW1vdmUiLAot
ewotICAgIHZhbHVlOiBmdW5jdGlvbih2YWx1ZSwgb25seUZpcnN0KQotICAgIHsKLSAgICAgICAg
Zm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKLSAgICAgICAgICAg
IGlmICh0aGlzW2ldID09PSB2YWx1ZSkgewotICAgICAgICAgICAgICAgIHRoaXMuc3BsaWNlKGks
IDEpOwotICAgICAgICAgICAgICAgIGlmIChvbmx5Rmlyc3QpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0pOwotCi1PYmplY3Qu
ZGVmaW5lUHJvcGVydHkoQXJyYXkucHJvdG90eXBlLCAiaW5zZXJ0QXRJbmRleCIsCi17Ci0gICAg
dmFsdWU6IGZ1bmN0aW9uKHZhbHVlLCBpbmRleCkKLSAgICB7Ci0gICAgICAgIHRoaXMuc3BsaWNl
KGluZGV4LCAwLCB2YWx1ZSk7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShB
cnJheS5wcm90b3R5cGUsICJrZXlTZXQiLAotewotICAgIHZhbHVlOiBmdW5jdGlvbigpCi0gICAg
ewotICAgICAgICBsZXQga2V5cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7Ci0gICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGtleXNbdGhpc1tp
XV0gPSB0cnVlOwotICAgICAgICByZXR1cm4ga2V5czsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRl
ZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgInBhcnRpdGlvbiIsCi17Ci0gICAgdmFsdWU6
IGZ1bmN0aW9uKGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgbGV0IHBvc2l0aXZlID0gW107Ci0g
ICAgICAgIGxldCBuZWdhdGl2ZSA9IFtdOwotICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRo
aXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXNbaV07Ci0gICAg
ICAgICAgICBpZiAoY2FsbGJhY2sodmFsdWUpKQotICAgICAgICAgICAgICAgIHBvc2l0aXZlLnB1
c2godmFsdWUpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG5lZ2F0aXZlLnB1
c2godmFsdWUpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBbcG9zaXRpdmUsIG5lZ2F0aXZl
XTsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KFN0cmluZy5wcm90b3R5cGUs
ICJ0cmltTWlkZGxlIiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24obWF4TGVuZ3RoKQotICAgIHsK
LSAgICAgICAgaWYgKHRoaXMubGVuZ3RoIDw9IG1heExlbmd0aCkKLSAgICAgICAgICAgIHJldHVy
biB0aGlzOwotICAgICAgICB2YXIgbGVmdEhhbGYgPSBtYXhMZW5ndGggPj4gMTsKLSAgICAgICAg
dmFyIHJpZ2h0SGFsZiA9IG1heExlbmd0aCAtIGxlZnRIYWxmIC0gMTsKLSAgICAgICAgcmV0dXJu
IHRoaXMuc3Vic3RyKDAsIGxlZnRIYWxmKSArIGVsbGlwc2lzICsgdGhpcy5zdWJzdHIodGhpcy5s
ZW5ndGggLSByaWdodEhhbGYsIHJpZ2h0SGFsZik7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZp
bmVQcm9wZXJ0eShTdHJpbmcucHJvdG90eXBlLCAidHJpbUVuZCIsCi17Ci0gICAgdmFsdWU6IGZ1
bmN0aW9uKG1heExlbmd0aCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLmxlbmd0aCA8PSBtYXhM
ZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgcmV0dXJuIHRoaXMuc3Vi
c3RyKDAsIG1heExlbmd0aCAtIDEpICsgZWxsaXBzaXM7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShTdHJpbmcucHJvdG90eXBlLCAidHJ1bmNhdGUiLAotewotICAgIHZhbHVl
OiBmdW5jdGlvbihtYXhMZW5ndGgpCi0gICAgewotICAgICAgICAidXNlIHN0cmljdCI7Ci0KLSAg
ICAgICAgaWYgKHRoaXMubGVuZ3RoIDw9IG1heExlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiB0
aGlzOwotCi0gICAgICAgIGxldCBjbGlwcGVkID0gdGhpcy5zbGljZSgwLCBtYXhMZW5ndGgpOwot
ICAgICAgICBsZXQgaW5kZXhPZkxhc3RXaGl0ZXNwYWNlID0gY2xpcHBlZC5zZWFyY2goL1xzXFMq
JC8pOwotICAgICAgICBpZiAoaW5kZXhPZkxhc3RXaGl0ZXNwYWNlID4gTWF0aC5mbG9vcihtYXhM
ZW5ndGggLyAyKSkKLSAgICAgICAgICAgIGNsaXBwZWQgPSBjbGlwcGVkLnNsaWNlKDAsIGluZGV4
T2ZMYXN0V2hpdGVzcGFjZSAtIDEpOwotCi0gICAgICAgIHJldHVybiBjbGlwcGVkICsgZWxsaXBz
aXM7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShTdHJpbmcucHJvdG90eXBl
LCAiY29sbGFwc2VXaGl0ZXNwYWNlIiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMucmVwbGFjZSgvW1xzXHhBMF0rL2csICIgIik7Ci0gICAgfQot
fSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShTdHJpbmcucHJvdG90eXBlLCAiZXNjYXBlQ2hh
cmFjdGVycyIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKGNoYXJzKQotICAgIHsKLSAgICAgICAg
dmFyIGZvdW5kQ2hhciA9IGZhbHNlOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJz
Lmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5pbmRleE9mKGNoYXJzLmNoYXJB
dChpKSkgIT09IC0xKSB7Ci0gICAgICAgICAgICAgICAgZm91bmRDaGFyID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlm
ICghZm91bmRDaGFyKQotICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0KLSAgICAgICAgdmFyIHJl
c3VsdCA9ICIiOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgICAgIGlmIChjaGFycy5pbmRleE9mKHRoaXMuY2hhckF0KGkpKSAhPT0gLTEp
Ci0gICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJcXCI7Ci0gICAgICAgICAgICByZXN1bHQgKz0g
dGhpcy5jaGFyQXQoaSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAg
IH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoU3RyaW5nLnByb3RvdHlwZSwgImVzY2Fw
ZUZvclJlZ0V4cCIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLmVzY2FwZUNoYXJhY3RlcnMoIl5bXXt9KClcXC4kKis/fCIpOwotICAgIH0KLX0p
OwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoU3RyaW5nLnByb3RvdHlwZSwgImNhcGl0YWxpemUi
LAotewotICAgIHZhbHVlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5j
aGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHRoaXMuc2xpY2UoMSk7Ci0gICAgfQotfSk7Ci0KLU9i
amVjdC5kZWZpbmVQcm9wZXJ0eShTdHJpbmcsICJ0b2tlbml6ZUZvcm1hdFN0cmluZyIsCi17Ci0g
ICAgdmFsdWU6IGZ1bmN0aW9uKGZvcm1hdCkKLSAgICB7Ci0gICAgICAgIHZhciB0b2tlbnMgPSBb
XTsKLSAgICAgICAgdmFyIHN1YnN0aXR1dGlvbkluZGV4ID0gMDsKLQotICAgICAgICBmdW5jdGlv
biBhZGRTdHJpbmdUb2tlbihzdHIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRva2Vucy5wdXNo
KHsKLSAgICAgICAgICAgICAgICB0eXBlOiAic3RyaW5nIiwKLSAgICAgICAgICAgICAgICB2YWx1
ZTogc3RyCi0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGFk
ZFNwZWNpZmllclRva2VuKHNwZWNpZmllciwgcHJlY2lzaW9uLCBzdWJzdGl0dXRpb25JbmRleCkK
LSAgICAgICAgewotICAgICAgICAgICAgdG9rZW5zLnB1c2goewotICAgICAgICAgICAgICAgIHR5
cGU6ICJzcGVjaWZpZXIiLAotICAgICAgICAgICAgICAgIHNwZWNpZmllciwKLSAgICAgICAgICAg
ICAgICBwcmVjaXNpb24sCi0gICAgICAgICAgICAgICAgc3Vic3RpdHV0aW9uSW5kZXgKLSAgICAg
ICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGluZGV4ID0gMDsKLSAgICAgICAg
Zm9yICh2YXIgcHJlY2VudEluZGV4ID0gZm9ybWF0LmluZGV4T2YoIiUiLCBpbmRleCk7IHByZWNl
bnRJbmRleCAhPT0gLTE7IHByZWNlbnRJbmRleCA9IGZvcm1hdC5pbmRleE9mKCIlIiwgaW5kZXgp
KSB7Ci0gICAgICAgICAgICBhZGRTdHJpbmdUb2tlbihmb3JtYXQuc3Vic3RyaW5nKGluZGV4LCBw
cmVjZW50SW5kZXgpKTsKLSAgICAgICAgICAgIGluZGV4ID0gcHJlY2VudEluZGV4ICsgMTsKLQot
ICAgICAgICAgICAgaWYgKGZvcm1hdFtpbmRleF0gPT09ICIlIikgewotICAgICAgICAgICAgICAg
IGFkZFN0cmluZ1Rva2VuKCIlIik7Ci0gICAgICAgICAgICAgICAgKytpbmRleDsKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFpc05h
Tihmb3JtYXRbaW5kZXhdKSkgewotICAgICAgICAgICAgICAgIC8vIFRoZSBmaXJzdCBjaGFyYWN0
ZXIgaXMgYSBudW1iZXIsIGl0IG1pZ2h0IGJlIGEgc3Vic3RpdHV0aW9uIGluZGV4LgotICAgICAg
ICAgICAgICAgIHZhciBudW1iZXIgPSBwYXJzZUludChmb3JtYXQuc3Vic3RyaW5nKGluZGV4KSwg
MTApOwotICAgICAgICAgICAgICAgIHdoaWxlICghaXNOYU4oZm9ybWF0W2luZGV4XSkpCi0gICAg
ICAgICAgICAgICAgICAgICsraW5kZXg7Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiB0aGUgbnVt
YmVyIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCBlbmRzIHdpdGggYSAiJCIsCi0gICAgICAgICAg
ICAgICAgLy8gdGhlbiB0aGlzIGlzIGEgc3Vic3RpdHV0aW9uIGluZGV4LgotICAgICAgICAgICAg
ICAgIGlmIChudW1iZXIgPiAwICYmIGZvcm1hdFtpbmRleF0gPT09ICIkIikgewotICAgICAgICAg
ICAgICAgICAgICBzdWJzdGl0dXRpb25JbmRleCA9IChudW1iZXIgLSAxKTsKLSAgICAgICAgICAg
ICAgICAgICAgKytpbmRleDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIHZhciBwcmVjaXNpb24gPSAtMTsKLSAgICAgICAgICAgIGlmIChmb3JtYXRbaW5k
ZXhdID09PSAiLiIpIHsKLSAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgcHJlY2lzaW9uIHNw
ZWNpZmllci4gSWYgbm8gZGlnaXQgZm9sbG93cyB0aGUgIi4iLAotICAgICAgICAgICAgICAgIC8v
IHRoZW4gdGhlIHByZWNpc2lvbiBzaG91bGQgYmUgemVyby4KLSAgICAgICAgICAgICAgICArK2lu
ZGV4OwotCi0gICAgICAgICAgICAgICAgcHJlY2lzaW9uID0gcGFyc2VJbnQoZm9ybWF0LnN1YnN0
cmluZyhpbmRleCksIDEwKTsKLSAgICAgICAgICAgICAgICBpZiAoaXNOYU4ocHJlY2lzaW9uKSkK
LSAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uID0gMDsKLQotICAgICAgICAgICAgICAgIHdo
aWxlICghaXNOYU4oZm9ybWF0W2luZGV4XSkpCi0gICAgICAgICAgICAgICAgICAgICsraW5kZXg7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGFkZFNwZWNpZmllclRva2VuKGZvcm1hdFtp
bmRleF0sIHByZWNpc2lvbiwgc3Vic3RpdHV0aW9uSW5kZXgpOwotCi0gICAgICAgICAgICArK3N1
YnN0aXR1dGlvbkluZGV4OwotICAgICAgICAgICAgKytpbmRleDsKLSAgICAgICAgfQotCi0gICAg
ICAgIGFkZFN0cmluZ1Rva2VuKGZvcm1hdC5zdWJzdHJpbmcoaW5kZXgpKTsKLQotICAgICAgICBy
ZXR1cm4gdG9rZW5zOwotICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoU3RyaW5n
LnByb3RvdHlwZSwgImhhc2giLAotewotICAgIGdldDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgLy8gTWF0Y2hlcyB0aGUgd3RmL0hhc2hlci5oIChTdXBlckZhc3RIYXNoKSBhbGdvcml0aG0u
Ci0KLSAgICAgICAgLy8gQXJiaXRyYXJ5IHN0YXJ0IHZhbHVlIHRvIGF2b2lkIG1hcHBpbmcgYWxs
IDAncyB0byBhbGwgMCdzLgotICAgICAgICBjb25zdCBzdHJpbmdIYXNoaW5nU3RhcnRWYWx1ZSA9
IDB4OWUzNzc5Yjk7Ci0KLSAgICAgICAgdmFyIHJlc3VsdCA9IHN0cmluZ0hhc2hpbmdTdGFydFZh
bHVlOwotICAgICAgICB2YXIgcGVuZGluZ0NoYXJhY3RlciA9IG51bGw7Ci0gICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIGN1cnJl
bnRDaGFyYWN0ZXIgPSB0aGlzW2ldLmNoYXJDb2RlQXQoMCk7Ci0gICAgICAgICAgICBpZiAocGVu
ZGluZ0NoYXJhY3RlciA9PT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHBlbmRpbmdDaGFyYWN0
ZXIgPSBjdXJyZW50Q2hhcmFjdGVyOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICByZXN1bHQgKz0gcGVuZGluZ0NoYXJhY3RlcjsKLSAgICAg
ICAgICAgIHJlc3VsdCA9IChyZXN1bHQgPDwgMTYpIF4gKChjdXJyZW50Q2hhcmFjdGVyIDw8IDEx
KSBeIHJlc3VsdCk7Ci0gICAgICAgICAgICByZXN1bHQgKz0gcmVzdWx0ID4+IDExOwotCi0gICAg
ICAgICAgICBwZW5kaW5nQ2hhcmFjdGVyID0gbnVsbDsKLSAgICAgICAgfQotCi0gICAgICAgIC8v
IEhhbmRsZSB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gb2RkIGxlbmd0aCBzdHJpbmdzLgotICAgICAg
ICBpZiAocGVuZGluZ0NoYXJhY3RlciAhPT0gbnVsbCkgewotICAgICAgICAgICAgcmVzdWx0ICs9
IHBlbmRpbmdDaGFyYWN0ZXI7Ci0gICAgICAgICAgICByZXN1bHQgXj0gcmVzdWx0IDw8IDExOwot
ICAgICAgICAgICAgcmVzdWx0ICs9IHJlc3VsdCA+PiAxNzsKLSAgICAgICAgfQotCi0gICAgICAg
IC8vIEZvcmNlICJhdmFsYW5jaGluZyIgb2YgZmluYWwgMzEgYml0cy4KLSAgICAgICAgcmVzdWx0
IF49IHJlc3VsdCA8PCAzOwotICAgICAgICByZXN1bHQgKz0gcmVzdWx0ID4+IDU7Ci0gICAgICAg
IHJlc3VsdCBePSByZXN1bHQgPDwgMjsKLSAgICAgICAgcmVzdWx0ICs9IHJlc3VsdCA+PiAxNTsK
LSAgICAgICAgcmVzdWx0IF49IHJlc3VsdCA8PCAxMDsKLQotICAgICAgICAvLyBQcmV2ZW50IDAg
YW5kIG5lZ2F0aXZlIHJlc3VsdHMuCi0gICAgICAgIHJldHVybiAoMHhmZmZmZmZmZiArIHJlc3Vs
dCArIDEpLnRvU3RyaW5nKDM2KTsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5
KFN0cmluZywgInN0YW5kYXJkRm9ybWF0dGVycyIsCi17Ci0gICAgdmFsdWU6IHsKLSAgICAgICAg
ZDogZnVuY3Rpb24oc3Vic3RpdHV0aW9uKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
IWlzTmFOKHN1YnN0aXR1dGlvbikgPyBzdWJzdGl0dXRpb24gOiAwOwotICAgICAgICB9LAotCi0g
ICAgICAgIGY6IGZ1bmN0aW9uKHN1YnN0aXR1dGlvbiwgdG9rZW4pCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmIChzdWJzdGl0dXRpb24gJiYgdG9rZW4ucHJlY2lzaW9uID4gLTEpCi0gICAgICAg
ICAgICAgICAgc3Vic3RpdHV0aW9uID0gc3Vic3RpdHV0aW9uLnRvRml4ZWQodG9rZW4ucHJlY2lz
aW9uKTsKLSAgICAgICAgICAgIHJldHVybiAhaXNOYU4oc3Vic3RpdHV0aW9uKSA/IHN1YnN0aXR1
dGlvbiA6ICh0b2tlbi5wcmVjaXNpb24gPiAtMSA/IE51bWJlcigwKS50b0ZpeGVkKHRva2VuLnBy
ZWNpc2lvbikgOiAwKTsKLSAgICAgICAgfSwKLQotICAgICAgICBzOiBmdW5jdGlvbihzdWJzdGl0
dXRpb24pCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdWJzdGl0dXRpb247Ci0gICAg
ICAgIH0KLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KFN0cmluZywgImZvcm1h
dCIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKGZvcm1hdCwgc3Vic3RpdHV0aW9ucywgZm9ybWF0
dGVycywgaW5pdGlhbFZhbHVlLCBhcHBlbmQpCi0gICAgewotICAgICAgICBpZiAoIWZvcm1hdCB8
fCAhc3Vic3RpdHV0aW9ucyB8fCAhc3Vic3RpdHV0aW9ucy5sZW5ndGgpCi0gICAgICAgICAgICBy
ZXR1cm4gewotICAgICAgICAgICAgICAgIGZvcm1hdHRlZFJlc3VsdDogYXBwZW5kKGluaXRpYWxW
YWx1ZSwgZm9ybWF0KSwKLSAgICAgICAgICAgICAgICB1bnVzZWRTdWJzdGl0dXRpb25zOiBzdWJz
dGl0dXRpb25zCi0gICAgICAgICAgICB9OwotCi0gICAgICAgIGZ1bmN0aW9uIHByZXR0eUZ1bmN0
aW9uTmFtZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAiU3RyaW5nLmZvcm1hdChc
IiIgKyBmb3JtYXQgKyAiXCIsIFwiIiArIHN1YnN0aXR1dGlvbnMuam9pbigiXCIsIFwiIikgKyAi
XCIpIjsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHdhcm4obXNnKQotICAgICAgICB7
Ci0gICAgICAgICAgICBjb25zb2xlLndhcm4ocHJldHR5RnVuY3Rpb25OYW1lKCkgKyAiOiAiICsg
bXNnKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGVycm9yKG1zZykKLSAgICAgICAg
ewotICAgICAgICAgICAgY29uc29sZS5lcnJvcihwcmV0dHlGdW5jdGlvbk5hbWUoKSArICI6ICIg
KyBtc2cpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHJlc3VsdCA9IGluaXRpYWxWYWx1ZTsK
LSAgICAgICAgdmFyIHRva2VucyA9IFN0cmluZy50b2tlbml6ZUZvcm1hdFN0cmluZyhmb3JtYXQp
OwotICAgICAgICB2YXIgdXNlZFN1YnN0aXR1dGlvbkluZGV4ZXMgPSB7fTsKLQotICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFy
IHRva2VuID0gdG9rZW5zW2ldOwotCi0gICAgICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gInN0
cmluZyIpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBhcHBlbmQocmVzdWx0LCB0b2tlbi52
YWx1ZSk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGlmICh0b2tlbi50eXBlICE9PSAic3BlY2lmaWVyIikgewotICAgICAgICAgICAgICAg
IGVycm9yKCJVbmtub3duIHRva2VuIHR5cGUgXCIiICsgdG9rZW4udHlwZSArICJcIiBmb3VuZC4i
KTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgaWYgKHRva2VuLnN1YnN0aXR1dGlvbkluZGV4ID49IHN1YnN0aXR1dGlvbnMubGVuZ3RoKSB7
Ci0gICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vdCBlbm91Z2ggc3Vic3RpdHV0aW9u
cyBmb3IgdGhlIGN1cnJlbnQgc3Vic3RpdHV0aW9uSW5kZXgKLSAgICAgICAgICAgICAgICAvLyBq
dXN0IG91dHB1dCB0aGUgZm9ybWF0IHNwZWNpZmllciBsaXRlcmFsbHkgYW5kIG1vdmUgb24uCi0g
ICAgICAgICAgICAgICAgZXJyb3IoIm5vdCBlbm91Z2ggc3Vic3RpdHV0aW9uIGFyZ3VtZW50cy4g
SGFkICIgKyBzdWJzdGl0dXRpb25zLmxlbmd0aCArICIgYnV0IG5lZWRlZCAiICsgKHRva2VuLnN1
YnN0aXR1dGlvbkluZGV4ICsgMSkgKyAiLCBzbyBzdWJzdGl0dXRpb24gd2FzIHNraXBwZWQuIik7
Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gYXBwZW5kKHJlc3VsdCwgIiUiICsgKHRva2VuLnBy
ZWNpc2lvbiA+IC0xID8gdG9rZW4ucHJlY2lzaW9uIDogIiIpICsgdG9rZW4uc3BlY2lmaWVyKTsK
LSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
dXNlZFN1YnN0aXR1dGlvbkluZGV4ZXNbdG9rZW4uc3Vic3RpdHV0aW9uSW5kZXhdID0gdHJ1ZTsK
LQotICAgICAgICAgICAgaWYgKCEodG9rZW4uc3BlY2lmaWVyIGluIGZvcm1hdHRlcnMpKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gRW5jb3VudGVyZWQgYW4gdW5zdXBwb3J0ZWQgZm9ybWF0IGNoYXJh
Y3RlciwgdHJlYXQgYXMgYSBzdHJpbmcuCi0gICAgICAgICAgICAgICAgd2FybigidW5zdXBwb3J0
ZWQgZm9ybWF0IGNoYXJhY3RlciBcdTIwMUMiICsgdG9rZW4uc3BlY2lmaWVyICsgIlx1MjAxRC4g
VHJlYXRpbmcgYXMgYSBzdHJpbmcuIik7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gYXBwZW5k
KHJlc3VsdCwgc3Vic3RpdHV0aW9uc1t0b2tlbi5zdWJzdGl0dXRpb25JbmRleF0pOwotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXN1bHQg
PSBhcHBlbmQocmVzdWx0LCBmb3JtYXR0ZXJzW3Rva2VuLnNwZWNpZmllcl0oc3Vic3RpdHV0aW9u
c1t0b2tlbi5zdWJzdGl0dXRpb25JbmRleF0sIHRva2VuKSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICB2YXIgdW51c2VkU3Vic3RpdHV0aW9ucyA9IFtdOwotICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHN1YnN0aXR1dGlvbnMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChpIGluIHVz
ZWRTdWJzdGl0dXRpb25JbmRleGVzKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgdW51c2VkU3Vic3RpdHV0aW9ucy5wdXNoKHN1YnN0aXR1dGlvbnNbaV0pOwotICAgICAg
ICB9Ci0KLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIGZvcm1hdHRlZFJlc3VsdDogcmVz
dWx0LAotICAgICAgICAgICAgdW51c2VkU3Vic3RpdHV0aW9ucwotICAgICAgICB9OwotICAgIH0K
LX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoU3RyaW5nLnByb3RvdHlwZSwgImZvcm1hdCIs
Ci17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBTdHJpbmcu
Zm9ybWF0KHRoaXMsIGFyZ3VtZW50cywgU3RyaW5nLnN0YW5kYXJkRm9ybWF0dGVycywgIiIsIGZ1
bmN0aW9uKGEsIGIpIHsKLSAgICAgICAgICAgIHJldHVybiBhICsgYjsKLSAgICAgICAgfSkuZm9y
bWF0dGVkUmVzdWx0OwotICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoU3RyaW5n
LnByb3RvdHlwZSwgImluc2VydFdvcmRCcmVha0NoYXJhY3RlcnMiLAotewotICAgIHZhbHVlOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICAvLyBBZGQgemVybyB3aWR0aCBzcGFjZXMgYWZ0ZXIg
Y2hhcmFjdGVycyB0aGF0IGFyZSBnb29kIHRvIGJyZWFrIGFmdGVyLgotICAgICAgICAvLyBPdGhl
cndpc2UgYSBzdHJpbmcgd2l0aCBubyBzcGFjZXMgd2lsbCBub3QgYnJlYWsgYW5kIG92ZXJmbG93
IGl0cyBjb250YWluZXIuCi0gICAgICAgIC8vIFRoaXMgaXMgbWFpbmx5IHVzZWQgb24gVVJMIHN0
cmluZ3MsIHNvIHRoZSBjaGFyYWN0ZXJzIGFyZSB0YWlsb3JlZCBmb3IgVVJMcy4KLSAgICAgICAg
cmV0dXJuIHRoaXMucmVwbGFjZSgvKFtcLzs6XClcXVx9Jj9dKS9nLCAiJDFcdTIwMGIiKTsKLSAg
ICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KFN0cmluZy5wcm90b3R5cGUsICJyZW1v
dmVXb3JkQnJlYWtDaGFyYWN0ZXJzIiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgLy8gVW5kb2VzIHdoYXQgaW5zZXJ0V29yZEJyZWFrQ2hhcmFjdGVycyBkaWQuCi0g
ICAgICAgIHJldHVybiB0aGlzLnJlcGxhY2UoL1x1MjAwYi9nLCAiIik7Ci0gICAgfQotfSk7Ci0K
LU9iamVjdC5kZWZpbmVQcm9wZXJ0eShTdHJpbmcucHJvdG90eXBlLCAiZ2V0TWF0Y2hpbmdJbmRl
eGVzIiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24obmVlZGxlKQotICAgIHsKLSAgICAgICAgdmFy
IGluZGV4ZXNPZk5lZWRsZSA9IFtdOwotICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmluZGV4T2Yo
bmVlZGxlKTsKLQotICAgICAgICB3aGlsZSAoaW5kZXggPj0gMCkgewotICAgICAgICAgICAgaW5k
ZXhlc09mTmVlZGxlLnB1c2goaW5kZXgpOwotICAgICAgICAgICAgaW5kZXggPSB0aGlzLmluZGV4
T2YobmVlZGxlLCBpbmRleCArIDEpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGluZGV4
ZXNPZk5lZWRsZTsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KFN0cmluZy5w
cm90b3R5cGUsICJsZXZlbnNodGVpbkRpc3RhbmNlIiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24o
cykKLSAgICB7Ci0gICAgICAgIHZhciBtID0gdGhpcy5sZW5ndGg7Ci0gICAgICAgIHZhciBuID0g
cy5sZW5ndGg7Ci0gICAgICAgIHZhciBkID0gbmV3IEFycmF5KG0gKyAxKTsKLQotICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8PSBtOyArK2kpIHsKLSAgICAgICAgICAgIGRbaV0gPSBuZXcgQXJy
YXkobiArIDEpOwotICAgICAgICAgICAgZFtpXVswXSA9IGk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBmb3IgKHZhciBqID0gMDsgaiA8PSBuOyArK2opCi0gICAgICAgICAgICBkWzBdW2pdID0gajsK
LQotICAgICAgICBmb3IgKHZhciBqID0gMTsgaiA8PSBuOyArK2opIHsKLSAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAxOyBpIDw9IG07ICsraSkgewotICAgICAgICAgICAgICAgIGlmICh0aGlzW2kg
LSAxXSA9PT0gc1tqIC0gMV0pCi0gICAgICAgICAgICAgICAgICAgIGRbaV1bal0gPSBkW2kgLSAx
XVtqIC0gMV07Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHZh
ciBkZWxldGlvbiA9IGRbaSAtIDFdW2pdICsgMTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGlu
c2VydGlvbiA9IGRbaV1baiAtIDFdICsgMTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHN1YnN0
aXR1dGlvbiA9IGRbaSAtIDFdW2ogLSAxXSArIDE7Ci0gICAgICAgICAgICAgICAgICAgIGRbaV1b
al0gPSBNYXRoLm1pbihkZWxldGlvbiwgaW5zZXJ0aW9uLCBzdWJzdGl0dXRpb24pOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBk
W21dW25dOwotICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoU3RyaW5nLnByb3Rv
dHlwZSwgInRvQ2FtZWxDYXNlIiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXlx3XSsoXHcpL2csICht
YXRjaCwgZ3JvdXApID0+IGdyb3VwLnRvVXBwZXJDYXNlKCkpOwotICAgIH0KLX0pOwotCi1PYmpl
Y3QuZGVmaW5lUHJvcGVydHkoTWF0aCwgInJvdW5kVG8iLAotewotICAgIHZhbHVlOiBmdW5jdGlv
bihudW0sIHN0ZXApCi0gICAgewotICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChudW0gLyBzdGVw
KSAqIHN0ZXA7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShOdW1iZXIsICJj
b25zdHJhaW4iLAotewotICAgIHZhbHVlOiBmdW5jdGlvbihudW0sIG1pbiwgbWF4KQotICAgIHsK
LSAgICAgICAgaWYgKG1heCA8IG1pbikKLSAgICAgICAgICAgIHJldHVybiBtaW47Ci0KLSAgICAg
ICAgaWYgKG51bSA8IG1pbikKLSAgICAgICAgICAgIG51bSA9IG1pbjsKLSAgICAgICAgZWxzZSBp
ZiAobnVtID4gbWF4KQotICAgICAgICAgICAgbnVtID0gbWF4OwotICAgICAgICByZXR1cm4gbnVt
OwotICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoTnVtYmVyLCAicGVyY2VudGFn
ZVN0cmluZyIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKHBlcmNlbnQsIHByZWNpc2lvbj0xKQot
ICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQocGVyY2VudCA+PSAwICYmIHBlcmNlbnQgPD0g
MTAwKTsKLSAgICAgICAgcmV0dXJuIHBlcmNlbnQudG9GaXhlZChwcmVjaXNpb24pICsgIiUiOwot
ICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoTnVtYmVyLCAic2Vjb25kc1RvTWls
bGlzZWNvbmRzU3RyaW5nIiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24oc2Vjb25kcywgaGlnaGVy
UmVzb2x1dGlvbikKLSAgICB7Ci0gICAgICAgIGxldCBtcyA9IHNlY29uZHMgKiAxMDAwOwotCi0g
ICAgICAgIGlmIChoaWdoZXJSZXNvbHV0aW9uKQotICAgICAgICAgICAgcmV0dXJuIFdJLlVJU3Ry
aW5nKCIlLjJmbXMiKS5mb3JtYXQobXMpOwotICAgICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIiUu
MWZtcyIpLmZvcm1hdChtcyk7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShO
dW1iZXIsICJzZWNvbmRzVG9TdHJpbmciLAotewotICAgIHZhbHVlOiBmdW5jdGlvbihzZWNvbmRz
LCBoaWdoZXJSZXNvbHV0aW9uKQotICAgIHsKLSAgICAgICAgbGV0IG1zID0gc2Vjb25kcyAqIDEw
MDA7Ci0KLSAgICAgICAgaWYgKE1hdGguYWJzKG1zKSA8IDEwKSB7Ci0gICAgICAgICAgICBpZiAo
aGlnaGVyUmVzb2x1dGlvbikKLSAgICAgICAgICAgICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIiUu
M2ZtcyIpLmZvcm1hdChtcyk7Ci0gICAgICAgICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIiUuMmZt
cyIpLmZvcm1hdChtcyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoTWF0aC5hYnMobXMpIDwg
MTAwKSB7Ci0gICAgICAgICAgICBpZiAoaGlnaGVyUmVzb2x1dGlvbikKLSAgICAgICAgICAgICAg
ICByZXR1cm4gV0kuVUlTdHJpbmcoIiUuMmZtcyIpLmZvcm1hdChtcyk7Ci0gICAgICAgICAgICBy
ZXR1cm4gV0kuVUlTdHJpbmcoIiUuMWZtcyIpLmZvcm1hdChtcyk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAoTWF0aC5hYnMobXMpIDwgMTAwMCkgewotICAgICAgICAgICAgaWYgKGhpZ2hlclJl
c29sdXRpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdJLlVJU3RyaW5nKCIlLjFmbXMiKS5m
b3JtYXQobXMpOwotICAgICAgICAgICAgcmV0dXJuIFdJLlVJU3RyaW5nKCIlLjBmbXMiKS5mb3Jt
YXQobXMpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRG8gbm90IGdvIG92ZXIgc2Vjb25kcyB3
aGVuIGluIGhpZ2ggcmVzb2x1dGlvbiBtb2RlLgotICAgICAgICBpZiAoaGlnaGVyUmVzb2x1dGlv
biB8fCBNYXRoLmFicyhzZWNvbmRzKSA8IDYwKQotICAgICAgICAgICAgcmV0dXJuIFdJLlVJU3Ry
aW5nKCIlLjJmcyIpLmZvcm1hdChzZWNvbmRzKTsKLQotICAgICAgICBsZXQgbWludXRlcyA9IHNl
Y29uZHMgLyA2MDsKLSAgICAgICAgaWYgKE1hdGguYWJzKG1pbnV0ZXMpIDwgNjApCi0gICAgICAg
ICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIiUuMWZtaW4iKS5mb3JtYXQobWludXRlcyk7Ci0KLSAg
ICAgICAgbGV0IGhvdXJzID0gbWludXRlcyAvIDYwOwotICAgICAgICBpZiAoTWF0aC5hYnMoaG91
cnMpIDwgMjQpCi0gICAgICAgICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIiUuMWZocnMiKS5mb3Jt
YXQoaG91cnMpOwotCi0gICAgICAgIGxldCBkYXlzID0gaG91cnMgLyAyNDsKLSAgICAgICAgcmV0
dXJuIFdJLlVJU3RyaW5nKCIlLjFmIGRheXMiKS5mb3JtYXQoZGF5cyk7Ci0gICAgfQotfSk7Ci0K
LU9iamVjdC5kZWZpbmVQcm9wZXJ0eShOdW1iZXIsICJieXRlc1RvU3RyaW5nIiwKLXsKLSAgICB2
YWx1ZTogZnVuY3Rpb24oYnl0ZXMsIGhpZ2hlclJlc29sdXRpb24pCi0gICAgewotICAgICAgICBp
ZiAoaGlnaGVyUmVzb2x1dGlvbiA9PT0gdW5kZWZpbmVkKQotICAgICAgICAgICAgaGlnaGVyUmVz
b2x1dGlvbiA9IHRydWU7Ci0KLSAgICAgICAgaWYgKE1hdGguYWJzKGJ5dGVzKSA8IDEwMjQpCi0g
ICAgICAgICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIiUuMGYgQiIpLmZvcm1hdChieXRlcyk7Ci0K
LSAgICAgICAgbGV0IGtpbG9ieXRlcyA9IGJ5dGVzIC8gMTAyNDsKLSAgICAgICAgaWYgKE1hdGgu
YWJzKGtpbG9ieXRlcykgPCAxMDI0KSB7Ci0gICAgICAgICAgICBpZiAoaGlnaGVyUmVzb2x1dGlv
biB8fCBNYXRoLmFicyhraWxvYnl0ZXMpIDwgMTApCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdJ
LlVJU3RyaW5nKCIlLjJmIEtCIikuZm9ybWF0KGtpbG9ieXRlcyk7Ci0gICAgICAgICAgICByZXR1
cm4gV0kuVUlTdHJpbmcoIiUuMWYgS0IiKS5mb3JtYXQoa2lsb2J5dGVzKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGxldCBtZWdhYnl0ZXMgPSBraWxvYnl0ZXMgLyAxMDI0OwotICAgICAgICBpZiAo
aGlnaGVyUmVzb2x1dGlvbiB8fCBNYXRoLmFicyhtZWdhYnl0ZXMpIDwgMTApCi0gICAgICAgICAg
ICByZXR1cm4gV0kuVUlTdHJpbmcoIiUuMmYgTUIiKS5mb3JtYXQobWVnYWJ5dGVzKTsKLSAgICAg
ICAgcmV0dXJuIFdJLlVJU3RyaW5nKCIlLjFmIE1CIikuZm9ybWF0KG1lZ2FieXRlcyk7Ci0gICAg
fQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShVaW50MzJBcnJheSwgImlzTGl0dGxlRW5k
aWFuIiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKCJfaXNM
aXR0bGVFbmRpYW4iIGluIHRoaXMpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5faXNMaXR0bGVF
bmRpYW47Ci0KLSAgICAgICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig0KTsKLSAgICAg
ICAgdmFyIGxvbmdEYXRhID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmZlcik7Ci0gICAgICAgIHZhciBk
YXRhID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKLQotICAgICAgICBsb25nRGF0YVswXSA9IDB4
MGEwYjBjMGQ7Ci0KLSAgICAgICAgdGhpcy5faXNMaXR0bGVFbmRpYW4gPSBkYXRhWzBdID09PSAw
eDBkICYmIGRhdGFbMV0gPT09IDB4MGMgJiYgZGF0YVsyXSA9PT0gMHgwYiAmJiBkYXRhWzNdID09
PSAweDBhOwotCi0gICAgICAgIHJldHVybiB0aGlzLl9pc0xpdHRsZUVuZGlhbjsKLSAgICB9Ci19
KTsKLQotZnVuY3Rpb24gaXNFbXB0eU9iamVjdChvYmplY3QpCi17Ci0gICAgZm9yICh2YXIgcHJv
cGVydHkgaW4gb2JqZWN0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLWZ1bmN0aW9uIGlzRW50ZXJLZXkoZXZlbnQpCi17Ci0gICAgLy8gQ2hlY2sgaWYgdGhp
cyBpcyBhbiBJTUUgZXZlbnQuCi0gICAgcmV0dXJuIGV2ZW50LmtleUNvZGUgIT09IDIyOSAmJiBl
dmVudC5rZXlJZGVudGlmaWVyID09PSAiRW50ZXIiOwotfQotCi1mdW5jdGlvbiByZXNvbHZlRG90
c0luUGF0aChwYXRoKQotewotICAgIGlmICghcGF0aCkKLSAgICAgICAgcmV0dXJuIHBhdGg7Ci0K
LSAgICBpZiAocGF0aC5pbmRleE9mKCIuLyIpID09PSAtMSkKLSAgICAgICAgcmV0dXJuIHBhdGg7
Ci0KLSAgICBjb25zb2xlLmFzc2VydChwYXRoLmNoYXJBdCgwKSA9PT0gIi8iKTsKLQotICAgIHZh
ciByZXN1bHQgPSBbXTsKLQotICAgIHZhciBjb21wb25lbnRzID0gcGF0aC5zcGxpdCgiLyIpOwot
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29tcG9uZW50cy5sZW5ndGg7ICsraSkgewotICAgICAg
ICB2YXIgY29tcG9uZW50ID0gY29tcG9uZW50c1tpXTsKLQotICAgICAgICAvLyBTa2lwIG92ZXIg
Ii4vIi4KLSAgICAgICAgaWYgKGNvbXBvbmVudCA9PT0gIi4iKQotICAgICAgICAgICAgY29udGlu
dWU7Ci0KLSAgICAgICAgLy8gUmV3aW5kIG9uZSBjb21wb25lbnQgZm9yICIuLi8iLgotICAgICAg
ICBpZiAoY29tcG9uZW50ID09PSAiLi4iKSB7Ci0gICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0
aCA9PT0gMSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHJlc3VsdC5w
b3AoKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmVzdWx0
LnB1c2goY29tcG9uZW50KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0LmpvaW4oIi8iKTsK
LX0KLQotZnVuY3Rpb24gcGFyc2VNSU1FVHlwZShmdWxsTWltZVR5cGUpCi17Ci0gICAgaWYgKCFm
dWxsTWltZVR5cGUpCi0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICB0eXBlOiBmdWxsTWlt
ZVR5cGUsCi0gICAgICAgICAgICBib3VuZGFyeTogbnVsbCwKLSAgICAgICAgICAgIGVuY29kaW5n
OiBudWxsCi0gICAgICAgIH07Ci0KLSAgICB2YXIgdHlwZVBhcnRzID0gZnVsbE1pbWVUeXBlLnNw
bGl0KC9ccyo7XHMqLyk7Ci0gICAgY29uc29sZS5hc3NlcnQodHlwZVBhcnRzLmxlbmd0aCA+PSAx
KTsKLQotICAgIHZhciB0eXBlID0gdHlwZVBhcnRzWzBdOwotICAgIHZhciBib3VuZGFyeSA9IG51
bGw7Ci0gICAgdmFyIGVuY29kaW5nID0gbnVsbDsKLQotICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
dHlwZVBhcnRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHZhciBzdWJwYXJ0cyA9IHR5cGVQYXJ0
c1tpXS5zcGxpdCgvXHMqPVxzKi8pOwotICAgICAgICBpZiAoc3VicGFydHMubGVuZ3RoICE9PSAy
KQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKHN1YnBhcnRzWzBdLnRvTG93
ZXJDYXNlKCkgPT09ICJib3VuZGFyeSIpCi0gICAgICAgICAgICBib3VuZGFyeSA9IHN1YnBhcnRz
WzFdOwotICAgICAgICBlbHNlIGlmIChzdWJwYXJ0c1swXS50b0xvd2VyQ2FzZSgpID09PSAiY2hh
cnNldCIpCi0gICAgICAgICAgICBlbmNvZGluZyA9IHN1YnBhcnRzWzFdLnJlcGxhY2UoIl5cInxc
IiQiLCAiIik7IC8vIFRyaW0gcXVvdGVzLgotICAgIH0KLQotICAgIHJldHVybiB7Ci0gICAgICAg
IHR5cGUsCi0gICAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSB8fCBudWxsLAotICAgICAgICBlbmNv
ZGluZzogZW5jb2RpbmcgfHwgbnVsbAotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHNpbXBsZUdsb2JT
dHJpbmdUb1JlZ0V4cChnbG9iU3RyaW5nLCByZWdFeHBGbGFncykKLXsKLSAgICAvLyBPbmx5IHN1
cHBvcnRzICIqIiBnbG9icy4KLQotICAgIGlmICghZ2xvYlN0cmluZykKLSAgICAgICAgcmV0dXJu
IG51bGw7Ci0KLSAgICAvLyBFc2NhcGUgZXZlcnl0aGluZyBmcm9tIFN0cmluZy5wcm90b3R5cGUu
ZXNjYXBlRm9yUmVnRXhwIGV4Y2VwdCAiKiIuCi0gICAgdmFyIHJlZ2V4U3RyaW5nID0gZ2xvYlN0
cmluZy5lc2NhcGVDaGFyYWN0ZXJzKCJeW117fSgpXFwuJCs/fCIpOwotCi0gICAgLy8gVW5lc2Nh
cGUgYWxsIGRvdWJseSBlc2NhcGVkIGJhY2tzbGFzaGVzIGluIGZyb250IG9mIGVzY2FwZWQgYXN0
ZXJpc2tzLgotICAgIC8vIFNvICJcXCoiIHdpbGwgYmVjb21lICJcKiIgYWdhaW4sIHVuZG9pbmcg
ZXNjYXBlQ2hhcmFjdGVycyBlc2NhcGluZyBvZiAiXCIuCi0gICAgLy8gVGhpcyBtYWtlcyAiXCoi
IG1hdGNoIGEgbGl0ZXJhbCAiKiIgaW5zdGVhZCBvZiB1c2luZyB0aGUgIioiIGZvciBnbG9iYmlu
Zy4KLSAgICByZWdleFN0cmluZyA9IHJlZ2V4U3RyaW5nLnJlcGxhY2UoL1xcXFxcKi9nLCAiXFwq
Iik7Ci0KLSAgICAvLyBUaGUgZm9sbG93aW5nIHJlZ2V4IGRvZXNuJ3QgbWF0Y2ggYW4gYXN0ZXJp
c2sgdGhhdCBoYXMgYSBiYWNrc2xhc2ggaW4gZnJvbnQuCi0gICAgLy8gSXQgYWxzbyBjYXRjaGVz
IGNvbnNlY3V0aXZlIGFzdGVyaXNrcyBzbyB0aGV5IGNvbGxhcHNlIGRvd24gd2hlbiByZXBsYWNl
ZC4KLSAgICB2YXIgdW5lc2NhcGVkQXN0ZXJpc2tSZWdleCA9IC8oXnxbXlxcXSlcKisvZzsKLSAg
ICBpZiAodW5lc2NhcGVkQXN0ZXJpc2tSZWdleC50ZXN0KGdsb2JTdHJpbmcpKSB7Ci0gICAgICAg
IC8vIFJlcGxhY2UgYWxsIHVuZXNjYXBlZCBhc3Rlcmlza3Mgd2l0aCAiLioiLgotICAgICAgICBy
ZWdleFN0cmluZyA9IHJlZ2V4U3RyaW5nLnJlcGxhY2UodW5lc2NhcGVkQXN0ZXJpc2tSZWdleCwg
IiQxLioiKTsKLQotICAgICAgICAvLyBNYXRjaCBlZGdlIGJvdW5kYXJpZXMgd2hlbiB0aGVyZSBp
cyBhbiBhc3RlcmlzayB0byBiZXR0ZXIgbWVldCB0aGUgZXhwZWN0YXRpb25zCi0gICAgICAgIC8v
IG9mIHRoZSB1c2VyLiBXaGVuIHNvbWVvbmUgdHlwZXMgIiouanMiIHRoZXkgZG9uJ3QgZXhwZWN0
ICJmb28uanNvbiIgdG8gbWF0Y2guIFRoZXkKLSAgICAgICAgLy8gd291bGQgb25seSBleHBlY3Qg
dGhhdCBpZiB0aGV5IHR5cGUgIiouanMqIi4gV2UgdXNlIFxiIChpbnN0ZWFkIG9mIF4gYW5kICQp
IHRvIGFsbG93Ci0gICAgICAgIC8vIG1hdGNoZXMgaW5zaWRlIHBhdGhzIG9yIFVSTHMsIHNvICJi
YSouanMiIHdpbGwgbWF0Y2ggImZvby9iYXIuanMiIGJ1dCBub3QgImJvby9iYmFyLmpzIi4KLSAg
ICAgICAgLy8gV2hlbiB0aGVyZSBpc24ndCBhbiBhc3RlcmlzayB0aGUgcmVnZXhTdHJpbmcgaXMg
anVzdCBhIHN1YnN0cmluZyBzZWFyY2guCi0gICAgICAgIHJlZ2V4U3RyaW5nID0gIlxcYiIgKyBy
ZWdleFN0cmluZyArICJcXGIiOwotICAgIH0KLQotICAgIHJldHVybiBuZXcgUmVnRXhwKHJlZ2V4
U3RyaW5nLCByZWdFeHBGbGFncyk7Ci19Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5w
cm90b3R5cGUsICJsb3dlckJvdW5kIiwKLXsKLSAgICAvLyBSZXR1cm4gaW5kZXggb2YgdGhlIGxl
ZnRtb3N0IGVsZW1lbnQgdGhhdCBpcyBlcXVhbCBvciBncmVhdGVyCi0gICAgLy8gdGhhbiB0aGUg
c3BlY2ltZW4gb2JqZWN0LiBJZiB0aGVyZSdzIG5vIHN1Y2ggZWxlbWVudCAoaS5lLiBhbGwKLSAg
ICAvLyBlbGVtZW50cyBhcmUgc21hbGxlciB0aGFuIHRoZSBzcGVjaW1lbikgcmV0dXJucyBhcnJh
eS5sZW5ndGguCi0gICAgLy8gVGhlIGZ1bmN0aW9uIHdvcmtzIGZvciBzb3J0ZWQgYXJyYXkuCi0g
ICAgdmFsdWU6IGZ1bmN0aW9uKG9iamVjdCwgY29tcGFyYXRvcikKLSAgICB7Ci0gICAgICAgIGZ1
bmN0aW9uIGRlZmF1bHRDb21wYXJhdG9yKGEsIGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBhIC0gYjsKLSAgICAgICAgfQotICAgICAgICBjb21wYXJhdG9yID0gY29tcGFyYXRvciB8
fCBkZWZhdWx0Q29tcGFyYXRvcjsKLSAgICAgICAgdmFyIGwgPSAwOwotICAgICAgICB2YXIgciA9
IHRoaXMubGVuZ3RoOwotICAgICAgICB3aGlsZSAobCA8IHIpIHsKLSAgICAgICAgICAgIHZhciBt
ID0gKGwgKyByKSA+PiAxOwotICAgICAgICAgICAgaWYgKGNvbXBhcmF0b3Iob2JqZWN0LCB0aGlz
W21dKSA+IDApCi0gICAgICAgICAgICAgICAgbCA9IG0gKyAxOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIHIgPSBtOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByOwotICAg
IH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoQXJyYXkucHJvdG90eXBlLCAidXBwZXJC
b3VuZCIsCi17Ci0gICAgLy8gUmV0dXJuIGluZGV4IG9mIHRoZSBsZWZ0bW9zdCBlbGVtZW50IHRo
YXQgaXMgZ3JlYXRlcgotICAgIC8vIHRoYW4gdGhlIHNwZWNpbWVuIG9iamVjdC4gSWYgdGhlcmUn
cyBubyBzdWNoIGVsZW1lbnQgKGkuZS4gYWxsCi0gICAgLy8gZWxlbWVudHMgYXJlIHNtYWxsZXIg
dGhhbiB0aGUgc3BlY2ltZW4pIHJldHVybnMgYXJyYXkubGVuZ3RoLgotICAgIC8vIFRoZSBmdW5j
dGlvbiB3b3JrcyBmb3Igc29ydGVkIGFycmF5LgotICAgIHZhbHVlOiBmdW5jdGlvbihvYmplY3Qs
IGNvbXBhcmF0b3IpCi0gICAgewotICAgICAgICBmdW5jdGlvbiBkZWZhdWx0Q29tcGFyYXRvcihh
LCBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYSAtIGI7Ci0gICAgICAgIH0KLSAg
ICAgICAgY29tcGFyYXRvciA9IGNvbXBhcmF0b3IgfHwgZGVmYXVsdENvbXBhcmF0b3I7Ci0gICAg
ICAgIHZhciBsID0gMDsKLSAgICAgICAgdmFyIHIgPSB0aGlzLmxlbmd0aDsKLSAgICAgICAgd2hp
bGUgKGwgPCByKSB7Ci0gICAgICAgICAgICB2YXIgbSA9IChsICsgcikgPj4gMTsKLSAgICAgICAg
ICAgIGlmIChjb21wYXJhdG9yKG9iamVjdCwgdGhpc1ttXSkgPj0gMCkKLSAgICAgICAgICAgICAg
ICBsID0gbSArIDE7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgciA9IG07Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHI7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShBcnJheS5wcm90b3R5cGUsICJiaW5hcnlJbmRleE9mIiwKLXsKLSAgICB2YWx1ZTog
ZnVuY3Rpb24odmFsdWUsIGNvbXBhcmF0b3IpCi0gICAgewotICAgICAgICB2YXIgaW5kZXggPSB0
aGlzLmxvd2VyQm91bmQodmFsdWUsIGNvbXBhcmF0b3IpOwotICAgICAgICByZXR1cm4gaW5kZXgg
PCB0aGlzLmxlbmd0aCAmJiBjb21wYXJhdG9yKHZhbHVlLCB0aGlzW2luZGV4XSkgPT09IDAgPyBp
bmRleCA6IC0xOwotICAgIH0KLX0pOwotCi0oZnVuY3Rpb24oKSB7Ci0gICAgY29uc3QgZGVib3Vu
Y2VTeW1ib2wgPSBTeW1ib2woImZ1bmN0aW9uLWRlYm91bmNlLXRpbWVvdXQiKTsKLSAgICBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoRnVuY3Rpb24ucHJvdG90eXBlLCAiZGVib3VuY2UiLAotICAgIHsK
LSAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGRlbGF5LCB0aGlzT2JqZWN0KQotICAgICAgICB7Ci0g
ICAgICAgICAgICBsZXQgY2FsbGJhY2sgPSB0aGlzLmJpbmQodGhpc09iamVjdCk7Ci0gICAgICAg
ICAgICByZXR1cm4gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGNh
bGxiYWNrW2RlYm91bmNlU3ltYm9sXSk7Ci0gICAgICAgICAgICAgICAgbGV0IGFyZ3MgPSBhcmd1
bWVudHM7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2tbZGVib3VuY2VTeW1ib2xdID0gc2V0VGlt
ZW91dCgoKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLmFwcGx5KG51bGwsIGFy
Z3MpOwotICAgICAgICAgICAgICAgIH0sIGRlbGF5KTsKLSAgICAgICAgICAgIH07Ci0gICAgICAg
IH0KLSAgICB9KTsKLX0pKCk7Ci0KLWZ1bmN0aW9uIGFwcGVuZFdlYkluc3BlY3RvclNvdXJjZVVS
TChzdHJpbmcpCi17Ci0gICAgcmV0dXJuICJcbi8vIyBzb3VyY2VVUkw9X19XZWJJbnNwZWN0b3JJ
bnRlcm5hbF9fXG4iICsgc3RyaW5nOwotfQotCi1mdW5jdGlvbiBpc1dlYkluc3BlY3RvckludGVy
bmFsU2NyaXB0KHVybCkKLXsKLSAgICByZXR1cm4gdXJsID09PSAiX19XZWJJbnNwZWN0b3JJbnRl
cm5hbF9fIjsKLX0KLQotZnVuY3Rpb24gaXNXZWJLaXRJbnRlcm5hbFNjcmlwdCh1cmwpCi17Ci0g
ICAgcmV0dXJuIHVybCAmJiB1cmwuc3RhcnRzV2l0aCgiX19XZWIiKSAmJiB1cmwuZW5kc1dpdGgo
Il9fIik7Ci19Ci0KLWZ1bmN0aW9uIGlzRnVuY3Rpb25TdHJpbmdOYXRpdmVDb2RlKHN0cikKLXsK
LSAgICByZXR1cm4gc3RyLmVuZHNXaXRoKCJ7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpOwotfQot
Ci1mdW5jdGlvbiBkb3VibGVRdW90ZWRTdHJpbmcoc3RyKQotewotICAgIHJldHVybiAiXCIiICsg
c3RyLnJlcGxhY2UoL1xcL2csICJcXFxcIikucmVwbGFjZSgvIi9nLCAiXFxcIiIpICsgIlwiIjsK
LX0KLQotZnVuY3Rpb24gaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0
aW9uKG9iamVjdCwgbGlzdCwgY29tcGFyYXRvciwgaW5zZXJ0aW9uSW5kZXhBZnRlcikKLXsKLSAg
ICBpZiAoaW5zZXJ0aW9uSW5kZXhBZnRlcikgewotICAgICAgICByZXR1cm4gbGlzdC51cHBlckJv
dW5kKG9iamVjdCwgY29tcGFyYXRvcik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmV0dXJuIGxp
c3QubG93ZXJCb3VuZChvYmplY3QsIGNvbXBhcmF0b3IpOwotICAgIH0KLX0KLQotZnVuY3Rpb24g
aW5zZXJ0T2JqZWN0SW50b1NvcnRlZEFycmF5KG9iamVjdCwgYXJyYXksIGNvbXBhcmF0b3IpCi17
Ci0gICAgYXJyYXkuc3BsaWNlKGluc2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlG
dW5jdGlvbihvYmplY3QsIGFycmF5LCBjb21wYXJhdG9yKSwgMCwgb2JqZWN0KTsKLX0KLQotZnVu
Y3Rpb24gZGVjb2RlQmFzZTY0VG9CbG9iKGJhc2U2NERhdGEsIG1pbWVUeXBlKQotewotICAgIG1p
bWVUeXBlID0gbWltZVR5cGUgfHwgJyc7Ci0KLSAgICBjb25zdCBzbGljZVNpemUgPSAxMDI0Owot
ICAgIHZhciBieXRlQ2hhcmFjdGVycyA9IGF0b2IoYmFzZTY0RGF0YSk7Ci0gICAgdmFyIGJ5dGVz
TGVuZ3RoID0gYnl0ZUNoYXJhY3RlcnMubGVuZ3RoOwotICAgIHZhciBzbGljZXNDb3VudCA9IE1h
dGguY2VpbChieXRlc0xlbmd0aCAvIHNsaWNlU2l6ZSk7Ci0gICAgdmFyIGJ5dGVBcnJheXMgPSBu
ZXcgQXJyYXkoc2xpY2VzQ291bnQpOwotCi0gICAgZm9yICh2YXIgc2xpY2VJbmRleCA9IDA7IHNs
aWNlSW5kZXggPCBzbGljZXNDb3VudDsgKytzbGljZUluZGV4KSB7Ci0gICAgICAgIHZhciBiZWdp
biA9IHNsaWNlSW5kZXggKiBzbGljZVNpemU7Ci0gICAgICAgIHZhciBlbmQgPSBNYXRoLm1pbihi
ZWdpbiArIHNsaWNlU2l6ZSwgYnl0ZXNMZW5ndGgpOwotCi0gICAgICAgIHZhciBieXRlcyA9IG5l
dyBBcnJheShlbmQgLSBiZWdpbik7Ci0gICAgICAgIGZvciAodmFyIG9mZnNldCA9IGJlZ2luLCBp
ID0gMDsgb2Zmc2V0IDwgZW5kOyArK2ksICsrb2Zmc2V0KQotICAgICAgICAgICAgYnl0ZXNbaV0g
PSBieXRlQ2hhcmFjdGVyc1tvZmZzZXRdLmNoYXJDb2RlQXQoMCk7Ci0KLSAgICAgICAgYnl0ZUFy
cmF5c1tzbGljZUluZGV4XSA9IG5ldyBVaW50OEFycmF5KGJ5dGVzKTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gbmV3IEJsb2IoYnl0ZUFycmF5cywgewotICAgICAgICB0eXBlOiBtaW1lVHlwZQotICAg
IH0pOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVz
b3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvc2FtcGxlLXdlYmluc3BlY3Rvci1vYmplY3QtZXhwZWN0
ZWQuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNj
cmlwdC10ZXN0cy9zYW1wbGUtd2ViaW5zcGVjdG9yLW9iamVjdC1leHBlY3RlZC5qcwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNiNjAxNWYwNmZlODcxNDg1ZDlhNTFiYWNkNzllMDlj
MWM4ZGM4ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0
cy9zYW1wbGUtd2ViaW5zcGVjdG9yLW9iamVjdC1leHBlY3RlZC5qcworKysgL2Rldi9udWxsCkBA
IC0xLDE1OCArMCwwIEBACi1XSS5PYmplY3QgPSBjbGFzcyBXZWJJbnNwZWN0b3JPYmplY3QKLXsK
LSAgICBjb25zdHJ1Y3RvcigpCi0gICAgewotICAgICAgICB0aGlzLl9saXN0ZW5lcnMgPSBudWxs
OwotICAgIH0KLSAgICBzdGF0aWMgYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVy
LCB0aGlzT2JqZWN0KQotICAgIHsKLSAgICAgICAgdGhpc09iamVjdCA9IHRoaXNPYmplY3QgfHwg
bnVsbDsKLSAgICAgICAgaWYgKCFldmVudFR5cGUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGlmICghbGlzdGVuZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICghdGhp
cy5fbGlzdGVuZXJzKQotICAgICAgICAgICAgdGhpcy5fbGlzdGVuZXJzID0gbmV3IE1hcCgpOwot
ICAgICAgICBsZXQgbGlzdGVuZXJzVGFibGUgPSB0aGlzLl9saXN0ZW5lcnMuZ2V0KGV2ZW50VHlw
ZSk7Ci0gICAgICAgIGlmICghbGlzdGVuZXJzVGFibGUpIHsKLSAgICAgICAgICAgIGxpc3RlbmVy
c1RhYmxlID0gbmV3IExpc3RNdWx0aW1hcCgpOwotICAgICAgICAgICAgdGhpcy5fbGlzdGVuZXJz
LnNldChldmVudFR5cGUsIGxpc3RlbmVyc1RhYmxlKTsKLSAgICAgICAgfQotICAgICAgICBsaXN0
ZW5lcnNUYWJsZS5hZGQodGhpc09iamVjdCwgbGlzdGVuZXIpOwotICAgIH0KLSAgICBzdGF0aWMg
c2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdGhpc09iamVjdCkK
LSAgICB7Ci0gICAgICAgIGxldCB3cmFwcGVkQ2FsbGJhY2sgPSBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIHdyYXBwZWRDYWxsYmFj
aywgbnVsbCk7Ci0gICAgICAgICAgICBsaXN0ZW5lci5hcHBseSh0aGlzT2JqZWN0LCBhcmd1bWVu
dHMpOwotICAgICAgICB9LmJpbmQodGhpcyk7Ci0gICAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5l
cihldmVudFR5cGUsIHdyYXBwZWRDYWxsYmFjaywgbnVsbCk7Ci0gICAgICAgIHJldHVybiB3cmFw
cGVkQ2FsbGJhY2s7Ci0gICAgfQotICAgIHN0YXRpYyByZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50
VHlwZSwgbGlzdGVuZXIsIHRoaXNPYmplY3QpCi0gICAgewotICAgICAgICBldmVudFR5cGUgPSBl
dmVudFR5cGUgfHwgbnVsbDsKLSAgICAgICAgbGlzdGVuZXIgPSBsaXN0ZW5lciB8fCBudWxsOwot
ICAgICAgICB0aGlzT2JqZWN0ID0gdGhpc09iamVjdCB8fCBudWxsOwotICAgICAgICBpZiAoIXRo
aXMuX2xpc3RlbmVycykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHRoaXNPYmpl
Y3QgJiYgIWV2ZW50VHlwZSkgewotICAgICAgICAgICAgdGhpcy5fbGlzdGVuZXJzLmZvckVhY2go
ZnVuY3Rpb24obGlzdGVuZXJzVGFibGUpIHsKLSAgICAgICAgICAgICAgICBsZXQgbGlzdGVuZXJQ
YWlycyA9IGxpc3RlbmVyc1RhYmxlLnRvQXJyYXkoKTsKLSAgICAgICAgICAgICAgICBmb3IgKGxl
dCBpID0gMCwgbGVuZ3RoID0gbGlzdGVuZXJQYWlycy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkg
ewotICAgICAgICAgICAgICAgICAgICBsZXQgZXhpc3RpbmdUaGlzT2JqZWN0ID0gbGlzdGVuZXJQ
YWlyc1tpXVswXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nVGhpc09iamVjdCA9
PT0gdGhpc09iamVjdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyc1RhYmxlLmRl
bGV0ZUFsbChleGlzdGluZ1RoaXNPYmplY3QpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGxldCBsaXN0
ZW5lcnNUYWJsZSA9IHRoaXMuX2xpc3RlbmVycy5nZXQoZXZlbnRUeXBlKTsKLSAgICAgICAgaWYg
KCFsaXN0ZW5lcnNUYWJsZSB8fCBsaXN0ZW5lcnNUYWJsZS5zaXplID09PSAwKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBsZXQgZGlkRGVsZXRlID0gbGlzdGVuZXJzVGFibGUuZGVsZXRl
KHRoaXNPYmplY3QsIGxpc3RlbmVyKTsKLSAgICB9Ci0gICAgc3RhdGljIGhhc0V2ZW50TGlzdGVu
ZXJzKGV2ZW50VHlwZSkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fbGlzdGVuZXJzKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBsZXQgbGlzdGVuZXJzVGFibGUgPSB0aGlz
Ll9saXN0ZW5lcnMuZ2V0KGV2ZW50VHlwZSk7Ci0gICAgICAgIHJldHVybiBsaXN0ZW5lcnNUYWJs
ZSAmJiBsaXN0ZW5lcnNUYWJsZS5zaXplID4gMDsKLSAgICB9Ci0gICAgc3RhdGljIHJldGFpbmVk
T2JqZWN0c1dpdGhQcm90b3R5cGUocHJvdG8pCi0gICAgewotICAgICAgICBsZXQgcmVzdWx0cyA9
IG5ldyBTZXQ7Ci0gICAgICAgIGlmICh0aGlzLl9saXN0ZW5lcnMpIHsKLSAgICAgICAgICAgIHRo
aXMuX2xpc3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9uKGxpc3RlbmVyc1RhYmxlLCBldmVudFR5cGUp
IHsKLSAgICAgICAgICAgICAgICBsaXN0ZW5lcnNUYWJsZS5mb3JFYWNoKGZ1bmN0aW9uKHBhaXIp
IHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IHRoaXNPYmplY3QgPSBwYWlyWzBdOwotICAgICAg
ICAgICAgICAgICAgICBpZiAodGhpc09iamVjdCBpbnN0YW5jZW9mIHByb3RvKQotICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0cy5hZGQodGhpc09iamVjdCk7Ci0gICAgICAgICAgICAgICAg
fSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0czsK
LSAgICB9Ci0gICAgYWRkRXZlbnRMaXN0ZW5lcigpCi0gICAgewotICAgICAgICByZXR1cm4gV0ku
T2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAgICB9Ci0g
ICAgc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdJLk9i
amVjdC5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwotICAg
IH0KLSAgICByZW1vdmVFdmVudExpc3RlbmVyKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXSS5P
YmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwotICAgIH0K
LSAgICBoYXNFdmVudExpc3RlbmVycygpCi0gICAgewotICAgICAgICByZXR1cm4gV0kuT2JqZWN0
Lmhhc0V2ZW50TGlzdGVuZXJzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0gICAgfQotICAgIHJl
dGFpbmVkT2JqZWN0c1dpdGhQcm90b3R5cGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdJLk9i
amVjdC5yZXRhaW5lZE9iamVjdHNXaXRoUHJvdG90eXBlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7
Ci0gICAgfQotICAgIGRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhldmVudFR5cGUsIGV2ZW50RGF0
YSkKLSAgICB7Ci0gICAgICAgIGxldCBldmVudCA9IG5ldyBXSS5FdmVudCh0aGlzLCBldmVudFR5
cGUsIGV2ZW50RGF0YSk7Ci0gICAgICAgIGZ1bmN0aW9uIGRpc3BhdGNoKG9iamVjdCkKLSAgICAg
ICAgewotICAgICAgICAgICAgaWYgKCFvYmplY3QgfHwgZXZlbnQuX3N0b3BwZWRQcm9wYWdhdGlv
bikKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBsZXQgbGlzdGVuZXJUeXBl
c01hcCA9IG9iamVjdC5fbGlzdGVuZXJzOwotICAgICAgICAgICAgaWYgKCFsaXN0ZW5lclR5cGVz
TWFwIHx8ICFvYmplY3QuaGFzT3duUHJvcGVydHkoIl9saXN0ZW5lcnMiKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICBsZXQgbGlzdGVuZXJzVGFibGUgPSBsaXN0ZW5lclR5
cGVzTWFwLmdldChldmVudFR5cGUpOwotICAgICAgICAgICAgaWYgKCFsaXN0ZW5lcnNUYWJsZSkK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBsZXQgbGlzdGVuZXJzID0gbGlz
dGVuZXJzVGFibGUudG9BcnJheSgpOwotICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbmd0
aCA9IGxpc3RlbmVycy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAg
IGxldCBbdGhpc09iamVjdCwgbGlzdGVuZXJdID0gbGlzdGVuZXJzW2ldOwotICAgICAgICAgICAg
ICAgIGxpc3RlbmVyLmNhbGwodGhpc09iamVjdCwgZXZlbnQpOwotICAgICAgICAgICAgICAgIGlm
IChldmVudC5fc3RvcHBlZFByb3BhZ2F0aW9uKQotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBkaXNwYXRjaCh0aGlzKTsKLSAgICAg
ICAgZXZlbnQuX3N0b3BwZWRQcm9wYWdhdGlvbiA9IGZhbHNlOwotICAgICAgICBsZXQgY29uc3Ry
dWN0b3IgPSB0aGlzLmNvbnN0cnVjdG9yOwotICAgICAgICB3aGlsZSAoY29uc3RydWN0b3IpIHsK
LSAgICAgICAgICAgIGRpc3BhdGNoKGNvbnN0cnVjdG9yKTsKLSAgICAgICAgICAgIGlmICghY29u
c3RydWN0b3IucHJvdG90eXBlLl9fcHJvdG9fXykKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGNvbnN0cnVjdG9yID0gY29uc3RydWN0b3IucHJvdG90eXBlLl9fcHJvdG9fXy5j
b25zdHJ1Y3RvcjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZXZlbnQuZGVmYXVsdFByZXZl
bnRlZDsKLSAgICB9Ci19Ci07Ci1XSS5FdmVudCA9IGNsYXNzIEV2ZW50Ci17Ci0gICAgY29uc3Ry
dWN0b3IodGFyZ2V0LCB0eXBlLCBkYXRhKQotICAgIHsKLSAgICAgICAgdGhpcy50YXJnZXQgPSB0
YXJnZXQ7Ci0gICAgICAgIHRoaXMudHlwZSA9IHR5cGU7Ci0gICAgICAgIHRoaXMuZGF0YSA9IGRh
dGE7Ci0gICAgICAgIHRoaXMuZGVmYXVsdFByZXZlbnRlZCA9IGZhbHNlOwotICAgICAgICB0aGlz
Ll9zdG9wcGVkUHJvcGFnYXRpb24gPSBmYWxzZTsKLSAgICB9Ci0gICAgc3RvcFByb3BhZ2F0aW9u
KCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3N0b3BwZWRQcm9wYWdhdGlvbiA9IHRydWU7Ci0gICAg
fQotICAgIHByZXZlbnREZWZhdWx0KCkKLSAgICB7Ci0gICAgICAgIHRoaXMuZGVmYXVsdFByZXZl
bnRlZCA9IHRydWU7Ci0gICAgfQotfQotOwotV0kubm90aWZpY2F0aW9ucyA9IG5ldyBXSS5PYmpl
Y3Q7Ci1XSS5Ob3RpZmljYXRpb24gPSB7Ci0gICAgR2xvYmFsTW9kaWZpZXJLZXlzRGlkQ2hhbmdl
OiAiZ2xvYmFsLW1vZGlmaWVycy1kaWQtY2hhbmdlIiwKLSAgICBQYWdlQXJjaGl2ZVN0YXJ0ZWQ6
ICJwYWdlLWFyY2hpdmUtc3RhcnRlZCIsCi0gICAgUGFnZUFyY2hpdmVFbmRlZDogInBhZ2UtYXJj
aGl2ZS1lbmRlZCIsCi0gICAgRXh0cmFEb21haW5zQWN0aXZhdGVkOiAiZXh0cmEtZG9tYWlucy1h
Y3RpdmF0ZWQiLAotICAgIFRhYlR5cGVzQ2hhbmdlZDogInRhYi10eXBlcy1jaGFuZ2VkIiwKLSAg
ICBEZWJ1Z1VJRW5hYmxlZERpZENoYW5nZTogImRlYnVnLXVpLWVuYWJsZWQtZGlkLWNoYW5nZSIs
Ci19OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3Vy
Y2VzL2phdmFzY3JpcHQtdGVzdHMvc3dpdGNoLWNhc2UtZGVmYXVsdC1leHBlY3RlZC5qcyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3Rz
L3N3aXRjaC1jYXNlLWRlZmF1bHQtZXhwZWN0ZWQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDA2NzIyNDc3YzMyZDFhZjRlZDE5MDNjNmRhZTE5YWU0YTNjMTQxNjAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvc3dpdGNoLWNhc2UtZGVm
YXVsdC1leHBlY3RlZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLXN3aXRjaCAo
MSkgewotfQotCi1zd2l0Y2ggKDEpIHsKLX0KLTIKLQotc3dpdGNoICh4KSB7Ci1jYXNlIDE6Ci19
Ci0KLXN3aXRjaCAoeCkgewotY2FzZSAxOgotICAgIDsKLX0KLQotc3dpdGNoICh4KSB7Ci1jYXNl
IDE6Ci0gICAgYnJlYWsKLX0KLQotc3dpdGNoICh4KSB7Ci1jYXNlIDE6Ci0gICAgYnJlYWs7Ci19
Ci0KLXN3aXRjaCAoeCkgewotZGVmYXVsdDoKLX0KLQotc3dpdGNoICh4KSB7Ci1kZWZhdWx0Ogot
ICAgIDsKLX0KLQotc3dpdGNoICh4KSB7Ci1kZWZhdWx0OgotICAgIGJyZWFrCi19Ci0KLXN3aXRj
aCAoeCkgewotY2FzZSAxOgotY2FzZSAyOgotICAgIGJyZWFrOwotfQotCi1zd2l0Y2ggKHgpIHsK
LWNhc2UgMToKLSAgICBicmVhazsKLWNhc2UgMjoKLSAgICBicmVhazsKLX0KLQotc3dpdGNoICh4
KSB7Ci1jYXNlIDE6Ci0gICAgYnJlYWs7Ci1jYXNlIDI6Ci0gICAgYnJlYWs7Ci1kZWZhdWx0Ogot
ICAgIGJyZWFrOwotfQotCi1zd2l0Y2ggKHgpIHsKLWNhc2UgKHgpOgotICAgIGJyZWFrOwotY2Fz
ZSAidGVzdCI6Ci0gICAgYnJlYWs7Ci1kZWZhdWx0OgotICAgIGJyZWFrOwotfQotCi1zd2l0Y2gg
KHgpIHsKLWNhc2UgMToKLSAgICBzd2l0Y2ggKHkpIHsKLSAgICBjYXNlIDI6Ci0gICAgY2FzZSAz
OgotICAgICAgICB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBm
YWxzZTsKLSAgICAgICAgYnJlYWsKLSAgICB9Ci0gICAgYnJlYWs7Ci1jYXNlIDQ6Ci0gICAgdHJ1
ZTsKLSAgICBicmVhazsKLX0KLQotLy8gRklYTUU6IFBvb3IuCi1zd2l0Y2ggKCh4KSApIHsKLWNh
c2UgMToKLSAgICA7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0
dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy90ZW1wbGF0ZS1zdHJpbmdzLWV4cGVjdGVk
LmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3Jp
cHQtdGVzdHMvdGVtcGxhdGUtc3RyaW5ncy1leHBlY3RlZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZjUyZjNkZGFhODJjOTEzMTQxYTFkNmQ1NzQxYzE2MTI1MTRiOTM3Ny4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy90ZW1wbGF0ZS1z
dHJpbmdzLWV4cGVjdGVkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotYHRlbXBs
YXRlIHN0cmluZ2AKLWAkezEgKyAxfWAKLWAkezEgKyAxfWAKLWBiZWZvcmUgJHsxICsgMX0gYWZ0
ZXJgCi1gYmVmb3JlICR7YG5lc3RlZCAkezEgKyAxfWB9IGFmdGVyYAotYGJlZm9yZSAke2BuZXN0
ZWQgJHsxICsgMX1gfSBhZnRlcmAKLQotdGFnYHRhZ2dlZCB0ZW1wbGF0ZSBzdHJpbmdgCi10YWdg
dGFnZ2VkIHRlbXBsYXRlIHN0cmluZ2AKLXRhZ2BiZWZvcmUgJHsxICsgMX0gYWZ0ZXJgCi0KLWAK
LSAgICBiZWZvcmUgJHsxICsgMX0gYWZ0ZXIKLSAgICBiZWZvcmUgJHt4fSBhZnRlcgotICAgIGJl
Zm9yZSAke2Z1bmMoKX0gYWZ0ZXIKLSAgICBiZWZvcmUgJHt7YTogMX19IGFmdGVyCi0gICAgYmVm
b3JlICR7WzFdfSBhZnRlcgotICAgIGJlZm9yZSAkewoteQotfSBhZnRlcgotYApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQt
dGVzdHMvdGVybmFyeS1leHByZXNzaW9ucy1leHBlY3RlZC5qcyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3Rlcm5hcnktZXhwcmVz
c2lvbnMtZXhwZWN0ZWQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2MTgyMDY5
M2MyY2Y3NjYzZmU0ZWRiNjhjZDhmZTFlZTk5MWYyN2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcv
cmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvdGVybmFyeS1leHByZXNzaW9ucy1leHBlY3RlZC5q
cworKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotMSA/IDIgOiAzOwotKDEpID8gMiA6IDM7
Ci0xID8gKDIpIDogMzsKLTEgPyAyIDogKDMpOwotKDEpID8gKDIpIDogKDMpOwotMSA/IDIgPyAz
IDogNCA6IDU7Ci0KLW8gPSBhICYmIGIgPyBjIDogZDsKLW8gPSAoYSAmJiBiKSA/IGMgOiBkOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2ph
dmFzY3JpcHQtdGVzdHMvdHJ5LWNhdGNoLWZpbmFsbHktc3RhdGVtZW50cy1leHBlY3RlZC5qcyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRl
c3RzL3RyeS1jYXRjaC1maW5hbGx5LXN0YXRlbWVudHMtZXhwZWN0ZWQuanMKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGYxNDg1OTNjYTQyNjA4MDM4MDZmYTc1ZjIzNTI3ZGIwZDkwMWI2
MDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvdHJ5
LWNhdGNoLWZpbmFsbHktc3RhdGVtZW50cy1leHBlY3RlZC5qcworKysgL2Rldi9udWxsCkBAIC0x
LDg4ICswLDAgQEAKLXRyeSB7fSBjYXRjaCB7fQotdHJ5IHt9IGNhdGNoIHt9IGZpbmFsbHkge30K
LQotdHJ5IHsKLSAgICAxCi19IGNhdGNoIHt9Ci10cnkgewotICAgIDEKLX0gY2F0Y2gge30gZmlu
YWxseSB7fQotdHJ5IHsKLSAgICAxCi19IGNhdGNoIHsKLSAgICAyCi19IGZpbmFsbHkge30KLXRy
eSB7Ci0gICAgMQotfSBjYXRjaCB7Ci0gICAgMgotfSBmaW5hbGx5IHsKLSAgICAzCi19Ci0KLXRy
eSB7fSBjYXRjaCB7Ci0gICAgMgotfSBmaW5hbGx5IHt9Ci10cnkge30gY2F0Y2gge30gZmluYWxs
eSB7Ci0gICAgMwotfQotCi10cnkge30gY2F0Y2ggKGUpIHt9Ci10cnkge30gY2F0Y2ggKGUpIHt9
IGZpbmFsbHkge30KLQotdHJ5IHsKLSAgICAxCi19IGNhdGNoIChlKSB7fQotdHJ5IHsKLSAgICAx
Ci19IGNhdGNoIChlKSB7fSBmaW5hbGx5IHt9Ci0KLXRyeSB7Ci0gICAgMQotfSBjYXRjaCAoZSkg
ewotICAgIDEKLX0KLXRyeSB7Ci0gICAgMQotfSBjYXRjaCAoZSkgewotICAgIDEKLX0gZmluYWxs
eSB7fQotCi10cnkgewotICAgIDEKLX0gY2F0Y2ggKGUpIHsKLSAgICAxCi19IGZpbmFsbHkgewot
ICAgIDEKLX0KLQotdHJ5IHt9IGNhdGNoIChlKSB7Ci0gICAgMQotfQotdHJ5IHt9IGNhdGNoIChl
KSB7Ci0gICAgMQotfSBmaW5hbGx5IHt9Ci0KLXRyeSB7fSBjYXRjaCAoZSkge30gZmluYWxseSB7
Ci0gICAgMQotfQotCi10cnkge30gY2F0Y2ggKGUpIHt9IGZpbmFsbHkge30KLXRyeSB7fSBjYXRj
aCAoZSkge30gZmluYWxseSB7fQotCi10cnkgewotICAgIDEKLX0gY2F0Y2ggKGUpIHsKLSAgICAx
Ci19IGZpbmFsbHkgewotICAgIDEKLX0KLXRyeSB7Ci0gICAgMgotfSBjYXRjaCAoZSkgewotICAg
IDIKLX0gZmluYWxseSB7Ci0gICAgMgotfQotCi10aHJvdyBhKCksIGIoKSwgYygpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3Jp
cHQtdGVzdHMvdW5hcnktYmluYXJ5LWV4cHJlc3Npb25zLWV4cGVjdGVkLmpzIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvdW5hcnkt
YmluYXJ5LWV4cHJlc3Npb25zLWV4cGVjdGVkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkN2JlNDY3NmE1NWU4YmU4YjFmOWRhZjQ4YzdiNDJhYTU4MGFhZGExLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3VuYXJ5LWJpbmFyeS1leHBy
ZXNzaW9ucy1leHBlY3RlZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLSsxOwot
LTE7Ci1+MTsKLSExOwotISExOwotMSArIDEgLSAxICogMSAvIDEgJSAxOwotMS4yICsgMS4yIC0g
MS4yICogMS4yIC8gMS4yICUgMS4yOwotKDEgKyAxIC0gMSAqIDEgLyAxICUgMSk7Ci0oMSkgKyAo
MSkgLSAoMSkgKiAoMSkgLyAoMSkgJSAoMSk7Ci0rKDEpOwotK3M7Ci0tczsKLX5zOwoteCsrOwot
eC0tOwotKyt4OwotLS14OwoteCA9IDE7Ci14ID0gMWUyOwoteCA9IDEgKyAxOwoteCA9IDFlMiAr
IDFlMjsKLXggPSB4ICsgMTsKLXggPSB4ID0geDsKLXggPSB4WzFdICsgMTsKLXggPSBbMV07Ci14
ID0gKDEpOwoteCA9IChzKTsKLXggPSBbMSwgMSwgc107Ci1mb28oMSwgMSwgcyk7Ci14ID0gWzEg
KyAxIC0gMSAqIDEgLyAxICUgMSwgKzEsIDEgLSAxLCAtMSwgfjEsIC1zLCBzICsgMSwgcyAtIDEs
IGFbMV0gKyAxLCBhWzFdIC0gMV07Ci1mb28oMSArIDEgLSAxICogMSAvIDEgJSAxLCArMSwgMSAt
IDEsIC0xLCB+MSwgLXMsIHMgKyAxLCBzIC0gMSwgYVsxXSArIDEsIGFbMV0gLSAxKTsKLXggPSBb
LTEgKyAxICogMSAvIDEgJSAxXTsKLXggPSAoLTEgKyAxICogMSAvIDEgJSAxKTsKLXggPSAxID8g
KzEgOiAtczsKLXggPSAoMSA/ICsxIDogLXMpOwoteCA9IFsxID8gLTEgOiArc107Ci14ID0gewot
ICAgIGE6IC0xLAotICAgIGI6ICsxLAotICAgIGM6IDEgLSAxLAotICAgIGQ6IDEsCi0gICAgczog
cwotfTsKLXggPSB4ICoqIDI7Ci0KLWEgPCBiOwotYSA+IGI7Ci1hIDw9IGI7Ci1hID49IGI7Ci1h
ID09IGI7Ci1hICE9IGI7Ci1hID09PSBiOwotYSAhPT0gYjsKLSFhICE9ICFiOwotISFhICE9ICEh
YjsKLQoteCArPSB4OwoteCAqPSB4OwoteCA8PD0geDsKLXggKio9IHg7Ci14ICU9IHg7Ci0KLXZv
aWQgMDsKLXZvaWQgKDApOwotdm9pZCAoMCk7Ci10eXBlb2YgeDsKLXR5cGVvZiAoeCk7Ci14IGlu
c3RhbmNlb2YgeDsKLXggaW5zdGFuY2VvZiAoeCk7Ci0KLS8vIEVTMjAyMCAtIEJpZ0ludAotMW4g
KyAybiAtIDNuICogNG4gLyA1biAlIDZuOwotMTIzbiA9PT0gMDsKLTAgPT09IDEyM247Ci0rMTIz
biA9PT0gLTEyM247Ci0tMTIzbiA9PT0gKzEyM247CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy92YXJpYWJsZS1k
ZWNsYXJhdGlvbi1leHBlY3RlZC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5n
L3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3ZhcmlhYmxlLWRlY2xhcmF0aW9uLWV4cGVjdGVk
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTViYzU2Nzc4ZjA5M2U3OWMxZmRh
NWY2MGE4NzBkZDljNWMyNThkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZh
c2NyaXB0LXRlc3RzL3ZhcmlhYmxlLWRlY2xhcmF0aW9uLWV4cGVjdGVkLmpzCisrKyAvZGV2L251
bGwKQEAgLTEsNjUgKzAsMCBAQAotdmFyIGE7Ci12YXIgYSA9IDE7Ci12YXIgYSwKLSAgICBiOwot
dmFyIGEgPSAxLAotICAgIGI7Ci12YXIgYSwKLSAgICBiID0gMTsKLXZhciBhID0gMSwKLSAgICBi
ID0gMjsKLQotbGV0IGE7Ci1sZXQgYSA9IDE7Ci1sZXQgYSwKLSAgICBiOwotbGV0IGEgPSAxLAot
ICAgIGI7Ci1sZXQgYSwKLSAgICBiID0gMTsKLWxldCBhID0gMSwKLSAgICBiID0gMjsKLQotY29u
c3QgYSA9IDE7Ci1jb25zdCBhID0gMSwKLSAgICBiID0gMjsKLQotdmFyIGEgPSB7Ci0gICAgYTog
MSwKLSAgICBiOiAyCi19OwotCi12YXIgYSA9IHsKLSAgICAgICAgYTogMSwKLSAgICAgICAgYjog
MgotICAgIH0sCi0gICAgYiA9IHsKLSAgICAgICAgeDogMSwKLSAgICAgICAgeTogMgotICAgIH0s
Ci0gICAgYyA9IFsxLCAyLCAzXSwKLSAgICBkID0gL3JlZ2V4LywKLSAgICBlID0gdHJ1ZTsKLQot
Ly8gRGVzdHJ1Y3R1cmluZwotCi12YXIge2FscGhhOiBhLCBiZXRhOiB7YiwgZ2FtbWE6IGN9LCBj
bHViOiBbZCwgZV19ID0gbzsKLXZhciB7YWxwaGE6IGEsIGJldGE6IHtiLCBnYW1tYTogY30sIGNs
dWI6IFtkLCBlXX0gPSB7Ci0gICAgYWxwaGE6IDEsCi0gICAgYmV0YTogewotICAgICAgICBiOiAy
LAotICAgICAgICBnYW1tYTogMwotICAgIH0sCi0gICAgY2x1YjogWzQsIDVdCi19OwotdmFyIHt0
eXBlLCAuLi5yZXN0fSA9IHsKLSAgICB0eXBlOiAiQ29jb2EiLAotICAgIHRhc3RlOiAiU3dlZXQi
Ci19OwotdmFyIHsuLi5yZXN0fSA9IHsKLSAgICBhOiAxLAotICAgIGI6IDIKLX07Ci0KLXZhciBb
YSwgYl0gPSBbMCwgMV07Ci12YXIgW2EsIGIsIC4uLnJlc3RdID0gWzAsIDEsIDJdOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3Jp
cHQtdGVzdHMvd2hpbGUtc3RhdGVtZW50LWV4cGVjdGVkLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvd2hpbGUtc3RhdGVtZW50
LWV4cGVjdGVkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjIwMjQwMzZlNmIy
ZTA0NTg3MDgzN2FjMmVhNjMzZGY0NmY4YjE0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291
cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3doaWxlLXN0YXRlbWVudC1leHBlY3RlZC5qcworKysgL2Rl
di9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLXdoaWxlICh0cnVlKQotICAgIDsKLXdoaWxlICh0cnVl
KQotICAgIDEKLXdoaWxlICh0cnVlKSB7fQotd2hpbGUgKHRydWUpIHsKLSAgICAxCi19Ci0KLXdo
aWxlICgodHJ1ZSkpCi0gICAgOwotd2hpbGUgKCh0cnVlKSkge30KLXdoaWxlICgodHJ1ZSkpIHsK
LSAgICAxCi19Ci0KLXdoaWxlICgodHJ1ZSkpCi0gICAgOwotd2hpbGUgKCh0cnVlKSkge30KLXdo
aWxlICgodHJ1ZSkpIHsKLSAgICAxCi19Ci0KLXdoaWxlICh4ICYmICF5KQotICAgIHgrKzsKLQot
d2hpbGUgKGZvby5sZW5ndGggPCA1KSB7Ci0gICAgeCsrOwotICAgIHkrKwotfQotCi13aGlsZSAo
dHJ1ZSkKLSAgICB3aGlsZSAodHJ1ZSkKLSAgICAgICAgd2hpbGUgKHRydWUpCi0gICAgICAgICAg
ICB3aGlsZSAodHJ1ZSkKLSAgICAgICAgICAgICAgICA7Ci0KLXdoaWxlICh0cnVlKQotICAgIHdo
aWxlICh0cnVlKSB7Ci0gICAgICAgIHdoaWxlICh0cnVlKQotICAgICAgICAgICAgMQotICAgIH0K
LQotd2hpbGUgKHRydWUpCi0gICAgd2hpbGUgKHRydWUpCi0gICAgICAgIDE7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10
ZXN0cy93aXRoLXN0YXRlbWVudC1leHBlY3RlZC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9m
b3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3dpdGgtc3RhdGVtZW50LWV4cGVj
dGVkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDJhOTJhN2ViYzYyOGE3MDgw
OWJkYTg1N2FiMmJiM2Y4OWE1N2E1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9q
YXZhc2NyaXB0LXRlc3RzL3dpdGgtc3RhdGVtZW50LWV4cGVjdGVkLmpzCisrKyAvZGV2L251bGwK
QEAgLTEsMTIgKzAsMCBAQAotd2l0aCAoeCkKLSAgICA7Ci13aXRoICh4KSB7fQotd2l0aCAoeCkg
ewotICAgIDEKLX0KLXdpdGggKCh4KSkgewotICAgIDEKLX0KLXdpdGggKDEpCi0gICAgd2l0aCAo
MikKLSAgICAgICAgMzsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0
aW5nL3Jlc291cmNlcy94bWwtdGVzdHMvYXRvbS1leHBlY3RlZC54bWwgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMveG1sLXRlc3RzL2F0b20tZXhwZWN0ZWQueG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNmZhMTY0MTZkYmQ1ZTQyODk3ZTI1YWI4
OTRmZTMzY2E4ZjIzZWZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy94bWwtdGVz
dHMvYXRvbS1leHBlY3RlZC54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi08P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHNlcnZpY2UgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDcvYXBwIiB4bWxuczphdG9tPSJodHRwOi8vd3d3LnczLm9yZy8yMDA1
L0F0b20iPgotICAgIDxhdG9tOmdlbmVyYXRvciB2ZXJzaW9uPSIxLjAtYmN2MyIgdXJpPSJodHRw
Oi8vd3d3LmlibS5jb20veG1sbnMvcHJvZC9zbiI+Ci0gICAgICAgIEV4YW1wbGUKLSAgICAgIDwv
YXRvbTpnZW5lcmF0b3I+Ci0gICAgPHdvcmtzcGFjZSB4bWw6bGFuZz0iZW4tVVMiIHhtbG5zOnht
bD0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIj4KLSAgICAgICAgPGF0b206
dGl0bGUgdHlwZT0idGV4dCI+TW9sZXNraW48L2F0b206dGl0bGU+Ci0KLSAgICAgICAgPGNvbGxl
Y3Rpb24gaHJlZj0iaHR0cDovL2V4YW1wbGUuY29tL3dlYmxvZ3Mvc2VydmljZXMvYXRvbS9qb2Vw
ZWNrL2VudHJpZXMiPgotICAgICAgICAgICAgPGF0b206dGl0bGUgdHlwZT0idGV4dCI+V2VibG9n
IEVudHJpZXM8L2F0b206dGl0bGU+Ci0gICAgICAgICAgICA8YWNjZXB0PmFwcGxpY2F0aW9uL2F0
b20reG1sOyB0eXBlPWVudHJ5PC9hY2NlcHQ+Ci0gICAgICAgICAgICA8Y2F0ZWdvcmllcyBocmVm
PSJodHRwOi8vZXhhbXBsZS5jb20vd2VibG9ncy9zZXJ2aWNlcy9hdG9tL2pvZXBlY2svY2F0ZWdv
cmllcyIvPgotICAgICAgICA8L2NvbGxlY3Rpb24+Ci0KLSAgICAgICAgPGNvbGxlY3Rpb24gaHJl
Zj0iaHR0cDovL2V4YW1wbGUuY29tL3dlYmxvZ3Mvc2VydmljZXMvYXRvbS9qb2VwZWNrL21lZGlh
Ij4KLSAgICAgICAgICAgIDxhdG9tOnRpdGxlIHR5cGU9InRleHQiPk1lZGlhIEVudHJpZXM8L2F0
b206dGl0bGU+Ci0gICAgICAgICAgICA8YWNjZXB0PnZpZGVvL3gtbXN2aWRlbzwvYWNjZXB0Pgot
ICAgICAgICAgICAgPGFjY2VwdD5hcHBsaWNhdGlvbi9vY3RldC1zdHJlYW08L2FjY2VwdD4KLSAg
ICAgICAgICAgIDxhY2NlcHQ+aW1hZ2UvZ2lmPC9hY2NlcHQ+Ci0gICAgICAgICAgICA8YWNjZXB0
PnRleHQvaHRtbDwvYWNjZXB0PgotICAgICAgICAgICAgPGFjY2VwdD5pbWFnZS9qcGVnPC9hY2Nl
cHQ+Ci0gICAgICAgICAgICA8YWNjZXB0PmltYWdlL3BuZzwvYWNjZXB0PgotICAgICAgICAgICAg
PGFjY2VwdD50ZXh0L3BsYWluPC9hY2NlcHQ+Ci0gICAgICAgICAgICA8Y2F0ZWdvcmllcyBmaXhl
ZD0ieWVzIi8+Ci0gICAgICAgIDwvY29sbGVjdGlvbj4KLQotICAgICAgICA8Y29sbGVjdGlvbiBo
cmVmPSJodHRwOi8vZXhhbXBsZS5jb20vd2VibG9ncy9zZXJ2aWNlcy9hdG9tL2pvZXBlY2svY29t
bWVudHMiPgotICAgICAgICAgICAgPGF0b206dGl0bGUgdHlwZT0idGV4dCI+Q29tbWVudCBFbnRy
aWVzPC9hdG9tOnRpdGxlPgotICAgICAgICAgICAgPGFjY2VwdD5hcHBsaWNhdGlvbi9hdG9tK3ht
bDsgdHlwZT1lbnRyeTwvYWNjZXB0PgotICAgICAgICAgICAgPGNhdGVnb3JpZXMgZml4ZWQ9Inll
cyIvPgotICAgICAgICA8L2NvbGxlY3Rpb24+Ci0gICAgPC93b3Jrc3BhY2U+Ci08L3NlcnZpY2U+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMv
eG1sLXRlc3RzL2Jhc2ljLWV4cGVjdGVkLnhtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3Jt
YXR0aW5nL3Jlc291cmNlcy94bWwtdGVzdHMvYmFzaWMtZXhwZWN0ZWQueG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwOGM0Zjg4ZDE3YjRkOTBmY2ZlMjM4Njg3N2MwNmZiN2VjZmNm
OWY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy94bWwtdGVzdHMvYmFzaWMtZXhw
ZWN0ZWQueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0i
MS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxvdXRlcj4KLSAgICA8aW5uZXI+Ci0gICAgICAgIDwh
LS1Db21tZW50LS0+Ci0gICAgPC9pbm5lcj4KLSAgICA8SU5ORVIgYXR0cj0idmFsdWUiPjwvSU5O
RVI+Ci0gICAgPElOTkVSIGF0dHI9InZhbHVlIj5jb250ZW50PC9JTk5FUj4KLSAgICA8SU5ORVIg
YXR0cj0idmFsdWUiPgotICAgICAgICA8ZW1wdHkvPgotICAgICAgICA8ZW1wdHkvPgotICAgIDwv
SU5ORVI+Ci08L291dGVyPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1h
dHRpbmcvcmVzb3VyY2VzL3htbC10ZXN0cy9yc3MtZXhwZWN0ZWQueG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL3htbC10ZXN0cy9yc3MtZXhwZWN0ZWQueG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWQ3ZjNiYmY4MTBjNGJlYTIwMmZmMTY5
OTRhNGFiYWRiZjgzZGFhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy94bWwtdGVz
dHMvcnNzLWV4cGVjdGVkLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDgwOCArMCwwIEBACi08P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHJzcyB2ZXJzaW9uPSIyLjAiIHht
bG5zOmNvbnRlbnQ9Imh0dHA6Ly9wdXJsLm9yZy9yc3MvMS4wL21vZHVsZXMvY29udGVudC8iIHht
bG5zOndmdz0iaHR0cDovL3dlbGxmb3JtZWR3ZWIub3JnL0NvbW1lbnRBUEkvIiB4bWxuczpkYz0i
aHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOmF0b209Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDUvQXRvbSIgeG1sbnM6c3k9Imh0dHA6Ly9wdXJsLm9yZy9yc3MvMS4wL21vZHVs
ZXMvc3luZGljYXRpb24vIiB4bWxuczpzbGFzaD0iaHR0cDovL3B1cmwub3JnL3Jzcy8xLjAvbW9k
dWxlcy9zbGFzaC8iPgotCi0gICAgPGNoYW5uZWw+Ci0gICAgICAgIDx0aXRsZT5XZWJLaXQ8L3Rp
dGxlPgotICAgICAgICA8YXRvbTpsaW5rIGhyZWY9Imh0dHBzOi8vd2Via2l0Lm9yZy9mZWVkLyIg
cmVsPSJzZWxmIiB0eXBlPSJhcHBsaWNhdGlvbi9yc3MreG1sIi8+Ci0gICAgICAgIDxsaW5rPmh0
dHBzOi8vd2Via2l0Lm9yZzwvbGluaz4KLSAgICAgICAgPGRlc2NyaXB0aW9uPk9wZW4gU291cmNl
IFdlYiBCcm93c2VyIEVuZ2luZTwvZGVzY3JpcHRpb24+Ci0gICAgICAgIDxsYXN0QnVpbGREYXRl
PkZyaSwgMTMgU2VwIDIwMTkgMDI6NDY6MjAgKzAwMDA8L2xhc3RCdWlsZERhdGU+Ci0gICAgICAg
IDxsYW5ndWFnZT5lbi1VUzwvbGFuZ3VhZ2U+Ci0gICAgICAgIDxzeTp1cGRhdGVQZXJpb2Q+Ci0g
ICAgICAgIAlob3VybHkJPC9zeTp1cGRhdGVQZXJpb2Q+Ci0gICAgICAgIDxzeTp1cGRhdGVGcmVx
dWVuY3k+Ci0gICAgICAgIAkxCTwvc3k6dXBkYXRlRnJlcXVlbmN5PgotICAgICAgICA8Z2VuZXJh
dG9yPmh0dHBzOi8vd29yZHByZXNzLm9yZy8/dj01LjIuMjwvZ2VuZXJhdG9yPgotICAgICAgICA8
aXRlbT4KLSAgICAgICAgICAgIDx0aXRsZT5XZWJHUFUgYW5kIFdTTCBpbiBTYWZhcmk8L3RpdGxl
PgotICAgICAgICAgICAgPGxpbms+aHR0cHM6Ly93ZWJraXQub3JnL2Jsb2cvOTUyOC93ZWJncHUt
YW5kLXdzbC1pbi1zYWZhcmkvPC9saW5rPgotICAgICAgICAgICAgPHB1YkRhdGU+VGh1LCAxMiBT
ZXAgMjAxOSAxNzowMDo0MiArMDAwMDwvcHViRGF0ZT4KLSAgICAgICAgICAgIDxkYzpjcmVhdG9y
PgotICAgICAgICAgICAgICAgIDwhW0NEQVRBW11dPgotICAgICAgICAgICAgPC9kYzpjcmVhdG9y
PgotICAgICAgICAgICAgPGNhdGVnb3J5PgotICAgICAgICAgICAgICAgIDwhW0NEQVRBW1BlcmZv
cm1hbmNlXV0+Ci0gICAgICAgICAgICA8L2NhdGVnb3J5PgotCi0gICAgICAgICAgICA8Z3VpZCBp
c1Blcm1hTGluaz0iZmFsc2UiPmh0dHBzOi8vd2Via2l0Lm9yZy8/cD05NTI4PC9ndWlkPgotICAg
ICAgICAgICAgPGRlc2NyaXB0aW9uPgotICAgICAgICAgICAgICAgIDwhW0NEQVRBW1dlYkdQVSBp
cyBhIG5ldyBBUEkgYmVpbmcgZGV2ZWxvcGVkIGJ5IEFwcGxlIGFuZCBvdGhlcnMgaW4gdGhlIFcz
QyB3aGljaCBlbmFibGVzIGhpZ2gtcGVyZm9ybWFuY2UgM0QgZ3JhcGhpY3MgYW5kIGRhdGEtcGFy
YWxsZWwgY29tcHV0YXRpb24gb24gdGhlIFdlYi5dXT4KLSAgICAgICAgICAgIDwvZGVzY3JpcHRp
b24+Ci0gICAgICAgICAgICA8Y29udGVudDplbmNvZGVkPgotICAgICAgICAgICAgICAgIDwhW0NE
QVRBWzxwPldlYkdQVSBpcyBhIG5ldyBBUEkgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dw
dXdlYi9ncHV3ZWIiPmJlaW5nIGRldmVsb3BlZDwvYT4gYnkgQXBwbGUgYW5kIG90aGVycyBpbiB0
aGUgVzNDIHdoaWNoIGVuYWJsZXMgaGlnaC1wZXJmb3JtYW5jZSAzRCBncmFwaGljcyBhbmQgPGEg
aHJlZj0iaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF0YV9wYXJhbGxlbGlzbSI+ZGF0
YS1wYXJhbGxlbCBjb21wdXRhdGlvbjwvYT4gb24gdGhlIFdlYi4gVGhpcyBBUEkgcmVwcmVzZW50
cyBhIHNpZ25pZmljYW50IGltcHJvdmVtZW50IG92ZXIgdGhlIGV4aXN0aW5nIFdlYkdMIEFQSSBp
biBib3RoIHBlcmZvcm1hbmNlIGFuZCBlYXNlIG9mIHVzZS4gU3RhcnRpbmcgaW4gPGEgaHJlZj0i
aHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL3NhZmFyaS90ZWNobm9sb2d5LXByZXZpZXcvIj5T
YWZhcmkgVGVjaG5vbG9neSBQcmV2aWV3PC9hPiByZWxlYXNlIDkxLCBiZXRhIHN1cHBvcnQgaXMg
YXZhaWxhYmxlIGZvciBXZWJHUFUgQVBJIGFuZCBXU0wsIG91ciBwcm9wb3NhbCBmb3IgdGhlIFdl
YkdQVSBzaGFkaW5nIGxhbmd1YWdlLjwvcD4KLSAgICAgICAgICAgICAgICA8cD5BIGZldyBtb250
aHMgYWdvIHdlIGRpc2N1c3NlZCBhIDxhIGhyZWY9Imh0dHBzOi8vd2Via2l0Lm9yZy9ibG9nLzg0
ODIvd2ViLWhpZ2gtbGV2ZWwtc2hhZGluZy1sYW5ndWFnZS8iPnByb3Bvc2FsPC9hPiBmb3IgYSBu
ZXcgc2hhZGluZyBsYW5ndWFnZSBjYWxsZWQgV2ViIEhpZ2gtTGV2ZWwgU2hhZGluZyBMYW5ndWFn
ZSwgYW5kIGJlZ2FuIGltcGxlbWVudGF0aW9uIGFzIGEgcHJvb2Ygb2YgY29uY2VwdC4gU2luY2Ug
dGhlbiwgd2XigJl2ZSBzaGlmdGVkIG91ciBhcHByb2FjaCB0byB0aGlzIG5ldyBsYW5ndWFnZSwg
d2hpY2ggSSB3aWxsIGRpc2N1c3MgYSBsaXR0bGUgbGF0ZXIgaW4gdGhpcyBwb3N0LiBXaXRoIGhl
bHAgZnJvbSBvdXIgZnJpZW5kcyBhdCA8YSBocmVmPSJodHRwczovL3d3dy5iYWJ5bG9uanMuY29t
LyI+QmFieWxvbi5qczwvYT4gd2Ugd2VyZSBhYmxlIHRvIGFkYXB0IGEgZGVtbyB0byB3b3JrIHdp
dGggV2ViR1BVIGFuZCBXZWIgU2hhZGluZyBMYW5ndWFnZSAoV1NMKTo8L3A+Ci0gICAgICAgICAg
ICAgICAgPGZpZ3VyZT48dmlkZW8gYXV0b3BsYXkgbG9vcCBzcmM9Imh0dHBzOi8vd2Via2l0Lm9y
Zy93cC1jb250ZW50L3VwbG9hZHMvV2ViR1BVRGVtb1ZpZGVvLm1wNCIgc3R5bGU9IndpZHRoOiAx
MDAlIj48L3ZpZGVvPjwvZmlndXJlPgotICAgICAgICAgICAgICAgIDxwPllvdSBjYW4gPGEgaHJl
Zj0iaHR0cHM6Ly93ZWJraXQub3JnL2RlbW9zL3dlYmdwdS9iYWJ5bG9uL29uZUhlbG1ldFdlYkdQ
VS5odG1sIj5zZWUgdGhlIGRlbW8gaW4gYWN0aW9uPC9hPiB3aXRoIFNhZmFyaSBUZWNobm9sb2d5
IFByZXZpZXcgOTEgb3IgbGF0ZXIsIGFuZCB3aXRoIHRoZSBXZWJHUFUgZXhwZXJpbWVudGFsIGZl
YXR1cmUgZW5hYmxlZC48YSBuYW1lPSJmb290bm90ZU9uZSIgaHJlZj0iI2Zvb3Rub3RlcyIgY2xh
c3M9ImZvb3Rub3RlIj4xPC9hPiBUaGUgZGVtbyB1dGlsaXplcyBtYW55IG9mIHRoZSBiZXN0IGZl
YXR1cmVzIG9mIFdlYkdQVS4gTGV0JiM4MjE3O3MgZGlnIGluIHRvIHNlZSB3aGF0IG1ha2UgV2Vi
R1BVIHdvcmsgc28gd2VsbCwgYW5kIHdoeSB3ZSB0aGluayBXU0wgaXMgYSBncmVhdCBjaG9pY2Ug
Zm9yIFdlYkdQVS48L3A+Ci0gICAgICAgICAgICAgICAgPGgyPldlYkdQVSBKYXZhU2NyaXB0IEFQ
STwvaDI+Ci0gICAgICAgICAgICAgICAgPHA+SnVzdCBsaWtlIFdlYkdMLCB0aGUgV2ViR1BVIEFQ
SSBpcyBhY2Nlc3NlZCB0aHJvdWdoIEphdmFTY3JpcHQgYmVjYXVzZSBtb3N0IFdlYiBkZXZlbG9w
ZXJzIGFyZSBhbHJlYWR5IGZhbWlsaWFyIHdpdGggd29ya2luZyBpbiBKYXZhU2NyaXB0LiBXZSBl
eHBlY3QgdG8gY3JlYXRlIGEgV2ViR1BVIEFQSSB0aGF0IGlzIGFjY2Vzc2VkIHRocm91Z2ggV2Vi
QXNzZW1ibHkgaW4gdGhlIGZ1dHVyZS48L3A+Ci0gICAgICAgICAgICAgICAgPGgzPlBpcGVsaW5l
IFN0YXRlIE9iamVjdHMgYW5kIEJpbmQgR3JvdXBzPC9oMz4KLSAgICAgICAgICAgICAgICA8cD5N
b3N0IDNEIGFwcGxpY2F0aW9ucyByZW5kZXIgbW9yZSB0aGFuIGEgc2luZ2xlIG9iamVjdC4gSW4g
V2ViR0wsIGVhY2ggb2YgdGhvc2Ugb2JqZWN0cyByZXF1aXJlcyBhIGNvbGxlY3Rpb24gb2Ygc3Rh
dGUtY2hhbmdpbmcgY2FsbHMgYmVmb3JlIHRoYXQgb2JqZWN0IGNvdWxkIGJlIHJlbmRlcmVkLiBG
b3IgZXhhbXBsZSwgcmVuZGVyaW5nIGEgc2luZ2xlIG9iamVjdCBpbiBXZWJHTCBtaWdodCBsb29r
IGxpa2U6PC9wPgotICAgICAgICAgICAgICAgIDxwcmU+PGNvZGUgY2xhc3M9ImpzIj48c3BhbiBj
bGFzcz0iaWRlbnRpZmllciI+Z2w8L3NwYW4+LjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5Vc2VQ
cm9ncmFtPC9zcGFuPig8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+cHJvZ3JhbTE8L3NwYW4+KTsK
LSAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+Z2w8L3NwYW4+LjxzcGFu
IGNsYXNzPSJpZGVudGlmaWVyIj5mcm9udEZhY2U8L3NwYW4+KDxzcGFuIGNsYXNzPSJpZGVudGlm
aWVyIj5nbDwvc3Bhbj4uPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPkNXPC9zcGFuPik7Ci0gICAg
ICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmdsPC9zcGFuPi48c3BhbiBjbGFz
cz0iaWRlbnRpZmllciI+Y3VsbEZhY2U8L3NwYW4+KDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5n
bDwvc3Bhbj4uPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPkZST05UPC9zcGFuPik7Ci0gICAgICAg
ICAgICAgICAgPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmdsPC9zcGFuPi48c3BhbiBjbGFzcz0i
aWRlbnRpZmllciI+YmxlbmRFcXVhdGlvblNlcGFyYXRlPC9zcGFuPig8c3BhbiBjbGFzcz0iaWRl
bnRpZmllciI+Z2w8L3NwYW4+LjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5GVU5DX0FERDwvc3Bh
bj4sIDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5nbDwvc3Bhbj4uPHNwYW4gY2xhc3M9ImlkZW50
aWZpZXIiPkZVTkNfTUlOPC9zcGFuPik7Ci0gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imlk
ZW50aWZpZXIiPmdsPC9zcGFuPi48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+YmxlbmRGdW5jU2Vw
YXJhdGU8L3NwYW4+KDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5nbDwvc3Bhbj4uPHNwYW4gY2xh
c3M9ImlkZW50aWZpZXIiPlNSQ19DT0xPUjwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJpZGVudGlmaWVy
Ij5nbDwvc3Bhbj4uPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPlpFUk88L3NwYW4+LCA8c3BhbiBj
bGFzcz0iaWRlbnRpZmllciI+Z2w8L3NwYW4+LjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5TUkNf
QUxQSEE8L3NwYW4+LCA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+Z2w8L3NwYW4+LjxzcGFuIGNs
YXNzPSJpZGVudGlmaWVyIj5aRVJPPC9zcGFuPik7Ci0gICAgICAgICAgICAgICAgPHNwYW4gY2xh
c3M9ImlkZW50aWZpZXIiPmdsPC9zcGFuPi48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+Y29sb3JN
YXNrPC9zcGFuPig8c3BhbiBjbGFzcz0ia2V5d29yZCBsaXRlcmFsIj50cnVlPC9zcGFuPiwgPHNw
YW4gY2xhc3M9ImtleXdvcmQgbGl0ZXJhbCI+ZmFsc2U8L3NwYW4+LCA8c3BhbiBjbGFzcz0ia2V5
d29yZCBsaXRlcmFsIj50cnVlPC9zcGFuPiwgPHNwYW4gY2xhc3M9ImtleXdvcmQgbGl0ZXJhbCI+
dHJ1ZTwvc3Bhbj4pOwotICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5n
bDwvc3Bhbj4uPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmRlcHRoTWFzazwvc3Bhbj4oPHNwYW4g
Y2xhc3M9ImtleXdvcmQgbGl0ZXJhbCI+dHJ1ZTwvc3Bhbj4pOwotICAgICAgICAgICAgICAgIDxz
cGFuIGNsYXNzPSJpZGVudGlmaWVyIj5nbDwvc3Bhbj4uPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIi
PnN0ZW5jaWxNYXNrPC9zcGFuPig8c3BhbiBjbGFzcz0ibnVtYmVyIj4xPC9zcGFuPik7Ci0gICAg
ICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmdsPC9zcGFuPi48c3BhbiBjbGFz
cz0iaWRlbnRpZmllciI+ZGVwdGhGdW5jPC9zcGFuPig8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+
Z2w8L3NwYW4+LjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5HUkVBVEVSPC9zcGFuPik7Ci0gICAg
ICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmdsPC9zcGFuPi48c3BhbiBjbGFz
cz0iaWRlbnRpZmllciI+ZHJhd0FycmF5czwvc3Bhbj4oPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIi
PmdsPC9zcGFuPi48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+VFJJQU5HTEVTPC9zcGFuPiwgPHNw
YW4gY2xhc3M9Im51bWJlciI+MDwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5jb3Vu
dDwvc3Bhbj4pOwotICAgICAgICAgICAgICAgIDwvY29kZT48L3ByZT4KLSAgICAgICAgICAgICAg
ICA8cD5PbiB0aGUgb3RoZXIgaGFuZCwgcmVuZGVyaW5nIGEgc2luZ2xlIG9iamVjdCBpbiBXZWJH
UFUgbWlnaHQgbG9vayBsaWtlOjwvcD4KLSAgICAgICAgICAgICAgICA8cHJlPjxjb2RlIGNsYXNz
PSJqcyI+PHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmVuY29kZXI8L3NwYW4+LjxzcGFuIGNsYXNz
PSJpZGVudGlmaWVyIj5zZXRQaXBlbGluZTwvc3Bhbj4oPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIi
PnJlbmRlclBpcGVsaW5lPC9zcGFuPik7Ci0gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imlk
ZW50aWZpZXIiPmVuY29kZXI8L3NwYW4+LjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5kcmF3PC9z
cGFuPig8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+Y291bnQ8L3NwYW4+LCA8c3BhbiBjbGFzcz0i
bnVtYmVyIj4xPC9zcGFuPiwgPHNwYW4gY2xhc3M9Im51bWJlciI+MDwvc3Bhbj4sIDxzcGFuIGNs
YXNzPSJudW1iZXIiPjA8L3NwYW4+KTsKLSAgICAgICAgICAgICAgICA8L2NvZGU+PC9wcmU+Ci0g
ICAgICAgICAgICAgICAgPHA+QWxsIHRoZSBwaWVjZXMgb2Ygc3RhdGUgaW4gdGhlIFdlYkdMIGV4
YW1wbGUgYXJlIHdyYXBwZWQgdXAgaW50byBhIHNpbmdsZSBvYmplY3QgaW4gV2ViR1BVLCBuYW1l
ZCBhICYjODIyMDs8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2dwdXdlYi9ibG9i
L21hc3Rlci9zcGVjL2luZGV4LmJzI0w2NjQiPnBpcGVsaW5lIHN0YXRlIG9iamVjdDwvYT4uJiM4
MjIxOyBUaG91Z2ggdmFsaWRhdGluZyBzdGF0ZSBpcyBleHBlbnNpdmUsIHdpdGggV2ViR1BVIGl0
IGlzIGRvbmUgb25jZSB3aGVuIHRoZSBwaXBlbGluZSBpcyBjcmVhdGVkLCBvdXRzaWRlIG9mIHRo
ZSBjb3JlIHJlbmRlcmluZyBsb29wLiBBcyBhIHJlc3VsdCwgd2UgY2FuIGF2b2lkIHBlcmZvcm1p
bmcgZXhwZW5zaXZlIHN0YXRlIGFuYWx5c2lzIGluc2lkZSB0aGUgZHJhdyBjYWxsLiBBbHNvLCBz
ZXR0aW5nIGFuIGVudGlyZSBwaXBlbGluZSBzdGF0ZSBpcyBhIHNpbmdsZSBmdW5jdGlvbiBjYWxs
LCByZWR1Y2luZyB0aGUgYW1vdW50IG9mICYjODIyMDtjaGF0dGluZyYjODIyMTsgYmV0d2VlbiBK
YXZhc2NyaXB0IGFuZCBXZWJLaXTigJlzIEMrKyBicm93c2VyIGVuZ2luZS48L3A+Ci0gICAgICAg
ICAgICAgICAgPHA+UmVzb3VyY2VzIGhhdmUgYSBzaW1pbGFyIHN0b3J5LiBNb3N0IHJlbmRlcmlu
ZyBhbGdvcml0aG1zIHJlcXVpcmUgYSBzZXQgb2YgcmVzb3VyY2VzIGluIG9yZGVyIHRvIGRyYXcg
YSBwYXJ0aWN1bGFyIG1hdGVyaWFsLiBJbiBXZWJHTCwgZWFjaCByZXNvdXJjZSB3b3VsZCBiZSBi
b3VuZCBvbmUtYnktb25lLCBsZWFkaW5nIHRvIGNvZGUgdGhhdCBsb29rcyBsaWtlOjwvcD4KLSAg
ICAgICAgICAgICAgICA8cHJlPjxjb2RlIGNsYXNzPSJqcyI+PHNwYW4gY2xhc3M9ImlkZW50aWZp
ZXIiPmdsPC9zcGFuPi48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+YmluZEJ1ZmZlclJhbmdlPC9z
cGFuPig8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+Z2w8L3NwYW4+LjxzcGFuIGNsYXNzPSJpZGVu
dGlmaWVyIj5VTklGT1JNX0JVRkZFUjwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJudW1iZXIiPjA8L3Nw
YW4+LCA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+bWF0ZXJpYWxCdWZmZXIxPC9zcGFuPiwgPHNw
YW4gY2xhc3M9Im51bWJlciI+MDwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5zaXpl
MTwvc3Bhbj4pOwotICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5nbDwv
c3Bhbj4uPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmJpbmRCdWZmZXJSYW5nZTwvc3Bhbj4oPHNw
YW4gY2xhc3M9ImlkZW50aWZpZXIiPmdsPC9zcGFuPi48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+
VU5JRk9STV9CVUZGRVI8L3NwYW4+LCA8c3BhbiBjbGFzcz0ibnVtYmVyIj4xPC9zcGFuPiwgPHNw
YW4gY2xhc3M9ImlkZW50aWZpZXIiPm1hdGVyaWFsQnVmZmVyMjwvc3Bhbj4sIDxzcGFuIGNsYXNz
PSJudW1iZXIiPjA8L3NwYW4+LCA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+c2l6ZTI8L3NwYW4+
KTsKLSAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+Z2w8L3NwYW4+Ljxz
cGFuIGNsYXNzPSJpZGVudGlmaWVyIj5hY3RpdmVUZXh0dXJlPC9zcGFuPig8c3BhbiBjbGFzcz0i
bnVtYmVyIj4wPC9zcGFuPik7Ci0gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImlkZW50aWZp
ZXIiPmdsPC9zcGFuPi48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+YmluZFRleHR1cmU8L3NwYW4+
KDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5nbDwvc3Bhbj4uPHNwYW4gY2xhc3M9ImlkZW50aWZp
ZXIiPlRFWFRVUkVfMkQ8L3NwYW4+LCA8c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+bWF0ZXJpYWxU
ZXh0dXJlMTwvc3Bhbj4pOwotICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpZGVudGlmaWVy
Ij5nbDwvc3Bhbj4uPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmFjdGl2ZVRleHR1cmU8L3NwYW4+
KDxzcGFuIGNsYXNzPSJudW1iZXIiPjE8L3NwYW4+KTsKLSAgICAgICAgICAgICAgICA8c3BhbiBj
bGFzcz0iaWRlbnRpZmllciI+Z2w8L3NwYW4+LjxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5iaW5k
VGV4dHVyZTwvc3Bhbj4oPHNwYW4gY2xhc3M9ImlkZW50aWZpZXIiPmdsPC9zcGFuPi48c3BhbiBj
bGFzcz0iaWRlbnRpZmllciI+VEVYVFVSRV8yRDwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJpZGVudGlm
aWVyIj5tYXRlcmlhbFRleHR1cmUyPC9zcGFuPik7Ci0gICAgICAgICAgICAgICAgPC9jb2RlPjwv
cHJlPgotICAgICAgICAgICAgICAgIDxwPkhvd2V2ZXIsIGluIFdlYkdQVSwgcmVzb3VyY2VzIGFy
ZSBiYXRjaGVkIHVwIGludG8gJiM4MjIwOzxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3
ZWIvZ3B1d2ViL2Jsb2IvbWFzdGVyL3NwZWMvaW5kZXguYnMjTDU3MiI+YmluZCBncm91cHM8L2E+
LiYjODIyMTsgV2hlbiB1c2luZyBXZWJHUFUsIHRoZSBiZWhhdmlvciBvZiB0aGUgYWJvdmUgY29k
ZSBpcyByZXByZXNlbnRlZCBhcyBzaW1wbHk6PC9wPgotICAgICAgICAgICAgICAgIDxwcmU+PGNv
ZGUgY2xhc3M9ImpzIj48c3BhbiBjbGFzcz0iaWRlbnRpZmllciI+ZW5jb2Rlcjwvc3Bhbj4uPHNw
YW4gY2xhc3M9ImlkZW50aWZpZXIiPnNldEJpbmRHcm91cDwvc3Bhbj4oPHNwYW4gY2xhc3M9Im51
bWJlciI+MDwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJpZGVudGlmaWVyIj5iaW5kR3JvdXA8L3NwYW4+
KTsKLSAgICAgICAgICAgICAgICA8L2NvZGU+PC9wcmU+Ci0gICAgICAgICAgICAgICAgPHA+SW4g
Ym90aCBvZiB0aGVzZSBleGFtcGxlcywgbXVsdGlwbGUgb2JqZWN0cyBhcmUgZ2F0aGVyZWQgdXAg
dG9nZXRoZXIgYW5kIGJha2VkIGludG8gYSBoYXJkd2FyZS1kZXBlbmRlbnQgZm9ybWF0LCB3aGlj
aCBpcyB3aGVuIHRoZSBicm93c2VyIHBlcmZvcm1zIHZhbGlkYXRpb24uIEJlaW5nIGFibGUgdG8g
c2VwYXJhdGUgb2JqZWN0IHZhbGlkYXRpb24gZnJvbSBvYmplY3QgdXNlIG1lYW5zIHRoZSBhcHBs
aWNhdGlvbiBhdXRob3IgaGFzIG1vcmUgY29udHJvbCBvdmVyIHdoZW4gZXhwZW5zaXZlIG9wZXJh
dGlvbnMgb2NjdXIgaW4gdGhlIGxpZmVjeWNsZSBvZiB0aGVpciBhcHBsaWNhdGlvbi48L3A+Ci0g
ICAgICAgICAgICAgICAgPGgzPlJ1bi10aW1lIFBlcmZvcm1hbmNlPC9oMz4KLSAgICAgICAgICAg
ICAgICA8cD5XZSBleHBlY3QgV2ViR1BVIHRvIHBlcmZvcm0gZmFzdGVyIGFuZCBoYW5kbGUgbGFy
Z2VyIHdvcmtsb2FkcyB0aGFuIFdlYkdMLiBUbyBtZWFzdXJlIHBlcmZvcm1hbmNlLCB3ZSBhZG9w
dGVkIHRoZSB0ZXN0IGhhcm5lc3MgZnJvbSBvdXIgMkQgZ3JhcGhpY3MgYmVuY2htYXJrIDxhIGhy
ZWY9Imh0dHBzOi8vYnJvd3NlcmJlbmNoLm9yZy9Nb3Rpb25NYXJrMS4xLyI+TW90aW9uTWFyazwv
YT4gYW5kIHdyb3RlIHR3byB2ZXJzaW9ucyBvZiBhIHBlcmZvcm1hbmNlIHRlc3QgdGhhdCBoYWQg
YSBzaW1wbGUgeWV0IHJlYWxpc3RpYyB3b3JrbG9hZCwgb25lIGluIDxhIGhyZWY9Imh0dHBzOi8v
YnJvd3NlcmJlbmNoLm9yZy9Nb3Rpb25NYXJrMS4xL2RldmVsb3Blci5odG1sP3Rlc3QtaW50ZXJ2
YWw9MzAmYW1wO2Rpc3BsYXk9bWluaW1hbCZhbXA7dGlsZXM9YmlnJmFtcDtjb250cm9sbGVyPXJh
bXAmYW1wO2ZyYW1lLXJhdGU9NTAmYW1wO2thbG1hbi1wcm9jZXNzLWVycm9yPTEmYW1wO2thbG1h
bi1tZWFzdXJlbWVudC1lcnJvcj00JmFtcDt0aW1lLW1lYXN1cmVtZW50PXBlcmZvcm1hbmNlJmFt
cDtzdWl0ZS1uYW1lPTNER3JhcGhpY3MmYW1wO3Rlc3QtbmFtZT1UcmlhbmdsZXNXZWJHTCI+V2Vi
R0w8L2E+IGFuZCB0aGUgb3RoZXIgaW4gPGEgaHJlZj0iaHR0cHM6Ly9icm93c2VyYmVuY2gub3Jn
L01vdGlvbk1hcmsxLjEvZGV2ZWxvcGVyLmh0bWw/dGVzdC1pbnRlcnZhbD0xMCZhbXA7ZGlzcGxh
eT1taW5pbWFsJmFtcDt0aWxlcz1iaWcmYW1wO2NvbnRyb2xsZXI9cmFtcCZhbXA7ZnJhbWUtcmF0
ZT01MCZhbXA7a2FsbWFuLXByb2Nlc3MtZXJyb3I9MSZhbXA7a2FsbWFuLW1lYXN1cmVtZW50LWVy
cm9yPTQmYW1wO3RpbWUtbWVhc3VyZW1lbnQ9cGVyZm9ybWFuY2UmYW1wO3N1aXRlLW5hbWU9M0RH
cmFwaGljcyZhbXA7dGVzdC1uYW1lPVRyaWFuZ2xlc1dlYkdQVSI+V2ViR1BVPC9hPi48L3A+Ci0g
ICAgICAgICAgICAgICAgPHA+VGhlIHRlc3QgbWVhc3VyZXMgaG93IG1hbnkgdHJpYW5nbGVzIHdp
dGggZGlmZmVyZW50IHByb3BlcnRpZXMgY2FuIGJlIGRyYXduIHdoaWxlIG1haW50YWluaW5nIDYw
IGZyYW1lcyBwZXIgc2Vjb25kLiBFYWNoIHRyaWFuZ2xlIHJlbmRlcnMgd2l0aCBhIGRpZmZlcmVu
dCBkcmF3IGNhbGwgYW5kIGJpbmQgZ3JvdXA7IHRoaXMgbWltaWNzIHRoZSB3YXkgbWFueSBnYW1l
cyByZW5kZXIgb2JqZWN0cyAobGlrZSBjaGFyYWN0ZXJzLCBleHBsb3Npb25zLCBidWxsZXRzLCBv
ciBlbnZpcm9ubWVudCBvYmplY3RzKSBpbiBkaWZmZXJlbnQgZHJhdyBjYWxscyB3aXRoIGRpZmZl
cmVudCByZXNvdXJjZXMuIEJlY2F1c2UgbXVjaCBvZiB0aGUgdmFsaWRhdGlvbiBsb2dpYyBpbiBX
ZWJHUFUgaXMgcGVyZm9ybWVkIGR1cmluZyB0aGUgY3JlYXRpb24gb2YgdGhlIGJpbmQgZ3JvdXAg
aW5zdGVhZCBvZiBpbnNpZGUgdGhlIGRyYXcgY2FsbCwgYm90aCBvZiB0aGVzZSBjYWxscyBleGVj
dXRlIG11Y2ggZmFzdGVyIHRoYW4gdGhlIGVxdWl2YWxlbnQgY2FsbHMgaW4gV2ViR0wuPC9wPgot
ICAgICAgICAgICAgICAgIDxmaWd1cmUgY2xhc3M9IndpZGVzY3JlZW4gbWF0dGV3aGl0ZSI+PGlt
ZyBzcmM9Imh0dHBzOi8vd2Via2l0Lm9yZy93cC1jb250ZW50L3VwbG9hZHMvV1NMVHJpYW5nbGVz
QmVuY2htYXJrLnBuZyIgYWx0PSIiICBjbGFzcz0id3AtaW1hZ2UtOTUzNCIgc3Jjc2V0PSJodHRw
czovL3dlYmtpdC5vcmcvd3AtY29udGVudC91cGxvYWRzL1dTTFRyaWFuZ2xlc0JlbmNobWFyay5w
bmcgMTIxMHcsIGh0dHBzOi8vd2Via2l0Lm9yZy93cC1jb250ZW50L3VwbG9hZHMvV1NMVHJpYW5n
bGVzQmVuY2htYXJrLTMwMHgxMjUucG5nIDMwMHcsIGh0dHBzOi8vd2Via2l0Lm9yZy93cC1jb250
ZW50L3VwbG9hZHMvV1NMVHJpYW5nbGVzQmVuY2htYXJrLTc2OHgzMjEucG5nIDc2OHcsIGh0dHBz
Oi8vd2Via2l0Lm9yZy93cC1jb250ZW50L3VwbG9hZHMvV1NMVHJpYW5nbGVzQmVuY2htYXJrLTEw
MjR4NDI4LnBuZyAxMDI0dyIgc2l6ZXM9IihtYXgtd2lkdGg6IDEyMTBweCkgMTAwdncsIDEyMTBw
eCIgLz48L2ZpZ3VyZT4KLSAgICAgICAgICAgICAgICA8aDI+V2ViIFNoYWRpbmcgTGFuZ3VhZ2U8
L2gyPgotICAgICAgICAgICAgICAgIDxwPlRoZSBXZWJHUFUgY29tbXVuaXR5IGdyb3VwIGlzIGFj
dGl2ZWx5IGRpc2N1c3Npbmcgd2hpY2ggc2hhZGluZyBsYW5ndWFnZSBvciBsYW5ndWFnZXMgc2hv
dWxkIGJlIHN1cHBvcnRlZCBieSB0aGUgc3BlY2lmaWNhdGlvbi4gTGFzdCB5ZWFyLCB3ZSA8YSBo
cmVmPSJodHRwczovL3dlYmtpdC5vcmcvYmxvZy84NDgyL3dlYi1oaWdoLWxldmVsLXNoYWRpbmct
bGFuZ3VhZ2UvIj5wcm9wb3NlZDwvYT4gYSBuZXcgc2hhZGluZyBsYW5ndWFnZSBmb3IgV2ViR1BV
LiBXZSBhcmUgcGxlYXNlZCB0byBhbm5vdW5jZSB0aGF0IGEgYmV0YSB2ZXJzaW9uIG9mIHRoaXMg
bGFuZ3VhZ2UgaXMgYXZhaWxhYmxlIGluIFNhZmFyaSBUZWNobm9sb2d5IFByZXZpZXcgOTEuPC9w
PgotICAgICAgICAgICAgICAgIDxwPkJlY2F1c2Ugb2YgY29tbXVuaXR5IGZlZWRiYWNrLCBvdXIg
YXBwcm9hY2ggdG93YXJkIGRlc2lnbmluZyB0aGUgbGFuZ3VhZ2UgaGFzIGV2b2x2ZWQuIFByZXZp
b3VzbHksIHdlIGRlc2lnbmVkIHRoZSBsYW5ndWFnZSB0byBiZSBzb3VyY2UtY29tcGF0aWJsZSB3
aXRoIEhMU0wsIGJ1dCB3ZSByZWFsaXplZCB0aGlzIGNvbXBhdGliaWxpdHkgd2FzIG5vdCB3aGF0
IHRoZSBjb21tdW5pdHkgd2FzIGFza2luZyBmb3IuIE1hbnkgd2FudGVkIHRoZSBzaGFkaW5nIGxh
bmd1YWdlIHRvIGJlIGFzIHNpbXBsZSBhbmQgYXMgbG93LWxldmVsIGFzIHBvc3NpYmxlLiBUaGF0
IHdvdWxkIG1ha2UgaXQgYW4gZWFzaWVyIGNvbXBpbGUgdGFyZ2V0IGZvciB3aGljaGV2ZXIgbGFu
Z3VhZ2UgdGhlaXIgZGV2ZWxvcG1lbnQgc2hvcCB1c2VzLjwvcD4KLSAgICAgICAgICAgICAgICA8
cD5UaGVyZSBhcmUgbWFueSBXZWIgZGV2ZWxvcGVycyB1c2luZyBHTFNMIHRvZGF5IGluIFdlYkdM
LCBzbyBhIHBvdGVudGlhbCBicm93c2VyIGFjY2VwdGluZyBhIGRpZmZlcmVudCBoaWdoIGxldmVs
IGxhbmd1YWdlLCBsaWtlIEhMU0wsIHdvdWxkbiYjODIxNzt0IHN1aXQgdGhlaXIgbmVlZHMgd2Vs
bC4gSW4gYWRkaXRpb24sIGEgaGlnaC1sZXZlbCBsYW5ndWFnZSBzdWNoIGFzIEhMU0wgY2FuJiM4
MjE3O3QgYmUgZXhlY3V0ZWQgZmFpdGhmdWxseSBvbiBldmVyeSBwbGF0Zm9ybSBhbmQgZ3JhcGhp
Y3MgQVBJIHRoYXQgV2ViR1BVIGlzIGRlc2lnbmVkIHRvIGV4ZWN1dGUgb24uPC9wPgotICAgICAg
ICAgICAgICAgIDxwPlNvLCB3ZSBkZWNpZGVkIHRvIG1ha2UgdGhlIGxhbmd1YWdlIG1vcmUgc2lt
cGxlLCBsb3ctbGV2ZWwsIGFuZCBmYXN0IHRvIGNvbXBpbGUsIGFuZCByZW5hbWVkIHRoZSBsYW5n
dWFnZSB0byBXZWIgU2hhZGluZyBMYW5ndWFnZSB0byBtYXRjaCB0aGlzIHB1cnN1aXQuPGEgbmFt
ZT0iZm9vdG5vdGVUd28iIGhyZWY9IiNmb290bm90ZXMiIGNsYXNzPSJmb290bm90ZSI+MjwvYT48
L3A+Ci0gICAgICAgICAgICAgICAgPHA+VGhlIG5hbWUgY2hhbmdlIHJlZmxlY3RzIGEgc2hpZnQg
aW4gb3VyIGFwcHJvYWNoLCBidXQgdGhlIG1ham9yIHRlbmV0cyBvZiBXU0wgaGF2ZSBub3QgY2hh
bmdlZC4gSXQmIzgyMTc7cyBzdGlsbCBhIGxhbmd1YWdlIHRoYXQgaXMgaGlnaC1wZXJmb3JtYW5j
ZS4gSXQmIzgyMTc7cyBzdGlsbCB0ZXh0LWJhc2VkLCB3aGljaCBpbnRlZ3JhdGVzIHdlbGwgd2l0
aCBleGlzdGluZyB3ZWIgdGVjaG5vbG9naWVzIGFuZCBjdWx0dXJlLiBXU0wmIzgyMTc7cyBzZW1h
bnRpY3Mgc3RpbGwgYmFrZSBpbiBzYWZldHkgYW5kIHBvcnRhYmlsaXR5LiBJdCBzdGlsbCB3b3Jr
cyBncmVhdCBhcyBhIGNvbXBpbGUgdGFyZ2V0LiBBcyBleHBlY3RlZCBmb3IgZXZlcnkgd2ViIHRl
Y2hub2xvZ3ksIHRoZSBsYW5ndWFnZSBpcyB3ZWxsLWRlZmluZWQgd2l0aCBhIDxhIGhyZWY9Imh0
dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9XU0wvIj5yb2J1c3Qgc3BlY2lmaWNhdGlvbjwvYT4uIEFu
ZCBiZWNhdXNlIHRoZSBXZWJHUFUgQ29tbXVuaXR5IEdyb3VwIG93bnMgdGhlIGxhbmd1YWdlLCBp
dCBtYXR1cmVzIGluIGNvbmNlcnQgd2l0aCB0aGUgV2ViR1BVIEFQSS48L3A+Ci0gICAgICAgICAg
ICAgICAgPHA+SW4gYW4gdXBjb21pbmcgcG9zdCwgd2XigJlsbCB0YWxrIG1vcmUgYWJvdXQgdGhl
IHRlY2huaWNhbCBkZXRhaWxzIG9mIHRoaXMgbGFuZ3VhZ2UgdXBkYXRlLiBIZXJlLCBsZXTigJlz
IGRpc2N1c3MgZnVydGhlciBhYm91dCBXU0zigJlzIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGlj
cy48L3A+Ci0gICAgICAgICAgICAgICAgPGgzPldpcmUgU2l6ZTwvaDM+Ci0gICAgICAgICAgICAg
ICAgPHA+VGhlIEJhYnlsb24uanMgZGVtbyBhYm92ZSBkZW1vbnN0cmF0ZXMgYW4gYXJlYSB3aGVy
ZSBXU0wgcmVhbGx5IHNoaW5lcy4gVGhlIHNoYWRlcnMgaW4gdGhlIGRlbW8gdXNlIGNvbXBsZXgg
PGEgaHJlZj0iaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGh5c2ljYWxseV9iYXNlZF9y
ZW5kZXJpbmciPnBoeXNpY2FsbHktYmFzZWQ8L2E+IGFsZ29yaXRobXMgdG8gZHJhdyB3aXRoIHRo
ZSBoaWdoZXN0IHJlYWxpc20gcG9zc2libGUuIEJhYnlsb24uanMgY3JlYXRlcyB0aGVzZSBjb21w
bGV4IHNoYWRpbmcgYWxnb3JpdGhtcyBieSBzdGl0Y2hpbmcgdG9nZXRoZXIgc25pcHBldHMgb2Yg
c2hhZGVyIHNvdXJjZSBjb2RlIGF0IHJ1bi10aW1lLiBUaGlzIHdheSwgQmFieWxvbiYjODIxNztz
IHNoYWRlcnMgYXJlIHR1bmVkIGF0IHJ1bi10aW1lIHRvIHRoZSBzcGVjaWZpYyB0eXBlIG9mIGNv
bnRlbnQgdGhlIGFwcGxpY2F0aW9uIGNvbnRhaW5zLiBTaW5jZSBXU0wgaXMgYSB0ZXh0dWFsIGxh
bmd1YWdlIGxpa2UgR0xTTCwgdGhpcyBraW5kIG9mIHdvcmtmbG93IGNhbiBiZSBhY2NvbXBsaXNo
ZWQgc2ltcGx5IHdpdGggc3RyaW5nIGNvbmNhdGVuYXRpb24uPC9wPgotICAgICAgICAgICAgICAg
IDxwPkJ1aWxkaW5nIHNoYWRlcnMgYnkgc3RyaW5nIGNvbmNhdGVuYXRpb24gYW5kIGNvbXBpbGlu
ZyB0aGVtIGRpcmVjdGx5IGlzIGEgZHJhbWF0aWMgaW1wcm92ZW1lbnQgb3ZlciBsYW5ndWFnZXMg
d2hpY2ggY2Fubm90IGRvIHRoaXMga2luZCBvZiBtYW5pcHVsYXRpb24gZWFzaWx5LCBsaWtlIGJ5
dGVjb2RlLWJhc2VkIGxhbmd1YWdlcy4gRm9yIHRoZXNlIG90aGVyIGxhbmd1YWdlcywgZ2VuZXJh
dGlvbiBvZiBzaGFkZXJzIGF0IHJ1bi10aW1lIHJlcXVpcmVzIHRoZSBleGVjdXRpb24gb2YgYW4g
YWRkaXRpb25hbCBjb21waWxlciwgd3JpdHRlbiBpbiBKYXZhU2NyaXB0IG9yIFdlYkFzc2VtYmx5
LCB0byBjb21waWxlIHRoZSBnZW5lcmF0ZWQgc291cmNlIHRleHQgaW50byB0aGUgYnl0ZWNvZGUg
Zm9ybS48L3A+Ci0gICAgICAgICAgICAgICAgPHA+VGhpcyBleHRyYSBzdGVwIHNsb3dzIGRvd24g
cGVyZm9ybWFuY2UgaW4gdHdvIHdheXMuIEZpcnN0LCB0aGUgZXhlY3V0aW9uIG9mIHRoZSBhZGRp
dGlvbmFsIGNvbXBpbGVyIHRha2VzIHRpbWUuIFNlY29uZCwgdGhlIGNvbXBpbGVyIHNvdXJjZSB3
b3VsZCBoYXZlIHRvIGJlIHNlcnZlZCB3aXRoIHRoZSByZXN0IG9mIHRoZSB3ZWIgcGFnZeKAmXMg
cmVzb3VyY2VzLCB3aGljaCBpbmNyZWFzZXMgdGhlIHBhZ2Ugc2l6ZSBhbmQgbGVuZ3RoZW5zIHRo
ZSBsb2FkaW5nIHRpbWUgb2YgdGhlIHdlYiBwYWdlLiBPbiB0aGUgb3RoZXIgaGFuZCwgc2luY2Ug
V1NM4oCZcyBmb3JtYXQgaXMgdGV4dHVhbCwgdGhlcmXigJlzIG5vIGFkZGl0aW9uYWwgY29tcGls
ZSBzdGVwOyB5b3UgY2FuIGp1c3Qgd3JpdGUgaXQgYW5kIHJ1biBpdCE8L3A+Ci0gICAgICAgICAg
ICAgICAgPHA+QXMgYSBwb2ludCBvZiBjb21wYXJpc29uLCBsZXTigJlzIHRha2UgdGhlIEJhYnls
b24uanMgZGVtbyBzaG93biBhYm92ZS4gQmFieWxvbi5qcyByZW5kZXJzIHNjZW5lcyBieSBqb2lu
aW5nIEdMU0wgc2hhZGVyIHNuaXBwZXRzIGF0IHJ1bnRpbWUuIFdoZW4gdXNpbmcgV1NMLCBCYWJ5
bG9uLmpzIHdvdWxkIHNpbXBseSBzZXJ2ZSB0aGUgV1NMIHNuaXBwZXRzIGp1c3QgbGlrZSB0aGV5
4oCZcmUgc2VydmluZyBHTFNMIHNuaXBwZXRzIHRvZGF5LiBUbyBkbyB0aGUgc2FtZSB3aXRoIFNQ
SVItViwgQmFieWxvbi5qcyB3b3VsZCBzZXJ2ZSB0aGVpciBzaGFkZXIgc25pcHBldHMgYWxvbmcg
d2l0aCBhIGNvbXBpbGVyIHRoYXQgY29tcGlsZXMgdGhlc2UgdGV4dHVhbCBzbmlwcGV0cyBkb3du
IHRvIFNQSVItVi4gQ2hyb21lIHJlY2VudGx5IDxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXR1YmUu
Y29tL3dhdGNoP3Y9SzJKeklVSUhJaGMiPmFubm91bmNlZDwvYT4gdGhlaXIgc3VwcG9ydCBmb3Ig
V2ViR1BVIHdpdGggU1BJUi1WIHVzaW5nIHRoZSBzYW1lIGRlbW8uIEhlcmUgaXMgYSBjb21wYXJp
c29uIG9mIHRoZSBnemlwcGVkIHdpcmUgc2l6ZXMgZm9yIHRoZSBzaGFkZXJzIGFzIFdTTCwgYW5k
IHRoYXQgb2YgdGhlIHNoYWRlcnMgYXMgR0xTTCBhbmQgdGhlIFNQSVItViBjb21waWxlcjo8L3A+
Ci0gICAgICAgICAgICAgICAgPGZpZ3VyZSBjbGFzcz0id2lkZXNjcmVlbiBtYXR0ZXdoaXRlIj48
aW1nIHNyYz0iaHR0cHM6Ly93ZWJraXQub3JnL3dwLWNvbnRlbnQvdXBsb2Fkcy9XU0xHemlwcGVk
V2lyZVNpemUucG5nIiBhbHQ9IiIgY2xhc3M9IndwLWltYWdlLTk1MzUiIHNyY3NldD0iaHR0cHM6
Ly93ZWJraXQub3JnL3dwLWNvbnRlbnQvdXBsb2Fkcy9XU0xHemlwcGVkV2lyZVNpemUucG5nIDEx
MzJ3LCBodHRwczovL3dlYmtpdC5vcmcvd3AtY29udGVudC91cGxvYWRzL1dTTEd6aXBwZWRXaXJl
U2l6ZS0zMDB4MTI4LnBuZyAzMDB3LCBodHRwczovL3dlYmtpdC5vcmcvd3AtY29udGVudC91cGxv
YWRzL1dTTEd6aXBwZWRXaXJlU2l6ZS03Njh4MzI4LnBuZyA3Njh3LCBodHRwczovL3dlYmtpdC5v
cmcvd3AtY29udGVudC91cGxvYWRzL1dTTEd6aXBwZWRXaXJlU2l6ZS0xMDI0eDQzOC5wbmcgMTAy
NHciIHNpemVzPSIobWF4LXdpZHRoOiAxMTMycHgpIDEwMHZ3LCAxMTMycHgiIC8+PC9maWd1cmU+
Ci0gICAgICAgICAgICAgICAgPHA+VGhlIHRvcCBiYXIgc2hvd3MgdGhlIHdpcmUgc2l6ZSBpZiBC
YWJ5bG9uLmpzIHVzZWQgV1NMIGRpcmVjdGx5LiBUaGUgbWlkZGxlIGJhciBzaG93cyB0aGUgd2ly
ZSBzaXplIG9mIHRoZSBHTFNMIHNvdXJjZSwgcGx1cyB0aGUgY29tcGlsZXIgdGhhdCBCYWJ5bG9u
LmpzIHVzZXMgdG8gY29tcGlsZSB0aGVpciBzbmlwcGV0cyBpbnRvIFNQSVItVi4gVGhlIGJvdHRv
bSBiYXIgc2hvd3MgdGhlIHdpcmUgc2l6ZSBpZiBCYWJ5bG9uLmpzIHNpbXBseSBzZXJ2ZWQgdGhl
IHJlc3VsdHMgb2YgdGhlaXIgU1BJUi1WIGNvbXBpbGF0aW9uLiBCZWNhdXNlIG9mIHRoZSBkeW5h
bWljIG5hdHVyZSBvZiBCYWJ5bG9uLmpz4oCZcyBzaGFkZXJzLCB0aGV5IGFzc2VtYmxlIHRoZWly
IHNoYWRlcnMgYXQgcnVudGltZSBhbmQgY29tcGlsZSB0aGVtIGR5bmFtaWNhbGx5LCBzbyB0aGV5
IHJlcXVpcmUgdGhlIFNQSVItViBjb21waWxlci4gSG93ZXZlciwgb3RoZXIgd2Vic2l0ZXPigJkg
c2hhZGVycyBtYXkgYmUgbW9yZSBzdGF0aWMsIGluIHdoaWNoIGNhc2UgdGhleSB3b3VsZG7igJl0
IG5lZWQgdGhlIGNvbXBpbGVyIGFuZCBjb3VsZCBzZXJ2ZSB0aGUgU1BJUi1WIGRpcmVjdGx5LCBs
aWtlIGluIHRoZSBib3R0b20gYmFyIGluIHRoZSBncmFwaCBhYm92ZS48L3A+Ci0gICAgICAgICAg
ICAgICAgPGgzPkNvbXBpbGF0aW9uIFBlcmZvcm1hbmNlPC9oMz4KLSAgICAgICAgICAgICAgICA8
cD5XZSYjODIxNzt2ZSBoZWFyZCBmcm9tIGRldmVsb3BlcnMgdGhhdCBzaGFkZXIgY29tcGlsYXRp
b24gcGVyZm9ybWFuY2UgaXMgZXh0cmVtZWx5IGltcG9ydGFudC4gT25lIHdheSB0aGUgY29tbXVu
aXR5IGdyb3VwIGFkZHJlc3NlZCB0aGlzIHdhcyBkZXNpZ25pbmcgV2ViR1BVIHRvIHN1cHBvcnQg
YXN5bmNocm9ub3VzIGNvbXBpbGF0aW9uLCB3aGljaCBhdm9pZHMgYmxvY2tpbmcgc3VjY2Vzc2l2
ZSByZW5kZXJpbmcgY29tbWFuZHMuIEFzeW5jaHJvbm91cyBjb21waWxhdGlvbiBpc27igJl0IGEg
bWFnaWMgYnVsbGV0LCB0aG91Z2guIElmIHRoZSBuZXh0IHJlbmRlcmluZyBjb21tYW5kIHVzZXMg
YSBzaGFkZXIgY3VycmVudGx5IGJlaW5nIGNvbXBpbGVkLCB0aGF0IHJlbmRlcmluZyBjb21tYW5k
IG11c3Qgd2FpdCBmb3IgdGhlIGNvbXBpbGF0aW9uIGNvbXBsZXRlLiBTbywgd2UmIzgyMTc7dmUg
cHV0IHNpZ25pZmljYW50IGVmZm9ydCBpbnRvIG1ha2luZyBXU0wgY29tcGlsYXRpb24gdGltZXMg
ZmFzdC48L3A+Ci0gICAgICAgICAgICAgICAgPHA+VGhlIFdlYkdQVSBjb21tdW5pdHkgY3JlYXRl
ZCBhIGNvbXB1dGUgc2hhZGVyIHRvIGRlbW9uc3RyYXRlIHRoZSBmbG9ja2luZyBjaGFyYWN0ZXJp
c3RpY3Mgb2YgJiM4MjIwO2JvaWRzLCYjODIyMTsgYW5kIHdlIHR1cm5lZCB0aGF0IHNhbXBsZSBp
bnRvIGEgPGEgaHJlZj0iaHR0cHM6Ly93ZWJraXQub3JnL2RlbW9zL3dlYmdwdS9jb21wdXRlLWJv
aWRzLWNvbXBpbGUuaHRtbCI+Y29tcGlsZXIgcGVyZm9ybWFuY2UgYmVuY2htYXJrPC9hPi4gSGVy
ZSB3ZSBjb21wYXJlIHRoZSBjb21waWxhdGlvbiB0aW1lIG9mIFdTTCB3aXRoIHRoZSBydW4tdGlt
ZSBvZiB0aGUgR0xTTCBjb21waWxlciB0byBTUElSLVYgcnVubmluZyBhcyBhIFdlYkFzc2VtYmx5
IGxpYnJhcnk6PC9wPgotICAgICAgICAgICAgICAgIDxmaWd1cmUgY2xhc3M9IndpZGVzY3JlZW4g
bWF0dGV3aGl0ZSI+PGltZyBzcmM9Imh0dHBzOi8vd2Via2l0Lm9yZy93cC1jb250ZW50L3VwbG9h
ZHMvV1NMQ29tcGlsYXRpb25UaW1lLnBuZyIgYWx0PSIiIGNsYXNzPSJ3cC1pbWFnZS05NTM2IiBz
cmNzZXQ9Imh0dHBzOi8vd2Via2l0Lm9yZy93cC1jb250ZW50L3VwbG9hZHMvV1NMQ29tcGlsYXRp
b25UaW1lLnBuZyAxMDgydywgaHR0cHM6Ly93ZWJraXQub3JnL3dwLWNvbnRlbnQvdXBsb2Fkcy9X
U0xDb21waWxhdGlvblRpbWUtMzAweDEzMS5wbmcgMzAwdywgaHR0cHM6Ly93ZWJraXQub3JnL3dw
LWNvbnRlbnQvdXBsb2Fkcy9XU0xDb21waWxhdGlvblRpbWUtNzY4eDMzNS5wbmcgNzY4dywgaHR0
cHM6Ly93ZWJraXQub3JnL3dwLWNvbnRlbnQvdXBsb2Fkcy9XU0xDb21waWxhdGlvblRpbWUtMTAy
NHg0NDcucG5nIDEwMjR3IiBzaXplcz0iKG1heC13aWR0aDogMTA4MnB4KSAxMDB2dywgMTA4MnB4
IiAvPjwvZmlndXJlPgotICAgICAgICAgICAgICAgIDxwPkFzIHlvdSBjYW4gc2VlLCB3ZeKAmXJl
IGNvbnRpbnVpbmcgdG8gb3B0aW1pemUgY29tcGlsYXRpb24gcGVyZm9ybWFuY2UsIGFuZCBpdOKA
mXMgYmVlbiBpbmNyZWFzaW5nIGJvdGggdGhyb3VnaG91dCBhbmQgYWZ0ZXIgU1RQIDkx4oCZcyBy
ZWxlYXNlLjwvcD4KLSAgICAgICAgICAgICAgICA8aDI+R2l2ZSBXZWJHUFUgYSB0cnkhPC9oMj4K
LSAgICAgICAgICAgICAgICA8cD5XZSYjODIxNztyZSB2ZXJ5IGV4Y2l0ZWQgdG8gaGF2ZSBpbXBs
ZW1lbnRlZCBhIGJldGEgdmVyc2lvbiBvZiBXZWJHUFUgYW5kIFdTTCBpbiB0aGUgbGF0ZXN0IHZl
cnNpb24gb2YgU2FmYXJpIFRlY2hub2xvZ3kgUHJldmlldy4gVHJ5IGl0IG91dCBhbmQgbGV0IHVz
IGtub3cgaG93IHdlbGwgaXQgd29ya3MgZm9yIHlvdSEgV2UmIzgyMTc7cmUgaW50ZXJlc3RlZCBp
biBmZWVkYmFjayBzbyB3ZSBjYW4gZXZvbHZlIHRoZSBXZWJHUFUgYW5kIFdTTCBsYW5ndWFnZSB0
byBiZXR0ZXIgc3VpdCBldmVyeW9uZSYjODIxNztzIG5lZWRzLjwvcD4KLSAgICAgICAgICAgICAg
ICA8cD5BbmQgYmUgc3VyZSB0byBjaGVjayBvdXQgb3VyIDxhIGhyZWY9Imh0dHBzOi8vd2Via2l0
Lm9yZy9kZW1vcy93ZWJncHUvIj5nYWxsZXJ5IG9mIFdlYkdQVSBzYW1wbGVzPC9hPi4gV2UmIzgy
MTc7bGwgYmUga2VlcGluZyB0aGlzIHBhZ2UgdXBkYXRlZCB3aXRoIHRoZSBsYXRlc3QgZGVtb3Mu
IE1hbnkgdGhhbmtzIHRvIFNlYmFzdGllbiBWYW5kZW5iZXJnaGUgYW5kIERhdmlkIENhdHVoZSBm
cm9tIEJhYnlsb24uanMgZm9yIHRoZWlyIGhlbHAgd2l0aCBCYWJ5bG9uLmpzIGluIFNhZmFyaS48
L3A+Ci0gICAgICAgICAgICAgICAgPHA+Rm9yIG1vcmUgaW5mb3JtYXRpb24sIHlvdSBjYW4gY29u
dGFjdCBtZSBhdCA8YSBocmVmPSJtYWlsdG86bW1heGZpZWxkQGFwcGxlLmNvbSI+bW1heGZpZWxk
QGFwcGxlLmNvbTwvYT4gb3IgPGEgaHJlZj0iaHR0cDovL3R3aXR0ZXIuY29tL0xpdGhlcnVtIj5A
TGl0aGVydW08L2E+LCBvciB5b3UgY2FuIGNvbnRhY3Qgb3VyIGV2YW5nZWxpc3QsIDxhIGhyZWY9
Im1haWx0bzpqb25kQGFwcGxlLmNvbSI+Sm9uYXRoYW4gRGF2aXM8L2E+LjwvcD4KLSAgICAgICAg
ICAgICAgICA8cD48YSBuYW1lPSJmb290bm90ZXMiIGNsYXNzPSJmb290bm90ZSI+PC9hPjxiciAv
PgotICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNmb290bm90ZU9uZSI+MTwvYT4gVG8gZW5hYmxl
IFdlYkdQVSBiZXRhIHN1cHBvcnQsIGluIERldmVsb3AgbWVudSwgc2VsZWN0IEV4cGVyaW1lbnRh
bCBGZWF0dXJlcyA+IFdlYkdQVS48YnIgLz4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSIjZm9v
dG5vdGVUd28iPjI8L2E+IFdlIHN0aWxsIHByb25vdW5jZSBpdCDigJx3aGlzdGxl4oCdLCB0aG91
Z2guPC9wPgotICAgICAgICAgICAgICAgIF1dPgotICAgICAgICAgICAgPC9jb250ZW50OmVuY29k
ZWQ+Ci0gICAgICAgICAgICA8ZW5jbG9zdXJlIHVybD0iaHR0cHM6Ly93ZWJraXQub3JnL3dwLWNv
bnRlbnQvdXBsb2Fkcy9XZWJHUFVEZW1vVmlkZW8ubXA0IiBsZW5ndGg9IjI0MTAxODciIHR5cGU9
InZpZGVvL21wNCIvPgotICAgICAgICA8L2l0ZW0+Ci0gICAgICAgIDxpdGVtPgotICAgICAgICAg
ICAgPHRpdGxlPlJlbGVhc2UgTm90ZXMgZm9yIFNhZmFyaSBUZWNobm9sb2d5IFByZXZpZXcgOTE8
L3RpdGxlPgotICAgICAgICAgICAgPGxpbms+aHR0cHM6Ly93ZWJraXQub3JnL2Jsb2cvOTUyNi9y
ZWxlYXNlLW5vdGVzLWZvci1zYWZhcmktdGVjaG5vbG9neS1wcmV2aWV3LTkxLzwvbGluaz4KLSAg
ICAgICAgICAgIDxwdWJEYXRlPldlZCwgMDQgU2VwIDIwMTkgMTc6MDA6NTIgKzAwMDA8L3B1YkRh
dGU+Ci0gICAgICAgICAgICA8ZGM6Y3JlYXRvcj4KLSAgICAgICAgICAgICAgICA8IVtDREFUQVtd
XT4KLSAgICAgICAgICAgIDwvZGM6Y3JlYXRvcj4KLSAgICAgICAgICAgIDxjYXRlZ29yeT4KLSAg
ICAgICAgICAgICAgICA8IVtDREFUQVtTYWZhcmkgVGVjaG5vbG9neSBQcmV2aWV3XV0+Ci0gICAg
ICAgICAgICA8L2NhdGVnb3J5PgotCi0gICAgICAgICAgICA8Z3VpZCBpc1Blcm1hTGluaz0iZmFs
c2UiPmh0dHBzOi8vd2Via2l0Lm9yZy8/cD05NTI2PC9ndWlkPgotICAgICAgICAgICAgPGRlc2Ny
aXB0aW9uPgotICAgICAgICAgICAgICAgIDwhW0NEQVRBW1NhZmFyaSBUZWNobm9sb2d5IFByZXZp
ZXcgUmVsZWFzZSA5MSBpcyBub3cgYXZhaWxhYmxlIGZvciBkb3dubG9hZCBmb3IgbWFjT1MgTW9q
YXZlIGFuZCB0aGUgbWFjT1MgQ2F0YWxpbmEgYmV0YS5dXT4KLSAgICAgICAgICAgIDwvZGVzY3Jp
cHRpb24+Ci0gICAgICAgICAgICA8Y29udGVudDplbmNvZGVkPgotICAgICAgICAgICAgICAgIDwh
W0NEQVRBWzxwPjxhIGhyZWY9Imh0dHBzOi8vd2Via2l0Lm9yZy9ibG9nLzYwMTcvaW50cm9kdWNp
bmctc2FmYXJpLXRlY2hub2xvZ3ktcHJldmlldy8iPlNhZmFyaSBUZWNobm9sb2d5IFByZXZpZXc8
L2E+IFJlbGVhc2UgOTEgaXMgbm93IDxhIGhyZWY9Imh0dHBzOi8vd2Via2l0Lm9yZy9kb3dubG9h
ZHMvIj5hdmFpbGFibGUgZm9yIGRvd25sb2FkPC9hPiBmb3IgbWFjT1MgTW9qYXZlIGFuZCB0aGUg
bWFjT1MgQ2F0YWxpbmEgYmV0YS4gSWYgeW91IGFscmVhZHkgaGF2ZSBTYWZhcmkgVGVjaG5vbG9n
eSBQcmV2aWV3IGluc3RhbGxlZCwgeW91IGNhbiB1cGRhdGUgaW4gdGhlIFNvZnR3YXJlIFVwZGF0
ZSBwYW5lIG9mIFN5c3RlbSBQcmVmZXJlbmNlcyBvbiBtYWNPUy48L3A+Ci0gICAgICAgICAgICAg
ICAgPHA+VGhpcyByZWxlYXNlIGNvdmVycyBXZWJLaXQgcmV2aXNpb25zIDxhIGhyZWY9Imh0dHBz
Oi8vdHJhYy53ZWJraXQub3JnL2xvZz9zdG9wX3Jldj0yNDg3MDUmYW1wOyZhbXA7cmV2PTI0OTE5
MCZhbXA7bGltaXQ9OTk5Ij4yNDg3MDUtMjQ5MTkwPC9hPi48L3A+Ci0gICAgICAgICAgICAgICAg
PGgzPlNlY3VyaXR5PC9oMz4KLSAgICAgICAgICAgICAgICA8dWw+Ci0gICAgICAgICAgICAgICAg
PGxpPkRpc2FibGVkIGxlZ2FjeSBUTFMgMS4wIGFuZCBUTFMgMS4xICg8YSBocmVmPSJodHRwczov
L3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ5MDE5L3dlYmtpdC8iPnIyNDkwMTk8L2E+KTwv
bGk+Ci0gICAgICAgICAgICAgICAgPC91bD4KLSAgICAgICAgICAgICAgICA8aDM+SmF2YVNjcmlw
dCBBUEk8L2gzPgotICAgICAgICAgICAgICAgIDx1bD4KLSAgICAgICAgICAgICAgICA8bGk+QWRk
ZWQgYSBwdWJsaWMgQVBJIGZvciB1bmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb25zICg8YSBocmVm
PSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ5MDU4L3dlYmtpdC8iPnIyNDkw
NTg8L2E+KTwvbGk+Ci0gICAgICAgICAgICAgICAgPGxpPkFkZGVkIHN1cHBvcnQgZm9yIGhhc2hi
YW5nIGluIEVTTmV4dCAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzI0ODgyNi93ZWJraXQvIj5yMjQ4ODI2PC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDxsaT5J
bXBsZW1lbnRlZCBvcHRpb25hbCBjaGFpbmluZyBpbiBFU05leHQgKDxhIGhyZWY9Imh0dHBzOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDg4Mjkvd2Via2l0LyI+cjI0ODgyOTwvYT4pPC9s
aT4KLSAgICAgICAgICAgICAgICA8bGk+SW1wbGVtZW50ZWQgPGNvZGU+U3RhdGljUmFuZ2U8L2Nv
ZGU+IGNvbnN0cnVjdG9yICg8YSBocmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvMjQ5MDc5L3dlYmtpdC8iPnIyNDkwNzk8L2E+KTwvbGk+Ci0gICAgICAgICAgICAgICAgPGxp
PkZpeGVkIDxjb2RlPkRhdGUucHJvdG90eXBlLnRvSlNPTjwvY29kZT4gdG8gbm90IHRocm93IGFu
IGV4Y2VwdGlvbiBpZiA8Y29kZT50b0lTT1N0cmluZzwvY29kZT4gcmV0dXJucyBhbiBvYmplY3Qg
KDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDg4NzYvd2Via2l0
LyI+cjI0ODg3NjwvYT4pPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+Rml4ZWQgbW9yZSBtaXNz
aW5nIGV4Y2VwdGlvbiBjaGVja3MgaW4gPGNvZGU+U3RyaW5nLnByb3RvdHlwZTwvY29kZT4gKDxh
IGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDg3MTYvd2Via2l0LyI+
cjI0ODcxNjwvYT4pPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+Rml4ZWQgYSBiYWQgZXJyb3Ig
bWVzc2FnZSB3aGVuIDxjb2RlPmZvci1hd2FpdC1vZjwvY29kZT4gaXMgdXNlZCBpbiBhIG5vbi1h
c3luYyBmdW5jdGlvbiAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzI0ODcxMS93ZWJraXQvIj5yMjQ4NzExPC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDxsaT5G
aXhlZCBQcm94eU9iamVjdCB0byBub3QgYWxsb3cgYWNjZXNzIHRvIGl0cyB0YXJnZXQmIzgyMTc7
cyBwcml2YXRlIHByb3BlcnRpZXMgKDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC8yNDg3OTYvd2Via2l0LyI+cjI0ODc5NjwvYT4pPC9saT4KLSAgICAgICAgICAgICAg
ICA8bGk+VXBkYXRlZCB0aGUgUHJvbWlzZSBjb25zdHJ1Y3RvciB0byBjaGVjayBhcmd1bWVudCBi
ZWZvcmUgYENvbnN0cnVjdD8mIzgyMjA7ICg8YSBocmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMjQ4Nzg3L3dlYmtpdC8iPnIyNDg3ODc8L2E+KTwvbGk+Ci0gICAgICAgICAg
ICAgICAgPGxpPlVwZGF0ZWQgPGNvZGU+UHJvbWlzZS5wcm90b3R5cGUuZmluYWxseTwvY29kZT4g
dG8gYWNjZXB0IG5vbi1wcm9taXNlIG9iamVjdHMgKDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC8yNDg3OTMvd2Via2l0LyI+cjI0ODc5MzwvYT4pPC9saT4KLSAgICAg
ICAgICAgICAgICA8L3VsPgotICAgICAgICAgICAgICAgIDxoMz5KYXZhU2NyaXB0IFBlcmZvcm1h
bmNlPC9oMz4KLSAgICAgICAgICAgICAgICA8dWw+Ci0gICAgICAgICAgICAgICAgPGxpPkNoYW5n
ZWQgdG8gYXZvaWQgbG9va2luZyB1cCB0aGUgPGNvZGU+am9pbjwvY29kZT4gZnVuY3Rpb24gZWFj
aCB0aW1lIDxjb2RlPkFycmF5LnByb3RvdHlwZS50b1N0cmluZzwvY29kZT4gaXMgY2FsbGVkICg8
YSBocmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ4OTA2L3dlYmtpdC8i
PnIyNDg5MDY8L2E+KTwvbGk+Ci0gICAgICAgICAgICAgICAgPGxpPkVuc3VyZWQgPGNvZGU+eD8u
eSA/PyB6PC9jb2RlPiBpcyBmYXN0ICg8YSBocmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvMjQ5MTE3L3dlYmtpdC8iPnIyNDkxMTc8L2E+KTwvbGk+Ci0gICAgICAgICAgICAg
ICAgPC91bD4KLSAgICAgICAgICAgICAgICA8aDM+TWVkaWE8L2gzPgotICAgICAgICAgICAgICAg
IDx1bD4KLSAgICAgICAgICAgICAgICA8bGk+Rml4ZWQgZmlyaW5nIDxjb2RlPndlYmtpdHByZXNl
bnRhdGlvbm1vZGVjaGFuZ2VkPC9jb2RlPiB0d2ljZSB3aGVuIGV4aXRpbmcgcGljdHVyZS1pbi1w
aWN0dXJlICg8YSBocmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ5MTQx
L3dlYmtpdC8iPnIyNDkxNDE8L2E+KTwvbGk+Ci0gICAgICAgICAgICAgICAgPGxpPlVwZGF0ZWQg
dG8gc3RvcCA8Y29kZT5NZWRpYURldmljZXM8L2NvZGU+IHRpbWVyIHdoZW4gc3RvcHBpbmcgPGNv
ZGU+TWVkaWFEZXZpY2VzPC9jb2RlPiAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzI0ODg1My93ZWJraXQvIj5yMjQ4ODUzPC9hPik8L2xpPgotICAgICAgICAgICAg
ICAgIDxsaT5GaXhlZCByZW1vdmluZyBmdWxsc2NyZWVuIGVsZW1lbnQgaW4gYSA8Y29kZT5yZXF1
ZXN0QW5pbWF0aW9uRnJhbWUoKTwvY29kZT4gY2FsbGJhY2sgYWZ0ZXIgPGNvZGU+cmVxdWVzdEZ1
bGxzY3JlZW4oKTwvY29kZT4gbGVhdmluZyBmdWxsc2NyZWVuIGluIGFuIGluY29uc2lzdGVudCBz
dGF0ZSAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0OTE0Ny93
ZWJraXQvIj5yMjQ5MTQ3PC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDxsaT5EaXNhYmxlZCBk
ZXZpY2VzIHNob3VsZCBub3QgYmUgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gc2VhcmNoaW5nIGZv
ciBhIGNhcHR1cmUgZGV2aWNlICg8YSBocmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMjQ5MTU0L3dlYmtpdC8iPnIyNDkxNTQ8L2E+KTwvbGk+Ci0gICAgICAgICAgICAgICAg
PC91bD4KLSAgICAgICAgICAgICAgICA8aDM+V2ViIEFQSTwvaDM+Ci0gICAgICAgICAgICAgICAg
PHVsPgotICAgICAgICAgICAgICAgIDxsaT5TdGFydGVkIHRvIGV4cG9zZSBHZW9sb2NhdGlvbiBp
bnRlcmZhY2VzICg8Y29kZT5HZW9sb2NhdGlvblBvc2l0aW9uPC9jb2RlPiwgPGNvZGU+R2VvbG9j
YXRpb25Qb3NpdGlvbkVycm9yLCBhbmQ8L2NvZGU+IDxjb2RlPkdlb2xvY2F0aW9uQ29vcmRpbmF0
ZXM8L2NvZGU+KSBvbiB0aGUgZ2xvYmFsIDxjb2RlPldpbmRvdzwvY29kZT4gb2JqZWN0ICg8YSBo
cmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ5MDY2L3dlYmtpdC8iPnIy
NDkwNjY8L2E+KTwvbGk+Ci0gICAgICAgICAgICAgICAgPGxpPkZpeGVkIEVtb2ppIHdpdGggdmFy
aWF0aW9uIHNlbGVjdG9ycyB0byBiZSByZW5kZXJlZCBpbiBlbW9qaSBzdHlsZSwgbm90IHRleHQg
c3R5bGUgKDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDg4MTUv
d2Via2l0LyI+cjI0ODgxNTwvYT4pPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+Q2hhbmdlZCBT
VkcgZWxlbWVudHMgdG8gYmVjb21lIGZvY3VzYWJsZSB3aGVuIDxjb2RlPmZvY3VzPC9jb2RlPiBh
bmQgPGNvZGU+a2V5PC9jb2RlPiBldmVudCBsaXN0ZW5lcnMgYXJlIGFkZGVkICg8YSBocmVmPSJo
dHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ4OTgzL3dlYmtpdC8iPnIyNDg5ODM8
L2E+KTwvbGk+Ci0gICAgICAgICAgICAgICAgPGxpPkNoYW5nZWQgdGhlIGRlZmF1bHQgdGFiIGlu
ZGV4IG9mIDxjb2RlPm91dHB1dDwvY29kZT4gYW5kIDxjb2RlPmZpZWxkc2V0PC9jb2RlPiB0byBi
ZSAtMSAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0ODkxNC93
ZWJraXQvIj5yMjQ4OTE0PC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAg
ICAgICAgICAgPGgzPlJlbmRlcmluZzwvaDM+Ci0gICAgICAgICAgICAgICAgPHVsPgotICAgICAg
ICAgICAgICAgIDxsaT5GaXhlZCBkcmF3aW5nIGFuIGFuaW1hdGVkIGltYWdlIHRvIGEgY2FudmFz
IHZpYSA8Y29kZT5kcmF3SW1hZ2U8L2NvZGU+IHRvIGRyYXcgdGhlIGZpcnN0IGZyYW1lICg8YSBo
cmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ5MTYyL3dlYmtpdC8iPnIy
NDkxNjI8L2E+KTwvbGk+Ci0gICAgICAgICAgICAgICAgPC91bD4KLSAgICAgICAgICAgICAgICA8
aDM+UG9pbnRlciBFdmVudHM8L2gzPgotICAgICAgICAgICAgICAgIDx1bD4KLSAgICAgICAgICAg
ICAgICA8bGk+Rml4ZWQgcmVtb3ZpbmcgdGhlIGNhcHR1cmUgZWxlbWVudCBwcmV2ZW50aW5nIGZ1
dHVyZSBwb2ludGVyIGV2ZW50cyBmcm9tIGJlaW5nIGRpc3BhdGNoZWQgb24gbWFjT1MgKDxhIGhy
ZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDg4NTUvd2Via2l0LyI+cjI0
ODg1NTwvYT4pPC9saT4KLSAgICAgICAgICAgICAgICA8L3VsPgotICAgICAgICAgICAgICAgIDxo
Mz5XZWJEcml2ZXI8L2gzPgotICAgICAgICAgICAgICAgIDx1bD4KLSAgICAgICAgICAgICAgICA8
bGk+Rml4ZWQgbW91c2UgYnV0dG9ucyB0byBiZSBjb3JyZWN0bHkgcHJpbnRlZCBpbiA8Y29kZT5T
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXI8L2NvZGU+IGxvZ2dpbmcgKDxhIGhyZWY9Imh0dHBzOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDg3MTUvd2Via2l0LyI+cjI0ODcxNTwvYT4pPC9s
aT4KLSAgICAgICAgICAgICAgICA8L3VsPgotICAgICAgICAgICAgICAgIDxoMz5XZWIgSW5zcGVj
dG9yPC9oMz4KLSAgICAgICAgICAgICAgICA8dWw+Ci0gICAgICAgICAgICAgICAgPGxpPkVsZW1l
bnRzCi0gICAgICAgICAgICAgICAgPHVsPgotICAgICAgICAgICAgICAgIDxsaT5GaXhlZCBpc3N1
ZSB3aGVyZSAmIzgyMjA7Q29weSBSdWxlJiM4MjIxOyBtZW51IGl0ZW0gY29waWVkIGNvbW1lbnRl
ZCBvdXQgcHJvcGVydGllcyBpbmNvcnJlY3RseSAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzI0OTA4OS93ZWJraXQvIj5yMjQ5MDg5PC9hPik8L2xpPgotICAgICAg
ICAgICAgICAgIDxsaT5DaGFuZ2VkIHRvIGF1dG9tYXRpY2FsbHkgZW5hYmxlIHRoZSBldmVudCBs
aXN0ZW5lciB3aGVuIHNldHRpbmcgYSBicmVha3BvaW50IG9uIGl0IGluIHRoZSBOb2RlIGRldGFp
bHMgc2lkZWJhciAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0
ODc2NS93ZWJraXQvIj5yMjQ4NzY1PC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDxsaT5DaGFu
Z2VkIHRoZSBET00gdHJlZSB0byBhbHdheXMgYmUgTFRSLCBldmVuIGluIFJUTCBtb2RlICg8YSBo
cmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ4OTkxL3dlYmtpdC8iPnIy
NDg5OTE8L2E+KTwvbGk+Ci0gICAgICAgICAgICAgICAgPC91bD4KLSAgICAgICAgICAgICAgICA8
L2xpPgotICAgICAgICAgICAgICAgIDxsaT5OZXR3b3JrCi0gICAgICAgICAgICAgICAgPHVsPgot
ICAgICAgICAgICAgICAgIDxsaT5DaGFuZ2VkIHRoZSBIZWFkZXJzIHBhbmUgdG8gYWx3YXlzIGJl
IExUUiwgZXZlbiBpbiBSVEwgbW9kZSAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzI0ODg4OS93ZWJraXQvIj5yMjQ4ODg5PC9hPik8L2xpPgotICAgICAgICAgICAg
ICAgIDwvdWw+Ci0gICAgICAgICAgICAgICAgPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+UmVz
b3VyY2VzCi0gICAgICAgICAgICAgICAgPHVsPgotICAgICAgICAgICAgICAgIDxsaT5BZGRlZCBz
eW50YXggaGlnaGxpZ2h0aW5nIGZvciBtb3JlIENTUyBtZWRpYSBxdWVyaWVzICg8YSBocmVmPSJo
dHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ4ODEwL3dlYmtpdC8iPnIyNDg4MTA8
L2E+KTwvbGk+Ci0gICAgICAgICAgICAgICAgPGxpPkFkZGVkIHN5bnRheCBoaWdobGlnaHRpbmcg
Zm9yIEphdmFTY3JpcHQgPGNvZGU+QmlnSW50PC9jb2RlPiAoPGEgaHJlZj0iaHR0cHM6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0ODg5OC93ZWJraXQvIj5yMjQ4ODk4PC9hPiwgPGEgaHJl
Zj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0ODkwOC93ZWJraXQvIj5yMjQ4
OTA4PC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDxsaT5BZGRlZCBwcmV0dHkgcHJpbnRpbmcg
c3VwcG9ydCBmb3IgbW9yZSBtb2Rlcm4gSmF2YVNjcmlwdCBsYW5ndWFnZSBmZWF0dXJlcyAoPGEg
aHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0ODc2MC93ZWJraXQvIj5y
MjQ4NzYwPC9hPiwgPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0
ODc4NS93ZWJraXQvIj5yMjQ4Nzg1PC9hPiwgPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzI0ODkyMi93ZWJraXQvIj5yMjQ4OTIyPC9hPiwgPGEgaHJlZj0iaHR0cHM6
Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0ODkyMy93ZWJraXQvIj5yMjQ4OTIzPC9hPik8
L2xpPgotICAgICAgICAgICAgICAgIDxsaT5GaXhlZCBhIENvZGVNaXJyb3IgaXNzdWUgd2hlcmUg
dGFicyB3ZXJlIHN0aWxsIHVzZWQgZXZlbiB3aGVuIHRoZSAmIzgyMjA7UHJlZmVyIGluZGVudCB1
c2luZyYjODIyMTsgc2V0dGluZyBpcyBzZXQgdG8gJiM4MjIwO1NwYWNlcyYjODIyMTsgKDxhIGhy
ZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDg3Mzkvd2Via2l0LyI+cjI0
ODczOTwvYT4pPC9saT4KLSAgICAgICAgICAgICAgICA8L3VsPgotICAgICAgICAgICAgICAgIDwv
bGk+Ci0gICAgICAgICAgICAgICAgPGxpPkRlYnVnZ2VyCi0gICAgICAgICAgICAgICAgPHVsPgot
ICAgICAgICAgICAgICAgIDxsaT5BZGRlZCBhIGdsb2JhbCBicmVha3BvaW50IGZvciBwYXVzaW5n
IGluIHRoZSBuZXh0IG1pY3JvdGFzayAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzI0ODg5NC93ZWJraXQvIj5yMjQ4ODk0PC9hPik8L2xpPgotICAgICAgICAgICAg
ICAgIDxsaT5GaXhlZCBhbiBpc3N1ZSB3aGVyZSB0aGUgQXNzZXJ0aW9uIEZhaWx1cmVzIGJyZWFr
cG9pbnQgZGlkbuKAmXQgd29yayB3aGVuIGluc3BlY3RpbmcgYSBKU0NvbnRleHQgKDxhIGhyZWY9
Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDg4OTEvd2Via2l0LyI+cjI0ODg5
MTwvYT4pPC9saT4KLSAgICAgICAgICAgICAgICA8L3VsPgotICAgICAgICAgICAgICAgIDwvbGk+
Ci0gICAgICAgICAgICAgICAgPGxpPkNvbnNvbGUKLSAgICAgICAgICAgICAgICA8dWw+Ci0gICAg
ICAgICAgICAgICAgPGxpPkltcGxlbWVudGVkIDxjb2RlPnF1ZXJ5SG9sZGVyczwvY29kZT4gQ29t
bWFuZCBMaW5lIEFQSSBmdW5jdGlvbiAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzI0ODkyNS93ZWJraXQvIj5yMjQ4OTI1PC9hPik8L2xpPgotICAgICAgICAgICAg
ICAgIDxsaT5VcGRhdGVkIDxjb2RlPmNvbnNvbGUuZGlyPC9jb2RlPiB0byBzdGFydCBvdXQgZXhw
YW5kZWQgd2hlbiBnaXZlbiBhbiBvYmplY3QgKDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC8yNDkwMzQvd2Via2l0LyI+cjI0OTAzNDwvYT4pPC9saT4KLSAgICAgICAg
ICAgICAgICA8bGk+Q3JlYXRlZCBhZGRpdGlvbmFsIENvbW1hbmQgTGluZSBBUEkgZnVuY3Rpb25z
IGZvciBvdGhlciA8Y29kZT5jb25zb2xlPC9jb2RlPiBtZXRob2RzICg8YSBocmVmPSJodHRwczov
L3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ5MDc4L3dlYmtpdC8iPnIyNDkwNzg8L2E+KTwv
bGk+Ci0gICAgICAgICAgICAgICAgPGxpPkNoYW5nZWQgdGhlIENvbnNvbGUgdG8gYWx3YXlzIGJl
IExUUiwgZXZlbiBpbiBSVEwgbW9kZSAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzI0ODc2Ni93ZWJraXQvIj5yMjQ4NzY2PC9hPik8L2xpPgotICAgICAgICAgICAg
ICAgIDwvdWw+Ci0gICAgICAgICAgICAgICAgPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+U291
cmNlcyAoRXhwZXJpbWVudGFsKQotICAgICAgICAgICAgICAgIDx1bD4KLSAgICAgICAgICAgICAg
ICA8bGk+Rml4ZWQgYW4gaXNzdWUgd2hlcmUgdGhlIGdlYXIgaWNvbiB3b3VsZCBtb3ZlIHRvIHRo
ZSBzZWNvbmQgbGluZSB3aGVuIHRoZSBuYXZpZ2F0aW9uIHNpZGViYXIgaXMgbmFycm93ICg8YSBo
cmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ4ODE4L3dlYmtpdC8iPnIy
NDg4MTg8L2E+KTwvbGk+Ci0gICAgICAgICAgICAgICAgPGxpPkZpeGVkIGFuIGlzc3VlIHdoZXJl
IHRoZSAmIzgyMjA7Tm8gRmlsdGVyIFJlc3VsdHMmIzgyMjE7IG1lc3NhZ2Ugd2FzIGRpc3BsYXll
ZCBvbiB0b3Agb2YgYWxsIG9mIHRoZSBvdGhlciBjb250ZW50LCBwcmV2ZW50aW5nIGFueSBpbnRl
cmFjdGlvbiAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0ODcz
Ny93ZWJraXQvIj5yMjQ4NzM3PC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDxsaT5HYXZlIE9y
aWdpbnMgdGhlaXIgb3duIGljb24gaW4gdGhlIG5hdmlnYXRpb24gc2lkZWJhciAoPGEgaHJlZj0i
aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0ODkxMi93ZWJraXQvIj5yMjQ4OTEy
PC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDxsaT5Nb3ZlZCB0aGUgcmVzb3VyY2UgdHlwZSBz
Y29wZSBiYXIgdG8gYmUgbmV4dCB0byB0aGUgZmlsdGVyIGluIHRoZSBuYXZpZ2F0aW9uIHNpZGVi
YXIgKDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDg5MTYvd2Vi
a2l0LyI+cjI0ODkxNjwvYT4sIDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8yNDg5NDAvd2Via2l0LyI+cjI0ODk0MDwvYT4pPC9saT4KLSAgICAgICAgICAgICAgICA8
bGk+UHJvdmlkZWQgYSB3YXkgdG8gY3JlYXRlIGFuIGFyYml0cmFyeSBJbnNwZWN0b3IgU3R5bGUg
U2hlZXQgKDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDg3NTMv
d2Via2l0LyI+cjI0ODc1MzwvYT4pPC9saT4KLSAgICAgICAgICAgICAgICA8L3VsPgotICAgICAg
ICAgICAgICAgIDwvbGk+Ci0gICAgICAgICAgICAgICAgPGxpPkxheWVycyAoRXhwZXJpbWVudGFs
KQotICAgICAgICAgICAgICAgIDx1bD4KLSAgICAgICAgICAgICAgICA8bGk+Rml4ZWQgdGhlIGJh
Y2tncm91bmQgb2YgdGhlIDNEIGFyZWEgbm90IHVwZGF0aW5nIHdoZW4gdHJhbnNpdGlvbmluZyB0
by9mcm9tIERhcmsgTW9kZSAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0LzI0ODczNS93ZWJraXQvIj5yMjQ4NzM1PC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDwv
dWw+Ci0gICAgICAgICAgICAgICAgPC9saT4KLSAgICAgICAgICAgICAgICA8L3VsPgotICAgICAg
ICAgICAgICAgIDxoMz5XZWJHUFU8L2gzPgotICAgICAgICAgICAgICAgIDx1bD4KLSAgICAgICAg
ICAgICAgICA8bGk+QWRkZWQgdW5hcnkgcGx1cyAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzI0ODc1Ni93ZWJraXQvIj5yMjQ4NzU2PC9hPik8L2xpPgotICAgICAg
ICAgICAgICAgIDxsaT5DaGFuZ2VkIGVudW1zIHRvIG5vdCBiZSBzaGFkb3dlZCBieSBsb2NhbCB2
YXJpYWJsZXMgKDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDg4
MTIvd2Via2l0LyI+cjI0ODgxMjwvYT4pPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+Rml4ZWQg
V2ViR1BVIGxheWVycyBub3Qgc2hvd2luZyB1cCBzb21ldGltZXMgKDxhIGhyZWY9Imh0dHBzOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDg4Nzkvd2Via2l0LyI+cjI0ODg3OTwvYT4pPC9s
aT4KLSAgICAgICAgICAgICAgICA8bGk+SW1wbGVtZW50ZWQgR1BVRXJyb3JzIGZvciBhbmQgcmVs
YXggR1BVQnVmZmVyIHZhbGlkYXRpb24gcnVsZXMgKDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC8yNDkxODMvd2Via2l0LyI+cjI0OTE4MzwvYT4pPC9saT4KLSAgICAg
ICAgICAgICAgICA8bGk+TWFkZSA8Y29kZT5vcGVyYXRvcj09PC9jb2RlPiBuYXRpdmUgYW5kIGFk
ZGVkIGJvb2wgbWF0cmljZXMgKDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8yNDg3OTUvd2Via2l0LyI+cjI0ODc5NTwvYT4pPC9saT4KLSAgICAgICAgICAgICAgICA8
bGk+VXBkYXRlZCBtYXRyaWNlcyB0byBoYXZlIGNvbnN0cnVjdG9ycyB0aGF0IHRha2UgYSBmbGF0
dGVuZWQgbGlzdCBvZiBzY2FsYXJzICg8YSBocmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvMjQ4NzU0L3dlYmtpdC8iPnIyNDg3NTQ8L2E+KTwvbGk+Ci0gICAgICAgICAgICAg
ICAgPGxpPlVwZGF0ZWQgdmVydGV4IHNoYWRlciBhbmQgZnJhZ21lbnQgc2hhZGVyIHRvIGJlIGFi
bGUgdG8gY29tZSBmcm9tIHR3byBkaWZmZXJlbnQgcHJvZ3JhbXMgKDxhIGhyZWY9Imh0dHBzOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDg5OTMvd2Via2l0LyI+cjI0ODk5MzwvYT4pPC9s
aT4KLSAgICAgICAgICAgICAgICA8L3VsPgotICAgICAgICAgICAgICAgIF1dPgotICAgICAgICAg
ICAgPC9jb250ZW50OmVuY29kZWQ+Ci0gICAgICAgIDwvaXRlbT4KLSAgICAgICAgPGl0ZW0+Ci0g
ICAgICAgICAgICA8dGl0bGU+SG93IFdlYiBDb250ZW50IENhbiBBZmZlY3QgUG93ZXIgVXNhZ2U8
L3RpdGxlPgotICAgICAgICAgICAgPGxpbms+aHR0cHM6Ly93ZWJraXQub3JnL2Jsb2cvODk3MC9o
b3ctd2ViLWNvbnRlbnQtY2FuLWFmZmVjdC1wb3dlci11c2FnZS88L2xpbms+Ci0gICAgICAgICAg
ICA8cHViRGF0ZT5UdWUsIDI3IEF1ZyAyMDE5IDE3OjAwOjU4ICswMDAwPC9wdWJEYXRlPgotICAg
ICAgICAgICAgPGRjOmNyZWF0b3I+Ci0gICAgICAgICAgICAgICAgPCFbQ0RBVEFbXV0+Ci0gICAg
ICAgICAgICA8L2RjOmNyZWF0b3I+Ci0gICAgICAgICAgICA8Y2F0ZWdvcnk+Ci0gICAgICAgICAg
ICAgICAgPCFbQ0RBVEFbUGVyZm9ybWFuY2VdXT4KLSAgICAgICAgICAgIDwvY2F0ZWdvcnk+Ci0g
ICAgICAgICAgICA8Y2F0ZWdvcnk+Ci0gICAgICAgICAgICAgICAgPCFbQ0RBVEFbV2ViIEluc3Bl
Y3Rvcl1dPgotICAgICAgICAgICAgPC9jYXRlZ29yeT4KLQotICAgICAgICAgICAgPGd1aWQgaXNQ
ZXJtYUxpbms9ImZhbHNlIj5odHRwczovL3dlYmtpdC5vcmcvP3A9ODk3MDwvZ3VpZD4KLSAgICAg
ICAgICAgIDxkZXNjcmlwdGlvbj4KLSAgICAgICAgICAgICAgICA8IVtDREFUQVtVc2VycyBzcGVu
ZCBhIGxhcmdlIHByb3BvcnRpb24gb2YgdGhlaXIgb25saW5lIHRpbWUgb24gbW9iaWxlIGRldmlj
ZXMsIGFuZCBhIHNpZ25pZmljYW50IGZyYWN0aW9uIG9mIHRoZSByZXN0IGlzIHVzZXJzIG9uIHVu
dGV0aGVyZWQgbGFwdG9wIGNvbXB1dGVycy5dXT4KLSAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+
Ci0gICAgICAgICAgICA8Y29udGVudDplbmNvZGVkPgotICAgICAgICAgICAgICAgIDwhW0NEQVRB
WzxzdHlsZT5AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOmRhcmspIHsgZmlndXJlIHBpY3R1
cmUgaW1nIHsgZmlsdGVyOiBub25lOyB9IH08L3N0eWxlPgotICAgICAgICAgICAgICAgIDxwPlVz
ZXJzIHNwZW5kIGEgbGFyZ2UgcHJvcG9ydGlvbiBvZiB0aGVpciBvbmxpbmUgdGltZSBvbiBtb2Jp
bGUgZGV2aWNlcywgYW5kIGEgc2lnbmlmaWNhbnQgZnJhY3Rpb24gb2YgdGhlIHJlc3QgaXMgdXNl
cnMgb24gdW50ZXRoZXJlZCBsYXB0b3AgY29tcHV0ZXJzLiBGb3IgYm90aCwgYmF0dGVyeSBsaWZl
IGlzIGNyaXRpY2FsLiBJbiB0aGlzIHBvc3QsIHdlJiM4MjE3O2xsIHRhbGsgYWJvdXQgZmFjdG9y
cyB0aGF0IGFmZmVjdCBiYXR0ZXJ5IGxpZmUsIGFuZCBob3cgeW91LCBhcyBhIHdlYiBkZXZlbG9w
ZXIsIGNhbiBtYWtlIHlvdXIgcGFnZXMgbW9yZSBwb3dlciBlZmZpY2llbnQgc28gdGhhdCB1c2Vy
cyBjYW4gc3BlbmQgbW9yZSB0aW1lIGVuZ2FnZWQgd2l0aCB5b3VyIGNvbnRlbnQuPC9wPgotICAg
ICAgICAgICAgICAgIDxoMj5XaGF0IERyYXdzIFBvd2VyPzwvaDI+Ci0gICAgICAgICAgICAgICAg
PHA+TW9zdCBvZiB0aGUgZW5lcmd5IG9uIG1vYmlsZSBkZXZpY2VzIGlzIGNvbnN1bWVkIGJ5IGEg
ZmV3IG1ham9yIGNvbXBvbmVudHM6PC9wPgotICAgICAgICAgICAgICAgIDx1bD4KLSAgICAgICAg
ICAgICAgICA8bGk+Q1BVIChNYWluIHByb2Nlc3Nvcik8L2xpPgotICAgICAgICAgICAgICAgIDxs
aT5HUFUgKEdyYXBoaWNzIHByb2Nlc3NpbmcpPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+TmV0
d29ya2luZyAoV2ktRmkgYW5kIGNlbGx1bGFyIHJhZGlvIGNoaXBzKTwvbGk+Ci0gICAgICAgICAg
ICAgICAgPGxpPlNjcmVlbjwvbGk+Ci0gICAgICAgICAgICAgICAgPC91bD4KLSAgICAgICAgICAg
ICAgICA8cD5TY3JlZW4gcG93ZXIgY29uc3VtcHRpb24gaXMgcmVsYXRpdmVseSBjb25zdGFudCBh
bmQgbW9zdGx5IHVuZGVyIHRoZSB1c2VyJiM4MjE3O3MgY29udHJvbCAodmlhIHNjcmVlbiBvbi10
aW1lIGFuZCBicmlnaHRuZXNzKSwgYnV0IHRoZSBvdGhlciBjb21wb25lbnRzLCB0aGUgQ1BVLCBH
UFUgYW5kIG5ldHdvcmtpbmcgaGFyZHdhcmUgaGF2ZSBoaWdoIGR5bmFtaWMgcmFuZ2Ugd2hlbiBp
dCBjb21lcyB0byBwb3dlciBjb25zdW1wdGlvbi48L3A+Ci0gICAgICAgICAgICAgICAgPHA+VGhl
IHN5c3RlbSBhZGFwdHMgdGhlIENQVSBhbmQgR1BVIHBlcmZvcm1hbmNlIGJhc2VkIG9uIHRoZSBj
dXJyZW50IHRhc2tzIGJlaW5nIHByb2Nlc3NlZCwgaW5jbHVkaW5nLCBvZiBjb3Vyc2UsIHJlbmRl
cmluZyB3ZWIgcGFnZXMgdGhhdCB0aGUgdXNlciBpcyBpbnRlcmFjdGluZyB3aXRoIGluIHRoZWly
IHdlYiBicm93c2VyIGFuZCBvdGhlciBhcHBzIHVzaW5nIHdlYiBjb250ZW50LiBUaGlzIGlzIGRv
bmUgdGhyb3VnaCB0dXJuaW5nIHNvbWUgY29tcG9uZW50cyBvbiBvciBvZmYsIGFuZCBieSBjaGFu
Z2luZyB0aGVpciA8YSBocmVmPSJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DbG9ja19y
YXRlIj5jbG9jayBmcmVxdWVuY3k8L2E+LiBJbiBicm9hZCB0ZXJtcywgdGhlIG1vcmUgcGVyZm9y
bWFuY2UgdGhhdCBpcyByZXF1aXJlZCBmcm9tIHRoZSBjaGlwcywgdGhlIGxvd2VyIHRoZWlyIHBv
d2VyLWVmZmljaWVuY3kuIFRoZSBoYXJkd2FyZSBjYW4gcmFtcCB1cCB0byBoaWdoIHBlcmZvcm1h
bmNlIHZlcnkgcXVpY2tseSAoYnV0IGF0IGEgbGFyZ2UgcG93ZXIgY29zdCksIHRoZW4gcmFwaWRs
eSBnbyBiYWNrIHRvIGEgbW9yZSBlZmZpY2llbnQgPGEgaHJlZj0iaHR0cHM6Ly9zb2Z0d2FyZS5p
bnRlbC5jb20vZW4tdXMvYXJ0aWNsZXMvcG93ZXItbWFuYWdlbWVudC1zdGF0ZXMtcC1zdGF0ZXMt
Yy1zdGF0ZXMtYW5kLXBhY2thZ2UtYy1zdGF0ZXMiPmxvdy1wb3dlciBzdGF0ZTwvYT4uPC9wPgot
ICAgICAgICAgICAgICAgIDxoMj5HZW5lcmFsIFByaW5jaXBsZXMgZm9yIEdvb2QgUG93ZXIgVXNh
Z2U8L2gyPgotICAgICAgICAgICAgICAgIDxwPlRvIG1heGltaXplIGJhdHRlcnkgbGlmZSwgeW91
IHRoZXJlZm9yZSB3YW50IHRvIHJlZHVjZSB0aGUgYW1vdW50IG9mIHRpbWUgc3BlbnQgaW4gaGln
aC1wb3dlciBzdGF0ZXMsIGFuZCBsZXQgdGhlIGhhcmR3YXJlIGdvIGJhY2sgdG8gaWRsZSBhcyBt
dWNoIGFzIHBvc3NpYmxlLjwvcD4KLSAgICAgICAgICAgICAgICA8cD5Gb3Igd2ViIGRldmVsb3Bl
cnMsIHRoZXJlIGFyZSB0aHJlZSBzdGF0ZXMgb2YgaW50ZXJhY3Rpb24gdG8gdGhpbmsgYWJvdXQ6
PC9wPgotICAgICAgICAgICAgICAgIDx1bD4KLSAgICAgICAgICAgICAgICA8bGk+V2hlbiB0aGUg
dXNlciBpcyBhY3RpdmVseSBpbnRlcmFjdGluZyB3aXRoIHRoZSBjb250ZW50LjwvbGk+Ci0gICAg
ICAgICAgICAgICAgPGxpPldoZW4gdGhlIHBhZ2UgaXMgdGhlIGZyb250bW9zdCwgYnV0IHRoZSB1
c2VyIGlzIG5vdCBpbnRlcmFjdGluZyB3aXRoIGl0LjwvbGk+Ci0gICAgICAgICAgICAgICAgPGxp
PldoZW4gdGhlIHBhZ2UgaXMgbm90IHRoZSBmcm9udG1vc3QgY29udGVudC48L2xpPgotICAgICAg
ICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAgICAgPGgzPkVmZmljaWVudCB1c2VyIGludGVy
YWN0aW9uPC9oMz4KLSAgICAgICAgICAgICAgICA8cD5PYnZpb3VzbHkgaXQmIzgyMTc7cyBnb29k
IHRvIGV4cGVuZCBwb3dlciBhdCB0aW1lcyB3aGVuIHRoZSB1c2VyIGlzIGludGVyYWN0aW5nIHdp
dGggdGhlIHBhZ2UuIFlvdSB3YW50IHRoZSBwYWdlIHRvIGxvYWQgZmFzdCBhbmQgcmVzcG9uZCBx
dWlja2x5IHRvIHRvdWNoLiBJbiBtYW55IGNhc2VzLCB0aGUgc2FtZSBvcHRpbWl6YXRpb25zIHRo
YXQgcmVkdWNlIHRpbWUgdG8gZmlyc3QgcGFpbnQgYW5kIHRpbWUgdG8gdXNlciBpbnRlcmFjdGl2
ZSB3aWxsIGFsc28gcmVkdWNlIHBvd2VyIHVzYWdlLiBIb3dldmVyLCBiZSBjYXV0aW91cyBhYm91
dCBjb250aW51aW5nIHRvIGxvYWQgcmVzb3VyY2VzIGFuZCB0byBydW4gc2NyaXB0IGFmdGVyIHRo
ZSBpbml0aWFsIHBhZ2UgbG9hZC4gVGhlIGdvYWwgc2hvdWxkIGJlIHRvIGdldCBiYWNrIHRvIGlk
bGUgYXMgZmFzdCBhcyBwb3NzaWJsZS4gSW4gZ2VuZXJhbCwgdGhlIGxlc3MgSmF2YVNjcmlwdCB0
aGF0IHJ1bnMsIHRoZSBtb3JlIHBvd2VyLWVmZmljaWVudCB0aGUgcGFnZSB3aWxsIGJlLCBiZWNh
dXNlIHNjcmlwdCBpcyB3b3JrIG9uIHRvcCBvZiB3aGF0IHRoZSBicm93c2VyIGhhcyBhbHJlYWR5
IGRvbmUgdG8gbGF5b3V0IGFuZCBwYWludCB0aGUgcGFnZS48L3A+Ci0gICAgICAgICAgICAgICAg
PHA+T25jZSB0aGUgcGFnZSBoYXMgbG9hZGVkLCB1c2VyIGludGVyYWN0aW9ucyBsaWtlIHNjcm9s
bGluZyBhbmQgdGFwcGluZyB3aWxsIGFsc28gcmFtcCB1cCB0aGUgaGFyZHdhcmUgcG93ZXIgKG1h
aW5seSB0aGUgQ1BVIGFuZCBHUFUpLCB3aGljaCBhZ2FpbiBtYWtlcyBzZW5zZSwgYnV0IG1ha2Ug
c3VyZSB0byBnbyBiYWNrIHRvIGlkbGUgYXMgc29vbiBhcyB0aGUgdXNlciBzdG9wcyBpbnRlcmFj
dGluZy4gQWxzbywgdHJ5IHRvIHN0YXkgb24gdGhlIGJyb3dzZXIgJiM4MjIwO2Zhc3QgcGF0aHMm
IzgyMjE7IOKAlCBmb3IgZXhhbXBsZSwgbm9ybWFsIHBhZ2Ugc2Nyb2xsaW5nIHdpbGwgYmUgbXVj
aCBtb3JlIHBvd2VyLWVmZmljaWVudCB0aGFuIGN1c3RvbSBzY3JvbGxpbmcgaW1wbGVtZW50ZWQg
aW4gSmF2YVNjcmlwdC48L3A+Ci0gICAgICAgICAgICAgICAgPGgzPkRyaXZlIGlkbGUgcG93ZXIg
dXNhZ2UgdG93YXJkcyB6ZXJvPC9oMz4KLSAgICAgICAgICAgICAgICA8cD5XaGVuIHRoZSB1c2Vy
IGlzIG5vdCBpbnRlcmFjdGluZyB3aXRoIHRoZSBwYWdlLCB0cnkgdG8gbWFrZSB0aGUgcGFnZSB1
c2UgYXMgbGl0dGxlIHBvd2VyIGFzIHBvc3NpYmxlLiBGb3IgZXhhbXBsZTo8L3A+Ci0gICAgICAg
ICAgICAgICAgPHVsPgotICAgICAgICAgICAgICAgIDxsaT5NaW5pbWl6ZSB0aGUgdXNlIG9mIHRp
bWVycyB0byBhdm9pZCB3YWtpbmcgdXAgdGhlIENQVS4gVHJ5IHRvIGNvYWxlc2NlIHRpbWVyLWJh
c2VkIHdvcmsgaW50byBhIGZldywgaW5mcmVxdWVudCB0aW1lcnMuIExvdHMgb2YgdW5jb29yZGlu
YXRlZCB0aW1lcnMgd2hpY2ggdHJpZ2dlciBmcmVxdWVudCBDUFUgd2FrZS11cHMgYXJlIG11Y2gg
d29yc2UgdGhhbiBnYXRoZXJpbmcgdGhhdCB3b3JrIGludG8gZmV3ZXIgY2h1bmtzLjwvbGk+Ci0g
ICAgICAgICAgICAgICAgPGxpPk1pbmltaXplIGNvbnRpbnVhbGx5IGFuaW1hdGluZyBjb250ZW50
LCBsaWtlIGFuaW1hdGVkIGltYWdlcyBhbmQgYXV0by1wbGF5aW5nIHZpZGVvLiBCZSBwYXJ0aWN1
bGFybHkgdmlnaWxhbnQgdG8gYXZvaWQgJiM4MjIwO2xvYWRpbmcmIzgyMjE7IHNwaW5uZXIgR0lG
cyBvciBDU1MgYW5pbWF0aW9ucyB0aGF0IGNvbnRpbnVhbGx5IHRyaWdnZXIgcGFpbnRpbmcsIGV2
ZW4gaWYgeW91IGNhbiYjODIxNzt0IHNlZSB0aGVtLiA8YSBocmVmPSJodHRwczovL3dlYmtpdC5v
cmcvYmxvZy84NTgyL2ludGVyc2VjdGlvbm9ic2VydmVyLWluLXdlYmtpdC8iPkludGVyc2VjdGlv
bk9ic2VydmVyPC9hPiBjYW4gYmUgdXNlZCB0byBydW5zIGFuaW1hdGlvbnMgb25seSB3aGVuIHRo
ZXkgYXJlIHZpc2libGUuPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+VXNlIGRlY2xhcmF0aXZl
IGFuaW1hdGlvbnMgKENTUyA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9l
bi1VUy9kb2NzL1dlYi9DU1MvYW5pbWF0aW9uIj5BbmltYXRpb25zPC9hPiBhbmQgPGEgaHJlZj0i
aHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NTU19UcmFu
c2l0aW9ucy9Vc2luZ19DU1NfdHJhbnNpdGlvbnMiPlRyYW5zaXRpb25zPC9hPikgd2hlcmUgcG9z
c2libGUuIFRoZSBicm93c2VyIGNhbiBvcHRpbWl6ZSB0aGVzZSBhd2F5IHdoZW4gdGhlIGFuaW1h
dGluZyBjb250ZW50IGlzIG5vdCB2aXNpYmxlLCBhbmQgdGhleSBhcmUgbW9yZSBlZmZpY2llbnQg
dGhhbiBzY3JpcHQtZHJpdmVuIGFuaW1hdGlvbi48L2xpPgotICAgICAgICAgICAgICAgIDxsaT5B
dm9pZCBuZXR3b3JrIHBvbGxpbmcgdG8gb2J0YWluIHBlcmlvZGljIHVwZGF0ZXMgZnJvbSBhIHNl
cnZlci4gVXNlIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2Rv
Y3MvV2ViL0FQSS9XZWJTb2NrZXRzX0FQSSI+V2ViU29ja2V0czwvYT4gb3IgPGEgaHJlZj0iaHR0
cHM6Ly93ZWJraXQub3JnL2Jsb2cvNzUyMS9hLWZldy13b3Jkcy1vbi1mZXRjaGluZy1ieXRlcy8i
PkZldGNoPC9hPiB3aXRoIGEgcGVyc2lzdGVudCBjb25uZWN0aW9uLCBpbnN0ZWFkIG9mIHBvbGxp
bmcuPC9saT4KLSAgICAgICAgICAgICAgICA8L3VsPgotICAgICAgICAgICAgICAgIDxwPkEgcGFn
ZSB0aGF0IGlzIGRvaW5nIHdvcmsgd2hlbiBpdCBzaG91bGQgYmUgaWRsZSB3aWxsIGFsc28gYmUg
bGVzcyByZXNwb25zaXZlIHRvIHVzZXIgaW50ZXJhY3Rpb24sIHNvIG1pbmltaXppbmcgYmFja2dy
b3VuZCBhY3Rpdml0eSBhbHNvIGltcHJvdmVzIHJlc3BvbnNpdmVuZXNzIGFzIHdlbGwgYXMgYmF0
dGVyeSBsaWZlLjwvcD4KLSAgICAgICAgICAgICAgICA8aDM+WmVybyBDUFUgdXNhZ2Ugd2hpbGUg
aW4gdGhlIGJhY2tncm91bmQ8L2gzPgotICAgICAgICAgICAgICAgIDxwPlRoZXJlIGFyZSB2YXJp
b3VzIHNjZW5hcmlvcyB3aGVyZSBhIHBhZ2UgYmVjb21lcyBpbmFjdGl2ZSAobm90IHRoZSB1c2Vy
JiM4MjE3O3MgcHJpbWFyeSBmb2N1cyksIGZvciBpbnN0YW5jZTo8L3A+Ci0gICAgICAgICAgICAg
ICAgPHVsPgotICAgICAgICAgICAgICAgIDxsaT5UaGUgdXNlciBzd2l0Y2hlcyB0byBhIGRpZmZl
cmVudCB0YWIuPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+VGhlIHVzZXIgc3dpdGNoZXMgdG8g
YSBkaWZmZXJlbnQgYXBwLjwvbGk+Ci0gICAgICAgICAgICAgICAgPGxpPlRoZSBicm93c2VyIHdp
bmRvdyBpcyBtaW5pbWl6ZWQuPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+VGhlIGJyb3dzZXIg
d2luZG93IGlzIHZpc2libGUgYnV0IGlzIG5vdCB0aGUgZm9jdXNlZCB3aW5kb3cuPC9saT4KLSAg
ICAgICAgICAgICAgICA8bGk+VGhlIGJyb3dzZXIgd2luZG93IGlzIGJlaGluZCBhbm90aGVyIHdp
bmRvdy48L2xpPgotICAgICAgICAgICAgICAgIDxsaT5UaGUgc3BhY2UgdGhlIHdpbmRvdyBpcyBv
biBpcyBub3QgdGhlIGN1cnJlbnQgc3BhY2UuPC9saT4KLSAgICAgICAgICAgICAgICA8L3VsPgot
ICAgICAgICAgICAgICAgIDxwPldoZW4gYSBwYWdlIGJlY29tZXMgaW5hY3RpdmUsIFdlYktpdCBh
dXRvbWF0aWNhbGx5IHRha2VzIHN0ZXBzIHRvIHNhdmUgcG93ZXI6PC9wPgotICAgICAgICAgICAg
ICAgIDx1bD4KLSAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIu
bW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL3dpbmRvdy9yZXF1ZXN0QW5pbWF0aW9uRnJh
bWUiPjxjb2RlPnJlcXVlc3RBbmltYXRpb25GcmFtZTwvY29kZT48L2E+IGlzIHN0b3BwZWQuPC9s
aT4KLSAgICAgICAgICAgICAgICA8bGk+Q1NTIGFuZCBTVkcgQW5pbWF0aW9ucyBhcmUgc3VzcGVu
ZGVkLjwvbGk+Ci0gICAgICAgICAgICAgICAgPGxpPlRpbWVycyBhcmUgdGhyb3R0bGVkLjwvbGk+
Ci0gICAgICAgICAgICAgICAgPC91bD4KLSAgICAgICAgICAgICAgICA8cD5JbiBhZGRpdGlvbiwg
V2ViS2l0IHRha2VzIGFkdmFudGFnZSBvZiBmZWF0dXJlcyBwcm92aWRlZCBieSB0aGUgb3BlcmF0
aW5nIHN5c3RlbSB0byBtYXhpbWl6ZSBlZmZpY2llbmN5OjwvcD4KLSAgICAgICAgICAgICAgICA8
dWw+Ci0gICAgICAgICAgICAgICAgPGxpPm9uIGlPUywgdGFicyBhcmUgY29tcGxldGVseSBzdXNw
ZW5kZWQgd2hlbiBwb3NzaWJsZS48L2xpPgotICAgICAgICAgICAgICAgIDxsaT5vbiBtYWNPUywg
dGFicyBwYXJ0aWNpcGF0ZSBpbiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20v
bGlicmFyeS9hcmNoaXZlL2RvY3VtZW50YXRpb24vUGVyZm9ybWFuY2UvQ29uY2VwdHVhbC9wb3dl
cl9lZmZpY2llbmN5X2d1aWRlbGluZXNfb3N4L0FwcE5hcC5odG1sIj5BcHAgTmFwPC9hPiwgd2hp
Y2ggbWVhbnMgdGhhdCB0aGUgd2ViIHByb2Nlc3MgZm9yIGEgdGFiIHRoYXQgaXMgbm90IHZpc3Vh
bGx5IHVwZGF0aW5nIGdldHMgbG93ZXIgcHJpb3JpdHkgYW5kIGhhcyBpdHMgdGltZXJzIHRocm90
dGxlZC48L2xpPgotICAgICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAgICAgPHA+SG93
ZXZlciwgcGFnZXMgY2FuIHRyaWdnZXIgQ1BVIHdha2UtdXBzIHZpYSB0aW1lcnMgKDxjb2RlPnNl
dFRpbWVvdXQ8L2NvZGU+IGFuZCA8Y29kZT5zZXRJbnRlcnZhbDwvY29kZT4pLCBtZXNzYWdlcywg
bmV0d29yayBldmVudHMsIGV0Yy4gWW91IHNob3VsZCBhdm9pZCB0aGVzZSB3aGVuIGluIHRoZSBi
YWNrZ3JvdW5kIGFzIG11Y2ggYXMgcG9zc2libGUuIFRoZXJlIGFyZSB0d28gQVBJcyB0aGF0IGFy
ZSB1c2VmdWwgZm9yIHRoaXM6PC9wPgotICAgICAgICAgICAgICAgIDx1bD4KLSAgICAgICAgICAg
ICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9j
cy9XZWIvQVBJL1BhZ2VfVmlzaWJpbGl0eV9BUEkiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3Bl
bmVyIG5vcmVmZXJyZXIiPlBhZ2UgVmlzaWJpbGl0eSBBUEk8L2E+IHByb3ZpZGVzIGEgd2F5IHRv
IHJlc3BvbmQgdG8gYSBwYWdlIHRyYW5zaXRpb25pbmcgdG8gYmUgaW4gdGhlIGJhY2tncm91bmQg
b3IgZm9yZWdyb3VuZC4gVGhpcyBpcyBhIGdvb2Qgd2F5IHRvIGF2b2lkIHVwZGF0aW5nIHRoZSBV
SSB3aGlsZSB0aGUgcGFnZSBpcyBpbiB0aGUgYmFja2dyb3VuZCwgdGhlbiB1c2luZyB0aGUgPGEg
aHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0Rv
Y3VtZW50L3Zpc2liaWxpdHljaGFuZ2VfZXZlbnQiPjxjb2RlPnZpc2liaWxpdHljaGFuZ2U8L2Nv
ZGU+IGV2ZW50PC9hPiB0byB1cGRhdGUgdGhlIGNvbnRlbnQgd2hlbiB0aGUgcGFnZSBiZWNvbWVz
IHZpc2libGUuPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9kZXZl
bG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0VsZW1lbnQvYmx1cl9ldmVudCIg
dGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciI+PGNvZGU+Ymx1cjwvY29k
ZT4gZXZlbnRzPC9hPiBhcmUgc2VudCB3aGVuZXZlciB0aGUgcGFnZSBpcyBubyBsb25nZXIgZm9j
dXNlZC4gSW4gdGhhdCBjYXNlLCBhIHBhZ2UgbWF5IHN0aWxsIGJlIHZpc2libGUgYnV0IGl0IGlz
IG5vdCB0aGUgY3VycmVudGx5IGZvY3VzZWQgd2luZG93LiBEZXBlbmRpbmcgb24gdGhlIHBhZ2Us
IGl0IGNhbiBiZSBhIGdvb2QgaWRlYSB0byBzdG9wIGFuaW1hdGlvbnMuPC9saT4KLSAgICAgICAg
ICAgICAgICA8L3VsPgotICAgICAgICAgICAgICAgIDxwPlRoZSBlYXNpZXN0IHdheSB0byBmaW5k
IHByb2JsZW1zIGlzIFdlYiBJbnNwZWN0b3LigJlzIFRpbWVsaW5lcy4gVGhlIHJlY29yZGluZyBz
aG91bGQgbm90IHNob3cgYW55IGV2ZW50IGhhcHBlbmluZyB3aGlsZSB0aGUgcGFnZSBpcyBpbiB0
aGUgYmFja2dyb3VuZC48L3A+Ci0gICAgICAgICAgICAgICAgPGgyPkh1bnRpbmcgUG93ZXIgSW5l
ZmZpY2llbmNpZXM8L2gyPgotICAgICAgICAgICAgICAgIDxwPk5vdyB0aGF0IHdlIGtub3cgdGhl
IG1haW4gY2F1c2VzIG9mIHBvd2VyIHVzZSBieSB3ZWIgcGFnZXMgYW5kIGhhdmUgZ2l2ZW4gc29t
ZSBnZW5lcmFsIHJ1bGVzIGFib3V0IGNyZWF0aW5nIHBvd2VyLWVmZmljaWVudCBjb250ZW50LCBs
ZXQmIzgyMTc7cyB0YWxrIGFib3V0IGhvdyB0byBpZGVudGlmeSBhbmQgZml4IGlzc3VlcyB0aGF0
IGNhdXNlIGV4Y2Vzc2l2ZSBwb3dlciBkcmFpbi48L3A+Ci0gICAgICAgICAgICAgICAgPGgzPlNj
cmlwdGluZzwvaDM+Ci0gICAgICAgICAgICAgICAgPHA+QXMgbWVudGlvbmVkIGFib3ZlLCBtb2Rl
cm4gQ1BVcyBjYW4gcmFtcCBwb3dlciB1c2UgZnJvbSB2ZXJ5IGxvdywgd2hlbiB0aGUgZGV2aWNl
IGlzIGlkbGUsIHRvIHZlcnkgaGlnaCB0byBtZWV0IHRoZSBkZW1hbmRzIG9mIHVzZXIgaW50ZXJh
Y3Rpb24gYW5kIG90aGVyIHRhc2tzLiBCZWNhdXNlIG9mIHRoaXMsIHRoZSBDUFUgaXMgYSBsZWFk
aW5nIGNhdXNlIG9mIGJhdHRlcnkgbGlmZSB2YXJpYW5jZS4gQ1BVIHVzYWdlIGR1cmluZyBwYWdl
IGxvYWRpbmcgaXMgYSBjb21iaW5hdGlvbiBvZiB3b3JrIHRoZSBicm93c2VyIGVuZ2luZSBkb2Vz
IHRvIGxvYWQsIHBhcnNlIGFuZCByZW5kZXIgcmVzb3VyY2VzLCBhbmQgaW4gZXhlY3V0aW5nIEph
dmFTY3JpcHQuIE9uIG1hbnkgbW9kZXJuIHdlYiBwYWdlcywgdGltZSBzcGVudCBleGVjdXRpbmcg
SmF2YVNjcmlwdCBmYXIgZXhjZWVkcyB0aGUgdGltZSBzcGVudCBieSB0aGUgYnJvd3NlciBpbiB0
aGUgcmVzdCBvZiB0aGUgbG9hZGluZyBwcm9jZXNzLCBzbyBtaW5pbWl6aW5nIEphdmFTY3JpcHQg
ZXhlY3V0aW9uIHRpbWUgd2lsbCBoYXZlIHRoZSBiaWdnZXN0IGJlbmVmaXRzIGZvciBwb3dlci48
L3A+Ci0gICAgICAgICAgICAgICAgPHA+VGhlIGJlc3Qgd2F5IHRvIG1lYXN1cmUgQ1BVIHVzYWdl
IGlzIHdpdGggV2ViIEluc3BlY3Rvci4gQXMgd2Ugc2hvd2VkIGluIGEgcHJldmlvdXMgcG9zdCwg
dGhlIDxhIGhyZWY9Imh0dHBzOi8vd2Via2l0Lm9yZy9ibG9nLzg5OTMvY3B1LXRpbWVsaW5lLWlu
LXdlYi1pbnNwZWN0b3IvIj50aW1lbGluZSBub3cgc2hvd3M8L2E+IHRoZSBDUFUgYWN0aXZpdHkg
Zm9yIGFueSBzZWxlY3RlZCB0aW1lIHJhbmdlOjwvcD4KLSAgICAgICAgICAgICAgICA8ZmlndXJl
IGNsYXNzPSJ3aWRlc2NyZWVuIG1hdHRld2hpdGUiPjxwaWN0dXJlPjxzb3VyY2Ugc3Jjc2V0PSJo
dHRwczovL3dlYmtpdC5vcmcvd3AtY29udGVudC91cGxvYWRzL1dlYi1JbnNwZWN0b3ItQ1BVLVRp
bWVsaW5lLU92ZXJ2aWV3LURhcmsucG5nIiBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBk
YXJrKSIgLz48aW1nIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWF4LXdpZHRoOiAxMTg5cHg7IiBzcmM9
Imh0dHBzOi8vd2Via2l0Lm9yZy93cC1jb250ZW50L3VwbG9hZHMvV2ViLUluc3BlY3Rvci1DUFUt
VGltZWxpbmUtT3ZlcnZpZXctTGlnaHQucG5nIiAvPjwvcGljdHVyZT48L2ZpZ3VyZT4KLSAgICAg
ICAgICAgICAgICA8cD5UbyB1c2UgdGhlIENQVSBlZmZpY2llbnRseSwgV2ViS2l0IGRpc3RyaWJ1
dGVzIHdvcmsgb3ZlciBtdWx0aXBsZSBjb3JlcyB3aGVuIHBvc3NpYmxlIChhbmQgcGFnZXMgdXNp
bmcgV29ya2VycyB3aWxsIGFsc28gYmUgYWJsZSB0byBtYWtlIHVzZSBvZiBtdWx0aXBsZSBjb3Jl
cykuIFdlYiBJbnNwZWN0b3IgcHJvdmlkZXMgYSBicmVha2Rvd24gb2YgdGhlIHRocmVhZHMgcnVu
bmluZyBjb25jdXJyZW50bHkgd2l0aCB0aGUgcGFnZSYjODIxNztzIG1haW4gdGhyZWFkLiBGb3Ig
ZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBzY3JlZW5zaG90IHNob3dzIHRoZSB0aHJlYWRzIHdoaWxl
IHNjcm9sbGluZyBhIHBhZ2Ugd2l0aCBjb21wbGV4IHJlbmRlcmluZyBhbmQgdmlkZW8gcGxheWJh
Y2s6PC9wPgotICAgICAgICAgICAgICAgIDxmaWd1cmUgY2xhc3M9IndpZGVzY3JlZW4gbWF0dGV3
aGl0ZSI+PHBpY3R1cmU+PHNvdXJjZSBzcmNzZXQ9Imh0dHBzOi8vd2Via2l0Lm9yZy93cC1jb250
ZW50L3VwbG9hZHMvUG93ZXItaGVhdnktd2Vic2l0ZS1kYXJrLnBuZyIgbWVkaWE9IihwcmVmZXJz
LWNvbG9yLXNjaGVtZTogZGFyaykiIC8+PGltZyBzdHlsZT0id2lkdGg6IDEwMCU7IG1heC13aWR0
aDogMTA4NnB4OyIgc3JjPSJodHRwczovL3dlYmtpdC5vcmcvd3AtY29udGVudC91cGxvYWRzL1Bv
d2VyLWhlYXZ5LXdlYnNpdGUtbGlnaHQucG5nIiAvPjwvcGljdHVyZT48L2ZpZ3VyZT4KLSAgICAg
ICAgICAgICAgICA8cD5XaGVuIGxvb2tpbmcgZm9yIHRoaW5ncyB0byBvcHRpbWl6ZSwgZm9jdXMg
b24gdGhlIG1haW4gdGhyZWFkLCBzaW5jZSB0aGF0JiM4MjE3O3Mgd2hlcmUgeW91ciBKYXZhU2Ny
aXB0IGlzIHJ1bm5pbmcgKHVubGVzcyB5b3UmIzgyMTc7cmUgdXNpbmcgV29ya2VycyksIGFuZCB1
c2UgdGhlICYjODIyMDtKYXZhU2NyaXB0IGFuZCBFdmVudHMmIzgyMjE7IHRpbWVsaW5lIHRvIHVu
ZGVyc3RhbmQgd2hhdCYjODIxNztzIHRyaWdnZXJpbmcgeW91ciBzY3JpcHQuIFBlcmhhcHMgeW91
JiM4MjE3O3JlIGRvaW5nIHRvbyBtdWNoIHdvcmsgaW4gcmVzcG9uc2UgdG8gdXNlciBvciBzY3Jv
bGwgZXZlbnRzLCBvciB0cmlnZ2VyaW5nIHVwZGF0ZXMgb2YgaGlkZGVuIGVsZW1lbnRzIGZyb20g
cmVxdWVzdEFuaW1hdGlvbkZyYW1lLiBCZSBjb2duaXphbnQgb2Ygd29yayBkb25lIGJ5IEphdmFT
Y3JpcHQgbGlicmFyaWVzIGFuZCB0aGlyZCBwYXJ0eSBzY3JpcHRzIHRoYXQgeW91IHVzZSBvbiB5
b3VyIHBhZ2UuIFRvIGRpZyBkZWVwZXIsIHlvdSBjYW4gdXNlIFdlYiBJbnNwZWN0b3ImIzgyMTc7
cyA8YSBocmVmPSJodHRwczovL3dlYmtpdC5vcmcvYmxvZy82NTM5L2ludHJvZHVjaW5nLWpzY3Mt
bmV3LXNhbXBsaW5nLXByb2ZpbGVyLyI+SmF2YVNjcmlwdCBwcm9maWxlcjwvYT4gdG8gc2VlIHdo
ZXJlIHRpbWUgaXMgYmVpbmcgc3BlbnQuPC9wPgotICAgICAgICAgICAgICAgIDxwPkFjdGl2aXR5
IGluICYjODIyMDtXZWJLaXQgVGhyZWFkcyYjODIyMTsgaXMgbW9zdGx5IHRyaWdnZXJlZCBieSB3
b3JrIHJlbGF0ZWQgdG8gSmF2YVNjcmlwdDogSklUIGNvbXBpbGF0aW9uIGFuZCBnYXJiYWdlIGNv
bGxlY3Rpb24sIHNvIHJlZHVjaW5nIHRoZSBhbW91bnQgb2Ygc2NyaXB0IHRoYXQgcnVucywgYW5k
IHJlZHVjaW5nIHRoZSBjaHVybiBvZiBKYXZhU2NyaXB0IG9iamVjdHMgc2hvdWxkIGxvd2VyIHRo
aXMuPC9wPgotICAgICAgICAgICAgICAgIDxwPlZhcmlvdXMgb3RoZXIgc3lzdGVtIGZyYW1ld29y
a3MgaW52b2tlZCBieSBXZWJLaXQgbWFrZSB1c2Ugb2YgdGhyZWFkcywgc28gJiM4MjIwO090aGVy
IHRocmVhZHMmIzgyMjE7IGluY2x1ZGUgd29yayBkb25lIGJ5IHRob3NlOyB0aGUgbGFyZ2VzdCBj
b250cmlidXRvciB0byAmIzgyMjA7T3RoZXIgdGhyZWFkJiM4MjIxOyBhY3Rpdml0eSBpcyBwYWlu
dGluZywgd2hpY2ggd2UmIzgyMTc7bGwgdGFsayBhYm91dCBuZXh0LjwvcD4KLSAgICAgICAgICAg
ICAgICA8aDM+UGFpbnRpbmc8L2gzPgotICAgICAgICAgICAgICAgIDxwPk1haW4gdGhyZWFkIENQ
VSB1c2FnZSBjYW4gYWxzbyBiZSB0cmlnZ2VyZWQgYnkgbG90cyBvZiBsYXlvdXQgYW5kIHBhaW50
aW5nOyB0aGVzZSBhcmUgdXN1YWxseSB0cmlnZ2VyZWQgYnkgc2NyaXB0LCBidXQgYSBDU1MgYW5p
bWF0aW9uIG9mIGEgcHJvcGVydHkgb3RoZXIgdGhhbiA8YSBocmVmPSJodHRwczovL2RldmVsb3Bl
ci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdHJhbnNmb3JtIj48Y29kZT50cmFuc2Zv
cm08L2NvZGU+PC9hPiwgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4t
VVMvZG9jcy9XZWIvQ1NTL29wYWNpdHkiPjxjb2RlPm9wYWNpdHk8L2NvZGU+PC9hPiBhbmQgPGEg
aHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2Zp
bHRlciI+PGNvZGU+ZmlsdGVyPC9jb2RlPjwvYT4gY2FuIGFsc28gY2F1c2UgdGhlbS4gTG9va2lu
ZyBhdCB0aGUg4oCcTGF5b3V0IGFuZCBSZW5kZXJpbmfigJ0gdGltZWxpbmUgd2lsbCBoZWxwIHlv
dSB1bmRlcnN0YW5kIHdoYXTigJlzIGNhdXNpbmcgYWN0aXZpdHkuPC9wPgotICAgICAgICAgICAg
ICAgIDxwPklmIHRoZSAmIzgyMjA7TGF5b3V0IGFuZCBSZW5kZXJpbmcmIzgyMjE7IHRpbWVsaW5l
IHNob3dzIHBhaW50aW5nIGJ1dCB5b3UgY2FuJiM4MjE3O3QgZmlndXJlIG91dCB3aGF0JiM4MjE3
O3MgY2hhbmdpbmcsIHR1cm4gb24gUGFpbnQgRmxhc2hpbmc6PC9wPgotICAgICAgICAgICAgICAg
IDxmaWd1cmU+Ci0gICAgICAgICAgICAgICAgPHBpY3R1cmU+PHNvdXJjZSBzcmNzZXQ9Imh0dHBz
Oi8vd2Via2l0Lm9yZy93cC1jb250ZW50L3VwbG9hZHMvRW5hYmxlLVBhaW50LUZsYXNoaW5nLWRh
cmsucG5nIiBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSIgLz48aW1nIHN0eWxl
PSJ3aWR0aDogMTAwJTsgbWF4LXdpZHRoOiAzNTBweDsiIHNyYz0iaHR0cHM6Ly93ZWJraXQub3Jn
L3dwLWNvbnRlbnQvdXBsb2Fkcy9FbmFibGUtUGFpbnQtRmxhc2hpbmctbGlnaHQucG5nIiAvPjwv
cGljdHVyZT4KLSAgICAgICAgICAgICAgICA8L2ZpZ3VyZT4KLSAgICAgICAgICAgICAgICA8cD5U
aGlzIHdpbGwgY2F1c2UgdGhvc2UgcGFpbnRzIHRvIGJlIGJyaWVmbHkgaGlnaGxpZ2h0ZWQgd2l0
aCBhIHJlZCBvdmVybGF5OyB5b3UgbWlnaHQgaGF2ZSB0byBzY3JvbGwgdGhlIHBhZ2UgdG8gc2Vl
IHRoZW0uIEJlIGF3YXJlIHRoYXQgV2ViS2l0IGtlZXBzIHNvbWUgJiM4MjIwO292ZXJkcmF3JiM4
MjIxOyB0aWxlcyB0byBhbGxvdyBmb3Igc21vb3RoIHNjcm9sbGluZywgc28gcGFpbnRzIHRoYXQg
YXJlIG5vdCB2aXNpYmxlIGluIHRoZSB2aWV3cG9ydCBjYW4gc3RpbGwgYmUgZG9pbmcgd29yayB0
byBrZWVwIG9mZnNjcmVlbiB0aWxlcyB1cC10by1kYXRlLiBJZiBhIHBhaW50IHNob3dzIGluIHRo
ZSB0aW1lbGluZSwgaXQmIzgyMTc7cyBkb2luZyBhY3R1YWwgd29yay48L3A+Ci0gICAgICAgICAg
ICAgICAgPHA+SW4gYWRkaXRpb24gdG8gY2F1c2luZyBwb3dlciB1c2FnZSBieSB0aGUgQ1BVLCBw
YWludGluZyB1c3VhbGx5IGFsc28gdHJpZ2dlcnMgR1BVIHdvcmsuIFdlYktpdCBvbiBtYWNPUyBh
bmQgaU9TIHVzZXMgdGhlIEdQVSBmb3IgcGFpbnRpbmcsIGFuZCBzbyB0cmlnZ2VyaW5nIHBhaW50
aW5nIGNhbiBjYXVzZSBzaWduaWZpY2FudCBpbmNyZWFzZXMgaW4gcG93ZXIuIFRoZSBhZGRpdGlv
bmFsIENQVSB1c2FnZSB3aWxsIG9mdGVuIHNob3cgdW5kZXIgJiM4MjIwO090aGVyIHRocmVhZHMm
IzgyMjE7IGluIHRoZSBDUFUgVXNhZ2UgdGltZWxpbmUuPC9wPgotICAgICAgICAgICAgICAgIDxw
PlRoZSBHUFUgaXMgYWxzbyB1c2VkIGZvciA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5tb3pp
bGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvQ2FudmFzX0FQSSI+PGNvZGU+Jmx0O2NhbnZhcyZn
dDs8L2NvZGU+PC9hPiByZW5kZXJpbmcsIGJvdGggMkQgY2FudmFzIGFuZCBXZWJHTC9XZWJHUFUu
IFRvIG1pbmltaXplIGRyYXdpbmcsIGRvbiYjODIxNzt0IGNhbGwgaW50byB0aGUgPGNvZGU+Jmx0
O2NhbnZhcyZndDs8L2NvZGU+IEFQSXMgaWYgdGhlIGNhbnZhcyBjb250ZW50IGlzbiYjODIxNzt0
IGNoYW5naW5nLCBhbmQgdHJ5IHRvIG9wdGltaXplIHlvdXIgY2FudmFzIGRyYXdpbmcgY29tbWFu
ZHMuPC9wPgotICAgICAgICAgICAgICAgIDxwPk1hbnkgTWFjIGxhcHRvcHMgaGF2ZSB0d28gR1BV
cywgYW4gJiM4MjIwO2ludGVncmF0ZWQmIzgyMjE7IEdQVSB3aGljaCBpcyBvbiB0aGUgc2FtZSBk
aWUgYXMgdGhlIENQVSwgYW5kIGlzIGxlc3MgcG93ZXJmdWwgYnV0IG1vcmUgcG93ZXItZWZmaWNp
ZW50LCBhbmQgYSBtb3JlIHBvd2VyZnVsLCBidXQgbW9yZSBwb3dlci1odW5ncnkgJiM4MjIwO2Rp
c2NyZXRlJiM4MjIxOyBHUFUuIFdlYktpdCB3aWxsIGRlZmF1bHQgdG8gdXNpbmcgdGhlIGludGVn
cmF0ZWQgR1BVIGJ5IGRlZmF1bHQ7IHlvdSBjYW4gcmVxdWVzdCB0aGUgZGlzY3JldGUgR1BVIHVz
aW5nIHRoZSA8YSBocmVmPSJodHRwczovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS93ZWJnbC9z
cGVjcy9sYXRlc3QvMS4wLyM1LjIuMSI+PGNvZGU+cG93ZXJQcmVmZXJlbmNlPC9jb2RlPjwvYT4g
Y29udGV4dCBjcmVhdGlvbiBwYXJhbWV0ZXIsIGJ1dCBvbmx5IGRvIHRoaXMgaWYgeW91IGNhbiBq
dXN0aWZ5IHRoZSBwb3dlciBjb3N0LjwvcD4KLSAgICAgICAgICAgICAgICA8aDM+TmV0d29ya2lu
ZzwvaDM+Ci0gICAgICAgICAgICAgICAgPHA+V2lyZWxlc3MgbmV0d29ya2luZyBjYW4gYWZmZWN0
IGJhdHRlcnkgbGlmZSBpbiB1bmV4cGVjdGVkIHdheXMuIFBob25lcyBhcmUgdGhlIG1vc3QgYWZm
ZWN0ZWQgZHVlIHRvIHRoZWlyIGNvbWJpbmF0aW9uIG9mIHBvd2VyZnVsIHJhZGlvcyAodGhlIFdp
RmkgYW5kIGNlbGx1bGFyIG5ldHdvcmsgY2hpcHMpIHdpdGggYSBzbWFsbGVyIGJhdHRlcnkuIFVu
Zm9ydHVuYXRlbHksIG1lYXN1cmluZyB0aGUgcG93ZXIgaW1wYWN0IG9mIG5ldHdvcmtpbmcgaXMg
bm90IGVhc3kgb3V0c2lkZSBvZiBhIGxhYiwgYnV0IGNhbiBiZSByZWR1Y2VkIGJ5IGZvbGxvd2lu
ZyBzb21lIHNpbXBsZSBydWxlcy48L3A+Ci0gICAgICAgICAgICAgICAgPHA+VGhlIG1vc3QgZGly
ZWN0IHdheSB0byByZWR1Y2UgbmV0d29ya2luZyBwb3dlciB1c2FnZSBpcyB0byBtYXhpbWl6ZSB0
aGUgdXNlIG9mIHRoZSBicm93c2VyJiM4MjE3O3MgY2FjaGUuIEFsbCBvZiB0aGUgYmVzdCBwcmFj
dGljZXMgZm9yIG1pbmltaXppbmcgcGFnZSBsb2FkIHRpbWUgYWxzbyBiZW5lZml0IHRoZSBiYXR0
ZXJ5IGJ5IHJlZHVjaW5nIGhvdyBsb25nIHRoZSByYWRpb3MgbmVlZCB0byBiZSBwb3dlcmVkIG9u
LjwvcD4KLSAgICAgICAgICAgICAgICA8cD5Bbm90aGVyIGltcG9ydGFudCBhc3BlY3QgaXMgdG8g
Z3JvdXAgbmV0d29yayByZXF1ZXN0cyB0b2dldGhlciB0ZW1wb3JhbGx5LiBBbnkgdGltZSBhIG5l
dyByZXF1ZXN0IGNvbWVzLCB0aGUgb3BlcmF0aW5nIHN5c3RlbSBuZWVkcyB0byBwb3dlciBvbiB0
aGUgcmFkaW8sIGNvbm5lY3QgdG8gdGhlIGJhc2Ugc3RhdGlvbiBvciBjZWxsIHRvd2VyLCBhbmQg
dHJhbnNtaXQgdGhlIGJ5dGVzLiBBZnRlciB0cmFuc21pdHRpbmcgdGhlIHBhY2tldHMsIHRoZSBy
YWRpbyByZW1haW5zIHBvd2VyZWQgZm9yIGEgc21hbGwgYW1vdW50IG9mIHRpbWUgaW4gY2FzZSBt
b3JlIHBhY2tldHMgYXJlIHRyYW5zbWl0dGVkLjwvcD4KLSAgICAgICAgICAgICAgICA8cD5JZiBh
IHBhZ2UgdHJhbnNtaXRzIHNtYWxsIGFtb3VudHMgb2YgZGF0YSBpbmZyZXF1ZW50bHksIHRoZSBv
dmVyaGVhZCBjYW4gYmVjb21lIGxhcmdlciB0aGFuIHRoZSBlbmVyZ3kgcmVxdWlyZWQgdG8gdHJh
bnNtaXQgdGhlIGRhdGE6PC9wPgotICAgICAgICAgICAgICAgIDxmaWd1cmUgY2xhc3M9Im1hdHRl
d2hpdGUiPjxpbWcgY2xhc3M9IndwLWltYWdlLTg5ODQiIHNyYz0iaHR0cHM6Ly93ZWJraXQub3Jn
L3dwLWNvbnRlbnQvdXBsb2Fkcy9OZXR3b3JraW5nLVBvd2VyLU92ZXJoZWFkLW9mLXR3by1zbWFs
bC10cmFuc21pc3Npb25zLnBuZyIgYWx0PSJOZXR3b3JraW5nIFBvd2VyIE92ZXJoZWFkIG9mIHRy
YW5zbWl0dGluZyAyIHBhY2tldHMgd2l0aCBhIGRlbGF5IGJldHdlZW4gdGhlbSIgc3Jjc2V0PSJo
dHRwczovL3dlYmtpdC5vcmcvd3AtY29udGVudC91cGxvYWRzL05ldHdvcmtpbmctUG93ZXItT3Zl
cmhlYWQtb2YtdHdvLXNtYWxsLXRyYW5zbWlzc2lvbnMucG5nIDExNjJ3LCBodHRwczovL3dlYmtp
dC5vcmcvd3AtY29udGVudC91cGxvYWRzL05ldHdvcmtpbmctUG93ZXItT3ZlcmhlYWQtb2YtdHdv
LXNtYWxsLXRyYW5zbWlzc2lvbnMtMzAweDEzNy5wbmcgMzAwdywgaHR0cHM6Ly93ZWJraXQub3Jn
L3dwLWNvbnRlbnQvdXBsb2Fkcy9OZXR3b3JraW5nLVBvd2VyLU92ZXJoZWFkLW9mLXR3by1zbWFs
bC10cmFuc21pc3Npb25zLTc2OHgzNTAucG5nIDc2OHcsIGh0dHBzOi8vd2Via2l0Lm9yZy93cC1j
b250ZW50L3VwbG9hZHMvTmV0d29ya2luZy1Qb3dlci1PdmVyaGVhZC1vZi10d28tc21hbGwtdHJh
bnNtaXNzaW9ucy0xMDI0eDQ2Ny5wbmcgMTAyNHciIHNpemVzPSIobWF4LXdpZHRoOiAxMTYycHgp
IDEwMHZ3LCAxMTYycHgiIC8+PC9maWd1cmU+Ci0gICAgICAgICAgICAgICAgPHA+U3VjaCBpc3N1
ZXMgY2FuIGJlIGRpc2NvdmVyZWQgZnJvbSBXZWIgSW5zcGVjdG9yIGluIHRoZSA8ZW0+TmV0d29y
ayBSZXF1ZXN0czwvZW0+IFRpbWVsaW5lLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBzY3Jl
ZW5zaG90IHNob3dzIGZvdXIgc2VwYXJhdGUgcmVxdWVzdHMgKHByb2JhYmx5IGFuYWx5dGljcykg
YmVpbmcgc2VudCBvdmVyIHNldmVyYWwgc2Vjb25kczo8L3A+Ci0gICAgICAgICAgICAgICAgPGZp
Z3VyZSBjbGFzcz0id2lkZXNjcmVlbiBtYXR0ZXdoaXRlIj48cGljdHVyZT48c291cmNlIHNyY3Nl
dD0iaHR0cHM6Ly93ZWJraXQub3JnL3dwLWNvbnRlbnQvdXBsb2Fkcy9OZXR3b3JrLXJlcXVlc3Rz
LXNob3VsZC1iZS1ncm91cGVkLWRhcmsucG5nIiBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1l
OiBkYXJrKSIgLz48aW1nIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWF4LXdpZHRoOiAxMDc2cHg7IiBz
cmM9Imh0dHBzOi8vd2Via2l0Lm9yZy93cC1jb250ZW50L3VwbG9hZHMvTmV0d29yay1yZXF1ZXN0
cy1zaG91bGQtYmUtZ3JvdXBlZC1saWdodC5wbmciIC8+PC9waWN0dXJlPjwvZmlndXJlPgotICAg
ICAgICAgICAgICAgIDxwPlNlbmRpbmcgYWxsIHRoZSByZXF1ZXN0cyBhdCB0aGUgc2FtZSB0aW1l
IHdvdWxkIGltcHJvdmUgbmV0d29yayBwb3dlciBlZmZpY2llbmN5LjwvcD4KLSAgICAgICAgICAg
ICAgICA8aDI+Q29uY2x1c2lvbjwvaDI+Ci0gICAgICAgICAgICAgICAgPHA+V2VicGFnZXMgY2Fu
IGJlIGdvb2QgY2l0aXplbnMgb2YgYmF0dGVyeSBsaWZlLjwvcD4KLSAgICAgICAgICAgICAgICA8
cD5JdOKAmXMgaW1wb3J0YW50IHRvIG1lYXN1cmUgdGhlIGJhdHRlcnkgaW1wYWN0IGluIFdlYiBJ
bnNwZWN0b3IgYW5kIGRyaXZlIHRob3NlIGNvc3RzIGRvd24uIERvaW5nIHNvIGltcHJvdmVzIHRo
ZSB1c2VyIGV4cGVyaWVuY2UgYW5kIGJhdHRlcnkgbGlmZS48L3A+Ci0gICAgICAgICAgICAgICAg
PHA+VGhlIG1vc3QgZGlyZWN0IHdheSB0byBpbXByb3ZlIGJhdHRlcnkgbGlmZSBpcyB0byBtaW5p
bWl6ZSBDUFUgdXNhZ2UuIFRoZSBuZXcgV2ViIEluc3BlY3RvciBwcm92aWRlcyBhIHRvb2wgdG8g
bW9uaXRvciB0aGF0IG92ZXIgdGltZS48L3A+Ci0gICAgICAgICAgICAgICAgPHA+VG8gYWNoaWV2
ZSBncmVhdCBiYXR0ZXJ5IGxpZmUgdGhlIGdvYWxzIGFyZTo8L3A+Ci0gICAgICAgICAgICAgICAg
PHVsPgotICAgICAgICAgICAgICAgIDxsaT5Ecml2ZSBDUFUgdXNhZ2UgdG8gemVybyBpbiBpZGxl
PC9saT4KLSAgICAgICAgICAgICAgICA8bGk+TWF4aW1pemUgcGVyZm9ybWFuY2UgZHVyaW5nIHVz
ZXIgaW50ZXJhY3Rpb24gdG8gcXVpY2tseSBnZXQgYmFjayB0byBpZGxlPC9saT4KLSAgICAgICAg
ICAgICAgICA8L3VsPgotICAgICAgICAgICAgICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlv
bnMsIGZlZWwgZnJlZSB0byByZWFjaCA8YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vYXdmdWxi
ZW4iPm1lPC9hPiwgPGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS9Kb3NlcGhQZWNvcmFybyI+
Sm9zZXBoIFBlY29yYXJvPC9hPiwgPGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS9kY3JvdXNz
byI+RGV2aW4gUm91c3NvPC9hPiwgYW5kIG9mIGNvdXJzZSA8YSBocmVmPSJodHRwczovL3R3aXR0
ZXIuY29tL2pvbmF0aGFuZGF2aXMiPkpvbiBEYXZpczwvYT4uPC9wPgotICAgICAgICAgICAgICAg
IF1dPgotICAgICAgICAgICAgPC9jb250ZW50OmVuY29kZWQ+Ci0gICAgICAgIDwvaXRlbT4KLSAg
ICAgICAgPGl0ZW0+Ci0gICAgICAgICAgICA8dGl0bGU+UmVsZWFzZSBOb3RlcyBmb3IgU2FmYXJp
IFRlY2hub2xvZ3kgUHJldmlldyA5MDwvdGl0bGU+Ci0gICAgICAgICAgICA8bGluaz5odHRwczov
L3dlYmtpdC5vcmcvYmxvZy85NTE1L3JlbGVhc2Utbm90ZXMtZm9yLXNhZmFyaS10ZWNobm9sb2d5
LXByZXZpZXctOTAvPC9saW5rPgotICAgICAgICAgICAgPHB1YkRhdGU+V2VkLCAyMSBBdWcgMjAx
OSAyMDowMDo0NSArMDAwMDwvcHViRGF0ZT4KLSAgICAgICAgICAgIDxkYzpjcmVhdG9yPgotICAg
ICAgICAgICAgICAgIDwhW0NEQVRBW11dPgotICAgICAgICAgICAgPC9kYzpjcmVhdG9yPgotICAg
ICAgICAgICAgPGNhdGVnb3J5PgotICAgICAgICAgICAgICAgIDwhW0NEQVRBW1NhZmFyaSBUZWNo
bm9sb2d5IFByZXZpZXddXT4KLSAgICAgICAgICAgIDwvY2F0ZWdvcnk+Ci0KLSAgICAgICAgICAg
IDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0cHM6Ly93ZWJraXQub3JnLz9wPTk1MTU8L2d1
aWQ+Ci0gICAgICAgICAgICA8ZGVzY3JpcHRpb24+Ci0gICAgICAgICAgICAgICAgPCFbQ0RBVEFb
U2FmYXJpIFRlY2hub2xvZ3kgUHJldmlldyBSZWxlYXNlIDkwIGlzIG5vdyBhdmFpbGFibGUgZm9y
IGRvd25sb2FkIGZvciBtYWNPUyBNb2phdmUgYW5kIHRoZSBtYWNPUyBDYXRhbGluYSBiZXRhLl1d
PgotICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4KLSAgICAgICAgICAgIDxjb250ZW50OmVuY29k
ZWQ+Ci0gICAgICAgICAgICAgICAgPCFbQ0RBVEFbPHA+PGEgaHJlZj0iaHR0cHM6Ly93ZWJraXQu
b3JnL2Jsb2cvNjAxNy9pbnRyb2R1Y2luZy1zYWZhcmktdGVjaG5vbG9neS1wcmV2aWV3LyI+U2Fm
YXJpIFRlY2hub2xvZ3kgUHJldmlldzwvYT4gUmVsZWFzZSA5MCBpcyBub3cgPGEgaHJlZj0iaHR0
cHM6Ly93ZWJraXQub3JnL2Rvd25sb2Fkcy8iPmF2YWlsYWJsZSBmb3IgZG93bmxvYWQ8L2E+IGZv
ciBtYWNPUyBNb2phdmUgYW5kIHRoZSBtYWNPUyBDYXRhbGluYSBiZXRhLiBJZiB5b3UgYWxyZWFk
eSBoYXZlIFNhZmFyaSBUZWNobm9sb2d5IFByZXZpZXcgaW5zdGFsbGVkLCB5b3UgY2FuIHVwZGF0
ZSBpbiB0aGUgU29mdHdhcmUgVXBkYXRlIHBhbmUgb2YgU3lzdGVtIFByZWZlcmVuY2VzIG9uIG1h
Y09TLjwvcD4KLSAgICAgICAgICAgICAgICA8cD5UaGlzIHJlbGVhc2UgY292ZXJzIFdlYktpdCBy
ZXZpc2lvbnMgPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvbG9nP3N0b3BfcmV2PTI0
ODAyNCZhbXA7JmFtcDtyZXY9MjQ4NzA1JmFtcDtsaW1pdD05OTkiPjI0ODAyNC0yNDg3MDU8L2E+
LjwvcD4KLSAgICAgICAgICAgICAgICA8aDM+V2ViIEFQSTwvaDM+Ci0gICAgICAgICAgICAgICAg
PHVsPgotICAgICAgICAgICAgICAgIDxsaT5GaXhlZCBwaW5nIGxvYWRzIHRvIG5vdCBwcmV2ZW50
IHBhZ2UgY2FjaGluZyAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzI0ODI2NS93ZWJraXQvIj5yMjQ4MjY1PC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDxsaT5Q
cmV2ZW50ZWQgPGNvZGU+YXV0b2ZvY3VzPC9jb2RlPiBmb3IgY3Jvc3Mtb3JpZ2luIGlmcmFtZXMg
KDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDg0OTEvd2Via2l0
LyI+cjI0ODQ5MTwvYT4pPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+UHJldmVudGVkIG5hdmln
YXRpb25zIG9mIGZyYW1lcyBhYm91dCB0byBnZXQgcmVwbGFjZWQgYnkgdGhlIHJlc3VsdCBvZiBl
dmFsdWF0aW5nIGphdmFzY3JpcHQ6IFVSTHMgKDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC8yNDg0MTAvd2Via2l0LyI+cjI0ODQxMDwvYT4pPC9saT4KLSAgICAgICAg
ICAgICAgICA8bGk+VXBkYXRlZCA8Y29kZT5FbGVtZW50Lm91dGVySFRNTDwvY29kZT4gdG8gbGlu
ayBtaXNzaW5nIGF0dHJpYnV0ZSBwcmVmaXhlcyBpbiBzb21lIGNhc2VzIGluIEhUTUwgZG9jdW1l
bnRzICg8YSBocmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ4MDQyL3dl
YmtpdC8iPnIyNDgwNDI8L2E+KTwvbGk+Ci0gICAgICAgICAgICAgICAgPGxpPlVwZGF0ZWQgdGhl
IHdyYXBwZXIgZm9yIDxjb2RlPm5hdmlnYXRvci5nZW9sb2NhdGlvbjwvY29kZT4gdG8gbm90IGJl
Y29tZSBHQy1jb2xsZWN0YWJsZSBvbmNlIGl0cyBmcmFtZSBpcyBkZXRhY2hlZCAoPGEgaHJlZj0i
aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0ODI3Ni93ZWJraXQvIj5yMjQ4Mjc2
PC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAgICAgPGgzPk1l
ZGlhPC9oMz4KLSAgICAgICAgICAgICAgICA8dWw+Ci0gICAgICAgICAgICAgICAgPGxpPkZpeGVk
IGFuIGlzc3VlIHdoZXJlIG11dGVkIDxjb2RlPiZsdDt2aWRlbyZndDs8L2NvZGU+IGVsZW1lbnRz
IGNvdWxkIGJsb2NrIHRoZSBkaXNwbGF5IGZyb20gc2xlZXBpbmcgKDxhIGhyZWY9Imh0dHBzOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDgzODcvd2Via2l0LyI+cjI0ODM4NzwvYT4pPC9s
aT4KLSAgICAgICAgICAgICAgICA8L3VsPgotICAgICAgICAgICAgICAgIDxoMz5XZWJSVEM8L2gz
PgotICAgICAgICAgICAgICAgIDx1bD4KLSAgICAgICAgICAgICAgICA8bGk+Rml4ZWQgaW5jb3Jy
ZWN0IDxjb2RlPnRoaXM8L2NvZGU+IGluIDxjb2RlPm5lZ290aWF0aW9ubmVlZGVkPC9jb2RlPiBl
dmVudCAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0ODI2Ny93
ZWJraXQvIj5yMjQ4MjY3PC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAg
ICAgICAgICAgPGgzPldlYkdQVTwvaDM+Ci0gICAgICAgICAgICAgICAgPHVsPgotICAgICAgICAg
ICAgICAgIDxsaT5DaGFuZ2VkIFdlYkdQVSB0byBub3QgZm9yY2UgZGlzY3JldGUgR1BVICg8YSBo
cmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ4NzA0L3dlYmtpdC8iPnIy
NDg3MDQ8L2E+KTwvbGk+Ci0gICAgICAgICAgICAgICAgPGxpPkltcHJvdmVkIFdITFNMIGNvbXBp
bGUtdGltZSBwZXJmb3JtYW5jZSAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzI0ODAyNS93ZWJraXQvIj5yMjQ4MDI1LDwvYT48YSBocmVmPSJodHRwczovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ4MTQxL3dlYmtpdC8iPnIyNDgxNDE8L2E+LCA8YSBocmVm
PSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ4MjgwL3dlYmtpdC8iPnIyNDgy
ODA8L2E+LCA8YSBocmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ4MzEw
L3dlYmtpdC8iPnIyNDgzMTA8L2E+LCA8YSBocmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvMjQ4MDgzL3dlYmtpdC8iPnIyNDgwODM8L2E+KTwvbGk+Ci0gICAgICAgICAgICAg
ICAgPGxpPlJlbW92ZWQgPGNvZGU+Y2hhcjwvY29kZT4sIDxjb2RlPnNob3J0PC9jb2RlPiwgYW5k
IDxjb2RlPmhhbGY8L2NvZGU+IHR5cGVzICg8YSBocmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMjQ4MDc4L3dlYmtpdC8iPnIyNDgwNzg8L2E+KTwvbGk+Ci0gICAgICAgICAg
ICAgICAgPC91bD4KLSAgICAgICAgICAgICAgICA8aDM+V2ViIEluc3BlY3RvcjwvaDM+Ci0gICAg
ICAgICAgICAgICAgPHVsPgotICAgICAgICAgICAgICAgIDxsaT5FbGVtZW50cwotICAgICAgICAg
ICAgICAgIDx1bD4KLSAgICAgICAgICAgICAgICA8bGk+QWRkZWQgYSB3YXkgdG8gZGlzYWJsZSBv
ciBzZXQgYSBicmVha3BvaW50IG9uIGFsbCBldmVudCBsaXN0ZW5lcnMgZm9yIGEgZ2l2ZW4gRE9N
IG5vZGUgb3IgZXZlbnQgdHlwZSBpbiB0aGUgTm9kZSBkZXRhaWxzIHNpZGViYXIgcGFuZWwgKDxh
IGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDgwNTIvd2Via2l0LyI+
cjI0ODA1MjwvYT4pPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+QWRkZWQgc2hvd2luZyA8Y29k
ZT5Ac3VwcG9ydHM8L2NvZGU+IENTUyBncm91cGluZ3MgaW4gdGhlIFN0eWxlcyBkZXRhaWxzIHNp
ZGViYXIgcGFuZWwgKDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8y
NDg2MDIvd2Via2l0LyI+cjI0ODYwMjwvYT4pPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+QWRk
ZWQgZXhwZXJpbWVudGFsIHF1aWNrLWFjdGlvbiBpY29uIGJ1dHRvbnMgdG8gZWFjaCBDU1MgcnVs
ZSBpbiB0aGUgU3R5bGVzIGRldGFpbHMgc2lkZWJhciBwYW5lbCAoPGEgaHJlZj0iaHR0cHM6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0ODIwMi93ZWJraXQvIj5yMjQ4MjAyPC9hPik8L2xp
PgotICAgICAgICAgICAgICAgIDxsaT5BZGRlZCBkaXNwbGF5IG9mIHJhZGl1cyB2YWx1ZXMgaW4g
Qm94IE1vZGVsIHNlY3Rpb24gb2YgdGhlIENvbXB1dGVkIGRldGFpbHMgc2lkZWJhciBwYW5lbCAo
PGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0ODMyOC93ZWJraXQv
Ij5yMjQ4MzI4PC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDxsaT5GaXhlZCBhbiBpc3N1ZSB3
aGVyZSBDU1MgdmFyaWFibGUgc3dhdGNoZXMgd2VyZSBub3Qgc2hvd24gZm9yIDxjb2RlPnZhcigp
PC9jb2RlPiB3aXRoIGEgZmFsbGJhY2sgaW4gdGhlIFN0eWxlcyBkZXRhaWxzIHNpZGViYXIgcGFu
ZWwgKDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDgyNzkvd2Vi
a2l0LyI+cjI0ODI3OTwvYT4pPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+Rml4ZWQgc29tZSBS
VEwgaXNzdWVzIGluIHRoZSBDb21wdXRlZCBkZXRhaWxzIHNpZGViYXIgcGFuZWwgKDxhIGhyZWY9
Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDgzOTAvd2Via2l0LyI+cjI0ODM5
MDwvYT4sIDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDgzMTEv
d2Via2l0LyI+cjI0ODMxMTwvYT4pPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+TW92ZWQgcHN1
ZWRvLXNlbGVjdG9yIHJ1bGVzIGJlZm9yZSBpbmhlcml0ZWQgcnVsZXMgaW4gdGhlIFN0eWxlcyBk
ZXRhaWxzIHNpZGViYXIgcGFuZWwgKDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC8yNDgyMDQvd2Via2l0LyI+cjI0ODIwNDwvYT4pPC9saT4KLSAgICAgICAgICAgICAg
ICA8bGk+TW92ZWQgdGhlIEJveCBNb2RlbCBzZWN0aW9uIHRvIHRoZSB0b3Agb2YgdGhlIENvbXB1
dGVkIGRldGFpbHMgc2lkZWJhciBwYW5lbCAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzI0ODY4My93ZWJraXQvIj5yMjQ4NjgzPC9hPik8L2xpPgotICAgICAgICAg
ICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAgICAgPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+
UmVzb3VyY2VzCi0gICAgICAgICAgICAgICAgPHVsPgotICAgICAgICAgICAgICAgIDxsaT5GaXhl
ZCBicm90bGktY29tcHJlc3NlZCByZXNvdXJjZXMgdG8gY29ycmVjdGx5IHNob3cgYXMgYmVpbmcg
Y29tcHJlc3NlZCBpbiB0aGUgUmVzb3VyY2VzIGRldGFpbHMgc2lkZWJhciAoPGEgaHJlZj0iaHR0
cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0ODI4NC93ZWJraXQvIj5yMjQ4Mjg0PC9h
Pik8L2xpPgotICAgICAgICAgICAgICAgIDxsaT5GaXhlZCB0byBwcm9wZXJseSBoYW5kbGUgQ1NT
IGNvbW1lbnRzIHdpdGggYW4gZXNjYXBlIGNoYXJhY3RlciB3aGVuIHByZXR0eSBwcmludGluZyAo
PGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0ODE5Ny93ZWJraXQv
Ij5yMjQ4MTk3PC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAg
ICAgPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+RGVidWdnZXIKLSAgICAgICAgICAgICAgICA8
dWw+Ci0gICAgICAgICAgICAgICAgPGxpPkFkZGVkIGEgZ2xvYmFsIGJyZWFrcG9pbnQgZm9yICYj
ODIyMDtBbGwgRXZlbnRzJiM4MjIxOyB3aGljaCB3aWxsIHBhdXNlIHdoZW5ldmVyIGFueSBldmVu
dCBsaXN0ZW5lciBpcyBhYm91dCB0byBiZSBmaXJlZCAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LzI0ODIwMS93ZWJraXQvIj5yMjQ4MjAxPC9hPik8L2xpPgotICAg
ICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAgICAgPC9saT4KLSAgICAgICAgICAgICAg
ICA8bGk+VGltZWxpbmVzCi0gICAgICAgICAgICAgICAgPHVsPgotICAgICAgICAgICAgICAgIDxs
aT5NYWRlIEhlYXAgU25hcHNob3RzIHNlYXJjaGFibGUgKDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC8yNDgxOTgvd2Via2l0LyI+cjI0ODE5ODwvYT4pPC9saT4KLSAg
ICAgICAgICAgICAgICA8bGk+Rml4ZWQgYW4gaXNzdWUgd2hlcmUgPHN0cm9uZz5EZXZlbG9wPC9z
dHJvbmc+ID4gPHN0cm9uZz5TdGFydCBUaW1lbGluZSBSZWNvcmRpbmc8L3N0cm9uZz4gZGlkbuKA
mXQgd29yayB3aGVuIGZvY3VzZWQgb24gYSBkZXRhY2hlZCBXZWIgSW5zcGVjdG9yIHdpbmRvdyAo
PGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0ODE3Ny93ZWJraXQv
Ij5yMjQ4MTc3PC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAg
ICAgPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+Q29uc29sZQotICAgICAgICAgICAgICAgIDx1
bD4KLSAgICAgICAgICAgICAgICA8bGk+Q2hhbmdlZCB0byBhbHdheXMgc2hvdyBhbGwgbmF2aWdh
dGlvbiBpdGVtcyBpbiB0aGUgaGVhZGVyIGFyZWEgb2YgdGhlIHNwbGl0IGNvbnNvbGUgKDxhIGhy
ZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDgxODAvd2Via2l0LyI+cjI0
ODE4MDwvYT4pPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+Rml4ZWQgaXNzdWUgd2hlcmUgdGhl
IGV4ZWN1dGlvbiBjb250ZXh0IHBpY2tlciBkaWRu4oCZdCB1cGRhdGUgd2hlbiBzd2l0Y2hpbmcg
dG8gdGhlIGluZmVycmVkIGNvbnRleHQgZnJvbSA8Y29kZT5hdXRvPC9jb2RlPiAoPGEgaHJlZj0i
aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0ODE5Ni93ZWJraXQvIj5yMjQ4MTk2
PC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDxsaT5Qcm92aWRlZCBhIHdheSB0byBzZXQgYW4g
YWxpYXMgZm9yIHByZXZpb3VzIGNvbnNvbGUgZXZhbHVhdGlvbiB2YWx1ZXMgKGUuZy4gPGNvZGU+
JDA8L2NvZGU+LCA8Y29kZT4kMTwvY29kZT4sICYjODIzMDssICA8Y29kZT4kOTk8L2NvZGU+KSBp
biBjYXNlIHRoZSBpbnNwZWN0ZWQgcGFnZSBoYXMgdmFyaWFibGVzIHdpdGggdGhlIHNhbWUgbmFt
ZSAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0ODI4Ny93ZWJr
aXQvIj5yMjQ4Mjg3PC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDxsaT5SZW5hbWVkIDxjb2Rl
PnF1ZXJ5T2JqZWN0czwvY29kZT4gY29uc29sZSBjb21tYW5kIGxpbmUgQVBJIHRvIDxjb2RlPnF1
ZXJ5SW5zdGFuY2VzPC9jb2RlPiBmb3IgY2xhcml0eSAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LzI0ODQzNC93ZWJraXQvIj5yMjQ4NDM0PC9hPik8L2xpPgotICAg
ICAgICAgICAgICAgIDxsaT5TdXBwb3J0ZWQgPGNvZGU+Y29uc29sZS5zY3JlZW5zaG90PC9jb2Rl
PiB3aXRoIGRhdGFVUkwgc3RyaW5ncyAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzI0ODY4OC93ZWJraXQvIj5yMjQ4Njg4PC9hPik8L2xpPgotICAgICAgICAgICAg
ICAgIDwvdWw+Ci0gICAgICAgICAgICAgICAgPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+T3Zl
cmxheQotICAgICAgICAgICAgICAgIDx1bD4KLSAgICAgICAgICAgICAgICA8bGk+Q2hhbmdlZCB0
byBzaG93IHBhZ2Ugd2lkdGggYW5kIGhlaWdodCBpbmZvcm1hdGlvbiAoPGEgaHJlZj0iaHR0cHM6
Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0ODA1My93ZWJraXQvIj5yMjQ4MDUzPC9hPik8
L2xpPgotICAgICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAgICAgPC9saT4KLSAgICAg
ICAgICAgICAgICA8bGk+U2V0dGluZ3MKLSAgICAgICAgICAgICAgICA8dWw+Ci0gICAgICAgICAg
ICAgICAgPGxpPkFkZGVkIGFuIEVuZ2luZWVyaW5nIHBhbmUgdG8gZXhwb3NlIHVzZWZ1bCBzZXR0
aW5ncyBmb3IgV2ViS2l0IGVuZ2luZWVycyAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzI0ODM5MS93ZWJraXQvIj5yMjQ4MzkxPC9hPik8L2xpPgotICAgICAgICAg
ICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAgICAgPC9saT4KLSAgICAgICAgICAgICAgICA8L3Vs
PgotICAgICAgICAgICAgICAgIDxoMz5CdWcgRml4ZXM8L2gzPgotICAgICAgICAgICAgICAgIDx1
bD4KLSAgICAgICAgICAgICAgICA8bGk+Rml4ZWQgZHJhZ2dpbmcgYW4gaW1hZ2UgZnJvbSBTYWZh
cmkgdG8gTm90ZXMgdG8gY29ycmVjdGx5IGFwcGVhciAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LzI0ODE2Ni93ZWJraXQvIj5yMjQ4MTY2PC9hPik8L2xpPgotICAg
ICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAgICAgXV0+Ci0gICAgICAgICAgICA8L2Nv
bnRlbnQ6ZW5jb2RlZD4KLSAgICAgICAgPC9pdGVtPgotICAgICAgICA8aXRlbT4KLSAgICAgICAg
ICAgIDx0aXRsZT5Bbm5vdW5jaW5nIHRoZSBXZWJLaXQgVHJhY2tpbmcgUHJldmVudGlvbiBQb2xp
Y3k8L3RpdGxlPgotICAgICAgICAgICAgPGxpbms+aHR0cHM6Ly93ZWJraXQub3JnL2Jsb2cvOTUw
Ny9hbm5vdW5jaW5nLXRoZS13ZWJraXQtdHJhY2tpbmctcHJldmVudGlvbi1wb2xpY3kvPC9saW5r
PgotICAgICAgICAgICAgPHB1YkRhdGU+V2VkLCAxNCBBdWcgMjAxOSAyMjo0NDo1NSArMDAwMDwv
cHViRGF0ZT4KLSAgICAgICAgICAgIDxkYzpjcmVhdG9yPgotICAgICAgICAgICAgICAgIDwhW0NE
QVRBW11dPgotICAgICAgICAgICAgPC9kYzpjcmVhdG9yPgotICAgICAgICAgICAgPGNhdGVnb3J5
PgotICAgICAgICAgICAgICAgIDwhW0NEQVRBW05ld3NdXT4KLSAgICAgICAgICAgIDwvY2F0ZWdv
cnk+Ci0gICAgICAgICAgICA8Y2F0ZWdvcnk+Ci0gICAgICAgICAgICAgICAgPCFbQ0RBVEFbUHJp
dmFjeV1dPgotICAgICAgICAgICAgPC9jYXRlZ29yeT4KLQotICAgICAgICAgICAgPGd1aWQgaXNQ
ZXJtYUxpbms9ImZhbHNlIj5odHRwczovL3dlYmtpdC5vcmcvP3A9OTUwNzwvZ3VpZD4KLSAgICAg
ICAgICAgIDxkZXNjcmlwdGlvbj4KLSAgICAgICAgICAgICAgICA8IVtDREFUQVtUb2RheSB3ZSBh
cmUgcHVibGlzaGluZyB0aGUgV2ViS2l0IFRyYWNraW5nIFByZXZlbnRpb24gUG9saWN5LCBjb3Zl
cmluZzogV2hhdCB0eXBlcyBvZiB0cmFja2luZyBXZWJLaXQgd2lsbCBwcmV2ZW50Ll1dPgotICAg
ICAgICAgICAgPC9kZXNjcmlwdGlvbj4KLSAgICAgICAgICAgIDxjb250ZW50OmVuY29kZWQ+Ci0g
ICAgICAgICAgICAgICAgPCFbQ0RBVEFbPHA+VG9kYXkgd2UgYXJlIHB1Ymxpc2hpbmcgdGhlIDxh
IGhyZWY9Imh0dHBzOi8vd2Via2l0Lm9yZy90cmFja2luZy1wcmV2ZW50aW9uLXBvbGljeSI+V2Vi
S2l0IFRyYWNraW5nIFByZXZlbnRpb24gUG9saWN5PC9hPiwgY292ZXJpbmc6PC9wPgotICAgICAg
ICAgICAgICAgIDx1bD4KLSAgICAgICAgICAgICAgICA8bGk+V2hhdCB0eXBlcyBvZiB0cmFja2lu
ZyBXZWJLaXQgd2lsbCBwcmV2ZW50LjwvbGk+Ci0gICAgICAgICAgICAgICAgPGxpPldoZW4gb3Ro
ZXIgdHJhY2tpbmcgY291bnRlcm1lYXN1cmVzIGNvbWUgaW50byBwbGF5IHN1Y2ggYXMgbGltaXRp
bmcgY2FwYWJpbGl0aWVzIGFuZCBpbmZvcm1lZCB1c2VyIGNvbnNlbnQuPC9saT4KLSAgICAgICAg
ICAgICAgICA8bGk+SG93IFdlYktpdCBoYW5kbGVzIHVuaW50ZW5kZWQgaW1wYWN0IG9mIG91ciB0
cmFja2luZyBwcmV2ZW50aW9uLjwvbGk+Ci0gICAgICAgICAgICAgICAgPC91bD4KLSAgICAgICAg
ICAgICAgICA8cD5XZeKAmWQgbGlrZSB0byB0aGFuayBNb3ppbGxhIGZvciB0aGVpciA8YSBocmVm
PSJodHRwczovL3dpa2kubW96aWxsYS5vcmcvU2VjdXJpdHkvQW50aV90cmFja2luZ19wb2xpY3ki
PmFudGktdHJhY2tpbmcgcG9saWN5PC9hPiB3aGljaCBzZXJ2ZWQgYXMgaW5zcGlyYXRpb24gZm9y
IG91cnMuPC9wPgotICAgICAgICAgICAgICAgIDxwPlBsZWFzZSBzZW5kIHVzIHlvdXIgY29tbWVu
dHMgb3IgcXVlc3Rpb25zIGFib3V0IHRoaXMgcG9saWN5IHRvIDxhIGhyZWY9Imh0dHBzOi8vdHdp
dHRlci5jb20vd2Via2l0Ij5Ad2Via2l0PC9hPiBvbiBUd2l0dGVyLjwvcD4KLSAgICAgICAgICAg
ICAgICBdXT4KLSAgICAgICAgICAgIDwvY29udGVudDplbmNvZGVkPgotICAgICAgICA8L2l0ZW0+
Ci0gICAgICAgIDxpdGVtPgotICAgICAgICAgICAgPHRpdGxlPlJlbGVhc2UgTm90ZXMgZm9yIFNh
ZmFyaSBUZWNobm9sb2d5IFByZXZpZXcgODk8L3RpdGxlPgotICAgICAgICAgICAgPGxpbms+aHR0
cHM6Ly93ZWJraXQub3JnL2Jsb2cvOTQ5Ny9yZWxlYXNlLW5vdGVzLWZvci1zYWZhcmktdGVjaG5v
bG9neS1wcmV2aWV3LTg5LzwvbGluaz4KLSAgICAgICAgICAgIDxwdWJEYXRlPldlZCwgMDcgQXVn
IDIwMTkgMTc6MDA6MTEgKzAwMDA8L3B1YkRhdGU+Ci0gICAgICAgICAgICA8ZGM6Y3JlYXRvcj4K
LSAgICAgICAgICAgICAgICA8IVtDREFUQVtdXT4KLSAgICAgICAgICAgIDwvZGM6Y3JlYXRvcj4K
LSAgICAgICAgICAgIDxjYXRlZ29yeT4KLSAgICAgICAgICAgICAgICA8IVtDREFUQVtTYWZhcmkg
VGVjaG5vbG9neSBQcmV2aWV3XV0+Ci0gICAgICAgICAgICA8L2NhdGVnb3J5PgotCi0gICAgICAg
ICAgICA8Z3VpZCBpc1Blcm1hTGluaz0iZmFsc2UiPmh0dHBzOi8vd2Via2l0Lm9yZy8/cD05NDk3
PC9ndWlkPgotICAgICAgICAgICAgPGRlc2NyaXB0aW9uPgotICAgICAgICAgICAgICAgIDwhW0NE
QVRBW1NhZmFyaSBUZWNobm9sb2d5IFByZXZpZXcgUmVsZWFzZSA4OSBpcyBub3cgYXZhaWxhYmxl
IGZvciBkb3dubG9hZCBmb3IgbWFjT1MgTW9qYXZlIGFuZCB0aGUgbWFjT1MgQ2F0YWxpbmEgYmV0
YS5dXT4KLSAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+Ci0gICAgICAgICAgICA8Y29udGVudDpl
bmNvZGVkPgotICAgICAgICAgICAgICAgIDwhW0NEQVRBWzxwPjxhIGhyZWY9Imh0dHBzOi8vd2Vi
a2l0Lm9yZy9ibG9nLzYwMTcvaW50cm9kdWNpbmctc2FmYXJpLXRlY2hub2xvZ3ktcHJldmlldy8i
PlNhZmFyaSBUZWNobm9sb2d5IFByZXZpZXc8L2E+IFJlbGVhc2UgODkgaXMgbm93IDxhIGhyZWY9
Imh0dHBzOi8vd2Via2l0Lm9yZy9kb3dubG9hZHMvIj5hdmFpbGFibGUgZm9yIGRvd25sb2FkPC9h
PiBmb3IgbWFjT1MgTW9qYXZlIGFuZCB0aGUgbWFjT1MgQ2F0YWxpbmEgYmV0YS4gSWYgeW91IGFs
cmVhZHkgaGF2ZSBTYWZhcmkgVGVjaG5vbG9neSBQcmV2aWV3IGluc3RhbGxlZCwgeW91IGNhbiB1
cGRhdGUgaW4gdGhlIFNvZnR3YXJlIFVwZGF0ZSBwYW5lIG9mIFN5c3RlbSBQcmVmZXJlbmNlcyBv
biBtYWNPUy48L3A+Ci0gICAgICAgICAgICAgICAgPHA+VGhpcyByZWxlYXNlIGNvdmVycyBXZWJL
aXQgcmV2aXNpb25zIDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2xvZz9zdG9wX3Jl
dj0yNDc0MzMmYW1wOyZhbXA7cmV2PTI0ODAyNCZhbXA7bGltaXQ9OTk5Ij4yNDc0MzMtMjQ4MDI0
PC9hPi48L3A+Ci0gICAgICAgICAgICAgICAgPGgzPkphdmFTY3JpcHQ8L2gzPgotICAgICAgICAg
ICAgICAgIDx1bD4KLSAgICAgICAgICAgICAgICA8bGk+SW1wbGVtZW50ZWQgbnVsbGlzaCBjb2Fs
ZXNjaW5nIHdpdGggdGhlIDxjb2RlPj8/PC9jb2RlPiBvcGVyYXRvciBmb3IgRVNOZXh0ICg8YSBo
cmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ3ODE5L3dlYmtpdC8iPnIy
NDc4MTk8L2E+KTwvbGk+Ci0gICAgICAgICAgICAgICAgPC91bD4KLSAgICAgICAgICAgICAgICA8
aDM+V2ViIEFQSTwvaDM+Ci0gICAgICAgICAgICAgICAgPHVsPgotICAgICAgICAgICAgICAgIDxs
aT5BZGRlZCA8Y29kZT5yZWZlcnJlcnBvbGljeTwvY29kZT4gYXR0cmlidXRlIHN1cHBvcnQgZm9y
IDxjb2RlPiZsdDtzY3JpcHQmZ3Q7PC9jb2RlPiBlbGVtZW50cyAoPGEgaHJlZj0iaHR0cHM6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0NzUwOS93ZWJraXQvIj5yMjQ3NTA5PC9hPik8L2xp
PgotICAgICAgICAgICAgICAgIDxsaT5DaGFuZ2VkIDxjb2RlPndpbmRvdy5vcGVuRGF0YWJhc2U8
L2NvZGU+IHRvIGJlIG92ZXJyaWRhYmxlICg8YSBocmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMjQ3NDM0L3dlYmtpdC8iPnIyNDc0MzQ8L2E+KTwvbGk+Ci0gICAgICAgICAg
ICAgICAgPGxpPkZpeGVkIGFuIEluZGV4ZWREQiBlcnJvciB3aGVyZSB0aGUgc3RhcnRpbmcgdmVy
c2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24gbWF5IGJlIG5lZ2xlY3RlZCAoPGEgaHJlZj0iaHR0cHM6
Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0NzY0OS93ZWJraXQvIj5yMjQ3NjQ5PC9hPik8
L2xpPgotICAgICAgICAgICAgICAgIDxsaT5GaXhlZCB0aGUgYWJpbGl0eSB0byB1bmJvbGQgc2Vs
ZWN0ZWQgdGV4dCB3aGVuIHRoZSBzeXN0ZW0gZm9udCBpcyB1c2VkICg8YSBocmVmPSJodHRwczov
L3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ3NDM5L3dlYmtpdC8iPnIyNDc0Mzk8L2E+KTwv
bGk+Ci0gICAgICAgICAgICAgICAgPGxpPk1hZGUgc3RvcmluZyBjcm9zcy1vcmlnaW4gdG9wLWxl
dmVsIHByZWZldGNoZXMgaW4gSFRUUCBjYWNoZSBvcHRpb25hbCAoPGEgaHJlZj0iaHR0cHM6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0Nzg2MC93ZWJraXQvIj5yMjQ3ODYwPC9hPik8L2xp
PgotICAgICAgICAgICAgICAgIDxsaT5Nb3ZpbmcgcmlnaHQgYnkgd29yZCBib3VuZGFyeSByaWdo
dCBiZWZvcmUgYW4gb2JqZWN0IGVsZW1lbnQgZm9sbG93ZWQgYnkgYSA8Y29kZT4mbHQ7YnImZ3Q7
PC9jb2RlPiBlbGVtZW50IGhhbmdzICg8YSBocmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvMjQ3ODgxL3dlYmtpdC8iPnIyNDc4ODE8L2E+KTwvbGk+Ci0gICAgICAgICAgICAg
ICAgPGxpPlJlbW92ZWQgc3VwcG9ydCBmb3IgPGNvZGU+YmVmb3JlbG9hZDwvY29kZT4gb24gPGNv
ZGU+bGluaz1wcmVmZXRjaDwvY29kZT4gKDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8yNDc0ODEvd2Via2l0LyI+cjI0NzQ4MTwvYT4pPC9saT4KLSAgICAgICAgICAg
ICAgICA8L3VsPgotICAgICAgICAgICAgICAgIDxoMz5Db21wYXRpYmlsaXR5PC9oMz4KLSAgICAg
ICAgICAgICAgICA8dWw+Ci0gICAgICAgICAgICAgICAgPGxpPkZpeGVkIERhcmluZyBGaXJlYmFs
bCBsb25nIHByZXNzIGhpZ2hsaWdodHMgdGhhdCB3ZXJlIHVubmVjZXNzYXJpbHkgaW5mbGF0ZWQg
ZHVlIHRvIGZhbHNlIGlsbGVnaWJpbGl0eSAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzI0Nzc5Mi93ZWJraXQvIj5yMjQ3NzkyPC9hPik8L2xpPgotICAgICAgICAg
ICAgICAgIDxsaT5GaXhlZCBjb250ZXh0dWFsIG1lbnUgYWN0aW9ucyBmb3IgWW91VHViZSB2aWRl
b3MgKDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDc5MDEvd2Vi
a2l0LyI+cjI0NzkwMTwvYT4pPC9saT4KLSAgICAgICAgICAgICAgICA8L3VsPgotICAgICAgICAg
ICAgICAgIDxoMz5BY2Nlc3NpYmlsaXR5PC9oMz4KLSAgICAgICAgICAgICAgICA8dWw+Ci0gICAg
ICAgICAgICAgICAgPGxpPkV4cG9zZWQgdGhlIDxjb2RlPmFyaWEtbGFiZWw8L2NvZGU+IGF0dHJp
YnV0ZSBmb3IgPGNvZGU+Jmx0O3ZpZGVvJmd0OzwvY29kZT4gZWxlbWVudHMgKDxhIGhyZWY9Imh0
dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDc4OTEvd2Via2l0LyI+cjI0Nzg5MTwv
YT4pPC9saT4KLSAgICAgICAgICAgICAgICA8L3VsPgotICAgICAgICAgICAgICAgIDxoMz5NZWRp
YTwvaDM+Ci0gICAgICAgICAgICAgICAgPHVsPgotICAgICAgICAgICAgICAgIDxsaT5FbmFibGVk
IGEgV2ViUlRDIGRlYnVnIG1vZGUgd2l0aG91dCBlbmNyeXB0aW9uICg8YSBocmVmPSJodHRwczov
L3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ3NDM4L3dlYmtpdC8iPnIyNDc0Mzg8L2E+KTwv
bGk+Ci0gICAgICAgICAgICAgICAgPGxpPkZpeGVkIHN1cHBvcnQgZm9yIEZMQUMtaW4tTVA0ICg8
YSBocmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ3OTM0L3dlYmtpdC8i
PnIyNDc5MzQ8L2E+KTwvbGk+Ci0gICAgICAgICAgICAgICAgPC91bD4KLSAgICAgICAgICAgICAg
ICA8aDM+V2ViIEluc3BlY3RvcjwvaDM+Ci0gICAgICAgICAgICAgICAgPHVsPgotICAgICAgICAg
ICAgICAgIDxsaT5BZGRlZCBzdXBwb3J0IGZvciA8Y29kZT5jb25zb2xlLnNjcmVlbnNob3Q8L2Nv
ZGU+IHdpdGggZGV0YWNoZWQgKG5vdCBpbiBtYWluIERPTSB0cmVlKSA8Y29kZT4mbHQ7aW1nJmd0
OzwvY29kZT4gYW5kIDxjb2RlPiZsdDtwaWN0dXJlJmd0OzwvY29kZT4gZWxlbWVudHMgKDxhIGhy
ZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDc4MTQvd2Via2l0LyI+cjI0
NzgxNDwvYT4pPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+QWRkZWQgc3VwcG9ydCBmb3IgPGNv
ZGU+Y29uc29sZS5zY3JlZW5zaG90PC9jb2RlPiB3aXRoIDxjb2RlPkltYWdlRGF0YTwvY29kZT4g
YW5kIDxjb2RlPkltYWdlQml0bWFwPC9jb2RlPiAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzI0NzgxMi93ZWJraXQvIj5yMjQ3ODEyPC9hPik8L2xpPgotICAgICAg
ICAgICAgICAgIDxsaT5BZGRlZCBhICYjODIyMDtTaG93IEdyaWQmIzgyMjE7IG5hdmlnYXRpb24g
aXRlbSBmb3IgdGhlIEltYWdlcyBjb2xsZWN0aW9uIGluIHRoZSBSZXNvdXJjZXMgdGFiICg8YSBo
cmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ4MDA0L3dlYmtpdC8iPnIy
NDgwMDQ8L2E+KTwvbGk+Ci0gICAgICAgICAgICAgICAgPGxpPkFkZGVkIGFuIGluZGljYXRvci9z
ZXBhcmF0b3IgYXJvdW5kIGl0ZW1zIGluIHRoZSBJbWFnZXMgY29sbGVjdGlvbiBpbiB0aGUgUmVz
b3VyY2VzIHRhYiAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0
ODAxOS93ZWJraXQvIj5yMjQ4MDE5PC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDxsaT5BZGQg
c3BlY2lhbCBjYXNlIGZvciA8Y29kZT5hYm91dDpibGFuazwvY29kZT4gcmVzb3VyY2VzIHRvIHNo
b3cgJiM4MjIwO1Jlc291cmNlIGhhcyBubyBjb250ZW50JiM4MjIxOyBtZXNzYWdlICg8YSBocmVm
PSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ3NzQ3L3dlYmtpdC8iPnIyNDc3
NDc8L2E+KTwvbGk+Ci0gICAgICAgICAgICAgICAgPGxpPkZpeGVkIGRpc3BsYXkgb2YgPGNvZGU+
YXBwbGljYXRpb24veG1sPC9jb2RlPiBjb250ZW50IGZvciBYSFIgcmVxdWVzdHMgKDxhIGhyZWY9
Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDc1MzMvd2Via2l0LyI+cjI0NzUz
MzwvYT4pPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+Rml4ZWQgaXNzdWVzIHRvZ2dsaW5nIG11
bHRpcGxlIGJyZWFrcG9pbnRzIHdoZW4gdGhleSYjODIxNztyZSBjb2xsYXBzZWQgaW50byBvbmUg
bGluZSAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0NzYzOS93
ZWJraXQvIj5yMjQ3NjM5PC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDxsaT5GaXhlZCBDb21t
YW5kLVggKOKMmFgpIHRvIGN1dCBzZWxlY3RlZCBwcm9wZXJ0aWVzIGluIHRoZSBTdHlsZXMgc2lk
ZWJhciAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0Nzc2MC93
ZWJraXQvIj5yMjQ3NzYwPC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDxsaT5NYWRlIHRoZSBD
aGFuZ2VzIHBhbmVsIGluIHRoZSBFbGVtZW50cyBUYWIgcmVuZGVyIHdpdGggTFRSIHRleHQgZGly
ZWN0aW9uICg8YSBocmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ3NDky
L3dlYmtpdC8iPnIyNDc0OTI8L2E+KTwvbGk+Ci0gICAgICAgICAgICAgICAgPC91bD4KLSAgICAg
ICAgICAgICAgICA8aDM+V2ViR1BVPC9oMz4KLSAgICAgICAgICAgICAgICA8dWw+Ci0gICAgICAg
ICAgICAgICAgPGxpPkltcGxlbWVudGVkIGVycm9ycyBmb3IgR1BVUmVuZGVyUGlwZWxpbmUgY3Jl
YXRpb24gKDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDc3NjQv
d2Via2l0LyI+cjI0Nzc2NDwvYT4pPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+QWRkZWQgZGVz
Y3JpcHRpdmUgZXJyb3IgbWVzc2FnZXMgaW4gV0hMU0wgKDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC8yNDc4MzQvd2Via2l0LyI+cjI0NzgzNDwvYT4pPC9saT4KLSAg
ICAgICAgICAgICAgICA8bGk+Q2hhbmdlZCBjaGVja2VyIHRvIDxjb2RlPnNldEVycm9yKCk8L2Nv
ZGU+IHdoZW4gYSBwcm9wZXJ0eSBhY2Nlc3Mgbm9kZSBjYW4mIzgyMTc7dCBjb21taXQgaXRzIGJh
c2UgdHlwZSBpbiBXSExTTCAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0LzI0NzY3Ni93ZWJraXQvIj5yMjQ3Njc2PC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDxs
aT5DaGFuZ2VkIHRvIHJldHVybiB0aGUgemVyby12YWx1ZSBlbnVtIGluIHRoZSBlbnVtLWZyb20t
aW50ZWdlciBjb25zdHJ1Y3RvciB3aGVuIHRoZSBpbnRlZ2VyIGlzIG5vdCBhIHZhbGlkIGVudW0g
dmFsdWUgaW4gV0hMU0wgKDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC8yNDc2NzUvd2Via2l0LyI+cjI0NzY3NTwvYT4pPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+
TWFkZSBlbnVtcyB3b3JrIGluIFdITFNMICg8YSBocmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMjQ3NjY2L3dlYmtpdC8iPnIyNDc2NjY8L2E+KTwvbGk+Ci0gICAgICAgICAg
ICAgICAgPGxpPlVwZGF0ZWQgbWF0cml4IG1lbW9yeSBsYXlvdXQgdG8gbWF0Y2ggSExTTCBieSBs
YXlpbmcgb3V0IGNvbHVtbnMgbGluZWFybHkgaW4gV0hMU0wgKDxhIGhyZWY9Imh0dHBzOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDc0Njgvd2Via2l0LyI+cjI0NzQ2ODwvYT4pPC9saT4K
LSAgICAgICAgICAgICAgICA8L3VsPgotICAgICAgICAgICAgICAgIF1dPgotICAgICAgICAgICAg
PC9jb250ZW50OmVuY29kZWQ+Ci0gICAgICAgIDwvaXRlbT4KLSAgICAgICAgPGl0ZW0+Ci0gICAg
ICAgICAgICA8dGl0bGU+Q2hhbmdpbmcgUGFnZSBTZXR0aW5ncyBvbiBpT1MgVXNpbmcgV2ViIElu
c3BlY3RvcjwvdGl0bGU+Ci0gICAgICAgICAgICA8bGluaz5odHRwczovL3dlYmtpdC5vcmcvYmxv
Zy85NDU0L2NoYW5naW5nLXBhZ2Utc2V0dGluZ3Mtb24taW9zLXVzaW5nLXdlYi1pbnNwZWN0b3Iv
PC9saW5rPgotICAgICAgICAgICAgPHB1YkRhdGU+RnJpLCAwMiBBdWcgMjAxOSAwNTo1NjoyNSAr
MDAwMDwvcHViRGF0ZT4KLSAgICAgICAgICAgIDxkYzpjcmVhdG9yPgotICAgICAgICAgICAgICAg
IDwhW0NEQVRBW11dPgotICAgICAgICAgICAgPC9kYzpjcmVhdG9yPgotICAgICAgICAgICAgPGNh
dGVnb3J5PgotICAgICAgICAgICAgICAgIDwhW0NEQVRBW1dlYiBJbnNwZWN0b3JdXT4KLSAgICAg
ICAgICAgIDwvY2F0ZWdvcnk+Ci0KLSAgICAgICAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxz
ZSI+aHR0cHM6Ly93ZWJraXQub3JnLz9wPTk0NTQ8L2d1aWQ+Ci0gICAgICAgICAgICA8ZGVzY3Jp
cHRpb24+Ci0gICAgICAgICAgICAgICAgPCFbQ0RBVEFbSWYgeW91JiM4MjE3O3ZlIGV2ZXIgdXNl
ZCBXZWIgSW5zcGVjdG9yIGJlZm9yZSwgY2hhbmNlcyBhcmUgeW91JiM4MjE3O3ZlIHVzZWQgKG9y
IGFyZSBhdCBsZWFzdCBmYW1pbGlhciB3aXRoKSB0aGUgRGV2ZWxvcCBtZW51Ll1dPgotICAgICAg
ICAgICAgPC9kZXNjcmlwdGlvbj4KLSAgICAgICAgICAgIDxjb250ZW50OmVuY29kZWQ+Ci0gICAg
ICAgICAgICAgICAgPCFbQ0RBVEFbPHN0eWxlPmZpZ3VyZSBwaWN0dXJlIGltZyB7IHdpZHRoOiAx
MDAlOyB9PC9zdHlsZT4KLSAgICAgICAgICAgICAgICA8c3R5bGU+QG1lZGlhIChwcmVmZXJzLWNv
bG9yLXNjaGVtZTpkYXJrKSB7IGZpZ3VyZSBwaWN0dXJlIGltZyB7IGZpbHRlcjogbm9uZTsgfSB9
PC9zdHlsZT4KLSAgICAgICAgICAgICAgICA8cD5JZiB5b3UmIzgyMTc7dmUgZXZlciB1c2VkIFdl
YiBJbnNwZWN0b3IgYmVmb3JlLCBjaGFuY2VzIGFyZSB5b3UmIzgyMTc7dmUgdXNlZCAob3IgYXJl
IGF0IGxlYXN0IGZhbWlsaWFyIHdpdGgpIHRoZSA8c3Ryb25nPkRldmVsb3A8L3N0cm9uZz4gbWVu
dS4gIEl0IGhvbGRzIGFjdGlvbiBpdGVtcyBhbmQgdG9nZ2xlcyBmb3IgdmFyaW91cyBzZXR0aW5n
cyBvZiB0aGUgYnJvd3NlciwgbGlrZSB3aGV0aGVyIGxvY2FsIGZpbGVzIChlLmcuIFVSTHMgYmVn
aW5uaW5nIHdpdGggPGNvZGU+ZmlsZTovLzwvY29kZT4pIGNhbiBiZSBsb2FkZWQgb3Igd2hldGhl
ciBDU1MgaXMgYXBwbGllZCB0byBlYWNoIHBhZ2UuPC9wPgotICAgICAgICAgICAgICAgIDxmaWd1
cmUgY2xhc3M9IndpZGVzY3JlZW4gbWF0dGV3aGl0ZSI+Ci0gICAgICAgICAgICAgICAgICA8cGlj
dHVyZSB0aXRsZT0iRGV2ZWxvcCBNZW51Ij48c291cmNlIHNyY3NldD0iaHR0cHM6Ly93ZWJraXQu
b3JnL3dwLWNvbnRlbnQvdXBsb2Fkcy9EZXZlbG9wX01lbnVfRGFyay5wbmciIG1lZGlhPSIocHJl
ZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIj48aW1nIHNyYz0iaHR0cHM6Ly93ZWJraXQub3JnL3dw
LWNvbnRlbnQvdXBsb2Fkcy9EZXZlbG9wX01lbnVfTGlnaHQucG5nIiBzdHlsZT0ibWF4LXdpZHRo
OiA0MzFweCI+Ci0gICAgICAgICAgICAgICAgICA8L3BpY3R1cmU+Ci0gICAgICAgICAgICAgICAg
PC9maWd1cmU+Ci0gICAgICAgICAgICAgICAgPHA+QWxsIG9mIHRoZXNlIGl0ZW1zIGFwcGx5IHRv
IHRoZSBlbnRpcmUgYnJvd3NlciwgbWVhbmluZyB0aGF0IGlmIHlvdSA8c3Ryb25nPkRpc2FibGUg
U3R5bGVzPC9zdHJvbmc+IG9uIG9uZSBwYWdlLCBldmVyeSBvdGhlciBwYWdlIHdpbGwgYmUgYWZm
ZWN0ZWQuPC9wPgotICAgICAgICAgICAgICAgIDxwPkFkZGl0aW9uYWxseSwgdGhlc2UgaXRlbXMg
aGF2ZSBubyBlZmZlY3Qgd2hlbiB1c2luZyBXZWIgSW5zcGVjdG9yIHRvIGluc3BlY3QgYSByZW1v
dGUgdGFyZ2V0LCBsaWtlIGFuIGlPUyBkZXZpY2Ugb3Igc2ltdWxhdG9yLiBDaGVja2luZyA8c3Ry
b25nPkRpc2FibGUgU3R5bGVzPC9zdHJvbmc+IGluIHRoZSA8c3Ryb25nPkRldmVsb3A8L3N0cm9u
Zz4gbWVudSB3aWxsIG5vdCBoYXZlIGFueSBhZmZlY3Qgb24gdGhlIHJlbW90ZSB0YXJnZXQuPC9w
PgotICAgICAgICAgICAgICAgIDxwPkluIG9yZGVyIHRvIHN1cHBvcnQgdGhpcyBkZXZlbG9wbWVu
dCB3b3JrZmxvdywgV2ViIEluc3BlY3RvciBoYXMgYWRkZWQgYSBkZXZpY2Ugc2V0dGluZ3MgbWVu
dSB0aGF0IGFsbG93cyB0aGVzZSBzZXR0aW5ncyB0byBiZSB0b2dnbGVkIHBlci1wYWdlIHdoZW4g
YmVpbmcgcmVtb3RlbHkgaW5zcGVjdGVkLjwvcD4KLSAgICAgICAgICAgICAgICA8cD5DbGlja2lu
ZyBvbiB0aGUgZGV2aWNlIHNldHRpbmdzIG1lbnUgaWNvbiB3aWxsIHNob3cgYSBwb3BvdmVyIHdp
dGggbWFueSBvZiB0aGUgc2FtZSBzZXR0aW5ncyBhcyB0aGUgPHN0cm9uZz5EZXZlbG9wPC9zdHJv
bmc+IG1lbnUuPC9wPgotICAgICAgICAgICAgICAgIDxmaWd1cmUgY2xhc3M9IndpZGVzY3JlZW4g
bWF0dGV3aGl0ZSI+Ci0gICAgICAgICAgICAgICAgICA8cGljdHVyZSB0aXRsZT0iRGV2aWNlIFNl
dHRpbmdzIE1lbnUiPjxzb3VyY2Ugc3Jjc2V0PSJodHRwczovL3dlYmtpdC5vcmcvd3AtY29udGVu
dC91cGxvYWRzL0RldmljZV9TZXR0aW5nc19NZW51X0RhcmsucG5nIiBtZWRpYT0iKHByZWZlcnMt
Y29sb3Itc2NoZW1lOiBkYXJrKSI+PGltZyBzcmM9Imh0dHBzOi8vd2Via2l0Lm9yZy93cC1jb250
ZW50L3VwbG9hZHMvRGV2aWNlX1NldHRpbmdzX01lbnVfTGlnaHQucG5nIiBzdHlsZT0ibWF4LXdp
ZHRoOiAxMDAwcHgiPgotICAgICAgICAgICAgICAgICAgPC9waWN0dXJlPgotICAgICAgICAgICAg
ICAgIDwvZmlndXJlPgotICAgICAgICAgICAgICAgIDxwPlNpbmNlIHRoZXNlIHNldHRpbmdzIGFw
cGx5IHBlci1wYWdlIGFuZCBvbmx5IG9uIHRoZSByZW1vdGUgdGFyZ2V0LCB0aGUgY29ycmVzcG9u
ZGluZyBhY3Rpb25zIGluIHRoZSA8c3Ryb25nPkRldmVsb3A8L3N0cm9uZz4gbWVudSBhcmUgZGlz
YWJsZWQsIGFzIHRoZXkgaGF2ZSBubyBlZmZlY3Qgb24gYSByZW1vdGUgdGFyZ2V0OjwvcD4KLSAg
ICAgICAgICAgICAgICA8dWw+Ci0gICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+RGlzYWJsZSBJ
bWFnZXM8L3N0cm9uZz48L2xpPgotICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPkRpc2FibGUg
U3R5bGVzPC9zdHJvbmc+PC9saT4KLSAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5EaXNhYmxl
IEphdmFTY3JpcHQ8L3N0cm9uZz48L2xpPgotICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPkRp
c2FibGUgU2l0ZS1zcGVjaWZpYyBIYWNrczwvc3Ryb25nPjwvbGk+Ci0gICAgICAgICAgICAgICAg
PGxpPjxzdHJvbmc+RGlzYWJsZSBDcm9zcy1PcmlnaW4gUmVzdHJpY3Rpb25zPC9zdHJvbmc+PC9s
aT4KLSAgICAgICAgICAgICAgICA8bGk+V2ViUlRDCi0gICAgICAgICAgICAgICAgPHVsPgotICAg
ICAgICAgICAgICAgIDxsaT48c3Ryb25nPkFsbG93IE1lZGlhIENhcHR1cmUgb24gSW5zZWN1cmUg
U2l0ZXM8L3N0cm9uZz48L2xpPgotICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPkRpc2FibGUg
SUNFIENhbmRpZGF0ZSBSZXN0cmljdGlvbnM8L3N0cm9uZz48L2xpPgotICAgICAgICAgICAgICAg
IDxsaT48c3Ryb25nPlVzZSBNb2NrIENhcHR1cmUgRGV2aWNlczwvc3Ryb25nPjwvbGk+Ci0gICAg
ICAgICAgICAgICAgPC91bD4KLSAgICAgICAgICAgICAgICA8L2xpPgotICAgICAgICAgICAgICAg
IDwvdWw+Ci0gICAgICAgICAgICAgICAgPHA+QWxvbmcgdGhlc2UgbGluZXMsIHRoZSBkZXZpY2Ug
c2V0dGluZ3MgbWVudSBpcyBvbmx5IHNob3duIHdoZW4gdXNpbmcgV2ViIEluc3BlY3RvciB0byBp
bnNwZWN0IGEgcmVtb3RlIHRhcmdldC48L3A+Ci0gICAgICAgICAgICAgICAgPHA+RGV2aWNlIHNl
dHRpbmdzIGFyZSA8ZW0+bm90PC9lbT4gcHJlc2VydmVkIGJldHdlZW4gV2ViIEluc3BlY3RvciBz
ZXNzaW9ucy4gIENsb3NpbmcgV2ViIEluc3BlY3RvciAob3IgZGlzY29ubmVjdGluZyB0aGUgaW5z
cGVjdGVkIGRldmljZSkgd2lsbCBjYXVzZSBhbGwgcHJldmlvdXNseSBzZXQgZGV2aWNlIHNldHRp
bmdzIGZvciB0aGUgaW5zcGVjdGVkIHBhZ2UgdG8gcmVzZXQuPC9wPgotICAgICAgICAgICAgICAg
IDxwPkRldmljZSBzZXR0aW5ncyBhcmUgcHJlc2VydmVkIGFjcm9zcyBuYXZpZ2F0aW9ucywgaG93
ZXZlciwgc28gbG9uZyBhcyBXZWIgSW5zcGVjdG9yIHN0YXlzIG9wZW4vY29ubmVjdGVkLjwvcD4K
LSAgICAgICAgICAgICAgICA8aDIgaWQ9IlVzZXJBZ2VudCI+VXNlciBBZ2VudDwvaDI+Ci0gICAg
ICAgICAgICAgICAgPHA+VGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGRldmljZSBzZXR0aW5ncyBtZW51
IGlzIHRoZSA8c3Ryb25nPlVzZXIgQWdlbnQ8L3N0cm9uZz4gZWRpdG9yLiAgSXQgY29udGFpbnMg
YSBsaXN0IG9mIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2Rv
Y3MvV2ViL0hUVFAvSGVhZGVycy9Vc2VyLUFnZW50Ij5jb21tb24gdXNlciBhZ2VudHM8L2E+LCBh
cyB3ZWxsIGFzIGFuIG9wdGlvbiB0byBpbnB1dCBhIDxhIGhyZWY9Imh0dHBzOi8vZW4ud2lraXBl
ZGlhLm9yZy93aWtpL1VzZXJfYWdlbnQjVXNlX2luX0hUVFAiPmN1c3RvbSB1c2VyIGFnZW50PC9h
PiAoPHN0cm9uZz5PdGhlcuKApjwvc3Ryb25nPikuPC9wPgotICAgICAgICAgICAgICAgIDxwPkVh
Y2ggdGltZSB0aGUgPHN0cm9uZz5Vc2VyIEFnZW50PC9zdHJvbmc+IGlzIG1vZGlmaWVkLCB0aGUg
aW5zcGVjdGVkIHBhZ2Ugd2lsbCBhdXRvbWF0aWNhbGx5IHJlbG9hZCBzbyB0aGF0IHRoZSBuZXcg
PHN0cm9uZz5Vc2VyIEFnZW50PC9zdHJvbmc+IGlzIGFwcGxpZWQuPC9wPgotICAgICAgICAgICAg
ICAgIDxoMiBpZD0iRGlzYWJsZSI+RGlzYWJsZSBUb2dnbGVzPC9oMj4KLSAgICAgICAgICAgICAg
ICA8cD5FYWNoIG9mIHRoZXNlIHRvZ2dsZXMsIHdoZW4gY2hlY2tlZCwgZGlzYWJsZXMgYSBzcGVj
aWZpYyBwaWVjZSBvZiBmdW5jdGlvbmFsaXR5IGluIHRoZSBpbnNwZWN0ZWQgcGFnZS48L3A+Ci0g
ICAgICAgICAgICAgICAgPHVsPgotICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPkltYWdlczwv
c3Ryb25nPiB3aWxsIHByZXZlbnQgYW55IG5vdC15ZXQgbG9hZGVkIGltYWdlcyBmcm9tIGxvYWRp
bmcsIGJ1dCB3aWxsIGhhdmUgbm8gZWZmZWN0IG9uIGFueSBhbHJlYWR5IGxvYWRlZCBpbWFnZXMu
PC9saT4KLSAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5TdHlsZXM8L3N0cm9uZz4gd2lsbCBp
bW1lZGlhdGVseSBkaXNhYmxlIGFsbCBDU1Mgb24gdGhlIHBhZ2UsIGluY2x1ZGluZyBpbmxpbmUg
PGNvZGU+Jmx0O3N0eWxlJmd0OzwvY29kZT5zIGFuZCBhbnkgPGNvZGU+c3R5bGU8L2NvZGU+IERP
TSBhdHRyaWJ1dGVzLjwvbGk+Ci0gICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+SmF2YVNjcmlw
dDwvc3Ryb25nPiB3aWxsIGNhdXNlIHRoZSBwYWdlIHRvIGlnbm9yZSBhbnkgPGVtPmZ1dHVyZTwv
ZW0+IEphdmFTY3JpcHQgZnJvbSBiZWluZyBydW4sIGluY2x1ZGluZyBuZXcgPGNvZGU+Jmx0O3Nj
cmlwdCZndDs8L2NvZGU+IGVsZW1lbnRzICh0aGUgdW5kZXJseWluZyByZXNvdXJjZSBpc24mIzgy
MTc7dCBldmVuIHJlcXVlc3RlZCkgYW5kIGNhbGxiYWNrcyBmb3IgcHJldmlvdXNseSBhZGRlZCBl
dmVudCBsaXN0ZW5lcnMuPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5TaXRlLXNw
ZWNpZmljIEhhY2tzPC9zdHJvbmc+IGNvbnRyb2xzIHdoZXRoZXIgd29ya2Fyb3VuZHMgYXJlIG1h
ZGUgYnkgV2ViS2l0IHRvIHN1cHBvcnQgY29tcGF0aWJpbGl0eSBvbiBjZXJ0YWluIHNpdGVzLgot
ICAgICAgICAgICAgICAgIDx1bD4KLSAgICAgICAgICAgICAgICA8bGk+QSBsaXN0IG9mIHRoZXNl
IHNpdGVzIGNhbiBiZSBmb3VuZCBpbiA8YSBocmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9i
cm93c2VyL3dlYmtpdC90cnVuay9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAiPlNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcDwvYT4uPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+
SWYgeW91IGRldmVsb3AgYSBzaXRlIHRoYXQgaXMgZm91bmQgaW4gdGhhdCBsaXN0LCB3ZSA8ZW0+
c3Ryb25nbHk8L2VtPiBlbmNvdXJhZ2UgZGV2ZWxvcGluZyBhbmQgdGVzdGluZyB3aXRoIDxzdHJv
bmc+U2l0ZS1zcGVjaWZpYyBIYWNrczwvc3Ryb25nPiA8ZW0+ZGlzYWJsZWQ8L2VtPi48L2xpPgot
ICAgICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAgICAgPC9saT4KLSAgICAgICAgICAg
ICAgICA8bGk+PHN0cm9uZz5Dcm9zcy1PcmlnaW4gUmVzdHJpY3Rpb25zPC9zdHJvbmc+IGNvbnRy
b2xzIHdoZXRoZXIgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMv
ZG9jcy9XZWIvSFRUUC9DT1JTIj5DT1JTPC9hPiBydWxlcy9yZXN0cmljdGlvbnMgYXJlIGFjdGl2
ZSBmb3IgYW55IDxlbT5mdXR1cmU8L2VtPiBuZXR3b3JrIHJlcXVlc3RzLjwvbGk+Ci0gICAgICAg
ICAgICAgICAgPC91bD4KLSAgICAgICAgICAgICAgICA8aDIgaWQ9IldlYlJUQyI+V2ViUlRDIFRv
Z2dsZXM8L2gyPgotICAgICAgICAgICAgICAgIDxwPlRoZXNlIHRvZ2dsZXMgZm9jdXMgc3BlY2lm
aWNhbGx5IG9uIGZ1bmN0aW9uYWxpdHkgcmVsYXRlZCB0byA8YSBocmVmPSJodHRwczovL3dlYnJ0
Yy5vcmcvIj5XZWJSVEM8L2E+LjwvcD4KLSAgICAgICAgICAgICAgICA8dWw+Ci0gICAgICAgICAg
ICAgICAgPGxpPjxzdHJvbmc+QWxsb3cgTWVkaWEgQ2FwdHVyZSBvbiBJbnNlY3VyZSBTaXRlczwv
c3Ryb25nPiB3aWxsIGFsbG93IDxhIGhyZWY9Imh0dHBzOi8vd2Via2l0Lm9yZy9ibG9nLzc3MjYv
YW5ub3VuY2luZy13ZWJydGMtYW5kLW1lZGlhLWNhcHR1cmUvIj5XZWJSVEMgbWVkaWEgY2FwdHVy
ZTwvYT4gdG8gYmUgdXNlZC90ZXN0ZWQgb24gaW5zZWN1cmUgKGUuZy4gbm9uLWh0dHBzKSBwYWdl
cyBmb3IgYW55IDxlbT5mdXR1cmU8L2VtPiBjYWxscyBvZiA8Y29kZT5nZXRVc2VyTWVkaWE8L2Nv
ZGU+LjwvbGk+Ci0gICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+RGlzYWJsZSBJQ0UgQ2FuZGlk
YXRlIFJlc3RyaWN0aW9uczwvc3Ryb25nPiB3aWxsIHByZXZlbnQgPGEgaHJlZj0iaHR0cHM6Ly93
ZWJraXQub3JnL2Jsb2cvNzc2My9hLWNsb3Nlci1sb29rLWludG8td2VicnRjLyI+aG9zdCBJQ0Ug
Y2FuZGlkYXRlcyBmcm9tIGJlaW5nIGZpbHRlcmVkPC9hPiBmb3IgPGVtPm5ldzwvZW0+IGNvbm5l
Y3Rpb24gYXR0ZW1wdHMuPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5Vc2UgTW9j
ayBDYXB0dXJlIERldmljZXM8L3N0cm9uZz4gd2lsbCByZXBsYWNlIGFsbCA8YSBocmVmPSJodHRw
czovL3dlYmtpdC5vcmcvYmxvZy83NzI2L2Fubm91bmNpbmctd2VicnRjLWFuZC1tZWRpYS1jYXB0
dXJlLyI+Y2FwdHVyZSBkZXZpY2VzPC9hPiB3aXRoIGEgbW9jayAmIzgyMjA7QmlwLUJvcCYjODIy
MTsgZGV2aWNlIGZvciBhbnkgPGVtPmZ1dHVyZTwvZW0+IGNhbGxzIG9mIDxjb2RlPmdldFVzZXJN
ZWRpYTwvY29kZT4uPGJyIC8+Ci0gICAgICAgICAgICAgICAgPGZpZ3VyZSBzdHlsZT0ibWFyZ2lu
OiAwLjVlbSI+PGltZyBjbGFzcz0icHJlc2VydmUtY29sb3Igd3AtaW1hZ2UtOTQ1OSIgc3JjPSJo
dHRwczovL3dlYmtpdC5vcmcvd3AtY29udGVudC91cGxvYWRzL01vY2tfQ2FwdHVyZV9EZXZpY2Uu
cG5nIiB0aXRsZT0iTW9jayBDYXB0dXJlIERldmljZSIgc3Jjc2V0PSJodHRwczovL3dlYmtpdC5v
cmcvd3AtY29udGVudC91cGxvYWRzL01vY2tfQ2FwdHVyZV9EZXZpY2UucG5nIDI1ODB3LCBodHRw
czovL3dlYmtpdC5vcmcvd3AtY29udGVudC91cGxvYWRzL01vY2tfQ2FwdHVyZV9EZXZpY2UtMzAw
eDExMy5wbmcgMzAwdywgaHR0cHM6Ly93ZWJraXQub3JnL3dwLWNvbnRlbnQvdXBsb2Fkcy9Nb2Nr
X0NhcHR1cmVfRGV2aWNlLTc2OHgyOTAucG5nIDc2OHcsIGh0dHBzOi8vd2Via2l0Lm9yZy93cC1j
b250ZW50L3VwbG9hZHMvTW9ja19DYXB0dXJlX0RldmljZS0xMDI0eDM4Ny5wbmcgMTAyNHciIHNp
emVzPSIobWF4LXdpZHRoOiAyNTgwcHgpIDEwMHZ3LCAyNTgwcHgiIC8+PC9maWd1cmU+Ci0gICAg
ICAgICAgICAgICAgPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5EaXNhYmxlIEVu
Y3J5cHRpb248L3N0cm9uZz4gd2lsbCBjYXVzZSA8ZW0+ZnV0dXJlPC9lbT4gY29ubmVjdGlvbnMg
dG8gYmUgZXN0YWJsaXNoZWQgYW5kIDxlbT5mdXR1cmU8L2VtPiBzdHJlYW1zIChmcm9tIHRob3Nl
IGNvbm5lY3Rpb25zKSB0byBiZSB0cmFuc21pdHRlZCA8ZW0+d2l0aG91dDwvZW0+IGFueSBmb3Jt
IG9mIGVuY3J5cHRpb24uPC9saT4KLSAgICAgICAgICAgICAgICA8L3VsPgotICAgICAgICAgICAg
ICAgIDxoMj5GZWVkYmFjazwvaDI+Ci0gICAgICAgICAgICAgICAgPHA+WW91IGNhbiB0cnkgb3V0
IGNoYW5naW5nIGRldmljZSBzZXR0aW5ncyB3aXRoIGlPUyAxMi4yIG9yIGxhdGVyLiBMZXQgdXMg
a25vdyBob3cgaXQgd29ya3MgZm9yIHlvdS4gU2VuZCBmZWVkYmFjayBvbiBUd2l0dGVyICg8YSBo
cmVmPSJodHRwczovL3R3aXR0ZXIuY29tL3dlYmtpdCI+QHdlYmtpdDwvYT4sIDxhIGhyZWY9Imh0
dHBzOi8vdHdpdHRlci5jb20vZGNyb3Vzc28iPkBkY3JvdXNzbzwvYT4pIG9yIGJ5IDxhIGhyZWY9
Imh0dHBzOi8vZmVlZGJhY2thc3Npc3RhbnQuYXBwbGUuY29tLyI+ZmlsaW5nIGEgYnVnPC9hPi48
L3A+Ci0gICAgICAgICAgICAgICAgXV0+Ci0gICAgICAgICAgICA8L2NvbnRlbnQ6ZW5jb2RlZD4K
LSAgICAgICAgPC9pdGVtPgotICAgICAgICA8aXRlbT4KLSAgICAgICAgICAgIDx0aXRsZT5SZWxl
YXNlIE5vdGVzIGZvciBTYWZhcmkgVGVjaG5vbG9neSBQcmV2aWV3IDg4PC90aXRsZT4KLSAgICAg
ICAgICAgIDxsaW5rPmh0dHBzOi8vd2Via2l0Lm9yZy9ibG9nLzk0NDUvcmVsZWFzZS1ub3Rlcy1m
b3Itc2FmYXJpLXRlY2hub2xvZ3ktcHJldmlldy04OC88L2xpbms+Ci0gICAgICAgICAgICA8cHVi
RGF0ZT5XZWQsIDI0IEp1bCAyMDE5IDE3OjAwOjU5ICswMDAwPC9wdWJEYXRlPgotICAgICAgICAg
ICAgPGRjOmNyZWF0b3I+Ci0gICAgICAgICAgICAgICAgPCFbQ0RBVEFbXV0+Ci0gICAgICAgICAg
ICA8L2RjOmNyZWF0b3I+Ci0gICAgICAgICAgICA8Y2F0ZWdvcnk+Ci0gICAgICAgICAgICAgICAg
PCFbQ0RBVEFbU2FmYXJpIFRlY2hub2xvZ3kgUHJldmlld11dPgotICAgICAgICAgICAgPC9jYXRl
Z29yeT4KLQotICAgICAgICAgICAgPGd1aWQgaXNQZXJtYUxpbms9ImZhbHNlIj5odHRwczovL3dl
YmtpdC5vcmcvP3A9OTQ0NTwvZ3VpZD4KLSAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4KLSAgICAg
ICAgICAgICAgICA8IVtDREFUQVtTYWZhcmkgVGVjaG5vbG9neSBQcmV2aWV3IFJlbGVhc2UgODgg
aXMgbm93IGF2YWlsYWJsZSBmb3IgZG93bmxvYWQgZm9yIG1hY09TIE1vamF2ZSBhbmQgdGhlIG1h
Y09TIENhdGFsaW5hIGJldGEuXV0+Ci0gICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPgotICAgICAg
ICAgICAgPGNvbnRlbnQ6ZW5jb2RlZD4KLSAgICAgICAgICAgICAgICA8IVtDREFUQVs8cD48YSBo
cmVmPSJodHRwczovL3dlYmtpdC5vcmcvYmxvZy82MDE3L2ludHJvZHVjaW5nLXNhZmFyaS10ZWNo
bm9sb2d5LXByZXZpZXcvIj5TYWZhcmkgVGVjaG5vbG9neSBQcmV2aWV3PC9hPiBSZWxlYXNlIDg4
IGlzIG5vdyA8YSBocmVmPSJodHRwczovL3dlYmtpdC5vcmcvZG93bmxvYWRzLyI+YXZhaWxhYmxl
IGZvciBkb3dubG9hZDwvYT4gZm9yIG1hY09TIE1vamF2ZSBhbmQgdGhlIG1hY09TIENhdGFsaW5h
IGJldGEuIElmIHlvdSBhbHJlYWR5IGhhdmUgU2FmYXJpIFRlY2hub2xvZ3kgUHJldmlldyBpbnN0
YWxsZWQsIHlvdSBjYW4gdXBkYXRlIGluIHRoZSBTb2Z0d2FyZSBVcGRhdGUgcGFuZSBvZiBTeXN0
ZW0gUHJlZmVyZW5jZXMgb24gbWFjT1MuPC9wPgotICAgICAgICAgICAgICAgIDxwPlRoaXMgcmVs
ZWFzZSBjb3ZlcnMgV2ViS2l0IHJldmlzaW9ucyA8YSBocmVmPSJodHRwczovL3RyYWMud2Via2l0
Lm9yZy9sb2c/c3RvcF9yZXY9MjQ3MDQ3JmFtcDsmYW1wO3Jldj0yNDc0MzMmYW1wO2xpbWl0PTk5
OSI+MjQ3MDQ3LTI0NzQzMzwvYT4uPC9wPgotICAgICAgICAgICAgICAgIDxoMz5KYXZhU2NyaXB0
PC9oMz4KLSAgICAgICAgICAgICAgICA8dWw+Ci0gICAgICAgICAgICAgICAgPGxpPkVuYWJsZWQg
PGNvZGU+SW50bC5QbHVyYWxSdWxlczwvY29kZT4gYW5kIDxjb2RlPkludGwuTnVtYmVyRm9ybWF0
VG9QYXJ0czwvY29kZT4gYnkgZGVmYXVsdCAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzI0NzI0Ny93ZWJraXQvIj5yMjQ3MjQ3PC9hPik8L2xpPgotICAgICAgICAg
ICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAgICAgPGgzPldlYlJUQzwvaDM+Ci0gICAgICAgICAg
ICAgICAgPHVsPgotICAgICAgICAgICAgICAgIDxsaT5SZWdpc3RlcmVkIGEgTWVkaWFTdHJlYW1U
cmFjayBhcyBtZWRpYSBwcm9kdWNlciBvbmx5IGlmIGl0IGlzIGEgY2FwdHVyZSB0cmFjayAoPGEg
aHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0NzIwOC93ZWJraXQvIj5y
MjQ3MjA4PC9hPiwgPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0
NzM4Mi93ZWJraXQvIj5yMjQ3MzgyPC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDwvdWw+Ci0g
ICAgICAgICAgICAgICAgPGgzPldlYiBBUEk8L2gzPgotICAgICAgICAgICAgICAgIDx1bD4KLSAg
ICAgICAgICAgICAgICA8bGk+Rml4ZWQgWEhSIENPUlMgcmVxdWVzdHMgZ2V0dGluZyBsb2dnZWQg
dHdpY2Ugb24gdGhlIHNlcnZlciAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzI0NzI3Ni93ZWJraXQvIj5yMjQ3Mjc2PC9hPik8L2xpPgotICAgICAgICAgICAgICAg
IDwvdWw+Ci0gICAgICAgICAgICAgICAgPGgzPlBvaW50ZXIgRXZlbnRzPC9oMz4KLSAgICAgICAg
ICAgICAgICA8dWw+Ci0gICAgICAgICAgICAgICAgPGxpPlVwZGF0ZWQgdG8gcmVzcGVjdCBwb2lu
dGVyIGNhcHR1cmUgd2hlbiBkaXNwYXRjaGluZyBtb3VzZSBib3VuZGFyeSBldmVudHMgYW5kIHVw
ZGF0aW5nIDxjb2RlPjpob3ZlcjwvY29kZT4gKDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC8yNDcxNDgvd2Via2l0LyI+cjI0NzE0ODwvYT4pPC9saT4KLSAgICAgICAg
ICAgICAgICA8L3VsPgotICAgICAgICAgICAgICAgIDxoMz5SZW5kZXJpbmc8L2gzPgotICAgICAg
ICAgICAgICAgIDx1bD4KLSAgICAgICAgICAgICAgICA8bGk+Q2hhbmdlZCB0byBhdm9pZCBleHRy
YSBiYWNraW5nIHN0b3JlIG9uIGVsZW1lbnRzIHdpdGggPGNvZGU+b3ZlcmZsb3c6IHNjcm9sbDwv
Y29kZT4gYW5kIDxjb2RlPnZpc2liaWxpdHk6IGhpZGRlbjwvY29kZT4gKDxhIGhyZWY9Imh0dHBz
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDc0MjAvd2Via2l0LyI+cjI0NzQyMDwvYT4p
PC9saT4KLSAgICAgICAgICAgICAgICA8bGk+Q2hhbmdlZCB0byB0cmlnZ2VyIGEgY29tcG9zaXRp
bmcgdXBkYXRlIHdoZW4gYSB2aWRlbyBlbGVtZW50IGlzIGNoYW5naW5nICg8YSBocmVmPSJodHRw
czovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ3MTg3L3dlYmtpdC8iPnIyNDcxODc8L2E+
KTwvbGk+Ci0gICAgICAgICAgICAgICAgPC91bD4KLSAgICAgICAgICAgICAgICA8aDM+QWNjZXNz
aWJpbGl0eTwvaDM+Ci0gICAgICAgICAgICAgICAgPHVsPgotICAgICAgICAgICAgICAgIDxsaT5B
ZGRlZCBhY2Nlc3NpYmlsaXR5IGFubm91bmNlbWVudCBub3RpZmljYXRpb25zIHRvIHNob3csIGRp
c21pc3MgYW5kIHNlbGVjdGlvbiBjaGFuZ2UgZm9yIHRoZSBkYXRhbGlzdCBzdWdnZXN0aW9ucyB2
aWV3ICg8YSBocmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ3NDE4L3dl
YmtpdC8iPnIyNDc0MTg8L2E+KTwvbGk+Ci0gICAgICAgICAgICAgICAgPGxpPkV4cG9zZWQgSFRN
TCBkYXRhbGlzdCBhY2Nlc3NpYmlsaXR5ICg8YSBocmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMjQ3Mjk1L3dlYmtpdC8iPnIyNDcyOTU8L2E+KTwvbGk+Ci0gICAgICAgICAg
ICAgICAgPGxpPkVuaGFuY2VkIHN1cHBvcnQgb2YgPGNvZGU+YXJpYS1oYXNwb3B1cDwvY29kZT4g
cGVyIEFSSUEgMS4xIHNwZWNpZmljYXRpb24uICg8YSBocmVmPSJodHRwczovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvMjQ3MDcxL3dlYmtpdC8iPnIyNDcwNzE8L2E+KTwvbGk+Ci0gICAgICAg
ICAgICAgICAgPGxpPkltcGxlbWVudGVkIHN1cHBvcnQgZm9yIEFSSUEgcm9sZXM6IGluc2VydGlv
biwgZGVsZXRpb24sIHN1YnNjcmlwdCwgc3VwZXJzY3JpcHQsIGFuZCB0aW1lICg8YSBocmVmPSJo
dHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ3MzQ5L3dlYmtpdC8iPnIyNDczNDk8
L2E+KTwvbGk+Ci0gICAgICAgICAgICAgICAgPGxpPkZpeGVkIGlnbm9yZWQgPGNvZGU+cm9sZT0i
cHJlc2VudGF0aW9uIjwvY29kZT4gb24gSFRNTCA8Y29kZT4mbHQ7dGFibGUmZ3Q7PC9jb2RlPiBl
bGVtZW50cyBmb3IgVm9pY2VPdmVyICg8YSBocmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvMjQ3MzMwL3dlYmtpdC8iPnIyNDczMzA8L2E+KTwvbGk+Ci0gICAgICAgICAgICAg
ICAgPC91bD4KLSAgICAgICAgICAgICAgICA8aDM+V2ViR0w8L2gzPgotICAgICAgICAgICAgICAg
IDx1bD4KLSAgICAgICAgICAgICAgICA8bGk+SG9va2VkIHVwIFdlYkdMJiM4MjE3O3MgYmFjayBi
dWZmZXIgaW4gQU5HTEUgYmFja2VuZCBvbiBtYWNPUyAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LzI0NzMxNS93ZWJraXQvIj5yMjQ3MzE1PC9hPik8L2xpPgotICAg
ICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAgICAgPGgzPldlYkdQVTwvaDM+Ci0gICAg
ICAgICAgICAgICAgPHVsPgotICAgICAgICAgICAgICAgIDxsaT5BZGRlZCBtb3N0IG9mIHRoZSBy
ZW1haW5kZXIgb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkgKDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC8yNDcxNzQvd2Via2l0LyI+cjI0NzE3NDwvYT4pPC9saT4KLSAg
ICAgICAgICAgICAgICA8bGk+SW1wbGVtZW50ZWQgR1BVRXJyb3IgYW5kIGVycm9yIHNjb3BlcyAo
PGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0NzM2Ni93ZWJraXQv
Ij5yMjQ3MzY2PC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDxsaT5NYWRlIHRoZSBkZXN0cnVj
dG9yIG9mIFZhcmlhYmxlRGVjbGFyYXRpb24gbm9uLXZpcnR1YWwgKDxhIGhyZWY9Imh0dHBzOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDcxMjQvd2Via2l0LyI+cjI0NzEyNDwvYT4pPC9s
aT4KLSAgICAgICAgICAgICAgICA8bGk+T3B0aW1pemVkIHRoZSBsZXhlciAoPGEgaHJlZj0iaHR0
cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0NzE3MS93ZWJraXQvIj5yMjQ3MTcxPC9h
Pik8L2xpPgotICAgICAgICAgICAgICAgIDxsaT5SZW1vdmVkIHRoZSBwaGFzZSByZXNvbHZlQ2Fs
bHNJbkZ1bmN0aW9ucyAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzI0NzE3MC93ZWJraXQvIj5yMjQ3MTcwPC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDwvdWw+
Ci0gICAgICAgICAgICAgICAgPGgzPldlYiBJbnNwZWN0b3I8L2gzPgotICAgICAgICAgICAgICAg
IDx1bD4KLSAgICAgICAgICAgICAgICA8bGk+QWRkZWQgc3VwcG9ydCBmb3IgcGFzdGluZyBjb3Bp
ZWQgRE9NIG5vZGVzIGluIHRoZSBFbGVtZW50cyB0YWIgKDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC8yNDcwNTQvd2Via2l0LyI+cjI0NzA1NDwvYT4pPC9saT4KLSAg
ICAgICAgICAgICAgICA8bGk+Rml4ZWQgZGlzbWlzc2luZyBhIGJsYW5rIHByb3BlcnR5IHRvIG5v
IGxvbmdlciBjYXVzZSB0aGUgcnVsZSB0byBhcHBlYXIgaW4gdGhlIENoYW5nZXMgcGFuZWwgKDxh
IGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDc0MDYvd2Via2l0LyI+
cjI0NzQwNjwvYT4pPC9saT4KLSAgICAgICAgICAgICAgICA8bGk+Rml4ZWQgYW4gaXNzdWUgd2hl
cmUgdW5iYWxhbmNlZCBxdW90ZXMgb3IgcGFyZW50aGVzaXMgd2VyZW7igJl0IGRpc3BsYXllZCBh
cyBwcm9wZXJseSBjbG9zZWQgYWZ0ZXIgZWRpdGluZyB2YWx1ZXMgKDxhIGhyZWY9Imh0dHBzOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDcxOTYvd2Via2l0LyI+cjI0NzE5NjwvYT4pPC9s
aT4KLSAgICAgICAgICAgICAgICA8bGk+VXBkYXRlZCBkZXNjZW5kYW50IERPTSBicmVha3BvaW50
cyBiZSBlbmFibGVkLCBkaXNhYmxlZCwgb3IgZGVsZXRlZCBmcm9tIGEgY29sbGFwc2VkIHBhcmVu
dCAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0NzA1My93ZWJr
aXQvIj5yMjQ3MDUzPC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAg
ICAgICAgPGgzPkJ1ZyBGaXhlczwvaDM+Ci0gICAgICAgICAgICAgICAgPHVsPgotICAgICAgICAg
ICAgICAgIDxsaT5GaXhlZCBwYXN0ZSBmcm9tIE5vdGVzIGludG8gRXhjZWwgMzY1IHNwcmVhZHNo
ZWV0ICg8YSBocmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ3MjIyL3dl
YmtpdC8iPnIyNDcyMjI8L2E+KTwvbGk+Ci0gICAgICAgICAgICAgICAgPGxpPkZpeGVkIHZpZGVv
IHBsYXliYWNrIG9uIHhmaW5pdHkuY29tL3N0cmVhbSBvbiBtYWNPUyBDYXRhbGluYSAoPGEgaHJl
Zj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0NzIxMy93ZWJraXQvIj5yMjQ3
MjEzPC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAgICAgXV0+
Ci0gICAgICAgICAgICA8L2NvbnRlbnQ6ZW5jb2RlZD4KLSAgICAgICAgPC9pdGVtPgotICAgICAg
ICA8aXRlbT4KLSAgICAgICAgICAgIDx0aXRsZT5SZWxlYXNlIE5vdGVzIGZvciBTYWZhcmkgVGVj
aG5vbG9neSBQcmV2aWV3IDg3PC90aXRsZT4KLSAgICAgICAgICAgIDxsaW5rPmh0dHBzOi8vd2Vi
a2l0Lm9yZy9ibG9nLzk0MTQvcmVsZWFzZS1ub3Rlcy1mb3Itc2FmYXJpLXRlY2hub2xvZ3ktcHJl
dmlldy04Ny88L2xpbms+Ci0gICAgICAgICAgICA8cHViRGF0ZT5XZWQsIDEwIEp1bCAyMDE5IDE3
OjAwOjUxICswMDAwPC9wdWJEYXRlPgotICAgICAgICAgICAgPGRjOmNyZWF0b3I+Ci0gICAgICAg
ICAgICAgICAgPCFbQ0RBVEFbXV0+Ci0gICAgICAgICAgICA8L2RjOmNyZWF0b3I+Ci0gICAgICAg
ICAgICA8Y2F0ZWdvcnk+Ci0gICAgICAgICAgICAgICAgPCFbQ0RBVEFbU2FmYXJpIFRlY2hub2xv
Z3kgUHJldmlld11dPgotICAgICAgICAgICAgPC9jYXRlZ29yeT4KLQotICAgICAgICAgICAgPGd1
aWQgaXNQZXJtYUxpbms9ImZhbHNlIj5odHRwczovL3dlYmtpdC5vcmcvP3A9OTQxNDwvZ3VpZD4K
LSAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4KLSAgICAgICAgICAgICAgICA8IVtDREFUQVtTYWZh
cmkgVGVjaG5vbG9neSBQcmV2aWV3IFJlbGVhc2UgODcgaXMgbm93IGF2YWlsYWJsZSBmb3IgZG93
bmxvYWQgZm9yIG1hY09TIE1vamF2ZSBhbmQgdGhlIG1hY09TIENhdGFsaW5hIGJldGEuXV0+Ci0g
ICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPgotICAgICAgICAgICAgPGNvbnRlbnQ6ZW5jb2RlZD4K
LSAgICAgICAgICAgICAgICA8IVtDREFUQVs8cD48YSBocmVmPSJodHRwczovL3dlYmtpdC5vcmcv
YmxvZy82MDE3L2ludHJvZHVjaW5nLXNhZmFyaS10ZWNobm9sb2d5LXByZXZpZXcvIj5TYWZhcmkg
VGVjaG5vbG9neSBQcmV2aWV3PC9hPiBSZWxlYXNlIDg3IGlzIG5vdyA8YSBocmVmPSJodHRwczov
L3dlYmtpdC5vcmcvZG93bmxvYWRzLyI+YXZhaWxhYmxlIGZvciBkb3dubG9hZDwvYT4gZm9yIG1h
Y09TIE1vamF2ZSBhbmQgdGhlIG1hY09TIENhdGFsaW5hIGJldGEuIElmIHlvdSBhbHJlYWR5IGhh
dmUgU2FmYXJpIFRlY2hub2xvZ3kgUHJldmlldyBpbnN0YWxsZWQsIHlvdSBjYW4gdXBkYXRlIGlu
IHRoZSBTb2Z0d2FyZSBVcGRhdGUgcGFuZSBvZiBTeXN0ZW0gUHJlZmVyZW5jZXMgb24gbWFjT1Mu
PC9wPgotICAgICAgICAgICAgICAgIDxwPlRoaXMgcmVsZWFzZSBjb3ZlcnMgV2ViS2l0IHJldmlz
aW9ucyA8YSBocmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9sb2c/c3RvcF9yZXY9MjQ2Njkx
JmFtcDsmYW1wO3Jldj0yNDcwNDcmYW1wO2xpbWl0PTk5OSI+MjQ2NjkxLTI0NzA0NzwvYT4uPC9w
PgotICAgICAgICAgICAgICAgIDxoMz5XZWIgQVBJPC9oMz4KLSAgICAgICAgICAgICAgICA8dWw+
Ci0gICAgICAgICAgICAgICAgPGxpPkNoYW5nZWQgPGNvZGU+b3BlbkRhdGFiYXNlPC9jb2RlPiB0
byByZXR1cm4gYW4gZW1wdHkgb2JqZWN0IHdoZW4gV2ViU1FMIGlzIGRpc2FibGVkICg8YSBocmVm
PSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ2NzA3L3dlYmtpdC8iPnIyNDY3
MDc8L2E+KTwvbGk+Ci0gICAgICAgICAgICAgICAgPGxpPkFkZGVkIGFuIGV4cGVyaW1lbnRhbCBi
ZWhhdmlvciB0byBwcmV2ZW50IGEgNSBzZWNvbmQgZGVsYXkgZm9yIGluaXRpYWwgcGFpbnQgb24g
cGFnZXMgdGhhdCBhcmUgdXNpbmcgR29vZ2xlJiM4MjE3O3MgYW50aS1mbGlja2VyIG9wdGltaXph
dGlvbiB3aGVuIGNvbnRlbnQgYmxvY2tlcnMgYXJlIGVuYWJsZWQgKDxhIGhyZWY9Imh0dHBzOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDY3NjQvd2Via2l0LyI+cjI0Njc2NDwvYT4pPC9s
aT4KLSAgICAgICAgICAgICAgICA8L3VsPgotICAgICAgICAgICAgICAgIDxoMz5XZWIgU29ja2V0
czwvaDM+Ci0gICAgICAgICAgICAgICAgPHVsPgotICAgICAgICAgICAgICAgIDxsaT5BZGRlZCBz
dXBwb3J0IGZvciBzZW5kaW5nIGJsb2IgbWVzc2FnZXMgd2hlbiB1c2luZyB3ZWIgc29ja2V0cyBw
bGF0Zm9ybSBBUElzICg8YSBocmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQv
MjQ2OTY0L3dlYmtpdC8iPnIyNDY5NjQ8L2E+KTwvbGk+Ci0gICAgICAgICAgICAgICAgPC91bD4K
LSAgICAgICAgICAgICAgICA8aDM+UGF5bWVudCBSZXF1ZXN0PC9oMz4KLSAgICAgICAgICAgICAg
ICA8dWw+Ci0gICAgICAgICAgICAgICAgPGxpPkNoYW5nZWQgdG8gc2V0IHN0YXRlIHRvIENsb3Nl
ZCB3aGVuIDxjb2RlPnNob3coKTwvY29kZT4gaXMgY2FsbGVkIGR1cmluZyBhbiBhY3RpdmUgc2Vz
c2lvbiAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0Njg2My93
ZWJraXQvIj5yMjQ2ODYzPC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAg
ICAgICAgICAgPGgzPkV4cGVyaW1lbnRhbCBXZWIgU2hhZGluZyBMYW5ndWFnZSAoV0hMU0wpPC9o
Mz4KLSAgICAgICAgICAgICAgICA8dWw+Ci0gICAgICAgICAgICAgICAgPGxpPkltcGxlbWVudGVk
IGFycmF5cyAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0Njg3
NS93ZWJraXQvIj5yMjQ2ODc1PC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDwvdWw+Ci0gICAg
ICAgICAgICAgICAgPGgzPlJlbmRlcmluZzwvaDM+Ci0gICAgICAgICAgICAgICAgPHVsPgotICAg
ICAgICAgICAgICAgIDxsaT5GaXhlZCBpbmNvcnJlY3QgY2xpcHBpbmcgd2l0aCA8Y29kZT5vdmVy
Zmxvdzogc2Nyb2xsPC9jb2RlPiBpbnNpZGUgPGNvZGU+b3ZlcmZsb3c6IGhpZGRlbjwvY29kZT4g
d2l0aCA8Y29kZT5ib3JkZXItcmFkaXVzPC9jb2RlPiAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LzI0Njg0NS93ZWJraXQvIj5yMjQ2ODQ1PC9hPik8L2xpPgotICAg
ICAgICAgICAgICAgIDxsaT5GaXhlZCB0aGUgcHJldmlldyBvZiBhIDxjb2RlPiZsdDtwaWN0dXJl
Jmd0OzwvY29kZT4gZWxlbWVudCB0byBtYXRjaCB0aGUgZWxlbWVudCBib3VuZHMgKDxhIGhyZWY9
Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDY2OTUvd2Via2l0LyI+cjI0NjY5
NTwvYT4pPC9saT4KLSAgICAgICAgICAgICAgICA8L3VsPgotICAgICAgICAgICAgICAgIDxoMz5X
ZWJHUFU8L2gzPgotICAgICAgICAgICAgICAgIDx1bD4KLSAgICAgICAgICAgICAgICA8bGk+TWFk
ZSBXZWJHUFUgZW5hYmxlZCBvbmx5IG9uIE1vamF2ZSBhbmQgbGF0ZXIgKDxhIGhyZWY9Imh0dHBz
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDY4ODgvd2Via2l0LyI+cjI0Njg4ODwvYT4p
PC9saT4KLSAgICAgICAgICAgICAgICA8L3VsPgotICAgICAgICAgICAgICAgIDxoMz5XZWIgSW5z
cGVjdG9yPC9oMz4KLSAgICAgICAgICAgICAgICA8dWw+Ci0gICAgICAgICAgICAgICAgPGxpPklt
cGxlbWVudGVkIDxjb2RlPmNvbnNvbGUuY291bnRSZXNldDwvY29kZT4gKDxhIGhyZWY9Imh0dHBz
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDY4NTAvd2Via2l0LyI+cjI0Njg1MDwvYT4p
PC9saT4KLSAgICAgICAgICAgICAgICA8bGk+SW1wbGVtZW50ZWQgPGNvZGU+Y29uc29sZS50aW1l
TG9nPC9jb2RlPiAoPGEgaHJlZj0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0
Njc5OC93ZWJraXQvIj5yMjQ2Nzk4PC9hPik8L2xpPgotICAgICAgICAgICAgICAgIDxsaT5BZGRl
ZCBhZGRpdGlvbmFsIGRlbW8gYXVkaXRzIGZvciBvdGhlciA8Y29kZT5XZWJJbnNwZWN0b3JBdWRp
dDwvY29kZT4gZnVuY3Rpb25zICg8YSBocmVmPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMjQ3MDQyL3dlYmtpdC8iPnIyNDcwNDI8L2E+KTwvbGk+Ci0gICAgICAgICAgICAgICAg
PGxpPkVuYWJsZSB0aGUgU2hvdyBTaGFkb3cgRE9NIG5hdmlnYXRpb24gaXRlbSBieSBkZWZhdWx0
IGluIHRoZSBFbGVtZW50cyB0YWIgKDxhIGhyZWY9Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC8yNDY4MjEvd2Via2l0LyI+cjI0NjgyMTwvYT4pPC9saT4KLSAgICAgICAgICAgICAg
ICA8L3VsPgotICAgICAgICAgICAgICAgIDxoMz5Lbm93biBJc3N1ZXM8L2gzPgotICAgICAgICAg
ICAgICAgIDx1bD4KLSAgICAgICAgICAgICAgICA8bGk+T3BlbiB0YWJzIGFyZSBibGFuayBvbiBp
bml0aWFsIGxhdW5jaCBhZnRlciB1cGdyYWRpbmcgdG8gU2FmYXJpIFRlY2hub2xvZ3kgUHJldmll
dyA4NyBhbmQgbG9hZGluZyBhbGwgdGFicyBmcm9tIHRoZSBsYXN0IHNlc3Npb24uIFRvIGNvcnJl
Y3QgdGhpcyBiZWhhdmlvciwgcmVsb2FkIG9wZW4gdGFicyBvciByZWxhdW5jaCBTYWZhcmkgVGVj
aG5vbG9neSBQcmV2aWV3LjwvbGk+Ci0gICAgICAgICAgICAgICAgPC91bD4KLSAgICAgICAgICAg
ICAgICBdXT4KLSAgICAgICAgICAgIDwvY29udGVudDplbmNvZGVkPgotICAgICAgICA8L2l0ZW0+
Ci0gICAgICAgIDxpdGVtPgotICAgICAgICAgICAgPHRpdGxlPldlYkRyaXZlciBpcyBDb21pbmcg
dG8gU2FmYXJpIGluIGlPUyAxMzwvdGl0bGU+Ci0gICAgICAgICAgICA8bGluaz5odHRwczovL3dl
YmtpdC5vcmcvYmxvZy85Mzk1L3dlYmRyaXZlci1pcy1jb21pbmctdG8tc2FmYXJpLWluLWlvcy0x
My88L2xpbms+Ci0gICAgICAgICAgICA8cHViRGF0ZT5Nb24sIDA4IEp1bCAyMDE5IDE3OjAwOjU4
ICswMDAwPC9wdWJEYXRlPgotICAgICAgICAgICAgPGRjOmNyZWF0b3I+Ci0gICAgICAgICAgICAg
ICAgPCFbQ0RBVEFbXV0+Ci0gICAgICAgICAgICA8L2RjOmNyZWF0b3I+Ci0gICAgICAgICAgICA8
Y2F0ZWdvcnk+Ci0gICAgICAgICAgICAgICAgPCFbQ0RBVEFbV2ViIEluc3BlY3Rvcl1dPgotICAg
ICAgICAgICAgPC9jYXRlZ29yeT4KLQotICAgICAgICAgICAgPGd1aWQgaXNQZXJtYUxpbms9ImZh
bHNlIj5odHRwczovL3dlYmtpdC5vcmcvP3A9OTM5NTwvZ3VpZD4KLSAgICAgICAgICAgIDxkZXNj
cmlwdGlvbj4KLSAgICAgICAgICAgICAgICA8IVtDREFUQVtBcyBhbnlvbmUgd2hvIGhhcyBkZXZl
bG9wZWQgYSBtb2JpbGUtZnJpZW5kbHkgc2l0ZSBjYW4gdGVsbCB5b3UsIG1vYmlsZSBicm93c2Vy
cyBhbmQgZGVza3RvcCBicm93c2VycyBhcmUgZGlmZmVyZW50Ll1dPgotICAgICAgICAgICAgPC9k
ZXNjcmlwdGlvbj4KLSAgICAgICAgICAgIDxjb250ZW50OmVuY29kZWQ+Ci0gICAgICAgICAgICAg
ICAgPCFbQ0RBVEFbPHA+QXMgYW55b25lIHdobyBoYXMgZGV2ZWxvcGVkIGEgbW9iaWxlLWZyaWVu
ZGx5IHNpdGUgY2FuIHRlbGwgeW91LCBtb2JpbGUgYnJvd3NlcnMgYW5kIGRlc2t0b3AgYnJvd3Nl
cnMgYXJlIGRpZmZlcmVudC4gQXMgZGV2aWNlIGNhcGFiaWxpdGllcyBjb250aW51ZSB0byBldm9s
dmUgYW5kIHVzZXJzIG1vdmUgbW9yZSBvZiB0aGVpciBicm93c2luZyB0byBtb2JpbGUgYnJvd3Nl
cnMsIHdlYiBkZXZlbG9wZXJzIGFyZSBmYWNpbmcgYW4gaW5jcmVhc2luZyBuZWVkIHRvIHdyaXRl
IGF1dG9tYXRlZCB0ZXN0cyBmb3IgdGhlIG1vYmlsZSB3ZWIgaW4gdGhlIHNhbWUgd2F5IHRoYXQg
ZGVza3RvcC1vcmllbnRlZCBzaXRlIGNvbnRlbnQgaXMgdGVzdGVkLjwvcD4KLSAgICAgICAgICAg
ICAgICA8cD5TdGFydGluZyBpbiBpT1MgMTMsIFNhZmFyaSBub3cgaW5jbHVkZXMgbmF0aXZlIHN1
cHBvcnQgZm9yIHRoZSA8YSBocmVmPSJodHRwczovL3d3dy53My5vcmcvVFIvd2ViZHJpdmVyLyI+
VzNDIFdlYkRyaXZlcjwvYT4gc3RhbmRhcmQuIFRoaXMgZmVhdHVyZSBidWlsZHMgb24gZXhpc3Rp
bmcgc3VwcG9ydCBmb3IgV2ViRHJpdmVyIGluIGRlc2t0b3AgU2FmYXJpLCBmaXJzdCBpbnRyb2R1
Y2VkIGluIFNhZmFyaSAxMCBhbmQgbWFjT1MgU2llcnJhLiBUaGlzIGJsb2cgcG9zdCBleHBsYWlu
cyBob3cgdG8gZ2V0IHN0YXJ0ZWQgd2l0aCBXZWJEcml2ZXIgZm9yIGlPUywgaG93IHRvIHBvcnQg
eW91ciBleGlzdGluZyBkZXNrdG9wLW9yaWVudGVkIHRlc3RzLCBhbmQgYSBmZXcgZGV0YWlscyBy
ZWdhcmRpbmcgc2FmZWd1YXJkcyBhbmQgY2hhbmdlcyBpbiBiZWhhdmlvci48L3A+Ci0gICAgICAg
ICAgICAgICAgPGgyPkdldHRpbmcgU3RhcnRlZDwvaDI+Ci0gICAgICAgICAgICAgICAgPHA+Q29u
dHJvbCB2aWEgV2ViRHJpdmVyIGlzIGV4cG9zZWQgdG8gZGV2ZWxvcGVycyB2aWEgdGhlIDxjb2Rl
Pi91c3IvYmluL3NhZmFyaWRyaXZlcjwvY29kZT4gZXhlY3V0YWJsZSwgd2hpY2ggaG9zdHMgYSBk
cml2ZXIgdGhhdCBoYW5kbGVzIFJFU1QgQVBJIHJlcXVlc3RzIHNlbnQgYnkgV2ViRHJpdmVyIHRl
c3QgY2xpZW50cy4gSW4gb3JkZXIgdG8gcnVuIFdlYkRyaXZlciB0ZXN0cyBvbiBhbiBpT1MgZGV2
aWNlLCBpdCBtdXN0IGJlIHBsdWdnZWQgaW50byBhIG1hY09TIGhvc3QgdGhhdCBoYXMgYSBuZXcg
ZW5vdWdoIHZlcnNpb24gb2Ygc2FmYXJpZHJpdmVyLiBTdXBwb3J0IGZvciBob3N0aW5nIGlPUy1i
YXNlZCBXZWJEcml2ZXIgc2Vzc2lvbnMgaXMgYXZhaWxhYmxlIGluIHNhZmFyaWRyaXZlciBpbmNs
dWRlZCB3aXRoIFNhZmFyaSAxMyBhbmQgbGF0ZXIuIE9sZGVyIHZlcnNpb25zIG9mIHNhZmFyaWRy
aXZlciBkbyBub3Qgc3VwcG9ydCBpT1MgV2ViRHJpdmVyIHNlc3Npb25zLjwvcD4KLSAgICAgICAg
ICAgICAgICA8cD5JZiB5b3UmIzgyMTc7dmUgbmV2ZXIgdXNlZCBzYWZhcmlkcml2ZXIgb24gbWFj
T1MgYmVmb3JlLCB5b3UmIzgyMTc7bGwgZmlyc3QgbmVlZCB0byBydW4gPGNvZGU+c2FmYXJpZHJp
dmVyIC0tZW5hYmxlPC9jb2RlPiBhbmQgYXV0aGVudGljYXRlIGFzIGFuIGFkbWluaXN0cmF0b3Iu
IFRoZW4sIHlvdSBtdXN0IGVuYWJsZSBSZW1vdGUgQXV0b21hdGlvbiBvbiBldmVyeSBkZXZpY2Ug
dGhhdCB5b3UgaW50ZW5kIHRvIHVzZSBmb3IgV2ViRHJpdmVyLiBUbyBkbyB0aGlzLCB0b2dnbGUg
dGhlIHNldHRpbmcgaW4gU2V0dGluZ3Mg4oaSIFNhZmFyaSDihpIgQWR2YW5jZWQg4oaSIFJlbW90
ZSBBdXRvbWF0aW9uLjwvcD4KLSAgICAgICAgICAgICAgICA8ZmlndXJlIGNsYXNzPSJ3aWRlc2Ny
ZWVuIj48cGljdHVyZT48c291cmNlIHNyY3NldD0iaHR0cHM6Ly93ZWJraXQub3JnL3dwLWNvbnRl
bnQvdXBsb2Fkcy9JTUdfMDAxMC5wbmciIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRh
cmspIiAvPjxpbWcgY2xhc3M9IndwLWltYWdlLTkzOTYiIHNyYz0iaHR0cHM6Ly93ZWJraXQub3Jn
L3dwLWNvbnRlbnQvdXBsb2Fkcy9JTUdfMDAwOS5wbmciIGFsdD0iUmVtb3RlIEF1dG9tYXRpb24g
U2V0dGluZyBvbiBpT1MiIHNyY3NldD0iaHR0cHM6Ly93ZWJraXQub3JnL3dwLWNvbnRlbnQvdXBs
b2Fkcy9JTUdfMDAwOS5wbmcgMjczMncsIGh0dHBzOi8vd2Via2l0Lm9yZy93cC1jb250ZW50L3Vw
bG9hZHMvSU1HXzAwMDktMzAweDIyNS5wbmcgMzAwdywgaHR0cHM6Ly93ZWJraXQub3JnL3dwLWNv
bnRlbnQvdXBsb2Fkcy9JTUdfMDAwOS03Njh4NTc2LnBuZyA3Njh3LCBodHRwczovL3dlYmtpdC5v
cmcvd3AtY29udGVudC91cGxvYWRzL0lNR18wMDA5LTEwMjR4NzY4LnBuZyAxMDI0dyIgc2l6ZXM9
IihtYXgtd2lkdGg6IDI3MzJweCkgMTAwdncsIDI3MzJweCIgLz48L3BpY3R1cmU+PC9maWd1cmU+
Ci0gICAgICAgICAgICAgICAgPHA+TGFzdGx5LCB0byBydW4gdGVzdHMgb24gdGhlIGRldmljZSwg
eW91JiM4MjE3O2xsIG5lZWQgdG8gcGx1ZyBpdCBpbnRvIHRoZSBtYWNPUyBtYWNoaW5lLCA8YSBo
cmVmPSJodHRwczovL3N1cHBvcnQuYXBwbGUuY29tL2VuLXVzL0hUMjAyNzc4Ij50cnVzdCB0aGUg
aG9zdDwvYT4sIGFuZCBlbnN1cmUgdGhhdCBpdCBpcyB1bmxvY2tlZCB3aGVuIHlvdSB0cnkgdG8g
c3RhcnQgdGhlIFdlYkRyaXZlciBzZXNzaW9uLjwvcD4KLSAgICAgICAgICAgICAgICA8cD5TaW5j
ZSBzYWZhcmlkcml2ZXIgaXMgY2FwYWJsZSBvZiBzdGFydGluZyBXZWJEcml2ZXIgc2Vzc2lvbnMg
dXNpbmcgU2FmYXJpIG9uIHRoZSBtYWNPUyBob3N0IG9yIFNhZmFyaSBvbiBhbiBhdHRhY2hlZCBp
T1MgZGV2aWNlLCBpdCBuZWVkcyBhIGxpdHRsZSBleHRyYSBoaW50IHRvIGtub3cgdGhhdCB5b3Ug
d2FudCB0byB1c2UgYSBkZXZpY2Ugb3IgYSBkZXNrdG9wIG1hY2hpbmUuIFRvIGZhY2lsaXRhdGUg
dGhpcywgc2FmYXJpZHJpdmVyIHN1cHBvcnRzIG1hbnkgbmV3IGNhcGFiaWxpdGllcyB0aGF0IG1h
eSBiZSBwcm92aWRlZCB3aXRoIGEgbmV3IHNlc3Npb24gcmVxdWVzdC4gVGhlIG1vc3QgaW1wb3J0
YW50IG5ldyBjYXBhYmlsaXR5IHRvIHVzZSBpcyA8c3Ryb25nPiYjODIxNjtwbGF0Zm9ybU5hbWUm
IzgyMTc7OiAmIzgyMTY7aW9zJiM4MjE3Ozs8L3N0cm9uZz4gdGhpcyB0ZWxscyB0aGUgZHJpdmVy
IHlvdSB3YW50IGFuIGlPUyBob3N0IGluc3RlYWQgb2YgYSBtYWNPUyBob3N0LiBZb3UgY2FuIGFs
c28gc3BlY2lmeSB0aGUgaG9zdChzKSB5b3Ugd2lzaCB0byB1c2UgYnkgc3BlY2lmeWluZyBkZXZp
Y2UgdHlwZSwgZGV2aWNlIFVESUQsIGRldmljZSBuYW1lLCBPUyB2ZXJzaW9uLCBPUyBidWlsZCwg
YW5kIGJyb3dzZXIgdmVyc2lvbiB2aWEgc3RhbmRhcmRpemVkIGFuZCBleHRlbnNpb24gY2FwYWJp
bGl0aWVzLiBMYXN0bHksIHNhZmFyaWRyaXZlciBzdXBwb3J0cyBydW5uaW5nIFdlYkRyaXZlciB0
ZXN0cyBvbiBpT1MgU2ltdWxhdG9yIGRldmljZXMgd2hvc2UgcnVudGltZSBpcyBpT1MgMTMgb3Ig
bGF0ZXIuIFRvIHVzZSBhIHNpbXVsYXRvciBmb3IgdGVzdGluZywgYWRkIHRoZSBjYXBhYmlsaXR5
IDxzdHJvbmc+JiM4MjE2O3NhZmFyaTp1c2VTaW11bGF0b3ImIzgyMTc7OiB0cnVlPC9zdHJvbmc+
LiBGb3IgYSBmdWxsIGxpc3Qgb2Ygc3VwcG9ydGVkIGNhcGFiaWxpdGllcyBhbmQgdGhlaXIgc2Vt
YW50aWNzLCBwbGVhc2UgY29uc3VsdCB0aGUgc2FmYXJpZHJpdmVyKDEpIG1hbiBwYWdlIGJ5IGV4
ZWN1dGluZyA8Y29kZT5tYW4gc2FmYXJpZHJpdmVyLjwvY29kZT48L3A+Ci0gICAgICAgICAgICAg
ICAgPGgyPlNhZmVndWFyZHM8L2gyPgotICAgICAgICAgICAgICAgIDxwPldoaWxlIGl04oCZcyBh
d2Vzb21lIHRvIGJlIGFibGUgdG8gd3JpdGUgYXV0b21hdGVkIHRlc3RzIHRoYXQgcnVuIGluIFNh
ZmFyaSwgYSBSRVNUIEFQSSBmb3IgYnJvd3NlciBhdXRvbWF0aW9uIGludHJvZHVjZXMgYSBwb3Rl
bnRpYWwgdmVjdG9yIGZvciBtYWxpY2lvdXMgc29mdHdhcmUuIFRvIHN1cHBvcnQgYSB2YWx1YWJs
ZSBhdXRvbWF0aW9uIEFQSSB3aXRob3V0IHNhY3JpZmljaW5nIGEgdXNlcuKAmXMgcHJpdmFjeSBv
ciBzZWN1cml0eSwgU2FmYXJp4oCZcyBkcml2ZXIgaW1wbGVtZW50YXRpb24gaW50cm9kdWNlcyBl
eHRyYSBzYWZlZ3VhcmRzIHRoYXQgZnVydGhlciByZXN0cmljdCBicm93c2luZyBpbiBXZWJEcml2
ZXIgc2Vzc2lvbnMuIFRoZXNlIHNhZmVndWFyZHMgYWxzbyBkb3VibGUgYXMgZXh0cmEgaW5zdXJh
bmNlIGFnYWluc3Qg4oCcPGEgaHJlZj0iaHR0cDovL21hcnRpbmZvd2xlci5jb20vYXJ0aWNsZXMv
bm9uRGV0ZXJtaW5pc20uaHRtbCI+Zmxha3kgdGVzdHM8L2E+4oCdIGJ5IHByb3ZpZGluZyBlbmhh
bmNlZCB0ZXN0IGlzb2xhdGlvbi4gU29tZSBvZiB0aGVzZSBzYWZlZ3VhcmRzIGFyZSBkZXNjcmli
ZWQgYmVsb3cuPC9wPgotICAgICAgICAgICAgICAgIDxwPkp1c3QgbGlrZSBvbiBtYWNPUywgU2Fm
YXJpIG9uIGlPUyBpc29sYXRlcyBXZWJEcml2ZXIgdGVzdHMgYnkgdXNpbmcgYSBzZXBhcmF0ZSBz
ZXQgb2Ygd2luZG93cywgdGFicywgcHJlZmVyZW5jZXMsIGFuZCBwZXJzaXN0ZW50IHN0b3JhZ2Uu
IFdoZW4gYSBXZWJEcml2ZXIgc2Vzc2lvbiBpcyBhY3RpdmUsIGV4aXN0aW5nIHRhYnMgYXJlIGhp
ZGRlbiBhbmQgYSBkaXN0aW5jdGl2ZWx5LWNvbG9yZWQgV2ViRHJpdmVyIHdpbmRvdyBpcyBzaG93
biBpbnN0ZWFkLiBBdXRvbWF0aW9uIHdpbmRvd3MgYXJlIGVhc3kgdG8gcmVjb2duaXplIGJ5IHRo
ZWlyIG9yYW5nZSBTbWFydCBTZWFyY2ggZmllbGQuIFNpbWlsYXIgdG8gYnJvd3NpbmcgaW4gYSBQ
cml2YXRlIEJyb3dzaW5nIHdpbmRvdywgV2ViRHJpdmVyIHRlc3RzIHRoYXQgcnVuIGluIGFuIEF1
dG9tYXRpb24gd2luZG93IGFsd2F5cyBzdGFydCBmcm9tIGEgY2xlYW4gc2xhdGUgYW5kIGNhbm5v
dCBhY2Nlc3MgU2FmYXJp4oCZcyBub3JtYWwgYnJvd3NpbmcgaGlzdG9yeSwgQXV0b0ZpbGwgZGF0
YSwgb3Igb3RoZXIgc2Vuc2l0aXZlIGluZm9ybWF0aW9uLiBBc2lkZSBmcm9tIHRoZSBvYnZpb3Vz
IHByaXZhY3kgYmVuZWZpdHMsIHRoaXMgcmVzdHJpY3Rpb24gYWxzbyBoZWxwcyB0byBlbnN1cmUg
dGhhdCB0ZXN0cyBhcmUgbm90IGFmZmVjdGVkIGJ5IGEgcHJldmlvdXMgdGVzdCBzZXNzaW9u4oCZ
cyBwZXJzaXN0ZW50IHN0YXRlIHN1Y2ggYXMgbG9jYWwgc3RvcmFnZSBvciBjb29raWVzLiBXaGVu
IHRoZSBXZWJEcml2ZXIgc2Vzc2lvbiB0ZXJtaW5hdGVzLCB0aGUgb3JhbmdlIHdpbmRvdyBnb2Vz
IGF3YXksIHByZWV4aXN0aW5nIHRhYnMgYXJlIHJlc3RvcmVkLCBhbmQgYW55IHN0YXRlIGFjY3Vt
dWxhdGVkIGR1cmluZyB0aGUgV2ViRHJpdmVyIHNlc3Npb24gaXMgZGVzdHJveWVkLjwvcD4KLSAg
ICAgICAgICAgICAgICA8cD5BcyBhIFdlYkRyaXZlciB0ZXN0IGlzIGV4ZWN1dGluZyBpbiBhbiBB
dXRvbWF0aW9uIHdpbmRvdywgYW55IGF0dGVtcHRzIHRvIGludGVyYWN0IHdpdGggdGhlIHdpbmRv
dyBvciB3ZWIgY29udGVudCBjb3VsZCBkZXJhaWwgdGhlIHRlc3QgYnkgdW5leHBlY3RlZGx5IGNo
YW5naW5nIHRoZSBzdGF0ZSBvZiB0aGUgcGFnZS4gVG8gcHJldmVudCB0aGlzIGZyb20gaGFwcGVu
aW5nLCBTYWZhcmkgaW5zdGFsbHMgYSDigJxnbGFzcyBwYW5l4oCdIG92ZXIgdGhlIEF1dG9tYXRp
b24gd2luZG93IHdoaWxlIHRoZSB0ZXN0IGlzIHJ1bm5pbmcuIFRoaXMgYmxvY2tzIGFueSBzdHJh
eSBpbnRlcmFjdGlvbnMgKG1vdXNlLCBrZXlib2FyZCwgcmVzaXppbmcsIGFuZCBzbyBvbikgZnJv
bSBhZmZlY3RpbmcgdGhlIEF1dG9tYXRpb24gd2luZG93LiBJZiBhIHJ1bm5pbmcgdGVzdCBnZXRz
IHN0dWNrIG9yIGZhaWxzLCBpdOKAmXMgcG9zc2libGUgdG8gaW50ZXJydXB0IHRoZSBydW5uaW5n
IHRlc3QgYnkgdGFwcGluZyBvbiB0aGUgc2NyZWVuIGFuZCBjaG9vc2luZyB0byBlbmQgdGhlIHNl
c3Npb24uIFdoZW4gYW4gYXV0b21hdGlvbiBzZXNzaW9uIGlzIGludGVycnVwdGVkLCB0aGUgdGVz
dOKAmXMgY29ubmVjdGlvbiB0byB0aGUgYnJvd3NlciBpcyBwZXJtYW5lbnRseSBzZXZlcmVkIGFu
ZCBjYW5ub3QgYmUgcmVzdW1lZC4gTm90aWZpY2F0aW9ucyBhbmQgc3lzdGVtIGdlc3R1cmVzIChp
LmUuLCBzbGlkZSBpbiBmcm9tIHRvcC9ib3R0b20pIGFyZSBhbHNvIHN1cHByZXNzZWQgd2hpbGUg
V2ViRHJpdmVyIHRlc3RzIGFyZSBydW5uaW5nIGluIG9yZGVyIHRvIGF2b2lkIGZsYWtpbmVzcy48
L3A+Ci0gICAgICAgICAgICAgICAgPGZpZ3VyZT48aW1nIGNsYXNzPSJwcmVzZXJ2ZS1jb2xvciB3
cC1pbWFnZS05NDEwIiBzcmM9Imh0dHBzOi8vd2Via2l0Lm9yZy93cC1jb250ZW50L3VwbG9hZHMv
d2ViZHJpdmVyLWlvczEzYmV0YS5qcGciIGFsdD0iR2xhc3MgUGFuZSIgc3Jjc2V0PSJodHRwczov
L3dlYmtpdC5vcmcvd3AtY29udGVudC91cGxvYWRzL3dlYmRyaXZlci1pb3MxM2JldGEuanBnIDEx
MjV3LCBodHRwczovL3dlYmtpdC5vcmcvd3AtY29udGVudC91cGxvYWRzL3dlYmRyaXZlci1pb3Mx
M2JldGEtMTM5eDMwMC5qcGcgMTM5dywgaHR0cHM6Ly93ZWJraXQub3JnL3dwLWNvbnRlbnQvdXBs
b2Fkcy93ZWJkcml2ZXItaW9zMTNiZXRhLTc2OHgxNjYzLmpwZyA3Njh3LCBodHRwczovL3dlYmtp
dC5vcmcvd3AtY29udGVudC91cGxvYWRzL3dlYmRyaXZlci1pb3MxM2JldGEtNDczeDEwMjQuanBn
IDQ3M3ciIHNpemVzPSIobWF4LXdpZHRoOiAxMTI1cHgpIDEwMHZ3LCAxMTI1cHgiIC8+PC9maWd1
cmU+Ci0gICAgICAgICAgICAgICAgPHA+QSBub24tZ29hbCBvZiB0aGlzIHJlbGVhc2UgaXMgdG8g
c3VwcG9ydCBnZW5lcmFsLXB1cnBvc2UgZGV2aWNlIGF1dG9tYXRpb24gdmlhIHRoZSBXZWJEcml2
ZXIgQVBJLiBUaGUgVzNDIFdlYkRyaXZlciBBUEkgZm9jdXNlcyBvbiBhdXRvbWF0aW5nIGludGVy
YWN0aW9ucyB3aXRoIHdlYiBjb250ZW50LCBhbmQgdGhhdCBpcyBhbHNvIHRoZSBmb2N1cyBvZiB0
aGUgV2ViRHJpdmVyIHN1cHBvcnQgYWRkZWQgaW4gaU9TIDEzLiBPdGhlciBtZWFucyBleGlzdCB0
byBjaGFuZ2Ugc3lzdGVtLWxldmVsIGNvbmZpZ3VyYXRpb24gd2l0aCB0aGUgPGEgaHJlZj0iaHR0
cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0Ij5YQ1Rlc3QgRnJh
bWV3b3JrPC9hPiwgYW5kIGFyZSBjb21wbGltZW50YXJ5IHRvIFdlYkRyaXZlci4gVGhlcmUgYXJl
IG90aGVyIHdheXMgaW4gd2hpY2ggd2ViIGNvbnRlbnQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qg
b2YgaU9TLCBhbmQgbW9zdCBvZiB0aGVzZSBhcmUgc3VwcHJlc3NlZCBpbiBvcmRlciB0byBwcm92
aWRlIGEgc3RhYmxlIHRlc3RpbmcgZW52aXJvbm1lbnQuIFNhZmFyaSBmb3IgaU9TIGRvZXMgbm90
IGFsbG93IFdlYkRyaXZlci1pbml0aWF0ZWQgbmF2aWdhdGlvbnMgdG8gYmUgaGFuZGxlZCBvdXRz
aWRlIG9mIFNhZmFyaS4gSW4gb3RoZXIgd29yZHMsIGNsaWNraW5nIGEgPGNvZGU+dGVsOi8vPC9j
b2RlPiBsaW5rIHdpbGwgbm90IG9mZmVyIHRvIHBsYWNlIGEgcGhvbmUgY2FsbCwgYW5kIGNsaWNr
aW5nIGFuIGFwcCBzdG9yZSBsaW5rIHdpbGwgbm90IHJlZGlyZWN0IHRoZSB1c2VyIHRvIHRoZSBB
cHAgU3RvcmUuIFNpbWlsYXJseSwgbm9uLVNhZmFyaSBjb250ZW50IGRpc3BsYXllZCBieSB0aGUg
c3lzdGVt4oCTc3VjaCBhcyB1cGRhdGUgZGlhbG9ncywgYXBwIG5vdGlmaWNhdGlvbnMsIGluY29t
aW5nIGNhbGxzLCBldGMu4oCTYXJlIHN1cHByZXNzZWQgd2hpbGUgYSBXZWJEcml2ZXIgc2Vzc2lv
biBpcyBhY3RpdmUuIExhc3RseSwgdGhlIHNvZnR3YXJlIGtleWJvYXJkIGlzIHN1cHByZXNzZWQg
d2hlbiBmb2N1c2luZyB0ZXh0IGZpZWxkcyBpbiBXZWJEcml2ZXIgc2Vzc2lvbnMuIFRvIHNpbXVs
YXRlIHRleHQgaW5wdXQgd2l0aCBXZWJEcml2ZXIsIHVzZSB0aGUgZXhpc3RpbmcgPGEgaHJlZj0i
aHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmRyaXZlci8jcGVyZm9ybS1hY3Rpb25zIj5QZXJmb3Jt
IEFjdGlvbnMgZW5kcG9pbnQ8L2E+IG9yIDxhIGhyZWY9Imh0dHBzOi8vdzNjLmdpdGh1Yi5pby93
ZWJkcml2ZXIvI2VsZW1lbnQtc2VuZC1rZXlzIj5FbGVtZW50IFNlbmQgS2V5cyBlbmRwb2ludDwv
YT4uPC9wPgotICAgICAgICAgICAgICAgIDxoMj5Qb3J0aW5nIFRlc3RzPC9oMj4KLSAgICAgICAg
ICAgICAgICA8cD5BIG1ham9yIGdvYWwgb2YgaU9TIDEzIGlzIHRvIG1ha2UgaXQgZWFzaWVyIHRv
IGRldmVsb3AgYW5kIGNvbnN1bWUgZGVza3RvcC1saWtlIHdlYiBleHBlcmllbmNlcyBvbiBtb2Jp
bGUgZGV2aWNlcy4gVG93YXJkcyB0aGF0IGVuZCwgYSBtYWpvciBnb2FsIGZvciBXZWJEcml2ZXIg
b24gaU9TIGlzIHRvIG1ha2UgaXQgZWFzeSB0byBwb3J0IGV4aXN0aW5nIGRlc2t0b3Atb3JpZW50
ZWQgV2ViRHJpdmVyIHRlc3RzIHRvIHdvcmsgd2l0aCBEZXNrdG9wLWNsYXNzIGJyb3dzaW5nIGlu
IFNhZmFyaSBvbiBpUGFkT1MuIEFzIG11Y2ggYXMgd2UmIzgyMTc7ZCBsaWtlIHRvIHRyZWF0IG1h
Y09TIGFuZCBpT1MgZGV2aWNlcyB0aGUgc2FtZSBpbiBvdXIgdGVzdHMsIHRoZXJlIGFyZSBpbXBv
cnRhbnQgZGlmZmVyZW5jZXMgdGhhdCBhZmZlY3QgaG93IHlvdSBtYXkgd2FudCB0byB1c2UgV2Vi
RHJpdmVyLjwvcD4KLSAgICAgICAgICAgICAgICA8cD5UaGUgZmlyc3Qgbm90YWJsZSBkaWZmZXJl
bmNlIGlzIGhhbmRsaW5nIG9mIHVzZXIgaW5wdXQsIG5hbWVseSB0b3VjaCBhbmQgY2xpY2tzLiBJ
biB0aGlzIGluaXRpYWwgdmVyc2lvbiBvZiBXZWJEcml2ZXIgb24gaU9TLCBzaW11bGF0ZWQgaW5w
dXQgc291cmNlcyBpbmNsdWRlIGtleWJvYXJkLCBtb3VzZSwgYW5kIHNpbmdsZS1maW5nZXIgdG91
Y2hlcy4gVGhlIFBlcmZvcm0gQWN0aW9ucyBjb21tYW5kIGFuZCA8YSBocmVmPSJodHRwczovL3cz
Yy5naXRodWIuaW8vd2ViZHJpdmVyLyNlbGVtZW50LWNsaWNrIj5FbGVtZW50IENsaWNrIGNvbW1h
bmQ8L2E+IHN5bnRoZXNpemUgdG91Y2hlcyB1c2luZyBtb3VzZSBpbnB1dHMuIElmIHlvdXIgZXhp
c3RpbmcgdGVzdCB1c2VzIG1vdXNlIGNsaWNrcywgZG91YmxlLCBjbGlja3MsIGFuZCBkcmFncywg
c2FmYXJpZHJpdmVyIGNvbnZlcnRzIHRoZXNlIGludGVyYWN0aW9ucyBpbnRvIGVxdWl2YWxlbnQg
c2luZ2xlIGZpbmdlciB0b3VjaGVzOyBubyBjb2RlIG5lZWRzIHRvIGJlIGNoYW5nZWQuIDxlbT5N
dWx0aXBsZSB0b3VjaCBpbnB1dCBzb3VyY2VzIChpLmUuLCBmaW5nZXJzKSBhcmUgbm90IHN1cHBv
cnRlZCBpbiB0aGlzIHJlbGVhc2U8L2VtPi4gV2UgZXhwZXJpbWVudGVkIHdpdGggb2ZmZXJpbmcg
dGhpcyB2aWEgdGhlIGV4aXN0aW5nIFBlcmZvcm0gQWN0aW9ucyBlbmRwb2ludCwgYnV0IGZvdW5k
IHRoYXQgaXQgd2FzIGRpZmZpY3VsdCB0byBhdXRob3IgV2ViRHJpdmVyIGNvbW1hbmRzIHRoYXQg
cGVyZm9ybWVkIHdlbGwta25vd24gZ2VzdHVyZXMgc3VjaCBhcyBmbGljaywgcGluY2gsIHBhbiwg
YW5kIHNvIG9uLiBUaGlzIGlzIHBhcnRseSBkdWUgdG8gdGhlIGxvdy1sZXZlbCBuYXR1cmUgb2Yg
dGhlIEFjdGlvbnMgQVBJLCBhbmQgcGFydGx5IGR1ZSB0byB0aGUgdGltaW5nLXNlbnNpdGl2ZSBu
YXR1cmUgb2YgZ2VzdHVyZSByZWNvZ25pemVycyB1c2VkIGJ5IFNhZmFyaSBhbmQgV2ViS2l0LiBB
cHBsZSBpcyB3b3JraW5nIHdpdGhpbiB0aGUgVzNDIFdlYkRyaXZlciB3b3JraW5nIGdyb3VwIHRv
IGRlZmluZSBhIG1vcmUgZXhwcmVzc2l2ZSwgaW50dWl0aXZlLCBhbmQgc3RhYmxlIEFQSSBmb3Ig
cGVyZm9ybWluZyBnZXN0dXJlcyBpbiBXZWJEcml2ZXIgdGVzdHMuPC9wPgotICAgICAgICAgICAg
ICAgIDxwPkEgbGVzcyBzdXJwcmlzaW5nIGRpZmZlcmVuY2UgYmV0d2VlbiBtYWNPUyBhbmQgaU9T
IFdlYkRyaXZlciBpcyB0aGF0IGVuZHBvaW50cyB0byBtYW5pcHVsYXRlIHRoZSBPUyB3aW5kb3cg
YXJlIGdlbmVyYWxseSBub3Qgc3VwcG9ydGVkIGJ5IFNhZmFyaSBvbiBpT1MuIFNwZWNpZmljYWxs
eSwgdGhlIFNldCBXaW5kb3cgUmVjdCwgTWluaW1pemUgV2luZG93LCBhbmQgTWF4aW1pemUgV2lu
ZG93IGVuZHBvaW50cyB3aWxsIHJldHVybiA8ZW0+JiM4MjIwO3Vuc3VwcG9ydGVkIG9wZXJhdGlv
biYjODIyMTs8L2VtPi4gRm9yIG1vcmUgZGV0YWlsZWQgaW5mb3JtYXRpb24gY29uY2VybmluZyB3
aGljaCBlbmRwb2ludHMgYXJlIHN1cHBvcnRlZCwgc2VlIHRoZSA8YSBocmVmPSJodHRwczovL2Rl
dmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi93ZWJraXQvYWJvdXRfd2ViZHJpdmVyX2Zv
cl9zYWZhcmkiPlczQyBXZWJEcml2ZXIgQ29tbWFuZHMgcmVmZXJlbmNlPC9hPi48L3A+Ci0gICAg
ICAgICAgICAgICAgPGgyPlN1bW1hcnk8L2gyPgotICAgICAgICAgICAgICAgIDxwPldpdGggdGhl
IGludHJvZHVjdGlvbiBvZiBuYXRpdmUgV2ViRHJpdmVyIHN1cHBvcnQgaW4gU2FmYXJpIG9uIGlP
UyAxMywgaXTigJlzIG5vdyBwb3NzaWJsZSB0byBydW4gdGhlIHNhbWUgYXV0b21hdGVkIHRlc3Rz
IG9mIGRlc2t0b3Atb3JpZW50ZWQgd2ViIGNvbnRlbnQgb24gZGVza3RvcCBhbmQgbW9iaWxlIGRl
dmljZXMgZXF1YWxseS4gU2FmYXJp4oCZcyBzdXBwb3J0IGNvbWVzIHdpdGggbmV3LCBleGNsdXNp
dmUgc2FmZWd1YXJkcyB0byBzaW11bHRhbmVvdXNseSBwcm90ZWN0IHVzZXIgc2VjdXJpdHkgYW5k
IHByaXZhY3kgYW5kIGFsc28gaGVscCB5b3Ugd3JpdGUgbW9yZSBzdGFibGUgYW5kIGNvbnNpc3Rl
bnQgdGVzdHMuIFlvdSBjYW4gdHJ5IG91dCBTYWZhcmnigJlzIFdlYkRyaXZlciBzdXBwb3J0IHRv
ZGF5IGJ5IGluc3RhbGxpbmcgYSBiZXRhIG9mIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmFw
cGxlLmNvbS9tYWNvcy8iPm1hY09TIENhdGFsaW5hPC9hPiBhbmQgPGEgaHJlZj0iaHR0cHM6Ly9k
ZXZlbG9wZXIuYXBwbGUuY29tL2lvcy8iPmlPUyAxMzwvYT4uPC9wPgotICAgICAgICAgICAgICAg
IDxwPklmIHlvdSBlbmNvdW50ZXIgdW5leHBlY3RlZCBiZWhhdmlvciBpbiBTYWZhcmnigJlzIFdl
YkRyaXZlciBzdXBwb3J0LCBvciBoYXZlIG90aGVyIHN1Z2dlc3Rpb25zIGZvciBpbXByb3ZlbWVu
dCwgcGxlYXNlIGZpbGUgYSBidWcgYXQgPGEgaHJlZj0iaHR0cHM6Ly9idWdyZXBvcnQuYXBwbGUu
Y29tLyI+aHR0cHM6Ly9idWdyZXBvcnQuYXBwbGUuY29tLzwvYT4uIEZvciBxdWljayBxdWVzdGlv
bnMgb3IgZmVlZGJhY2ssIGVtYWlsIDxhIGhyZWY9Im1haWx0bzp3ZWItZXZhbmdlbGlzdEBhcHBs
ZS5jb20iPndlYi1ldmFuZ2VsaXN0QGFwcGxlLmNvbTwvYT4gb3IgdHdlZXQgPGEgaHJlZj0iaHR0
cHM6Ly93d3cudHdpdHRlci5jb20vd2Via2l0Ij5Ad2Via2l0PC9hPiBvbiBUd2l0dGVyLiBIYXBw
eSB0ZXN0aW5nITwvcD4KLSAgICAgICAgICAgICAgICBdXT4KLSAgICAgICAgICAgIDwvY29udGVu
dDplbmNvZGVkPgotICAgICAgICA8L2l0ZW0+Ci0gICAgPC9jaGFubmVsPgotPC9yc3M+Ci0KLTwh
LS0gRHluYW1pYyBwYWdlIGdlbmVyYXRlZCBpbiAwLjI0NiBzZWNvbmRzLiAtLT4KLTwhLS0gQ2Fj
aGVkIHBhZ2UgZ2VuZXJhdGVkIGJ5IFdQLVN1cGVyLUNhY2hlIG9uIDIwMTktMDktMTMgMTM6MDA6
MjAgLS0+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNv
dXJjZXMveG1sLXRlc3RzL3NlbGYtY2xvc2luZy1leHBlY3RlZC54bWwgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMveG1sLXRlc3RzL3NlbGYtY2xvc2luZy1leHBl
Y3RlZC54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3ZTdlNDk0ZDQ1MjU3ZDMy
MGFkNjdlZDk3M2ZlYWVmNDQzMDllMjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2Vz
L3htbC10ZXN0cy9zZWxmLWNsb3NpbmctZXhwZWN0ZWQueG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MTEgKzAsMCBAQAotPHJlY3QvPgotPGNpcmNsZS8+Ci08cGF0aC8+Ci08Zz4KLSAgICA8cmVjdC8+
Ci0gICAgPGNpcmNsZS8+Ci0gICAgPHBhdGgvPgotPC9nPgotPHJlY3QvPgotPGNpcmNsZS8+Ci08
cGF0aC8+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNv
dXJjZXMveG1sLXRlc3RzL3RhZy1jYXNlLWV4cGVjdGVkLnhtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy94bWwtdGVzdHMvdGFnLWNhc2UtZXhwZWN0ZWQueG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjJmZWFiNzhkMjdhMDUzODg1NWM4MWYz
NzQwZDk4YjE4MDM2ZmU4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy94bWwtdGVz
dHMvdGFnLWNhc2UtZXhwZWN0ZWQueG1sCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi08
ZGl2PgotICAgIHRleHQ8L0RJVj4KLSAgICA8RElWPnRleHQKLTwvZGl2PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL3htbC10ZXN0cy92YWxp
ZC1odG1sLWludmFsaWQteG1sLWV4cGVjdGVkLnhtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9m
b3JtYXR0aW5nL3Jlc291cmNlcy94bWwtdGVzdHMvdmFsaWQtaHRtbC1pbnZhbGlkLXhtbC1leHBl
Y3RlZC54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjMDE5MmNlNTdhYzFlZjU2
YTAwNmExNmE5NmYxNTA3MzkzMDdmYWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2Vz
L3htbC10ZXN0cy92YWxpZC1odG1sLWludmFsaWQteG1sLWV4cGVjdGVkLnhtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDExICswLDAgQEAKLTxvdXRlcj4KLSAgICA8aW1nIHNyYz0iMSI+Ci0gICAgICAg
IDxpbWcgc3JjPSIyIj4KLSAgICAgICAgICAgIDxvbD4KLSAgICAgICAgICAgICAgICA8bGk+Ci0g
ICAgICAgICAgICAgICAgICAgIE9uZQotICAgICAgICAgICAgICAgICAgICA8bGk+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBUd28KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5UaHJlZQot
ICAgICAgICAgICAgPC9vbD4KLTwvb3V0ZXI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMveG1sLXRlc3RzL3hzbHQtZXhwZWN0ZWQueG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL3htbC10ZXN0cy94c2x0
LWV4cGVjdGVkLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc0ODc2MDFhMGE5
YmYxMWI5NWJmYTYxYWRhYjA2NTc1MGIyMDJiMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNv
dXJjZXMveG1sLXRlc3RzL3hzbHQtZXhwZWN0ZWQueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTUg
KzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvODg1OS01Ij8+Ci08eHNs
OnN0eWxlc2hlZXQgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zv
cm0iIHZlcnNpb249IjEuMCI+Ci0gICAgPHhzbDpvdXRwdXQgbWV0aG9kPSJodG1sIiBlbmNvZGlu
Zz0iS09JOC1SIi8+Ci0gICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iVEVTVCI+Ci0gICAgICAgIDxo
dG1sPgotICAgICAgICAgICAgPGJvZHk+Ci0gICAgICAgICAgICAgICAgPHNjcmlwdD4KLSAgICAg
ICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCJF
bmNvZGluZzogIiArIGRvY3VtZW50LmNoYXJhY3RlclNldCk7Ci0gICAgICAgICAgICAgICAgPC9z
Y3JpcHQ+Ci0gICAgICAgICAgICA8L2JvZHk+Ci0gICAgICAgIDwvaHRtbD4KLSAgICA8L3hzbDp0
ZW1wbGF0ZT4KLTwveHNsOnN0eWxlc2hlZXQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YS1pbnRlcmNlcHRlZC5qc29uIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2RhdGEtaW50ZXJjZXB0ZWQuanNvbgpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY0ZTJiMGQ5OTY3Y2ViMWVkN2UzMmNkMTkyOTM1
ZGYxNzY1ODEyNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YS1pbnRlcmNlcHRl
ZC5qc29uCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotaW50ZXJjZXB0ZWQgcmVxdWVzdApc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431033</attachid>
            <date>2021-06-09 17:41:23 -0700</date>
            <delta_ts>2021-06-10 14:35:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226800-20210609194121.patch</filename>
            <type>text/plain</type>
            <size>254683</size>
            <attacher name="Amir Mark Jr">amir_mark</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4Njc2CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2Q3ZDI4YzE1MTY0ZmNiYzNkNTJm
ZTMxYmNhYjA3OTAxYjFlZjM3NS4uZjdjYTNmMDQ0ODk4MDRiNDkzMzRmMGQwZTY3ZTYzNmExMGU4
NGI0ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTA2LTA5ICBBbWlyIE1hcmsgSnIgIDxh
bWlyX21hcmtAYXBwbGUuY29tPgorCisgICAgICAgIFtMYXlvdXRUZXN0c10gRGVsZXRlIHVudXNl
ZCBMYXlvdXRUZXN0cy9pbnNwZWN0b3IgcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY4MDAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEZWxldGluZyB1bnVzZWQgdGVzdCByZXNvdXJjZXMu
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS9yZXNvdXJjZXMvZXJyb3JzLmNzczogUmVt
b3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL3Jlc291cmNlcy9oaWdobGlnaHQtaWZyYW1l
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2Vz
L2phdmFzY3JpcHQtdGVzdHMvYXJyb3ctZnVuY3Rpb25zLWV4cGVjdGVkLmpzOiBSZW1vdmVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3Rz
L2NsYXNzZXMtZXhwZWN0ZWQuanM6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1h
dHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvY29tbWEtZXhwcmVzc2lvbnMtZXhwZWN0
ZWQuanM6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2Vz
L2phdmFzY3JpcHQtdGVzdHMvY29tbWVudHMtYW5kLXByZXNlcnZlLW5ld2xpbmVzLWV4cGVjdGVk
LmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9q
YXZhc2NyaXB0LXRlc3RzL2NvbW1lbnRzLW9ubHktZXhwZWN0ZWQuanM6IFJlbW92ZWQuCisgICAg
ICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvZG8t
d2hpbGUtc3RhdGVtZW50LWV4cGVjdGVkLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rv
ci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2Zvci1zdGF0ZW1lbnRzLWV4
cGVjdGVkLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291
cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2Z1bmN0aW9ucy1leHBlY3RlZC5qczogUmVtb3ZlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9n
ZW5lcmF0b3JzLWV4cGVjdGVkLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mb3Jt
YXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2lmLXN0YXRlbWVudC1leHBlY3RlZC5q
czogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2
YXNjcmlwdC10ZXN0cy9pbXBvcnQtZXhwZWN0ZWQuanM6IFJlbW92ZWQuCisgICAgICAgICogaW5z
cGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvbGFiZWwtYnJlYWst
Y29udGludWUtYmxvY2stZXhwZWN0ZWQuanM6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9y
L2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvbG9naWMtZXhwcmVzc2lvbnMt
ZXhwZWN0ZWQuanM6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVz
b3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvbW9kdWxlcy1leHBlY3RlZC5qczogUmVtb3ZlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9u
ZXctZXhwcmVzc2lvbi1leHBlY3RlZC5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
Zm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9udW1iZXJzLWV4cGVjdGVkLmpz
OiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZh
c2NyaXB0LXRlc3RzL29iamVjdC1hcnJheS1saXRlcmFsLWV4cGVjdGVkLmpzOiBSZW1vdmVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3Rz
L290aGVyLXN0YXRlbWVudHMtZXhwZWN0ZWQuanM6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVj
dG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvcmV0dXJuLXN0YXRlbWVu
dC1leHBlY3RlZC5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9y
ZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9zYW1wbGUtanF1ZXJ5LWV4cGVjdGVkLmpzOiBSZW1v
dmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0
LXRlc3RzL3NhbXBsZS1ub3JtYWwtdXRpbGl0aWVzLWV4cGVjdGVkLmpzOiBSZW1vdmVkLgorICAg
ICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3Nh
bXBsZS13ZWJpbnNwZWN0b3Itb2JqZWN0LWV4cGVjdGVkLmpzOiBSZW1vdmVkLgorICAgICAgICAq
IGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3N3aXRjaC1j
YXNlLWRlZmF1bHQtZXhwZWN0ZWQuanM6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zv
cm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvdGVtcGxhdGUtc3RyaW5ncy1leHBl
Y3RlZC5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJj
ZXMvamF2YXNjcmlwdC10ZXN0cy90ZXJuYXJ5LWV4cHJlc3Npb25zLWV4cGVjdGVkLmpzOiBSZW1v
dmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0
LXRlc3RzL3RyeS1jYXRjaC1maW5hbGx5LXN0YXRlbWVudHMtZXhwZWN0ZWQuanM6IFJlbW92ZWQu
CisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVz
dHMvdW5hcnktYmluYXJ5LWV4cHJlc3Npb25zLWV4cGVjdGVkLmpzOiBSZW1vdmVkLgorICAgICAg
ICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3Zhcmlh
YmxlLWRlY2xhcmF0aW9uLWV4cGVjdGVkLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rv
ci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3doaWxlLXN0YXRlbWVudC1l
eHBlY3RlZC5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNv
dXJjZXMvamF2YXNjcmlwdC10ZXN0cy93aXRoLXN0YXRlbWVudC1leHBlY3RlZC5qczogUmVtb3Zl
ZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YS1pbnRlcmNlcHRl
ZC5qc29uOiBSZW1vdmVkLgorCiAyMDIxLTA2LTA5ICBBbWlyIE1hcmsgSnIgIDxhbWlyX21hcmtA
YXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNzg2MzA/KTogW2lPUyAxNF0gaHR0
cC90ZXN0cy9zc2wvYXBwbGVwYXkvQXBwbGVQYXlCdXR0b24uaHRtbCBpcyBhIGNvbnN0YW50IGZh
aWx1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL3Jlc291cmNl
cy9lcnJvcnMuY3NzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvcmVzb3VyY2VzL2Vy
cm9ycy5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4NWI0MjFhNmYwYzNmZTU0
ZGIwMDA3MzEwZDdhODRhZjViYmZjNGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvcmVzb3VyY2VzL2Vy
cm9ycy5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLWRpdiB7ICogY29sb3I6IHJl
ZDsgfSBkaXYgeyAqIGNvbG9yOiByZWQ7IH0KLQotZGl2IHsKLSAgICAqCi0gICAgY29sb3I6Ci0g
ICAgcmVkOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9yZXNvdXJj
ZXMvaGlnaGxpZ2h0LWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9yZXNv
dXJjZXMvaGlnaGxpZ2h0LWlmcmFtZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwYjM0YTU0MWNkOThjNmIwMTU1Y2Y2NDFhYTQxNGY4NjI0YWZjZTUxLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
b20vcmVzb3VyY2VzL2hpZ2hsaWdodC1pZnJhbWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDgg
KzAsMCBAQAotPGh0bWw+Ci0gICAgPGhlYWQ+Ci0gICAgPC9oZWFkPgotICAgIDxib2R5PgotICAg
ICAgICA8ZGl2IGlkPSJpZC1vbmUiIHN0eWxlPSJ3aWR0aDoxNTBweDsgaGVpZ2h0OiAyNTBweCI+
PC9kaXY+Ci0gICAgICAgIDxkaXY+PC9kaXY+Ci0gICAgPC9ib2R5PgotPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9m
b3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2Fycm93LWZ1bmN0aW9ucy1leHBl
Y3RlZC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZh
c2NyaXB0LXRlc3RzL2Fycm93LWZ1bmN0aW9ucy1leHBlY3RlZC5qcwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOGViMTBmYmYyNGEwZjM3YzUwYmE3M2E3YmY5YmRlN2FiNmNjYThmYy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9hcnJvdy1m
dW5jdGlvbnMtZXhwZWN0ZWQuanMKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi14ID0+
IHg7Ci14ID0+IHggKiB4OwoteCA9PiB7Ci0gICAgeCAqIHgKLX07Ci14ID0+IHsKLSAgICB4ICog
eDsKLX07Ci0oKSA9PiAxOwotKHgpID0+IHg7Ci0oeCkgPT4geCAqIHg7Ci0oeCkgPT4gewotICAg
IHggKiB4Ci19OwotKHgpID0+IHsKLSAgICB4ICogeDsKLX07Ci0KLXggPT4gewotICAgIHggKj0g
eDsKLSAgICB4Ci19OwotCi0oeCkgPT4gewotICAgIHggKj0geDsKLSAgICB4Ci19OwotCi1bXS5z
b3J0KChhLCBiKSA9PiBhIC0gYik7Ci1bXS5zb3J0KChhLCBiKSA9PiBmb28oYSwgYikpOwotW10u
cmVkdWNlKChzdW0sIHthLCBifSkgPT4gc3VtICs9IGEgKyBiLCAwKTsKLQotc2V0VGltZW91dCgo
KSA9PiB7Ci0gICAgMTsKLSAgICAyOwotICAgIDMKLX0pOwotCi1mb28oKGE9MSwgLi4ucmVzdCkg
PT4gcmVzdFthXSk7Ci0KLWZvbygoYT0xLCBiKSA9PiBiKTsKLQotZm9vKChhPTEsIGIsICkgPT4g
Yik7Ci0KLWFzeW5jIHggPT4geAotYXN5bmMgKHgpID0+IHgKLWFzeW5jICh4KSA9PiB7Ci0gICAg
eAotfQotCi1hID0+IHsKLSAgICBmb3IgKGIgb2YgW10pCi0gICAgICAgIDsKLX0KLSgpID0+IHsK
LSAgICB0cnkgewotICAgICAgICAxCi0gICAgfSBjYXRjaCB7Ci0gICAgICAgIDIKLSAgICB9Ci19
Ci0KLSgpID0+IHsKLSAgICBhKCksCi0gICAgYigpLAotICAgIGMoKQotfQotCi0oKSA9PiB7Ci0g
ICAgcmV0dXJuCi19Ci0oKSA9PiB7Ci0gICAgcmV0dXJuIDQyCi19Ci0oKSA9PiB7Ci0gICAgcmV0
dXJuIDQyLCBhKCksIGIoKQotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zv
cm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvY2xhc3Nlcy1leHBlY3RlZC5qcyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRl
c3RzL2NsYXNzZXMtZXhwZWN0ZWQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIz
Mjc3YmU4NTZmODc0YmNhNmVmMjlhNzU4ODY0N2ZkOWMwZjRkMjcuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1h
dHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvY2xhc3Nlcy1leHBlY3RlZC5qcworKysg
L2Rldi9udWxsCkBAIC0xLDE5OSArMCwwIEBACi1jbGFzcyB4IHt9Ci0KLWNsYXNzIEZvbyB7fQot
Y2xhc3MgRm9vIGV4dGVuZHMgQmFyIHt9Ci0KLWNsYXNzIEZvbyB7Ci0gICAgY29uc3RydWN0b3Io
KQotICAgIHsKLSAgICAgICAgMQotICAgIH0KLX0KLQotY2xhc3MgRm9vIHsKLSAgICBjb25zdHJ1
Y3RvcigpCi0gICAgewotICAgICAgICAxCi0gICAgfQotICAgIHN0YXRpYyBzdGF0aWNNZXRob2Qo
KQotICAgIHsKLSAgICAgICAgMQotICAgIH0KLX0KLQotY2xhc3MgRm9vIHsKLSAgICBzdGF0aWMg
c3RhdGljTWV0aG9kKCkKLSAgICB7Ci0gICAgICAgIDEKLSAgICB9Ci19Ci0KLWNsYXNzIEZvbyBl
eHRlbmRzIEJhciB7Ci0gICAgY29uc3RydWN0b3IoKQotICAgIHsKLSAgICAgICAgc3VwZXIoKQot
ICAgIH0KLX0KLQotY2xhc3MgRm9vIGV4dGVuZHMgQmFyIHsKLSAgICBjb25zdHJ1Y3RvcigpCi0g
ICAgewotICAgICAgICAxCi0gICAgfQotICAgIHN0YXRpYyBzdGF0aWNNZXRob2QoKQotICAgIHsK
LSAgICAgICAgc3VwZXIuc3RhdGljTWV0aG9kKCkKLSAgICB9Ci19Ci0KLWNsYXNzIEZvbyBleHRl
bmRzIEJhciB7Ci0gICAgY29uc3RydWN0b3IoKQotICAgIHsKLSAgICAgICAgMQotICAgIH0KLSAg
ICBzdGF0aWMgc3RhdGljTWV0aG9kKCkKLSAgICB7Ci0gICAgICAgIHN1cGVyLnN0YXRpY01ldGhv
ZCgpCi0gICAgfQotICAgIG1ldGhvZDEoKQotICAgIHsKLSAgICAgICAgMQotICAgIH0KLSAgICBt
ZXRob2QyKG5hbWUsIHtvcHRpb25zfSkKLSAgICB7Ci0gICAgICAgIDEKLSAgICB9Ci0gICAgZ2V0
IGdldHRlcigpCi0gICAgewotICAgICAgICAxCi0gICAgfQotICAgIHNldCBzZXR0ZXIoeCkKLSAg
ICB7Ci0gICAgICAgIDEKLSAgICB9Ci0gICAgKmdlbjEoKQotICAgIHsKLSAgICAgICAgMQotICAg
IH0KLSAgICAqZ2VuMigpCi0gICAgewotICAgICAgICAxCi0gICAgfQotICAgIGFzeW5jIGEoKQot
ICAgIHsKLSAgICAgICAgMQotICAgIH0KLX0KLQotQSA9IGNsYXNzIEZvbyBleHRlbmRzIChiID8g
QmFyIDogQmFyKSB7Ci0gICAgY29uc3RydWN0b3IoKQotICAgIHsKLSAgICAgICAgbmV3LnRhcmdl
dC5zdGF0aWNNZXRob2QoKQotICAgIH0KLSAgICBzdGF0aWMgc3RhdGljTWV0aG9kKCkKLSAgICB7
Ci0gICAgICAgIHN1cGVyLnN0YXRpY01ldGhvZCgpCi0gICAgfQotICAgIG1ldGhvZDEoKQotICAg
IHsKLSAgICAgICAgMQotICAgIH0KLSAgICBtZXRob2QyKG5hbWUsIHtvcHRpb25zfSkKLSAgICB7
Ci0gICAgICAgIHN1cGVyLm1ldGhvZCgpCi0gICAgfQotICAgIGdldCBnZXR0ZXIoKQotICAgIHsK
LSAgICAgICAgMQotICAgIH0KLSAgICBzZXQgc2V0dGVyKHgpCi0gICAgewotICAgICAgICAxCi0g
ICAgfQotICAgICpnZW4xKCkKLSAgICB7Ci0gICAgICAgIDEKLSAgICB9Ci0gICAgKmdlbjIoKQot
ICAgIHsKLSAgICAgICAgMQotICAgIH0KLSAgICBhc3luYyBhKCkKLSAgICB7Ci0gICAgICAgIDEK
LSAgICB9Ci19Ci0KLWNsYXNzIEZvbyB7Ci0gICAgc3RhdGljIGFzeW5jIGFzeW5jKCkKLSAgICB7
Ci0gICAgICAgIDEKLSAgICB9Ci0gICAgYXN5bmMgYXN5bmMoKQotICAgIHsKLSAgICAgICAgMQot
ICAgIH0KLSAgICBhc3luYygpCi0gICAgewotICAgICAgICAxCi0gICAgfQotfQotCi1jbGFzcyBG
b28gewotICAgIGFzeW5jICJmIigpIHt9Ci0gICAgYXN5bmMgMSgpIHt9Ci0gICAgYXN5bmMgWyJm
Il0oKSB7fQotfQotCi0vLyBFUzIwMTggLSBBc3luYyBJdGVyYXRpb24gLyBBc3luYyBHZW5lcmF0
b3JzCi0KLWNsYXNzIEZvbyB7Ci0gICAgc3RhdGljIGFzeW5jICphc3luYygpCi0gICAgewotICAg
ICAgICAxCi0gICAgfQotICAgIGFzeW5jICphc3luYygpCi0gICAgewotICAgICAgICAxCi0gICAg
fQotICAgICphc3luYygpCi0gICAgewotICAgICAgICAxCi0gICAgfQotfQotCi1jbGFzcyBGb28g
ewotICAgIHN0YXRpYyBhc3luYyAqYXN5bmMoKQotICAgIHsKLSAgICAgICAgMQotICAgIH0KLSAg
ICBhc3luYyAqYXN5bmMoKQotICAgIHsKLSAgICAgICAgMQotICAgIH0KLSAgICAqYXN5bmMoKQot
ICAgIHsKLSAgICAgICAgMQotICAgIH0KLX0KLQotY2xhc3MgRm9vIHsKLSAgICBzdGF0aWMgYXN5
bmMgKmFzeW5jKCkKLSAgICB7Ci0gICAgICAgIDEKLSAgICB9Ci0gICAgYXN5bmMgKmFzeW5jKCkK
LSAgICB7Ci0gICAgICAgIDEKLSAgICB9Ci0gICAgKmFzeW5jKCkKLSAgICB7Ci0gICAgICAgIDEK
LSAgICB9Ci19Ci0KLWNsYXNzIEZvbyB7Ci0gICAgYXN5bmMgKiJmIigpIHt9Ci0gICAgYXN5bmMg
KjEoKSB7fQotICAgIGFzeW5jICpbImYiXSgpIHt9Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9jb21tYS1l
eHByZXNzaW9ucy1leHBlY3RlZC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5n
L3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2NvbW1hLWV4cHJlc3Npb25zLWV4cGVjdGVkLmpz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjdhNjliNTE5ZTFkMWUwM2E1Mjk1Mjg1
OWEyMzljN2NhMzcyYjVhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2Ny
aXB0LXRlc3RzL2NvbW1hLWV4cHJlc3Npb25zLWV4cGVjdGVkLmpzCisrKyAvZGV2L251bGwKQEAg
LTEsMzkgKzAsMCBAQAotYSh4LCB5LCB6KSwKLWIoeCwgeSwgeiksCi1jKHgsIHksIHopOwotCi1p
ZiAoYSh4LCB5LCB6KSwgYih4LCB5LCB6KSwgYyh4LCB5LCB6KSkge30KLQotdHJ1ZSAmJiAoYSh4
LCB5LCB6KSwgYih4LCB5LCB6KSwgYyh4LCB5LCB6KSkgJiYgdHJ1ZTsKLQotKHgsIHksIHopID0+
IHsKLSAgICBhKHgsIHksIHopLAotICAgIGIoeCwgeSwgeiksCi0gICAgYyh4LCB5LCB6KQotfQot
Ci0oeCwgeSwgeikgPT4gewotICAgIGlmIChhKHgsIHksIHopLCBiKHgsIHksIHopLCBjKHgsIHks
IHopKSB7fQotfQotCi0oeCwgeSwgeikgPT4gewotICAgIHRydWUgJiYgKGEoeCwgeSwgeiksIGIo
eCwgeSwgeiksIGMoeCwgeSwgeikpICYmIHRydWU7Ci19Ci0KLSh4LCB5LCB6KSA9PiAoYSh4LCB5
LCB6KSwgYih4LCB5LCB6KSwgYyh4LCB5LCB6KSk7Ci0KLSh4LCB5LCB6KSA9PiB0cnVlICYmIChh
KHgsIHksIHopLCBiKHgsIHksIHopLCBjKHgsIHksIHopKSAmJiB0cnVlOwotCi1mdW5jdGlvbiBm
b28oeCwgeSwgeikgewotICAgIGEoeCwgeSwgeiksCi0gICAgYih4LCB5LCB6KSwKLSAgICBjKHgs
IHksIHopCi19Ci0KLWZ1bmN0aW9uIGZvbyh4LCB5LCB6KSB7Ci0gICAgaWYgKGEoeCwgeSwgeiks
IGIoeCwgeSwgeiksIGMoeCwgeSwgeikpIHt9Ci19Ci0KLWZ1bmN0aW9uIGZvbyh4LCB5LCB6KSB7
Ci0gICAgdHJ1ZSAmJiAoYSh4LCB5LCB6KSwgYih4LCB5LCB6KSwgYyh4LCB5LCB6KSkgJiYgdHJ1
ZTsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291
cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2NvbW1lbnRzLWFuZC1wcmVzZXJ2ZS1uZXdsaW5lcy1leHBl
Y3RlZC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZh
c2NyaXB0LXRlc3RzL2NvbW1lbnRzLWFuZC1wcmVzZXJ2ZS1uZXdsaW5lcy1leHBlY3RlZC5qcwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzBhZWEwOGQxZTc2YzM4NzU2NDkxZjNjYzc5
N2I4MDg4NGYzN2ZhOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlw
dC10ZXN0cy9jb21tZW50cy1hbmQtcHJlc2VydmUtbmV3bGluZXMtZXhwZWN0ZWQuanMKKysrIC9k
ZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vLyBUT1AKLQotLy8gVGhpcyBpcyBhIGxpbmUgY29t
bWVudC4KLTE7Ci0KLS8qIFRoaXMgaXMgYSBibG9jayBjb21tZW50ICovCi0yOwotCi0vLyBMaW5l
IC0gYmVmb3JlCi0vKiBCbG9jayAqLwotLy8gTGluZSAtIGFmdGVyCi0zOwotCi0vKiBCbG9jayAt
IGJlZm9yZSAqLwotLy8gTGluZQotLyogQmxvY2sgLSBhZnRlciAqLwotNDsKLQotLyoKLSAqIE11
bHRpbGluZSBCbG9jawotICovCi01OwotCi0vLyAtLS0tLS0tLS0tLS0tLS0KLS8vICAgTGluZSBI
ZWFkZXIKLS8vIC0tLS0tLS0tLS0tLS0tLQotNjsKLQotNzsgLy8gQ29tbWVudCBvbiBsaW5lIHdp
dGggY29kZS4KLQotLy8gTGVhZGluZyBjb21tZW50IGZvciB4LgotdmFyIHggPSAxOyAvLyBUcmFp
bGluZyBjb21tZW50IGZvciB4LgotLy8gTGVhZGluZyBjb21tZW50IGZvciB5LgotdmFyIHkgPSAy
OyAvLyBUcmFpbGluZyBjb21tZW50IGZvciB5LgotCi12YXIgeCA9IDE7IC8vIFRyYWlsaW5nIGNv
bW1lbnQgZm9yIHguCi12YXIgeSA9IDI7IC8vIFRyYWlsaW5nIGNvbW1lbnQgZm9yIHkuCi0KLS8v
IExlYWRpbmcgY29tbWVudCBmb3IgeC4KLXZhciB4ID0gMTsKLS8vIExlYWRpbmcgY29tbWVudCBm
b3IgeS4KLXZhciB5ID0gMjsKLQotLyogQWxwaGEgKi8KLXZhciB4ID0gMTsgLyogQWxwaGEgKi8g
LyogQmV0YSAqLwotLyogR2FtbWEgKi8KLQotKGZ1bmN0aW9uKCkgewotICAgIC8vIEluY3JlbWVu
dC4KLSAgICB4Kys7Ci0gICAgeSsrOwotCi0gICAgLy8gU3VtIHRoZSBsaXN0LgotICAgIGxldCBz
dW0gPSAwOwotICAgIGZvciAobGV0IHggb2YgbGlzdCkKLSAgICAgICAgc3VtICs9IHg7Ci0KLSAg
ICAvLyBSZXR1cm4gcmVzdWx0LgotICAgIHJldHVybiBzdW07Ci19KSgpOwotCi0vLyBCT1RUT00K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9q
YXZhc2NyaXB0LXRlc3RzL2NvbW1lbnRzLW9ubHktZXhwZWN0ZWQuanMgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9jb21tZW50cy1v
bmx5LWV4cGVjdGVkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzkwODIyODYw
MDViMGQ4NTg2M2ZlMDUxYjI1YzQwYzE4NjM4MDZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jl
c291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2NvbW1lbnRzLW9ubHktZXhwZWN0ZWQuanMKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi0vLyBDb21tZW50IGxpbmUgb25lLgotCi0vLyBDb21t
ZW50IGxpbmUgdGhyZWUuCi0KLS8qCi0gKiBDb21tZW50IHNwYW5uaW5nIGxpbmUgNS02Ci0gKi8K
LS8vIEFub3RoZXIgY29tbWVudCBvbiBsaW5lIDYuCi0KLS8qIFRoZSBlbmQgKi8KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0
LXRlc3RzL2RvLXdoaWxlLXN0YXRlbWVudC1leHBlY3RlZC5qcyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2RvLXdoaWxlLXN0YXRl
bWVudC1leHBlY3RlZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjExN2MzODcx
Nzc5OWNjZmMwOTAwYTg3N2E2MDJmNzBiNWJjMzJiNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9y
ZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9kby13aGlsZS1zdGF0ZW1lbnQtZXhwZWN0ZWQuanMK
KysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1kbyB7fSB3aGlsZSAoMSk7Ci1kbyB7fSB3
aGlsZSAoKDEpKTsKLQotZG8gewotICAgIDEKLX0gd2hpbGUgKDEpOwotZG8gewotICAgIDEKLX0g
d2hpbGUgKCgxKSk7Ci0KLWRvIHt9IHdoaWxlICgxKTsKLWRvIHt9IHdoaWxlICgxKTsKLQotZG8g
ewotICAgIDEKLX0gd2hpbGUgKDEpOwotZG8gewotICAgIDEKLX0gd2hpbGUgKDEpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3Jp
cHQtdGVzdHMvZm9yLXN0YXRlbWVudHMtZXhwZWN0ZWQuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9mb3Itc3RhdGVtZW50cy1l
eHBlY3RlZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWM4ODdjNTdiZWQzMjAx
NGZkODIwMzVlNTcyM2ZkMzEwOWRiYzliYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJj
ZXMvamF2YXNjcmlwdC10ZXN0cy9mb3Itc3RhdGVtZW50cy1leHBlY3RlZC5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDE4NSArMCwwIEBACi1mb3IgKDs7KQotICAgIDsKLWZvciAoOzspCi0gICAgMQot
Zm9yICgxOzspCi0gICAgMQotZm9yICg7IDE7KQotICAgIDEKLWZvciAoOzsgMSkKLSAgICAxCi0K
LWZvciAoOzspIHt9Ci1mb3IgKDE7Oykge30KLWZvciAoOyAxOykge30KLWZvciAoOzsgMSkge30K
LQotZm9yICg7OykgewotICAgIDEKLX0KLWZvciAoMTs7KSB7Ci0gICAgMQotfQotZm9yICg7IDE7
KSB7Ci0gICAgMQotfQotZm9yICg7OyAxKSB7Ci0gICAgMQotfQotCi1mb3IgKDs7KQotICAgIDsK
LWZvciAoOzspCi0gICAgOwotZm9yICg7Oykge30KLWZvciAoOzspIHt9Ci0KLWZvciAoOzspIHsK
LSAgICAxCi19Ci0xCi14Ci0vLyBmb3IKLQotZm9yICgxOyAyOyAzKQotICAgIDE7Ci1mb3IgKDE7
IDI7IDMpIHsKLSAgICAxCi19Ci07Ci0KLWZvciAoKDEpOygyKTsoMykpCi0gICAgMQotZm9yICgo
MSk7KDIpOygzKSkgewotICAgIDEKLX0KLQotZm9yICgoMSk7KDIpOygzKSkKLSAgICAxCi1mb3Ig
KCgxKTsoMik7KDMpKSB7Ci0gICAgMQotfQotCi1mb3IgKDE7IDI7IDMpCi0gICAgMQotZm9yICgx
OyAyOyAzKSB7Ci0gICAgMQotfQotCi1mb3IgKHZhciB4ID0gMTsgeCA8IDEwOyArK3gpCi0gICAg
MTsKLWZvciAodmFyIHggPSAxOyB4IDwgbGVuOyArK3gpCi0gICAgMTsKLWZvciAodmFyIHggPSAx
LCBsZW4gPSAxMDsgeCA8IGxlbjsgKyt4KQotICAgIDE7Ci1mb3IgKHZhciB4ID0gMSwgbGVuID0g
MTA7IGxlbiA9IDIwLCB4IDwgbGVuOyArK3gpCi0gICAgMTsKLWZvciAodmFyIHggPSAxLCBsZW4g
PSAxMDsgbGVuID0gMjAsIHggPCBsZW47IGxlbiA9IDE1LCArK3gpCi0gICAgMTsKLQotZm9yICh4
ID0gMTsgeCA8IDEwOyArK3gpIHsKLSAgICAxCi19Ci1mb3IgKHggPSAxOyB4IDwgbGVuOyArK3gp
IHsKLSAgICAxCi19Ci1mb3IgKHggPSAxLCBsZW4gPSAxMDsgeCA8IGxlbjsgKyt4KSB7Ci0gICAg
MQotfQotZm9yICh4ID0gMSwgbGVuID0gMTA7IGxlbiA9IDIwLCB4IDwgbGVuOyArK3gpIHsKLSAg
ICAxCi19Ci1mb3IgKHggPSAxLCBsZW4gPSAxMDsgbGVuID0gMjAsIHggPCBsZW47IGxlbiA9IDE1
LCArK3gpIHsKLSAgICAxCi19Ci0KLWZvciAodmFyIHggPSAxOyB4IDwgMTA7ICsreCkgewotICAg
IDEKLX0KLWZvciAodmFyIHggPSAxOyB4IDwgbGVuOyArK3gpIHsKLSAgICAxCi19Ci1mb3IgKHZh
ciB4ID0gMSwgbGVuID0gMTA7IHggPCBsZW47ICsreCkgewotICAgIDEKLX0KLWZvciAodmFyIHgg
PSAxLCBsZW4gPSAxMDsgbGVuID0gMjAsIHggPCBsZW47IGxlbiA9IDE1LCArK3gpIHsKLSAgICAx
Ci19Ci0KLWZvciAodmFyIHggPSAxOyB4IDwgMTA7ICsreCkgewotICAgIDEKLX0KLWZvciAodmFy
IHggPSAxOyB4IDwgbGVuOyArK3gpIHsKLSAgICAxCi19Ci1mb3IgKHZhciB4ID0gMSwgbGVuID0g
MTA7IHggPCBsZW47ICsreCkgewotICAgIDEKLX0KLWZvciAodmFyIHggPSAxLCBsZW4gPSAxMDsg
bGVuID0gMjAsIHggPCBsZW47IGxlbiA9IDE1LCArK3gpIHsKLSAgICAxCi19Ci0KLWZvciAoMTsg
MjsgMykKLSAgICBmb3IgKDQ7IDU7IDYpCi0gICAgICAgIGZvciAoNzsgODsgOSkKLSAgICAgICAg
ICAgIDsKLWZvciAoMTsgMjsgMykgewotICAgIGlmICh0cnVlKSB7Ci0gICAgICAgIGZvciAoNDsg
NTsgNikKLSAgICAgICAgICAgIDAKLSAgICB9Ci0gICAgZm9yICg3OyA4OyA5KQotICAgICAgICA7
Ci19Ci0KLWZvciAodmFyIHgsIHksIHo7ICF4ICYmIHk7ICsreCwgKyt5KSB7fQotZm9yICh2YXIg
eCA9IFtdLCB5ID0gWzEsIDIsIDNdOyB0cnVlOyBmYWxzZSkge30KLQotLy8gZm9yLi5pbgotCi1m
b3IgKHggaW4gb2JqKQotICAgIDsKLWZvciAoeCBpbiAob2JqKSkKLSAgICA7Ci1mb3IgKHZhciB4
IGluIHdpbmRvdykKLSAgICA7Ci1mb3IgKHZhciB4IGluICh3aW5kb3cpKQotICAgIDsKLWZvciAo
dmFyIHtmb299IGluIHdpbmRvdykKLSAgICA7Ci1mb3IgKHZhciBbeCwgeV0gaW4gWzEsIDIsIDNd
KQotICAgIDsKLQotLy8gZm9yLi5vZgotCi1mb3IgKHggb2YgWzEsIDIsIDNdKQotICAgIDsKLWZv
ciAoeCBvZiAoWzEsIDIsIDNdKSkKLSAgICA7Ci1mb3IgKHZhciB4IG9mIHdpbmRvdykKLSAgICA7
Ci1mb3IgKHZhciB4IG9mICh3aW5kb3cpKQotICAgIDsKLWZvciAodmFyIHtmb299IG9mIHdpbmRv
dykKLSAgICA7Ci1mb3IgKHZhciBbeCwgeV0gb2YgWzEsIDIsIDNdKQotICAgIDsKLQotLy8gRVMy
MDE4IC0gQXN5bmMgSXRlcmF0aW9uIC8gQXN5bmMgR2VuZXJhdG9ycwotCi1hc3luYyBmdW5jdGlv
biBmKCkgewotICAgIGZvciBhd2FpdCAoeCBvZiBbXSkKLSAgICAgICAgOwotICAgIGZvciBhd2Fp
dCAoeCBvZiBbMSwgMiwgM10pCi0gICAgICAgIDsKLSAgICBmb3IgYXdhaXQgKHggb2YgKFsxLCAy
LCAzXSkpCi0gICAgICAgIDsKLSAgICBmb3IgYXdhaXQgKHZhciB4IG9mIHdpbmRvdykKLSAgICAg
ICAgOwotICAgIGZvciBhd2FpdCAodmFyIHggb2YgKHdpbmRvdykpCi0gICAgICAgIDsKLSAgICBm
b3IgYXdhaXQgKGxldCB7Zm9vfSBvZiB3aW5kb3cpCi0gICAgICAgIDsKLSAgICBmb3IgYXdhaXQg
KGxldCBbeCwgeV0gb2YgWzEsIDIsIDNdKQotICAgICAgICA7Ci19CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9m
dW5jdGlvbnMtZXhwZWN0ZWQuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9y
ZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9mdW5jdGlvbnMtZXhwZWN0ZWQuanMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlZjhlNzZlODBlZGMwOWI0ODkxYjNhYTBkZDk4NWNmMGMy
MGNmNWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMv
ZnVuY3Rpb25zLWV4cGVjdGVkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLS8v
IENhbGxzCi0KLWZvbygpOwotZm9vKDEpOwotZm9vKDEsIDIpOwotZm9vKDEsIDIsICk7Ci1mb28o
MSwgMiwgMyk7Ci1mb28oZm9vKDEpKTsKLWZvbyhmb28oMSksIGZvbygyLCAzKSk7Ci1mb28oLi4u
c3ByZWFkKTsKLWZvbyh4LCAuLi5zcHJlYWQpOwotZm9vKHgsIC4uLmZvbygpKTsKLQotZm9vKHsK
LSAgICBhOiAxLAotICAgIGI6IDIsCi0gICAgYzogMwotfSk7Ci0KLWZvbygxLCAyLCAzLCBmdW5j
dGlvbihlKSB7Ci0gICAgZS5mb28oKQotfSk7Ci0KLWZvbyhmdW5jdGlvbihlKSB7Ci0gICAgZS5m
b28oKQotfSwgZnVuY3Rpb24oZSkgewotICAgIGUuYmFyKCkKLX0pOwotCi0vLyBCYXNpYyBGdW5j
dGlvbnMKLQotZnVuY3Rpb24gZigpIHt9Ci0oZnVuY3Rpb24oKSB7fSk7Ci0oZnVuY3Rpb24oKSB7
fSkoKTsKLShmdW5jdGlvbiBmKCkge30pOwotKGZ1bmN0aW9uIGYoKSB7fSkoKTsKLQotZnVuY3Rp
b24gZigpIHsKLSAgICAxCi19Ci0oZnVuY3Rpb24oKSB7Ci0gICAgMQotfSk7Ci0oZnVuY3Rpb24o
KSB7Ci0gICAgMQotfSkoKTsKLShmdW5jdGlvbiBmKCkgewotICAgIDEKLX0pOwotKGZ1bmN0aW9u
IGYoKSB7Ci0gICAgMQotfSkoKTsKLQotLy8gUGFyYW1ldGVycwotCi1mdW5jdGlvbiBmb28oYSwg
YiwgYykgewotICAgIDEKLX0KLQotZnVuY3Rpb24gZm9vKGE9MSwgYiwgYykgewotICAgIDEKLX0K
LQotZnVuY3Rpb24gZm9vKGE9MSwgYj0yLCBjPTMpIHsKLSAgICAxCi19Ci0KLWZ1bmN0aW9uIGZv
byhhLCAuLi5yZXN0KSB7Ci0gICAgMQotfQotCi1mdW5jdGlvbiBmb28oYT0xLCAuLi5yZXN0KSB7
Ci0gICAgMQotfQotCi1mdW5jdGlvbiBmb28oe2EsIGJ9KSB7Ci0gICAgMQotfQotCi1mdW5jdGlv
biBmb28oW2EsIGJdKSB7Ci0gICAgMQotfQotCi1mdW5jdGlvbiBmb28oW2EsIGIsIF0pIHsKLSAg
ICAxCi19Ci0KLS8vIE1ldGhvZHMKLQotbyA9IHsKLSAgICBwcm9wOiBmdW5jdGlvbigpIHt9LAot
ICAgIG1ldGhvZCgpIHt9LAotICAgIGdldCBnZXR0ZXIoKSB7fSwKLSAgICBzZXQgc2V0dGVyKHgp
IHt9LAotICAgICpnZW4xKCkge30sCi0gICAgKmdlbjIoKSB7fSwKLSAgICBhc3luYyBhKCkge30K
LX0KLQotbyA9IHsKLSAgICBwcm9wOiBmdW5jdGlvbigpIHsKLSAgICAgICAgMQotICAgIH0sCi0g
ICAgbWV0aG9kKCkgewotICAgICAgICAxCi0gICAgfSwKLSAgICBnZXQgZ2V0dGVyKCkgewotICAg
ICAgICAxCi0gICAgfSwKLSAgICBzZXQgc2V0dGVyKHgpIHsKLSAgICAgICAgMQotICAgIH0sCi0g
ICAgKmdlbjEoKSB7Ci0gICAgICAgIDEKLSAgICB9LAotICAgICpnZW4yKCkgewotICAgICAgICAx
Ci0gICAgfSwKLSAgICBhc3luYyBhKCkgewotICAgICAgICAxCi0gICAgfQotfQotLy8gTXVsdGlw
bGUgLyBOZXN0ZWQKLQotZnVuY3Rpb24gZigpIHt9Ci1mdW5jdGlvbiBmKCkge30KLQotZnVuY3Rp
b24gb3V0ZXIoKSB7Ci0gICAgMTsKLSAgICBmdW5jdGlvbiBpbm5lcigpIHsKLSAgICAgICAgMgot
ICAgIH0KLSAgICAzCi19Ci0KLS8vIEFzeW5jIC8gQXdhaXQKLQotYXN5bmMgZnVuY3Rpb24gZm9v
KCkge30KLWFzeW5jIGZ1bmN0aW9uIGZvbygpIHsKLSAgICAxCi19Ci1hc3luYyBmdW5jdGlvbiBm
b28oKSB7Ci0gICAgYXdhaXQgZm9vKCkKLX0KLW8gPSB7Ci0gICAgYXN5bmMgYXN5bmMoKSB7fSwK
LSAgICBhc3luYygpIHt9LAotICAgIGFzeW5jOiAxCi19Ci1vID0gewotICAgIGFzeW5jIDEoKSB7
fQotfQotbyA9IHsKLSAgICBhc3luYyAiZm9vIigpIHt9Ci19Ci1vID0gewotICAgIGFzeW5jIFsi
Zm9vIl0oKSB7fQotfQotbyA9IHsKLSAgICBmb286IGFzeW5jIGZ1bmN0aW9uKCkge30KLX0KLS8v
IENvbW1hcwotCi1mdW5jdGlvbiBmb28oKSB7Ci0gICAgYSgpLAotICAgIGIoKSwKLSAgICBjKCkK
LX0KLQotLy8gUmV0dXJuCi0KLWZ1bmN0aW9uIGZvbygpIHsKLSAgICByZXR1cm4KLX0KLWZ1bmN0
aW9uIGZvbygpIHsKLSAgICByZXR1cm4gNDIKLX0KLWZ1bmN0aW9uIGZvbygpIHsKLSAgICByZXR1
cm4gNDIsIGEoKSwgYigpCi19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9y
bWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9nZW5lcmF0b3JzLWV4cGVjdGVkLmpz
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQt
dGVzdHMvZ2VuZXJhdG9ycy1leHBlY3RlZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYzM3YjdmZGY4NjQwZTY1MjhjNjhiMDljZmJmZjM4NTc1MDlmMTQwOC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
Zm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9nZW5lcmF0b3JzLWV4cGVjdGVk
LmpzCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotZnVuY3Rpb24qIGdlbigpIHt9Ci1m
dW5jdGlvbiogZ2VuKCkgewotICAgIDEKLX0KLWZ1bmN0aW9uKiBnZW4oKSB7fQotZnVuY3Rpb24q
IGdlbigpIHsKLSAgICAxCi19Ci1mdW5jdGlvbiogZ2VuKCkge30KLWZ1bmN0aW9uKiBnZW4oKSB7
Ci0gICAgMQotfQotCi1mdW5jdGlvbiogZ2VuKCkgewotICAgIHlpZWxkCi19Ci1mdW5jdGlvbiog
Z2VuKCkgewotICAgIHlpZWxkIHgKLX0KLWZ1bmN0aW9uKiBnZW4oKSB7Ci0gICAgeWllbGQgIngi
Ci19Ci1mdW5jdGlvbiogZ2VuKCkgewotICAgIHlpZWxkIFt4XQotfQotZnVuY3Rpb24qIGdlbigp
IHsKLSAgICB5aWVsZCBmb28oKQotfQotCi1mdW5jdGlvbiogZ2VuKGE9MSwgW2IsIGNdLCAuLi5y
ZXN0KSB7Ci0gICAgcmV0dXJuIHlpZWxkIHlpZWxkIGZvbygiZm9vIikKLX0KLQotLy8gRVMyMDE4
IC0gQXN5bmMgSXRlcmF0aW9uIC8gQXN5bmMgR2VuZXJhdG9ycwotCi1hc3luYyBmdW5jdGlvbiog
Z2VuKCkge30KLWFzeW5jIGZ1bmN0aW9uKiBnZW4oKSB7Ci0gICAgMQotfQotYXN5bmMgZnVuY3Rp
b24qIGdlbigpIHt9Ci1hc3luYyBmdW5jdGlvbiogZ2VuKCkgewotICAgIDEKLX0KLWFzeW5jIGZ1
bmN0aW9uKiBnZW4oKSB7fQotYXN5bmMgZnVuY3Rpb24qIGdlbigpIHsKLSAgICAxCi19Ci0KLWFz
eW5jIGZ1bmN0aW9uKiBnZW4oKSB7Ci0gICAgeWllbGQKLX0KLWFzeW5jIGZ1bmN0aW9uKiBnZW4o
KSB7Ci0gICAgeWllbGQgeAotfQotYXN5bmMgZnVuY3Rpb24qIGdlbigpIHsKLSAgICB5aWVsZCAi
eCIKLX0KLWFzeW5jIGZ1bmN0aW9uKiBnZW4oKSB7Ci0gICAgeWllbGQgW3hdCi19Ci1hc3luYyBm
dW5jdGlvbiogZ2VuKCkgewotICAgIHlpZWxkIGZvbygpCi19Ci0KLWFzeW5jIGZ1bmN0aW9uKiBn
ZW4oYT0xLCBbYiwgY10sIC4uLnJlc3QpIHsKLSAgICByZXR1cm4geWllbGQgeWllbGQgZm9vKCJm
b28iKQotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVz
b3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvaWYtc3RhdGVtZW50LWV4cGVjdGVkLmpzIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvaWYt
c3RhdGVtZW50LWV4cGVjdGVkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjIw
ZGU2ZjQyMjdjZGQzYWZmMDA5MzM5YWNjYzM5NmFjOTE2OTYwLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0
aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2lmLXN0YXRlbWVudC1leHBlY3RlZC5qcwor
KysgL2Rldi9udWxsCkBAIC0xLDE3MCArMCwwIEBACi1pZiAodHJ1ZSkKLSAgICAxCi1pZiAodHJ1
ZSkKLSAgICAxOwotaWYgKHRydWUpIHt9Ci1pZiAodHJ1ZSkge30KLXgKLWlmICh0cnVlKSB7fQot
aWYgKHRydWUpIHt9Ci14Ci1pZiAodHJ1ZSkgewotICAgIDEKLX0KLWlmICh0cnVlKSB7Ci0gICAg
MQotfQoteAotaWYgKHRydWUpIHt9IGVsc2Uge30KLWlmICh0cnVlKSB7fSBlbHNlIHt9Ci14Ci1p
ZiAodHJ1ZSkgewotICAgIDEKLX0gZWxzZSB7fQotaWYgKHRydWUpIHsKLSAgICAxCi19IGVsc2Ug
ewotICAgIDIKLX0KLWlmICh0cnVlKSB7Ci0gICAgMQotfSBlbHNlIHsKLSAgICAyCi19Ci14Ci1p
ZiAodHJ1ZSkge30gZWxzZSBpZiAodHJ1ZSkge30KLWlmICh0cnVlKSB7Ci0gICAgMQotfSBlbHNl
IGlmICh0cnVlKSB7fQotaWYgKHRydWUpIHsKLSAgICAxCi19IGVsc2UgaWYgKHRydWUpIHsKLSAg
ICAyCi19Ci1pZiAodHJ1ZSkKLSAgICAxOwotZWxzZSBpZiAodHJ1ZSkKLSAgICAyCi1pZiAodHJ1
ZSkgewotICAgIDEKLX0gZWxzZSBpZiAodHJ1ZSkKLSAgICAyOwotZWxzZQotICAgIDMKLWlmICh0
cnVlKSB7Ci0gICAgMQotfSBlbHNlIGlmICh0cnVlKQotICAgIDI7Ci1lbHNlIHsKLSAgICAzCi19
Ci0KLWlmICh0cnVlKSB7fQotaWYgKCh0cnVlKSkKLSAgICA7Ci1pZiAoMSkKLSAgICA7Ci1pZiAo
MikKLSAgICA7Ci0KLWlmICh0cnVlKQotICAgIGlmIChmYWxzZSkKLSAgICAgICAgMTsKLSAgICBl
bHNlCi0gICAgICAgIDI7Ci0KLWlmICh0cnVlKQotICAgIGlmICh0cnVlKQotICAgICAgICBpZiAo
dHJ1ZSkKLSAgICAgICAgICAgIGlmICh0cnVlKQotICAgICAgICAgICAgICAgIDE7Ci0KLWlmICh0
cnVlKQotICAgIGlmICh0cnVlKQotICAgICAgICBpZiAodHJ1ZSkKLSAgICAgICAgICAgIGlmICh0
cnVlKQotICAgICAgICAgICAgICAgIDE7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgMjsKLQotaWYgKHRydWUpIHsKLSAgICBpZiAodHJ1ZSkgewotICAgICAgICAxOwotICAgICAg
ICBpZiAodHJ1ZSkgewotICAgICAgICAgICAgMgotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgMwotICAgICAgICB9Ci0gICAgICAgIDQKLSAgICB9Ci0gICAgNQotfQotCi1pZiAodHJ1ZSkg
ewotICAgIGlmICh0cnVlKSB7Ci0gICAgICAgIDE7Ci0gICAgICAgIGlmICh0cnVlKQotICAgICAg
ICAgICAgMjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgMzsKLSAgICAgICAgNAotICAgIH0K
LSAgICA1Ci19Ci0KLWlmICh0cnVlKSB7Ci0gICAgaWYgKHRydWUpCi0gICAgICAgIDE7Ci19IGVs
c2UgaWYgKHRydWUpCi0gICAgaWYgKHRydWUpCi0gICAgICAgIDIKLQotaWYgKHRydWUpCi0gICAg
aWYgKHRydWUpCi0gICAgICAgIGFsZXJ0KDEpOwotICAgIGVsc2UgaWYgKHRydWUpCi0gICAgICAg
IGFsZXJ0KDIpOwotICAgIGVsc2UKLSAgICAgICAgYWxlcnQoMyk7Ci0KLWlmICh0cnVlKQotICAg
IGlmICh0cnVlKSB7Ci0gICAgICAgIGFsZXJ0KDEpCi0gICAgfSBlbHNlCi0gICAgICAgIGFsZXJ0
KDIpOwotCi1pZiAodHJ1ZSkKLSAgICBpZiAodHJ1ZSkgewotICAgICAgICB2YXIgYSA9IDE7Ci0g
ICAgICAgIHZhciBiID0gewotICAgICAgICAgICAgYTogMQotICAgICAgICB9OwotICAgIH0gZWxz
ZQotICAgICAgICBhbGVydCgyKTsKLQotaWYgKHRydWUpIHsKLSAgICBpZiAoZmFsc2UpCi0gICAg
ICAgIGlmICh0cnVlKSB7Ci0gICAgICAgICAgICB0cnVlOwotICAgICAgICB9Ci0gICAgMjsKLX0K
LQotaWYgKHRydWUpIHsKLSAgICBpZiAoZmFsc2UpCi0gICAgICAgIGlmICh0cnVlKQotICAgICAg
ICAgICAgdHJ1ZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZmFsc2U7Ci0gICAgZWxzZSBp
ZiAodHJ1ZSkKLSAgICAgICAgdHJ1ZTsKLSAgICBlbHNlCi0gICAgICAgIGZhbHNlOwotfQotCi1p
ZiAodHJ1ZSkKLSAgICBpZiAodHJ1ZSkKLSAgICAgICAgMTsKLQotaWYgKDEsIDIsIDMpIHt9Ci1p
ZiAoMSwgMiwgMykge30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0
aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2ltcG9ydC1leHBlY3RlZC5qcyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2lt
cG9ydC1leHBlY3RlZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBjNDgwMzY2
ZWM1NjgzOTIyYjdjMjM4OTUyYjdiODBmYjdlMjc4ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9y
ZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9pbXBvcnQtZXhwZWN0ZWQuanMKKysrIC9kZXYvbnVs
bApAQCAtMSw2ICswLDAgQEAKLWltcG9ydCgiLi9Db2NvYS5qcyIpOwotaW1wb3J0KGhvc3QgKyAi
L0NvY29hLmpzIik7Ci0KLWFzeW5jIGZ1bmN0aW9uIGxvYWQoKSB7Ci0gICAgcmV0dXJuIGF3YWl0
IGltcG9ydCgiLi9DYXBwdWNjaW5vLmpzIik7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9sYWJlbC1icmVh
ay1jb250aW51ZS1ibG9jay1leHBlY3RlZC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3Jt
YXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2xhYmVsLWJyZWFrLWNvbnRpbnVlLWJs
b2NrLWV4cGVjdGVkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYmJjYmE3ZTEw
YTdlODc3NWQyM2ZkZjg2YzM3ZTZhYWFjMjYzNGY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jl
c291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2xhYmVsLWJyZWFrLWNvbnRpbnVlLWJsb2NrLWV4cGVj
dGVkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLXt9Ci07Ci17Ci0gICAgMQot
fQotOwotewotICAgIHt9Ci19Ci07Ci17Ci0gICAgewotICAgICAgICAxCi0gICAgfQotfQotOwot
ewotICAgIDE7Ci0gICAgewotICAgICAgICAyCi0gICAgfQotICAgIDMKLX0KLTQ7Ci17Ci0gICAg
bGFiZWw6Ci0gICAgMQotfQotOwotCi1sYWJlbDE6Ci1sYWJlbDI6Ci10cnVlOwotCi1sYWJlbDoK
LWZvciAoOzspCi0gICAgY29udGludWU7Ci1sYWJlbDoKLWZvciAoOzspIHsKLSAgICBjb250aW51
ZTsKLX0KLQotbGFiZWw6Ci13aGlsZSAoMSkKLSAgICBjb250aW51ZTsKLWxhYmVsOgotd2hpbGUg
KDEpIHsKLSAgICBjb250aW51ZTsKLX0KLQotbGFiZWw6Ci1mb3IgKDs7KQotICAgIGJyZWFrOwot
bGFiZWw6Ci1mb3IgKDs7KSB7Ci0gICAgYnJlYWs7Ci19Ci0KLWxhYmVsOgotd2hpbGUgKDEpCi0g
ICAgYnJlYWs7Ci1sYWJlbDoKLXdoaWxlICgxKSB7Ci0gICAgYnJlYWs7Ci19Ci0KLWxhYmVsOgot
Zm9yICg7OykKLSAgICBjb250aW51ZSBsYWJlbDsKLWxhYmVsOgotZm9yICg7OykgewotICAgIGNv
bnRpbnVlIGxhYmVsOwotfQotCi1sYWJlbDoKLXdoaWxlICgxKQotICAgIGNvbnRpbnVlIGxhYmVs
OwotbGFiZWw6Ci13aGlsZSAoMSkgewotICAgIGNvbnRpbnVlIGxhYmVsOwotfQotCi1sYWJlbDoK
LWZvciAoOzspCi0gICAgYnJlYWsgbGFiZWw7Ci1sYWJlbDoKLWZvciAoOzspIHsKLSAgICBicmVh
ayBsYWJlbDsKLX0KLQotbGFiZWw6Ci13aGlsZSAoMSkKLSAgICBicmVhayBsYWJlbDsKLWxhYmVs
Ogotd2hpbGUgKDEpIHsKLSAgICBicmVhayBsYWJlbDsKLX0KLQotb3V0ZXI6Ci13aGlsZSAodHJ1
ZSkgewotICAgIGlmIChmYWxzZSkKLSAgICAgICAgY29udGludWU7Ci0gICAgaWYgKHRydWUpCi0g
ICAgICAgIGNvbnRpbnVlIG91dGVyOwotICAgIGJyZWFrOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvbG9n
aWMtZXhwcmVzc2lvbnMtZXhwZWN0ZWQuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0
dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9sb2dpYy1leHByZXNzaW9ucy1leHBlY3Rl
ZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWRiNmYyODA2NTNlYTFkMjUxZGQx
MjdiOGVhM2RiMjg4MTFiYmQ4Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2
YXNjcmlwdC10ZXN0cy9sb2dpYy1leHByZXNzaW9ucy1leHBlY3RlZC5qcworKysgL2Rldi9udWxs
CkBAIC0xLDggKzAsMCBAQAotMSAmJiAxOwotMSB8fCAxOwotMSAmJiAxIHx8IDE7Ci0xIHx8IDEg
JiYgMTsKLTEgfHwgKDEpICYmIDE7Ci0oMSkgfHwgKDEpICYmIDE7Ci0oKDEpIHx8ICgxKSkgJiYg
MTsKLSgxKSB8fCAoKDEpICYmIDEpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvbW9kdWxlcy1leHBlY3RlZC5q
cyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0
LXRlc3RzL21vZHVsZXMtZXhwZWN0ZWQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDg3YTIyZGMxMjY0MzBjMWRhMzM2ZTVhOTNlYTYyYjIwOWE2NTI5ZjMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zv
cm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvbW9kdWxlcy1leHBlY3RlZC5qcwor
KysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLWltcG9ydCAibW9kdWxlIjsKLWltcG9ydCB4
IGZyb20gIm1vZHVsZSI7Ci1pbXBvcnQgeyB4IH0gZnJvbSAibW9kdWxlIjsKLWltcG9ydCB7IGEs
IGIsIGMgfSBmcm9tICJtb2R1bGUiOwotaW1wb3J0IHsgYSwgYiwgYywgIH0gZnJvbSAibW9kdWxl
IjsKLWltcG9ydCB7IGEgYXMgQSB9IGZyb20gIm1vZHVsZSI7Ci1pbXBvcnQgeyBhLCBhIGFzIEEs
IGEgfSBmcm9tICJtb2R1bGUiOwotaW1wb3J0IHsgYSBhcyBBLCBhIGFzIEEgfSBmcm9tICJtb2R1
bGUiOwotaW1wb3J0IGEsIHsgYSB9IGZyb20gIm1vZHVsZSI7Ci1pbXBvcnQgYSwgeyBhIGFzIEEg
fSBmcm9tICJtb2R1bGUiOwotaW1wb3J0IHgsICogYXMgQSBmcm9tICJtb2R1bGUiOwotaW1wb3J0
ICogYXMgQSBmcm9tICJtb2R1bGUiOwotCi1leHBvcnQgeyB4IH07Ci1leHBvcnQgbGV0IHg7Ci1l
eHBvcnQgdmFyIHg7Ci1leHBvcnQgY29uc3QgeCA9IDE7Ci1leHBvcnQgbGV0IHggPSAxLAotICAg
IHkgPSAxOwotZXhwb3J0IGxldCB7eCwgeSwgen0gPSBvOwotZXhwb3J0IGxldCBbeCwgeSwgel0g
PSBhOwotZXhwb3J0IHsgeCBhcyBYIH07Ci1leHBvcnQgeyB4IGFzIFgsIGEgYXMgQSB9OwotZXhw
b3J0ICogZnJvbSAibW9kdWxlIjsKLWV4cG9ydCB7IHggfSBmcm9tICJtb2R1bGUiOwotZXhwb3J0
IHsgeCwgeSB9IGZyb20gIm1vZHVsZSI7Ci1leHBvcnQgeyB4IGFzIEEgfSBmcm9tICJtb2R1bGUi
OwotZXhwb3J0IHsgeCBhcyBkZWZhdWx0IH07Ci1leHBvcnQgZGVmYXVsdCB4OwotZXhwb3J0IGRl
ZmF1bHQgMTsKLWV4cG9ydCBkZWZhdWx0IHt9OwotZXhwb3J0IGRlZmF1bHQgKDEpOwotZXhwb3J0
IGRlZmF1bHQgWzFdOwotZXhwb3J0IGRlZmF1bHQgL3IvOwotZXhwb3J0IGRlZmF1bHQgZnVuY3Rp
b24oKSB7fQotZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZigpIHt9Ci1leHBvcnQgZGVmYXVsdCBm
dW5jdGlvbiogKCkge30KLWV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKiBmKCkge30KLWV4cG9ydCBk
ZWZhdWx0IGNsYXNzIHt9Ci1leHBvcnQgZGVmYXVsdCBjbGFzcyBYIHt9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0
cy9uZXctZXhwcmVzc2lvbi1leHBlY3RlZC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3Jt
YXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL25ldy1leHByZXNzaW9uLWV4cGVjdGVk
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjRlMzY1YTE4MzM0YzM4ZTNkMmM0
ZDY4MjY5ZWViNmU4OGU0MWYwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZh
c2NyaXB0LXRlc3RzL25ldy1leHByZXNzaW9uLWV4cGVjdGVkLmpzCisrKyAvZGV2L251bGwKQEAg
LTEsNSArMCwwIEBACi1uZXcgRm9vOwotbmV3IEZvbygpOwotbmV3IChGb28pKCk7Ci1uZXcgKGZv
bygpKSgpOwotbmV3IFtGb29dWzBdOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvbnVtYmVycy1leHBlY3RlZC5q
cyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0
LXRlc3RzL251bWJlcnMtZXhwZWN0ZWQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDMzMjA2NmNhZWJjOWQwODc2NmZkZmRiZjZhY2Q2MDU5NWMwY2YwNzAuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zv
cm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvbnVtYmVycy1leHBlY3RlZC5qcwor
KysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8vIEJhc2ljcwotMDsKLTE7Ci0xMjM7Ci1O
YU47Ci1JbmZpbml0eTsKLQotLy8gRmxvYXRzCi0xLjI7Ci0xZTI7Ci0xLmUzOwotMS4yZTM7Ci0x
LjJlKzM7Ci0xLjJlLTM7Ci0KLS8vIERlY2ltYWwgUHJlZml4Ci0uMjsKLS4yZTM7Ci0uMmUrMzsK
LS4yZS0zOwotCi0vLyBaZXJvIFByZWZpeGVkIC8gTGVnYWN5IE9jdGFsCi0wMDsKLTAxMDsKLTAw
OTsKLQotLy8gSGV4LCBPY3RhbCwgQmluYXJ5Ci0weDEwMTsKLTBYMjAxOwotMG8xMDE7Ci0wTzIw
MTsKLTBiMTAxOwotMEIxMDE7Ci0KLS8vIEVTMjAxOSAtIE51bWVyaWMgU2VwYXJhdG9ycwotMV8y
XzNfNDsKLTFfMDAwXzAwMDsKLTEwMDAwXzAwOwotMV8wMDAwMDBfMF8wXzA7Ci0xXzIuM180ZTVf
NjsKLTFfMS4yXzI7Ci0xXzFlMl8yOwotMHgxXzA7Ci0wWDJfMDsKLTBvMV8wOwotME8yXzA7Ci0w
YjFfMDsKLTBCMV8wOwotCi0vLyBFUzIwMjAgLSBCaWdJbnQKLTBuOwotMTIzbjsKLTEyMzQ1Njc4
OTEyMzQ1Njc4OTEyMzQ1Njc4OTEyMzQ1Njc4OTEyMzQ1Njc4OTEyMzQ1Njc4OTEyMzQ1Njc4OW47
Ci0xXzJfM247Ci0weDEyM247Ci0weDIyM247Ci0wbzEyM247Ci0wTzIyM247Ci0wYjEwMW47Ci0w
QjEwMW47CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNv
dXJjZXMvamF2YXNjcmlwdC10ZXN0cy9vYmplY3QtYXJyYXktbGl0ZXJhbC1leHBlY3RlZC5qcyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRl
c3RzL29iamVjdC1hcnJheS1saXRlcmFsLWV4cGVjdGVkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAxZTE1YTExZmE1ZjNlZTBmN2M0NDY4YTZhZDM5N2E4MzAzMTZmMWRhLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL29iamVjdC1hcnJh
eS1saXRlcmFsLWV4cGVjdGVkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotKHt9
KQotKHsKLSAgICBhCi19KQotCi1vID0ge30KLW8gPSB7Ci0gICAgYQotfQotbyA9IHsKLSAgICBh
LAotICAgIGIKLX0KLW8gPSB7Ci0gICAgYTogMQotfQotbyA9IHsKLSAgICBhOiAxLAotICAgIGI6
IDIKLX0KLW8gPSB7Ci0gICAgYTogMSwKLSAgICBiOiAyLAotICAgIGM6IDMKLX0KLW8gPSB7Ci0g
ICAgYTogMSwKLSAgICBiOiAyLAotICAgIGM6IDMsCi0gICAgZDogNAotfQotbyA9IHsKLSAgICBh
OiAxLAotICAgIGI6IDIsCi0gICAgYzogMywKLSAgICBkOiA0LAotICAgIC4uLmUKLX0KLW8gPSB7
Ci0gICAgLi4uYQotfQotCi07Ci1bXTsKLVsxLCAyXTsKLQotYSA9IFtdOwotYSA9IFsxXTsKLWEg
PSBbMSwgMl07Ci1hID0gWzEsIDIsIDNdOwotYSA9IFsxLCAyLCAzLCA0XTsKLWEgPSBbMSwgMiwg
MywgNCwgNV07Ci0KLW8gPSB7Ci0gICAgb3V0ZXI6IHsKLSAgICAgICAgYTogMSwKLSAgICAgICAg
YjogMgotICAgIH0KLX0KLQotbyA9IHsKLSAgICBbeF06IHsKLSAgICAgICAgYTogMSwKLSAgICAg
ICAgYjogMiwKLSAgICAgICAgYzogMywKLSAgICAgICAgZDogNAotICAgIH0KLX0KLQotbyA9IHsK
LSAgICBhOiB7Ci0gICAgICAgIGE6IDEKLSAgICB9LAotICAgIGI6IHsKLSAgICAgICAgYTogMQot
ICAgIH0sCi0gICAgYzogewotICAgICAgICBhOiAxCi0gICAgfQotfQotCi1vID0gewotICAgIGE6
IFsxLCAyLCAzXQotfQotCi1hID0gW1sxXSwgWzJdLCBbM10sIFs0XSwgWzVdXQotCi1hID0gW3sK
LSAgICBhOiAxLAotICAgIGI6IDIsCi0gICAgYzogMywKLSAgICBkOiA0Ci19XQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQt
dGVzdHMvb3RoZXItc3RhdGVtZW50cy1leHBlY3RlZC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL290aGVyLXN0YXRlbWVudHMt
ZXhwZWN0ZWQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiMWUyOTZkNjY4YTQ1
MjI4NWNjMjU4NjhlNmUwYjdhNjE3MTVmZTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3Vy
Y2VzL2phdmFzY3JpcHQtdGVzdHMvb3RoZXItc3RhdGVtZW50cy1leHBlY3RlZC5qcworKysgL2Rl
di9udWxsCkBAIC0xLDE2ICswLDAgQEAKLXRocm93IDE7Ci10aHJvdyB4OwotdGhyb3cgW107Ci10
aHJvdyAoMSk7Ci10aHJvdyAieCI7Ci10aHJvdyBuZXcgeDsKLXRocm93IHsKLSAgICBhOiAxCi19
OwotCi1kZWxldGUgeDsKLWRlbGV0ZSB4LmE7Ci1kZWxldGUgeFswXTsKLQotZGVidWdnZXIKLWRl
YnVnZ2VyOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVz
b3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvcmV0dXJuLXN0YXRlbWVudC1leHBlY3RlZC5qcyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3Rz
L3JldHVybi1zdGF0ZW1lbnQtZXhwZWN0ZWQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDQ5MjRjZTc2MzczNjBiYzQwMDU0OWQ1MDQxZjU1MDY3MDMyYjljZjMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvcmV0dXJuLXN0YXRlbWVudC1l
eHBlY3RlZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLShmdW5jdGlvbigpIHsK
LSAgICByZXR1cm4KLX0pKCk7Ci0KLShmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gMQotfSkoKTsK
LQotKGZ1bmN0aW9uKCkgewotICAgIGlmICh0cnVlKQotICAgICAgICByZXR1cm4gMTsKLSAgICBy
ZXR1cm4gZmFsc2UKLX0pKCk7Ci0KLShmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gewotICAgICAg
ICBhOiAxLAotICAgICAgICBiOiAyCi0gICAgfQotfSkoKTsKLQotKGZ1bmN0aW9uKCkgewotICAg
IHJldHVybiBmdW5jdGlvbigpIHsKLSAgICAgICAgMQotICAgIH0KLX0pKCk7Ci0KLShmdW5jdGlv
bigpIHsKLSAgICByZXR1cm4gYQotICAgICAgICB8fCBiCi0gICAgICAgIHx8IGM7Ci19KSgpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2ph
dmFzY3JpcHQtdGVzdHMvc2FtcGxlLWpxdWVyeS1leHBlY3RlZC5qcyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3NhbXBsZS1qcXVl
cnktZXhwZWN0ZWQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxZjFmOTcxZDAy
Y2Q5MWU2NjE5MWViZjk1N2UwZjVhMjg1YjM2MjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVz
b3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvc2FtcGxlLWpxdWVyeS1leHBlY3RlZC5qcworKysgL2Rl
di9udWxsCkBAIC0xLDQxNjkgKzAsMCBAQAotLyohIGpRdWVyeSB2MS45LjEgfCAoYykgMjAwNSwg
MjAxMiBqUXVlcnkgRm91bmRhdGlvbiwgSW5jLiB8IGpxdWVyeS5vcmcvbGljZW5zZQotLy9AIHNv
dXJjZU1hcHBpbmdVUkw9anF1ZXJ5Lm1pbi5tYXAKLSovCi0oZnVuY3Rpb24oZSwgdCkgewotICAg
IHZhciBuLAotICAgICAgICByLAotICAgICAgICBpID0gdHlwZW9mIHQsCi0gICAgICAgIG8gPSBl
LmRvY3VtZW50LAotICAgICAgICBhID0gZS5sb2NhdGlvbiwKLSAgICAgICAgcyA9IGUualF1ZXJ5
LAotICAgICAgICB1ID0gZS4kLAotICAgICAgICBsID0ge30sCi0gICAgICAgIGMgPSBbXSwKLSAg
ICAgICAgcCA9ICIxLjkuMSIsCi0gICAgICAgIGYgPSBjLmNvbmNhdCwKLSAgICAgICAgZCA9IGMu
cHVzaCwKLSAgICAgICAgaCA9IGMuc2xpY2UsCi0gICAgICAgIGcgPSBjLmluZGV4T2YsCi0gICAg
ICAgIG0gPSBsLnRvU3RyaW5nLAotICAgICAgICB5ID0gbC5oYXNPd25Qcm9wZXJ0eSwKLSAgICAg
ICAgdiA9IHAudHJpbSwKLSAgICAgICAgYiA9IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAg
IHJldHVybiBuZXcgYi5mbi5pbml0KGUsIHQsIHIpCi0gICAgICAgIH0sCi0gICAgICAgIHggPSAv
WystXT8oPzpcZCpcLnwpXGQrKD86W2VFXVsrLV0/XGQrfCkvLnNvdXJjZSwKLSAgICAgICAgdyA9
IC9cUysvZywKLSAgICAgICAgVCA9IC9eW1xzXHVGRUZGXHhBMF0rfFtcc1x1RkVGRlx4QTBdKyQv
ZywKLSAgICAgICAgTiA9IC9eKD86KDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKikpJC8sCi0gICAg
ICAgIEMgPSAvXjwoXHcrKVxzKlwvPz4oPzo8XC9cMT58KSQvLAotICAgICAgICBrID0gL15bXF0s
Ont9XHNdKiQvLAotICAgICAgICBFID0gLyg/Ol58OnwsKSg/OlxzKlxbKSsvZywKLSAgICAgICAg
UyA9IC9cXCg/OlsiXFxcL2JmbnJ0XXx1W1xkYS1mQS1GXXs0fSkvZywKLSAgICAgICAgQSA9IC8i
W14iXFxcclxuXSoifHRydWV8ZmFsc2V8bnVsbHwtPyg/OlxkK1wufClcZCsoPzpbZUVdWystXT9c
ZCt8KS9nLAotICAgICAgICBqID0gL14tbXMtLywKLSAgICAgICAgRCA9IC8tKFtcZGEtel0pL2dp
LAotICAgICAgICBMID0gZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAgcmV0dXJuIHQudG9V
cHBlckNhc2UoKQotICAgICAgICB9LAotICAgICAgICBIID0gZnVuY3Rpb24oZSkgewotICAgICAg
ICAgICAgKG8uYWRkRXZlbnRMaXN0ZW5lciB8fCAibG9hZCIgPT09IGUudHlwZSB8fCAiY29tcGxl
dGUiID09PSBvLnJlYWR5U3RhdGUpICYmIChxKCksIGIucmVhZHkoKSkKLSAgICAgICAgfSwKLSAg
ICAgICAgcSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgby5hZGRFdmVudExpc3RlbmVyID8g
KG8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIEgsICExKSwgZS5yZW1v
dmVFdmVudExpc3RlbmVyKCJsb2FkIiwgSCwgITEpKSA6IChvLmRldGFjaEV2ZW50KCJvbnJlYWR5
c3RhdGVjaGFuZ2UiLCBIKSwgZS5kZXRhY2hFdmVudCgib25sb2FkIiwgSCkpCi0gICAgICAgIH07
Ci0gICAgYi5mbiA9IGIucHJvdG90eXBlID0gewotICAgICAgICBqcXVlcnk6IHAsCi0gICAgICAg
IGNvbnN0cnVjdG9yOiBiLAotICAgICAgICBpbml0OiBmdW5jdGlvbihlLCBuLCByKSB7Ci0gICAg
ICAgICAgICB2YXIgaSwKLSAgICAgICAgICAgICAgICBhOwotICAgICAgICAgICAgaWYgKCFlKQot
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICAgICAgaWYgKCJzdHJpbmciID09
IHR5cGVvZiBlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGkgPSAiPCIgPT09IGUuY2hhckF0KDAp
ICYmICI+IiA9PT0gZS5jaGFyQXQoZS5sZW5ndGggLSAxKSAmJiBlLmxlbmd0aCA+PSAzID8gW251
bGwsIGUsIG51bGxdIDogTi5leGVjKGUpLCAhaSB8fCAhaVsxXSAmJiBuKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gIW4gfHwgbi5qcXVlcnkgPyAobiB8fCByKS5maW5kKGUpIDogdGhpcy5j
b25zdHJ1Y3RvcihuKS5maW5kKGUpOwotICAgICAgICAgICAgICAgIGlmIChpWzFdKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChuID0gbiBpbnN0YW5jZW9mIGIgPyBuWzBdIDogbiwgYi5tZXJn
ZSh0aGlzLCBiLnBhcnNlSFRNTChpWzFdLCBuICYmIG4ubm9kZVR5cGUgPyBuLm93bmVyRG9jdW1l
bnQgfHwgbiA6IG8sICEwKSksIEMudGVzdChpWzFdKSAmJiBiLmlzUGxhaW5PYmplY3QobikpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgaW4gbikKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBiLmlzRnVuY3Rpb24odGhpc1tpXSkgPyB0aGlzW2ldKG5baV0pIDogdGhpcy5hdHRy
KGksIG5baV0pOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoYSA9IG8uZ2V0RWxlbWVudEJ5SWQoaVsyXSksIGEg
JiYgYS5wYXJlbnROb2RlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhLmlkICE9PSBpWzJd
KQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIuZmluZChlKTsKLSAgICAgICAgICAg
ICAgICAgICAgdGhpcy5sZW5ndGggPSAxLAotICAgICAgICAgICAgICAgICAgICB0aGlzWzBdID0g
YQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0
ID0gbywgdGhpcy5zZWxlY3RvciA9IGUsIHRoaXMKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHJldHVybiBlLm5vZGVUeXBlID8gKHRoaXMuY29udGV4dCA9IHRoaXNbMF0gPSBlLCB0aGlzLmxl
bmd0aCA9IDEsIHRoaXMpIDogYi5pc0Z1bmN0aW9uKGUpID8gci5yZWFkeShlKSA6IChlLnNlbGVj
dG9yICE9PSB0ICYmICh0aGlzLnNlbGVjdG9yID0gZS5zZWxlY3RvciwgdGhpcy5jb250ZXh0ID0g
ZS5jb250ZXh0KSwgYi5tYWtlQXJyYXkoZSwgdGhpcykpCi0gICAgICAgIH0sCi0gICAgICAgIHNl
bGVjdG9yOiAiIiwKLSAgICAgICAgbGVuZ3RoOiAwLAotICAgICAgICBzaXplOiBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLmxlbmd0aAotICAgICAgICB9LAotICAgICAgICB0
b0FycmF5OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiBoLmNhbGwodGhpcykKLSAg
ICAgICAgfSwKLSAgICAgICAgZ2V0OiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICByZXR1cm4g
bnVsbCA9PSBlID8gdGhpcy50b0FycmF5KCkgOiAwID4gZSA/IHRoaXNbdGhpcy5sZW5ndGggKyBl
XSA6IHRoaXNbZV0KLSAgICAgICAgfSwKLSAgICAgICAgcHVzaFN0YWNrOiBmdW5jdGlvbihlKSB7
Ci0gICAgICAgICAgICB2YXIgdCA9IGIubWVyZ2UodGhpcy5jb25zdHJ1Y3RvcigpLCBlKTsKLSAg
ICAgICAgICAgIHJldHVybiB0LnByZXZPYmplY3QgPSB0aGlzLCB0LmNvbnRleHQgPSB0aGlzLmNv
bnRleHQsIHQKLSAgICAgICAgfSwKLSAgICAgICAgZWFjaDogZnVuY3Rpb24oZSwgdCkgewotICAg
ICAgICAgICAgcmV0dXJuIGIuZWFjaCh0aGlzLCBlLCB0KQotICAgICAgICB9LAotICAgICAgICBy
ZWFkeTogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgcmV0dXJuIGIucmVhZHkucHJvbWlzZSgp
LmRvbmUoZSksIHRoaXMKLSAgICAgICAgfSwKLSAgICAgICAgc2xpY2U6IGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKGguYXBwbHkodGhpcywgYXJndW1lbnRz
KSkKLSAgICAgICAgfSwKLSAgICAgICAgZmlyc3Q6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
cmV0dXJuIHRoaXMuZXEoMCkKLSAgICAgICAgfSwKLSAgICAgICAgbGFzdDogZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5lcSgtMSkKLSAgICAgICAgfSwKLSAgICAgICAgZXE6
IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHZhciB0ID0gdGhpcy5sZW5ndGgsCi0gICAgICAg
ICAgICAgICAgbiA9ICtlICsgKDAgPiBlID8gdCA6IDApOwotICAgICAgICAgICAgcmV0dXJuIHRo
aXMucHVzaFN0YWNrKG4gPj0gMCAmJiB0ID4gbiA/IFt0aGlzW25dXSA6IFtdKQotICAgICAgICB9
LAotICAgICAgICBtYXA6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLnB1
c2hTdGFjayhiLm1hcCh0aGlzLCBmdW5jdGlvbih0LCBuKSB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGUuY2FsbCh0LCBuLCB0KQotICAgICAgICAgICAgfSkpCi0gICAgICAgIH0sCi0gICAgICAg
IGVuZDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5wcmV2T2JqZWN0IHx8
IHRoaXMuY29uc3RydWN0b3IobnVsbCkKLSAgICAgICAgfSwKLSAgICAgICAgcHVzaDogZCwKLSAg
ICAgICAgc29ydDogW10uc29ydCwKLSAgICAgICAgc3BsaWNlOiBbXS5zcGxpY2UKLSAgICB9LAot
ICAgIGIuZm4uaW5pdC5wcm90b3R5cGUgPSBiLmZuLAotICAgIGIuZXh0ZW5kID0gYi5mbi5leHRl
bmQgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIGUsCi0gICAgICAgICAgICBuLAotICAgICAg
ICAgICAgciwKLSAgICAgICAgICAgIGksCi0gICAgICAgICAgICBvLAotICAgICAgICAgICAgYSwK
LSAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbMF0gfHwge30sCi0gICAgICAgICAgICB1ID0gMSwK
LSAgICAgICAgICAgIGwgPSBhcmd1bWVudHMubGVuZ3RoLAotICAgICAgICAgICAgYyA9ICExOwot
ICAgICAgICBmb3IgKCJib29sZWFuIiA9PSB0eXBlb2YgcyAmJiAoYyA9IHMsIHMgPSBhcmd1bWVu
dHNbMV0gfHwge30sIHUgPSAyKSwgIm9iamVjdCIgPT0gdHlwZW9mIHMgfHwgYi5pc0Z1bmN0aW9u
KHMpIHx8IChzID0ge30pLCBsID09PSB1ICYmIChzID0gdGhpcywgLS11KTsgbCA+IHU7IHUrKykK
LSAgICAgICAgICAgIGlmIChudWxsICE9IChvID0gYXJndW1lbnRzW3VdKSkKLSAgICAgICAgICAg
ICAgICBmb3IgKGkgaW4gbykKLSAgICAgICAgICAgICAgICAgICAgZSA9IHNbaV0sCi0gICAgICAg
ICAgICAgICAgICAgIHIgPSBvW2ldLAotICAgICAgICAgICAgICAgICAgICBzICE9PSByICYmIChj
ICYmIHIgJiYgKGIuaXNQbGFpbk9iamVjdChyKSB8fCAobiA9IGIuaXNBcnJheShyKSkpID8gKG4g
PyAobiA9ICExLCBhID0gZSAmJiBiLmlzQXJyYXkoZSkgPyBlIDogW10pIDogYSA9IGUgJiYgYi5p
c1BsYWluT2JqZWN0KGUpID8gZSA6IHt9LCBzW2ldID0gYi5leHRlbmQoYywgYSwgcikpIDogciAh
PT0gdCAmJiAoc1tpXSA9IHIpKTsKLSAgICAgICAgcmV0dXJuIHMKLSAgICB9LAotICAgIGIuZXh0
ZW5kKHsKLSAgICAgICAgbm9Db25mbGljdDogZnVuY3Rpb24odCkgewotICAgICAgICAgICAgcmV0
dXJuIGUuJCA9PT0gYiAmJiAoZS4kID0gdSksIHQgJiYgZS5qUXVlcnkgPT09IGIgJiYgKGUualF1
ZXJ5ID0gcyksIGIKLSAgICAgICAgfSwKLSAgICAgICAgaXNSZWFkeTogITEsCi0gICAgICAgIHJl
YWR5V2FpdDogMSwKLSAgICAgICAgaG9sZFJlYWR5OiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAg
ICBlID8gYi5yZWFkeVdhaXQrKyA6IGIucmVhZHkoITApCi0gICAgICAgIH0sCi0gICAgICAgIHJl
YWR5OiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBpZiAoZSA9PT0gITAgPyAhLS1iLnJlYWR5
V2FpdCA6ICFiLmlzUmVhZHkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIW8uYm9keSkKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoYi5yZWFkeSk7Ci0gICAgICAgICAgICAg
ICAgYi5pc1JlYWR5ID0gITAsCi0gICAgICAgICAgICAgICAgZSAhPT0gITAgJiYgLS1iLnJlYWR5
V2FpdCA+IDAgfHwgKG4ucmVzb2x2ZVdpdGgobywgW2JdKSwgYi5mbi50cmlnZ2VyICYmIGIobyku
dHJpZ2dlcigicmVhZHkiKS5vZmYoInJlYWR5IikpCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0s
Ci0gICAgICAgIGlzRnVuY3Rpb246IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHJldHVybiAi
ZnVuY3Rpb24iID09PSBiLnR5cGUoZSkKLSAgICAgICAgfSwKLSAgICAgICAgaXNBcnJheTogQXJy
YXkuaXNBcnJheSB8fCBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICByZXR1cm4gImFycmF5IiA9
PT0gYi50eXBlKGUpCi0gICAgICAgIH0sCi0gICAgICAgIGlzV2luZG93OiBmdW5jdGlvbihlKSB7
Ci0gICAgICAgICAgICByZXR1cm4gbnVsbCAhPSBlICYmIGUgPT0gZS53aW5kb3cKLSAgICAgICAg
fSwKLSAgICAgICAgaXNOdW1lcmljOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICByZXR1cm4g
IWlzTmFOKHBhcnNlRmxvYXQoZSkpICYmIGlzRmluaXRlKGUpCi0gICAgICAgIH0sCi0gICAgICAg
IHR5cGU6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHJldHVybiBudWxsID09IGUgPyBlICsg
IiIgOiAib2JqZWN0IiA9PSB0eXBlb2YgZSB8fCAiZnVuY3Rpb24iID09IHR5cGVvZiBlID8gbFtt
LmNhbGwoZSldIHx8ICJvYmplY3QiIDogdHlwZW9mIGUKLSAgICAgICAgfSwKLSAgICAgICAgaXNQ
bGFpbk9iamVjdDogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgaWYgKCFlIHx8ICJvYmplY3Qi
ICE9PSBiLnR5cGUoZSkgfHwgZS5ub2RlVHlwZSB8fCBiLmlzV2luZG93KGUpKQotICAgICAgICAg
ICAgICAgIHJldHVybiAhMTsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGUuY29uc3RydWN0b3IgJiYgIXkuY2FsbChlLCAiY29uc3RydWN0b3IiKSAmJiAheS5jYWxsKGUu
Y29uc3RydWN0b3IucHJvdG90eXBlLCAiaXNQcm90b3R5cGVPZiIpKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gITEKLSAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gITEKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhciByOwotICAgICAgICAg
ICAgZm9yIChyIGluIGUpCi0gICAgICAgICAgICAgICAgOwotICAgICAgICAgICAgcmV0dXJuIHIg
PT09IHQgfHwgeS5jYWxsKGUsIHIpCi0gICAgICAgIH0sCi0gICAgICAgIGlzRW1wdHlPYmplY3Q6
IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHZhciB0OwotICAgICAgICAgICAgZm9yICh0IGlu
IGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuICExOwotICAgICAgICAgICAgcmV0dXJuICEwCi0g
ICAgICAgIH0sCi0gICAgICAgIGVycm9yOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICB0aHJv
dyBFcnJvcihlKQotICAgICAgICB9LAotICAgICAgICBwYXJzZUhUTUw6IGZ1bmN0aW9uKGUsIHQs
IG4pIHsKLSAgICAgICAgICAgIGlmICghZSB8fCAic3RyaW5nIiAhPSB0eXBlb2YgZSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgICJib29sZWFuIiA9PSB0eXBlb2Yg
dCAmJiAobiA9IHQsIHQgPSAhMSksCi0gICAgICAgICAgICB0ID0gdCB8fCBvOwotICAgICAgICAg
ICAgdmFyIHIgPSBDLmV4ZWMoZSksCi0gICAgICAgICAgICAgICAgaSA9ICFuICYmIFtdOwotICAg
ICAgICAgICAgcmV0dXJuIHIgPyBbdC5jcmVhdGVFbGVtZW50KHJbMV0pXSA6IChyID0gYi5idWls
ZEZyYWdtZW50KFtlXSwgdCwgaSksIGkgJiYgYihpKS5yZW1vdmUoKSwgYi5tZXJnZShbXSwgci5j
aGlsZE5vZGVzKSkKLSAgICAgICAgfSwKLSAgICAgICAgcGFyc2VKU09OOiBmdW5jdGlvbihuKSB7
Ci0gICAgICAgICAgICByZXR1cm4gZS5KU09OICYmIGUuSlNPTi5wYXJzZSA/IGUuSlNPTi5wYXJz
ZShuKSA6IG51bGwgPT09IG4gPyBuIDogInN0cmluZyIgPT0gdHlwZW9mIG4gJiYgKG4gPSBiLnRy
aW0obiksIG4gJiYgay50ZXN0KG4ucmVwbGFjZShTLCAiQCIpLnJlcGxhY2UoQSwgIl0iKS5yZXBs
YWNlKEUsICIiKSkpID8gRnVuY3Rpb24oInJldHVybiAiICsgbikoKSA6IChiLmVycm9yKCJJbnZh
bGlkIEpTT046ICIgKyBuKSwgdCkKLSAgICAgICAgfSwKLSAgICAgICAgcGFyc2VYTUw6IGZ1bmN0
aW9uKG4pIHsKLSAgICAgICAgICAgIHZhciByLAotICAgICAgICAgICAgICAgIGk7Ci0gICAgICAg
ICAgICBpZiAoIW4gfHwgInN0cmluZyIgIT0gdHlwZW9mIG4pCi0gICAgICAgICAgICAgICAgcmV0
dXJuIG51bGw7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGUuRE9NUGFyc2Vy
ID8gKGkgPSBuZXcgRE9NUGFyc2VyLCByID0gaS5wYXJzZUZyb21TdHJpbmcobiwgInRleHQveG1s
IikpIDogKHIgPSBuZXcgQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTERPTSIpLCByLmFzeW5j
ID0gImZhbHNlIiwgci5sb2FkWE1MKG4pKQotICAgICAgICAgICAgfSBjYXRjaCAobykgewotICAg
ICAgICAgICAgICAgIHIgPSB0Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gciAm
JiByLmRvY3VtZW50RWxlbWVudCAmJiAhci5nZXRFbGVtZW50c0J5VGFnTmFtZSgicGFyc2VyZXJy
b3IiKS5sZW5ndGggfHwgYi5lcnJvcigiSW52YWxpZCBYTUw6ICIgKyBuKSwgcgotICAgICAgICB9
LAotICAgICAgICBub29wOiBmdW5jdGlvbigpIHt9LAotICAgICAgICBnbG9iYWxFdmFsOiBmdW5j
dGlvbih0KSB7Ci0gICAgICAgICAgICB0ICYmIGIudHJpbSh0KSAmJiAoZS5leGVjU2NyaXB0IHx8
IGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgICAgICAgICBlLmV2YWwuY2FsbChlLCB0KQotICAgICAg
ICAgICAgfSkodCkKLSAgICAgICAgfSwKLSAgICAgICAgY2FtZWxDYXNlOiBmdW5jdGlvbihlKSB7
Ci0gICAgICAgICAgICByZXR1cm4gZS5yZXBsYWNlKGosICJtcy0iKS5yZXBsYWNlKEQsIEwpCi0g
ICAgICAgIH0sCi0gICAgICAgIG5vZGVOYW1lOiBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAg
ICByZXR1cm4gZS5ub2RlTmFtZSAmJiBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHQudG9M
b3dlckNhc2UoKQotICAgICAgICB9LAotICAgICAgICBlYWNoOiBmdW5jdGlvbihlLCB0LCBuKSB7
Ci0gICAgICAgICAgICB2YXIgciwKLSAgICAgICAgICAgICAgICBpID0gMCwKLSAgICAgICAgICAg
ICAgICBvID0gZS5sZW5ndGgsCi0gICAgICAgICAgICAgICAgYSA9IE0oZSk7Ci0gICAgICAgICAg
ICBpZiAobikgewotICAgICAgICAgICAgICAgIGlmIChhKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGZvciAoOyBvID4gaTsgaSsrKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSB0LmFw
cGx5KGVbaV0sIG4pLCByID09PSAhMSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
awotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBmb3IgKGkgaW4g
ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gdC5hcHBseShlW2ldLCBuKSwgciA9
PT0gITEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAoYSkgewotICAgICAgICAgICAgICAgIGZvciAoOyBvID4gaTsgaSsrKQotICAgICAg
ICAgICAgICAgICAgICBpZiAociA9IHQuY2FsbChlW2ldLCBpLCBlW2ldKSwgciA9PT0gITEpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICAgICAgZm9yIChpIGluIGUpCi0gICAgICAgICAgICAgICAgICAgIGlmIChyID0gdC5jYWxs
KGVbaV0sIGksIGVbaV0pLCByID09PSAhMSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgcmV0dXJuIGUKLSAgICAgICAgfSwKLSAgICAgICAgdHJpbTogdiAmJiAh
di5jYWxsKCJcdWZlZmZcdTAwYTAiKSA/IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHJldHVy
biBudWxsID09IGUgPyAiIiA6IHYuY2FsbChlKQotICAgICAgICB9IDogZnVuY3Rpb24oZSkgewot
ICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gZSA/ICIiIDogKGUgKyAiIikucmVwbGFjZShULCAi
IikKLSAgICAgICAgfSwKLSAgICAgICAgbWFrZUFycmF5OiBmdW5jdGlvbihlLCB0KSB7Ci0gICAg
ICAgICAgICB2YXIgbiA9IHQgfHwgW107Ci0gICAgICAgICAgICByZXR1cm4gbnVsbCAhPSBlICYm
IChNKE9iamVjdChlKSkgPyBiLm1lcmdlKG4sICJzdHJpbmciID09IHR5cGVvZiBlID8gW2VdIDog
ZSkgOiBkLmNhbGwobiwgZSkpLCBuCi0gICAgICAgIH0sCi0gICAgICAgIGluQXJyYXk6IGZ1bmN0
aW9uKGUsIHQsIG4pIHsKLSAgICAgICAgICAgIHZhciByOwotICAgICAgICAgICAgaWYgKHQpIHsK
LSAgICAgICAgICAgICAgICBpZiAoZykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGcuY2Fs
bCh0LCBlLCBuKTsKLSAgICAgICAgICAgICAgICBmb3IgKHIgPSB0Lmxlbmd0aCwgbiA9IG4gPyAw
ID4gbiA/IE1hdGgubWF4KDAsIHIgKyBuKSA6IG4gOiAwOyByID4gbjsgbisrKQotICAgICAgICAg
ICAgICAgICAgICBpZiAobiBpbiB0ICYmIHRbbl0gPT09IGUpCi0gICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbgotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIC0xCi0gICAg
ICAgIH0sCi0gICAgICAgIG1lcmdlOiBmdW5jdGlvbihlLCBuKSB7Ci0gICAgICAgICAgICB2YXIg
ciA9IG4ubGVuZ3RoLAotICAgICAgICAgICAgICAgIGkgPSBlLmxlbmd0aCwKLSAgICAgICAgICAg
ICAgICBvID0gMDsKLSAgICAgICAgICAgIGlmICgibnVtYmVyIiA9PSB0eXBlb2YgcikKLSAgICAg
ICAgICAgICAgICBmb3IgKDsgciA+IG87IG8rKykKLSAgICAgICAgICAgICAgICAgICAgZVtpKytd
ID0gbltvXTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB3aGlsZSAobltvXSAh
PT0gdCkKLSAgICAgICAgICAgICAgICAgICAgZVtpKytdID0gbltvKytdOwotICAgICAgICAgICAg
cmV0dXJuIGUubGVuZ3RoID0gaSwgZQotICAgICAgICB9LAotICAgICAgICBncmVwOiBmdW5jdGlv
bihlLCB0LCBuKSB7Ci0gICAgICAgICAgICB2YXIgciwKLSAgICAgICAgICAgICAgICBpID0gW10s
Ci0gICAgICAgICAgICAgICAgbyA9IDAsCi0gICAgICAgICAgICAgICAgYSA9IGUubGVuZ3RoOwot
ICAgICAgICAgICAgZm9yIChuID0gISFuOyBhID4gbzsgbysrKQotICAgICAgICAgICAgICAgIHIg
PSAhIXQoZVtvXSwgbyksCi0gICAgICAgICAgICAgICAgbiAhPT0gciAmJiBpLnB1c2goZVtvXSk7
Ci0gICAgICAgICAgICByZXR1cm4gaQotICAgICAgICB9LAotICAgICAgICBtYXA6IGZ1bmN0aW9u
KGUsIHQsIG4pIHsKLSAgICAgICAgICAgIHZhciByLAotICAgICAgICAgICAgICAgIGkgPSAwLAot
ICAgICAgICAgICAgICAgIG8gPSBlLmxlbmd0aCwKLSAgICAgICAgICAgICAgICBhID0gTShlKSwK
LSAgICAgICAgICAgICAgICBzID0gW107Ci0gICAgICAgICAgICBpZiAoYSkKLSAgICAgICAgICAg
ICAgICBmb3IgKDsgbyA+IGk7IGkrKykKLSAgICAgICAgICAgICAgICAgICAgciA9IHQoZVtpXSwg
aSwgbiksCi0gICAgICAgICAgICAgICAgICAgIG51bGwgIT0gciAmJiAoc1tzLmxlbmd0aF0gPSBy
KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmb3IgKGkgaW4gZSkKLSAgICAg
ICAgICAgICAgICAgICAgciA9IHQoZVtpXSwgaSwgbiksCi0gICAgICAgICAgICAgICAgICAgIG51
bGwgIT0gciAmJiAoc1tzLmxlbmd0aF0gPSByKTsKLSAgICAgICAgICAgIHJldHVybiBmLmFwcGx5
KFtdLCBzKQotICAgICAgICB9LAotICAgICAgICBndWlkOiAxLAotICAgICAgICBwcm94eTogZnVu
Y3Rpb24oZSwgbikgewotICAgICAgICAgICAgdmFyIHIsCi0gICAgICAgICAgICAgICAgaSwKLSAg
ICAgICAgICAgICAgICBvOwotICAgICAgICAgICAgcmV0dXJuICJzdHJpbmciID09IHR5cGVvZiBu
ICYmIChvID0gZVtuXSwgbiA9IGUsIGUgPSBvKSwgYi5pc0Z1bmN0aW9uKGUpID8gKHIgPSBoLmNh
bGwoYXJndW1lbnRzLCAyKSwgaSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHJldHVy
biBlLmFwcGx5KG4gfHwgdGhpcywgci5jb25jYXQoaC5jYWxsKGFyZ3VtZW50cykpKQotICAgICAg
ICAgICAgfSwgaS5ndWlkID0gZS5ndWlkID0gZS5ndWlkIHx8IGIuZ3VpZCsrLCBpKSA6IHQKLSAg
ICAgICAgfSwKLSAgICAgICAgYWNjZXNzOiBmdW5jdGlvbihlLCBuLCByLCBpLCBvLCBhLCBzKSB7
Ci0gICAgICAgICAgICB2YXIgdSA9IDAsCi0gICAgICAgICAgICAgICAgbCA9IGUubGVuZ3RoLAot
ICAgICAgICAgICAgICAgIGMgPSBudWxsID09IHI7Ci0gICAgICAgICAgICBpZiAoIm9iamVjdCIg
PT09IGIudHlwZShyKSkgewotICAgICAgICAgICAgICAgIG8gPSAhMDsKLSAgICAgICAgICAgICAg
ICBmb3IgKHUgaW4gcikKLSAgICAgICAgICAgICAgICAgICAgYi5hY2Nlc3MoZSwgbiwgdSwgclt1
XSwgITAsIGEsIHMpCi0gICAgICAgICAgICB9IGVsc2UgaWYgKGkgIT09IHQgJiYgKG8gPSAhMCwg
Yi5pc0Z1bmN0aW9uKGkpIHx8IChzID0gITApLCBjICYmIChzID8gKG4uY2FsbChlLCBpKSwgbiA9
IG51bGwpIDogKGMgPSBuLCBuID0gZnVuY3Rpb24oZSwgdCwgbikgewotICAgICAgICAgICAgICAg
IHJldHVybiBjLmNhbGwoYihlKSwgbikKLSAgICAgICAgICAgIH0pKSwgbikpCi0gICAgICAgICAg
ICAgICAgZm9yICg7IGwgPiB1OyB1KyspCi0gICAgICAgICAgICAgICAgICAgIG4oZVt1XSwgciwg
cyA/IGkgOiBpLmNhbGwoZVt1XSwgdSwgbihlW3VdLCByKSkpOwotICAgICAgICAgICAgcmV0dXJu
IG8gPyBlIDogYyA/IG4uY2FsbChlKSA6IGwgPyBuKGVbMF0sIHIpIDogYQotICAgICAgICB9LAot
ICAgICAgICBub3c6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJuIChuZXcgRGF0ZSku
Z2V0VGltZSgpCi0gICAgICAgIH0KLSAgICB9KSwKLSAgICBiLnJlYWR5LnByb21pc2UgPSBmdW5j
dGlvbih0KSB7Ci0gICAgICAgIGlmICghbikKLSAgICAgICAgICAgIGlmIChuID0gYi5EZWZlcnJl
ZCgpLCAiY29tcGxldGUiID09PSBvLnJlYWR5U3RhdGUpCi0gICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChiLnJlYWR5KTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG8uYWRkRXZlbnRMaXN0ZW5lcikK
LSAgICAgICAgICAgICAgICBvLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBI
LCAhMSksCi0gICAgICAgICAgICAgICAgZS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgSCwgITEp
OwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgby5hdHRhY2hFdmVudCgib25y
ZWFkeXN0YXRlY2hhbmdlIiwgSCksCi0gICAgICAgICAgICAgICAgZS5hdHRhY2hFdmVudCgib25s
b2FkIiwgSCk7Ci0gICAgICAgICAgICAgICAgdmFyIHIgPSAhMTsKLSAgICAgICAgICAgICAgICB0
cnkgewotICAgICAgICAgICAgICAgICAgICByID0gbnVsbCA9PSBlLmZyYW1lRWxlbWVudCAmJiBv
LmRvY3VtZW50RWxlbWVudAotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGkpIHt9Ci0gICAgICAg
ICAgICAgICAgciAmJiByLmRvU2Nyb2xsICYmIGZ1bmN0aW9uIGEoKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghYi5pc1JlYWR5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cnkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZG9TY3JvbGwoImxlZnQiKQotICAgICAgICAg
ICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBzZXRUaW1lb3V0KGEsIDUwKQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAgICAgcSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgYi5yZWFk
eSgpCi0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KCkKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIG4ucHJvbWlzZSh0KQotICAgIH0sCi0gICAgYi5lYWNoKCJC
b29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVy
cm9yIi5zcGxpdCgiICIpLCBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgIGxbIltvYmplY3QgIiAr
IHQgKyAiXSJdID0gdC50b0xvd2VyQ2FzZSgpCi0gICAgfSk7Ci0gICAgZnVuY3Rpb24gTShlKSB7
Ci0gICAgICAgIHZhciB0ID0gZS5sZW5ndGgsCi0gICAgICAgICAgICBuID0gYi50eXBlKGUpOwot
ICAgICAgICByZXR1cm4gYi5pc1dpbmRvdyhlKSA/ICExIDogMSA9PT0gZS5ub2RlVHlwZSAmJiB0
ID8gITAgOiAiYXJyYXkiID09PSBuIHx8ICJmdW5jdGlvbiIgIT09IG4gJiYgKDAgPT09IHQgfHwg
Im51bWJlciIgPT0gdHlwZW9mIHQgJiYgdCA+IDAgJiYgdCAtIDEgaW4gZSkKLSAgICB9Ci0gICAg
ciA9IGIobyk7Ci0gICAgdmFyIF8gPSB7fTsKLSAgICBmdW5jdGlvbiBGKGUpIHsKLSAgICAgICAg
dmFyIHQgPSBfW2VdID0ge307Ci0gICAgICAgIHJldHVybiBiLmVhY2goZS5tYXRjaCh3KSB8fCBb
XSwgZnVuY3Rpb24oZSwgbikgewotICAgICAgICAgICAgdFtuXSA9ICEwCi0gICAgICAgIH0pLCB0
Ci0gICAgfQotICAgIGIuQ2FsbGJhY2tzID0gZnVuY3Rpb24oZSkgewotICAgICAgICBlID0gInN0
cmluZyIgPT0gdHlwZW9mIGUgPyBfW2VdIHx8IEYoZSkgOiBiLmV4dGVuZCh7fSwgZSk7Ci0gICAg
ICAgIHZhciBuLAotICAgICAgICAgICAgciwKLSAgICAgICAgICAgIGksCi0gICAgICAgICAgICBv
LAotICAgICAgICAgICAgYSwKLSAgICAgICAgICAgIHMsCi0gICAgICAgICAgICB1ID0gW10sCi0g
ICAgICAgICAgICBsID0gIWUub25jZSAmJiBbXSwKLSAgICAgICAgICAgIGMgPSBmdW5jdGlvbih0
KSB7Ci0gICAgICAgICAgICAgICAgZm9yIChyID0gZS5tZW1vcnkgJiYgdCwgaSA9ICEwLCBhID0g
cyB8fCAwLCBzID0gMCwgbyA9IHUubGVuZ3RoLCBuID0gITA7IHUgJiYgbyA+IGE7IGErKykKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHVbYV0uYXBwbHkodFswXSwgdFsxXSkgPT09ICExICYmIGUu
c3RvcE9uRmFsc2UpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAhMTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICBuID0gITEsCi0gICAgICAgICAgICAgICAgdSAmJiAobCA/IGwubGVuZ3RoICYmIGMobC5z
aGlmdCgpKSA6IHIgPyB1ID0gW10gOiBwLmRpc2FibGUoKSkKLSAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICBwID0gewotICAgICAgICAgICAgICAgIGFkZDogZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICh1KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHUu
bGVuZ3RoOwotICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uIGkodCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGIuZWFjaCh0LCBmdW5jdGlvbih0LCBuKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gYi50eXBlKG4pOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iID09PSByID8gZS51bmlxdWUgJiYgcC5oYXMo
bikgfHwgdS5wdXNoKG4pIDogbiAmJiBuLmxlbmd0aCAmJiAic3RyaW5nIiAhPT0gciAmJiBpKG4p
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0pKGFyZ3VtZW50cyksCi0gICAgICAgICAgICAgICAgICAgICAgICBuID8gbyA9IHUubGVuZ3Ro
IDogciAmJiAocyA9IHQsIGMocikpCi0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRoaXMKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
IHJlbW92ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB1ICYmIGIu
ZWFjaChhcmd1bWVudHMsIGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHZhciByOwotICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChyID0gYi5pbkFycmF5KHQs
IHUsIHIpKSA+IC0xKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUuc3BsaWNlKHIsIDEp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gJiYgKG8gPj0gciAmJiBvLS0sIGEgPj0g
ciAmJiBhLS0pCi0gICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzCi0gICAgICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICAgICBoYXM6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGUgPyBiLmluQXJyYXkoZSwgdSkgPiAtMSA6ICEoIXUgfHwgIXUubGVuZ3RoKQot
ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgZW1wdHk6IGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdSA9IFtdLCB0aGlzCi0gICAgICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICAgICBkaXNhYmxlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHUgPSBsID0gciA9IHQsIHRoaXMKLSAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuICF1Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBsb2NrOiBmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGwgPSB0LCByIHx8IHAuZGlzYWJs
ZSgpLCB0aGlzCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBsb2NrZWQ6IGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWwKLSAgICAgICAgICAgICAg
ICB9LAotICAgICAgICAgICAgICAgIGZpcmVXaXRoOiBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0ID0gdCB8fCBbXSwgdCA9IFtlLCB0LnNsaWNlID8gdC5zbGlj
ZSgpIDogdF0sICF1IHx8IGkgJiYgIWwgfHwgKG4gPyBsLnB1c2godCkgOiBjKHQpKSwgdGhpcwot
ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgZmlyZTogZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBwLmZpcmVXaXRoKHRoaXMsIGFyZ3VtZW50cyksIHRo
aXMKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIGZpcmVkOiBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhaQotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH07Ci0gICAgICAgIHJldHVybiBwCi0gICAgfSwKLSAgICBiLmV4dGVuZCh7Ci0g
ICAgICAgIERlZmVycmVkOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICB2YXIgdCA9IFtbInJl
c29sdmUiLCAiZG9uZSIsIGIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCAicmVzb2x2ZWQiXSwg
WyJyZWplY3QiLCAiZmFpbCIsIGIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCAicmVqZWN0ZWQi
XSwgWyJub3RpZnkiLCAicHJvZ3Jlc3MiLCBiLkNhbGxiYWNrcygibWVtb3J5IildXSwKLSAgICAg
ICAgICAgICAgICBuID0gInBlbmRpbmciLAotICAgICAgICAgICAgICAgIHIgPSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHN0YXRlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBuCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIGFs
d2F5czogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaS5kb25l
KGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLCB0aGlzCi0gICAgICAgICAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIGUgPSBhcmd1bWVudHM7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gYi5EZWZlcnJlZChmdW5jdGlvbihuKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Yi5lYWNoKHQsIGZ1bmN0aW9uKHQsIG8pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIGEgPSBvWzBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9
IGIuaXNGdW5jdGlvbihlW3RdKSAmJiBlW3RdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpW29bMV1dKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIGUgPSBzICYmIHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGUgJiYgYi5pc0Z1bmN0aW9uKGUucHJvbWlzZSkgPyBl
LnByb21pc2UoKS5kb25lKG4ucmVzb2x2ZSkuZmFpbChuLnJlamVjdCkucHJvZ3Jlc3Mobi5ub3Rp
ZnkpIDogblthICsgIldpdGgiXSh0aGlzID09PSByID8gbi5wcm9taXNlKCkgOiB0aGlzLCBzID8g
W2VdIDogYXJndW1lbnRzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGUgPSBudWxsCi0gICAgICAgICAgICAgICAgICAgICAgICB9KS5wcm9taXNlKCkKLSAgICAgICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgcHJvbWlzZTogZnVuY3Rpb24oZSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gZSA/IGIuZXh0ZW5kKGUs
IHIpIDogcgotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICBpID0ge307Ci0gICAgICAgICAgICByZXR1cm4gci5waXBlID0gci50aGVuLCBi
LmVhY2godCwgZnVuY3Rpb24oZSwgbykgewotICAgICAgICAgICAgICAgIHZhciBhID0gb1syXSwK
LSAgICAgICAgICAgICAgICAgICAgcyA9IG9bM107Ci0gICAgICAgICAgICAgICAgcltvWzFdXSA9
IGEuYWRkLAotICAgICAgICAgICAgICAgIHMgJiYgYS5hZGQoZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIG4gPSBzCi0gICAgICAgICAgICAgICAgfSwgdFsxIF4gZV1bMl0uZGlzYWJs
ZSwgdFsyXVsyXS5sb2NrKSwKLSAgICAgICAgICAgICAgICBpW29bMF1dID0gZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBpW29bMF0gKyAiV2l0aCJdKHRoaXMgPT09IGkg
PyByIDogdGhpcywgYXJndW1lbnRzKSwgdGhpcwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAgICAgaVtvWzBdICsgIldpdGgiXSA9IGEuZmlyZVdpdGgKLSAgICAgICAgICAgIH0pLCBy
LnByb21pc2UoaSksIGUgJiYgZS5jYWxsKGksIGkpLCBpCi0gICAgICAgIH0sCi0gICAgICAgIHdo
ZW46IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHZhciB0ID0gMCwKLSAgICAgICAgICAgICAg
ICBuID0gaC5jYWxsKGFyZ3VtZW50cyksCi0gICAgICAgICAgICAgICAgciA9IG4ubGVuZ3RoLAot
ICAgICAgICAgICAgICAgIGkgPSAxICE9PSByIHx8IGUgJiYgYi5pc0Z1bmN0aW9uKGUucHJvbWlz
ZSkgPyByIDogMCwKLSAgICAgICAgICAgICAgICBvID0gMSA9PT0gaSA/IGUgOiBiLkRlZmVycmVk
KCksCi0gICAgICAgICAgICAgICAgYSA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRb
ZV0gPSB0aGlzLAotICAgICAgICAgICAgICAgICAgICAgICAgbltlXSA9IGFyZ3VtZW50cy5sZW5n
dGggPiAxID8gaC5jYWxsKGFyZ3VtZW50cykgOiByLAotICAgICAgICAgICAgICAgICAgICAgICAg
biA9PT0gcyA/IG8ubm90aWZ5V2l0aCh0LCBuKSA6IC0taSB8fCBvLnJlc29sdmVXaXRoKHQsIG4p
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg
ICAgIHMsCi0gICAgICAgICAgICAgICAgdSwKLSAgICAgICAgICAgICAgICBsOwotICAgICAgICAg
ICAgaWYgKHIgPiAxKQotICAgICAgICAgICAgICAgIGZvciAocyA9IEFycmF5KHIpLCB1ID0gQXJy
YXkociksIGwgPSBBcnJheShyKTsgciA+IHQ7IHQrKykKLSAgICAgICAgICAgICAgICAgICAgblt0
XSAmJiBiLmlzRnVuY3Rpb24oblt0XS5wcm9taXNlKSA/IG5bdF0ucHJvbWlzZSgpLmRvbmUoYSh0
LCBsLCBuKSkuZmFpbChvLnJlamVjdCkucHJvZ3Jlc3MoYSh0LCB1LCBzKSkgOiAtLWk7Ci0gICAg
ICAgICAgICByZXR1cm4gaSB8fCBvLnJlc29sdmVXaXRoKGwsIG4pLCBvLnByb21pc2UoKQotICAg
ICAgICB9Ci0gICAgfSksCi0gICAgYi5zdXBwb3J0ID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZh
ciB0LAotICAgICAgICAgICAgbiwKLSAgICAgICAgICAgIHIsCi0gICAgICAgICAgICBhLAotICAg
ICAgICAgICAgcywKLSAgICAgICAgICAgIHUsCi0gICAgICAgICAgICBsLAotICAgICAgICAgICAg
YywKLSAgICAgICAgICAgIHAsCi0gICAgICAgICAgICBmLAotICAgICAgICAgICAgZCA9IG8uY3Jl
YXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIGlmIChkLnNldEF0dHJpYnV0ZSgiY2xhc3NOYW1l
IiwgInQiKSwgZC5pbm5lckhUTUwgPSAiICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0n
L2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IiwgbiA9IGQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoIioiKSwgciA9IGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSwgIW4gfHwgIXIg
fHwgIW4ubGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIHt9OwotICAgICAgICBzID0gby5jcmVh
dGVFbGVtZW50KCJzZWxlY3QiKSwKLSAgICAgICAgbCA9IHMuYXBwZW5kQ2hpbGQoby5jcmVhdGVF
bGVtZW50KCJvcHRpb24iKSksCi0gICAgICAgIGEgPSBkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJp
bnB1dCIpWzBdLAotICAgICAgICByLnN0eWxlLmNzc1RleHQgPSAidG9wOjFweDtmbG9hdDpsZWZ0
O29wYWNpdHk6LjUiLAotICAgICAgICB0ID0gewotICAgICAgICAgICAgZ2V0U2V0QXR0cmlidXRl
OiAidCIgIT09IGQuY2xhc3NOYW1lLAotICAgICAgICAgICAgbGVhZGluZ1doaXRlc3BhY2U6IDMg
PT09IGQuZmlyc3RDaGlsZC5ub2RlVHlwZSwKLSAgICAgICAgICAgIHRib2R5OiAhZC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidGJvZHkiKS5sZW5ndGgsCi0gICAgICAgICAgICBodG1sU2VyaWFsaXpl
OiAhIWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKS5sZW5ndGgsCi0gICAgICAgICAgICBz
dHlsZTogL3RvcC8udGVzdChyLmdldEF0dHJpYnV0ZSgic3R5bGUiKSksCi0gICAgICAgICAgICBo
cmVmTm9ybWFsaXplZDogIi9hIiA9PT0gci5nZXRBdHRyaWJ1dGUoImhyZWYiKSwKLSAgICAgICAg
ICAgIG9wYWNpdHk6IC9eMC41Ly50ZXN0KHIuc3R5bGUub3BhY2l0eSksCi0gICAgICAgICAgICBj
c3NGbG9hdDogISFyLnN0eWxlLmNzc0Zsb2F0LAotICAgICAgICAgICAgY2hlY2tPbjogISFhLnZh
bHVlLAotICAgICAgICAgICAgb3B0U2VsZWN0ZWQ6IGwuc2VsZWN0ZWQsCi0gICAgICAgICAgICBl
bmN0eXBlOiAhIW8uY3JlYXRlRWxlbWVudCgiZm9ybSIpLmVuY3R5cGUsCi0gICAgICAgICAgICBo
dG1sNUNsb25lOiAiPDpuYXY+PC86bmF2PiIgIT09IG8uY3JlYXRlRWxlbWVudCgibmF2IikuY2xv
bmVOb2RlKCEwKS5vdXRlckhUTUwsCi0gICAgICAgICAgICBib3hNb2RlbDogIkNTUzFDb21wYXQi
ID09PSBvLmNvbXBhdE1vZGUsCi0gICAgICAgICAgICBkZWxldGVFeHBhbmRvOiAhMCwKLSAgICAg
ICAgICAgIG5vQ2xvbmVFdmVudDogITAsCi0gICAgICAgICAgICBpbmxpbmVCbG9ja05lZWRzTGF5
b3V0OiAhMSwKLSAgICAgICAgICAgIHNocmlua1dyYXBCbG9ja3M6ICExLAotICAgICAgICAgICAg
cmVsaWFibGVNYXJnaW5SaWdodDogITAsCi0gICAgICAgICAgICBib3hTaXppbmdSZWxpYWJsZTog
ITAsCi0gICAgICAgICAgICBwaXhlbFBvc2l0aW9uOiAhMQotICAgICAgICB9LAotICAgICAgICBh
LmNoZWNrZWQgPSAhMCwKLSAgICAgICAgdC5ub0Nsb25lQ2hlY2tlZCA9IGEuY2xvbmVOb2RlKCEw
KS5jaGVja2VkLAotICAgICAgICBzLmRpc2FibGVkID0gITAsCi0gICAgICAgIHQub3B0RGlzYWJs
ZWQgPSAhbC5kaXNhYmxlZDsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGRlbGV0ZSBkLnRl
c3QKLSAgICAgICAgfSBjYXRjaCAoaCkgewotICAgICAgICAgICAgdC5kZWxldGVFeHBhbmRvID0g
ITEKLSAgICAgICAgfQotICAgICAgICBhID0gby5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLAotICAg
ICAgICBhLnNldEF0dHJpYnV0ZSgidmFsdWUiLCAiIiksCi0gICAgICAgIHQuaW5wdXQgPSAiIiA9
PT0gYS5nZXRBdHRyaWJ1dGUoInZhbHVlIiksCi0gICAgICAgIGEudmFsdWUgPSAidCIsCi0gICAg
ICAgIGEuc2V0QXR0cmlidXRlKCJ0eXBlIiwgInJhZGlvIiksCi0gICAgICAgIHQucmFkaW9WYWx1
ZSA9ICJ0IiA9PT0gYS52YWx1ZSwKLSAgICAgICAgYS5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCAi
dCIpLAotICAgICAgICBhLnNldEF0dHJpYnV0ZSgibmFtZSIsICJ0IiksCi0gICAgICAgIHUgPSBv
LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSwKLSAgICAgICAgdS5hcHBlbmRDaGlsZChhKSwKLSAg
ICAgICAgdC5hcHBlbmRDaGVja2VkID0gYS5jaGVja2VkLAotICAgICAgICB0LmNoZWNrQ2xvbmUg
PSB1LmNsb25lTm9kZSghMCkuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuY2hlY2tlZCwKLSAgICAg
ICAgZC5hdHRhY2hFdmVudCAmJiAoZC5hdHRhY2hFdmVudCgib25jbGljayIsIGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgdC5ub0Nsb25lRXZlbnQgPSAhMQotICAgICAgICB9KSwgZC5jbG9uZU5v
ZGUoITApLmNsaWNrKCkpOwotICAgICAgICBmb3IgKGYgaW4gewotICAgICAgICAgICAgc3VibWl0
OiAhMCwKLSAgICAgICAgICAgIGNoYW5nZTogITAsCi0gICAgICAgICAgICBmb2N1c2luOiAhMAot
ICAgICAgICB9KQotICAgICAgICAgICAgZC5zZXRBdHRyaWJ1dGUoYyA9ICJvbiIgKyBmLCAidCIp
LAotICAgICAgICAgICAgdFtmICsgIkJ1YmJsZXMiXSA9IGMgaW4gZSB8fCBkLmF0dHJpYnV0ZXNb
Y10uZXhwYW5kbyA9PT0gITE7Ci0gICAgICAgIHJldHVybiBkLnN0eWxlLmJhY2tncm91bmRDbGlw
ID0gImNvbnRlbnQtYm94IiwgZC5jbG9uZU5vZGUoITApLnN0eWxlLmJhY2tncm91bmRDbGlwID0g
IiIsIHQuY2xlYXJDbG9uZVN0eWxlID0gImNvbnRlbnQtYm94IiA9PT0gZC5zdHlsZS5iYWNrZ3Jv
dW5kQ2xpcCwgYihmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHZhciBuLAotICAgICAgICAgICAg
ICAgIHIsCi0gICAgICAgICAgICAgICAgYSwKLSAgICAgICAgICAgICAgICBzID0gInBhZGRpbmc6
MDttYXJnaW46MDtib3JkZXI6MDtkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Y29udGVudC1ib3g7
LW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJv
eDsiLAotICAgICAgICAgICAgICAgIHUgPSBvLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5Iilb
MF07Ci0gICAgICAgICAgICB1ICYmIChuID0gby5jcmVhdGVFbGVtZW50KCJkaXYiKSwgbi5zdHls
ZS5jc3NUZXh0ID0gImJvcmRlcjowO3dpZHRoOjA7aGVpZ2h0OjA7cG9zaXRpb246YWJzb2x1dGU7
dG9wOjA7bGVmdDotOTk5OXB4O21hcmdpbi10b3A6MXB4IiwgdS5hcHBlbmRDaGlsZChuKS5hcHBl
bmRDaGlsZChkKSwgZC5pbm5lckhUTUwgPSAiPHRhYmxlPjx0cj48dGQ+PC90ZD48dGQ+dDwvdGQ+
PC90cj48L3RhYmxlPiIsIGEgPSBkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpLCBhWzBdLnN0
eWxlLmNzc1RleHQgPSAicGFkZGluZzowO21hcmdpbjowO2JvcmRlcjowO2Rpc3BsYXk6bm9uZSIs
IHAgPSAwID09PSBhWzBdLm9mZnNldEhlaWdodCwgYVswXS5zdHlsZS5kaXNwbGF5ID0gIiIsIGFb
MV0uc3R5bGUuZGlzcGxheSA9ICJub25lIiwgdC5yZWxpYWJsZUhpZGRlbk9mZnNldHMgPSBwICYm
IDAgPT09IGFbMF0ub2Zmc2V0SGVpZ2h0LCBkLmlubmVySFRNTCA9ICIiLCBkLnN0eWxlLmNzc1Rl
eHQgPSAiYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy13
ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6MXB4O2JvcmRlcjoxcHg7ZGlzcGxh
eTpibG9jazt3aWR0aDo0cHg7bWFyZ2luLXRvcDoxJTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MSU7
IiwgdC5ib3hTaXppbmcgPSA0ID09PSBkLm9mZnNldFdpZHRoLCB0LmRvZXNOb3RJbmNsdWRlTWFy
Z2luSW5Cb2R5T2Zmc2V0ID0gMSAhPT0gdS5vZmZzZXRUb3AsIGUuZ2V0Q29tcHV0ZWRTdHlsZSAm
JiAodC5waXhlbFBvc2l0aW9uID0gIjElIiAhPT0gKGUuZ2V0Q29tcHV0ZWRTdHlsZShkLCBudWxs
KSB8fCB7fSkudG9wLCB0LmJveFNpemluZ1JlbGlhYmxlID0gIjRweCIgPT09IChlLmdldENvbXB1
dGVkU3R5bGUoZCwgbnVsbCkgfHwgewotICAgICAgICAgICAgICAgIHdpZHRoOiAiNHB4IgotICAg
ICAgICAgICAgfSkud2lkdGgsIHIgPSBkLmFwcGVuZENoaWxkKG8uY3JlYXRlRWxlbWVudCgiZGl2
IikpLCByLnN0eWxlLmNzc1RleHQgPSBkLnN0eWxlLmNzc1RleHQgPSBzLCByLnN0eWxlLm1hcmdp
blJpZ2h0ID0gci5zdHlsZS53aWR0aCA9ICIwIiwgZC5zdHlsZS53aWR0aCA9ICIxcHgiLCB0LnJl
bGlhYmxlTWFyZ2luUmlnaHQgPSAhcGFyc2VGbG9hdCgoZS5nZXRDb21wdXRlZFN0eWxlKHIsIG51
bGwpIHx8IHt9KS5tYXJnaW5SaWdodCkpLCB0eXBlb2YgZC5zdHlsZS56b29tICE9PSBpICYmIChk
LmlubmVySFRNTCA9ICIiLCBkLnN0eWxlLmNzc1RleHQgPSBzICsgIndpZHRoOjFweDtwYWRkaW5n
OjFweDtkaXNwbGF5OmlubGluZTt6b29tOjEiLCB0LmlubGluZUJsb2NrTmVlZHNMYXlvdXQgPSAz
ID09PSBkLm9mZnNldFdpZHRoLCBkLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siLCBkLmlubmVySFRN
TCA9ICI8ZGl2PjwvZGl2PiIsIGQuZmlyc3RDaGlsZC5zdHlsZS53aWR0aCA9ICI1cHgiLCB0LnNo
cmlua1dyYXBCbG9ja3MgPSAzICE9PSBkLm9mZnNldFdpZHRoLCB0LmlubGluZUJsb2NrTmVlZHNM
YXlvdXQgJiYgKHUuc3R5bGUuem9vbSA9IDEpKSwgdS5yZW1vdmVDaGlsZChuKSwgbiA9IGQgPSBh
ID0gciA9IG51bGwpCi0gICAgICAgIH0pLCBuID0gcyA9IHUgPSBsID0gciA9IGEgPSBudWxsLCB0
Ci0gICAgfSgpOwotICAgIHZhciBPID0gLyg/Olx7W1xzXFNdKlx9fFxbW1xzXFNdKlxdKSQvLAot
ICAgICAgICBCID0gLyhbQS1aXSkvZzsKLSAgICBmdW5jdGlvbiBQKGUsIG4sIHIsIGkpIHsKLSAg
ICAgICAgaWYgKGIuYWNjZXB0RGF0YShlKSkgewotICAgICAgICAgICAgdmFyIG8sCi0gICAgICAg
ICAgICAgICAgYSwKLSAgICAgICAgICAgICAgICBzID0gYi5leHBhbmRvLAotICAgICAgICAgICAg
ICAgIHUgPSAic3RyaW5nIiA9PSB0eXBlb2YgbiwKLSAgICAgICAgICAgICAgICBsID0gZS5ub2Rl
VHlwZSwKLSAgICAgICAgICAgICAgICBwID0gbCA/IGIuY2FjaGUgOiBlLAotICAgICAgICAgICAg
ICAgIGYgPSBsID8gZVtzXSA6IGVbc10gJiYgczsKLSAgICAgICAgICAgIGlmIChmICYmIHBbZl0g
JiYgKGkgfHwgcFtmXS5kYXRhKSB8fCAhdSB8fCByICE9PSB0KQotICAgICAgICAgICAgICAgIHJl
dHVybiBmIHx8IChsID8gZVtzXSA9IGYgPSBjLnBvcCgpIHx8IGIuZ3VpZCsrIDogZiA9IHMpLCBw
W2ZdIHx8IChwW2ZdID0ge30sIGwgfHwgKHBbZl0udG9KU09OID0gYi5ub29wKSksICgib2JqZWN0
IiA9PSB0eXBlb2YgbiB8fCAiZnVuY3Rpb24iID09IHR5cGVvZiBuKSAmJiAoaSA/IHBbZl0gPSBi
LmV4dGVuZChwW2ZdLCBuKSA6IHBbZl0uZGF0YSA9IGIuZXh0ZW5kKHBbZl0uZGF0YSwgbikpLCBv
ID0gcFtmXSwgaSB8fCAoby5kYXRhIHx8IChvLmRhdGEgPSB7fSksIG8gPSBvLmRhdGEpLCByICE9
PSB0ICYmIChvW2IuY2FtZWxDYXNlKG4pXSA9IHIpLCB1ID8gKGEgPSBvW25dLCBudWxsID09IGEg
JiYgKGEgPSBvW2IuY2FtZWxDYXNlKG4pXSkpIDogYSA9IG8sIGEKLSAgICAgICAgfQotICAgIH0K
LSAgICBmdW5jdGlvbiBSKGUsIHQsIG4pIHsKLSAgICAgICAgaWYgKGIuYWNjZXB0RGF0YShlKSkg
ewotICAgICAgICAgICAgdmFyIHIsCi0gICAgICAgICAgICAgICAgaSwKLSAgICAgICAgICAgICAg
ICBvLAotICAgICAgICAgICAgICAgIGEgPSBlLm5vZGVUeXBlLAotICAgICAgICAgICAgICAgIHMg
PSBhID8gYi5jYWNoZSA6IGUsCi0gICAgICAgICAgICAgICAgdSA9IGEgPyBlW2IuZXhwYW5kb10g
OiBiLmV4cGFuZG87Ci0gICAgICAgICAgICBpZiAoc1t1XSkgewotICAgICAgICAgICAgICAgIGlm
ICh0ICYmIChvID0gbiA/IHNbdV0gOiBzW3VdLmRhdGEpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGIuaXNBcnJheSh0KSA/IHQgPSB0LmNvbmNhdChiLm1hcCh0LCBiLmNhbWVsQ2FzZSkpIDogdCBp
biBvID8gdCA9IFt0XSA6ICh0ID0gYi5jYW1lbENhc2UodCksIHQgPSB0IGluIG8gPyBbdF0gOiB0
LnNwbGl0KCIgIikpOwotICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSAwLCBpID0gdC5sZW5n
dGg7IGkgPiByOyByKyspCi0gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgb1t0W3JdXTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKCEobiA/ICQgOiBiLmlzRW1wdHlPYmplY3QpKG8pKQot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIChuIHx8IChkZWxldGUgc1t1XS5kYXRhLCAkKHNbdV0pKSkgJiYgKGEgPyBiLmNs
ZWFuRGF0YShbZV0sICEwKSA6IGIuc3VwcG9ydC5kZWxldGVFeHBhbmRvIHx8IHMgIT0gcy53aW5k
b3cgPyBkZWxldGUgc1t1XSA6IHNbdV0gPSBudWxsKQotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQotICAgIGIuZXh0ZW5kKHsKLSAgICAgICAgY2FjaGU6IHt9LAotICAgICAgICBleHBh
bmRvOiAialF1ZXJ5IiArIChwICsgTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywgIiIpLAot
ICAgICAgICBub0RhdGE6IHsKLSAgICAgICAgICAgIGVtYmVkOiAhMCwKLSAgICAgICAgICAgIG9i
amVjdDogImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIsCi0gICAg
ICAgICAgICBhcHBsZXQ6ICEwCi0gICAgICAgIH0sCi0gICAgICAgIGhhc0RhdGE6IGZ1bmN0aW9u
KGUpIHsKLSAgICAgICAgICAgIHJldHVybiBlID0gZS5ub2RlVHlwZSA/IGIuY2FjaGVbZVtiLmV4
cGFuZG9dXSA6IGVbYi5leHBhbmRvXSwgISFlICYmICEkKGUpCi0gICAgICAgIH0sCi0gICAgICAg
IGRhdGE6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKLSAgICAgICAgICAgIHJldHVybiBQKGUsIHQsIG4p
Ci0gICAgICAgIH0sCi0gICAgICAgIHJlbW92ZURhdGE6IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAg
ICAgICAgIHJldHVybiBSKGUsIHQpCi0gICAgICAgIH0sCi0gICAgICAgIF9kYXRhOiBmdW5jdGlv
bihlLCB0LCBuKSB7Ci0gICAgICAgICAgICByZXR1cm4gUChlLCB0LCBuLCAhMCkKLSAgICAgICAg
fSwKLSAgICAgICAgX3JlbW92ZURhdGE6IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgIHJl
dHVybiBSKGUsIHQsICEwKQotICAgICAgICB9LAotICAgICAgICBhY2NlcHREYXRhOiBmdW5jdGlv
bihlKSB7Ci0gICAgICAgICAgICBpZiAoZS5ub2RlVHlwZSAmJiAxICE9PSBlLm5vZGVUeXBlICYm
IDkgIT09IGUubm9kZVR5cGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuICExOwotICAgICAgICAg
ICAgdmFyIHQgPSBlLm5vZGVOYW1lICYmIGIubm9EYXRhW2Uubm9kZU5hbWUudG9Mb3dlckNhc2Uo
KV07Ci0gICAgICAgICAgICByZXR1cm4gIXQgfHwgdCAhPT0gITAgJiYgZS5nZXRBdHRyaWJ1dGUo
ImNsYXNzaWQiKSA9PT0gdAotICAgICAgICB9Ci0gICAgfSksCi0gICAgYi5mbi5leHRlbmQoewot
ICAgICAgICBkYXRhOiBmdW5jdGlvbihlLCBuKSB7Ci0gICAgICAgICAgICB2YXIgciwKLSAgICAg
ICAgICAgICAgICBpLAotICAgICAgICAgICAgICAgIG8gPSB0aGlzWzBdLAotICAgICAgICAgICAg
ICAgIGEgPSAwLAotICAgICAgICAgICAgICAgIHMgPSBudWxsOwotICAgICAgICAgICAgaWYgKGUg
PT09IHQpIHsKLSAgICAgICAgICAgICAgICBpZiAodGhpcy5sZW5ndGggJiYgKHMgPSBiLmRhdGEo
byksIDEgPT09IG8ubm9kZVR5cGUgJiYgIWIuX2RhdGEobywgInBhcnNlZEF0dHJzIikpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGZvciAociA9IG8uYXR0cmlidXRlczsgci5sZW5ndGggPiBhOyBh
KyspCi0gICAgICAgICAgICAgICAgICAgICAgICBpID0gclthXS5uYW1lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgaS5pbmRleE9mKCJkYXRhLSIpIHx8IChpID0gYi5jYW1lbENhc2UoaS5zbGlj
ZSg1KSksIFcobywgaSwgc1tpXSkpOwotICAgICAgICAgICAgICAgICAgICBiLl9kYXRhKG8sICJw
YXJzZWRBdHRycyIsICEwKQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1
cm4gcwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuICJvYmplY3QiID09IHR5cGVv
ZiBlID8gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGIuZGF0YSh0aGlz
LCBlKQotICAgICAgICAgICAgfSkgOiBiLmFjY2Vzcyh0aGlzLCBmdW5jdGlvbihuKSB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIG4gPT09IHQgPyBvID8gVyhvLCBlLCBiLmRhdGEobywgZSkpIDog
bnVsbCA6ICh0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIGIuZGF0
YSh0aGlzLCBlLCBuKQotICAgICAgICAgICAgICAgIH0pLCB0KQotICAgICAgICAgICAgfSwgbnVs
bCwgbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEsIG51bGwsICEwKQotICAgICAgICB9LAotICAgICAg
ICByZW1vdmVEYXRhOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNo
KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGIucmVtb3ZlRGF0YSh0aGlzLCBlKQotICAg
ICAgICAgICAgfSkKLSAgICAgICAgfQotICAgIH0pOwotICAgIGZ1bmN0aW9uIFcoZSwgbiwgcikg
ewotICAgICAgICBpZiAociA9PT0gdCAmJiAxID09PSBlLm5vZGVUeXBlKSB7Ci0gICAgICAgICAg
ICB2YXIgaSA9ICJkYXRhLSIgKyBuLnJlcGxhY2UoQiwgIi0kMSIpLnRvTG93ZXJDYXNlKCk7Ci0g
ICAgICAgICAgICBpZiAociA9IGUuZ2V0QXR0cmlidXRlKGkpLCAic3RyaW5nIiA9PSB0eXBlb2Yg
cikgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIHIgPSAidHJ1
ZSIgPT09IHIgPyAhMCA6ICJmYWxzZSIgPT09IHIgPyAhMSA6ICJudWxsIiA9PT0gciA/IG51bGwg
OiArciArICIiID09PSByID8gK3IgOiBPLnRlc3QocikgPyBiLnBhcnNlSlNPTihyKSA6IHIKLSAg
ICAgICAgICAgICAgICB9IGNhdGNoIChvKSB7fQotICAgICAgICAgICAgICAgIGIuZGF0YShlLCBu
LCByKQotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgciA9IHQKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gcgotICAgIH0KLSAgICBmdW5jdGlvbiAkKGUpIHsKLSAgICAgICAg
dmFyIHQ7Ci0gICAgICAgIGZvciAodCBpbiBlKQotICAgICAgICAgICAgaWYgKCgiZGF0YSIgIT09
IHQgfHwgIWIuaXNFbXB0eU9iamVjdChlW3RdKSkgJiYgInRvSlNPTiIgIT09IHQpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuICExOwotICAgICAgICByZXR1cm4gITAKLSAgICB9Ci0gICAgYi5leHRl
bmQoewotICAgICAgICBxdWV1ZTogZnVuY3Rpb24oZSwgbiwgcikgewotICAgICAgICAgICAgdmFy
IGk7Ci0gICAgICAgICAgICByZXR1cm4gZSA/IChuID0gKG4gfHwgImZ4IikgKyAicXVldWUiLCBp
ID0gYi5fZGF0YShlLCBuKSwgciAmJiAoIWkgfHwgYi5pc0FycmF5KHIpID8gaSA9IGIuX2RhdGEo
ZSwgbiwgYi5tYWtlQXJyYXkocikpIDogaS5wdXNoKHIpKSwgaSB8fCBbXSkgOiB0Ci0gICAgICAg
IH0sCi0gICAgICAgIGRlcXVldWU6IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgIHQgPSB0
IHx8ICJmeCI7Ci0gICAgICAgICAgICB2YXIgbiA9IGIucXVldWUoZSwgdCksCi0gICAgICAgICAg
ICAgICAgciA9IG4ubGVuZ3RoLAotICAgICAgICAgICAgICAgIGkgPSBuLnNoaWZ0KCksCi0gICAg
ICAgICAgICAgICAgbyA9IGIuX3F1ZXVlSG9va3MoZSwgdCksCi0gICAgICAgICAgICAgICAgYSA9
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICBiLmRlcXVldWUoZSwgdCkKLSAgICAg
ICAgICAgICAgICB9OwotICAgICAgICAgICAgImlucHJvZ3Jlc3MiID09PSBpICYmIChpID0gbi5z
aGlmdCgpLCByLS0pLAotICAgICAgICAgICAgby5jdXIgPSBpLAotICAgICAgICAgICAgaSAmJiAo
ImZ4IiA9PT0gdCAmJiBuLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSwgZGVsZXRlIG8uc3RvcCwgaS5j
YWxsKGUsIGEsIG8pKSwKLSAgICAgICAgICAgICFyICYmIG8gJiYgby5lbXB0eS5maXJlKCkKLSAg
ICAgICAgfSwKLSAgICAgICAgX3F1ZXVlSG9va3M6IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAg
ICAgIHZhciBuID0gdCArICJxdWV1ZUhvb2tzIjsKLSAgICAgICAgICAgIHJldHVybiBiLl9kYXRh
KGUsIG4pIHx8IGIuX2RhdGEoZSwgbiwgewotICAgICAgICAgICAgICAgICAgICBlbXB0eTogYi5D
YWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgYi5fcmVtb3ZlRGF0YShlLCB0ICsgInF1ZXVlIiksCi0gICAgICAgICAgICAgICAg
ICAgICAgICBiLl9yZW1vdmVEYXRhKGUsIG4pCi0gICAgICAgICAgICAgICAgICAgIH0pCi0gICAg
ICAgICAgICAgICAgfSkKLSAgICAgICAgfQotICAgIH0pLAotICAgIGIuZm4uZXh0ZW5kKHsKLSAg
ICAgICAgcXVldWU6IGZ1bmN0aW9uKGUsIG4pIHsKLSAgICAgICAgICAgIHZhciByID0gMjsKLSAg
ICAgICAgICAgIHJldHVybiAic3RyaW5nIiAhPSB0eXBlb2YgZSAmJiAobiA9IGUsIGUgPSAiZngi
LCByLS0pLCByID4gYXJndW1lbnRzLmxlbmd0aCA/IGIucXVldWUodGhpc1swXSwgZSkgOiBuID09
PSB0ID8gdGhpcyA6IHRoaXMuZWFjaChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICB2YXIg
dCA9IGIucXVldWUodGhpcywgZSwgbik7Ci0gICAgICAgICAgICAgICAgYi5fcXVldWVIb29rcyh0
aGlzLCBlKSwKLSAgICAgICAgICAgICAgICAiZngiID09PSBlICYmICJpbnByb2dyZXNzIiAhPT0g
dFswXSAmJiBiLmRlcXVldWUodGhpcywgZSkKLSAgICAgICAgICAgIH0pCi0gICAgICAgIH0sCi0g
ICAgICAgIGRlcXVldWU6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLmVh
Y2goZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgYi5kZXF1ZXVlKHRoaXMsIGUpCi0gICAg
ICAgICAgICB9KQotICAgICAgICB9LAotICAgICAgICBkZWxheTogZnVuY3Rpb24oZSwgdCkgewot
ICAgICAgICAgICAgcmV0dXJuIGUgPSBiLmZ4ID8gYi5meC5zcGVlZHNbZV0gfHwgZSA6IGUsIHQg
PSB0IHx8ICJmeCIsIHRoaXMucXVldWUodCwgZnVuY3Rpb24odCwgbikgewotICAgICAgICAgICAg
ICAgIHZhciByID0gc2V0VGltZW91dCh0LCBlKTsKLSAgICAgICAgICAgICAgICBuLnN0b3AgPSBm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHIpCi0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfSkKLSAgICAgICAgfSwKLSAgICAgICAgY2xlYXJRdWV1
ZTogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMucXVldWUoZSB8fCAiZngi
LCBbXSkKLSAgICAgICAgfSwKLSAgICAgICAgcHJvbWlzZTogZnVuY3Rpb24oZSwgbikgewotICAg
ICAgICAgICAgdmFyIHIsCi0gICAgICAgICAgICAgICAgaSA9IDEsCi0gICAgICAgICAgICAgICAg
byA9IGIuRGVmZXJyZWQoKSwKLSAgICAgICAgICAgICAgICBhID0gdGhpcywKLSAgICAgICAgICAg
ICAgICBzID0gdGhpcy5sZW5ndGgsCi0gICAgICAgICAgICAgICAgdSA9IGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgICAgICAgICAtLWkgfHwgby5yZXNvbHZlV2l0aChhLCBbYV0pCi0gICAgICAg
ICAgICAgICAgfTsKLSAgICAgICAgICAgICJzdHJpbmciICE9IHR5cGVvZiBlICYmIChuID0gZSwg
ZSA9IHQpLAotICAgICAgICAgICAgZSA9IGUgfHwgImZ4IjsKLSAgICAgICAgICAgIHdoaWxlIChz
LS0pCi0gICAgICAgICAgICAgICAgciA9IGIuX2RhdGEoYVtzXSwgZSArICJxdWV1ZUhvb2tzIiks
Ci0gICAgICAgICAgICAgICAgciAmJiByLmVtcHR5ICYmIChpKyssIHIuZW1wdHkuYWRkKHUpKTsK
LSAgICAgICAgICAgIHJldHVybiB1KCksIG8ucHJvbWlzZShuKQotICAgICAgICB9Ci0gICAgfSk7
Ci0gICAgdmFyIEksCi0gICAgICAgIHosCi0gICAgICAgIFggPSAvW1x0XHJcbl0vZywKLSAgICAg
ICAgVSA9IC9cci9nLAotICAgICAgICBWID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0
dG9ufG9iamVjdCkkL2ksCi0gICAgICAgIFkgPSAvXig/OmF8YXJlYSkkL2ksCi0gICAgICAgIEog
PSAvXig/OmNoZWNrZWR8c2VsZWN0ZWR8YXV0b2ZvY3VzfGF1dG9wbGF5fGFzeW5jfGNvbnRyb2xz
fGRlZmVyfGRpc2FibGVkfGhpZGRlbnxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWly
ZWR8c2NvcGVkKSQvaSwKLSAgICAgICAgRyA9IC9eKD86Y2hlY2tlZHxzZWxlY3RlZCkkL2ksCi0g
ICAgICAgIFEgPSBiLnN1cHBvcnQuZ2V0U2V0QXR0cmlidXRlLAotICAgICAgICBLID0gYi5zdXBw
b3J0LmlucHV0OwotICAgIGIuZm4uZXh0ZW5kKHsKLSAgICAgICAgYXR0cjogZnVuY3Rpb24oZSwg
dCkgewotICAgICAgICAgICAgcmV0dXJuIGIuYWNjZXNzKHRoaXMsIGIuYXR0ciwgZSwgdCwgYXJn
dW1lbnRzLmxlbmd0aCA+IDEpCi0gICAgICAgIH0sCi0gICAgICAgIHJlbW92ZUF0dHI6IGZ1bmN0
aW9uKGUpIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICAgICAgYi5yZW1vdmVBdHRyKHRoaXMsIGUpCi0gICAgICAgICAgICB9KQotICAgICAg
ICB9LAotICAgICAgICBwcm9wOiBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICByZXR1cm4g
Yi5hY2Nlc3ModGhpcywgYi5wcm9wLCBlLCB0LCBhcmd1bWVudHMubGVuZ3RoID4gMSkKLSAgICAg
ICAgfSwKLSAgICAgICAgcmVtb3ZlUHJvcDogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgcmV0
dXJuIGUgPSBiLnByb3BGaXhbZV0gfHwgZSwgdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXNbZV0gPSB0LAotICAgICAg
ICAgICAgICAgICAgICBkZWxldGUgdGhpc1tlXQotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG4p
IHt9Ci0gICAgICAgICAgICB9KQotICAgICAgICB9LAotICAgICAgICBhZGRDbGFzczogZnVuY3Rp
b24oZSkgewotICAgICAgICAgICAgdmFyIHQsCi0gICAgICAgICAgICAgICAgbiwKLSAgICAgICAg
ICAgICAgICByLAotICAgICAgICAgICAgICAgIGksCi0gICAgICAgICAgICAgICAgbywKLSAgICAg
ICAgICAgICAgICBhID0gMCwKLSAgICAgICAgICAgICAgICBzID0gdGhpcy5sZW5ndGgsCi0gICAg
ICAgICAgICAgICAgdSA9ICJzdHJpbmciID09IHR5cGVvZiBlICYmIGU7Ci0gICAgICAgICAgICBp
ZiAoYi5pc0Z1bmN0aW9uKGUpKQotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVu
Y3Rpb24odCkgewotICAgICAgICAgICAgICAgICAgICBiKHRoaXMpLmFkZENsYXNzKGUuY2FsbCh0
aGlzLCB0LCB0aGlzLmNsYXNzTmFtZSkpCi0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICBpZiAodSkKLSAgICAgICAgICAgICAgICBmb3IgKHQgPSAoZSB8fCAiIikubWF0Y2godykgfHwg
W107IHMgPiBhOyBhKyspCi0gICAgICAgICAgICAgICAgICAgIGlmIChuID0gdGhpc1thXSwgciA9
IDEgPT09IG4ubm9kZVR5cGUgJiYgKG4uY2xhc3NOYW1lID8gKCIgIiArIG4uY2xhc3NOYW1lICsg
IiAiKS5yZXBsYWNlKFgsICIgIikgOiAiICIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBv
ID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpID0gdFtvKytdKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAgPiByLmluZGV4T2YoIiAiICsgaSArICIgIikgJiYgKHIg
Kz0gaSArICIgIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuLmNsYXNzTmFtZSA9IGIudHJp
bShyKQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdGhpcwotICAg
ICAgICB9LAotICAgICAgICByZW1vdmVDbGFzczogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAg
dmFyIHQsCi0gICAgICAgICAgICAgICAgbiwKLSAgICAgICAgICAgICAgICByLAotICAgICAgICAg
ICAgICAgIGksCi0gICAgICAgICAgICAgICAgbywKLSAgICAgICAgICAgICAgICBhID0gMCwKLSAg
ICAgICAgICAgICAgICBzID0gdGhpcy5sZW5ndGgsCi0gICAgICAgICAgICAgICAgdSA9IDAgPT09
IGFyZ3VtZW50cy5sZW5ndGggfHwgInN0cmluZyIgPT0gdHlwZW9mIGUgJiYgZTsKLSAgICAgICAg
ICAgIGlmIChiLmlzRnVuY3Rpb24oZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFj
aChmdW5jdGlvbih0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGIodGhpcykucmVtb3ZlQ2xhc3Mo
ZS5jYWxsKHRoaXMsIHQsIHRoaXMuY2xhc3NOYW1lKSkKLSAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgIGlmICh1KQotICAgICAgICAgICAgICAgIGZvciAodCA9IChlIHx8ICIiKS5tYXRj
aCh3KSB8fCBbXTsgcyA+IGE7IGErKykKLSAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSB0aGlz
W2FdLCByID0gMSA9PT0gbi5ub2RlVHlwZSAmJiAobi5jbGFzc05hbWUgPyAoIiAiICsgbi5jbGFz
c05hbWUgKyAiICIpLnJlcGxhY2UoWCwgIiAiKSA6ICIiKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgbyA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaSA9IHRbbysrXSkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoci5pbmRleE9mKCIgIiArIGkgKyAi
ICIpID49IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSByLnJlcGxhY2Uo
IiAiICsgaSArICIgIiwgIiAiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG4uY2xhc3NOYW1l
ID0gZSA/IGIudHJpbShyKSA6ICIiCi0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHJldHVybiB0aGlzCi0gICAgICAgIH0sCi0gICAgICAgIHRvZ2dsZUNsYXNzOiBmdW5jdGlvbihl
LCB0KSB7Ci0gICAgICAgICAgICB2YXIgbiA9IHR5cGVvZiBlLAotICAgICAgICAgICAgICAgIHIg
PSAiYm9vbGVhbiIgPT0gdHlwZW9mIHQ7Ci0gICAgICAgICAgICByZXR1cm4gYi5pc0Z1bmN0aW9u
KGUpID8gdGhpcy5lYWNoKGZ1bmN0aW9uKG4pIHsKLSAgICAgICAgICAgICAgICBiKHRoaXMpLnRv
Z2dsZUNsYXNzKGUuY2FsbCh0aGlzLCBuLCB0aGlzLmNsYXNzTmFtZSwgdCksIHQpCi0gICAgICAg
ICAgICB9KSA6IHRoaXMuZWFjaChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBpZiAoInN0
cmluZyIgPT09IG4pIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIG8sCi0gICAgICAgICAgICAg
ICAgICAgICAgICBhID0gMCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBiKHRoaXMpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHQsCi0gICAgICAgICAgICAgICAgICAgICAgICBs
ID0gZS5tYXRjaCh3KSB8fCBbXTsKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG8gPSBsW2Er
K10pCi0gICAgICAgICAgICAgICAgICAgICAgICB1ID0gciA/IHUgOiAhcy5oYXNDbGFzcyhvKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIHNbdSA/ICJhZGRDbGFzcyIgOiAicmVtb3ZlQ2xhc3Mi
XShvKQotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICAobiA9PT0g
aSB8fCAiYm9vbGVhbiIgPT09IG4pICYmICh0aGlzLmNsYXNzTmFtZSAmJiBiLl9kYXRhKHRoaXMs
ICJfX2NsYXNzTmFtZV9fIiwgdGhpcy5jbGFzc05hbWUpLCB0aGlzLmNsYXNzTmFtZSA9IHRoaXMu
Y2xhc3NOYW1lIHx8IGUgPT09ICExID8gIiIgOiBiLl9kYXRhKHRoaXMsICJfX2NsYXNzTmFtZV9f
IikgfHwgIiIpCi0gICAgICAgICAgICB9KQotICAgICAgICB9LAotICAgICAgICBoYXNDbGFzczog
ZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgdmFyIHQgPSAiICIgKyBlICsgIiAiLAotICAgICAg
ICAgICAgICAgIG4gPSAwLAotICAgICAgICAgICAgICAgIHIgPSB0aGlzLmxlbmd0aDsKLSAgICAg
ICAgICAgIGZvciAoOyByID4gbjsgbisrKQotICAgICAgICAgICAgICAgIGlmICgxID09PSB0aGlz
W25dLm5vZGVUeXBlICYmICgiICIgKyB0aGlzW25dLmNsYXNzTmFtZSArICIgIikucmVwbGFjZShY
LCAiICIpLmluZGV4T2YodCkgPj0gMCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEwOwot
ICAgICAgICAgICAgcmV0dXJuICExCi0gICAgICAgIH0sCi0gICAgICAgIHZhbDogZnVuY3Rpb24o
ZSkgewotICAgICAgICAgICAgdmFyIG4sCi0gICAgICAgICAgICAgICAgciwKLSAgICAgICAgICAg
ICAgICBpLAotICAgICAgICAgICAgICAgIG8gPSB0aGlzWzBdOwotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoKQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gaSA9IGIuaXNGdW5jdGlvbihlKSwgdGhpcy5lYWNoKGZ1bmN0aW9uKG4pIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEg
PSBiKHRoaXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgMSA9PT0gdGhpcy5ub2RlVHlwZSAm
JiAobyA9IGkgPyBlLmNhbGwodGhpcywgbiwgYS52YWwoKSkgOiBlLCBudWxsID09IG8gPyBvID0g
IiIgOiAibnVtYmVyIiA9PSB0eXBlb2YgbyA/IG8gKz0gIiIgOiBiLmlzQXJyYXkobykgJiYgKG8g
PSBiLm1hcChvLCBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGwgPT0gZSA/ICIiIDogZSArICIiCi0gICAgICAgICAgICAgICAgICAgICAgICB9KSks
IHIgPSBiLnZhbEhvb2tzW3RoaXMudHlwZV0gfHwgYi52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRv
TG93ZXJDYXNlKCldLCByICYmICJzZXQiIGluIHIgJiYgci5zZXQodGhpcywgbywgInZhbHVlIikg
IT09IHQgfHwgKHRoaXMudmFsdWUgPSBvKSkKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICAgICAgaWYgKG8pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiByID0gYi52YWxI
b29rc1tvLnR5cGVdIHx8IGIudmFsSG9va3Nbby5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSwgciAm
JiAiZ2V0IiBpbiByICYmIChuID0gci5nZXQobywgInZhbHVlIikpICE9PSB0ID8gbiA6IChuID0g
by52YWx1ZSwgInN0cmluZyIgPT0gdHlwZW9mIG4gPyBuLnJlcGxhY2UoVSwgIiIpIDogbnVsbCA9
PSBuID8gIiIgOiBuKQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSksCi0gICAgYi5l
eHRlbmQoewotICAgICAgICB2YWxIb29rczogewotICAgICAgICAgICAgb3B0aW9uOiB7Ci0gICAg
ICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciB0
ID0gZS5hdHRyaWJ1dGVzLnZhbHVlOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXQgfHwg
dC5zcGVjaWZpZWQgPyBlLnZhbHVlIDogZS50ZXh0Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgIHNlbGVjdDogewotICAgICAgICAgICAgICAgIGdldDogZnVu
Y3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgICB2YXIgdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG4sCi0gICAgICAgICAgICAgICAgICAgICAgICByID0gZS5vcHRpb25zLAotICAgICAg
ICAgICAgICAgICAgICAgICAgaSA9IGUuc2VsZWN0ZWRJbmRleCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG8gPSAic2VsZWN0LW9uZSIgPT09IGUudHlwZSB8fCAwID4gaSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGEgPSBvID8gbnVsbCA6IFtdLAotICAgICAgICAgICAgICAgICAgICAgICAg
cyA9IG8gPyBpICsgMSA6IHIubGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgdSA9IDAg
PiBpID8gcyA6IG8gPyBpIDogMDsKLSAgICAgICAgICAgICAgICAgICAgZm9yICg7IHMgPiB1OyB1
KyspCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IHJbdV0sICEoIW4uc2VsZWN0ZWQg
JiYgdSAhPT0gaSB8fCAoYi5zdXBwb3J0Lm9wdERpc2FibGVkID8gbi5kaXNhYmxlZCA6IG51bGwg
IT09IG4uZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpKSB8fCBuLnBhcmVudE5vZGUuZGlzYWJsZWQg
JiYgYi5ub2RlTmFtZShuLnBhcmVudE5vZGUsICJvcHRncm91cCIpKSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh0ID0gYihuKS52YWwoKSwgbykKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5w
dXNoKHQpCi0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBhCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9u
KGUsIHQpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBiLm1ha2VBcnJheSh0KTsKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGIoZSkuZmluZCgib3B0aW9uIikuZWFjaChmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBiLmluQXJyYXko
Yih0aGlzKS52YWwoKSwgbikgPj0gMAotICAgICAgICAgICAgICAgICAgICB9KSwgbi5sZW5ndGgg
fHwgKGUuc2VsZWN0ZWRJbmRleCA9IC0xKSwgbgotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgYXR0cjogZnVuY3Rpb24oZSwgbiwgcikgewotICAg
ICAgICAgICAgdmFyIG8sCi0gICAgICAgICAgICAgICAgYSwKLSAgICAgICAgICAgICAgICBzLAot
ICAgICAgICAgICAgICAgIHUgPSBlLm5vZGVUeXBlOwotICAgICAgICAgICAgaWYgKGUgJiYgMyAh
PT0gdSAmJiA4ICE9PSB1ICYmIDIgIT09IHUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVv
ZiBlLmdldEF0dHJpYnV0ZSA9PT0gaSA/IGIucHJvcChlLCBuLCByKSA6IChhID0gMSAhPT0gdSB8
fCAhYi5pc1hNTERvYyhlKSwgYSAmJiAobiA9IG4udG9Mb3dlckNhc2UoKSwgbyA9IGIuYXR0ckhv
b2tzW25dIHx8IChKLnRlc3QobikgPyB6IDogSSkpLCByID09PSB0ID8gbyAmJiBhICYmICJnZXQi
IGluIG8gJiYgbnVsbCAhPT0gKHMgPSBvLmdldChlLCBuKSkgPyBzIDogKHR5cGVvZiBlLmdldEF0
dHJpYnV0ZSAhPT0gaSAmJiAocyA9IGUuZ2V0QXR0cmlidXRlKG4pKSwgbnVsbCA9PSBzID8gdCA6
IHMpIDogbnVsbCAhPT0gciA/IG8gJiYgYSAmJiAic2V0IiBpbiBvICYmIChzID0gby5zZXQoZSwg
ciwgbikpICE9PSB0ID8gcyA6IChlLnNldEF0dHJpYnV0ZShuLCByICsgIiIpLCByKSA6IChiLnJl
bW92ZUF0dHIoZSwgbiksIHQpKQotICAgICAgICB9LAotICAgICAgICByZW1vdmVBdHRyOiBmdW5j
dGlvbihlLCB0KSB7Ci0gICAgICAgICAgICB2YXIgbiwKLSAgICAgICAgICAgICAgICByLAotICAg
ICAgICAgICAgICAgIGkgPSAwLAotICAgICAgICAgICAgICAgIG8gPSB0ICYmIHQubWF0Y2godyk7
Ci0gICAgICAgICAgICBpZiAobyAmJiAxID09PSBlLm5vZGVUeXBlKQotICAgICAgICAgICAgICAg
IHdoaWxlIChuID0gb1tpKytdKQotICAgICAgICAgICAgICAgICAgICByID0gYi5wcm9wRml4W25d
IHx8IG4sCi0gICAgICAgICAgICAgICAgICAgIEoudGVzdChuKSA/ICFRICYmIEcudGVzdChuKSA/
IGVbYi5jYW1lbENhc2UoImRlZmF1bHQtIiArIG4pXSA9IGVbcl0gPSAhMSA6IGVbcl0gPSAhMSA6
IGIuYXR0cihlLCBuLCAiIiksCi0gICAgICAgICAgICAgICAgICAgIGUucmVtb3ZlQXR0cmlidXRl
KFEgPyBuIDogcikKLSAgICAgICAgfSwKLSAgICAgICAgYXR0ckhvb2tzOiB7Ci0gICAgICAgICAg
ICB0eXBlOiB7Ci0gICAgICAgICAgICAgICAgc2V0OiBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICghYi5zdXBwb3J0LnJhZGlvVmFsdWUgJiYgInJhZGlvIiA9PT0gdCAm
JiBiLm5vZGVOYW1lKGUsICJpbnB1dCIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIg
biA9IGUudmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5zZXRBdHRyaWJ1
dGUoInR5cGUiLCB0KSwgbiAmJiAoZS52YWx1ZSA9IG4pLCB0Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAg
IHByb3BGaXg6IHsKLSAgICAgICAgICAgIHRhYmluZGV4OiAidGFiSW5kZXgiLAotICAgICAgICAg
ICAgcmVhZG9ubHk6ICJyZWFkT25seSIsCi0gICAgICAgICAgICAiZm9yIjogImh0bWxGb3IiLAot
ICAgICAgICAgICAgImNsYXNzIjogImNsYXNzTmFtZSIsCi0gICAgICAgICAgICBtYXhsZW5ndGg6
ICJtYXhMZW5ndGgiLAotICAgICAgICAgICAgY2VsbHNwYWNpbmc6ICJjZWxsU3BhY2luZyIsCi0g
ICAgICAgICAgICBjZWxscGFkZGluZzogImNlbGxQYWRkaW5nIiwKLSAgICAgICAgICAgIHJvd3Nw
YW46ICJyb3dTcGFuIiwKLSAgICAgICAgICAgIGNvbHNwYW46ICJjb2xTcGFuIiwKLSAgICAgICAg
ICAgIHVzZW1hcDogInVzZU1hcCIsCi0gICAgICAgICAgICBmcmFtZWJvcmRlcjogImZyYW1lQm9y
ZGVyIiwKLSAgICAgICAgICAgIGNvbnRlbnRlZGl0YWJsZTogImNvbnRlbnRFZGl0YWJsZSIKLSAg
ICAgICAgfSwKLSAgICAgICAgcHJvcDogZnVuY3Rpb24oZSwgbiwgcikgewotICAgICAgICAgICAg
dmFyIGksCi0gICAgICAgICAgICAgICAgbywKLSAgICAgICAgICAgICAgICBhLAotICAgICAgICAg
ICAgICAgIHMgPSBlLm5vZGVUeXBlOwotICAgICAgICAgICAgaWYgKGUgJiYgMyAhPT0gcyAmJiA4
ICE9PSBzICYmIDIgIT09IHMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGEgPSAxICE9PSBzIHx8
ICFiLmlzWE1MRG9jKGUpLCBhICYmIChuID0gYi5wcm9wRml4W25dIHx8IG4sIG8gPSBiLnByb3BI
b29rc1tuXSksIHIgIT09IHQgPyBvICYmICJzZXQiIGluIG8gJiYgKGkgPSBvLnNldChlLCByLCBu
KSkgIT09IHQgPyBpIDogZVtuXSA9IHIgOiBvICYmICJnZXQiIGluIG8gJiYgbnVsbCAhPT0gKGkg
PSBvLmdldChlLCBuKSkgPyBpIDogZVtuXQotICAgICAgICB9LAotICAgICAgICBwcm9wSG9va3M6
IHsKLSAgICAgICAgICAgIHRhYkluZGV4OiB7Ci0gICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlv
bihlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS5nZXRBdHRyaWJ1dGVOb2RlKCJ0
YWJpbmRleCIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBuLnNwZWNpZmllZCA/
IHBhcnNlSW50KG4udmFsdWUsIDEwKSA6IFYudGVzdChlLm5vZGVOYW1lKSB8fCBZLnRlc3QoZS5u
b2RlTmFtZSkgJiYgZS5ocmVmID8gMCA6IHQKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9KSwKLSAgICB6ID0gewotICAgICAgICBnZXQ6IGZ1bmN0aW9u
KGUsIG4pIHsKLSAgICAgICAgICAgIHZhciByID0gYi5wcm9wKGUsIG4pLAotICAgICAgICAgICAg
ICAgIGkgPSAiYm9vbGVhbiIgPT0gdHlwZW9mIHIgJiYgZS5nZXRBdHRyaWJ1dGUobiksCi0gICAg
ICAgICAgICAgICAgbyA9ICJib29sZWFuIiA9PSB0eXBlb2YgciA/IEsgJiYgUSA/IG51bGwgIT0g
aSA6IEcudGVzdChuKSA/IGVbYi5jYW1lbENhc2UoImRlZmF1bHQtIiArIG4pXSA6ICEhaSA6IGUu
Z2V0QXR0cmlidXRlTm9kZShuKTsKLSAgICAgICAgICAgIHJldHVybiBvICYmIG8udmFsdWUgIT09
ICExID8gbi50b0xvd2VyQ2FzZSgpIDogdAotICAgICAgICB9LAotICAgICAgICBzZXQ6IGZ1bmN0
aW9uKGUsIHQsIG4pIHsKLSAgICAgICAgICAgIHJldHVybiB0ID09PSAhMSA/IGIucmVtb3ZlQXR0
cihlLCBuKSA6IEsgJiYgUSB8fCAhRy50ZXN0KG4pID8gZS5zZXRBdHRyaWJ1dGUoIVEgJiYgYi5w
cm9wRml4W25dIHx8IG4sIG4pIDogZVtiLmNhbWVsQ2FzZSgiZGVmYXVsdC0iICsgbildID0gZVtu
XSA9ICEwLCBuCi0gICAgICAgIH0KLSAgICB9LAotICAgIEsgJiYgUSB8fCAoYi5hdHRySG9va3Mu
dmFsdWUgPSB7Ci0gICAgICAgIGdldDogZnVuY3Rpb24oZSwgbikgewotICAgICAgICAgICAgdmFy
IHIgPSBlLmdldEF0dHJpYnV0ZU5vZGUobik7Ci0gICAgICAgICAgICByZXR1cm4gYi5ub2RlTmFt
ZShlLCAiaW5wdXQiKSA/IGUuZGVmYXVsdFZhbHVlIDogciAmJiByLnNwZWNpZmllZCA/IHIudmFs
dWUgOiB0Ci0gICAgICAgIH0sCi0gICAgICAgIHNldDogZnVuY3Rpb24oZSwgbiwgcikgewotICAg
ICAgICAgICAgcmV0dXJuIGIubm9kZU5hbWUoZSwgImlucHV0IikgPyAoZS5kZWZhdWx0VmFsdWUg
PSBuLCB0KSA6IEkgJiYgSS5zZXQoZSwgbiwgcikKLSAgICAgICAgfQotICAgIH0pLAotICAgIFEg
fHwgKEkgPSBiLnZhbEhvb2tzLmJ1dHRvbiA9IHsKLSAgICAgICAgZ2V0OiBmdW5jdGlvbihlLCBu
KSB7Ci0gICAgICAgICAgICB2YXIgciA9IGUuZ2V0QXR0cmlidXRlTm9kZShuKTsKLSAgICAgICAg
ICAgIHJldHVybiByICYmICgiaWQiID09PSBuIHx8ICJuYW1lIiA9PT0gbiB8fCAiY29vcmRzIiA9
PT0gbiA/ICIiICE9PSByLnZhbHVlIDogci5zcGVjaWZpZWQpID8gci52YWx1ZSA6IHQKLSAgICAg
ICAgfSwKLSAgICAgICAgc2V0OiBmdW5jdGlvbihlLCBuLCByKSB7Ci0gICAgICAgICAgICB2YXIg
aSA9IGUuZ2V0QXR0cmlidXRlTm9kZShyKTsKLSAgICAgICAgICAgIHJldHVybiBpIHx8IGUuc2V0
QXR0cmlidXRlTm9kZShpID0gZS5vd25lckRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZShyKSksIGku
dmFsdWUgPSBuICs9ICIiLCAidmFsdWUiID09PSByIHx8IG4gPT09IGUuZ2V0QXR0cmlidXRlKHIp
ID8gbiA6IHQKLSAgICAgICAgfQotICAgIH0sIGIuYXR0ckhvb2tzLmNvbnRlbnRlZGl0YWJsZSA9
IHsKLSAgICAgICAgZ2V0OiBJLmdldCwKLSAgICAgICAgc2V0OiBmdW5jdGlvbihlLCB0LCBuKSB7
Ci0gICAgICAgICAgICBJLnNldChlLCAiIiA9PT0gdCA/ICExIDogdCwgbikKLSAgICAgICAgfQot
ICAgIH0sIGIuZWFjaChbIndpZHRoIiwgImhlaWdodCJdLCBmdW5jdGlvbihlLCBuKSB7Ci0gICAg
ICAgIGIuYXR0ckhvb2tzW25dID0gYi5leHRlbmQoYi5hdHRySG9va3Nbbl0sIHsKLSAgICAgICAg
ICAgIHNldDogZnVuY3Rpb24oZSwgcikgewotICAgICAgICAgICAgICAgIHJldHVybiAiIiA9PT0g
ciA/IChlLnNldEF0dHJpYnV0ZShuLCAiYXV0byIpLCByKSA6IHQKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfSkKLSAgICB9KSksCi0gICAgYi5zdXBwb3J0LmhyZWZOb3JtYWxpemVkIHx8IChiLmVh
Y2goWyJocmVmIiwgInNyYyIsICJ3aWR0aCIsICJoZWlnaHQiXSwgZnVuY3Rpb24oZSwgbikgewot
ICAgICAgICBiLmF0dHJIb29rc1tuXSA9IGIuZXh0ZW5kKGIuYXR0ckhvb2tzW25dLCB7Ci0gICAg
ICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICB2YXIgciA9IGUuZ2V0
QXR0cmlidXRlKG4sIDIpOwotICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IHIgPyB0IDog
cgotICAgICAgICAgICAgfQotICAgICAgICB9KQotICAgIH0pLCBiLmVhY2goWyJocmVmIiwgInNy
YyJdLCBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgIGIucHJvcEhvb2tzW3RdID0gewotICAgICAg
ICAgICAgZ2V0OiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGUuZ2V0QXR0
cmlidXRlKHQsIDQpCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9KSksCi0gICAgYi5z
dXBwb3J0LnN0eWxlIHx8IChiLmF0dHJIb29rcy5zdHlsZSA9IHsKLSAgICAgICAgZ2V0OiBmdW5j
dGlvbihlKSB7Ci0gICAgICAgICAgICByZXR1cm4gZS5zdHlsZS5jc3NUZXh0IHx8IHQKLSAgICAg
ICAgfSwKLSAgICAgICAgc2V0OiBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICByZXR1cm4g
ZS5zdHlsZS5jc3NUZXh0ID0gdCArICIiCi0gICAgICAgIH0KLSAgICB9KSwKLSAgICBiLnN1cHBv
cnQub3B0U2VsZWN0ZWQgfHwgKGIucHJvcEhvb2tzLnNlbGVjdGVkID0gYi5leHRlbmQoYi5wcm9w
SG9va3Muc2VsZWN0ZWQsIHsKLSAgICAgICAgZ2V0OiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAg
ICB2YXIgdCA9IGUucGFyZW50Tm9kZTsKLSAgICAgICAgICAgIHJldHVybiB0ICYmICh0LnNlbGVj
dGVkSW5kZXgsIHQucGFyZW50Tm9kZSAmJiB0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCksIG51
bGwKLSAgICAgICAgfQotICAgIH0pKSwKLSAgICBiLnN1cHBvcnQuZW5jdHlwZSB8fCAoYi5wcm9w
Rml4LmVuY3R5cGUgPSAiZW5jb2RpbmciKSwKLSAgICBiLnN1cHBvcnQuY2hlY2tPbiB8fCBiLmVh
Y2goWyJyYWRpbyIsICJjaGVja2JveCJdLCBmdW5jdGlvbigpIHsKLSAgICAgICAgYi52YWxIb29r
c1t0aGlzXSA9IHsKLSAgICAgICAgICAgIGdldDogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAg
ICAgIHJldHVybiBudWxsID09PSBlLmdldEF0dHJpYnV0ZSgidmFsdWUiKSA/ICJvbiIgOiBlLnZh
bHVlCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9KSwKLSAgICBiLmVhY2goWyJyYWRp
byIsICJjaGVja2JveCJdLCBmdW5jdGlvbigpIHsKLSAgICAgICAgYi52YWxIb29rc1t0aGlzXSA9
IGIuZXh0ZW5kKGIudmFsSG9va3NbdGhpc10sIHsKLSAgICAgICAgICAgIHNldDogZnVuY3Rpb24o
ZSwgbikgewotICAgICAgICAgICAgICAgIHJldHVybiBiLmlzQXJyYXkobikgPyBlLmNoZWNrZWQg
PSBiLmluQXJyYXkoYihlKS52YWwoKSwgbikgPj0gMCA6IHQKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfSkKLSAgICB9KTsKLSAgICB2YXIgWiA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhKSQv
aSwKLSAgICAgICAgZXQgPSAvXmtleS8sCi0gICAgICAgIHR0ID0gL14oPzptb3VzZXxjb250ZXh0
bWVudSl8Y2xpY2svLAotICAgICAgICBudCA9IC9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1
cikkLywKLSAgICAgICAgcnQgPSAvXihbXi5dKikoPzpcLiguKyl8KSQvOwotICAgIGZ1bmN0aW9u
IGl0KCkgewotICAgICAgICByZXR1cm4gITAKLSAgICB9Ci0gICAgZnVuY3Rpb24gb3QoKSB7Ci0g
ICAgICAgIHJldHVybiAhMQotICAgIH0KLSAgICBiLmV2ZW50ID0gewotICAgICAgICBnbG9iYWw6
IHt9LAotICAgICAgICBhZGQ6IGZ1bmN0aW9uKGUsIG4sIHIsIG8sIGEpIHsKLSAgICAgICAgICAg
IHZhciBzLAotICAgICAgICAgICAgICAgIHUsCi0gICAgICAgICAgICAgICAgbCwKLSAgICAgICAg
ICAgICAgICBjLAotICAgICAgICAgICAgICAgIHAsCi0gICAgICAgICAgICAgICAgZiwKLSAgICAg
ICAgICAgICAgICBkLAotICAgICAgICAgICAgICAgIGgsCi0gICAgICAgICAgICAgICAgZywKLSAg
ICAgICAgICAgICAgICBtLAotICAgICAgICAgICAgICAgIHksCi0gICAgICAgICAgICAgICAgdiA9
IGIuX2RhdGEoZSk7Ci0gICAgICAgICAgICBpZiAodikgewotICAgICAgICAgICAgICAgIHIuaGFu
ZGxlciAmJiAoYyA9IHIsIHIgPSBjLmhhbmRsZXIsIGEgPSBjLnNlbGVjdG9yKSwKLSAgICAgICAg
ICAgICAgICByLmd1aWQgfHwgKHIuZ3VpZCA9IGIuZ3VpZCsrKSwKLSAgICAgICAgICAgICAgICAo
dSA9IHYuZXZlbnRzKSB8fCAodSA9IHYuZXZlbnRzID0ge30pLAotICAgICAgICAgICAgICAgIChm
ID0gdi5oYW5kbGUpIHx8IChmID0gdi5oYW5kbGUgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0eXBlb2YgYiA9PT0gaSB8fCBlICYmIGIuZXZlbnQudHJpZ2dlcmVk
ID09PSBlLnR5cGUgPyB0IDogYi5ldmVudC5kaXNwYXRjaC5hcHBseShmLmVsZW0sIGFyZ3VtZW50
cykKLSAgICAgICAgICAgICAgICB9LCBmLmVsZW0gPSBlKSwKLSAgICAgICAgICAgICAgICBuID0g
KG4gfHwgIiIpLm1hdGNoKHcpIHx8IFsiIl0sCi0gICAgICAgICAgICAgICAgbCA9IG4ubGVuZ3Ro
OwotICAgICAgICAgICAgICAgIHdoaWxlIChsLS0pCi0gICAgICAgICAgICAgICAgICAgIHMgPSBy
dC5leGVjKG5bbF0pIHx8IFtdLAotICAgICAgICAgICAgICAgICAgICBnID0geSA9IHNbMV0sCi0g
ICAgICAgICAgICAgICAgICAgIG0gPSAoc1syXSB8fCAiIikuc3BsaXQoIi4iKS5zb3J0KCksCi0g
ICAgICAgICAgICAgICAgICAgIHAgPSBiLmV2ZW50LnNwZWNpYWxbZ10gfHwge30sCi0gICAgICAg
ICAgICAgICAgICAgIGcgPSAoYSA/IHAuZGVsZWdhdGVUeXBlIDogcC5iaW5kVHlwZSkgfHwgZywK
LSAgICAgICAgICAgICAgICAgICAgcCA9IGIuZXZlbnQuc3BlY2lhbFtnXSB8fCB7fSwKLSAgICAg
ICAgICAgICAgICAgICAgZCA9IGIuZXh0ZW5kKHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGU6IGcsCi0gICAgICAgICAgICAgICAgICAgICAgICBvcmlnVHlwZTogeSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGE6IG8sCi0gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyOiBy
LAotICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZDogci5ndWlkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZWN0b3I6IGEsCi0gICAgICAgICAgICAgICAgICAgICAgICBuZWVkc0NvbnRl
eHQ6IGEgJiYgYi5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGEpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgbmFtZXNwYWNlOiBtLmpvaW4oIi4iKQotICAgICAgICAgICAgICAgICAgICB9
LCBjKSwKLSAgICAgICAgICAgICAgICAgICAgKGggPSB1W2ddKSB8fCAoaCA9IHVbZ10gPSBbXSwg
aC5kZWxlZ2F0ZUNvdW50ID0gMCwgcC5zZXR1cCAmJiBwLnNldHVwLmNhbGwoZSwgbywgbSwgZikg
IT09ICExIHx8IChlLmFkZEV2ZW50TGlzdGVuZXIgPyBlLmFkZEV2ZW50TGlzdGVuZXIoZywgZiwg
ITEpIDogZS5hdHRhY2hFdmVudCAmJiBlLmF0dGFjaEV2ZW50KCJvbiIgKyBnLCBmKSkpLAotICAg
ICAgICAgICAgICAgICAgICBwLmFkZCAmJiAocC5hZGQuY2FsbChlLCBkKSwgZC5oYW5kbGVyLmd1
aWQgfHwgKGQuaGFuZGxlci5ndWlkID0gci5ndWlkKSksCi0gICAgICAgICAgICAgICAgICAgIGEg
PyBoLnNwbGljZShoLmRlbGVnYXRlQ291bnQrKywgMCwgZCkgOiBoLnB1c2goZCksCi0gICAgICAg
ICAgICAgICAgICAgIGIuZXZlbnQuZ2xvYmFsW2ddID0gITA7Ci0gICAgICAgICAgICAgICAgZSA9
IG51bGwKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgcmVtb3ZlOiBmdW5jdGlv
bihlLCB0LCBuLCByLCBpKSB7Ci0gICAgICAgICAgICB2YXIgbywKLSAgICAgICAgICAgICAgICBh
LAotICAgICAgICAgICAgICAgIHMsCi0gICAgICAgICAgICAgICAgdSwKLSAgICAgICAgICAgICAg
ICBsLAotICAgICAgICAgICAgICAgIGMsCi0gICAgICAgICAgICAgICAgcCwKLSAgICAgICAgICAg
ICAgICBmLAotICAgICAgICAgICAgICAgIGQsCi0gICAgICAgICAgICAgICAgaCwKLSAgICAgICAg
ICAgICAgICBnLAotICAgICAgICAgICAgICAgIG0gPSBiLmhhc0RhdGEoZSkgJiYgYi5fZGF0YShl
KTsKLSAgICAgICAgICAgIGlmIChtICYmIChjID0gbS5ldmVudHMpKSB7Ci0gICAgICAgICAgICAg
ICAgdCA9ICh0IHx8ICIiKS5tYXRjaCh3KSB8fCBbIiJdLAotICAgICAgICAgICAgICAgIGwgPSB0
Lmxlbmd0aDsKLSAgICAgICAgICAgICAgICB3aGlsZSAobC0tKQotICAgICAgICAgICAgICAgICAg
ICBpZiAocyA9IHJ0LmV4ZWModFtsXSkgfHwgW10sIGQgPSBnID0gc1sxXSwgaCA9IChzWzJdIHx8
ICIiKS5zcGxpdCgiLiIpLnNvcnQoKSwgZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcCA9
IGIuZXZlbnQuc3BlY2lhbFtkXSB8fCB7fSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAo
ciA/IHAuZGVsZWdhdGVUeXBlIDogcC5iaW5kVHlwZSkgfHwgZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGYgPSBjW2RdIHx8IFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHNbMl0g
JiYgUmVnRXhwKCIoXnxcXC4pIiArIGguam9pbigiXFwuKD86LipcXC58KSIpICsgIihcXC58JCki
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBvID0gZi5sZW5ndGg7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB3aGlsZSAoby0tKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEg
PSBmW29dLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpICYmIGcgIT09IGEub3JpZ1R5
cGUgfHwgbiAmJiBuLmd1aWQgIT09IGEuZ3VpZCB8fCBzICYmICFzLnRlc3QoYS5uYW1lc3BhY2Up
IHx8IHIgJiYgciAhPT0gYS5zZWxlY3RvciAmJiAoIioqIiAhPT0gciB8fCAhYS5zZWxlY3Rvcikg
fHwgKGYuc3BsaWNlKG8sIDEpLCBhLnNlbGVjdG9yICYmIGYuZGVsZWdhdGVDb3VudC0tLCBwLnJl
bW92ZSAmJiBwLnJlbW92ZS5jYWxsKGUsIGEpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHUg
JiYgIWYubGVuZ3RoICYmIChwLnRlYXJkb3duICYmIHAudGVhcmRvd24uY2FsbChlLCBoLCBtLmhh
bmRsZSkgIT09ICExIHx8IGIucmVtb3ZlRXZlbnQoZSwgZCwgbS5oYW5kbGUpLCBkZWxldGUgY1tk
XSkKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBm
b3IgKGQgaW4gYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLmV2ZW50LnJlbW92ZShl
LCBkICsgdFtsXSwgbiwgciwgITApOwotICAgICAgICAgICAgICAgIGIuaXNFbXB0eU9iamVjdChj
KSAmJiAoZGVsZXRlIG0uaGFuZGxlLCBiLl9yZW1vdmVEYXRhKGUsICJldmVudHMiKSkKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgdHJpZ2dlcjogZnVuY3Rpb24obiwgciwgaSwg
YSkgewotICAgICAgICAgICAgdmFyIHMsCi0gICAgICAgICAgICAgICAgdSwKLSAgICAgICAgICAg
ICAgICBsLAotICAgICAgICAgICAgICAgIGMsCi0gICAgICAgICAgICAgICAgcCwKLSAgICAgICAg
ICAgICAgICBmLAotICAgICAgICAgICAgICAgIGQsCi0gICAgICAgICAgICAgICAgaCA9IFtpIHx8
IG9dLAotICAgICAgICAgICAgICAgIGcgPSB5LmNhbGwobiwgInR5cGUiKSA/IG4udHlwZSA6IG4s
Ci0gICAgICAgICAgICAgICAgbSA9IHkuY2FsbChuLCAibmFtZXNwYWNlIikgPyBuLm5hbWVzcGFj
ZS5zcGxpdCgiLiIpIDogW107Ci0gICAgICAgICAgICBpZiAobCA9IGYgPSBpID0gaSB8fCBvLCAz
ICE9PSBpLm5vZGVUeXBlICYmIDggIT09IGkubm9kZVR5cGUgJiYgIW50LnRlc3QoZyArIGIuZXZl
bnQudHJpZ2dlcmVkKSAmJiAoZy5pbmRleE9mKCIuIikgPj0gMCAmJiAobSA9IGcuc3BsaXQoIi4i
KSwgZyA9IG0uc2hpZnQoKSwgbS5zb3J0KCkpLCB1ID0gMCA+IGcuaW5kZXhPZigiOiIpICYmICJv
biIgKyBnLCBuID0gbltiLmV4cGFuZG9dID8gbiA6IG5ldyBiLkV2ZW50KGcsICJvYmplY3QiID09
IHR5cGVvZiBuICYmIG4pLCBuLmlzVHJpZ2dlciA9ICEwLCBuLm5hbWVzcGFjZSA9IG0uam9pbigi
LiIpLCBuLm5hbWVzcGFjZV9yZSA9IG4ubmFtZXNwYWNlID8gUmVnRXhwKCIoXnxcXC4pIiArIG0u
am9pbigiXFwuKD86LipcXC58KSIpICsgIihcXC58JCkiKSA6IG51bGwsIG4ucmVzdWx0ID0gdCwg
bi50YXJnZXQgfHwgKG4udGFyZ2V0ID0gaSksIHIgPSBudWxsID09IHIgPyBbbl0gOiBiLm1ha2VB
cnJheShyLCBbbl0pLCBwID0gYi5ldmVudC5zcGVjaWFsW2ddIHx8IHt9LCBhIHx8ICFwLnRyaWdn
ZXIgfHwgcC50cmlnZ2VyLmFwcGx5KGksIHIpICE9PSAhMSkpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoIWEgJiYgIXAubm9CdWJibGUgJiYgIWIuaXNXaW5kb3coaSkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgZm9yIChjID0gcC5kZWxlZ2F0ZVR5cGUgfHwgZywgbnQudGVzdChjICsgZykgfHwgKGwg
PSBsLnBhcmVudE5vZGUpOyBsOyBsID0gbC5wYXJlbnROb2RlKQotICAgICAgICAgICAgICAgICAg
ICAgICAgaC5wdXNoKGwpLAotICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGw7Ci0gICAgICAg
ICAgICAgICAgICAgIGYgPT09IChpLm93bmVyRG9jdW1lbnQgfHwgbykgJiYgaC5wdXNoKGYuZGVm
YXVsdFZpZXcgfHwgZi5wYXJlbnRXaW5kb3cgfHwgZSkKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgZCA9IDA7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKChsID0gaFtkKytdKSAm
JiAhbi5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKQotICAgICAgICAgICAgICAgICAgICBuLnR5cGUg
PSBkID4gMSA/IGMgOiBwLmJpbmRUeXBlIHx8IGcsCi0gICAgICAgICAgICAgICAgICAgIHMgPSAo
Yi5fZGF0YShsLCAiZXZlbnRzIikgfHwge30pW24udHlwZV0gJiYgYi5fZGF0YShsLCAiaGFuZGxl
IiksCi0gICAgICAgICAgICAgICAgICAgIHMgJiYgcy5hcHBseShsLCByKSwKLSAgICAgICAgICAg
ICAgICAgICAgcyA9IHUgJiYgbFt1XSwKLSAgICAgICAgICAgICAgICAgICAgcyAmJiBiLmFjY2Vw
dERhdGEobCkgJiYgcy5hcHBseSAmJiBzLmFwcGx5KGwsIHIpID09PSAhMSAmJiBuLnByZXZlbnRE
ZWZhdWx0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKG4udHlwZSA9IGcsICEoYSB8fCBuLmlzRGVm
YXVsdFByZXZlbnRlZCgpIHx8IHAuX2RlZmF1bHQgJiYgcC5fZGVmYXVsdC5hcHBseShpLm93bmVy
RG9jdW1lbnQsIHIpICE9PSAhMSB8fCAiY2xpY2siID09PSBnICYmIGIubm9kZU5hbWUoaSwgImEi
KSB8fCAhYi5hY2NlcHREYXRhKGkpIHx8ICF1IHx8ICFpW2ddIHx8IGIuaXNXaW5kb3coaSkpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGYgPSBpW3VdLAotICAgICAgICAgICAgICAgICAgICBmICYm
IChpW3VdID0gbnVsbCksCi0gICAgICAgICAgICAgICAgICAgIGIuZXZlbnQudHJpZ2dlcmVkID0g
ZzsKLSAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlb
Z10oKQotICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh2KSB7fQotICAgICAgICAgICAgICAg
ICAgICBiLmV2ZW50LnRyaWdnZXJlZCA9IHQsCi0gICAgICAgICAgICAgICAgICAgIGYgJiYgKGlb
dV0gPSBmKQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gbi5yZXN1
bHQKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgZGlzcGF0Y2g6IGZ1bmN0aW9u
KGUpIHsKLSAgICAgICAgICAgIGUgPSBiLmV2ZW50LmZpeChlKTsKLSAgICAgICAgICAgIHZhciBu
LAotICAgICAgICAgICAgICAgIHIsCi0gICAgICAgICAgICAgICAgaSwKLSAgICAgICAgICAgICAg
ICBvLAotICAgICAgICAgICAgICAgIGEsCi0gICAgICAgICAgICAgICAgcyA9IFtdLAotICAgICAg
ICAgICAgICAgIHUgPSBoLmNhbGwoYXJndW1lbnRzKSwKLSAgICAgICAgICAgICAgICBsID0gKGIu
X2RhdGEodGhpcywgImV2ZW50cyIpIHx8IHt9KVtlLnR5cGVdIHx8IFtdLAotICAgICAgICAgICAg
ICAgIGMgPSBiLmV2ZW50LnNwZWNpYWxbZS50eXBlXSB8fCB7fTsKLSAgICAgICAgICAgIGlmICh1
WzBdID0gZSwgZS5kZWxlZ2F0ZVRhcmdldCA9IHRoaXMsICFjLnByZURpc3BhdGNoIHx8IGMucHJl
RGlzcGF0Y2guY2FsbCh0aGlzLCBlKSAhPT0gITEpIHsKLSAgICAgICAgICAgICAgICBzID0gYi5l
dmVudC5oYW5kbGVycy5jYWxsKHRoaXMsIGUsIGwpLAotICAgICAgICAgICAgICAgIG4gPSAwOwot
ICAgICAgICAgICAgICAgIHdoaWxlICgobyA9IHNbbisrXSkgJiYgIWUuaXNQcm9wYWdhdGlvblN0
b3BwZWQoKSkgewotICAgICAgICAgICAgICAgICAgICBlLmN1cnJlbnRUYXJnZXQgPSBvLmVsZW0s
Ci0gICAgICAgICAgICAgICAgICAgIGEgPSAwOwotICAgICAgICAgICAgICAgICAgICB3aGlsZSAo
KGkgPSBvLmhhbmRsZXJzW2ErK10pICYmICFlLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVk
KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAoIWUubmFtZXNwYWNlX3JlIHx8IGUubmFtZXNw
YWNlX3JlLnRlc3QoaS5uYW1lc3BhY2UpKSAmJiAoZS5oYW5kbGVPYmogPSBpLCBlLmRhdGEgPSBp
LmRhdGEsIHIgPSAoKGIuZXZlbnQuc3BlY2lhbFtpLm9yaWdUeXBlXSB8fCB7fSkuaGFuZGxlIHx8
IGkuaGFuZGxlcikuYXBwbHkoby5lbGVtLCB1KSwgciAhPT0gdCAmJiAoZS5yZXN1bHQgPSByKSA9
PT0gITEgJiYgKGUucHJldmVudERlZmF1bHQoKSwgZS5zdG9wUHJvcGFnYXRpb24oKSkpCi0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBjLnBvc3REaXNwYXRjaCAmJiBj
LnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsIGUpLCBlLnJlc3VsdAotICAgICAgICAgICAgfQotICAg
ICAgICB9LAotICAgICAgICBoYW5kbGVyczogZnVuY3Rpb24oZSwgbikgewotICAgICAgICAgICAg
dmFyIHIsCi0gICAgICAgICAgICAgICAgaSwKLSAgICAgICAgICAgICAgICBvLAotICAgICAgICAg
ICAgICAgIGEsCi0gICAgICAgICAgICAgICAgcyA9IFtdLAotICAgICAgICAgICAgICAgIHUgPSBu
LmRlbGVnYXRlQ291bnQsCi0gICAgICAgICAgICAgICAgbCA9IGUudGFyZ2V0OwotICAgICAgICAg
ICAgaWYgKHUgJiYgbC5ub2RlVHlwZSAmJiAoIWUuYnV0dG9uIHx8ICJjbGljayIgIT09IGUudHlw
ZSkpCi0gICAgICAgICAgICAgICAgZm9yICg7IGwgIT0gdGhpczsgbCA9IGwucGFyZW50Tm9kZSB8
fCB0aGlzKQotICAgICAgICAgICAgICAgICAgICBpZiAoMSA9PT0gbC5ub2RlVHlwZSAmJiAobC5k
aXNhYmxlZCAhPT0gITAgfHwgImNsaWNrIiAhPT0gZS50eXBlKSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yIChvID0gW10sIGEgPSAwOyB1ID4gYTsgYSsrKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGkgPSBuW2FdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBp
LnNlbGVjdG9yICsgIiAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9bcl0gPT09IHQg
JiYgKG9bcl0gPSBpLm5lZWRzQ29udGV4dCA/IGIociwgdGhpcykuaW5kZXgobCkgPj0gMCA6IGIu
ZmluZChyLCB0aGlzLCBudWxsLCBbbF0pLmxlbmd0aCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb1tyXSAmJiBvLnB1c2goaSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvLmxlbmd0
aCAmJiBzLnB1c2goewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW06IGwsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnM6IG8KLSAgICAgICAgICAgICAgICAgICAg
ICAgIH0pCi0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBuLmxlbmd0
aCA+IHUgJiYgcy5wdXNoKHsKLSAgICAgICAgICAgICAgICBlbGVtOiB0aGlzLAotICAgICAgICAg
ICAgICAgIGhhbmRsZXJzOiBuLnNsaWNlKHUpCi0gICAgICAgICAgICB9KSwgcwotICAgICAgICB9
LAotICAgICAgICBmaXg6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGlmIChlW2IuZXhwYW5k
b10pCi0gICAgICAgICAgICAgICAgcmV0dXJuIGU7Ci0gICAgICAgICAgICB2YXIgdCwKLSAgICAg
ICAgICAgICAgICBuLAotICAgICAgICAgICAgICAgIHIsCi0gICAgICAgICAgICAgICAgaSA9IGUu
dHlwZSwKLSAgICAgICAgICAgICAgICBhID0gZSwKLSAgICAgICAgICAgICAgICBzID0gdGhpcy5m
aXhIb29rc1tpXTsKLSAgICAgICAgICAgIHMgfHwgKHRoaXMuZml4SG9va3NbaV0gPSBzID0gdHQu
dGVzdChpKSA/IHRoaXMubW91c2VIb29rcyA6IGV0LnRlc3QoaSkgPyB0aGlzLmtleUhvb2tzIDog
e30pLAotICAgICAgICAgICAgciA9IHMucHJvcHMgPyB0aGlzLnByb3BzLmNvbmNhdChzLnByb3Bz
KSA6IHRoaXMucHJvcHMsCi0gICAgICAgICAgICBlID0gbmV3IGIuRXZlbnQoYSksCi0gICAgICAg
ICAgICB0ID0gci5sZW5ndGg7Ci0gICAgICAgICAgICB3aGlsZSAodC0tKQotICAgICAgICAgICAg
ICAgIG4gPSByW3RdLAotICAgICAgICAgICAgICAgIGVbbl0gPSBhW25dOwotICAgICAgICAgICAg
cmV0dXJuIGUudGFyZ2V0IHx8IChlLnRhcmdldCA9IGEuc3JjRWxlbWVudCB8fCBvKSwgMyA9PT0g
ZS50YXJnZXQubm9kZVR5cGUgJiYgKGUudGFyZ2V0ID0gZS50YXJnZXQucGFyZW50Tm9kZSksIGUu
bWV0YUtleSA9ICEhZS5tZXRhS2V5LCBzLmZpbHRlciA/IHMuZmlsdGVyKGUsIGEpIDogZQotICAg
ICAgICB9LAotICAgICAgICBwcm9wczogImFsdEtleSBidWJibGVzIGNhbmNlbGFibGUgY3RybEtl
eSBjdXJyZW50VGFyZ2V0IGV2ZW50UGhhc2UgbWV0YUtleSByZWxhdGVkVGFyZ2V0IHNoaWZ0S2V5
IHRhcmdldCB0aW1lU3RhbXAgdmlldyB3aGljaCIuc3BsaXQoIiAiKSwKLSAgICAgICAgZml4SG9v
a3M6IHt9LAotICAgICAgICBrZXlIb29rczogewotICAgICAgICAgICAgcHJvcHM6ICJjaGFyIGNo
YXJDb2RlIGtleSBrZXlDb2RlIi5zcGxpdCgiICIpLAotICAgICAgICAgICAgZmlsdGVyOiBmdW5j
dGlvbihlLCB0KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gZS53aGljaCAmJiAo
ZS53aGljaCA9IG51bGwgIT0gdC5jaGFyQ29kZSA/IHQuY2hhckNvZGUgOiB0LmtleUNvZGUpLCBl
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgIG1vdXNlSG9va3M6IHsKLSAgICAg
ICAgICAgIHByb3BzOiAiYnV0dG9uIGJ1dHRvbnMgY2xpZW50WCBjbGllbnRZIGZyb21FbGVtZW50
IG9mZnNldFggb2Zmc2V0WSBwYWdlWCBwYWdlWSBzY3JlZW5YIHNjcmVlblkgdG9FbGVtZW50Ii5z
cGxpdCgiICIpLAotICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbihlLCBuKSB7Ci0gICAgICAg
ICAgICAgICAgdmFyIHIsCi0gICAgICAgICAgICAgICAgICAgIGksCi0gICAgICAgICAgICAgICAg
ICAgIGEsCi0gICAgICAgICAgICAgICAgICAgIHMgPSBuLmJ1dHRvbiwKLSAgICAgICAgICAgICAg
ICAgICAgdSA9IG4uZnJvbUVsZW1lbnQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0g
ZS5wYWdlWCAmJiBudWxsICE9IG4uY2xpZW50WCAmJiAoaSA9IGUudGFyZ2V0Lm93bmVyRG9jdW1l
bnQgfHwgbywgYSA9IGkuZG9jdW1lbnRFbGVtZW50LCByID0gaS5ib2R5LCBlLnBhZ2VYID0gbi5j
bGllbnRYICsgKGEgJiYgYS5zY3JvbGxMZWZ0IHx8IHIgJiYgci5zY3JvbGxMZWZ0IHx8IDApIC0g
KGEgJiYgYS5jbGllbnRMZWZ0IHx8IHIgJiYgci5jbGllbnRMZWZ0IHx8IDApLCBlLnBhZ2VZID0g
bi5jbGllbnRZICsgKGEgJiYgYS5zY3JvbGxUb3AgfHwgciAmJiByLnNjcm9sbFRvcCB8fCAwKSAt
IChhICYmIGEuY2xpZW50VG9wIHx8IHIgJiYgci5jbGllbnRUb3AgfHwgMCkpLCAhZS5yZWxhdGVk
VGFyZ2V0ICYmIHUgJiYgKGUucmVsYXRlZFRhcmdldCA9IHUgPT09IGUudGFyZ2V0ID8gbi50b0Vs
ZW1lbnQgOiB1KSwgZS53aGljaCB8fCBzID09PSB0IHx8IChlLndoaWNoID0gMSAmIHMgPyAxIDog
MiAmIHMgPyAzIDogNCAmIHMgPyAyIDogMCksIGUKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwK
LSAgICAgICAgc3BlY2lhbDogewotICAgICAgICAgICAgbG9hZDogewotICAgICAgICAgICAgICAg
IG5vQnViYmxlOiAhMAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGNsaWNrOiB7Ci0gICAg
ICAgICAgICAgICAgdHJpZ2dlcjogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBiLm5vZGVOYW1lKHRoaXMsICJpbnB1dCIpICYmICJjaGVja2JveCIgPT09IHRoaXMudHlw
ZSAmJiB0aGlzLmNsaWNrID8gKHRoaXMuY2xpY2soKSwgITEpIDogdAotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBmb2N1czogewotICAgICAgICAgICAgICAg
IHRyaWdnZXI6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyAhPT0g
by5hY3RpdmVFbGVtZW50ICYmIHRoaXMuZm9jdXMpCi0gICAgICAgICAgICAgICAgICAgICAgICB0
cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZvY3VzKCksICEx
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQotICAgICAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAgICAgZGVsZWdhdGVUeXBlOiAiZm9jdXNpbiIKLSAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICBibHVyOiB7Ci0gICAgICAgICAgICAgICAgdHJpZ2dlcjogZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzID09PSBvLmFjdGl2ZUVsZW1l
bnQgJiYgdGhpcy5ibHVyID8gKHRoaXMuYmx1cigpLCAhMSkgOiB0Ci0gICAgICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICAgICBkZWxlZ2F0ZVR5cGU6ICJmb2N1c291dCIKLSAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICBiZWZvcmV1bmxvYWQ6IHsKLSAgICAgICAgICAgICAgICBwb3N0RGlz
cGF0Y2g6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgZS5yZXN1bHQgIT09IHQg
JiYgKGUub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZSA9IGUucmVzdWx0KQotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgc2ltdWxhdGU6IGZ1bmN0
aW9uKGUsIHQsIG4sIHIpIHsKLSAgICAgICAgICAgIHZhciBpID0gYi5leHRlbmQobmV3IGIuRXZl
bnQsIG4sIHsKLSAgICAgICAgICAgICAgICB0eXBlOiBlLAotICAgICAgICAgICAgICAgIGlzU2lt
dWxhdGVkOiAhMCwKLSAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiB7fQotICAgICAgICAg
ICAgfSk7Ci0gICAgICAgICAgICByID8gYi5ldmVudC50cmlnZ2VyKGksIG51bGwsIHQpIDogYi5l
dmVudC5kaXNwYXRjaC5jYWxsKHQsIGkpLAotICAgICAgICAgICAgaS5pc0RlZmF1bHRQcmV2ZW50
ZWQoKSAmJiBuLnByZXZlbnREZWZhdWx0KCkKLSAgICAgICAgfQotICAgIH0sCi0gICAgYi5yZW1v
dmVFdmVudCA9IG8ucmVtb3ZlRXZlbnRMaXN0ZW5lciA/IGZ1bmN0aW9uKGUsIHQsIG4pIHsKLSAg
ICAgICAgZS5yZW1vdmVFdmVudExpc3RlbmVyICYmIGUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LCBu
LCAhMSkKLSAgICB9IDogZnVuY3Rpb24oZSwgdCwgbikgewotICAgICAgICB2YXIgciA9ICJvbiIg
KyB0OwotICAgICAgICBlLmRldGFjaEV2ZW50ICYmICh0eXBlb2YgZVtyXSA9PT0gaSAmJiAoZVty
XSA9IG51bGwpLCBlLmRldGFjaEV2ZW50KHIsIG4pKQotICAgIH0sCi0gICAgYi5FdmVudCA9IGZ1
bmN0aW9uKGUsIG4pIHsKLSAgICAgICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBiLkV2ZW50ID8g
KGUgJiYgZS50eXBlID8gKHRoaXMub3JpZ2luYWxFdmVudCA9IGUsIHRoaXMudHlwZSA9IGUudHlw
ZSwgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBlLmRlZmF1bHRQcmV2ZW50ZWQgfHwgZS5yZXR1
cm5WYWx1ZSA9PT0gITEgfHwgZS5nZXRQcmV2ZW50RGVmYXVsdCAmJiBlLmdldFByZXZlbnREZWZh
dWx0KCkgPyBpdCA6IG90KSA6IHRoaXMudHlwZSA9IGUsIG4gJiYgYi5leHRlbmQodGhpcywgbiks
IHRoaXMudGltZVN0YW1wID0gZSAmJiBlLnRpbWVTdGFtcCB8fCBiLm5vdygpLCB0aGlzW2IuZXhw
YW5kb10gPSAhMCwgdCkgOiBuZXcgYi5FdmVudChlLCBuKQotICAgIH0sCi0gICAgYi5FdmVudC5w
cm90b3R5cGUgPSB7Ci0gICAgICAgIGlzRGVmYXVsdFByZXZlbnRlZDogb3QsCi0gICAgICAgIGlz
UHJvcGFnYXRpb25TdG9wcGVkOiBvdCwKLSAgICAgICAgaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0
b3BwZWQ6IG90LAotICAgICAgICBwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICB2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDsKLSAgICAgICAgICAgIHRoaXMuaXNEZWZh
dWx0UHJldmVudGVkID0gaXQsCi0gICAgICAgICAgICBlICYmIChlLnByZXZlbnREZWZhdWx0ID8g
ZS5wcmV2ZW50RGVmYXVsdCgpIDogZS5yZXR1cm5WYWx1ZSA9ICExKQotICAgICAgICB9LAotICAg
ICAgICBzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdmFyIGUgPSB0
aGlzLm9yaWdpbmFsRXZlbnQ7Ci0gICAgICAgICAgICB0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVk
ID0gaXQsCi0gICAgICAgICAgICBlICYmIChlLnN0b3BQcm9wYWdhdGlvbiAmJiBlLnN0b3BQcm9w
YWdhdGlvbigpLCBlLmNhbmNlbEJ1YmJsZSA9ICEwKQotICAgICAgICB9LAotICAgICAgICBzdG9w
SW1tZWRpYXRlUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdGhpcy5pc0lt
bWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IGl0LAotICAgICAgICAgICAgdGhpcy5zdG9wUHJv
cGFnYXRpb24oKQotICAgICAgICB9Ci0gICAgfSwKLSAgICBiLmVhY2goewotICAgICAgICBtb3Vz
ZWVudGVyOiAibW91c2VvdmVyIiwKLSAgICAgICAgbW91c2VsZWF2ZTogIm1vdXNlb3V0IgotICAg
IH0sIGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgYi5ldmVudC5zcGVjaWFsW2VdID0gewotICAg
ICAgICAgICAgZGVsZWdhdGVUeXBlOiB0LAotICAgICAgICAgICAgYmluZFR5cGU6IHQsCi0gICAg
ICAgICAgICBoYW5kbGU6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICB2YXIgbiwKLSAg
ICAgICAgICAgICAgICAgICAgciA9IHRoaXMsCi0gICAgICAgICAgICAgICAgICAgIGkgPSBlLnJl
bGF0ZWRUYXJnZXQsCi0gICAgICAgICAgICAgICAgICAgIG8gPSBlLmhhbmRsZU9iajsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gKCFpIHx8IGkgIT09IHIgJiYgIWIuY29udGFpbnMociwgaSkpICYm
IChlLnR5cGUgPSBvLm9yaWdUeXBlLCBuID0gby5oYW5kbGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50
cyksIGUudHlwZSA9IHQpLCBuCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9KSwKLSAg
ICBiLnN1cHBvcnQuc3VibWl0QnViYmxlcyB8fCAoYi5ldmVudC5zcGVjaWFsLnN1Ym1pdCA9IHsK
LSAgICAgICAgc2V0dXA6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJuIGIubm9kZU5h
bWUodGhpcywgImZvcm0iKSA/ICExIDogKGIuZXZlbnQuYWRkKHRoaXMsICJjbGljay5fc3VibWl0
IGtleXByZXNzLl9zdWJtaXQiLCBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgdmFyIG4g
PSBlLnRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgciA9IGIubm9kZU5hbWUobiwgImlucHV0
IikgfHwgYi5ub2RlTmFtZShuLCAiYnV0dG9uIikgPyBuLmZvcm0gOiB0OwotICAgICAgICAgICAg
ICAgIHIgJiYgIWIuX2RhdGEociwgInN1Ym1pdEJ1YmJsZXMiKSAmJiAoYi5ldmVudC5hZGQociwg
InN1Ym1pdC5fc3VibWl0IiwgZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgICBlLl9z
dWJtaXRfYnViYmxlID0gITAKLSAgICAgICAgICAgICAgICB9KSwgYi5fZGF0YShyLCAic3VibWl0
QnViYmxlcyIsICEwKSkKLSAgICAgICAgICAgIH0pLCB0KQotICAgICAgICB9LAotICAgICAgICBw
b3N0RGlzcGF0Y2g6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGUuX3N1Ym1pdF9idWJibGUg
JiYgKGRlbGV0ZSBlLl9zdWJtaXRfYnViYmxlLCB0aGlzLnBhcmVudE5vZGUgJiYgIWUuaXNUcmln
Z2VyICYmIGIuZXZlbnQuc2ltdWxhdGUoInN1Ym1pdCIsIHRoaXMucGFyZW50Tm9kZSwgZSwgITAp
KQotICAgICAgICB9LAotICAgICAgICB0ZWFyZG93bjogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gYi5ub2RlTmFtZSh0aGlzLCAiZm9ybSIpID8gITEgOiAoYi5ldmVudC5yZW1vdmUo
dGhpcywgIi5fc3VibWl0IiksIHQpCi0gICAgICAgIH0KLSAgICB9KSwKLSAgICBiLnN1cHBvcnQu
Y2hhbmdlQnViYmxlcyB8fCAoYi5ldmVudC5zcGVjaWFsLmNoYW5nZSA9IHsKLSAgICAgICAgc2V0
dXA6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJuIFoudGVzdCh0aGlzLm5vZGVOYW1l
KSA/ICgoImNoZWNrYm94IiA9PT0gdGhpcy50eXBlIHx8ICJyYWRpbyIgPT09IHRoaXMudHlwZSkg
JiYgKGIuZXZlbnQuYWRkKHRoaXMsICJwcm9wZXJ0eWNoYW5nZS5fY2hhbmdlIiwgZnVuY3Rpb24o
ZSkgewotICAgICAgICAgICAgICAgICJjaGVja2VkIiA9PT0gZS5vcmlnaW5hbEV2ZW50LnByb3Bl
cnR5TmFtZSAmJiAodGhpcy5fanVzdF9jaGFuZ2VkID0gITApCi0gICAgICAgICAgICB9KSwgYi5l
dmVudC5hZGQodGhpcywgImNsaWNrLl9jaGFuZ2UiLCBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAg
ICAgICAgdGhpcy5fanVzdF9jaGFuZ2VkICYmICFlLmlzVHJpZ2dlciAmJiAodGhpcy5fanVzdF9j
aGFuZ2VkID0gITEpLAotICAgICAgICAgICAgICAgIGIuZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIs
IHRoaXMsIGUsICEwKQotICAgICAgICAgICAgfSkpLCAhMSkgOiAoYi5ldmVudC5hZGQodGhpcywg
ImJlZm9yZWFjdGl2YXRlLl9jaGFuZ2UiLCBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAg
dmFyIHQgPSBlLnRhcmdldDsKLSAgICAgICAgICAgICAgICBaLnRlc3QodC5ub2RlTmFtZSkgJiYg
IWIuX2RhdGEodCwgImNoYW5nZUJ1YmJsZXMiKSAmJiAoYi5ldmVudC5hZGQodCwgImNoYW5nZS5f
Y2hhbmdlIiwgZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgICAhdGhpcy5wYXJlbnRO
b2RlIHx8IGUuaXNTaW11bGF0ZWQgfHwgZS5pc1RyaWdnZXIgfHwgYi5ldmVudC5zaW11bGF0ZSgi
Y2hhbmdlIiwgdGhpcy5wYXJlbnROb2RlLCBlLCAhMCkKLSAgICAgICAgICAgICAgICB9KSwgYi5f
ZGF0YSh0LCAiY2hhbmdlQnViYmxlcyIsICEwKSkKLSAgICAgICAgICAgIH0pLCB0KQotICAgICAg
ICB9LAotICAgICAgICBoYW5kbGU6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHZhciBuID0g
ZS50YXJnZXQ7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcyAhPT0gbiB8fCBlLmlzU2ltdWxhdGVk
IHx8IGUuaXNUcmlnZ2VyIHx8ICJyYWRpbyIgIT09IG4udHlwZSAmJiAiY2hlY2tib3giICE9PSBu
LnR5cGUgPyBlLmhhbmRsZU9iai5oYW5kbGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgOiB0Ci0g
ICAgICAgIH0sCi0gICAgICAgIHRlYXJkb3duOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJl
dHVybiBiLmV2ZW50LnJlbW92ZSh0aGlzLCAiLl9jaGFuZ2UiKSwgIVoudGVzdCh0aGlzLm5vZGVO
YW1lKQotICAgICAgICB9Ci0gICAgfSksCi0gICAgYi5zdXBwb3J0LmZvY3VzaW5CdWJibGVzIHx8
IGIuZWFjaCh7Ci0gICAgICAgIGZvY3VzOiAiZm9jdXNpbiIsCi0gICAgICAgIGJsdXI6ICJmb2N1
c291dCIKLSAgICB9LCBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgIHZhciBuID0gMCwKLSAgICAg
ICAgICAgIHIgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgYi5ldmVudC5zaW11bGF0
ZSh0LCBlLnRhcmdldCwgYi5ldmVudC5maXgoZSksICEwKQotICAgICAgICAgICAgfTsKLSAgICAg
ICAgYi5ldmVudC5zcGVjaWFsW3RdID0gewotICAgICAgICAgICAgc2V0dXA6IGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICAgIDAgPT09IG4rKyAmJiBvLmFkZEV2ZW50TGlzdGVuZXIoZSwgciwg
ITApCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgdGVhcmRvd246IGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgICAgIDAgPT09IC0tbiAmJiBvLnJlbW92ZUV2ZW50TGlzdGVuZXIoZSwgciwg
ITApCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9KSwKLSAgICBiLmZuLmV4dGVuZCh7
Ci0gICAgICAgIG9uOiBmdW5jdGlvbihlLCBuLCByLCBpLCBvKSB7Ci0gICAgICAgICAgICB2YXIg
YSwKLSAgICAgICAgICAgICAgICBzOwotICAgICAgICAgICAgaWYgKCJvYmplY3QiID09IHR5cGVv
ZiBlKSB7Ci0gICAgICAgICAgICAgICAgInN0cmluZyIgIT0gdHlwZW9mIG4gJiYgKHIgPSByIHx8
IG4sIG4gPSB0KTsKLSAgICAgICAgICAgICAgICBmb3IgKGEgaW4gZSkKLSAgICAgICAgICAgICAg
ICAgICAgdGhpcy5vbihhLCBuLCByLCBlW2FdLCBvKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
dGhpcwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG51bGwgPT0gciAmJiBudWxsID09
IGkgPyAoaSA9IG4sIHIgPSBuID0gdCkgOiBudWxsID09IGkgJiYgKCJzdHJpbmciID09IHR5cGVv
ZiBuID8gKGkgPSByLCByID0gdCkgOiAoaSA9IHIsIHIgPSBuLCBuID0gdCkpLCBpID09PSAhMSkK
LSAgICAgICAgICAgICAgICBpID0gb3Q7Ci0gICAgICAgICAgICBlbHNlIGlmICghaSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgICAgIHJldHVybiAxID09PSBvICYmIChz
ID0gaSwgaSA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYigpLm9mZihl
KSwgcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpCi0gICAgICAgICAgICB9LCBpLmd1aWQgPSBzLmd1
aWQgfHwgKHMuZ3VpZCA9IGIuZ3VpZCsrKSksIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgICAgICBiLmV2ZW50LmFkZCh0aGlzLCBlLCBpLCByLCBuKQotICAgICAgICAgICAgfSkK
LSAgICAgICAgfSwKLSAgICAgICAgb25lOiBmdW5jdGlvbihlLCB0LCBuLCByKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gdGhpcy5vbihlLCB0LCBuLCByLCAxKQotICAgICAgICB9LAotICAgICAgICBv
ZmY6IGZ1bmN0aW9uKGUsIG4sIHIpIHsKLSAgICAgICAgICAgIHZhciBpLAotICAgICAgICAgICAg
ICAgIG87Ci0gICAgICAgICAgICBpZiAoZSAmJiBlLnByZXZlbnREZWZhdWx0ICYmIGUuaGFuZGxl
T2JqKQotICAgICAgICAgICAgICAgIHJldHVybiBpID0gZS5oYW5kbGVPYmosIGIoZS5kZWxlZ2F0
ZVRhcmdldCkub2ZmKGkubmFtZXNwYWNlID8gaS5vcmlnVHlwZSArICIuIiArIGkubmFtZXNwYWNl
IDogaS5vcmlnVHlwZSwgaS5zZWxlY3RvciwgaS5oYW5kbGVyKSwgdGhpczsKLSAgICAgICAgICAg
IGlmICgib2JqZWN0IiA9PSB0eXBlb2YgZSkgewotICAgICAgICAgICAgICAgIGZvciAobyBpbiBl
KQotICAgICAgICAgICAgICAgICAgICB0aGlzLm9mZihvLCBuLCBlW29dKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdGhpcwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIChuID09
PSAhMSB8fCAiZnVuY3Rpb24iID09IHR5cGVvZiBuKSAmJiAociA9IG4sIG4gPSB0KSwgciA9PT0g
ITEgJiYgKHIgPSBvdCksIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBi
LmV2ZW50LnJlbW92ZSh0aGlzLCBlLCByLCBuKQotICAgICAgICAgICAgfSkKLSAgICAgICAgfSwK
LSAgICAgICAgYmluZDogZnVuY3Rpb24oZSwgdCwgbikgewotICAgICAgICAgICAgcmV0dXJuIHRo
aXMub24oZSwgbnVsbCwgdCwgbikKLSAgICAgICAgfSwKLSAgICAgICAgdW5iaW5kOiBmdW5jdGlv
bihlLCB0KSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5vZmYoZSwgbnVsbCwgdCkKLSAgICAg
ICAgfSwKLSAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKGUsIHQsIG4sIHIpIHsKLSAgICAgICAg
ICAgIHJldHVybiB0aGlzLm9uKHQsIGUsIG4sIHIpCi0gICAgICAgIH0sCi0gICAgICAgIHVuZGVs
ZWdhdGU6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKLSAgICAgICAgICAgIHJldHVybiAxID09PSBhcmd1
bWVudHMubGVuZ3RoID8gdGhpcy5vZmYoZSwgIioqIikgOiB0aGlzLm9mZih0LCBlIHx8ICIqKiIs
IG4pCi0gICAgICAgIH0sCi0gICAgICAgIHRyaWdnZXI6IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAg
ICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgYi5l
dmVudC50cmlnZ2VyKGUsIHQsIHRoaXMpCi0gICAgICAgICAgICB9KQotICAgICAgICB9LAotICAg
ICAgICB0cmlnZ2VySGFuZGxlcjogZnVuY3Rpb24oZSwgbikgewotICAgICAgICAgICAgdmFyIHIg
PSB0aGlzWzBdOwotICAgICAgICAgICAgcmV0dXJuIHIgPyBiLmV2ZW50LnRyaWdnZXIoZSwgbiwg
ciwgITApIDogdAotICAgICAgICB9Ci0gICAgfSksCi0gICAgZnVuY3Rpb24oZSwgdCkgewotICAg
ICAgICB2YXIgbiwKLSAgICAgICAgICAgIHIsCi0gICAgICAgICAgICBpLAotICAgICAgICAgICAg
bywKLSAgICAgICAgICAgIGEsCi0gICAgICAgICAgICBzLAotICAgICAgICAgICAgdSwKLSAgICAg
ICAgICAgIGwsCi0gICAgICAgICAgICBjLAotICAgICAgICAgICAgcCwKLSAgICAgICAgICAgIGYs
Ci0gICAgICAgICAgICBkLAotICAgICAgICAgICAgaCwKLSAgICAgICAgICAgIGcsCi0gICAgICAg
ICAgICBtLAotICAgICAgICAgICAgeSwKLSAgICAgICAgICAgIHYsCi0gICAgICAgICAgICB4ID0g
InNpenpsZSIgKyAtbmV3IERhdGUsCi0gICAgICAgICAgICB3ID0gZS5kb2N1bWVudCwKLSAgICAg
ICAgICAgIFQgPSB7fSwKLSAgICAgICAgICAgIE4gPSAwLAotICAgICAgICAgICAgQyA9IDAsCi0g
ICAgICAgICAgICBrID0gaXQoKSwKLSAgICAgICAgICAgIEUgPSBpdCgpLAotICAgICAgICAgICAg
UyA9IGl0KCksCi0gICAgICAgICAgICBBID0gdHlwZW9mIHQsCi0gICAgICAgICAgICBqID0gMSA8
PCAzMSwKLSAgICAgICAgICAgIEQgPSBbXSwKLSAgICAgICAgICAgIEwgPSBELnBvcCwKLSAgICAg
ICAgICAgIEggPSBELnB1c2gsCi0gICAgICAgICAgICBxID0gRC5zbGljZSwKLSAgICAgICAgICAg
IE0gPSBELmluZGV4T2YgfHwgZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgIHZhciB0ID0g
MCwKLSAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMubGVuZ3RoOwotICAgICAgICAgICAgICAg
IGZvciAoOyBuID4gdDsgdCsrKQotICAgICAgICAgICAgICAgICAgICBpZiAodGhpc1t0XSA9PT0g
ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0OwotICAgICAgICAgICAgICAgIHJl
dHVybiAtMQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF8gPSAiW1xceDIwXFx0XFxyXFxu
XFxmXSIsCi0gICAgICAgICAgICBGID0gIig/OlxcXFwufFtcXHctXXxbXlxceDAwLVxceGEwXSkr
IiwKLSAgICAgICAgICAgIE8gPSBGLnJlcGxhY2UoInciLCAidyMiKSwKLSAgICAgICAgICAgIEIg
PSAiKFsqXiR8IX5dPz0pIiwKLSAgICAgICAgICAgIFAgPSAiXFxbIiArIF8gKyAiKigiICsgRiAr
ICIpIiArIF8gKyAiKig/OiIgKyBCICsgXyArICIqKD86KFsnXCJdKSgoPzpcXFxcLnxbXlxcXFxd
KSo/KVxcM3woIiArIE8gKyAiKXwpfCkiICsgXyArICIqXFxdIiwKLSAgICAgICAgICAgIFIgPSAi
OigiICsgRiArICIpKD86XFwoKChbJ1wiXSkoKD86XFxcXC58W15cXFxcXSkqPylcXDN8KCg/Olxc
XFwufFteXFxcXCgpW1xcXV18IiArIFAucmVwbGFjZSgzLCA4KSArICIpKil8LiopXFwpfCkiLAot
ICAgICAgICAgICAgVyA9IFJlZ0V4cCgiXiIgKyBfICsgIit8KCg/Ol58W15cXFxcXSkoPzpcXFxc
LikqKSIgKyBfICsgIiskIiwgImciKSwKLSAgICAgICAgICAgICQgPSBSZWdFeHAoIl4iICsgXyAr
ICIqLCIgKyBfICsgIioiKSwKLSAgICAgICAgICAgIEkgPSBSZWdFeHAoIl4iICsgXyArICIqKFtc
XHgyMFxcdFxcclxcblxcZj4rfl0pIiArIF8gKyAiKiIpLAotICAgICAgICAgICAgeiA9IFJlZ0V4
cChSKSwKLSAgICAgICAgICAgIFggPSBSZWdFeHAoIl4iICsgTyArICIkIiksCi0gICAgICAgICAg
ICBVID0gewotICAgICAgICAgICAgICAgIElEOiBSZWdFeHAoIl4jKCIgKyBGICsgIikiKSwKLSAg
ICAgICAgICAgICAgICBDTEFTUzogUmVnRXhwKCJeXFwuKCIgKyBGICsgIikiKSwKLSAgICAgICAg
ICAgICAgICBOQU1FOiBSZWdFeHAoIl5cXFtuYW1lPVsnXCJdPygiICsgRiArICIpWydcIl0/XFxd
IiksCi0gICAgICAgICAgICAgICAgVEFHOiBSZWdFeHAoIl4oIiArIEYucmVwbGFjZSgidyIsICJ3
KiIpICsgIikiKSwKLSAgICAgICAgICAgICAgICBBVFRSOiBSZWdFeHAoIl4iICsgUCksCi0gICAg
ICAgICAgICAgICAgUFNFVURPOiBSZWdFeHAoIl4iICsgUiksCi0gICAgICAgICAgICAgICAgQ0hJ
TEQ6IFJlZ0V4cCgiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5
cGUpKD86XFwoIiArIF8gKyAiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIgKyBfICsgIioo
PzooWystXXwpIiArIF8gKyAiKihcXGQrKXwpKSIgKyBfICsgIipcXCl8KSIsICJpIiksCi0gICAg
ICAgICAgICAgICAgbmVlZHNDb250ZXh0OiBSZWdFeHAoIl4iICsgXyArICIqWz4rfl18OihldmVu
fG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiICsgXyArICIqKCg/Oi1cXGQpP1xc
ZCopIiArIF8gKyAiKlxcKXwpKD89W14tXXwkKSIsICJpIikKLSAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICBWID0gL1tceDIwXHRcclxuXGZdKlsrfl0vLAotICAgICAgICAgICAgWSA9IC9eW157
XStce1xzKlxbbmF0aXZlIGNvZGUvLAotICAgICAgICAgICAgSiA9IC9eKD86IyhbXHctXSspfChc
dyspfFwuKFtcdy1dKykpJC8sCi0gICAgICAgICAgICBHID0gL14oPzppbnB1dHxzZWxlY3R8dGV4
dGFyZWF8YnV0dG9uKSQvaSwKLSAgICAgICAgICAgIFEgPSAvXmhcZCQvaSwKLSAgICAgICAgICAg
IEsgPSAvJ3xcXC9nLAotICAgICAgICAgICAgWiA9IC9cPVtceDIwXHRcclxuXGZdKihbXiciXF1d
KilbXHgyMFx0XHJcblxmXSpcXS9nLAotICAgICAgICAgICAgZXQgPSAvXFwoW1xkYS1mQS1GXXsx
LDZ9W1x4MjBcdFxyXG5cZl0/fC4pL2csCi0gICAgICAgICAgICB0dCA9IGZ1bmN0aW9uKGUsIHQp
IHsKLSAgICAgICAgICAgICAgICB2YXIgbiA9ICIweCIgKyB0IC0gNjU1MzY7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIG4gIT09IG4gPyB0IDogMCA+IG4gPyBTdHJpbmcuZnJvbUNoYXJDb2RlKG4g
KyA2NTUzNikgOiBTdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2IHwgbiA+PiAxMCwgNTYzMjAgfCAx
MDIzICYgbikKLSAgICAgICAgICAgIH07Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBxLmNh
bGwody5kb2N1bWVudEVsZW1lbnQuY2hpbGROb2RlcywgMClbMF0ubm9kZVR5cGUKLSAgICAgICAg
fSBjYXRjaCAobnQpIHsKLSAgICAgICAgICAgIHEgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAg
ICAgICAgdmFyIHQsCi0gICAgICAgICAgICAgICAgICAgIG4gPSBbXTsKLSAgICAgICAgICAgICAg
ICB3aGlsZSAodCA9IHRoaXNbZSsrXSkKLSAgICAgICAgICAgICAgICAgICAgbi5wdXNoKHQpOwot
ICAgICAgICAgICAgICAgIHJldHVybiBuCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgZnVuY3Rpb24gcnQoZSkgewotICAgICAgICAgICAgcmV0dXJuIFkudGVzdChlICsgIiIpCi0g
ICAgICAgIH0KLSAgICAgICAgZnVuY3Rpb24gaXQoKSB7Ci0gICAgICAgICAgICB2YXIgZSwKLSAg
ICAgICAgICAgICAgICB0ID0gW107Ci0gICAgICAgICAgICByZXR1cm4gZSA9IGZ1bmN0aW9uKG4s
IHIpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdC5wdXNoKG4gKz0gIiAiKSA+IGkuY2FjaGVM
ZW5ndGggJiYgZGVsZXRlIGVbdC5zaGlmdCgpXSwgZVtuXSA9IHIKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgICBmdW5jdGlvbiBvdChlKSB7Ci0gICAgICAgICAgICByZXR1cm4gZVt4
XSA9ICEwLCBlCi0gICAgICAgIH0KLSAgICAgICAgZnVuY3Rpb24gYXQoZSkgewotICAgICAgICAg
ICAgdmFyIHQgPSBwLmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgdHJ5IHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZSh0KQotICAgICAgICAgICAgfSBjYXRjaCAobikgewotICAg
ICAgICAgICAgICAgIHJldHVybiAhMQotICAgICAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAg
ICAgICAgICB0ID0gbnVsbAotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGZ1bmN0
aW9uIHN0KGUsIHQsIG4sIHIpIHsKLSAgICAgICAgICAgIHZhciBpLAotICAgICAgICAgICAgICAg
IG8sCi0gICAgICAgICAgICAgICAgYSwKLSAgICAgICAgICAgICAgICBzLAotICAgICAgICAgICAg
ICAgIHUsCi0gICAgICAgICAgICAgICAgbCwKLSAgICAgICAgICAgICAgICBmLAotICAgICAgICAg
ICAgICAgIGcsCi0gICAgICAgICAgICAgICAgbSwKLSAgICAgICAgICAgICAgICB2OwotICAgICAg
ICAgICAgaWYgKCh0ID8gdC5vd25lckRvY3VtZW50IHx8IHQgOiB3KSAhPT0gcCAmJiBjKHQpLCB0
ID0gdCB8fCBwLCBuID0gbiB8fCBbXSwgIWUgfHwgInN0cmluZyIgIT0gdHlwZW9mIGUpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIG47Ci0gICAgICAgICAgICBpZiAoMSAhPT0gKHMgPSB0Lm5vZGVU
eXBlKSAmJiA5ICE9PSBzKQotICAgICAgICAgICAgICAgIHJldHVybiBbXTsKLSAgICAgICAgICAg
IGlmICghZCAmJiAhcikgewotICAgICAgICAgICAgICAgIGlmIChpID0gSi5leGVjKGUpKQotICAg
ICAgICAgICAgICAgICAgICBpZiAoYSA9IGlbMV0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmICg5ID09PSBzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPSB0Lmdl
dEVsZW1lbnRCeUlkKGEpLCAhbyB8fCAhby5wYXJlbnROb2RlKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
by5pZCA9PT0gYSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4ucHVz
aChvKSwgbgotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0Lm93bmVyRG9jdW1l
bnQgJiYgKG8gPSB0Lm93bmVyRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSkpICYmIHkodCwgbykg
JiYgby5pZCA9PT0gYSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5wdXNo
KG8pLCBuCi0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoaVsyXSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSC5hcHBs
eShuLCBxLmNhbGwodC5nZXRFbGVtZW50c0J5VGFnTmFtZShlKSwgMCkpLCBuOwotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKChhID0gaVszXSkgJiYgVC5nZXRCeUNsYXNzTmFtZSAmJiB0Lmdl
dEVsZW1lbnRzQnlDbGFzc05hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEguYXBwbHkobiwgcS5jYWxsKHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShhKSwgMCkpLCBuCi0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoVC5xc2EgJiYgIWgudGVz
dChlKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoZiA9ICEwLCBnID0geCwgbSA9IHQsIHYg
PSA5ID09PSBzICYmIGUsIDEgPT09IHMgJiYgIm9iamVjdCIgIT09IHQubm9kZU5hbWUudG9Mb3dl
ckNhc2UoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGZ0KGUpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgKGYgPSB0LmdldEF0dHJpYnV0ZSgiaWQiKSkgPyBnID0gZi5yZXBsYWNl
KEssICJcXCQmIikgOiB0LnNldEF0dHJpYnV0ZSgiaWQiLCBnKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGcgPSAiW2lkPSciICsgZyArICInXSAiLAotICAgICAgICAgICAgICAgICAgICAgICAg
dSA9IGwubGVuZ3RoOwotICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHUtLSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsW3VdID0gZyArIGR0KGxbdV0pOwotICAgICAgICAgICAg
ICAgICAgICAgICAgbSA9IFYudGVzdChlKSAmJiB0LnBhcmVudE5vZGUgfHwgdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHYgPSBsLmpvaW4oIiwiKQotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICh2KQotICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSC5hcHBseShuLCBxLmNhbGwobS5x
dWVyeVNlbGVjdG9yQWxsKHYpLCAwKSksIG4KLSAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0
Y2ggKGIpIHt9IGZpbmFsbHkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgfHwgdC5y
ZW1vdmVBdHRyaWJ1dGUoImlkIikKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gd3QoZS5yZXBsYWNl
KFcsICIkMSIpLCB0LCBuLCByKQotICAgICAgICB9Ci0gICAgICAgIGEgPSBzdC5pc1hNTCA9IGZ1
bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHZhciB0ID0gZSAmJiAoZS5vd25lckRvY3VtZW50IHx8
IGUpLmRvY3VtZW50RWxlbWVudDsKLSAgICAgICAgICAgIHJldHVybiB0ID8gIkhUTUwiICE9PSB0
Lm5vZGVOYW1lIDogITEKLSAgICAgICAgfSwKLSAgICAgICAgYyA9IHN0LnNldERvY3VtZW50ID0g
ZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgdmFyIG4gPSBlID8gZS5vd25lckRvY3VtZW50IHx8
IGUgOiB3OwotICAgICAgICAgICAgcmV0dXJuIG4gIT09IHAgJiYgOSA9PT0gbi5ub2RlVHlwZSAm
JiBuLmRvY3VtZW50RWxlbWVudCA/IChwID0gbiwgZiA9IG4uZG9jdW1lbnRFbGVtZW50LCBkID0g
YShuKSwgVC50YWdOYW1lTm9Db21tZW50cyA9IGF0KGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZS5hcHBlbmRDaGlsZChuLmNyZWF0ZUNvbW1lbnQoIiIpKSwgIWUuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGgKLSAgICAgICAgICAgIH0pLCBULmF0dHJpYnV0ZXMg
PSBhdChmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgZS5pbm5lckhUTUwgPSAiPHNlbGVj
dD48L3NlbGVjdD4iOwotICAgICAgICAgICAgICAgIHZhciB0ID0gdHlwZW9mIGUubGFzdENoaWxk
LmdldEF0dHJpYnV0ZSgibXVsdGlwbGUiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gImJvb2xl
YW4iICE9PSB0ICYmICJzdHJpbmciICE9PSB0Ci0gICAgICAgICAgICB9KSwgVC5nZXRCeUNsYXNz
TmFtZSA9IGF0KGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZS5pbm5lckhU
TUwgPSAiPGRpdiBjbGFzcz0naGlkZGVuIGUnPjwvZGl2PjxkaXYgY2xhc3M9J2hpZGRlbic+PC9k
aXY+IiwgZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICYmIGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZSgiZSIpLmxlbmd0aCA/IChlLmxhc3RDaGlsZC5jbGFzc05hbWUgPSAiZSIsIDIgPT09IGUuZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aCkgOiAhMQotICAgICAgICAgICAgfSksIFQu
Z2V0QnlOYW1lID0gYXQoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgIGUuaWQgPSB4ICsg
MCwKLSAgICAgICAgICAgICAgICBlLmlubmVySFRNTCA9ICI8YSBuYW1lPSciICsgeCArICInPjwv
YT48ZGl2IG5hbWU9JyIgKyB4ICsgIic+PC9kaXY+IiwKLSAgICAgICAgICAgICAgICBmLmluc2Vy
dEJlZm9yZShlLCBmLmZpcnN0Q2hpbGQpOwotICAgICAgICAgICAgICAgIHZhciB0ID0gbi5nZXRF
bGVtZW50c0J5TmFtZSAmJiBuLmdldEVsZW1lbnRzQnlOYW1lKHgpLmxlbmd0aCA9PT0gMiArIG4u
Z2V0RWxlbWVudHNCeU5hbWUoeCArIDApLmxlbmd0aDsKLSAgICAgICAgICAgICAgICByZXR1cm4g
VC5nZXRJZE5vdE5hbWUgPSAhbi5nZXRFbGVtZW50QnlJZCh4KSwgZi5yZW1vdmVDaGlsZChlKSwg
dAotICAgICAgICAgICAgfSksIGkuYXR0ckhhbmRsZSA9IGF0KGZ1bmN0aW9uKGUpIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZS5pbm5lckhUTUwgPSAiPGEgaHJlZj0nIyc+PC9hPiIsIGUuZmly
c3RDaGlsZCAmJiB0eXBlb2YgZS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSAhPT0gQSAmJiAiIyIg
PT09IGUuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKQotICAgICAgICAgICAgfSkgPyB7
fSA6IHsKLSAgICAgICAgICAgICAgICBocmVmOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBlLmdldEF0dHJpYnV0ZSgiaHJlZiIsIDIpCi0gICAgICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICAgICB0eXBlOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBlLmdldEF0dHJpYnV0ZSgidHlwZSIpCi0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfSwgVC5nZXRJZE5vdE5hbWUgPyAoaS5maW5kLklEID0gZnVuY3Rpb24oZSwgdCkg
ewotICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdC5nZXRFbGVtZW50QnlJZCAhPT0gQSAmJiAh
ZCkgewotICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHQuZ2V0RWxlbWVudEJ5SWQoZSk7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIG4ucGFyZW50Tm9kZSA/IFtuXSA6IFtdCi0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwgaS5maWx0ZXIuSUQgPSBmdW5jdGlvbihl
KSB7Ci0gICAgICAgICAgICAgICAgdmFyIHQgPSBlLnJlcGxhY2UoZXQsIHR0KTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZS5nZXRBdHRyaWJ1dGUoImlkIikgPT09IHQKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9KSA6IChpLmZpbmQuSUQgPSBmdW5jdGlvbihlLCBuKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KHR5cGVvZiBuLmdldEVsZW1lbnRCeUlkICE9PSBBICYmICFkKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHZhciByID0gbi5nZXRFbGVtZW50QnlJZChlKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHIgPyByLmlkID09PSBlIHx8IHR5cGVvZiByLmdldEF0dHJpYnV0ZU5vZGUgIT09IEEgJiYg
ci5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpLnZhbHVlID09PSBlID8gW3JdIDogdCA6IFtdCi0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwgaS5maWx0ZXIuSUQgPSBmdW5jdGlvbihlKSB7
Ci0gICAgICAgICAgICAgICAgdmFyIHQgPSBlLnJlcGxhY2UoZXQsIHR0KTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHR5
cGVvZiBlLmdldEF0dHJpYnV0ZU5vZGUgIT09IEEgJiYgZS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIp
OwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBuLnZhbHVlID09PSB0Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfSksIGkuZmluZC5UQUcgPSBULnRhZ05hbWVOb0NvbW1l
bnRzID8gZnVuY3Rpb24oZSwgbikgewotICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2Ygbi5n
ZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gQSA/IG4uZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSkgOiB0
Ci0gICAgICAgICAgICB9IDogZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAgICAgIHZhciBu
LAotICAgICAgICAgICAgICAgICAgICByID0gW10sCi0gICAgICAgICAgICAgICAgICAgIGkgPSAw
LAotICAgICAgICAgICAgICAgICAgICBvID0gdC5nZXRFbGVtZW50c0J5VGFnTmFtZShlKTsKLSAg
ICAgICAgICAgICAgICBpZiAoIioiID09PSBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxl
IChuID0gb1tpKytdKQotICAgICAgICAgICAgICAgICAgICAgICAgMSA9PT0gbi5ub2RlVHlwZSAm
JiByLnB1c2gobik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByCi0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBvCi0gICAgICAgICAgICB9LCBpLmZpbmQuTkFN
RSA9IFQuZ2V0QnlOYW1lICYmIGZ1bmN0aW9uKGUsIG4pIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gdHlwZW9mIG4uZ2V0RWxlbWVudHNCeU5hbWUgIT09IEEgPyBuLmdldEVsZW1lbnRzQnlOYW1l
KG5hbWUpIDogdAotICAgICAgICAgICAgfSwgaS5maW5kLkNMQVNTID0gVC5nZXRCeUNsYXNzTmFt
ZSAmJiBmdW5jdGlvbihlLCBuKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBuLmdl
dEVsZW1lbnRzQnlDbGFzc05hbWUgPT09IEEgfHwgZCA/IHQgOiBuLmdldEVsZW1lbnRzQnlDbGFz
c05hbWUoZSkKLSAgICAgICAgICAgIH0sIGcgPSBbXSwgaCA9IFsiOmZvY3VzIl0sIChULnFzYSA9
IHJ0KG4ucXVlcnlTZWxlY3RvckFsbCkpICYmIChhdChmdW5jdGlvbihlKSB7Ci0gICAgICAgICAg
ICAgICAgZS5pbm5lckhUTUwgPSAiPHNlbGVjdD48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9u
Pjwvc2VsZWN0PiIsCi0gICAgICAgICAgICAgICAgZS5xdWVyeVNlbGVjdG9yQWxsKCJbc2VsZWN0
ZWRdIikubGVuZ3RoIHx8IGgucHVzaCgiXFxbIiArIF8gKyAiKig/OmNoZWNrZWR8ZGlzYWJsZWR8
aXNtYXB8bXVsdGlwbGV8cmVhZG9ubHl8c2VsZWN0ZWR8dmFsdWUpIiksCi0gICAgICAgICAgICAg
ICAgZS5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aCB8fCBoLnB1c2goIjpjaGVj
a2VkIikKLSAgICAgICAgICAgIH0pLCBhdChmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAg
ZS5pbm5lckhUTUwgPSAiPGlucHV0IHR5cGU9J2hpZGRlbicgaT0nJy8+IiwKLSAgICAgICAgICAg
ICAgICBlLnF1ZXJ5U2VsZWN0b3JBbGwoIltpXj0nJ10iKS5sZW5ndGggJiYgaC5wdXNoKCJbKl4k
XT0iICsgXyArICIqKD86XCJcInwnJykiKSwKLSAgICAgICAgICAgICAgICBlLnF1ZXJ5U2VsZWN0
b3JBbGwoIjplbmFibGVkIikubGVuZ3RoIHx8IGgucHVzaCgiOmVuYWJsZWQiLCAiOmRpc2FibGVk
IiksCi0gICAgICAgICAgICAgICAgZS5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4IiksCi0gICAgICAg
ICAgICAgICAgaC5wdXNoKCIsLio6IikKLSAgICAgICAgICAgIH0pKSwgKFQubWF0Y2hlc1NlbGVj
dG9yID0gcnQobSA9IGYubWF0Y2hlc1NlbGVjdG9yIHx8IGYubW96TWF0Y2hlc1NlbGVjdG9yIHx8
IGYud2Via2l0TWF0Y2hlc1NlbGVjdG9yIHx8IGYub01hdGNoZXNTZWxlY3RvciB8fCBmLm1zTWF0
Y2hlc1NlbGVjdG9yKSkgJiYgYXQoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgIFQuZGlz
Y29ubmVjdGVkTWF0Y2ggPSBtLmNhbGwoZSwgImRpdiIpLAotICAgICAgICAgICAgICAgIG0uY2Fs
bChlLCAiW3MhPScnXTp4IiksCi0gICAgICAgICAgICAgICAgZy5wdXNoKCIhPSIsIFIpCi0gICAg
ICAgICAgICB9KSwgaCA9IFJlZ0V4cChoLmpvaW4oInwiKSksIGcgPSBSZWdFeHAoZy5qb2luKCJ8
IikpLCB5ID0gcnQoZi5jb250YWlucykgfHwgZi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiA/IGZ1
bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgICAgICB2YXIgbiA9IDkgPT09IGUubm9kZVR5cGUg
PyBlLmRvY3VtZW50RWxlbWVudCA6IGUsCi0gICAgICAgICAgICAgICAgICAgIHIgPSB0ICYmIHQu
cGFyZW50Tm9kZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZSA9PT0gciB8fCAhKCFyIHx8IDEg
IT09IHIubm9kZVR5cGUgfHwgIShuLmNvbnRhaW5zID8gbi5jb250YWlucyhyKSA6IGUuY29tcGFy
ZURvY3VtZW50UG9zaXRpb24gJiYgMTYgJiBlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHIpKSkK
LSAgICAgICAgICAgIH0gOiBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHQp
Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlICh0ID0gdC5wYXJlbnROb2RlKQotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHQgPT09IGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuICEwOwotICAgICAgICAgICAgICAgIHJldHVybiAhMQotICAgICAgICAgICAgfSwgdiA9
IGYuY29tcGFyZURvY3VtZW50UG9zaXRpb24gPyBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAg
ICAgICAgdmFyIHI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGUgPT09IHQgPyAodSA9ICEwLCAw
KSA6IChyID0gdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAmJiBlLmNvbXBhcmVEb2N1bWVudFBv
c2l0aW9uICYmIGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCkpID8gMSAmIHIgfHwgZS5wYXJl
bnROb2RlICYmIDExID09PSBlLnBhcmVudE5vZGUubm9kZVR5cGUgPyBlID09PSBuIHx8IHkodywg
ZSkgPyAtMSA6IHQgPT09IG4gfHwgeSh3LCB0KSA/IDEgOiAwIDogNCAmIHIgPyAtMSA6IDEgOiBl
LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uID8gLTEgOiAxCi0gICAgICAgICAgICB9IDogZnVuY3Rp
b24oZSwgdCkgewotICAgICAgICAgICAgICAgIHZhciByLAotICAgICAgICAgICAgICAgICAgICBp
ID0gMCwKLSAgICAgICAgICAgICAgICAgICAgbyA9IGUucGFyZW50Tm9kZSwKLSAgICAgICAgICAg
ICAgICAgICAgYSA9IHQucGFyZW50Tm9kZSwKLSAgICAgICAgICAgICAgICAgICAgcyA9IFtlXSwK
LSAgICAgICAgICAgICAgICAgICAgbCA9IFt0XTsKLSAgICAgICAgICAgICAgICBpZiAoZSA9PT0g
dCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHUgPSAhMCwgMDsKLSAgICAgICAgICAgICAg
ICBpZiAoIW8gfHwgIWEpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlID09PSBuID8gLTEg
OiB0ID09PSBuID8gMSA6IG8gPyAtMSA6IGEgPyAxIDogMDsKLSAgICAgICAgICAgICAgICBpZiAo
byA9PT0gYSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHV0KGUsIHQpOwotICAgICAgICAg
ICAgICAgIHIgPSBlOwotICAgICAgICAgICAgICAgIHdoaWxlIChyID0gci5wYXJlbnROb2RlKQot
ICAgICAgICAgICAgICAgICAgICBzLnVuc2hpZnQocik7Ci0gICAgICAgICAgICAgICAgciA9IHQ7
Ci0gICAgICAgICAgICAgICAgd2hpbGUgKHIgPSByLnBhcmVudE5vZGUpCi0gICAgICAgICAgICAg
ICAgICAgIGwudW5zaGlmdChyKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoc1tpXSA9PT0gbFtp
XSkKLSAgICAgICAgICAgICAgICAgICAgaSsrOwotICAgICAgICAgICAgICAgIHJldHVybiBpID8g
dXQoc1tpXSwgbFtpXSkgOiBzW2ldID09PSB3ID8gLTEgOiBsW2ldID09PSB3ID8gMSA6IDAKLSAg
ICAgICAgICAgIH0sIHUgPSAhMSwgWzAsIDBdLnNvcnQodiksIFQuZGV0ZWN0RHVwbGljYXRlcyA9
IHUsIHApIDogcAotICAgICAgICB9LAotICAgICAgICBzdC5tYXRjaGVzID0gZnVuY3Rpb24oZSwg
dCkgewotICAgICAgICAgICAgcmV0dXJuIHN0KGUsIG51bGwsIG51bGwsIHQpCi0gICAgICAgIH0s
Ci0gICAgICAgIHN0Lm1hdGNoZXNTZWxlY3RvciA9IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAg
ICAgIGlmICgoZS5vd25lckRvY3VtZW50IHx8IGUpICE9PSBwICYmIGMoZSksIHQgPSB0LnJlcGxh
Y2UoWiwgIj0nJDEnXSIpLCAhKCFULm1hdGNoZXNTZWxlY3RvciB8fCBkIHx8IGcgJiYgZy50ZXN0
KHQpIHx8IGgudGVzdCh0KSkpCi0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAg
ICAgICAgdmFyIG4gPSBtLmNhbGwoZSwgdCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChuIHx8
IFQuZGlzY29ubmVjdGVkTWF0Y2ggfHwgZS5kb2N1bWVudCAmJiAxMSAhPT0gZS5kb2N1bWVudC5u
b2RlVHlwZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuCi0gICAgICAgICAgICAg
ICAgfSBjYXRjaCAocikge30KLSAgICAgICAgICAgIHJldHVybiBzdCh0LCBwLCBudWxsLCBbZV0p
Lmxlbmd0aCA+IDAKLSAgICAgICAgfSwKLSAgICAgICAgc3QuY29udGFpbnMgPSBmdW5jdGlvbihl
LCB0KSB7Ci0gICAgICAgICAgICByZXR1cm4gKGUub3duZXJEb2N1bWVudCB8fCBlKSAhPT0gcCAm
JiBjKGUpLCB5KGUsIHQpCi0gICAgICAgIH0sCi0gICAgICAgIHN0LmF0dHIgPSBmdW5jdGlvbihl
LCB0KSB7Ci0gICAgICAgICAgICB2YXIgbjsKLSAgICAgICAgICAgIHJldHVybiAoZS5vd25lckRv
Y3VtZW50IHx8IGUpICE9PSBwICYmIGMoZSksIGQgfHwgKHQgPSB0LnRvTG93ZXJDYXNlKCkpLCAo
biA9IGkuYXR0ckhhbmRsZVt0XSkgPyBuKGUpIDogZCB8fCBULmF0dHJpYnV0ZXMgPyBlLmdldEF0
dHJpYnV0ZSh0KSA6ICgobiA9IGUuZ2V0QXR0cmlidXRlTm9kZSh0KSkgfHwgZS5nZXRBdHRyaWJ1
dGUodCkpICYmIGVbdF0gPT09ICEwID8gdCA6IG4gJiYgbi5zcGVjaWZpZWQgPyBuLnZhbHVlIDog
bnVsbAotICAgICAgICB9LAotICAgICAgICBzdC5lcnJvciA9IGZ1bmN0aW9uKGUpIHsKLSAgICAg
ICAgICAgIHRocm93IEVycm9yKCJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9u
OiAiICsgZSkKLSAgICAgICAgfSwKLSAgICAgICAgc3QudW5pcXVlU29ydCA9IGZ1bmN0aW9uKGUp
IHsKLSAgICAgICAgICAgIHZhciB0LAotICAgICAgICAgICAgICAgIG4gPSBbXSwKLSAgICAgICAg
ICAgICAgICByID0gMSwKLSAgICAgICAgICAgICAgICBpID0gMDsKLSAgICAgICAgICAgIGlmICh1
ID0gIVQuZGV0ZWN0RHVwbGljYXRlcywgZS5zb3J0KHYpLCB1KSB7Ci0gICAgICAgICAgICAgICAg
Zm9yICg7IHQgPSBlW3JdOyByKyspCi0gICAgICAgICAgICAgICAgICAgIHQgPT09IGVbciAtIDFd
ICYmIChpID0gbi5wdXNoKHIpKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoaS0tKQotICAgICAg
ICAgICAgICAgICAgICBlLnNwbGljZShuW2ldLCAxKQotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgcmV0dXJuIGUKLSAgICAgICAgfTsKLSAgICAgICAgZnVuY3Rpb24gdXQoZSwgdCkgewotICAg
ICAgICAgICAgdmFyIG4gPSB0ICYmIGUsCi0gICAgICAgICAgICAgICAgciA9IG4gJiYgKH50LnNv
dXJjZUluZGV4IHx8IGopIC0gKH5lLnNvdXJjZUluZGV4IHx8IGopOwotICAgICAgICAgICAgaWYg
KHIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHI7Ci0gICAgICAgICAgICBpZiAobikKLSAgICAg
ICAgICAgICAgICB3aGlsZSAobiA9IG4ubmV4dFNpYmxpbmcpCi0gICAgICAgICAgICAgICAgICAg
IGlmIChuID09PSB0KQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAg
ICAgICAgcmV0dXJuIGUgPyAxIDogLTEKLSAgICAgICAgfQotICAgICAgICBmdW5jdGlvbiBsdChl
KSB7Ci0gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCkgewotICAgICAgICAgICAgICAgIHZh
ciBuID0gdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOwotICAgICAgICAgICAgICAgIHJldHVybiAi
aW5wdXQiID09PSBuICYmIHQudHlwZSA9PT0gZQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGZ1bmN0aW9uIGN0KGUpIHsKLSAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih0KSB7
Ci0gICAgICAgICAgICAgICAgdmFyIG4gPSB0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuICgiaW5wdXQiID09PSBuIHx8ICJidXR0b24iID09PSBuKSAmJiB0
LnR5cGUgPT09IGUKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBmdW5jdGlvbiBw
dChlKSB7Ci0gICAgICAgICAgICByZXR1cm4gb3QoZnVuY3Rpb24odCkgewotICAgICAgICAgICAg
ICAgIHJldHVybiB0ID0gK3QsIG90KGZ1bmN0aW9uKG4sIHIpIHsKLSAgICAgICAgICAgICAgICAg
ICAgdmFyIGksCi0gICAgICAgICAgICAgICAgICAgICAgICBvID0gZShbXSwgbi5sZW5ndGgsIHQp
LAotICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG8ubGVuZ3RoOwotICAgICAgICAgICAgICAg
ICAgICB3aGlsZSAoYS0tKQotICAgICAgICAgICAgICAgICAgICAgICAgbltpID0gb1thXV0gJiYg
KG5baV0gPSAhKHJbaV0gPSBuW2ldKSkKLSAgICAgICAgICAgICAgICB9KQotICAgICAgICAgICAg
fSkKLSAgICAgICAgfQotICAgICAgICBvID0gc3QuZ2V0VGV4dCA9IGZ1bmN0aW9uKGUpIHsKLSAg
ICAgICAgICAgIHZhciB0LAotICAgICAgICAgICAgICAgIG4gPSAiIiwKLSAgICAgICAgICAgICAg
ICByID0gMCwKLSAgICAgICAgICAgICAgICBpID0gZS5ub2RlVHlwZTsKLSAgICAgICAgICAgIGlm
IChpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKDEgPT09IGkgfHwgOSA9PT0gaSB8fCAxMSA9PT0g
aSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGUudGV4dENv
bnRlbnQpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS50ZXh0Q29udGVudDsKLSAg
ICAgICAgICAgICAgICAgICAgZm9yIChlID0gZS5maXJzdENoaWxkOyBlOyBlID0gZS5uZXh0U2li
bGluZykKLSAgICAgICAgICAgICAgICAgICAgICAgIG4gKz0gbyhlKQotICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAoMyA9PT0gaSB8fCA0ID09PSBpKQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZS5ub2RlVmFsdWUKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGZvciAo
OyB0ID0gZVtyXTsgcisrKQotICAgICAgICAgICAgICAgICAgICBuICs9IG8odCk7Ci0gICAgICAg
ICAgICByZXR1cm4gbgotICAgICAgICB9LAotICAgICAgICBpID0gc3Quc2VsZWN0b3JzID0gewot
ICAgICAgICAgICAgY2FjaGVMZW5ndGg6IDUwLAotICAgICAgICAgICAgY3JlYXRlUHNldWRvOiBv
dCwKLSAgICAgICAgICAgIG1hdGNoOiBVLAotICAgICAgICAgICAgZmluZDoge30sCi0gICAgICAg
ICAgICByZWxhdGl2ZTogewotICAgICAgICAgICAgICAgICI+IjogewotICAgICAgICAgICAgICAg
ICAgICBkaXI6ICJwYXJlbnROb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgZmlyc3Q6ICEwCi0g
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiICI6IHsKLSAgICAgICAgICAgICAg
ICAgICAgZGlyOiAicGFyZW50Tm9kZSIKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg
ICAgICIrIjogewotICAgICAgICAgICAgICAgICAgICBkaXI6ICJwcmV2aW91c1NpYmxpbmciLAot
ICAgICAgICAgICAgICAgICAgICBmaXJzdDogITAKLSAgICAgICAgICAgICAgICB9LAotICAgICAg
ICAgICAgICAgICJ+IjogewotICAgICAgICAgICAgICAgICAgICBkaXI6ICJwcmV2aW91c1NpYmxp
bmciCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHByZUZp
bHRlcjogewotICAgICAgICAgICAgICAgIEFUVFI6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGVbMV0gPSBlWzFdLnJlcGxhY2UoZXQsIHR0KSwgZVszXSA9IChlWzRd
IHx8IGVbNV0gfHwgIiIpLnJlcGxhY2UoZXQsIHR0KSwgIn49IiA9PT0gZVsyXSAmJiAoZVszXSA9
ICIgIiArIGVbM10gKyAiICIpLCBlLnNsaWNlKDAsIDQpCi0gICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICBDSElMRDogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZVsxXSA9IGVbMV0udG9Mb3dlckNhc2UoKSwgIm50aCIgPT09IGVbMV0uc2xpY2UoMCwg
MykgPyAoZVszXSB8fCBzdC5lcnJvcihlWzBdKSwgZVs0XSA9ICsoZVs0XSA/IGVbNV0gKyAoZVs2
XSB8fCAxKSA6IDIgKiAoImV2ZW4iID09PSBlWzNdIHx8ICJvZGQiID09PSBlWzNdKSksIGVbNV0g
PSArKGVbN10gKyBlWzhdIHx8ICJvZGQiID09PSBlWzNdKSkgOiBlWzNdICYmIHN0LmVycm9yKGVb
MF0pLCBlCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBQU0VVRE86IGZ1bmN0
aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBuID0gIWVbNV0gJiYgZVsyXTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFUuQ0hJ
TEQudGVzdChlWzBdKSA/IG51bGwgOiAoZVs0XSA/IGVbMl0gPSBlWzRdIDogbiAmJiB6LnRlc3Qo
bikgJiYgKHQgPSBmdChuLCAhMCkpICYmICh0ID0gbi5pbmRleE9mKCIpIiwgbi5sZW5ndGggLSB0
KSAtIG4ubGVuZ3RoKSAmJiAoZVswXSA9IGVbMF0uc2xpY2UoMCwgdCksIGVbMl0gPSBuLnNsaWNl
KDAsIHQpKSwgZS5zbGljZSgwLCAzKSkKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
LAotICAgICAgICAgICAgZmlsdGVyOiB7Ci0gICAgICAgICAgICAgICAgVEFHOiBmdW5jdGlvbihl
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAiKiIgPT09IGUgPyBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAotICAgICAgICAgICAgICAgICAgICB9
IDogKGUgPSBlLnJlcGxhY2UoZXQsIHR0KS50b0xvd2VyQ2FzZSgpLCBmdW5jdGlvbih0KSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5ub2RlTmFtZSAmJiB0Lm5vZGVOYW1lLnRv
TG93ZXJDYXNlKCkgPT09IGUKLSAgICAgICAgICAgICAgICAgICAgfSkKLSAgICAgICAgICAgICAg
ICB9LAotICAgICAgICAgICAgICAgIENMQVNTOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHZhciB0ID0ga1tlICsgIiAiXTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQg
fHwgKHQgPSBSZWdFeHAoIihefCIgKyBfICsgIikiICsgZSArICIoIiArIF8gKyAifCQpIikpICYm
IGsoZSwgZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
LnRlc3QoZS5jbGFzc05hbWUgfHwgdHlwZW9mIGUuZ2V0QXR0cmlidXRlICE9PSBBICYmIGUuZ2V0
QXR0cmlidXRlKCJjbGFzcyIpIHx8ICIiKQotICAgICAgICAgICAgICAgICAgICAgICAgfSkKLSAg
ICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIEFUVFI6IGZ1bmN0aW9uKGUsIHQsIG4p
IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHIpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBpID0gc3QuYXR0cihyLCBlKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBudWxsID09IGkgPyAiIT0iID09PSB0IDogdCA/IChpICs9ICIiLCAiPSIgPT09
IHQgPyBpID09PSBuIDogIiE9IiA9PT0gdCA/IGkgIT09IG4gOiAiXj0iID09PSB0ID8gbiAmJiAw
ID09PSBpLmluZGV4T2YobikgOiAiKj0iID09PSB0ID8gbiAmJiBpLmluZGV4T2YobikgPiAtMSA6
ICIkPSIgPT09IHQgPyBuICYmIGkuc2xpY2UoLW4ubGVuZ3RoKSA9PT0gbiA6ICJ+PSIgPT09IHQg
PyAoIiAiICsgaSArICIgIikuaW5kZXhPZihuKSA+IC0xIDogInw9IiA9PT0gdCA/IGkgPT09IG4g
fHwgaS5zbGljZSgwLCBuLmxlbmd0aCArIDEpID09PSBuICsgIi0iIDogITEpIDogITAKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgQ0hJ
TEQ6IGZ1bmN0aW9uKGUsIHQsIG4sIHIsIGkpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIG8g
PSAibnRoIiAhPT0gZS5zbGljZSgwLCAzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAi
bGFzdCIgIT09IGUuc2xpY2UoLTQpLAotICAgICAgICAgICAgICAgICAgICAgICAgcyA9ICJvZi10
eXBlIiA9PT0gdDsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEgPT09IHIgJiYgMCA9PT0g
aSA/IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhIWUucGFy
ZW50Tm9kZQotICAgICAgICAgICAgICAgICAgICB9IDogZnVuY3Rpb24odCwgbiwgdSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBvICE9PSBh
ID8gIm5leHRTaWJsaW5nIiA6ICJwcmV2aW91c1NpYmxpbmciLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG0gPSB0LnBhcmVudE5vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
eSA9IHMgJiYgdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHYgPSAhdSAmJiAhczsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8pIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2hpbGUgKGcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHAgPSB0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHAg
PSBwW2ddKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID8g
cC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSB5IDogMSA9PT0gcC5ub2RlVHlwZSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGcgPSAib25seSIgPT09IGUgJiYgIWgg
JiYgIm5leHRTaWJsaW5nIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IFthID8gbS5m
aXJzdENoaWxkIDogbS5sYXN0Q2hpbGRdLCBhICYmIHYpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYyA9IG1beF0gfHwgKG1beF0gPSB7fSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGwgPSBjW2VdIHx8IFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkID0gbFswXSA9PT0gTiAmJiBsWzFdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmID0gbFswXSA9PT0gTiAmJiBsWzJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwID0gZCAmJiBtLmNoaWxkTm9kZXNbZF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdoaWxlIChwID0gKytkICYmIHAgJiYgcFtnXSB8fCAoZiA9IGQgPSAwKSB8fCBoLnBv
cCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDEgPT09IHAubm9k
ZVR5cGUgJiYgKytmICYmIHAgPT09IHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjW2VdID0gW04sIGQsIGZdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2ICYmIChsID0gKHRbeF0g
fHwgKHRbeF0gPSB7fSkpW2VdKSAmJiBsWzBdID09PSBOKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmID0gbFsxXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChwID0gKytkICYmIHAgJiYgcFtn
XSB8fCAoZiA9IGQgPSAwKSB8fCBoLnBvcCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKChzID8gcC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSB5IDogMSA9PT0g
cC5ub2RlVHlwZSkgJiYgKytmICYmICh2ICYmICgocFt4XSB8fCAocFt4XSA9IHt9KSlbZV0gPSBb
TiwgZl0pLCBwID09PSB0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZiAtPSBpLCBmID09
PSByIHx8IDAgPT09IGYgJSByICYmIGYgLyByID49IDAKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAgICAgUFNFVURPOiBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBu
LAotICAgICAgICAgICAgICAgICAgICAgICAgciA9IGkucHNldWRvc1tlXSB8fCBpLnNldEZpbHRl
cnNbZS50b0xvd2VyQ2FzZSgpXSB8fCBzdC5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiICsg
ZSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByW3hdID8gcih0KSA6IHIubGVuZ3RoID4g
MSA/IChuID0gW2UsIGUsICIiLCB0XSwgaS5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KGUudG9M
b3dlckNhc2UoKSkgPyBvdChmdW5jdGlvbihlLCBuKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gcihlLCB0KSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhID0gby5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB3aGlsZSAoYS0tKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBNLmNhbGwo
ZSwgb1thXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtpXSA9ICEobltpXSA9IG9b
YV0pCi0gICAgICAgICAgICAgICAgICAgIH0pIDogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHIoZSwgMCwgbikKLSAgICAgICAgICAgICAgICAgICAgfSkgOiBy
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHBzZXVkb3M6
IHsKLSAgICAgICAgICAgICAgICBub3Q6IG90KGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAg
ICAgICAgdmFyIHQgPSBbXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBbXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHIgPSBzKGUucmVwbGFjZShXLCAiJDEiKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiByW3hdID8gb3QoZnVuY3Rpb24oZSwgdCwgbiwgaSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIG8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9
IHIoZSwgbnVsbCwgaSwgW10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBlLmxl
bmd0aDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChzLS0pCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKG8gPSBhW3NdKSAmJiAoZVtzXSA9ICEodFtzXSA9IG8pKQotICAgICAg
ICAgICAgICAgICAgICB9KSA6IGZ1bmN0aW9uKGUsIGksIG8pIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0WzBdID0gZSwgcih0LCBudWxsLCBvLCBuKSwgIW4ucG9wKCkKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0pLAotICAgICAgICAgICAgICAgIGhh
czogb3QoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24o
dCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0KGUsIHQpLmxlbmd0aCA+IDAK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0pLAotICAgICAgICAgICAg
ICAgIGNvbnRhaW5zOiBvdChmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBmdW5jdGlvbih0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHQudGV4dENv
bnRlbnQgfHwgdC5pbm5lclRleHQgfHwgbyh0KSkuaW5kZXhPZihlKSA+IC0xCi0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KSwKLSAgICAgICAgICAgICAgICBsYW5nOiBv
dChmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBYLnRlc3QoZSB8fCAi
IikgfHwgc3QuZXJyb3IoInVuc3VwcG9ydGVkIGxhbmc6ICIgKyBlKSwgZSA9IGUucmVwbGFjZShl
dCwgdHQpLnRvTG93ZXJDYXNlKCksIGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBuOwotICAgICAgICAgICAgICAgICAgICAgICAgZG8gaWYgKG4gPSBkID8gdC5nZXRB
dHRyaWJ1dGUoInhtbDpsYW5nIikgfHwgdC5nZXRBdHRyaWJ1dGUoImxhbmciKSA6IHQubGFuZykK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiA9IG4udG9Mb3dlckNhc2UoKSwg
biA9PT0gZSB8fCAwID09PSBuLmluZGV4T2YoZSArICItIik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB3aGlsZSAoKHQgPSB0LnBhcmVudE5vZGUpICYmIDEgPT09IHQubm9kZVR5cGUpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExCi0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9KSwKLSAgICAgICAgICAgICAgICB0YXJnZXQ6IGZ1bmN0aW9uKHQpIHsK
LSAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLmxvY2F0aW9uICYmIGUubG9jYXRpb24uaGFz
aDsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgbi5zbGljZSgxKSA9PT0gdC5pZAot
ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgcm9vdDogZnVuY3Rpb24oZSkgewot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9PT0gZgotICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgZm9jdXM6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGUgPT09IHAuYWN0aXZlRWxlbWVudCAmJiAoIXAuaGFzRm9jdXMgfHwgcC5oYXNGb2N1
cygpKSAmJiAhIShlLnR5cGUgfHwgZS5ocmVmIHx8IH5lLnRhYkluZGV4KQotICAgICAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICAgICAgZW5hYmxlZDogZnVuY3Rpb24oZSkgewotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZS5kaXNhYmxlZCA9PT0gITEKLSAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBlLmRpc2FibGVkID09PSAhMAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAgICAgY2hlY2tlZDogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgICB2YXIg
dCA9IGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICJpbnB1dCIgPT09IHQgJiYgISFlLmNoZWNrZWQgfHwgIm9wdGlvbiIgPT09IHQgJiYgISFlLnNl
bGVjdGVkCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBzZWxlY3RlZDogZnVu
Y3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5wYXJlbnROb2RlICYmIGUu
cGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LCBlLnNlbGVjdGVkID09PSAhMAotICAgICAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICAgICAgZW1wdHk6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgZm9yIChlID0gZS5maXJzdENoaWxkOyBlOyBlID0gZS5uZXh0U2libGluZykKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChlLm5vZGVOYW1lID4gIkAiIHx8IDMgPT09IGUubm9k
ZVR5cGUgfHwgNCA9PT0gZS5ub2RlVHlwZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gITE7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAotICAgICAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAgICAgcGFyZW50OiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiAhaS5wc2V1ZG9zLmVtcHR5KGUpCi0gICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICBoZWFkZXI6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFEudGVzdChlLm5vZGVOYW1lKQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAgICAgaW5wdXQ6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEcu
dGVzdChlLm5vZGVOYW1lKQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgYnV0
dG9uOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5ub2RlTmFt
ZS50b0xvd2VyQ2FzZSgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gImlucHV0IiA9PT0g
dCAmJiAiYnV0dG9uIiA9PT0gZS50eXBlIHx8ICJidXR0b24iID09PSB0Ci0gICAgICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgICAgICB0ZXh0OiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHZhciB0OwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gImlucHV0IiA9PT0gZS5u
b2RlTmFtZS50b0xvd2VyQ2FzZSgpICYmICJ0ZXh0IiA9PT0gZS50eXBlICYmIChudWxsID09ICh0
ID0gZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSkgfHwgdC50b0xvd2VyQ2FzZSgpID09PSBlLnR5cGUp
Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBmaXJzdDogcHQoZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMF0KLSAgICAgICAgICAgICAgICB9KSwK
LSAgICAgICAgICAgICAgICBsYXN0OiBwdChmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBbdCAtIDFdCi0gICAgICAgICAgICAgICAgfSksCi0gICAgICAgICAgICAg
ICAgZXE6IHB0KGZ1bmN0aW9uKGUsIHQsIG4pIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFswID4gbiA/IG4gKyB0IDogbl0KLSAgICAgICAgICAgICAgICB9KSwKLSAgICAgICAgICAgICAg
ICBldmVuOiBwdChmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBuID0g
MDsKLSAgICAgICAgICAgICAgICAgICAgZm9yICg7IHQgPiBuOyBuICs9IDIpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBlLnB1c2gobik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlCi0g
ICAgICAgICAgICAgICAgfSksCi0gICAgICAgICAgICAgICAgb2RkOiBwdChmdW5jdGlvbihlLCB0
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBuID0gMTsKLSAgICAgICAgICAgICAgICAgICAg
Zm9yICg7IHQgPiBuOyBuICs9IDIpCi0gICAgICAgICAgICAgICAgICAgICAgICBlLnB1c2gobik7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlCi0gICAgICAgICAgICAgICAgfSksCi0gICAg
ICAgICAgICAgICAgbHQ6IHB0KGZ1bmN0aW9uKGUsIHQsIG4pIHsKLSAgICAgICAgICAgICAgICAg
ICAgdmFyIHIgPSAwID4gbiA/IG4gKyB0IDogbjsKLSAgICAgICAgICAgICAgICAgICAgZm9yICg7
IC0tciA+PSAwOykKLSAgICAgICAgICAgICAgICAgICAgICAgIGUucHVzaChyKTsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGUKLSAgICAgICAgICAgICAgICB9KSwKLSAgICAgICAgICAgICAg
ICBndDogcHQoZnVuY3Rpb24oZSwgdCwgbikgewotICAgICAgICAgICAgICAgICAgICB2YXIgciA9
IDAgPiBuID8gbiArIHQgOiBuOwotICAgICAgICAgICAgICAgICAgICBmb3IgKDsgdCA+ICsrcjsp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBlLnB1c2gocik7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBlCi0gICAgICAgICAgICAgICAgfSkKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsK
LSAgICAgICAgZm9yIChuIGluIHsKLSAgICAgICAgICAgIHJhZGlvOiAhMCwKLSAgICAgICAgICAg
IGNoZWNrYm94OiAhMCwKLSAgICAgICAgICAgIGZpbGU6ICEwLAotICAgICAgICAgICAgcGFzc3dv
cmQ6ICEwLAotICAgICAgICAgICAgaW1hZ2U6ICEwCi0gICAgICAgIH0pCi0gICAgICAgICAgICBp
LnBzZXVkb3Nbbl0gPSBsdChuKTsKLSAgICAgICAgZm9yIChuIGluIHsKLSAgICAgICAgICAgIHN1
Ym1pdDogITAsCi0gICAgICAgICAgICByZXNldDogITAKLSAgICAgICAgfSkKLSAgICAgICAgICAg
IGkucHNldWRvc1tuXSA9IGN0KG4pOwotICAgICAgICBmdW5jdGlvbiBmdChlLCB0KSB7Ci0gICAg
ICAgICAgICB2YXIgbiwKLSAgICAgICAgICAgICAgICByLAotICAgICAgICAgICAgICAgIG8sCi0g
ICAgICAgICAgICAgICAgYSwKLSAgICAgICAgICAgICAgICBzLAotICAgICAgICAgICAgICAgIHUs
Ci0gICAgICAgICAgICAgICAgbCwKLSAgICAgICAgICAgICAgICBjID0gRVtlICsgIiAiXTsKLSAg
ICAgICAgICAgIGlmIChjKQotICAgICAgICAgICAgICAgIHJldHVybiB0ID8gMCA6IGMuc2xpY2Uo
MCk7Ci0gICAgICAgICAgICBzID0gZSwKLSAgICAgICAgICAgIHUgPSBbXSwKLSAgICAgICAgICAg
IGwgPSBpLnByZUZpbHRlcjsKLSAgICAgICAgICAgIHdoaWxlIChzKSB7Ci0gICAgICAgICAgICAg
ICAgKCFuIHx8IChyID0gJC5leGVjKHMpKSkgJiYgKHIgJiYgKHMgPSBzLnNsaWNlKHJbMF0ubGVu
Z3RoKSB8fCBzKSwgdS5wdXNoKG8gPSBbXSkpLAotICAgICAgICAgICAgICAgIG4gPSAhMSwKLSAg
ICAgICAgICAgICAgICAociA9IEkuZXhlYyhzKSkgJiYgKG4gPSByLnNoaWZ0KCksIG8ucHVzaCh7
Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuLAotICAgICAgICAgICAgICAgICAgICB0eXBl
OiByWzBdLnJlcGxhY2UoVywgIiAiKQotICAgICAgICAgICAgICAgIH0pLCBzID0gcy5zbGljZShu
Lmxlbmd0aCkpOwotICAgICAgICAgICAgICAgIGZvciAoYSBpbiBpLmZpbHRlcikKLSAgICAgICAg
ICAgICAgICAgICAgIShyID0gVVthXS5leGVjKHMpKSB8fCBsW2FdICYmICEociA9IGxbYV0ocikp
IHx8IChuID0gci5zaGlmdCgpLCBvLnB1c2goewotICAgICAgICAgICAgICAgICAgICAgICAgdmFs
dWU6IG4sCi0gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBhLAotICAgICAgICAgICAgICAg
ICAgICAgICAgbWF0Y2hlczogcgotICAgICAgICAgICAgICAgICAgICB9KSwgcyA9IHMuc2xpY2Uo
bi5sZW5ndGgpKTsKLSAgICAgICAgICAgICAgICBpZiAoIW4pCi0gICAgICAgICAgICAgICAgICAg
IGJyZWFrCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdCA/IHMubGVuZ3RoIDog
cyA/IHN0LmVycm9yKGUpIDogRShlLCB1KS5zbGljZSgwKQotICAgICAgICB9Ci0gICAgICAgIGZ1
bmN0aW9uIGR0KGUpIHsKLSAgICAgICAgICAgIHZhciB0ID0gMCwKLSAgICAgICAgICAgICAgICBu
ID0gZS5sZW5ndGgsCi0gICAgICAgICAgICAgICAgciA9ICIiOwotICAgICAgICAgICAgZm9yICg7
IG4gPiB0OyB0KyspCi0gICAgICAgICAgICAgICAgciArPSBlW3RdLnZhbHVlOwotICAgICAgICAg
ICAgcmV0dXJuIHIKLSAgICAgICAgfQotICAgICAgICBmdW5jdGlvbiBodChlLCB0LCBuKSB7Ci0g
ICAgICAgICAgICB2YXIgaSA9IHQuZGlyLAotICAgICAgICAgICAgICAgIG8gPSBuICYmICJwYXJl
bnROb2RlIiA9PT0gaSwKLSAgICAgICAgICAgICAgICBhID0gQysrOwotICAgICAgICAgICAgcmV0
dXJuIHQuZmlyc3QgPyBmdW5jdGlvbih0LCBuLCByKSB7Ci0gICAgICAgICAgICAgICAgd2hpbGUg
KHQgPSB0W2ldKQotICAgICAgICAgICAgICAgICAgICBpZiAoMSA9PT0gdC5ub2RlVHlwZSB8fCBv
KQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUodCwgbiwgcikKLSAgICAgICAgICAg
IH0gOiBmdW5jdGlvbih0LCBuLCBzKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHUsCi0gICAgICAg
ICAgICAgICAgICAgIGwsCi0gICAgICAgICAgICAgICAgICAgIGMsCi0gICAgICAgICAgICAgICAg
ICAgIHAgPSBOICsgIiAiICsgYTsKLSAgICAgICAgICAgICAgICBpZiAocykgewotICAgICAgICAg
ICAgICAgICAgICB3aGlsZSAodCA9IHRbaV0pCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
KDEgPT09IHQubm9kZVR5cGUgfHwgbykgJiYgZSh0LCBuLCBzKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gITAKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgd2hpbGUgKHQgPSB0W2ldKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDEg
PT09IHQubm9kZVR5cGUgfHwgbykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA9
IHRbeF0gfHwgKHRbeF0gPSB7fSksIChsID0gY1tpXSkgJiYgbFswXSA9PT0gcCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHUgPSBsWzFdKSA9PT0gITAgfHwgdSA9PT0g
cikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1ID09PSAhMAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobCA9IGNbaV0gPSBbcF0sIGxb
MV0gPSBlKHQsIG4sIHMpIHx8IHIsIGxbMV0gPT09ICEwKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gITAKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBm
dW5jdGlvbiBndChlKSB7Ci0gICAgICAgICAgICByZXR1cm4gZS5sZW5ndGggPiAxID8gZnVuY3Rp
b24odCwgbiwgcikgewotICAgICAgICAgICAgICAgIHZhciBpID0gZS5sZW5ndGg7Ci0gICAgICAg
ICAgICAgICAgd2hpbGUgKGktLSkKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFlW2ldKHQsIG4s
IHIpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExOwotICAgICAgICAgICAgICAg
IHJldHVybiAhMAotICAgICAgICAgICAgfSA6IGVbMF0KLSAgICAgICAgfQotICAgICAgICBmdW5j
dGlvbiBtdChlLCB0LCBuLCByLCBpKSB7Ci0gICAgICAgICAgICB2YXIgbywKLSAgICAgICAgICAg
ICAgICBhID0gW10sCi0gICAgICAgICAgICAgICAgcyA9IDAsCi0gICAgICAgICAgICAgICAgdSA9
IGUubGVuZ3RoLAotICAgICAgICAgICAgICAgIGwgPSBudWxsICE9IHQ7Ci0gICAgICAgICAgICBm
b3IgKDsgdSA+IHM7IHMrKykKLSAgICAgICAgICAgICAgICAobyA9IGVbc10pICYmICghbiB8fCBu
KG8sIHIsIGkpKSAmJiAoYS5wdXNoKG8pLCBsICYmIHQucHVzaChzKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gYQotICAgICAgICB9Ci0gICAgICAgIGZ1bmN0aW9uIHl0KGUsIHQsIG4sIHIsIGksIG8p
IHsKLSAgICAgICAgICAgIHJldHVybiByICYmICFyW3hdICYmIChyID0geXQocikpLCBpICYmICFp
W3hdICYmIChpID0geXQoaSwgbykpLCBvdChmdW5jdGlvbihvLCBhLCBzLCB1KSB7Ci0gICAgICAg
ICAgICAgICAgdmFyIGwsCi0gICAgICAgICAgICAgICAgICAgIGMsCi0gICAgICAgICAgICAgICAg
ICAgIHAsCi0gICAgICAgICAgICAgICAgICAgIGYgPSBbXSwKLSAgICAgICAgICAgICAgICAgICAg
ZCA9IFtdLAotICAgICAgICAgICAgICAgICAgICBoID0gYS5sZW5ndGgsCi0gICAgICAgICAgICAg
ICAgICAgIGcgPSBvIHx8IHh0KHQgfHwgIioiLCBzLm5vZGVUeXBlID8gW3NdIDogcywgW10pLAot
ICAgICAgICAgICAgICAgICAgICBtID0gIWUgfHwgIW8gJiYgdCA/IGcgOiBtdChnLCBmLCBlLCBz
LCB1KSwKLSAgICAgICAgICAgICAgICAgICAgeSA9IG4gPyBpIHx8IChvID8gZSA6IGggfHwgcikg
PyBbXSA6IGEgOiBtOwotICAgICAgICAgICAgICAgIGlmIChuICYmIG4obSwgeSwgcywgdSksIHIp
IHsKLSAgICAgICAgICAgICAgICAgICAgbCA9IG10KHksIGQpLAotICAgICAgICAgICAgICAgICAg
ICByKGwsIFtdLCBzLCB1KSwKLSAgICAgICAgICAgICAgICAgICAgYyA9IGwubGVuZ3RoOwotICAg
ICAgICAgICAgICAgICAgICB3aGlsZSAoYy0tKQotICAgICAgICAgICAgICAgICAgICAgICAgKHAg
PSBsW2NdKSAmJiAoeVtkW2NdXSA9ICEobVtkW2NdXSA9IHApKQotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBpZiAobykgewotICAgICAgICAgICAgICAgICAgICBpZiAoaSB8fCBl
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGwgPSBbXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0geS5sZW5n
dGg7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGMtLSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKHAgPSB5W2NdKSAmJiBsLnB1c2gobVtjXSA9IHApOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGkobnVsbCwgeSA9IFtdLCBsLCB1KQotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHkubGVuZ3RoOwot
ICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGMtLSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAocCA9IHlbY10pICYmIChsID0gaSA/IE0uY2FsbChvLCBwKSA6IGZbY10pID4gLTEg
JiYgKG9bbF0gPSAhKGFbbF0gPSBwKSkKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICB5ID0gbXQoeSA9PT0gYSA/IHkuc3Bs
aWNlKGgsIHkubGVuZ3RoKSA6IHkpLAotICAgICAgICAgICAgICAgICAgICBpID8gaShudWxsLCBh
LCB5LCB1KSA6IEguYXBwbHkoYSwgeSkKLSAgICAgICAgICAgIH0pCi0gICAgICAgIH0KLSAgICAg
ICAgZnVuY3Rpb24gdnQoZSkgewotICAgICAgICAgICAgdmFyIHQsCi0gICAgICAgICAgICAgICAg
biwKLSAgICAgICAgICAgICAgICByLAotICAgICAgICAgICAgICAgIG8gPSBlLmxlbmd0aCwKLSAg
ICAgICAgICAgICAgICBhID0gaS5yZWxhdGl2ZVtlWzBdLnR5cGVdLAotICAgICAgICAgICAgICAg
IHMgPSBhIHx8IGkucmVsYXRpdmVbIiAiXSwKLSAgICAgICAgICAgICAgICB1ID0gYSA/IDEgOiAw
LAotICAgICAgICAgICAgICAgIGMgPSBodChmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBlID09PSB0Ci0gICAgICAgICAgICAgICAgfSwgcywgITApLAotICAgICAgICAg
ICAgICAgIHAgPSBodChmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBN
LmNhbGwodCwgZSkgPiAtMQotICAgICAgICAgICAgICAgIH0sIHMsICEwKSwKLSAgICAgICAgICAg
ICAgICBmID0gW2Z1bmN0aW9uKGUsIG4sIHIpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICFhICYmIChyIHx8IG4gIT09IGwpIHx8ICgodCA9IG4pLm5vZGVUeXBlID8gYyhlLCBuLCByKSA6
IHAoZSwgbiwgcikpCi0gICAgICAgICAgICAgICAgfV07Ci0gICAgICAgICAgICBmb3IgKDsgbyA+
IHU7IHUrKykKLSAgICAgICAgICAgICAgICBpZiAobiA9IGkucmVsYXRpdmVbZVt1XS50eXBlXSkK
LSAgICAgICAgICAgICAgICAgICAgZiA9IFtodChndChmKSwgbildOwotICAgICAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAobiA9IGkuZmlsdGVyW2VbdV0udHlwZV0u
YXBwbHkobnVsbCwgZVt1XS5tYXRjaGVzKSwgblt4XSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yIChyID0gKyt1OyBvID4gcjsgcisrKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChpLnJlbGF0aXZlW2Vbcl0udHlwZV0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHl0KHUgPiAxICYmIGd0
KGYpLCB1ID4gMSAmJiBkdChlLnNsaWNlKDAsIHUgLSAxKSkucmVwbGFjZShXLCAiJDEiKSwgbiwg
ciA+IHUgJiYgdnQoZS5zbGljZSh1LCByKSksIG8gPiByICYmIHZ0KGUgPSBlLnNsaWNlKHIpKSwg
byA+IHIgJiYgZHQoZSkpCi0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgZi5wdXNoKG4pCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGd0KGYp
Ci0gICAgICAgIH0KLSAgICAgICAgZnVuY3Rpb24gYnQoZSwgdCkgewotICAgICAgICAgICAgdmFy
IG4gPSAwLAotICAgICAgICAgICAgICAgIG8gPSB0Lmxlbmd0aCA+IDAsCi0gICAgICAgICAgICAg
ICAgYSA9IGUubGVuZ3RoID4gMCwKLSAgICAgICAgICAgICAgICBzID0gZnVuY3Rpb24ocywgdSwg
YywgZiwgZCkgewotICAgICAgICAgICAgICAgICAgICB2YXIgaCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGcsCi0gICAgICAgICAgICAgICAgICAgICAgICBtLAotICAgICAgICAgICAgICAgICAg
ICAgICAgeSA9IFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgdiA9IDAsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBiID0gIjAiLAotICAgICAgICAgICAgICAgICAgICAgICAgeCA9IHMgJiYg
W10sCi0gICAgICAgICAgICAgICAgICAgICAgICB3ID0gbnVsbCAhPSBkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgVCA9IGwsCi0gICAgICAgICAgICAgICAgICAgICAgICBDID0gcyB8fCBhICYm
IGkuZmluZC5UQUcoIioiLCBkICYmIHUucGFyZW50Tm9kZSB8fCB1KSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGsgPSBOICs9IG51bGwgPT0gVCA/IDEgOiBNYXRoLnJhbmRvbSgpIHx8IC4xOwot
ICAgICAgICAgICAgICAgICAgICBmb3IgKHcgJiYgKGwgPSB1ICE9PSBwICYmIHUsIHIgPSBuKTsg
bnVsbCAhPSAoaCA9IENbYl0pOyBiKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChh
ICYmIGgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gMDsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3aGlsZSAobSA9IGVbZysrXSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG0oaCwgdSwgYykpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGYucHVzaChoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3ICYmIChOID0gaywgciA9ICsrbikKLSAgICAgICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIG8gJiYgKChoID0gIW0gJiYgaCkgJiYgdi0t
LCBzICYmIHgucHVzaChoKSkKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICBpZiAodiArPSBiLCBvICYmIGIgIT09IHYpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGcgPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG0gPSB0W2crK10pCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbSh4LCB5LCB1LCBjKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYgPiAwKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoYi0tKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeFtiXSB8fCB5W2JdIHx8ICh5W2JdID0gTC5jYWxsKGYp
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gbXQoeSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIEguYXBwbHkoZiwgeSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICB3ICYmICFzICYmIHkubGVuZ3RoID4gMCAmJiB2ICsgdC5sZW5n
dGggPiAxICYmIHN0LnVuaXF1ZVNvcnQoZikKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdyAmJiAoTiA9IGssIGwgPSBUKSwgeAotICAgICAgICAgICAg
ICAgIH07Ci0gICAgICAgICAgICByZXR1cm4gbyA/IG90KHMpIDogcwotICAgICAgICB9Ci0gICAg
ICAgIHMgPSBzdC5jb21waWxlID0gZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAgdmFyIG4s
Ci0gICAgICAgICAgICAgICAgciA9IFtdLAotICAgICAgICAgICAgICAgIGkgPSBbXSwKLSAgICAg
ICAgICAgICAgICBvID0gU1tlICsgIiAiXTsKLSAgICAgICAgICAgIGlmICghbykgewotICAgICAg
ICAgICAgICAgIHQgfHwgKHQgPSBmdChlKSksCi0gICAgICAgICAgICAgICAgbiA9IHQubGVuZ3Ro
OwotICAgICAgICAgICAgICAgIHdoaWxlIChuLS0pCi0gICAgICAgICAgICAgICAgICAgIG8gPSB2
dCh0W25dKSwKLSAgICAgICAgICAgICAgICAgICAgb1t4XSA/IHIucHVzaChvKSA6IGkucHVzaChv
KTsKLSAgICAgICAgICAgICAgICBvID0gUyhlLCBidChpLCByKSkKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHJldHVybiBvCi0gICAgICAgIH07Ci0gICAgICAgIGZ1bmN0aW9uIHh0KGUsIHQs
IG4pIHsKLSAgICAgICAgICAgIHZhciByID0gMCwKLSAgICAgICAgICAgICAgICBpID0gdC5sZW5n
dGg7Ci0gICAgICAgICAgICBmb3IgKDsgaSA+IHI7IHIrKykKLSAgICAgICAgICAgICAgICBzdChl
LCB0W3JdLCBuKTsKLSAgICAgICAgICAgIHJldHVybiBuCi0gICAgICAgIH0KLSAgICAgICAgZnVu
Y3Rpb24gd3QoZSwgdCwgbiwgcikgewotICAgICAgICAgICAgdmFyIG8sCi0gICAgICAgICAgICAg
ICAgYSwKLSAgICAgICAgICAgICAgICB1LAotICAgICAgICAgICAgICAgIGwsCi0gICAgICAgICAg
ICAgICAgYywKLSAgICAgICAgICAgICAgICBwID0gZnQoZSk7Ci0gICAgICAgICAgICBpZiAoIXIg
JiYgMSA9PT0gcC5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBpZiAoYSA9IHBbMF0gPSBwWzBd
LnNsaWNlKDApLCBhLmxlbmd0aCA+IDIgJiYgIklEIiA9PT0gKHUgPSBhWzBdKS50eXBlICYmIDkg
PT09IHQubm9kZVR5cGUgJiYgIWQgJiYgaS5yZWxhdGl2ZVthWzFdLnR5cGVdKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICh0ID0gaS5maW5kLklEKHUubWF0Y2hlc1swXS5yZXBsYWNlKGV0LCB0
dCksIHQpWzBdLCAhdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuOwotICAgICAg
ICAgICAgICAgICAgICBlID0gZS5zbGljZShhLnNoaWZ0KCkudmFsdWUubGVuZ3RoKQotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBvID0gVS5uZWVkc0NvbnRleHQudGVzdChlKSA/
IDAgOiBhLmxlbmd0aDsKLSAgICAgICAgICAgICAgICB3aGlsZSAoby0tKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICh1ID0gYVtvXSwgaS5yZWxhdGl2ZVtsID0gdS50eXBlXSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBpZiAoKGMgPSBpLmZp
bmRbbF0pICYmIChyID0gYyh1Lm1hdGNoZXNbMF0ucmVwbGFjZShldCwgdHQpLCBWLnRlc3QoYVsw
XS50eXBlKSAmJiB0LnBhcmVudE5vZGUgfHwgdCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoYS5zcGxpY2UobywgMSksIGUgPSByLmxlbmd0aCAmJiBkdChhKSwgIWUpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEguYXBwbHkobiwgcS5jYWxsKHIsIDApKSwgbjsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gcyhlLCBw
KShyLCB0LCBkLCBuLCBWLnRlc3QoZSkpLCBuCi0gICAgICAgIH0KLSAgICAgICAgaS5wc2V1ZG9z
Lm50aCA9IGkucHNldWRvcy5lcTsKLSAgICAgICAgZnVuY3Rpb24gVHQoKSB7fQotICAgICAgICBp
LmZpbHRlcnMgPSBUdC5wcm90b3R5cGUgPSBpLnBzZXVkb3MsCi0gICAgICAgIGkuc2V0RmlsdGVy
cyA9IG5ldyBUdCwKLSAgICAgICAgYygpLAotICAgICAgICBzdC5hdHRyID0gYi5hdHRyLAotICAg
ICAgICBiLmZpbmQgPSBzdCwKLSAgICAgICAgYi5leHByID0gc3Quc2VsZWN0b3JzLAotICAgICAg
ICBiLmV4cHJbIjoiXSA9IGIuZXhwci5wc2V1ZG9zLAotICAgICAgICBiLnVuaXF1ZSA9IHN0LnVu
aXF1ZVNvcnQsCi0gICAgICAgIGIudGV4dCA9IHN0LmdldFRleHQsCi0gICAgICAgIGIuaXNYTUxE
b2MgPSBzdC5pc1hNTCwKLSAgICAgICAgYi5jb250YWlucyA9IHN0LmNvbnRhaW5zCi0gICAgfShl
KTsKLSAgICB2YXIgYXQgPSAvVW50aWwkLywKLSAgICAgICAgc3QgPSAvXig/OnBhcmVudHN8cHJl
dig/OlVudGlsfEFsbCkpLywKLSAgICAgICAgdXQgPSAvXi5bXjojXFtcLixdKiQvLAotICAgICAg
ICBsdCA9IGIuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQsCi0gICAgICAgIGN0ID0gewotICAgICAg
ICAgICAgY2hpbGRyZW46ICEwLAotICAgICAgICAgICAgY29udGVudHM6ICEwLAotICAgICAgICAg
ICAgbmV4dDogITAsCi0gICAgICAgICAgICBwcmV2OiAhMAotICAgICAgICB9OwotICAgIGIuZm4u
ZXh0ZW5kKHsKLSAgICAgICAgZmluZDogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgdmFyIHQs
Ci0gICAgICAgICAgICAgICAgbiwKLSAgICAgICAgICAgICAgICByLAotICAgICAgICAgICAgICAg
IGkgPSB0aGlzLmxlbmd0aDsKLSAgICAgICAgICAgIGlmICgic3RyaW5nIiAhPSB0eXBlb2YgZSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gciA9IHRoaXMsIHRoaXMucHVzaFN0YWNrKGIoZSkuZmls
dGVyKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSAwOyBpID4gdDsg
dCsrKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGIuY29udGFpbnMoclt0XSwgdGhpcykp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEwCi0gICAgICAgICAgICAgICAg
fSkpOwotICAgICAgICAgICAgZm9yIChuID0gW10sIHQgPSAwOyBpID4gdDsgdCsrKQotICAgICAg
ICAgICAgICAgIGIuZmluZChlLCB0aGlzW3RdLCBuKTsKLSAgICAgICAgICAgIHJldHVybiBuID0g
dGhpcy5wdXNoU3RhY2soaSA+IDEgPyBiLnVuaXF1ZShuKSA6IG4pLCBuLnNlbGVjdG9yID0gKHRo
aXMuc2VsZWN0b3IgPyB0aGlzLnNlbGVjdG9yICsgIiAiIDogIiIpICsgZSwgbgotICAgICAgICB9
LAotICAgICAgICBoYXM6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHZhciB0LAotICAgICAg
ICAgICAgICAgIG4gPSBiKGUsIHRoaXMpLAotICAgICAgICAgICAgICAgIHIgPSBuLmxlbmd0aDsK
LSAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
ICAgICBmb3IgKHQgPSAwOyByID4gdDsgdCsrKQotICAgICAgICAgICAgICAgICAgICBpZiAoYi5j
b250YWlucyh0aGlzLCBuW3RdKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAot
ICAgICAgICAgICAgfSkKLSAgICAgICAgfSwKLSAgICAgICAgbm90OiBmdW5jdGlvbihlKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soZnQodGhpcywgZSwgITEpKQotICAgICAg
ICB9LAotICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHJldHVybiB0
aGlzLnB1c2hTdGFjayhmdCh0aGlzLCBlLCAhMCkpCi0gICAgICAgIH0sCi0gICAgICAgIGlzOiBm
dW5jdGlvbihlKSB7Ci0gICAgICAgICAgICByZXR1cm4gISFlICYmICgic3RyaW5nIiA9PSB0eXBl
b2YgZSA/IGx0LnRlc3QoZSkgPyBiKGUsIHRoaXMuY29udGV4dCkuaW5kZXgodGhpc1swXSkgPj0g
MCA6IGIuZmlsdGVyKGUsIHRoaXMpLmxlbmd0aCA+IDAgOiB0aGlzLmZpbHRlcihlKS5sZW5ndGgg
PiAwKQotICAgICAgICB9LAotICAgICAgICBjbG9zZXN0OiBmdW5jdGlvbihlLCB0KSB7Ci0gICAg
ICAgICAgICB2YXIgbiwKLSAgICAgICAgICAgICAgICByID0gMCwKLSAgICAgICAgICAgICAgICBp
ID0gdGhpcy5sZW5ndGgsCi0gICAgICAgICAgICAgICAgbyA9IFtdLAotICAgICAgICAgICAgICAg
IGEgPSBsdC50ZXN0KGUpIHx8ICJzdHJpbmciICE9IHR5cGVvZiBlID8gYihlLCB0IHx8IHRoaXMu
Y29udGV4dCkgOiAwOwotICAgICAgICAgICAgZm9yICg7IGkgPiByOyByKyspIHsKLSAgICAgICAg
ICAgICAgICBuID0gdGhpc1tyXTsKLSAgICAgICAgICAgICAgICB3aGlsZSAobiAmJiBuLm93bmVy
RG9jdW1lbnQgJiYgbiAhPT0gdCAmJiAxMSAhPT0gbi5ub2RlVHlwZSkgewotICAgICAgICAgICAg
ICAgICAgICBpZiAoYSA/IGEuaW5kZXgobikgPiAtMSA6IGIuZmluZC5tYXRjaGVzU2VsZWN0b3Io
biwgZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG8ucHVzaChuKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgbiA9IG4ucGFyZW50Tm9kZQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayhvLmxlbmd0aCA+IDEgPyBiLnVuaXF1
ZShvKSA6IG8pCi0gICAgICAgIH0sCi0gICAgICAgIGluZGV4OiBmdW5jdGlvbihlKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gZSA/ICJzdHJpbmciID09IHR5cGVvZiBlID8gYi5pbkFycmF5KHRoaXNb
MF0sIGIoZSkpIDogYi5pbkFycmF5KGUuanF1ZXJ5ID8gZVswXSA6IGUsIHRoaXMpIDogdGhpc1sw
XSAmJiB0aGlzWzBdLnBhcmVudE5vZGUgPyB0aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aCA6
IC0xCi0gICAgICAgIH0sCi0gICAgICAgIGFkZDogZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAg
ICAgdmFyIG4gPSAic3RyaW5nIiA9PSB0eXBlb2YgZSA/IGIoZSwgdCkgOiBiLm1ha2VBcnJheShl
ICYmIGUubm9kZVR5cGUgPyBbZV0gOiBlKSwKLSAgICAgICAgICAgICAgICByID0gYi5tZXJnZSh0
aGlzLmdldCgpLCBuKTsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayhiLnVuaXF1
ZShyKSkKLSAgICAgICAgfSwKLSAgICAgICAgYWRkQmFjazogZnVuY3Rpb24oZSkgewotICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuYWRkKG51bGwgPT0gZSA/IHRoaXMucHJldk9iamVjdCA6IHRoaXMu
cHJldk9iamVjdC5maWx0ZXIoZSkpCi0gICAgICAgIH0KLSAgICB9KSwKLSAgICBiLmZuLmFuZFNl
bGYgPSBiLmZuLmFkZEJhY2s7Ci0gICAgZnVuY3Rpb24gcHQoZSwgdCkgewotICAgICAgICBkbyBl
ID0gZVt0XTsKLSAgICAgICAgd2hpbGUgKGUgJiYgMSAhPT0gZS5ub2RlVHlwZSk7Ci0gICAgICAg
IHJldHVybiBlCi0gICAgfQotICAgIGIuZWFjaCh7Ci0gICAgICAgIHBhcmVudDogZnVuY3Rpb24o
ZSkgewotICAgICAgICAgICAgdmFyIHQgPSBlLnBhcmVudE5vZGU7Ci0gICAgICAgICAgICByZXR1
cm4gdCAmJiAxMSAhPT0gdC5ub2RlVHlwZSA/IHQgOiBudWxsCi0gICAgICAgIH0sCi0gICAgICAg
IHBhcmVudHM6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHJldHVybiBiLmRpcihlLCAicGFy
ZW50Tm9kZSIpCi0gICAgICAgIH0sCi0gICAgICAgIHBhcmVudHNVbnRpbDogZnVuY3Rpb24oZSwg
dCwgbikgewotICAgICAgICAgICAgcmV0dXJuIGIuZGlyKGUsICJwYXJlbnROb2RlIiwgbikKLSAg
ICAgICAgfSwKLSAgICAgICAgbmV4dDogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgcmV0dXJu
IHB0KGUsICJuZXh0U2libGluZyIpCi0gICAgICAgIH0sCi0gICAgICAgIHByZXY6IGZ1bmN0aW9u
KGUpIHsKLSAgICAgICAgICAgIHJldHVybiBwdChlLCAicHJldmlvdXNTaWJsaW5nIikKLSAgICAg
ICAgfSwKLSAgICAgICAgbmV4dEFsbDogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgcmV0dXJu
IGIuZGlyKGUsICJuZXh0U2libGluZyIpCi0gICAgICAgIH0sCi0gICAgICAgIHByZXZBbGw6IGZ1
bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHJldHVybiBiLmRpcihlLCAicHJldmlvdXNTaWJsaW5n
IikKLSAgICAgICAgfSwKLSAgICAgICAgbmV4dFVudGlsOiBmdW5jdGlvbihlLCB0LCBuKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gYi5kaXIoZSwgIm5leHRTaWJsaW5nIiwgbikKLSAgICAgICAgfSwK
LSAgICAgICAgcHJldlVudGlsOiBmdW5jdGlvbihlLCB0LCBuKSB7Ci0gICAgICAgICAgICByZXR1
cm4gYi5kaXIoZSwgInByZXZpb3VzU2libGluZyIsIG4pCi0gICAgICAgIH0sCi0gICAgICAgIHNp
YmxpbmdzOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICByZXR1cm4gYi5zaWJsaW5nKChlLnBh
cmVudE5vZGUgfHwge30pLmZpcnN0Q2hpbGQsIGUpCi0gICAgICAgIH0sCi0gICAgICAgIGNoaWxk
cmVuOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICByZXR1cm4gYi5zaWJsaW5nKGUuZmlyc3RD
aGlsZCkKLSAgICAgICAgfSwKLSAgICAgICAgY29udGVudHM6IGZ1bmN0aW9uKGUpIHsKLSAgICAg
ICAgICAgIHJldHVybiBiLm5vZGVOYW1lKGUsICJpZnJhbWUiKSA/IGUuY29udGVudERvY3VtZW50
IHx8IGUuY29udGVudFdpbmRvdy5kb2N1bWVudCA6IGIubWVyZ2UoW10sIGUuY2hpbGROb2RlcykK
LSAgICAgICAgfQotICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgYi5mbltlXSA9IGZ1
bmN0aW9uKG4sIHIpIHsKLSAgICAgICAgICAgIHZhciBpID0gYi5tYXAodGhpcywgdCwgbik7Ci0g
ICAgICAgICAgICByZXR1cm4gYXQudGVzdChlKSB8fCAociA9IG4pLCByICYmICJzdHJpbmciID09
IHR5cGVvZiByICYmIChpID0gYi5maWx0ZXIociwgaSkpLCBpID0gdGhpcy5sZW5ndGggPiAxICYm
ICFjdFtlXSA/IGIudW5pcXVlKGkpIDogaSwgdGhpcy5sZW5ndGggPiAxICYmIHN0LnRlc3QoZSkg
JiYgKGkgPSBpLnJldmVyc2UoKSksIHRoaXMucHVzaFN0YWNrKGkpCi0gICAgICAgIH0KLSAgICB9
KSwKLSAgICBiLmV4dGVuZCh7Ci0gICAgICAgIGZpbHRlcjogZnVuY3Rpb24oZSwgdCwgbikgewot
ICAgICAgICAgICAgcmV0dXJuIG4gJiYgKGUgPSAiOm5vdCgiICsgZSArICIpIiksIDEgPT09IHQu
bGVuZ3RoID8gYi5maW5kLm1hdGNoZXNTZWxlY3Rvcih0WzBdLCBlKSA/IFt0WzBdXSA6IFtdIDog
Yi5maW5kLm1hdGNoZXMoZSwgdCkKLSAgICAgICAgfSwKLSAgICAgICAgZGlyOiBmdW5jdGlvbihl
LCBuLCByKSB7Ci0gICAgICAgICAgICB2YXIgaSA9IFtdLAotICAgICAgICAgICAgICAgIG8gPSBl
W25dOwotICAgICAgICAgICAgd2hpbGUgKG8gJiYgOSAhPT0gby5ub2RlVHlwZSAmJiAociA9PT0g
dCB8fCAxICE9PSBvLm5vZGVUeXBlIHx8ICFiKG8pLmlzKHIpKSkKLSAgICAgICAgICAgICAgICAx
ID09PSBvLm5vZGVUeXBlICYmIGkucHVzaChvKSwKLSAgICAgICAgICAgICAgICBvID0gb1tuXTsK
LSAgICAgICAgICAgIHJldHVybiBpCi0gICAgICAgIH0sCi0gICAgICAgIHNpYmxpbmc6IGZ1bmN0
aW9uKGUsIHQpIHsKLSAgICAgICAgICAgIHZhciBuID0gW107Ci0gICAgICAgICAgICBmb3IgKDsg
ZTsgZSA9IGUubmV4dFNpYmxpbmcpCi0gICAgICAgICAgICAgICAgMSA9PT0gZS5ub2RlVHlwZSAm
JiBlICE9PSB0ICYmIG4ucHVzaChlKTsKLSAgICAgICAgICAgIHJldHVybiBuCi0gICAgICAgIH0K
LSAgICB9KTsKLSAgICBmdW5jdGlvbiBmdChlLCB0LCBuKSB7Ci0gICAgICAgIGlmICh0ID0gdCB8
fCAwLCBiLmlzRnVuY3Rpb24odCkpCi0gICAgICAgICAgICByZXR1cm4gYi5ncmVwKGUsIGZ1bmN0
aW9uKGUsIHIpIHsKLSAgICAgICAgICAgICAgICB2YXIgaSA9ICEhdC5jYWxsKGUsIHIsIGUpOwot
ICAgICAgICAgICAgICAgIHJldHVybiBpID09PSBuCi0gICAgICAgICAgICB9KTsKLSAgICAgICAg
aWYgKHQubm9kZVR5cGUpCi0gICAgICAgICAgICByZXR1cm4gYi5ncmVwKGUsIGZ1bmN0aW9uKGUp
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZSA9PT0gdCA9PT0gbgotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgdCkgewotICAgICAgICAgICAgdmFyIHIg
PSBiLmdyZXAoZSwgZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgIHJldHVybiAxID09PSBl
Lm5vZGVUeXBlCi0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGlmICh1dC50ZXN0KHQpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBiLmZpbHRlcih0LCByLCAhbik7Ci0gICAgICAgICAgICB0
ID0gYi5maWx0ZXIodCwgcikKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gYi5ncmVwKGUsIGZ1
bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHJldHVybiBiLmluQXJyYXkoZSwgdCkgPj0gMCA9PT0g
bgotICAgICAgICB9KQotICAgIH0KLSAgICBmdW5jdGlvbiBkdChlKSB7Ci0gICAgICAgIHZhciB0
ID0gaHQuc3BsaXQoInwiKSwKLSAgICAgICAgICAgIG4gPSBlLmNyZWF0ZURvY3VtZW50RnJhZ21l
bnQoKTsKLSAgICAgICAgaWYgKG4uY3JlYXRlRWxlbWVudCkKLSAgICAgICAgICAgIHdoaWxlICh0
Lmxlbmd0aCkKLSAgICAgICAgICAgICAgICBuLmNyZWF0ZUVsZW1lbnQodC5wb3AoKSk7Ci0gICAg
ICAgIHJldHVybiBuCi0gICAgfQotICAgIHZhciBodCA9ICJhYmJyfGFydGljbGV8YXNpZGV8YXVk
aW98YmRpfGNhbnZhc3xkYXRhfGRhdGFsaXN0fGRldGFpbHN8ZmlnY2FwdGlvbnxmaWd1cmV8Zm9v
dGVyfGhlYWRlcnxoZ3JvdXB8bWFya3xtZXRlcnxuYXZ8b3V0cHV0fHByb2dyZXNzfHNlY3Rpb258
c3VtbWFyeXx0aW1lfHZpZGVvIiwKLSAgICAgICAgZ3QgPSAvIGpRdWVyeVxkKz0iKD86bnVsbHxc
ZCspIi9nLAotICAgICAgICBtdCA9IFJlZ0V4cCgiPCg/OiIgKyBodCArICIpW1xccy8+XSIsICJp
IiksCi0gICAgICAgIHl0ID0gL15ccysvLAotICAgICAgICB2dCA9IC88KD8hYXJlYXxicnxjb2x8
ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5dKilcLz4vZ2ks
Ci0gICAgICAgIGJ0ID0gLzwoW1x3Ol0rKS8sCi0gICAgICAgIHh0ID0gLzx0Ym9keS9pLAotICAg
ICAgICB3dCA9IC88fCYjP1x3KzsvLAotICAgICAgICBUdCA9IC88KD86c2NyaXB0fHN0eWxlfGxp
bmspL2ksCi0gICAgICAgIE50ID0gL14oPzpjaGVja2JveHxyYWRpbykkL2ksCi0gICAgICAgIEN0
ID0gL2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksCi0gICAgICAgIGt0ID0gL14k
fFwvKD86amF2YXxlY21hKXNjcmlwdC9pLAotICAgICAgICBFdCA9IC9edHJ1ZVwvKC4qKS8sCi0g
ICAgICAgIFN0ID0gL15ccyo8ISg/OlxbQ0RBVEFcW3wtLSl8KD86XF1cXXwtLSk+XHMqJC9nLAot
ICAgICAgICBBdCA9IHsKLSAgICAgICAgICAgIG9wdGlvbjogWzEsICI8c2VsZWN0IG11bHRpcGxl
PSdtdWx0aXBsZSc+IiwgIjwvc2VsZWN0PiJdLAotICAgICAgICAgICAgbGVnZW5kOiBbMSwgIjxm
aWVsZHNldD4iLCAiPC9maWVsZHNldD4iXSwKLSAgICAgICAgICAgIGFyZWE6IFsxLCAiPG1hcD4i
LCAiPC9tYXA+Il0sCi0gICAgICAgICAgICBwYXJhbTogWzEsICI8b2JqZWN0PiIsICI8L29iamVj
dD4iXSwKLSAgICAgICAgICAgIHRoZWFkOiBbMSwgIjx0YWJsZT4iLCAiPC90YWJsZT4iXSwKLSAg
ICAgICAgICAgIHRyOiBbMiwgIjx0YWJsZT48dGJvZHk+IiwgIjwvdGJvZHk+PC90YWJsZT4iXSwK
LSAgICAgICAgICAgIGNvbDogWzIsICI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPiIs
ICI8L2NvbGdyb3VwPjwvdGFibGU+Il0sCi0gICAgICAgICAgICB0ZDogWzMsICI8dGFibGU+PHRi
b2R5Pjx0cj4iLCAiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sCi0gICAgICAgICAgICBfZGVmYXVs
dDogYi5zdXBwb3J0Lmh0bWxTZXJpYWxpemUgPyBbMCwgIiIsICIiXSA6IFsxLCAiWDxkaXY+Iiwg
IjwvZGl2PiJdCi0gICAgICAgIH0sCi0gICAgICAgIGp0ID0gZHQobyksCi0gICAgICAgIER0ID0g
anQuYXBwZW5kQ2hpbGQoby5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Ci0gICAgQXQub3B0Z3JvdXAg
PSBBdC5vcHRpb24sCi0gICAgQXQudGJvZHkgPSBBdC50Zm9vdCA9IEF0LmNvbGdyb3VwID0gQXQu
Y2FwdGlvbiA9IEF0LnRoZWFkLAotICAgIEF0LnRoID0gQXQudGQsCi0gICAgYi5mbi5leHRlbmQo
ewotICAgICAgICB0ZXh0OiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICByZXR1cm4gYi5hY2Nl
c3ModGhpcywgZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgIHJldHVybiBlID09PSB0ID8g
Yi50ZXh0KHRoaXMpIDogdGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSAmJiB0aGlzWzBdLm93
bmVyRG9jdW1lbnQgfHwgbykuY3JlYXRlVGV4dE5vZGUoZSkpCi0gICAgICAgICAgICB9LCBudWxs
LCBlLCBhcmd1bWVudHMubGVuZ3RoKQotICAgICAgICB9LAotICAgICAgICB3cmFwQWxsOiBmdW5j
dGlvbihlKSB7Ci0gICAgICAgICAgICBpZiAoYi5pc0Z1bmN0aW9uKGUpKQotICAgICAgICAgICAg
ICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24odCkgewotICAgICAgICAgICAgICAgICAgICBi
KHRoaXMpLndyYXBBbGwoZS5jYWxsKHRoaXMsIHQpKQotICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgaWYgKHRoaXNbMF0pIHsKLSAgICAgICAgICAgICAgICB2YXIgdCA9IGIoZSwgdGhp
c1swXS5vd25lckRvY3VtZW50KS5lcSgwKS5jbG9uZSghMCk7Ci0gICAgICAgICAgICAgICAgdGhp
c1swXS5wYXJlbnROb2RlICYmIHQuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLAotICAgICAgICAgICAg
ICAgIHQubWFwKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7
Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlIChlLmZpcnN0Q2hpbGQgJiYgMSA9PT0gZS5maXJz
dENoaWxkLm5vZGVUeXBlKQotICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGUuZmlyc3RDaGls
ZDsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKLSAgICAgICAgICAgICAgICB9KS5hcHBl
bmQodGhpcykKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0aGlzCi0gICAgICAg
IH0sCi0gICAgICAgIHdyYXBJbm5lcjogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgcmV0dXJu
IGIuaXNGdW5jdGlvbihlKSA/IHRoaXMuZWFjaChmdW5jdGlvbih0KSB7Ci0gICAgICAgICAgICAg
ICAgYih0aGlzKS53cmFwSW5uZXIoZS5jYWxsKHRoaXMsIHQpKQotICAgICAgICAgICAgfSkgOiB0
aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHQgPSBiKHRoaXMpLAot
ICAgICAgICAgICAgICAgICAgICBuID0gdC5jb250ZW50cygpOwotICAgICAgICAgICAgICAgIG4u
bGVuZ3RoID8gbi53cmFwQWxsKGUpIDogdC5hcHBlbmQoZSkKLSAgICAgICAgICAgIH0pCi0gICAg
ICAgIH0sCi0gICAgICAgIHdyYXA6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHZhciB0ID0g
Yi5pc0Z1bmN0aW9uKGUpOwotICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihu
KSB7Ci0gICAgICAgICAgICAgICAgYih0aGlzKS53cmFwQWxsKHQgPyBlLmNhbGwodGhpcywgbikg
OiBlKQotICAgICAgICAgICAgfSkKLSAgICAgICAgfSwKLSAgICAgICAgdW53cmFwOiBmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudCgpLmVhY2goZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICAgICAgYi5ub2RlTmFtZSh0aGlzLCAiYm9keSIpIHx8IGIodGhpcykucmVw
bGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKQotICAgICAgICAgICAgfSkuZW5kKCkKLSAgICAgICAg
fSwKLSAgICAgICAgYXBwZW5kOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlz
LmRvbU1hbmlwKGFyZ3VtZW50cywgITAsIGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAo
MSA9PT0gdGhpcy5ub2RlVHlwZSB8fCAxMSA9PT0gdGhpcy5ub2RlVHlwZSB8fCA5ID09PSB0aGlz
Lm5vZGVUeXBlKSAmJiB0aGlzLmFwcGVuZENoaWxkKGUpCi0gICAgICAgICAgICB9KQotICAgICAg
ICB9LAotICAgICAgICBwcmVwZW5kOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiB0
aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywgITAsIGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAg
ICAoMSA9PT0gdGhpcy5ub2RlVHlwZSB8fCAxMSA9PT0gdGhpcy5ub2RlVHlwZSB8fCA5ID09PSB0
aGlzLm5vZGVUeXBlKSAmJiB0aGlzLmluc2VydEJlZm9yZShlLCB0aGlzLmZpcnN0Q2hpbGQpCi0g
ICAgICAgICAgICB9KQotICAgICAgICB9LAotICAgICAgICBiZWZvcmU6IGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCAhMSwgZnVuY3Rpb24o
ZSkgewotICAgICAgICAgICAgICAgIHRoaXMucGFyZW50Tm9kZSAmJiB0aGlzLnBhcmVudE5vZGUu
aW5zZXJ0QmVmb3JlKGUsIHRoaXMpCi0gICAgICAgICAgICB9KQotICAgICAgICB9LAotICAgICAg
ICBhZnRlcjogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5kb21NYW5pcChh
cmd1bWVudHMsICExLCBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRO
b2RlICYmIHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSwgdGhpcy5uZXh0U2libGluZykK
LSAgICAgICAgICAgIH0pCi0gICAgICAgIH0sCi0gICAgICAgIHJlbW92ZTogZnVuY3Rpb24oZSwg
dCkgewotICAgICAgICAgICAgdmFyIG4sCi0gICAgICAgICAgICAgICAgciA9IDA7Ci0gICAgICAg
ICAgICBmb3IgKDsgbnVsbCAhPSAobiA9IHRoaXNbcl0pOyByKyspCi0gICAgICAgICAgICAgICAg
KCFlIHx8IGIuZmlsdGVyKGUsIFtuXSkubGVuZ3RoID4gMCkgJiYgKHQgfHwgMSAhPT0gbi5ub2Rl
VHlwZSB8fCBiLmNsZWFuRGF0YShPdChuKSksIG4ucGFyZW50Tm9kZSAmJiAodCAmJiBiLmNvbnRh
aW5zKG4ub3duZXJEb2N1bWVudCwgbikgJiYgTXQoT3QobiwgInNjcmlwdCIpKSwgbi5wYXJlbnRO
b2RlLnJlbW92ZUNoaWxkKG4pKSk7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcwotICAgICAgICB9
LAotICAgICAgICBlbXB0eTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB2YXIgZSwKLSAgICAg
ICAgICAgICAgICB0ID0gMDsKLSAgICAgICAgICAgIGZvciAoOyBudWxsICE9IChlID0gdGhpc1t0
XSk7IHQrKykgewotICAgICAgICAgICAgICAgIDEgPT09IGUubm9kZVR5cGUgJiYgYi5jbGVhbkRh
dGEoT3QoZSwgITEpKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoZS5maXJzdENoaWxkKQotICAg
ICAgICAgICAgICAgICAgICBlLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGlsZCk7Ci0gICAgICAgICAg
ICAgICAgZS5vcHRpb25zICYmIGIubm9kZU5hbWUoZSwgInNlbGVjdCIpICYmIChlLm9wdGlvbnMu
bGVuZ3RoID0gMCkKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0aGlzCi0gICAg
ICAgIH0sCi0gICAgICAgIGNsb25lOiBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICByZXR1
cm4gZSA9IG51bGwgPT0gZSA/ICExIDogZSwgdCA9IG51bGwgPT0gdCA/IGUgOiB0LCB0aGlzLm1h
cChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYi5jbG9uZSh0aGlzLCBlLCB0
KQotICAgICAgICAgICAgfSkKLSAgICAgICAgfSwKLSAgICAgICAgaHRtbDogZnVuY3Rpb24oZSkg
ewotICAgICAgICAgICAgcmV0dXJuIGIuYWNjZXNzKHRoaXMsIGZ1bmN0aW9uKGUpIHsKLSAgICAg
ICAgICAgICAgICB2YXIgbiA9IHRoaXNbMF0gfHwge30sCi0gICAgICAgICAgICAgICAgICAgIHIg
PSAwLAotICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5sZW5ndGg7Ci0gICAgICAgICAgICAg
ICAgaWYgKGUgPT09IHQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAxID09PSBuLm5vZGVU
eXBlID8gbi5pbm5lckhUTUwucmVwbGFjZShndCwgIiIpIDogdDsKLSAgICAgICAgICAgICAgICBp
ZiAoISgic3RyaW5nIiAhPSB0eXBlb2YgZSB8fCBUdC50ZXN0KGUpIHx8ICFiLnN1cHBvcnQuaHRt
bFNlcmlhbGl6ZSAmJiBtdC50ZXN0KGUpIHx8ICFiLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2Ug
JiYgeXQudGVzdChlKSB8fCBBdFsoYnQuZXhlYyhlKSB8fCBbIiIsICIiXSlbMV0udG9Mb3dlckNh
c2UoKV0pKSB7Ci0gICAgICAgICAgICAgICAgICAgIGUgPSBlLnJlcGxhY2UodnQsICI8JDE+PC8k
Mj4iKTsKLSAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGZvciAoOyBpID4gcjsgcisrKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlz
W3JdIHx8IHt9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPT09IG4ubm9kZVR5cGUg
JiYgKGIuY2xlYW5EYXRhKE90KG4sICExKSksIG4uaW5uZXJIVE1MID0gZSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBuID0gMAotICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChvKSB7fQot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBuICYmIHRoaXMuZW1wdHkoKS5hcHBl
bmQoZSkKLSAgICAgICAgICAgIH0sIG51bGwsIGUsIGFyZ3VtZW50cy5sZW5ndGgpCi0gICAgICAg
IH0sCi0gICAgICAgIHJlcGxhY2VXaXRoOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICB2YXIg
dCA9IGIuaXNGdW5jdGlvbihlKTsKLSAgICAgICAgICAgIHJldHVybiB0IHx8ICJzdHJpbmciID09
IHR5cGVvZiBlIHx8IChlID0gYihlKS5ub3QodGhpcykuZGV0YWNoKCkpLCB0aGlzLmRvbU1hbmlw
KFtlXSwgITAsIGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMubmV4
dFNpYmxpbmcsCi0gICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLnBhcmVudE5vZGU7Ci0gICAg
ICAgICAgICAgICAgbiAmJiAoYih0aGlzKS5yZW1vdmUoKSwgbi5pbnNlcnRCZWZvcmUoZSwgdCkp
Ci0gICAgICAgICAgICB9KQotICAgICAgICB9LAotICAgICAgICBkZXRhY2g6IGZ1bmN0aW9uKGUp
IHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbW92ZShlLCAhMCkKLSAgICAgICAgfSwKLSAg
ICAgICAgZG9tTWFuaXA6IGZ1bmN0aW9uKGUsIG4sIHIpIHsKLSAgICAgICAgICAgIGUgPSBmLmFw
cGx5KFtdLCBlKTsKLSAgICAgICAgICAgIHZhciBpLAotICAgICAgICAgICAgICAgIG8sCi0gICAg
ICAgICAgICAgICAgYSwKLSAgICAgICAgICAgICAgICBzLAotICAgICAgICAgICAgICAgIHUsCi0g
ICAgICAgICAgICAgICAgbCwKLSAgICAgICAgICAgICAgICBjID0gMCwKLSAgICAgICAgICAgICAg
ICBwID0gdGhpcy5sZW5ndGgsCi0gICAgICAgICAgICAgICAgZCA9IHRoaXMsCi0gICAgICAgICAg
ICAgICAgaCA9IHAgLSAxLAotICAgICAgICAgICAgICAgIGcgPSBlWzBdLAotICAgICAgICAgICAg
ICAgIG0gPSBiLmlzRnVuY3Rpb24oZyk7Ci0gICAgICAgICAgICBpZiAobSB8fCAhKDEgPj0gcCB8
fCAic3RyaW5nIiAhPSB0eXBlb2YgZyB8fCBiLnN1cHBvcnQuY2hlY2tDbG9uZSkgJiYgQ3QudGVz
dChnKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgdmFyIG8gPSBkLmVxKGkpOwotICAgICAgICAgICAgICAgICAgICBt
ICYmIChlWzBdID0gZy5jYWxsKHRoaXMsIGksIG4gPyBvLmh0bWwoKSA6IHQpKSwKLSAgICAgICAg
ICAgICAgICAgICAgby5kb21NYW5pcChlLCBuLCByKQotICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgaWYgKHAgJiYgKGwgPSBiLmJ1aWxkRnJhZ21lbnQoZSwgdGhpc1swXS5vd25lckRv
Y3VtZW50LCAhMSwgdGhpcyksIGkgPSBsLmZpcnN0Q2hpbGQsIDEgPT09IGwuY2hpbGROb2Rlcy5s
ZW5ndGggJiYgKGwgPSBpKSwgaSkpIHsKLSAgICAgICAgICAgICAgICBmb3IgKG4gPSBuICYmIGIu
bm9kZU5hbWUoaSwgInRyIiksIHMgPSBiLm1hcChPdChsLCAic2NyaXB0IiksIEh0KSwgYSA9IHMu
bGVuZ3RoOyBwID4gYzsgYysrKQotICAgICAgICAgICAgICAgICAgICBvID0gbCwKLSAgICAgICAg
ICAgICAgICAgICAgYyAhPT0gaCAmJiAobyA9IGIuY2xvbmUobywgITAsICEwKSwgYSAmJiBiLm1l
cmdlKHMsIE90KG8sICJzY3JpcHQiKSkpLAotICAgICAgICAgICAgICAgICAgICByLmNhbGwobiAm
JiBiLm5vZGVOYW1lKHRoaXNbY10sICJ0YWJsZSIpID8gTHQodGhpc1tjXSwgInRib2R5IikgOiB0
aGlzW2NdLCBvLCBjKTsKLSAgICAgICAgICAgICAgICBpZiAoYSkKLSAgICAgICAgICAgICAgICAg
ICAgZm9yICh1ID0gc1tzLmxlbmd0aCAtIDFdLm93bmVyRG9jdW1lbnQsIGIubWFwKHMsIHF0KSwg
YyA9IDA7IGEgPiBjOyBjKyspCi0gICAgICAgICAgICAgICAgICAgICAgICBvID0gc1tjXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGt0LnRlc3Qoby50eXBlIHx8ICIiKSAmJiAhYi5fZGF0YShv
LCAiZ2xvYmFsRXZhbCIpICYmIGIuY29udGFpbnModSwgbykgJiYgKG8uc3JjID8gYi5hamF4KHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IG8uc3JjLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHR5cGU6ICJHRVQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGFUeXBlOiAic2NyaXB0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3luYzogITEs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsOiAhMSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAidGhyb3dzIjogITAKLSAgICAgICAgICAgICAgICAgICAgICAgIH0pIDog
Yi5nbG9iYWxFdmFsKChvLnRleHQgfHwgby50ZXh0Q29udGVudCB8fCBvLmlubmVySFRNTCB8fCAi
IikucmVwbGFjZShTdCwgIiIpKSk7Ci0gICAgICAgICAgICAgICAgbCA9IGkgPSBudWxsCi0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdGhpcwotICAgICAgICB9Ci0gICAgfSk7Ci0g
ICAgZnVuY3Rpb24gTHQoZSwgdCkgewotICAgICAgICByZXR1cm4gZS5nZXRFbGVtZW50c0J5VGFn
TmFtZSh0KVswXSB8fCBlLmFwcGVuZENoaWxkKGUub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50
KHQpKQotICAgIH0KLSAgICBmdW5jdGlvbiBIdChlKSB7Ci0gICAgICAgIHZhciB0ID0gZS5nZXRB
dHRyaWJ1dGVOb2RlKCJ0eXBlIik7Ci0gICAgICAgIHJldHVybiBlLnR5cGUgPSAodCAmJiB0LnNw
ZWNpZmllZCkgKyAiLyIgKyBlLnR5cGUsIGUKLSAgICB9Ci0gICAgZnVuY3Rpb24gcXQoZSkgewot
ICAgICAgICB2YXIgdCA9IEV0LmV4ZWMoZS50eXBlKTsKLSAgICAgICAgcmV0dXJuIHQgPyBlLnR5
cGUgPSB0WzFdIDogZS5yZW1vdmVBdHRyaWJ1dGUoInR5cGUiKSwgZQotICAgIH0KLSAgICBmdW5j
dGlvbiBNdChlLCB0KSB7Ci0gICAgICAgIHZhciBuLAotICAgICAgICAgICAgciA9IDA7Ci0gICAg
ICAgIGZvciAoOyBudWxsICE9IChuID0gZVtyXSk7IHIrKykKLSAgICAgICAgICAgIGIuX2RhdGEo
biwgImdsb2JhbEV2YWwiLCAhdCB8fCBiLl9kYXRhKHRbcl0sICJnbG9iYWxFdmFsIikpCi0gICAg
fQotICAgIGZ1bmN0aW9uIF90KGUsIHQpIHsKLSAgICAgICAgaWYgKDEgPT09IHQubm9kZVR5cGUg
JiYgYi5oYXNEYXRhKGUpKSB7Ci0gICAgICAgICAgICB2YXIgbiwKLSAgICAgICAgICAgICAgICBy
LAotICAgICAgICAgICAgICAgIGksCi0gICAgICAgICAgICAgICAgbyA9IGIuX2RhdGEoZSksCi0g
ICAgICAgICAgICAgICAgYSA9IGIuX2RhdGEodCwgbyksCi0gICAgICAgICAgICAgICAgcyA9IG8u
ZXZlbnRzOwotICAgICAgICAgICAgaWYgKHMpIHsKLSAgICAgICAgICAgICAgICBkZWxldGUgYS5o
YW5kbGUsCi0gICAgICAgICAgICAgICAgYS5ldmVudHMgPSB7fTsKLSAgICAgICAgICAgICAgICBm
b3IgKG4gaW4gcykKLSAgICAgICAgICAgICAgICAgICAgZm9yIChyID0gMCwgaSA9IHNbbl0ubGVu
Z3RoOyBpID4gcjsgcisrKQotICAgICAgICAgICAgICAgICAgICAgICAgYi5ldmVudC5hZGQodCwg
biwgc1tuXVtyXSkKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGEuZGF0YSAmJiAoYS5kYXRh
ID0gYi5leHRlbmQoe30sIGEuZGF0YSkpCi0gICAgICAgIH0KLSAgICB9Ci0gICAgZnVuY3Rpb24g
RnQoZSwgdCkgewotICAgICAgICB2YXIgbiwKLSAgICAgICAgICAgIHIsCi0gICAgICAgICAgICBp
OwotICAgICAgICBpZiAoMSA9PT0gdC5ub2RlVHlwZSkgewotICAgICAgICAgICAgaWYgKG4gPSB0
Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksICFiLnN1cHBvcnQubm9DbG9uZUV2ZW50ICYmIHRbYi5l
eHBhbmRvXSkgewotICAgICAgICAgICAgICAgIGkgPSBiLl9kYXRhKHQpOwotICAgICAgICAgICAg
ICAgIGZvciAociBpbiBpLmV2ZW50cykKLSAgICAgICAgICAgICAgICAgICAgYi5yZW1vdmVFdmVu
dCh0LCByLCBpLmhhbmRsZSk7Ci0gICAgICAgICAgICAgICAgdC5yZW1vdmVBdHRyaWJ1dGUoYi5l
eHBhbmRvKQotICAgICAgICAgICAgfQotICAgICAgICAgICAgInNjcmlwdCIgPT09IG4gJiYgdC50
ZXh0ICE9PSBlLnRleHQgPyAoSHQodCkudGV4dCA9IGUudGV4dCwgcXQodCkpIDogIm9iamVjdCIg
PT09IG4gPyAodC5wYXJlbnROb2RlICYmICh0Lm91dGVySFRNTCA9IGUub3V0ZXJIVE1MKSwgYi5z
dXBwb3J0Lmh0bWw1Q2xvbmUgJiYgZS5pbm5lckhUTUwgJiYgIWIudHJpbSh0LmlubmVySFRNTCkg
JiYgKHQuaW5uZXJIVE1MID0gZS5pbm5lckhUTUwpKSA6ICJpbnB1dCIgPT09IG4gJiYgTnQudGVz
dChlLnR5cGUpID8gKHQuZGVmYXVsdENoZWNrZWQgPSB0LmNoZWNrZWQgPSBlLmNoZWNrZWQsIHQu
dmFsdWUgIT09IGUudmFsdWUgJiYgKHQudmFsdWUgPSBlLnZhbHVlKSkgOiAib3B0aW9uIiA9PT0g
biA/IHQuZGVmYXVsdFNlbGVjdGVkID0gdC5zZWxlY3RlZCA9IGUuZGVmYXVsdFNlbGVjdGVkIDog
KCJpbnB1dCIgPT09IG4gfHwgInRleHRhcmVhIiA9PT0gbikgJiYgKHQuZGVmYXVsdFZhbHVlID0g
ZS5kZWZhdWx0VmFsdWUpCi0gICAgICAgIH0KLSAgICB9Ci0gICAgYi5lYWNoKHsKLSAgICAgICAg
YXBwZW5kVG86ICJhcHBlbmQiLAotICAgICAgICBwcmVwZW5kVG86ICJwcmVwZW5kIiwKLSAgICAg
ICAgaW5zZXJ0QmVmb3JlOiAiYmVmb3JlIiwKLSAgICAgICAgaW5zZXJ0QWZ0ZXI6ICJhZnRlciIs
Ci0gICAgICAgIHJlcGxhY2VBbGw6ICJyZXBsYWNlV2l0aCIKLSAgICB9LCBmdW5jdGlvbihlLCB0
KSB7Ci0gICAgICAgIGIuZm5bZV0gPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICB2YXIgbiwK
LSAgICAgICAgICAgICAgICByID0gMCwKLSAgICAgICAgICAgICAgICBpID0gW10sCi0gICAgICAg
ICAgICAgICAgbyA9IGIoZSksCi0gICAgICAgICAgICAgICAgYSA9IG8ubGVuZ3RoIC0gMTsKLSAg
ICAgICAgICAgIGZvciAoOyBhID49IHI7IHIrKykKLSAgICAgICAgICAgICAgICBuID0gciA9PT0g
YSA/IHRoaXMgOiB0aGlzLmNsb25lKCEwKSwKLSAgICAgICAgICAgICAgICBiKG9bcl0pW3RdKG4p
LAotICAgICAgICAgICAgICAgIGQuYXBwbHkoaSwgbi5nZXQoKSk7Ci0gICAgICAgICAgICByZXR1
cm4gdGhpcy5wdXNoU3RhY2soaSkKLSAgICAgICAgfQotICAgIH0pOwotICAgIGZ1bmN0aW9uIE90
KGUsIG4pIHsKLSAgICAgICAgdmFyIHIsCi0gICAgICAgICAgICBvLAotICAgICAgICAgICAgYSA9
IDAsCi0gICAgICAgICAgICBzID0gdHlwZW9mIGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09IGkg
PyBlLmdldEVsZW1lbnRzQnlUYWdOYW1lKG4gfHwgIioiKSA6IHR5cGVvZiBlLnF1ZXJ5U2VsZWN0
b3JBbGwgIT09IGkgPyBlLnF1ZXJ5U2VsZWN0b3JBbGwobiB8fCAiKiIpIDogdDsKLSAgICAgICAg
aWYgKCFzKQotICAgICAgICAgICAgZm9yIChzID0gW10sIHIgPSBlLmNoaWxkTm9kZXMgfHwgZTsg
bnVsbCAhPSAobyA9IHJbYV0pOyBhKyspCi0gICAgICAgICAgICAgICAgIW4gfHwgYi5ub2RlTmFt
ZShvLCBuKSA/IHMucHVzaChvKSA6IGIubWVyZ2UocywgT3QobywgbikpOwotICAgICAgICByZXR1
cm4gbiA9PT0gdCB8fCBuICYmIGIubm9kZU5hbWUoZSwgbikgPyBiLm1lcmdlKFtlXSwgcykgOiBz
Ci0gICAgfQotICAgIGZ1bmN0aW9uIEJ0KGUpIHsKLSAgICAgICAgTnQudGVzdChlLnR5cGUpICYm
IChlLmRlZmF1bHRDaGVja2VkID0gZS5jaGVja2VkKQotICAgIH0KLSAgICBiLmV4dGVuZCh7Ci0g
ICAgICAgIGNsb25lOiBmdW5jdGlvbihlLCB0LCBuKSB7Ci0gICAgICAgICAgICB2YXIgciwKLSAg
ICAgICAgICAgICAgICBpLAotICAgICAgICAgICAgICAgIG8sCi0gICAgICAgICAgICAgICAgYSwK
LSAgICAgICAgICAgICAgICBzLAotICAgICAgICAgICAgICAgIHUgPSBiLmNvbnRhaW5zKGUub3du
ZXJEb2N1bWVudCwgZSk7Ci0gICAgICAgICAgICBpZiAoYi5zdXBwb3J0Lmh0bWw1Q2xvbmUgfHwg
Yi5pc1hNTERvYyhlKSB8fCAhbXQudGVzdCgiPCIgKyBlLm5vZGVOYW1lICsgIj4iKSA/IG8gPSBl
LmNsb25lTm9kZSghMCkgOiAoRHQuaW5uZXJIVE1MID0gZS5vdXRlckhUTUwsIER0LnJlbW92ZUNo
aWxkKG8gPSBEdC5maXJzdENoaWxkKSksICEoYi5zdXBwb3J0Lm5vQ2xvbmVFdmVudCAmJiBiLnN1
cHBvcnQubm9DbG9uZUNoZWNrZWQgfHwgMSAhPT0gZS5ub2RlVHlwZSAmJiAxMSAhPT0gZS5ub2Rl
VHlwZSB8fCBiLmlzWE1MRG9jKGUpKSkKLSAgICAgICAgICAgICAgICBmb3IgKHIgPSBPdChvKSwg
cyA9IE90KGUpLCBhID0gMDsgbnVsbCAhPSAoaSA9IHNbYV0pOyArK2EpCi0gICAgICAgICAgICAg
ICAgICAgIHJbYV0gJiYgRnQoaSwgclthXSk7Ci0gICAgICAgICAgICBpZiAodCkKLSAgICAgICAg
ICAgICAgICBpZiAobikKLSAgICAgICAgICAgICAgICAgICAgZm9yIChzID0gcyB8fCBPdChlKSwg
ciA9IHIgfHwgT3QobyksIGEgPSAwOyBudWxsICE9IChpID0gc1thXSk7IGErKykKLSAgICAgICAg
ICAgICAgICAgICAgICAgIF90KGksIHJbYV0pOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgX3QoZSwgbyk7Ci0gICAgICAgICAgICByZXR1cm4gciA9IE90KG8sICJz
Y3JpcHQiKSwgci5sZW5ndGggPiAwICYmIE10KHIsICF1ICYmIE90KGUsICJzY3JpcHQiKSksIHIg
PSBzID0gaSA9IG51bGwsIG8KLSAgICAgICAgfSwKLSAgICAgICAgYnVpbGRGcmFnbWVudDogZnVu
Y3Rpb24oZSwgdCwgbiwgcikgewotICAgICAgICAgICAgdmFyIGksCi0gICAgICAgICAgICAgICAg
bywKLSAgICAgICAgICAgICAgICBhLAotICAgICAgICAgICAgICAgIHMsCi0gICAgICAgICAgICAg
ICAgdSwKLSAgICAgICAgICAgICAgICBsLAotICAgICAgICAgICAgICAgIGMsCi0gICAgICAgICAg
ICAgICAgcCA9IGUubGVuZ3RoLAotICAgICAgICAgICAgICAgIGYgPSBkdCh0KSwKLSAgICAgICAg
ICAgICAgICBkID0gW10sCi0gICAgICAgICAgICAgICAgaCA9IDA7Ci0gICAgICAgICAgICBmb3Ig
KDsgcCA+IGg7IGgrKykKLSAgICAgICAgICAgICAgICBpZiAobyA9IGVbaF0sIG8gfHwgMCA9PT0g
bykKLSAgICAgICAgICAgICAgICAgICAgaWYgKCJvYmplY3QiID09PSBiLnR5cGUobykpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBiLm1lcmdlKGQsIG8ubm9kZVR5cGUgPyBbb10gOiBvKTsKLSAg
ICAgICAgICAgICAgICAgICAgZWxzZSBpZiAod3QudGVzdChvKSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgcyA9IHMgfHwgZi5hcHBlbmRDaGlsZCh0LmNyZWF0ZUVsZW1lbnQoImRpdiIpKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIHUgPSAoYnQuZXhlYyhvKSB8fCBbIiIsICIiXSlbMV0u
dG9Mb3dlckNhc2UoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBBdFt1XSB8fCBBdC5f
ZGVmYXVsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHMuaW5uZXJIVE1MID0gY1sxXSArIG8u
cmVwbGFjZSh2dCwgIjwkMT48LyQyPiIpICsgY1syXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGkgPSBjWzBdOwotICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGktLSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzID0gcy5sYXN0Q2hpbGQ7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIWIuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSAmJiB5dC50ZXN0KG8pICYmIGQu
cHVzaCh0LmNyZWF0ZVRleHROb2RlKHl0LmV4ZWMobylbMF0pKSwgIWIuc3VwcG9ydC50Ym9keSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAidGFibGUiICE9PSB1IHx8IHh0LnRl
c3QobykgPyAiPHRhYmxlPiIgIT09IGNbMV0gfHwgeHQudGVzdChvKSA/IDAgOiBzIDogcy5maXJz
dENoaWxkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBvICYmIG8uY2hpbGROb2Rl
cy5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGktLSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5ub2RlTmFtZShsID0gby5jaGlsZE5vZGVzW2ld
LCAidGJvZHkiKSAmJiAhbC5jaGlsZE5vZGVzLmxlbmd0aCAmJiBvLnJlbW92ZUNoaWxkKGwpCi0g
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBiLm1lcmdl
KGQsIHMuY2hpbGROb2RlcyksCi0gICAgICAgICAgICAgICAgICAgICAgICBzLnRleHRDb250ZW50
ID0gIiI7Ci0gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocy5maXJzdENoaWxkKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHMucmVtb3ZlQ2hpbGQocy5maXJzdENoaWxkKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHMgPSBmLmxhc3RDaGlsZAotICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh0LmNyZWF0ZVRleHROb2Rl
KG8pKTsKLSAgICAgICAgICAgIHMgJiYgZi5yZW1vdmVDaGlsZChzKSwKLSAgICAgICAgICAgIGIu
c3VwcG9ydC5hcHBlbmRDaGVja2VkIHx8IGIuZ3JlcChPdChkLCAiaW5wdXQiKSwgQnQpLAotICAg
ICAgICAgICAgaCA9IDA7Ci0gICAgICAgICAgICB3aGlsZSAobyA9IGRbaCsrXSkKLSAgICAgICAg
ICAgICAgICBpZiAoKCFyIHx8IC0xID09PSBiLmluQXJyYXkobywgcikpICYmIChhID0gYi5jb250
YWlucyhvLm93bmVyRG9jdW1lbnQsIG8pLCBzID0gT3QoZi5hcHBlbmRDaGlsZChvKSwgInNjcmlw
dCIpLCBhICYmIE10KHMpLCBuKSkgewotICAgICAgICAgICAgICAgICAgICBpID0gMDsKLSAgICAg
ICAgICAgICAgICAgICAgd2hpbGUgKG8gPSBzW2krK10pCi0gICAgICAgICAgICAgICAgICAgICAg
ICBrdC50ZXN0KG8udHlwZSB8fCAiIikgJiYgbi5wdXNoKG8pCi0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgcmV0dXJuIHMgPSBudWxsLCBmCi0gICAgICAgIH0sCi0gICAgICAgIGNsZWFu
RGF0YTogZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAgdmFyIG4sCi0gICAgICAgICAgICAg
ICAgciwKLSAgICAgICAgICAgICAgICBvLAotICAgICAgICAgICAgICAgIGEsCi0gICAgICAgICAg
ICAgICAgcyA9IDAsCi0gICAgICAgICAgICAgICAgdSA9IGIuZXhwYW5kbywKLSAgICAgICAgICAg
ICAgICBsID0gYi5jYWNoZSwKLSAgICAgICAgICAgICAgICBwID0gYi5zdXBwb3J0LmRlbGV0ZUV4
cGFuZG8sCi0gICAgICAgICAgICAgICAgZiA9IGIuZXZlbnQuc3BlY2lhbDsKLSAgICAgICAgICAg
IGZvciAoOyBudWxsICE9IChuID0gZVtzXSk7IHMrKykKLSAgICAgICAgICAgICAgICBpZiAoKHQg
fHwgYi5hY2NlcHREYXRhKG4pKSAmJiAobyA9IG5bdV0sIGEgPSBvICYmIGxbb10pKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChhLmV2ZW50cykKLSAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciAociBpbiBhLmV2ZW50cykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmW3JdID8gYi5l
dmVudC5yZW1vdmUobiwgcikgOiBiLnJlbW92ZUV2ZW50KG4sIHIsIGEuaGFuZGxlKTsKLSAgICAg
ICAgICAgICAgICAgICAgbFtvXSAmJiAoZGVsZXRlIGxbb10sIHAgPyBkZWxldGUgblt1XSA6IHR5
cGVvZiBuLnJlbW92ZUF0dHJpYnV0ZSAhPT0gaSA/IG4ucmVtb3ZlQXR0cmlidXRlKHUpIDogblt1
XSA9IG51bGwsIGMucHVzaChvKSkKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
KTsKLSAgICB2YXIgUHQsCi0gICAgICAgIFJ0LAotICAgICAgICBXdCwKLSAgICAgICAgJHQgPSAv
YWxwaGFcKFteKV0qXCkvaSwKLSAgICAgICAgSXQgPSAvb3BhY2l0eVxzKj1ccyooW14pXSopLywK
LSAgICAgICAgenQgPSAvXih0b3B8cmlnaHR8Ym90dG9tfGxlZnQpJC8sCi0gICAgICAgIFh0ID0g
L14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLAotICAgICAgICBVdCA9IC9ebWFyZ2luLywKLSAg
ICAgICAgVnQgPSBSZWdFeHAoIl4oIiArIHggKyAiKSguKikkIiwgImkiKSwKLSAgICAgICAgWXQg
PSBSZWdFeHAoIl4oIiArIHggKyAiKSg/IXB4KVthLXolXSskIiwgImkiKSwKLSAgICAgICAgSnQg
PSBSZWdFeHAoIl4oWystXSk9KCIgKyB4ICsgIikiLCAiaSIpLAotICAgICAgICBHdCA9IHsKLSAg
ICAgICAgICAgIEJPRFk6ICJibG9jayIKLSAgICAgICAgfSwKLSAgICAgICAgUXQgPSB7Ci0gICAg
ICAgICAgICBwb3NpdGlvbjogImFic29sdXRlIiwKLSAgICAgICAgICAgIHZpc2liaWxpdHk6ICJo
aWRkZW4iLAotICAgICAgICAgICAgZGlzcGxheTogImJsb2NrIgotICAgICAgICB9LAotICAgICAg
ICBLdCA9IHsKLSAgICAgICAgICAgIGxldHRlclNwYWNpbmc6IDAsCi0gICAgICAgICAgICBmb250
V2VpZ2h0OiA0MDAKLSAgICAgICAgfSwKLSAgICAgICAgWnQgPSBbIlRvcCIsICJSaWdodCIsICJC
b3R0b20iLCAiTGVmdCJdLAotICAgICAgICBlbiA9IFsiV2Via2l0IiwgIk8iLCAiTW96IiwgIm1z
Il07Ci0gICAgZnVuY3Rpb24gdG4oZSwgdCkgewotICAgICAgICBpZiAodCBpbiBlKQotICAgICAg
ICAgICAgcmV0dXJuIHQ7Ci0gICAgICAgIHZhciBuID0gdC5jaGFyQXQoMCkudG9VcHBlckNhc2Uo
KSArIHQuc2xpY2UoMSksCi0gICAgICAgICAgICByID0gdCwKLSAgICAgICAgICAgIGkgPSBlbi5s
ZW5ndGg7Ci0gICAgICAgIHdoaWxlIChpLS0pCi0gICAgICAgICAgICBpZiAodCA9IGVuW2ldICsg
biwgdCBpbiBlKQotICAgICAgICAgICAgICAgIHJldHVybiB0OwotICAgICAgICByZXR1cm4gcgot
ICAgIH0KLSAgICBmdW5jdGlvbiBubihlLCB0KSB7Ci0gICAgICAgIHJldHVybiBlID0gdCB8fCBl
LCAibm9uZSIgPT09IGIuY3NzKGUsICJkaXNwbGF5IikgfHwgIWIuY29udGFpbnMoZS5vd25lckRv
Y3VtZW50LCBlKQotICAgIH0KLSAgICBmdW5jdGlvbiBybihlLCB0KSB7Ci0gICAgICAgIHZhciBu
LAotICAgICAgICAgICAgciwKLSAgICAgICAgICAgIGksCi0gICAgICAgICAgICBvID0gW10sCi0g
ICAgICAgICAgICBhID0gMCwKLSAgICAgICAgICAgIHMgPSBlLmxlbmd0aDsKLSAgICAgICAgZm9y
ICg7IHMgPiBhOyBhKyspCi0gICAgICAgICAgICByID0gZVthXSwKLSAgICAgICAgICAgIHIuc3R5
bGUgJiYgKG9bYV0gPSBiLl9kYXRhKHIsICJvbGRkaXNwbGF5IiksIG4gPSByLnN0eWxlLmRpc3Bs
YXksIHQgPyAob1thXSB8fCAibm9uZSIgIT09IG4gfHwgKHIuc3R5bGUuZGlzcGxheSA9ICIiKSwg
IiIgPT09IHIuc3R5bGUuZGlzcGxheSAmJiBubihyKSAmJiAob1thXSA9IGIuX2RhdGEociwgIm9s
ZGRpc3BsYXkiLCB1bihyLm5vZGVOYW1lKSkpKSA6IG9bYV0gfHwgKGkgPSBubihyKSwgKG4gJiYg
Im5vbmUiICE9PSBuIHx8ICFpKSAmJiBiLl9kYXRhKHIsICJvbGRkaXNwbGF5IiwgaSA/IG4gOiBi
LmNzcyhyLCAiZGlzcGxheSIpKSkpOwotICAgICAgICBmb3IgKGEgPSAwOyBzID4gYTsgYSsrKQot
ICAgICAgICAgICAgciA9IGVbYV0sCi0gICAgICAgICAgICByLnN0eWxlICYmICh0ICYmICJub25l
IiAhPT0gci5zdHlsZS5kaXNwbGF5ICYmICIiICE9PSByLnN0eWxlLmRpc3BsYXkgfHwgKHIuc3R5
bGUuZGlzcGxheSA9IHQgPyBvW2FdIHx8ICIiIDogIm5vbmUiKSk7Ci0gICAgICAgIHJldHVybiBl
Ci0gICAgfQotICAgIGIuZm4uZXh0ZW5kKHsKLSAgICAgICAgY3NzOiBmdW5jdGlvbihlLCBuKSB7
Ci0gICAgICAgICAgICByZXR1cm4gYi5hY2Nlc3ModGhpcywgZnVuY3Rpb24oZSwgbiwgcikgewot
ICAgICAgICAgICAgICAgIHZhciBpLAotICAgICAgICAgICAgICAgICAgICBvLAotICAgICAgICAg
ICAgICAgICAgICBhID0ge30sCi0gICAgICAgICAgICAgICAgICAgIHMgPSAwOwotICAgICAgICAg
ICAgICAgIGlmIChiLmlzQXJyYXkobikpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChvID0g
UnQoZSksIGkgPSBuLmxlbmd0aDsgaSA+IHM7IHMrKykKLSAgICAgICAgICAgICAgICAgICAgICAg
IGFbbltzXV0gPSBiLmNzcyhlLCBuW3NdLCAhMSwgbyk7Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBhCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiByICE9PSB0
ID8gYi5zdHlsZShlLCBuLCByKSA6IGIuY3NzKGUsIG4pCi0gICAgICAgICAgICB9LCBlLCBuLCBh
cmd1bWVudHMubGVuZ3RoID4gMSkKLSAgICAgICAgfSwKLSAgICAgICAgc2hvdzogZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICByZXR1cm4gcm4odGhpcywgITApCi0gICAgICAgIH0sCi0gICAgICAg
IGhpZGU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJuIHJuKHRoaXMpCi0gICAgICAg
IH0sCi0gICAgICAgIHRvZ2dsZTogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgdmFyIHQgPSAi
Ym9vbGVhbiIgPT0gdHlwZW9mIGU7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgICAgICh0ID8gZSA6IG5uKHRoaXMpKSA/IGIodGhpcykuc2hv
dygpIDogYih0aGlzKS5oaWRlKCkKLSAgICAgICAgICAgIH0pCi0gICAgICAgIH0KLSAgICB9KSwK
LSAgICBiLmV4dGVuZCh7Ci0gICAgICAgIGNzc0hvb2tzOiB7Ci0gICAgICAgICAgICBvcGFjaXR5
OiB7Ci0gICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IFd0KGUsICJv
cGFjaXR5Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIiIgPT09IG4gPyAiMSIg
OiBuCi0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0sCi0gICAgICAgIGNzc051bWJlcjogewotICAgICAgICAgICAgY29sdW1u
Q291bnQ6ICEwLAotICAgICAgICAgICAgZmlsbE9wYWNpdHk6ICEwLAotICAgICAgICAgICAgZm9u
dFdlaWdodDogITAsCi0gICAgICAgICAgICBsaW5lSGVpZ2h0OiAhMCwKLSAgICAgICAgICAgIG9w
YWNpdHk6ICEwLAotICAgICAgICAgICAgb3JwaGFuczogITAsCi0gICAgICAgICAgICB3aWRvd3M6
ICEwLAotICAgICAgICAgICAgekluZGV4OiAhMCwKLSAgICAgICAgICAgIHpvb206ICEwCi0gICAg
ICAgIH0sCi0gICAgICAgIGNzc1Byb3BzOiB7Ci0gICAgICAgICAgICAiZmxvYXQiOiBiLnN1cHBv
cnQuY3NzRmxvYXQgPyAiY3NzRmxvYXQiIDogInN0eWxlRmxvYXQiCi0gICAgICAgIH0sCi0gICAg
ICAgIHN0eWxlOiBmdW5jdGlvbihlLCBuLCByLCBpKSB7Ci0gICAgICAgICAgICBpZiAoZSAmJiAz
ICE9PSBlLm5vZGVUeXBlICYmIDggIT09IGUubm9kZVR5cGUgJiYgZS5zdHlsZSkgewotICAgICAg
ICAgICAgICAgIHZhciBvLAotICAgICAgICAgICAgICAgICAgICBhLAotICAgICAgICAgICAgICAg
ICAgICBzLAotICAgICAgICAgICAgICAgICAgICB1ID0gYi5jYW1lbENhc2UobiksCi0gICAgICAg
ICAgICAgICAgICAgIGwgPSBlLnN0eWxlOwotICAgICAgICAgICAgICAgIGlmIChuID0gYi5jc3NQ
cm9wc1t1XSB8fCAoYi5jc3NQcm9wc1t1XSA9IHRuKGwsIHUpKSwgcyA9IGIuY3NzSG9va3Nbbl0g
fHwgYi5jc3NIb29rc1t1XSwgciA9PT0gdCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMg
JiYgImdldCIgaW4gcyAmJiAobyA9IHMuZ2V0KGUsICExLCBpKSkgIT09IHQgPyBvIDogbFtuXTsK
LSAgICAgICAgICAgICAgICBpZiAoYSA9IHR5cGVvZiByLCAic3RyaW5nIiA9PT0gYSAmJiAobyA9
IEp0LmV4ZWMocikpICYmIChyID0gKG9bMV0gKyAxKSAqIG9bMl0gKyBwYXJzZUZsb2F0KGIuY3Nz
KGUsIG4pKSwgYSA9ICJudW1iZXIiKSwgIShudWxsID09IHIgfHwgIm51bWJlciIgPT09IGEgJiYg
aXNOYU4ocikgfHwgKCJudW1iZXIiICE9PSBhIHx8IGIuY3NzTnVtYmVyW3VdIHx8IChyICs9ICJw
eCIpLCBiLnN1cHBvcnQuY2xlYXJDbG9uZVN0eWxlIHx8ICIiICE9PSByIHx8IDAgIT09IG4uaW5k
ZXhPZigiYmFja2dyb3VuZCIpIHx8IChsW25dID0gImluaGVyaXQiKSwgcyAmJiAic2V0IiBpbiBz
ICYmIChyID0gcy5zZXQoZSwgciwgaSkpID09PSB0KSkpCi0gICAgICAgICAgICAgICAgICAgIHRy
eSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsW25dID0gcgotICAgICAgICAgICAgICAgICAg
ICB9IGNhdGNoIChjKSB7fQotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICBjc3M6
IGZ1bmN0aW9uKGUsIG4sIHIsIGkpIHsKLSAgICAgICAgICAgIHZhciBvLAotICAgICAgICAgICAg
ICAgIGEsCi0gICAgICAgICAgICAgICAgcywKLSAgICAgICAgICAgICAgICB1ID0gYi5jYW1lbENh
c2Uobik7Ci0gICAgICAgICAgICByZXR1cm4gbiA9IGIuY3NzUHJvcHNbdV0gfHwgKGIuY3NzUHJv
cHNbdV0gPSB0bihlLnN0eWxlLCB1KSksIHMgPSBiLmNzc0hvb2tzW25dIHx8IGIuY3NzSG9va3Nb
dV0sIHMgJiYgImdldCIgaW4gcyAmJiAoYSA9IHMuZ2V0KGUsICEwLCByKSksIGEgPT09IHQgJiYg
KGEgPSBXdChlLCBuLCBpKSksICJub3JtYWwiID09PSBhICYmIG4gaW4gS3QgJiYgKGEgPSBLdFtu
XSksICIiID09PSByIHx8IHIgPyAobyA9IHBhcnNlRmxvYXQoYSksIHIgPT09ICEwIHx8IGIuaXNO
dW1lcmljKG8pID8gbyB8fCAwIDogYSkgOiBhCi0gICAgICAgIH0sCi0gICAgICAgIHN3YXA6IGZ1
bmN0aW9uKGUsIHQsIG4sIHIpIHsKLSAgICAgICAgICAgIHZhciBpLAotICAgICAgICAgICAgICAg
IG8sCi0gICAgICAgICAgICAgICAgYSA9IHt9OwotICAgICAgICAgICAgZm9yIChvIGluIHQpCi0g
ICAgICAgICAgICAgICAgYVtvXSA9IGUuc3R5bGVbb10sCi0gICAgICAgICAgICAgICAgZS5zdHls
ZVtvXSA9IHRbb107Ci0gICAgICAgICAgICBpID0gbi5hcHBseShlLCByIHx8IFtdKTsKLSAgICAg
ICAgICAgIGZvciAobyBpbiB0KQotICAgICAgICAgICAgICAgIGUuc3R5bGVbb10gPSBhW29dOwot
ICAgICAgICAgICAgcmV0dXJuIGkKLSAgICAgICAgfQotICAgIH0pLAotICAgIGUuZ2V0Q29tcHV0
ZWRTdHlsZSA/IChSdCA9IGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgcmV0dXJuIGUuZ2V0Q29tcHV0
ZWRTdHlsZSh0LCBudWxsKQotICAgIH0sIFd0ID0gZnVuY3Rpb24oZSwgbiwgcikgewotICAgICAg
ICB2YXIgaSwKLSAgICAgICAgICAgIG8sCi0gICAgICAgICAgICBhLAotICAgICAgICAgICAgcyA9
IHIgfHwgUnQoZSksCi0gICAgICAgICAgICB1ID0gcyA/IHMuZ2V0UHJvcGVydHlWYWx1ZShuKSB8
fCBzW25dIDogdCwKLSAgICAgICAgICAgIGwgPSBlLnN0eWxlOwotICAgICAgICByZXR1cm4gcyAm
JiAoIiIgIT09IHUgfHwgYi5jb250YWlucyhlLm93bmVyRG9jdW1lbnQsIGUpIHx8ICh1ID0gYi5z
dHlsZShlLCBuKSksIFl0LnRlc3QodSkgJiYgVXQudGVzdChuKSAmJiAoaSA9IGwud2lkdGgsIG8g
PSBsLm1pbldpZHRoLCBhID0gbC5tYXhXaWR0aCwgbC5taW5XaWR0aCA9IGwubWF4V2lkdGggPSBs
LndpZHRoID0gdSwgdSA9IHMud2lkdGgsIGwud2lkdGggPSBpLCBsLm1pbldpZHRoID0gbywgbC5t
YXhXaWR0aCA9IGEpKSwgdQotICAgIH0pIDogby5kb2N1bWVudEVsZW1lbnQuY3VycmVudFN0eWxl
ICYmIChSdCA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgcmV0dXJuIGUuY3VycmVudFN0eWxlCi0g
ICAgfSwgV3QgPSBmdW5jdGlvbihlLCBuLCByKSB7Ci0gICAgICAgIHZhciBpLAotICAgICAgICAg
ICAgbywKLSAgICAgICAgICAgIGEsCi0gICAgICAgICAgICBzID0gciB8fCBSdChlKSwKLSAgICAg
ICAgICAgIHUgPSBzID8gc1tuXSA6IHQsCi0gICAgICAgICAgICBsID0gZS5zdHlsZTsKLSAgICAg
ICAgcmV0dXJuIG51bGwgPT0gdSAmJiBsICYmIGxbbl0gJiYgKHUgPSBsW25dKSwgWXQudGVzdCh1
KSAmJiAhenQudGVzdChuKSAmJiAoaSA9IGwubGVmdCwgbyA9IGUucnVudGltZVN0eWxlLCBhID0g
byAmJiBvLmxlZnQsIGEgJiYgKG8ubGVmdCA9IGUuY3VycmVudFN0eWxlLmxlZnQpLCBsLmxlZnQg
PSAiZm9udFNpemUiID09PSBuID8gIjFlbSIgOiB1LCB1ID0gbC5waXhlbExlZnQgKyAicHgiLCBs
LmxlZnQgPSBpLCBhICYmIChvLmxlZnQgPSBhKSksICIiID09PSB1ID8gImF1dG8iIDogdQotICAg
IH0pOwotICAgIGZ1bmN0aW9uIG9uKGUsIHQsIG4pIHsKLSAgICAgICAgdmFyIHIgPSBWdC5leGVj
KHQpOwotICAgICAgICByZXR1cm4gciA/IE1hdGgubWF4KDAsIHJbMV0gLSAobiB8fCAwKSkgKyAo
clsyXSB8fCAicHgiKSA6IHQKLSAgICB9Ci0gICAgZnVuY3Rpb24gYW4oZSwgdCwgbiwgciwgaSkg
ewotICAgICAgICB2YXIgbyA9IG4gPT09IChyID8gImJvcmRlciIgOiAiY29udGVudCIpID8gNCA6
ICJ3aWR0aCIgPT09IHQgPyAxIDogMCwKLSAgICAgICAgICAgIGEgPSAwOwotICAgICAgICBmb3Ig
KDsgNCA+IG87IG8gKz0gMikKLSAgICAgICAgICAgICJtYXJnaW4iID09PSBuICYmIChhICs9IGIu
Y3NzKGUsIG4gKyBadFtvXSwgITAsIGkpKSwKLSAgICAgICAgICAgIHIgPyAoImNvbnRlbnQiID09
PSBuICYmIChhIC09IGIuY3NzKGUsICJwYWRkaW5nIiArIFp0W29dLCAhMCwgaSkpLCAibWFyZ2lu
IiAhPT0gbiAmJiAoYSAtPSBiLmNzcyhlLCAiYm9yZGVyIiArIFp0W29dICsgIldpZHRoIiwgITAs
IGkpKSkgOiAoYSArPSBiLmNzcyhlLCAicGFkZGluZyIgKyBadFtvXSwgITAsIGkpLCAicGFkZGlu
ZyIgIT09IG4gJiYgKGEgKz0gYi5jc3MoZSwgImJvcmRlciIgKyBadFtvXSArICJXaWR0aCIsICEw
LCBpKSkpOwotICAgICAgICByZXR1cm4gYQotICAgIH0KLSAgICBmdW5jdGlvbiBzbihlLCB0LCBu
KSB7Ci0gICAgICAgIHZhciByID0gITAsCi0gICAgICAgICAgICBpID0gIndpZHRoIiA9PT0gdCA/
IGUub2Zmc2V0V2lkdGggOiBlLm9mZnNldEhlaWdodCwKLSAgICAgICAgICAgIG8gPSBSdChlKSwK
LSAgICAgICAgICAgIGEgPSBiLnN1cHBvcnQuYm94U2l6aW5nICYmICJib3JkZXItYm94IiA9PT0g
Yi5jc3MoZSwgImJveFNpemluZyIsICExLCBvKTsKLSAgICAgICAgaWYgKDAgPj0gaSB8fCBudWxs
ID09IGkpIHsKLSAgICAgICAgICAgIGlmIChpID0gV3QoZSwgdCwgbyksICgwID4gaSB8fCBudWxs
ID09IGkpICYmIChpID0gZS5zdHlsZVt0XSksIFl0LnRlc3QoaSkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGk7Ci0gICAgICAgICAgICByID0gYSAmJiAoYi5zdXBwb3J0LmJveFNpemluZ1JlbGlh
YmxlIHx8IGkgPT09IGUuc3R5bGVbdF0pLAotICAgICAgICAgICAgaSA9IHBhcnNlRmxvYXQoaSkg
fHwgMAotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBpICsgYW4oZSwgdCwgbiB8fCAoYSA/ICJi
b3JkZXIiIDogImNvbnRlbnQiKSwgciwgbykgKyAicHgiCi0gICAgfQotICAgIGZ1bmN0aW9uIHVu
KGUpIHsKLSAgICAgICAgdmFyIHQgPSBvLAotICAgICAgICAgICAgbiA9IEd0W2VdOwotICAgICAg
ICByZXR1cm4gbiB8fCAobiA9IGxuKGUsIHQpLCAibm9uZSIgIT09IG4gJiYgbiB8fCAoUHQgPSAo
UHQgfHwgYigiPGlmcmFtZSBmcmFtZWJvcmRlcj0nMCcgd2lkdGg9JzAnIGhlaWdodD0nMCcvPiIp
LmNzcygiY3NzVGV4dCIsICJkaXNwbGF5OmJsb2NrICFpbXBvcnRhbnQiKSkuYXBwZW5kVG8odC5k
b2N1bWVudEVsZW1lbnQpLCB0ID0gKFB0WzBdLmNvbnRlbnRXaW5kb3cgfHwgUHRbMF0uY29udGVu
dERvY3VtZW50KS5kb2N1bWVudCwgdC53cml0ZSgiPCFkb2N0eXBlIGh0bWw+PGh0bWw+PGJvZHk+
IiksIHQuY2xvc2UoKSwgbiA9IGxuKGUsIHQpLCBQdC5kZXRhY2goKSksIEd0W2VdID0gbiksIG4K
LSAgICB9Ci0gICAgZnVuY3Rpb24gbG4oZSwgdCkgewotICAgICAgICB2YXIgbiA9IGIodC5jcmVh
dGVFbGVtZW50KGUpKS5hcHBlbmRUbyh0LmJvZHkpLAotICAgICAgICAgICAgciA9IGIuY3NzKG5b
MF0sICJkaXNwbGF5Iik7Ci0gICAgICAgIHJldHVybiBuLnJlbW92ZSgpLCByCi0gICAgfQotICAg
IGIuZWFjaChbImhlaWdodCIsICJ3aWR0aCJdLCBmdW5jdGlvbihlLCBuKSB7Ci0gICAgICAgIGIu
Y3NzSG9va3Nbbl0gPSB7Ci0gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUsIHIsIGkpIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gciA/IDAgPT09IGUub2Zmc2V0V2lkdGggJiYgWHQudGVzdChi
LmNzcyhlLCAiZGlzcGxheSIpKSA/IGIuc3dhcChlLCBRdCwgZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBzbihlLCBuLCBpKQotICAgICAgICAgICAgICAgIH0pIDogc24o
ZSwgbiwgaSkgOiB0Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgc2V0OiBmdW5jdGlvbihl
LCB0LCByKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGkgPSByICYmIFJ0KGUpOwotICAgICAgICAg
ICAgICAgIHJldHVybiBvbihlLCB0LCByID8gYW4oZSwgbiwgciwgYi5zdXBwb3J0LmJveFNpemlu
ZyAmJiAiYm9yZGVyLWJveCIgPT09IGIuY3NzKGUsICJib3hTaXppbmciLCAhMSwgaSksIGkpIDog
MCkKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0pLAotICAgIGIuc3VwcG9ydC5vcGFj
aXR5IHx8IChiLmNzc0hvb2tzLm9wYWNpdHkgPSB7Ci0gICAgICAgIGdldDogZnVuY3Rpb24oZSwg
dCkgewotICAgICAgICAgICAgcmV0dXJuIEl0LnRlc3QoKHQgJiYgZS5jdXJyZW50U3R5bGUgPyBl
LmN1cnJlbnRTdHlsZS5maWx0ZXIgOiBlLnN0eWxlLmZpbHRlcikgfHwgIiIpID8gLjAxICogcGFy
c2VGbG9hdChSZWdFeHAuJDEpICsgIiIgOiB0ID8gIjEiIDogIiIKLSAgICAgICAgfSwKLSAgICAg
ICAgc2V0OiBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICB2YXIgbiA9IGUuc3R5bGUsCi0g
ICAgICAgICAgICAgICAgciA9IGUuY3VycmVudFN0eWxlLAotICAgICAgICAgICAgICAgIGkgPSBi
LmlzTnVtZXJpYyh0KSA/ICJhbHBoYShvcGFjaXR5PSIgKyAxMDAgKiB0ICsgIikiIDogIiIsCi0g
ICAgICAgICAgICAgICAgbyA9IHIgJiYgci5maWx0ZXIgfHwgbi5maWx0ZXIgfHwgIiI7Ci0gICAg
ICAgICAgICBuLnpvb20gPSAxLAotICAgICAgICAgICAgKHQgPj0gMSB8fCAiIiA9PT0gdCkgJiYg
IiIgPT09IGIudHJpbShvLnJlcGxhY2UoJHQsICIiKSkgJiYgbi5yZW1vdmVBdHRyaWJ1dGUgJiYg
KG4ucmVtb3ZlQXR0cmlidXRlKCJmaWx0ZXIiKSwgIiIgPT09IHQgfHwgciAmJiAhci5maWx0ZXIp
IHx8IChuLmZpbHRlciA9ICR0LnRlc3QobykgPyBvLnJlcGxhY2UoJHQsIGkpIDogbyArICIgIiAr
IGkpCi0gICAgICAgIH0KLSAgICB9KSwKLSAgICBiKGZ1bmN0aW9uKCkgewotICAgICAgICBiLnN1
cHBvcnQucmVsaWFibGVNYXJnaW5SaWdodCB8fCAoYi5jc3NIb29rcy5tYXJnaW5SaWdodCA9IHsK
LSAgICAgICAgICAgIGdldDogZnVuY3Rpb24oZSwgbikgewotICAgICAgICAgICAgICAgIHJldHVy
biBuID8gYi5zd2FwKGUsIHsKLSAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogImlubGluZS1i
bG9jayIKLSAgICAgICAgICAgICAgICB9LCBXdCwgW2UsICJtYXJnaW5SaWdodCJdKSA6IHQKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfSksCi0gICAgICAgICFiLnN1cHBvcnQucGl4ZWxQb3NpdGlv
biAmJiBiLmZuLnBvc2l0aW9uICYmIGIuZWFjaChbInRvcCIsICJsZWZ0Il0sIGZ1bmN0aW9uKGUs
IG4pIHsKLSAgICAgICAgICAgIGIuY3NzSG9va3Nbbl0gPSB7Ci0gICAgICAgICAgICAgICAgZ2V0
OiBmdW5jdGlvbihlLCByKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByID8gKHIgPSBX
dChlLCBuKSwgWXQudGVzdChyKSA/IGIoZSkucG9zaXRpb24oKVtuXSArICJweCIgOiByKSA6IHQK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pCi0gICAgfSksCi0g
ICAgYi5leHByICYmIGIuZXhwci5maWx0ZXJzICYmIChiLmV4cHIuZmlsdGVycy5oaWRkZW4gPSBm
dW5jdGlvbihlKSB7Ci0gICAgICAgIHJldHVybiAwID49IGUub2Zmc2V0V2lkdGggJiYgMCA+PSBl
Lm9mZnNldEhlaWdodCB8fCAhYi5zdXBwb3J0LnJlbGlhYmxlSGlkZGVuT2Zmc2V0cyAmJiAibm9u
ZSIgPT09IChlLnN0eWxlICYmIGUuc3R5bGUuZGlzcGxheSB8fCBiLmNzcyhlLCAiZGlzcGxheSIp
KQotICAgIH0sIGIuZXhwci5maWx0ZXJzLnZpc2libGUgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAg
IHJldHVybiAhYi5leHByLmZpbHRlcnMuaGlkZGVuKGUpCi0gICAgfSksCi0gICAgYi5lYWNoKHsK
LSAgICAgICAgbWFyZ2luOiAiIiwKLSAgICAgICAgcGFkZGluZzogIiIsCi0gICAgICAgIGJvcmRl
cjogIldpZHRoIgotICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgYi5jc3NIb29rc1tl
ICsgdF0gPSB7Ci0gICAgICAgICAgICBleHBhbmQ6IGZ1bmN0aW9uKG4pIHsKLSAgICAgICAgICAg
ICAgICB2YXIgciA9IDAsCi0gICAgICAgICAgICAgICAgICAgIGkgPSB7fSwKLSAgICAgICAgICAg
ICAgICAgICAgbyA9ICJzdHJpbmciID09IHR5cGVvZiBuID8gbi5zcGxpdCgiICIpIDogW25dOwot
ICAgICAgICAgICAgICAgIGZvciAoOyA0ID4gcjsgcisrKQotICAgICAgICAgICAgICAgICAgICBp
W2UgKyBadFtyXSArIHRdID0gb1tyXSB8fCBvW3IgLSAyXSB8fCBvWzBdOwotICAgICAgICAgICAg
ICAgIHJldHVybiBpCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgIFV0LnRlc3Qo
ZSkgfHwgKGIuY3NzSG9va3NbZSArIHRdLnNldCA9IG9uKQotICAgIH0pOwotICAgIHZhciBjbiA9
IC8lMjAvZywKLSAgICAgICAgcG4gPSAvXFtcXSQvLAotICAgICAgICBmbiA9IC9ccj9cbi9nLAot
ICAgICAgICBkbiA9IC9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSwKLSAg
ICAgICAgaG4gPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7Ci0gICAgYi5m
bi5leHRlbmQoewotICAgICAgICBzZXJpYWxpemU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
cmV0dXJuIGIucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKQotICAgICAgICB9LAotICAgICAg
ICBzZXJpYWxpemVBcnJheTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5t
YXAoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGUgPSBiLnByb3AodGhpcywgImVs
ZW1lbnRzIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGUgPyBiLm1ha2VBcnJheShlKSA6IHRo
aXMKLSAgICAgICAgICAgIH0pLmZpbHRlcihmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICB2
YXIgZSA9IHRoaXMudHlwZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lICYmICFi
KHRoaXMpLmlzKCI6ZGlzYWJsZWQiKSAmJiBobi50ZXN0KHRoaXMubm9kZU5hbWUpICYmICFkbi50
ZXN0KGUpICYmICh0aGlzLmNoZWNrZWQgfHwgIU50LnRlc3QoZSkpCi0gICAgICAgICAgICB9KS5t
YXAoZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAgICAgIHZhciBuID0gYih0aGlzKS52YWwo
KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBuID8gbnVsbCA6IGIuaXNBcnJheShu
KSA/IGIubWFwKG4sIGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHQubmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHZhbHVlOiBlLnJlcGxhY2UoZm4sICJcclxuIikKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIH0pIDogewotICAgICAgICAgICAgICAgICAgICBuYW1lOiB0Lm5h
bWUsCi0gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuLnJlcGxhY2UoZm4sICJcclxuIikKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KS5nZXQoKQotICAgICAgICB9Ci0gICAgfSks
Ci0gICAgYi5wYXJhbSA9IGZ1bmN0aW9uKGUsIG4pIHsKLSAgICAgICAgdmFyIHIsCi0gICAgICAg
ICAgICBpID0gW10sCi0gICAgICAgICAgICBvID0gZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAg
ICAgICAgIHQgPSBiLmlzRnVuY3Rpb24odCkgPyB0KCkgOiBudWxsID09IHQgPyAiIiA6IHQsCi0g
ICAgICAgICAgICAgICAgaVtpLmxlbmd0aF0gPSBlbmNvZGVVUklDb21wb25lbnQoZSkgKyAiPSIg
KyBlbmNvZGVVUklDb21wb25lbnQodCkKLSAgICAgICAgICAgIH07Ci0gICAgICAgIGlmIChuID09
PSB0ICYmIChuID0gYi5hamF4U2V0dGluZ3MgJiYgYi5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWwp
LCBiLmlzQXJyYXkoZSkgfHwgZS5qcXVlcnkgJiYgIWIuaXNQbGFpbk9iamVjdChlKSkKLSAgICAg
ICAgICAgIGIuZWFjaChlLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBvKHRoaXMubmFt
ZSwgdGhpcy52YWx1ZSkKLSAgICAgICAgICAgIH0pOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBmb3IgKHIgaW4gZSkKLSAgICAgICAgICAgICAgICBnbihyLCBlW3JdLCBuLCBvKTsKLSAgICAg
ICAgcmV0dXJuIGkuam9pbigiJiIpLnJlcGxhY2UoY24sICIrIikKLSAgICB9OwotICAgIGZ1bmN0
aW9uIGduKGUsIHQsIG4sIHIpIHsKLSAgICAgICAgdmFyIGk7Ci0gICAgICAgIGlmIChiLmlzQXJy
YXkodCkpCi0gICAgICAgICAgICBiLmVhY2godCwgZnVuY3Rpb24odCwgaSkgewotICAgICAgICAg
ICAgICAgIG4gfHwgcG4udGVzdChlKSA/IHIoZSwgaSkgOiBnbihlICsgIlsiICsgKCJvYmplY3Qi
ID09IHR5cGVvZiBpID8gdCA6ICIiKSArICJdIiwgaSwgbiwgcikKLSAgICAgICAgICAgIH0pOwot
ICAgICAgICBlbHNlIGlmIChuIHx8ICJvYmplY3QiICE9PSBiLnR5cGUodCkpCi0gICAgICAgICAg
ICByKGUsIHQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBmb3IgKGkgaW4gdCkKLSAgICAg
ICAgICAgICAgICBnbihlICsgIlsiICsgaSArICJdIiwgdFtpXSwgbiwgcikKLSAgICB9Ci0gICAg
Yi5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgbG9hZCByZXNpemUgc2Nyb2xsIHVu
bG9hZCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVy
IG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlk
b3duIGtleXByZXNzIGtleXVwIGVycm9yIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLCBmdW5jdGlv
bihlLCB0KSB7Ci0gICAgICAgIGIuZm5bdF0gPSBmdW5jdGlvbihlLCBuKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA+IDAgPyB0aGlzLm9uKHQsIG51bGwsIGUsIG4pIDog
dGhpcy50cmlnZ2VyKHQpCi0gICAgICAgIH0KLSAgICB9KSwKLSAgICBiLmZuLmhvdmVyID0gZnVu
Y3Rpb24oZSwgdCkgewotICAgICAgICByZXR1cm4gdGhpcy5tb3VzZWVudGVyKGUpLm1vdXNlbGVh
dmUodCB8fCBlKQotICAgIH07Ci0gICAgdmFyIG1uLAotICAgICAgICB5biwKLSAgICAgICAgdm4g
PSBiLm5vdygpLAotICAgICAgICBibiA9IC9cPy8sCi0gICAgICAgIHhuID0gLyMuKiQvLAotICAg
ICAgICB3biA9IC8oWz8mXSlfPVteJl0qLywKLSAgICAgICAgVG4gPSAvXiguKj8pOlsgXHRdKihb
XlxyXG5dKilccj8kL2dtLAotICAgICAgICBObiA9IC9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdl
fC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLAotICAgICAgICBDbiA9IC9eKD86R0VU
fEhFQUQpJC8sCi0gICAgICAgIGtuID0gL15cL1wvLywKLSAgICAgICAgRW4gPSAvXihbXHcuKy1d
KzopKD86XC9cLyhbXlwvPyM6XSopKD86OihcZCspfCl8KS8sCi0gICAgICAgIFNuID0gYi5mbi5s
b2FkLAotICAgICAgICBBbiA9IHt9LAotICAgICAgICBqbiA9IHt9LAotICAgICAgICBEbiA9ICIq
LyIuY29uY2F0KCIqIik7Ci0gICAgdHJ5IHsKLSAgICAgICAgeW4gPSBhLmhyZWYKLSAgICB9IGNh
dGNoIChMbikgewotICAgICAgICB5biA9IG8uY3JlYXRlRWxlbWVudCgiYSIpLAotICAgICAgICB5
bi5ocmVmID0gIiIsCi0gICAgICAgIHluID0geW4uaHJlZgotICAgIH0KLSAgICBtbiA9IEVuLmV4
ZWMoeW4udG9Mb3dlckNhc2UoKSkgfHwgW107Ci0gICAgZnVuY3Rpb24gSG4oZSkgewotICAgICAg
ICByZXR1cm4gZnVuY3Rpb24odCwgbikgewotICAgICAgICAgICAgInN0cmluZyIgIT0gdHlwZW9m
IHQgJiYgKG4gPSB0LCB0ID0gIioiKTsKLSAgICAgICAgICAgIHZhciByLAotICAgICAgICAgICAg
ICAgIGkgPSAwLAotICAgICAgICAgICAgICAgIG8gPSB0LnRvTG93ZXJDYXNlKCkubWF0Y2godykg
fHwgW107Ci0gICAgICAgICAgICBpZiAoYi5pc0Z1bmN0aW9uKG4pKQotICAgICAgICAgICAgICAg
IHdoaWxlIChyID0gb1tpKytdKQotICAgICAgICAgICAgICAgICAgICAiKyIgPT09IHJbMF0gPyAo
ciA9IHIuc2xpY2UoMSkgfHwgIioiLCAoZVtyXSA9IGVbcl0gfHwgW10pLnVuc2hpZnQobikpIDog
KGVbcl0gPSBlW3JdIHx8IFtdKS5wdXNoKG4pCi0gICAgICAgIH0KLSAgICB9Ci0gICAgZnVuY3Rp
b24gcW4oZSwgbiwgciwgaSkgewotICAgICAgICB2YXIgbyA9IHt9LAotICAgICAgICAgICAgYSA9
IGUgPT09IGpuOwotICAgICAgICBmdW5jdGlvbiBzKHUpIHsKLSAgICAgICAgICAgIHZhciBsOwot
ICAgICAgICAgICAgcmV0dXJuIG9bdV0gPSAhMCwgYi5lYWNoKGVbdV0gfHwgW10sIGZ1bmN0aW9u
KGUsIHUpIHsKLSAgICAgICAgICAgICAgICB2YXIgYyA9IHUobiwgciwgaSk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuICJzdHJpbmciICE9IHR5cGVvZiBjIHx8IGEgfHwgb1tjXSA/IGEgPyAhKGwg
PSBjKSA6IHQgOiAobi5kYXRhVHlwZXMudW5zaGlmdChjKSwgcyhjKSwgITEpCi0gICAgICAgICAg
ICB9KSwgbAotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBzKG4uZGF0YVR5cGVzWzBdKSB8fCAh
b1siKiJdICYmIHMoIioiKQotICAgIH0KLSAgICBmdW5jdGlvbiBNbihlLCBuKSB7Ci0gICAgICAg
IHZhciByLAotICAgICAgICAgICAgaSwKLSAgICAgICAgICAgIG8gPSBiLmFqYXhTZXR0aW5ncy5m
bGF0T3B0aW9ucyB8fCB7fTsKLSAgICAgICAgZm9yIChpIGluIG4pCi0gICAgICAgICAgICBuW2ld
ICE9PSB0ICYmICgob1tpXSA/IGUgOiByIHx8IChyID0ge30pKVtpXSA9IG5baV0pOwotICAgICAg
ICByZXR1cm4gciAmJiBiLmV4dGVuZCghMCwgZSwgciksIGUKLSAgICB9Ci0gICAgYi5mbi5sb2Fk
ID0gZnVuY3Rpb24oZSwgbiwgcikgewotICAgICAgICBpZiAoInN0cmluZyIgIT0gdHlwZW9mIGUg
JiYgU24pCi0gICAgICAgICAgICByZXR1cm4gU24uYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAg
ICAgICAgdmFyIGksCi0gICAgICAgICAgICBvLAotICAgICAgICAgICAgYSwKLSAgICAgICAgICAg
IHMgPSB0aGlzLAotICAgICAgICAgICAgdSA9IGUuaW5kZXhPZigiICIpOwotICAgICAgICByZXR1
cm4gdSA+PSAwICYmIChpID0gZS5zbGljZSh1LCBlLmxlbmd0aCksIGUgPSBlLnNsaWNlKDAsIHUp
KSwgYi5pc0Z1bmN0aW9uKG4pID8gKHIgPSBuLCBuID0gdCkgOiBuICYmICJvYmplY3QiID09IHR5
cGVvZiBuICYmIChhID0gIlBPU1QiKSwgcy5sZW5ndGggPiAwICYmIGIuYWpheCh7Ci0gICAgICAg
ICAgICB1cmw6IGUsCi0gICAgICAgICAgICB0eXBlOiBhLAotICAgICAgICAgICAgZGF0YVR5cGU6
ICJodG1sIiwKLSAgICAgICAgICAgIGRhdGE6IG4KLSAgICAgICAgfSkuZG9uZShmdW5jdGlvbihl
KSB7Ci0gICAgICAgICAgICBvID0gYXJndW1lbnRzLAotICAgICAgICAgICAgcy5odG1sKGkgPyBi
KCI8ZGl2PiIpLmFwcGVuZChiLnBhcnNlSFRNTChlKSkuZmluZChpKSA6IGUpCi0gICAgICAgIH0p
LmNvbXBsZXRlKHIgJiYgZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAgcy5lYWNoKHIsIG8g
fHwgW2UucmVzcG9uc2VUZXh0LCB0LCBlXSkKLSAgICAgICAgfSksIHRoaXMKLSAgICB9LAotICAg
IGIuZWFjaChbImFqYXhTdGFydCIsICJhamF4U3RvcCIsICJhamF4Q29tcGxldGUiLCAiYWpheEVy
cm9yIiwgImFqYXhTdWNjZXNzIiwgImFqYXhTZW5kIl0sIGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAg
ICAgYi5mblt0XSA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLm9uKHQs
IGUpCi0gICAgICAgIH0KLSAgICB9KSwKLSAgICBiLmVhY2goWyJnZXQiLCAicG9zdCJdLCBmdW5j
dGlvbihlLCBuKSB7Ci0gICAgICAgIGJbbl0gPSBmdW5jdGlvbihlLCByLCBpLCBvKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gYi5pc0Z1bmN0aW9uKHIpICYmIChvID0gbyB8fCBpLCBpID0gciwgciA9
IHQpLCBiLmFqYXgoewotICAgICAgICAgICAgICAgIHVybDogZSwKLSAgICAgICAgICAgICAgICB0
eXBlOiBuLAotICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBvLAotICAgICAgICAgICAgICAgIGRh
dGE6IHIsCi0gICAgICAgICAgICAgICAgc3VjY2VzczogaQotICAgICAgICAgICAgfSkKLSAgICAg
ICAgfQotICAgIH0pLAotICAgIGIuZXh0ZW5kKHsKLSAgICAgICAgYWN0aXZlOiAwLAotICAgICAg
ICBsYXN0TW9kaWZpZWQ6IHt9LAotICAgICAgICBldGFnOiB7fSwKLSAgICAgICAgYWpheFNldHRp
bmdzOiB7Ci0gICAgICAgICAgICB1cmw6IHluLAotICAgICAgICAgICAgdHlwZTogIkdFVCIsCi0g
ICAgICAgICAgICBpc0xvY2FsOiBObi50ZXN0KG1uWzFdKSwKLSAgICAgICAgICAgIGdsb2JhbDog
ITAsCi0gICAgICAgICAgICBwcm9jZXNzRGF0YTogITAsCi0gICAgICAgICAgICBhc3luYzogITAs
Ci0gICAgICAgICAgICBjb250ZW50VHlwZTogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5j
b2RlZDsgY2hhcnNldD1VVEYtOCIsCi0gICAgICAgICAgICBhY2NlcHRzOiB7Ci0gICAgICAgICAg
ICAgICAgIioiOiBEbiwKLSAgICAgICAgICAgICAgICB0ZXh0OiAidGV4dC9wbGFpbiIsCi0gICAg
ICAgICAgICAgICAgaHRtbDogInRleHQvaHRtbCIsCi0gICAgICAgICAgICAgICAgeG1sOiAiYXBw
bGljYXRpb24veG1sLCB0ZXh0L3htbCIsCi0gICAgICAgICAgICAgICAganNvbjogImFwcGxpY2F0
aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBj
b250ZW50czogewotICAgICAgICAgICAgICAgIHhtbDogL3htbC8sCi0gICAgICAgICAgICAgICAg
aHRtbDogL2h0bWwvLAotICAgICAgICAgICAgICAgIGpzb246IC9qc29uLwotICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgIHJlc3BvbnNlRmllbGRzOiB7Ci0gICAgICAgICAgICAgICAgeG1sOiAi
cmVzcG9uc2VYTUwiLAotICAgICAgICAgICAgICAgIHRleHQ6ICJyZXNwb25zZVRleHQiCi0gICAg
ICAgICAgICB9LAotICAgICAgICAgICAgY29udmVydGVyczogewotICAgICAgICAgICAgICAgICIq
IHRleHQiOiBlLlN0cmluZywKLSAgICAgICAgICAgICAgICAidGV4dCBodG1sIjogITAsCi0gICAg
ICAgICAgICAgICAgInRleHQganNvbiI6IGIucGFyc2VKU09OLAotICAgICAgICAgICAgICAgICJ0
ZXh0IHhtbCI6IGIucGFyc2VYTUwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBmbGF0T3B0
aW9uczogewotICAgICAgICAgICAgICAgIHVybDogITAsCi0gICAgICAgICAgICAgICAgY29udGV4
dDogITAKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgYWpheFNldHVwOiBmdW5j
dGlvbihlLCB0KSB7Ci0gICAgICAgICAgICByZXR1cm4gdCA/IE1uKE1uKGUsIGIuYWpheFNldHRp
bmdzKSwgdCkgOiBNbihiLmFqYXhTZXR0aW5ncywgZSkKLSAgICAgICAgfSwKLSAgICAgICAgYWph
eFByZWZpbHRlcjogSG4oQW4pLAotICAgICAgICBhamF4VHJhbnNwb3J0OiBIbihqbiksCi0gICAg
ICAgIGFqYXg6IGZ1bmN0aW9uKGUsIG4pIHsKLSAgICAgICAgICAgICJvYmplY3QiID09IHR5cGVv
ZiBlICYmIChuID0gZSwgZSA9IHQpLAotICAgICAgICAgICAgbiA9IG4gfHwge307Ci0gICAgICAg
ICAgICB2YXIgciwKLSAgICAgICAgICAgICAgICBpLAotICAgICAgICAgICAgICAgIG8sCi0gICAg
ICAgICAgICAgICAgYSwKLSAgICAgICAgICAgICAgICBzLAotICAgICAgICAgICAgICAgIHUsCi0g
ICAgICAgICAgICAgICAgbCwKLSAgICAgICAgICAgICAgICBjLAotICAgICAgICAgICAgICAgIHAg
PSBiLmFqYXhTZXR1cCh7fSwgbiksCi0gICAgICAgICAgICAgICAgZiA9IHAuY29udGV4dCB8fCBw
LAotICAgICAgICAgICAgICAgIGQgPSBwLmNvbnRleHQgJiYgKGYubm9kZVR5cGUgfHwgZi5qcXVl
cnkpID8gYihmKSA6IGIuZXZlbnQsCi0gICAgICAgICAgICAgICAgaCA9IGIuRGVmZXJyZWQoKSwK
LSAgICAgICAgICAgICAgICBnID0gYi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksCi0gICAgICAg
ICAgICAgICAgbSA9IHAuc3RhdHVzQ29kZSB8fCB7fSwKLSAgICAgICAgICAgICAgICB5ID0ge30s
Ci0gICAgICAgICAgICAgICAgdiA9IHt9LAotICAgICAgICAgICAgICAgIHggPSAwLAotICAgICAg
ICAgICAgICAgIFQgPSAiY2FuY2VsZWQiLAotICAgICAgICAgICAgICAgIE4gPSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHJlYWR5U3RhdGU6IDAsCi0gICAgICAgICAgICAgICAgICAgIGdldFJlc3Bv
bnNlSGVhZGVyOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdDsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgyID09PSB4KSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFjKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMg
PSB7fTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHQgPSBUbi5leGVj
KGEpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1t0WzFdLnRvTG93ZXJD
YXNlKCldID0gdFsyXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0ID0gY1tlLnRvTG93ZXJDYXNlKCldCi0gICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSB0ID8gbnVs
bCA6IHQKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgZ2V0QWxs
UmVzcG9uc2VIZWFkZXJzOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAyID09PSB4ID8gYSA6IG51bGwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICAgICAgc2V0UmVxdWVzdEhlYWRlcjogZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIG4gPSBlLnRvTG93ZXJDYXNlKCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4geCB8fCAoZSA9IHZbbl0gPSB2W25dIHx8IGUsIHlbZV0gPSB0KSwgdGhp
cwotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBvdmVycmlkZU1p
bWVUeXBlOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geCB8
fCAocC5taW1lVHlwZSA9IGUpLCB0aGlzCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAgICAgICAgIHN0YXR1c0NvZGU6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciB0OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKDIgPiB4KQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3IgKHQgaW4gZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1b
dF0gPSBbbVt0XSwgZVt0XV07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOLmFsd2F5cyhlW04uc3RhdHVzXSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcwotICAgICAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgICAgICBhYm9ydDogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIHQgPSBlIHx8IFQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bCAmJiBsLmFib3J0KHQpLCBrKDAsIHQpLCB0aGlzCi0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgaWYgKGgucHJvbWlzZShOKS5jb21wbGV0ZSA9
IGcuYWRkLCBOLnN1Y2Nlc3MgPSBOLmRvbmUsIE4uZXJyb3IgPSBOLmZhaWwsIHAudXJsID0gKChl
IHx8IHAudXJsIHx8IHluKSArICIiKS5yZXBsYWNlKHhuLCAiIikucmVwbGFjZShrbiwgbW5bMV0g
KyAiLy8iKSwgcC50eXBlID0gbi5tZXRob2QgfHwgbi50eXBlIHx8IHAubWV0aG9kIHx8IHAudHlw
ZSwgcC5kYXRhVHlwZXMgPSBiLnRyaW0ocC5kYXRhVHlwZSB8fCAiKiIpLnRvTG93ZXJDYXNlKCku
bWF0Y2godykgfHwgWyIiXSwgbnVsbCA9PSBwLmNyb3NzRG9tYWluICYmIChyID0gRW4uZXhlYyhw
LnVybC50b0xvd2VyQ2FzZSgpKSwgcC5jcm9zc0RvbWFpbiA9ICEoIXIgfHwgclsxXSA9PT0gbW5b
MV0gJiYgclsyXSA9PT0gbW5bMl0gJiYgKHJbM10gfHwgKCJodHRwOiIgPT09IHJbMV0gPyA4MCA6
IDQ0MykpID09IChtblszXSB8fCAoImh0dHA6IiA9PT0gbW5bMV0gPyA4MCA6IDQ0MykpKSksIHAu
ZGF0YSAmJiBwLnByb2Nlc3NEYXRhICYmICJzdHJpbmciICE9IHR5cGVvZiBwLmRhdGEgJiYgKHAu
ZGF0YSA9IGIucGFyYW0ocC5kYXRhLCBwLnRyYWRpdGlvbmFsKSksIHFuKEFuLCBwLCBuLCBOKSwg
MiA9PT0geCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTjsKLSAgICAgICAgICAgIHUgPSBwLmds
b2JhbCwKLSAgICAgICAgICAgIHUgJiYgMCA9PT0gYi5hY3RpdmUrKyAmJiBiLmV2ZW50LnRyaWdn
ZXIoImFqYXhTdGFydCIpLAotICAgICAgICAgICAgcC50eXBlID0gcC50eXBlLnRvVXBwZXJDYXNl
KCksCi0gICAgICAgICAgICBwLmhhc0NvbnRlbnQgPSAhQ24udGVzdChwLnR5cGUpLAotICAgICAg
ICAgICAgbyA9IHAudXJsLAotICAgICAgICAgICAgcC5oYXNDb250ZW50IHx8IChwLmRhdGEgJiYg
KG8gPSBwLnVybCArPSAoYm4udGVzdChvKSA/ICImIiA6ICI/IikgKyBwLmRhdGEsIGRlbGV0ZSBw
LmRhdGEpLCBwLmNhY2hlID09PSAhMSAmJiAocC51cmwgPSB3bi50ZXN0KG8pID8gby5yZXBsYWNl
KHduLCAiJDFfPSIgKyB2bisrKSA6IG8gKyAoYm4udGVzdChvKSA/ICImIiA6ICI/IikgKyAiXz0i
ICsgdm4rKykpLAotICAgICAgICAgICAgcC5pZk1vZGlmaWVkICYmIChiLmxhc3RNb2RpZmllZFtv
XSAmJiBOLnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIiwgYi5sYXN0TW9kaWZp
ZWRbb10pLCBiLmV0YWdbb10gJiYgTi5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIiwg
Yi5ldGFnW29dKSksCi0gICAgICAgICAgICAocC5kYXRhICYmIHAuaGFzQ29udGVudCAmJiBwLmNv
bnRlbnRUeXBlICE9PSAhMSB8fCBuLmNvbnRlbnRUeXBlKSAmJiBOLnNldFJlcXVlc3RIZWFkZXIo
IkNvbnRlbnQtVHlwZSIsIHAuY29udGVudFR5cGUpLAotICAgICAgICAgICAgTi5zZXRSZXF1ZXN0
SGVhZGVyKCJBY2NlcHQiLCBwLmRhdGFUeXBlc1swXSAmJiBwLmFjY2VwdHNbcC5kYXRhVHlwZXNb
MF1dID8gcC5hY2NlcHRzW3AuZGF0YVR5cGVzWzBdXSArICgiKiIgIT09IHAuZGF0YVR5cGVzWzBd
ID8gIiwgIiArIERuICsgIjsgcT0wLjAxIiA6ICIiKSA6IHAuYWNjZXB0c1siKiJdKTsKLSAgICAg
ICAgICAgIGZvciAoaSBpbiBwLmhlYWRlcnMpCi0gICAgICAgICAgICAgICAgTi5zZXRSZXF1ZXN0
SGVhZGVyKGksIHAuaGVhZGVyc1tpXSk7Ci0gICAgICAgICAgICBpZiAocC5iZWZvcmVTZW5kICYm
IChwLmJlZm9yZVNlbmQuY2FsbChmLCBOLCBwKSA9PT0gITEgfHwgMiA9PT0geCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIE4uYWJvcnQoKTsKLSAgICAgICAgICAgIFQgPSAiYWJvcnQiOwotICAg
ICAgICAgICAgZm9yIChpIGluIHsKLSAgICAgICAgICAgICAgICBzdWNjZXNzOiAxLAotICAgICAg
ICAgICAgICAgIGVycm9yOiAxLAotICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAxCi0gICAgICAg
ICAgICB9KQotICAgICAgICAgICAgICAgIE5baV0ocFtpXSk7Ci0gICAgICAgICAgICBpZiAobCA9
IHFuKGpuLCBwLCBuLCBOKSkgewotICAgICAgICAgICAgICAgIE4ucmVhZHlTdGF0ZSA9IDEsCi0g
ICAgICAgICAgICAgICAgdSAmJiBkLnRyaWdnZXIoImFqYXhTZW5kIiwgW04sIHBdKSwKLSAgICAg
ICAgICAgICAgICBwLmFzeW5jICYmIHAudGltZW91dCA+IDAgJiYgKHMgPSBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICBOLmFib3J0KCJ0aW1lb3V0IikKLSAgICAg
ICAgICAgICAgICB9LCBwLnRpbWVvdXQpKTsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAg
ICAgICAgICAgICAgICB4ID0gMSwKLSAgICAgICAgICAgICAgICAgICAgbC5zZW5kKHksIGspCi0g
ICAgICAgICAgICAgICAgfSBjYXRjaCAoQykgewotICAgICAgICAgICAgICAgICAgICBpZiAoISgy
ID4geCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBDOwotICAgICAgICAgICAgICAg
ICAgICBrKC0xLCBDKQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgIGsoLTEsICJObyBUcmFuc3BvcnQiKTsKLSAgICAgICAgICAgIGZ1bmN0aW9u
IGsoZSwgbiwgciwgaSkgewotICAgICAgICAgICAgICAgIHZhciBjLAotICAgICAgICAgICAgICAg
ICAgICB5LAotICAgICAgICAgICAgICAgICAgICB2LAotICAgICAgICAgICAgICAgICAgICB3LAot
ICAgICAgICAgICAgICAgICAgICBULAotICAgICAgICAgICAgICAgICAgICBDID0gbjsKLSAgICAg
ICAgICAgICAgICAyICE9PSB4ICYmICh4ID0gMiwgcyAmJiBjbGVhclRpbWVvdXQocyksIGwgPSB0
LCBhID0gaSB8fCAiIiwgTi5yZWFkeVN0YXRlID0gZSA+IDAgPyA0IDogMCwgciAmJiAodyA9IF9u
KHAsIE4sIHIpKSwgZSA+PSAyMDAgJiYgMzAwID4gZSB8fCAzMDQgPT09IGUgPyAocC5pZk1vZGlm
aWVkICYmIChUID0gTi5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpLCBUICYmIChi
Lmxhc3RNb2RpZmllZFtvXSA9IFQpLCBUID0gTi5nZXRSZXNwb25zZUhlYWRlcigiZXRhZyIpLCBU
ICYmIChiLmV0YWdbb10gPSBUKSksIDIwNCA9PT0gZSA/IChjID0gITAsIEMgPSAibm9jb250ZW50
IikgOiAzMDQgPT09IGUgPyAoYyA9ICEwLCBDID0gIm5vdG1vZGlmaWVkIikgOiAoYyA9IEZuKHAs
IHcpLCBDID0gYy5zdGF0ZSwgeSA9IGMuZGF0YSwgdiA9IGMuZXJyb3IsIGMgPSAhdikpIDogKHYg
PSBDLCAoZSB8fCAhQykgJiYgKEMgPSAiZXJyb3IiLCAwID4gZSAmJiAoZSA9IDApKSksIE4uc3Rh
dHVzID0gZSwgTi5zdGF0dXNUZXh0ID0gKG4gfHwgQykgKyAiIiwgYyA/IGgucmVzb2x2ZVdpdGgo
ZiwgW3ksIEMsIE5dKSA6IGgucmVqZWN0V2l0aChmLCBbTiwgQywgdl0pLCBOLnN0YXR1c0NvZGUo
bSksIG0gPSB0LCB1ICYmIGQudHJpZ2dlcihjID8gImFqYXhTdWNjZXNzIiA6ICJhamF4RXJyb3Ii
LCBbTiwgcCwgYyA/IHkgOiB2XSksIGcuZmlyZVdpdGgoZiwgW04sIENdKSwgdSAmJiAoZC50cmln
Z2VyKCJhamF4Q29tcGxldGUiLCBbTiwgcF0pLCAtLWIuYWN0aXZlIHx8IGIuZXZlbnQudHJpZ2dl
cigiYWpheFN0b3AiKSkpCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gTgotICAg
ICAgICB9LAotICAgICAgICBnZXRTY3JpcHQ6IGZ1bmN0aW9uKGUsIG4pIHsKLSAgICAgICAgICAg
IHJldHVybiBiLmdldChlLCB0LCBuLCAic2NyaXB0IikKLSAgICAgICAgfSwKLSAgICAgICAgZ2V0
SlNPTjogZnVuY3Rpb24oZSwgdCwgbikgewotICAgICAgICAgICAgcmV0dXJuIGIuZ2V0KGUsIHQs
IG4sICJqc29uIikKLSAgICAgICAgfQotICAgIH0pOwotICAgIGZ1bmN0aW9uIF9uKGUsIG4sIHIp
IHsKLSAgICAgICAgdmFyIGksCi0gICAgICAgICAgICBvLAotICAgICAgICAgICAgYSwKLSAgICAg
ICAgICAgIHMsCi0gICAgICAgICAgICB1ID0gZS5jb250ZW50cywKLSAgICAgICAgICAgIGwgPSBl
LmRhdGFUeXBlcywKLSAgICAgICAgICAgIGMgPSBlLnJlc3BvbnNlRmllbGRzOwotICAgICAgICBm
b3IgKHMgaW4gYykKLSAgICAgICAgICAgIHMgaW4gciAmJiAobltjW3NdXSA9IHJbc10pOwotICAg
ICAgICB3aGlsZSAoIioiID09PSBsWzBdKQotICAgICAgICAgICAgbC5zaGlmdCgpLAotICAgICAg
ICAgICAgbyA9PT0gdCAmJiAobyA9IGUubWltZVR5cGUgfHwgbi5nZXRSZXNwb25zZUhlYWRlcigi
Q29udGVudC1UeXBlIikpOwotICAgICAgICBpZiAobykKLSAgICAgICAgICAgIGZvciAocyBpbiB1
KQotICAgICAgICAgICAgICAgIGlmICh1W3NdICYmIHVbc10udGVzdChvKSkgewotICAgICAgICAg
ICAgICAgICAgICBsLnVuc2hpZnQocyk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAg
ICAgICAgICAgICAgfQotICAgICAgICBpZiAobFswXSBpbiByKQotICAgICAgICAgICAgYSA9IGxb
MF07Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZm9yIChzIGluIHIpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoIWxbMF0gfHwgZS5jb252ZXJ0ZXJzW3MgKyAiICIgKyBsWzBdXSkgewotICAg
ICAgICAgICAgICAgICAgICBhID0gczsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaSB8fCAoaSA9IHMpCi0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBhID0gYSB8fCBpCi0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGEgPyAo
YSAhPT0gbFswXSAmJiBsLnVuc2hpZnQoYSksIHJbYV0pIDogdAotICAgIH0KLSAgICBmdW5jdGlv
biBGbihlLCB0KSB7Ci0gICAgICAgIHZhciBuLAotICAgICAgICAgICAgciwKLSAgICAgICAgICAg
IGksCi0gICAgICAgICAgICBvLAotICAgICAgICAgICAgYSA9IHt9LAotICAgICAgICAgICAgcyA9
IDAsCi0gICAgICAgICAgICB1ID0gZS5kYXRhVHlwZXMuc2xpY2UoKSwKLSAgICAgICAgICAgIGwg
PSB1WzBdOwotICAgICAgICBpZiAoZS5kYXRhRmlsdGVyICYmICh0ID0gZS5kYXRhRmlsdGVyKHQs
IGUuZGF0YVR5cGUpKSwgdVsxXSkKLSAgICAgICAgICAgIGZvciAoaSBpbiBlLmNvbnZlcnRlcnMp
Ci0gICAgICAgICAgICAgICAgYVtpLnRvTG93ZXJDYXNlKCldID0gZS5jb252ZXJ0ZXJzW2ldOwot
ICAgICAgICBmb3IgKDsgciA9IHVbKytzXTspCi0gICAgICAgICAgICBpZiAoIioiICE9PSByKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKCIqIiAhPT0gbCAmJiBsICE9PSByKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChpID0gYVtsICsgIiAiICsgcl0gfHwgYVsiKiAiICsgcl0sICFpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yIChuIGluIGEpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKG8gPSBuLnNwbGl0KCIgIiksIG9bMV0gPT09IHIgJiYgKGkgPSBhW2wgKyAiICIg
KyBvWzBdXSB8fCBhWyIqICIgKyBvWzBdXSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaSA9PT0gITAgPyBpID0gYVtuXSA6IGFbbl0gIT09ICEwICYmIChyID0gb1swXSwgdS5z
cGxpY2Uocy0tLCAwLCByKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAo
aSAhPT0gITApCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSAmJiBlWyJ0aHJvd3MiXSkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gaSh0KTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ID0gaSh0KQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0gY2F0Y2ggKGMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiAicGFyc2VyZXJy
b3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGkgPyBjIDog
Ik5vIGNvbnZlcnNpb24gZnJvbSAiICsgbCArICIgdG8gIiArIHIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbCA9IHIKLSAgICAgICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHsKLSAgICAgICAgICAgIHN0YXRlOiAic3VjY2VzcyIsCi0gICAgICAgICAgICBkYXRh
OiB0Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgYi5hamF4U2V0dXAoewotICAgICAgICBhY2NlcHRz
OiB7Ci0gICAgICAgICAgICBzY3JpcHQ6ICJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2ph
dmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlw
dCIKLSAgICAgICAgfSwKLSAgICAgICAgY29udGVudHM6IHsKLSAgICAgICAgICAgIHNjcmlwdDog
Lyg/OmphdmF8ZWNtYSlzY3JpcHQvCi0gICAgICAgIH0sCi0gICAgICAgIGNvbnZlcnRlcnM6IHsK
LSAgICAgICAgICAgICJ0ZXh0IHNjcmlwdCI6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gYi5nbG9iYWxFdmFsKGUpLCBlCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9KSwKLSAgICBiLmFqYXhQcmVmaWx0ZXIoInNjcmlwdCIsIGZ1bmN0aW9uKGUpIHsKLSAgICAg
ICAgZS5jYWNoZSA9PT0gdCAmJiAoZS5jYWNoZSA9ICExKSwKLSAgICAgICAgZS5jcm9zc0RvbWFp
biAmJiAoZS50eXBlID0gIkdFVCIsIGUuZ2xvYmFsID0gITEpCi0gICAgfSksCi0gICAgYi5hamF4
VHJhbnNwb3J0KCJzY3JpcHQiLCBmdW5jdGlvbihlKSB7Ci0gICAgICAgIGlmIChlLmNyb3NzRG9t
YWluKSB7Ci0gICAgICAgICAgICB2YXIgbiwKLSAgICAgICAgICAgICAgICByID0gby5oZWFkIHx8
IGIoImhlYWQiKVswXSB8fCBvLmRvY3VtZW50RWxlbWVudDsKLSAgICAgICAgICAgIHJldHVybiB7
Ci0gICAgICAgICAgICAgICAgc2VuZDogZnVuY3Rpb24odCwgaSkgewotICAgICAgICAgICAgICAg
ICAgICBuID0gby5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSwKLSAgICAgICAgICAgICAgICAgICAg
bi5hc3luYyA9ICEwLAotICAgICAgICAgICAgICAgICAgICBlLnNjcmlwdENoYXJzZXQgJiYgKG4u
Y2hhcnNldCA9IGUuc2NyaXB0Q2hhcnNldCksCi0gICAgICAgICAgICAgICAgICAgIG4uc3JjID0g
ZS51cmwsCi0gICAgICAgICAgICAgICAgICAgIG4ub25sb2FkID0gbi5vbnJlYWR5c3RhdGVjaGFu
Z2UgPSBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAodCB8fCAhbi5y
ZWFkeVN0YXRlIHx8IC9sb2FkZWR8Y29tcGxldGUvLnRlc3Qobi5yZWFkeVN0YXRlKSkgJiYgKG4u
b25sb2FkID0gbi5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsLCBuLnBhcmVudE5vZGUgJiYgbi5w
YXJlbnROb2RlLnJlbW92ZUNoaWxkKG4pLCBuID0gbnVsbCwgdCB8fCBpKDIwMCwgInN1Y2Nlc3Mi
KSkKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgci5pbnNlcnRC
ZWZvcmUobiwgci5maXJzdENoaWxkKQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgYWJvcnQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICBuICYmIG4ub25sb2Fk
KHQsICEwKQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0pOwotICAgIHZhciBPbiA9IFtdLAotICAgICAgICBCbiA9IC8oPSlcPyg/PSZ8JCl8XD9cPy87
Ci0gICAgYi5hamF4U2V0dXAoewotICAgICAgICBqc29ucDogImNhbGxiYWNrIiwKLSAgICAgICAg
anNvbnBDYWxsYmFjazogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB2YXIgZSA9IE9uLnBvcCgp
IHx8IGIuZXhwYW5kbyArICJfIiArIHZuKys7Ci0gICAgICAgICAgICByZXR1cm4gdGhpc1tlXSA9
ICEwLCBlCi0gICAgICAgIH0KLSAgICB9KSwKLSAgICBiLmFqYXhQcmVmaWx0ZXIoImpzb24ganNv
bnAiLCBmdW5jdGlvbihuLCByLCBpKSB7Ci0gICAgICAgIHZhciBvLAotICAgICAgICAgICAgYSwK
LSAgICAgICAgICAgIHMsCi0gICAgICAgICAgICB1ID0gbi5qc29ucCAhPT0gITEgJiYgKEJuLnRl
c3Qobi51cmwpID8gInVybCIgOiAic3RyaW5nIiA9PSB0eXBlb2Ygbi5kYXRhICYmICEobi5jb250
ZW50VHlwZSB8fCAiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk
IikgJiYgQm4udGVzdChuLmRhdGEpICYmICJkYXRhIik7Ci0gICAgICAgIHJldHVybiB1IHx8ICJq
c29ucCIgPT09IG4uZGF0YVR5cGVzWzBdID8gKG8gPSBuLmpzb25wQ2FsbGJhY2sgPSBiLmlzRnVu
Y3Rpb24obi5qc29ucENhbGxiYWNrKSA/IG4uanNvbnBDYWxsYmFjaygpIDogbi5qc29ucENhbGxi
YWNrLCB1ID8gblt1XSA9IG5bdV0ucmVwbGFjZShCbiwgIiQxIiArIG8pIDogbi5qc29ucCAhPT0g
ITEgJiYgKG4udXJsICs9IChibi50ZXN0KG4udXJsKSA/ICImIiA6ICI/IikgKyBuLmpzb25wICsg
Ij0iICsgbyksIG4uY29udmVydGVyc1sic2NyaXB0IGpzb24iXSA9IGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgcmV0dXJuIHMgfHwgYi5lcnJvcihvICsgIiB3YXMgbm90IGNhbGxlZCIpLCBzWzBd
Ci0gICAgICAgIH0sIG4uZGF0YVR5cGVzWzBdID0gImpzb24iLCBhID0gZVtvXSwgZVtvXSA9IGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgcyA9IGFyZ3VtZW50cwotICAgICAgICB9LCBpLmFsd2F5
cyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGVbb10gPSBhLAotICAgICAgICAgICAgbltvXSAm
JiAobi5qc29ucENhbGxiYWNrID0gci5qc29ucENhbGxiYWNrLCBPbi5wdXNoKG8pKSwKLSAgICAg
ICAgICAgIHMgJiYgYi5pc0Z1bmN0aW9uKGEpICYmIGEoc1swXSksCi0gICAgICAgICAgICBzID0g
YSA9IHQKLSAgICAgICAgfSksICJzY3JpcHQiKSA6IHQKLSAgICB9KTsKLSAgICB2YXIgUG4sCi0g
ICAgICAgIFJuLAotICAgICAgICBXbiA9IDAsCi0gICAgICAgICRuID0gZS5BY3RpdmVYT2JqZWN0
ICYmIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdmFyIGU7Ci0gICAgICAgICAgICBmb3IgKGUg
aW4gUG4pCi0gICAgICAgICAgICAgICAgUG5bZV0odCwgITApCi0gICAgICAgIH07Ci0gICAgZnVu
Y3Rpb24gSW4oKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IGUuWE1M
SHR0cFJlcXVlc3QKLSAgICAgICAgfSBjYXRjaCAodCkge30KLSAgICB9Ci0gICAgZnVuY3Rpb24g
em4oKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IGUuQWN0aXZlWE9i
amVjdCgiTWljcm9zb2Z0LlhNTEhUVFAiKQotICAgICAgICB9IGNhdGNoICh0KSB7fQotICAgIH0K
LSAgICBiLmFqYXhTZXR0aW5ncy54aHIgPSBlLkFjdGl2ZVhPYmplY3QgPyBmdW5jdGlvbigpIHsK
LSAgICAgICAgcmV0dXJuICF0aGlzLmlzTG9jYWwgJiYgSW4oKSB8fCB6bigpCi0gICAgfSA6IElu
LAotICAgIFJuID0gYi5hamF4U2V0dGluZ3MueGhyKCksCi0gICAgYi5zdXBwb3J0LmNvcnMgPSAh
IVJuICYmICJ3aXRoQ3JlZGVudGlhbHMiIGluIFJuLAotICAgIFJuID0gYi5zdXBwb3J0LmFqYXgg
PSAhIVJuLAotICAgIFJuICYmIGIuYWpheFRyYW5zcG9ydChmdW5jdGlvbihuKSB7Ci0gICAgICAg
IGlmICghbi5jcm9zc0RvbWFpbiB8fCBiLnN1cHBvcnQuY29ycykgewotICAgICAgICAgICAgdmFy
IHI7Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHNlbmQ6IGZ1bmN0aW9u
KGksIG8pIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBzLAotICAgICAgICAgICAgICAgICAgICAgICAgdSA9IG4ueGhyKCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChuLnVzZXJuYW1lID8gdS5vcGVuKG4udHlwZSwgbi51cmwsIG4uYXN5bmMs
IG4udXNlcm5hbWUsIG4ucGFzc3dvcmQpIDogdS5vcGVuKG4udHlwZSwgbi51cmwsIG4uYXN5bmMp
LCBuLnhockZpZWxkcykKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocyBpbiBuLnhockZp
ZWxkcykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1W3NdID0gbi54aHJGaWVsZHNbc107
Ci0gICAgICAgICAgICAgICAgICAgIG4ubWltZVR5cGUgJiYgdS5vdmVycmlkZU1pbWVUeXBlICYm
IHUub3ZlcnJpZGVNaW1lVHlwZShuLm1pbWVUeXBlKSwKLSAgICAgICAgICAgICAgICAgICAgbi5j
cm9zc0RvbWFpbiB8fCBpWyJYLVJlcXVlc3RlZC1XaXRoIl0gfHwgKGlbIlgtUmVxdWVzdGVkLVdp
dGgiXSA9ICJYTUxIdHRwUmVxdWVzdCIpOwotICAgICAgICAgICAgICAgICAgICB0cnkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yIChzIGluIGkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdS5zZXRSZXF1ZXN0SGVhZGVyKHMsIGlbc10pCi0gICAgICAgICAgICAgICAgICAgIH0g
Y2F0Y2ggKGwpIHt9Ci0gICAgICAgICAgICAgICAgICAgIHUuc2VuZChuLmhhc0NvbnRlbnQgJiYg
bi5kYXRhIHx8IG51bGwpLAotICAgICAgICAgICAgICAgICAgICByID0gZnVuY3Rpb24oZSwgaSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHA7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChyICYmIChpIHx8IDQgPT09IHUucmVhZHlTdGF0ZSkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gdCwgYSAmJiAodS5vbnJlYWR5
c3RhdGVjaGFuZ2UgPSBiLm5vb3AsICRuICYmIGRlbGV0ZSBQblthXSksIGkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA0ICE9PSB1LnJlYWR5U3RhdGUgJiYgdS5hYm9ydCgp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHAgPSB7fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHMgPSB1LnN0YXR1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGwgPSB1LmdldEFsbFJlc3BvbnNlSGVhZGVycygpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInN0cmluZyIgPT0gdHlwZW9mIHUucmVzcG9uc2VUZXh0ICYmIChwLnRl
eHQgPSB1LnJlc3BvbnNlVGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB1LnN0
YXR1c1RleHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGYp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gIiIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHMgfHwgIW4uaXNMb2NhbCB8fCBuLmNyb3NzRG9tYWluID8gMTIyMyA9PT0g
cyAmJiAocyA9IDIwNCkgOiBzID0gcC50ZXh0ID8gMjAwIDogNDA0Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGQpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpIHx8IG8oLTEsIGQpCi0gICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBwICYmIG8ocywgYywgcCwgbCkK
LSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgbi5hc3luYyA/IDQg
PT09IHUucmVhZHlTdGF0ZSA/IHNldFRpbWVvdXQocikgOiAoYSA9ICsrV24sICRuICYmIChQbiB8
fCAoUG4gPSB7fSwgYihlKS51bmxvYWQoJG4pKSwgUG5bYV0gPSByKSwgdS5vbnJlYWR5c3RhdGVj
aGFuZ2UgPSByKSA6IHIoKQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgYWJv
cnQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICByICYmIHIodCwgITApCi0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSk7Ci0gICAgdmFy
IFhuLAotICAgICAgICBVbiwKLSAgICAgICAgVm4gPSAvXig/OnRvZ2dsZXxzaG93fGhpZGUpJC8s
Ci0gICAgICAgIFluID0gUmVnRXhwKCJeKD86KFsrLV0pPXwpKCIgKyB4ICsgIikoW2EteiVdKikk
IiwgImkiKSwKLSAgICAgICAgSm4gPSAvcXVldWVIb29rcyQvLAotICAgICAgICBHbiA9IFtucl0s
Ci0gICAgICAgIFFuID0gewotICAgICAgICAgICAgIioiOiBbZnVuY3Rpb24oZSwgdCkgewotICAg
ICAgICAgICAgICAgIHZhciBuLAotICAgICAgICAgICAgICAgICAgICByLAotICAgICAgICAgICAg
ICAgICAgICBpID0gdGhpcy5jcmVhdGVUd2VlbihlLCB0KSwKLSAgICAgICAgICAgICAgICAgICAg
byA9IFluLmV4ZWModCksCi0gICAgICAgICAgICAgICAgICAgIGEgPSBpLmN1cigpLAotICAgICAg
ICAgICAgICAgICAgICBzID0gK2EgfHwgMCwKLSAgICAgICAgICAgICAgICAgICAgdSA9IDEsCi0g
ICAgICAgICAgICAgICAgICAgIGwgPSAyMDsKLSAgICAgICAgICAgICAgICBpZiAobykgewotICAg
ICAgICAgICAgICAgICAgICBpZiAobiA9ICtvWzJdLCByID0gb1szXSB8fCAoYi5jc3NOdW1iZXJb
ZV0gPyAiIiA6ICJweCIpLCAicHgiICE9PSByICYmIHMpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHMgPSBiLmNzcyhpLmVsZW0sIGUsICEwKSB8fCBuIHx8IDE7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBkbyB1ID0gdSB8fCAiLjUiLAotICAgICAgICAgICAgICAgICAgICAgICAgcyAvPSB1
LAotICAgICAgICAgICAgICAgICAgICAgICAgYi5zdHlsZShpLmVsZW0sIGUsIHMgKyByKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh1ICE9PSAodSA9IGkuY3VyKCkgLyBhKSAmJiAx
ICE9PSB1ICYmIC0tbCkKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICBpLnVuaXQgPSByLAotICAgICAgICAgICAgICAgICAgICBpLnN0YXJ0ID0gcywKLSAgICAgICAg
ICAgICAgICAgICAgaS5lbmQgPSBvWzFdID8gcyArIChvWzFdICsgMSkgKiBuIDogbgotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gaQotICAgICAgICAgICAgfV0KLSAg
ICAgICAgfTsKLSAgICBmdW5jdGlvbiBLbigpIHsKLSAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBYbiA9IHQKLSAgICAgICAgfSksIFhuID0gYi5ub3co
KQotICAgIH0KLSAgICBmdW5jdGlvbiBabihlLCB0KSB7Ci0gICAgICAgIGIuZWFjaCh0LCBmdW5j
dGlvbih0LCBuKSB7Ci0gICAgICAgICAgICB2YXIgciA9IChRblt0XSB8fCBbXSkuY29uY2F0KFFu
WyIqIl0pLAotICAgICAgICAgICAgICAgIGkgPSAwLAotICAgICAgICAgICAgICAgIG8gPSByLmxl
bmd0aDsKLSAgICAgICAgICAgIGZvciAoOyBvID4gaTsgaSsrKQotICAgICAgICAgICAgICAgIGlm
IChyW2ldLmNhbGwoZSwgdCwgbikpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAg
ICB9KQotICAgIH0KLSAgICBmdW5jdGlvbiBlcihlLCB0LCBuKSB7Ci0gICAgICAgIHZhciByLAot
ICAgICAgICAgICAgaSwKLSAgICAgICAgICAgIG8gPSAwLAotICAgICAgICAgICAgYSA9IEduLmxl
bmd0aCwKLSAgICAgICAgICAgIHMgPSBiLkRlZmVycmVkKCkuYWx3YXlzKGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgICAgIGRlbGV0ZSB1LmVsZW0KLSAgICAgICAgICAgIH0pLAotICAgICAgICAg
ICAgdSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGlmIChpKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gITE7Ci0gICAgICAgICAgICAgICAgdmFyIHQgPSBYbiB8fCBLbigpLAot
ICAgICAgICAgICAgICAgICAgICBuID0gTWF0aC5tYXgoMCwgbC5zdGFydFRpbWUgKyBsLmR1cmF0
aW9uIC0gdCksCi0gICAgICAgICAgICAgICAgICAgIHIgPSBuIC8gbC5kdXJhdGlvbiB8fCAwLAot
ICAgICAgICAgICAgICAgICAgICBvID0gMSAtIHIsCi0gICAgICAgICAgICAgICAgICAgIGEgPSAw
LAotICAgICAgICAgICAgICAgICAgICB1ID0gbC50d2VlbnMubGVuZ3RoOwotICAgICAgICAgICAg
ICAgIGZvciAoOyB1ID4gYTsgYSsrKQotICAgICAgICAgICAgICAgICAgICBsLnR3ZWVuc1thXS5y
dW4obyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHMubm90aWZ5V2l0aChlLCBbbCwgbywgbl0p
LCAxID4gbyAmJiB1ID8gbiA6IChzLnJlc29sdmVXaXRoKGUsIFtsXSksICExKQotICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgIGwgPSBzLnByb21pc2UoewotICAgICAgICAgICAgICAgIGVsZW06
IGUsCi0gICAgICAgICAgICAgICAgcHJvcHM6IGIuZXh0ZW5kKHt9LCB0KSwKLSAgICAgICAgICAg
ICAgICBvcHRzOiBiLmV4dGVuZCghMCwgewotICAgICAgICAgICAgICAgICAgICBzcGVjaWFsRWFz
aW5nOiB7fQotICAgICAgICAgICAgICAgIH0sIG4pLAotICAgICAgICAgICAgICAgIG9yaWdpbmFs
UHJvcGVydGllczogdCwKLSAgICAgICAgICAgICAgICBvcmlnaW5hbE9wdGlvbnM6IG4sCi0gICAg
ICAgICAgICAgICAgc3RhcnRUaW1lOiBYbiB8fCBLbigpLAotICAgICAgICAgICAgICAgIGR1cmF0
aW9uOiBuLmR1cmF0aW9uLAotICAgICAgICAgICAgICAgIHR3ZWVuczogW10sCi0gICAgICAgICAg
ICAgICAgY3JlYXRlVHdlZW46IGZ1bmN0aW9uKHQsIG4pIHsKLSAgICAgICAgICAgICAgICAgICAg
dmFyIHIgPSBiLlR3ZWVuKGUsIGwub3B0cywgdCwgbiwgbC5vcHRzLnNwZWNpYWxFYXNpbmdbdF0g
fHwgbC5vcHRzLmVhc2luZyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsLnR3ZWVucy5w
dXNoKHIpLCByCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBzdG9wOiBmdW5j
dGlvbih0KSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBuID0gMCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHIgPSB0ID8gbC50d2VlbnMubGVuZ3RoIDogMDsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKGkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAg
ICAgICAgICAgICAgZm9yIChpID0gITA7IHIgPiBuOyBuKyspCi0gICAgICAgICAgICAgICAgICAg
ICAgICBsLnR3ZWVuc1tuXS5ydW4oMSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID8g
cy5yZXNvbHZlV2l0aChlLCBbbCwgdF0pIDogcy5yZWplY3RXaXRoKGUsIFtsLCB0XSksIHRoaXMK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KSwKLSAgICAgICAgICAgIGMgPSBsLnBy
b3BzOwotICAgICAgICBmb3IgKHRyKGMsIGwub3B0cy5zcGVjaWFsRWFzaW5nKTsgYSA+IG87IG8r
KykKLSAgICAgICAgICAgIGlmIChyID0gR25bb10uY2FsbChsLCBlLCBjLCBsLm9wdHMpKQotICAg
ICAgICAgICAgICAgIHJldHVybiByOwotICAgICAgICByZXR1cm4gWm4obCwgYyksIGIuaXNGdW5j
dGlvbihsLm9wdHMuc3RhcnQpICYmIGwub3B0cy5zdGFydC5jYWxsKGUsIGwpLCBiLmZ4LnRpbWVy
KGIuZXh0ZW5kKHUsIHsKLSAgICAgICAgICAgIGVsZW06IGUsCi0gICAgICAgICAgICBhbmltOiBs
LAotICAgICAgICAgICAgcXVldWU6IGwub3B0cy5xdWV1ZQotICAgICAgICB9KSksIGwucHJvZ3Jl
c3MobC5vcHRzLnByb2dyZXNzKS5kb25lKGwub3B0cy5kb25lLCBsLm9wdHMuY29tcGxldGUpLmZh
aWwobC5vcHRzLmZhaWwpLmFsd2F5cyhsLm9wdHMuYWx3YXlzKQotICAgIH0KLSAgICBmdW5jdGlv
biB0cihlLCB0KSB7Ci0gICAgICAgIHZhciBuLAotICAgICAgICAgICAgciwKLSAgICAgICAgICAg
IGksCi0gICAgICAgICAgICBvLAotICAgICAgICAgICAgYTsKLSAgICAgICAgZm9yIChpIGluIGUp
Ci0gICAgICAgICAgICBpZiAociA9IGIuY2FtZWxDYXNlKGkpLCBvID0gdFtyXSwgbiA9IGVbaV0s
IGIuaXNBcnJheShuKSAmJiAobyA9IG5bMV0sIG4gPSBlW2ldID0gblswXSksIGkgIT09IHIgJiYg
KGVbcl0gPSBuLCBkZWxldGUgZVtpXSksIGEgPSBiLmNzc0hvb2tzW3JdLCBhICYmICJleHBhbmQi
IGluIGEpIHsKLSAgICAgICAgICAgICAgICBuID0gYS5leHBhbmQobiksCi0gICAgICAgICAgICAg
ICAgZGVsZXRlIGVbcl07Ci0gICAgICAgICAgICAgICAgZm9yIChpIGluIG4pCi0gICAgICAgICAg
ICAgICAgICAgIGkgaW4gZSB8fCAoZVtpXSA9IG5baV0sIHRbaV0gPSBvKQotICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgdFtyXSA9IG8KLSAgICB9Ci0gICAgYi5BbmltYXRpb24g
PSBiLmV4dGVuZChlciwgewotICAgICAgICB0d2VlbmVyOiBmdW5jdGlvbihlLCB0KSB7Ci0gICAg
ICAgICAgICBiLmlzRnVuY3Rpb24oZSkgPyAodCA9IGUsIGUgPSBbIioiXSkgOiBlID0gZS5zcGxp
dCgiICIpOwotICAgICAgICAgICAgdmFyIG4sCi0gICAgICAgICAgICAgICAgciA9IDAsCi0gICAg
ICAgICAgICAgICAgaSA9IGUubGVuZ3RoOwotICAgICAgICAgICAgZm9yICg7IGkgPiByOyByKysp
Ci0gICAgICAgICAgICAgICAgbiA9IGVbcl0sCi0gICAgICAgICAgICAgICAgUW5bbl0gPSBRbltu
XSB8fCBbXSwKLSAgICAgICAgICAgICAgICBRbltuXS51bnNoaWZ0KHQpCi0gICAgICAgIH0sCi0g
ICAgICAgIHByZWZpbHRlcjogZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAgdCA/IEduLnVu
c2hpZnQoZSkgOiBHbi5wdXNoKGUpCi0gICAgICAgIH0KLSAgICB9KTsKLSAgICBmdW5jdGlvbiBu
cihlLCB0LCBuKSB7Ci0gICAgICAgIHZhciByLAotICAgICAgICAgICAgaSwKLSAgICAgICAgICAg
IG8sCi0gICAgICAgICAgICBhLAotICAgICAgICAgICAgcywKLSAgICAgICAgICAgIHUsCi0gICAg
ICAgICAgICBsLAotICAgICAgICAgICAgYywKLSAgICAgICAgICAgIHAsCi0gICAgICAgICAgICBm
ID0gdGhpcywKLSAgICAgICAgICAgIGQgPSBlLnN0eWxlLAotICAgICAgICAgICAgaCA9IHt9LAot
ICAgICAgICAgICAgZyA9IFtdLAotICAgICAgICAgICAgbSA9IGUubm9kZVR5cGUgJiYgbm4oZSk7
Ci0gICAgICAgIG4ucXVldWUgfHwgKGMgPSBiLl9xdWV1ZUhvb2tzKGUsICJmeCIpLCBudWxsID09
IGMudW5xdWV1ZWQgJiYgKGMudW5xdWV1ZWQgPSAwLCBwID0gYy5lbXB0eS5maXJlLCBjLmVtcHR5
LmZpcmUgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGMudW5xdWV1ZWQgfHwgcCgpCi0gICAg
ICAgIH0pLCBjLnVucXVldWVkKyssIGYuYWx3YXlzKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
Zi5hbHdheXMoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgYy51bnF1ZXVlZC0tLAotICAg
ICAgICAgICAgICAgIGIucXVldWUoZSwgImZ4IikubGVuZ3RoIHx8IGMuZW1wdHkuZmlyZSgpCi0g
ICAgICAgICAgICB9KQotICAgICAgICB9KSksCi0gICAgICAgIDEgPT09IGUubm9kZVR5cGUgJiYg
KCJoZWlnaHQiIGluIHQgfHwgIndpZHRoIiBpbiB0KSAmJiAobi5vdmVyZmxvdyA9IFtkLm92ZXJm
bG93LCBkLm92ZXJmbG93WCwgZC5vdmVyZmxvd1ldLCAiaW5saW5lIiA9PT0gYi5jc3MoZSwgImRp
c3BsYXkiKSAmJiAibm9uZSIgPT09IGIuY3NzKGUsICJmbG9hdCIpICYmIChiLnN1cHBvcnQuaW5s
aW5lQmxvY2tOZWVkc0xheW91dCAmJiAiaW5saW5lIiAhPT0gdW4oZS5ub2RlTmFtZSkgPyBkLnpv
b20gPSAxIDogZC5kaXNwbGF5ID0gImlubGluZS1ibG9jayIpKSwKLSAgICAgICAgbi5vdmVyZmxv
dyAmJiAoZC5vdmVyZmxvdyA9ICJoaWRkZW4iLCBiLnN1cHBvcnQuc2hyaW5rV3JhcEJsb2NrcyB8
fCBmLmFsd2F5cyhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGQub3ZlcmZsb3cgPSBuLm92ZXJm
bG93WzBdLAotICAgICAgICAgICAgZC5vdmVyZmxvd1ggPSBuLm92ZXJmbG93WzFdLAotICAgICAg
ICAgICAgZC5vdmVyZmxvd1kgPSBuLm92ZXJmbG93WzJdCi0gICAgICAgIH0pKTsKLSAgICAgICAg
Zm9yIChpIGluIHQpCi0gICAgICAgICAgICBpZiAoYSA9IHRbaV0sIFZuLmV4ZWMoYSkpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoZGVsZXRlIHRbaV0sIHUgPSB1IHx8ICJ0b2dnbGUiID09PSBhLCBh
ID09PSAobSA/ICJoaWRlIiA6ICJzaG93IikpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgICAgIGcucHVzaChpKQotICAgICAgICAgICAgfQotICAgICAgICBpZiAo
byA9IGcubGVuZ3RoKSB7Ci0gICAgICAgICAgICBzID0gYi5fZGF0YShlLCAiZnhzaG93IikgfHwg
Yi5fZGF0YShlLCAiZnhzaG93Iiwge30pLAotICAgICAgICAgICAgImhpZGRlbiIgaW4gcyAmJiAo
bSA9IHMuaGlkZGVuKSwKLSAgICAgICAgICAgIHUgJiYgKHMuaGlkZGVuID0gIW0pLAotICAgICAg
ICAgICAgbSA/IGIoZSkuc2hvdygpIDogZi5kb25lKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ICAgIGIoZSkuaGlkZSgpCi0gICAgICAgICAgICB9KSwKLSAgICAgICAgICAgIGYuZG9uZShmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICAgICB2YXIgdDsKLSAgICAgICAgICAgICAgICBiLl9yZW1v
dmVEYXRhKGUsICJmeHNob3ciKTsKLSAgICAgICAgICAgICAgICBmb3IgKHQgaW4gaCkKLSAgICAg
ICAgICAgICAgICAgICAgYi5zdHlsZShlLCB0LCBoW3RdKQotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICBmb3IgKGkgPSAwOyBvID4gaTsgaSsrKQotICAgICAgICAgICAgICAgIHIgPSBnW2ld
LAotICAgICAgICAgICAgICAgIGwgPSBmLmNyZWF0ZVR3ZWVuKHIsIG0gPyBzW3JdIDogMCksCi0g
ICAgICAgICAgICAgICAgaFtyXSA9IHNbcl0gfHwgYi5zdHlsZShlLCByKSwKLSAgICAgICAgICAg
ICAgICByIGluIHMgfHwgKHNbcl0gPSBsLnN0YXJ0LCBtICYmIChsLmVuZCA9IGwuc3RhcnQsIGwu
c3RhcnQgPSAid2lkdGgiID09PSByIHx8ICJoZWlnaHQiID09PSByID8gMSA6IDApKQotICAgICAg
ICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIHJyKGUsIHQsIG4sIHIsIGkpIHsKLSAgICAgICAgcmV0
dXJuIG5ldyByci5wcm90b3R5cGUuaW5pdChlLCB0LCBuLCByLCBpKQotICAgIH0KLSAgICBiLlR3
ZWVuID0gcnIsCi0gICAgcnIucHJvdG90eXBlID0gewotICAgICAgICBjb25zdHJ1Y3RvcjogcnIs
Ci0gICAgICAgIGluaXQ6IGZ1bmN0aW9uKGUsIHQsIG4sIHIsIGksIG8pIHsKLSAgICAgICAgICAg
IHRoaXMuZWxlbSA9IGUsCi0gICAgICAgICAgICB0aGlzLnByb3AgPSBuLAotICAgICAgICAgICAg
dGhpcy5lYXNpbmcgPSBpIHx8ICJzd2luZyIsCi0gICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSB0
LAotICAgICAgICAgICAgdGhpcy5zdGFydCA9IHRoaXMubm93ID0gdGhpcy5jdXIoKSwKLSAgICAg
ICAgICAgIHRoaXMuZW5kID0gciwKLSAgICAgICAgICAgIHRoaXMudW5pdCA9IG8gfHwgKGIuY3Nz
TnVtYmVyW25dID8gIiIgOiAicHgiKQotICAgICAgICB9LAotICAgICAgICBjdXI6IGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgdmFyIGUgPSByci5wcm9wSG9va3NbdGhpcy5wcm9wXTsKLSAgICAg
ICAgICAgIHJldHVybiBlICYmIGUuZ2V0ID8gZS5nZXQodGhpcykgOiByci5wcm9wSG9va3MuX2Rl
ZmF1bHQuZ2V0KHRoaXMpCi0gICAgICAgIH0sCi0gICAgICAgIHJ1bjogZnVuY3Rpb24oZSkgewot
ICAgICAgICAgICAgdmFyIHQsCi0gICAgICAgICAgICAgICAgbiA9IHJyLnByb3BIb29rc1t0aGlz
LnByb3BdOwotICAgICAgICAgICAgcmV0dXJuIHRoaXMucG9zID0gdCA9IHRoaXMub3B0aW9ucy5k
dXJhdGlvbiA/IGIuZWFzaW5nW3RoaXMuZWFzaW5nXShlLCB0aGlzLm9wdGlvbnMuZHVyYXRpb24g
KiBlLCAwLCAxLCB0aGlzLm9wdGlvbnMuZHVyYXRpb24pIDogZSwgdGhpcy5ub3cgPSAodGhpcy5l
bmQgLSB0aGlzLnN0YXJ0KSAqIHQgKyB0aGlzLnN0YXJ0LCB0aGlzLm9wdGlvbnMuc3RlcCAmJiB0
aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSwgdGhpcy5ub3csIHRoaXMpLCBuICYmIG4u
c2V0ID8gbi5zZXQodGhpcykgOiByci5wcm9wSG9va3MuX2RlZmF1bHQuc2V0KHRoaXMpLCB0aGlz
Ci0gICAgICAgIH0KLSAgICB9LAotICAgIHJyLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZSA9IHJy
LnByb3RvdHlwZSwKLSAgICByci5wcm9wSG9va3MgPSB7Ci0gICAgICAgIF9kZWZhdWx0OiB7Ci0g
ICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICB2YXIgdDsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBlLmVsZW1bZS5wcm9wXSB8fCBlLmVsZW0uc3R5
bGUgJiYgbnVsbCAhPSBlLmVsZW0uc3R5bGVbZS5wcm9wXSA/ICh0ID0gYi5jc3MoZS5lbGVtLCBl
LnByb3AsICIiKSwgdCAmJiAiYXV0byIgIT09IHQgPyB0IDogMCkgOiBlLmVsZW1bZS5wcm9wXQot
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHNldDogZnVuY3Rpb24oZSkgewotICAgICAgICAg
ICAgICAgIGIuZnguc3RlcFtlLnByb3BdID8gYi5meC5zdGVwW2UucHJvcF0oZSkgOiBlLmVsZW0u
c3R5bGUgJiYgKG51bGwgIT0gZS5lbGVtLnN0eWxlW2IuY3NzUHJvcHNbZS5wcm9wXV0gfHwgYi5j
c3NIb29rc1tlLnByb3BdKSA/IGIuc3R5bGUoZS5lbGVtLCBlLnByb3AsIGUubm93ICsgZS51bml0
KSA6IGUuZWxlbVtlLnByb3BdID0gZS5ub3cKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0sCi0gICAgcnIucHJvcEhvb2tzLnNjcm9sbFRvcCA9IHJyLnByb3BIb29rcy5zY3JvbGxMZWZ0
ID0gewotICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGUuZWxlbS5ub2Rl
VHlwZSAmJiBlLmVsZW0ucGFyZW50Tm9kZSAmJiAoZS5lbGVtW2UucHJvcF0gPSBlLm5vdykKLSAg
ICAgICAgfQotICAgIH0sCi0gICAgYi5lYWNoKFsidG9nZ2xlIiwgInNob3ciLCAiaGlkZSJdLCBm
dW5jdGlvbihlLCB0KSB7Ci0gICAgICAgIHZhciBuID0gYi5mblt0XTsKLSAgICAgICAgYi5mblt0
XSA9IGZ1bmN0aW9uKGUsIHIsIGkpIHsKLSAgICAgICAgICAgIHJldHVybiBudWxsID09IGUgfHwg
ImJvb2xlYW4iID09IHR5cGVvZiBlID8gbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDogdGhpcy5h
bmltYXRlKGlyKHQsICEwKSwgZSwgciwgaSkKLSAgICAgICAgfQotICAgIH0pLAotICAgIGIuZm4u
ZXh0ZW5kKHsKLSAgICAgICAgZmFkZVRvOiBmdW5jdGlvbihlLCB0LCBuLCByKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gdGhpcy5maWx0ZXIobm4pLmNzcygib3BhY2l0eSIsIDApLnNob3coKS5lbmQo
KS5hbmltYXRlKHsKLSAgICAgICAgICAgICAgICBvcGFjaXR5OiB0Ci0gICAgICAgICAgICB9LCBl
LCBuLCByKQotICAgICAgICB9LAotICAgICAgICBhbmltYXRlOiBmdW5jdGlvbihlLCB0LCBuLCBy
KSB7Ci0gICAgICAgICAgICB2YXIgaSA9IGIuaXNFbXB0eU9iamVjdChlKSwKLSAgICAgICAgICAg
ICAgICBvID0gYi5zcGVlZCh0LCBuLCByKSwKLSAgICAgICAgICAgICAgICBhID0gZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZXIodGhpcywgYi5leHRlbmQoe30sIGUp
LCBvKTsKLSAgICAgICAgICAgICAgICAgICAgYS5maW5pc2ggPSBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHQuc3RvcCghMCkKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAgICAgKGkgfHwgYi5fZGF0YSh0aGlzLCAiZmluaXNoIikpICYmIHQuc3Rv
cCghMCkKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgcmV0dXJuIGEuZmluaXNoID0g
YSwgaSB8fCBvLnF1ZXVlID09PSAhMSA/IHRoaXMuZWFjaChhKSA6IHRoaXMucXVldWUoby5xdWV1
ZSwgYSkKLSAgICAgICAgfSwKLSAgICAgICAgc3RvcDogZnVuY3Rpb24oZSwgbiwgcikgewotICAg
ICAgICAgICAgdmFyIGkgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHQgPSBl
LnN0b3A7Ci0gICAgICAgICAgICAgICAgZGVsZXRlIGUuc3RvcCwKLSAgICAgICAgICAgICAgICB0
KHIpCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgcmV0dXJuICJzdHJpbmciICE9IHR5cGVv
ZiBlICYmIChyID0gbiwgbiA9IGUsIGUgPSB0KSwgbiAmJiBlICE9PSAhMSAmJiB0aGlzLnF1ZXVl
KGUgfHwgImZ4IiwgW10pLCB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAg
dmFyIHQgPSAhMCwKLSAgICAgICAgICAgICAgICAgICAgbiA9IG51bGwgIT0gZSAmJiBlICsgInF1
ZXVlSG9va3MiLAotICAgICAgICAgICAgICAgICAgICBvID0gYi50aW1lcnMsCi0gICAgICAgICAg
ICAgICAgICAgIGEgPSBiLl9kYXRhKHRoaXMpOwotICAgICAgICAgICAgICAgIGlmIChuKQotICAg
ICAgICAgICAgICAgICAgICBhW25dICYmIGFbbl0uc3RvcCAmJiBpKGFbbl0pOwotICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZm9yIChuIGluIGEpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBhW25dICYmIGFbbl0uc3RvcCAmJiBKbi50ZXN0KG4pICYmIGkoYVtuXSk7
Ci0gICAgICAgICAgICAgICAgZm9yIChuID0gby5sZW5ndGg7IG4tLTspCi0gICAgICAgICAgICAg
ICAgICAgIG9bbl0uZWxlbSAhPT0gdGhpcyB8fCBudWxsICE9IGUgJiYgb1tuXS5xdWV1ZSAhPT0g
ZSB8fCAob1tuXS5hbmltLnN0b3AociksIHQgPSAhMSwgby5zcGxpY2UobiwgMSkpOwotICAgICAg
ICAgICAgICAgICh0IHx8ICFyKSAmJiBiLmRlcXVldWUodGhpcywgZSkKLSAgICAgICAgICAgIH0p
Ci0gICAgICAgIH0sCi0gICAgICAgIGZpbmlzaDogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAg
cmV0dXJuIGUgIT09ICExICYmIChlID0gZSB8fCAiZngiKSwgdGhpcy5lYWNoKGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICAgIHZhciB0LAotICAgICAgICAgICAgICAgICAgICBuID0gYi5fZGF0
YSh0aGlzKSwKLSAgICAgICAgICAgICAgICAgICAgciA9IG5bZSArICJxdWV1ZSJdLAotICAgICAg
ICAgICAgICAgICAgICBpID0gbltlICsgInF1ZXVlSG9va3MiXSwKLSAgICAgICAgICAgICAgICAg
ICAgbyA9IGIudGltZXJzLAotICAgICAgICAgICAgICAgICAgICBhID0gciA/IHIubGVuZ3RoIDog
MDsKLSAgICAgICAgICAgICAgICBmb3IgKG4uZmluaXNoID0gITAsIGIucXVldWUodGhpcywgZSwg
W10pLCBpICYmIGkuY3VyICYmIGkuY3VyLmZpbmlzaCAmJiBpLmN1ci5maW5pc2guY2FsbCh0aGlz
KSwgdCA9IG8ubGVuZ3RoOyB0LS07KQotICAgICAgICAgICAgICAgICAgICBvW3RdLmVsZW0gPT09
IHRoaXMgJiYgb1t0XS5xdWV1ZSA9PT0gZSAmJiAob1t0XS5hbmltLnN0b3AoITApLCBvLnNwbGlj
ZSh0LCAxKSk7Ci0gICAgICAgICAgICAgICAgZm9yICh0ID0gMDsgYSA+IHQ7IHQrKykKLSAgICAg
ICAgICAgICAgICAgICAgclt0XSAmJiByW3RdLmZpbmlzaCAmJiByW3RdLmZpbmlzaC5jYWxsKHRo
aXMpOwotICAgICAgICAgICAgICAgIGRlbGV0ZSBuLmZpbmlzaAotICAgICAgICAgICAgfSkKLSAg
ICAgICAgfQotICAgIH0pOwotICAgIGZ1bmN0aW9uIGlyKGUsIHQpIHsKLSAgICAgICAgdmFyIG4s
Ci0gICAgICAgICAgICByID0gewotICAgICAgICAgICAgICAgIGhlaWdodDogZQotICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgIGkgPSAwOwotICAgICAgICBmb3IgKHQgPSB0ID8gMSA6IDA7IDQg
PiBpOyBpICs9IDIgLSB0KQotICAgICAgICAgICAgbiA9IFp0W2ldLAotICAgICAgICAgICAgclsi
bWFyZ2luIiArIG5dID0gclsicGFkZGluZyIgKyBuXSA9IGU7Ci0gICAgICAgIHJldHVybiB0ICYm
IChyLm9wYWNpdHkgPSByLndpZHRoID0gZSksIHIKLSAgICB9Ci0gICAgYi5lYWNoKHsKLSAgICAg
ICAgc2xpZGVEb3duOiBpcigic2hvdyIpLAotICAgICAgICBzbGlkZVVwOiBpcigiaGlkZSIpLAot
ICAgICAgICBzbGlkZVRvZ2dsZTogaXIoInRvZ2dsZSIpLAotICAgICAgICBmYWRlSW46IHsKLSAg
ICAgICAgICAgIG9wYWNpdHk6ICJzaG93IgotICAgICAgICB9LAotICAgICAgICBmYWRlT3V0OiB7
Ci0gICAgICAgICAgICBvcGFjaXR5OiAiaGlkZSIKLSAgICAgICAgfSwKLSAgICAgICAgZmFkZVRv
Z2dsZTogewotICAgICAgICAgICAgb3BhY2l0eTogInRvZ2dsZSIKLSAgICAgICAgfQotICAgIH0s
IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgYi5mbltlXSA9IGZ1bmN0aW9uKGUsIG4sIHIpIHsK
LSAgICAgICAgICAgIHJldHVybiB0aGlzLmFuaW1hdGUodCwgZSwgbiwgcikKLSAgICAgICAgfQot
ICAgIH0pLAotICAgIGIuc3BlZWQgPSBmdW5jdGlvbihlLCB0LCBuKSB7Ci0gICAgICAgIHZhciBy
ID0gZSAmJiAib2JqZWN0IiA9PSB0eXBlb2YgZSA/IGIuZXh0ZW5kKHt9LCBlKSA6IHsKLSAgICAg
ICAgICAgIGNvbXBsZXRlOiBuIHx8ICFuICYmIHQgfHwgYi5pc0Z1bmN0aW9uKGUpICYmIGUsCi0g
ICAgICAgICAgICBkdXJhdGlvbjogZSwKLSAgICAgICAgICAgIGVhc2luZzogbiAmJiB0IHx8IHQg
JiYgIWIuaXNGdW5jdGlvbih0KSAmJiB0Ci0gICAgICAgIH07Ci0gICAgICAgIHJldHVybiByLmR1
cmF0aW9uID0gYi5meC5vZmYgPyAwIDogIm51bWJlciIgPT0gdHlwZW9mIHIuZHVyYXRpb24gPyBy
LmR1cmF0aW9uIDogci5kdXJhdGlvbiBpbiBiLmZ4LnNwZWVkcyA/IGIuZnguc3BlZWRzW3IuZHVy
YXRpb25dIDogYi5meC5zcGVlZHMuX2RlZmF1bHQsIChudWxsID09IHIucXVldWUgfHwgci5xdWV1
ZSA9PT0gITApICYmIChyLnF1ZXVlID0gImZ4IiksIHIub2xkID0gci5jb21wbGV0ZSwgci5jb21w
bGV0ZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgYi5pc0Z1bmN0aW9uKHIub2xkKSAmJiBy
Lm9sZC5jYWxsKHRoaXMpLAotICAgICAgICAgICAgci5xdWV1ZSAmJiBiLmRlcXVldWUodGhpcywg
ci5xdWV1ZSkKLSAgICAgICAgfSwgcgotICAgIH0sCi0gICAgYi5lYXNpbmcgPSB7Ci0gICAgICAg
IGxpbmVhcjogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgcmV0dXJuIGUKLSAgICAgICAgfSwK
LSAgICAgICAgc3dpbmc6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHJldHVybiAuNSAtIE1h
dGguY29zKGUgKiBNYXRoLlBJKSAvIDIKLSAgICAgICAgfQotICAgIH0sCi0gICAgYi50aW1lcnMg
PSBbXSwKLSAgICBiLmZ4ID0gcnIucHJvdG90eXBlLmluaXQsCi0gICAgYi5meC50aWNrID0gZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIHZhciBlLAotICAgICAgICAgICAgbiA9IGIudGltZXJzLAotICAg
ICAgICAgICAgciA9IDA7Ci0gICAgICAgIGZvciAoWG4gPSBiLm5vdygpOyBuLmxlbmd0aCA+IHI7
IHIrKykKLSAgICAgICAgICAgIGUgPSBuW3JdLAotICAgICAgICAgICAgZSgpIHx8IG5bcl0gIT09
IGUgfHwgbi5zcGxpY2Uoci0tLCAxKTsKLSAgICAgICAgbi5sZW5ndGggfHwgYi5meC5zdG9wKCks
Ci0gICAgICAgIFhuID0gdAotICAgIH0sCi0gICAgYi5meC50aW1lciA9IGZ1bmN0aW9uKGUpIHsK
LSAgICAgICAgZSgpICYmIGIudGltZXJzLnB1c2goZSkgJiYgYi5meC5zdGFydCgpCi0gICAgfSwK
LSAgICBiLmZ4LmludGVydmFsID0gMTMsCi0gICAgYi5meC5zdGFydCA9IGZ1bmN0aW9uKCkgewot
ICAgICAgICBVbiB8fCAoVW4gPSBzZXRJbnRlcnZhbChiLmZ4LnRpY2ssIGIuZnguaW50ZXJ2YWwp
KQotICAgIH0sCi0gICAgYi5meC5zdG9wID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGNsZWFySW50
ZXJ2YWwoVW4pLAotICAgICAgICBVbiA9IG51bGwKLSAgICB9LAotICAgIGIuZnguc3BlZWRzID0g
ewotICAgICAgICBzbG93OiA2MDAsCi0gICAgICAgIGZhc3Q6IDIwMCwKLSAgICAgICAgX2RlZmF1
bHQ6IDQwMAotICAgIH0sCi0gICAgYi5meC5zdGVwID0ge30sCi0gICAgYi5leHByICYmIGIuZXhw
ci5maWx0ZXJzICYmIChiLmV4cHIuZmlsdGVycy5hbmltYXRlZCA9IGZ1bmN0aW9uKGUpIHsKLSAg
ICAgICAgcmV0dXJuIGIuZ3JlcChiLnRpbWVycywgZnVuY3Rpb24odCkgewotICAgICAgICAgICAg
cmV0dXJuIGUgPT09IHQuZWxlbQotICAgICAgICB9KS5sZW5ndGgKLSAgICB9KSwKLSAgICBiLmZu
Lm9mZnNldCA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGgpCi0g
ICAgICAgICAgICByZXR1cm4gZSA9PT0gdCA/IHRoaXMgOiB0aGlzLmVhY2goZnVuY3Rpb24odCkg
ewotICAgICAgICAgICAgICAgIGIub2Zmc2V0LnNldE9mZnNldCh0aGlzLCBlLCB0KQotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIHZhciBuLAotICAgICAgICAgICAgciwKLSAgICAgICAgICAgIG8g
PSB7Ci0gICAgICAgICAgICAgICAgdG9wOiAwLAotICAgICAgICAgICAgICAgIGxlZnQ6IDAKLSAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICBhID0gdGhpc1swXSwKLSAgICAgICAgICAgIHMgPSBh
ICYmIGEub3duZXJEb2N1bWVudDsKLSAgICAgICAgaWYgKHMpCi0gICAgICAgICAgICByZXR1cm4g
biA9IHMuZG9jdW1lbnRFbGVtZW50LCBiLmNvbnRhaW5zKG4sIGEpID8gKHR5cGVvZiBhLmdldEJv
dW5kaW5nQ2xpZW50UmVjdCAhPT0gaSAmJiAobyA9IGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkp
LCByID0gb3IocyksIHsKLSAgICAgICAgICAgICAgICB0b3A6IG8udG9wICsgKHIucGFnZVlPZmZz
ZXQgfHwgbi5zY3JvbGxUb3ApIC0gKG4uY2xpZW50VG9wIHx8IDApLAotICAgICAgICAgICAgICAg
IGxlZnQ6IG8ubGVmdCArIChyLnBhZ2VYT2Zmc2V0IHx8IG4uc2Nyb2xsTGVmdCkgLSAobi5jbGll
bnRMZWZ0IHx8IDApCi0gICAgICAgICAgICB9KSA6IG8KLSAgICB9LAotICAgIGIub2Zmc2V0ID0g
ewotICAgICAgICBzZXRPZmZzZXQ6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKLSAgICAgICAgICAgIHZh
ciByID0gYi5jc3MoZSwgInBvc2l0aW9uIik7Ci0gICAgICAgICAgICAic3RhdGljIiA9PT0gciAm
JiAoZS5zdHlsZS5wb3NpdGlvbiA9ICJyZWxhdGl2ZSIpOwotICAgICAgICAgICAgdmFyIGkgPSBi
KGUpLAotICAgICAgICAgICAgICAgIG8gPSBpLm9mZnNldCgpLAotICAgICAgICAgICAgICAgIGEg
PSBiLmNzcyhlLCAidG9wIiksCi0gICAgICAgICAgICAgICAgcyA9IGIuY3NzKGUsICJsZWZ0Iiks
Ci0gICAgICAgICAgICAgICAgdSA9ICgiYWJzb2x1dGUiID09PSByIHx8ICJmaXhlZCIgPT09IHIp
ICYmIGIuaW5BcnJheSgiYXV0byIsIFthLCBzXSkgPiAtMSwKLSAgICAgICAgICAgICAgICBsID0g
e30sCi0gICAgICAgICAgICAgICAgYyA9IHt9LAotICAgICAgICAgICAgICAgIHAsCi0gICAgICAg
ICAgICAgICAgZjsKLSAgICAgICAgICAgIHUgPyAoYyA9IGkucG9zaXRpb24oKSwgcCA9IGMudG9w
LCBmID0gYy5sZWZ0KSA6IChwID0gcGFyc2VGbG9hdChhKSB8fCAwLCBmID0gcGFyc2VGbG9hdChz
KSB8fCAwKSwKLSAgICAgICAgICAgIGIuaXNGdW5jdGlvbih0KSAmJiAodCA9IHQuY2FsbChlLCBu
LCBvKSksCi0gICAgICAgICAgICBudWxsICE9IHQudG9wICYmIChsLnRvcCA9IHQudG9wIC0gby50
b3AgKyBwKSwKLSAgICAgICAgICAgIG51bGwgIT0gdC5sZWZ0ICYmIChsLmxlZnQgPSB0LmxlZnQg
LSBvLmxlZnQgKyBmKSwKLSAgICAgICAgICAgICJ1c2luZyIgaW4gdCA/IHQudXNpbmcuY2FsbChl
LCBsKSA6IGkuY3NzKGwpCi0gICAgICAgIH0KLSAgICB9LAotICAgIGIuZm4uZXh0ZW5kKHsKLSAg
ICAgICAgcG9zaXRpb246IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYgKHRoaXNbMF0pIHsK
LSAgICAgICAgICAgICAgICB2YXIgZSwKLSAgICAgICAgICAgICAgICAgICAgdCwKLSAgICAgICAg
ICAgICAgICAgICAgbiA9IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxlZnQ6IDAKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAgICAgciA9IHRoaXNbMF07Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJmaXhl
ZCIgPT09IGIuY3NzKHIsICJwb3NpdGlvbiIpID8gdCA9IHIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCkgOiAoZSA9IHRoaXMub2Zmc2V0UGFyZW50KCksIHQgPSB0aGlzLm9mZnNldCgpLCBiLm5vZGVO
YW1lKGVbMF0sICJodG1sIikgfHwgKG4gPSBlLm9mZnNldCgpKSwgbi50b3AgKz0gYi5jc3MoZVsw
XSwgImJvcmRlclRvcFdpZHRoIiwgITApLCBuLmxlZnQgKz0gYi5jc3MoZVswXSwgImJvcmRlckxl
ZnRXaWR0aCIsICEwKSksIHsKLSAgICAgICAgICAgICAgICAgICAgdG9wOiB0LnRvcCAtIG4udG9w
IC0gYi5jc3MociwgIm1hcmdpblRvcCIsICEwKSwKLSAgICAgICAgICAgICAgICAgICAgbGVmdDog
dC5sZWZ0IC0gbi5sZWZ0IC0gYi5jc3MociwgIm1hcmdpbkxlZnQiLCAhMCkKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgIG9mZnNldFBhcmVudDog
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLm9mZnNldFBhcmVudCB8fCBvLmRvY3VtZW50RWxl
bWVudDsKLSAgICAgICAgICAgICAgICB3aGlsZSAoZSAmJiAhYi5ub2RlTmFtZShlLCAiaHRtbCIp
ICYmICJzdGF0aWMiID09PSBiLmNzcyhlLCAicG9zaXRpb24iKSkKLSAgICAgICAgICAgICAgICAg
ICAgZSA9IGUub2Zmc2V0UGFyZW50OwotICAgICAgICAgICAgICAgIHJldHVybiBlIHx8IG8uZG9j
dW1lbnRFbGVtZW50Ci0gICAgICAgICAgICB9KQotICAgICAgICB9Ci0gICAgfSksCi0gICAgYi5l
YWNoKHsKLSAgICAgICAgc2Nyb2xsTGVmdDogInBhZ2VYT2Zmc2V0IiwKLSAgICAgICAgc2Nyb2xs
VG9wOiAicGFnZVlPZmZzZXQiCi0gICAgfSwgZnVuY3Rpb24oZSwgbikgewotICAgICAgICB2YXIg
ciA9IC9ZLy50ZXN0KG4pOwotICAgICAgICBiLmZuW2VdID0gZnVuY3Rpb24oaSkgewotICAgICAg
ICAgICAgcmV0dXJuIGIuYWNjZXNzKHRoaXMsIGZ1bmN0aW9uKGUsIGksIG8pIHsKLSAgICAgICAg
ICAgICAgICB2YXIgYSA9IG9yKGUpOwotICAgICAgICAgICAgICAgIHJldHVybiBvID09PSB0ID8g
YSA/IG4gaW4gYSA/IGFbbl0gOiBhLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtpXSA6IGVbaV0g
OiAoYSA/IGEuc2Nyb2xsVG8ociA/IGIoYSkuc2Nyb2xsTGVmdCgpIDogbywgciA/IG8gOiBiKGEp
LnNjcm9sbFRvcCgpKSA6IGVbaV0gPSBvLCB0KQotICAgICAgICAgICAgfSwgZSwgaSwgYXJndW1l
bnRzLmxlbmd0aCwgbnVsbCkKLSAgICAgICAgfQotICAgIH0pOwotICAgIGZ1bmN0aW9uIG9yKGUp
IHsKLSAgICAgICAgcmV0dXJuIGIuaXNXaW5kb3coZSkgPyBlIDogOSA9PT0gZS5ub2RlVHlwZSA/
IGUuZGVmYXVsdFZpZXcgfHwgZS5wYXJlbnRXaW5kb3cgOiAhMQotICAgIH0KLSAgICBiLmVhY2go
ewotICAgICAgICBIZWlnaHQ6ICJoZWlnaHQiLAotICAgICAgICBXaWR0aDogIndpZHRoIgotICAg
IH0sIGZ1bmN0aW9uKGUsIG4pIHsKLSAgICAgICAgYi5lYWNoKHsKLSAgICAgICAgICAgIHBhZGRp
bmc6ICJpbm5lciIgKyBlLAotICAgICAgICAgICAgY29udGVudDogbiwKLSAgICAgICAgICAgICIi
OiAib3V0ZXIiICsgZQotICAgICAgICB9LCBmdW5jdGlvbihyLCBpKSB7Ci0gICAgICAgICAgICBi
LmZuW2ldID0gZnVuY3Rpb24oaSwgbykgewotICAgICAgICAgICAgICAgIHZhciBhID0gYXJndW1l
bnRzLmxlbmd0aCAmJiAociB8fCAiYm9vbGVhbiIgIT0gdHlwZW9mIGkpLAotICAgICAgICAgICAg
ICAgICAgICBzID0gciB8fCAoaSA9PT0gITAgfHwgbyA9PT0gITAgPyAibWFyZ2luIiA6ICJib3Jk
ZXIiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gYi5hY2Nlc3ModGhpcywgZnVuY3Rpb24obiwg
ciwgaSkgewotICAgICAgICAgICAgICAgICAgICB2YXIgbzsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGIuaXNXaW5kb3cobikgPyBuLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50
IiArIGVdIDogOSA9PT0gbi5ub2RlVHlwZSA/IChvID0gbi5kb2N1bWVudEVsZW1lbnQsIE1hdGgu
bWF4KG4uYm9keVsic2Nyb2xsIiArIGVdLCBvWyJzY3JvbGwiICsgZV0sIG4uYm9keVsib2Zmc2V0
IiArIGVdLCBvWyJvZmZzZXQiICsgZV0sIG9bImNsaWVudCIgKyBlXSkpIDogaSA9PT0gdCA/IGIu
Y3NzKG4sIHIsIHMpIDogYi5zdHlsZShuLCByLCBpLCBzKQotICAgICAgICAgICAgICAgIH0sIG4s
IGEgPyBpIDogdCwgYSwgbnVsbCkKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSkKLSAgICB9KSwK
LSAgICBlLmpRdWVyeSA9IGUuJCA9IGIsCi0gICAgImZ1bmN0aW9uIiA9PSB0eXBlb2YgZGVmaW5l
ICYmIGRlZmluZS5hbWQgJiYgZGVmaW5lLmFtZC5qUXVlcnkgJiYgZGVmaW5lKCJqcXVlcnkiLCBb
XSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJldHVybiBiCi0gICAgfSkKLX0pKHdpbmRvdyk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2
YXNjcmlwdC10ZXN0cy9zYW1wbGUtbm9ybWFsLXV0aWxpdGllcy1leHBlY3RlZC5qcyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3Nh
bXBsZS1ub3JtYWwtdXRpbGl0aWVzLWV4cGVjdGVkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA1ZTZjMjI2NTlmMGNkYWI3ZTRlMWQyYTkxYmYzY2QzODEwYTc4N2MxLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3NhbXBsZS1ub3JtYWwt
dXRpbGl0aWVzLWV4cGVjdGVkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTI2OCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotdmFyIGVtRGFzaCA9ICJcdTIwMTQiOwotdmFyIGVuRGFzaCA9ICJcdTIwMTMi
OwotdmFyIGVsbGlwc2lzID0gIlx1MjAyNiI7Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmpl
Y3QsICJzaGFsbG93Q29weSIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKG9iamVjdCkKLSAgICB7
Ci0gICAgICAgIC8vIE1ha2UgYSBuZXcgb2JqZWN0IGFuZCBjb3B5IGFsbCB0aGUga2V5L3ZhbHVl
cy4gVGhlIHZhbHVlcyBhcmUgbm90IGNvcGllZC4KLSAgICAgICAgdmFyIGNvcHkgPSB7fTsKLSAg
ICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOwotICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBjb3B5W2tleXNbaV1dID0g
b2JqZWN0W2tleXNbaV1dOwotICAgICAgICByZXR1cm4gY29weTsKLSAgICB9Ci19KTsKLQotT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdCwgInNoYWxsb3dFcXVhbCIsCi17Ci0gICAgdmFsdWU6
IGZ1bmN0aW9uKGEsIGIpCi0gICAgewotICAgICAgICAvLyBDaGVja3MgaWYgdHdvIG9iamVjdHMg
aGF2ZSB0aGUgc2FtZSB0b3AtbGV2ZWwgcHJvcGVydGllcy4KLQotICAgICAgICAvLyBDaGVjayBm
b3Igc3RyaWN0IGVxdWFsaXR5IGluIGNhc2UgdGhleSBhcmUgdGhlIHNhbWUgb2JqZWN0LgotICAg
ICAgICBpZiAoYSA9PT0gYikKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIC8v
IE9ubHkgb2JqZWN0cyBjYW4gcHJvY2VlZC4gbnVsbCBpcyBhbiBvYmplY3QsIGJ1dCBPYmplY3Qu
a2V5cyB0aHJvd3MgZm9yIG51bGwuCi0gICAgICAgIGlmICh0eXBlb2YgYSAhPT0gIm9iamVjdCIg
fHwgdHlwZW9mIGIgIT09ICJvYmplY3QiIHx8IGEgPT09IG51bGwgfHwgYiA9PT0gbnVsbCkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICB2YXIgYUtleXMgPSBPYmplY3Qua2V5
cyhhKTsKLSAgICAgICAgdmFyIGJLZXlzID0gT2JqZWN0LmtleXMoYik7Ci0KLSAgICAgICAgLy8g
Q2hlY2sgdGhhdCBlYWNoIG9iamVjdCBoYXMgdGhlIHNhbWUgbnVtYmVyIG9mIGtleXMuCi0gICAg
ICAgIGlmIChhS2V5cy5sZW5ndGggIT09IGJLZXlzLmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgICAgICAvLyBDaGVjayBpZiBhbGwgdGhlIGtleXMgYW5kIHRoZWlyIHZh
bHVlcyBhcmUgZXF1YWwuCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYUtleXMubGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgYiBoYXMgdGhlIHNhbWUga2V5IGFz
IGEuCi0gICAgICAgICAgICBpZiAoIShhS2V5c1tpXSBpbiBiKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIHZhbHVlcyBhcmUg
c3RyaWN0IGVxdWFsIHNpbmNlIHRoaXMgaXMgb25seQotICAgICAgICAgICAgLy8gYSBzaGFsbG93
IGNoZWNrLCBub3QgYSByZWN1cnNpdmUgb25lLgotICAgICAgICAgICAgaWYgKGFbYUtleXNbaV1d
ICE9PSBiW2FLZXlzW2ldXSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVBy
b3BlcnR5KE9iamVjdC5wcm90b3R5cGUsICJ2YWx1ZUZvckNhc2VJbnNlbnNpdGl2ZUtleSIsCi17
Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKGtleSkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLmhhc093
blByb3BlcnR5KGtleSkpCi0gICAgICAgICAgICByZXR1cm4gdGhpc1trZXldOwotCi0gICAgICAg
IHZhciBsb3dlckNhc2VLZXkgPSBrZXkudG9Mb3dlckNhc2UoKTsKLSAgICAgICAgZm9yICh2YXIg
Y3VycmVudEtleSBpbiB0aGlzKSB7Ci0gICAgICAgICAgICBpZiAoY3VycmVudEtleS50b0xvd2Vy
Q2FzZSgpID09PSBsb3dlckNhc2VLZXkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbY3Vy
cmVudEtleV07Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwotICAgIH0K
LX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoTWFwLCAiZnJvbU9iamVjdCIsCi17Ci0gICAg
dmFsdWU6IGZ1bmN0aW9uKG9iamVjdCkKLSAgICB7Ci0gICAgICAgIGxldCBtYXAgPSBuZXcgTWFw
OwotICAgICAgICBmb3IgKGxldCBrZXkgaW4gb2JqZWN0KQotICAgICAgICAgICAgbWFwLnNldChr
ZXksIG9iamVjdFtrZXldKTsKLSAgICAgICAgcmV0dXJuIG1hcDsKLSAgICB9Ci19KTsKLQotT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KE1hcC5wcm90b3R5cGUsICJ0YWtlIiwKLXsKLSAgICB2YWx1ZTog
ZnVuY3Rpb24oa2V5KQotICAgIHsKLSAgICAgICAgdmFyIGRlbGV0ZWRWYWx1ZSA9IHRoaXMuZ2V0
KGtleSk7Ci0gICAgICAgIHRoaXMuZGVsZXRlKGtleSk7Ci0gICAgICAgIHJldHVybiBkZWxldGVk
VmFsdWU7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlw
ZSwgImVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MiLAotewotICAgIHZhbHVlOiBmdW5jdGlv
bihjbGFzc05hbWUpCi0gICAgewotICAgICAgICBmb3IgKHZhciBub2RlID0gdGhpczsgbm9kZSAm
JiBub2RlICE9PSB0aGlzLm93bmVyRG9jdW1lbnQ7IG5vZGUgPSBub2RlLnBhcmVudE5vZGUpCi0g
ICAgICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiYgbm9k
ZS5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
bm9kZTsKLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShOb2RlLnByb3RvdHlwZSwgImVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5hbWVJ
bkFycmF5IiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24obmFtZUFycmF5KQotICAgIHsKLSAgICAg
ICAgdmFyIGxvd2VyQ2FzZU5hbWVBcnJheSA9IG5hbWVBcnJheS5tYXAoZnVuY3Rpb24obmFtZSkg
ewotICAgICAgICAgICAgcmV0dXJuIG5hbWUudG9Mb3dlckNhc2UoKTsKLSAgICAgICAgfSk7Ci0g
ICAgICAgIGZvciAodmFyIG5vZGUgPSB0aGlzOyBub2RlICYmIG5vZGUgIT09IHRoaXMub3duZXJE
b2N1bWVudDsgbm9kZSA9IG5vZGUucGFyZW50Tm9kZSkgewotICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBuYW1lQXJyYXkubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBpZiAo
bm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBsb3dlckNhc2VOYW1lQXJyYXlbaV0pCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShOb2RlLnByb3RvdHlwZSwgImVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5hbWUiLAot
ewotICAgIHZhbHVlOiBmdW5jdGlvbihub2RlTmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzLmVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5hbWVJbkFycmF5KFtub2RlTmFtZV0pOwot
ICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZS5wcm90b3R5cGUsICJpc0Fu
Y2VzdG9yIiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24obm9kZSkKLSAgICB7Ci0gICAgICAgIGlm
ICghbm9kZSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICB2YXIgY3VycmVu
dE5vZGUgPSBub2RlLnBhcmVudE5vZGU7Ci0gICAgICAgIHdoaWxlIChjdXJyZW50Tm9kZSkgewot
ICAgICAgICAgICAgaWYgKHRoaXMgPT09IGN1cnJlbnROb2RlKQotICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5wYXJlbnRO
b2RlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0pOwotCi1P
YmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZS5wcm90b3R5cGUsICJpc0Rlc2NlbmRhbnQiLAotewot
ICAgIHZhbHVlOiBmdW5jdGlvbihkZXNjZW5kYW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuICEh
ZGVzY2VuZGFudCAmJiBkZXNjZW5kYW50LmlzQW5jZXN0b3IodGhpcyk7Ci0gICAgfQotfSk7Ci0K
LQotT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBlLCAiaXNTZWxmT3JBbmNlc3Rv
ciIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKG5vZGUpCi0gICAgewotICAgICAgICByZXR1cm4g
ISFub2RlICYmIChub2RlID09PSB0aGlzIHx8IHRoaXMuaXNBbmNlc3Rvcihub2RlKSk7Ci0gICAg
fQotfSk7Ci0KLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBlLCAiaXNTZWxm
T3JEZXNjZW5kYW50IiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24obm9kZSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiAhIW5vZGUgJiYgKG5vZGUgPT09IHRoaXMgfHwgdGhpcy5pc0Rlc2NlbmRhbnQo
bm9kZSkpOwotICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZS5wcm90b3R5
cGUsICJ0cmF2ZXJzZU5leHROb2RlIiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24oc3RheVdpdGhp
bikKLSAgICB7Ci0gICAgICAgIHZhciBub2RlID0gdGhpcy5maXJzdENoaWxkOwotICAgICAgICBp
ZiAobm9kZSkKLSAgICAgICAgICAgIHJldHVybiBub2RlOwotCi0gICAgICAgIGlmIChzdGF5V2l0
aGluICYmIHRoaXMgPT09IHN0YXlXaXRoaW4pCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLQot
ICAgICAgICBub2RlID0gdGhpcy5uZXh0U2libGluZzsKLSAgICAgICAgaWYgKG5vZGUpCi0gICAg
ICAgICAgICByZXR1cm4gbm9kZTsKLQotICAgICAgICBub2RlID0gdGhpczsKLSAgICAgICAgd2hp
bGUgKG5vZGUgJiYgIW5vZGUubmV4dFNpYmxpbmcgJiYgKCFzdGF5V2l0aGluIHx8ICFub2RlLnBh
cmVudE5vZGUgfHwgbm9kZS5wYXJlbnROb2RlICE9PSBzdGF5V2l0aGluKSkKLSAgICAgICAgICAg
IG5vZGUgPSBub2RlLnBhcmVudE5vZGU7Ci0gICAgICAgIGlmICghbm9kZSkKLSAgICAgICAgICAg
IHJldHVybiBudWxsOwotCi0gICAgICAgIHJldHVybiBub2RlLm5leHRTaWJsaW5nOwotICAgIH0K
LX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZS5wcm90b3R5cGUsICJ0cmF2ZXJzZVBy
ZXZpb3VzTm9kZSIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKHN0YXlXaXRoaW4pCi0gICAgewot
ICAgICAgICBpZiAoc3RheVdpdGhpbiAmJiB0aGlzID09PSBzdGF5V2l0aGluKQotICAgICAgICAg
ICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIHZhciBub2RlID0gdGhpcy5wcmV2aW91c1NpYmxpbmc7
Ci0gICAgICAgIHdoaWxlIChub2RlICYmIG5vZGUubGFzdENoaWxkKQotICAgICAgICAgICAgbm9k
ZSA9IG5vZGUubGFzdENoaWxkOwotICAgICAgICBpZiAobm9kZSkKLSAgICAgICAgICAgIHJldHVy
biBub2RlOwotICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnROb2RlOwotICAgIH0KLX0pOwotCi0K
LU9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlwZSwgInJhbmdlT2ZXb3JkIiwKLXsK
LSAgICB2YWx1ZTogZnVuY3Rpb24ob2Zmc2V0LCBzdG9wQ2hhcmFjdGVycywgc3RheVdpdGhpbk5v
ZGUsIGRpcmVjdGlvbikKLSAgICB7Ci0gICAgICAgIHZhciBzdGFydE5vZGU7Ci0gICAgICAgIHZh
ciBzdGFydE9mZnNldCA9IDA7Ci0gICAgICAgIHZhciBlbmROb2RlOwotICAgICAgICB2YXIgZW5k
T2Zmc2V0ID0gMDsKLQotICAgICAgICBpZiAoIXN0YXlXaXRoaW5Ob2RlKQotICAgICAgICAgICAg
c3RheVdpdGhpbk5vZGUgPSB0aGlzOwotCi0gICAgICAgIGlmICghZGlyZWN0aW9uIHx8IGRpcmVj
dGlvbiA9PT0gImJhY2t3YXJkIiB8fCBkaXJlY3Rpb24gPT09ICJib3RoIikgewotICAgICAgICAg
ICAgdmFyIG5vZGUgPSB0aGlzOwotICAgICAgICAgICAgd2hpbGUgKG5vZGUpIHsKLSAgICAgICAg
ICAgICAgICBpZiAobm9kZSA9PT0gc3RheVdpdGhpbk5vZGUpIHsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCFzdGFydE5vZGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGFydE5vZGUgPSBz
dGF5V2l0aGluTm9kZTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9O
T0RFKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBzdGFydCA9IChub2RlID09PSB0aGlzID8g
KG9mZnNldCAtIDEpIDogKG5vZGUubm9kZVZhbHVlLmxlbmd0aCAtIDEpKTsKLSAgICAgICAgICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpID49IDA7IC0taSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHN0b3BDaGFyYWN0ZXJzLmluZGV4T2Yobm9kZS5ub2RlVmFsdWVbaV0p
ICE9PSAtMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Tm9kZSA9IG5vZGU7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQgPSBpICsgMTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgIGlmIChzdGFydE5vZGUpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
ICAgICAgICAgbm9kZSA9IG5vZGUudHJhdmVyc2VQcmV2aW91c05vZGUoc3RheVdpdGhpbk5vZGUp
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIXN0YXJ0Tm9kZSkgewotICAgICAg
ICAgICAgICAgIHN0YXJ0Tm9kZSA9IHN0YXlXaXRoaW5Ob2RlOwotICAgICAgICAgICAgICAgIHN0
YXJ0T2Zmc2V0ID0gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIHN0YXJ0Tm9kZSA9IHRoaXM7Ci0gICAgICAgICAgICBzdGFydE9mZnNldCA9IG9mZnNldDsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmICghZGlyZWN0aW9uIHx8IGRpcmVjdGlvbiA9PT0gImZv
cndhcmQiIHx8IGRpcmVjdGlvbiA9PT0gImJvdGgiKSB7Ci0gICAgICAgICAgICBub2RlID0gdGhp
czsKLSAgICAgICAgICAgIHdoaWxlIChub2RlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUg
PT09IHN0YXlXaXRoaW5Ob2RlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghZW5kTm9kZSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIGVuZE5vZGUgPSBzdGF5V2l0aGluTm9kZTsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHZhciBzdGFydCA9IChub2RlID09PSB0aGlzID8gb2Zmc2V0IDogMCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IG5vZGUubm9kZVZhbHVlLmxlbmd0
aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RvcENoYXJhY3RlcnMuaW5k
ZXhPZihub2RlLm5vZGVWYWx1ZVtpXSkgIT09IC0xKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZW5kTm9kZSA9IG5vZGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kT2Zm
c2V0ID0gaTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgIGlmIChlbmROb2RlKQotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLQotICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLnRyYXZlcnNlTmV4dE5vZGUoc3RheVdp
dGhpbk5vZGUpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIWVuZE5vZGUpIHsK
LSAgICAgICAgICAgICAgICBlbmROb2RlID0gc3RheVdpdGhpbk5vZGU7Ci0gICAgICAgICAgICAg
ICAgZW5kT2Zmc2V0ID0gc3RheVdpdGhpbk5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RF
ID8gc3RheVdpdGhpbk5vZGUubm9kZVZhbHVlLmxlbmd0aCA6IHN0YXlXaXRoaW5Ob2RlLmNoaWxk
Tm9kZXMubGVuZ3RoOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgZW5kTm9kZSA9IHRoaXM7Ci0gICAgICAgICAgICBlbmRPZmZzZXQgPSBvZmZzZXQ7Ci0gICAg
ICAgIH0KLQotICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7Ci0gICAgICAgIHJlc3VsdC5zZXRTdGFydChzdGFydE5vZGUsIHN0YXJ0T2Zmc2V0KTsK
LSAgICAgICAgcmVzdWx0LnNldEVuZChlbmROb2RlLCBlbmRPZmZzZXQpOwotCi0gICAgICAgIHJl
dHVybiByZXN1bHQ7Ci0KLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KEVsZW1l
bnQucHJvdG90eXBlLCAicmVhbE9mZnNldFdpZHRoIiwKLXsKLSAgICBnZXQ6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRo
OwotICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoRWxlbWVudC5wcm90b3R5cGUs
ICJyZWFsT2Zmc2V0SGVpZ2h0IiwKLXsKLSAgICBnZXQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDsKLSAgICB9Ci19
KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KEVsZW1lbnQucHJvdG90eXBlLCAidG90YWxPZmZz
ZXRMZWZ0IiwKLXsKLSAgICBnZXQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShFbGVtZW50LnByb3RvdHlwZSwgInRvdGFsT2Zmc2V0VG9wIiwKLXsKLSAg
ICBnZXQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpLnRvcDsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KEVs
ZW1lbnQucHJvdG90eXBlLCAicmVtb3ZlQ2hpbGRyZW4iLAotewotICAgIHZhbHVlOiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICAvLyBUaGlzIGhhcyBiZWVuIHRlc3RlZCB0byBiZSB0aGUgZmFz
dGVzdCByZW1vdmFsIG1ldGhvZC4KLSAgICAgICAgaWYgKHRoaXMuZmlyc3RDaGlsZCkKLSAgICAg
ICAgICAgIHRoaXMudGV4dENvbnRlbnQgPSAiIjsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KEVsZW1lbnQucHJvdG90eXBlLCAiaXNJbnNlcnRpb25DYXJldEluc2lkZSIsCi17
Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBzZWxlY3Rpb24gPSB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Ci0gICAgICAgIGlmICghc2VsZWN0aW9uLnJhbmdlQ291bnQg
fHwgIXNlbGVjdGlvbi5pc0NvbGxhcHNlZCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgdmFyIHNlbGVjdGlvblJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7Ci0gICAg
ICAgIHJldHVybiBzZWxlY3Rpb25SYW5nZS5zdGFydENvbnRhaW5lciA9PT0gdGhpcyB8fCBzZWxl
Y3Rpb25SYW5nZS5zdGFydENvbnRhaW5lci5pc0Rlc2NlbmRhbnQodGhpcyk7Ci0gICAgfQotfSk7
Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShFbGVtZW50LnByb3RvdHlwZSwgInJlbW92ZU1hdGNo
aW5nU3R5bGVDbGFzc2VzIiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24oY2xhc3NOYW1lUmVnZXgp
Ci0gICAgewotICAgICAgICB2YXIgcmVnZXggPSBuZXcgUmVnRXhwKCIoXnxcXHMrKSIgKyBjbGFz
c05hbWVSZWdleCArICIoJHxcXHMrKSIpOwotICAgICAgICBpZiAocmVnZXgudGVzdCh0aGlzLmNs
YXNzTmFtZSkpCi0gICAgICAgICAgICB0aGlzLmNsYXNzTmFtZSA9IHRoaXMuY2xhc3NOYW1lLnJl
cGxhY2UocmVnZXgsICIgIik7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShF
bGVtZW50LnByb3RvdHlwZSwgImNyZWF0ZUNoaWxkIiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24o
ZWxlbWVudE5hbWUsIGNsYXNzTmFtZSkKLSAgICB7Ci0gICAgICAgIHZhciBlbGVtZW50ID0gdGhp
cy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZWxlbWVudE5hbWUpOwotICAgICAgICBpZiAo
Y2xhc3NOYW1lKQotICAgICAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSBjbGFzc05hbWU7Ci0g
ICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQoZWxlbWVudCk7Ci0gICAgICAgIHJldHVybiBlbGVtZW50
OwotICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoRWxlbWVudC5wcm90b3R5cGUs
ICJpc1Njcm9sbGVkVG9Cb3R0b20iLAotewotICAgIHZhbHVlOiBmdW5jdGlvbigpCi0gICAgewot
ICAgICAgICAvLyBUaGlzIGNvZGUgd29ya3Mgb25seSBmb3IgMC13aWR0aCBib3JkZXIKLSAgICAg
ICAgcmV0dXJuIHRoaXMuc2Nyb2xsVG9wICsgdGhpcy5jbGllbnRIZWlnaHQgPT09IHRoaXMuc2Ny
b2xsSGVpZ2h0OwotICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoRWxlbWVudC5w
cm90b3R5cGUsICJyZWNhbGN1bGF0ZVN0eWxlcyIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHRoaXMub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRl
ZFN0eWxlKHRoaXMpOwotICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoRG9jdW1l
bnRGcmFnbWVudC5wcm90b3R5cGUsICJjcmVhdGVDaGlsZCIsCi17Ci0gICAgdmFsdWU6IEVsZW1l
bnQucHJvdG90eXBlLmNyZWF0ZUNoaWxkCi19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KEFy
cmF5LnByb3RvdHlwZSwgImxhc3RWYWx1ZSIsCi17Ci0gICAgZ2V0OiBmdW5jdGlvbigpCi0gICAg
ewotICAgICAgICBpZiAoIXRoaXMubGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5l
ZDsKLSAgICAgICAgcmV0dXJuIHRoaXNbdGhpcy5sZW5ndGggLSAxXTsKLSAgICB9Ci19KTsKLQot
T2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgInJlbW92ZSIsCi17Ci0gICAg
dmFsdWU6IGZ1bmN0aW9uKHZhbHVlLCBvbmx5Rmlyc3QpCi0gICAgewotICAgICAgICBmb3IgKHZh
ciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewotICAgICAgICAgICAgaWYgKHRo
aXNbaV0gPT09IHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5zcGxpY2UoaSwgMSk7Ci0g
ICAgICAgICAgICAgICAgaWYgKG9ubHlGaXJzdCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShBcnJheS5wcm90b3R5cGUsICJpbnNlcnRBdEluZGV4IiwKLXsKLSAgICB2YWx1ZTog
ZnVuY3Rpb24odmFsdWUsIGluZGV4KQotICAgIHsKLSAgICAgICAgdGhpcy5zcGxpY2UoaW5kZXgs
IDAsIHZhbHVlKTsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnBy
b3RvdHlwZSwgImtleVNldCIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIGxldCBrZXlzID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKLSAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0aGlzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAga2V5c1t0aGlzW2ldXSA9IHRy
dWU7Ci0gICAgICAgIHJldHVybiBrZXlzOwotICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJv
cGVydHkoQXJyYXkucHJvdG90eXBlLCAicGFydGl0aW9uIiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rp
b24oY2FsbGJhY2spCi0gICAgewotICAgICAgICBsZXQgcG9zaXRpdmUgPSBbXTsKLSAgICAgICAg
bGV0IG5lZ2F0aXZlID0gW107Ci0gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZW5n
dGg7ICsraSkgewotICAgICAgICAgICAgbGV0IHZhbHVlID0gdGhpc1tpXTsKLSAgICAgICAgICAg
IGlmIChjYWxsYmFjayh2YWx1ZSkpCi0gICAgICAgICAgICAgICAgcG9zaXRpdmUucHVzaCh2YWx1
ZSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbmVnYXRpdmUucHVzaCh2YWx1
ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFtwb3NpdGl2ZSwgbmVnYXRpdmVdOwotICAg
IH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoU3RyaW5nLnByb3RvdHlwZSwgInRyaW1N
aWRkbGUiLAotewotICAgIHZhbHVlOiBmdW5jdGlvbihtYXhMZW5ndGgpCi0gICAgewotICAgICAg
ICBpZiAodGhpcy5sZW5ndGggPD0gbWF4TGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIHRoaXM7
Ci0gICAgICAgIHZhciBsZWZ0SGFsZiA9IG1heExlbmd0aCA+PiAxOwotICAgICAgICB2YXIgcmln
aHRIYWxmID0gbWF4TGVuZ3RoIC0gbGVmdEhhbGYgLSAxOwotICAgICAgICByZXR1cm4gdGhpcy5z
dWJzdHIoMCwgbGVmdEhhbGYpICsgZWxsaXBzaXMgKyB0aGlzLnN1YnN0cih0aGlzLmxlbmd0aCAt
IHJpZ2h0SGFsZiwgcmlnaHRIYWxmKTsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3Bl
cnR5KFN0cmluZy5wcm90b3R5cGUsICJ0cmltRW5kIiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24o
bWF4TGVuZ3RoKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMubGVuZ3RoIDw9IG1heExlbmd0aCkK
LSAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICByZXR1cm4gdGhpcy5zdWJzdHIoMCwg
bWF4TGVuZ3RoIC0gMSkgKyBlbGxpcHNpczsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVBy
b3BlcnR5KFN0cmluZy5wcm90b3R5cGUsICJ0cnVuY2F0ZSIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0
aW9uKG1heExlbmd0aCkKLSAgICB7Ci0gICAgICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgICAgICBp
ZiAodGhpcy5sZW5ndGggPD0gbWF4TGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0K
LSAgICAgICAgbGV0IGNsaXBwZWQgPSB0aGlzLnNsaWNlKDAsIG1heExlbmd0aCk7Ci0gICAgICAg
IGxldCBpbmRleE9mTGFzdFdoaXRlc3BhY2UgPSBjbGlwcGVkLnNlYXJjaCgvXHNcUyokLyk7Ci0g
ICAgICAgIGlmIChpbmRleE9mTGFzdFdoaXRlc3BhY2UgPiBNYXRoLmZsb29yKG1heExlbmd0aCAv
IDIpKQotICAgICAgICAgICAgY2xpcHBlZCA9IGNsaXBwZWQuc2xpY2UoMCwgaW5kZXhPZkxhc3RX
aGl0ZXNwYWNlIC0gMSk7Ci0KLSAgICAgICAgcmV0dXJuIGNsaXBwZWQgKyBlbGxpcHNpczsKLSAg
ICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KFN0cmluZy5wcm90b3R5cGUsICJjb2xs
YXBzZVdoaXRlc3BhY2UiLAotewotICAgIHZhbHVlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICByZXR1cm4gdGhpcy5yZXBsYWNlKC9bXHNceEEwXSsvZywgIiAiKTsKLSAgICB9Ci19KTsKLQot
T2JqZWN0LmRlZmluZVByb3BlcnR5KFN0cmluZy5wcm90b3R5cGUsICJlc2NhcGVDaGFyYWN0ZXJz
IiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24oY2hhcnMpCi0gICAgewotICAgICAgICB2YXIgZm91
bmRDaGFyID0gZmFsc2U7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hhcnMubGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgICAgIGlmICh0aGlzLmluZGV4T2YoY2hhcnMuY2hhckF0KGkpKSAh
PT0gLTEpIHsKLSAgICAgICAgICAgICAgICBmb3VuZENoYXIgPSB0cnVlOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFmb3Vu
ZENoYXIpCi0gICAgICAgICAgICByZXR1cm4gdGhpczsKLQotICAgICAgICB2YXIgcmVzdWx0ID0g
IiI7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7ICsraSkgewotICAg
ICAgICAgICAgaWYgKGNoYXJzLmluZGV4T2YodGhpcy5jaGFyQXQoaSkpICE9PSAtMSkKLSAgICAg
ICAgICAgICAgICByZXN1bHQgKz0gIlxcIjsKLSAgICAgICAgICAgIHJlc3VsdCArPSB0aGlzLmNo
YXJBdChpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotfSk7
Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShTdHJpbmcucHJvdG90eXBlLCAiZXNjYXBlRm9yUmVn
RXhwIiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuZXNjYXBlQ2hhcmFjdGVycygiXltde30oKVxcLiQqKz98Iik7Ci0gICAgfQotfSk7Ci0KLU9i
amVjdC5kZWZpbmVQcm9wZXJ0eShTdHJpbmcucHJvdG90eXBlLCAiY2FwaXRhbGl6ZSIsCi17Ci0g
ICAgdmFsdWU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmNoYXJBdCgw
KS50b1VwcGVyQ2FzZSgpICsgdGhpcy5zbGljZSgxKTsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRl
ZmluZVByb3BlcnR5KFN0cmluZywgInRva2VuaXplRm9ybWF0U3RyaW5nIiwKLXsKLSAgICB2YWx1
ZTogZnVuY3Rpb24oZm9ybWF0KQotICAgIHsKLSAgICAgICAgdmFyIHRva2VucyA9IFtdOwotICAg
ICAgICB2YXIgc3Vic3RpdHV0aW9uSW5kZXggPSAwOwotCi0gICAgICAgIGZ1bmN0aW9uIGFkZFN0
cmluZ1Rva2VuKHN0cikKLSAgICAgICAgewotICAgICAgICAgICAgdG9rZW5zLnB1c2goewotICAg
ICAgICAgICAgICAgIHR5cGU6ICJzdHJpbmciLAotICAgICAgICAgICAgICAgIHZhbHVlOiBzdHIK
LSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYWRkU3BlY2lm
aWVyVG9rZW4oc3BlY2lmaWVyLCBwcmVjaXNpb24sIHN1YnN0aXR1dGlvbkluZGV4KQotICAgICAg
ICB7Ci0gICAgICAgICAgICB0b2tlbnMucHVzaCh7Ci0gICAgICAgICAgICAgICAgdHlwZTogInNw
ZWNpZmllciIsCi0gICAgICAgICAgICAgICAgc3BlY2lmaWVyLAotICAgICAgICAgICAgICAgIHBy
ZWNpc2lvbiwKLSAgICAgICAgICAgICAgICBzdWJzdGl0dXRpb25JbmRleAotICAgICAgICAgICAg
fSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgaW5kZXggPSAwOwotICAgICAgICBmb3IgKHZh
ciBwcmVjZW50SW5kZXggPSBmb3JtYXQuaW5kZXhPZigiJSIsIGluZGV4KTsgcHJlY2VudEluZGV4
ICE9PSAtMTsgcHJlY2VudEluZGV4ID0gZm9ybWF0LmluZGV4T2YoIiUiLCBpbmRleCkpIHsKLSAg
ICAgICAgICAgIGFkZFN0cmluZ1Rva2VuKGZvcm1hdC5zdWJzdHJpbmcoaW5kZXgsIHByZWNlbnRJ
bmRleCkpOwotICAgICAgICAgICAgaW5kZXggPSBwcmVjZW50SW5kZXggKyAxOwotCi0gICAgICAg
ICAgICBpZiAoZm9ybWF0W2luZGV4XSA9PT0gIiUiKSB7Ci0gICAgICAgICAgICAgICAgYWRkU3Ry
aW5nVG9rZW4oIiUiKTsKLSAgICAgICAgICAgICAgICArK2luZGV4OwotICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIWlzTmFOKGZvcm1h
dFtpbmRleF0pKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIGZpcnN0IGNoYXJhY3RlciBpcyBh
IG51bWJlciwgaXQgbWlnaHQgYmUgYSBzdWJzdGl0dXRpb24gaW5kZXguCi0gICAgICAgICAgICAg
ICAgdmFyIG51bWJlciA9IHBhcnNlSW50KGZvcm1hdC5zdWJzdHJpbmcoaW5kZXgpLCAxMCk7Ci0g
ICAgICAgICAgICAgICAgd2hpbGUgKCFpc05hTihmb3JtYXRbaW5kZXhdKSkKLSAgICAgICAgICAg
ICAgICAgICAgKytpbmRleDsKLQotICAgICAgICAgICAgICAgIC8vIElmIHRoZSBudW1iZXIgaXMg
Z3JlYXRlciB0aGFuIHplcm8gYW5kIGVuZHMgd2l0aCBhICIkIiwKLSAgICAgICAgICAgICAgICAv
LyB0aGVuIHRoaXMgaXMgYSBzdWJzdGl0dXRpb24gaW5kZXguCi0gICAgICAgICAgICAgICAgaWYg
KG51bWJlciA+IDAgJiYgZm9ybWF0W2luZGV4XSA9PT0gIiQiKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHN1YnN0aXR1dGlvbkluZGV4ID0gKG51bWJlciAtIDEpOwotICAgICAgICAgICAgICAgICAg
ICArK2luZGV4OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgdmFyIHByZWNpc2lvbiA9IC0xOwotICAgICAgICAgICAgaWYgKGZvcm1hdFtpbmRleF0gPT09
ICIuIikgewotICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBwcmVjaXNpb24gc3BlY2lmaWVy
LiBJZiBubyBkaWdpdCBmb2xsb3dzIHRoZSAiLiIsCi0gICAgICAgICAgICAgICAgLy8gdGhlbiB0
aGUgcHJlY2lzaW9uIHNob3VsZCBiZSB6ZXJvLgotICAgICAgICAgICAgICAgICsraW5kZXg7Ci0K
LSAgICAgICAgICAgICAgICBwcmVjaXNpb24gPSBwYXJzZUludChmb3JtYXQuc3Vic3RyaW5nKGlu
ZGV4KSwgMTApOwotICAgICAgICAgICAgICAgIGlmIChpc05hTihwcmVjaXNpb24pKQotICAgICAg
ICAgICAgICAgICAgICBwcmVjaXNpb24gPSAwOwotCi0gICAgICAgICAgICAgICAgd2hpbGUgKCFp
c05hTihmb3JtYXRbaW5kZXhdKSkKLSAgICAgICAgICAgICAgICAgICAgKytpbmRleDsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgYWRkU3BlY2lmaWVyVG9rZW4oZm9ybWF0W2luZGV4XSwg
cHJlY2lzaW9uLCBzdWJzdGl0dXRpb25JbmRleCk7Ci0KLSAgICAgICAgICAgICsrc3Vic3RpdHV0
aW9uSW5kZXg7Ci0gICAgICAgICAgICArK2luZGV4OwotICAgICAgICB9Ci0KLSAgICAgICAgYWRk
U3RyaW5nVG9rZW4oZm9ybWF0LnN1YnN0cmluZyhpbmRleCkpOwotCi0gICAgICAgIHJldHVybiB0
b2tlbnM7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShTdHJpbmcucHJvdG90
eXBlLCAiaGFzaCIsCi17Ci0gICAgZ2V0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICAvLyBN
YXRjaGVzIHRoZSB3dGYvSGFzaGVyLmggKFN1cGVyRmFzdEhhc2gpIGFsZ29yaXRobS4KLQotICAg
ICAgICAvLyBBcmJpdHJhcnkgc3RhcnQgdmFsdWUgdG8gYXZvaWQgbWFwcGluZyBhbGwgMCdzIHRv
IGFsbCAwJ3MuCi0gICAgICAgIGNvbnN0IHN0cmluZ0hhc2hpbmdTdGFydFZhbHVlID0gMHg5ZTM3
NzliOTsKLQotICAgICAgICB2YXIgcmVzdWx0ID0gc3RyaW5nSGFzaGluZ1N0YXJ0VmFsdWU7Ci0g
ICAgICAgIHZhciBwZW5kaW5nQ2hhcmFjdGVyID0gbnVsbDsKLSAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0aGlzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgY3VycmVudENoYXJh
Y3RlciA9IHRoaXNbaV0uY2hhckNvZGVBdCgwKTsKLSAgICAgICAgICAgIGlmIChwZW5kaW5nQ2hh
cmFjdGVyID09PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcGVuZGluZ0NoYXJhY3RlciA9IGN1
cnJlbnRDaGFyYWN0ZXI7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIHJlc3VsdCArPSBwZW5kaW5nQ2hhcmFjdGVyOwotICAgICAgICAgICAg
cmVzdWx0ID0gKHJlc3VsdCA8PCAxNikgXiAoKGN1cnJlbnRDaGFyYWN0ZXIgPDwgMTEpIF4gcmVz
dWx0KTsKLSAgICAgICAgICAgIHJlc3VsdCArPSByZXN1bHQgPj4gMTE7Ci0KLSAgICAgICAgICAg
IHBlbmRpbmdDaGFyYWN0ZXIgPSBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSGFuZGxl
IHRoZSBsYXN0IGNoYXJhY3RlciBpbiBvZGQgbGVuZ3RoIHN0cmluZ3MuCi0gICAgICAgIGlmIChw
ZW5kaW5nQ2hhcmFjdGVyICE9PSBudWxsKSB7Ci0gICAgICAgICAgICByZXN1bHQgKz0gcGVuZGlu
Z0NoYXJhY3RlcjsKLSAgICAgICAgICAgIHJlc3VsdCBePSByZXN1bHQgPDwgMTE7Ci0gICAgICAg
ICAgICByZXN1bHQgKz0gcmVzdWx0ID4+IDE3OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRm9y
Y2UgImF2YWxhbmNoaW5nIiBvZiBmaW5hbCAzMSBiaXRzLgotICAgICAgICByZXN1bHQgXj0gcmVz
dWx0IDw8IDM7Ci0gICAgICAgIHJlc3VsdCArPSByZXN1bHQgPj4gNTsKLSAgICAgICAgcmVzdWx0
IF49IHJlc3VsdCA8PCAyOwotICAgICAgICByZXN1bHQgKz0gcmVzdWx0ID4+IDE1OwotICAgICAg
ICByZXN1bHQgXj0gcmVzdWx0IDw8IDEwOwotCi0gICAgICAgIC8vIFByZXZlbnQgMCBhbmQgbmVn
YXRpdmUgcmVzdWx0cy4KLSAgICAgICAgcmV0dXJuICgweGZmZmZmZmZmICsgcmVzdWx0ICsgMSku
dG9TdHJpbmcoMzYpOwotICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoU3RyaW5n
LCAic3RhbmRhcmRGb3JtYXR0ZXJzIiwKLXsKLSAgICB2YWx1ZTogewotICAgICAgICBkOiBmdW5j
dGlvbihzdWJzdGl0dXRpb24pCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhaXNOYU4o
c3Vic3RpdHV0aW9uKSA/IHN1YnN0aXR1dGlvbiA6IDA7Ci0gICAgICAgIH0sCi0KLSAgICAgICAg
ZjogZnVuY3Rpb24oc3Vic3RpdHV0aW9uLCB0b2tlbikKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKHN1YnN0aXR1dGlvbiAmJiB0b2tlbi5wcmVjaXNpb24gPiAtMSkKLSAgICAgICAgICAgICAg
ICBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb24udG9GaXhlZCh0b2tlbi5wcmVjaXNpb24pOwot
ICAgICAgICAgICAgcmV0dXJuICFpc05hTihzdWJzdGl0dXRpb24pID8gc3Vic3RpdHV0aW9uIDog
KHRva2VuLnByZWNpc2lvbiA+IC0xID8gTnVtYmVyKDApLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9u
KSA6IDApOwotICAgICAgICB9LAotCi0gICAgICAgIHM6IGZ1bmN0aW9uKHN1YnN0aXR1dGlvbikK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN1YnN0aXR1dGlvbjsKLSAgICAgICAgfQot
ICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoU3RyaW5nLCAiZm9ybWF0IiwKLXsK
LSAgICB2YWx1ZTogZnVuY3Rpb24oZm9ybWF0LCBzdWJzdGl0dXRpb25zLCBmb3JtYXR0ZXJzLCBp
bml0aWFsVmFsdWUsIGFwcGVuZCkKLSAgICB7Ci0gICAgICAgIGlmICghZm9ybWF0IHx8ICFzdWJz
dGl0dXRpb25zIHx8ICFzdWJzdGl0dXRpb25zLmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiB7
Ci0gICAgICAgICAgICAgICAgZm9ybWF0dGVkUmVzdWx0OiBhcHBlbmQoaW5pdGlhbFZhbHVlLCBm
b3JtYXQpLAotICAgICAgICAgICAgICAgIHVudXNlZFN1YnN0aXR1dGlvbnM6IHN1YnN0aXR1dGlv
bnMKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgZnVuY3Rpb24gcHJldHR5RnVuY3Rpb25OYW1l
KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICJTdHJpbmcuZm9ybWF0KFwiIiArIGZv
cm1hdCArICJcIiwgXCIiICsgc3Vic3RpdHV0aW9ucy5qb2luKCJcIiwgXCIiKSArICJcIikiOwot
ICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gd2Fybihtc2cpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnNvbGUud2FybihwcmV0dHlGdW5jdGlvbk5hbWUoKSArICI6ICIgKyBtc2cpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gZXJyb3IobXNnKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBjb25zb2xlLmVycm9yKHByZXR0eUZ1bmN0aW9uTmFtZSgpICsgIjogIiArIG1zZyk7
Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgcmVzdWx0ID0gaW5pdGlhbFZhbHVlOwotICAgICAg
ICB2YXIgdG9rZW5zID0gU3RyaW5nLnRva2VuaXplRm9ybWF0U3RyaW5nKGZvcm1hdCk7Ci0gICAg
ICAgIHZhciB1c2VkU3Vic3RpdHV0aW9uSW5kZXhlcyA9IHt9OwotCi0gICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgdG9rZW4g
PSB0b2tlbnNbaV07Ci0KLSAgICAgICAgICAgIGlmICh0b2tlbi50eXBlID09PSAic3RyaW5nIikg
ewotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFwcGVuZChyZXN1bHQsIHRva2VuLnZhbHVlKTsK
LSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
aWYgKHRva2VuLnR5cGUgIT09ICJzcGVjaWZpZXIiKSB7Ci0gICAgICAgICAgICAgICAgZXJyb3Io
IlVua25vd24gdG9rZW4gdHlwZSBcIiIgKyB0b2tlbi50eXBlICsgIlwiIGZvdW5kLiIpOwotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAo
dG9rZW4uc3Vic3RpdHV0aW9uSW5kZXggPj0gc3Vic3RpdHV0aW9ucy5sZW5ndGgpIHsKLSAgICAg
ICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbm90IGVub3VnaCBzdWJzdGl0dXRpb25zIGZvciB0
aGUgY3VycmVudCBzdWJzdGl0dXRpb25JbmRleAotICAgICAgICAgICAgICAgIC8vIGp1c3Qgb3V0
cHV0IHRoZSBmb3JtYXQgc3BlY2lmaWVyIGxpdGVyYWxseSBhbmQgbW92ZSBvbi4KLSAgICAgICAg
ICAgICAgICBlcnJvcigibm90IGVub3VnaCBzdWJzdGl0dXRpb24gYXJndW1lbnRzLiBIYWQgIiAr
IHN1YnN0aXR1dGlvbnMubGVuZ3RoICsgIiBidXQgbmVlZGVkICIgKyAodG9rZW4uc3Vic3RpdHV0
aW9uSW5kZXggKyAxKSArICIsIHNvIHN1YnN0aXR1dGlvbiB3YXMgc2tpcHBlZC4iKTsKLSAgICAg
ICAgICAgICAgICByZXN1bHQgPSBhcHBlbmQocmVzdWx0LCAiJSIgKyAodG9rZW4ucHJlY2lzaW9u
ID4gLTEgPyB0b2tlbi5wcmVjaXNpb24gOiAiIikgKyB0b2tlbi5zcGVjaWZpZXIpOwotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB1c2VkU3Vi
c3RpdHV0aW9uSW5kZXhlc1t0b2tlbi5zdWJzdGl0dXRpb25JbmRleF0gPSB0cnVlOwotCi0gICAg
ICAgICAgICBpZiAoISh0b2tlbi5zcGVjaWZpZXIgaW4gZm9ybWF0dGVycykpIHsKLSAgICAgICAg
ICAgICAgICAvLyBFbmNvdW50ZXJlZCBhbiB1bnN1cHBvcnRlZCBmb3JtYXQgY2hhcmFjdGVyLCB0
cmVhdCBhcyBhIHN0cmluZy4KLSAgICAgICAgICAgICAgICB3YXJuKCJ1bnN1cHBvcnRlZCBmb3Jt
YXQgY2hhcmFjdGVyIFx1MjAxQyIgKyB0b2tlbi5zcGVjaWZpZXIgKyAiXHUyMDFELiBUcmVhdGlu
ZyBhcyBhIHN0cmluZy4iKTsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBhcHBlbmQocmVzdWx0
LCBzdWJzdGl0dXRpb25zW3Rva2VuLnN1YnN0aXR1dGlvbkluZGV4XSk7Ci0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJlc3VsdCA9IGFwcGVu
ZChyZXN1bHQsIGZvcm1hdHRlcnNbdG9rZW4uc3BlY2lmaWVyXShzdWJzdGl0dXRpb25zW3Rva2Vu
LnN1YnN0aXR1dGlvbkluZGV4XSwgdG9rZW4pKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciB1
bnVzZWRTdWJzdGl0dXRpb25zID0gW107Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3Vi
c3RpdHV0aW9ucy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgaWYgKGkgaW4gdXNlZFN1YnN0
aXR1dGlvbkluZGV4ZXMpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB1
bnVzZWRTdWJzdGl0dXRpb25zLnB1c2goc3Vic3RpdHV0aW9uc1tpXSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgZm9ybWF0dGVkUmVzdWx0OiByZXN1bHQsCi0g
ICAgICAgICAgICB1bnVzZWRTdWJzdGl0dXRpb25zCi0gICAgICAgIH07Ci0gICAgfQotfSk7Ci0K
LU9iamVjdC5kZWZpbmVQcm9wZXJ0eShTdHJpbmcucHJvdG90eXBlLCAiZm9ybWF0IiwKLXsKLSAg
ICB2YWx1ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cmluZy5mb3JtYXQo
dGhpcywgYXJndW1lbnRzLCBTdHJpbmcuc3RhbmRhcmRGb3JtYXR0ZXJzLCAiIiwgZnVuY3Rpb24o
YSwgYikgewotICAgICAgICAgICAgcmV0dXJuIGEgKyBiOwotICAgICAgICB9KS5mb3JtYXR0ZWRS
ZXN1bHQ7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShTdHJpbmcucHJvdG90
eXBlLCAiaW5zZXJ0V29yZEJyZWFrQ2hhcmFjdGVycyIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIC8vIEFkZCB6ZXJvIHdpZHRoIHNwYWNlcyBhZnRlciBjaGFyYWN0
ZXJzIHRoYXQgYXJlIGdvb2QgdG8gYnJlYWsgYWZ0ZXIuCi0gICAgICAgIC8vIE90aGVyd2lzZSBh
IHN0cmluZyB3aXRoIG5vIHNwYWNlcyB3aWxsIG5vdCBicmVhayBhbmQgb3ZlcmZsb3cgaXRzIGNv
bnRhaW5lci4KLSAgICAgICAgLy8gVGhpcyBpcyBtYWlubHkgdXNlZCBvbiBVUkwgc3RyaW5ncywg
c28gdGhlIGNoYXJhY3RlcnMgYXJlIHRhaWxvcmVkIGZvciBVUkxzLgotICAgICAgICByZXR1cm4g
dGhpcy5yZXBsYWNlKC8oW1wvOzpcKVxdXH0mP10pL2csICIkMVx1MjAwYiIpOwotICAgIH0KLX0p
OwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoU3RyaW5nLnByb3RvdHlwZSwgInJlbW92ZVdvcmRC
cmVha0NoYXJhY3RlcnMiLAotewotICAgIHZhbHVlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICAvLyBVbmRvZXMgd2hhdCBpbnNlcnRXb3JkQnJlYWtDaGFyYWN0ZXJzIGRpZC4KLSAgICAgICAg
cmV0dXJuIHRoaXMucmVwbGFjZSgvXHUyMDBiL2csICIiKTsKLSAgICB9Ci19KTsKLQotT2JqZWN0
LmRlZmluZVByb3BlcnR5KFN0cmluZy5wcm90b3R5cGUsICJnZXRNYXRjaGluZ0luZGV4ZXMiLAot
ewotICAgIHZhbHVlOiBmdW5jdGlvbihuZWVkbGUpCi0gICAgewotICAgICAgICB2YXIgaW5kZXhl
c09mTmVlZGxlID0gW107Ci0gICAgICAgIHZhciBpbmRleCA9IHRoaXMuaW5kZXhPZihuZWVkbGUp
OwotCi0gICAgICAgIHdoaWxlIChpbmRleCA+PSAwKSB7Ci0gICAgICAgICAgICBpbmRleGVzT2ZO
ZWVkbGUucHVzaChpbmRleCk7Ci0gICAgICAgICAgICBpbmRleCA9IHRoaXMuaW5kZXhPZihuZWVk
bGUsIGluZGV4ICsgMSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gaW5kZXhlc09mTmVl
ZGxlOwotICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoU3RyaW5nLnByb3RvdHlw
ZSwgImxldmVuc2h0ZWluRGlzdGFuY2UiLAotewotICAgIHZhbHVlOiBmdW5jdGlvbihzKQotICAg
IHsKLSAgICAgICAgdmFyIG0gPSB0aGlzLmxlbmd0aDsKLSAgICAgICAgdmFyIG4gPSBzLmxlbmd0
aDsKLSAgICAgICAgdmFyIGQgPSBuZXcgQXJyYXkobSArIDEpOwotCi0gICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDw9IG07ICsraSkgewotICAgICAgICAgICAgZFtpXSA9IG5ldyBBcnJheShuICsg
MSk7Ci0gICAgICAgICAgICBkW2ldWzBdID0gaTsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAo
dmFyIGogPSAwOyBqIDw9IG47ICsraikKLSAgICAgICAgICAgIGRbMF1bal0gPSBqOwotCi0gICAg
ICAgIGZvciAodmFyIGogPSAxOyBqIDw9IG47ICsraikgewotICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDE7IGkgPD0gbTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRoaXNbaSAtIDFdID09
PSBzW2ogLSAxXSkKLSAgICAgICAgICAgICAgICAgICAgZFtpXVtqXSA9IGRbaSAtIDFdW2ogLSAx
XTsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGRlbGV0
aW9uID0gZFtpIC0gMV1bal0gKyAxOwotICAgICAgICAgICAgICAgICAgICB2YXIgaW5zZXJ0aW9u
ID0gZFtpXVtqIC0gMV0gKyAxOwotICAgICAgICAgICAgICAgICAgICB2YXIgc3Vic3RpdHV0aW9u
ID0gZFtpIC0gMV1baiAtIDFdICsgMTsKLSAgICAgICAgICAgICAgICAgICAgZFtpXVtqXSA9IE1h
dGgubWluKGRlbGV0aW9uLCBpbnNlcnRpb24sIHN1YnN0aXR1dGlvbik7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGRbbV1bbl07
Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShTdHJpbmcucHJvdG90eXBlLCAi
dG9DYW1lbENhc2UiLAotewotICAgIHZhbHVlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBy
ZXR1cm4gdGhpcy50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teXHddKyhcdykvZywgKG1hdGNoLCBn
cm91cCkgPT4gZ3JvdXAudG9VcHBlckNhc2UoKSk7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZp
bmVQcm9wZXJ0eShNYXRoLCAicm91bmRUbyIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKG51bSwg
c3RlcCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBNYXRoLnJvdW5kKG51bSAvIHN0ZXApICogc3Rl
cDsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KE51bWJlciwgImNvbnN0cmFp
biIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKG51bSwgbWluLCBtYXgpCi0gICAgewotICAgICAg
ICBpZiAobWF4IDwgbWluKQotICAgICAgICAgICAgcmV0dXJuIG1pbjsKLQotICAgICAgICBpZiAo
bnVtIDwgbWluKQotICAgICAgICAgICAgbnVtID0gbWluOwotICAgICAgICBlbHNlIGlmIChudW0g
PiBtYXgpCi0gICAgICAgICAgICBudW0gPSBtYXg7Ci0gICAgICAgIHJldHVybiBudW07Ci0gICAg
fQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShOdW1iZXIsICJwZXJjZW50YWdlU3RyaW5n
IiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24ocGVyY2VudCwgcHJlY2lzaW9uPTEpCi0gICAgewot
ICAgICAgICBjb25zb2xlLmFzc2VydChwZXJjZW50ID49IDAgJiYgcGVyY2VudCA8PSAxMDApOwot
ICAgICAgICByZXR1cm4gcGVyY2VudC50b0ZpeGVkKHByZWNpc2lvbikgKyAiJSI7Ci0gICAgfQot
fSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShOdW1iZXIsICJzZWNvbmRzVG9NaWxsaXNlY29u
ZHNTdHJpbmciLAotewotICAgIHZhbHVlOiBmdW5jdGlvbihzZWNvbmRzLCBoaWdoZXJSZXNvbHV0
aW9uKQotICAgIHsKLSAgICAgICAgbGV0IG1zID0gc2Vjb25kcyAqIDEwMDA7Ci0KLSAgICAgICAg
aWYgKGhpZ2hlclJlc29sdXRpb24pCi0gICAgICAgICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIiUu
MmZtcyIpLmZvcm1hdChtcyk7Ci0gICAgICAgIHJldHVybiBXSS5VSVN0cmluZygiJS4xZm1zIiku
Zm9ybWF0KG1zKTsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KE51bWJlciwg
InNlY29uZHNUb1N0cmluZyIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKHNlY29uZHMsIGhpZ2hl
clJlc29sdXRpb24pCi0gICAgewotICAgICAgICBsZXQgbXMgPSBzZWNvbmRzICogMTAwMDsKLQot
ICAgICAgICBpZiAoTWF0aC5hYnMobXMpIDwgMTApIHsKLSAgICAgICAgICAgIGlmIChoaWdoZXJS
ZXNvbHV0aW9uKQotICAgICAgICAgICAgICAgIHJldHVybiBXSS5VSVN0cmluZygiJS4zZm1zIiku
Zm9ybWF0KG1zKTsKLSAgICAgICAgICAgIHJldHVybiBXSS5VSVN0cmluZygiJS4yZm1zIikuZm9y
bWF0KG1zKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChNYXRoLmFicyhtcykgPCAxMDApIHsK
LSAgICAgICAgICAgIGlmIChoaWdoZXJSZXNvbHV0aW9uKQotICAgICAgICAgICAgICAgIHJldHVy
biBXSS5VSVN0cmluZygiJS4yZm1zIikuZm9ybWF0KG1zKTsKLSAgICAgICAgICAgIHJldHVybiBX
SS5VSVN0cmluZygiJS4xZm1zIikuZm9ybWF0KG1zKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChNYXRoLmFicyhtcykgPCAxMDAwKSB7Ci0gICAgICAgICAgICBpZiAoaGlnaGVyUmVzb2x1dGlv
bikKLSAgICAgICAgICAgICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIiUuMWZtcyIpLmZvcm1hdCht
cyk7Ci0gICAgICAgICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIiUuMGZtcyIpLmZvcm1hdChtcyk7
Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBEbyBub3QgZ28gb3ZlciBzZWNvbmRzIHdoZW4gaW4g
aGlnaCByZXNvbHV0aW9uIG1vZGUuCi0gICAgICAgIGlmIChoaWdoZXJSZXNvbHV0aW9uIHx8IE1h
dGguYWJzKHNlY29uZHMpIDwgNjApCi0gICAgICAgICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIiUu
MmZzIikuZm9ybWF0KHNlY29uZHMpOwotCi0gICAgICAgIGxldCBtaW51dGVzID0gc2Vjb25kcyAv
IDYwOwotICAgICAgICBpZiAoTWF0aC5hYnMobWludXRlcykgPCA2MCkKLSAgICAgICAgICAgIHJl
dHVybiBXSS5VSVN0cmluZygiJS4xZm1pbiIpLmZvcm1hdChtaW51dGVzKTsKLQotICAgICAgICBs
ZXQgaG91cnMgPSBtaW51dGVzIC8gNjA7Ci0gICAgICAgIGlmIChNYXRoLmFicyhob3VycykgPCAy
NCkKLSAgICAgICAgICAgIHJldHVybiBXSS5VSVN0cmluZygiJS4xZmhycyIpLmZvcm1hdChob3Vy
cyk7Ci0KLSAgICAgICAgbGV0IGRheXMgPSBob3VycyAvIDI0OwotICAgICAgICByZXR1cm4gV0ku
VUlTdHJpbmcoIiUuMWYgZGF5cyIpLmZvcm1hdChkYXlzKTsKLSAgICB9Ci19KTsKLQotT2JqZWN0
LmRlZmluZVByb3BlcnR5KE51bWJlciwgImJ5dGVzVG9TdHJpbmciLAotewotICAgIHZhbHVlOiBm
dW5jdGlvbihieXRlcywgaGlnaGVyUmVzb2x1dGlvbikKLSAgICB7Ci0gICAgICAgIGlmIChoaWdo
ZXJSZXNvbHV0aW9uID09PSB1bmRlZmluZWQpCi0gICAgICAgICAgICBoaWdoZXJSZXNvbHV0aW9u
ID0gdHJ1ZTsKLQotICAgICAgICBpZiAoTWF0aC5hYnMoYnl0ZXMpIDwgMTAyNCkKLSAgICAgICAg
ICAgIHJldHVybiBXSS5VSVN0cmluZygiJS4wZiBCIikuZm9ybWF0KGJ5dGVzKTsKLQotICAgICAg
ICBsZXQga2lsb2J5dGVzID0gYnl0ZXMgLyAxMDI0OwotICAgICAgICBpZiAoTWF0aC5hYnMoa2ls
b2J5dGVzKSA8IDEwMjQpIHsKLSAgICAgICAgICAgIGlmIChoaWdoZXJSZXNvbHV0aW9uIHx8IE1h
dGguYWJzKGtpbG9ieXRlcykgPCAxMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gV0kuVUlTdHJp
bmcoIiUuMmYgS0IiKS5mb3JtYXQoa2lsb2J5dGVzKTsKLSAgICAgICAgICAgIHJldHVybiBXSS5V
SVN0cmluZygiJS4xZiBLQiIpLmZvcm1hdChraWxvYnl0ZXMpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgbGV0IG1lZ2FieXRlcyA9IGtpbG9ieXRlcyAvIDEwMjQ7Ci0gICAgICAgIGlmIChoaWdoZXJS
ZXNvbHV0aW9uIHx8IE1hdGguYWJzKG1lZ2FieXRlcykgPCAxMCkKLSAgICAgICAgICAgIHJldHVy
biBXSS5VSVN0cmluZygiJS4yZiBNQiIpLmZvcm1hdChtZWdhYnl0ZXMpOwotICAgICAgICByZXR1
cm4gV0kuVUlTdHJpbmcoIiUuMWYgTUIiKS5mb3JtYXQobWVnYWJ5dGVzKTsKLSAgICB9Ci19KTsK
LQotT2JqZWN0LmRlZmluZVByb3BlcnR5KFVpbnQzMkFycmF5LCAiaXNMaXR0bGVFbmRpYW4iLAot
ewotICAgIHZhbHVlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAoIl9pc0xpdHRsZUVu
ZGlhbiIgaW4gdGhpcykKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc0xpdHRsZUVuZGlhbjsK
LQotICAgICAgICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDQpOwotICAgICAgICB2YXIg
bG9uZ0RhdGEgPSBuZXcgVWludDMyQXJyYXkoYnVmZmVyKTsKLSAgICAgICAgdmFyIGRhdGEgPSBu
ZXcgVWludDhBcnJheShidWZmZXIpOwotCi0gICAgICAgIGxvbmdEYXRhWzBdID0gMHgwYTBiMGMw
ZDsKLQotICAgICAgICB0aGlzLl9pc0xpdHRsZUVuZGlhbiA9IGRhdGFbMF0gPT09IDB4MGQgJiYg
ZGF0YVsxXSA9PT0gMHgwYyAmJiBkYXRhWzJdID09PSAweDBiICYmIGRhdGFbM10gPT09IDB4MGE7
Ci0KLSAgICAgICAgcmV0dXJuIHRoaXMuX2lzTGl0dGxlRW5kaWFuOwotICAgIH0KLX0pOwotCi1m
dW5jdGlvbiBpc0VtcHR5T2JqZWN0KG9iamVjdCkKLXsKLSAgICBmb3IgKHZhciBwcm9wZXJ0eSBp
biBvYmplY3QpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
ZnVuY3Rpb24gaXNFbnRlcktleShldmVudCkKLXsKLSAgICAvLyBDaGVjayBpZiB0aGlzIGlzIGFu
IElNRSBldmVudC4KLSAgICByZXR1cm4gZXZlbnQua2V5Q29kZSAhPT0gMjI5ICYmIGV2ZW50Lmtl
eUlkZW50aWZpZXIgPT09ICJFbnRlciI7Ci19Ci0KLWZ1bmN0aW9uIHJlc29sdmVEb3RzSW5QYXRo
KHBhdGgpCi17Ci0gICAgaWYgKCFwYXRoKQotICAgICAgICByZXR1cm4gcGF0aDsKLQotICAgIGlm
IChwYXRoLmluZGV4T2YoIi4vIikgPT09IC0xKQotICAgICAgICByZXR1cm4gcGF0aDsKLQotICAg
IGNvbnNvbGUuYXNzZXJ0KHBhdGguY2hhckF0KDApID09PSAiLyIpOwotCi0gICAgdmFyIHJlc3Vs
dCA9IFtdOwotCi0gICAgdmFyIGNvbXBvbmVudHMgPSBwYXRoLnNwbGl0KCIvIik7Ci0gICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBjb21wb25lbnRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHZhciBj
b21wb25lbnQgPSBjb21wb25lbnRzW2ldOwotCi0gICAgICAgIC8vIFNraXAgb3ZlciAiLi8iLgot
ICAgICAgICBpZiAoY29tcG9uZW50ID09PSAiLiIpCi0gICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICAvLyBSZXdpbmQgb25lIGNvbXBvbmVudCBmb3IgIi4uLyIuCi0gICAgICAgIGlmIChj
b21wb25lbnQgPT09ICIuLiIpIHsKLSAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID09PSAx
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgcmVzdWx0LnBvcCgpOwot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXN1bHQucHVzaChj
b21wb25lbnQpOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQuam9pbigiLyIpOwotfQotCi1m
dW5jdGlvbiBwYXJzZU1JTUVUeXBlKGZ1bGxNaW1lVHlwZSkKLXsKLSAgICBpZiAoIWZ1bGxNaW1l
VHlwZSkKLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIHR5cGU6IGZ1bGxNaW1lVHlwZSwK
LSAgICAgICAgICAgIGJvdW5kYXJ5OiBudWxsLAotICAgICAgICAgICAgZW5jb2Rpbmc6IG51bGwK
LSAgICAgICAgfTsKLQotICAgIHZhciB0eXBlUGFydHMgPSBmdWxsTWltZVR5cGUuc3BsaXQoL1xz
KjtccyovKTsKLSAgICBjb25zb2xlLmFzc2VydCh0eXBlUGFydHMubGVuZ3RoID49IDEpOwotCi0g
ICAgdmFyIHR5cGUgPSB0eXBlUGFydHNbMF07Ci0gICAgdmFyIGJvdW5kYXJ5ID0gbnVsbDsKLSAg
ICB2YXIgZW5jb2RpbmcgPSBudWxsOwotCi0gICAgZm9yICh2YXIgaSA9IDE7IGkgPCB0eXBlUGFy
dHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdmFyIHN1YnBhcnRzID0gdHlwZVBhcnRzW2ldLnNw
bGl0KC9ccyo9XHMqLyk7Ci0gICAgICAgIGlmIChzdWJwYXJ0cy5sZW5ndGggIT09IDIpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoc3VicGFydHNbMF0udG9Mb3dlckNhc2Uo
KSA9PT0gImJvdW5kYXJ5IikKLSAgICAgICAgICAgIGJvdW5kYXJ5ID0gc3VicGFydHNbMV07Ci0g
ICAgICAgIGVsc2UgaWYgKHN1YnBhcnRzWzBdLnRvTG93ZXJDYXNlKCkgPT09ICJjaGFyc2V0IikK
LSAgICAgICAgICAgIGVuY29kaW5nID0gc3VicGFydHNbMV0ucmVwbGFjZSgiXlwifFwiJCIsICIi
KTsgLy8gVHJpbSBxdW90ZXMuCi0gICAgfQotCi0gICAgcmV0dXJuIHsKLSAgICAgICAgdHlwZSwK
LSAgICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5IHx8IG51bGwsCi0gICAgICAgIGVuY29kaW5nOiBl
bmNvZGluZyB8fCBudWxsCi0gICAgfTsKLX0KLQotZnVuY3Rpb24gc2ltcGxlR2xvYlN0cmluZ1Rv
UmVnRXhwKGdsb2JTdHJpbmcsIHJlZ0V4cEZsYWdzKQotewotICAgIC8vIE9ubHkgc3VwcG9ydHMg
IioiIGdsb2JzLgotCi0gICAgaWYgKCFnbG9iU3RyaW5nKQotICAgICAgICByZXR1cm4gbnVsbDsK
LQotICAgIC8vIEVzY2FwZSBldmVyeXRoaW5nIGZyb20gU3RyaW5nLnByb3RvdHlwZS5lc2NhcGVG
b3JSZWdFeHAgZXhjZXB0ICIqIi4KLSAgICB2YXIgcmVnZXhTdHJpbmcgPSBnbG9iU3RyaW5nLmVz
Y2FwZUNoYXJhY3RlcnMoIl5bXXt9KClcXC4kKz98Iik7Ci0KLSAgICAvLyBVbmVzY2FwZSBhbGwg
ZG91Ymx5IGVzY2FwZWQgYmFja3NsYXNoZXMgaW4gZnJvbnQgb2YgZXNjYXBlZCBhc3Rlcmlza3Mu
Ci0gICAgLy8gU28gIlxcKiIgd2lsbCBiZWNvbWUgIlwqIiBhZ2FpbiwgdW5kb2luZyBlc2NhcGVD
aGFyYWN0ZXJzIGVzY2FwaW5nIG9mICJcIi4KLSAgICAvLyBUaGlzIG1ha2VzICJcKiIgbWF0Y2gg
YSBsaXRlcmFsICIqIiBpbnN0ZWFkIG9mIHVzaW5nIHRoZSAiKiIgZm9yIGdsb2JiaW5nLgotICAg
IHJlZ2V4U3RyaW5nID0gcmVnZXhTdHJpbmcucmVwbGFjZSgvXFxcXFwqL2csICJcXCoiKTsKLQot
ICAgIC8vIFRoZSBmb2xsb3dpbmcgcmVnZXggZG9lc24ndCBtYXRjaCBhbiBhc3RlcmlzayB0aGF0
IGhhcyBhIGJhY2tzbGFzaCBpbiBmcm9udC4KLSAgICAvLyBJdCBhbHNvIGNhdGNoZXMgY29uc2Vj
dXRpdmUgYXN0ZXJpc2tzIHNvIHRoZXkgY29sbGFwc2UgZG93biB3aGVuIHJlcGxhY2VkLgotICAg
IHZhciB1bmVzY2FwZWRBc3Rlcmlza1JlZ2V4ID0gLyhefFteXFxdKVwqKy9nOwotICAgIGlmICh1
bmVzY2FwZWRBc3Rlcmlza1JlZ2V4LnRlc3QoZ2xvYlN0cmluZykpIHsKLSAgICAgICAgLy8gUmVw
bGFjZSBhbGwgdW5lc2NhcGVkIGFzdGVyaXNrcyB3aXRoICIuKiIuCi0gICAgICAgIHJlZ2V4U3Ry
aW5nID0gcmVnZXhTdHJpbmcucmVwbGFjZSh1bmVzY2FwZWRBc3Rlcmlza1JlZ2V4LCAiJDEuKiIp
OwotCi0gICAgICAgIC8vIE1hdGNoIGVkZ2UgYm91bmRhcmllcyB3aGVuIHRoZXJlIGlzIGFuIGFz
dGVyaXNrIHRvIGJldHRlciBtZWV0IHRoZSBleHBlY3RhdGlvbnMKLSAgICAgICAgLy8gb2YgdGhl
IHVzZXIuIFdoZW4gc29tZW9uZSB0eXBlcyAiKi5qcyIgdGhleSBkb24ndCBleHBlY3QgImZvby5q
c29uIiB0byBtYXRjaC4gVGhleQotICAgICAgICAvLyB3b3VsZCBvbmx5IGV4cGVjdCB0aGF0IGlm
IHRoZXkgdHlwZSAiKi5qcyoiLiBXZSB1c2UgXGIgKGluc3RlYWQgb2YgXiBhbmQgJCkgdG8gYWxs
b3cKLSAgICAgICAgLy8gbWF0Y2hlcyBpbnNpZGUgcGF0aHMgb3IgVVJMcywgc28gImJhKi5qcyIg
d2lsbCBtYXRjaCAiZm9vL2Jhci5qcyIgYnV0IG5vdCAiYm9vL2JiYXIuanMiLgotICAgICAgICAv
LyBXaGVuIHRoZXJlIGlzbid0IGFuIGFzdGVyaXNrIHRoZSByZWdleFN0cmluZyBpcyBqdXN0IGEg
c3Vic3RyaW5nIHNlYXJjaC4KLSAgICAgICAgcmVnZXhTdHJpbmcgPSAiXFxiIiArIHJlZ2V4U3Ry
aW5nICsgIlxcYiI7Ci0gICAgfQotCi0gICAgcmV0dXJuIG5ldyBSZWdFeHAocmVnZXhTdHJpbmcs
IHJlZ0V4cEZsYWdzKTsKLX0KLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlw
ZSwgImxvd2VyQm91bmQiLAotewotICAgIC8vIFJldHVybiBpbmRleCBvZiB0aGUgbGVmdG1vc3Qg
ZWxlbWVudCB0aGF0IGlzIGVxdWFsIG9yIGdyZWF0ZXIKLSAgICAvLyB0aGFuIHRoZSBzcGVjaW1l
biBvYmplY3QuIElmIHRoZXJlJ3Mgbm8gc3VjaCBlbGVtZW50IChpLmUuIGFsbAotICAgIC8vIGVs
ZW1lbnRzIGFyZSBzbWFsbGVyIHRoYW4gdGhlIHNwZWNpbWVuKSByZXR1cm5zIGFycmF5Lmxlbmd0
aC4KLSAgICAvLyBUaGUgZnVuY3Rpb24gd29ya3MgZm9yIHNvcnRlZCBhcnJheS4KLSAgICB2YWx1
ZTogZnVuY3Rpb24ob2JqZWN0LCBjb21wYXJhdG9yKQotICAgIHsKLSAgICAgICAgZnVuY3Rpb24g
ZGVmYXVsdENvbXBhcmF0b3IoYSwgYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEg
LSBiOwotICAgICAgICB9Ci0gICAgICAgIGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yIHx8IGRlZmF1
bHRDb21wYXJhdG9yOwotICAgICAgICB2YXIgbCA9IDA7Ci0gICAgICAgIHZhciByID0gdGhpcy5s
ZW5ndGg7Ci0gICAgICAgIHdoaWxlIChsIDwgcikgewotICAgICAgICAgICAgdmFyIG0gPSAobCAr
IHIpID4+IDE7Ci0gICAgICAgICAgICBpZiAoY29tcGFyYXRvcihvYmplY3QsIHRoaXNbbV0pID4g
MCkKLSAgICAgICAgICAgICAgICBsID0gbSArIDE7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgciA9IG07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHI7Ci0gICAgfQotfSk7
Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90b3R5cGUsICJ1cHBlckJvdW5kIiwK
LXsKLSAgICAvLyBSZXR1cm4gaW5kZXggb2YgdGhlIGxlZnRtb3N0IGVsZW1lbnQgdGhhdCBpcyBn
cmVhdGVyCi0gICAgLy8gdGhhbiB0aGUgc3BlY2ltZW4gb2JqZWN0LiBJZiB0aGVyZSdzIG5vIHN1
Y2ggZWxlbWVudCAoaS5lLiBhbGwKLSAgICAvLyBlbGVtZW50cyBhcmUgc21hbGxlciB0aGFuIHRo
ZSBzcGVjaW1lbikgcmV0dXJucyBhcnJheS5sZW5ndGguCi0gICAgLy8gVGhlIGZ1bmN0aW9uIHdv
cmtzIGZvciBzb3J0ZWQgYXJyYXkuCi0gICAgdmFsdWU6IGZ1bmN0aW9uKG9iamVjdCwgY29tcGFy
YXRvcikKLSAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIGRlZmF1bHRDb21wYXJhdG9yKGEsIGIpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhIC0gYjsKLSAgICAgICAgfQotICAgICAgICBj
b21wYXJhdG9yID0gY29tcGFyYXRvciB8fCBkZWZhdWx0Q29tcGFyYXRvcjsKLSAgICAgICAgdmFy
IGwgPSAwOwotICAgICAgICB2YXIgciA9IHRoaXMubGVuZ3RoOwotICAgICAgICB3aGlsZSAobCA8
IHIpIHsKLSAgICAgICAgICAgIHZhciBtID0gKGwgKyByKSA+PiAxOwotICAgICAgICAgICAgaWYg
KGNvbXBhcmF0b3Iob2JqZWN0LCB0aGlzW21dKSA+PSAwKQotICAgICAgICAgICAgICAgIGwgPSBt
ICsgMTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByID0gbTsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gcjsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5
KEFycmF5LnByb3RvdHlwZSwgImJpbmFyeUluZGV4T2YiLAotewotICAgIHZhbHVlOiBmdW5jdGlv
bih2YWx1ZSwgY29tcGFyYXRvcikKLSAgICB7Ci0gICAgICAgIHZhciBpbmRleCA9IHRoaXMubG93
ZXJCb3VuZCh2YWx1ZSwgY29tcGFyYXRvcik7Ci0gICAgICAgIHJldHVybiBpbmRleCA8IHRoaXMu
bGVuZ3RoICYmIGNvbXBhcmF0b3IodmFsdWUsIHRoaXNbaW5kZXhdKSA9PT0gMCA/IGluZGV4IDog
LTE7Ci0gICAgfQotfSk7Ci0KLShmdW5jdGlvbigpIHsKLSAgICBjb25zdCBkZWJvdW5jZVN5bWJv
bCA9IFN5bWJvbCgiZnVuY3Rpb24tZGVib3VuY2UtdGltZW91dCIpOwotICAgIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShGdW5jdGlvbi5wcm90b3R5cGUsICJkZWJvdW5jZSIsCi0gICAgewotICAgICAg
ICB2YWx1ZTogZnVuY3Rpb24oZGVsYXksIHRoaXNPYmplY3QpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGxldCBjYWxsYmFjayA9IHRoaXMuYmluZCh0aGlzT2JqZWN0KTsKLSAgICAgICAgICAgIHJl
dHVybiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoY2FsbGJhY2tb
ZGVib3VuY2VTeW1ib2xdKTsKLSAgICAgICAgICAgICAgICBsZXQgYXJncyA9IGFyZ3VtZW50czsK
LSAgICAgICAgICAgICAgICBjYWxsYmFja1tkZWJvdW5jZVN5bWJvbF0gPSBzZXRUaW1lb3V0KCgp
ID0+IHsKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2suYXBwbHkobnVsbCwgYXJncyk7Ci0g
ICAgICAgICAgICAgICAgfSwgZGVsYXkpOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfQotICAg
IH0pOwotfSkoKTsKLQotZnVuY3Rpb24gYXBwZW5kV2ViSW5zcGVjdG9yU291cmNlVVJMKHN0cmlu
ZykKLXsKLSAgICByZXR1cm4gIlxuLy8jIHNvdXJjZVVSTD1fX1dlYkluc3BlY3RvckludGVybmFs
X19cbiIgKyBzdHJpbmc7Ci19Ci0KLWZ1bmN0aW9uIGlzV2ViSW5zcGVjdG9ySW50ZXJuYWxTY3Jp
cHQodXJsKQotewotICAgIHJldHVybiB1cmwgPT09ICJfX1dlYkluc3BlY3RvckludGVybmFsX18i
OwotfQotCi1mdW5jdGlvbiBpc1dlYktpdEludGVybmFsU2NyaXB0KHVybCkKLXsKLSAgICByZXR1
cm4gdXJsICYmIHVybC5zdGFydHNXaXRoKCJfX1dlYiIpICYmIHVybC5lbmRzV2l0aCgiX18iKTsK
LX0KLQotZnVuY3Rpb24gaXNGdW5jdGlvblN0cmluZ05hdGl2ZUNvZGUoc3RyKQotewotICAgIHJl
dHVybiBzdHIuZW5kc1dpdGgoIntcbiAgICBbbmF0aXZlIGNvZGVdXG59Iik7Ci19Ci0KLWZ1bmN0
aW9uIGRvdWJsZVF1b3RlZFN0cmluZyhzdHIpCi17Ci0gICAgcmV0dXJuICJcIiIgKyBzdHIucmVw
bGFjZSgvXFwvZywgIlxcXFwiKS5yZXBsYWNlKC8iL2csICJcXFwiIikgKyAiXCIiOwotfQotCi1m
dW5jdGlvbiBpbnNlcnRpb25JbmRleEZvck9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24ob2Jq
ZWN0LCBsaXN0LCBjb21wYXJhdG9yLCBpbnNlcnRpb25JbmRleEFmdGVyKQotewotICAgIGlmIChp
bnNlcnRpb25JbmRleEFmdGVyKSB7Ci0gICAgICAgIHJldHVybiBsaXN0LnVwcGVyQm91bmQob2Jq
ZWN0LCBjb21wYXJhdG9yKTsKLSAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gbGlzdC5sb3dl
ckJvdW5kKG9iamVjdCwgY29tcGFyYXRvcik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBpbnNlcnRP
YmplY3RJbnRvU29ydGVkQXJyYXkob2JqZWN0LCBhcnJheSwgY29tcGFyYXRvcikKLXsKLSAgICBh
cnJheS5zcGxpY2UoaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9u
KG9iamVjdCwgYXJyYXksIGNvbXBhcmF0b3IpLCAwLCBvYmplY3QpOwotfQotCi1mdW5jdGlvbiBk
ZWNvZGVCYXNlNjRUb0Jsb2IoYmFzZTY0RGF0YSwgbWltZVR5cGUpCi17Ci0gICAgbWltZVR5cGUg
PSBtaW1lVHlwZSB8fCAnJzsKLQotICAgIGNvbnN0IHNsaWNlU2l6ZSA9IDEwMjQ7Ci0gICAgdmFy
IGJ5dGVDaGFyYWN0ZXJzID0gYXRvYihiYXNlNjREYXRhKTsKLSAgICB2YXIgYnl0ZXNMZW5ndGgg
PSBieXRlQ2hhcmFjdGVycy5sZW5ndGg7Ci0gICAgdmFyIHNsaWNlc0NvdW50ID0gTWF0aC5jZWls
KGJ5dGVzTGVuZ3RoIC8gc2xpY2VTaXplKTsKLSAgICB2YXIgYnl0ZUFycmF5cyA9IG5ldyBBcnJh
eShzbGljZXNDb3VudCk7Ci0KLSAgICBmb3IgKHZhciBzbGljZUluZGV4ID0gMDsgc2xpY2VJbmRl
eCA8IHNsaWNlc0NvdW50OyArK3NsaWNlSW5kZXgpIHsKLSAgICAgICAgdmFyIGJlZ2luID0gc2xp
Y2VJbmRleCAqIHNsaWNlU2l6ZTsKLSAgICAgICAgdmFyIGVuZCA9IE1hdGgubWluKGJlZ2luICsg
c2xpY2VTaXplLCBieXRlc0xlbmd0aCk7Ci0KLSAgICAgICAgdmFyIGJ5dGVzID0gbmV3IEFycmF5
KGVuZCAtIGJlZ2luKTsKLSAgICAgICAgZm9yICh2YXIgb2Zmc2V0ID0gYmVnaW4sIGkgPSAwOyBv
ZmZzZXQgPCBlbmQ7ICsraSwgKytvZmZzZXQpCi0gICAgICAgICAgICBieXRlc1tpXSA9IGJ5dGVD
aGFyYWN0ZXJzW29mZnNldF0uY2hhckNvZGVBdCgwKTsKLQotICAgICAgICBieXRlQXJyYXlzW3Ns
aWNlSW5kZXhdID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZXMpOwotICAgIH0KLQotICAgIHJldHVybiBu
ZXcgQmxvYihieXRlQXJyYXlzLCB7Ci0gICAgICAgIHR5cGU6IG1pbWVUeXBlCi0gICAgfSk7Ci19
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMv
amF2YXNjcmlwdC10ZXN0cy9zYW1wbGUtd2ViaW5zcGVjdG9yLW9iamVjdC1leHBlY3RlZC5qcyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRl
c3RzL3NhbXBsZS13ZWJpbnNwZWN0b3Itb2JqZWN0LWV4cGVjdGVkLmpzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA3M2I2MDE1ZjA2ZmU4NzE0ODVkOWE1MWJhY2Q3OWUwOWMxYzhkYzhk
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3NhbXBs
ZS13ZWJpbnNwZWN0b3Itb2JqZWN0LWV4cGVjdGVkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTU4
ICswLDAgQEAKLVdJLk9iamVjdCA9IGNsYXNzIFdlYkluc3BlY3Rvck9iamVjdAotewotICAgIGNv
bnN0cnVjdG9yKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2xpc3RlbmVycyA9IG51bGw7Ci0gICAg
fQotICAgIHN0YXRpYyBhZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHRoaXNP
YmplY3QpCi0gICAgewotICAgICAgICB0aGlzT2JqZWN0ID0gdGhpc09iamVjdCB8fCBudWxsOwot
ICAgICAgICBpZiAoIWV2ZW50VHlwZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYg
KCFsaXN0ZW5lcikKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKCF0aGlzLl9saXN0
ZW5lcnMpCi0gICAgICAgICAgICB0aGlzLl9saXN0ZW5lcnMgPSBuZXcgTWFwKCk7Ci0gICAgICAg
IGxldCBsaXN0ZW5lcnNUYWJsZSA9IHRoaXMuX2xpc3RlbmVycy5nZXQoZXZlbnRUeXBlKTsKLSAg
ICAgICAgaWYgKCFsaXN0ZW5lcnNUYWJsZSkgewotICAgICAgICAgICAgbGlzdGVuZXJzVGFibGUg
PSBuZXcgTGlzdE11bHRpbWFwKCk7Ci0gICAgICAgICAgICB0aGlzLl9saXN0ZW5lcnMuc2V0KGV2
ZW50VHlwZSwgbGlzdGVuZXJzVGFibGUpOwotICAgICAgICB9Ci0gICAgICAgIGxpc3RlbmVyc1Rh
YmxlLmFkZCh0aGlzT2JqZWN0LCBsaXN0ZW5lcik7Ci0gICAgfQotICAgIHN0YXRpYyBzaW5nbGVG
aXJlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB0aGlzT2JqZWN0KQotICAgIHsK
LSAgICAgICAgbGV0IHdyYXBwZWRDYWxsYmFjayA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgd3JhcHBlZENhbGxiYWNrLCBudWxs
KTsKLSAgICAgICAgICAgIGxpc3RlbmVyLmFwcGx5KHRoaXNPYmplY3QsIGFyZ3VtZW50cyk7Ci0g
ICAgICAgIH0uYmluZCh0aGlzKTsKLSAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGV2ZW50
VHlwZSwgd3JhcHBlZENhbGxiYWNrLCBudWxsKTsKLSAgICAgICAgcmV0dXJuIHdyYXBwZWRDYWxs
YmFjazsKLSAgICB9Ci0gICAgc3RhdGljIHJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBs
aXN0ZW5lciwgdGhpc09iamVjdCkKLSAgICB7Ci0gICAgICAgIGV2ZW50VHlwZSA9IGV2ZW50VHlw
ZSB8fCBudWxsOwotICAgICAgICBsaXN0ZW5lciA9IGxpc3RlbmVyIHx8IG51bGw7Ci0gICAgICAg
IHRoaXNPYmplY3QgPSB0aGlzT2JqZWN0IHx8IG51bGw7Ci0gICAgICAgIGlmICghdGhpcy5fbGlz
dGVuZXJzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAodGhpc09iamVjdCAmJiAh
ZXZlbnRUeXBlKSB7Ci0gICAgICAgICAgICB0aGlzLl9saXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlv
bihsaXN0ZW5lcnNUYWJsZSkgewotICAgICAgICAgICAgICAgIGxldCBsaXN0ZW5lclBhaXJzID0g
bGlzdGVuZXJzVGFibGUudG9BcnJheSgpOwotICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAw
LCBsZW5ndGggPSBsaXN0ZW5lclBhaXJzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGxldCBleGlzdGluZ1RoaXNPYmplY3QgPSBsaXN0ZW5lclBhaXJzW2ld
WzBdOwotICAgICAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdUaGlzT2JqZWN0ID09PSB0aGlz
T2JqZWN0KQotICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXJzVGFibGUuZGVsZXRlQWxs
KGV4aXN0aW5nVGhpc09iamVjdCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbGV0IGxpc3RlbmVyc1Rh
YmxlID0gdGhpcy5fbGlzdGVuZXJzLmdldChldmVudFR5cGUpOwotICAgICAgICBpZiAoIWxpc3Rl
bmVyc1RhYmxlIHx8IGxpc3RlbmVyc1RhYmxlLnNpemUgPT09IDApCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGxldCBkaWREZWxldGUgPSBsaXN0ZW5lcnNUYWJsZS5kZWxldGUodGhpc09i
amVjdCwgbGlzdGVuZXIpOwotICAgIH0KLSAgICBzdGF0aWMgaGFzRXZlbnRMaXN0ZW5lcnMoZXZl
bnRUeXBlKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9saXN0ZW5lcnMpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGxldCBsaXN0ZW5lcnNUYWJsZSA9IHRoaXMuX2xpc3Rl
bmVycy5nZXQoZXZlbnRUeXBlKTsKLSAgICAgICAgcmV0dXJuIGxpc3RlbmVyc1RhYmxlICYmIGxp
c3RlbmVyc1RhYmxlLnNpemUgPiAwOwotICAgIH0KLSAgICBzdGF0aWMgcmV0YWluZWRPYmplY3Rz
V2l0aFByb3RvdHlwZShwcm90bykKLSAgICB7Ci0gICAgICAgIGxldCByZXN1bHRzID0gbmV3IFNl
dDsKLSAgICAgICAgaWYgKHRoaXMuX2xpc3RlbmVycykgewotICAgICAgICAgICAgdGhpcy5fbGlz
dGVuZXJzLmZvckVhY2goZnVuY3Rpb24obGlzdGVuZXJzVGFibGUsIGV2ZW50VHlwZSkgewotICAg
ICAgICAgICAgICAgIGxpc3RlbmVyc1RhYmxlLmZvckVhY2goZnVuY3Rpb24ocGFpcikgewotICAg
ICAgICAgICAgICAgICAgICBsZXQgdGhpc09iamVjdCA9IHBhaXJbMF07Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICh0aGlzT2JqZWN0IGluc3RhbmNlb2YgcHJvdG8pCi0gICAgICAgICAgICAgICAg
ICAgICAgICByZXN1bHRzLmFkZCh0aGlzT2JqZWN0KTsKLSAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXN1bHRzOwotICAgIH0K
LSAgICBhZGRFdmVudExpc3RlbmVyKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXSS5PYmplY3Qu
YWRkRXZlbnRMaXN0ZW5lci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwotICAgIH0KLSAgICBzaW5n
bGVGaXJlRXZlbnRMaXN0ZW5lcigpCi0gICAgewotICAgICAgICByZXR1cm4gV0kuT2JqZWN0LnNp
bmdsZUZpcmVFdmVudExpc3RlbmVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0gICAgfQotICAg
IHJlbW92ZUV2ZW50TGlzdGVuZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdJLk9iamVjdC5y
ZW1vdmVFdmVudExpc3RlbmVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0gICAgfQotICAgIGhh
c0V2ZW50TGlzdGVuZXJzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXSS5PYmplY3QuaGFzRXZl
bnRMaXN0ZW5lcnMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAgICB9Ci0gICAgcmV0YWluZWRP
YmplY3RzV2l0aFByb3RvdHlwZSgpCi0gICAgewotICAgICAgICByZXR1cm4gV0kuT2JqZWN0LnJl
dGFpbmVkT2JqZWN0c1dpdGhQcm90b3R5cGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAgICB9
Ci0gICAgZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKGV2ZW50VHlwZSwgZXZlbnREYXRhKQotICAg
IHsKLSAgICAgICAgbGV0IGV2ZW50ID0gbmV3IFdJLkV2ZW50KHRoaXMsIGV2ZW50VHlwZSwgZXZl
bnREYXRhKTsKLSAgICAgICAgZnVuY3Rpb24gZGlzcGF0Y2gob2JqZWN0KQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoIW9iamVjdCB8fCBldmVudC5fc3RvcHBlZFByb3BhZ2F0aW9uKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGxldCBsaXN0ZW5lclR5cGVzTWFwID0g
b2JqZWN0Ll9saXN0ZW5lcnM7Ci0gICAgICAgICAgICBpZiAoIWxpc3RlbmVyVHlwZXNNYXAgfHwg
IW9iamVjdC5oYXNPd25Qcm9wZXJ0eSgiX2xpc3RlbmVycyIpKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIGxldCBsaXN0ZW5lcnNUYWJsZSA9IGxpc3RlbmVyVHlwZXNNYXAu
Z2V0KGV2ZW50VHlwZSk7Ci0gICAgICAgICAgICBpZiAoIWxpc3RlbmVyc1RhYmxlKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGxldCBsaXN0ZW5lcnMgPSBsaXN0ZW5lcnNU
YWJsZS50b0FycmF5KCk7Ci0gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuZ3RoID0gbGlz
dGVuZXJzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgbGV0IFt0
aGlzT2JqZWN0LCBsaXN0ZW5lcl0gPSBsaXN0ZW5lcnNbaV07Ci0gICAgICAgICAgICAgICAgbGlz
dGVuZXIuY2FsbCh0aGlzT2JqZWN0LCBldmVudCk7Ci0gICAgICAgICAgICAgICAgaWYgKGV2ZW50
Ll9zdG9wcGVkUHJvcGFnYXRpb24pCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGRpc3BhdGNoKHRoaXMpOwotICAgICAgICBldmVu
dC5fc3RvcHBlZFByb3BhZ2F0aW9uID0gZmFsc2U7Ci0gICAgICAgIGxldCBjb25zdHJ1Y3RvciA9
IHRoaXMuY29uc3RydWN0b3I7Ci0gICAgICAgIHdoaWxlIChjb25zdHJ1Y3RvcikgewotICAgICAg
ICAgICAgZGlzcGF0Y2goY29uc3RydWN0b3IpOwotICAgICAgICAgICAgaWYgKCFjb25zdHJ1Y3Rv
ci5wcm90b3R5cGUuX19wcm90b19fKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3Rvci5wcm90b3R5cGUuX19wcm90b19fLmNvbnN0cnVj
dG9yOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBldmVudC5kZWZhdWx0UHJldmVudGVkOwot
ICAgIH0KLX0KLTsKLVdJLkV2ZW50ID0gY2xhc3MgRXZlbnQKLXsKLSAgICBjb25zdHJ1Y3Rvcih0
YXJnZXQsIHR5cGUsIGRhdGEpCi0gICAgewotICAgICAgICB0aGlzLnRhcmdldCA9IHRhcmdldDsK
LSAgICAgICAgdGhpcy50eXBlID0gdHlwZTsKLSAgICAgICAgdGhpcy5kYXRhID0gZGF0YTsKLSAg
ICAgICAgdGhpcy5kZWZhdWx0UHJldmVudGVkID0gZmFsc2U7Ci0gICAgICAgIHRoaXMuX3N0b3Bw
ZWRQcm9wYWdhdGlvbiA9IGZhbHNlOwotICAgIH0KLSAgICBzdG9wUHJvcGFnYXRpb24oKQotICAg
IHsKLSAgICAgICAgdGhpcy5fc3RvcHBlZFByb3BhZ2F0aW9uID0gdHJ1ZTsKLSAgICB9Ci0gICAg
cHJldmVudERlZmF1bHQoKQotICAgIHsKLSAgICAgICAgdGhpcy5kZWZhdWx0UHJldmVudGVkID0g
dHJ1ZTsKLSAgICB9Ci19Ci07Ci1XSS5ub3RpZmljYXRpb25zID0gbmV3IFdJLk9iamVjdDsKLVdJ
Lk5vdGlmaWNhdGlvbiA9IHsKLSAgICBHbG9iYWxNb2RpZmllcktleXNEaWRDaGFuZ2U6ICJnbG9i
YWwtbW9kaWZpZXJzLWRpZC1jaGFuZ2UiLAotICAgIFBhZ2VBcmNoaXZlU3RhcnRlZDogInBhZ2Ut
YXJjaGl2ZS1zdGFydGVkIiwKLSAgICBQYWdlQXJjaGl2ZUVuZGVkOiAicGFnZS1hcmNoaXZlLWVu
ZGVkIiwKLSAgICBFeHRyYURvbWFpbnNBY3RpdmF0ZWQ6ICJleHRyYS1kb21haW5zLWFjdGl2YXRl
ZCIsCi0gICAgVGFiVHlwZXNDaGFuZ2VkOiAidGFiLXR5cGVzLWNoYW5nZWQiLAotICAgIERlYnVn
VUlFbmFibGVkRGlkQ2hhbmdlOiAiZGVidWctdWktZW5hYmxlZC1kaWQtY2hhbmdlIiwKLX07CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2
YXNjcmlwdC10ZXN0cy9zd2l0Y2gtY2FzZS1kZWZhdWx0LWV4cGVjdGVkLmpzIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvc3dpdGNo
LWNhc2UtZGVmYXVsdC1leHBlY3RlZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDY3MjI0NzdjMzJkMWFmNGVkMTkwM2M2ZGFlMTlhZTRhM2MxNDE2MC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9y
bWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9zd2l0Y2gtY2FzZS1kZWZhdWx0LWV4
cGVjdGVkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotc3dpdGNoICgxKSB7Ci19
Ci0KLXN3aXRjaCAoMSkgewotfQotMgotCi1zd2l0Y2ggKHgpIHsKLWNhc2UgMToKLX0KLQotc3dp
dGNoICh4KSB7Ci1jYXNlIDE6Ci0gICAgOwotfQotCi1zd2l0Y2ggKHgpIHsKLWNhc2UgMToKLSAg
ICBicmVhawotfQotCi1zd2l0Y2ggKHgpIHsKLWNhc2UgMToKLSAgICBicmVhazsKLX0KLQotc3dp
dGNoICh4KSB7Ci1kZWZhdWx0OgotfQotCi1zd2l0Y2ggKHgpIHsKLWRlZmF1bHQ6Ci0gICAgOwot
fQotCi1zd2l0Y2ggKHgpIHsKLWRlZmF1bHQ6Ci0gICAgYnJlYWsKLX0KLQotc3dpdGNoICh4KSB7
Ci1jYXNlIDE6Ci1jYXNlIDI6Ci0gICAgYnJlYWs7Ci19Ci0KLXN3aXRjaCAoeCkgewotY2FzZSAx
OgotICAgIGJyZWFrOwotY2FzZSAyOgotICAgIGJyZWFrOwotfQotCi1zd2l0Y2ggKHgpIHsKLWNh
c2UgMToKLSAgICBicmVhazsKLWNhc2UgMjoKLSAgICBicmVhazsKLWRlZmF1bHQ6Ci0gICAgYnJl
YWs7Ci19Ci0KLXN3aXRjaCAoeCkgewotY2FzZSAoeCk6Ci0gICAgYnJlYWs7Ci1jYXNlICJ0ZXN0
IjoKLSAgICBicmVhazsKLWRlZmF1bHQ6Ci0gICAgYnJlYWs7Ci19Ci0KLXN3aXRjaCAoeCkgewot
Y2FzZSAxOgotICAgIHN3aXRjaCAoeSkgewotICAgIGNhc2UgMjoKLSAgICBjYXNlIDM6Ci0gICAg
ICAgIHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGZhbHNlOwot
ICAgICAgICBicmVhawotICAgIH0KLSAgICBicmVhazsKLWNhc2UgNDoKLSAgICB0cnVlOwotICAg
IGJyZWFrOwotfQotCi0vLyBGSVhNRTogUG9vci4KLXN3aXRjaCAoKHgpICkgewotY2FzZSAxOgot
ICAgIDsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jl
c291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3RlbXBsYXRlLXN0cmluZ3MtZXhwZWN0ZWQuanMgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0
cy90ZW1wbGF0ZS1zdHJpbmdzLWV4cGVjdGVkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmNTJmM2RkYWE4MmM5MTMxNDFhMWQ2ZDU3NDFjMTYxMjUxNGI5Mzc3Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3RlbXBsYXRlLXN0cmluZ3Mt
ZXhwZWN0ZWQuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1gdGVtcGxhdGUgc3Ry
aW5nYAotYCR7MSArIDF9YAotYCR7MSArIDF9YAotYGJlZm9yZSAkezEgKyAxfSBhZnRlcmAKLWBi
ZWZvcmUgJHtgbmVzdGVkICR7MSArIDF9YH0gYWZ0ZXJgCi1gYmVmb3JlICR7YG5lc3RlZCAkezEg
KyAxfWB9IGFmdGVyYAotCi10YWdgdGFnZ2VkIHRlbXBsYXRlIHN0cmluZ2AKLXRhZ2B0YWdnZWQg
dGVtcGxhdGUgc3RyaW5nYAotdGFnYGJlZm9yZSAkezEgKyAxfSBhZnRlcmAKLQotYAotICAgIGJl
Zm9yZSAkezEgKyAxfSBhZnRlcgotICAgIGJlZm9yZSAke3h9IGFmdGVyCi0gICAgYmVmb3JlICR7
ZnVuYygpfSBhZnRlcgotICAgIGJlZm9yZSAke3thOiAxfX0gYWZ0ZXIKLSAgICBiZWZvcmUgJHtb
MV19IGFmdGVyCi0gICAgYmVmb3JlICR7Ci15Ci19IGFmdGVyCi1gCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy90
ZXJuYXJ5LWV4cHJlc3Npb25zLWV4cGVjdGVkLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zv
cm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvdGVybmFyeS1leHByZXNzaW9ucy1l
eHBlY3RlZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTYxODIwNjkzYzJjZjc2
NjNmZTRlZGI2OGNkOGZlMWVlOTkxZjI3Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJj
ZXMvamF2YXNjcmlwdC10ZXN0cy90ZXJuYXJ5LWV4cHJlc3Npb25zLWV4cGVjdGVkLmpzCisrKyAv
ZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi0xID8gMiA6IDM7Ci0oMSkgPyAyIDogMzsKLTEgPyAo
MikgOiAzOwotMSA/IDIgOiAoMyk7Ci0oMSkgPyAoMikgOiAoMyk7Ci0xID8gMiA/IDMgOiA0IDog
NTsKLQotbyA9IGEgJiYgYiA/IGMgOiBkOwotbyA9IChhICYmIGIpID8gYyA6IGQ7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlw
dC10ZXN0cy90cnktY2F0Y2gtZmluYWxseS1zdGF0ZW1lbnRzLWV4cGVjdGVkLmpzIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvdHJ5
LWNhdGNoLWZpbmFsbHktc3RhdGVtZW50cy1leHBlY3RlZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZjE0ODU5M2NhNDI2MDgwMzgwNmZhNzVmMjM1MjdkYjBkOTAxYjYwOS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy90cnktY2F0Y2gt
ZmluYWxseS1zdGF0ZW1lbnRzLWV4cGVjdGVkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAs
MCBAQAotdHJ5IHt9IGNhdGNoIHt9Ci10cnkge30gY2F0Y2gge30gZmluYWxseSB7fQotCi10cnkg
ewotICAgIDEKLX0gY2F0Y2gge30KLXRyeSB7Ci0gICAgMQotfSBjYXRjaCB7fSBmaW5hbGx5IHt9
Ci10cnkgewotICAgIDEKLX0gY2F0Y2ggewotICAgIDIKLX0gZmluYWxseSB7fQotdHJ5IHsKLSAg
ICAxCi19IGNhdGNoIHsKLSAgICAyCi19IGZpbmFsbHkgewotICAgIDMKLX0KLQotdHJ5IHt9IGNh
dGNoIHsKLSAgICAyCi19IGZpbmFsbHkge30KLXRyeSB7fSBjYXRjaCB7fSBmaW5hbGx5IHsKLSAg
ICAzCi19Ci0KLXRyeSB7fSBjYXRjaCAoZSkge30KLXRyeSB7fSBjYXRjaCAoZSkge30gZmluYWxs
eSB7fQotCi10cnkgewotICAgIDEKLX0gY2F0Y2ggKGUpIHt9Ci10cnkgewotICAgIDEKLX0gY2F0
Y2ggKGUpIHt9IGZpbmFsbHkge30KLQotdHJ5IHsKLSAgICAxCi19IGNhdGNoIChlKSB7Ci0gICAg
MQotfQotdHJ5IHsKLSAgICAxCi19IGNhdGNoIChlKSB7Ci0gICAgMQotfSBmaW5hbGx5IHt9Ci0K
LXRyeSB7Ci0gICAgMQotfSBjYXRjaCAoZSkgewotICAgIDEKLX0gZmluYWxseSB7Ci0gICAgMQot
fQotCi10cnkge30gY2F0Y2ggKGUpIHsKLSAgICAxCi19Ci10cnkge30gY2F0Y2ggKGUpIHsKLSAg
ICAxCi19IGZpbmFsbHkge30KLQotdHJ5IHt9IGNhdGNoIChlKSB7fSBmaW5hbGx5IHsKLSAgICAx
Ci19Ci0KLXRyeSB7fSBjYXRjaCAoZSkge30gZmluYWxseSB7fQotdHJ5IHt9IGNhdGNoIChlKSB7
fSBmaW5hbGx5IHt9Ci0KLXRyeSB7Ci0gICAgMQotfSBjYXRjaCAoZSkgewotICAgIDEKLX0gZmlu
YWxseSB7Ci0gICAgMQotfQotdHJ5IHsKLSAgICAyCi19IGNhdGNoIChlKSB7Ci0gICAgMgotfSBm
aW5hbGx5IHsKLSAgICAyCi19Ci0KLXRocm93IGEoKSwgYigpLCBjKCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0
cy91bmFyeS1iaW5hcnktZXhwcmVzc2lvbnMtZXhwZWN0ZWQuanMgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy91bmFyeS1iaW5hcnkt
ZXhwcmVzc2lvbnMtZXhwZWN0ZWQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3
YmU0Njc2YTU1ZThiZThiMWY5ZGFmNDhjN2I0MmFhNTgwYWFkYTEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1h
dHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvdW5hcnktYmluYXJ5LWV4cHJlc3Npb25z
LWV4cGVjdGVkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotKzE7Ci0tMTsKLX4x
OwotITE7Ci0hITE7Ci0xICsgMSAtIDEgKiAxIC8gMSAlIDE7Ci0xLjIgKyAxLjIgLSAxLjIgKiAx
LjIgLyAxLjIgJSAxLjI7Ci0oMSArIDEgLSAxICogMSAvIDEgJSAxKTsKLSgxKSArICgxKSAtICgx
KSAqICgxKSAvICgxKSAlICgxKTsKLSsoMSk7Ci0rczsKLS1zOwotfnM7Ci14Kys7Ci14LS07Ci0r
K3g7Ci0tLXg7Ci14ID0gMTsKLXggPSAxZTI7Ci14ID0gMSArIDE7Ci14ID0gMWUyICsgMWUyOwot
eCA9IHggKyAxOwoteCA9IHggPSB4OwoteCA9IHhbMV0gKyAxOwoteCA9IFsxXTsKLXggPSAoMSk7
Ci14ID0gKHMpOwoteCA9IFsxLCAxLCBzXTsKLWZvbygxLCAxLCBzKTsKLXggPSBbMSArIDEgLSAx
ICogMSAvIDEgJSAxLCArMSwgMSAtIDEsIC0xLCB+MSwgLXMsIHMgKyAxLCBzIC0gMSwgYVsxXSAr
IDEsIGFbMV0gLSAxXTsKLWZvbygxICsgMSAtIDEgKiAxIC8gMSAlIDEsICsxLCAxIC0gMSwgLTEs
IH4xLCAtcywgcyArIDEsIHMgLSAxLCBhWzFdICsgMSwgYVsxXSAtIDEpOwoteCA9IFstMSArIDEg
KiAxIC8gMSAlIDFdOwoteCA9ICgtMSArIDEgKiAxIC8gMSAlIDEpOwoteCA9IDEgPyArMSA6IC1z
OwoteCA9ICgxID8gKzEgOiAtcyk7Ci14ID0gWzEgPyAtMSA6ICtzXTsKLXggPSB7Ci0gICAgYTog
LTEsCi0gICAgYjogKzEsCi0gICAgYzogMSAtIDEsCi0gICAgZDogMSwKLSAgICBzOiBzCi19Owot
eCA9IHggKiogMjsKLQotYSA8IGI7Ci1hID4gYjsKLWEgPD0gYjsKLWEgPj0gYjsKLWEgPT0gYjsK
LWEgIT0gYjsKLWEgPT09IGI7Ci1hICE9PSBiOwotIWEgIT0gIWI7Ci0hIWEgIT0gISFiOwotCi14
ICs9IHg7Ci14ICo9IHg7Ci14IDw8PSB4OwoteCAqKj0geDsKLXggJT0geDsKLQotdm9pZCAwOwot
dm9pZCAoMCk7Ci12b2lkICgwKTsKLXR5cGVvZiB4OwotdHlwZW9mICh4KTsKLXggaW5zdGFuY2Vv
ZiB4OwoteCBpbnN0YW5jZW9mICh4KTsKLQotLy8gRVMyMDIwIC0gQmlnSW50Ci0xbiArIDJuIC0g
M24gKiA0biAvIDVuICUgNm47Ci0xMjNuID09PSAwOwotMCA9PT0gMTIzbjsKLSsxMjNuID09PSAt
MTIzbjsKLS0xMjNuID09PSArMTIzbjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3ZhcmlhYmxlLWRlY2xhcmF0
aW9uLWV4cGVjdGVkLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3Vy
Y2VzL2phdmFzY3JpcHQtdGVzdHMvdmFyaWFibGUtZGVjbGFyYXRpb24tZXhwZWN0ZWQuanMKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlNWJjNTY3NzhmMDkzZTc5YzFmZGE1ZjYwYTg3
MGRkOWM1YzI1OGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQt
dGVzdHMvdmFyaWFibGUtZGVjbGFyYXRpb24tZXhwZWN0ZWQuanMKKysrIC9kZXYvbnVsbApAQCAt
MSw2NSArMCwwIEBACi12YXIgYTsKLXZhciBhID0gMTsKLXZhciBhLAotICAgIGI7Ci12YXIgYSA9
IDEsCi0gICAgYjsKLXZhciBhLAotICAgIGIgPSAxOwotdmFyIGEgPSAxLAotICAgIGIgPSAyOwot
Ci1sZXQgYTsKLWxldCBhID0gMTsKLWxldCBhLAotICAgIGI7Ci1sZXQgYSA9IDEsCi0gICAgYjsK
LWxldCBhLAotICAgIGIgPSAxOwotbGV0IGEgPSAxLAotICAgIGIgPSAyOwotCi1jb25zdCBhID0g
MTsKLWNvbnN0IGEgPSAxLAotICAgIGIgPSAyOwotCi12YXIgYSA9IHsKLSAgICBhOiAxLAotICAg
IGI6IDIKLX07Ci0KLXZhciBhID0gewotICAgICAgICBhOiAxLAotICAgICAgICBiOiAyCi0gICAg
fSwKLSAgICBiID0gewotICAgICAgICB4OiAxLAotICAgICAgICB5OiAyCi0gICAgfSwKLSAgICBj
ID0gWzEsIDIsIDNdLAotICAgIGQgPSAvcmVnZXgvLAotICAgIGUgPSB0cnVlOwotCi0vLyBEZXN0
cnVjdHVyaW5nCi0KLXZhciB7YWxwaGE6IGEsIGJldGE6IHtiLCBnYW1tYTogY30sIGNsdWI6IFtk
LCBlXX0gPSBvOwotdmFyIHthbHBoYTogYSwgYmV0YToge2IsIGdhbW1hOiBjfSwgY2x1YjogW2Qs
IGVdfSA9IHsKLSAgICBhbHBoYTogMSwKLSAgICBiZXRhOiB7Ci0gICAgICAgIGI6IDIsCi0gICAg
ICAgIGdhbW1hOiAzCi0gICAgfSwKLSAgICBjbHViOiBbNCwgNV0KLX07Ci12YXIge3R5cGUsIC4u
LnJlc3R9ID0gewotICAgIHR5cGU6ICJDb2NvYSIsCi0gICAgdGFzdGU6ICJTd2VldCIKLX07Ci12
YXIgey4uLnJlc3R9ID0gewotICAgIGE6IDEsCi0gICAgYjogMgotfTsKLQotdmFyIFthLCBiXSA9
IFswLCAxXTsKLXZhciBbYSwgYiwgLi4ucmVzdF0gPSBbMCwgMSwgMl07CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0
cy93aGlsZS1zdGF0ZW1lbnQtZXhwZWN0ZWQuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9y
bWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy93aGlsZS1zdGF0ZW1lbnQtZXhwZWN0
ZWQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyMjAyNDAzNmU2YjJlMDQ1ODcw
ODM3YWMyZWE2MzNkZjQ2ZjhiMTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2ph
dmFzY3JpcHQtdGVzdHMvd2hpbGUtc3RhdGVtZW50LWV4cGVjdGVkLmpzCisrKyAvZGV2L251bGwK
QEAgLTEsNDYgKzAsMCBAQAotd2hpbGUgKHRydWUpCi0gICAgOwotd2hpbGUgKHRydWUpCi0gICAg
MQotd2hpbGUgKHRydWUpIHt9Ci13aGlsZSAodHJ1ZSkgewotICAgIDEKLX0KLQotd2hpbGUgKCh0
cnVlKSkKLSAgICA7Ci13aGlsZSAoKHRydWUpKSB7fQotd2hpbGUgKCh0cnVlKSkgewotICAgIDEK
LX0KLQotd2hpbGUgKCh0cnVlKSkKLSAgICA7Ci13aGlsZSAoKHRydWUpKSB7fQotd2hpbGUgKCh0
cnVlKSkgewotICAgIDEKLX0KLQotd2hpbGUgKHggJiYgIXkpCi0gICAgeCsrOwotCi13aGlsZSAo
Zm9vLmxlbmd0aCA8IDUpIHsKLSAgICB4Kys7Ci0gICAgeSsrCi19Ci0KLXdoaWxlICh0cnVlKQot
ICAgIHdoaWxlICh0cnVlKQotICAgICAgICB3aGlsZSAodHJ1ZSkKLSAgICAgICAgICAgIHdoaWxl
ICh0cnVlKQotICAgICAgICAgICAgICAgIDsKLQotd2hpbGUgKHRydWUpCi0gICAgd2hpbGUgKHRy
dWUpIHsKLSAgICAgICAgd2hpbGUgKHRydWUpCi0gICAgICAgICAgICAxCi0gICAgfQotCi13aGls
ZSAodHJ1ZSkKLSAgICB3aGlsZSAodHJ1ZSkKLSAgICAgICAgMTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3dp
dGgtc3RhdGVtZW50LWV4cGVjdGVkLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRp
bmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvd2l0aC1zdGF0ZW1lbnQtZXhwZWN0ZWQuanMK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwMmE5MmE3ZWJjNjI4YTcwODA5YmRhODU3
YWIyYmIzZjg5YTU3YTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3Jp
cHQtdGVzdHMvd2l0aC1zdGF0ZW1lbnQtZXhwZWN0ZWQuanMKKysrIC9kZXYvbnVsbApAQCAtMSwx
MiArMCwwIEBACi13aXRoICh4KQotICAgIDsKLXdpdGggKHgpIHt9Ci13aXRoICh4KSB7Ci0gICAg
MQotfQotd2l0aCAoKHgpKSB7Ci0gICAgMQotfQotd2l0aCAoMSkKLSAgICB3aXRoICgyKQotICAg
ICAgICAzOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3Vy
Y2VzL2RhdGEtaW50ZXJjZXB0ZWQuanNvbiBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L3Jlc291cmNlcy9kYXRhLWludGVyY2VwdGVkLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDM2NGUyYjBkOTk2N2NlYjFlZDdlMzJjZDE5MjkzNWRmMTc2NTgxMjYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2VzL2RhdGEtaW50ZXJjZXB0ZWQuanNvbgorKysgL2Rldi9udWxs
CkBAIC0xICswLDAgQEAKLWludGVyY2VwdGVkIHJlcXVlc3QKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431132</attachid>
            <date>2021-06-10 14:35:09 -0700</date>
            <delta_ts>2021-06-11 14:06:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226800-20210610163507.patch</filename>
            <type>text/plain</type>
            <size>254595</size>
            <attacher name="Amir Mark Jr">amir_mark</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NzMzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWRmMDNkZDdiYWNmYmM1ZGE1NTg4
OWEwZGMxZTlhOGViOTA3NmNkNC4uNmYxZGMxOTgzMmZmMDA3MTRkZWU3M2JkZjhiYmQ4NTg1YWVk
ZmEyYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTA2LTEwICBBbWlyIE1hcmsgSnIgIDxh
bWlyX21hcmtAYXBwbGUuY29tPgorCisgICAgICAgIFtMYXlvdXRUZXN0c10gRGVsZXRlIHVudXNl
ZCBMYXlvdXRUZXN0cy9pbnNwZWN0b3IgcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY4MDAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlL3Jlc291cmNlcy9l
cnJvcnMuY3NzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9kb20vcmVzb3VyY2VzL2hp
Z2hsaWdodC1pZnJhbWUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0
dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9hcnJvdy1mdW5jdGlvbnMtZXhwZWN0ZWQu
anM6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2ph
dmFzY3JpcHQtdGVzdHMvY2xhc3Nlcy1leHBlY3RlZC5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9jb21tYS1leHBy
ZXNzaW9ucy1leHBlY3RlZC5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0
dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9jb21tZW50cy1hbmQtcHJlc2VydmUtbmV3
bGluZXMtZXhwZWN0ZWQuanM6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRp
bmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvY29tbWVudHMtb25seS1leHBlY3RlZC5qczog
UmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNj
cmlwdC10ZXN0cy9kby13aGlsZS1zdGF0ZW1lbnQtZXhwZWN0ZWQuanM6IFJlbW92ZWQuCisgICAg
ICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvZm9y
LXN0YXRlbWVudHMtZXhwZWN0ZWQuanM6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zv
cm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvZnVuY3Rpb25zLWV4cGVjdGVkLmpz
OiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZh
c2NyaXB0LXRlc3RzL2dlbmVyYXRvcnMtZXhwZWN0ZWQuanM6IFJlbW92ZWQuCisgICAgICAgICog
aW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvaWYtc3RhdGVt
ZW50LWV4cGVjdGVkLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5n
L3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2ltcG9ydC1leHBlY3RlZC5qczogUmVtb3ZlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0
cy9sYWJlbC1icmVhay1jb250aW51ZS1ibG9jay1leHBlY3RlZC5qczogUmVtb3ZlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9sb2dp
Yy1leHByZXNzaW9ucy1leHBlY3RlZC5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
Zm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9tb2R1bGVzLWV4cGVjdGVkLmpz
OiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZh
c2NyaXB0LXRlc3RzL25ldy1leHByZXNzaW9uLWV4cGVjdGVkLmpzOiBSZW1vdmVkLgorICAgICAg
ICAqIGluc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL251bWJl
cnMtZXhwZWN0ZWQuanM6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcv
cmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvb2JqZWN0LWFycmF5LWxpdGVyYWwtZXhwZWN0ZWQu
anM6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2ph
dmFzY3JpcHQtdGVzdHMvb3RoZXItc3RhdGVtZW50cy1leHBlY3RlZC5qczogUmVtb3ZlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9y
ZXR1cm4tc3RhdGVtZW50LWV4cGVjdGVkLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rv
ci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3NhbXBsZS1qcXVlcnktZXhw
ZWN0ZWQuanM6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3Vy
Y2VzL2phdmFzY3JpcHQtdGVzdHMvc2FtcGxlLW5vcm1hbC11dGlsaXRpZXMtZXhwZWN0ZWQuanM6
IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFz
Y3JpcHQtdGVzdHMvc2FtcGxlLXdlYmluc3BlY3Rvci1vYmplY3QtZXhwZWN0ZWQuanM6IFJlbW92
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQt
dGVzdHMvc3dpdGNoLWNhc2UtZGVmYXVsdC1leHBlY3RlZC5qczogUmVtb3ZlZC4KKyAgICAgICAg
KiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy90ZW1wbGF0
ZS1zdHJpbmdzLWV4cGVjdGVkLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mb3Jt
YXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3Rlcm5hcnktZXhwcmVzc2lvbnMtZXhw
ZWN0ZWQuanM6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3Vy
Y2VzL2phdmFzY3JpcHQtdGVzdHMvdHJ5LWNhdGNoLWZpbmFsbHktc3RhdGVtZW50cy1leHBlY3Rl
ZC5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMv
amF2YXNjcmlwdC10ZXN0cy91bmFyeS1iaW5hcnktZXhwcmVzc2lvbnMtZXhwZWN0ZWQuanM6IFJl
bW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3Jp
cHQtdGVzdHMvdmFyaWFibGUtZGVjbGFyYXRpb24tZXhwZWN0ZWQuanM6IFJlbW92ZWQuCisgICAg
ICAgICogaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvd2hp
bGUtc3RhdGVtZW50LWV4cGVjdGVkLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9m
b3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3dpdGgtc3RhdGVtZW50LWV4cGVj
dGVkLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9k
YXRhLWludGVyY2VwdGVkLmpzb246IFJlbW92ZWQuCisKIDIwMjEtMDYtMTAgIENhbWVyb24gTWND
b3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIHNvbWUgTWFjIE1hdGhN
TCB0ZXN0IGV4cGVjdGF0aW9uIGZpbGVzIGFyb3VuZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2NvbnNvbGUvcmVzb3VyY2VzL2Vycm9ycy5jc3MgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY29uc29sZS9yZXNvdXJjZXMvZXJyb3JzLmNzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMjg1YjQyMWE2ZjBjM2ZlNTRkYjAwMDczMTBkN2E4NGFmNWJiZmM0Yy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY29uc29sZS9yZXNvdXJjZXMvZXJyb3JzLmNzcworKysgL2Rldi9udWxsCkBAIC0xLDcg
KzAsMCBAQAotZGl2IHsgKiBjb2xvcjogcmVkOyB9IGRpdiB7ICogY29sb3I6IHJlZDsgfQotCi1k
aXYgewotICAgICoKLSAgICBjb2xvcjoKLSAgICByZWQ7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZG9tL3Jlc291cmNlcy9oaWdobGlnaHQtaWZyYW1lLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZG9tL3Jlc291cmNlcy9oaWdobGlnaHQtaWZyYW1lLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiMzRhNTQxY2Q5OGM2YjAxNTVjZjY0MWFhNDE0
Zjg2MjRhZmNlNTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9yZXNvdXJjZXMvaGlnaGxpZ2h0LWlmcmFtZS5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi08aHRtbD4KLSAgICA8aGVhZD4KLSAg
ICA8L2hlYWQ+Ci0gICAgPGJvZHk+Ci0gICAgICAgIDxkaXYgaWQ9ImlkLW9uZSIgc3R5bGU9Indp
ZHRoOjE1MHB4OyBoZWlnaHQ6IDI1MHB4Ij48L2Rpdj4KLSAgICAgICAgPGRpdj48L2Rpdj4KLSAg
ICA8L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQt
dGVzdHMvYXJyb3ctZnVuY3Rpb25zLWV4cGVjdGVkLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvYXJyb3ctZnVuY3Rpb25zLWV4
cGVjdGVkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZWIxMGZiZjI0YTBmMzdj
NTBiYTczYTdiZjliZGU3YWI2Y2NhOGZjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNl
cy9qYXZhc2NyaXB0LXRlc3RzL2Fycm93LWZ1bmN0aW9ucy1leHBlY3RlZC5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDc3ICswLDAgQEAKLXggPT4geDsKLXggPT4geCAqIHg7Ci14ID0+IHsKLSAgICB4
ICogeAotfTsKLXggPT4gewotICAgIHggKiB4OwotfTsKLSgpID0+IDE7Ci0oeCkgPT4geDsKLSh4
KSA9PiB4ICogeDsKLSh4KSA9PiB7Ci0gICAgeCAqIHgKLX07Ci0oeCkgPT4gewotICAgIHggKiB4
OwotfTsKLQoteCA9PiB7Ci0gICAgeCAqPSB4OwotICAgIHgKLX07Ci0KLSh4KSA9PiB7Ci0gICAg
eCAqPSB4OwotICAgIHgKLX07Ci0KLVtdLnNvcnQoKGEsIGIpID0+IGEgLSBiKTsKLVtdLnNvcnQo
KGEsIGIpID0+IGZvbyhhLCBiKSk7Ci1bXS5yZWR1Y2UoKHN1bSwge2EsIGJ9KSA9PiBzdW0gKz0g
YSArIGIsIDApOwotCi1zZXRUaW1lb3V0KCgpID0+IHsKLSAgICAxOwotICAgIDI7Ci0gICAgMwot
fSk7Ci0KLWZvbygoYT0xLCAuLi5yZXN0KSA9PiByZXN0W2FdKTsKLQotZm9vKChhPTEsIGIpID0+
IGIpOwotCi1mb28oKGE9MSwgYiwgKSA9PiBiKTsKLQotYXN5bmMgeCA9PiB4Ci1hc3luYyAoeCkg
PT4geAotYXN5bmMgKHgpID0+IHsKLSAgICB4Ci19Ci0KLWEgPT4gewotICAgIGZvciAoYiBvZiBb
XSkKLSAgICAgICAgOwotfQotKCkgPT4gewotICAgIHRyeSB7Ci0gICAgICAgIDEKLSAgICB9IGNh
dGNoIHsKLSAgICAgICAgMgotICAgIH0KLX0KLQotKCkgPT4gewotICAgIGEoKSwKLSAgICBiKCks
Ci0gICAgYygpCi19Ci0KLSgpID0+IHsKLSAgICByZXR1cm4KLX0KLSgpID0+IHsKLSAgICByZXR1
cm4gNDIKLX0KLSgpID0+IHsKLSAgICByZXR1cm4gNDIsIGEoKSwgYigpCi19CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10
ZXN0cy9jbGFzc2VzLWV4cGVjdGVkLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRp
bmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvY2xhc3Nlcy1leHBlY3RlZC5qcwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjMyNzdiZTg1NmY4NzRiY2E2ZWYyOWE3NTg4NjQ3ZmQ5
YzBmNGQyNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0
cy9jbGFzc2VzLWV4cGVjdGVkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTk5ICswLDAgQEAKLWNs
YXNzIHgge30KLQotY2xhc3MgRm9vIHt9Ci1jbGFzcyBGb28gZXh0ZW5kcyBCYXIge30KLQotY2xh
c3MgRm9vIHsKLSAgICBjb25zdHJ1Y3RvcigpCi0gICAgewotICAgICAgICAxCi0gICAgfQotfQot
Ci1jbGFzcyBGb28gewotICAgIGNvbnN0cnVjdG9yKCkKLSAgICB7Ci0gICAgICAgIDEKLSAgICB9
Ci0gICAgc3RhdGljIHN0YXRpY01ldGhvZCgpCi0gICAgewotICAgICAgICAxCi0gICAgfQotfQot
Ci1jbGFzcyBGb28gewotICAgIHN0YXRpYyBzdGF0aWNNZXRob2QoKQotICAgIHsKLSAgICAgICAg
MQotICAgIH0KLX0KLQotY2xhc3MgRm9vIGV4dGVuZHMgQmFyIHsKLSAgICBjb25zdHJ1Y3Rvcigp
Ci0gICAgewotICAgICAgICBzdXBlcigpCi0gICAgfQotfQotCi1jbGFzcyBGb28gZXh0ZW5kcyBC
YXIgewotICAgIGNvbnN0cnVjdG9yKCkKLSAgICB7Ci0gICAgICAgIDEKLSAgICB9Ci0gICAgc3Rh
dGljIHN0YXRpY01ldGhvZCgpCi0gICAgewotICAgICAgICBzdXBlci5zdGF0aWNNZXRob2QoKQot
ICAgIH0KLX0KLQotY2xhc3MgRm9vIGV4dGVuZHMgQmFyIHsKLSAgICBjb25zdHJ1Y3RvcigpCi0g
ICAgewotICAgICAgICAxCi0gICAgfQotICAgIHN0YXRpYyBzdGF0aWNNZXRob2QoKQotICAgIHsK
LSAgICAgICAgc3VwZXIuc3RhdGljTWV0aG9kKCkKLSAgICB9Ci0gICAgbWV0aG9kMSgpCi0gICAg
ewotICAgICAgICAxCi0gICAgfQotICAgIG1ldGhvZDIobmFtZSwge29wdGlvbnN9KQotICAgIHsK
LSAgICAgICAgMQotICAgIH0KLSAgICBnZXQgZ2V0dGVyKCkKLSAgICB7Ci0gICAgICAgIDEKLSAg
ICB9Ci0gICAgc2V0IHNldHRlcih4KQotICAgIHsKLSAgICAgICAgMQotICAgIH0KLSAgICAqZ2Vu
MSgpCi0gICAgewotICAgICAgICAxCi0gICAgfQotICAgICpnZW4yKCkKLSAgICB7Ci0gICAgICAg
IDEKLSAgICB9Ci0gICAgYXN5bmMgYSgpCi0gICAgewotICAgICAgICAxCi0gICAgfQotfQotCi1B
ID0gY2xhc3MgRm9vIGV4dGVuZHMgKGIgPyBCYXIgOiBCYXIpIHsKLSAgICBjb25zdHJ1Y3Rvcigp
Ci0gICAgewotICAgICAgICBuZXcudGFyZ2V0LnN0YXRpY01ldGhvZCgpCi0gICAgfQotICAgIHN0
YXRpYyBzdGF0aWNNZXRob2QoKQotICAgIHsKLSAgICAgICAgc3VwZXIuc3RhdGljTWV0aG9kKCkK
LSAgICB9Ci0gICAgbWV0aG9kMSgpCi0gICAgewotICAgICAgICAxCi0gICAgfQotICAgIG1ldGhv
ZDIobmFtZSwge29wdGlvbnN9KQotICAgIHsKLSAgICAgICAgc3VwZXIubWV0aG9kKCkKLSAgICB9
Ci0gICAgZ2V0IGdldHRlcigpCi0gICAgewotICAgICAgICAxCi0gICAgfQotICAgIHNldCBzZXR0
ZXIoeCkKLSAgICB7Ci0gICAgICAgIDEKLSAgICB9Ci0gICAgKmdlbjEoKQotICAgIHsKLSAgICAg
ICAgMQotICAgIH0KLSAgICAqZ2VuMigpCi0gICAgewotICAgICAgICAxCi0gICAgfQotICAgIGFz
eW5jIGEoKQotICAgIHsKLSAgICAgICAgMQotICAgIH0KLX0KLQotY2xhc3MgRm9vIHsKLSAgICBz
dGF0aWMgYXN5bmMgYXN5bmMoKQotICAgIHsKLSAgICAgICAgMQotICAgIH0KLSAgICBhc3luYyBh
c3luYygpCi0gICAgewotICAgICAgICAxCi0gICAgfQotICAgIGFzeW5jKCkKLSAgICB7Ci0gICAg
ICAgIDEKLSAgICB9Ci19Ci0KLWNsYXNzIEZvbyB7Ci0gICAgYXN5bmMgImYiKCkge30KLSAgICBh
c3luYyAxKCkge30KLSAgICBhc3luYyBbImYiXSgpIHt9Ci19Ci0KLS8vIEVTMjAxOCAtIEFzeW5j
IEl0ZXJhdGlvbiAvIEFzeW5jIEdlbmVyYXRvcnMKLQotY2xhc3MgRm9vIHsKLSAgICBzdGF0aWMg
YXN5bmMgKmFzeW5jKCkKLSAgICB7Ci0gICAgICAgIDEKLSAgICB9Ci0gICAgYXN5bmMgKmFzeW5j
KCkKLSAgICB7Ci0gICAgICAgIDEKLSAgICB9Ci0gICAgKmFzeW5jKCkKLSAgICB7Ci0gICAgICAg
IDEKLSAgICB9Ci19Ci0KLWNsYXNzIEZvbyB7Ci0gICAgc3RhdGljIGFzeW5jICphc3luYygpCi0g
ICAgewotICAgICAgICAxCi0gICAgfQotICAgIGFzeW5jICphc3luYygpCi0gICAgewotICAgICAg
ICAxCi0gICAgfQotICAgICphc3luYygpCi0gICAgewotICAgICAgICAxCi0gICAgfQotfQotCi1j
bGFzcyBGb28gewotICAgIHN0YXRpYyBhc3luYyAqYXN5bmMoKQotICAgIHsKLSAgICAgICAgMQot
ICAgIH0KLSAgICBhc3luYyAqYXN5bmMoKQotICAgIHsKLSAgICAgICAgMQotICAgIH0KLSAgICAq
YXN5bmMoKQotICAgIHsKLSAgICAgICAgMQotICAgIH0KLX0KLQotY2xhc3MgRm9vIHsKLSAgICBh
c3luYyAqImYiKCkge30KLSAgICBhc3luYyAqMSgpIHt9Ci0gICAgYXN5bmMgKlsiZiJdKCkge30K
LX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNl
cy9qYXZhc2NyaXB0LXRlc3RzL2NvbW1hLWV4cHJlc3Npb25zLWV4cGVjdGVkLmpzIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvY29t
bWEtZXhwcmVzc2lvbnMtZXhwZWN0ZWQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGNiN2E2OWI1MTllMWQxZTAzYTUyOTUyODU5YTIzOWM3Y2EzNzJiNWEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zv
cm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvY29tbWEtZXhwcmVzc2lvbnMtZXhw
ZWN0ZWQuanMKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1hKHgsIHksIHopLAotYih4
LCB5LCB6KSwKLWMoeCwgeSwgeik7Ci0KLWlmIChhKHgsIHksIHopLCBiKHgsIHksIHopLCBjKHgs
IHksIHopKSB7fQotCi10cnVlICYmIChhKHgsIHksIHopLCBiKHgsIHksIHopLCBjKHgsIHksIHop
KSAmJiB0cnVlOwotCi0oeCwgeSwgeikgPT4gewotICAgIGEoeCwgeSwgeiksCi0gICAgYih4LCB5
LCB6KSwKLSAgICBjKHgsIHksIHopCi19Ci0KLSh4LCB5LCB6KSA9PiB7Ci0gICAgaWYgKGEoeCwg
eSwgeiksIGIoeCwgeSwgeiksIGMoeCwgeSwgeikpIHt9Ci19Ci0KLSh4LCB5LCB6KSA9PiB7Ci0g
ICAgdHJ1ZSAmJiAoYSh4LCB5LCB6KSwgYih4LCB5LCB6KSwgYyh4LCB5LCB6KSkgJiYgdHJ1ZTsK
LX0KLQotKHgsIHksIHopID0+IChhKHgsIHksIHopLCBiKHgsIHksIHopLCBjKHgsIHksIHopKTsK
LQotKHgsIHksIHopID0+IHRydWUgJiYgKGEoeCwgeSwgeiksIGIoeCwgeSwgeiksIGMoeCwgeSwg
eikpICYmIHRydWU7Ci0KLWZ1bmN0aW9uIGZvbyh4LCB5LCB6KSB7Ci0gICAgYSh4LCB5LCB6KSwK
LSAgICBiKHgsIHksIHopLAotICAgIGMoeCwgeSwgeikKLX0KLQotZnVuY3Rpb24gZm9vKHgsIHks
IHopIHsKLSAgICBpZiAoYSh4LCB5LCB6KSwgYih4LCB5LCB6KSwgYyh4LCB5LCB6KSkge30KLX0K
LQotZnVuY3Rpb24gZm9vKHgsIHksIHopIHsKLSAgICB0cnVlICYmIChhKHgsIHksIHopLCBiKHgs
IHksIHopLCBjKHgsIHksIHopKSAmJiB0cnVlOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvY29tbWVudHMt
YW5kLXByZXNlcnZlLW5ld2xpbmVzLWV4cGVjdGVkLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvY29tbWVudHMtYW5kLXByZXNl
cnZlLW5ld2xpbmVzLWV4cGVjdGVkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3
MGFlYTA4ZDFlNzZjMzg3NTY0OTFmM2NjNzk3YjgwODg0ZjM3ZmE5Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3Jt
YXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2NvbW1lbnRzLWFuZC1wcmVzZXJ2ZS1u
ZXdsaW5lcy1leHBlY3RlZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8vIFRP
UAotCi0vLyBUaGlzIGlzIGEgbGluZSBjb21tZW50LgotMTsKLQotLyogVGhpcyBpcyBhIGJsb2Nr
IGNvbW1lbnQgKi8KLTI7Ci0KLS8vIExpbmUgLSBiZWZvcmUKLS8qIEJsb2NrICovCi0vLyBMaW5l
IC0gYWZ0ZXIKLTM7Ci0KLS8qIEJsb2NrIC0gYmVmb3JlICovCi0vLyBMaW5lCi0vKiBCbG9jayAt
IGFmdGVyICovCi00OwotCi0vKgotICogTXVsdGlsaW5lIEJsb2NrCi0gKi8KLTU7Ci0KLS8vIC0t
LS0tLS0tLS0tLS0tLQotLy8gICBMaW5lIEhlYWRlcgotLy8gLS0tLS0tLS0tLS0tLS0tCi02Owot
Ci03OyAvLyBDb21tZW50IG9uIGxpbmUgd2l0aCBjb2RlLgotCi0vLyBMZWFkaW5nIGNvbW1lbnQg
Zm9yIHguCi12YXIgeCA9IDE7IC8vIFRyYWlsaW5nIGNvbW1lbnQgZm9yIHguCi0vLyBMZWFkaW5n
IGNvbW1lbnQgZm9yIHkuCi12YXIgeSA9IDI7IC8vIFRyYWlsaW5nIGNvbW1lbnQgZm9yIHkuCi0K
LXZhciB4ID0gMTsgLy8gVHJhaWxpbmcgY29tbWVudCBmb3IgeC4KLXZhciB5ID0gMjsgLy8gVHJh
aWxpbmcgY29tbWVudCBmb3IgeS4KLQotLy8gTGVhZGluZyBjb21tZW50IGZvciB4LgotdmFyIHgg
PSAxOwotLy8gTGVhZGluZyBjb21tZW50IGZvciB5LgotdmFyIHkgPSAyOwotCi0vKiBBbHBoYSAq
LwotdmFyIHggPSAxOyAvKiBBbHBoYSAqLyAvKiBCZXRhICovCi0vKiBHYW1tYSAqLwotCi0oZnVu
Y3Rpb24oKSB7Ci0gICAgLy8gSW5jcmVtZW50LgotICAgIHgrKzsKLSAgICB5Kys7Ci0KLSAgICAv
LyBTdW0gdGhlIGxpc3QuCi0gICAgbGV0IHN1bSA9IDA7Ci0gICAgZm9yIChsZXQgeCBvZiBsaXN0
KQotICAgICAgICBzdW0gKz0geDsKLQotICAgIC8vIFJldHVybiByZXN1bHQuCi0gICAgcmV0dXJu
IHN1bTsKLX0pKCk7Ci0KLS8vIEJPVFRPTQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvY29tbWVudHMtb25seS1l
eHBlY3RlZC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9q
YXZhc2NyaXB0LXRlc3RzL2NvbW1lbnRzLW9ubHktZXhwZWN0ZWQuanMKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGI3OTA4MjI4NjAwNWIwZDg1ODYzZmUwNTFiMjVjNDBjMTg2MzgwNmYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvY29tbWVu
dHMtb25seS1leHBlY3RlZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLS8vIENv
bW1lbnQgbGluZSBvbmUuCi0KLS8vIENvbW1lbnQgbGluZSB0aHJlZS4KLQotLyoKLSAqIENvbW1l
bnQgc3Bhbm5pbmcgbGluZSA1LTYKLSAqLwotLy8gQW5vdGhlciBjb21tZW50IG9uIGxpbmUgNi4K
LQotLyogVGhlIGVuZCAqLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1h
dHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvZG8td2hpbGUtc3RhdGVtZW50LWV4cGVj
dGVkLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFz
Y3JpcHQtdGVzdHMvZG8td2hpbGUtc3RhdGVtZW50LWV4cGVjdGVkLmpzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2MTE3YzM4NzE3Nzk5Y2NmYzA5MDBhODc3YTYwMmY3MGI1YmMzMmI1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2RvLXdo
aWxlLXN0YXRlbWVudC1leHBlY3RlZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAK
LWRvIHt9IHdoaWxlICgxKTsKLWRvIHt9IHdoaWxlICgoMSkpOwotCi1kbyB7Ci0gICAgMQotfSB3
aGlsZSAoMSk7Ci1kbyB7Ci0gICAgMQotfSB3aGlsZSAoKDEpKTsKLQotZG8ge30gd2hpbGUgKDEp
OwotZG8ge30gd2hpbGUgKDEpOwotCi1kbyB7Ci0gICAgMQotfSB3aGlsZSAoMSk7Ci1kbyB7Ci0g
ICAgMQotfSB3aGlsZSAoMSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9y
bWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9mb3Itc3RhdGVtZW50cy1leHBlY3Rl
ZC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2Ny
aXB0LXRlc3RzL2Zvci1zdGF0ZW1lbnRzLWV4cGVjdGVkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBhYzg4N2M1N2JlZDMyMDE0ZmQ4MjAzNWU1NzIzZmQzMTA5ZGJjOWJiLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2Zvci1zdGF0ZW1l
bnRzLWV4cGVjdGVkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTg1ICswLDAgQEAKLWZvciAoOzsp
Ci0gICAgOwotZm9yICg7OykKLSAgICAxCi1mb3IgKDE7OykKLSAgICAxCi1mb3IgKDsgMTspCi0g
ICAgMQotZm9yICg7OyAxKQotICAgIDEKLQotZm9yICg7Oykge30KLWZvciAoMTs7KSB7fQotZm9y
ICg7IDE7KSB7fQotZm9yICg7OyAxKSB7fQotCi1mb3IgKDs7KSB7Ci0gICAgMQotfQotZm9yICgx
OzspIHsKLSAgICAxCi19Ci1mb3IgKDsgMTspIHsKLSAgICAxCi19Ci1mb3IgKDs7IDEpIHsKLSAg
ICAxCi19Ci0KLWZvciAoOzspCi0gICAgOwotZm9yICg7OykKLSAgICA7Ci1mb3IgKDs7KSB7fQot
Zm9yICg7Oykge30KLQotZm9yICg7OykgewotICAgIDEKLX0KLTEKLXgKLS8vIGZvcgotCi1mb3Ig
KDE7IDI7IDMpCi0gICAgMTsKLWZvciAoMTsgMjsgMykgewotICAgIDEKLX0KLTsKLQotZm9yICgo
MSk7KDIpOygzKSkKLSAgICAxCi1mb3IgKCgxKTsoMik7KDMpKSB7Ci0gICAgMQotfQotCi1mb3Ig
KCgxKTsoMik7KDMpKQotICAgIDEKLWZvciAoKDEpOygyKTsoMykpIHsKLSAgICAxCi19Ci0KLWZv
ciAoMTsgMjsgMykKLSAgICAxCi1mb3IgKDE7IDI7IDMpIHsKLSAgICAxCi19Ci0KLWZvciAodmFy
IHggPSAxOyB4IDwgMTA7ICsreCkKLSAgICAxOwotZm9yICh2YXIgeCA9IDE7IHggPCBsZW47ICsr
eCkKLSAgICAxOwotZm9yICh2YXIgeCA9IDEsIGxlbiA9IDEwOyB4IDwgbGVuOyArK3gpCi0gICAg
MTsKLWZvciAodmFyIHggPSAxLCBsZW4gPSAxMDsgbGVuID0gMjAsIHggPCBsZW47ICsreCkKLSAg
ICAxOwotZm9yICh2YXIgeCA9IDEsIGxlbiA9IDEwOyBsZW4gPSAyMCwgeCA8IGxlbjsgbGVuID0g
MTUsICsreCkKLSAgICAxOwotCi1mb3IgKHggPSAxOyB4IDwgMTA7ICsreCkgewotICAgIDEKLX0K
LWZvciAoeCA9IDE7IHggPCBsZW47ICsreCkgewotICAgIDEKLX0KLWZvciAoeCA9IDEsIGxlbiA9
IDEwOyB4IDwgbGVuOyArK3gpIHsKLSAgICAxCi19Ci1mb3IgKHggPSAxLCBsZW4gPSAxMDsgbGVu
ID0gMjAsIHggPCBsZW47ICsreCkgewotICAgIDEKLX0KLWZvciAoeCA9IDEsIGxlbiA9IDEwOyBs
ZW4gPSAyMCwgeCA8IGxlbjsgbGVuID0gMTUsICsreCkgewotICAgIDEKLX0KLQotZm9yICh2YXIg
eCA9IDE7IHggPCAxMDsgKyt4KSB7Ci0gICAgMQotfQotZm9yICh2YXIgeCA9IDE7IHggPCBsZW47
ICsreCkgewotICAgIDEKLX0KLWZvciAodmFyIHggPSAxLCBsZW4gPSAxMDsgeCA8IGxlbjsgKyt4
KSB7Ci0gICAgMQotfQotZm9yICh2YXIgeCA9IDEsIGxlbiA9IDEwOyBsZW4gPSAyMCwgeCA8IGxl
bjsgbGVuID0gMTUsICsreCkgewotICAgIDEKLX0KLQotZm9yICh2YXIgeCA9IDE7IHggPCAxMDsg
Kyt4KSB7Ci0gICAgMQotfQotZm9yICh2YXIgeCA9IDE7IHggPCBsZW47ICsreCkgewotICAgIDEK
LX0KLWZvciAodmFyIHggPSAxLCBsZW4gPSAxMDsgeCA8IGxlbjsgKyt4KSB7Ci0gICAgMQotfQot
Zm9yICh2YXIgeCA9IDEsIGxlbiA9IDEwOyBsZW4gPSAyMCwgeCA8IGxlbjsgbGVuID0gMTUsICsr
eCkgewotICAgIDEKLX0KLQotZm9yICgxOyAyOyAzKQotICAgIGZvciAoNDsgNTsgNikKLSAgICAg
ICAgZm9yICg3OyA4OyA5KQotICAgICAgICAgICAgOwotZm9yICgxOyAyOyAzKSB7Ci0gICAgaWYg
KHRydWUpIHsKLSAgICAgICAgZm9yICg0OyA1OyA2KQotICAgICAgICAgICAgMAotICAgIH0KLSAg
ICBmb3IgKDc7IDg7IDkpCi0gICAgICAgIDsKLX0KLQotZm9yICh2YXIgeCwgeSwgejsgIXggJiYg
eTsgKyt4LCArK3kpIHt9Ci1mb3IgKHZhciB4ID0gW10sIHkgPSBbMSwgMiwgM107IHRydWU7IGZh
bHNlKSB7fQotCi0vLyBmb3IuLmluCi0KLWZvciAoeCBpbiBvYmopCi0gICAgOwotZm9yICh4IGlu
IChvYmopKQotICAgIDsKLWZvciAodmFyIHggaW4gd2luZG93KQotICAgIDsKLWZvciAodmFyIHgg
aW4gKHdpbmRvdykpCi0gICAgOwotZm9yICh2YXIge2Zvb30gaW4gd2luZG93KQotICAgIDsKLWZv
ciAodmFyIFt4LCB5XSBpbiBbMSwgMiwgM10pCi0gICAgOwotCi0vLyBmb3IuLm9mCi0KLWZvciAo
eCBvZiBbMSwgMiwgM10pCi0gICAgOwotZm9yICh4IG9mIChbMSwgMiwgM10pKQotICAgIDsKLWZv
ciAodmFyIHggb2Ygd2luZG93KQotICAgIDsKLWZvciAodmFyIHggb2YgKHdpbmRvdykpCi0gICAg
OwotZm9yICh2YXIge2Zvb30gb2Ygd2luZG93KQotICAgIDsKLWZvciAodmFyIFt4LCB5XSBvZiBb
MSwgMiwgM10pCi0gICAgOwotCi0vLyBFUzIwMTggLSBBc3luYyBJdGVyYXRpb24gLyBBc3luYyBH
ZW5lcmF0b3JzCi0KLWFzeW5jIGZ1bmN0aW9uIGYoKSB7Ci0gICAgZm9yIGF3YWl0ICh4IG9mIFtd
KQotICAgICAgICA7Ci0gICAgZm9yIGF3YWl0ICh4IG9mIFsxLCAyLCAzXSkKLSAgICAgICAgOwot
ICAgIGZvciBhd2FpdCAoeCBvZiAoWzEsIDIsIDNdKSkKLSAgICAgICAgOwotICAgIGZvciBhd2Fp
dCAodmFyIHggb2Ygd2luZG93KQotICAgICAgICA7Ci0gICAgZm9yIGF3YWl0ICh2YXIgeCBvZiAo
d2luZG93KSkKLSAgICAgICAgOwotICAgIGZvciBhd2FpdCAobGV0IHtmb299IG9mIHdpbmRvdykK
LSAgICAgICAgOwotICAgIGZvciBhd2FpdCAobGV0IFt4LCB5XSBvZiBbMSwgMiwgM10pCi0gICAg
ICAgIDsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jl
c291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2Z1bmN0aW9ucy1leHBlY3RlZC5qcyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2Z1bmN0
aW9ucy1leHBlY3RlZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmVmOGU3NmU4
MGVkYzA5YjQ4OTFiM2FhMGRkOTg1Y2YwYzIwY2Y1ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9y
ZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9mdW5jdGlvbnMtZXhwZWN0ZWQuanMKKysrIC9kZXYv
bnVsbApAQCAtMSwxODAgKzAsMCBAQAotLy8gQ2FsbHMKLQotZm9vKCk7Ci1mb28oMSk7Ci1mb28o
MSwgMik7Ci1mb28oMSwgMiwgKTsKLWZvbygxLCAyLCAzKTsKLWZvbyhmb28oMSkpOwotZm9vKGZv
bygxKSwgZm9vKDIsIDMpKTsKLWZvbyguLi5zcHJlYWQpOwotZm9vKHgsIC4uLnNwcmVhZCk7Ci1m
b28oeCwgLi4uZm9vKCkpOwotCi1mb28oewotICAgIGE6IDEsCi0gICAgYjogMiwKLSAgICBjOiAz
Ci19KTsKLQotZm9vKDEsIDIsIDMsIGZ1bmN0aW9uKGUpIHsKLSAgICBlLmZvbygpCi19KTsKLQot
Zm9vKGZ1bmN0aW9uKGUpIHsKLSAgICBlLmZvbygpCi19LCBmdW5jdGlvbihlKSB7Ci0gICAgZS5i
YXIoKQotfSk7Ci0KLS8vIEJhc2ljIEZ1bmN0aW9ucwotCi1mdW5jdGlvbiBmKCkge30KLShmdW5j
dGlvbigpIHt9KTsKLShmdW5jdGlvbigpIHt9KSgpOwotKGZ1bmN0aW9uIGYoKSB7fSk7Ci0oZnVu
Y3Rpb24gZigpIHt9KSgpOwotCi1mdW5jdGlvbiBmKCkgewotICAgIDEKLX0KLShmdW5jdGlvbigp
IHsKLSAgICAxCi19KTsKLShmdW5jdGlvbigpIHsKLSAgICAxCi19KSgpOwotKGZ1bmN0aW9uIGYo
KSB7Ci0gICAgMQotfSk7Ci0oZnVuY3Rpb24gZigpIHsKLSAgICAxCi19KSgpOwotCi0vLyBQYXJh
bWV0ZXJzCi0KLWZ1bmN0aW9uIGZvbyhhLCBiLCBjKSB7Ci0gICAgMQotfQotCi1mdW5jdGlvbiBm
b28oYT0xLCBiLCBjKSB7Ci0gICAgMQotfQotCi1mdW5jdGlvbiBmb28oYT0xLCBiPTIsIGM9Mykg
ewotICAgIDEKLX0KLQotZnVuY3Rpb24gZm9vKGEsIC4uLnJlc3QpIHsKLSAgICAxCi19Ci0KLWZ1
bmN0aW9uIGZvbyhhPTEsIC4uLnJlc3QpIHsKLSAgICAxCi19Ci0KLWZ1bmN0aW9uIGZvbyh7YSwg
Yn0pIHsKLSAgICAxCi19Ci0KLWZ1bmN0aW9uIGZvbyhbYSwgYl0pIHsKLSAgICAxCi19Ci0KLWZ1
bmN0aW9uIGZvbyhbYSwgYiwgXSkgewotICAgIDEKLX0KLQotLy8gTWV0aG9kcwotCi1vID0gewot
ICAgIHByb3A6IGZ1bmN0aW9uKCkge30sCi0gICAgbWV0aG9kKCkge30sCi0gICAgZ2V0IGdldHRl
cigpIHt9LAotICAgIHNldCBzZXR0ZXIoeCkge30sCi0gICAgKmdlbjEoKSB7fSwKLSAgICAqZ2Vu
MigpIHt9LAotICAgIGFzeW5jIGEoKSB7fQotfQotCi1vID0gewotICAgIHByb3A6IGZ1bmN0aW9u
KCkgewotICAgICAgICAxCi0gICAgfSwKLSAgICBtZXRob2QoKSB7Ci0gICAgICAgIDEKLSAgICB9
LAotICAgIGdldCBnZXR0ZXIoKSB7Ci0gICAgICAgIDEKLSAgICB9LAotICAgIHNldCBzZXR0ZXIo
eCkgewotICAgICAgICAxCi0gICAgfSwKLSAgICAqZ2VuMSgpIHsKLSAgICAgICAgMQotICAgIH0s
Ci0gICAgKmdlbjIoKSB7Ci0gICAgICAgIDEKLSAgICB9LAotICAgIGFzeW5jIGEoKSB7Ci0gICAg
ICAgIDEKLSAgICB9Ci19Ci0vLyBNdWx0aXBsZSAvIE5lc3RlZAotCi1mdW5jdGlvbiBmKCkge30K
LWZ1bmN0aW9uIGYoKSB7fQotCi1mdW5jdGlvbiBvdXRlcigpIHsKLSAgICAxOwotICAgIGZ1bmN0
aW9uIGlubmVyKCkgewotICAgICAgICAyCi0gICAgfQotICAgIDMKLX0KLQotLy8gQXN5bmMgLyBB
d2FpdAotCi1hc3luYyBmdW5jdGlvbiBmb28oKSB7fQotYXN5bmMgZnVuY3Rpb24gZm9vKCkgewot
ICAgIDEKLX0KLWFzeW5jIGZ1bmN0aW9uIGZvbygpIHsKLSAgICBhd2FpdCBmb28oKQotfQotbyA9
IHsKLSAgICBhc3luYyBhc3luYygpIHt9LAotICAgIGFzeW5jKCkge30sCi0gICAgYXN5bmM6IDEK
LX0KLW8gPSB7Ci0gICAgYXN5bmMgMSgpIHt9Ci19Ci1vID0gewotICAgIGFzeW5jICJmb28iKCkg
e30KLX0KLW8gPSB7Ci0gICAgYXN5bmMgWyJmb28iXSgpIHt9Ci19Ci1vID0gewotICAgIGZvbzog
YXN5bmMgZnVuY3Rpb24oKSB7fQotfQotLy8gQ29tbWFzCi0KLWZ1bmN0aW9uIGZvbygpIHsKLSAg
ICBhKCksCi0gICAgYigpLAotICAgIGMoKQotfQotCi0vLyBSZXR1cm4KLQotZnVuY3Rpb24gZm9v
KCkgewotICAgIHJldHVybgotfQotZnVuY3Rpb24gZm9vKCkgewotICAgIHJldHVybiA0MgotfQot
ZnVuY3Rpb24gZm9vKCkgewotICAgIHJldHVybiA0MiwgYSgpLCBiKCkKLX0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRl
c3RzL2dlbmVyYXRvcnMtZXhwZWN0ZWQuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0
dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9nZW5lcmF0b3JzLWV4cGVjdGVkLmpzCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzdiN2ZkZjg2NDBlNjUyOGM2OGIwOWNmYmZm
Mzg1NzUwOWYxNDA4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0
LXRlc3RzL2dlbmVyYXRvcnMtZXhwZWN0ZWQuanMKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCww
IEBACi1mdW5jdGlvbiogZ2VuKCkge30KLWZ1bmN0aW9uKiBnZW4oKSB7Ci0gICAgMQotfQotZnVu
Y3Rpb24qIGdlbigpIHt9Ci1mdW5jdGlvbiogZ2VuKCkgewotICAgIDEKLX0KLWZ1bmN0aW9uKiBn
ZW4oKSB7fQotZnVuY3Rpb24qIGdlbigpIHsKLSAgICAxCi19Ci0KLWZ1bmN0aW9uKiBnZW4oKSB7
Ci0gICAgeWllbGQKLX0KLWZ1bmN0aW9uKiBnZW4oKSB7Ci0gICAgeWllbGQgeAotfQotZnVuY3Rp
b24qIGdlbigpIHsKLSAgICB5aWVsZCAieCIKLX0KLWZ1bmN0aW9uKiBnZW4oKSB7Ci0gICAgeWll
bGQgW3hdCi19Ci1mdW5jdGlvbiogZ2VuKCkgewotICAgIHlpZWxkIGZvbygpCi19Ci0KLWZ1bmN0
aW9uKiBnZW4oYT0xLCBbYiwgY10sIC4uLnJlc3QpIHsKLSAgICByZXR1cm4geWllbGQgeWllbGQg
Zm9vKCJmb28iKQotfQotCi0vLyBFUzIwMTggLSBBc3luYyBJdGVyYXRpb24gLyBBc3luYyBHZW5l
cmF0b3JzCi0KLWFzeW5jIGZ1bmN0aW9uKiBnZW4oKSB7fQotYXN5bmMgZnVuY3Rpb24qIGdlbigp
IHsKLSAgICAxCi19Ci1hc3luYyBmdW5jdGlvbiogZ2VuKCkge30KLWFzeW5jIGZ1bmN0aW9uKiBn
ZW4oKSB7Ci0gICAgMQotfQotYXN5bmMgZnVuY3Rpb24qIGdlbigpIHt9Ci1hc3luYyBmdW5jdGlv
biogZ2VuKCkgewotICAgIDEKLX0KLQotYXN5bmMgZnVuY3Rpb24qIGdlbigpIHsKLSAgICB5aWVs
ZAotfQotYXN5bmMgZnVuY3Rpb24qIGdlbigpIHsKLSAgICB5aWVsZCB4Ci19Ci1hc3luYyBmdW5j
dGlvbiogZ2VuKCkgewotICAgIHlpZWxkICJ4IgotfQotYXN5bmMgZnVuY3Rpb24qIGdlbigpIHsK
LSAgICB5aWVsZCBbeF0KLX0KLWFzeW5jIGZ1bmN0aW9uKiBnZW4oKSB7Ci0gICAgeWllbGQgZm9v
KCkKLX0KLQotYXN5bmMgZnVuY3Rpb24qIGdlbihhPTEsIFtiLCBjXSwgLi4ucmVzdCkgewotICAg
IHJldHVybiB5aWVsZCB5aWVsZCBmb28oImZvbyIpCi19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9pZi1zdGF0
ZW1lbnQtZXhwZWN0ZWQuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNv
dXJjZXMvamF2YXNjcmlwdC10ZXN0cy9pZi1zdGF0ZW1lbnQtZXhwZWN0ZWQuanMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2MjBkZTZmNDIyN2NkZDNhZmYwMDkzMzlhY2NjMzk2YWM5
MTY5NjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMv
aWYtc3RhdGVtZW50LWV4cGVjdGVkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTcwICswLDAgQEAK
LWlmICh0cnVlKQotICAgIDEKLWlmICh0cnVlKQotICAgIDE7Ci1pZiAodHJ1ZSkge30KLWlmICh0
cnVlKSB7fQoteAotaWYgKHRydWUpIHt9Ci1pZiAodHJ1ZSkge30KLXgKLWlmICh0cnVlKSB7Ci0g
ICAgMQotfQotaWYgKHRydWUpIHsKLSAgICAxCi19Ci14Ci1pZiAodHJ1ZSkge30gZWxzZSB7fQot
aWYgKHRydWUpIHt9IGVsc2Uge30KLXgKLWlmICh0cnVlKSB7Ci0gICAgMQotfSBlbHNlIHt9Ci1p
ZiAodHJ1ZSkgewotICAgIDEKLX0gZWxzZSB7Ci0gICAgMgotfQotaWYgKHRydWUpIHsKLSAgICAx
Ci19IGVsc2UgewotICAgIDIKLX0KLXgKLWlmICh0cnVlKSB7fSBlbHNlIGlmICh0cnVlKSB7fQot
aWYgKHRydWUpIHsKLSAgICAxCi19IGVsc2UgaWYgKHRydWUpIHt9Ci1pZiAodHJ1ZSkgewotICAg
IDEKLX0gZWxzZSBpZiAodHJ1ZSkgewotICAgIDIKLX0KLWlmICh0cnVlKQotICAgIDE7Ci1lbHNl
IGlmICh0cnVlKQotICAgIDIKLWlmICh0cnVlKSB7Ci0gICAgMQotfSBlbHNlIGlmICh0cnVlKQot
ICAgIDI7Ci1lbHNlCi0gICAgMwotaWYgKHRydWUpIHsKLSAgICAxCi19IGVsc2UgaWYgKHRydWUp
Ci0gICAgMjsKLWVsc2UgewotICAgIDMKLX0KLQotaWYgKHRydWUpIHt9Ci1pZiAoKHRydWUpKQot
ICAgIDsKLWlmICgxKQotICAgIDsKLWlmICgyKQotICAgIDsKLQotaWYgKHRydWUpCi0gICAgaWYg
KGZhbHNlKQotICAgICAgICAxOwotICAgIGVsc2UKLSAgICAgICAgMjsKLQotaWYgKHRydWUpCi0g
ICAgaWYgKHRydWUpCi0gICAgICAgIGlmICh0cnVlKQotICAgICAgICAgICAgaWYgKHRydWUpCi0g
ICAgICAgICAgICAgICAgMTsKLQotaWYgKHRydWUpCi0gICAgaWYgKHRydWUpCi0gICAgICAgIGlm
ICh0cnVlKQotICAgICAgICAgICAgaWYgKHRydWUpCi0gICAgICAgICAgICAgICAgMTsKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAyOwotCi1pZiAodHJ1ZSkgewotICAgIGlmICh0
cnVlKSB7Ci0gICAgICAgIDE7Ci0gICAgICAgIGlmICh0cnVlKSB7Ci0gICAgICAgICAgICAyCi0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAzCi0gICAgICAgIH0KLSAgICAgICAgNAotICAg
IH0KLSAgICA1Ci19Ci0KLWlmICh0cnVlKSB7Ci0gICAgaWYgKHRydWUpIHsKLSAgICAgICAgMTsK
LSAgICAgICAgaWYgKHRydWUpCi0gICAgICAgICAgICAyOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAzOwotICAgICAgICA0Ci0gICAgfQotICAgIDUKLX0KLQotaWYgKHRydWUpIHsKLSAgICBp
ZiAodHJ1ZSkKLSAgICAgICAgMTsKLX0gZWxzZSBpZiAodHJ1ZSkKLSAgICBpZiAodHJ1ZSkKLSAg
ICAgICAgMgotCi1pZiAodHJ1ZSkKLSAgICBpZiAodHJ1ZSkKLSAgICAgICAgYWxlcnQoMSk7Ci0g
ICAgZWxzZSBpZiAodHJ1ZSkKLSAgICAgICAgYWxlcnQoMik7Ci0gICAgZWxzZQotICAgICAgICBh
bGVydCgzKTsKLQotaWYgKHRydWUpCi0gICAgaWYgKHRydWUpIHsKLSAgICAgICAgYWxlcnQoMSkK
LSAgICB9IGVsc2UKLSAgICAgICAgYWxlcnQoMik7Ci0KLWlmICh0cnVlKQotICAgIGlmICh0cnVl
KSB7Ci0gICAgICAgIHZhciBhID0gMTsKLSAgICAgICAgdmFyIGIgPSB7Ci0gICAgICAgICAgICBh
OiAxCi0gICAgICAgIH07Ci0gICAgfSBlbHNlCi0gICAgICAgIGFsZXJ0KDIpOwotCi1pZiAodHJ1
ZSkgewotICAgIGlmIChmYWxzZSkKLSAgICAgICAgaWYgKHRydWUpIHsKLSAgICAgICAgICAgIHRy
dWU7Ci0gICAgICAgIH0KLSAgICAyOwotfQotCi1pZiAodHJ1ZSkgewotICAgIGlmIChmYWxzZSkK
LSAgICAgICAgaWYgKHRydWUpCi0gICAgICAgICAgICB0cnVlOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBmYWxzZTsKLSAgICBlbHNlIGlmICh0cnVlKQotICAgICAgICB0cnVlOwotICAgIGVs
c2UKLSAgICAgICAgZmFsc2U7Ci19Ci0KLWlmICh0cnVlKQotICAgIGlmICh0cnVlKQotICAgICAg
ICAxOwotCi1pZiAoMSwgMiwgMykge30KLWlmICgxLCAyLCAzKSB7fQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMv
aW1wb3J0LWV4cGVjdGVkLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVz
b3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvaW1wb3J0LWV4cGVjdGVkLmpzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5MGM0ODAzNjZlYzU2ODM5MjJiN2MyMzg5NTJiN2I4MGZiN2UyNzhk
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2ltcG9y
dC1leHBlY3RlZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotaW1wb3J0KCIuL0Nv
Y29hLmpzIik7Ci1pbXBvcnQoaG9zdCArICIvQ29jb2EuanMiKTsKLQotYXN5bmMgZnVuY3Rpb24g
bG9hZCgpIHsKLSAgICByZXR1cm4gYXdhaXQgaW1wb3J0KCIuL0NhcHB1Y2Npbm8uanMiKTsKLX0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9q
YXZhc2NyaXB0LXRlc3RzL2xhYmVsLWJyZWFrLWNvbnRpbnVlLWJsb2NrLWV4cGVjdGVkLmpzIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVz
dHMvbGFiZWwtYnJlYWstY29udGludWUtYmxvY2stZXhwZWN0ZWQuanMKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDNiYmNiYTdlMTBhN2U4Nzc1ZDIzZmRmODZjMzdlNmFhYWMyNjM0ZjUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvbGFiZWwt
YnJlYWstY29udGludWUtYmxvY2stZXhwZWN0ZWQuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYg
KzAsMCBAQAote30KLTsKLXsKLSAgICAxCi19Ci07Ci17Ci0gICAge30KLX0KLTsKLXsKLSAgICB7
Ci0gICAgICAgIDEKLSAgICB9Ci19Ci07Ci17Ci0gICAgMTsKLSAgICB7Ci0gICAgICAgIDIKLSAg
ICB9Ci0gICAgMwotfQotNDsKLXsKLSAgICBsYWJlbDoKLSAgICAxCi19Ci07Ci0KLWxhYmVsMToK
LWxhYmVsMjoKLXRydWU7Ci0KLWxhYmVsOgotZm9yICg7OykKLSAgICBjb250aW51ZTsKLWxhYmVs
OgotZm9yICg7OykgewotICAgIGNvbnRpbnVlOwotfQotCi1sYWJlbDoKLXdoaWxlICgxKQotICAg
IGNvbnRpbnVlOwotbGFiZWw6Ci13aGlsZSAoMSkgewotICAgIGNvbnRpbnVlOwotfQotCi1sYWJl
bDoKLWZvciAoOzspCi0gICAgYnJlYWs7Ci1sYWJlbDoKLWZvciAoOzspIHsKLSAgICBicmVhazsK
LX0KLQotbGFiZWw6Ci13aGlsZSAoMSkKLSAgICBicmVhazsKLWxhYmVsOgotd2hpbGUgKDEpIHsK
LSAgICBicmVhazsKLX0KLQotbGFiZWw6Ci1mb3IgKDs7KQotICAgIGNvbnRpbnVlIGxhYmVsOwot
bGFiZWw6Ci1mb3IgKDs7KSB7Ci0gICAgY29udGludWUgbGFiZWw7Ci19Ci0KLWxhYmVsOgotd2hp
bGUgKDEpCi0gICAgY29udGludWUgbGFiZWw7Ci1sYWJlbDoKLXdoaWxlICgxKSB7Ci0gICAgY29u
dGludWUgbGFiZWw7Ci19Ci0KLWxhYmVsOgotZm9yICg7OykKLSAgICBicmVhayBsYWJlbDsKLWxh
YmVsOgotZm9yICg7OykgewotICAgIGJyZWFrIGxhYmVsOwotfQotCi1sYWJlbDoKLXdoaWxlICgx
KQotICAgIGJyZWFrIGxhYmVsOwotbGFiZWw6Ci13aGlsZSAoMSkgewotICAgIGJyZWFrIGxhYmVs
OwotfQotCi1vdXRlcjoKLXdoaWxlICh0cnVlKSB7Ci0gICAgaWYgKGZhbHNlKQotICAgICAgICBj
b250aW51ZTsKLSAgICBpZiAodHJ1ZSkKLSAgICAgICAgY29udGludWUgb3V0ZXI7Ci0gICAgYnJl
YWs7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNv
dXJjZXMvamF2YXNjcmlwdC10ZXN0cy9sb2dpYy1leHByZXNzaW9ucy1leHBlY3RlZC5qcyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3Rz
L2xvZ2ljLWV4cHJlc3Npb25zLWV4cGVjdGVkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA5ZGI2ZjI4MDY1M2VhMWQyNTFkZDEyN2I4ZWEzZGIyODgxMWJiZDhjLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL2xvZ2ljLWV4cHJlc3Npb25z
LWV4cGVjdGVkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi0xICYmIDE7Ci0xIHx8
IDE7Ci0xICYmIDEgfHwgMTsKLTEgfHwgMSAmJiAxOwotMSB8fCAoMSkgJiYgMTsKLSgxKSB8fCAo
MSkgJiYgMTsKLSgoMSkgfHwgKDEpKSAmJiAxOwotKDEpIHx8ICgoMSkgJiYgMSk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlw
dC10ZXN0cy9tb2R1bGVzLWV4cGVjdGVkLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1h
dHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvbW9kdWxlcy1leHBlY3RlZC5qcwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODdhMjJkYzEyNjQzMGMxZGEzMzZlNWE5M2VhNjJi
MjA5YTY1MjlmMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10
ZXN0cy9tb2R1bGVzLWV4cGVjdGVkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAot
aW1wb3J0ICJtb2R1bGUiOwotaW1wb3J0IHggZnJvbSAibW9kdWxlIjsKLWltcG9ydCB7IHggfSBm
cm9tICJtb2R1bGUiOwotaW1wb3J0IHsgYSwgYiwgYyB9IGZyb20gIm1vZHVsZSI7Ci1pbXBvcnQg
eyBhLCBiLCBjLCAgfSBmcm9tICJtb2R1bGUiOwotaW1wb3J0IHsgYSBhcyBBIH0gZnJvbSAibW9k
dWxlIjsKLWltcG9ydCB7IGEsIGEgYXMgQSwgYSB9IGZyb20gIm1vZHVsZSI7Ci1pbXBvcnQgeyBh
IGFzIEEsIGEgYXMgQSB9IGZyb20gIm1vZHVsZSI7Ci1pbXBvcnQgYSwgeyBhIH0gZnJvbSAibW9k
dWxlIjsKLWltcG9ydCBhLCB7IGEgYXMgQSB9IGZyb20gIm1vZHVsZSI7Ci1pbXBvcnQgeCwgKiBh
cyBBIGZyb20gIm1vZHVsZSI7Ci1pbXBvcnQgKiBhcyBBIGZyb20gIm1vZHVsZSI7Ci0KLWV4cG9y
dCB7IHggfTsKLWV4cG9ydCBsZXQgeDsKLWV4cG9ydCB2YXIgeDsKLWV4cG9ydCBjb25zdCB4ID0g
MTsKLWV4cG9ydCBsZXQgeCA9IDEsCi0gICAgeSA9IDE7Ci1leHBvcnQgbGV0IHt4LCB5LCB6fSA9
IG87Ci1leHBvcnQgbGV0IFt4LCB5LCB6XSA9IGE7Ci1leHBvcnQgeyB4IGFzIFggfTsKLWV4cG9y
dCB7IHggYXMgWCwgYSBhcyBBIH07Ci1leHBvcnQgKiBmcm9tICJtb2R1bGUiOwotZXhwb3J0IHsg
eCB9IGZyb20gIm1vZHVsZSI7Ci1leHBvcnQgeyB4LCB5IH0gZnJvbSAibW9kdWxlIjsKLWV4cG9y
dCB7IHggYXMgQSB9IGZyb20gIm1vZHVsZSI7Ci1leHBvcnQgeyB4IGFzIGRlZmF1bHQgfTsKLWV4
cG9ydCBkZWZhdWx0IHg7Ci1leHBvcnQgZGVmYXVsdCAxOwotZXhwb3J0IGRlZmF1bHQge307Ci1l
eHBvcnQgZGVmYXVsdCAoMSk7Ci1leHBvcnQgZGVmYXVsdCBbMV07Ci1leHBvcnQgZGVmYXVsdCAv
ci87Ci1leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHt9Ci1leHBvcnQgZGVmYXVsdCBmdW5jdGlv
biBmKCkge30KLWV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKiAoKSB7fQotZXhwb3J0IGRlZmF1bHQg
ZnVuY3Rpb24qIGYoKSB7fQotZXhwb3J0IGRlZmF1bHQgY2xhc3Mge30KLWV4cG9ydCBkZWZhdWx0
IGNsYXNzIFgge30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5n
L3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL25ldy1leHByZXNzaW9uLWV4cGVjdGVkLmpzIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVz
dHMvbmV3LWV4cHJlc3Npb24tZXhwZWN0ZWQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDA2NGUzNjVhMTgzMzRjMzhlM2QyYzRkNjgyNjllZWI2ZTg4ZTQxZjAuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvbmV3LWV4cHJlc3Npb24tZXhw
ZWN0ZWQuanMKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLW5ldyBGb287Ci1uZXcgRm9v
KCk7Ci1uZXcgKEZvbykoKTsKLW5ldyAoZm9vKCkpKCk7Ci1uZXcgW0Zvb11bMF07CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlw
dC10ZXN0cy9udW1iZXJzLWV4cGVjdGVkLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1h
dHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvbnVtYmVycy1leHBlY3RlZC5qcwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzMyMDY2Y2FlYmM5ZDA4NzY2ZmRmZGJmNmFjZDYw
NTk1YzBjZjA3MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10
ZXN0cy9udW1iZXJzLWV4cGVjdGVkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAot
Ly8gQmFzaWNzCi0wOwotMTsKLTEyMzsKLU5hTjsKLUluZmluaXR5OwotCi0vLyBGbG9hdHMKLTEu
MjsKLTFlMjsKLTEuZTM7Ci0xLjJlMzsKLTEuMmUrMzsKLTEuMmUtMzsKLQotLy8gRGVjaW1hbCBQ
cmVmaXgKLS4yOwotLjJlMzsKLS4yZSszOwotLjJlLTM7Ci0KLS8vIFplcm8gUHJlZml4ZWQgLyBM
ZWdhY3kgT2N0YWwKLTAwOwotMDEwOwotMDA5OwotCi0vLyBIZXgsIE9jdGFsLCBCaW5hcnkKLTB4
MTAxOwotMFgyMDE7Ci0wbzEwMTsKLTBPMjAxOwotMGIxMDE7Ci0wQjEwMTsKLQotLy8gRVMyMDE5
IC0gTnVtZXJpYyBTZXBhcmF0b3JzCi0xXzJfM180OwotMV8wMDBfMDAwOwotMTAwMDBfMDA7Ci0x
XzAwMDAwMF8wXzBfMDsKLTFfMi4zXzRlNV82OwotMV8xLjJfMjsKLTFfMWUyXzI7Ci0weDFfMDsK
LTBYMl8wOwotMG8xXzA7Ci0wTzJfMDsKLTBiMV8wOwotMEIxXzA7Ci0KLS8vIEVTMjAyMCAtIEJp
Z0ludAotMG47Ci0xMjNuOwotMTIzNDU2Nzg5MTIzNDU2Nzg5MTIzNDU2Nzg5MTIzNDU2Nzg5MTIz
NDU2Nzg5MTIzNDU2Nzg5MTIzNDU2Nzg5bjsKLTFfMl8zbjsKLTB4MTIzbjsKLTB4MjIzbjsKLTBv
MTIzbjsKLTBPMjIzbjsKLTBiMTAxbjsKLTBCMTAxbjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL29iamVjdC1h
cnJheS1saXRlcmFsLWV4cGVjdGVkLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRp
bmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvb2JqZWN0LWFycmF5LWxpdGVyYWwtZXhwZWN0
ZWQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlMTVhMTFmYTVmM2VlMGY3YzQ0
NjhhNmFkMzk3YTgzMDMxNmYxZGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2ph
dmFzY3JpcHQtdGVzdHMvb2JqZWN0LWFycmF5LWxpdGVyYWwtZXhwZWN0ZWQuanMKKysrIC9kZXYv
bnVsbApAQCAtMSw5MyArMCwwIEBACi0oe30pCi0oewotICAgIGEKLX0pCi0KLW8gPSB7fQotbyA9
IHsKLSAgICBhCi19Ci1vID0gewotICAgIGEsCi0gICAgYgotfQotbyA9IHsKLSAgICBhOiAxCi19
Ci1vID0gewotICAgIGE6IDEsCi0gICAgYjogMgotfQotbyA9IHsKLSAgICBhOiAxLAotICAgIGI6
IDIsCi0gICAgYzogMwotfQotbyA9IHsKLSAgICBhOiAxLAotICAgIGI6IDIsCi0gICAgYzogMywK
LSAgICBkOiA0Ci19Ci1vID0gewotICAgIGE6IDEsCi0gICAgYjogMiwKLSAgICBjOiAzLAotICAg
IGQ6IDQsCi0gICAgLi4uZQotfQotbyA9IHsKLSAgICAuLi5hCi19Ci0KLTsKLVtdOwotWzEsIDJd
OwotCi1hID0gW107Ci1hID0gWzFdOwotYSA9IFsxLCAyXTsKLWEgPSBbMSwgMiwgM107Ci1hID0g
WzEsIDIsIDMsIDRdOwotYSA9IFsxLCAyLCAzLCA0LCA1XTsKLQotbyA9IHsKLSAgICBvdXRlcjog
ewotICAgICAgICBhOiAxLAotICAgICAgICBiOiAyCi0gICAgfQotfQotCi1vID0gewotICAgIFt4
XTogewotICAgICAgICBhOiAxLAotICAgICAgICBiOiAyLAotICAgICAgICBjOiAzLAotICAgICAg
ICBkOiA0Ci0gICAgfQotfQotCi1vID0gewotICAgIGE6IHsKLSAgICAgICAgYTogMQotICAgIH0s
Ci0gICAgYjogewotICAgICAgICBhOiAxCi0gICAgfSwKLSAgICBjOiB7Ci0gICAgICAgIGE6IDEK
LSAgICB9Ci19Ci0KLW8gPSB7Ci0gICAgYTogWzEsIDIsIDNdCi19Ci0KLWEgPSBbWzFdLCBbMl0s
IFszXSwgWzRdLCBbNV1dCi0KLWEgPSBbewotICAgIGE6IDEsCi0gICAgYjogMiwKLSAgICBjOiAz
LAotICAgIGQ6IDQKLX1dCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0
dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9vdGhlci1zdGF0ZW1lbnRzLWV4cGVjdGVk
LmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3Jp
cHQtdGVzdHMvb3RoZXItc3RhdGVtZW50cy1leHBlY3RlZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYmIxZTI5NmQ2NjhhNDUyMjg1Y2MyNTg2OGU2ZTBiN2E2MTcxNWZlNC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9vdGhlci1zdGF0
ZW1lbnRzLWV4cGVjdGVkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotdGhyb3cg
MTsKLXRocm93IHg7Ci10aHJvdyBbXTsKLXRocm93ICgxKTsKLXRocm93ICJ4IjsKLXRocm93IG5l
dyB4OwotdGhyb3cgewotICAgIGE6IDEKLX07Ci0KLWRlbGV0ZSB4OwotZGVsZXRlIHguYTsKLWRl
bGV0ZSB4WzBdOwotCi1kZWJ1Z2dlcgotZGVidWdnZXI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9yZXR1cm4t
c3RhdGVtZW50LWV4cGVjdGVkLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcv
cmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvcmV0dXJuLXN0YXRlbWVudC1leHBlY3RlZC5qcwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDkyNGNlNzYzNzM2MGJjNDAwNTQ5ZDUwNDFm
NTUwNjcwMzJiOWNmMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlw
dC10ZXN0cy9yZXR1cm4tc3RhdGVtZW50LWV4cGVjdGVkLmpzCisrKyAvZGV2L251bGwKQEAgLTEs
MzIgKzAsMCBAQAotKGZ1bmN0aW9uKCkgewotICAgIHJldHVybgotfSkoKTsKLQotKGZ1bmN0aW9u
KCkgewotICAgIHJldHVybiAxCi19KSgpOwotCi0oZnVuY3Rpb24oKSB7Ci0gICAgaWYgKHRydWUp
Ci0gICAgICAgIHJldHVybiAxOwotICAgIHJldHVybiBmYWxzZQotfSkoKTsKLQotKGZ1bmN0aW9u
KCkgewotICAgIHJldHVybiB7Ci0gICAgICAgIGE6IDEsCi0gICAgICAgIGI6IDIKLSAgICB9Ci19
KSgpOwotCi0oZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uKCkgewotICAgICAgICAx
Ci0gICAgfQotfSkoKTsKLQotKGZ1bmN0aW9uKCkgewotICAgIHJldHVybiBhCi0gICAgICAgIHx8
IGIKLSAgICAgICAgfHwgYzsKLX0pKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9zYW1wbGUtanF1ZXJ5LWV4
cGVjdGVkLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2ph
dmFzY3JpcHQtdGVzdHMvc2FtcGxlLWpxdWVyeS1leHBlY3RlZC5qcwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZTFmMWY5NzFkMDJjZDkxZTY2MTkxZWJmOTU3ZTBmNWEyODViMzYyMi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy9zYW1wbGUt
anF1ZXJ5LWV4cGVjdGVkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNDE2OSArMCwwIEBACi0vKiEg
alF1ZXJ5IHYxLjkuMSB8IChjKSAyMDA1LCAyMDEyIGpRdWVyeSBGb3VuZGF0aW9uLCBJbmMuIHwg
anF1ZXJ5Lm9yZy9saWNlbnNlCi0vL0Agc291cmNlTWFwcGluZ1VSTD1qcXVlcnkubWluLm1hcAot
Ki8KLShmdW5jdGlvbihlLCB0KSB7Ci0gICAgdmFyIG4sCi0gICAgICAgIHIsCi0gICAgICAgIGkg
PSB0eXBlb2YgdCwKLSAgICAgICAgbyA9IGUuZG9jdW1lbnQsCi0gICAgICAgIGEgPSBlLmxvY2F0
aW9uLAotICAgICAgICBzID0gZS5qUXVlcnksCi0gICAgICAgIHUgPSBlLiQsCi0gICAgICAgIGwg
PSB7fSwKLSAgICAgICAgYyA9IFtdLAotICAgICAgICBwID0gIjEuOS4xIiwKLSAgICAgICAgZiA9
IGMuY29uY2F0LAotICAgICAgICBkID0gYy5wdXNoLAotICAgICAgICBoID0gYy5zbGljZSwKLSAg
ICAgICAgZyA9IGMuaW5kZXhPZiwKLSAgICAgICAgbSA9IGwudG9TdHJpbmcsCi0gICAgICAgIHkg
PSBsLmhhc093blByb3BlcnR5LAotICAgICAgICB2ID0gcC50cmltLAotICAgICAgICBiID0gZnVu
Y3Rpb24oZSwgdCkgewotICAgICAgICAgICAgcmV0dXJuIG5ldyBiLmZuLmluaXQoZSwgdCwgcikK
LSAgICAgICAgfSwKLSAgICAgICAgeCA9IC9bKy1dPyg/OlxkKlwufClcZCsoPzpbZUVdWystXT9c
ZCt8KS8uc291cmNlLAotICAgICAgICB3ID0gL1xTKy9nLAotICAgICAgICBUID0gL15bXHNcdUZF
RkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLAotICAgICAgICBOID0gL14oPzooPFtcd1xXXSs+
KVtePl0qfCMoW1x3LV0qKSkkLywKLSAgICAgICAgQyA9IC9ePChcdyspXHMqXC8/Pig/OjxcL1wx
PnwpJC8sCi0gICAgICAgIGsgPSAvXltcXSw6e31cc10qJC8sCi0gICAgICAgIEUgPSAvKD86Xnw6
fCwpKD86XHMqXFspKy9nLAotICAgICAgICBTID0gL1xcKD86WyJcXFwvYmZucnRdfHVbXGRhLWZB
LUZdezR9KS9nLAotICAgICAgICBBID0gLyJbXiJcXFxyXG5dKiJ8dHJ1ZXxmYWxzZXxudWxsfC0/
KD86XGQrXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpL2csCi0gICAgICAgIGogPSAvXi1tcy0vLAot
ICAgICAgICBEID0gLy0oW1xkYS16XSkvZ2ksCi0gICAgICAgIEwgPSBmdW5jdGlvbihlLCB0KSB7
Ci0gICAgICAgICAgICByZXR1cm4gdC50b1VwcGVyQ2FzZSgpCi0gICAgICAgIH0sCi0gICAgICAg
IEggPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAoby5hZGRFdmVudExpc3RlbmVyIHx8ICJs
b2FkIiA9PT0gZS50eXBlIHx8ICJjb21wbGV0ZSIgPT09IG8ucmVhZHlTdGF0ZSkgJiYgKHEoKSwg
Yi5yZWFkeSgpKQotICAgICAgICB9LAotICAgICAgICBxID0gZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICBvLmFkZEV2ZW50TGlzdGVuZXIgPyAoby5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250
ZW50TG9hZGVkIiwgSCwgITEpLCBlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLCBILCAhMSkp
IDogKG8uZGV0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsIEgpLCBlLmRldGFjaEV2ZW50
KCJvbmxvYWQiLCBIKSkKLSAgICAgICAgfTsKLSAgICBiLmZuID0gYi5wcm90b3R5cGUgPSB7Ci0g
ICAgICAgIGpxdWVyeTogcCwKLSAgICAgICAgY29uc3RydWN0b3I6IGIsCi0gICAgICAgIGluaXQ6
IGZ1bmN0aW9uKGUsIG4sIHIpIHsKLSAgICAgICAgICAgIHZhciBpLAotICAgICAgICAgICAgICAg
IGE7Ci0gICAgICAgICAgICBpZiAoIWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0g
ICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGUpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoaSA9ICI8IiA9PT0gZS5jaGFyQXQoMCkgJiYgIj4iID09PSBlLmNoYXJBdChlLmxlbmd0aCAt
IDEpICYmIGUubGVuZ3RoID49IDMgPyBbbnVsbCwgZSwgbnVsbF0gOiBOLmV4ZWMoZSksICFpIHx8
ICFpWzFdICYmIG4pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAhbiB8fCBuLmpxdWVyeSA/
IChuIHx8IHIpLmZpbmQoZSkgOiB0aGlzLmNvbnN0cnVjdG9yKG4pLmZpbmQoZSk7Ci0gICAgICAg
ICAgICAgICAgaWYgKGlbMV0pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG4gPSBuIGluc3Rh
bmNlb2YgYiA/IG5bMF0gOiBuLCBiLm1lcmdlKHRoaXMsIGIucGFyc2VIVE1MKGlbMV0sIG4gJiYg
bi5ub2RlVHlwZSA/IG4ub3duZXJEb2N1bWVudCB8fCBuIDogbywgITApKSwgQy50ZXN0KGlbMV0p
ICYmIGIuaXNQbGFpbk9iamVjdChuKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSBp
biBuKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuaXNGdW5jdGlvbih0aGlzW2ldKSA/
IHRoaXNbaV0obltpXSkgOiB0aGlzLmF0dHIoaSwgbltpXSk7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiB0aGlzCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChhID0g
by5nZXRFbGVtZW50QnlJZChpWzJdKSwgYSAmJiBhLnBhcmVudE5vZGUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGEuaWQgIT09IGlbMl0pCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gci5maW5kKGUpOwotICAgICAgICAgICAgICAgICAgICB0aGlzLmxlbmd0aCA9IDEsCi0gICAg
ICAgICAgICAgICAgICAgIHRoaXNbMF0gPSBhCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIHJldHVybiB0aGlzLmNvbnRleHQgPSBvLCB0aGlzLnNlbGVjdG9yID0gZSwgdGhpcwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGUubm9kZVR5cGUgPyAodGhpcy5jb250
ZXh0ID0gdGhpc1swXSA9IGUsIHRoaXMubGVuZ3RoID0gMSwgdGhpcykgOiBiLmlzRnVuY3Rpb24o
ZSkgPyByLnJlYWR5KGUpIDogKGUuc2VsZWN0b3IgIT09IHQgJiYgKHRoaXMuc2VsZWN0b3IgPSBl
LnNlbGVjdG9yLCB0aGlzLmNvbnRleHQgPSBlLmNvbnRleHQpLCBiLm1ha2VBcnJheShlLCB0aGlz
KSkKLSAgICAgICAgfSwKLSAgICAgICAgc2VsZWN0b3I6ICIiLAotICAgICAgICBsZW5ndGg6IDAs
Ci0gICAgICAgIHNpemU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMubGVu
Z3RoCi0gICAgICAgIH0sCi0gICAgICAgIHRvQXJyYXk6IGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgcmV0dXJuIGguY2FsbCh0aGlzKQotICAgICAgICB9LAotICAgICAgICBnZXQ6IGZ1bmN0aW9u
KGUpIHsKLSAgICAgICAgICAgIHJldHVybiBudWxsID09IGUgPyB0aGlzLnRvQXJyYXkoKSA6IDAg
PiBlID8gdGhpc1t0aGlzLmxlbmd0aCArIGVdIDogdGhpc1tlXQotICAgICAgICB9LAotICAgICAg
ICBwdXNoU3RhY2s6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHZhciB0ID0gYi5tZXJnZSh0
aGlzLmNvbnN0cnVjdG9yKCksIGUpOwotICAgICAgICAgICAgcmV0dXJuIHQucHJldk9iamVjdCA9
IHRoaXMsIHQuY29udGV4dCA9IHRoaXMuY29udGV4dCwgdAotICAgICAgICB9LAotICAgICAgICBl
YWNoOiBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICByZXR1cm4gYi5lYWNoKHRoaXMsIGUs
IHQpCi0gICAgICAgIH0sCi0gICAgICAgIHJlYWR5OiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gYi5yZWFkeS5wcm9taXNlKCkuZG9uZShlKSwgdGhpcwotICAgICAgICB9LAotICAg
ICAgICBzbGljZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3Rh
Y2soaC5hcHBseSh0aGlzLCBhcmd1bWVudHMpKQotICAgICAgICB9LAotICAgICAgICBmaXJzdDog
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5lcSgwKQotICAgICAgICB9LAot
ICAgICAgICBsYXN0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLmVxKC0x
KQotICAgICAgICB9LAotICAgICAgICBlcTogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgdmFy
IHQgPSB0aGlzLmxlbmd0aCwKLSAgICAgICAgICAgICAgICBuID0gK2UgKyAoMCA+IGUgPyB0IDog
MCk7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2sobiA+PSAwICYmIHQgPiBuID8g
W3RoaXNbbl1dIDogW10pCi0gICAgICAgIH0sCi0gICAgICAgIG1hcDogZnVuY3Rpb24oZSkgewot
ICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKGIubWFwKHRoaXMsIGZ1bmN0aW9uKHQs
IG4pIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZS5jYWxsKHQsIG4sIHQpCi0gICAgICAgICAg
ICB9KSkKLSAgICAgICAgfSwKLSAgICAgICAgZW5kOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
IHJldHVybiB0aGlzLnByZXZPYmplY3QgfHwgdGhpcy5jb25zdHJ1Y3RvcihudWxsKQotICAgICAg
ICB9LAotICAgICAgICBwdXNoOiBkLAotICAgICAgICBzb3J0OiBbXS5zb3J0LAotICAgICAgICBz
cGxpY2U6IFtdLnNwbGljZQotICAgIH0sCi0gICAgYi5mbi5pbml0LnByb3RvdHlwZSA9IGIuZm4s
Ci0gICAgYi5leHRlbmQgPSBiLmZuLmV4dGVuZCA9IGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIg
ZSwKLSAgICAgICAgICAgIG4sCi0gICAgICAgICAgICByLAotICAgICAgICAgICAgaSwKLSAgICAg
ICAgICAgIG8sCi0gICAgICAgICAgICBhLAotICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1swXSB8
fCB7fSwKLSAgICAgICAgICAgIHUgPSAxLAotICAgICAgICAgICAgbCA9IGFyZ3VtZW50cy5sZW5n
dGgsCi0gICAgICAgICAgICBjID0gITE7Ci0gICAgICAgIGZvciAoImJvb2xlYW4iID09IHR5cGVv
ZiBzICYmIChjID0gcywgcyA9IGFyZ3VtZW50c1sxXSB8fCB7fSwgdSA9IDIpLCAib2JqZWN0IiA9
PSB0eXBlb2YgcyB8fCBiLmlzRnVuY3Rpb24ocykgfHwgKHMgPSB7fSksIGwgPT09IHUgJiYgKHMg
PSB0aGlzLCAtLXUpOyBsID4gdTsgdSsrKQotICAgICAgICAgICAgaWYgKG51bGwgIT0gKG8gPSBh
cmd1bWVudHNbdV0pKQotICAgICAgICAgICAgICAgIGZvciAoaSBpbiBvKQotICAgICAgICAgICAg
ICAgICAgICBlID0gc1tpXSwKLSAgICAgICAgICAgICAgICAgICAgciA9IG9baV0sCi0gICAgICAg
ICAgICAgICAgICAgIHMgIT09IHIgJiYgKGMgJiYgciAmJiAoYi5pc1BsYWluT2JqZWN0KHIpIHx8
IChuID0gYi5pc0FycmF5KHIpKSkgPyAobiA/IChuID0gITEsIGEgPSBlICYmIGIuaXNBcnJheShl
KSA/IGUgOiBbXSkgOiBhID0gZSAmJiBiLmlzUGxhaW5PYmplY3QoZSkgPyBlIDoge30sIHNbaV0g
PSBiLmV4dGVuZChjLCBhLCByKSkgOiByICE9PSB0ICYmIChzW2ldID0gcikpOwotICAgICAgICBy
ZXR1cm4gcwotICAgIH0sCi0gICAgYi5leHRlbmQoewotICAgICAgICBub0NvbmZsaWN0OiBmdW5j
dGlvbih0KSB7Ci0gICAgICAgICAgICByZXR1cm4gZS4kID09PSBiICYmIChlLiQgPSB1KSwgdCAm
JiBlLmpRdWVyeSA9PT0gYiAmJiAoZS5qUXVlcnkgPSBzKSwgYgotICAgICAgICB9LAotICAgICAg
ICBpc1JlYWR5OiAhMSwKLSAgICAgICAgcmVhZHlXYWl0OiAxLAotICAgICAgICBob2xkUmVhZHk6
IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGUgPyBiLnJlYWR5V2FpdCsrIDogYi5yZWFkeSgh
MCkKLSAgICAgICAgfSwKLSAgICAgICAgcmVhZHk6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAg
IGlmIChlID09PSAhMCA/ICEtLWIucmVhZHlXYWl0IDogIWIuaXNSZWFkeSkgewotICAgICAgICAg
ICAgICAgIGlmICghby5ib2R5KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0VGltZW91
dChiLnJlYWR5KTsKLSAgICAgICAgICAgICAgICBiLmlzUmVhZHkgPSAhMCwKLSAgICAgICAgICAg
ICAgICBlICE9PSAhMCAmJiAtLWIucmVhZHlXYWl0ID4gMCB8fCAobi5yZXNvbHZlV2l0aChvLCBb
Yl0pLCBiLmZuLnRyaWdnZXIgJiYgYihvKS50cmlnZ2VyKCJyZWFkeSIpLm9mZigicmVhZHkiKSkK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgaXNGdW5jdGlvbjogZnVuY3Rpb24o
ZSkgewotICAgICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIgPT09IGIudHlwZShlKQotICAgICAg
ICB9LAotICAgICAgICBpc0FycmF5OiBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uKGUpIHsKLSAg
ICAgICAgICAgIHJldHVybiAiYXJyYXkiID09PSBiLnR5cGUoZSkKLSAgICAgICAgfSwKLSAgICAg
ICAgaXNXaW5kb3c6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHJldHVybiBudWxsICE9IGUg
JiYgZSA9PSBlLndpbmRvdwotICAgICAgICB9LAotICAgICAgICBpc051bWVyaWM6IGZ1bmN0aW9u
KGUpIHsKLSAgICAgICAgICAgIHJldHVybiAhaXNOYU4ocGFyc2VGbG9hdChlKSkgJiYgaXNGaW5p
dGUoZSkKLSAgICAgICAgfSwKLSAgICAgICAgdHlwZTogZnVuY3Rpb24oZSkgewotICAgICAgICAg
ICAgcmV0dXJuIG51bGwgPT0gZSA/IGUgKyAiIiA6ICJvYmplY3QiID09IHR5cGVvZiBlIHx8ICJm
dW5jdGlvbiIgPT0gdHlwZW9mIGUgPyBsW20uY2FsbChlKV0gfHwgIm9iamVjdCIgOiB0eXBlb2Yg
ZQotICAgICAgICB9LAotICAgICAgICBpc1BsYWluT2JqZWN0OiBmdW5jdGlvbihlKSB7Ci0gICAg
ICAgICAgICBpZiAoIWUgfHwgIm9iamVjdCIgIT09IGIudHlwZShlKSB8fCBlLm5vZGVUeXBlIHx8
IGIuaXNXaW5kb3coZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuICExOwotICAgICAgICAgICAg
dHJ5IHsKLSAgICAgICAgICAgICAgICBpZiAoZS5jb25zdHJ1Y3RvciAmJiAheS5jYWxsKGUsICJj
b25zdHJ1Y3RvciIpICYmICF5LmNhbGwoZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsICJpc1Byb3Rv
dHlwZU9mIikpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAhMQotICAgICAgICAgICAgfSBj
YXRjaCAobikgewotICAgICAgICAgICAgICAgIHJldHVybiAhMQotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgdmFyIHI7Ci0gICAgICAgICAgICBmb3IgKHIgaW4gZSkKLSAgICAgICAgICAgICAg
ICA7Ci0gICAgICAgICAgICByZXR1cm4gciA9PT0gdCB8fCB5LmNhbGwoZSwgcikKLSAgICAgICAg
fSwKLSAgICAgICAgaXNFbXB0eU9iamVjdDogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgdmFy
IHQ7Ci0gICAgICAgICAgICBmb3IgKHQgaW4gZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gITE7
Ci0gICAgICAgICAgICByZXR1cm4gITAKLSAgICAgICAgfSwKLSAgICAgICAgZXJyb3I6IGZ1bmN0
aW9uKGUpIHsKLSAgICAgICAgICAgIHRocm93IEVycm9yKGUpCi0gICAgICAgIH0sCi0gICAgICAg
IHBhcnNlSFRNTDogZnVuY3Rpb24oZSwgdCwgbikgewotICAgICAgICAgICAgaWYgKCFlIHx8ICJz
dHJpbmciICE9IHR5cGVvZiBlKQotICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAg
ICAgICAgImJvb2xlYW4iID09IHR5cGVvZiB0ICYmIChuID0gdCwgdCA9ICExKSwKLSAgICAgICAg
ICAgIHQgPSB0IHx8IG87Ci0gICAgICAgICAgICB2YXIgciA9IEMuZXhlYyhlKSwKLSAgICAgICAg
ICAgICAgICBpID0gIW4gJiYgW107Ci0gICAgICAgICAgICByZXR1cm4gciA/IFt0LmNyZWF0ZUVs
ZW1lbnQoclsxXSldIDogKHIgPSBiLmJ1aWxkRnJhZ21lbnQoW2VdLCB0LCBpKSwgaSAmJiBiKGkp
LnJlbW92ZSgpLCBiLm1lcmdlKFtdLCByLmNoaWxkTm9kZXMpKQotICAgICAgICB9LAotICAgICAg
ICBwYXJzZUpTT046IGZ1bmN0aW9uKG4pIHsKLSAgICAgICAgICAgIHJldHVybiBlLkpTT04gJiYg
ZS5KU09OLnBhcnNlID8gZS5KU09OLnBhcnNlKG4pIDogbnVsbCA9PT0gbiA/IG4gOiAic3RyaW5n
IiA9PSB0eXBlb2YgbiAmJiAobiA9IGIudHJpbShuKSwgbiAmJiBrLnRlc3Qobi5yZXBsYWNlKFMs
ICJAIikucmVwbGFjZShBLCAiXSIpLnJlcGxhY2UoRSwgIiIpKSkgPyBGdW5jdGlvbigicmV0dXJu
ICIgKyBuKSgpIDogKGIuZXJyb3IoIkludmFsaWQgSlNPTjogIiArIG4pLCB0KQotICAgICAgICB9
LAotICAgICAgICBwYXJzZVhNTDogZnVuY3Rpb24obikgewotICAgICAgICAgICAgdmFyIHIsCi0g
ICAgICAgICAgICAgICAgaTsKLSAgICAgICAgICAgIGlmICghbiB8fCAic3RyaW5nIiAhPSB0eXBl
b2YgbikKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgIHRyeSB7Ci0g
ICAgICAgICAgICAgICAgZS5ET01QYXJzZXIgPyAoaSA9IG5ldyBET01QYXJzZXIsIHIgPSBpLnBh
cnNlRnJvbVN0cmluZyhuLCAidGV4dC94bWwiKSkgOiAociA9IG5ldyBBY3RpdmVYT2JqZWN0KCJN
aWNyb3NvZnQuWE1MRE9NIiksIHIuYXN5bmMgPSAiZmFsc2UiLCByLmxvYWRYTUwobikpCi0gICAg
ICAgICAgICB9IGNhdGNoIChvKSB7Ci0gICAgICAgICAgICAgICAgciA9IHQKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHJldHVybiByICYmIHIuZG9jdW1lbnRFbGVtZW50ICYmICFyLmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aCB8fCBiLmVycm9yKCJJbnZhbGlk
IFhNTDogIiArIG4pLCByCi0gICAgICAgIH0sCi0gICAgICAgIG5vb3A6IGZ1bmN0aW9uKCkge30s
Ci0gICAgICAgIGdsb2JhbEV2YWw6IGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgICAgIHQgJiYgYi50
cmltKHQpICYmIChlLmV4ZWNTY3JpcHQgfHwgZnVuY3Rpb24odCkgewotICAgICAgICAgICAgICAg
IGUuZXZhbC5jYWxsKGUsIHQpCi0gICAgICAgICAgICB9KSh0KQotICAgICAgICB9LAotICAgICAg
ICBjYW1lbENhc2U6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHJldHVybiBlLnJlcGxhY2Uo
aiwgIm1zLSIpLnJlcGxhY2UoRCwgTCkKLSAgICAgICAgfSwKLSAgICAgICAgbm9kZU5hbWU6IGZ1
bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgIHJldHVybiBlLm5vZGVOYW1lICYmIGUubm9kZU5h
bWUudG9Mb3dlckNhc2UoKSA9PT0gdC50b0xvd2VyQ2FzZSgpCi0gICAgICAgIH0sCi0gICAgICAg
IGVhY2g6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKLSAgICAgICAgICAgIHZhciByLAotICAgICAgICAg
ICAgICAgIGkgPSAwLAotICAgICAgICAgICAgICAgIG8gPSBlLmxlbmd0aCwKLSAgICAgICAgICAg
ICAgICBhID0gTShlKTsKLSAgICAgICAgICAgIGlmIChuKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGEpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yICg7IG8gPiBpOyBpKyspCi0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAociA9IHQuYXBwbHkoZVtpXSwgbiksIHIgPT09ICExKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIGZvciAoaSBpbiBlKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHIgPSB0LmFwcGx5KGVbaV0sIG4pLCByID09PSAhMSkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhawotICAgICAgICAgICAgfSBlbHNlIGlmIChhKSB7Ci0gICAgICAgICAgICAgICAg
Zm9yICg7IG8gPiBpOyBpKyspCi0gICAgICAgICAgICAgICAgICAgIGlmIChyID0gdC5jYWxsKGVb
aV0sIGksIGVbaV0pLCByID09PSAhMSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0g
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBmb3IgKGkgaW4gZSkKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHIgPSB0LmNhbGwoZVtpXSwgaSwgZVtpXSksIHIgPT09ICExKQotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICByZXR1cm4gZQotICAgICAg
ICB9LAotICAgICAgICB0cmltOiB2ICYmICF2LmNhbGwoIlx1ZmVmZlx1MDBhMCIpID8gZnVuY3Rp
b24oZSkgewotICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gZSA/ICIiIDogdi5jYWxsKGUpCi0g
ICAgICAgIH0gOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBlID8g
IiIgOiAoZSArICIiKS5yZXBsYWNlKFQsICIiKQotICAgICAgICB9LAotICAgICAgICBtYWtlQXJy
YXk6IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgIHZhciBuID0gdCB8fCBbXTsKLSAgICAg
ICAgICAgIHJldHVybiBudWxsICE9IGUgJiYgKE0oT2JqZWN0KGUpKSA/IGIubWVyZ2UobiwgInN0
cmluZyIgPT0gdHlwZW9mIGUgPyBbZV0gOiBlKSA6IGQuY2FsbChuLCBlKSksIG4KLSAgICAgICAg
fSwKLSAgICAgICAgaW5BcnJheTogZnVuY3Rpb24oZSwgdCwgbikgewotICAgICAgICAgICAgdmFy
IHI7Ci0gICAgICAgICAgICBpZiAodCkgewotICAgICAgICAgICAgICAgIGlmIChnKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZy5jYWxsKHQsIGUsIG4pOwotICAgICAgICAgICAgICAgIGZv
ciAociA9IHQubGVuZ3RoLCBuID0gbiA/IDAgPiBuID8gTWF0aC5tYXgoMCwgciArIG4pIDogbiA6
IDA7IHIgPiBuOyBuKyspCi0gICAgICAgICAgICAgICAgICAgIGlmIChuIGluIHQgJiYgdFtuXSA9
PT0gZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuCi0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICByZXR1cm4gLTEKLSAgICAgICAgfSwKLSAgICAgICAgbWVyZ2U6IGZ1bmN0aW9u
KGUsIG4pIHsKLSAgICAgICAgICAgIHZhciByID0gbi5sZW5ndGgsCi0gICAgICAgICAgICAgICAg
aSA9IGUubGVuZ3RoLAotICAgICAgICAgICAgICAgIG8gPSAwOwotICAgICAgICAgICAgaWYgKCJu
dW1iZXIiID09IHR5cGVvZiByKQotICAgICAgICAgICAgICAgIGZvciAoOyByID4gbzsgbysrKQot
ICAgICAgICAgICAgICAgICAgICBlW2krK10gPSBuW29dOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHdoaWxlIChuW29dICE9PSB0KQotICAgICAgICAgICAgICAgICAgICBlW2kr
K10gPSBuW28rK107Ci0gICAgICAgICAgICByZXR1cm4gZS5sZW5ndGggPSBpLCBlCi0gICAgICAg
IH0sCi0gICAgICAgIGdyZXA6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKLSAgICAgICAgICAgIHZhciBy
LAotICAgICAgICAgICAgICAgIGkgPSBbXSwKLSAgICAgICAgICAgICAgICBvID0gMCwKLSAgICAg
ICAgICAgICAgICBhID0gZS5sZW5ndGg7Ci0gICAgICAgICAgICBmb3IgKG4gPSAhIW47IGEgPiBv
OyBvKyspCi0gICAgICAgICAgICAgICAgciA9ICEhdChlW29dLCBvKSwKLSAgICAgICAgICAgICAg
ICBuICE9PSByICYmIGkucHVzaChlW29dKTsKLSAgICAgICAgICAgIHJldHVybiBpCi0gICAgICAg
IH0sCi0gICAgICAgIG1hcDogZnVuY3Rpb24oZSwgdCwgbikgewotICAgICAgICAgICAgdmFyIHIs
Ci0gICAgICAgICAgICAgICAgaSA9IDAsCi0gICAgICAgICAgICAgICAgbyA9IGUubGVuZ3RoLAot
ICAgICAgICAgICAgICAgIGEgPSBNKGUpLAotICAgICAgICAgICAgICAgIHMgPSBbXTsKLSAgICAg
ICAgICAgIGlmIChhKQotICAgICAgICAgICAgICAgIGZvciAoOyBvID4gaTsgaSsrKQotICAgICAg
ICAgICAgICAgICAgICByID0gdChlW2ldLCBpLCBuKSwKLSAgICAgICAgICAgICAgICAgICAgbnVs
bCAhPSByICYmIChzW3MubGVuZ3RoXSA9IHIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIGZvciAoaSBpbiBlKQotICAgICAgICAgICAgICAgICAgICByID0gdChlW2ldLCBpLCBu
KSwKLSAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSByICYmIChzW3MubGVuZ3RoXSA9IHIpOwot
ICAgICAgICAgICAgcmV0dXJuIGYuYXBwbHkoW10sIHMpCi0gICAgICAgIH0sCi0gICAgICAgIGd1
aWQ6IDEsCi0gICAgICAgIHByb3h5OiBmdW5jdGlvbihlLCBuKSB7Ci0gICAgICAgICAgICB2YXIg
ciwKLSAgICAgICAgICAgICAgICBpLAotICAgICAgICAgICAgICAgIG87Ci0gICAgICAgICAgICBy
ZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIG4gJiYgKG8gPSBlW25dLCBuID0gZSwgZSA9IG8pLCBi
LmlzRnVuY3Rpb24oZSkgPyAociA9IGguY2FsbChhcmd1bWVudHMsIDIpLCBpID0gZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGUuYXBwbHkobiB8fCB0aGlzLCByLmNvbmNhdCho
LmNhbGwoYXJndW1lbnRzKSkpCi0gICAgICAgICAgICB9LCBpLmd1aWQgPSBlLmd1aWQgPSBlLmd1
aWQgfHwgYi5ndWlkKyssIGkpIDogdAotICAgICAgICB9LAotICAgICAgICBhY2Nlc3M6IGZ1bmN0
aW9uKGUsIG4sIHIsIGksIG8sIGEsIHMpIHsKLSAgICAgICAgICAgIHZhciB1ID0gMCwKLSAgICAg
ICAgICAgICAgICBsID0gZS5sZW5ndGgsCi0gICAgICAgICAgICAgICAgYyA9IG51bGwgPT0gcjsK
LSAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PT0gYi50eXBlKHIpKSB7Ci0gICAgICAgICAgICAg
ICAgbyA9ICEwOwotICAgICAgICAgICAgICAgIGZvciAodSBpbiByKQotICAgICAgICAgICAgICAg
ICAgICBiLmFjY2VzcyhlLCBuLCB1LCByW3VdLCAhMCwgYSwgcykKLSAgICAgICAgICAgIH0gZWxz
ZSBpZiAoaSAhPT0gdCAmJiAobyA9ICEwLCBiLmlzRnVuY3Rpb24oaSkgfHwgKHMgPSAhMCksIGMg
JiYgKHMgPyAobi5jYWxsKGUsIGkpLCBuID0gbnVsbCkgOiAoYyA9IG4sIG4gPSBmdW5jdGlvbihl
LCB0LCBuKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGMuY2FsbChiKGUpLCBuKQotICAgICAg
ICAgICAgfSkpLCBuKSkKLSAgICAgICAgICAgICAgICBmb3IgKDsgbCA+IHU7IHUrKykKLSAgICAg
ICAgICAgICAgICAgICAgbihlW3VdLCByLCBzID8gaSA6IGkuY2FsbChlW3VdLCB1LCBuKGVbdV0s
IHIpKSk7Ci0gICAgICAgICAgICByZXR1cm4gbyA/IGUgOiBjID8gbi5jYWxsKGUpIDogbCA/IG4o
ZVswXSwgcikgOiBhCi0gICAgICAgIH0sCi0gICAgICAgIG5vdzogZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gKG5ldyBEYXRlKS5nZXRUaW1lKCkKLSAgICAgICAgfQotICAgIH0pLAot
ICAgIGIucmVhZHkucHJvbWlzZSA9IGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgaWYgKCFuKQotICAg
ICAgICAgICAgaWYgKG4gPSBiLkRlZmVycmVkKCksICJjb21wbGV0ZSIgPT09IG8ucmVhZHlTdGF0
ZSkKLSAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGIucmVhZHkpOwotICAgICAgICAgICAgZWxz
ZSBpZiAoby5hZGRFdmVudExpc3RlbmVyKQotICAgICAgICAgICAgICAgIG8uYWRkRXZlbnRMaXN0
ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIEgsICExKSwKLSAgICAgICAgICAgICAgICBlLmFkZEV2
ZW50TGlzdGVuZXIoImxvYWQiLCBILCAhMSk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBvLmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCBIKSwKLSAgICAgICAg
ICAgICAgICBlLmF0dGFjaEV2ZW50KCJvbmxvYWQiLCBIKTsKLSAgICAgICAgICAgICAgICB2YXIg
ciA9ICExOwotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIHIgPSBu
dWxsID09IGUuZnJhbWVFbGVtZW50ICYmIG8uZG9jdW1lbnRFbGVtZW50Ci0gICAgICAgICAgICAg
ICAgfSBjYXRjaCAoaSkge30KLSAgICAgICAgICAgICAgICByICYmIHIuZG9TY3JvbGwgJiYgZnVu
Y3Rpb24gYSgpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFiLmlzUmVhZHkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgci5k
b1Njcm9sbCgibGVmdCIpCi0gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoYSwgNTApCi0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBxKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICBiLnJlYWR5KCkKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIH0oKQotICAgICAgICAgICAgfQotICAgICAgICByZXR1cm4gbi5wcm9taXNl
KHQpCi0gICAgfSwKLSAgICBiLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBB
cnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IiLnNwbGl0KCIgIiksIGZ1bmN0aW9uKGUsIHQp
IHsKLSAgICAgICAgbFsiW29iamVjdCAiICsgdCArICJdIl0gPSB0LnRvTG93ZXJDYXNlKCkKLSAg
ICB9KTsKLSAgICBmdW5jdGlvbiBNKGUpIHsKLSAgICAgICAgdmFyIHQgPSBlLmxlbmd0aCwKLSAg
ICAgICAgICAgIG4gPSBiLnR5cGUoZSk7Ci0gICAgICAgIHJldHVybiBiLmlzV2luZG93KGUpID8g
ITEgOiAxID09PSBlLm5vZGVUeXBlICYmIHQgPyAhMCA6ICJhcnJheSIgPT09IG4gfHwgImZ1bmN0
aW9uIiAhPT0gbiAmJiAoMCA9PT0gdCB8fCAibnVtYmVyIiA9PSB0eXBlb2YgdCAmJiB0ID4gMCAm
JiB0IC0gMSBpbiBlKQotICAgIH0KLSAgICByID0gYihvKTsKLSAgICB2YXIgXyA9IHt9OwotICAg
IGZ1bmN0aW9uIEYoZSkgewotICAgICAgICB2YXIgdCA9IF9bZV0gPSB7fTsKLSAgICAgICAgcmV0
dXJuIGIuZWFjaChlLm1hdGNoKHcpIHx8IFtdLCBmdW5jdGlvbihlLCBuKSB7Ci0gICAgICAgICAg
ICB0W25dID0gITAKLSAgICAgICAgfSksIHQKLSAgICB9Ci0gICAgYi5DYWxsYmFja3MgPSBmdW5j
dGlvbihlKSB7Ci0gICAgICAgIGUgPSAic3RyaW5nIiA9PSB0eXBlb2YgZSA/IF9bZV0gfHwgRihl
KSA6IGIuZXh0ZW5kKHt9LCBlKTsKLSAgICAgICAgdmFyIG4sCi0gICAgICAgICAgICByLAotICAg
ICAgICAgICAgaSwKLSAgICAgICAgICAgIG8sCi0gICAgICAgICAgICBhLAotICAgICAgICAgICAg
cywKLSAgICAgICAgICAgIHUgPSBbXSwKLSAgICAgICAgICAgIGwgPSAhZS5vbmNlICYmIFtdLAot
ICAgICAgICAgICAgYyA9IGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgICAgICAgICBmb3IgKHIgPSBl
Lm1lbW9yeSAmJiB0LCBpID0gITAsIGEgPSBzIHx8IDAsIHMgPSAwLCBvID0gdS5sZW5ndGgsIG4g
PSAhMDsgdSAmJiBvID4gYTsgYSsrKQotICAgICAgICAgICAgICAgICAgICBpZiAodVthXS5hcHBs
eSh0WzBdLCB0WzFdKSA9PT0gITEgJiYgZS5zdG9wT25GYWxzZSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgciA9ICExOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG4gPSAhMSwKLSAgICAgICAgICAgICAgICB1
ICYmIChsID8gbC5sZW5ndGggJiYgYyhsLnNoaWZ0KCkpIDogciA/IHUgPSBbXSA6IHAuZGlzYWJs
ZSgpKQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHAgPSB7Ci0gICAgICAgICAgICAgICAg
YWRkOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciB0ID0gdS5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAoZnVuY3Rpb24gaSh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5lYWNoKHQs
IGZ1bmN0aW9uKHQsIG4pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIg
PSBiLnR5cGUobik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiIg
PT09IHIgPyBlLnVuaXF1ZSAmJiBwLmhhcyhuKSB8fCB1LnB1c2gobikgOiBuICYmIG4ubGVuZ3Ro
ICYmICJzdHJpbmciICE9PSByICYmIGkobikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
KQotICAgICAgICAgICAgICAgICAgICAgICAgfSkoYXJndW1lbnRzKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG4gPyBvID0gdS5sZW5ndGggOiByICYmIChzID0gdCwgYyhyKSkKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcwotICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHUgJiYgYi5lYWNoKGFyZ3VtZW50cywgZnVuY3Rpb24oZSwgdCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHI7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB3aGlsZSAoKHIgPSBiLmluQXJyYXkodCwgdSwgcikpID4gLTEpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdS5zcGxpY2UociwgMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
biAmJiAobyA+PSByICYmIG8tLSwgYSA+PSByICYmIGEtLSkKLSAgICAgICAgICAgICAgICAgICAg
fSksIHRoaXMKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIGhhczogZnVuY3Rp
b24oZSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA/IGIuaW5BcnJheShlLCB1KSA+
IC0xIDogISghdSB8fCAhdS5sZW5ndGgpCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICAgICBlbXB0eTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB1ID0g
W10sIHRoaXMKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIGRpc2FibGU6IGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdSA9IGwgPSByID0gdCwgdGhp
cwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXUKLSAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgIGxvY2s6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbCA9IHQsIHIgfHwgcC5kaXNhYmxlKCksIHRoaXMKLSAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgIGxvY2tlZDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiAhbAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgZmlyZVdpdGg6
IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPSB0IHx8IFtd
LCB0ID0gW2UsIHQuc2xpY2UgPyB0LnNsaWNlKCkgOiB0XSwgIXUgfHwgaSAmJiAhbCB8fCAobiA/
IGwucHVzaCh0KSA6IGModCkpLCB0aGlzCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICAgICBmaXJlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHAuZmly
ZVdpdGgodGhpcywgYXJndW1lbnRzKSwgdGhpcwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAgICAgZmlyZWQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ISFpCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgcmV0dXJuIHAK
LSAgICB9LAotICAgIGIuZXh0ZW5kKHsKLSAgICAgICAgRGVmZXJyZWQ6IGZ1bmN0aW9uKGUpIHsK
LSAgICAgICAgICAgIHZhciB0ID0gW1sicmVzb2x2ZSIsICJkb25lIiwgYi5DYWxsYmFja3MoIm9u
Y2UgbWVtb3J5IiksICJyZXNvbHZlZCJdLCBbInJlamVjdCIsICJmYWlsIiwgYi5DYWxsYmFja3Mo
Im9uY2UgbWVtb3J5IiksICJyZWplY3RlZCJdLCBbIm5vdGlmeSIsICJwcm9ncmVzcyIsIGIuQ2Fs
bGJhY2tzKCJtZW1vcnkiKV1dLAotICAgICAgICAgICAgICAgIG4gPSAicGVuZGluZyIsCi0gICAg
ICAgICAgICAgICAgciA9IHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGU6IGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KLSAgICAgICAgICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICAgICAgICAgYWx3YXlzOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBpLmRvbmUoYXJndW1lbnRzKS5mYWlsKGFyZ3VtZW50cyksIHRo
aXMKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGFyZ3VtZW50czsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiLkRlZmVycmVkKGZ1bmN0aW9uKG4pIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBiLmVhY2godCwgZnVuY3Rpb24odCwgbykgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IG9bMF0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzID0gYi5pc0Z1bmN0aW9uKGVbdF0pICYmIGVbdF07Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlbb1sxXV0oZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHMgJiYgcy5hcHBseSh0aGlz
LCBhcmd1bWVudHMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSAmJiBi
LmlzRnVuY3Rpb24oZS5wcm9taXNlKSA/IGUucHJvbWlzZSgpLmRvbmUobi5yZXNvbHZlKS5mYWls
KG4ucmVqZWN0KS5wcm9ncmVzcyhuLm5vdGlmeSkgOiBuW2EgKyAiV2l0aCJdKHRoaXMgPT09IHIg
PyBuLnByb21pc2UoKSA6IHRoaXMsIHMgPyBbZV0gOiBhcmd1bWVudHMpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IG51bGwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIH0pLnByb21pc2UoKQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICAgICBwcm9taXNlOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbCAhPSBlID8gYi5leHRlbmQoZSwgcikgOiByCi0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIGkgPSB7fTsKLSAgICAgICAgICAg
IHJldHVybiByLnBpcGUgPSByLnRoZW4sIGIuZWFjaCh0LCBmdW5jdGlvbihlLCBvKSB7Ci0gICAg
ICAgICAgICAgICAgdmFyIGEgPSBvWzJdLAotICAgICAgICAgICAgICAgICAgICBzID0gb1szXTsK
LSAgICAgICAgICAgICAgICByW29bMV1dID0gYS5hZGQsCi0gICAgICAgICAgICAgICAgcyAmJiBh
LmFkZChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgbiA9IHMKLSAgICAgICAgICAg
ICAgICB9LCB0WzEgXiBlXVsyXS5kaXNhYmxlLCB0WzJdWzJdLmxvY2spLAotICAgICAgICAgICAg
ICAgIGlbb1swXV0gPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlb
b1swXSArICJXaXRoIl0odGhpcyA9PT0gaSA/IHIgOiB0aGlzLCBhcmd1bWVudHMpLCB0aGlzCi0g
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBpW29bMF0gKyAiV2l0aCJdID0gYS5m
aXJlV2l0aAotICAgICAgICAgICAgfSksIHIucHJvbWlzZShpKSwgZSAmJiBlLmNhbGwoaSwgaSks
IGkKLSAgICAgICAgfSwKLSAgICAgICAgd2hlbjogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAg
dmFyIHQgPSAwLAotICAgICAgICAgICAgICAgIG4gPSBoLmNhbGwoYXJndW1lbnRzKSwKLSAgICAg
ICAgICAgICAgICByID0gbi5sZW5ndGgsCi0gICAgICAgICAgICAgICAgaSA9IDEgIT09IHIgfHwg
ZSAmJiBiLmlzRnVuY3Rpb24oZS5wcm9taXNlKSA/IHIgOiAwLAotICAgICAgICAgICAgICAgIG8g
PSAxID09PSBpID8gZSA6IGIuRGVmZXJyZWQoKSwKLSAgICAgICAgICAgICAgICBhID0gZnVuY3Rp
b24oZSwgdCwgbikgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24ocikgewot
ICAgICAgICAgICAgICAgICAgICAgICAgdFtlXSA9IHRoaXMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBuW2VdID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBoLmNhbGwoYXJndW1lbnRzKSA6IHIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBuID09PSBzID8gby5ub3RpZnlXaXRoKHQsIG4pIDog
LS1pIHx8IG8ucmVzb2x2ZVdpdGgodCwgbikKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgcywKLSAgICAgICAgICAgICAgICB1LAotICAg
ICAgICAgICAgICAgIGw7Ci0gICAgICAgICAgICBpZiAociA+IDEpCi0gICAgICAgICAgICAgICAg
Zm9yIChzID0gQXJyYXkociksIHUgPSBBcnJheShyKSwgbCA9IEFycmF5KHIpOyByID4gdDsgdCsr
KQotICAgICAgICAgICAgICAgICAgICBuW3RdICYmIGIuaXNGdW5jdGlvbihuW3RdLnByb21pc2Up
ID8gblt0XS5wcm9taXNlKCkuZG9uZShhKHQsIGwsIG4pKS5mYWlsKG8ucmVqZWN0KS5wcm9ncmVz
cyhhKHQsIHUsIHMpKSA6IC0taTsKLSAgICAgICAgICAgIHJldHVybiBpIHx8IG8ucmVzb2x2ZVdp
dGgobCwgbiksIG8ucHJvbWlzZSgpCi0gICAgICAgIH0KLSAgICB9KSwKLSAgICBiLnN1cHBvcnQg
PSBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHQsCi0gICAgICAgICAgICBuLAotICAgICAgICAg
ICAgciwKLSAgICAgICAgICAgIGEsCi0gICAgICAgICAgICBzLAotICAgICAgICAgICAgdSwKLSAg
ICAgICAgICAgIGwsCi0gICAgICAgICAgICBjLAotICAgICAgICAgICAgcCwKLSAgICAgICAgICAg
IGYsCi0gICAgICAgICAgICBkID0gby5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgaWYg
KGQuc2V0QXR0cmlidXRlKCJjbGFzc05hbWUiLCAidCIpLCBkLmlubmVySFRNTCA9ICIgIDxsaW5r
Lz48dGFibGU+PC90YWJsZT48YSBocmVmPScvYSc+YTwvYT48aW5wdXQgdHlwZT0nY2hlY2tib3gn
Lz4iLCBuID0gZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLCByID0gZC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYSIpWzBdLCAhbiB8fCAhciB8fCAhbi5sZW5ndGgpCi0gICAgICAgICAgICByZXR1
cm4ge307Ci0gICAgICAgIHMgPSBvLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLAotICAgICAgICBs
ID0gcy5hcHBlbmRDaGlsZChvLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKSwKLSAgICAgICAgYSA9
IGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IilbMF0sCi0gICAgICAgIHIuc3R5bGUuY3Nz
VGV4dCA9ICJ0b3A6MXB4O2Zsb2F0OmxlZnQ7b3BhY2l0eTouNSIsCi0gICAgICAgIHQgPSB7Ci0g
ICAgICAgICAgICBnZXRTZXRBdHRyaWJ1dGU6ICJ0IiAhPT0gZC5jbGFzc05hbWUsCi0gICAgICAg
ICAgICBsZWFkaW5nV2hpdGVzcGFjZTogMyA9PT0gZC5maXJzdENoaWxkLm5vZGVUeXBlLAotICAg
ICAgICAgICAgdGJvZHk6ICFkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpLmxlbmd0aCwK
LSAgICAgICAgICAgIGh0bWxTZXJpYWxpemU6ICEhZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGlu
ayIpLmxlbmd0aCwKLSAgICAgICAgICAgIHN0eWxlOiAvdG9wLy50ZXN0KHIuZ2V0QXR0cmlidXRl
KCJzdHlsZSIpKSwKLSAgICAgICAgICAgIGhyZWZOb3JtYWxpemVkOiAiL2EiID09PSByLmdldEF0
dHJpYnV0ZSgiaHJlZiIpLAotICAgICAgICAgICAgb3BhY2l0eTogL14wLjUvLnRlc3Qoci5zdHls
ZS5vcGFjaXR5KSwKLSAgICAgICAgICAgIGNzc0Zsb2F0OiAhIXIuc3R5bGUuY3NzRmxvYXQsCi0g
ICAgICAgICAgICBjaGVja09uOiAhIWEudmFsdWUsCi0gICAgICAgICAgICBvcHRTZWxlY3RlZDog
bC5zZWxlY3RlZCwKLSAgICAgICAgICAgIGVuY3R5cGU6ICEhby5jcmVhdGVFbGVtZW50KCJmb3Jt
IikuZW5jdHlwZSwKLSAgICAgICAgICAgIGh0bWw1Q2xvbmU6ICI8Om5hdj48LzpuYXY+IiAhPT0g
by5jcmVhdGVFbGVtZW50KCJuYXYiKS5jbG9uZU5vZGUoITApLm91dGVySFRNTCwKLSAgICAgICAg
ICAgIGJveE1vZGVsOiAiQ1NTMUNvbXBhdCIgPT09IG8uY29tcGF0TW9kZSwKLSAgICAgICAgICAg
IGRlbGV0ZUV4cGFuZG86ICEwLAotICAgICAgICAgICAgbm9DbG9uZUV2ZW50OiAhMCwKLSAgICAg
ICAgICAgIGlubGluZUJsb2NrTmVlZHNMYXlvdXQ6ICExLAotICAgICAgICAgICAgc2hyaW5rV3Jh
cEJsb2NrczogITEsCi0gICAgICAgICAgICByZWxpYWJsZU1hcmdpblJpZ2h0OiAhMCwKLSAgICAg
ICAgICAgIGJveFNpemluZ1JlbGlhYmxlOiAhMCwKLSAgICAgICAgICAgIHBpeGVsUG9zaXRpb246
ICExCi0gICAgICAgIH0sCi0gICAgICAgIGEuY2hlY2tlZCA9ICEwLAotICAgICAgICB0Lm5vQ2xv
bmVDaGVja2VkID0gYS5jbG9uZU5vZGUoITApLmNoZWNrZWQsCi0gICAgICAgIHMuZGlzYWJsZWQg
PSAhMCwKLSAgICAgICAgdC5vcHREaXNhYmxlZCA9ICFsLmRpc2FibGVkOwotICAgICAgICB0cnkg
ewotICAgICAgICAgICAgZGVsZXRlIGQudGVzdAotICAgICAgICB9IGNhdGNoIChoKSB7Ci0gICAg
ICAgICAgICB0LmRlbGV0ZUV4cGFuZG8gPSAhMQotICAgICAgICB9Ci0gICAgICAgIGEgPSBvLmNy
ZWF0ZUVsZW1lbnQoImlucHV0IiksCi0gICAgICAgIGEuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsICIi
KSwKLSAgICAgICAgdC5pbnB1dCA9ICIiID09PSBhLmdldEF0dHJpYnV0ZSgidmFsdWUiKSwKLSAg
ICAgICAgYS52YWx1ZSA9ICJ0IiwKLSAgICAgICAgYS5zZXRBdHRyaWJ1dGUoInR5cGUiLCAicmFk
aW8iKSwKLSAgICAgICAgdC5yYWRpb1ZhbHVlID0gInQiID09PSBhLnZhbHVlLAotICAgICAgICBh
LnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsICJ0IiksCi0gICAgICAgIGEuc2V0QXR0cmlidXRlKCJu
YW1lIiwgInQiKSwKLSAgICAgICAgdSA9IG8uY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLAotICAg
ICAgICB1LmFwcGVuZENoaWxkKGEpLAotICAgICAgICB0LmFwcGVuZENoZWNrZWQgPSBhLmNoZWNr
ZWQsCi0gICAgICAgIHQuY2hlY2tDbG9uZSA9IHUuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITAp
Lmxhc3RDaGlsZC5jaGVja2VkLAotICAgICAgICBkLmF0dGFjaEV2ZW50ICYmIChkLmF0dGFjaEV2
ZW50KCJvbmNsaWNrIiwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB0Lm5vQ2xvbmVFdmVudCA9
ICExCi0gICAgICAgIH0pLCBkLmNsb25lTm9kZSghMCkuY2xpY2soKSk7Ci0gICAgICAgIGZvciAo
ZiBpbiB7Ci0gICAgICAgICAgICBzdWJtaXQ6ICEwLAotICAgICAgICAgICAgY2hhbmdlOiAhMCwK
LSAgICAgICAgICAgIGZvY3VzaW46ICEwCi0gICAgICAgIH0pCi0gICAgICAgICAgICBkLnNldEF0
dHJpYnV0ZShjID0gIm9uIiArIGYsICJ0IiksCi0gICAgICAgICAgICB0W2YgKyAiQnViYmxlcyJd
ID0gYyBpbiBlIHx8IGQuYXR0cmlidXRlc1tjXS5leHBhbmRvID09PSAhMTsKLSAgICAgICAgcmV0
dXJuIGQuc3R5bGUuYmFja2dyb3VuZENsaXAgPSAiY29udGVudC1ib3giLCBkLmNsb25lTm9kZSgh
MCkuc3R5bGUuYmFja2dyb3VuZENsaXAgPSAiIiwgdC5jbGVhckNsb25lU3R5bGUgPSAiY29udGVu
dC1ib3giID09PSBkLnN0eWxlLmJhY2tncm91bmRDbGlwLCBiKGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgdmFyIG4sCi0gICAgICAgICAgICAgICAgciwKLSAgICAgICAgICAgICAgICBhLAotICAg
ICAgICAgICAgICAgIHMgPSAicGFkZGluZzowO21hcmdpbjowO2JvcmRlcjowO2Rpc3BsYXk6Ymxv
Y2s7Ym94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7LXdl
YmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94OyIsCi0gICAgICAgICAgICAgICAgdSA9IG8uZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXTsKLSAgICAgICAgICAgIHUgJiYgKG4gPSBvLmNy
ZWF0ZUVsZW1lbnQoImRpdiIpLCBuLnN0eWxlLmNzc1RleHQgPSAiYm9yZGVyOjA7d2lkdGg6MDto
ZWlnaHQ6MDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0Oi05OTk5cHg7bWFyZ2luLXRvcDox
cHgiLCB1LmFwcGVuZENoaWxkKG4pLmFwcGVuZENoaWxkKGQpLCBkLmlubmVySFRNTCA9ICI8dGFi
bGU+PHRyPjx0ZD48L3RkPjx0ZD50PC90ZD48L3RyPjwvdGFibGU+IiwgYSA9IGQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRkIiksIGFbMF0uc3R5bGUuY3NzVGV4dCA9ICJwYWRkaW5nOjA7bWFyZ2lu
OjA7Ym9yZGVyOjA7ZGlzcGxheTpub25lIiwgcCA9IDAgPT09IGFbMF0ub2Zmc2V0SGVpZ2h0LCBh
WzBdLnN0eWxlLmRpc3BsYXkgPSAiIiwgYVsxXS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiLCB0LnJl
bGlhYmxlSGlkZGVuT2Zmc2V0cyA9IHAgJiYgMCA9PT0gYVswXS5vZmZzZXRIZWlnaHQsIGQuaW5u
ZXJIVE1MID0gIiIsIGQuc3R5bGUuY3NzVGV4dCA9ICJib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1v
ei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFk
ZGluZzoxcHg7Ym9yZGVyOjFweDtkaXNwbGF5OmJsb2NrO3dpZHRoOjRweDttYXJnaW4tdG9wOjEl
O3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxJTsiLCB0LmJveFNpemluZyA9IDQgPT09IGQub2Zmc2V0
V2lkdGgsIHQuZG9lc05vdEluY2x1ZGVNYXJnaW5JbkJvZHlPZmZzZXQgPSAxICE9PSB1Lm9mZnNl
dFRvcCwgZS5nZXRDb21wdXRlZFN0eWxlICYmICh0LnBpeGVsUG9zaXRpb24gPSAiMSUiICE9PSAo
ZS5nZXRDb21wdXRlZFN0eWxlKGQsIG51bGwpIHx8IHt9KS50b3AsIHQuYm94U2l6aW5nUmVsaWFi
bGUgPSAiNHB4IiA9PT0gKGUuZ2V0Q29tcHV0ZWRTdHlsZShkLCBudWxsKSB8fCB7Ci0gICAgICAg
ICAgICAgICAgd2lkdGg6ICI0cHgiCi0gICAgICAgICAgICB9KS53aWR0aCwgciA9IGQuYXBwZW5k
Q2hpbGQoby5jcmVhdGVFbGVtZW50KCJkaXYiKSksIHIuc3R5bGUuY3NzVGV4dCA9IGQuc3R5bGUu
Y3NzVGV4dCA9IHMsIHIuc3R5bGUubWFyZ2luUmlnaHQgPSByLnN0eWxlLndpZHRoID0gIjAiLCBk
LnN0eWxlLndpZHRoID0gIjFweCIsIHQucmVsaWFibGVNYXJnaW5SaWdodCA9ICFwYXJzZUZsb2F0
KChlLmdldENvbXB1dGVkU3R5bGUociwgbnVsbCkgfHwge30pLm1hcmdpblJpZ2h0KSksIHR5cGVv
ZiBkLnN0eWxlLnpvb20gIT09IGkgJiYgKGQuaW5uZXJIVE1MID0gIiIsIGQuc3R5bGUuY3NzVGV4
dCA9IHMgKyAid2lkdGg6MXB4O3BhZGRpbmc6MXB4O2Rpc3BsYXk6aW5saW5lO3pvb206MSIsIHQu
aW5saW5lQmxvY2tOZWVkc0xheW91dCA9IDMgPT09IGQub2Zmc2V0V2lkdGgsIGQuc3R5bGUuZGlz
cGxheSA9ICJibG9jayIsIGQuaW5uZXJIVE1MID0gIjxkaXY+PC9kaXY+IiwgZC5maXJzdENoaWxk
LnN0eWxlLndpZHRoID0gIjVweCIsIHQuc2hyaW5rV3JhcEJsb2NrcyA9IDMgIT09IGQub2Zmc2V0
V2lkdGgsIHQuaW5saW5lQmxvY2tOZWVkc0xheW91dCAmJiAodS5zdHlsZS56b29tID0gMSkpLCB1
LnJlbW92ZUNoaWxkKG4pLCBuID0gZCA9IGEgPSByID0gbnVsbCkKLSAgICAgICAgfSksIG4gPSBz
ID0gdSA9IGwgPSByID0gYSA9IG51bGwsIHQKLSAgICB9KCk7Ci0gICAgdmFyIE8gPSAvKD86XHtb
XHNcU10qXH18XFtbXHNcU10qXF0pJC8sCi0gICAgICAgIEIgPSAvKFtBLVpdKS9nOwotICAgIGZ1
bmN0aW9uIFAoZSwgbiwgciwgaSkgewotICAgICAgICBpZiAoYi5hY2NlcHREYXRhKGUpKSB7Ci0g
ICAgICAgICAgICB2YXIgbywKLSAgICAgICAgICAgICAgICBhLAotICAgICAgICAgICAgICAgIHMg
PSBiLmV4cGFuZG8sCi0gICAgICAgICAgICAgICAgdSA9ICJzdHJpbmciID09IHR5cGVvZiBuLAot
ICAgICAgICAgICAgICAgIGwgPSBlLm5vZGVUeXBlLAotICAgICAgICAgICAgICAgIHAgPSBsID8g
Yi5jYWNoZSA6IGUsCi0gICAgICAgICAgICAgICAgZiA9IGwgPyBlW3NdIDogZVtzXSAmJiBzOwot
ICAgICAgICAgICAgaWYgKGYgJiYgcFtmXSAmJiAoaSB8fCBwW2ZdLmRhdGEpIHx8ICF1IHx8IHIg
IT09IHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGYgfHwgKGwgPyBlW3NdID0gZiA9IGMucG9w
KCkgfHwgYi5ndWlkKysgOiBmID0gcyksIHBbZl0gfHwgKHBbZl0gPSB7fSwgbCB8fCAocFtmXS50
b0pTT04gPSBiLm5vb3ApKSwgKCJvYmplY3QiID09IHR5cGVvZiBuIHx8ICJmdW5jdGlvbiIgPT0g
dHlwZW9mIG4pICYmIChpID8gcFtmXSA9IGIuZXh0ZW5kKHBbZl0sIG4pIDogcFtmXS5kYXRhID0g
Yi5leHRlbmQocFtmXS5kYXRhLCBuKSksIG8gPSBwW2ZdLCBpIHx8IChvLmRhdGEgfHwgKG8uZGF0
YSA9IHt9KSwgbyA9IG8uZGF0YSksIHIgIT09IHQgJiYgKG9bYi5jYW1lbENhc2UobildID0gciks
IHUgPyAoYSA9IG9bbl0sIG51bGwgPT0gYSAmJiAoYSA9IG9bYi5jYW1lbENhc2UobildKSkgOiBh
ID0gbywgYQotICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIFIoZSwgdCwgbikgewotICAg
ICAgICBpZiAoYi5hY2NlcHREYXRhKGUpKSB7Ci0gICAgICAgICAgICB2YXIgciwKLSAgICAgICAg
ICAgICAgICBpLAotICAgICAgICAgICAgICAgIG8sCi0gICAgICAgICAgICAgICAgYSA9IGUubm9k
ZVR5cGUsCi0gICAgICAgICAgICAgICAgcyA9IGEgPyBiLmNhY2hlIDogZSwKLSAgICAgICAgICAg
ICAgICB1ID0gYSA/IGVbYi5leHBhbmRvXSA6IGIuZXhwYW5kbzsKLSAgICAgICAgICAgIGlmIChz
W3VdKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHQgJiYgKG8gPSBuID8gc1t1XSA6IHNbdV0uZGF0
YSkpIHsKLSAgICAgICAgICAgICAgICAgICAgYi5pc0FycmF5KHQpID8gdCA9IHQuY29uY2F0KGIu
bWFwKHQsIGIuY2FtZWxDYXNlKSkgOiB0IGluIG8gPyB0ID0gW3RdIDogKHQgPSBiLmNhbWVsQ2Fz
ZSh0KSwgdCA9IHQgaW4gbyA/IFt0XSA6IHQuc3BsaXQoIiAiKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGZvciAociA9IDAsIGkgPSB0Lmxlbmd0aDsgaSA+IHI7IHIrKykKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGRlbGV0ZSBvW3Rbcl1dOwotICAgICAgICAgICAgICAgICAgICBpZiAoIShuID8g
JCA6IGIuaXNFbXB0eU9iamVjdCkobykpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4K
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgKG4gfHwgKGRlbGV0ZSBzW3VdLmRh
dGEsICQoc1t1XSkpKSAmJiAoYSA/IGIuY2xlYW5EYXRhKFtlXSwgITApIDogYi5zdXBwb3J0LmRl
bGV0ZUV4cGFuZG8gfHwgcyAhPSBzLndpbmRvdyA/IGRlbGV0ZSBzW3VdIDogc1t1XSA9IG51bGwp
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgYi5leHRlbmQoewotICAgICAg
ICBjYWNoZToge30sCi0gICAgICAgIGV4cGFuZG86ICJqUXVlcnkiICsgKHAgKyBNYXRoLnJhbmRv
bSgpKS5yZXBsYWNlKC9cRC9nLCAiIiksCi0gICAgICAgIG5vRGF0YTogewotICAgICAgICAgICAg
ZW1iZWQ6ICEwLAotICAgICAgICAgICAgb2JqZWN0OiAiY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNm
LTk2QjgtNDQ0NTUzNTQwMDAwIiwKLSAgICAgICAgICAgIGFwcGxldDogITAKLSAgICAgICAgfSwK
LSAgICAgICAgaGFzRGF0YTogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgcmV0dXJuIGUgPSBl
Lm5vZGVUeXBlID8gYi5jYWNoZVtlW2IuZXhwYW5kb11dIDogZVtiLmV4cGFuZG9dLCAhIWUgJiYg
ISQoZSkKLSAgICAgICAgfSwKLSAgICAgICAgZGF0YTogZnVuY3Rpb24oZSwgdCwgbikgewotICAg
ICAgICAgICAgcmV0dXJuIFAoZSwgdCwgbikKLSAgICAgICAgfSwKLSAgICAgICAgcmVtb3ZlRGF0
YTogZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAgcmV0dXJuIFIoZSwgdCkKLSAgICAgICAg
fSwKLSAgICAgICAgX2RhdGE6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKLSAgICAgICAgICAgIHJldHVy
biBQKGUsIHQsIG4sICEwKQotICAgICAgICB9LAotICAgICAgICBfcmVtb3ZlRGF0YTogZnVuY3Rp
b24oZSwgdCkgewotICAgICAgICAgICAgcmV0dXJuIFIoZSwgdCwgITApCi0gICAgICAgIH0sCi0g
ICAgICAgIGFjY2VwdERhdGE6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGlmIChlLm5vZGVU
eXBlICYmIDEgIT09IGUubm9kZVR5cGUgJiYgOSAhPT0gZS5ub2RlVHlwZSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gITE7Ci0gICAgICAgICAgICB2YXIgdCA9IGUubm9kZU5hbWUgJiYgYi5ub0Rh
dGFbZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXTsKLSAgICAgICAgICAgIHJldHVybiAhdCB8fCB0
ICE9PSAhMCAmJiBlLmdldEF0dHJpYnV0ZSgiY2xhc3NpZCIpID09PSB0Ci0gICAgICAgIH0KLSAg
ICB9KSwKLSAgICBiLmZuLmV4dGVuZCh7Ci0gICAgICAgIGRhdGE6IGZ1bmN0aW9uKGUsIG4pIHsK
LSAgICAgICAgICAgIHZhciByLAotICAgICAgICAgICAgICAgIGksCi0gICAgICAgICAgICAgICAg
byA9IHRoaXNbMF0sCi0gICAgICAgICAgICAgICAgYSA9IDAsCi0gICAgICAgICAgICAgICAgcyA9
IG51bGw7Ci0gICAgICAgICAgICBpZiAoZSA9PT0gdCkgewotICAgICAgICAgICAgICAgIGlmICh0
aGlzLmxlbmd0aCAmJiAocyA9IGIuZGF0YShvKSwgMSA9PT0gby5ub2RlVHlwZSAmJiAhYi5fZGF0
YShvLCAicGFyc2VkQXR0cnMiKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChyID0gby5h
dHRyaWJ1dGVzOyByLmxlbmd0aCA+IGE7IGErKykKLSAgICAgICAgICAgICAgICAgICAgICAgIGkg
PSByW2FdLm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBpLmluZGV4T2YoImRhdGEtIikg
fHwgKGkgPSBiLmNhbWVsQ2FzZShpLnNsaWNlKDUpKSwgVyhvLCBpLCBzW2ldKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIGIuX2RhdGEobywgInBhcnNlZEF0dHJzIiwgITApCi0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBzCi0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICByZXR1cm4gIm9iamVjdCIgPT0gdHlwZW9mIGUgPyB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICAgICAgYi5kYXRhKHRoaXMsIGUpCi0gICAgICAgICAgICB9KSA6IGIuYWNjZXNz
KHRoaXMsIGZ1bmN0aW9uKG4pIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbiA9PT0gdCA/IG8g
PyBXKG8sIGUsIGIuZGF0YShvLCBlKSkgOiBudWxsIDogKHRoaXMuZWFjaChmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgICAgICAgICAgYi5kYXRhKHRoaXMsIGUsIG4pCi0gICAgICAgICAgICAgICAg
fSksIHQpCi0gICAgICAgICAgICB9LCBudWxsLCBuLCBhcmd1bWVudHMubGVuZ3RoID4gMSwgbnVs
bCwgITApCi0gICAgICAgIH0sCi0gICAgICAgIHJlbW92ZURhdGE6IGZ1bmN0aW9uKGUpIHsKLSAg
ICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAg
Yi5yZW1vdmVEYXRhKHRoaXMsIGUpCi0gICAgICAgICAgICB9KQotICAgICAgICB9Ci0gICAgfSk7
Ci0gICAgZnVuY3Rpb24gVyhlLCBuLCByKSB7Ci0gICAgICAgIGlmIChyID09PSB0ICYmIDEgPT09
IGUubm9kZVR5cGUpIHsKLSAgICAgICAgICAgIHZhciBpID0gImRhdGEtIiArIG4ucmVwbGFjZShC
LCAiLSQxIikudG9Mb3dlckNhc2UoKTsKLSAgICAgICAgICAgIGlmIChyID0gZS5nZXRBdHRyaWJ1
dGUoaSksICJzdHJpbmciID09IHR5cGVvZiByKSB7Ci0gICAgICAgICAgICAgICAgdHJ5IHsKLSAg
ICAgICAgICAgICAgICAgICAgciA9ICJ0cnVlIiA9PT0gciA/ICEwIDogImZhbHNlIiA9PT0gciA/
ICExIDogIm51bGwiID09PSByID8gbnVsbCA6ICtyICsgIiIgPT09IHIgPyArciA6IE8udGVzdChy
KSA/IGIucGFyc2VKU09OKHIpIDogcgotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG8pIHt9Ci0g
ICAgICAgICAgICAgICAgYi5kYXRhKGUsIG4sIHIpCi0gICAgICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgICAgICByID0gdAotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByCi0gICAgfQotICAg
IGZ1bmN0aW9uICQoZSkgewotICAgICAgICB2YXIgdDsKLSAgICAgICAgZm9yICh0IGluIGUpCi0g
ICAgICAgICAgICBpZiAoKCJkYXRhIiAhPT0gdCB8fCAhYi5pc0VtcHR5T2JqZWN0KGVbdF0pKSAm
JiAidG9KU09OIiAhPT0gdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gITE7Ci0gICAgICAgIHJl
dHVybiAhMAotICAgIH0KLSAgICBiLmV4dGVuZCh7Ci0gICAgICAgIHF1ZXVlOiBmdW5jdGlvbihl
LCBuLCByKSB7Ci0gICAgICAgICAgICB2YXIgaTsKLSAgICAgICAgICAgIHJldHVybiBlID8gKG4g
PSAobiB8fCAiZngiKSArICJxdWV1ZSIsIGkgPSBiLl9kYXRhKGUsIG4pLCByICYmICghaSB8fCBi
LmlzQXJyYXkocikgPyBpID0gYi5fZGF0YShlLCBuLCBiLm1ha2VBcnJheShyKSkgOiBpLnB1c2go
cikpLCBpIHx8IFtdKSA6IHQKLSAgICAgICAgfSwKLSAgICAgICAgZGVxdWV1ZTogZnVuY3Rpb24o
ZSwgdCkgewotICAgICAgICAgICAgdCA9IHQgfHwgImZ4IjsKLSAgICAgICAgICAgIHZhciBuID0g
Yi5xdWV1ZShlLCB0KSwKLSAgICAgICAgICAgICAgICByID0gbi5sZW5ndGgsCi0gICAgICAgICAg
ICAgICAgaSA9IG4uc2hpZnQoKSwKLSAgICAgICAgICAgICAgICBvID0gYi5fcXVldWVIb29rcyhl
LCB0KSwKLSAgICAgICAgICAgICAgICBhID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGIuZGVxdWV1ZShlLCB0KQotICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAiaW5w
cm9ncmVzcyIgPT09IGkgJiYgKGkgPSBuLnNoaWZ0KCksIHItLSksCi0gICAgICAgICAgICBvLmN1
ciA9IGksCi0gICAgICAgICAgICBpICYmICgiZngiID09PSB0ICYmIG4udW5zaGlmdCgiaW5wcm9n
cmVzcyIpLCBkZWxldGUgby5zdG9wLCBpLmNhbGwoZSwgYSwgbykpLAotICAgICAgICAgICAgIXIg
JiYgbyAmJiBvLmVtcHR5LmZpcmUoKQotICAgICAgICB9LAotICAgICAgICBfcXVldWVIb29rczog
ZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAgdmFyIG4gPSB0ICsgInF1ZXVlSG9va3MiOwot
ICAgICAgICAgICAgcmV0dXJuIGIuX2RhdGEoZSwgbikgfHwgYi5fZGF0YShlLCBuLCB7Ci0gICAg
ICAgICAgICAgICAgICAgIGVtcHR5OiBiLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKS5hZGQoZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBiLl9yZW1vdmVEYXRhKGUsIHQgKyAi
cXVldWUiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGIuX3JlbW92ZURhdGEoZSwgbikKLSAg
ICAgICAgICAgICAgICAgICAgfSkKLSAgICAgICAgICAgICAgICB9KQotICAgICAgICB9Ci0gICAg
fSksCi0gICAgYi5mbi5leHRlbmQoewotICAgICAgICBxdWV1ZTogZnVuY3Rpb24oZSwgbikgewot
ICAgICAgICAgICAgdmFyIHIgPSAyOwotICAgICAgICAgICAgcmV0dXJuICJzdHJpbmciICE9IHR5
cGVvZiBlICYmIChuID0gZSwgZSA9ICJmeCIsIHItLSksIHIgPiBhcmd1bWVudHMubGVuZ3RoID8g
Yi5xdWV1ZSh0aGlzWzBdLCBlKSA6IG4gPT09IHQgPyB0aGlzIDogdGhpcy5lYWNoKGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgICAgIHZhciB0ID0gYi5xdWV1ZSh0aGlzLCBlLCBuKTsKLSAgICAg
ICAgICAgICAgICBiLl9xdWV1ZUhvb2tzKHRoaXMsIGUpLAotICAgICAgICAgICAgICAgICJmeCIg
PT09IGUgJiYgImlucHJvZ3Jlc3MiICE9PSB0WzBdICYmIGIuZGVxdWV1ZSh0aGlzLCBlKQotICAg
ICAgICAgICAgfSkKLSAgICAgICAgfSwKLSAgICAgICAgZGVxdWV1ZTogZnVuY3Rpb24oZSkgewot
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg
ICBiLmRlcXVldWUodGhpcywgZSkKLSAgICAgICAgICAgIH0pCi0gICAgICAgIH0sCi0gICAgICAg
IGRlbGF5OiBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICByZXR1cm4gZSA9IGIuZnggPyBi
LmZ4LnNwZWVkc1tlXSB8fCBlIDogZSwgdCA9IHQgfHwgImZ4IiwgdGhpcy5xdWV1ZSh0LCBmdW5j
dGlvbih0LCBuKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHIgPSBzZXRUaW1lb3V0KHQsIGUpOwot
ICAgICAgICAgICAgICAgIG4uc3RvcCA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAg
ICBjbGVhclRpbWVvdXQocikKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KQotICAg
ICAgICB9LAotICAgICAgICBjbGVhclF1ZXVlOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gdGhpcy5xdWV1ZShlIHx8ICJmeCIsIFtdKQotICAgICAgICB9LAotICAgICAgICBwcm9t
aXNlOiBmdW5jdGlvbihlLCBuKSB7Ci0gICAgICAgICAgICB2YXIgciwKLSAgICAgICAgICAgICAg
ICBpID0gMSwKLSAgICAgICAgICAgICAgICBvID0gYi5EZWZlcnJlZCgpLAotICAgICAgICAgICAg
ICAgIGEgPSB0aGlzLAotICAgICAgICAgICAgICAgIHMgPSB0aGlzLmxlbmd0aCwKLSAgICAgICAg
ICAgICAgICB1ID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIC0taSB8fCBvLnJl
c29sdmVXaXRoKGEsIFthXSkKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgInN0cmlu
ZyIgIT0gdHlwZW9mIGUgJiYgKG4gPSBlLCBlID0gdCksCi0gICAgICAgICAgICBlID0gZSB8fCAi
ZngiOwotICAgICAgICAgICAgd2hpbGUgKHMtLSkKLSAgICAgICAgICAgICAgICByID0gYi5fZGF0
YShhW3NdLCBlICsgInF1ZXVlSG9va3MiKSwKLSAgICAgICAgICAgICAgICByICYmIHIuZW1wdHkg
JiYgKGkrKywgci5lbXB0eS5hZGQodSkpOwotICAgICAgICAgICAgcmV0dXJuIHUoKSwgby5wcm9t
aXNlKG4pCi0gICAgICAgIH0KLSAgICB9KTsKLSAgICB2YXIgSSwKLSAgICAgICAgeiwKLSAgICAg
ICAgWCA9IC9bXHRcclxuXS9nLAotICAgICAgICBVID0gL1xyL2csCi0gICAgICAgIFYgPSAvXig/
OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0KSQvaSwKLSAgICAgICAgWSA9IC9e
KD86YXxhcmVhKSQvaSwKLSAgICAgICAgSiA9IC9eKD86Y2hlY2tlZHxzZWxlY3RlZHxhdXRvZm9j
dXN8YXV0b3BsYXl8YXN5bmN8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGxvb3B8bXVs
dGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWQpJC9pLAotICAgICAgICBHID0gL14o
PzpjaGVja2VkfHNlbGVjdGVkKSQvaSwKLSAgICAgICAgUSA9IGIuc3VwcG9ydC5nZXRTZXRBdHRy
aWJ1dGUsCi0gICAgICAgIEsgPSBiLnN1cHBvcnQuaW5wdXQ7Ci0gICAgYi5mbi5leHRlbmQoewot
ICAgICAgICBhdHRyOiBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICByZXR1cm4gYi5hY2Nl
c3ModGhpcywgYi5hdHRyLCBlLCB0LCBhcmd1bWVudHMubGVuZ3RoID4gMSkKLSAgICAgICAgfSwK
LSAgICAgICAgcmVtb3ZlQXR0cjogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgcmV0dXJuIHRo
aXMuZWFjaChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBiLnJlbW92ZUF0dHIodGhpcywg
ZSkKLSAgICAgICAgICAgIH0pCi0gICAgICAgIH0sCi0gICAgICAgIHByb3A6IGZ1bmN0aW9uKGUs
IHQpIHsKLSAgICAgICAgICAgIHJldHVybiBiLmFjY2Vzcyh0aGlzLCBiLnByb3AsIGUsIHQsIGFy
Z3VtZW50cy5sZW5ndGggPiAxKQotICAgICAgICB9LAotICAgICAgICByZW1vdmVQcm9wOiBmdW5j
dGlvbihlKSB7Ci0gICAgICAgICAgICByZXR1cm4gZSA9IGIucHJvcEZpeFtlXSB8fCBlLCB0aGlz
LmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAg
ICAgICAgdGhpc1tlXSA9IHQsCi0gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzW2VdCi0g
ICAgICAgICAgICAgICAgfSBjYXRjaCAobikge30KLSAgICAgICAgICAgIH0pCi0gICAgICAgIH0s
Ci0gICAgICAgIGFkZENsYXNzOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICB2YXIgdCwKLSAg
ICAgICAgICAgICAgICBuLAotICAgICAgICAgICAgICAgIHIsCi0gICAgICAgICAgICAgICAgaSwK
LSAgICAgICAgICAgICAgICBvLAotICAgICAgICAgICAgICAgIGEgPSAwLAotICAgICAgICAgICAg
ICAgIHMgPSB0aGlzLmxlbmd0aCwKLSAgICAgICAgICAgICAgICB1ID0gInN0cmluZyIgPT0gdHlw
ZW9mIGUgJiYgZTsKLSAgICAgICAgICAgIGlmIChiLmlzRnVuY3Rpb24oZSkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbih0KSB7Ci0gICAgICAgICAgICAgICAgICAg
IGIodGhpcykuYWRkQ2xhc3MoZS5jYWxsKHRoaXMsIHQsIHRoaXMuY2xhc3NOYW1lKSkKLSAgICAg
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGlmICh1KQotICAgICAgICAgICAgICAgIGZvciAo
dCA9IChlIHx8ICIiKS5tYXRjaCh3KSB8fCBbXTsgcyA+IGE7IGErKykKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKG4gPSB0aGlzW2FdLCByID0gMSA9PT0gbi5ub2RlVHlwZSAmJiAobi5jbGFzc05h
bWUgPyAoIiAiICsgbi5jbGFzc05hbWUgKyAiICIpLnJlcGxhY2UoWCwgIiAiKSA6ICIgIikpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAg
d2hpbGUgKGkgPSB0W28rK10pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgMCA+IHIuaW5k
ZXhPZigiICIgKyBpICsgIiAiKSAmJiAociArPSBpICsgIiAiKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG4uY2xhc3NOYW1lID0gYi50cmltKHIpCi0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHJldHVybiB0aGlzCi0gICAgICAgIH0sCi0gICAgICAgIHJlbW92ZUNsYXNzOiBm
dW5jdGlvbihlKSB7Ci0gICAgICAgICAgICB2YXIgdCwKLSAgICAgICAgICAgICAgICBuLAotICAg
ICAgICAgICAgICAgIHIsCi0gICAgICAgICAgICAgICAgaSwKLSAgICAgICAgICAgICAgICBvLAot
ICAgICAgICAgICAgICAgIGEgPSAwLAotICAgICAgICAgICAgICAgIHMgPSB0aGlzLmxlbmd0aCwK
LSAgICAgICAgICAgICAgICB1ID0gMCA9PT0gYXJndW1lbnRzLmxlbmd0aCB8fCAic3RyaW5nIiA9
PSB0eXBlb2YgZSAmJiBlOwotICAgICAgICAgICAgaWYgKGIuaXNGdW5jdGlvbihlKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgYih0aGlzKS5yZW1vdmVDbGFzcyhlLmNhbGwodGhpcywgdCwgdGhpcy5jbGFzc05hbWUp
KQotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgaWYgKHUpCi0gICAgICAgICAgICAg
ICAgZm9yICh0ID0gKGUgfHwgIiIpLm1hdGNoKHcpIHx8IFtdOyBzID4gYTsgYSsrKQotICAgICAg
ICAgICAgICAgICAgICBpZiAobiA9IHRoaXNbYV0sIHIgPSAxID09PSBuLm5vZGVUeXBlICYmIChu
LmNsYXNzTmFtZSA/ICgiICIgKyBuLmNsYXNzTmFtZSArICIgIikucmVwbGFjZShYLCAiICIpIDog
IiIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvID0gMDsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHdoaWxlIChpID0gdFtvKytdKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdo
aWxlIChyLmluZGV4T2YoIiAiICsgaSArICIgIikgPj0gMCkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgciA9IHIucmVwbGFjZSgiICIgKyBpICsgIiAiLCAiICIpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgbi5jbGFzc05hbWUgPSBlID8gYi50cmltKHIpIDogIiIKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRoaXMKLSAgICAgICAgfSwKLSAgICAg
ICAgdG9nZ2xlQ2xhc3M6IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgIHZhciBuID0gdHlw
ZW9mIGUsCi0gICAgICAgICAgICAgICAgciA9ICJib29sZWFuIiA9PSB0eXBlb2YgdDsKLSAgICAg
ICAgICAgIHJldHVybiBiLmlzRnVuY3Rpb24oZSkgPyB0aGlzLmVhY2goZnVuY3Rpb24obikgewot
ICAgICAgICAgICAgICAgIGIodGhpcykudG9nZ2xlQ2xhc3MoZS5jYWxsKHRoaXMsIG4sIHRoaXMu
Y2xhc3NOYW1lLCB0KSwgdCkKLSAgICAgICAgICAgIH0pIDogdGhpcy5lYWNoKGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PT0gbikgewotICAgICAgICAgICAgICAg
ICAgICB2YXIgbywKLSAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAwLAotICAgICAgICAgICAg
ICAgICAgICAgICAgcyA9IGIodGhpcyksCi0gICAgICAgICAgICAgICAgICAgICAgICB1ID0gdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBlLm1hdGNoKHcpIHx8IFtdOwotICAgICAgICAg
ICAgICAgICAgICB3aGlsZSAobyA9IGxbYSsrXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHUg
PSByID8gdSA6ICFzLmhhc0NsYXNzKG8pLAotICAgICAgICAgICAgICAgICAgICAgICAgc1t1ID8g
ImFkZENsYXNzIiA6ICJyZW1vdmVDbGFzcyJdKG8pCi0gICAgICAgICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgIChuID09PSBpIHx8ICJib29sZWFuIiA9PT0gbikgJiYgKHRoaXMu
Y2xhc3NOYW1lICYmIGIuX2RhdGEodGhpcywgIl9fY2xhc3NOYW1lX18iLCB0aGlzLmNsYXNzTmFt
ZSksIHRoaXMuY2xhc3NOYW1lID0gdGhpcy5jbGFzc05hbWUgfHwgZSA9PT0gITEgPyAiIiA6IGIu
X2RhdGEodGhpcywgIl9fY2xhc3NOYW1lX18iKSB8fCAiIikKLSAgICAgICAgICAgIH0pCi0gICAg
ICAgIH0sCi0gICAgICAgIGhhc0NsYXNzOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICB2YXIg
dCA9ICIgIiArIGUgKyAiICIsCi0gICAgICAgICAgICAgICAgbiA9IDAsCi0gICAgICAgICAgICAg
ICAgciA9IHRoaXMubGVuZ3RoOwotICAgICAgICAgICAgZm9yICg7IHIgPiBuOyBuKyspCi0gICAg
ICAgICAgICAgICAgaWYgKDEgPT09IHRoaXNbbl0ubm9kZVR5cGUgJiYgKCIgIiArIHRoaXNbbl0u
Y2xhc3NOYW1lICsgIiAiKS5yZXBsYWNlKFgsICIgIikuaW5kZXhPZih0KSA+PSAwKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gITA7Ci0gICAgICAgICAgICByZXR1cm4gITEKLSAgICAgICAg
fSwKLSAgICAgICAgdmFsOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICB2YXIgbiwKLSAgICAg
ICAgICAgICAgICByLAotICAgICAgICAgICAgICAgIGksCi0gICAgICAgICAgICAgICAgbyA9IHRo
aXNbMF07Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5n
dGgpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBpID0gYi5pc0Z1bmN0aW9uKGUpLCB0aGlz
LmVhY2goZnVuY3Rpb24obikgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGIodGhpcyk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAxID09PSB0aGlzLm5vZGVUeXBlICYmIChvID0gaSA/IGUuY2FsbCh0aGlzLCBuLCBhLnZh
bCgpKSA6IGUsIG51bGwgPT0gbyA/IG8gPSAiIiA6ICJudW1iZXIiID09IHR5cGVvZiBvID8gbyAr
PSAiIiA6IGIuaXNBcnJheShvKSAmJiAobyA9IGIubWFwKG8sIGZ1bmN0aW9uKGUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBlID8gIiIgOiBlICsgIiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0pKSwgciA9IGIudmFsSG9va3NbdGhpcy50eXBlXSB8fCBi
LnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0sIHIgJiYgInNldCIgaW4gciAm
JiByLnNldCh0aGlzLCBvLCAidmFsdWUiKSAhPT0gdCB8fCAodGhpcy52YWx1ZSA9IG8pKQotICAg
ICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBpZiAobykKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHIgPSBiLnZhbEhvb2tzW28udHlwZV0gfHwgYi52YWxIb29rc1tvLm5v
ZGVOYW1lLnRvTG93ZXJDYXNlKCldLCByICYmICJnZXQiIGluIHIgJiYgKG4gPSByLmdldChvLCAi
dmFsdWUiKSkgIT09IHQgPyBuIDogKG4gPSBvLnZhbHVlLCAic3RyaW5nIiA9PSB0eXBlb2YgbiA/
IG4ucmVwbGFjZShVLCAiIikgOiBudWxsID09IG4gPyAiIiA6IG4pCi0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9KSwKLSAgICBiLmV4dGVuZCh7Ci0gICAgICAgIHZhbEhvb2tzOiB7Ci0g
ICAgICAgICAgICBvcHRpb246IHsKLSAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUpIHsK
LSAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLmF0dHJpYnV0ZXMudmFsdWU7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiAhdCB8fCB0LnNwZWNpZmllZCA/IGUudmFsdWUgOiBlLnRleHQK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgc2VsZWN0OiB7
Ci0gICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHZhciB0LAotICAgICAgICAgICAgICAgICAgICAgICAgbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHIgPSBlLm9wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICBpID0gZS5zZWxlY3Rl
ZEluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICJzZWxlY3Qtb25lIiA9PT0gZS50
eXBlIHx8IDAgPiBpLAotICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG8gPyBudWxsIDogW10s
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzID0gbyA/IGkgKyAxIDogci5sZW5ndGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICB1ID0gMCA+IGkgPyBzIDogbyA/IGkgOiAwOwotICAgICAgICAg
ICAgICAgICAgICBmb3IgKDsgcyA+IHU7IHUrKykKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChuID0gclt1XSwgISghbi5zZWxlY3RlZCAmJiB1ICE9PSBpIHx8IChiLnN1cHBvcnQub3B0RGlz
YWJsZWQgPyBuLmRpc2FibGVkIDogbnVsbCAhPT0gbi5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIikp
IHx8IG4ucGFyZW50Tm9kZS5kaXNhYmxlZCAmJiBiLm5vZGVOYW1lKG4ucGFyZW50Tm9kZSwgIm9w
dGdyb3VwIikpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBiKG4pLnZh
bCgpLCBvKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhLnB1c2godCkKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEKLSAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgIHNldDogZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAgICAgICAgICB2
YXIgbiA9IGIubWFrZUFycmF5KHQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gYihlKS5m
aW5kKCJvcHRpb24iKS5lYWNoKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy5zZWxlY3RlZCA9IGIuaW5BcnJheShiKHRoaXMpLnZhbCgpLCBuKSA+PSAwCi0gICAgICAg
ICAgICAgICAgICAgIH0pLCBuLmxlbmd0aCB8fCAoZS5zZWxlY3RlZEluZGV4ID0gLTEpLCBuCi0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICBhdHRy
OiBmdW5jdGlvbihlLCBuLCByKSB7Ci0gICAgICAgICAgICB2YXIgbywKLSAgICAgICAgICAgICAg
ICBhLAotICAgICAgICAgICAgICAgIHMsCi0gICAgICAgICAgICAgICAgdSA9IGUubm9kZVR5cGU7
Ci0gICAgICAgICAgICBpZiAoZSAmJiAzICE9PSB1ICYmIDggIT09IHUgJiYgMiAhPT0gdSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIGUuZ2V0QXR0cmlidXRlID09PSBpID8gYi5wcm9w
KGUsIG4sIHIpIDogKGEgPSAxICE9PSB1IHx8ICFiLmlzWE1MRG9jKGUpLCBhICYmIChuID0gbi50
b0xvd2VyQ2FzZSgpLCBvID0gYi5hdHRySG9va3Nbbl0gfHwgKEoudGVzdChuKSA/IHogOiBJKSks
IHIgPT09IHQgPyBvICYmIGEgJiYgImdldCIgaW4gbyAmJiBudWxsICE9PSAocyA9IG8uZ2V0KGUs
IG4pKSA/IHMgOiAodHlwZW9mIGUuZ2V0QXR0cmlidXRlICE9PSBpICYmIChzID0gZS5nZXRBdHRy
aWJ1dGUobikpLCBudWxsID09IHMgPyB0IDogcykgOiBudWxsICE9PSByID8gbyAmJiBhICYmICJz
ZXQiIGluIG8gJiYgKHMgPSBvLnNldChlLCByLCBuKSkgIT09IHQgPyBzIDogKGUuc2V0QXR0cmli
dXRlKG4sIHIgKyAiIiksIHIpIDogKGIucmVtb3ZlQXR0cihlLCBuKSwgdCkpCi0gICAgICAgIH0s
Ci0gICAgICAgIHJlbW92ZUF0dHI6IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgIHZhciBu
LAotICAgICAgICAgICAgICAgIHIsCi0gICAgICAgICAgICAgICAgaSA9IDAsCi0gICAgICAgICAg
ICAgICAgbyA9IHQgJiYgdC5tYXRjaCh3KTsKLSAgICAgICAgICAgIGlmIChvICYmIDEgPT09IGUu
bm9kZVR5cGUpCi0gICAgICAgICAgICAgICAgd2hpbGUgKG4gPSBvW2krK10pCi0gICAgICAgICAg
ICAgICAgICAgIHIgPSBiLnByb3BGaXhbbl0gfHwgbiwKLSAgICAgICAgICAgICAgICAgICAgSi50
ZXN0KG4pID8gIVEgJiYgRy50ZXN0KG4pID8gZVtiLmNhbWVsQ2FzZSgiZGVmYXVsdC0iICsgbild
ID0gZVtyXSA9ICExIDogZVtyXSA9ICExIDogYi5hdHRyKGUsIG4sICIiKSwKLSAgICAgICAgICAg
ICAgICAgICAgZS5yZW1vdmVBdHRyaWJ1dGUoUSA/IG4gOiByKQotICAgICAgICB9LAotICAgICAg
ICBhdHRySG9va3M6IHsKLSAgICAgICAgICAgIHR5cGU6IHsKLSAgICAgICAgICAgICAgICBzZXQ6
IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFiLnN1cHBvcnQucmFk
aW9WYWx1ZSAmJiAicmFkaW8iID09PSB0ICYmIGIubm9kZU5hbWUoZSwgImlucHV0IikpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS52YWx1ZTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBlLnNldEF0dHJpYnV0ZSgidHlwZSIsIHQpLCBuICYmIChlLnZhbHVlID0g
biksIHQKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgcHJvcEZpeDogewotICAgICAgICAgICAgdGFiaW5k
ZXg6ICJ0YWJJbmRleCIsCi0gICAgICAgICAgICByZWFkb25seTogInJlYWRPbmx5IiwKLSAgICAg
ICAgICAgICJmb3IiOiAiaHRtbEZvciIsCi0gICAgICAgICAgICAiY2xhc3MiOiAiY2xhc3NOYW1l
IiwKLSAgICAgICAgICAgIG1heGxlbmd0aDogIm1heExlbmd0aCIsCi0gICAgICAgICAgICBjZWxs
c3BhY2luZzogImNlbGxTcGFjaW5nIiwKLSAgICAgICAgICAgIGNlbGxwYWRkaW5nOiAiY2VsbFBh
ZGRpbmciLAotICAgICAgICAgICAgcm93c3BhbjogInJvd1NwYW4iLAotICAgICAgICAgICAgY29s
c3BhbjogImNvbFNwYW4iLAotICAgICAgICAgICAgdXNlbWFwOiAidXNlTWFwIiwKLSAgICAgICAg
ICAgIGZyYW1lYm9yZGVyOiAiZnJhbWVCb3JkZXIiLAotICAgICAgICAgICAgY29udGVudGVkaXRh
YmxlOiAiY29udGVudEVkaXRhYmxlIgotICAgICAgICB9LAotICAgICAgICBwcm9wOiBmdW5jdGlv
bihlLCBuLCByKSB7Ci0gICAgICAgICAgICB2YXIgaSwKLSAgICAgICAgICAgICAgICBvLAotICAg
ICAgICAgICAgICAgIGEsCi0gICAgICAgICAgICAgICAgcyA9IGUubm9kZVR5cGU7Ci0gICAgICAg
ICAgICBpZiAoZSAmJiAzICE9PSBzICYmIDggIT09IHMgJiYgMiAhPT0gcykKLSAgICAgICAgICAg
ICAgICByZXR1cm4gYSA9IDEgIT09IHMgfHwgIWIuaXNYTUxEb2MoZSksIGEgJiYgKG4gPSBiLnBy
b3BGaXhbbl0gfHwgbiwgbyA9IGIucHJvcEhvb2tzW25dKSwgciAhPT0gdCA/IG8gJiYgInNldCIg
aW4gbyAmJiAoaSA9IG8uc2V0KGUsIHIsIG4pKSAhPT0gdCA/IGkgOiBlW25dID0gciA6IG8gJiYg
ImdldCIgaW4gbyAmJiBudWxsICE9PSAoaSA9IG8uZ2V0KGUsIG4pKSA/IGkgOiBlW25dCi0gICAg
ICAgIH0sCi0gICAgICAgIHByb3BIb29rczogewotICAgICAgICAgICAgdGFiSW5kZXg6IHsKLSAg
ICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFy
IG4gPSBlLmdldEF0dHJpYnV0ZU5vZGUoInRhYmluZGV4Iik7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBuICYmIG4uc3BlY2lmaWVkID8gcGFyc2VJbnQobi52YWx1ZSwgMTApIDogVi50ZXN0
KGUubm9kZU5hbWUpIHx8IFkudGVzdChlLm5vZGVOYW1lKSAmJiBlLmhyZWYgPyAwIDogdAotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0pLAotICAgIHog
PSB7Ci0gICAgICAgIGdldDogZnVuY3Rpb24oZSwgbikgewotICAgICAgICAgICAgdmFyIHIgPSBi
LnByb3AoZSwgbiksCi0gICAgICAgICAgICAgICAgaSA9ICJib29sZWFuIiA9PSB0eXBlb2YgciAm
JiBlLmdldEF0dHJpYnV0ZShuKSwKLSAgICAgICAgICAgICAgICBvID0gImJvb2xlYW4iID09IHR5
cGVvZiByID8gSyAmJiBRID8gbnVsbCAhPSBpIDogRy50ZXN0KG4pID8gZVtiLmNhbWVsQ2FzZSgi
ZGVmYXVsdC0iICsgbildIDogISFpIDogZS5nZXRBdHRyaWJ1dGVOb2RlKG4pOwotICAgICAgICAg
ICAgcmV0dXJuIG8gJiYgby52YWx1ZSAhPT0gITEgPyBuLnRvTG93ZXJDYXNlKCkgOiB0Ci0gICAg
ICAgIH0sCi0gICAgICAgIHNldDogZnVuY3Rpb24oZSwgdCwgbikgewotICAgICAgICAgICAgcmV0
dXJuIHQgPT09ICExID8gYi5yZW1vdmVBdHRyKGUsIG4pIDogSyAmJiBRIHx8ICFHLnRlc3Qobikg
PyBlLnNldEF0dHJpYnV0ZSghUSAmJiBiLnByb3BGaXhbbl0gfHwgbiwgbikgOiBlW2IuY2FtZWxD
YXNlKCJkZWZhdWx0LSIgKyBuKV0gPSBlW25dID0gITAsIG4KLSAgICAgICAgfQotICAgIH0sCi0g
ICAgSyAmJiBRIHx8IChiLmF0dHJIb29rcy52YWx1ZSA9IHsKLSAgICAgICAgZ2V0OiBmdW5jdGlv
bihlLCBuKSB7Ci0gICAgICAgICAgICB2YXIgciA9IGUuZ2V0QXR0cmlidXRlTm9kZShuKTsKLSAg
ICAgICAgICAgIHJldHVybiBiLm5vZGVOYW1lKGUsICJpbnB1dCIpID8gZS5kZWZhdWx0VmFsdWUg
OiByICYmIHIuc3BlY2lmaWVkID8gci52YWx1ZSA6IHQKLSAgICAgICAgfSwKLSAgICAgICAgc2V0
OiBmdW5jdGlvbihlLCBuLCByKSB7Ci0gICAgICAgICAgICByZXR1cm4gYi5ub2RlTmFtZShlLCAi
aW5wdXQiKSA/IChlLmRlZmF1bHRWYWx1ZSA9IG4sIHQpIDogSSAmJiBJLnNldChlLCBuLCByKQot
ICAgICAgICB9Ci0gICAgfSksCi0gICAgUSB8fCAoSSA9IGIudmFsSG9va3MuYnV0dG9uID0gewot
ICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUsIG4pIHsKLSAgICAgICAgICAgIHZhciByID0gZS5nZXRB
dHRyaWJ1dGVOb2RlKG4pOwotICAgICAgICAgICAgcmV0dXJuIHIgJiYgKCJpZCIgPT09IG4gfHwg
Im5hbWUiID09PSBuIHx8ICJjb29yZHMiID09PSBuID8gIiIgIT09IHIudmFsdWUgOiByLnNwZWNp
ZmllZCkgPyByLnZhbHVlIDogdAotICAgICAgICB9LAotICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUs
IG4sIHIpIHsKLSAgICAgICAgICAgIHZhciBpID0gZS5nZXRBdHRyaWJ1dGVOb2RlKHIpOwotICAg
ICAgICAgICAgcmV0dXJuIGkgfHwgZS5zZXRBdHRyaWJ1dGVOb2RlKGkgPSBlLm93bmVyRG9jdW1l
bnQuY3JlYXRlQXR0cmlidXRlKHIpKSwgaS52YWx1ZSA9IG4gKz0gIiIsICJ2YWx1ZSIgPT09IHIg
fHwgbiA9PT0gZS5nZXRBdHRyaWJ1dGUocikgPyBuIDogdAotICAgICAgICB9Ci0gICAgfSwgYi5h
dHRySG9va3MuY29udGVudGVkaXRhYmxlID0gewotICAgICAgICBnZXQ6IEkuZ2V0LAotICAgICAg
ICBzZXQ6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKLSAgICAgICAgICAgIEkuc2V0KGUsICIiID09PSB0
ID8gITEgOiB0LCBuKQotICAgICAgICB9Ci0gICAgfSwgYi5lYWNoKFsid2lkdGgiLCAiaGVpZ2h0
Il0sIGZ1bmN0aW9uKGUsIG4pIHsKLSAgICAgICAgYi5hdHRySG9va3Nbbl0gPSBiLmV4dGVuZChi
LmF0dHJIb29rc1tuXSwgewotICAgICAgICAgICAgc2V0OiBmdW5jdGlvbihlLCByKSB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuICIiID09PSByID8gKGUuc2V0QXR0cmlidXRlKG4sICJhdXRvIiks
IHIpIDogdAotICAgICAgICAgICAgfQotICAgICAgICB9KQotICAgIH0pKSwKLSAgICBiLnN1cHBv
cnQuaHJlZk5vcm1hbGl6ZWQgfHwgKGIuZWFjaChbImhyZWYiLCAic3JjIiwgIndpZHRoIiwgImhl
aWdodCJdLCBmdW5jdGlvbihlLCBuKSB7Ci0gICAgICAgIGIuYXR0ckhvb2tzW25dID0gYi5leHRl
bmQoYi5hdHRySG9va3Nbbl0sIHsKLSAgICAgICAgICAgIGdldDogZnVuY3Rpb24oZSkgewotICAg
ICAgICAgICAgICAgIHZhciByID0gZS5nZXRBdHRyaWJ1dGUobiwgMik7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGwgPT0gciA/IHQgOiByCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0pCi0g
ICAgfSksIGIuZWFjaChbImhyZWYiLCAic3JjIl0sIGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAg
Yi5wcm9wSG9va3NbdF0gPSB7Ci0gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUpIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZS5nZXRBdHRyaWJ1dGUodCwgNCkKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0pKSwKLSAgICBiLnN1cHBvcnQuc3R5bGUgfHwgKGIuYXR0ckhvb2tzLnN0
eWxlID0gewotICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHJldHVybiBl
LnN0eWxlLmNzc1RleHQgfHwgdAotICAgICAgICB9LAotICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUs
IHQpIHsKLSAgICAgICAgICAgIHJldHVybiBlLnN0eWxlLmNzc1RleHQgPSB0ICsgIiIKLSAgICAg
ICAgfQotICAgIH0pLAotICAgIGIuc3VwcG9ydC5vcHRTZWxlY3RlZCB8fCAoYi5wcm9wSG9va3Mu
c2VsZWN0ZWQgPSBiLmV4dGVuZChiLnByb3BIb29rcy5zZWxlY3RlZCwgewotICAgICAgICBnZXQ6
IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHZhciB0ID0gZS5wYXJlbnROb2RlOwotICAgICAg
ICAgICAgcmV0dXJuIHQgJiYgKHQuc2VsZWN0ZWRJbmRleCwgdC5wYXJlbnROb2RlICYmIHQucGFy
ZW50Tm9kZS5zZWxlY3RlZEluZGV4KSwgbnVsbAotICAgICAgICB9Ci0gICAgfSkpLAotICAgIGIu
c3VwcG9ydC5lbmN0eXBlIHx8IChiLnByb3BGaXguZW5jdHlwZSA9ICJlbmNvZGluZyIpLAotICAg
IGIuc3VwcG9ydC5jaGVja09uIHx8IGIuZWFjaChbInJhZGlvIiwgImNoZWNrYm94Il0sIGZ1bmN0
aW9uKCkgewotICAgICAgICBiLnZhbEhvb2tzW3RoaXNdID0gewotICAgICAgICAgICAgZ2V0OiBm
dW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IGUuZ2V0QXR0cmli
dXRlKCJ2YWx1ZSIpID8gIm9uIiA6IGUudmFsdWUKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgIH0pLAotICAgIGIuZWFjaChbInJhZGlvIiwgImNoZWNrYm94Il0sIGZ1bmN0aW9uKCkgewot
ICAgICAgICBiLnZhbEhvb2tzW3RoaXNdID0gYi5leHRlbmQoYi52YWxIb29rc1t0aGlzXSwgewot
ICAgICAgICAgICAgc2V0OiBmdW5jdGlvbihlLCBuKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGIuaXNBcnJheShuKSA/IGUuY2hlY2tlZCA9IGIuaW5BcnJheShiKGUpLnZhbCgpLCBuKSA+PSAw
IDogdAotICAgICAgICAgICAgfQotICAgICAgICB9KQotICAgIH0pOwotICAgIHZhciBaID0gL14o
PzppbnB1dHxzZWxlY3R8dGV4dGFyZWEpJC9pLAotICAgICAgICBldCA9IC9ea2V5LywKLSAgICAg
ICAgdHQgPSAvXig/Om1vdXNlfGNvbnRleHRtZW51KXxjbGljay8sCi0gICAgICAgIG50ID0gL14o
Pzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLAotICAgICAgICBydCA9IC9eKFteLl0qKSg/
OlwuKC4rKXwpJC87Ci0gICAgZnVuY3Rpb24gaXQoKSB7Ci0gICAgICAgIHJldHVybiAhMAotICAg
IH0KLSAgICBmdW5jdGlvbiBvdCgpIHsKLSAgICAgICAgcmV0dXJuICExCi0gICAgfQotICAgIGIu
ZXZlbnQgPSB7Ci0gICAgICAgIGdsb2JhbDoge30sCi0gICAgICAgIGFkZDogZnVuY3Rpb24oZSwg
biwgciwgbywgYSkgewotICAgICAgICAgICAgdmFyIHMsCi0gICAgICAgICAgICAgICAgdSwKLSAg
ICAgICAgICAgICAgICBsLAotICAgICAgICAgICAgICAgIGMsCi0gICAgICAgICAgICAgICAgcCwK
LSAgICAgICAgICAgICAgICBmLAotICAgICAgICAgICAgICAgIGQsCi0gICAgICAgICAgICAgICAg
aCwKLSAgICAgICAgICAgICAgICBnLAotICAgICAgICAgICAgICAgIG0sCi0gICAgICAgICAgICAg
ICAgeSwKLSAgICAgICAgICAgICAgICB2ID0gYi5fZGF0YShlKTsKLSAgICAgICAgICAgIGlmICh2
KSB7Ci0gICAgICAgICAgICAgICAgci5oYW5kbGVyICYmIChjID0gciwgciA9IGMuaGFuZGxlciwg
YSA9IGMuc2VsZWN0b3IpLAotICAgICAgICAgICAgICAgIHIuZ3VpZCB8fCAoci5ndWlkID0gYi5n
dWlkKyspLAotICAgICAgICAgICAgICAgICh1ID0gdi5ldmVudHMpIHx8ICh1ID0gdi5ldmVudHMg
PSB7fSksCi0gICAgICAgICAgICAgICAgKGYgPSB2LmhhbmRsZSkgfHwgKGYgPSB2LmhhbmRsZSA9
IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBiID09PSBp
IHx8IGUgJiYgYi5ldmVudC50cmlnZ2VyZWQgPT09IGUudHlwZSA/IHQgOiBiLmV2ZW50LmRpc3Bh
dGNoLmFwcGx5KGYuZWxlbSwgYXJndW1lbnRzKQotICAgICAgICAgICAgICAgIH0sIGYuZWxlbSA9
IGUpLAotICAgICAgICAgICAgICAgIG4gPSAobiB8fCAiIikubWF0Y2godykgfHwgWyIiXSwKLSAg
ICAgICAgICAgICAgICBsID0gbi5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGwtLSkK
LSAgICAgICAgICAgICAgICAgICAgcyA9IHJ0LmV4ZWMobltsXSkgfHwgW10sCi0gICAgICAgICAg
ICAgICAgICAgIGcgPSB5ID0gc1sxXSwKLSAgICAgICAgICAgICAgICAgICAgbSA9IChzWzJdIHx8
ICIiKS5zcGxpdCgiLiIpLnNvcnQoKSwKLSAgICAgICAgICAgICAgICAgICAgcCA9IGIuZXZlbnQu
c3BlY2lhbFtnXSB8fCB7fSwKLSAgICAgICAgICAgICAgICAgICAgZyA9IChhID8gcC5kZWxlZ2F0
ZVR5cGUgOiBwLmJpbmRUeXBlKSB8fCBnLAotICAgICAgICAgICAgICAgICAgICBwID0gYi5ldmVu
dC5zcGVjaWFsW2ddIHx8IHt9LAotICAgICAgICAgICAgICAgICAgICBkID0gYi5leHRlbmQoewot
ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZywKLSAgICAgICAgICAgICAgICAgICAgICAg
IG9yaWdUeXBlOiB5LAotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogbywKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGhhbmRsZXI6IHIsCi0gICAgICAgICAgICAgICAgICAgICAgICBndWlk
OiByLmd1aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcjogYSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG5lZWRzQ29udGV4dDogYSAmJiBiLmV4cHIubWF0Y2gubmVlZHNDb250
ZXh0LnRlc3QoYSksCi0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2U6IG0uam9pbigi
LiIpCi0gICAgICAgICAgICAgICAgICAgIH0sIGMpLAotICAgICAgICAgICAgICAgICAgICAoaCA9
IHVbZ10pIHx8IChoID0gdVtnXSA9IFtdLCBoLmRlbGVnYXRlQ291bnQgPSAwLCBwLnNldHVwICYm
IHAuc2V0dXAuY2FsbChlLCBvLCBtLCBmKSAhPT0gITEgfHwgKGUuYWRkRXZlbnRMaXN0ZW5lciA/
IGUuYWRkRXZlbnRMaXN0ZW5lcihnLCBmLCAhMSkgOiBlLmF0dGFjaEV2ZW50ICYmIGUuYXR0YWNo
RXZlbnQoIm9uIiArIGcsIGYpKSksCi0gICAgICAgICAgICAgICAgICAgIHAuYWRkICYmIChwLmFk
ZC5jYWxsKGUsIGQpLCBkLmhhbmRsZXIuZ3VpZCB8fCAoZC5oYW5kbGVyLmd1aWQgPSByLmd1aWQp
KSwKLSAgICAgICAgICAgICAgICAgICAgYSA/IGguc3BsaWNlKGguZGVsZWdhdGVDb3VudCsrLCAw
LCBkKSA6IGgucHVzaChkKSwKLSAgICAgICAgICAgICAgICAgICAgYi5ldmVudC5nbG9iYWxbZ10g
PSAhMDsKLSAgICAgICAgICAgICAgICBlID0gbnVsbAotICAgICAgICAgICAgfQotICAgICAgICB9
LAotICAgICAgICByZW1vdmU6IGZ1bmN0aW9uKGUsIHQsIG4sIHIsIGkpIHsKLSAgICAgICAgICAg
IHZhciBvLAotICAgICAgICAgICAgICAgIGEsCi0gICAgICAgICAgICAgICAgcywKLSAgICAgICAg
ICAgICAgICB1LAotICAgICAgICAgICAgICAgIGwsCi0gICAgICAgICAgICAgICAgYywKLSAgICAg
ICAgICAgICAgICBwLAotICAgICAgICAgICAgICAgIGYsCi0gICAgICAgICAgICAgICAgZCwKLSAg
ICAgICAgICAgICAgICBoLAotICAgICAgICAgICAgICAgIGcsCi0gICAgICAgICAgICAgICAgbSA9
IGIuaGFzRGF0YShlKSAmJiBiLl9kYXRhKGUpOwotICAgICAgICAgICAgaWYgKG0gJiYgKGMgPSBt
LmV2ZW50cykpIHsKLSAgICAgICAgICAgICAgICB0ID0gKHQgfHwgIiIpLm1hdGNoKHcpIHx8IFsi
Il0sCi0gICAgICAgICAgICAgICAgbCA9IHQubGVuZ3RoOwotICAgICAgICAgICAgICAgIHdoaWxl
IChsLS0pCi0gICAgICAgICAgICAgICAgICAgIGlmIChzID0gcnQuZXhlYyh0W2xdKSB8fCBbXSwg
ZCA9IGcgPSBzWzFdLCBoID0gKHNbMl0gfHwgIiIpLnNwbGl0KCIuIikuc29ydCgpLCBkKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBwID0gYi5ldmVudC5zcGVjaWFsW2RdIHx8IHt9LAotICAg
ICAgICAgICAgICAgICAgICAgICAgZCA9IChyID8gcC5kZWxlZ2F0ZVR5cGUgOiBwLmJpbmRUeXBl
KSB8fCBkLAotICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGNbZF0gfHwgW10sCi0gICAgICAg
ICAgICAgICAgICAgICAgICBzID0gc1syXSAmJiBSZWdFeHAoIihefFxcLikiICsgaC5qb2luKCJc
XC4oPzouKlxcLnwpIikgKyAiKFxcLnwkKSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgdSA9
IG8gPSBmLmxlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChvLS0pCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGZbb10sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIWkgJiYgZyAhPT0gYS5vcmlnVHlwZSB8fCBuICYmIG4uZ3VpZCAhPT0gYS5ndWlkIHx8
IHMgJiYgIXMudGVzdChhLm5hbWVzcGFjZSkgfHwgciAmJiByICE9PSBhLnNlbGVjdG9yICYmICgi
KioiICE9PSByIHx8ICFhLnNlbGVjdG9yKSB8fCAoZi5zcGxpY2UobywgMSksIGEuc2VsZWN0b3Ig
JiYgZi5kZWxlZ2F0ZUNvdW50LS0sIHAucmVtb3ZlICYmIHAucmVtb3ZlLmNhbGwoZSwgYSkpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgdSAmJiAhZi5sZW5ndGggJiYgKHAudGVhcmRvd24gJiYg
cC50ZWFyZG93bi5jYWxsKGUsIGgsIG0uaGFuZGxlKSAhPT0gITEgfHwgYi5yZW1vdmVFdmVudChl
LCBkLCBtLmhhbmRsZSksIGRlbGV0ZSBjW2RdKQotICAgICAgICAgICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZCBpbiBjKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGIuZXZlbnQucmVtb3ZlKGUsIGQgKyB0W2xdLCBuLCByLCAhMCk7Ci0gICAgICAg
ICAgICAgICAgYi5pc0VtcHR5T2JqZWN0KGMpICYmIChkZWxldGUgbS5oYW5kbGUsIGIuX3JlbW92
ZURhdGEoZSwgImV2ZW50cyIpKQotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICB0
cmlnZ2VyOiBmdW5jdGlvbihuLCByLCBpLCBhKSB7Ci0gICAgICAgICAgICB2YXIgcywKLSAgICAg
ICAgICAgICAgICB1LAotICAgICAgICAgICAgICAgIGwsCi0gICAgICAgICAgICAgICAgYywKLSAg
ICAgICAgICAgICAgICBwLAotICAgICAgICAgICAgICAgIGYsCi0gICAgICAgICAgICAgICAgZCwK
LSAgICAgICAgICAgICAgICBoID0gW2kgfHwgb10sCi0gICAgICAgICAgICAgICAgZyA9IHkuY2Fs
bChuLCAidHlwZSIpID8gbi50eXBlIDogbiwKLSAgICAgICAgICAgICAgICBtID0geS5jYWxsKG4s
ICJuYW1lc3BhY2UiKSA/IG4ubmFtZXNwYWNlLnNwbGl0KCIuIikgOiBbXTsKLSAgICAgICAgICAg
IGlmIChsID0gZiA9IGkgPSBpIHx8IG8sIDMgIT09IGkubm9kZVR5cGUgJiYgOCAhPT0gaS5ub2Rl
VHlwZSAmJiAhbnQudGVzdChnICsgYi5ldmVudC50cmlnZ2VyZWQpICYmIChnLmluZGV4T2YoIi4i
KSA+PSAwICYmIChtID0gZy5zcGxpdCgiLiIpLCBnID0gbS5zaGlmdCgpLCBtLnNvcnQoKSksIHUg
PSAwID4gZy5pbmRleE9mKCI6IikgJiYgIm9uIiArIGcsIG4gPSBuW2IuZXhwYW5kb10gPyBuIDog
bmV3IGIuRXZlbnQoZywgIm9iamVjdCIgPT0gdHlwZW9mIG4gJiYgbiksIG4uaXNUcmlnZ2VyID0g
ITAsIG4ubmFtZXNwYWNlID0gbS5qb2luKCIuIiksIG4ubmFtZXNwYWNlX3JlID0gbi5uYW1lc3Bh
Y2UgPyBSZWdFeHAoIihefFxcLikiICsgbS5qb2luKCJcXC4oPzouKlxcLnwpIikgKyAiKFxcLnwk
KSIpIDogbnVsbCwgbi5yZXN1bHQgPSB0LCBuLnRhcmdldCB8fCAobi50YXJnZXQgPSBpKSwgciA9
IG51bGwgPT0gciA/IFtuXSA6IGIubWFrZUFycmF5KHIsIFtuXSksIHAgPSBiLmV2ZW50LnNwZWNp
YWxbZ10gfHwge30sIGEgfHwgIXAudHJpZ2dlciB8fCBwLnRyaWdnZXIuYXBwbHkoaSwgcikgIT09
ICExKSkgewotICAgICAgICAgICAgICAgIGlmICghYSAmJiAhcC5ub0J1YmJsZSAmJiAhYi5pc1dp
bmRvdyhpKSkgewotICAgICAgICAgICAgICAgICAgICBmb3IgKGMgPSBwLmRlbGVnYXRlVHlwZSB8
fCBnLCBudC50ZXN0KGMgKyBnKSB8fCAobCA9IGwucGFyZW50Tm9kZSk7IGw7IGwgPSBsLnBhcmVu
dE5vZGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBoLnB1c2gobCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICBmID0gbDsKLSAgICAgICAgICAgICAgICAgICAgZiA9PT0gKGkub3duZXJEb2N1
bWVudCB8fCBvKSAmJiBoLnB1c2goZi5kZWZhdWx0VmlldyB8fCBmLnBhcmVudFdpbmRvdyB8fCBl
KQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkID0gMDsKLSAgICAgICAgICAg
ICAgICB3aGlsZSAoKGwgPSBoW2QrK10pICYmICFuLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpCi0g
ICAgICAgICAgICAgICAgICAgIG4udHlwZSA9IGQgPiAxID8gYyA6IHAuYmluZFR5cGUgfHwgZywK
LSAgICAgICAgICAgICAgICAgICAgcyA9IChiLl9kYXRhKGwsICJldmVudHMiKSB8fCB7fSlbbi50
eXBlXSAmJiBiLl9kYXRhKGwsICJoYW5kbGUiKSwKLSAgICAgICAgICAgICAgICAgICAgcyAmJiBz
LmFwcGx5KGwsIHIpLAotICAgICAgICAgICAgICAgICAgICBzID0gdSAmJiBsW3VdLAotICAgICAg
ICAgICAgICAgICAgICBzICYmIGIuYWNjZXB0RGF0YShsKSAmJiBzLmFwcGx5ICYmIHMuYXBwbHko
bCwgcikgPT09ICExICYmIG4ucHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgICAgICAgICBpZiAo
bi50eXBlID0gZywgIShhIHx8IG4uaXNEZWZhdWx0UHJldmVudGVkKCkgfHwgcC5fZGVmYXVsdCAm
JiBwLl9kZWZhdWx0LmFwcGx5KGkub3duZXJEb2N1bWVudCwgcikgIT09ICExIHx8ICJjbGljayIg
PT09IGcgJiYgYi5ub2RlTmFtZShpLCAiYSIpIHx8ICFiLmFjY2VwdERhdGEoaSkgfHwgIXUgfHwg
IWlbZ10gfHwgYi5pc1dpbmRvdyhpKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgZiA9IGlbdV0s
Ci0gICAgICAgICAgICAgICAgICAgIGYgJiYgKGlbdV0gPSBudWxsKSwKLSAgICAgICAgICAgICAg
ICAgICAgYi5ldmVudC50cmlnZ2VyZWQgPSBnOwotICAgICAgICAgICAgICAgICAgICB0cnkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgaVtnXSgpCi0gICAgICAgICAgICAgICAgICAgIH0gY2F0
Y2ggKHYpIHt9Ci0gICAgICAgICAgICAgICAgICAgIGIuZXZlbnQudHJpZ2dlcmVkID0gdCwKLSAg
ICAgICAgICAgICAgICAgICAgZiAmJiAoaVt1XSA9IGYpCi0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIHJldHVybiBuLnJlc3VsdAotICAgICAgICAgICAgfQotICAgICAgICB9LAot
ICAgICAgICBkaXNwYXRjaDogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgZSA9IGIuZXZlbnQu
Zml4KGUpOwotICAgICAgICAgICAgdmFyIG4sCi0gICAgICAgICAgICAgICAgciwKLSAgICAgICAg
ICAgICAgICBpLAotICAgICAgICAgICAgICAgIG8sCi0gICAgICAgICAgICAgICAgYSwKLSAgICAg
ICAgICAgICAgICBzID0gW10sCi0gICAgICAgICAgICAgICAgdSA9IGguY2FsbChhcmd1bWVudHMp
LAotICAgICAgICAgICAgICAgIGwgPSAoYi5fZGF0YSh0aGlzLCAiZXZlbnRzIikgfHwge30pW2Uu
dHlwZV0gfHwgW10sCi0gICAgICAgICAgICAgICAgYyA9IGIuZXZlbnQuc3BlY2lhbFtlLnR5cGVd
IHx8IHt9OwotICAgICAgICAgICAgaWYgKHVbMF0gPSBlLCBlLmRlbGVnYXRlVGFyZ2V0ID0gdGhp
cywgIWMucHJlRGlzcGF0Y2ggfHwgYy5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsIGUpICE9PSAhMSkg
ewotICAgICAgICAgICAgICAgIHMgPSBiLmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcywgZSwgbCks
Ci0gICAgICAgICAgICAgICAgbiA9IDA7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKChvID0gc1tu
KytdKSAmJiAhZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGUuY3VycmVudFRhcmdldCA9IG8uZWxlbSwKLSAgICAgICAgICAgICAgICAgICAgYSA9IDA7Ci0g
ICAgICAgICAgICAgICAgICAgIHdoaWxlICgoaSA9IG8uaGFuZGxlcnNbYSsrXSkgJiYgIWUuaXNJ
bW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICgh
ZS5uYW1lc3BhY2VfcmUgfHwgZS5uYW1lc3BhY2VfcmUudGVzdChpLm5hbWVzcGFjZSkpICYmIChl
LmhhbmRsZU9iaiA9IGksIGUuZGF0YSA9IGkuZGF0YSwgciA9ICgoYi5ldmVudC5zcGVjaWFsW2ku
b3JpZ1R5cGVdIHx8IHt9KS5oYW5kbGUgfHwgaS5oYW5kbGVyKS5hcHBseShvLmVsZW0sIHUpLCBy
ICE9PSB0ICYmIChlLnJlc3VsdCA9IHIpID09PSAhMSAmJiAoZS5wcmV2ZW50RGVmYXVsdCgpLCBl
LnN0b3BQcm9wYWdhdGlvbigpKSkKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGMucG9zdERpc3BhdGNoICYmIGMucG9zdERpc3BhdGNoLmNhbGwodGhpcywgZSksIGUu
cmVzdWx0Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgIGhhbmRsZXJzOiBmdW5j
dGlvbihlLCBuKSB7Ci0gICAgICAgICAgICB2YXIgciwKLSAgICAgICAgICAgICAgICBpLAotICAg
ICAgICAgICAgICAgIG8sCi0gICAgICAgICAgICAgICAgYSwKLSAgICAgICAgICAgICAgICBzID0g
W10sCi0gICAgICAgICAgICAgICAgdSA9IG4uZGVsZWdhdGVDb3VudCwKLSAgICAgICAgICAgICAg
ICBsID0gZS50YXJnZXQ7Ci0gICAgICAgICAgICBpZiAodSAmJiBsLm5vZGVUeXBlICYmICghZS5i
dXR0b24gfHwgImNsaWNrIiAhPT0gZS50eXBlKSkKLSAgICAgICAgICAgICAgICBmb3IgKDsgbCAh
PSB0aGlzOyBsID0gbC5wYXJlbnROb2RlIHx8IHRoaXMpCi0gICAgICAgICAgICAgICAgICAgIGlm
ICgxID09PSBsLm5vZGVUeXBlICYmIChsLmRpc2FibGVkICE9PSAhMCB8fCAiY2xpY2siICE9PSBl
LnR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG8gPSBbXSwgYSA9IDA7IHUg
PiBhOyBhKyspCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG5bYV0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgciA9IGkuc2VsZWN0b3IgKyAiICIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb1tyXSA9PT0gdCAmJiAob1tyXSA9IGkubmVlZHNDb250ZXh0ID8gYihy
LCB0aGlzKS5pbmRleChsKSA+PSAwIDogYi5maW5kKHIsIHRoaXMsIG51bGwsIFtsXSkubGVuZ3Ro
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvW3JdICYmIG8ucHVzaChpKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG8ubGVuZ3RoICYmIHMucHVzaCh7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWxlbTogbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVy
czogbwotICAgICAgICAgICAgICAgICAgICAgICAgfSkKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgcmV0dXJuIG4ubGVuZ3RoID4gdSAmJiBzLnB1c2goewotICAgICAgICAgICAg
ICAgIGVsZW06IHRoaXMsCi0gICAgICAgICAgICAgICAgaGFuZGxlcnM6IG4uc2xpY2UodSkKLSAg
ICAgICAgICAgIH0pLCBzCi0gICAgICAgIH0sCi0gICAgICAgIGZpeDogZnVuY3Rpb24oZSkgewot
ICAgICAgICAgICAgaWYgKGVbYi5leHBhbmRvXSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZTsK
LSAgICAgICAgICAgIHZhciB0LAotICAgICAgICAgICAgICAgIG4sCi0gICAgICAgICAgICAgICAg
ciwKLSAgICAgICAgICAgICAgICBpID0gZS50eXBlLAotICAgICAgICAgICAgICAgIGEgPSBlLAot
ICAgICAgICAgICAgICAgIHMgPSB0aGlzLmZpeEhvb2tzW2ldOwotICAgICAgICAgICAgcyB8fCAo
dGhpcy5maXhIb29rc1tpXSA9IHMgPSB0dC50ZXN0KGkpID8gdGhpcy5tb3VzZUhvb2tzIDogZXQu
dGVzdChpKSA/IHRoaXMua2V5SG9va3MgOiB7fSksCi0gICAgICAgICAgICByID0gcy5wcm9wcyA/
IHRoaXMucHJvcHMuY29uY2F0KHMucHJvcHMpIDogdGhpcy5wcm9wcywKLSAgICAgICAgICAgIGUg
PSBuZXcgYi5FdmVudChhKSwKLSAgICAgICAgICAgIHQgPSByLmxlbmd0aDsKLSAgICAgICAgICAg
IHdoaWxlICh0LS0pCi0gICAgICAgICAgICAgICAgbiA9IHJbdF0sCi0gICAgICAgICAgICAgICAg
ZVtuXSA9IGFbbl07Ci0gICAgICAgICAgICByZXR1cm4gZS50YXJnZXQgfHwgKGUudGFyZ2V0ID0g
YS5zcmNFbGVtZW50IHx8IG8pLCAzID09PSBlLnRhcmdldC5ub2RlVHlwZSAmJiAoZS50YXJnZXQg
PSBlLnRhcmdldC5wYXJlbnROb2RlKSwgZS5tZXRhS2V5ID0gISFlLm1ldGFLZXksIHMuZmlsdGVy
ID8gcy5maWx0ZXIoZSwgYSkgOiBlCi0gICAgICAgIH0sCi0gICAgICAgIHByb3BzOiAiYWx0S2V5
IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZXZlbnRQaGFzZSBtZXRh
S2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNoIi5z
cGxpdCgiICIpLAotICAgICAgICBmaXhIb29rczoge30sCi0gICAgICAgIGtleUhvb2tzOiB7Ci0g
ICAgICAgICAgICBwcm9wczogImNoYXIgY2hhckNvZGUga2V5IGtleUNvZGUiLnNwbGl0KCIgIiks
Ci0gICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbCA9PSBlLndoaWNoICYmIChlLndoaWNoID0gbnVsbCAhPSB0LmNoYXJDb2RlID8g
dC5jaGFyQ29kZSA6IHQua2V5Q29kZSksIGUKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAg
ICAgICAgbW91c2VIb29rczogewotICAgICAgICAgICAgcHJvcHM6ICJidXR0b24gYnV0dG9ucyBj
bGllbnRYIGNsaWVudFkgZnJvbUVsZW1lbnQgb2Zmc2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHNj
cmVlblggc2NyZWVuWSB0b0VsZW1lbnQiLnNwbGl0KCIgIiksCi0gICAgICAgICAgICBmaWx0ZXI6
IGZ1bmN0aW9uKGUsIG4pIHsKLSAgICAgICAgICAgICAgICB2YXIgciwKLSAgICAgICAgICAgICAg
ICAgICAgaSwKLSAgICAgICAgICAgICAgICAgICAgYSwKLSAgICAgICAgICAgICAgICAgICAgcyA9
IG4uYnV0dG9uLAotICAgICAgICAgICAgICAgICAgICB1ID0gbi5mcm9tRWxlbWVudDsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBlLnBhZ2VYICYmIG51bGwgIT0gbi5jbGllbnRYICYm
IChpID0gZS50YXJnZXQub3duZXJEb2N1bWVudCB8fCBvLCBhID0gaS5kb2N1bWVudEVsZW1lbnQs
IHIgPSBpLmJvZHksIGUucGFnZVggPSBuLmNsaWVudFggKyAoYSAmJiBhLnNjcm9sbExlZnQgfHwg
ciAmJiByLnNjcm9sbExlZnQgfHwgMCkgLSAoYSAmJiBhLmNsaWVudExlZnQgfHwgciAmJiByLmNs
aWVudExlZnQgfHwgMCksIGUucGFnZVkgPSBuLmNsaWVudFkgKyAoYSAmJiBhLnNjcm9sbFRvcCB8
fCByICYmIHIuc2Nyb2xsVG9wIHx8IDApIC0gKGEgJiYgYS5jbGllbnRUb3AgfHwgciAmJiByLmNs
aWVudFRvcCB8fCAwKSksICFlLnJlbGF0ZWRUYXJnZXQgJiYgdSAmJiAoZS5yZWxhdGVkVGFyZ2V0
ID0gdSA9PT0gZS50YXJnZXQgPyBuLnRvRWxlbWVudCA6IHUpLCBlLndoaWNoIHx8IHMgPT09IHQg
fHwgKGUud2hpY2ggPSAxICYgcyA/IDEgOiAyICYgcyA/IDMgOiA0ICYgcyA/IDIgOiAwKSwgZQot
ICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICBzcGVjaWFsOiB7Ci0gICAgICAgICAg
ICBsb2FkOiB7Ci0gICAgICAgICAgICAgICAgbm9CdWJibGU6ICEwCi0gICAgICAgICAgICB9LAot
ICAgICAgICAgICAgY2xpY2s6IHsKLSAgICAgICAgICAgICAgICB0cmlnZ2VyOiBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIubm9kZU5hbWUodGhpcywgImlucHV0Iikg
JiYgImNoZWNrYm94IiA9PT0gdGhpcy50eXBlICYmIHRoaXMuY2xpY2sgPyAodGhpcy5jbGljaygp
LCAhMSkgOiB0Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
IGZvY3VzOiB7Ci0gICAgICAgICAgICAgICAgdHJpZ2dlcjogZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICh0aGlzICE9PSBvLmFjdGl2ZUVsZW1lbnQgJiYgdGhpcy5mb2N1cykK
LSAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuZm9jdXMoKSwgITEKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0
Y2ggKGUpIHt9Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBkZWxlZ2F0ZVR5
cGU6ICJmb2N1c2luIgotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGJsdXI6IHsKLSAgICAg
ICAgICAgICAgICB0cmlnZ2VyOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRoaXMgPT09IG8uYWN0aXZlRWxlbWVudCAmJiB0aGlzLmJsdXIgPyAodGhpcy5ibHVyKCks
ICExKSA6IHQKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIGRlbGVnYXRlVHlw
ZTogImZvY3Vzb3V0IgotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGJlZm9yZXVubG9hZDog
ewotICAgICAgICAgICAgICAgIHBvc3REaXNwYXRjaDogZnVuY3Rpb24oZSkgewotICAgICAgICAg
ICAgICAgICAgICBlLnJlc3VsdCAhPT0gdCAmJiAoZS5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVl
ID0gZS5yZXN1bHQpCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9
LAotICAgICAgICBzaW11bGF0ZTogZnVuY3Rpb24oZSwgdCwgbiwgcikgewotICAgICAgICAgICAg
dmFyIGkgPSBiLmV4dGVuZChuZXcgYi5FdmVudCwgbiwgewotICAgICAgICAgICAgICAgIHR5cGU6
IGUsCi0gICAgICAgICAgICAgICAgaXNTaW11bGF0ZWQ6ICEwLAotICAgICAgICAgICAgICAgIG9y
aWdpbmFsRXZlbnQ6IHt9Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHIgPyBiLmV2ZW50
LnRyaWdnZXIoaSwgbnVsbCwgdCkgOiBiLmV2ZW50LmRpc3BhdGNoLmNhbGwodCwgaSksCi0gICAg
ICAgICAgICBpLmlzRGVmYXVsdFByZXZlbnRlZCgpICYmIG4ucHJldmVudERlZmF1bHQoKQotICAg
ICAgICB9Ci0gICAgfSwKLSAgICBiLnJlbW92ZUV2ZW50ID0gby5yZW1vdmVFdmVudExpc3RlbmVy
ID8gZnVuY3Rpb24oZSwgdCwgbikgewotICAgICAgICBlLnJlbW92ZUV2ZW50TGlzdGVuZXIgJiYg
ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsIG4sICExKQotICAgIH0gOiBmdW5jdGlvbihlLCB0LCBu
KSB7Ci0gICAgICAgIHZhciByID0gIm9uIiArIHQ7Ci0gICAgICAgIGUuZGV0YWNoRXZlbnQgJiYg
KHR5cGVvZiBlW3JdID09PSBpICYmIChlW3JdID0gbnVsbCksIGUuZGV0YWNoRXZlbnQociwgbikp
Ci0gICAgfSwKLSAgICBiLkV2ZW50ID0gZnVuY3Rpb24oZSwgbikgewotICAgICAgICByZXR1cm4g
dGhpcyBpbnN0YW5jZW9mIGIuRXZlbnQgPyAoZSAmJiBlLnR5cGUgPyAodGhpcy5vcmlnaW5hbEV2
ZW50ID0gZSwgdGhpcy50eXBlID0gZS50eXBlLCB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IGUu
ZGVmYXVsdFByZXZlbnRlZCB8fCBlLnJldHVyblZhbHVlID09PSAhMSB8fCBlLmdldFByZXZlbnRE
ZWZhdWx0ICYmIGUuZ2V0UHJldmVudERlZmF1bHQoKSA/IGl0IDogb3QpIDogdGhpcy50eXBlID0g
ZSwgbiAmJiBiLmV4dGVuZCh0aGlzLCBuKSwgdGhpcy50aW1lU3RhbXAgPSBlICYmIGUudGltZVN0
YW1wIHx8IGIubm93KCksIHRoaXNbYi5leHBhbmRvXSA9ICEwLCB0KSA6IG5ldyBiLkV2ZW50KGUs
IG4pCi0gICAgfSwKLSAgICBiLkV2ZW50LnByb3RvdHlwZSA9IHsKLSAgICAgICAgaXNEZWZhdWx0
UHJldmVudGVkOiBvdCwKLSAgICAgICAgaXNQcm9wYWdhdGlvblN0b3BwZWQ6IG90LAotICAgICAg
ICBpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDogb3QsCi0gICAgICAgIHByZXZlbnREZWZh
dWx0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50
OwotICAgICAgICAgICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBpdCwKLSAgICAgICAgICAg
IGUgJiYgKGUucHJldmVudERlZmF1bHQgPyBlLnByZXZlbnREZWZhdWx0KCkgOiBlLnJldHVyblZh
bHVlID0gITEpCi0gICAgICAgIH0sCi0gICAgICAgIHN0b3BQcm9wYWdhdGlvbjogZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICB2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDsKLSAgICAgICAgICAg
IHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSBpdCwKLSAgICAgICAgICAgIGUgJiYgKGUuc3Rv
cFByb3BhZ2F0aW9uICYmIGUuc3RvcFByb3BhZ2F0aW9uKCksIGUuY2FuY2VsQnViYmxlID0gITAp
Ci0gICAgICAgIH0sCi0gICAgICAgIHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjogZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICB0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gaXQs
Ci0gICAgICAgICAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbigpCi0gICAgICAgIH0KLSAgICB9LAot
ICAgIGIuZWFjaCh7Ci0gICAgICAgIG1vdXNlZW50ZXI6ICJtb3VzZW92ZXIiLAotICAgICAgICBt
b3VzZWxlYXZlOiAibW91c2VvdXQiCi0gICAgfSwgZnVuY3Rpb24oZSwgdCkgewotICAgICAgICBi
LmV2ZW50LnNwZWNpYWxbZV0gPSB7Ci0gICAgICAgICAgICBkZWxlZ2F0ZVR5cGU6IHQsCi0gICAg
ICAgICAgICBiaW5kVHlwZTogdCwKLSAgICAgICAgICAgIGhhbmRsZTogZnVuY3Rpb24oZSkgewot
ICAgICAgICAgICAgICAgIHZhciBuLAotICAgICAgICAgICAgICAgICAgICByID0gdGhpcywKLSAg
ICAgICAgICAgICAgICAgICAgaSA9IGUucmVsYXRlZFRhcmdldCwKLSAgICAgICAgICAgICAgICAg
ICAgbyA9IGUuaGFuZGxlT2JqOwotICAgICAgICAgICAgICAgIHJldHVybiAoIWkgfHwgaSAhPT0g
ciAmJiAhYi5jb250YWlucyhyLCBpKSkgJiYgKGUudHlwZSA9IG8ub3JpZ1R5cGUsIG4gPSBvLmhh
bmRsZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgZS50eXBlID0gdCksIG4KLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0pLAotICAgIGIuc3VwcG9ydC5zdWJtaXRCdWJibGVzIHx8IChi
LmV2ZW50LnNwZWNpYWwuc3VibWl0ID0gewotICAgICAgICBzZXR1cDogZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gYi5ub2RlTmFtZSh0aGlzLCAiZm9ybSIpID8gITEgOiAoYi5ldmVu
dC5hZGQodGhpcywgImNsaWNrLl9zdWJtaXQga2V5cHJlc3MuX3N1Ym1pdCIsIGZ1bmN0aW9uKGUp
IHsKLSAgICAgICAgICAgICAgICB2YXIgbiA9IGUudGFyZ2V0LAotICAgICAgICAgICAgICAgICAg
ICByID0gYi5ub2RlTmFtZShuLCAiaW5wdXQiKSB8fCBiLm5vZGVOYW1lKG4sICJidXR0b24iKSA/
IG4uZm9ybSA6IHQ7Ci0gICAgICAgICAgICAgICAgciAmJiAhYi5fZGF0YShyLCAic3VibWl0QnVi
YmxlcyIpICYmIChiLmV2ZW50LmFkZChyLCAic3VibWl0Ll9zdWJtaXQiLCBmdW5jdGlvbihlKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGUuX3N1Ym1pdF9idWJibGUgPSAhMAotICAgICAgICAgICAg
ICAgIH0pLCBiLl9kYXRhKHIsICJzdWJtaXRCdWJibGVzIiwgITApKQotICAgICAgICAgICAgfSks
IHQpCi0gICAgICAgIH0sCi0gICAgICAgIHBvc3REaXNwYXRjaDogZnVuY3Rpb24oZSkgewotICAg
ICAgICAgICAgZS5fc3VibWl0X2J1YmJsZSAmJiAoZGVsZXRlIGUuX3N1Ym1pdF9idWJibGUsIHRo
aXMucGFyZW50Tm9kZSAmJiAhZS5pc1RyaWdnZXIgJiYgYi5ldmVudC5zaW11bGF0ZSgic3VibWl0
IiwgdGhpcy5wYXJlbnROb2RlLCBlLCAhMCkpCi0gICAgICAgIH0sCi0gICAgICAgIHRlYXJkb3du
OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiBiLm5vZGVOYW1lKHRoaXMsICJmb3Jt
IikgPyAhMSA6IChiLmV2ZW50LnJlbW92ZSh0aGlzLCAiLl9zdWJtaXQiKSwgdCkKLSAgICAgICAg
fQotICAgIH0pLAotICAgIGIuc3VwcG9ydC5jaGFuZ2VCdWJibGVzIHx8IChiLmV2ZW50LnNwZWNp
YWwuY2hhbmdlID0gewotICAgICAgICBzZXR1cDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gWi50ZXN0KHRoaXMubm9kZU5hbWUpID8gKCgiY2hlY2tib3giID09PSB0aGlzLnR5cGUg
fHwgInJhZGlvIiA9PT0gdGhpcy50eXBlKSAmJiAoYi5ldmVudC5hZGQodGhpcywgInByb3BlcnR5
Y2hhbmdlLl9jaGFuZ2UiLCBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgImNoZWNrZWQi
ID09PSBlLm9yaWdpbmFsRXZlbnQucHJvcGVydHlOYW1lICYmICh0aGlzLl9qdXN0X2NoYW5nZWQg
PSAhMCkKLSAgICAgICAgICAgIH0pLCBiLmV2ZW50LmFkZCh0aGlzLCAiY2xpY2suX2NoYW5nZSIs
IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9qdXN0X2NoYW5nZWQgJiYgIWUu
aXNUcmlnZ2VyICYmICh0aGlzLl9qdXN0X2NoYW5nZWQgPSAhMSksCi0gICAgICAgICAgICAgICAg
Yi5ldmVudC5zaW11bGF0ZSgiY2hhbmdlIiwgdGhpcywgZSwgITApCi0gICAgICAgICAgICB9KSks
ICExKSA6IChiLmV2ZW50LmFkZCh0aGlzLCAiYmVmb3JlYWN0aXZhdGUuX2NoYW5nZSIsIGZ1bmN0
aW9uKGUpIHsKLSAgICAgICAgICAgICAgICB2YXIgdCA9IGUudGFyZ2V0OwotICAgICAgICAgICAg
ICAgIFoudGVzdCh0Lm5vZGVOYW1lKSAmJiAhYi5fZGF0YSh0LCAiY2hhbmdlQnViYmxlcyIpICYm
IChiLmV2ZW50LmFkZCh0LCAiY2hhbmdlLl9jaGFuZ2UiLCBmdW5jdGlvbihlKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICF0aGlzLnBhcmVudE5vZGUgfHwgZS5pc1NpbXVsYXRlZCB8fCBlLmlzVHJp
Z2dlciB8fCBiLmV2ZW50LnNpbXVsYXRlKCJjaGFuZ2UiLCB0aGlzLnBhcmVudE5vZGUsIGUsICEw
KQotICAgICAgICAgICAgICAgIH0pLCBiLl9kYXRhKHQsICJjaGFuZ2VCdWJibGVzIiwgITApKQot
ICAgICAgICAgICAgfSksIHQpCi0gICAgICAgIH0sCi0gICAgICAgIGhhbmRsZTogZnVuY3Rpb24o
ZSkgewotICAgICAgICAgICAgdmFyIG4gPSBlLnRhcmdldDsKLSAgICAgICAgICAgIHJldHVybiB0
aGlzICE9PSBuIHx8IGUuaXNTaW11bGF0ZWQgfHwgZS5pc1RyaWdnZXIgfHwgInJhZGlvIiAhPT0g
bi50eXBlICYmICJjaGVja2JveCIgIT09IG4udHlwZSA/IGUuaGFuZGxlT2JqLmhhbmRsZXIuYXBw
bHkodGhpcywgYXJndW1lbnRzKSA6IHQKLSAgICAgICAgfSwKLSAgICAgICAgdGVhcmRvd246IGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJuIGIuZXZlbnQucmVtb3ZlKHRoaXMsICIuX2No
YW5nZSIpLCAhWi50ZXN0KHRoaXMubm9kZU5hbWUpCi0gICAgICAgIH0KLSAgICB9KSwKLSAgICBi
LnN1cHBvcnQuZm9jdXNpbkJ1YmJsZXMgfHwgYi5lYWNoKHsKLSAgICAgICAgZm9jdXM6ICJmb2N1
c2luIiwKLSAgICAgICAgYmx1cjogImZvY3Vzb3V0IgotICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsK
LSAgICAgICAgdmFyIG4gPSAwLAotICAgICAgICAgICAgciA9IGZ1bmN0aW9uKGUpIHsKLSAgICAg
ICAgICAgICAgICBiLmV2ZW50LnNpbXVsYXRlKHQsIGUudGFyZ2V0LCBiLmV2ZW50LmZpeChlKSwg
ITApCi0gICAgICAgICAgICB9OwotICAgICAgICBiLmV2ZW50LnNwZWNpYWxbdF0gPSB7Ci0gICAg
ICAgICAgICBzZXR1cDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgMCA9PT0gbisrICYm
IG8uYWRkRXZlbnRMaXN0ZW5lcihlLCByLCAhMCkKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICB0ZWFyZG93bjogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgMCA9PT0gLS1uICYmIG8u
cmVtb3ZlRXZlbnRMaXN0ZW5lcihlLCByLCAhMCkKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgIH0pLAotICAgIGIuZm4uZXh0ZW5kKHsKLSAgICAgICAgb246IGZ1bmN0aW9uKGUsIG4sIHIs
IGksIG8pIHsKLSAgICAgICAgICAgIHZhciBhLAotICAgICAgICAgICAgICAgIHM7Ci0gICAgICAg
ICAgICBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIGUpIHsKLSAgICAgICAgICAgICAgICAic3RyaW5n
IiAhPSB0eXBlb2YgbiAmJiAociA9IHIgfHwgbiwgbiA9IHQpOwotICAgICAgICAgICAgICAgIGZv
ciAoYSBpbiBlKQotICAgICAgICAgICAgICAgICAgICB0aGlzLm9uKGEsIG4sIHIsIGVbYV0sIG8p
OwotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzCi0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpZiAobnVsbCA9PSByICYmIG51bGwgPT0gaSA/IChpID0gbiwgciA9IG4gPSB0KSA6IG51bGwg
PT0gaSAmJiAoInN0cmluZyIgPT0gdHlwZW9mIG4gPyAoaSA9IHIsIHIgPSB0KSA6IChpID0gciwg
ciA9IG4sIG4gPSB0KSksIGkgPT09ICExKQotICAgICAgICAgICAgICAgIGkgPSBvdDsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKCFpKQotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAg
ICAgICAgcmV0dXJuIDEgPT09IG8gJiYgKHMgPSBpLCBpID0gZnVuY3Rpb24oZSkgewotICAgICAg
ICAgICAgICAgIHJldHVybiBiKCkub2ZmKGUpLCBzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKLSAg
ICAgICAgICAgIH0sIGkuZ3VpZCA9IHMuZ3VpZCB8fCAocy5ndWlkID0gYi5ndWlkKyspKSwgdGhp
cy5lYWNoKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGIuZXZlbnQuYWRkKHRoaXMsIGUs
IGksIHIsIG4pCi0gICAgICAgICAgICB9KQotICAgICAgICB9LAotICAgICAgICBvbmU6IGZ1bmN0
aW9uKGUsIHQsIG4sIHIpIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLm9uKGUsIHQsIG4sIHIs
IDEpCi0gICAgICAgIH0sCi0gICAgICAgIG9mZjogZnVuY3Rpb24oZSwgbiwgcikgewotICAgICAg
ICAgICAgdmFyIGksCi0gICAgICAgICAgICAgICAgbzsKLSAgICAgICAgICAgIGlmIChlICYmIGUu
cHJldmVudERlZmF1bHQgJiYgZS5oYW5kbGVPYmopCi0gICAgICAgICAgICAgICAgcmV0dXJuIGkg
PSBlLmhhbmRsZU9iaiwgYihlLmRlbGVnYXRlVGFyZ2V0KS5vZmYoaS5uYW1lc3BhY2UgPyBpLm9y
aWdUeXBlICsgIi4iICsgaS5uYW1lc3BhY2UgOiBpLm9yaWdUeXBlLCBpLnNlbGVjdG9yLCBpLmhh
bmRsZXIpLCB0aGlzOwotICAgICAgICAgICAgaWYgKCJvYmplY3QiID09IHR5cGVvZiBlKSB7Ci0g
ICAgICAgICAgICAgICAgZm9yIChvIGluIGUpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMub2Zm
KG8sIG4sIGVbb10pOwotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzCi0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICByZXR1cm4gKG4gPT09ICExIHx8ICJmdW5jdGlvbiIgPT0gdHlwZW9mIG4p
ICYmIChyID0gbiwgbiA9IHQpLCByID09PSAhMSAmJiAociA9IG90KSwgdGhpcy5lYWNoKGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgICAgIGIuZXZlbnQucmVtb3ZlKHRoaXMsIGUsIHIsIG4pCi0g
ICAgICAgICAgICB9KQotICAgICAgICB9LAotICAgICAgICBiaW5kOiBmdW5jdGlvbihlLCB0LCBu
KSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5vbihlLCBudWxsLCB0LCBuKQotICAgICAgICB9
LAotICAgICAgICB1bmJpbmQ6IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgIHJldHVybiB0
aGlzLm9mZihlLCBudWxsLCB0KQotICAgICAgICB9LAotICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rp
b24oZSwgdCwgbiwgcikgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMub24odCwgZSwgbiwgcikK
LSAgICAgICAgfSwKLSAgICAgICAgdW5kZWxlZ2F0ZTogZnVuY3Rpb24oZSwgdCwgbikgewotICAg
ICAgICAgICAgcmV0dXJuIDEgPT09IGFyZ3VtZW50cy5sZW5ndGggPyB0aGlzLm9mZihlLCAiKioi
KSA6IHRoaXMub2ZmKHQsIGUgfHwgIioqIiwgbikKLSAgICAgICAgfSwKLSAgICAgICAgdHJpZ2dl
cjogZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgICAgICBiLmV2ZW50LnRyaWdnZXIoZSwgdCwgdGhpcykKLSAgICAg
ICAgICAgIH0pCi0gICAgICAgIH0sCi0gICAgICAgIHRyaWdnZXJIYW5kbGVyOiBmdW5jdGlvbihl
LCBuKSB7Ci0gICAgICAgICAgICB2YXIgciA9IHRoaXNbMF07Ci0gICAgICAgICAgICByZXR1cm4g
ciA/IGIuZXZlbnQudHJpZ2dlcihlLCBuLCByLCAhMCkgOiB0Ci0gICAgICAgIH0KLSAgICB9KSwK
LSAgICBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgIHZhciBuLAotICAgICAgICAgICAgciwKLSAg
ICAgICAgICAgIGksCi0gICAgICAgICAgICBvLAotICAgICAgICAgICAgYSwKLSAgICAgICAgICAg
IHMsCi0gICAgICAgICAgICB1LAotICAgICAgICAgICAgbCwKLSAgICAgICAgICAgIGMsCi0gICAg
ICAgICAgICBwLAotICAgICAgICAgICAgZiwKLSAgICAgICAgICAgIGQsCi0gICAgICAgICAgICBo
LAotICAgICAgICAgICAgZywKLSAgICAgICAgICAgIG0sCi0gICAgICAgICAgICB5LAotICAgICAg
ICAgICAgdiwKLSAgICAgICAgICAgIHggPSAic2l6emxlIiArIC1uZXcgRGF0ZSwKLSAgICAgICAg
ICAgIHcgPSBlLmRvY3VtZW50LAotICAgICAgICAgICAgVCA9IHt9LAotICAgICAgICAgICAgTiA9
IDAsCi0gICAgICAgICAgICBDID0gMCwKLSAgICAgICAgICAgIGsgPSBpdCgpLAotICAgICAgICAg
ICAgRSA9IGl0KCksCi0gICAgICAgICAgICBTID0gaXQoKSwKLSAgICAgICAgICAgIEEgPSB0eXBl
b2YgdCwKLSAgICAgICAgICAgIGogPSAxIDw8IDMxLAotICAgICAgICAgICAgRCA9IFtdLAotICAg
ICAgICAgICAgTCA9IEQucG9wLAotICAgICAgICAgICAgSCA9IEQucHVzaCwKLSAgICAgICAgICAg
IHEgPSBELnNsaWNlLAotICAgICAgICAgICAgTSA9IEQuaW5kZXhPZiB8fCBmdW5jdGlvbihlKSB7
Ci0gICAgICAgICAgICAgICAgdmFyIHQgPSAwLAotICAgICAgICAgICAgICAgICAgICBuID0gdGhp
cy5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgZm9yICg7IG4gPiB0OyB0KyspCi0gICAgICAgICAg
ICAgICAgICAgIGlmICh0aGlzW3RdID09PSBlKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0xCi0gICAgICAgICAgICB9LAotICAgICAg
ICAgICAgXyA9ICJbXFx4MjBcXHRcXHJcXG5cXGZdIiwKLSAgICAgICAgICAgIEYgPSAiKD86XFxc
XC58W1xcdy1dfFteXFx4MDAtXFx4YTBdKSsiLAotICAgICAgICAgICAgTyA9IEYucmVwbGFjZSgi
dyIsICJ3IyIpLAotICAgICAgICAgICAgQiA9ICIoWypeJHwhfl0/PSkiLAotICAgICAgICAgICAg
UCA9ICJcXFsiICsgXyArICIqKCIgKyBGICsgIikiICsgXyArICIqKD86IiArIEIgKyBfICsgIioo
PzooWydcIl0pKCg/OlxcXFwufFteXFxcXF0pKj8pXFwzfCgiICsgTyArICIpfCl8KSIgKyBfICsg
IipcXF0iLAotICAgICAgICAgICAgUiA9ICI6KCIgKyBGICsgIikoPzpcXCgoKFsnXCJdKSgoPzpc
XFxcLnxbXlxcXFxdKSo/KVxcM3woKD86XFxcXC58W15cXFxcKClbXFxdXXwiICsgUC5yZXBsYWNl
KDMsIDgpICsgIikqKXwuKilcXCl8KSIsCi0gICAgICAgICAgICBXID0gUmVnRXhwKCJeIiArIF8g
KyAiK3woKD86XnxbXlxcXFxdKSg/OlxcXFwuKSopIiArIF8gKyAiKyQiLCAiZyIpLAotICAgICAg
ICAgICAgJCA9IFJlZ0V4cCgiXiIgKyBfICsgIiosIiArIF8gKyAiKiIpLAotICAgICAgICAgICAg
SSA9IFJlZ0V4cCgiXiIgKyBfICsgIiooW1xceDIwXFx0XFxyXFxuXFxmPit+XSkiICsgXyArICIq
IiksCi0gICAgICAgICAgICB6ID0gUmVnRXhwKFIpLAotICAgICAgICAgICAgWCA9IFJlZ0V4cCgi
XiIgKyBPICsgIiQiKSwKLSAgICAgICAgICAgIFUgPSB7Ci0gICAgICAgICAgICAgICAgSUQ6IFJl
Z0V4cCgiXiMoIiArIEYgKyAiKSIpLAotICAgICAgICAgICAgICAgIENMQVNTOiBSZWdFeHAoIl5c
XC4oIiArIEYgKyAiKSIpLAotICAgICAgICAgICAgICAgIE5BTUU6IFJlZ0V4cCgiXlxcW25hbWU9
WydcIl0/KCIgKyBGICsgIilbJ1wiXT9cXF0iKSwKLSAgICAgICAgICAgICAgICBUQUc6IFJlZ0V4
cCgiXigiICsgRi5yZXBsYWNlKCJ3IiwgIncqIikgKyAiKSIpLAotICAgICAgICAgICAgICAgIEFU
VFI6IFJlZ0V4cCgiXiIgKyBQKSwKLSAgICAgICAgICAgICAgICBQU0VVRE86IFJlZ0V4cCgiXiIg
KyBSKSwKLSAgICAgICAgICAgICAgICBDSElMRDogUmVnRXhwKCJeOihvbmx5fGZpcnN0fGxhc3R8
bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXCgiICsgXyArICIqKGV2ZW58b2RkfCgo
WystXXwpKFxcZCopbnwpIiArIF8gKyAiKig/OihbKy1dfCkiICsgXyArICIqKFxcZCspfCkpIiAr
IF8gKyAiKlxcKXwpIiwgImkiKSwKLSAgICAgICAgICAgICAgICBuZWVkc0NvbnRleHQ6IFJlZ0V4
cCgiXiIgKyBfICsgIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/
OlxcKCIgKyBfICsgIiooKD86LVxcZCk/XFxkKikiICsgXyArICIqXFwpfCkoPz1bXi1dfCQpIiwg
ImkiKQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFYgPSAvW1x4MjBcdFxyXG5cZl0qWyt+
XS8sCi0gICAgICAgICAgICBZID0gL15bXntdK1x7XHMqXFtuYXRpdmUgY29kZS8sCi0gICAgICAg
ICAgICBKID0gL14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLywKLSAgICAgICAgICAg
IEcgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLAotICAgICAgICAgICAg
USA9IC9eaFxkJC9pLAotICAgICAgICAgICAgSyA9IC8nfFxcL2csCi0gICAgICAgICAgICBaID0g
L1w9W1x4MjBcdFxyXG5cZl0qKFteJyJcXV0qKVtceDIwXHRcclxuXGZdKlxdL2csCi0gICAgICAg
ICAgICBldCA9IC9cXChbXGRhLWZBLUZdezEsNn1bXHgyMFx0XHJcblxmXT98LikvZywKLSAgICAg
ICAgICAgIHR0ID0gZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAgICAgIHZhciBuID0gIjB4
IiArIHQgLSA2NTUzNjsKLSAgICAgICAgICAgICAgICByZXR1cm4gbiAhPT0gbiA/IHQgOiAwID4g
biA/IFN0cmluZy5mcm9tQ2hhckNvZGUobiArIDY1NTM2KSA6IFN0cmluZy5mcm9tQ2hhckNvZGUo
NTUyOTYgfCBuID4+IDEwLCA1NjMyMCB8IDEwMjMgJiBuKQotICAgICAgICAgICAgfTsKLSAgICAg
ICAgdHJ5IHsKLSAgICAgICAgICAgIHEuY2FsbCh3LmRvY3VtZW50RWxlbWVudC5jaGlsZE5vZGVz
LCAwKVswXS5ub2RlVHlwZQotICAgICAgICB9IGNhdGNoIChudCkgewotICAgICAgICAgICAgcSA9
IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICB2YXIgdCwKLSAgICAgICAgICAgICAgICAg
ICAgbiA9IFtdOwotICAgICAgICAgICAgICAgIHdoaWxlICh0ID0gdGhpc1tlKytdKQotICAgICAg
ICAgICAgICAgICAgICBuLnB1c2godCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG4KLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBmdW5jdGlvbiBydChlKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gWS50ZXN0KGUgKyAiIikKLSAgICAgICAgfQotICAgICAgICBmdW5jdGlvbiBpdCgp
IHsKLSAgICAgICAgICAgIHZhciBlLAotICAgICAgICAgICAgICAgIHQgPSBbXTsKLSAgICAgICAg
ICAgIHJldHVybiBlID0gZnVuY3Rpb24obiwgcikgewotICAgICAgICAgICAgICAgIHJldHVybiB0
LnB1c2gobiArPSAiICIpID4gaS5jYWNoZUxlbmd0aCAmJiBkZWxldGUgZVt0LnNoaWZ0KCldLCBl
W25dID0gcgotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGZ1bmN0aW9uIG90KGUp
IHsKLSAgICAgICAgICAgIHJldHVybiBlW3hdID0gITAsIGUKLSAgICAgICAgfQotICAgICAgICBm
dW5jdGlvbiBhdChlKSB7Ci0gICAgICAgICAgICB2YXIgdCA9IHAuY3JlYXRlRWxlbWVudCgiZGl2
Iik7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIHJldHVybiBlKHQpCi0gICAg
ICAgICAgICB9IGNhdGNoIChuKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICExCi0gICAgICAg
ICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgICAgIHQgPSBudWxsCi0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgZnVuY3Rpb24gc3QoZSwgdCwgbiwgcikgewotICAgICAgICAg
ICAgdmFyIGksCi0gICAgICAgICAgICAgICAgbywKLSAgICAgICAgICAgICAgICBhLAotICAgICAg
ICAgICAgICAgIHMsCi0gICAgICAgICAgICAgICAgdSwKLSAgICAgICAgICAgICAgICBsLAotICAg
ICAgICAgICAgICAgIGYsCi0gICAgICAgICAgICAgICAgZywKLSAgICAgICAgICAgICAgICBtLAot
ICAgICAgICAgICAgICAgIHY7Ci0gICAgICAgICAgICBpZiAoKHQgPyB0Lm93bmVyRG9jdW1lbnQg
fHwgdCA6IHcpICE9PSBwICYmIGModCksIHQgPSB0IHx8IHAsIG4gPSBuIHx8IFtdLCAhZSB8fCAi
c3RyaW5nIiAhPSB0eXBlb2YgZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbjsKLSAgICAgICAg
ICAgIGlmICgxICE9PSAocyA9IHQubm9kZVR5cGUpICYmIDkgIT09IHMpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFtdOwotICAgICAgICAgICAgaWYgKCFkICYmICFyKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKGkgPSBKLmV4ZWMoZSkpCi0gICAgICAgICAgICAgICAgICAgIGlmIChhID0gaVsxXSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDkgPT09IHMpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobyA9IHQuZ2V0RWxlbWVudEJ5SWQoYSksICFvIHx8ICFvLnBhcmVu
dE5vZGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChvLmlkID09PSBhKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbi5wdXNoKG8pLCBuCi0gICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKHQub3duZXJEb2N1bWVudCAmJiAobyA9IHQub3duZXJEb2N1bWVudC5nZXRF
bGVtZW50QnlJZChhKSkgJiYgeSh0LCBvKSAmJiBvLmlkID09PSBhKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBuLnB1c2gobyksIG4KLSAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpWzJdKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBILmFwcGx5KG4sIHEuY2FsbCh0LmdldEVsZW1lbnRzQnlUYWdO
YW1lKGUpLCAwKSksIG47Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGEgPSBpWzNdKSAm
JiBULmdldEJ5Q2xhc3NOYW1lICYmIHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gSC5hcHBseShuLCBxLmNhbGwodC5nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKGEpLCAwKSksIG4KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGlmIChULnFzYSAmJiAhaC50ZXN0KGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChmID0gITAsIGcgPSB4LCBtID0gdCwgdiA9IDkgPT09IHMgJiYgZSwgMSA9PT0gcyAmJiAib2Jq
ZWN0IiAhPT0gdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBsID0gZnQoZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAoZiA9IHQuZ2V0QXR0cmli
dXRlKCJpZCIpKSA/IGcgPSBmLnJlcGxhY2UoSywgIlxcJCYiKSA6IHQuc2V0QXR0cmlidXRlKCJp
ZCIsIGcpLAotICAgICAgICAgICAgICAgICAgICAgICAgZyA9ICJbaWQ9JyIgKyBnICsgIiddICIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICB1ID0gbC5sZW5ndGg7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB3aGlsZSAodS0tKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxbdV0gPSBn
ICsgZHQobFt1XSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtID0gVi50ZXN0KGUpICYmIHQu
cGFyZW50Tm9kZSB8fCB0LAotICAgICAgICAgICAgICAgICAgICAgICAgdiA9IGwuam9pbigiLCIp
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHYpCi0gICAg
ICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBILmFwcGx5KG4sIHEuY2FsbChtLnF1ZXJ5U2VsZWN0b3JBbGwodiksIDApKSwgbgotICAg
ICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoYikge30gZmluYWxseSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZiB8fCB0LnJlbW92ZUF0dHJpYnV0ZSgiaWQiKQotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHJldHVybiB3dChlLnJlcGxhY2UoVywgIiQxIiksIHQsIG4sIHIpCi0gICAgICAgIH0K
LSAgICAgICAgYSA9IHN0LmlzWE1MID0gZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgdmFyIHQg
PSBlICYmIChlLm93bmVyRG9jdW1lbnQgfHwgZSkuZG9jdW1lbnRFbGVtZW50OwotICAgICAgICAg
ICAgcmV0dXJuIHQgPyAiSFRNTCIgIT09IHQubm9kZU5hbWUgOiAhMQotICAgICAgICB9LAotICAg
ICAgICBjID0gc3Quc2V0RG9jdW1lbnQgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICB2YXIg
biA9IGUgPyBlLm93bmVyRG9jdW1lbnQgfHwgZSA6IHc7Ci0gICAgICAgICAgICByZXR1cm4gbiAh
PT0gcCAmJiA5ID09PSBuLm5vZGVUeXBlICYmIG4uZG9jdW1lbnRFbGVtZW50ID8gKHAgPSBuLCBm
ID0gbi5kb2N1bWVudEVsZW1lbnQsIGQgPSBhKG4pLCBULnRhZ05hbWVOb0NvbW1lbnRzID0gYXQo
ZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgIHJldHVybiBlLmFwcGVuZENoaWxkKG4uY3Jl
YXRlQ29tbWVudCgiIikpLCAhZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aAotICAg
ICAgICAgICAgfSksIFQuYXR0cmlidXRlcyA9IGF0KGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAg
ICAgICBlLmlubmVySFRNTCA9ICI8c2VsZWN0Pjwvc2VsZWN0PiI7Ci0gICAgICAgICAgICAgICAg
dmFyIHQgPSB0eXBlb2YgZS5sYXN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJtdWx0aXBsZSIpOwotICAg
ICAgICAgICAgICAgIHJldHVybiAiYm9vbGVhbiIgIT09IHQgJiYgInN0cmluZyIgIT09IHQKLSAg
ICAgICAgICAgIH0pLCBULmdldEJ5Q2xhc3NOYW1lID0gYXQoZnVuY3Rpb24oZSkgewotICAgICAg
ICAgICAgICAgIHJldHVybiBlLmlubmVySFRNTCA9ICI8ZGl2IGNsYXNzPSdoaWRkZW4gZSc+PC9k
aXY+PGRpdiBjbGFzcz0naGlkZGVuJz48L2Rpdj4iLCBlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUg
JiYgZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoID8gKGUubGFzdENoaWxkLmNs
YXNzTmFtZSA9ICJlIiwgMiA9PT0gZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3Ro
KSA6ICExCi0gICAgICAgICAgICB9KSwgVC5nZXRCeU5hbWUgPSBhdChmdW5jdGlvbihlKSB7Ci0g
ICAgICAgICAgICAgICAgZS5pZCA9IHggKyAwLAotICAgICAgICAgICAgICAgIGUuaW5uZXJIVE1M
ID0gIjxhIG5hbWU9JyIgKyB4ICsgIic+PC9hPjxkaXYgbmFtZT0nIiArIHggKyAiJz48L2Rpdj4i
LAotICAgICAgICAgICAgICAgIGYuaW5zZXJ0QmVmb3JlKGUsIGYuZmlyc3RDaGlsZCk7Ci0gICAg
ICAgICAgICAgICAgdmFyIHQgPSBuLmdldEVsZW1lbnRzQnlOYW1lICYmIG4uZ2V0RWxlbWVudHNC
eU5hbWUoeCkubGVuZ3RoID09PSAyICsgbi5nZXRFbGVtZW50c0J5TmFtZSh4ICsgMCkubGVuZ3Ro
OwotICAgICAgICAgICAgICAgIHJldHVybiBULmdldElkTm90TmFtZSA9ICFuLmdldEVsZW1lbnRC
eUlkKHgpLCBmLnJlbW92ZUNoaWxkKGUpLCB0Ci0gICAgICAgICAgICB9KSwgaS5hdHRySGFuZGxl
ID0gYXQoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgIHJldHVybiBlLmlubmVySFRNTCA9
ICI8YSBocmVmPScjJz48L2E+IiwgZS5maXJzdENoaWxkICYmIHR5cGVvZiBlLmZpcnN0Q2hpbGQu
Z2V0QXR0cmlidXRlICE9PSBBICYmICIjIiA9PT0gZS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgi
aHJlZiIpCi0gICAgICAgICAgICB9KSA/IHt9IDogewotICAgICAgICAgICAgICAgIGhyZWY6IGZ1
bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuZ2V0QXR0cmlidXRlKCJo
cmVmIiwgMikKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHR5cGU6IGZ1bmN0
aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuZ2V0QXR0cmlidXRlKCJ0eXBl
IikKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LCBULmdldElkTm90TmFtZSA/IChp
LmZpbmQuSUQgPSBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0
LmdldEVsZW1lbnRCeUlkICE9PSBBICYmICFkKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBu
ID0gdC5nZXRFbGVtZW50QnlJZChlKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYg
bi5wYXJlbnROb2RlID8gW25dIDogW10KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
LCBpLmZpbHRlci5JRCA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICB2YXIgdCA9IGUu
cmVwbGFjZShldCwgdHQpOwotICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmdldEF0dHJpYnV0ZSgiaWQiKSA9PT0gdAotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pIDogKGkuZmluZC5JRCA9IGZ1bmN0aW9uKGUs
IG4pIHsKLSAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG4uZ2V0RWxlbWVudEJ5SWQgIT09IEEg
JiYgIWQpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLmdldEVsZW1lbnRCeUlkKGUp
OwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gciA/IHIuaWQgPT09IGUgfHwgdHlwZW9mIHIu
Z2V0QXR0cmlidXRlTm9kZSAhPT0gQSAmJiByLmdldEF0dHJpYnV0ZU5vZGUoImlkIikudmFsdWUg
PT09IGUgPyBbcl0gOiB0IDogW10KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LCBp
LmZpbHRlci5JRCA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICB2YXIgdCA9IGUucmVw
bGFjZShldCwgdHQpOwotICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHZhciBuID0gdHlwZW9mIGUuZ2V0QXR0cmlidXRlTm9kZSAhPT0gQSAm
JiBlLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBu
ICYmIG4udmFsdWUgPT09IHQKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KSwgaS5m
aW5kLlRBRyA9IFQudGFnTmFtZU5vQ29tbWVudHMgPyBmdW5jdGlvbihlLCBuKSB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHR5cGVvZiBuLmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSBBID8gbi5n
ZXRFbGVtZW50c0J5VGFnTmFtZShlKSA6IHQKLSAgICAgICAgICAgIH0gOiBmdW5jdGlvbihlLCB0
KSB7Ci0gICAgICAgICAgICAgICAgdmFyIG4sCi0gICAgICAgICAgICAgICAgICAgIHIgPSBbXSwK
LSAgICAgICAgICAgICAgICAgICAgaSA9IDAsCi0gICAgICAgICAgICAgICAgICAgIG8gPSB0Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKGUpOwotICAgICAgICAgICAgICAgIGlmICgiKiIgPT09IGUpIHsK
LSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG4gPSBvW2krK10pCi0gICAgICAgICAgICAgICAg
ICAgICAgICAxID09PSBuLm5vZGVUeXBlICYmIHIucHVzaChuKTsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHIKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG8K
LSAgICAgICAgICAgIH0sIGkuZmluZC5OQU1FID0gVC5nZXRCeU5hbWUgJiYgZnVuY3Rpb24oZSwg
bikgewotICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2Ygbi5nZXRFbGVtZW50c0J5TmFtZSAh
PT0gQSA/IG4uZ2V0RWxlbWVudHNCeU5hbWUobmFtZSkgOiB0Ci0gICAgICAgICAgICB9LCBpLmZp
bmQuQ0xBU1MgPSBULmdldEJ5Q2xhc3NOYW1lICYmIGZ1bmN0aW9uKGUsIG4pIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdHlwZW9mIG4uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9PT0gQSB8fCBk
ID8gdCA6IG4uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShlKQotICAgICAgICAgICAgfSwgZyA9IFtd
LCBoID0gWyI6Zm9jdXMiXSwgKFQucXNhID0gcnQobi5xdWVyeVNlbGVjdG9yQWxsKSkgJiYgKGF0
KGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICBlLmlubmVySFRNTCA9ICI8c2VsZWN0Pjxv
cHRpb24gc2VsZWN0ZWQ9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+IiwKLSAgICAgICAgICAgICAgICBl
LnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGggfHwgaC5wdXNoKCJcXFsiICsg
XyArICIqKD86Y2hlY2tlZHxkaXNhYmxlZHxpc21hcHxtdWx0aXBsZXxyZWFkb25seXxzZWxlY3Rl
ZHx2YWx1ZSkiKSwKLSAgICAgICAgICAgICAgICBlLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2Vk
IikubGVuZ3RoIHx8IGgucHVzaCgiOmNoZWNrZWQiKQotICAgICAgICAgICAgfSksIGF0KGZ1bmN0
aW9uKGUpIHsKLSAgICAgICAgICAgICAgICBlLmlubmVySFRNTCA9ICI8aW5wdXQgdHlwZT0naGlk
ZGVuJyBpPScnLz4iLAotICAgICAgICAgICAgICAgIGUucXVlcnlTZWxlY3RvckFsbCgiW2lePScn
XSIpLmxlbmd0aCAmJiBoLnB1c2goIlsqXiRdPSIgKyBfICsgIiooPzpcIlwifCcnKSIpLAotICAg
ICAgICAgICAgICAgIGUucXVlcnlTZWxlY3RvckFsbCgiOmVuYWJsZWQiKS5sZW5ndGggfHwgaC5w
dXNoKCI6ZW5hYmxlZCIsICI6ZGlzYWJsZWQiKSwKLSAgICAgICAgICAgICAgICBlLnF1ZXJ5U2Vs
ZWN0b3JBbGwoIiosOngiKSwKLSAgICAgICAgICAgICAgICBoLnB1c2goIiwuKjoiKQotICAgICAg
ICAgICAgfSkpLCAoVC5tYXRjaGVzU2VsZWN0b3IgPSBydChtID0gZi5tYXRjaGVzU2VsZWN0b3Ig
fHwgZi5tb3pNYXRjaGVzU2VsZWN0b3IgfHwgZi53ZWJraXRNYXRjaGVzU2VsZWN0b3IgfHwgZi5v
TWF0Y2hlc1NlbGVjdG9yIHx8IGYubXNNYXRjaGVzU2VsZWN0b3IpKSAmJiBhdChmdW5jdGlvbihl
KSB7Ci0gICAgICAgICAgICAgICAgVC5kaXNjb25uZWN0ZWRNYXRjaCA9IG0uY2FsbChlLCAiZGl2
IiksCi0gICAgICAgICAgICAgICAgbS5jYWxsKGUsICJbcyE9JyddOngiKSwKLSAgICAgICAgICAg
ICAgICBnLnB1c2goIiE9IiwgUikKLSAgICAgICAgICAgIH0pLCBoID0gUmVnRXhwKGguam9pbigi
fCIpKSwgZyA9IFJlZ0V4cChnLmpvaW4oInwiKSksIHkgPSBydChmLmNvbnRhaW5zKSB8fCBmLmNv
bXBhcmVEb2N1bWVudFBvc2l0aW9uID8gZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAgICAg
IHZhciBuID0gOSA9PT0gZS5ub2RlVHlwZSA/IGUuZG9jdW1lbnRFbGVtZW50IDogZSwKLSAgICAg
ICAgICAgICAgICAgICAgciA9IHQgJiYgdC5wYXJlbnROb2RlOwotICAgICAgICAgICAgICAgIHJl
dHVybiBlID09PSByIHx8ICEoIXIgfHwgMSAhPT0gci5ub2RlVHlwZSB8fCAhKG4uY29udGFpbnMg
PyBuLmNvbnRhaW5zKHIpIDogZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAmJiAxNiAmIGUuY29t
cGFyZURvY3VtZW50UG9zaXRpb24ocikpKQotICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKGUsIHQp
IHsKLSAgICAgICAgICAgICAgICBpZiAodCkKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHQg
PSB0LnBhcmVudE5vZGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9PT0gZSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITA7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuICExCi0gICAgICAgICAgICB9LCB2ID0gZi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiA/IGZ1
bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgICAgICB2YXIgcjsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZSA9PT0gdCA/ICh1ID0gITAsIDApIDogKHIgPSB0LmNvbXBhcmVEb2N1bWVudFBvc2l0
aW9uICYmIGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24gJiYgZS5jb21wYXJlRG9jdW1lbnRQb3Np
dGlvbih0KSkgPyAxICYgciB8fCBlLnBhcmVudE5vZGUgJiYgMTEgPT09IGUucGFyZW50Tm9kZS5u
b2RlVHlwZSA/IGUgPT09IG4gfHwgeSh3LCBlKSA/IC0xIDogdCA9PT0gbiB8fCB5KHcsIHQpID8g
MSA6IDAgOiA0ICYgciA/IC0xIDogMSA6IGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24gPyAtMSA6
IDEKLSAgICAgICAgICAgIH0gOiBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICAgICAgdmFy
IHIsCi0gICAgICAgICAgICAgICAgICAgIGkgPSAwLAotICAgICAgICAgICAgICAgICAgICBvID0g
ZS5wYXJlbnROb2RlLAotICAgICAgICAgICAgICAgICAgICBhID0gdC5wYXJlbnROb2RlLAotICAg
ICAgICAgICAgICAgICAgICBzID0gW2VdLAotICAgICAgICAgICAgICAgICAgICBsID0gW3RdOwot
ICAgICAgICAgICAgICAgIGlmIChlID09PSB0KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dSA9ICEwLCAwOwotICAgICAgICAgICAgICAgIGlmICghbyB8fCAhYSkKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGUgPT09IG4gPyAtMSA6IHQgPT09IG4gPyAxIDogbyA/IC0xIDogYSA/IDEg
OiAwOwotICAgICAgICAgICAgICAgIGlmIChvID09PSBhKQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdXQoZSwgdCk7Ci0gICAgICAgICAgICAgICAgciA9IGU7Ci0gICAgICAgICAgICAgICAg
d2hpbGUgKHIgPSByLnBhcmVudE5vZGUpCi0gICAgICAgICAgICAgICAgICAgIHMudW5zaGlmdChy
KTsKLSAgICAgICAgICAgICAgICByID0gdDsKLSAgICAgICAgICAgICAgICB3aGlsZSAociA9IHIu
cGFyZW50Tm9kZSkKLSAgICAgICAgICAgICAgICAgICAgbC51bnNoaWZ0KHIpOwotICAgICAgICAg
ICAgICAgIHdoaWxlIChzW2ldID09PSBsW2ldKQotICAgICAgICAgICAgICAgICAgICBpKys7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGkgPyB1dChzW2ldLCBsW2ldKSA6IHNbaV0gPT09IHcgPyAt
MSA6IGxbaV0gPT09IHcgPyAxIDogMAotICAgICAgICAgICAgfSwgdSA9ICExLCBbMCwgMF0uc29y
dCh2KSwgVC5kZXRlY3REdXBsaWNhdGVzID0gdSwgcCkgOiBwCi0gICAgICAgIH0sCi0gICAgICAg
IHN0Lm1hdGNoZXMgPSBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICByZXR1cm4gc3QoZSwg
bnVsbCwgbnVsbCwgdCkKLSAgICAgICAgfSwKLSAgICAgICAgc3QubWF0Y2hlc1NlbGVjdG9yID0g
ZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAgaWYgKChlLm93bmVyRG9jdW1lbnQgfHwgZSkg
IT09IHAgJiYgYyhlKSwgdCA9IHQucmVwbGFjZShaLCAiPSckMSddIiksICEoIVQubWF0Y2hlc1Nl
bGVjdG9yIHx8IGQgfHwgZyAmJiBnLnRlc3QodCkgfHwgaC50ZXN0KHQpKSkKLSAgICAgICAgICAg
ICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IG0uY2FsbChlLCB0KTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKG4gfHwgVC5kaXNjb25uZWN0ZWRNYXRjaCB8fCBlLmRvY3Vt
ZW50ICYmIDExICE9PSBlLmRvY3VtZW50Lm5vZGVUeXBlKQotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG4KLSAgICAgICAgICAgICAgICB9IGNhdGNoIChyKSB7fQotICAgICAgICAgICAg
cmV0dXJuIHN0KHQsIHAsIG51bGwsIFtlXSkubGVuZ3RoID4gMAotICAgICAgICB9LAotICAgICAg
ICBzdC5jb250YWlucyA9IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgIHJldHVybiAoZS5v
d25lckRvY3VtZW50IHx8IGUpICE9PSBwICYmIGMoZSksIHkoZSwgdCkKLSAgICAgICAgfSwKLSAg
ICAgICAgc3QuYXR0ciA9IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgIHZhciBuOwotICAg
ICAgICAgICAgcmV0dXJuIChlLm93bmVyRG9jdW1lbnQgfHwgZSkgIT09IHAgJiYgYyhlKSwgZCB8
fCAodCA9IHQudG9Mb3dlckNhc2UoKSksIChuID0gaS5hdHRySGFuZGxlW3RdKSA/IG4oZSkgOiBk
IHx8IFQuYXR0cmlidXRlcyA/IGUuZ2V0QXR0cmlidXRlKHQpIDogKChuID0gZS5nZXRBdHRyaWJ1
dGVOb2RlKHQpKSB8fCBlLmdldEF0dHJpYnV0ZSh0KSkgJiYgZVt0XSA9PT0gITAgPyB0IDogbiAm
JiBuLnNwZWNpZmllZCA/IG4udmFsdWUgOiBudWxsCi0gICAgICAgIH0sCi0gICAgICAgIHN0LmVy
cm9yID0gZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgdGhyb3cgRXJyb3IoIlN5bnRheCBlcnJv
ciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIgKyBlKQotICAgICAgICB9LAotICAgICAgICBz
dC51bmlxdWVTb3J0ID0gZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgdmFyIHQsCi0gICAgICAg
ICAgICAgICAgbiA9IFtdLAotICAgICAgICAgICAgICAgIHIgPSAxLAotICAgICAgICAgICAgICAg
IGkgPSAwOwotICAgICAgICAgICAgaWYgKHUgPSAhVC5kZXRlY3REdXBsaWNhdGVzLCBlLnNvcnQo
diksIHUpIHsKLSAgICAgICAgICAgICAgICBmb3IgKDsgdCA9IGVbcl07IHIrKykKLSAgICAgICAg
ICAgICAgICAgICAgdCA9PT0gZVtyIC0gMV0gJiYgKGkgPSBuLnB1c2gocikpOwotICAgICAgICAg
ICAgICAgIHdoaWxlIChpLS0pCi0gICAgICAgICAgICAgICAgICAgIGUuc3BsaWNlKG5baV0sIDEp
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gZQotICAgICAgICB9OwotICAgICAg
ICBmdW5jdGlvbiB1dChlLCB0KSB7Ci0gICAgICAgICAgICB2YXIgbiA9IHQgJiYgZSwKLSAgICAg
ICAgICAgICAgICByID0gbiAmJiAofnQuc291cmNlSW5kZXggfHwgaikgLSAofmUuc291cmNlSW5k
ZXggfHwgaik7Ci0gICAgICAgICAgICBpZiAocikKLSAgICAgICAgICAgICAgICByZXR1cm4gcjsK
LSAgICAgICAgICAgIGlmIChuKQotICAgICAgICAgICAgICAgIHdoaWxlIChuID0gbi5uZXh0U2li
bGluZykKLSAgICAgICAgICAgICAgICAgICAgaWYgKG4gPT09IHQpCi0gICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICByZXR1cm4gZSA/IDEgOiAtMQotICAgICAg
ICB9Ci0gICAgICAgIGZ1bmN0aW9uIGx0KGUpIHsKLSAgICAgICAgICAgIHJldHVybiBmdW5jdGlv
bih0KSB7Ci0gICAgICAgICAgICAgICAgdmFyIG4gPSB0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJpbnB1dCIgPT09IG4gJiYgdC50eXBlID09PSBlCi0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZnVuY3Rpb24gY3QoZSkgewotICAgICAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgICAgICAgICB2YXIgbiA9IHQubm9k
ZU5hbWUudG9Mb3dlckNhc2UoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gKCJpbnB1dCIgPT09
IG4gfHwgImJ1dHRvbiIgPT09IG4pICYmIHQudHlwZSA9PT0gZQotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICAgIGZ1bmN0aW9uIHB0KGUpIHsKLSAgICAgICAgICAgIHJldHVybiBvdChm
dW5jdGlvbih0KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHQgPSArdCwgb3QoZnVuY3Rpb24o
biwgcikgewotICAgICAgICAgICAgICAgICAgICB2YXIgaSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG8gPSBlKFtdLCBuLmxlbmd0aCwgdCksCi0gICAgICAgICAgICAgICAgICAgICAgICBhID0g
by5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlIChhLS0pCi0gICAgICAgICAgICAg
ICAgICAgICAgICBuW2kgPSBvW2FdXSAmJiAobltpXSA9ICEocltpXSA9IG5baV0pKQotICAgICAg
ICAgICAgICAgIH0pCi0gICAgICAgICAgICB9KQotICAgICAgICB9Ci0gICAgICAgIG8gPSBzdC5n
ZXRUZXh0ID0gZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgdmFyIHQsCi0gICAgICAgICAgICAg
ICAgbiA9ICIiLAotICAgICAgICAgICAgICAgIHIgPSAwLAotICAgICAgICAgICAgICAgIGkgPSBl
Lm5vZGVUeXBlOwotICAgICAgICAgICAgaWYgKGkpIHsKLSAgICAgICAgICAgICAgICBpZiAoMSA9
PT0gaSB8fCA5ID09PSBpIHx8IDExID09PSBpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgi
c3RyaW5nIiA9PSB0eXBlb2YgZS50ZXh0Q29udGVudCkKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBlLnRleHRDb250ZW50OwotICAgICAgICAgICAgICAgICAgICBmb3IgKGUgPSBlLmZp
cnN0Q2hpbGQ7IGU7IGUgPSBlLm5leHRTaWJsaW5nKQotICAgICAgICAgICAgICAgICAgICAgICAg
biArPSBvKGUpCi0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgzID09PSBpIHx8IDQgPT09IGkp
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlLm5vZGVWYWx1ZQotICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgZm9yICg7IHQgPSBlW3JdOyByKyspCi0gICAgICAgICAgICAg
ICAgICAgIG4gKz0gbyh0KTsKLSAgICAgICAgICAgIHJldHVybiBuCi0gICAgICAgIH0sCi0gICAg
ICAgIGkgPSBzdC5zZWxlY3RvcnMgPSB7Ci0gICAgICAgICAgICBjYWNoZUxlbmd0aDogNTAsCi0g
ICAgICAgICAgICBjcmVhdGVQc2V1ZG86IG90LAotICAgICAgICAgICAgbWF0Y2g6IFUsCi0gICAg
ICAgICAgICBmaW5kOiB7fSwKLSAgICAgICAgICAgIHJlbGF0aXZlOiB7Ci0gICAgICAgICAgICAg
ICAgIj4iOiB7Ci0gICAgICAgICAgICAgICAgICAgIGRpcjogInBhcmVudE5vZGUiLAotICAgICAg
ICAgICAgICAgICAgICBmaXJzdDogITAKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg
ICAgICIgIjogewotICAgICAgICAgICAgICAgICAgICBkaXI6ICJwYXJlbnROb2RlIgotICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgIisiOiB7Ci0gICAgICAgICAgICAgICAgICAg
IGRpcjogInByZXZpb3VzU2libGluZyIsCi0gICAgICAgICAgICAgICAgICAgIGZpcnN0OiAhMAot
ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgIn4iOiB7Ci0gICAgICAgICAgICAg
ICAgICAgIGRpcjogInByZXZpb3VzU2libGluZyIKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9LAotICAgICAgICAgICAgcHJlRmlsdGVyOiB7Ci0gICAgICAgICAgICAgICAgQVRUUjog
ZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVsxXSA9IGVbMV0ucmVw
bGFjZShldCwgdHQpLCBlWzNdID0gKGVbNF0gfHwgZVs1XSB8fCAiIikucmVwbGFjZShldCwgdHQp
LCAifj0iID09PSBlWzJdICYmIChlWzNdID0gIiAiICsgZVszXSArICIgIiksIGUuc2xpY2UoMCwg
NCkKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIENISUxEOiBmdW5jdGlvbihl
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlWzFdID0gZVsxXS50b0xvd2VyQ2FzZSgp
LCAibnRoIiA9PT0gZVsxXS5zbGljZSgwLCAzKSA/IChlWzNdIHx8IHN0LmVycm9yKGVbMF0pLCBl
WzRdID0gKyhlWzRdID8gZVs1XSArIChlWzZdIHx8IDEpIDogMiAqICgiZXZlbiIgPT09IGVbM10g
fHwgIm9kZCIgPT09IGVbM10pKSwgZVs1XSA9ICsoZVs3XSArIGVbOF0gfHwgIm9kZCIgPT09IGVb
M10pKSA6IGVbM10gJiYgc3QuZXJyb3IoZVswXSksIGUKLSAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgIFBTRVVETzogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgICB2
YXIgdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAhZVs1XSAmJiBlWzJdOwotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gVS5DSElMRC50ZXN0KGVbMF0pID8gbnVsbCA6IChlWzRdID8g
ZVsyXSA9IGVbNF0gOiBuICYmIHoudGVzdChuKSAmJiAodCA9IGZ0KG4sICEwKSkgJiYgKHQgPSBu
LmluZGV4T2YoIikiLCBuLmxlbmd0aCAtIHQpIC0gbi5sZW5ndGgpICYmIChlWzBdID0gZVswXS5z
bGljZSgwLCB0KSwgZVsyXSA9IG4uc2xpY2UoMCwgdCkpLCBlLnNsaWNlKDAsIDMpKQotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBmaWx0ZXI6IHsKLSAgICAg
ICAgICAgICAgICBUQUc6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICIqIiA9PT0gZSA/IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICEwCi0gICAgICAgICAgICAgICAgICAgIH0gOiAoZSA9IGUucmVwbGFjZShldCwgdHQpLnRvTG93
ZXJDYXNlKCksIGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
Lm5vZGVOYW1lICYmIHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gZQotICAgICAgICAgICAg
ICAgICAgICB9KQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgQ0xBU1M6IGZ1
bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBrW2UgKyAiICJdOwotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdCB8fCAodCA9IFJlZ0V4cCgiKF58IiArIF8gKyAiKSIg
KyBlICsgIigiICsgXyArICJ8JCkiKSkgJiYgayhlLCBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHQudGVzdChlLmNsYXNzTmFtZSB8fCB0eXBlb2YgZS5n
ZXRBdHRyaWJ1dGUgIT09IEEgJiYgZS5nZXRBdHRyaWJ1dGUoImNsYXNzIikgfHwgIiIpCi0gICAg
ICAgICAgICAgICAgICAgICAgICB9KQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgQVRUUjogZnVuY3Rpb24oZSwgdCwgbikgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZnVuY3Rpb24ocikgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBzdC5hdHRyKHIs
IGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gaSA/ICIhPSIgPT09
IHQgOiB0ID8gKGkgKz0gIiIsICI9IiA9PT0gdCA/IGkgPT09IG4gOiAiIT0iID09PSB0ID8gaSAh
PT0gbiA6ICJePSIgPT09IHQgPyBuICYmIDAgPT09IGkuaW5kZXhPZihuKSA6ICIqPSIgPT09IHQg
PyBuICYmIGkuaW5kZXhPZihuKSA+IC0xIDogIiQ9IiA9PT0gdCA/IG4gJiYgaS5zbGljZSgtbi5s
ZW5ndGgpID09PSBuIDogIn49IiA9PT0gdCA/ICgiICIgKyBpICsgIiAiKS5pbmRleE9mKG4pID4g
LTEgOiAifD0iID09PSB0ID8gaSA9PT0gbiB8fCBpLnNsaWNlKDAsIG4ubGVuZ3RoICsgMSkgPT09
IG4gKyAiLSIgOiAhMSkgOiAhMAotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgICAgICBDSElMRDogZnVuY3Rpb24oZSwgdCwgbiwgciwgaSkgewot
ICAgICAgICAgICAgICAgICAgICB2YXIgbyA9ICJudGgiICE9PSBlLnNsaWNlKDAsIDMpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgYSA9ICJsYXN0IiAhPT0gZS5zbGljZSgtNCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICBzID0gIm9mLXR5cGUiID09PSB0OwotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gMSA9PT0gciAmJiAwID09PSBpID8gZnVuY3Rpb24oZSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuICEhZS5wYXJlbnROb2RlCi0gICAgICAgICAgICAgICAgICAgIH0g
OiBmdW5jdGlvbih0LCBuLCB1KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZyA9IG8gIT09IGEgPyAibmV4dFNpYmxpbmciIDogInByZXZpb3VzU2li
bGluZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IHQucGFyZW50Tm9kZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcyAmJiB0Lm5vZGVOYW1lLnRvTG93ZXJDYXNl
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9ICF1ICYmICFzOwotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoZykgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHQ7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3aGlsZSAocCA9IHBbZ10pCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHMgPyBwLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHkg
OiAxID09PSBwLm5vZGVUeXBlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gITE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
ID0gZyA9ICJvbmx5IiA9PT0gZSAmJiAhaCAmJiAibmV4dFNpYmxpbmciCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuICEwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChoID0gW2EgPyBtLmZpcnN0Q2hpbGQgOiBtLmxhc3RDaGlsZF0sIGEgJiYg
dikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gbVt4XSB8fCAobVt4XSA9
IHt9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGNbZV0gfHwgW10sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBsWzBdID09PSBOICYmIGxbMV0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBsWzBdID09PSBOICYmIGxbMl0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBkICYmIG0uY2hpbGROb2Rlc1tkXTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHAgPSArK2QgJiYgcCAmJiBw
W2ddIHx8IChmID0gZCA9IDApIHx8IGgucG9wKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoMSA9PT0gcC5ub2RlVHlwZSAmJiArK2YgJiYgcCA9PT0gdCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbZV0gPSBbTiwgZCwgZl07Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKHYgJiYgKGwgPSAodFt4XSB8fCAodFt4XSA9IHt9KSlbZV0pICYmIGxbMF0gPT09
IE4pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBsWzFdOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2hpbGUgKHAgPSArK2QgJiYgcCAmJiBwW2ddIHx8IChmID0gZCA9IDApIHx8IGgucG9wKCkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHMgPyBwLm5vZGVOYW1lLnRv
TG93ZXJDYXNlKCkgPT09IHkgOiAxID09PSBwLm5vZGVUeXBlKSAmJiArK2YgJiYgKHYgJiYgKChw
W3hdIHx8IChwW3hdID0ge30pKVtlXSA9IFtOLCBmXSksIHAgPT09IHQpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmIC09IGksIGYgPT09IHIgfHwgMCA9PT0gZiAlIHIgJiYgZiAvIHIgPj0g
MAotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBQU0VVRE86IGZ1bmN0aW9uKGUsIHQpIHsK
LSAgICAgICAgICAgICAgICAgICAgdmFyIG4sCi0gICAgICAgICAgICAgICAgICAgICAgICByID0g
aS5wc2V1ZG9zW2VdIHx8IGkuc2V0RmlsdGVyc1tlLnRvTG93ZXJDYXNlKCldIHx8IHN0LmVycm9y
KCJ1bnN1cHBvcnRlZCBwc2V1ZG86ICIgKyBlKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHJbeF0gPyByKHQpIDogci5sZW5ndGggPiAxID8gKG4gPSBbZSwgZSwgIiIsIHRdLCBpLnNldEZp
bHRlcnMuaGFzT3duUHJvcGVydHkoZS50b0xvd2VyQ2FzZSgpKSA/IG90KGZ1bmN0aW9uKGUsIG4p
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG8gPSByKGUsIHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBvLmxl
bmd0aDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChhLS0pCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaSA9IE0uY2FsbChlLCBvW2FdKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlW2ldID0gIShuW2ldID0gb1thXSkKLSAgICAgICAgICAgICAgICAgICAgfSkgOiBm
dW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcihlLCAwLCBuKQot
ICAgICAgICAgICAgICAgICAgICB9KSA6IHIKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9LAotICAgICAgICAgICAgcHNldWRvczogewotICAgICAgICAgICAgICAgIG5vdDogb3QoZnVu
Y3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IFtdLAotICAgICAgICAgICAg
ICAgICAgICAgICAgbiA9IFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgciA9IHMoZS5yZXBs
YWNlKFcsICIkMSIpKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJbeF0gPyBvdChmdW5j
dGlvbihlLCB0LCBuLCBpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhID0gcihlLCBudWxsLCBpLCBbXSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcyA9IGUubGVuZ3RoOwotICAgICAgICAgICAgICAgICAgICAgICAg
d2hpbGUgKHMtLSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAobyA9IGFbc10pICYmIChl
W3NdID0gISh0W3NdID0gbykpCi0gICAgICAgICAgICAgICAgICAgIH0pIDogZnVuY3Rpb24oZSwg
aSwgbykgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRbMF0gPSBlLCByKHQsIG51
bGwsIG8sIG4pLCAhbi5wb3AoKQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfSksCi0gICAgICAgICAgICAgICAgaGFzOiBvdChmdW5jdGlvbihlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmdW5jdGlvbih0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gc3QoZSwgdCkubGVuZ3RoID4gMAotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfSksCi0gICAgICAgICAgICAgICAgY29udGFpbnM6IG90KGZ1bmN0aW9uKGUpIHsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAodC50ZXh0Q29udGVudCB8fCB0LmlubmVyVGV4dCB8fCBvKHQpKS5p
bmRleE9mKGUpID4gLTEKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0p
LAotICAgICAgICAgICAgICAgIGxhbmc6IG90KGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIFgudGVzdChlIHx8ICIiKSB8fCBzdC5lcnJvcigidW5zdXBwb3J0ZWQgbGFu
ZzogIiArIGUpLCBlID0gZS5yZXBsYWNlKGV0LCB0dCkudG9Mb3dlckNhc2UoKSwgZnVuY3Rpb24o
dCkgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG47Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBkbyBpZiAobiA9IGQgPyB0LmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKSB8fCB0LmdldEF0
dHJpYnV0ZSgibGFuZyIpIDogdC5sYW5nKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBuID0gbi50b0xvd2VyQ2FzZSgpLCBuID09PSBlIHx8IDAgPT09IG4uaW5kZXhPZihlICsg
Ii0iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgodCA9IHQucGFyZW50Tm9kZSkg
JiYgMSA9PT0gdC5ub2RlVHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0pLAotICAgICAgICAgICAg
ICAgIHRhcmdldDogZnVuY3Rpb24odCkgewotICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUu
bG9jYXRpb24gJiYgZS5sb2NhdGlvbi5oYXNoOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
biAmJiBuLnNsaWNlKDEpID09PSB0LmlkCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICAgICByb290OiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlID09
PSBmCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBmb2N1czogZnVuY3Rpb24o
ZSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9PT0gcC5hY3RpdmVFbGVtZW50ICYm
ICghcC5oYXNGb2N1cyB8fCBwLmhhc0ZvY3VzKCkpICYmICEhKGUudHlwZSB8fCBlLmhyZWYgfHwg
fmUudGFiSW5kZXgpCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBlbmFibGVk
OiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmRpc2FibGVkID09
PSAhMQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0
aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuZGlzYWJsZWQgPT09ICEwCi0g
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBjaGVja2VkOiBmdW5jdGlvbihlKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOwot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gImlucHV0IiA9PT0gdCAmJiAhIWUuY2hlY2tlZCB8
fCAib3B0aW9uIiA9PT0gdCAmJiAhIWUuc2VsZWN0ZWQKLSAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgIHNlbGVjdGVkOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBlLnBhcmVudE5vZGUgJiYgZS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsIGUuc2Vs
ZWN0ZWQgPT09ICEwCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBlbXB0eTog
ZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgICBmb3IgKGUgPSBlLmZpcnN0Q2hpbGQ7
IGU7IGUgPSBlLm5leHRTaWJsaW5nKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUubm9k
ZU5hbWUgPiAiQCIgfHwgMyA9PT0gZS5ub2RlVHlwZSB8fCA0ID09PSBlLm5vZGVUeXBlKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMTsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuICEwCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBwYXJlbnQ6IGZ1
bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFpLnBzZXVkb3MuZW1wdHko
ZSkKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIGhlYWRlcjogZnVuY3Rpb24o
ZSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gUS50ZXN0KGUubm9kZU5hbWUpCi0gICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBpbnB1dDogZnVuY3Rpb24oZSkgewotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gRy50ZXN0KGUubm9kZU5hbWUpCi0gICAgICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgICAgICBidXR0b246IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgdmFyIHQgPSBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiAiaW5wdXQiID09PSB0ICYmICJidXR0b24iID09PSBlLnR5cGUgfHwgImJ1
dHRvbiIgPT09IHQKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHRleHQ6IGZ1
bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHQ7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiAiaW5wdXQiID09PSBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgJiYgInRleHQi
ID09PSBlLnR5cGUgJiYgKG51bGwgPT0gKHQgPSBlLmdldEF0dHJpYnV0ZSgidHlwZSIpKSB8fCB0
LnRvTG93ZXJDYXNlKCkgPT09IGUudHlwZSkKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAg
ICAgICAgIGZpcnN0OiBwdChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFswXQotICAgICAgICAgICAgICAgIH0pLAotICAgICAgICAgICAgICAgIGxhc3Q6IHB0KGZ1bmN0
aW9uKGUsIHQpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFt0IC0gMV0KLSAgICAgICAg
ICAgICAgICB9KSwKLSAgICAgICAgICAgICAgICBlcTogcHQoZnVuY3Rpb24oZSwgdCwgbikgewot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzAgPiBuID8gbiArIHQgOiBuXQotICAgICAgICAg
ICAgICAgIH0pLAotICAgICAgICAgICAgICAgIGV2ZW46IHB0KGZ1bmN0aW9uKGUsIHQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgdmFyIG4gPSAwOwotICAgICAgICAgICAgICAgICAgICBmb3IgKDsg
dCA+IG47IG4gKz0gMikKLSAgICAgICAgICAgICAgICAgICAgICAgIGUucHVzaChuKTsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGUKLSAgICAgICAgICAgICAgICB9KSwKLSAgICAgICAgICAg
ICAgICBvZGQ6IHB0KGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIG4g
PSAxOwotICAgICAgICAgICAgICAgICAgICBmb3IgKDsgdCA+IG47IG4gKz0gMikKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGUucHVzaChuKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUK
LSAgICAgICAgICAgICAgICB9KSwKLSAgICAgICAgICAgICAgICBsdDogcHQoZnVuY3Rpb24oZSwg
dCwgbikgewotICAgICAgICAgICAgICAgICAgICB2YXIgciA9IDAgPiBuID8gbiArIHQgOiBuOwot
ICAgICAgICAgICAgICAgICAgICBmb3IgKDsgLS1yID49IDA7KQotICAgICAgICAgICAgICAgICAg
ICAgICAgZS5wdXNoKHIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQotICAgICAgICAg
ICAgICAgIH0pLAotICAgICAgICAgICAgICAgIGd0OiBwdChmdW5jdGlvbihlLCB0LCBuKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHZhciByID0gMCA+IG4gPyBuICsgdCA6IG47Ci0gICAgICAgICAg
ICAgICAgICAgIGZvciAoOyB0ID4gKytyOykKLSAgICAgICAgICAgICAgICAgICAgICAgIGUucHVz
aChyKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKLSAgICAgICAgICAgICAgICB9KQot
ICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgICAgICBmb3IgKG4gaW4gewotICAgICAgICAg
ICAgcmFkaW86ICEwLAotICAgICAgICAgICAgY2hlY2tib3g6ICEwLAotICAgICAgICAgICAgZmls
ZTogITAsCi0gICAgICAgICAgICBwYXNzd29yZDogITAsCi0gICAgICAgICAgICBpbWFnZTogITAK
LSAgICAgICAgfSkKLSAgICAgICAgICAgIGkucHNldWRvc1tuXSA9IGx0KG4pOwotICAgICAgICBm
b3IgKG4gaW4gewotICAgICAgICAgICAgc3VibWl0OiAhMCwKLSAgICAgICAgICAgIHJlc2V0OiAh
MAotICAgICAgICB9KQotICAgICAgICAgICAgaS5wc2V1ZG9zW25dID0gY3Qobik7Ci0gICAgICAg
IGZ1bmN0aW9uIGZ0KGUsIHQpIHsKLSAgICAgICAgICAgIHZhciBuLAotICAgICAgICAgICAgICAg
IHIsCi0gICAgICAgICAgICAgICAgbywKLSAgICAgICAgICAgICAgICBhLAotICAgICAgICAgICAg
ICAgIHMsCi0gICAgICAgICAgICAgICAgdSwKLSAgICAgICAgICAgICAgICBsLAotICAgICAgICAg
ICAgICAgIGMgPSBFW2UgKyAiICJdOwotICAgICAgICAgICAgaWYgKGMpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHQgPyAwIDogYy5zbGljZSgwKTsKLSAgICAgICAgICAgIHMgPSBlLAotICAgICAg
ICAgICAgdSA9IFtdLAotICAgICAgICAgICAgbCA9IGkucHJlRmlsdGVyOwotICAgICAgICAgICAg
d2hpbGUgKHMpIHsKLSAgICAgICAgICAgICAgICAoIW4gfHwgKHIgPSAkLmV4ZWMocykpKSAmJiAo
ciAmJiAocyA9IHMuc2xpY2UoclswXS5sZW5ndGgpIHx8IHMpLCB1LnB1c2gobyA9IFtdKSksCi0g
ICAgICAgICAgICAgICAgbiA9ICExLAotICAgICAgICAgICAgICAgIChyID0gSS5leGVjKHMpKSAm
JiAobiA9IHIuc2hpZnQoKSwgby5wdXNoKHsKLSAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG4s
Ci0gICAgICAgICAgICAgICAgICAgIHR5cGU6IHJbMF0ucmVwbGFjZShXLCAiICIpCi0gICAgICAg
ICAgICAgICAgfSksIHMgPSBzLnNsaWNlKG4ubGVuZ3RoKSk7Ci0gICAgICAgICAgICAgICAgZm9y
IChhIGluIGkuZmlsdGVyKQotICAgICAgICAgICAgICAgICAgICAhKHIgPSBVW2FdLmV4ZWMocykp
IHx8IGxbYV0gJiYgIShyID0gbFthXShyKSkgfHwgKG4gPSByLnNoaWZ0KCksIG8ucHVzaCh7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
IHR5cGU6IGEsCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVzOiByCi0gICAgICAgICAg
ICAgICAgICAgIH0pLCBzID0gcy5zbGljZShuLmxlbmd0aCkpOwotICAgICAgICAgICAgICAgIGlm
ICghbikKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHJldHVybiB0ID8gcy5sZW5ndGggOiBzID8gc3QuZXJyb3IoZSkgOiBFKGUsIHUpLnNsaWNl
KDApCi0gICAgICAgIH0KLSAgICAgICAgZnVuY3Rpb24gZHQoZSkgewotICAgICAgICAgICAgdmFy
IHQgPSAwLAotICAgICAgICAgICAgICAgIG4gPSBlLmxlbmd0aCwKLSAgICAgICAgICAgICAgICBy
ID0gIiI7Ci0gICAgICAgICAgICBmb3IgKDsgbiA+IHQ7IHQrKykKLSAgICAgICAgICAgICAgICBy
ICs9IGVbdF0udmFsdWU7Ci0gICAgICAgICAgICByZXR1cm4gcgotICAgICAgICB9Ci0gICAgICAg
IGZ1bmN0aW9uIGh0KGUsIHQsIG4pIHsKLSAgICAgICAgICAgIHZhciBpID0gdC5kaXIsCi0gICAg
ICAgICAgICAgICAgbyA9IG4gJiYgInBhcmVudE5vZGUiID09PSBpLAotICAgICAgICAgICAgICAg
IGEgPSBDKys7Ci0gICAgICAgICAgICByZXR1cm4gdC5maXJzdCA/IGZ1bmN0aW9uKHQsIG4sIHIp
IHsKLSAgICAgICAgICAgICAgICB3aGlsZSAodCA9IHRbaV0pCi0gICAgICAgICAgICAgICAgICAg
IGlmICgxID09PSB0Lm5vZGVUeXBlIHx8IG8pCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZSh0LCBuLCByKQotICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKHQsIG4sIHMpIHsKLSAgICAg
ICAgICAgICAgICB2YXIgdSwKLSAgICAgICAgICAgICAgICAgICAgbCwKLSAgICAgICAgICAgICAg
ICAgICAgYywKLSAgICAgICAgICAgICAgICAgICAgcCA9IE4gKyAiICIgKyBhOwotICAgICAgICAg
ICAgICAgIGlmIChzKSB7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlICh0ID0gdFtpXSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgoMSA9PT0gdC5ub2RlVHlwZSB8fCBvKSAmJiBlKHQs
IG4sIHMpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAotICAgICAgICAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICB3aGlsZSAodCA9IHRbaV0pCi0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoMSA9PT0gdC5ub2RlVHlwZSB8fCBvKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChjID0gdFt4XSB8fCAodFt4XSA9IHt9KSwgKGwgPSBjW2ld
KSAmJiBsWzBdID09PSBwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgo
dSA9IGxbMV0pID09PSAhMCB8fCB1ID09PSByKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHUgPT09ICEwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIGlmIChsID0gY1tpXSA9IFtwXSwgbFsxXSA9IGUodCwgbiwgcykgfHwgciwgbFsxXSA9PT0g
ITApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICAgIGZ1bmN0aW9uIGd0KGUpIHsKLSAgICAgICAgICAgIHJl
dHVybiBlLmxlbmd0aCA+IDEgPyBmdW5jdGlvbih0LCBuLCByKSB7Ci0gICAgICAgICAgICAgICAg
dmFyIGkgPSBlLmxlbmd0aDsKLSAgICAgICAgICAgICAgICB3aGlsZSAoaS0tKQotICAgICAgICAg
ICAgICAgICAgICBpZiAoIWVbaV0odCwgbiwgcikpCi0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gITE7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICEwCi0gICAgICAgICAgICB9IDogZVsw
XQotICAgICAgICB9Ci0gICAgICAgIGZ1bmN0aW9uIG10KGUsIHQsIG4sIHIsIGkpIHsKLSAgICAg
ICAgICAgIHZhciBvLAotICAgICAgICAgICAgICAgIGEgPSBbXSwKLSAgICAgICAgICAgICAgICBz
ID0gMCwKLSAgICAgICAgICAgICAgICB1ID0gZS5sZW5ndGgsCi0gICAgICAgICAgICAgICAgbCA9
IG51bGwgIT0gdDsKLSAgICAgICAgICAgIGZvciAoOyB1ID4gczsgcysrKQotICAgICAgICAgICAg
ICAgIChvID0gZVtzXSkgJiYgKCFuIHx8IG4obywgciwgaSkpICYmIChhLnB1c2gobyksIGwgJiYg
dC5wdXNoKHMpKTsKLSAgICAgICAgICAgIHJldHVybiBhCi0gICAgICAgIH0KLSAgICAgICAgZnVu
Y3Rpb24geXQoZSwgdCwgbiwgciwgaSwgbykgewotICAgICAgICAgICAgcmV0dXJuIHIgJiYgIXJb
eF0gJiYgKHIgPSB5dChyKSksIGkgJiYgIWlbeF0gJiYgKGkgPSB5dChpLCBvKSksIG90KGZ1bmN0
aW9uKG8sIGEsIHMsIHUpIHsKLSAgICAgICAgICAgICAgICB2YXIgbCwKLSAgICAgICAgICAgICAg
ICAgICAgYywKLSAgICAgICAgICAgICAgICAgICAgcCwKLSAgICAgICAgICAgICAgICAgICAgZiA9
IFtdLAotICAgICAgICAgICAgICAgICAgICBkID0gW10sCi0gICAgICAgICAgICAgICAgICAgIGgg
PSBhLmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgZyA9IG8gfHwgeHQodCB8fCAiKiIsIHMu
bm9kZVR5cGUgPyBbc10gOiBzLCBbXSksCi0gICAgICAgICAgICAgICAgICAgIG0gPSAhZSB8fCAh
byAmJiB0ID8gZyA6IG10KGcsIGYsIGUsIHMsIHUpLAotICAgICAgICAgICAgICAgICAgICB5ID0g
biA/IGkgfHwgKG8gPyBlIDogaCB8fCByKSA/IFtdIDogYSA6IG07Ci0gICAgICAgICAgICAgICAg
aWYgKG4gJiYgbihtLCB5LCBzLCB1KSwgcikgewotICAgICAgICAgICAgICAgICAgICBsID0gbXQo
eSwgZCksCi0gICAgICAgICAgICAgICAgICAgIHIobCwgW10sIHMsIHUpLAotICAgICAgICAgICAg
ICAgICAgICBjID0gbC5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlIChjLS0pCi0g
ICAgICAgICAgICAgICAgICAgICAgICAocCA9IGxbY10pICYmICh5W2RbY11dID0gIShtW2RbY11d
ID0gcCkpCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChvKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChpIHx8IGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IFtdLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGMgPSB5Lmxlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3aGlsZSAoYy0tKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocCA9IHlbY10p
ICYmIGwucHVzaChtW2NdID0gcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaShudWxs
LCB5ID0gW10sIGwsIHUpCi0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBjID0geS5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAo
Yy0tKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwID0geVtjXSkgJiYgKGwgPSBpID8g
TS5jYWxsKG8sIHApIDogZltjXSkgPiAtMSAmJiAob1tsXSA9ICEoYVtsXSA9IHApKQotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgIHkgPSBtdCh5ID09PSBhID8geS5zcGxpY2UoaCwgeS5sZW5ndGgpIDogeSksCi0gICAgICAg
ICAgICAgICAgICAgIGkgPyBpKG51bGwsIGEsIHksIHUpIDogSC5hcHBseShhLCB5KQotICAgICAg
ICAgICAgfSkKLSAgICAgICAgfQotICAgICAgICBmdW5jdGlvbiB2dChlKSB7Ci0gICAgICAgICAg
ICB2YXIgdCwKLSAgICAgICAgICAgICAgICBuLAotICAgICAgICAgICAgICAgIHIsCi0gICAgICAg
ICAgICAgICAgbyA9IGUubGVuZ3RoLAotICAgICAgICAgICAgICAgIGEgPSBpLnJlbGF0aXZlW2Vb
MF0udHlwZV0sCi0gICAgICAgICAgICAgICAgcyA9IGEgfHwgaS5yZWxhdGl2ZVsiICJdLAotICAg
ICAgICAgICAgICAgIHUgPSBhID8gMSA6IDAsCi0gICAgICAgICAgICAgICAgYyA9IGh0KGZ1bmN0
aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPT09IHQKLSAgICAgICAgICAg
ICAgICB9LCBzLCAhMCksCi0gICAgICAgICAgICAgICAgcCA9IGh0KGZ1bmN0aW9uKGUpIHsKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIE0uY2FsbCh0LCBlKSA+IC0xCi0gICAgICAgICAgICAg
ICAgfSwgcywgITApLAotICAgICAgICAgICAgICAgIGYgPSBbZnVuY3Rpb24oZSwgbiwgcikgewot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWEgJiYgKHIgfHwgbiAhPT0gbCkgfHwgKCh0ID0g
bikubm9kZVR5cGUgPyBjKGUsIG4sIHIpIDogcChlLCBuLCByKSkKLSAgICAgICAgICAgICAgICB9
XTsKLSAgICAgICAgICAgIGZvciAoOyBvID4gdTsgdSsrKQotICAgICAgICAgICAgICAgIGlmIChu
ID0gaS5yZWxhdGl2ZVtlW3VdLnR5cGVdKQotICAgICAgICAgICAgICAgICAgICBmID0gW2h0KGd0
KGYpLCBuKV07Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChuID0gaS5maWx0ZXJbZVt1XS50eXBlXS5hcHBseShudWxsLCBlW3VdLm1hdGNoZXMpLCBuW3hd
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSArK3U7IG8gPiByOyByKyspCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkucmVsYXRpdmVbZVtyXS50eXBlXSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4geXQodSA+IDEgJiYgZ3QoZiksIHUgPiAxICYmIGR0KGUuc2xpY2UoMCwgdSAt
IDEpKS5yZXBsYWNlKFcsICIkMSIpLCBuLCByID4gdSAmJiB2dChlLnNsaWNlKHUsIHIpKSwgbyA+
IHIgJiYgdnQoZSA9IGUuc2xpY2UocikpLCBvID4gciAmJiBkdChlKSkKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICBmLnB1c2gobikKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICByZXR1cm4gZ3QoZikKLSAgICAgICAgfQotICAgICAgICBmdW5jdGlvbiBi
dChlLCB0KSB7Ci0gICAgICAgICAgICB2YXIgbiA9IDAsCi0gICAgICAgICAgICAgICAgbyA9IHQu
bGVuZ3RoID4gMCwKLSAgICAgICAgICAgICAgICBhID0gZS5sZW5ndGggPiAwLAotICAgICAgICAg
ICAgICAgIHMgPSBmdW5jdGlvbihzLCB1LCBjLCBmLCBkKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHZhciBoLAotICAgICAgICAgICAgICAgICAgICAgICAgZywKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG0sCi0gICAgICAgICAgICAgICAgICAgICAgICB5ID0gW10sCi0gICAgICAgICAgICAgICAg
ICAgICAgICB2ID0gMCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGIgPSAiMCIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICB4ID0gcyAmJiBbXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHcg
PSBudWxsICE9IGQsCi0gICAgICAgICAgICAgICAgICAgICAgICBUID0gbCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEMgPSBzIHx8IGEgJiYgaS5maW5kLlRBRygiKiIsIGQgJiYgdS5wYXJlbnRO
b2RlIHx8IHUpLAotICAgICAgICAgICAgICAgICAgICAgICAgayA9IE4gKz0gbnVsbCA9PSBUID8g
MSA6IE1hdGgucmFuZG9tKCkgfHwgLjE7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodyAmJiAo
bCA9IHUgIT09IHAgJiYgdSwgciA9IG4pOyBudWxsICE9IChoID0gQ1tiXSk7IGIrKykgewotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGEgJiYgaCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGcgPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChtID0gZVtn
KytdKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobShoLCB1LCBjKSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi5wdXNoKGgpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgJiYgKE4gPSBrLCByID0g
KytuKQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
byAmJiAoKGggPSAhbSAmJiBoKSAmJiB2LS0sIHMgJiYgeC5wdXNoKGgpKQotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ICs9IGIsIG8gJiYgYiAhPT0gdikg
ewotICAgICAgICAgICAgICAgICAgICAgICAgZyA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB3aGlsZSAobSA9IHRbZysrXSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtKHgsIHks
IHUsIGMpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAodiA+IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdoaWxlIChiLS0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4W2JdIHx8
IHlbYl0gfHwgKHlbYl0gPSBMLmNhbGwoZikpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHkgPSBtdCh5KQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICAgICAgSC5hcHBseShmLCB5KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHcgJiYgIXMgJiYg
eS5sZW5ndGggPiAwICYmIHYgKyB0Lmxlbmd0aCA+IDEgJiYgc3QudW5pcXVlU29ydChmKQotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB3ICYmIChOID0g
aywgbCA9IFQpLCB4Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHJldHVybiBvID8g
b3QocykgOiBzCi0gICAgICAgIH0KLSAgICAgICAgcyA9IHN0LmNvbXBpbGUgPSBmdW5jdGlvbihl
LCB0KSB7Ci0gICAgICAgICAgICB2YXIgbiwKLSAgICAgICAgICAgICAgICByID0gW10sCi0gICAg
ICAgICAgICAgICAgaSA9IFtdLAotICAgICAgICAgICAgICAgIG8gPSBTW2UgKyAiICJdOwotICAg
ICAgICAgICAgaWYgKCFvKSB7Ci0gICAgICAgICAgICAgICAgdCB8fCAodCA9IGZ0KGUpKSwKLSAg
ICAgICAgICAgICAgICBuID0gdC5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKG4tLSkK
LSAgICAgICAgICAgICAgICAgICAgbyA9IHZ0KHRbbl0pLAotICAgICAgICAgICAgICAgICAgICBv
W3hdID8gci5wdXNoKG8pIDogaS5wdXNoKG8pOwotICAgICAgICAgICAgICAgIG8gPSBTKGUsIGJ0
KGksIHIpKQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG8KLSAgICAgICAgfTsK
LSAgICAgICAgZnVuY3Rpb24geHQoZSwgdCwgbikgewotICAgICAgICAgICAgdmFyIHIgPSAwLAot
ICAgICAgICAgICAgICAgIGkgPSB0Lmxlbmd0aDsKLSAgICAgICAgICAgIGZvciAoOyBpID4gcjsg
cisrKQotICAgICAgICAgICAgICAgIHN0KGUsIHRbcl0sIG4pOwotICAgICAgICAgICAgcmV0dXJu
IG4KLSAgICAgICAgfQotICAgICAgICBmdW5jdGlvbiB3dChlLCB0LCBuLCByKSB7Ci0gICAgICAg
ICAgICB2YXIgbywKLSAgICAgICAgICAgICAgICBhLAotICAgICAgICAgICAgICAgIHUsCi0gICAg
ICAgICAgICAgICAgbCwKLSAgICAgICAgICAgICAgICBjLAotICAgICAgICAgICAgICAgIHAgPSBm
dChlKTsKLSAgICAgICAgICAgIGlmICghciAmJiAxID09PSBwLmxlbmd0aCkgewotICAgICAgICAg
ICAgICAgIGlmIChhID0gcFswXSA9IHBbMF0uc2xpY2UoMCksIGEubGVuZ3RoID4gMiAmJiAiSUQi
ID09PSAodSA9IGFbMF0pLnR5cGUgJiYgOSA9PT0gdC5ub2RlVHlwZSAmJiAhZCAmJiBpLnJlbGF0
aXZlW2FbMV0udHlwZV0pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBpLmZpbmQuSUQo
dS5tYXRjaGVzWzBdLnJlcGxhY2UoZXQsIHR0KSwgdClbMF0sICF0KQotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG47Ci0gICAgICAgICAgICAgICAgICAgIGUgPSBlLnNsaWNlKGEuc2hp
ZnQoKS52YWx1ZS5sZW5ndGgpCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG8g
PSBVLm5lZWRzQ29udGV4dC50ZXN0KGUpID8gMCA6IGEubGVuZ3RoOwotICAgICAgICAgICAgICAg
IHdoaWxlIChvLS0pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSBhW29dLCBpLnJlbGF0
aXZlW2wgPSB1LnR5cGVdKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICgoYyA9IGkuZmluZFtsXSkgJiYgKHIgPSBjKHUubWF0Y2hlc1swXS5y
ZXBsYWNlKGV0LCB0dCksIFYudGVzdChhWzBdLnR5cGUpICYmIHQucGFyZW50Tm9kZSB8fCB0KSkp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhLnNwbGljZShvLCAxKSwgZSA9IHIubGVu
Z3RoICYmIGR0KGEpLCAhZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSC5h
cHBseShuLCBxLmNhbGwociwgMCkpLCBuOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHJldHVybiBzKGUsIHApKHIsIHQsIGQsIG4sIFYudGVzdChlKSksIG4KLSAg
ICAgICAgfQotICAgICAgICBpLnBzZXVkb3MubnRoID0gaS5wc2V1ZG9zLmVxOwotICAgICAgICBm
dW5jdGlvbiBUdCgpIHt9Ci0gICAgICAgIGkuZmlsdGVycyA9IFR0LnByb3RvdHlwZSA9IGkucHNl
dWRvcywKLSAgICAgICAgaS5zZXRGaWx0ZXJzID0gbmV3IFR0LAotICAgICAgICBjKCksCi0gICAg
ICAgIHN0LmF0dHIgPSBiLmF0dHIsCi0gICAgICAgIGIuZmluZCA9IHN0LAotICAgICAgICBiLmV4
cHIgPSBzdC5zZWxlY3RvcnMsCi0gICAgICAgIGIuZXhwclsiOiJdID0gYi5leHByLnBzZXVkb3Ms
Ci0gICAgICAgIGIudW5pcXVlID0gc3QudW5pcXVlU29ydCwKLSAgICAgICAgYi50ZXh0ID0gc3Qu
Z2V0VGV4dCwKLSAgICAgICAgYi5pc1hNTERvYyA9IHN0LmlzWE1MLAotICAgICAgICBiLmNvbnRh
aW5zID0gc3QuY29udGFpbnMKLSAgICB9KGUpOwotICAgIHZhciBhdCA9IC9VbnRpbCQvLAotICAg
ICAgICBzdCA9IC9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLAotICAgICAgICB1dCA9
IC9eLlteOiNcW1wuLF0qJC8sCi0gICAgICAgIGx0ID0gYi5leHByLm1hdGNoLm5lZWRzQ29udGV4
dCwKLSAgICAgICAgY3QgPSB7Ci0gICAgICAgICAgICBjaGlsZHJlbjogITAsCi0gICAgICAgICAg
ICBjb250ZW50czogITAsCi0gICAgICAgICAgICBuZXh0OiAhMCwKLSAgICAgICAgICAgIHByZXY6
ICEwCi0gICAgICAgIH07Ci0gICAgYi5mbi5leHRlbmQoewotICAgICAgICBmaW5kOiBmdW5jdGlv
bihlKSB7Ci0gICAgICAgICAgICB2YXIgdCwKLSAgICAgICAgICAgICAgICBuLAotICAgICAgICAg
ICAgICAgIHIsCi0gICAgICAgICAgICAgICAgaSA9IHRoaXMubGVuZ3RoOwotICAgICAgICAgICAg
aWYgKCJzdHJpbmciICE9IHR5cGVvZiBlKQotICAgICAgICAgICAgICAgIHJldHVybiByID0gdGhp
cywgdGhpcy5wdXNoU3RhY2soYihlKS5maWx0ZXIoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGZvciAodCA9IDA7IGkgPiB0OyB0KyspCi0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoYi5jb250YWlucyhyW3RdLCB0aGlzKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gITAKLSAgICAgICAgICAgICAgICB9KSk7Ci0gICAgICAgICAgICBmb3IgKG4gPSBbXSwg
dCA9IDA7IGkgPiB0OyB0KyspCi0gICAgICAgICAgICAgICAgYi5maW5kKGUsIHRoaXNbdF0sIG4p
OwotICAgICAgICAgICAgcmV0dXJuIG4gPSB0aGlzLnB1c2hTdGFjayhpID4gMSA/IGIudW5pcXVl
KG4pIDogbiksIG4uc2VsZWN0b3IgPSAodGhpcy5zZWxlY3RvciA/IHRoaXMuc2VsZWN0b3IgKyAi
ICIgOiAiIikgKyBlLCBuCi0gICAgICAgIH0sCi0gICAgICAgIGhhczogZnVuY3Rpb24oZSkgewot
ICAgICAgICAgICAgdmFyIHQsCi0gICAgICAgICAgICAgICAgbiA9IGIoZSwgdGhpcyksCi0gICAg
ICAgICAgICAgICAgciA9IG4ubGVuZ3RoOwotICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVy
KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGZvciAodCA9IDA7IHIgPiB0OyB0KyspCi0g
ICAgICAgICAgICAgICAgICAgIGlmIChiLmNvbnRhaW5zKHRoaXMsIG5bdF0pKQotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuICEwCi0gICAgICAgICAgICB9KQotICAgICAgICB9LAotICAg
ICAgICBub3Q6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFj
ayhmdCh0aGlzLCBlLCAhMSkpCi0gICAgICAgIH0sCi0gICAgICAgIGZpbHRlcjogZnVuY3Rpb24o
ZSkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKGZ0KHRoaXMsIGUsICEwKSkK
LSAgICAgICAgfSwKLSAgICAgICAgaXM6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHJldHVy
biAhIWUgJiYgKCJzdHJpbmciID09IHR5cGVvZiBlID8gbHQudGVzdChlKSA/IGIoZSwgdGhpcy5j
b250ZXh0KS5pbmRleCh0aGlzWzBdKSA+PSAwIDogYi5maWx0ZXIoZSwgdGhpcykubGVuZ3RoID4g
MCA6IHRoaXMuZmlsdGVyKGUpLmxlbmd0aCA+IDApCi0gICAgICAgIH0sCi0gICAgICAgIGNsb3Nl
c3Q6IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgIHZhciBuLAotICAgICAgICAgICAgICAg
IHIgPSAwLAotICAgICAgICAgICAgICAgIGkgPSB0aGlzLmxlbmd0aCwKLSAgICAgICAgICAgICAg
ICBvID0gW10sCi0gICAgICAgICAgICAgICAgYSA9IGx0LnRlc3QoZSkgfHwgInN0cmluZyIgIT0g
dHlwZW9mIGUgPyBiKGUsIHQgfHwgdGhpcy5jb250ZXh0KSA6IDA7Ci0gICAgICAgICAgICBmb3Ig
KDsgaSA+IHI7IHIrKykgewotICAgICAgICAgICAgICAgIG4gPSB0aGlzW3JdOwotICAgICAgICAg
ICAgICAgIHdoaWxlIChuICYmIG4ub3duZXJEb2N1bWVudCAmJiBuICE9PSB0ICYmIDExICE9PSBu
Lm5vZGVUeXBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhID8gYS5pbmRleChuKSA+IC0x
IDogYi5maW5kLm1hdGNoZXNTZWxlY3RvcihuLCBlKSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgby5wdXNoKG4pOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBuID0gbi5wYXJlbnROb2RlCi0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0
YWNrKG8ubGVuZ3RoID4gMSA/IGIudW5pcXVlKG8pIDogbykKLSAgICAgICAgfSwKLSAgICAgICAg
aW5kZXg6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHJldHVybiBlID8gInN0cmluZyIgPT0g
dHlwZW9mIGUgPyBiLmluQXJyYXkodGhpc1swXSwgYihlKSkgOiBiLmluQXJyYXkoZS5qcXVlcnkg
PyBlWzBdIDogZSwgdGhpcykgOiB0aGlzWzBdICYmIHRoaXNbMF0ucGFyZW50Tm9kZSA/IHRoaXMu
Zmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoIDogLTEKLSAgICAgICAgfSwKLSAgICAgICAgYWRkOiBm
dW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICB2YXIgbiA9ICJzdHJpbmciID09IHR5cGVvZiBl
ID8gYihlLCB0KSA6IGIubWFrZUFycmF5KGUgJiYgZS5ub2RlVHlwZSA/IFtlXSA6IGUpLAotICAg
ICAgICAgICAgICAgIHIgPSBiLm1lcmdlKHRoaXMuZ2V0KCksIG4pOwotICAgICAgICAgICAgcmV0
dXJuIHRoaXMucHVzaFN0YWNrKGIudW5pcXVlKHIpKQotICAgICAgICB9LAotICAgICAgICBhZGRC
YWNrOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5hZGQobnVsbCA9PSBl
ID8gdGhpcy5wcmV2T2JqZWN0IDogdGhpcy5wcmV2T2JqZWN0LmZpbHRlcihlKSkKLSAgICAgICAg
fQotICAgIH0pLAotICAgIGIuZm4uYW5kU2VsZiA9IGIuZm4uYWRkQmFjazsKLSAgICBmdW5jdGlv
biBwdChlLCB0KSB7Ci0gICAgICAgIGRvIGUgPSBlW3RdOwotICAgICAgICB3aGlsZSAoZSAmJiAx
ICE9PSBlLm5vZGVUeXBlKTsKLSAgICAgICAgcmV0dXJuIGUKLSAgICB9Ci0gICAgYi5lYWNoKHsK
LSAgICAgICAgcGFyZW50OiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICB2YXIgdCA9IGUucGFy
ZW50Tm9kZTsKLSAgICAgICAgICAgIHJldHVybiB0ICYmIDExICE9PSB0Lm5vZGVUeXBlID8gdCA6
IG51bGwKLSAgICAgICAgfSwKLSAgICAgICAgcGFyZW50czogZnVuY3Rpb24oZSkgewotICAgICAg
ICAgICAgcmV0dXJuIGIuZGlyKGUsICJwYXJlbnROb2RlIikKLSAgICAgICAgfSwKLSAgICAgICAg
cGFyZW50c1VudGlsOiBmdW5jdGlvbihlLCB0LCBuKSB7Ci0gICAgICAgICAgICByZXR1cm4gYi5k
aXIoZSwgInBhcmVudE5vZGUiLCBuKQotICAgICAgICB9LAotICAgICAgICBuZXh0OiBmdW5jdGlv
bihlKSB7Ci0gICAgICAgICAgICByZXR1cm4gcHQoZSwgIm5leHRTaWJsaW5nIikKLSAgICAgICAg
fSwKLSAgICAgICAgcHJldjogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgcmV0dXJuIHB0KGUs
ICJwcmV2aW91c1NpYmxpbmciKQotICAgICAgICB9LAotICAgICAgICBuZXh0QWxsOiBmdW5jdGlv
bihlKSB7Ci0gICAgICAgICAgICByZXR1cm4gYi5kaXIoZSwgIm5leHRTaWJsaW5nIikKLSAgICAg
ICAgfSwKLSAgICAgICAgcHJldkFsbDogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgcmV0dXJu
IGIuZGlyKGUsICJwcmV2aW91c1NpYmxpbmciKQotICAgICAgICB9LAotICAgICAgICBuZXh0VW50
aWw6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKLSAgICAgICAgICAgIHJldHVybiBiLmRpcihlLCAibmV4
dFNpYmxpbmciLCBuKQotICAgICAgICB9LAotICAgICAgICBwcmV2VW50aWw6IGZ1bmN0aW9uKGUs
IHQsIG4pIHsKLSAgICAgICAgICAgIHJldHVybiBiLmRpcihlLCAicHJldmlvdXNTaWJsaW5nIiwg
bikKLSAgICAgICAgfSwKLSAgICAgICAgc2libGluZ3M6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAg
ICAgIHJldHVybiBiLnNpYmxpbmcoKGUucGFyZW50Tm9kZSB8fCB7fSkuZmlyc3RDaGlsZCwgZSkK
LSAgICAgICAgfSwKLSAgICAgICAgY2hpbGRyZW46IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAg
IHJldHVybiBiLnNpYmxpbmcoZS5maXJzdENoaWxkKQotICAgICAgICB9LAotICAgICAgICBjb250
ZW50czogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgcmV0dXJuIGIubm9kZU5hbWUoZSwgImlm
cmFtZSIpID8gZS5jb250ZW50RG9jdW1lbnQgfHwgZS5jb250ZW50V2luZG93LmRvY3VtZW50IDog
Yi5tZXJnZShbXSwgZS5jaGlsZE5vZGVzKQotICAgICAgICB9Ci0gICAgfSwgZnVuY3Rpb24oZSwg
dCkgewotICAgICAgICBiLmZuW2VdID0gZnVuY3Rpb24obiwgcikgewotICAgICAgICAgICAgdmFy
IGkgPSBiLm1hcCh0aGlzLCB0LCBuKTsKLSAgICAgICAgICAgIHJldHVybiBhdC50ZXN0KGUpIHx8
IChyID0gbiksIHIgJiYgInN0cmluZyIgPT0gdHlwZW9mIHIgJiYgKGkgPSBiLmZpbHRlcihyLCBp
KSksIGkgPSB0aGlzLmxlbmd0aCA+IDEgJiYgIWN0W2VdID8gYi51bmlxdWUoaSkgOiBpLCB0aGlz
Lmxlbmd0aCA+IDEgJiYgc3QudGVzdChlKSAmJiAoaSA9IGkucmV2ZXJzZSgpKSwgdGhpcy5wdXNo
U3RhY2soaSkKLSAgICAgICAgfQotICAgIH0pLAotICAgIGIuZXh0ZW5kKHsKLSAgICAgICAgZmls
dGVyOiBmdW5jdGlvbihlLCB0LCBuKSB7Ci0gICAgICAgICAgICByZXR1cm4gbiAmJiAoZSA9ICI6
bm90KCIgKyBlICsgIikiKSwgMSA9PT0gdC5sZW5ndGggPyBiLmZpbmQubWF0Y2hlc1NlbGVjdG9y
KHRbMF0sIGUpID8gW3RbMF1dIDogW10gOiBiLmZpbmQubWF0Y2hlcyhlLCB0KQotICAgICAgICB9
LAotICAgICAgICBkaXI6IGZ1bmN0aW9uKGUsIG4sIHIpIHsKLSAgICAgICAgICAgIHZhciBpID0g
W10sCi0gICAgICAgICAgICAgICAgbyA9IGVbbl07Ci0gICAgICAgICAgICB3aGlsZSAobyAmJiA5
ICE9PSBvLm5vZGVUeXBlICYmIChyID09PSB0IHx8IDEgIT09IG8ubm9kZVR5cGUgfHwgIWIobyku
aXMocikpKQotICAgICAgICAgICAgICAgIDEgPT09IG8ubm9kZVR5cGUgJiYgaS5wdXNoKG8pLAot
ICAgICAgICAgICAgICAgIG8gPSBvW25dOwotICAgICAgICAgICAgcmV0dXJuIGkKLSAgICAgICAg
fSwKLSAgICAgICAgc2libGluZzogZnVuY3Rpb24oZSwgdCkgewotICAgICAgICAgICAgdmFyIG4g
PSBbXTsKLSAgICAgICAgICAgIGZvciAoOyBlOyBlID0gZS5uZXh0U2libGluZykKLSAgICAgICAg
ICAgICAgICAxID09PSBlLm5vZGVUeXBlICYmIGUgIT09IHQgJiYgbi5wdXNoKGUpOwotICAgICAg
ICAgICAgcmV0dXJuIG4KLSAgICAgICAgfQotICAgIH0pOwotICAgIGZ1bmN0aW9uIGZ0KGUsIHQs
IG4pIHsKLSAgICAgICAgaWYgKHQgPSB0IHx8IDAsIGIuaXNGdW5jdGlvbih0KSkKLSAgICAgICAg
ICAgIHJldHVybiBiLmdyZXAoZSwgZnVuY3Rpb24oZSwgcikgewotICAgICAgICAgICAgICAgIHZh
ciBpID0gISF0LmNhbGwoZSwgciwgZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGkgPT09IG4K
LSAgICAgICAgICAgIH0pOwotICAgICAgICBpZiAodC5ub2RlVHlwZSkKLSAgICAgICAgICAgIHJl
dHVybiBiLmdyZXAoZSwgZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgIHJldHVybiBlID09
PSB0ID09PSBuCi0gICAgICAgICAgICB9KTsKLSAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVv
ZiB0KSB7Ci0gICAgICAgICAgICB2YXIgciA9IGIuZ3JlcChlLCBmdW5jdGlvbihlKSB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIDEgPT09IGUubm9kZVR5cGUKLSAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgaWYgKHV0LnRlc3QodCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGIuZmlsdGVy
KHQsIHIsICFuKTsKLSAgICAgICAgICAgIHQgPSBiLmZpbHRlcih0LCByKQotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBiLmdyZXAoZSwgZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgcmV0dXJu
IGIuaW5BcnJheShlLCB0KSA+PSAwID09PSBuCi0gICAgICAgIH0pCi0gICAgfQotICAgIGZ1bmN0
aW9uIGR0KGUpIHsKLSAgICAgICAgdmFyIHQgPSBodC5zcGxpdCgifCIpLAotICAgICAgICAgICAg
biA9IGUuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwotICAgICAgICBpZiAobi5jcmVhdGVFbGVt
ZW50KQotICAgICAgICAgICAgd2hpbGUgKHQubGVuZ3RoKQotICAgICAgICAgICAgICAgIG4uY3Jl
YXRlRWxlbWVudCh0LnBvcCgpKTsKLSAgICAgICAgcmV0dXJuIG4KLSAgICB9Ci0gICAgdmFyIGh0
ID0gImFiYnJ8YXJ0aWNsZXxhc2lkZXxhdWRpb3xiZGl8Y2FudmFzfGRhdGF8ZGF0YWxpc3R8ZGV0
YWlsc3xmaWdjYXB0aW9ufGZpZ3VyZXxmb290ZXJ8aGVhZGVyfGhncm91cHxtYXJrfG1ldGVyfG5h
dnxvdXRwdXR8cHJvZ3Jlc3N8c2VjdGlvbnxzdW1tYXJ5fHRpbWV8dmlkZW8iLAotICAgICAgICBn
dCA9IC8galF1ZXJ5XGQrPSIoPzpudWxsfFxkKykiL2csCi0gICAgICAgIG10ID0gUmVnRXhwKCI8
KD86IiArIGh0ICsgIilbXFxzLz5dIiwgImkiKSwKLSAgICAgICAgeXQgPSAvXlxzKy8sCi0gICAg
ICAgIHZ0ID0gLzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8bGlua3xtZXRhfHBh
cmFtKSgoW1x3Ol0rKVtePl0qKVwvPi9naSwKLSAgICAgICAgYnQgPSAvPChbXHc6XSspLywKLSAg
ICAgICAgeHQgPSAvPHRib2R5L2ksCi0gICAgICAgIHd0ID0gLzx8JiM/XHcrOy8sCi0gICAgICAg
IFR0ID0gLzwoPzpzY3JpcHR8c3R5bGV8bGluaykvaSwKLSAgICAgICAgTnQgPSAvXig/OmNoZWNr
Ym94fHJhZGlvKSQvaSwKLSAgICAgICAgQ3QgPSAvY2hlY2tlZFxzKig/OltePV18PVxzKi5jaGVj
a2VkLikvaSwKLSAgICAgICAga3QgPSAvXiR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2ksCi0gICAg
ICAgIEV0ID0gL150cnVlXC8oLiopLywKLSAgICAgICAgU3QgPSAvXlxzKjwhKD86XFtDREFUQVxb
fC0tKXwoPzpcXVxdfC0tKT5ccyokL2csCi0gICAgICAgIEF0ID0gewotICAgICAgICAgICAgb3B0
aW9uOiBbMSwgIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCAiPC9zZWxlY3Q+Il0sCi0g
ICAgICAgICAgICBsZWdlbmQ6IFsxLCAiPGZpZWxkc2V0PiIsICI8L2ZpZWxkc2V0PiJdLAotICAg
ICAgICAgICAgYXJlYTogWzEsICI8bWFwPiIsICI8L21hcD4iXSwKLSAgICAgICAgICAgIHBhcmFt
OiBbMSwgIjxvYmplY3Q+IiwgIjwvb2JqZWN0PiJdLAotICAgICAgICAgICAgdGhlYWQ6IFsxLCAi
PHRhYmxlPiIsICI8L3RhYmxlPiJdLAotICAgICAgICAgICAgdHI6IFsyLCAiPHRhYmxlPjx0Ym9k
eT4iLCAiPC90Ym9keT48L3RhYmxlPiJdLAotICAgICAgICAgICAgY29sOiBbMiwgIjx0YWJsZT48
dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwgIjwvY29sZ3JvdXA+PC90YWJsZT4iXSwKLSAgICAg
ICAgICAgIHRkOiBbMywgIjx0YWJsZT48dGJvZHk+PHRyPiIsICI8L3RyPjwvdGJvZHk+PC90YWJs
ZT4iXSwKLSAgICAgICAgICAgIF9kZWZhdWx0OiBiLnN1cHBvcnQuaHRtbFNlcmlhbGl6ZSA/IFsw
LCAiIiwgIiJdIDogWzEsICJYPGRpdj4iLCAiPC9kaXY+Il0KLSAgICAgICAgfSwKLSAgICAgICAg
anQgPSBkdChvKSwKLSAgICAgICAgRHQgPSBqdC5hcHBlbmRDaGlsZChvLmNyZWF0ZUVsZW1lbnQo
ImRpdiIpKTsKLSAgICBBdC5vcHRncm91cCA9IEF0Lm9wdGlvbiwKLSAgICBBdC50Ym9keSA9IEF0
LnRmb290ID0gQXQuY29sZ3JvdXAgPSBBdC5jYXB0aW9uID0gQXQudGhlYWQsCi0gICAgQXQudGgg
PSBBdC50ZCwKLSAgICBiLmZuLmV4dGVuZCh7Ci0gICAgICAgIHRleHQ6IGZ1bmN0aW9uKGUpIHsK
LSAgICAgICAgICAgIHJldHVybiBiLmFjY2Vzcyh0aGlzLCBmdW5jdGlvbihlKSB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGUgPT09IHQgPyBiLnRleHQodGhpcykgOiB0aGlzLmVtcHR5KCkuYXBw
ZW5kKCh0aGlzWzBdICYmIHRoaXNbMF0ub3duZXJEb2N1bWVudCB8fCBvKS5jcmVhdGVUZXh0Tm9k
ZShlKSkKLSAgICAgICAgICAgIH0sIG51bGwsIGUsIGFyZ3VtZW50cy5sZW5ndGgpCi0gICAgICAg
IH0sCi0gICAgICAgIHdyYXBBbGw6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGlmIChiLmlz
RnVuY3Rpb24oZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbih0
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGIodGhpcykud3JhcEFsbChlLmNhbGwodGhpcywgdCkp
Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBpZiAodGhpc1swXSkgewotICAgICAg
ICAgICAgICAgIHZhciB0ID0gYihlLCB0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25l
KCEwKTsKLSAgICAgICAgICAgICAgICB0aGlzWzBdLnBhcmVudE5vZGUgJiYgdC5pbnNlcnRCZWZv
cmUodGhpc1swXSksCi0gICAgICAgICAgICAgICAgdC5tYXAoZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHZhciBlID0gdGhpczsKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGUu
Zmlyc3RDaGlsZCAmJiAxID09PSBlLmZpcnN0Q2hpbGQubm9kZVR5cGUpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBlID0gZS5maXJzdENoaWxkOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZQotICAgICAgICAgICAgICAgIH0pLmFwcGVuZCh0aGlzKQotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcmV0dXJuIHRoaXMKLSAgICAgICAgfSwKLSAgICAgICAgd3JhcElubmVyOiBmdW5jdGlv
bihlKSB7Ci0gICAgICAgICAgICByZXR1cm4gYi5pc0Z1bmN0aW9uKGUpID8gdGhpcy5lYWNoKGZ1
bmN0aW9uKHQpIHsKLSAgICAgICAgICAgICAgICBiKHRoaXMpLndyYXBJbm5lcihlLmNhbGwodGhp
cywgdCkpCi0gICAgICAgICAgICB9KSA6IHRoaXMuZWFjaChmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgICAgICB2YXIgdCA9IGIodGhpcyksCi0gICAgICAgICAgICAgICAgICAgIG4gPSB0LmNvbnRl
bnRzKCk7Ci0gICAgICAgICAgICAgICAgbi5sZW5ndGggPyBuLndyYXBBbGwoZSkgOiB0LmFwcGVu
ZChlKQotICAgICAgICAgICAgfSkKLSAgICAgICAgfSwKLSAgICAgICAgd3JhcDogZnVuY3Rpb24o
ZSkgewotICAgICAgICAgICAgdmFyIHQgPSBiLmlzRnVuY3Rpb24oZSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKG4pIHsKLSAgICAgICAgICAgICAgICBiKHRoaXMpLndy
YXBBbGwodCA/IGUuY2FsbCh0aGlzLCBuKSA6IGUpCi0gICAgICAgICAgICB9KQotICAgICAgICB9
LAotICAgICAgICB1bndyYXA6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMu
cGFyZW50KCkuZWFjaChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBiLm5vZGVOYW1lKHRo
aXMsICJib2R5IikgfHwgYih0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9kZXMpCi0gICAg
ICAgICAgICB9KS5lbmQoKQotICAgICAgICB9LAotICAgICAgICBhcHBlbmQ6IGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCAhMCwgZnVuY3Rp
b24oZSkgewotICAgICAgICAgICAgICAgICgxID09PSB0aGlzLm5vZGVUeXBlIHx8IDExID09PSB0
aGlzLm5vZGVUeXBlIHx8IDkgPT09IHRoaXMubm9kZVR5cGUpICYmIHRoaXMuYXBwZW5kQ2hpbGQo
ZSkKLSAgICAgICAgICAgIH0pCi0gICAgICAgIH0sCi0gICAgICAgIHByZXBlbmQ6IGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCAhMCwgZnVu
Y3Rpb24oZSkgewotICAgICAgICAgICAgICAgICgxID09PSB0aGlzLm5vZGVUeXBlIHx8IDExID09
PSB0aGlzLm5vZGVUeXBlIHx8IDkgPT09IHRoaXMubm9kZVR5cGUpICYmIHRoaXMuaW5zZXJ0QmVm
b3JlKGUsIHRoaXMuZmlyc3RDaGlsZCkKLSAgICAgICAgICAgIH0pCi0gICAgICAgIH0sCi0gICAg
ICAgIGJlZm9yZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5kb21NYW5p
cChhcmd1bWVudHMsICExLCBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5wYXJl
bnROb2RlICYmIHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSwgdGhpcykKLSAgICAgICAg
ICAgIH0pCi0gICAgICAgIH0sCi0gICAgICAgIGFmdGVyOiBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgIHJldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywgITEsIGZ1bmN0aW9uKGUpIHsKLSAg
ICAgICAgICAgICAgICB0aGlzLnBhcmVudE5vZGUgJiYgdGhpcy5wYXJlbnROb2RlLmluc2VydEJl
Zm9yZShlLCB0aGlzLm5leHRTaWJsaW5nKQotICAgICAgICAgICAgfSkKLSAgICAgICAgfSwKLSAg
ICAgICAgcmVtb3ZlOiBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICB2YXIgbiwKLSAgICAg
ICAgICAgICAgICByID0gMDsKLSAgICAgICAgICAgIGZvciAoOyBudWxsICE9IChuID0gdGhpc1ty
XSk7IHIrKykKLSAgICAgICAgICAgICAgICAoIWUgfHwgYi5maWx0ZXIoZSwgW25dKS5sZW5ndGgg
PiAwKSAmJiAodCB8fCAxICE9PSBuLm5vZGVUeXBlIHx8IGIuY2xlYW5EYXRhKE90KG4pKSwgbi5w
YXJlbnROb2RlICYmICh0ICYmIGIuY29udGFpbnMobi5vd25lckRvY3VtZW50LCBuKSAmJiBNdChP
dChuLCAic2NyaXB0IikpLCBuLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobikpKTsKLSAgICAgICAg
ICAgIHJldHVybiB0aGlzCi0gICAgICAgIH0sCi0gICAgICAgIGVtcHR5OiBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgIHZhciBlLAotICAgICAgICAgICAgICAgIHQgPSAwOwotICAgICAgICAgICAg
Zm9yICg7IG51bGwgIT0gKGUgPSB0aGlzW3RdKTsgdCsrKSB7Ci0gICAgICAgICAgICAgICAgMSA9
PT0gZS5ub2RlVHlwZSAmJiBiLmNsZWFuRGF0YShPdChlLCAhMSkpOwotICAgICAgICAgICAgICAg
IHdoaWxlIChlLmZpcnN0Q2hpbGQpCi0gICAgICAgICAgICAgICAgICAgIGUucmVtb3ZlQ2hpbGQo
ZS5maXJzdENoaWxkKTsKLSAgICAgICAgICAgICAgICBlLm9wdGlvbnMgJiYgYi5ub2RlTmFtZShl
LCAic2VsZWN0IikgJiYgKGUub3B0aW9ucy5sZW5ndGggPSAwKQotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgcmV0dXJuIHRoaXMKLSAgICAgICAgfSwKLSAgICAgICAgY2xvbmU6IGZ1bmN0aW9u
KGUsIHQpIHsKLSAgICAgICAgICAgIHJldHVybiBlID0gbnVsbCA9PSBlID8gITEgOiBlLCB0ID0g
bnVsbCA9PSB0ID8gZSA6IHQsIHRoaXMubWFwKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAg
IHJldHVybiBiLmNsb25lKHRoaXMsIGUsIHQpCi0gICAgICAgICAgICB9KQotICAgICAgICB9LAot
ICAgICAgICBodG1sOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICByZXR1cm4gYi5hY2Nlc3Mo
dGhpcywgZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgIHZhciBuID0gdGhpc1swXSB8fCB7
fSwKLSAgICAgICAgICAgICAgICAgICAgciA9IDAsCi0gICAgICAgICAgICAgICAgICAgIGkgPSB0
aGlzLmxlbmd0aDsKLSAgICAgICAgICAgICAgICBpZiAoZSA9PT0gdCkKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDEgPT09IG4ubm9kZVR5cGUgPyBuLmlubmVySFRNTC5yZXBsYWNlKGd0LCAi
IikgOiB0OwotICAgICAgICAgICAgICAgIGlmICghKCJzdHJpbmciICE9IHR5cGVvZiBlIHx8IFR0
LnRlc3QoZSkgfHwgIWIuc3VwcG9ydC5odG1sU2VyaWFsaXplICYmIG10LnRlc3QoZSkgfHwgIWIu
c3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSAmJiB5dC50ZXN0KGUpIHx8IEF0WyhidC5leGVjKGUp
IHx8IFsiIiwgIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSkpIHsKLSAgICAgICAgICAgICAgICAgICAg
ZSA9IGUucmVwbGFjZSh2dCwgIjwkMT48LyQyPiIpOwotICAgICAgICAgICAgICAgICAgICB0cnkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGkgPiByOyByKyspCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbiA9IHRoaXNbcl0gfHwge30sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMSA9PT0gbi5ub2RlVHlwZSAmJiAoYi5jbGVhbkRhdGEoT3QobiwgITEpKSwgbi5p
bm5lckhUTUwgPSBlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAwCi0gICAgICAgICAg
ICAgICAgICAgIH0gY2F0Y2ggKG8pIHt9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIG4gJiYgdGhpcy5lbXB0eSgpLmFwcGVuZChlKQotICAgICAgICAgICAgfSwgbnVsbCwgZSwg
YXJndW1lbnRzLmxlbmd0aCkKLSAgICAgICAgfSwKLSAgICAgICAgcmVwbGFjZVdpdGg6IGZ1bmN0
aW9uKGUpIHsKLSAgICAgICAgICAgIHZhciB0ID0gYi5pc0Z1bmN0aW9uKGUpOwotICAgICAgICAg
ICAgcmV0dXJuIHQgfHwgInN0cmluZyIgPT0gdHlwZW9mIGUgfHwgKGUgPSBiKGUpLm5vdCh0aGlz
KS5kZXRhY2goKSksIHRoaXMuZG9tTWFuaXAoW2VdLCAhMCwgZnVuY3Rpb24oZSkgewotICAgICAg
ICAgICAgICAgIHZhciB0ID0gdGhpcy5uZXh0U2libGluZywKLSAgICAgICAgICAgICAgICAgICAg
biA9IHRoaXMucGFyZW50Tm9kZTsKLSAgICAgICAgICAgICAgICBuICYmIChiKHRoaXMpLnJlbW92
ZSgpLCBuLmluc2VydEJlZm9yZShlLCB0KSkKLSAgICAgICAgICAgIH0pCi0gICAgICAgIH0sCi0g
ICAgICAgIGRldGFjaDogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVt
b3ZlKGUsICEwKQotICAgICAgICB9LAotICAgICAgICBkb21NYW5pcDogZnVuY3Rpb24oZSwgbiwg
cikgewotICAgICAgICAgICAgZSA9IGYuYXBwbHkoW10sIGUpOwotICAgICAgICAgICAgdmFyIGks
Ci0gICAgICAgICAgICAgICAgbywKLSAgICAgICAgICAgICAgICBhLAotICAgICAgICAgICAgICAg
IHMsCi0gICAgICAgICAgICAgICAgdSwKLSAgICAgICAgICAgICAgICBsLAotICAgICAgICAgICAg
ICAgIGMgPSAwLAotICAgICAgICAgICAgICAgIHAgPSB0aGlzLmxlbmd0aCwKLSAgICAgICAgICAg
ICAgICBkID0gdGhpcywKLSAgICAgICAgICAgICAgICBoID0gcCAtIDEsCi0gICAgICAgICAgICAg
ICAgZyA9IGVbMF0sCi0gICAgICAgICAgICAgICAgbSA9IGIuaXNGdW5jdGlvbihnKTsKLSAgICAg
ICAgICAgIGlmIChtIHx8ICEoMSA+PSBwIHx8ICJzdHJpbmciICE9IHR5cGVvZiBnIHx8IGIuc3Vw
cG9ydC5jaGVja0Nsb25lKSAmJiBDdC50ZXN0KGcpKQotICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzLmVhY2goZnVuY3Rpb24oaSkgewotICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGQuZXEo
aSk7Ci0gICAgICAgICAgICAgICAgICAgIG0gJiYgKGVbMF0gPSBnLmNhbGwodGhpcywgaSwgbiA/
IG8uaHRtbCgpIDogdCkpLAotICAgICAgICAgICAgICAgICAgICBvLmRvbU1hbmlwKGUsIG4sIHIp
Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBpZiAocCAmJiAobCA9IGIuYnVpbGRG
cmFnbWVudChlLCB0aGlzWzBdLm93bmVyRG9jdW1lbnQsICExLCB0aGlzKSwgaSA9IGwuZmlyc3RD
aGlsZCwgMSA9PT0gbC5jaGlsZE5vZGVzLmxlbmd0aCAmJiAobCA9IGkpLCBpKSkgewotICAgICAg
ICAgICAgICAgIGZvciAobiA9IG4gJiYgYi5ub2RlTmFtZShpLCAidHIiKSwgcyA9IGIubWFwKE90
KGwsICJzY3JpcHQiKSwgSHQpLCBhID0gcy5sZW5ndGg7IHAgPiBjOyBjKyspCi0gICAgICAgICAg
ICAgICAgICAgIG8gPSBsLAotICAgICAgICAgICAgICAgICAgICBjICE9PSBoICYmIChvID0gYi5j
bG9uZShvLCAhMCwgITApLCBhICYmIGIubWVyZ2UocywgT3QobywgInNjcmlwdCIpKSksCi0gICAg
ICAgICAgICAgICAgICAgIHIuY2FsbChuICYmIGIubm9kZU5hbWUodGhpc1tjXSwgInRhYmxlIikg
PyBMdCh0aGlzW2NdLCAidGJvZHkiKSA6IHRoaXNbY10sIG8sIGMpOwotICAgICAgICAgICAgICAg
IGlmIChhKQotICAgICAgICAgICAgICAgICAgICBmb3IgKHUgPSBzW3MubGVuZ3RoIC0gMV0ub3du
ZXJEb2N1bWVudCwgYi5tYXAocywgcXQpLCBjID0gMDsgYSA+IGM7IGMrKykKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG8gPSBzW2NdLAotICAgICAgICAgICAgICAgICAgICAgICAga3QudGVzdChv
LnR5cGUgfHwgIiIpICYmICFiLl9kYXRhKG8sICJnbG9iYWxFdmFsIikgJiYgYi5jb250YWlucyh1
LCBvKSAmJiAoby5zcmMgPyBiLmFqYXgoewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVy
bDogby5zcmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogIkdFVCIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICJzY3JpcHQiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFzeW5jOiAhMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
bG9iYWw6ICExLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aHJvd3MiOiAhMAotICAg
ICAgICAgICAgICAgICAgICAgICAgfSkgOiBiLmdsb2JhbEV2YWwoKG8udGV4dCB8fCBvLnRleHRD
b250ZW50IHx8IG8uaW5uZXJIVE1MIHx8ICIiKS5yZXBsYWNlKFN0LCAiIikpKTsKLSAgICAgICAg
ICAgICAgICBsID0gaSA9IG51bGwKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0
aGlzCi0gICAgICAgIH0KLSAgICB9KTsKLSAgICBmdW5jdGlvbiBMdChlLCB0KSB7Ci0gICAgICAg
IHJldHVybiBlLmdldEVsZW1lbnRzQnlUYWdOYW1lKHQpWzBdIHx8IGUuYXBwZW5kQ2hpbGQoZS5v
d25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodCkpCi0gICAgfQotICAgIGZ1bmN0aW9uIEh0KGUp
IHsKLSAgICAgICAgdmFyIHQgPSBlLmdldEF0dHJpYnV0ZU5vZGUoInR5cGUiKTsKLSAgICAgICAg
cmV0dXJuIGUudHlwZSA9ICh0ICYmIHQuc3BlY2lmaWVkKSArICIvIiArIGUudHlwZSwgZQotICAg
IH0KLSAgICBmdW5jdGlvbiBxdChlKSB7Ci0gICAgICAgIHZhciB0ID0gRXQuZXhlYyhlLnR5cGUp
OwotICAgICAgICByZXR1cm4gdCA/IGUudHlwZSA9IHRbMV0gOiBlLnJlbW92ZUF0dHJpYnV0ZSgi
dHlwZSIpLCBlCi0gICAgfQotICAgIGZ1bmN0aW9uIE10KGUsIHQpIHsKLSAgICAgICAgdmFyIG4s
Ci0gICAgICAgICAgICByID0gMDsKLSAgICAgICAgZm9yICg7IG51bGwgIT0gKG4gPSBlW3JdKTsg
cisrKQotICAgICAgICAgICAgYi5fZGF0YShuLCAiZ2xvYmFsRXZhbCIsICF0IHx8IGIuX2RhdGEo
dFtyXSwgImdsb2JhbEV2YWwiKSkKLSAgICB9Ci0gICAgZnVuY3Rpb24gX3QoZSwgdCkgewotICAg
ICAgICBpZiAoMSA9PT0gdC5ub2RlVHlwZSAmJiBiLmhhc0RhdGEoZSkpIHsKLSAgICAgICAgICAg
IHZhciBuLAotICAgICAgICAgICAgICAgIHIsCi0gICAgICAgICAgICAgICAgaSwKLSAgICAgICAg
ICAgICAgICBvID0gYi5fZGF0YShlKSwKLSAgICAgICAgICAgICAgICBhID0gYi5fZGF0YSh0LCBv
KSwKLSAgICAgICAgICAgICAgICBzID0gby5ldmVudHM7Ci0gICAgICAgICAgICBpZiAocykgewot
ICAgICAgICAgICAgICAgIGRlbGV0ZSBhLmhhbmRsZSwKLSAgICAgICAgICAgICAgICBhLmV2ZW50
cyA9IHt9OwotICAgICAgICAgICAgICAgIGZvciAobiBpbiBzKQotICAgICAgICAgICAgICAgICAg
ICBmb3IgKHIgPSAwLCBpID0gc1tuXS5sZW5ndGg7IGkgPiByOyByKyspCi0gICAgICAgICAgICAg
ICAgICAgICAgICBiLmV2ZW50LmFkZCh0LCBuLCBzW25dW3JdKQotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgYS5kYXRhICYmIChhLmRhdGEgPSBiLmV4dGVuZCh7fSwgYS5kYXRhKSkKLSAgICAg
ICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBGdChlLCB0KSB7Ci0gICAgICAgIHZhciBuLAotICAg
ICAgICAgICAgciwKLSAgICAgICAgICAgIGk7Ci0gICAgICAgIGlmICgxID09PSB0Lm5vZGVUeXBl
KSB7Ci0gICAgICAgICAgICBpZiAobiA9IHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSwgIWIuc3Vw
cG9ydC5ub0Nsb25lRXZlbnQgJiYgdFtiLmV4cGFuZG9dKSB7Ci0gICAgICAgICAgICAgICAgaSA9
IGIuX2RhdGEodCk7Ci0gICAgICAgICAgICAgICAgZm9yIChyIGluIGkuZXZlbnRzKQotICAgICAg
ICAgICAgICAgICAgICBiLnJlbW92ZUV2ZW50KHQsIHIsIGkuaGFuZGxlKTsKLSAgICAgICAgICAg
ICAgICB0LnJlbW92ZUF0dHJpYnV0ZShiLmV4cGFuZG8pCi0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAic2NyaXB0IiA9PT0gbiAmJiB0LnRleHQgIT09IGUudGV4dCA/IChIdCh0KS50ZXh0ID0g
ZS50ZXh0LCBxdCh0KSkgOiAib2JqZWN0IiA9PT0gbiA/ICh0LnBhcmVudE5vZGUgJiYgKHQub3V0
ZXJIVE1MID0gZS5vdXRlckhUTUwpLCBiLnN1cHBvcnQuaHRtbDVDbG9uZSAmJiBlLmlubmVySFRN
TCAmJiAhYi50cmltKHQuaW5uZXJIVE1MKSAmJiAodC5pbm5lckhUTUwgPSBlLmlubmVySFRNTCkp
IDogImlucHV0IiA9PT0gbiAmJiBOdC50ZXN0KGUudHlwZSkgPyAodC5kZWZhdWx0Q2hlY2tlZCA9
IHQuY2hlY2tlZCA9IGUuY2hlY2tlZCwgdC52YWx1ZSAhPT0gZS52YWx1ZSAmJiAodC52YWx1ZSA9
IGUudmFsdWUpKSA6ICJvcHRpb24iID09PSBuID8gdC5kZWZhdWx0U2VsZWN0ZWQgPSB0LnNlbGVj
dGVkID0gZS5kZWZhdWx0U2VsZWN0ZWQgOiAoImlucHV0IiA9PT0gbiB8fCAidGV4dGFyZWEiID09
PSBuKSAmJiAodC5kZWZhdWx0VmFsdWUgPSBlLmRlZmF1bHRWYWx1ZSkKLSAgICAgICAgfQotICAg
IH0KLSAgICBiLmVhY2goewotICAgICAgICBhcHBlbmRUbzogImFwcGVuZCIsCi0gICAgICAgIHBy
ZXBlbmRUbzogInByZXBlbmQiLAotICAgICAgICBpbnNlcnRCZWZvcmU6ICJiZWZvcmUiLAotICAg
ICAgICBpbnNlcnRBZnRlcjogImFmdGVyIiwKLSAgICAgICAgcmVwbGFjZUFsbDogInJlcGxhY2VX
aXRoIgotICAgIH0sIGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgYi5mbltlXSA9IGZ1bmN0aW9u
KGUpIHsKLSAgICAgICAgICAgIHZhciBuLAotICAgICAgICAgICAgICAgIHIgPSAwLAotICAgICAg
ICAgICAgICAgIGkgPSBbXSwKLSAgICAgICAgICAgICAgICBvID0gYihlKSwKLSAgICAgICAgICAg
ICAgICBhID0gby5sZW5ndGggLSAxOwotICAgICAgICAgICAgZm9yICg7IGEgPj0gcjsgcisrKQot
ICAgICAgICAgICAgICAgIG4gPSByID09PSBhID8gdGhpcyA6IHRoaXMuY2xvbmUoITApLAotICAg
ICAgICAgICAgICAgIGIob1tyXSlbdF0obiksCi0gICAgICAgICAgICAgICAgZC5hcHBseShpLCBu
LmdldCgpKTsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayhpKQotICAgICAgICB9
Ci0gICAgfSk7Ci0gICAgZnVuY3Rpb24gT3QoZSwgbikgewotICAgICAgICB2YXIgciwKLSAgICAg
ICAgICAgIG8sCi0gICAgICAgICAgICBhID0gMCwKLSAgICAgICAgICAgIHMgPSB0eXBlb2YgZS5n
ZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gaSA/IGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUobiB8fCAi
KiIpIDogdHlwZW9mIGUucXVlcnlTZWxlY3RvckFsbCAhPT0gaSA/IGUucXVlcnlTZWxlY3RvckFs
bChuIHx8ICIqIikgOiB0OwotICAgICAgICBpZiAoIXMpCi0gICAgICAgICAgICBmb3IgKHMgPSBb
XSwgciA9IGUuY2hpbGROb2RlcyB8fCBlOyBudWxsICE9IChvID0gclthXSk7IGErKykKLSAgICAg
ICAgICAgICAgICAhbiB8fCBiLm5vZGVOYW1lKG8sIG4pID8gcy5wdXNoKG8pIDogYi5tZXJnZShz
LCBPdChvLCBuKSk7Ci0gICAgICAgIHJldHVybiBuID09PSB0IHx8IG4gJiYgYi5ub2RlTmFtZShl
LCBuKSA/IGIubWVyZ2UoW2VdLCBzKSA6IHMKLSAgICB9Ci0gICAgZnVuY3Rpb24gQnQoZSkgewot
ICAgICAgICBOdC50ZXN0KGUudHlwZSkgJiYgKGUuZGVmYXVsdENoZWNrZWQgPSBlLmNoZWNrZWQp
Ci0gICAgfQotICAgIGIuZXh0ZW5kKHsKLSAgICAgICAgY2xvbmU6IGZ1bmN0aW9uKGUsIHQsIG4p
IHsKLSAgICAgICAgICAgIHZhciByLAotICAgICAgICAgICAgICAgIGksCi0gICAgICAgICAgICAg
ICAgbywKLSAgICAgICAgICAgICAgICBhLAotICAgICAgICAgICAgICAgIHMsCi0gICAgICAgICAg
ICAgICAgdSA9IGIuY29udGFpbnMoZS5vd25lckRvY3VtZW50LCBlKTsKLSAgICAgICAgICAgIGlm
IChiLnN1cHBvcnQuaHRtbDVDbG9uZSB8fCBiLmlzWE1MRG9jKGUpIHx8ICFtdC50ZXN0KCI8IiAr
IGUubm9kZU5hbWUgKyAiPiIpID8gbyA9IGUuY2xvbmVOb2RlKCEwKSA6IChEdC5pbm5lckhUTUwg
PSBlLm91dGVySFRNTCwgRHQucmVtb3ZlQ2hpbGQobyA9IER0LmZpcnN0Q2hpbGQpKSwgIShiLnN1
cHBvcnQubm9DbG9uZUV2ZW50ICYmIGIuc3VwcG9ydC5ub0Nsb25lQ2hlY2tlZCB8fCAxICE9PSBl
Lm5vZGVUeXBlICYmIDExICE9PSBlLm5vZGVUeXBlIHx8IGIuaXNYTUxEb2MoZSkpKQotICAgICAg
ICAgICAgICAgIGZvciAociA9IE90KG8pLCBzID0gT3QoZSksIGEgPSAwOyBudWxsICE9IChpID0g
c1thXSk7ICsrYSkKLSAgICAgICAgICAgICAgICAgICAgclthXSAmJiBGdChpLCByW2FdKTsKLSAg
ICAgICAgICAgIGlmICh0KQotICAgICAgICAgICAgICAgIGlmIChuKQotICAgICAgICAgICAgICAg
ICAgICBmb3IgKHMgPSBzIHx8IE90KGUpLCByID0gciB8fCBPdChvKSwgYSA9IDA7IG51bGwgIT0g
KGkgPSBzW2FdKTsgYSsrKQotICAgICAgICAgICAgICAgICAgICAgICAgX3QoaSwgclthXSk7Ci0g
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBfdChlLCBvKTsKLSAgICAg
ICAgICAgIHJldHVybiByID0gT3QobywgInNjcmlwdCIpLCByLmxlbmd0aCA+IDAgJiYgTXQociwg
IXUgJiYgT3QoZSwgInNjcmlwdCIpKSwgciA9IHMgPSBpID0gbnVsbCwgbwotICAgICAgICB9LAot
ICAgICAgICBidWlsZEZyYWdtZW50OiBmdW5jdGlvbihlLCB0LCBuLCByKSB7Ci0gICAgICAgICAg
ICB2YXIgaSwKLSAgICAgICAgICAgICAgICBvLAotICAgICAgICAgICAgICAgIGEsCi0gICAgICAg
ICAgICAgICAgcywKLSAgICAgICAgICAgICAgICB1LAotICAgICAgICAgICAgICAgIGwsCi0gICAg
ICAgICAgICAgICAgYywKLSAgICAgICAgICAgICAgICBwID0gZS5sZW5ndGgsCi0gICAgICAgICAg
ICAgICAgZiA9IGR0KHQpLAotICAgICAgICAgICAgICAgIGQgPSBbXSwKLSAgICAgICAgICAgICAg
ICBoID0gMDsKLSAgICAgICAgICAgIGZvciAoOyBwID4gaDsgaCsrKQotICAgICAgICAgICAgICAg
IGlmIChvID0gZVtoXSwgbyB8fCAwID09PSBvKQotICAgICAgICAgICAgICAgICAgICBpZiAoIm9i
amVjdCIgPT09IGIudHlwZShvKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGIubWVyZ2UoZCwg
by5ub2RlVHlwZSA/IFtvXSA6IG8pOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh3dC50
ZXN0KG8pKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzID0gcyB8fCBmLmFwcGVuZENoaWxk
KHQuY3JlYXRlRWxlbWVudCgiZGl2IikpLAotICAgICAgICAgICAgICAgICAgICAgICAgdSA9IChi
dC5leGVjKG8pIHx8IFsiIiwgIiJdKVsxXS50b0xvd2VyQ2FzZSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgYyA9IEF0W3VdIHx8IEF0Ll9kZWZhdWx0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgcy5pbm5lckhUTUwgPSBjWzFdICsgby5yZXBsYWNlKHZ0LCAiPCQxPjwvJDI+IikgKyBjWzJd
LAotICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGNbMF07Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB3aGlsZSAoaS0tKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzLmxhc3RD
aGlsZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYi5zdXBwb3J0LmxlYWRpbmdXaGl0
ZXNwYWNlICYmIHl0LnRlc3QobykgJiYgZC5wdXNoKHQuY3JlYXRlVGV4dE5vZGUoeXQuZXhlYyhv
KVswXSkpLCAhYi5zdXBwb3J0LnRib2R5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
byA9ICJ0YWJsZSIgIT09IHUgfHwgeHQudGVzdChvKSA/ICI8dGFibGU+IiAhPT0gY1sxXSB8fCB4
dC50ZXN0KG8pID8gMCA6IHMgOiBzLmZpcnN0Q2hpbGQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaSA9IG8gJiYgby5jaGlsZE5vZGVzLmxlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aGlsZSAoaS0tKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLm5v
ZGVOYW1lKGwgPSBvLmNoaWxkTm9kZXNbaV0sICJ0Ym9keSIpICYmICFsLmNoaWxkTm9kZXMubGVu
Z3RoICYmIG8ucmVtb3ZlQ2hpbGQobCkKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIGIubWVyZ2UoZCwgcy5jaGlsZE5vZGVzKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHMudGV4dENvbnRlbnQgPSAiIjsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHdoaWxlIChzLmZpcnN0Q2hpbGQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5yZW1v
dmVDaGlsZChzLmZpcnN0Q2hpbGQpOwotICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGYubGFz
dENoaWxkCi0gICAgICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICAg
ICAgZC5wdXNoKHQuY3JlYXRlVGV4dE5vZGUobykpOwotICAgICAgICAgICAgcyAmJiBmLnJlbW92
ZUNoaWxkKHMpLAotICAgICAgICAgICAgYi5zdXBwb3J0LmFwcGVuZENoZWNrZWQgfHwgYi5ncmVw
KE90KGQsICJpbnB1dCIpLCBCdCksCi0gICAgICAgICAgICBoID0gMDsKLSAgICAgICAgICAgIHdo
aWxlIChvID0gZFtoKytdKQotICAgICAgICAgICAgICAgIGlmICgoIXIgfHwgLTEgPT09IGIuaW5B
cnJheShvLCByKSkgJiYgKGEgPSBiLmNvbnRhaW5zKG8ub3duZXJEb2N1bWVudCwgbyksIHMgPSBP
dChmLmFwcGVuZENoaWxkKG8pLCAic2NyaXB0IiksIGEgJiYgTXQocyksIG4pKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGkgPSAwOwotICAgICAgICAgICAgICAgICAgICB3aGlsZSAobyA9IHNbaSsr
XSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGt0LnRlc3Qoby50eXBlIHx8ICIiKSAmJiBuLnB1
c2gobykKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gcyA9IG51bGwsIGYK
LSAgICAgICAgfSwKLSAgICAgICAgY2xlYW5EYXRhOiBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAg
ICAgICB2YXIgbiwKLSAgICAgICAgICAgICAgICByLAotICAgICAgICAgICAgICAgIG8sCi0gICAg
ICAgICAgICAgICAgYSwKLSAgICAgICAgICAgICAgICBzID0gMCwKLSAgICAgICAgICAgICAgICB1
ID0gYi5leHBhbmRvLAotICAgICAgICAgICAgICAgIGwgPSBiLmNhY2hlLAotICAgICAgICAgICAg
ICAgIHAgPSBiLnN1cHBvcnQuZGVsZXRlRXhwYW5kbywKLSAgICAgICAgICAgICAgICBmID0gYi5l
dmVudC5zcGVjaWFsOwotICAgICAgICAgICAgZm9yICg7IG51bGwgIT0gKG4gPSBlW3NdKTsgcysr
KQotICAgICAgICAgICAgICAgIGlmICgodCB8fCBiLmFjY2VwdERhdGEobikpICYmIChvID0gblt1
XSwgYSA9IG8gJiYgbFtvXSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGEuZXZlbnRzKQot
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChyIGluIGEuZXZlbnRzKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZbcl0gPyBiLmV2ZW50LnJlbW92ZShuLCByKSA6IGIucmVtb3ZlRXZl
bnQobiwgciwgYS5oYW5kbGUpOwotICAgICAgICAgICAgICAgICAgICBsW29dICYmIChkZWxldGUg
bFtvXSwgcCA/IGRlbGV0ZSBuW3VdIDogdHlwZW9mIG4ucmVtb3ZlQXR0cmlidXRlICE9PSBpID8g
bi5yZW1vdmVBdHRyaWJ1dGUodSkgOiBuW3VdID0gbnVsbCwgYy5wdXNoKG8pKQotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0pOwotICAgIHZhciBQdCwKLSAgICAgICAgUnQsCi0g
ICAgICAgIFd0LAotICAgICAgICAkdCA9IC9hbHBoYVwoW14pXSpcKS9pLAotICAgICAgICBJdCA9
IC9vcGFjaXR5XHMqPVxzKihbXildKikvLAotICAgICAgICB6dCA9IC9eKHRvcHxyaWdodHxib3R0
b218bGVmdCkkLywKLSAgICAgICAgWHQgPSAvXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sCi0g
ICAgICAgIFV0ID0gL15tYXJnaW4vLAotICAgICAgICBWdCA9IFJlZ0V4cCgiXigiICsgeCArICIp
KC4qKSQiLCAiaSIpLAotICAgICAgICBZdCA9IFJlZ0V4cCgiXigiICsgeCArICIpKD8hcHgpW2Et
eiVdKyQiLCAiaSIpLAotICAgICAgICBKdCA9IFJlZ0V4cCgiXihbKy1dKT0oIiArIHggKyAiKSIs
ICJpIiksCi0gICAgICAgIEd0ID0gewotICAgICAgICAgICAgQk9EWTogImJsb2NrIgotICAgICAg
ICB9LAotICAgICAgICBRdCA9IHsKLSAgICAgICAgICAgIHBvc2l0aW9uOiAiYWJzb2x1dGUiLAot
ICAgICAgICAgICAgdmlzaWJpbGl0eTogImhpZGRlbiIsCi0gICAgICAgICAgICBkaXNwbGF5OiAi
YmxvY2siCi0gICAgICAgIH0sCi0gICAgICAgIEt0ID0gewotICAgICAgICAgICAgbGV0dGVyU3Bh
Y2luZzogMCwKLSAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDQwMAotICAgICAgICB9LAotICAgICAg
ICBadCA9IFsiVG9wIiwgIlJpZ2h0IiwgIkJvdHRvbSIsICJMZWZ0Il0sCi0gICAgICAgIGVuID0g
WyJXZWJraXQiLCAiTyIsICJNb3oiLCAibXMiXTsKLSAgICBmdW5jdGlvbiB0bihlLCB0KSB7Ci0g
ICAgICAgIGlmICh0IGluIGUpCi0gICAgICAgICAgICByZXR1cm4gdDsKLSAgICAgICAgdmFyIG4g
PSB0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdC5zbGljZSgxKSwKLSAgICAgICAgICAgIHIg
PSB0LAotICAgICAgICAgICAgaSA9IGVuLmxlbmd0aDsKLSAgICAgICAgd2hpbGUgKGktLSkKLSAg
ICAgICAgICAgIGlmICh0ID0gZW5baV0gKyBuLCB0IGluIGUpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHQ7Ci0gICAgICAgIHJldHVybiByCi0gICAgfQotICAgIGZ1bmN0aW9uIG5uKGUsIHQpIHsK
LSAgICAgICAgcmV0dXJuIGUgPSB0IHx8IGUsICJub25lIiA9PT0gYi5jc3MoZSwgImRpc3BsYXki
KSB8fCAhYi5jb250YWlucyhlLm93bmVyRG9jdW1lbnQsIGUpCi0gICAgfQotICAgIGZ1bmN0aW9u
IHJuKGUsIHQpIHsKLSAgICAgICAgdmFyIG4sCi0gICAgICAgICAgICByLAotICAgICAgICAgICAg
aSwKLSAgICAgICAgICAgIG8gPSBbXSwKLSAgICAgICAgICAgIGEgPSAwLAotICAgICAgICAgICAg
cyA9IGUubGVuZ3RoOwotICAgICAgICBmb3IgKDsgcyA+IGE7IGErKykKLSAgICAgICAgICAgIHIg
PSBlW2FdLAotICAgICAgICAgICAgci5zdHlsZSAmJiAob1thXSA9IGIuX2RhdGEociwgIm9sZGRp
c3BsYXkiKSwgbiA9IHIuc3R5bGUuZGlzcGxheSwgdCA/IChvW2FdIHx8ICJub25lIiAhPT0gbiB8
fCAoci5zdHlsZS5kaXNwbGF5ID0gIiIpLCAiIiA9PT0gci5zdHlsZS5kaXNwbGF5ICYmIG5uKHIp
ICYmIChvW2FdID0gYi5fZGF0YShyLCAib2xkZGlzcGxheSIsIHVuKHIubm9kZU5hbWUpKSkpIDog
b1thXSB8fCAoaSA9IG5uKHIpLCAobiAmJiAibm9uZSIgIT09IG4gfHwgIWkpICYmIGIuX2RhdGEo
ciwgIm9sZGRpc3BsYXkiLCBpID8gbiA6IGIuY3NzKHIsICJkaXNwbGF5IikpKSk7Ci0gICAgICAg
IGZvciAoYSA9IDA7IHMgPiBhOyBhKyspCi0gICAgICAgICAgICByID0gZVthXSwKLSAgICAgICAg
ICAgIHIuc3R5bGUgJiYgKHQgJiYgIm5vbmUiICE9PSByLnN0eWxlLmRpc3BsYXkgJiYgIiIgIT09
IHIuc3R5bGUuZGlzcGxheSB8fCAoci5zdHlsZS5kaXNwbGF5ID0gdCA/IG9bYV0gfHwgIiIgOiAi
bm9uZSIpKTsKLSAgICAgICAgcmV0dXJuIGUKLSAgICB9Ci0gICAgYi5mbi5leHRlbmQoewotICAg
ICAgICBjc3M6IGZ1bmN0aW9uKGUsIG4pIHsKLSAgICAgICAgICAgIHJldHVybiBiLmFjY2Vzcyh0
aGlzLCBmdW5jdGlvbihlLCBuLCByKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGksCi0gICAgICAg
ICAgICAgICAgICAgIG8sCi0gICAgICAgICAgICAgICAgICAgIGEgPSB7fSwKLSAgICAgICAgICAg
ICAgICAgICAgcyA9IDA7Ci0gICAgICAgICAgICAgICAgaWYgKGIuaXNBcnJheShuKSkgewotICAg
ICAgICAgICAgICAgICAgICBmb3IgKG8gPSBSdChlKSwgaSA9IG4ubGVuZ3RoOyBpID4gczsgcysr
KQotICAgICAgICAgICAgICAgICAgICAgICAgYVtuW3NdXSA9IGIuY3NzKGUsIG5bc10sICExLCBv
KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHIgIT09IHQgPyBiLnN0eWxlKGUsIG4sIHIpIDogYi5jc3MoZSwg
bikKLSAgICAgICAgICAgIH0sIGUsIG4sIGFyZ3VtZW50cy5sZW5ndGggPiAxKQotICAgICAgICB9
LAotICAgICAgICBzaG93OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiBybih0aGlz
LCAhMCkKLSAgICAgICAgfSwKLSAgICAgICAgaGlkZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gcm4odGhpcykKLSAgICAgICAgfSwKLSAgICAgICAgdG9nZ2xlOiBmdW5jdGlvbihl
KSB7Ci0gICAgICAgICAgICB2YXIgdCA9ICJib29sZWFuIiA9PSB0eXBlb2YgZTsKLSAgICAgICAg
ICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgKHQgPyBl
IDogbm4odGhpcykpID8gYih0aGlzKS5zaG93KCkgOiBiKHRoaXMpLmhpZGUoKQotICAgICAgICAg
ICAgfSkKLSAgICAgICAgfQotICAgIH0pLAotICAgIGIuZXh0ZW5kKHsKLSAgICAgICAgY3NzSG9v
a3M6IHsKLSAgICAgICAgICAgIG9wYWNpdHk6IHsKLSAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0
aW9uKGUsIHQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBuID0gV3QoZSwgIm9wYWNpdHkiKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAiIiA9PT0gbiA/ICIxIiA6IG4KLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgY3NzTnVt
YmVyOiB7Ci0gICAgICAgICAgICBjb2x1bW5Db3VudDogITAsCi0gICAgICAgICAgICBmaWxsT3Bh
Y2l0eTogITAsCi0gICAgICAgICAgICBmb250V2VpZ2h0OiAhMCwKLSAgICAgICAgICAgIGxpbmVI
ZWlnaHQ6ICEwLAotICAgICAgICAgICAgb3BhY2l0eTogITAsCi0gICAgICAgICAgICBvcnBoYW5z
OiAhMCwKLSAgICAgICAgICAgIHdpZG93czogITAsCi0gICAgICAgICAgICB6SW5kZXg6ICEwLAot
ICAgICAgICAgICAgem9vbTogITAKLSAgICAgICAgfSwKLSAgICAgICAgY3NzUHJvcHM6IHsKLSAg
ICAgICAgICAgICJmbG9hdCI6IGIuc3VwcG9ydC5jc3NGbG9hdCA/ICJjc3NGbG9hdCIgOiAic3R5
bGVGbG9hdCIKLSAgICAgICAgfSwKLSAgICAgICAgc3R5bGU6IGZ1bmN0aW9uKGUsIG4sIHIsIGkp
IHsKLSAgICAgICAgICAgIGlmIChlICYmIDMgIT09IGUubm9kZVR5cGUgJiYgOCAhPT0gZS5ub2Rl
VHlwZSAmJiBlLnN0eWxlKSB7Ci0gICAgICAgICAgICAgICAgdmFyIG8sCi0gICAgICAgICAgICAg
ICAgICAgIGEsCi0gICAgICAgICAgICAgICAgICAgIHMsCi0gICAgICAgICAgICAgICAgICAgIHUg
PSBiLmNhbWVsQ2FzZShuKSwKLSAgICAgICAgICAgICAgICAgICAgbCA9IGUuc3R5bGU7Ci0gICAg
ICAgICAgICAgICAgaWYgKG4gPSBiLmNzc1Byb3BzW3VdIHx8IChiLmNzc1Byb3BzW3VdID0gdG4o
bCwgdSkpLCBzID0gYi5jc3NIb29rc1tuXSB8fCBiLmNzc0hvb2tzW3VdLCByID09PSB0KQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gcyAmJiAiZ2V0IiBpbiBzICYmIChvID0gcy5nZXQoZSwg
ITEsIGkpKSAhPT0gdCA/IG8gOiBsW25dOwotICAgICAgICAgICAgICAgIGlmIChhID0gdHlwZW9m
IHIsICJzdHJpbmciID09PSBhICYmIChvID0gSnQuZXhlYyhyKSkgJiYgKHIgPSAob1sxXSArIDEp
ICogb1syXSArIHBhcnNlRmxvYXQoYi5jc3MoZSwgbikpLCBhID0gIm51bWJlciIpLCAhKG51bGwg
PT0gciB8fCAibnVtYmVyIiA9PT0gYSAmJiBpc05hTihyKSB8fCAoIm51bWJlciIgIT09IGEgfHwg
Yi5jc3NOdW1iZXJbdV0gfHwgKHIgKz0gInB4IiksIGIuc3VwcG9ydC5jbGVhckNsb25lU3R5bGUg
fHwgIiIgIT09IHIgfHwgMCAhPT0gbi5pbmRleE9mKCJiYWNrZ3JvdW5kIikgfHwgKGxbbl0gPSAi
aW5oZXJpdCIpLCBzICYmICJzZXQiIGluIHMgJiYgKHIgPSBzLnNldChlLCByLCBpKSkgPT09IHQp
KSkKLSAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxb
bl0gPSByCi0gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGMpIHt9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0sCi0gICAgICAgIGNzczogZnVuY3Rpb24oZSwgbiwgciwgaSkgewotICAgICAg
ICAgICAgdmFyIG8sCi0gICAgICAgICAgICAgICAgYSwKLSAgICAgICAgICAgICAgICBzLAotICAg
ICAgICAgICAgICAgIHUgPSBiLmNhbWVsQ2FzZShuKTsKLSAgICAgICAgICAgIHJldHVybiBuID0g
Yi5jc3NQcm9wc1t1XSB8fCAoYi5jc3NQcm9wc1t1XSA9IHRuKGUuc3R5bGUsIHUpKSwgcyA9IGIu
Y3NzSG9va3Nbbl0gfHwgYi5jc3NIb29rc1t1XSwgcyAmJiAiZ2V0IiBpbiBzICYmIChhID0gcy5n
ZXQoZSwgITAsIHIpKSwgYSA9PT0gdCAmJiAoYSA9IFd0KGUsIG4sIGkpKSwgIm5vcm1hbCIgPT09
IGEgJiYgbiBpbiBLdCAmJiAoYSA9IEt0W25dKSwgIiIgPT09IHIgfHwgciA/IChvID0gcGFyc2VG
bG9hdChhKSwgciA9PT0gITAgfHwgYi5pc051bWVyaWMobykgPyBvIHx8IDAgOiBhKSA6IGEKLSAg
ICAgICAgfSwKLSAgICAgICAgc3dhcDogZnVuY3Rpb24oZSwgdCwgbiwgcikgewotICAgICAgICAg
ICAgdmFyIGksCi0gICAgICAgICAgICAgICAgbywKLSAgICAgICAgICAgICAgICBhID0ge307Ci0g
ICAgICAgICAgICBmb3IgKG8gaW4gdCkKLSAgICAgICAgICAgICAgICBhW29dID0gZS5zdHlsZVtv
XSwKLSAgICAgICAgICAgICAgICBlLnN0eWxlW29dID0gdFtvXTsKLSAgICAgICAgICAgIGkgPSBu
LmFwcGx5KGUsIHIgfHwgW10pOwotICAgICAgICAgICAgZm9yIChvIGluIHQpCi0gICAgICAgICAg
ICAgICAgZS5zdHlsZVtvXSA9IGFbb107Ci0gICAgICAgICAgICByZXR1cm4gaQotICAgICAgICB9
Ci0gICAgfSksCi0gICAgZS5nZXRDb21wdXRlZFN0eWxlID8gKFJ0ID0gZnVuY3Rpb24odCkgewot
ICAgICAgICByZXR1cm4gZS5nZXRDb21wdXRlZFN0eWxlKHQsIG51bGwpCi0gICAgfSwgV3QgPSBm
dW5jdGlvbihlLCBuLCByKSB7Ci0gICAgICAgIHZhciBpLAotICAgICAgICAgICAgbywKLSAgICAg
ICAgICAgIGEsCi0gICAgICAgICAgICBzID0gciB8fCBSdChlKSwKLSAgICAgICAgICAgIHUgPSBz
ID8gcy5nZXRQcm9wZXJ0eVZhbHVlKG4pIHx8IHNbbl0gOiB0LAotICAgICAgICAgICAgbCA9IGUu
c3R5bGU7Ci0gICAgICAgIHJldHVybiBzICYmICgiIiAhPT0gdSB8fCBiLmNvbnRhaW5zKGUub3du
ZXJEb2N1bWVudCwgZSkgfHwgKHUgPSBiLnN0eWxlKGUsIG4pKSwgWXQudGVzdCh1KSAmJiBVdC50
ZXN0KG4pICYmIChpID0gbC53aWR0aCwgbyA9IGwubWluV2lkdGgsIGEgPSBsLm1heFdpZHRoLCBs
Lm1pbldpZHRoID0gbC5tYXhXaWR0aCA9IGwud2lkdGggPSB1LCB1ID0gcy53aWR0aCwgbC53aWR0
aCA9IGksIGwubWluV2lkdGggPSBvLCBsLm1heFdpZHRoID0gYSkpLCB1Ci0gICAgfSkgOiBvLmRv
Y3VtZW50RWxlbWVudC5jdXJyZW50U3R5bGUgJiYgKFJ0ID0gZnVuY3Rpb24oZSkgewotICAgICAg
ICByZXR1cm4gZS5jdXJyZW50U3R5bGUKLSAgICB9LCBXdCA9IGZ1bmN0aW9uKGUsIG4sIHIpIHsK
LSAgICAgICAgdmFyIGksCi0gICAgICAgICAgICBvLAotICAgICAgICAgICAgYSwKLSAgICAgICAg
ICAgIHMgPSByIHx8IFJ0KGUpLAotICAgICAgICAgICAgdSA9IHMgPyBzW25dIDogdCwKLSAgICAg
ICAgICAgIGwgPSBlLnN0eWxlOwotICAgICAgICByZXR1cm4gbnVsbCA9PSB1ICYmIGwgJiYgbFtu
XSAmJiAodSA9IGxbbl0pLCBZdC50ZXN0KHUpICYmICF6dC50ZXN0KG4pICYmIChpID0gbC5sZWZ0
LCBvID0gZS5ydW50aW1lU3R5bGUsIGEgPSBvICYmIG8ubGVmdCwgYSAmJiAoby5sZWZ0ID0gZS5j
dXJyZW50U3R5bGUubGVmdCksIGwubGVmdCA9ICJmb250U2l6ZSIgPT09IG4gPyAiMWVtIiA6IHUs
IHUgPSBsLnBpeGVsTGVmdCArICJweCIsIGwubGVmdCA9IGksIGEgJiYgKG8ubGVmdCA9IGEpKSwg
IiIgPT09IHUgPyAiYXV0byIgOiB1Ci0gICAgfSk7Ci0gICAgZnVuY3Rpb24gb24oZSwgdCwgbikg
ewotICAgICAgICB2YXIgciA9IFZ0LmV4ZWModCk7Ci0gICAgICAgIHJldHVybiByID8gTWF0aC5t
YXgoMCwgclsxXSAtIChuIHx8IDApKSArIChyWzJdIHx8ICJweCIpIDogdAotICAgIH0KLSAgICBm
dW5jdGlvbiBhbihlLCB0LCBuLCByLCBpKSB7Ci0gICAgICAgIHZhciBvID0gbiA9PT0gKHIgPyAi
Ym9yZGVyIiA6ICJjb250ZW50IikgPyA0IDogIndpZHRoIiA9PT0gdCA/IDEgOiAwLAotICAgICAg
ICAgICAgYSA9IDA7Ci0gICAgICAgIGZvciAoOyA0ID4gbzsgbyArPSAyKQotICAgICAgICAgICAg
Im1hcmdpbiIgPT09IG4gJiYgKGEgKz0gYi5jc3MoZSwgbiArIFp0W29dLCAhMCwgaSkpLAotICAg
ICAgICAgICAgciA/ICgiY29udGVudCIgPT09IG4gJiYgKGEgLT0gYi5jc3MoZSwgInBhZGRpbmci
ICsgWnRbb10sICEwLCBpKSksICJtYXJnaW4iICE9PSBuICYmIChhIC09IGIuY3NzKGUsICJib3Jk
ZXIiICsgWnRbb10gKyAiV2lkdGgiLCAhMCwgaSkpKSA6IChhICs9IGIuY3NzKGUsICJwYWRkaW5n
IiArIFp0W29dLCAhMCwgaSksICJwYWRkaW5nIiAhPT0gbiAmJiAoYSArPSBiLmNzcyhlLCAiYm9y
ZGVyIiArIFp0W29dICsgIldpZHRoIiwgITAsIGkpKSk7Ci0gICAgICAgIHJldHVybiBhCi0gICAg
fQotICAgIGZ1bmN0aW9uIHNuKGUsIHQsIG4pIHsKLSAgICAgICAgdmFyIHIgPSAhMCwKLSAgICAg
ICAgICAgIGkgPSAid2lkdGgiID09PSB0ID8gZS5vZmZzZXRXaWR0aCA6IGUub2Zmc2V0SGVpZ2h0
LAotICAgICAgICAgICAgbyA9IFJ0KGUpLAotICAgICAgICAgICAgYSA9IGIuc3VwcG9ydC5ib3hT
aXppbmcgJiYgImJvcmRlci1ib3giID09PSBiLmNzcyhlLCAiYm94U2l6aW5nIiwgITEsIG8pOwot
ICAgICAgICBpZiAoMCA+PSBpIHx8IG51bGwgPT0gaSkgewotICAgICAgICAgICAgaWYgKGkgPSBX
dChlLCB0LCBvKSwgKDAgPiBpIHx8IG51bGwgPT0gaSkgJiYgKGkgPSBlLnN0eWxlW3RdKSwgWXQu
dGVzdChpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gaTsKLSAgICAgICAgICAgIHIgPSBhICYm
IChiLnN1cHBvcnQuYm94U2l6aW5nUmVsaWFibGUgfHwgaSA9PT0gZS5zdHlsZVt0XSksCi0gICAg
ICAgICAgICBpID0gcGFyc2VGbG9hdChpKSB8fCAwCi0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IGkgKyBhbihlLCB0LCBuIHx8IChhID8gImJvcmRlciIgOiAiY29udGVudCIpLCByLCBvKSArICJw
eCIKLSAgICB9Ci0gICAgZnVuY3Rpb24gdW4oZSkgewotICAgICAgICB2YXIgdCA9IG8sCi0gICAg
ICAgICAgICBuID0gR3RbZV07Ci0gICAgICAgIHJldHVybiBuIHx8IChuID0gbG4oZSwgdCksICJu
b25lIiAhPT0gbiAmJiBuIHx8IChQdCA9IChQdCB8fCBiKCI8aWZyYW1lIGZyYW1lYm9yZGVyPScw
JyB3aWR0aD0nMCcgaGVpZ2h0PScwJy8+IikuY3NzKCJjc3NUZXh0IiwgImRpc3BsYXk6YmxvY2sg
IWltcG9ydGFudCIpKS5hcHBlbmRUbyh0LmRvY3VtZW50RWxlbWVudCksIHQgPSAoUHRbMF0uY29u
dGVudFdpbmRvdyB8fCBQdFswXS5jb250ZW50RG9jdW1lbnQpLmRvY3VtZW50LCB0LndyaXRlKCI8
IWRvY3R5cGUgaHRtbD48aHRtbD48Ym9keT4iKSwgdC5jbG9zZSgpLCBuID0gbG4oZSwgdCksIFB0
LmRldGFjaCgpKSwgR3RbZV0gPSBuKSwgbgotICAgIH0KLSAgICBmdW5jdGlvbiBsbihlLCB0KSB7
Ci0gICAgICAgIHZhciBuID0gYih0LmNyZWF0ZUVsZW1lbnQoZSkpLmFwcGVuZFRvKHQuYm9keSks
Ci0gICAgICAgICAgICByID0gYi5jc3MoblswXSwgImRpc3BsYXkiKTsKLSAgICAgICAgcmV0dXJu
IG4ucmVtb3ZlKCksIHIKLSAgICB9Ci0gICAgYi5lYWNoKFsiaGVpZ2h0IiwgIndpZHRoIl0sIGZ1
bmN0aW9uKGUsIG4pIHsKLSAgICAgICAgYi5jc3NIb29rc1tuXSA9IHsKLSAgICAgICAgICAgIGdl
dDogZnVuY3Rpb24oZSwgciwgaSkgewotICAgICAgICAgICAgICAgIHJldHVybiByID8gMCA9PT0g
ZS5vZmZzZXRXaWR0aCAmJiBYdC50ZXN0KGIuY3NzKGUsICJkaXNwbGF5IikpID8gYi5zd2FwKGUs
IFF0LCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNuKGUsIG4sIGkp
Ci0gICAgICAgICAgICAgICAgfSkgOiBzbihlLCBuLCBpKSA6IHQKLSAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUsIHQsIHIpIHsKLSAgICAgICAgICAgICAgICB2YXIg
aSA9IHIgJiYgUnQoZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG9uKGUsIHQsIHIgPyBhbihl
LCBuLCByLCBiLnN1cHBvcnQuYm94U2l6aW5nICYmICJib3JkZXItYm94IiA9PT0gYi5jc3MoZSwg
ImJveFNpemluZyIsICExLCBpKSwgaSkgOiAwKQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfSksCi0gICAgYi5zdXBwb3J0Lm9wYWNpdHkgfHwgKGIuY3NzSG9va3Mub3BhY2l0eSA9IHsK
LSAgICAgICAgZ2V0OiBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICByZXR1cm4gSXQudGVz
dCgodCAmJiBlLmN1cnJlbnRTdHlsZSA/IGUuY3VycmVudFN0eWxlLmZpbHRlciA6IGUuc3R5bGUu
ZmlsdGVyKSB8fCAiIikgPyAuMDEgKiBwYXJzZUZsb2F0KFJlZ0V4cC4kMSkgKyAiIiA6IHQgPyAi
MSIgOiAiIgotICAgICAgICB9LAotICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAg
ICAgICAgIHZhciBuID0gZS5zdHlsZSwKLSAgICAgICAgICAgICAgICByID0gZS5jdXJyZW50U3R5
bGUsCi0gICAgICAgICAgICAgICAgaSA9IGIuaXNOdW1lcmljKHQpID8gImFscGhhKG9wYWNpdHk9
IiArIDEwMCAqIHQgKyAiKSIgOiAiIiwKLSAgICAgICAgICAgICAgICBvID0gciAmJiByLmZpbHRl
ciB8fCBuLmZpbHRlciB8fCAiIjsKLSAgICAgICAgICAgIG4uem9vbSA9IDEsCi0gICAgICAgICAg
ICAodCA+PSAxIHx8ICIiID09PSB0KSAmJiAiIiA9PT0gYi50cmltKG8ucmVwbGFjZSgkdCwgIiIp
KSAmJiBuLnJlbW92ZUF0dHJpYnV0ZSAmJiAobi5yZW1vdmVBdHRyaWJ1dGUoImZpbHRlciIpLCAi
IiA9PT0gdCB8fCByICYmICFyLmZpbHRlcikgfHwgKG4uZmlsdGVyID0gJHQudGVzdChvKSA/IG8u
cmVwbGFjZSgkdCwgaSkgOiBvICsgIiAiICsgaSkKLSAgICAgICAgfQotICAgIH0pLAotICAgIGIo
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGIuc3VwcG9ydC5yZWxpYWJsZU1hcmdpblJpZ2h0IHx8IChi
LmNzc0hvb2tzLm1hcmdpblJpZ2h0ID0gewotICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbihlLCBu
KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG4gPyBiLnN3YXAoZSwgewotICAgICAgICAgICAg
ICAgICAgICBkaXNwbGF5OiAiaW5saW5lLWJsb2NrIgotICAgICAgICAgICAgICAgIH0sIFd0LCBb
ZSwgIm1hcmdpblJpZ2h0Il0pIDogdAotICAgICAgICAgICAgfQotICAgICAgICB9KSwKLSAgICAg
ICAgIWIuc3VwcG9ydC5waXhlbFBvc2l0aW9uICYmIGIuZm4ucG9zaXRpb24gJiYgYi5lYWNoKFsi
dG9wIiwgImxlZnQiXSwgZnVuY3Rpb24oZSwgbikgewotICAgICAgICAgICAgYi5jc3NIb29rc1tu
XSA9IHsKLSAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUsIHIpIHsKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHIgPyAociA9IFd0KGUsIG4pLCBZdC50ZXN0KHIpID8gYihlKS5wb3Np
dGlvbigpW25dICsgInB4IiA6IHIpIDogdAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgfSkKLSAgICB9KSwKLSAgICBiLmV4cHIgJiYgYi5leHByLmZpbHRlcnMgJiYg
KGIuZXhwci5maWx0ZXJzLmhpZGRlbiA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgcmV0dXJuIDAg
Pj0gZS5vZmZzZXRXaWR0aCAmJiAwID49IGUub2Zmc2V0SGVpZ2h0IHx8ICFiLnN1cHBvcnQucmVs
aWFibGVIaWRkZW5PZmZzZXRzICYmICJub25lIiA9PT0gKGUuc3R5bGUgJiYgZS5zdHlsZS5kaXNw
bGF5IHx8IGIuY3NzKGUsICJkaXNwbGF5IikpCi0gICAgfSwgYi5leHByLmZpbHRlcnMudmlzaWJs
ZSA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgcmV0dXJuICFiLmV4cHIuZmlsdGVycy5oaWRkZW4o
ZSkKLSAgICB9KSwKLSAgICBiLmVhY2goewotICAgICAgICBtYXJnaW46ICIiLAotICAgICAgICBw
YWRkaW5nOiAiIiwKLSAgICAgICAgYm9yZGVyOiAiV2lkdGgiCi0gICAgfSwgZnVuY3Rpb24oZSwg
dCkgewotICAgICAgICBiLmNzc0hvb2tzW2UgKyB0XSA9IHsKLSAgICAgICAgICAgIGV4cGFuZDog
ZnVuY3Rpb24obikgewotICAgICAgICAgICAgICAgIHZhciByID0gMCwKLSAgICAgICAgICAgICAg
ICAgICAgaSA9IHt9LAotICAgICAgICAgICAgICAgICAgICBvID0gInN0cmluZyIgPT0gdHlwZW9m
IG4gPyBuLnNwbGl0KCIgIikgOiBbbl07Ci0gICAgICAgICAgICAgICAgZm9yICg7IDQgPiByOyBy
KyspCi0gICAgICAgICAgICAgICAgICAgIGlbZSArIFp0W3JdICsgdF0gPSBvW3JdIHx8IG9bciAt
IDJdIHx8IG9bMF07Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGkKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfSwKLSAgICAgICAgVXQudGVzdChlKSB8fCAoYi5jc3NIb29rc1tlICsgdF0uc2V0ID0g
b24pCi0gICAgfSk7Ci0gICAgdmFyIGNuID0gLyUyMC9nLAotICAgICAgICBwbiA9IC9cW1xdJC8s
Ci0gICAgICAgIGZuID0gL1xyP1xuL2csCi0gICAgICAgIGRuID0gL14oPzpzdWJtaXR8YnV0dG9u
fGltYWdlfHJlc2V0fGZpbGUpJC9pLAotICAgICAgICBobiA9IC9eKD86aW5wdXR8c2VsZWN0fHRl
eHRhcmVhfGtleWdlbikvaTsKLSAgICBiLmZuLmV4dGVuZCh7Ci0gICAgICAgIHNlcmlhbGl6ZTog
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gYi5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFy
cmF5KCkpCi0gICAgICAgIH0sCi0gICAgICAgIHNlcmlhbGl6ZUFycmF5OiBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg
ICB2YXIgZSA9IGIucHJvcCh0aGlzLCAiZWxlbWVudHMiKTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gZSA/IGIubWFrZUFycmF5KGUpIDogdGhpcwotICAgICAgICAgICAgfSkuZmlsdGVyKGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy50eXBlOwotICAgICAgICAgICAg
ICAgIHJldHVybiB0aGlzLm5hbWUgJiYgIWIodGhpcykuaXMoIjpkaXNhYmxlZCIpICYmIGhuLnRl
c3QodGhpcy5ub2RlTmFtZSkgJiYgIWRuLnRlc3QoZSkgJiYgKHRoaXMuY2hlY2tlZCB8fCAhTnQu
dGVzdChlKSkKLSAgICAgICAgICAgIH0pLm1hcChmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAg
ICAgICAgdmFyIG4gPSBiKHRoaXMpLnZhbCgpOwotICAgICAgICAgICAgICAgIHJldHVybiBudWxs
ID09IG4gPyBudWxsIDogYi5pc0FycmF5KG4pID8gYi5tYXAobiwgZnVuY3Rpb24oZSkgewotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTog
dC5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUucmVwbGFjZShmbiwgIlxy
XG4iKQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSkgOiB7Ci0gICAg
ICAgICAgICAgICAgICAgIG5hbWU6IHQubmFtZSwKLSAgICAgICAgICAgICAgICAgICAgdmFsdWU6
IG4ucmVwbGFjZShmbiwgIlxyXG4iKQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0p
LmdldCgpCi0gICAgICAgIH0KLSAgICB9KSwKLSAgICBiLnBhcmFtID0gZnVuY3Rpb24oZSwgbikg
ewotICAgICAgICB2YXIgciwKLSAgICAgICAgICAgIGkgPSBbXSwKLSAgICAgICAgICAgIG8gPSBm
dW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICAgICAgdCA9IGIuaXNGdW5jdGlvbih0KSA/IHQo
KSA6IG51bGwgPT0gdCA/ICIiIDogdCwKLSAgICAgICAgICAgICAgICBpW2kubGVuZ3RoXSA9IGVu
Y29kZVVSSUNvbXBvbmVudChlKSArICI9IiArIGVuY29kZVVSSUNvbXBvbmVudCh0KQotICAgICAg
ICAgICAgfTsKLSAgICAgICAgaWYgKG4gPT09IHQgJiYgKG4gPSBiLmFqYXhTZXR0aW5ncyAmJiBi
LmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksIGIuaXNBcnJheShlKSB8fCBlLmpxdWVyeSAmJiAh
Yi5pc1BsYWluT2JqZWN0KGUpKQotICAgICAgICAgICAgYi5lYWNoKGUsIGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgICAgIG8odGhpcy5uYW1lLCB0aGlzLnZhbHVlKQotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZvciAociBpbiBlKQotICAgICAgICAgICAgICAg
IGduKHIsIGVbcl0sIG4sIG8pOwotICAgICAgICByZXR1cm4gaS5qb2luKCImIikucmVwbGFjZShj
biwgIisiKQotICAgIH07Ci0gICAgZnVuY3Rpb24gZ24oZSwgdCwgbiwgcikgewotICAgICAgICB2
YXIgaTsKLSAgICAgICAgaWYgKGIuaXNBcnJheSh0KSkKLSAgICAgICAgICAgIGIuZWFjaCh0LCBm
dW5jdGlvbih0LCBpKSB7Ci0gICAgICAgICAgICAgICAgbiB8fCBwbi50ZXN0KGUpID8gcihlLCBp
KSA6IGduKGUgKyAiWyIgKyAoIm9iamVjdCIgPT0gdHlwZW9mIGkgPyB0IDogIiIpICsgIl0iLCBp
LCBuLCByKQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIGVsc2UgaWYgKG4gfHwgIm9iamVjdCIg
IT09IGIudHlwZSh0KSkKLSAgICAgICAgICAgIHIoZSwgdCk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGZvciAoaSBpbiB0KQotICAgICAgICAgICAgICAgIGduKGUgKyAiWyIgKyBpICsgIl0i
LCB0W2ldLCBuLCByKQotICAgIH0KLSAgICBiLmVhY2goImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1
c291dCBsb2FkIHJlc2l6ZSBzY3JvbGwgdW5sb2FkIGNsaWNrIGRibGNsaWNrIG1vdXNlZG93biBt
b3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZl
IGNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgZXJyb3IgY29udGV4
dG1lbnUiLnNwbGl0KCIgIiksIGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgYi5mblt0XSA9IGZ1
bmN0aW9uKGUsIG4pIHsKLSAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID4gMCA/
IHRoaXMub24odCwgbnVsbCwgZSwgbikgOiB0aGlzLnRyaWdnZXIodCkKLSAgICAgICAgfQotICAg
IH0pLAotICAgIGIuZm4uaG92ZXIgPSBmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLm1vdXNlZW50ZXIoZSkubW91c2VsZWF2ZSh0IHx8IGUpCi0gICAgfTsKLSAgICB2YXIgbW4s
Ci0gICAgICAgIHluLAotICAgICAgICB2biA9IGIubm93KCksCi0gICAgICAgIGJuID0gL1w/LywK
LSAgICAgICAgeG4gPSAvIy4qJC8sCi0gICAgICAgIHduID0gLyhbPyZdKV89W14mXSovLAotICAg
ICAgICBUbiA9IC9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKVxyPyQvZ20sCi0gICAgICAgIE5uID0g
L14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6
JC8sCi0gICAgICAgIENuID0gL14oPzpHRVR8SEVBRCkkLywKLSAgICAgICAga24gPSAvXlwvXC8v
LAotICAgICAgICBFbiA9IC9eKFtcdy4rLV0rOikoPzpcL1wvKFteXC8/IzpdKikoPzo6KFxkKyl8
KXwpLywKLSAgICAgICAgU24gPSBiLmZuLmxvYWQsCi0gICAgICAgIEFuID0ge30sCi0gICAgICAg
IGpuID0ge30sCi0gICAgICAgIERuID0gIiovIi5jb25jYXQoIioiKTsKLSAgICB0cnkgewotICAg
ICAgICB5biA9IGEuaHJlZgotICAgIH0gY2F0Y2ggKExuKSB7Ci0gICAgICAgIHluID0gby5jcmVh
dGVFbGVtZW50KCJhIiksCi0gICAgICAgIHluLmhyZWYgPSAiIiwKLSAgICAgICAgeW4gPSB5bi5o
cmVmCi0gICAgfQotICAgIG1uID0gRW4uZXhlYyh5bi50b0xvd2VyQ2FzZSgpKSB8fCBbXTsKLSAg
ICBmdW5jdGlvbiBIbihlKSB7Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbih0LCBuKSB7Ci0gICAg
ICAgICAgICAic3RyaW5nIiAhPSB0eXBlb2YgdCAmJiAobiA9IHQsIHQgPSAiKiIpOwotICAgICAg
ICAgICAgdmFyIHIsCi0gICAgICAgICAgICAgICAgaSA9IDAsCi0gICAgICAgICAgICAgICAgbyA9
IHQudG9Mb3dlckNhc2UoKS5tYXRjaCh3KSB8fCBbXTsKLSAgICAgICAgICAgIGlmIChiLmlzRnVu
Y3Rpb24obikpCi0gICAgICAgICAgICAgICAgd2hpbGUgKHIgPSBvW2krK10pCi0gICAgICAgICAg
ICAgICAgICAgICIrIiA9PT0gclswXSA/IChyID0gci5zbGljZSgxKSB8fCAiKiIsIChlW3JdID0g
ZVtyXSB8fCBbXSkudW5zaGlmdChuKSkgOiAoZVtyXSA9IGVbcl0gfHwgW10pLnB1c2gobikKLSAg
ICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBxbihlLCBuLCByLCBpKSB7Ci0gICAgICAgIHZh
ciBvID0ge30sCi0gICAgICAgICAgICBhID0gZSA9PT0gam47Ci0gICAgICAgIGZ1bmN0aW9uIHMo
dSkgewotICAgICAgICAgICAgdmFyIGw7Ci0gICAgICAgICAgICByZXR1cm4gb1t1XSA9ICEwLCBi
LmVhY2goZVt1XSB8fCBbXSwgZnVuY3Rpb24oZSwgdSkgewotICAgICAgICAgICAgICAgIHZhciBj
ID0gdShuLCByLCBpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgIT0gdHlwZW9m
IGMgfHwgYSB8fCBvW2NdID8gYSA/ICEobCA9IGMpIDogdCA6IChuLmRhdGFUeXBlcy51bnNoaWZ0
KGMpLCBzKGMpLCAhMSkKLSAgICAgICAgICAgIH0pLCBsCi0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIHMobi5kYXRhVHlwZXNbMF0pIHx8ICFvWyIqIl0gJiYgcygiKiIpCi0gICAgfQotICAgIGZ1
bmN0aW9uIE1uKGUsIG4pIHsKLSAgICAgICAgdmFyIHIsCi0gICAgICAgICAgICBpLAotICAgICAg
ICAgICAgbyA9IGIuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zIHx8IHt9OwotICAgICAgICBmb3Ig
KGkgaW4gbikKLSAgICAgICAgICAgIG5baV0gIT09IHQgJiYgKChvW2ldID8gZSA6IHIgfHwgKHIg
PSB7fSkpW2ldID0gbltpXSk7Ci0gICAgICAgIHJldHVybiByICYmIGIuZXh0ZW5kKCEwLCBlLCBy
KSwgZQotICAgIH0KLSAgICBiLmZuLmxvYWQgPSBmdW5jdGlvbihlLCBuLCByKSB7Ci0gICAgICAg
IGlmICgic3RyaW5nIiAhPSB0eXBlb2YgZSAmJiBTbikKLSAgICAgICAgICAgIHJldHVybiBTbi5h
cHBseSh0aGlzLCBhcmd1bWVudHMpOwotICAgICAgICB2YXIgaSwKLSAgICAgICAgICAgIG8sCi0g
ICAgICAgICAgICBhLAotICAgICAgICAgICAgcyA9IHRoaXMsCi0gICAgICAgICAgICB1ID0gZS5p
bmRleE9mKCIgIik7Ci0gICAgICAgIHJldHVybiB1ID49IDAgJiYgKGkgPSBlLnNsaWNlKHUsIGUu
bGVuZ3RoKSwgZSA9IGUuc2xpY2UoMCwgdSkpLCBiLmlzRnVuY3Rpb24obikgPyAociA9IG4sIG4g
PSB0KSA6IG4gJiYgIm9iamVjdCIgPT0gdHlwZW9mIG4gJiYgKGEgPSAiUE9TVCIpLCBzLmxlbmd0
aCA+IDAgJiYgYi5hamF4KHsKLSAgICAgICAgICAgIHVybDogZSwKLSAgICAgICAgICAgIHR5cGU6
IGEsCi0gICAgICAgICAgICBkYXRhVHlwZTogImh0bWwiLAotICAgICAgICAgICAgZGF0YTogbgot
ICAgICAgICB9KS5kb25lKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIG8gPSBhcmd1bWVudHMs
Ci0gICAgICAgICAgICBzLmh0bWwoaSA/IGIoIjxkaXY+IikuYXBwZW5kKGIucGFyc2VIVE1MKGUp
KS5maW5kKGkpIDogZSkKLSAgICAgICAgfSkuY29tcGxldGUociAmJiBmdW5jdGlvbihlLCB0KSB7
Ci0gICAgICAgICAgICBzLmVhY2gociwgbyB8fCBbZS5yZXNwb25zZVRleHQsIHQsIGVdKQotICAg
ICAgICB9KSwgdGhpcwotICAgIH0sCi0gICAgYi5lYWNoKFsiYWpheFN0YXJ0IiwgImFqYXhTdG9w
IiwgImFqYXhDb21wbGV0ZSIsICJhamF4RXJyb3IiLCAiYWpheFN1Y2Nlc3MiLCAiYWpheFNlbmQi
XSwgZnVuY3Rpb24oZSwgdCkgewotICAgICAgICBiLmZuW3RdID0gZnVuY3Rpb24oZSkgewotICAg
ICAgICAgICAgcmV0dXJuIHRoaXMub24odCwgZSkKLSAgICAgICAgfQotICAgIH0pLAotICAgIGIu
ZWFjaChbImdldCIsICJwb3N0Il0sIGZ1bmN0aW9uKGUsIG4pIHsKLSAgICAgICAgYltuXSA9IGZ1
bmN0aW9uKGUsIHIsIGksIG8pIHsKLSAgICAgICAgICAgIHJldHVybiBiLmlzRnVuY3Rpb24ocikg
JiYgKG8gPSBvIHx8IGksIGkgPSByLCByID0gdCksIGIuYWpheCh7Ci0gICAgICAgICAgICAgICAg
dXJsOiBlLAotICAgICAgICAgICAgICAgIHR5cGU6IG4sCi0gICAgICAgICAgICAgICAgZGF0YVR5
cGU6IG8sCi0gICAgICAgICAgICAgICAgZGF0YTogciwKLSAgICAgICAgICAgICAgICBzdWNjZXNz
OiBpCi0gICAgICAgICAgICB9KQotICAgICAgICB9Ci0gICAgfSksCi0gICAgYi5leHRlbmQoewot
ICAgICAgICBhY3RpdmU6IDAsCi0gICAgICAgIGxhc3RNb2RpZmllZDoge30sCi0gICAgICAgIGV0
YWc6IHt9LAotICAgICAgICBhamF4U2V0dGluZ3M6IHsKLSAgICAgICAgICAgIHVybDogeW4sCi0g
ICAgICAgICAgICB0eXBlOiAiR0VUIiwKLSAgICAgICAgICAgIGlzTG9jYWw6IE5uLnRlc3QobW5b
MV0pLAotICAgICAgICAgICAgZ2xvYmFsOiAhMCwKLSAgICAgICAgICAgIHByb2Nlc3NEYXRhOiAh
MCwKLSAgICAgICAgICAgIGFzeW5jOiAhMCwKLSAgICAgICAgICAgIGNvbnRlbnRUeXBlOiAiYXBw
bGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IiwKLSAgICAgICAg
ICAgIGFjY2VwdHM6IHsKLSAgICAgICAgICAgICAgICAiKiI6IERuLAotICAgICAgICAgICAgICAg
IHRleHQ6ICJ0ZXh0L3BsYWluIiwKLSAgICAgICAgICAgICAgICBodG1sOiAidGV4dC9odG1sIiwK
LSAgICAgICAgICAgICAgICB4bWw6ICJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sIiwKLSAgICAg
ICAgICAgICAgICBqc29uOiAiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0IgotICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgIGNvbnRlbnRzOiB7Ci0gICAgICAgICAgICAgICAgeG1s
OiAveG1sLywKLSAgICAgICAgICAgICAgICBodG1sOiAvaHRtbC8sCi0gICAgICAgICAgICAgICAg
anNvbjogL2pzb24vCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgcmVzcG9uc2VGaWVsZHM6
IHsKLSAgICAgICAgICAgICAgICB4bWw6ICJyZXNwb25zZVhNTCIsCi0gICAgICAgICAgICAgICAg
dGV4dDogInJlc3BvbnNlVGV4dCIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBjb252ZXJ0
ZXJzOiB7Ci0gICAgICAgICAgICAgICAgIiogdGV4dCI6IGUuU3RyaW5nLAotICAgICAgICAgICAg
ICAgICJ0ZXh0IGh0bWwiOiAhMCwKLSAgICAgICAgICAgICAgICAidGV4dCBqc29uIjogYi5wYXJz
ZUpTT04sCi0gICAgICAgICAgICAgICAgInRleHQgeG1sIjogYi5wYXJzZVhNTAotICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgIGZsYXRPcHRpb25zOiB7Ci0gICAgICAgICAgICAgICAgdXJsOiAh
MCwKLSAgICAgICAgICAgICAgICBjb250ZXh0OiAhMAotICAgICAgICAgICAgfQotICAgICAgICB9
LAotICAgICAgICBhamF4U2V0dXA6IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgIHJldHVy
biB0ID8gTW4oTW4oZSwgYi5hamF4U2V0dGluZ3MpLCB0KSA6IE1uKGIuYWpheFNldHRpbmdzLCBl
KQotICAgICAgICB9LAotICAgICAgICBhamF4UHJlZmlsdGVyOiBIbihBbiksCi0gICAgICAgIGFq
YXhUcmFuc3BvcnQ6IEhuKGpuKSwKLSAgICAgICAgYWpheDogZnVuY3Rpb24oZSwgbikgewotICAg
ICAgICAgICAgIm9iamVjdCIgPT0gdHlwZW9mIGUgJiYgKG4gPSBlLCBlID0gdCksCi0gICAgICAg
ICAgICBuID0gbiB8fCB7fTsKLSAgICAgICAgICAgIHZhciByLAotICAgICAgICAgICAgICAgIGks
Ci0gICAgICAgICAgICAgICAgbywKLSAgICAgICAgICAgICAgICBhLAotICAgICAgICAgICAgICAg
IHMsCi0gICAgICAgICAgICAgICAgdSwKLSAgICAgICAgICAgICAgICBsLAotICAgICAgICAgICAg
ICAgIGMsCi0gICAgICAgICAgICAgICAgcCA9IGIuYWpheFNldHVwKHt9LCBuKSwKLSAgICAgICAg
ICAgICAgICBmID0gcC5jb250ZXh0IHx8IHAsCi0gICAgICAgICAgICAgICAgZCA9IHAuY29udGV4
dCAmJiAoZi5ub2RlVHlwZSB8fCBmLmpxdWVyeSkgPyBiKGYpIDogYi5ldmVudCwKLSAgICAgICAg
ICAgICAgICBoID0gYi5EZWZlcnJlZCgpLAotICAgICAgICAgICAgICAgIGcgPSBiLkNhbGxiYWNr
cygib25jZSBtZW1vcnkiKSwKLSAgICAgICAgICAgICAgICBtID0gcC5zdGF0dXNDb2RlIHx8IHt9
LAotICAgICAgICAgICAgICAgIHkgPSB7fSwKLSAgICAgICAgICAgICAgICB2ID0ge30sCi0gICAg
ICAgICAgICAgICAgeCA9IDAsCi0gICAgICAgICAgICAgICAgVCA9ICJjYW5jZWxlZCIsCi0gICAg
ICAgICAgICAgICAgTiA9IHsKLSAgICAgICAgICAgICAgICAgICAgcmVhZHlTdGF0ZTogMCwKLSAg
ICAgICAgICAgICAgICAgICAgZ2V0UmVzcG9uc2VIZWFkZXI6IGZ1bmN0aW9uKGUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciB0OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDIg
PT09IHgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWMpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHt9OwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aGlsZSAodCA9IFRuLmV4ZWMoYSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjW3RbMV0udG9Mb3dlckNhc2UoKV0gPSB0WzJdCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBjW2UudG9Mb3dl
ckNhc2UoKV0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBudWxsID09IHQgPyBudWxsIDogdAotICAgICAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgICAgICBnZXRBbGxSZXNwb25zZUhlYWRlcnM6IGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDIgPT09IHggPyBhIDogbnVsbAotICAgICAg
ICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBzZXRSZXF1ZXN0SGVhZGVyOiBm
dW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUudG9Mb3dl
ckNhc2UoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB4IHx8IChlID0gdltuXSA9
IHZbbl0gfHwgZSwgeVtlXSA9IHQpLCB0aGlzCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAgICAgICAgIG92ZXJyaWRlTWltZVR5cGU6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB4IHx8IChwLm1pbWVUeXBlID0gZSksIHRoaXMKLSAgICAg
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzQ29kZTogZnVuY3Rp
b24oZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQ7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMiA+IHgpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodCBpbiBlKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbVt0XSA9IFttW3RdLCBlW3RdXTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE4u
YWx3YXlzKGVbTi5zdGF0dXNdKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlz
Ci0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIGFib3J0OiBmdW5j
dGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUgfHwgVDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBsICYmIGwuYWJvcnQodCksIGsoMCwgdCksIHRoaXMK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBp
ZiAoaC5wcm9taXNlKE4pLmNvbXBsZXRlID0gZy5hZGQsIE4uc3VjY2VzcyA9IE4uZG9uZSwgTi5l
cnJvciA9IE4uZmFpbCwgcC51cmwgPSAoKGUgfHwgcC51cmwgfHwgeW4pICsgIiIpLnJlcGxhY2Uo
eG4sICIiKS5yZXBsYWNlKGtuLCBtblsxXSArICIvLyIpLCBwLnR5cGUgPSBuLm1ldGhvZCB8fCBu
LnR5cGUgfHwgcC5tZXRob2QgfHwgcC50eXBlLCBwLmRhdGFUeXBlcyA9IGIudHJpbShwLmRhdGFU
eXBlIHx8ICIqIikudG9Mb3dlckNhc2UoKS5tYXRjaCh3KSB8fCBbIiJdLCBudWxsID09IHAuY3Jv
c3NEb21haW4gJiYgKHIgPSBFbi5leGVjKHAudXJsLnRvTG93ZXJDYXNlKCkpLCBwLmNyb3NzRG9t
YWluID0gISghciB8fCByWzFdID09PSBtblsxXSAmJiByWzJdID09PSBtblsyXSAmJiAoclszXSB8
fCAoImh0dHA6IiA9PT0gclsxXSA/IDgwIDogNDQzKSkgPT0gKG1uWzNdIHx8ICgiaHR0cDoiID09
PSBtblsxXSA/IDgwIDogNDQzKSkpKSwgcC5kYXRhICYmIHAucHJvY2Vzc0RhdGEgJiYgInN0cmlu
ZyIgIT0gdHlwZW9mIHAuZGF0YSAmJiAocC5kYXRhID0gYi5wYXJhbShwLmRhdGEsIHAudHJhZGl0
aW9uYWwpKSwgcW4oQW4sIHAsIG4sIE4pLCAyID09PSB4KQotICAgICAgICAgICAgICAgIHJldHVy
biBOOwotICAgICAgICAgICAgdSA9IHAuZ2xvYmFsLAotICAgICAgICAgICAgdSAmJiAwID09PSBi
LmFjdGl2ZSsrICYmIGIuZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0IiksCi0gICAgICAgICAgICBw
LnR5cGUgPSBwLnR5cGUudG9VcHBlckNhc2UoKSwKLSAgICAgICAgICAgIHAuaGFzQ29udGVudCA9
ICFDbi50ZXN0KHAudHlwZSksCi0gICAgICAgICAgICBvID0gcC51cmwsCi0gICAgICAgICAgICBw
Lmhhc0NvbnRlbnQgfHwgKHAuZGF0YSAmJiAobyA9IHAudXJsICs9IChibi50ZXN0KG8pID8gIiYi
IDogIj8iKSArIHAuZGF0YSwgZGVsZXRlIHAuZGF0YSksIHAuY2FjaGUgPT09ICExICYmIChwLnVy
bCA9IHduLnRlc3QobykgPyBvLnJlcGxhY2Uod24sICIkMV89IiArIHZuKyspIDogbyArIChibi50
ZXN0KG8pID8gIiYiIDogIj8iKSArICJfPSIgKyB2bisrKSksCi0gICAgICAgICAgICBwLmlmTW9k
aWZpZWQgJiYgKGIubGFzdE1vZGlmaWVkW29dICYmIE4uc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9k
aWZpZWQtU2luY2UiLCBiLmxhc3RNb2RpZmllZFtvXSksIGIuZXRhZ1tvXSAmJiBOLnNldFJlcXVl
c3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLCBiLmV0YWdbb10pKSwKLSAgICAgICAgICAgIChwLmRh
dGEgJiYgcC5oYXNDb250ZW50ICYmIHAuY29udGVudFR5cGUgIT09ICExIHx8IG4uY29udGVudFR5
cGUpICYmIE4uc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwgcC5jb250ZW50VHlwZSks
Ci0gICAgICAgICAgICBOLnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsIHAuZGF0YVR5cGVzWzBd
ICYmIHAuYWNjZXB0c1twLmRhdGFUeXBlc1swXV0gPyBwLmFjY2VwdHNbcC5kYXRhVHlwZXNbMF1d
ICsgKCIqIiAhPT0gcC5kYXRhVHlwZXNbMF0gPyAiLCAiICsgRG4gKyAiOyBxPTAuMDEiIDogIiIp
IDogcC5hY2NlcHRzWyIqIl0pOwotICAgICAgICAgICAgZm9yIChpIGluIHAuaGVhZGVycykKLSAg
ICAgICAgICAgICAgICBOLnNldFJlcXVlc3RIZWFkZXIoaSwgcC5oZWFkZXJzW2ldKTsKLSAgICAg
ICAgICAgIGlmIChwLmJlZm9yZVNlbmQgJiYgKHAuYmVmb3JlU2VuZC5jYWxsKGYsIE4sIHApID09
PSAhMSB8fCAyID09PSB4KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTi5hYm9ydCgpOwotICAg
ICAgICAgICAgVCA9ICJhYm9ydCI7Ci0gICAgICAgICAgICBmb3IgKGkgaW4gewotICAgICAgICAg
ICAgICAgIHN1Y2Nlc3M6IDEsCi0gICAgICAgICAgICAgICAgZXJyb3I6IDEsCi0gICAgICAgICAg
ICAgICAgY29tcGxldGU6IDEKLSAgICAgICAgICAgIH0pCi0gICAgICAgICAgICAgICAgTltpXShw
W2ldKTsKLSAgICAgICAgICAgIGlmIChsID0gcW4oam4sIHAsIG4sIE4pKSB7Ci0gICAgICAgICAg
ICAgICAgTi5yZWFkeVN0YXRlID0gMSwKLSAgICAgICAgICAgICAgICB1ICYmIGQudHJpZ2dlcigi
YWpheFNlbmQiLCBbTiwgcF0pLAotICAgICAgICAgICAgICAgIHAuYXN5bmMgJiYgcC50aW1lb3V0
ID4gMCAmJiAocyA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAg
IE4uYWJvcnQoInRpbWVvdXQiKQotICAgICAgICAgICAgICAgIH0sIHAudGltZW91dCkpOwotICAg
ICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIHggPSAxLAotICAgICAgICAg
ICAgICAgICAgICBsLnNlbmQoeSwgaykKLSAgICAgICAgICAgICAgICB9IGNhdGNoIChDKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICghKDIgPiB4KSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IHRocm93IEM7Ci0gICAgICAgICAgICAgICAgICAgIGsoLTEsIEMpCi0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgaygtMSwgIk5vIFRyYW5zcG9y
dCIpOwotICAgICAgICAgICAgZnVuY3Rpb24gayhlLCBuLCByLCBpKSB7Ci0gICAgICAgICAgICAg
ICAgdmFyIGMsCi0gICAgICAgICAgICAgICAgICAgIHksCi0gICAgICAgICAgICAgICAgICAgIHYs
Ci0gICAgICAgICAgICAgICAgICAgIHcsCi0gICAgICAgICAgICAgICAgICAgIFQsCi0gICAgICAg
ICAgICAgICAgICAgIEMgPSBuOwotICAgICAgICAgICAgICAgIDIgIT09IHggJiYgKHggPSAyLCBz
ICYmIGNsZWFyVGltZW91dChzKSwgbCA9IHQsIGEgPSBpIHx8ICIiLCBOLnJlYWR5U3RhdGUgPSBl
ID4gMCA/IDQgOiAwLCByICYmICh3ID0gX24ocCwgTiwgcikpLCBlID49IDIwMCAmJiAzMDAgPiBl
IHx8IDMwNCA9PT0gZSA/IChwLmlmTW9kaWZpZWQgJiYgKFQgPSBOLmdldFJlc3BvbnNlSGVhZGVy
KCJMYXN0LU1vZGlmaWVkIiksIFQgJiYgKGIubGFzdE1vZGlmaWVkW29dID0gVCksIFQgPSBOLmdl
dFJlc3BvbnNlSGVhZGVyKCJldGFnIiksIFQgJiYgKGIuZXRhZ1tvXSA9IFQpKSwgMjA0ID09PSBl
ID8gKGMgPSAhMCwgQyA9ICJub2NvbnRlbnQiKSA6IDMwNCA9PT0gZSA/IChjID0gITAsIEMgPSAi
bm90bW9kaWZpZWQiKSA6IChjID0gRm4ocCwgdyksIEMgPSBjLnN0YXRlLCB5ID0gYy5kYXRhLCB2
ID0gYy5lcnJvciwgYyA9ICF2KSkgOiAodiA9IEMsIChlIHx8ICFDKSAmJiAoQyA9ICJlcnJvciIs
IDAgPiBlICYmIChlID0gMCkpKSwgTi5zdGF0dXMgPSBlLCBOLnN0YXR1c1RleHQgPSAobiB8fCBD
KSArICIiLCBjID8gaC5yZXNvbHZlV2l0aChmLCBbeSwgQywgTl0pIDogaC5yZWplY3RXaXRoKGYs
IFtOLCBDLCB2XSksIE4uc3RhdHVzQ29kZShtKSwgbSA9IHQsIHUgJiYgZC50cmlnZ2VyKGMgPyAi
YWpheFN1Y2Nlc3MiIDogImFqYXhFcnJvciIsIFtOLCBwLCBjID8geSA6IHZdKSwgZy5maXJlV2l0
aChmLCBbTiwgQ10pLCB1ICYmIChkLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsIFtOLCBwXSksIC0t
Yi5hY3RpdmUgfHwgYi5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpKSkKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHJldHVybiBOCi0gICAgICAgIH0sCi0gICAgICAgIGdldFNjcmlwdDogZnVu
Y3Rpb24oZSwgbikgewotICAgICAgICAgICAgcmV0dXJuIGIuZ2V0KGUsIHQsIG4sICJzY3JpcHQi
KQotICAgICAgICB9LAotICAgICAgICBnZXRKU09OOiBmdW5jdGlvbihlLCB0LCBuKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gYi5nZXQoZSwgdCwgbiwgImpzb24iKQotICAgICAgICB9Ci0gICAgfSk7
Ci0gICAgZnVuY3Rpb24gX24oZSwgbiwgcikgewotICAgICAgICB2YXIgaSwKLSAgICAgICAgICAg
IG8sCi0gICAgICAgICAgICBhLAotICAgICAgICAgICAgcywKLSAgICAgICAgICAgIHUgPSBlLmNv
bnRlbnRzLAotICAgICAgICAgICAgbCA9IGUuZGF0YVR5cGVzLAotICAgICAgICAgICAgYyA9IGUu
cmVzcG9uc2VGaWVsZHM7Ci0gICAgICAgIGZvciAocyBpbiBjKQotICAgICAgICAgICAgcyBpbiBy
ICYmIChuW2Nbc11dID0gcltzXSk7Ci0gICAgICAgIHdoaWxlICgiKiIgPT09IGxbMF0pCi0gICAg
ICAgICAgICBsLnNoaWZ0KCksCi0gICAgICAgICAgICBvID09PSB0ICYmIChvID0gZS5taW1lVHlw
ZSB8fCBuLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKSk7Ci0gICAgICAgIGlmIChv
KQotICAgICAgICAgICAgZm9yIChzIGluIHUpCi0gICAgICAgICAgICAgICAgaWYgKHVbc10gJiYg
dVtzXS50ZXN0KG8pKSB7Ci0gICAgICAgICAgICAgICAgICAgIGwudW5zaGlmdChzKTsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgIGlmIChsWzBd
IGluIHIpCi0gICAgICAgICAgICBhID0gbFswXTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBmb3IgKHMgaW4gcikgewotICAgICAgICAgICAgICAgIGlmICghbFswXSB8fCBlLmNvbnZlcnRl
cnNbcyArICIgIiArIGxbMF1dKSB7Ci0gICAgICAgICAgICAgICAgICAgIGEgPSBzOwotICAgICAg
ICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBp
IHx8IChpID0gcykKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGEgPSBhIHx8IGkKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gYSA/IChhICE9PSBsWzBdICYmIGwudW5zaGlmdChhKSwgclth
XSkgOiB0Ci0gICAgfQotICAgIGZ1bmN0aW9uIEZuKGUsIHQpIHsKLSAgICAgICAgdmFyIG4sCi0g
ICAgICAgICAgICByLAotICAgICAgICAgICAgaSwKLSAgICAgICAgICAgIG8sCi0gICAgICAgICAg
ICBhID0ge30sCi0gICAgICAgICAgICBzID0gMCwKLSAgICAgICAgICAgIHUgPSBlLmRhdGFUeXBl
cy5zbGljZSgpLAotICAgICAgICAgICAgbCA9IHVbMF07Ci0gICAgICAgIGlmIChlLmRhdGFGaWx0
ZXIgJiYgKHQgPSBlLmRhdGFGaWx0ZXIodCwgZS5kYXRhVHlwZSkpLCB1WzFdKQotICAgICAgICAg
ICAgZm9yIChpIGluIGUuY29udmVydGVycykKLSAgICAgICAgICAgICAgICBhW2kudG9Mb3dlckNh
c2UoKV0gPSBlLmNvbnZlcnRlcnNbaV07Ci0gICAgICAgIGZvciAoOyByID0gdVsrK3NdOykKLSAg
ICAgICAgICAgIGlmICgiKiIgIT09IHIpIHsKLSAgICAgICAgICAgICAgICBpZiAoIioiICE9PSBs
ICYmIGwgIT09IHIpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBhW2wgKyAiICIgKyBy
XSB8fCBhWyIqICIgKyByXSwgIWkpCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG4gaW4g
YSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9IG4uc3BsaXQoIiAiKSwgb1sx
XSA9PT0gciAmJiAoaSA9IGFbbCArICIgIiArIG9bMF1dIHx8IGFbIiogIiArIG9bMF1dKSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID09PSAhMCA/IGkgPSBhW25dIDogYVtu
XSAhPT0gITAgJiYgKHIgPSBvWzBdLCB1LnNwbGljZShzLS0sIDAsIHIpKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpICE9PSAhMCkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChpICYmIGVbInRocm93cyJdKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQg
PSBpKHQpOwotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBpKHQp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoYykgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGU6ICJwYXJzZXJlcnJvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlcnJvcjogaSA/IGMgOiAiTm8gY29udmVyc2lvbiBmcm9tICIgKyBsICsgIiB0
byAiICsgcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBsID0g
cgotICAgICAgICAgICAgfQotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgc3RhdGU6ICJz
dWNjZXNzIiwKLSAgICAgICAgICAgIGRhdGE6IHQKLSAgICAgICAgfQotICAgIH0KLSAgICBiLmFq
YXhTZXR1cCh7Ci0gICAgICAgIGFjY2VwdHM6IHsKLSAgICAgICAgICAgIHNjcmlwdDogInRleHQv
amF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlw
dCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0IgotICAgICAgICB9LAotICAgICAgICBjb250ZW50
czogewotICAgICAgICAgICAgc2NyaXB0OiAvKD86amF2YXxlY21hKXNjcmlwdC8KLSAgICAgICAg
fSwKLSAgICAgICAgY29udmVydGVyczogewotICAgICAgICAgICAgInRleHQgc2NyaXB0IjogZnVu
Y3Rpb24oZSkgewotICAgICAgICAgICAgICAgIHJldHVybiBiLmdsb2JhbEV2YWwoZSksIGUKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0pLAotICAgIGIuYWpheFByZWZpbHRlcigic2Ny
aXB0IiwgZnVuY3Rpb24oZSkgewotICAgICAgICBlLmNhY2hlID09PSB0ICYmIChlLmNhY2hlID0g
ITEpLAotICAgICAgICBlLmNyb3NzRG9tYWluICYmIChlLnR5cGUgPSAiR0VUIiwgZS5nbG9iYWwg
PSAhMSkKLSAgICB9KSwKLSAgICBiLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsIGZ1bmN0aW9uKGUp
IHsKLSAgICAgICAgaWYgKGUuY3Jvc3NEb21haW4pIHsKLSAgICAgICAgICAgIHZhciBuLAotICAg
ICAgICAgICAgICAgIHIgPSBvLmhlYWQgfHwgYigiaGVhZCIpWzBdIHx8IG8uZG9jdW1lbnRFbGVt
ZW50OwotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICBzZW5kOiBmdW5jdGlv
bih0LCBpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG4gPSBvLmNyZWF0ZUVsZW1lbnQoInNjcmlw
dCIpLAotICAgICAgICAgICAgICAgICAgICBuLmFzeW5jID0gITAsCi0gICAgICAgICAgICAgICAg
ICAgIGUuc2NyaXB0Q2hhcnNldCAmJiAobi5jaGFyc2V0ID0gZS5zY3JpcHRDaGFyc2V0KSwKLSAg
ICAgICAgICAgICAgICAgICAgbi5zcmMgPSBlLnVybCwKLSAgICAgICAgICAgICAgICAgICAgbi5v
bmxvYWQgPSBuLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICh0IHx8ICFuLnJlYWR5U3RhdGUgfHwgL2xvYWRlZHxjb21wbGV0ZS8u
dGVzdChuLnJlYWR5U3RhdGUpKSAmJiAobi5vbmxvYWQgPSBuLm9ucmVhZHlzdGF0ZWNoYW5nZSA9
IG51bGwsIG4ucGFyZW50Tm9kZSAmJiBuLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobiksIG4gPSBu
dWxsLCB0IHx8IGkoMjAwLCAic3VjY2VzcyIpKQotICAgICAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgICAgICByLmluc2VydEJlZm9yZShuLCByLmZpcnN0Q2hpbGQpCi0gICAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBhYm9ydDogZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIG4gJiYgbi5vbmxvYWQodCwgITApCi0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSk7Ci0gICAgdmFyIE9uID0gW10sCi0gICAgICAg
IEJuID0gLyg9KVw/KD89JnwkKXxcP1w/LzsKLSAgICBiLmFqYXhTZXR1cCh7Ci0gICAgICAgIGpz
b25wOiAiY2FsbGJhY2siLAotICAgICAgICBqc29ucENhbGxiYWNrOiBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIHZhciBlID0gT24ucG9wKCkgfHwgYi5leHBhbmRvICsgIl8iICsgdm4rKzsKLSAg
ICAgICAgICAgIHJldHVybiB0aGlzW2VdID0gITAsIGUKLSAgICAgICAgfQotICAgIH0pLAotICAg
IGIuYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsIGZ1bmN0aW9uKG4sIHIsIGkpIHsKLSAgICAg
ICAgdmFyIG8sCi0gICAgICAgICAgICBhLAotICAgICAgICAgICAgcywKLSAgICAgICAgICAgIHUg
PSBuLmpzb25wICE9PSAhMSAmJiAoQm4udGVzdChuLnVybCkgPyAidXJsIiA6ICJzdHJpbmciID09
IHR5cGVvZiBuLmRhdGEgJiYgIShuLmNvbnRlbnRUeXBlIHx8ICIiKS5pbmRleE9mKCJhcHBsaWNh
dGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSAmJiBCbi50ZXN0KG4uZGF0YSkgJiYgImRhdGEi
KTsKLSAgICAgICAgcmV0dXJuIHUgfHwgImpzb25wIiA9PT0gbi5kYXRhVHlwZXNbMF0gPyAobyA9
IG4uanNvbnBDYWxsYmFjayA9IGIuaXNGdW5jdGlvbihuLmpzb25wQ2FsbGJhY2spID8gbi5qc29u
cENhbGxiYWNrKCkgOiBuLmpzb25wQ2FsbGJhY2ssIHUgPyBuW3VdID0gblt1XS5yZXBsYWNlKEJu
LCAiJDEiICsgbykgOiBuLmpzb25wICE9PSAhMSAmJiAobi51cmwgKz0gKGJuLnRlc3Qobi51cmwp
ID8gIiYiIDogIj8iKSArIG4uanNvbnAgKyAiPSIgKyBvKSwgbi5jb252ZXJ0ZXJzWyJzY3JpcHQg
anNvbiJdID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gcyB8fCBiLmVycm9yKG8g
KyAiIHdhcyBub3QgY2FsbGVkIiksIHNbMF0KLSAgICAgICAgfSwgbi5kYXRhVHlwZXNbMF0gPSAi
anNvbiIsIGEgPSBlW29dLCBlW29dID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBzID0gYXJn
dW1lbnRzCi0gICAgICAgIH0sIGkuYWx3YXlzKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgZVtv
XSA9IGEsCi0gICAgICAgICAgICBuW29dICYmIChuLmpzb25wQ2FsbGJhY2sgPSByLmpzb25wQ2Fs
bGJhY2ssIE9uLnB1c2gobykpLAotICAgICAgICAgICAgcyAmJiBiLmlzRnVuY3Rpb24oYSkgJiYg
YShzWzBdKSwKLSAgICAgICAgICAgIHMgPSBhID0gdAotICAgICAgICB9KSwgInNjcmlwdCIpIDog
dAotICAgIH0pOwotICAgIHZhciBQbiwKLSAgICAgICAgUm4sCi0gICAgICAgIFduID0gMCwKLSAg
ICAgICAgJG4gPSBlLkFjdGl2ZVhPYmplY3QgJiYgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB2
YXIgZTsKLSAgICAgICAgICAgIGZvciAoZSBpbiBQbikKLSAgICAgICAgICAgICAgICBQbltlXSh0
LCAhMCkKLSAgICAgICAgfTsKLSAgICBmdW5jdGlvbiBJbigpIHsKLSAgICAgICAgdHJ5IHsKLSAg
ICAgICAgICAgIHJldHVybiBuZXcgZS5YTUxIdHRwUmVxdWVzdAotICAgICAgICB9IGNhdGNoICh0
KSB7fQotICAgIH0KLSAgICBmdW5jdGlvbiB6bigpIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAg
ICAgIHJldHVybiBuZXcgZS5BY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQuWE1MSFRUUCIpCi0gICAg
ICAgIH0gY2F0Y2ggKHQpIHt9Ci0gICAgfQotICAgIGIuYWpheFNldHRpbmdzLnhociA9IGUuQWN0
aXZlWE9iamVjdCA/IGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1cm4gIXRoaXMuaXNMb2NhbCAm
JiBJbigpIHx8IHpuKCkKLSAgICB9IDogSW4sCi0gICAgUm4gPSBiLmFqYXhTZXR0aW5ncy54aHIo
KSwKLSAgICBiLnN1cHBvcnQuY29ycyA9ICEhUm4gJiYgIndpdGhDcmVkZW50aWFscyIgaW4gUm4s
Ci0gICAgUm4gPSBiLnN1cHBvcnQuYWpheCA9ICEhUm4sCi0gICAgUm4gJiYgYi5hamF4VHJhbnNw
b3J0KGZ1bmN0aW9uKG4pIHsKLSAgICAgICAgaWYgKCFuLmNyb3NzRG9tYWluIHx8IGIuc3VwcG9y
dC5jb3JzKSB7Ci0gICAgICAgICAgICB2YXIgcjsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAg
ICAgICAgICAgICAgc2VuZDogZnVuY3Rpb24oaSwgbykgewotICAgICAgICAgICAgICAgICAgICB2
YXIgYSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICB1ID0gbi54aHIoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG4udXNlcm5hbWUgPyB1Lm9w
ZW4obi50eXBlLCBuLnVybCwgbi5hc3luYywgbi51c2VybmFtZSwgbi5wYXNzd29yZCkgOiB1Lm9w
ZW4obi50eXBlLCBuLnVybCwgbi5hc3luYyksIG4ueGhyRmllbGRzKQotICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yIChzIGluIG4ueGhyRmllbGRzKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVbc10gPSBuLnhockZpZWxkc1tzXTsKLSAgICAgICAgICAgICAgICAgICAgbi5taW1lVHlw
ZSAmJiB1Lm92ZXJyaWRlTWltZVR5cGUgJiYgdS5vdmVycmlkZU1pbWVUeXBlKG4ubWltZVR5cGUp
LAotICAgICAgICAgICAgICAgICAgICBuLmNyb3NzRG9tYWluIHx8IGlbIlgtUmVxdWVzdGVkLVdp
dGgiXSB8fCAoaVsiWC1SZXF1ZXN0ZWQtV2l0aCJdID0gIlhNTEh0dHBSZXF1ZXN0Iik7Ci0gICAg
ICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHMgaW4g
aSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1LnNldFJlcXVlc3RIZWFkZXIocywgaVtz
XSkKLSAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAobCkge30KLSAgICAgICAgICAgICAgICAg
ICAgdS5zZW5kKG4uaGFzQ29udGVudCAmJiBuLmRhdGEgfHwgbnVsbCksCi0gICAgICAgICAgICAg
ICAgICAgIHIgPSBmdW5jdGlvbihlLCBpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIg
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcDsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgJiYgKGkg
fHwgNCA9PT0gdS5yZWFkeVN0YXRlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHIgPSB0LCBhICYmICh1Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGIubm9vcCwgJG4gJiYgZGVs
ZXRlIFBuW2FdKSwgaSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQgIT09
IHUucmVhZHlTdGF0ZSAmJiB1LmFib3J0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHt9LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHUuc3RhdHVzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHUuZ2V0QWxsUmVzcG9uc2VIZWFkZXJz
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIiA9PSB0eXBl
b2YgdS5yZXNwb25zZVRleHQgJiYgKHAudGV4dCA9IHUucmVzcG9uc2VUZXh0KTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYyA9IHUuc3RhdHVzVGV4dAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSBjYXRjaCAoZikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGMgPSAiIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyB8fCAhbi5pc0xvY2FsIHx8
IG4uY3Jvc3NEb21haW4gPyAxMjIzID09PSBzICYmIChzID0gMjA0KSA6IHMgPSBwLnRleHQgPyAy
MDAgOiA0MDQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICAgICAgfSBjYXRjaCAoZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkg
fHwgbygtMSwgZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIHAgJiYgbyhzLCBjLCBwLCBsKQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAg
ICAgICAgICAgICAgICBuLmFzeW5jID8gNCA9PT0gdS5yZWFkeVN0YXRlID8gc2V0VGltZW91dChy
KSA6IChhID0gKytXbiwgJG4gJiYgKFBuIHx8IChQbiA9IHt9LCBiKGUpLnVubG9hZCgkbikpLCBQ
blthXSA9IHIpLCB1Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHIpIDogcigpCi0gICAgICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgICAgICBhYm9ydDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHIgJiYgcih0LCAhMCkKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9KTsKLSAgICB2YXIgWG4sCi0gICAgICAgIFVuLAotICAgICAgICBWbiA9
IC9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLywKLSAgICAgICAgWW4gPSBSZWdFeHAoIl4oPzooWyst
XSk9fCkoIiArIHggKyAiKShbYS16JV0qKSQiLCAiaSIpLAotICAgICAgICBKbiA9IC9xdWV1ZUhv
b2tzJC8sCi0gICAgICAgIEduID0gW25yXSwKLSAgICAgICAgUW4gPSB7Ci0gICAgICAgICAgICAi
KiI6IFtmdW5jdGlvbihlLCB0KSB7Ci0gICAgICAgICAgICAgICAgdmFyIG4sCi0gICAgICAgICAg
ICAgICAgICAgIHIsCi0gICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLmNyZWF0ZVR3ZWVuKGUs
IHQpLAotICAgICAgICAgICAgICAgICAgICBvID0gWW4uZXhlYyh0KSwKLSAgICAgICAgICAgICAg
ICAgICAgYSA9IGkuY3VyKCksCi0gICAgICAgICAgICAgICAgICAgIHMgPSArYSB8fCAwLAotICAg
ICAgICAgICAgICAgICAgICB1ID0gMSwKLSAgICAgICAgICAgICAgICAgICAgbCA9IDIwOwotICAg
ICAgICAgICAgICAgIGlmIChvKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChuID0gK29bMl0s
IHIgPSBvWzNdIHx8IChiLmNzc051bWJlcltlXSA/ICIiIDogInB4IiksICJweCIgIT09IHIgJiYg
cykgewotICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGIuY3NzKGkuZWxlbSwgZSwgITApIHx8
IG4gfHwgMTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvIHUgPSB1IHx8ICIuNSIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBzIC89IHUsCi0gICAgICAgICAgICAgICAgICAgICAgICBiLnN0
eWxlKGkuZWxlbSwgZSwgcyArIHIpOwotICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHUg
IT09ICh1ID0gaS5jdXIoKSAvIGEpICYmIDEgIT09IHUgJiYgLS1sKQotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGkudW5pdCA9IHIsCi0gICAgICAgICAgICAgICAg
ICAgIGkuc3RhcnQgPSBzLAotICAgICAgICAgICAgICAgICAgICBpLmVuZCA9IG9bMV0gPyBzICsg
KG9bMV0gKyAxKSAqIG4gOiBuCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJl
dHVybiBpCi0gICAgICAgICAgICB9XQotICAgICAgICB9OwotICAgIGZ1bmN0aW9uIEtuKCkgewot
ICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIFhuID0g
dAotICAgICAgICB9KSwgWG4gPSBiLm5vdygpCi0gICAgfQotICAgIGZ1bmN0aW9uIFpuKGUsIHQp
IHsKLSAgICAgICAgYi5lYWNoKHQsIGZ1bmN0aW9uKHQsIG4pIHsKLSAgICAgICAgICAgIHZhciBy
ID0gKFFuW3RdIHx8IFtdKS5jb25jYXQoUW5bIioiXSksCi0gICAgICAgICAgICAgICAgaSA9IDAs
Ci0gICAgICAgICAgICAgICAgbyA9IHIubGVuZ3RoOwotICAgICAgICAgICAgZm9yICg7IG8gPiBp
OyBpKyspCi0gICAgICAgICAgICAgICAgaWYgKHJbaV0uY2FsbChlLCB0LCBuKSkKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIH0pCi0gICAgfQotICAgIGZ1bmN0aW9uIGVyKGUs
IHQsIG4pIHsKLSAgICAgICAgdmFyIHIsCi0gICAgICAgICAgICBpLAotICAgICAgICAgICAgbyA9
IDAsCi0gICAgICAgICAgICBhID0gR24ubGVuZ3RoLAotICAgICAgICAgICAgcyA9IGIuRGVmZXJy
ZWQoKS5hbHdheXMoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgZGVsZXRlIHUuZWxlbQot
ICAgICAgICAgICAgfSksCi0gICAgICAgICAgICB1ID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAhMTsKLSAgICAgICAgICAg
ICAgICB2YXIgdCA9IFhuIHx8IEtuKCksCi0gICAgICAgICAgICAgICAgICAgIG4gPSBNYXRoLm1h
eCgwLCBsLnN0YXJ0VGltZSArIGwuZHVyYXRpb24gLSB0KSwKLSAgICAgICAgICAgICAgICAgICAg
ciA9IG4gLyBsLmR1cmF0aW9uIHx8IDAsCi0gICAgICAgICAgICAgICAgICAgIG8gPSAxIC0gciwK
LSAgICAgICAgICAgICAgICAgICAgYSA9IDAsCi0gICAgICAgICAgICAgICAgICAgIHUgPSBsLnR3
ZWVucy5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgZm9yICg7IHUgPiBhOyBhKyspCi0gICAgICAg
ICAgICAgICAgICAgIGwudHdlZW5zW2FdLnJ1bihvKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
cy5ub3RpZnlXaXRoKGUsIFtsLCBvLCBuXSksIDEgPiBvICYmIHUgPyBuIDogKHMucmVzb2x2ZVdp
dGgoZSwgW2xdKSwgITEpCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgbCA9IHMucHJvbWlz
ZSh7Ci0gICAgICAgICAgICAgICAgZWxlbTogZSwKLSAgICAgICAgICAgICAgICBwcm9wczogYi5l
eHRlbmQoe30sIHQpLAotICAgICAgICAgICAgICAgIG9wdHM6IGIuZXh0ZW5kKCEwLCB7Ci0gICAg
ICAgICAgICAgICAgICAgIHNwZWNpYWxFYXNpbmc6IHt9Ci0gICAgICAgICAgICAgICAgfSwgbiks
Ci0gICAgICAgICAgICAgICAgb3JpZ2luYWxQcm9wZXJ0aWVzOiB0LAotICAgICAgICAgICAgICAg
IG9yaWdpbmFsT3B0aW9uczogbiwKLSAgICAgICAgICAgICAgICBzdGFydFRpbWU6IFhuIHx8IEtu
KCksCi0gICAgICAgICAgICAgICAgZHVyYXRpb246IG4uZHVyYXRpb24sCi0gICAgICAgICAgICAg
ICAgdHdlZW5zOiBbXSwKLSAgICAgICAgICAgICAgICBjcmVhdGVUd2VlbjogZnVuY3Rpb24odCwg
bikgewotICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGIuVHdlZW4oZSwgbC5vcHRzLCB0LCBu
LCBsLm9wdHMuc3BlY2lhbEVhc2luZ1t0XSB8fCBsLm9wdHMuZWFzaW5nKTsKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGwudHdlZW5zLnB1c2gociksIHIKLSAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgIHN0b3A6IGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgICAgICAgICAgICAg
dmFyIG4gPSAwLAotICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQgPyBsLnR3ZWVucy5sZW5n
dGggOiAwOwotICAgICAgICAgICAgICAgICAgICBpZiAoaSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0aGlzOwotICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAhMDsgciA+IG47
IG4rKykKLSAgICAgICAgICAgICAgICAgICAgICAgIGwudHdlZW5zW25dLnJ1bigxKTsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHQgPyBzLnJlc29sdmVXaXRoKGUsIFtsLCB0XSkgOiBzLnJl
amVjdFdpdGgoZSwgW2wsIHRdKSwgdGhpcwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0pLAotICAgICAgICAgICAgYyA9IGwucHJvcHM7Ci0gICAgICAgIGZvciAodHIoYywgbC5vcHRz
LnNwZWNpYWxFYXNpbmcpOyBhID4gbzsgbysrKQotICAgICAgICAgICAgaWYgKHIgPSBHbltvXS5j
YWxsKGwsIGUsIGMsIGwub3B0cykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHI7Ci0gICAgICAg
IHJldHVybiBabihsLCBjKSwgYi5pc0Z1bmN0aW9uKGwub3B0cy5zdGFydCkgJiYgbC5vcHRzLnN0
YXJ0LmNhbGwoZSwgbCksIGIuZngudGltZXIoYi5leHRlbmQodSwgewotICAgICAgICAgICAgZWxl
bTogZSwKLSAgICAgICAgICAgIGFuaW06IGwsCi0gICAgICAgICAgICBxdWV1ZTogbC5vcHRzLnF1
ZXVlCi0gICAgICAgIH0pKSwgbC5wcm9ncmVzcyhsLm9wdHMucHJvZ3Jlc3MpLmRvbmUobC5vcHRz
LmRvbmUsIGwub3B0cy5jb21wbGV0ZSkuZmFpbChsLm9wdHMuZmFpbCkuYWx3YXlzKGwub3B0cy5h
bHdheXMpCi0gICAgfQotICAgIGZ1bmN0aW9uIHRyKGUsIHQpIHsKLSAgICAgICAgdmFyIG4sCi0g
ICAgICAgICAgICByLAotICAgICAgICAgICAgaSwKLSAgICAgICAgICAgIG8sCi0gICAgICAgICAg
ICBhOwotICAgICAgICBmb3IgKGkgaW4gZSkKLSAgICAgICAgICAgIGlmIChyID0gYi5jYW1lbENh
c2UoaSksIG8gPSB0W3JdLCBuID0gZVtpXSwgYi5pc0FycmF5KG4pICYmIChvID0gblsxXSwgbiA9
IGVbaV0gPSBuWzBdKSwgaSAhPT0gciAmJiAoZVtyXSA9IG4sIGRlbGV0ZSBlW2ldKSwgYSA9IGIu
Y3NzSG9va3Nbcl0sIGEgJiYgImV4cGFuZCIgaW4gYSkgewotICAgICAgICAgICAgICAgIG4gPSBh
LmV4cGFuZChuKSwKLSAgICAgICAgICAgICAgICBkZWxldGUgZVtyXTsKLSAgICAgICAgICAgICAg
ICBmb3IgKGkgaW4gbikKLSAgICAgICAgICAgICAgICAgICAgaSBpbiBlIHx8IChlW2ldID0gbltp
XSwgdFtpXSA9IG8pCi0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICB0W3JdID0g
bwotICAgIH0KLSAgICBiLkFuaW1hdGlvbiA9IGIuZXh0ZW5kKGVyLCB7Ci0gICAgICAgIHR3ZWVu
ZXI6IGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgICAgIGIuaXNGdW5jdGlvbihlKSA/ICh0ID0g
ZSwgZSA9IFsiKiJdKSA6IGUgPSBlLnNwbGl0KCIgIik7Ci0gICAgICAgICAgICB2YXIgbiwKLSAg
ICAgICAgICAgICAgICByID0gMCwKLSAgICAgICAgICAgICAgICBpID0gZS5sZW5ndGg7Ci0gICAg
ICAgICAgICBmb3IgKDsgaSA+IHI7IHIrKykKLSAgICAgICAgICAgICAgICBuID0gZVtyXSwKLSAg
ICAgICAgICAgICAgICBRbltuXSA9IFFuW25dIHx8IFtdLAotICAgICAgICAgICAgICAgIFFuW25d
LnVuc2hpZnQodCkKLSAgICAgICAgfSwKLSAgICAgICAgcHJlZmlsdGVyOiBmdW5jdGlvbihlLCB0
KSB7Ci0gICAgICAgICAgICB0ID8gR24udW5zaGlmdChlKSA6IEduLnB1c2goZSkKLSAgICAgICAg
fQotICAgIH0pOwotICAgIGZ1bmN0aW9uIG5yKGUsIHQsIG4pIHsKLSAgICAgICAgdmFyIHIsCi0g
ICAgICAgICAgICBpLAotICAgICAgICAgICAgbywKLSAgICAgICAgICAgIGEsCi0gICAgICAgICAg
ICBzLAotICAgICAgICAgICAgdSwKLSAgICAgICAgICAgIGwsCi0gICAgICAgICAgICBjLAotICAg
ICAgICAgICAgcCwKLSAgICAgICAgICAgIGYgPSB0aGlzLAotICAgICAgICAgICAgZCA9IGUuc3R5
bGUsCi0gICAgICAgICAgICBoID0ge30sCi0gICAgICAgICAgICBnID0gW10sCi0gICAgICAgICAg
ICBtID0gZS5ub2RlVHlwZSAmJiBubihlKTsKLSAgICAgICAgbi5xdWV1ZSB8fCAoYyA9IGIuX3F1
ZXVlSG9va3MoZSwgImZ4IiksIG51bGwgPT0gYy51bnF1ZXVlZCAmJiAoYy51bnF1ZXVlZCA9IDAs
IHAgPSBjLmVtcHR5LmZpcmUsIGMuZW1wdHkuZmlyZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgYy51bnF1ZXVlZCB8fCBwKCkKLSAgICAgICAgfSksIGMudW5xdWV1ZWQrKywgZi5hbHdheXMo
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBmLmFsd2F5cyhmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgICAgICBjLnVucXVldWVkLS0sCi0gICAgICAgICAgICAgICAgYi5xdWV1ZShlLCAiZngiKS5s
ZW5ndGggfHwgYy5lbXB0eS5maXJlKCkKLSAgICAgICAgICAgIH0pCi0gICAgICAgIH0pKSwKLSAg
ICAgICAgMSA9PT0gZS5ub2RlVHlwZSAmJiAoImhlaWdodCIgaW4gdCB8fCAid2lkdGgiIGluIHQp
ICYmIChuLm92ZXJmbG93ID0gW2Qub3ZlcmZsb3csIGQub3ZlcmZsb3dYLCBkLm92ZXJmbG93WV0s
ICJpbmxpbmUiID09PSBiLmNzcyhlLCAiZGlzcGxheSIpICYmICJub25lIiA9PT0gYi5jc3MoZSwg
ImZsb2F0IikgJiYgKGIuc3VwcG9ydC5pbmxpbmVCbG9ja05lZWRzTGF5b3V0ICYmICJpbmxpbmUi
ICE9PSB1bihlLm5vZGVOYW1lKSA/IGQuem9vbSA9IDEgOiBkLmRpc3BsYXkgPSAiaW5saW5lLWJs
b2NrIikpLAotICAgICAgICBuLm92ZXJmbG93ICYmIChkLm92ZXJmbG93ID0gImhpZGRlbiIsIGIu
c3VwcG9ydC5zaHJpbmtXcmFwQmxvY2tzIHx8IGYuYWx3YXlzKGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgZC5vdmVyZmxvdyA9IG4ub3ZlcmZsb3dbMF0sCi0gICAgICAgICAgICBkLm92ZXJmbG93
WCA9IG4ub3ZlcmZsb3dbMV0sCi0gICAgICAgICAgICBkLm92ZXJmbG93WSA9IG4ub3ZlcmZsb3db
Ml0KLSAgICAgICAgfSkpOwotICAgICAgICBmb3IgKGkgaW4gdCkKLSAgICAgICAgICAgIGlmIChh
ID0gdFtpXSwgVm4uZXhlYyhhKSkgewotICAgICAgICAgICAgICAgIGlmIChkZWxldGUgdFtpXSwg
dSA9IHUgfHwgInRvZ2dsZSIgPT09IGEsIGEgPT09IChtID8gImhpZGUiIDogInNob3ciKSkKLSAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgZy5wdXNoKGkpCi0g
ICAgICAgICAgICB9Ci0gICAgICAgIGlmIChvID0gZy5sZW5ndGgpIHsKLSAgICAgICAgICAgIHMg
PSBiLl9kYXRhKGUsICJmeHNob3ciKSB8fCBiLl9kYXRhKGUsICJmeHNob3ciLCB7fSksCi0gICAg
ICAgICAgICAiaGlkZGVuIiBpbiBzICYmIChtID0gcy5oaWRkZW4pLAotICAgICAgICAgICAgdSAm
JiAocy5oaWRkZW4gPSAhbSksCi0gICAgICAgICAgICBtID8gYihlKS5zaG93KCkgOiBmLmRvbmUo
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgYihlKS5oaWRlKCkKLSAgICAgICAgICAgIH0p
LAotICAgICAgICAgICAgZi5kb25lKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHZhciB0
OwotICAgICAgICAgICAgICAgIGIuX3JlbW92ZURhdGEoZSwgImZ4c2hvdyIpOwotICAgICAgICAg
ICAgICAgIGZvciAodCBpbiBoKQotICAgICAgICAgICAgICAgICAgICBiLnN0eWxlKGUsIHQsIGhb
dF0pCi0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGZvciAoaSA9IDA7IG8gPiBpOyBpKysp
Ci0gICAgICAgICAgICAgICAgciA9IGdbaV0sCi0gICAgICAgICAgICAgICAgbCA9IGYuY3JlYXRl
VHdlZW4ociwgbSA/IHNbcl0gOiAwKSwKLSAgICAgICAgICAgICAgICBoW3JdID0gc1tyXSB8fCBi
LnN0eWxlKGUsIHIpLAotICAgICAgICAgICAgICAgIHIgaW4gcyB8fCAoc1tyXSA9IGwuc3RhcnQs
IG0gJiYgKGwuZW5kID0gbC5zdGFydCwgbC5zdGFydCA9ICJ3aWR0aCIgPT09IHIgfHwgImhlaWdo
dCIgPT09IHIgPyAxIDogMCkpCi0gICAgICAgIH0KLSAgICB9Ci0gICAgZnVuY3Rpb24gcnIoZSwg
dCwgbiwgciwgaSkgewotICAgICAgICByZXR1cm4gbmV3IHJyLnByb3RvdHlwZS5pbml0KGUsIHQs
IG4sIHIsIGkpCi0gICAgfQotICAgIGIuVHdlZW4gPSByciwKLSAgICByci5wcm90b3R5cGUgPSB7
Ci0gICAgICAgIGNvbnN0cnVjdG9yOiByciwKLSAgICAgICAgaW5pdDogZnVuY3Rpb24oZSwgdCwg
biwgciwgaSwgbykgewotICAgICAgICAgICAgdGhpcy5lbGVtID0gZSwKLSAgICAgICAgICAgIHRo
aXMucHJvcCA9IG4sCi0gICAgICAgICAgICB0aGlzLmVhc2luZyA9IGkgfHwgInN3aW5nIiwKLSAg
ICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHQsCi0gICAgICAgICAgICB0aGlzLnN0YXJ0ID0gdGhp
cy5ub3cgPSB0aGlzLmN1cigpLAotICAgICAgICAgICAgdGhpcy5lbmQgPSByLAotICAgICAgICAg
ICAgdGhpcy51bml0ID0gbyB8fCAoYi5jc3NOdW1iZXJbbl0gPyAiIiA6ICJweCIpCi0gICAgICAg
IH0sCi0gICAgICAgIGN1cjogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB2YXIgZSA9IHJyLnBy
b3BIb29rc1t0aGlzLnByb3BdOwotICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS5nZXQgPyBlLmdl
dCh0aGlzKSA6IHJyLnByb3BIb29rcy5fZGVmYXVsdC5nZXQodGhpcykKLSAgICAgICAgfSwKLSAg
ICAgICAgcnVuOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICB2YXIgdCwKLSAgICAgICAgICAg
ICAgICBuID0gcnIucHJvcEhvb2tzW3RoaXMucHJvcF07Ci0gICAgICAgICAgICByZXR1cm4gdGhp
cy5wb3MgPSB0ID0gdGhpcy5vcHRpb25zLmR1cmF0aW9uID8gYi5lYXNpbmdbdGhpcy5lYXNpbmdd
KGUsIHRoaXMub3B0aW9ucy5kdXJhdGlvbiAqIGUsIDAsIDEsIHRoaXMub3B0aW9ucy5kdXJhdGlv
bikgOiBlLCB0aGlzLm5vdyA9ICh0aGlzLmVuZCAtIHRoaXMuc3RhcnQpICogdCArIHRoaXMuc3Rh
cnQsIHRoaXMub3B0aW9ucy5zdGVwICYmIHRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVt
LCB0aGlzLm5vdywgdGhpcyksIG4gJiYgbi5zZXQgPyBuLnNldCh0aGlzKSA6IHJyLnByb3BIb29r
cy5fZGVmYXVsdC5zZXQodGhpcyksIHRoaXMKLSAgICAgICAgfQotICAgIH0sCi0gICAgcnIucHJv
dG90eXBlLmluaXQucHJvdG90eXBlID0gcnIucHJvdG90eXBlLAotICAgIHJyLnByb3BIb29rcyA9
IHsKLSAgICAgICAgX2RlZmF1bHQ6IHsKLSAgICAgICAgICAgIGdldDogZnVuY3Rpb24oZSkgewot
ICAgICAgICAgICAgICAgIHZhciB0OwotICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IGUu
ZWxlbVtlLnByb3BdIHx8IGUuZWxlbS5zdHlsZSAmJiBudWxsICE9IGUuZWxlbS5zdHlsZVtlLnBy
b3BdID8gKHQgPSBiLmNzcyhlLmVsZW0sIGUucHJvcCwgIiIpLCB0ICYmICJhdXRvIiAhPT0gdCA/
IHQgOiAwKSA6IGUuZWxlbVtlLnByb3BdCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgc2V0
OiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgYi5meC5zdGVwW2UucHJvcF0gPyBiLmZ4
LnN0ZXBbZS5wcm9wXShlKSA6IGUuZWxlbS5zdHlsZSAmJiAobnVsbCAhPSBlLmVsZW0uc3R5bGVb
Yi5jc3NQcm9wc1tlLnByb3BdXSB8fCBiLmNzc0hvb2tzW2UucHJvcF0pID8gYi5zdHlsZShlLmVs
ZW0sIGUucHJvcCwgZS5ub3cgKyBlLnVuaXQpIDogZS5lbGVtW2UucHJvcF0gPSBlLm5vdwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSwKLSAgICByci5wcm9wSG9va3Muc2Nyb2xsVG9w
ID0gcnIucHJvcEhvb2tzLnNjcm9sbExlZnQgPSB7Ci0gICAgICAgIHNldDogZnVuY3Rpb24oZSkg
ewotICAgICAgICAgICAgZS5lbGVtLm5vZGVUeXBlICYmIGUuZWxlbS5wYXJlbnROb2RlICYmIChl
LmVsZW1bZS5wcm9wXSA9IGUubm93KQotICAgICAgICB9Ci0gICAgfSwKLSAgICBiLmVhY2goWyJ0
b2dnbGUiLCAic2hvdyIsICJoaWRlIl0sIGZ1bmN0aW9uKGUsIHQpIHsKLSAgICAgICAgdmFyIG4g
PSBiLmZuW3RdOwotICAgICAgICBiLmZuW3RdID0gZnVuY3Rpb24oZSwgciwgaSkgewotICAgICAg
ICAgICAgcmV0dXJuIG51bGwgPT0gZSB8fCAiYm9vbGVhbiIgPT0gdHlwZW9mIGUgPyBuLmFwcGx5
KHRoaXMsIGFyZ3VtZW50cykgOiB0aGlzLmFuaW1hdGUoaXIodCwgITApLCBlLCByLCBpKQotICAg
ICAgICB9Ci0gICAgfSksCi0gICAgYi5mbi5leHRlbmQoewotICAgICAgICBmYWRlVG86IGZ1bmN0
aW9uKGUsIHQsIG4sIHIpIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbHRlcihubikuY3Nz
KCJvcGFjaXR5IiwgMCkuc2hvdygpLmVuZCgpLmFuaW1hdGUoewotICAgICAgICAgICAgICAgIG9w
YWNpdHk6IHQKLSAgICAgICAgICAgIH0sIGUsIG4sIHIpCi0gICAgICAgIH0sCi0gICAgICAgIGFu
aW1hdGU6IGZ1bmN0aW9uKGUsIHQsIG4sIHIpIHsKLSAgICAgICAgICAgIHZhciBpID0gYi5pc0Vt
cHR5T2JqZWN0KGUpLAotICAgICAgICAgICAgICAgIG8gPSBiLnNwZWVkKHQsIG4sIHIpLAotICAg
ICAgICAgICAgICAgIGEgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHQg
PSBlcih0aGlzLCBiLmV4dGVuZCh7fSwgZSksIG8pOwotICAgICAgICAgICAgICAgICAgICBhLmZp
bmlzaCA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgdC5zdG9wKCEwKQot
ICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAoaSB8fCBiLl9kYXRh
KHRoaXMsICJmaW5pc2giKSkgJiYgdC5zdG9wKCEwKQotICAgICAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICByZXR1cm4gYS5maW5pc2ggPSBhLCBpIHx8IG8ucXVldWUgPT09ICExID8gdGhpcy5l
YWNoKGEpIDogdGhpcy5xdWV1ZShvLnF1ZXVlLCBhKQotICAgICAgICB9LAotICAgICAgICBzdG9w
OiBmdW5jdGlvbihlLCBuLCByKSB7Ci0gICAgICAgICAgICB2YXIgaSA9IGZ1bmN0aW9uKGUpIHsK
LSAgICAgICAgICAgICAgICB2YXIgdCA9IGUuc3RvcDsKLSAgICAgICAgICAgICAgICBkZWxldGUg
ZS5zdG9wLAotICAgICAgICAgICAgICAgIHQocikKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAg
ICByZXR1cm4gInN0cmluZyIgIT0gdHlwZW9mIGUgJiYgKHIgPSBuLCBuID0gZSwgZSA9IHQpLCBu
ICYmIGUgIT09ICExICYmIHRoaXMucXVldWUoZSB8fCAiZngiLCBbXSksIHRoaXMuZWFjaChmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICAgICB2YXIgdCA9ICEwLAotICAgICAgICAgICAgICAgICAg
ICBuID0gbnVsbCAhPSBlICYmIGUgKyAicXVldWVIb29rcyIsCi0gICAgICAgICAgICAgICAgICAg
IG8gPSBiLnRpbWVycywKLSAgICAgICAgICAgICAgICAgICAgYSA9IGIuX2RhdGEodGhpcyk7Ci0g
ICAgICAgICAgICAgICAgaWYgKG4pCi0gICAgICAgICAgICAgICAgICAgIGFbbl0gJiYgYVtuXS5z
dG9wICYmIGkoYVtuXSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAg
ICBmb3IgKG4gaW4gYSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGFbbl0gJiYgYVtuXS5zdG9w
ICYmIEpuLnRlc3QobikgJiYgaShhW25dKTsKLSAgICAgICAgICAgICAgICBmb3IgKG4gPSBvLmxl
bmd0aDsgbi0tOykKLSAgICAgICAgICAgICAgICAgICAgb1tuXS5lbGVtICE9PSB0aGlzIHx8IG51
bGwgIT0gZSAmJiBvW25dLnF1ZXVlICE9PSBlIHx8IChvW25dLmFuaW0uc3RvcChyKSwgdCA9ICEx
LCBvLnNwbGljZShuLCAxKSk7Ci0gICAgICAgICAgICAgICAgKHQgfHwgIXIpICYmIGIuZGVxdWV1
ZSh0aGlzLCBlKQotICAgICAgICAgICAgfSkKLSAgICAgICAgfSwKLSAgICAgICAgZmluaXNoOiBm
dW5jdGlvbihlKSB7Ci0gICAgICAgICAgICByZXR1cm4gZSAhPT0gITEgJiYgKGUgPSBlIHx8ICJm
eCIpLCB0aGlzLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHQsCi0gICAg
ICAgICAgICAgICAgICAgIG4gPSBiLl9kYXRhKHRoaXMpLAotICAgICAgICAgICAgICAgICAgICBy
ID0gbltlICsgInF1ZXVlIl0sCi0gICAgICAgICAgICAgICAgICAgIGkgPSBuW2UgKyAicXVldWVI
b29rcyJdLAotICAgICAgICAgICAgICAgICAgICBvID0gYi50aW1lcnMsCi0gICAgICAgICAgICAg
ICAgICAgIGEgPSByID8gci5sZW5ndGggOiAwOwotICAgICAgICAgICAgICAgIGZvciAobi5maW5p
c2ggPSAhMCwgYi5xdWV1ZSh0aGlzLCBlLCBbXSksIGkgJiYgaS5jdXIgJiYgaS5jdXIuZmluaXNo
ICYmIGkuY3VyLmZpbmlzaC5jYWxsKHRoaXMpLCB0ID0gby5sZW5ndGg7IHQtLTspCi0gICAgICAg
ICAgICAgICAgICAgIG9bdF0uZWxlbSA9PT0gdGhpcyAmJiBvW3RdLnF1ZXVlID09PSBlICYmIChv
W3RdLmFuaW0uc3RvcCghMCksIG8uc3BsaWNlKHQsIDEpKTsKLSAgICAgICAgICAgICAgICBmb3Ig
KHQgPSAwOyBhID4gdDsgdCsrKQotICAgICAgICAgICAgICAgICAgICByW3RdICYmIHJbdF0uZmlu
aXNoICYmIHJbdF0uZmluaXNoLmNhbGwodGhpcyk7Ci0gICAgICAgICAgICAgICAgZGVsZXRlIG4u
ZmluaXNoCi0gICAgICAgICAgICB9KQotICAgICAgICB9Ci0gICAgfSk7Ci0gICAgZnVuY3Rpb24g
aXIoZSwgdCkgewotICAgICAgICB2YXIgbiwKLSAgICAgICAgICAgIHIgPSB7Ci0gICAgICAgICAg
ICAgICAgaGVpZ2h0OiBlCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgaSA9IDA7Ci0gICAg
ICAgIGZvciAodCA9IHQgPyAxIDogMDsgNCA+IGk7IGkgKz0gMiAtIHQpCi0gICAgICAgICAgICBu
ID0gWnRbaV0sCi0gICAgICAgICAgICByWyJtYXJnaW4iICsgbl0gPSByWyJwYWRkaW5nIiArIG5d
ID0gZTsKLSAgICAgICAgcmV0dXJuIHQgJiYgKHIub3BhY2l0eSA9IHIud2lkdGggPSBlKSwgcgot
ICAgIH0KLSAgICBiLmVhY2goewotICAgICAgICBzbGlkZURvd246IGlyKCJzaG93IiksCi0gICAg
ICAgIHNsaWRlVXA6IGlyKCJoaWRlIiksCi0gICAgICAgIHNsaWRlVG9nZ2xlOiBpcigidG9nZ2xl
IiksCi0gICAgICAgIGZhZGVJbjogewotICAgICAgICAgICAgb3BhY2l0eTogInNob3ciCi0gICAg
ICAgIH0sCi0gICAgICAgIGZhZGVPdXQ6IHsKLSAgICAgICAgICAgIG9wYWNpdHk6ICJoaWRlIgot
ICAgICAgICB9LAotICAgICAgICBmYWRlVG9nZ2xlOiB7Ci0gICAgICAgICAgICBvcGFjaXR5OiAi
dG9nZ2xlIgotICAgICAgICB9Ci0gICAgfSwgZnVuY3Rpb24oZSwgdCkgewotICAgICAgICBiLmZu
W2VdID0gZnVuY3Rpb24oZSwgbiwgcikgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuYW5pbWF0
ZSh0LCBlLCBuLCByKQotICAgICAgICB9Ci0gICAgfSksCi0gICAgYi5zcGVlZCA9IGZ1bmN0aW9u
KGUsIHQsIG4pIHsKLSAgICAgICAgdmFyIHIgPSBlICYmICJvYmplY3QiID09IHR5cGVvZiBlID8g
Yi5leHRlbmQoe30sIGUpIDogewotICAgICAgICAgICAgY29tcGxldGU6IG4gfHwgIW4gJiYgdCB8
fCBiLmlzRnVuY3Rpb24oZSkgJiYgZSwKLSAgICAgICAgICAgIGR1cmF0aW9uOiBlLAotICAgICAg
ICAgICAgZWFzaW5nOiBuICYmIHQgfHwgdCAmJiAhYi5pc0Z1bmN0aW9uKHQpICYmIHQKLSAgICAg
ICAgfTsKLSAgICAgICAgcmV0dXJuIHIuZHVyYXRpb24gPSBiLmZ4Lm9mZiA/IDAgOiAibnVtYmVy
IiA9PSB0eXBlb2Ygci5kdXJhdGlvbiA/IHIuZHVyYXRpb24gOiByLmR1cmF0aW9uIGluIGIuZngu
c3BlZWRzID8gYi5meC5zcGVlZHNbci5kdXJhdGlvbl0gOiBiLmZ4LnNwZWVkcy5fZGVmYXVsdCwg
KG51bGwgPT0gci5xdWV1ZSB8fCByLnF1ZXVlID09PSAhMCkgJiYgKHIucXVldWUgPSAiZngiKSwg
ci5vbGQgPSByLmNvbXBsZXRlLCByLmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICBiLmlzRnVuY3Rpb24oci5vbGQpICYmIHIub2xkLmNhbGwodGhpcyksCi0gICAgICAgICAgICBy
LnF1ZXVlICYmIGIuZGVxdWV1ZSh0aGlzLCByLnF1ZXVlKQotICAgICAgICB9LCByCi0gICAgfSwK
LSAgICBiLmVhc2luZyA9IHsKLSAgICAgICAgbGluZWFyOiBmdW5jdGlvbihlKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gZQotICAgICAgICB9LAotICAgICAgICBzd2luZzogZnVuY3Rpb24oZSkgewot
ICAgICAgICAgICAgcmV0dXJuIC41IC0gTWF0aC5jb3MoZSAqIE1hdGguUEkpIC8gMgotICAgICAg
ICB9Ci0gICAgfSwKLSAgICBiLnRpbWVycyA9IFtdLAotICAgIGIuZnggPSByci5wcm90b3R5cGUu
aW5pdCwKLSAgICBiLmZ4LnRpY2sgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIGUsCi0gICAg
ICAgICAgICBuID0gYi50aW1lcnMsCi0gICAgICAgICAgICByID0gMDsKLSAgICAgICAgZm9yIChY
biA9IGIubm93KCk7IG4ubGVuZ3RoID4gcjsgcisrKQotICAgICAgICAgICAgZSA9IG5bcl0sCi0g
ICAgICAgICAgICBlKCkgfHwgbltyXSAhPT0gZSB8fCBuLnNwbGljZShyLS0sIDEpOwotICAgICAg
ICBuLmxlbmd0aCB8fCBiLmZ4LnN0b3AoKSwKLSAgICAgICAgWG4gPSB0Ci0gICAgfSwKLSAgICBi
LmZ4LnRpbWVyID0gZnVuY3Rpb24oZSkgewotICAgICAgICBlKCkgJiYgYi50aW1lcnMucHVzaChl
KSAmJiBiLmZ4LnN0YXJ0KCkKLSAgICB9LAotICAgIGIuZnguaW50ZXJ2YWwgPSAxMywKLSAgICBi
LmZ4LnN0YXJ0ID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIFVuIHx8IChVbiA9IHNldEludGVydmFs
KGIuZngudGljaywgYi5meC5pbnRlcnZhbCkpCi0gICAgfSwKLSAgICBiLmZ4LnN0b3AgPSBmdW5j
dGlvbigpIHsKLSAgICAgICAgY2xlYXJJbnRlcnZhbChVbiksCi0gICAgICAgIFVuID0gbnVsbAot
ICAgIH0sCi0gICAgYi5meC5zcGVlZHMgPSB7Ci0gICAgICAgIHNsb3c6IDYwMCwKLSAgICAgICAg
ZmFzdDogMjAwLAotICAgICAgICBfZGVmYXVsdDogNDAwCi0gICAgfSwKLSAgICBiLmZ4LnN0ZXAg
PSB7fSwKLSAgICBiLmV4cHIgJiYgYi5leHByLmZpbHRlcnMgJiYgKGIuZXhwci5maWx0ZXJzLmFu
aW1hdGVkID0gZnVuY3Rpb24oZSkgewotICAgICAgICByZXR1cm4gYi5ncmVwKGIudGltZXJzLCBm
dW5jdGlvbih0KSB7Ci0gICAgICAgICAgICByZXR1cm4gZSA9PT0gdC5lbGVtCi0gICAgICAgIH0p
Lmxlbmd0aAotICAgIH0pLAotICAgIGIuZm4ub2Zmc2V0ID0gZnVuY3Rpb24oZSkgewotICAgICAg
ICBpZiAoYXJndW1lbnRzLmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiBlID09PSB0ID8gdGhp
cyA6IHRoaXMuZWFjaChmdW5jdGlvbih0KSB7Ci0gICAgICAgICAgICAgICAgYi5vZmZzZXQuc2V0
T2Zmc2V0KHRoaXMsIGUsIHQpCi0gICAgICAgICAgICB9KTsKLSAgICAgICAgdmFyIG4sCi0gICAg
ICAgICAgICByLAotICAgICAgICAgICAgbyA9IHsKLSAgICAgICAgICAgICAgICB0b3A6IDAsCi0g
ICAgICAgICAgICAgICAgbGVmdDogMAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGEgPSB0
aGlzWzBdLAotICAgICAgICAgICAgcyA9IGEgJiYgYS5vd25lckRvY3VtZW50OwotICAgICAgICBp
ZiAocykKLSAgICAgICAgICAgIHJldHVybiBuID0gcy5kb2N1bWVudEVsZW1lbnQsIGIuY29udGFp
bnMobiwgYSkgPyAodHlwZW9mIGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ICE9PSBpICYmIChvID0g
YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksIHIgPSBvcihzKSwgewotICAgICAgICAgICAgICAg
IHRvcDogby50b3AgKyAoci5wYWdlWU9mZnNldCB8fCBuLnNjcm9sbFRvcCkgLSAobi5jbGllbnRU
b3AgfHwgMCksCi0gICAgICAgICAgICAgICAgbGVmdDogby5sZWZ0ICsgKHIucGFnZVhPZmZzZXQg
fHwgbi5zY3JvbGxMZWZ0KSAtIChuLmNsaWVudExlZnQgfHwgMCkKLSAgICAgICAgICAgIH0pIDog
bwotICAgIH0sCi0gICAgYi5vZmZzZXQgPSB7Ci0gICAgICAgIHNldE9mZnNldDogZnVuY3Rpb24o
ZSwgdCwgbikgewotICAgICAgICAgICAgdmFyIHIgPSBiLmNzcyhlLCAicG9zaXRpb24iKTsKLSAg
ICAgICAgICAgICJzdGF0aWMiID09PSByICYmIChlLnN0eWxlLnBvc2l0aW9uID0gInJlbGF0aXZl
Iik7Ci0gICAgICAgICAgICB2YXIgaSA9IGIoZSksCi0gICAgICAgICAgICAgICAgbyA9IGkub2Zm
c2V0KCksCi0gICAgICAgICAgICAgICAgYSA9IGIuY3NzKGUsICJ0b3AiKSwKLSAgICAgICAgICAg
ICAgICBzID0gYi5jc3MoZSwgImxlZnQiKSwKLSAgICAgICAgICAgICAgICB1ID0gKCJhYnNvbHV0
ZSIgPT09IHIgfHwgImZpeGVkIiA9PT0gcikgJiYgYi5pbkFycmF5KCJhdXRvIiwgW2EsIHNdKSA+
IC0xLAotICAgICAgICAgICAgICAgIGwgPSB7fSwKLSAgICAgICAgICAgICAgICBjID0ge30sCi0g
ICAgICAgICAgICAgICAgcCwKLSAgICAgICAgICAgICAgICBmOwotICAgICAgICAgICAgdSA/IChj
ID0gaS5wb3NpdGlvbigpLCBwID0gYy50b3AsIGYgPSBjLmxlZnQpIDogKHAgPSBwYXJzZUZsb2F0
KGEpIHx8IDAsIGYgPSBwYXJzZUZsb2F0KHMpIHx8IDApLAotICAgICAgICAgICAgYi5pc0Z1bmN0
aW9uKHQpICYmICh0ID0gdC5jYWxsKGUsIG4sIG8pKSwKLSAgICAgICAgICAgIG51bGwgIT0gdC50
b3AgJiYgKGwudG9wID0gdC50b3AgLSBvLnRvcCArIHApLAotICAgICAgICAgICAgbnVsbCAhPSB0
LmxlZnQgJiYgKGwubGVmdCA9IHQubGVmdCAtIG8ubGVmdCArIGYpLAotICAgICAgICAgICAgInVz
aW5nIiBpbiB0ID8gdC51c2luZy5jYWxsKGUsIGwpIDogaS5jc3MobCkKLSAgICAgICAgfQotICAg
IH0sCi0gICAgYi5mbi5leHRlbmQoewotICAgICAgICBwb3NpdGlvbjogZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICBpZiAodGhpc1swXSkgewotICAgICAgICAgICAgICAgIHZhciBlLAotICAgICAg
ICAgICAgICAgICAgICB0LAotICAgICAgICAgICAgICAgICAgICBuID0gewotICAgICAgICAgICAg
ICAgICAgICAgICAgdG9wOiAwLAotICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMAotICAg
ICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICByID0gdGhpc1swXTsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gImZpeGVkIiA9PT0gYi5jc3MociwgInBvc2l0aW9uIikgPyB0
ID0gci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSA6IChlID0gdGhpcy5vZmZzZXRQYXJlbnQoKSwg
dCA9IHRoaXMub2Zmc2V0KCksIGIubm9kZU5hbWUoZVswXSwgImh0bWwiKSB8fCAobiA9IGUub2Zm
c2V0KCkpLCBuLnRvcCArPSBiLmNzcyhlWzBdLCAiYm9yZGVyVG9wV2lkdGgiLCAhMCksIG4ubGVm
dCArPSBiLmNzcyhlWzBdLCAiYm9yZGVyTGVmdFdpZHRoIiwgITApKSwgewotICAgICAgICAgICAg
ICAgICAgICB0b3A6IHQudG9wIC0gbi50b3AgLSBiLmNzcyhyLCAibWFyZ2luVG9wIiwgITApLAot
ICAgICAgICAgICAgICAgICAgICBsZWZ0OiB0LmxlZnQgLSBuLmxlZnQgLSBiLmNzcyhyLCAibWFy
Z2luTGVmdCIsICEwKQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAg
fSwKLSAgICAgICAgb2Zmc2V0UGFyZW50OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVy
biB0aGlzLm1hcChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMub2Zm
c2V0UGFyZW50IHx8IG8uZG9jdW1lbnRFbGVtZW50OwotICAgICAgICAgICAgICAgIHdoaWxlIChl
ICYmICFiLm5vZGVOYW1lKGUsICJodG1sIikgJiYgInN0YXRpYyIgPT09IGIuY3NzKGUsICJwb3Np
dGlvbiIpKQotICAgICAgICAgICAgICAgICAgICBlID0gZS5vZmZzZXRQYXJlbnQ7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGUgfHwgby5kb2N1bWVudEVsZW1lbnQKLSAgICAgICAgICAgIH0pCi0g
ICAgICAgIH0KLSAgICB9KSwKLSAgICBiLmVhY2goewotICAgICAgICBzY3JvbGxMZWZ0OiAicGFn
ZVhPZmZzZXQiLAotICAgICAgICBzY3JvbGxUb3A6ICJwYWdlWU9mZnNldCIKLSAgICB9LCBmdW5j
dGlvbihlLCBuKSB7Ci0gICAgICAgIHZhciByID0gL1kvLnRlc3Qobik7Ci0gICAgICAgIGIuZm5b
ZV0gPSBmdW5jdGlvbihpKSB7Ci0gICAgICAgICAgICByZXR1cm4gYi5hY2Nlc3ModGhpcywgZnVu
Y3Rpb24oZSwgaSwgbykgewotICAgICAgICAgICAgICAgIHZhciBhID0gb3IoZSk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIG8gPT09IHQgPyBhID8gbiBpbiBhID8gYVtuXSA6IGEuZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50W2ldIDogZVtpXSA6IChhID8gYS5zY3JvbGxUbyhyID8gYihhKS5zY3Jv
bGxMZWZ0KCkgOiBvLCByID8gbyA6IGIoYSkuc2Nyb2xsVG9wKCkpIDogZVtpXSA9IG8sIHQpCi0g
ICAgICAgICAgICB9LCBlLCBpLCBhcmd1bWVudHMubGVuZ3RoLCBudWxsKQotICAgICAgICB9Ci0g
ICAgfSk7Ci0gICAgZnVuY3Rpb24gb3IoZSkgewotICAgICAgICByZXR1cm4gYi5pc1dpbmRvdyhl
KSA/IGUgOiA5ID09PSBlLm5vZGVUeXBlID8gZS5kZWZhdWx0VmlldyB8fCBlLnBhcmVudFdpbmRv
dyA6ICExCi0gICAgfQotICAgIGIuZWFjaCh7Ci0gICAgICAgIEhlaWdodDogImhlaWdodCIsCi0g
ICAgICAgIFdpZHRoOiAid2lkdGgiCi0gICAgfSwgZnVuY3Rpb24oZSwgbikgewotICAgICAgICBi
LmVhY2goewotICAgICAgICAgICAgcGFkZGluZzogImlubmVyIiArIGUsCi0gICAgICAgICAgICBj
b250ZW50OiBuLAotICAgICAgICAgICAgIiI6ICJvdXRlciIgKyBlCi0gICAgICAgIH0sIGZ1bmN0
aW9uKHIsIGkpIHsKLSAgICAgICAgICAgIGIuZm5baV0gPSBmdW5jdGlvbihpLCBvKSB7Ci0gICAg
ICAgICAgICAgICAgdmFyIGEgPSBhcmd1bWVudHMubGVuZ3RoICYmIChyIHx8ICJib29sZWFuIiAh
PSB0eXBlb2YgaSksCi0gICAgICAgICAgICAgICAgICAgIHMgPSByIHx8IChpID09PSAhMCB8fCBv
ID09PSAhMCA/ICJtYXJnaW4iIDogImJvcmRlciIpOwotICAgICAgICAgICAgICAgIHJldHVybiBi
LmFjY2Vzcyh0aGlzLCBmdW5jdGlvbihuLCByLCBpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZh
ciBvOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gYi5pc1dpbmRvdyhuKSA/IG4uZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50WyJjbGllbnQiICsgZV0gOiA5ID09PSBuLm5vZGVUeXBlID8gKG8g
PSBuLmRvY3VtZW50RWxlbWVudCwgTWF0aC5tYXgobi5ib2R5WyJzY3JvbGwiICsgZV0sIG9bInNj
cm9sbCIgKyBlXSwgbi5ib2R5WyJvZmZzZXQiICsgZV0sIG9bIm9mZnNldCIgKyBlXSwgb1siY2xp
ZW50IiArIGVdKSkgOiBpID09PSB0ID8gYi5jc3MobiwgciwgcykgOiBiLnN0eWxlKG4sIHIsIGks
IHMpCi0gICAgICAgICAgICAgICAgfSwgbiwgYSA/IGkgOiB0LCBhLCBudWxsKQotICAgICAgICAg
ICAgfQotICAgICAgICB9KQotICAgIH0pLAotICAgIGUualF1ZXJ5ID0gZS4kID0gYiwKLSAgICAi
ZnVuY3Rpb24iID09IHR5cGVvZiBkZWZpbmUgJiYgZGVmaW5lLmFtZCAmJiBkZWZpbmUuYW1kLmpR
dWVyeSAmJiBkZWZpbmUoImpxdWVyeSIsIFtdLCBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJu
IGIKLSAgICB9KQotfSkod2luZG93KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3NhbXBsZS1ub3JtYWwtdXRp
bGl0aWVzLWV4cGVjdGVkLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVz
b3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvc2FtcGxlLW5vcm1hbC11dGlsaXRpZXMtZXhwZWN0ZWQu
anMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlNmMyMjY1OWYwY2RhYjdlNGUxZDJh
OTFiZjNjZDM4MTBhNzg3YzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFz
Y3JpcHQtdGVzdHMvc2FtcGxlLW5vcm1hbC11dGlsaXRpZXMtZXhwZWN0ZWQuanMKKysrIC9kZXYv
bnVsbApAQCAtMSwxMjY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi12YXIgZW1EYXNoID0gIlx1MjAx
NCI7Ci12YXIgZW5EYXNoID0gIlx1MjAxMyI7Ci12YXIgZWxsaXBzaXMgPSAiXHUyMDI2IjsKLQot
T2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdCwgInNoYWxsb3dDb3B5IiwKLXsKLSAgICB2YWx1
ZTogZnVuY3Rpb24ob2JqZWN0KQotICAgIHsKLSAgICAgICAgLy8gTWFrZSBhIG5ldyBvYmplY3Qg
YW5kIGNvcHkgYWxsIHRoZSBrZXkvdmFsdWVzLiBUaGUgdmFsdWVzIGFyZSBub3QgY29waWVkLgot
ICAgICAgICB2YXIgY29weSA9IHt9OwotICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9i
amVjdCk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkKLSAg
ICAgICAgICAgIGNvcHlba2V5c1tpXV0gPSBvYmplY3Rba2V5c1tpXV07Ci0gICAgICAgIHJldHVy
biBjb3B5OwotICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LCAic2hh
bGxvd0VxdWFsIiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24oYSwgYikKLSAgICB7Ci0gICAgICAg
IC8vIENoZWNrcyBpZiB0d28gb2JqZWN0cyBoYXZlIHRoZSBzYW1lIHRvcC1sZXZlbCBwcm9wZXJ0
aWVzLgotCi0gICAgICAgIC8vIENoZWNrIGZvciBzdHJpY3QgZXF1YWxpdHkgaW4gY2FzZSB0aGV5
IGFyZSB0aGUgc2FtZSBvYmplY3QuCi0gICAgICAgIGlmIChhID09PSBiKQotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICAgICAgLy8gT25seSBvYmplY3RzIGNhbiBwcm9jZWVkLiBudWxs
IGlzIGFuIG9iamVjdCwgYnV0IE9iamVjdC5rZXlzIHRocm93cyBmb3IgbnVsbC4KLSAgICAgICAg
aWYgKHR5cGVvZiBhICE9PSAib2JqZWN0IiB8fCB0eXBlb2YgYiAhPT0gIm9iamVjdCIgfHwgYSA9
PT0gbnVsbCB8fCBiID09PSBudWxsKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
ICAgIHZhciBhS2V5cyA9IE9iamVjdC5rZXlzKGEpOwotICAgICAgICB2YXIgYktleXMgPSBPYmpl
Y3Qua2V5cyhiKTsKLQotICAgICAgICAvLyBDaGVjayB0aGF0IGVhY2ggb2JqZWN0IGhhcyB0aGUg
c2FtZSBudW1iZXIgb2Yga2V5cy4KLSAgICAgICAgaWYgKGFLZXlzLmxlbmd0aCAhPT0gYktleXMu
bGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIC8vIENoZWNrIGlm
IGFsbCB0aGUga2V5cyBhbmQgdGhlaXIgdmFsdWVzIGFyZSBlcXVhbC4KLSAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBhS2V5cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgLy8gQ2hlY2sg
dGhhdCBiIGhhcyB0aGUgc2FtZSBrZXkgYXMgYS4KLSAgICAgICAgICAgIGlmICghKGFLZXlzW2ld
IGluIGIpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgLy8g
Q2hlY2sgdGhhdCB0aGUgdmFsdWVzIGFyZSBzdHJpY3QgZXF1YWwgc2luY2UgdGhpcyBpcyBvbmx5
Ci0gICAgICAgICAgICAvLyBhIHNoYWxsb3cgY2hlY2ssIG5vdCBhIHJlY3Vyc2l2ZSBvbmUuCi0g
ICAgICAgICAgICBpZiAoYVthS2V5c1tpXV0gIT09IGJbYUtleXNbaV1dKQotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LnByb3RvdHlwZSwgInZhbHVl
Rm9yQ2FzZUluc2Vuc2l0aXZlS2V5IiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24oa2V5KQotICAg
IHsKLSAgICAgICAgaWYgKHRoaXMuaGFzT3duUHJvcGVydHkoa2V5KSkKLSAgICAgICAgICAgIHJl
dHVybiB0aGlzW2tleV07Ci0KLSAgICAgICAgdmFyIGxvd2VyQ2FzZUtleSA9IGtleS50b0xvd2Vy
Q2FzZSgpOwotICAgICAgICBmb3IgKHZhciBjdXJyZW50S2V5IGluIHRoaXMpIHsKLSAgICAgICAg
ICAgIGlmIChjdXJyZW50S2V5LnRvTG93ZXJDYXNlKCkgPT09IGxvd2VyQ2FzZUtleSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpc1tjdXJyZW50S2V5XTsKLSAgICAgICAgfQotCi0gICAgICAg
IHJldHVybiB1bmRlZmluZWQ7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShN
YXAsICJmcm9tT2JqZWN0IiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24ob2JqZWN0KQotICAgIHsK
LSAgICAgICAgbGV0IG1hcCA9IG5ldyBNYXA7Ci0gICAgICAgIGZvciAobGV0IGtleSBpbiBvYmpl
Y3QpCi0gICAgICAgICAgICBtYXAuc2V0KGtleSwgb2JqZWN0W2tleV0pOwotICAgICAgICByZXR1
cm4gbWFwOwotICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoTWFwLnByb3RvdHlw
ZSwgInRha2UiLAotewotICAgIHZhbHVlOiBmdW5jdGlvbihrZXkpCi0gICAgewotICAgICAgICB2
YXIgZGVsZXRlZFZhbHVlID0gdGhpcy5nZXQoa2V5KTsKLSAgICAgICAgdGhpcy5kZWxldGUoa2V5
KTsKLSAgICAgICAgcmV0dXJuIGRlbGV0ZWRWYWx1ZTsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRl
ZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBlLCAiZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFz
cyIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKGNsYXNzTmFtZSkKLSAgICB7Ci0gICAgICAgIGZv
ciAodmFyIG5vZGUgPSB0aGlzOyBub2RlICYmIG5vZGUgIT09IHRoaXMub3duZXJEb2N1bWVudDsg
bm9kZSA9IG5vZGUucGFyZW50Tm9kZSkKLSAgICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09
PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiBub2RlLmNsYXNzTGlzdC5jb250YWlucyhjbGFzc05hbWUp
KQotICAgICAgICAgICAgICAgIHJldHVybiBub2RlOwotICAgICAgICByZXR1cm4gbnVsbDsKLSAg
ICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBlLCAiZW5jbG9z
aW5nTm9kZU9yU2VsZldpdGhOb2RlTmFtZUluQXJyYXkiLAotewotICAgIHZhbHVlOiBmdW5jdGlv
bihuYW1lQXJyYXkpCi0gICAgewotICAgICAgICB2YXIgbG93ZXJDYXNlTmFtZUFycmF5ID0gbmFt
ZUFycmF5Lm1hcChmdW5jdGlvbihuYW1lKSB7Ci0gICAgICAgICAgICByZXR1cm4gbmFtZS50b0xv
d2VyQ2FzZSgpOwotICAgICAgICB9KTsKLSAgICAgICAgZm9yICh2YXIgbm9kZSA9IHRoaXM7IG5v
ZGUgJiYgbm9kZSAhPT0gdGhpcy5vd25lckRvY3VtZW50OyBub2RlID0gbm9kZS5wYXJlbnROb2Rl
KSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVBcnJheS5sZW5ndGg7ICsr
aSkgewotICAgICAgICAgICAgICAgIGlmIChub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09
IGxvd2VyQ2FzZU5hbWVBcnJheVtpXSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9
Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBlLCAiZW5jbG9zaW5n
Tm9kZU9yU2VsZldpdGhOb2RlTmFtZSIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKG5vZGVOYW1l
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhOb2Rl
TmFtZUluQXJyYXkoW25vZGVOYW1lXSk7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShOb2RlLnByb3RvdHlwZSwgImlzQW5jZXN0b3IiLAotewotICAgIHZhbHVlOiBmdW5jdGlv
bihub2RlKQotICAgIHsKLSAgICAgICAgaWYgKCFub2RlKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgICAgIHZhciBjdXJyZW50Tm9kZSA9IG5vZGUucGFyZW50Tm9kZTsKLSAgICAg
ICAgd2hpbGUgKGN1cnJlbnROb2RlKSB7Ci0gICAgICAgICAgICBpZiAodGhpcyA9PT0gY3VycmVu
dE5vZGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBjdXJyZW50
Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudE5vZGU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3Rv
dHlwZSwgImlzRGVzY2VuZGFudCIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKGRlc2NlbmRhbnQp
Ci0gICAgewotICAgICAgICByZXR1cm4gISFkZXNjZW5kYW50ICYmIGRlc2NlbmRhbnQuaXNBbmNl
c3Rvcih0aGlzKTsKLSAgICB9Ci19KTsKLQotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZS5w
cm90b3R5cGUsICJpc1NlbGZPckFuY2VzdG9yIiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24obm9k
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiAhIW5vZGUgJiYgKG5vZGUgPT09IHRoaXMgfHwgdGhp
cy5pc0FuY2VzdG9yKG5vZGUpKTsKLSAgICB9Ci19KTsKLQotCi1PYmplY3QuZGVmaW5lUHJvcGVy
dHkoTm9kZS5wcm90b3R5cGUsICJpc1NlbGZPckRlc2NlbmRhbnQiLAotewotICAgIHZhbHVlOiBm
dW5jdGlvbihub2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuICEhbm9kZSAmJiAobm9kZSA9PT0g
dGhpcyB8fCB0aGlzLmlzRGVzY2VuZGFudChub2RlKSk7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlwZSwgInRyYXZlcnNlTmV4dE5vZGUiLAotewotICAg
IHZhbHVlOiBmdW5jdGlvbihzdGF5V2l0aGluKQotICAgIHsKLSAgICAgICAgdmFyIG5vZGUgPSB0
aGlzLmZpcnN0Q2hpbGQ7Ci0gICAgICAgIGlmIChub2RlKQotICAgICAgICAgICAgcmV0dXJuIG5v
ZGU7Ci0KLSAgICAgICAgaWYgKHN0YXlXaXRoaW4gJiYgdGhpcyA9PT0gc3RheVdpdGhpbikKLSAg
ICAgICAgICAgIHJldHVybiBudWxsOwotCi0gICAgICAgIG5vZGUgPSB0aGlzLm5leHRTaWJsaW5n
OwotICAgICAgICBpZiAobm9kZSkKLSAgICAgICAgICAgIHJldHVybiBub2RlOwotCi0gICAgICAg
IG5vZGUgPSB0aGlzOwotICAgICAgICB3aGlsZSAobm9kZSAmJiAhbm9kZS5uZXh0U2libGluZyAm
JiAoIXN0YXlXaXRoaW4gfHwgIW5vZGUucGFyZW50Tm9kZSB8fCBub2RlLnBhcmVudE5vZGUgIT09
IHN0YXlXaXRoaW4pKQotICAgICAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTsKLSAgICAg
ICAgaWYgKCFub2RlKQotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0KLSAgICAgICAgcmV0dXJu
IG5vZGUubmV4dFNpYmxpbmc7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShO
b2RlLnByb3RvdHlwZSwgInRyYXZlcnNlUHJldmlvdXNOb2RlIiwKLXsKLSAgICB2YWx1ZTogZnVu
Y3Rpb24oc3RheVdpdGhpbikKLSAgICB7Ci0gICAgICAgIGlmIChzdGF5V2l0aGluICYmIHRoaXMg
PT09IHN0YXlXaXRoaW4pCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgdmFyIG5v
ZGUgPSB0aGlzLnByZXZpb3VzU2libGluZzsKLSAgICAgICAgd2hpbGUgKG5vZGUgJiYgbm9kZS5s
YXN0Q2hpbGQpCi0gICAgICAgICAgICBub2RlID0gbm9kZS5sYXN0Q2hpbGQ7Ci0gICAgICAgIGlm
IChub2RlKQotICAgICAgICAgICAgcmV0dXJuIG5vZGU7Ci0gICAgICAgIHJldHVybiB0aGlzLnBh
cmVudE5vZGU7Ci0gICAgfQotfSk7Ci0KLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJv
dG90eXBlLCAicmFuZ2VPZldvcmQiLAotewotICAgIHZhbHVlOiBmdW5jdGlvbihvZmZzZXQsIHN0
b3BDaGFyYWN0ZXJzLCBzdGF5V2l0aGluTm9kZSwgZGlyZWN0aW9uKQotICAgIHsKLSAgICAgICAg
dmFyIHN0YXJ0Tm9kZTsKLSAgICAgICAgdmFyIHN0YXJ0T2Zmc2V0ID0gMDsKLSAgICAgICAgdmFy
IGVuZE5vZGU7Ci0gICAgICAgIHZhciBlbmRPZmZzZXQgPSAwOwotCi0gICAgICAgIGlmICghc3Rh
eVdpdGhpbk5vZGUpCi0gICAgICAgICAgICBzdGF5V2l0aGluTm9kZSA9IHRoaXM7Ci0KLSAgICAg
ICAgaWYgKCFkaXJlY3Rpb24gfHwgZGlyZWN0aW9uID09PSAiYmFja3dhcmQiIHx8IGRpcmVjdGlv
biA9PT0gImJvdGgiKSB7Ci0gICAgICAgICAgICB2YXIgbm9kZSA9IHRoaXM7Ci0gICAgICAgICAg
ICB3aGlsZSAobm9kZSkgewotICAgICAgICAgICAgICAgIGlmIChub2RlID09PSBzdGF5V2l0aGlu
Tm9kZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXN0YXJ0Tm9kZSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXJ0Tm9kZSA9IHN0YXlXaXRoaW5Ob2RlOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAobm9k
ZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFy
IHN0YXJ0ID0gKG5vZGUgPT09IHRoaXMgPyAob2Zmc2V0IC0gMSkgOiAobm9kZS5ub2RlVmFsdWUu
bGVuZ3RoIC0gMSkpOwotICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkg
Pj0gMDsgLS1pKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RvcENoYXJhY3RlcnMu
aW5kZXhPZihub2RlLm5vZGVWYWx1ZVtpXSkgIT09IC0xKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhcnROb2RlID0gbm9kZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGFydE9mZnNldCA9IGkgKyAxOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKHN0YXJ0Tm9kZSkKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICBub2RlID0gbm9kZS50cmF2ZXJzZVBy
ZXZpb3VzTm9kZShzdGF5V2l0aGluTm9kZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGlmICghc3RhcnROb2RlKSB7Ci0gICAgICAgICAgICAgICAgc3RhcnROb2RlID0gc3RheVdpdGhp
bk5vZGU7Ci0gICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQgPSAwOwotICAgICAgICAgICAgfQot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3RhcnROb2RlID0gdGhpczsKLSAgICAgICAg
ICAgIHN0YXJ0T2Zmc2V0ID0gb2Zmc2V0OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFkaXJl
Y3Rpb24gfHwgZGlyZWN0aW9uID09PSAiZm9yd2FyZCIgfHwgZGlyZWN0aW9uID09PSAiYm90aCIp
IHsKLSAgICAgICAgICAgIG5vZGUgPSB0aGlzOwotICAgICAgICAgICAgd2hpbGUgKG5vZGUpIHsK
LSAgICAgICAgICAgICAgICBpZiAobm9kZSA9PT0gc3RheVdpdGhpbk5vZGUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCFlbmROb2RlKQotICAgICAgICAgICAgICAgICAgICAgICAgZW5kTm9k
ZSA9IHN0YXlXaXRoaW5Ob2RlOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5U
RVhUX05PREUpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXJ0ID0gKG5vZGUgPT09IHRo
aXMgPyBvZmZzZXQgOiAwKTsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IHN0YXJ0
OyBpIDwgbm9kZS5ub2RlVmFsdWUubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChzdG9wQ2hhcmFjdGVycy5pbmRleE9mKG5vZGUubm9kZVZhbHVlW2ldKSAhPT0gLTEp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmROb2RlID0gbm9kZTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbmRPZmZzZXQgPSBpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKGVuZE5vZGUp
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgbm9kZSA9IG5v
ZGUudHJhdmVyc2VOZXh0Tm9kZShzdGF5V2l0aGluTm9kZSk7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGlmICghZW5kTm9kZSkgewotICAgICAgICAgICAgICAgIGVuZE5vZGUgPSBzdGF5
V2l0aGluTm9kZTsKLSAgICAgICAgICAgICAgICBlbmRPZmZzZXQgPSBzdGF5V2l0aGluTm9kZS5u
b2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUgPyBzdGF5V2l0aGluTm9kZS5ub2RlVmFsdWUubGVu
Z3RoIDogc3RheVdpdGhpbk5vZGUuY2hpbGROb2Rlcy5sZW5ndGg7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBlbmROb2RlID0gdGhpczsKLSAgICAgICAgICAg
IGVuZE9mZnNldCA9IG9mZnNldDsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciByZXN1bHQgPSB0
aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKLSAgICAgICAgcmVzdWx0LnNldFN0YXJ0
KHN0YXJ0Tm9kZSwgc3RhcnRPZmZzZXQpOwotICAgICAgICByZXN1bHQuc2V0RW5kKGVuZE5vZGUs
IGVuZE9mZnNldCk7Ci0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAgIH0KLX0pOwotCi1P
YmplY3QuZGVmaW5lUHJvcGVydHkoRWxlbWVudC5wcm90b3R5cGUsICJyZWFsT2Zmc2V0V2lkdGgi
LAotewotICAgIGdldDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZ2V0
Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShFbGVtZW50LnByb3RvdHlwZSwgInJlYWxPZmZzZXRIZWlnaHQiLAotewotICAgIGdl
dDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCkuaGVpZ2h0OwotICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoRWxl
bWVudC5wcm90b3R5cGUsICJ0b3RhbE9mZnNldExlZnQiLAotewotICAgIGdldDogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVm
dDsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KEVsZW1lbnQucHJvdG90eXBl
LCAidG90YWxPZmZzZXRUb3AiLAotewotICAgIGdldDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wOwotICAgIH0KLX0pOwot
Ci1PYmplY3QuZGVmaW5lUHJvcGVydHkoRWxlbWVudC5wcm90b3R5cGUsICJyZW1vdmVDaGlsZHJl
biIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIC8vIFRoaXMgaGFz
IGJlZW4gdGVzdGVkIHRvIGJlIHRoZSBmYXN0ZXN0IHJlbW92YWwgbWV0aG9kLgotICAgICAgICBp
ZiAodGhpcy5maXJzdENoaWxkKQotICAgICAgICAgICAgdGhpcy50ZXh0Q29udGVudCA9ICIiOwot
ICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoRWxlbWVudC5wcm90b3R5cGUsICJp
c0luc2VydGlvbkNhcmV0SW5zaWRlIiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKLSAgICAgICAg
aWYgKCFzZWxlY3Rpb24ucmFuZ2VDb3VudCB8fCAhc2VsZWN0aW9uLmlzQ29sbGFwc2VkKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB2YXIgc2VsZWN0aW9uUmFuZ2UgPSBzZWxl
Y3Rpb24uZ2V0UmFuZ2VBdCgwKTsKLSAgICAgICAgcmV0dXJuIHNlbGVjdGlvblJhbmdlLnN0YXJ0
Q29udGFpbmVyID09PSB0aGlzIHx8IHNlbGVjdGlvblJhbmdlLnN0YXJ0Q29udGFpbmVyLmlzRGVz
Y2VuZGFudCh0aGlzKTsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KEVsZW1l
bnQucHJvdG90eXBlLCAicmVtb3ZlTWF0Y2hpbmdTdHlsZUNsYXNzZXMiLAotewotICAgIHZhbHVl
OiBmdW5jdGlvbihjbGFzc05hbWVSZWdleCkKLSAgICB7Ci0gICAgICAgIHZhciByZWdleCA9IG5l
dyBSZWdFeHAoIihefFxccyspIiArIGNsYXNzTmFtZVJlZ2V4ICsgIigkfFxccyspIik7Ci0gICAg
ICAgIGlmIChyZWdleC50ZXN0KHRoaXMuY2xhc3NOYW1lKSkKLSAgICAgICAgICAgIHRoaXMuY2xh
c3NOYW1lID0gdGhpcy5jbGFzc05hbWUucmVwbGFjZShyZWdleCwgIiAiKTsKLSAgICB9Ci19KTsK
LQotT2JqZWN0LmRlZmluZVByb3BlcnR5KEVsZW1lbnQucHJvdG90eXBlLCAiY3JlYXRlQ2hpbGQi
LAotewotICAgIHZhbHVlOiBmdW5jdGlvbihlbGVtZW50TmFtZSwgY2xhc3NOYW1lKQotICAgIHsK
LSAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudChl
bGVtZW50TmFtZSk7Ci0gICAgICAgIGlmIChjbGFzc05hbWUpCi0gICAgICAgICAgICBlbGVtZW50
LmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKLSAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChlbGVtZW50
KTsKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShFbGVtZW50LnByb3RvdHlwZSwgImlzU2Nyb2xsZWRUb0JvdHRvbSIsCi17Ci0gICAg
dmFsdWU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIC8vIFRoaXMgY29kZSB3b3JrcyBvbmx5
IGZvciAwLXdpZHRoIGJvcmRlcgotICAgICAgICByZXR1cm4gdGhpcy5zY3JvbGxUb3AgKyB0aGlz
LmNsaWVudEhlaWdodCA9PT0gdGhpcy5zY3JvbGxIZWlnaHQ7Ci0gICAgfQotfSk7Ci0KLU9iamVj
dC5kZWZpbmVQcm9wZXJ0eShFbGVtZW50LnByb3RvdHlwZSwgInJlY2FsY3VsYXRlU3R5bGVzIiwK
LXsKLSAgICB2YWx1ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5vd25lckRvY3Vt
ZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodGhpcyk7Ci0gICAgfQotfSk7Ci0KLU9i
amVjdC5kZWZpbmVQcm9wZXJ0eShEb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZSwgImNyZWF0ZUNo
aWxkIiwKLXsKLSAgICB2YWx1ZTogRWxlbWVudC5wcm90b3R5cGUuY3JlYXRlQ2hpbGQKLX0pOwot
Ci1PYmplY3QuZGVmaW5lUHJvcGVydHkoQXJyYXkucHJvdG90eXBlLCAibGFzdFZhbHVlIiwKLXsK
LSAgICBnZXQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5sZW5ndGgpCi0g
ICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwotICAgICAgICByZXR1cm4gdGhpc1t0aGlzLmxl
bmd0aCAtIDFdOwotICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoQXJyYXkucHJv
dG90eXBlLCAicmVtb3ZlIiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24odmFsdWUsIG9ubHlGaXJz
dCkKLSAgICB7Ci0gICAgICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsg
LS1pKSB7Ci0gICAgICAgICAgICBpZiAodGhpc1tpXSA9PT0gdmFsdWUpIHsKLSAgICAgICAgICAg
ICAgICB0aGlzLnNwbGljZShpLCAxKTsKLSAgICAgICAgICAgICAgICBpZiAob25seUZpcnN0KQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgImluc2Vy
dEF0SW5kZXgiLAotewotICAgIHZhbHVlOiBmdW5jdGlvbih2YWx1ZSwgaW5kZXgpCi0gICAgewot
ICAgICAgICB0aGlzLnNwbGljZShpbmRleCwgMCwgdmFsdWUpOwotICAgIH0KLX0pOwotCi1PYmpl
Y3QuZGVmaW5lUHJvcGVydHkoQXJyYXkucHJvdG90eXBlLCAia2V5U2V0IiwKLXsKLSAgICB2YWx1
ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgbGV0IGtleXMgPSBPYmplY3QuY3JlYXRlKG51
bGwpOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyArK2kpCi0gICAg
ICAgICAgICBrZXlzW3RoaXNbaV1dID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIGtleXM7Ci0gICAg
fQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90b3R5cGUsICJwYXJ0aXRp
b24iLAotewotICAgIHZhbHVlOiBmdW5jdGlvbihjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIGxl
dCBwb3NpdGl2ZSA9IFtdOwotICAgICAgICBsZXQgbmVnYXRpdmUgPSBbXTsKLSAgICAgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBsZXQgdmFs
dWUgPSB0aGlzW2ldOwotICAgICAgICAgICAgaWYgKGNhbGxiYWNrKHZhbHVlKSkKLSAgICAgICAg
ICAgICAgICBwb3NpdGl2ZS5wdXNoKHZhbHVlKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBuZWdhdGl2ZS5wdXNoKHZhbHVlKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
W3Bvc2l0aXZlLCBuZWdhdGl2ZV07Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0
eShTdHJpbmcucHJvdG90eXBlLCAidHJpbU1pZGRsZSIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9u
KG1heExlbmd0aCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLmxlbmd0aCA8PSBtYXhMZW5ndGgp
Ci0gICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgdmFyIGxlZnRIYWxmID0gbWF4TGVu
Z3RoID4+IDE7Ci0gICAgICAgIHZhciByaWdodEhhbGYgPSBtYXhMZW5ndGggLSBsZWZ0SGFsZiAt
IDE7Ci0gICAgICAgIHJldHVybiB0aGlzLnN1YnN0cigwLCBsZWZ0SGFsZikgKyBlbGxpcHNpcyAr
IHRoaXMuc3Vic3RyKHRoaXMubGVuZ3RoIC0gcmlnaHRIYWxmLCByaWdodEhhbGYpOwotICAgIH0K
LX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoU3RyaW5nLnByb3RvdHlwZSwgInRyaW1FbmQi
LAotewotICAgIHZhbHVlOiBmdW5jdGlvbihtYXhMZW5ndGgpCi0gICAgewotICAgICAgICBpZiAo
dGhpcy5sZW5ndGggPD0gbWF4TGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAg
ICAgIHJldHVybiB0aGlzLnN1YnN0cigwLCBtYXhMZW5ndGggLSAxKSArIGVsbGlwc2lzOwotICAg
IH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoU3RyaW5nLnByb3RvdHlwZSwgInRydW5j
YXRlIiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24obWF4TGVuZ3RoKQotICAgIHsKLSAgICAgICAg
InVzZSBzdHJpY3QiOwotCi0gICAgICAgIGlmICh0aGlzLmxlbmd0aCA8PSBtYXhMZW5ndGgpCi0g
ICAgICAgICAgICByZXR1cm4gdGhpczsKLQotICAgICAgICBsZXQgY2xpcHBlZCA9IHRoaXMuc2xp
Y2UoMCwgbWF4TGVuZ3RoKTsKLSAgICAgICAgbGV0IGluZGV4T2ZMYXN0V2hpdGVzcGFjZSA9IGNs
aXBwZWQuc2VhcmNoKC9cc1xTKiQvKTsKLSAgICAgICAgaWYgKGluZGV4T2ZMYXN0V2hpdGVzcGFj
ZSA+IE1hdGguZmxvb3IobWF4TGVuZ3RoIC8gMikpCi0gICAgICAgICAgICBjbGlwcGVkID0gY2xp
cHBlZC5zbGljZSgwLCBpbmRleE9mTGFzdFdoaXRlc3BhY2UgLSAxKTsKLQotICAgICAgICByZXR1
cm4gY2xpcHBlZCArIGVsbGlwc2lzOwotICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVy
dHkoU3RyaW5nLnByb3RvdHlwZSwgImNvbGxhcHNlV2hpdGVzcGFjZSIsCi17Ci0gICAgdmFsdWU6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJlcGxhY2UoL1tcc1x4QTBd
Ky9nLCAiICIpOwotICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoU3RyaW5nLnBy
b3RvdHlwZSwgImVzY2FwZUNoYXJhY3RlcnMiLAotewotICAgIHZhbHVlOiBmdW5jdGlvbihjaGFy
cykKLSAgICB7Ci0gICAgICAgIHZhciBmb3VuZENoYXIgPSBmYWxzZTsKLSAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBjaGFycy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgaWYgKHRoaXMu
aW5kZXhPZihjaGFycy5jaGFyQXQoaSkpICE9PSAtMSkgewotICAgICAgICAgICAgICAgIGZvdW5k
Q2hhciA9IHRydWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAoIWZvdW5kQ2hhcikKLSAgICAgICAgICAgIHJldHVybiB0aGlz
OwotCi0gICAgICAgIHZhciByZXN1bHQgPSAiIjsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0aGlzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoY2hhcnMuaW5kZXhPZih0aGlz
LmNoYXJBdChpKSkgIT09IC0xKQotICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiXFwiOwotICAg
ICAgICAgICAgcmVzdWx0ICs9IHRoaXMuY2hhckF0KGkpOwotICAgICAgICB9Ci0KLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KFN0cmlu
Zy5wcm90b3R5cGUsICJlc2NhcGVGb3JSZWdFeHAiLAotewotICAgIHZhbHVlOiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5lc2NhcGVDaGFyYWN0ZXJzKCJeW117fSgpXFwu
JCorP3wiKTsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KFN0cmluZy5wcm90
b3R5cGUsICJjYXBpdGFsaXplIiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0aGlzLnNsaWNlKDEp
OwotICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoU3RyaW5nLCAidG9rZW5pemVG
b3JtYXRTdHJpbmciLAotewotICAgIHZhbHVlOiBmdW5jdGlvbihmb3JtYXQpCi0gICAgewotICAg
ICAgICB2YXIgdG9rZW5zID0gW107Ci0gICAgICAgIHZhciBzdWJzdGl0dXRpb25JbmRleCA9IDA7
Ci0KLSAgICAgICAgZnVuY3Rpb24gYWRkU3RyaW5nVG9rZW4oc3RyKQotICAgICAgICB7Ci0gICAg
ICAgICAgICB0b2tlbnMucHVzaCh7Ci0gICAgICAgICAgICAgICAgdHlwZTogInN0cmluZyIsCi0g
ICAgICAgICAgICAgICAgdmFsdWU6IHN0cgotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBmdW5jdGlvbiBhZGRTcGVjaWZpZXJUb2tlbihzcGVjaWZpZXIsIHByZWNpc2lvbiwg
c3Vic3RpdHV0aW9uSW5kZXgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRva2Vucy5wdXNoKHsK
LSAgICAgICAgICAgICAgICB0eXBlOiAic3BlY2lmaWVyIiwKLSAgICAgICAgICAgICAgICBzcGVj
aWZpZXIsCi0gICAgICAgICAgICAgICAgcHJlY2lzaW9uLAotICAgICAgICAgICAgICAgIHN1YnN0
aXR1dGlvbkluZGV4Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBp
bmRleCA9IDA7Ci0gICAgICAgIGZvciAodmFyIHByZWNlbnRJbmRleCA9IGZvcm1hdC5pbmRleE9m
KCIlIiwgaW5kZXgpOyBwcmVjZW50SW5kZXggIT09IC0xOyBwcmVjZW50SW5kZXggPSBmb3JtYXQu
aW5kZXhPZigiJSIsIGluZGV4KSkgewotICAgICAgICAgICAgYWRkU3RyaW5nVG9rZW4oZm9ybWF0
LnN1YnN0cmluZyhpbmRleCwgcHJlY2VudEluZGV4KSk7Ci0gICAgICAgICAgICBpbmRleCA9IHBy
ZWNlbnRJbmRleCArIDE7Ci0KLSAgICAgICAgICAgIGlmIChmb3JtYXRbaW5kZXhdID09PSAiJSIp
IHsKLSAgICAgICAgICAgICAgICBhZGRTdHJpbmdUb2tlbigiJSIpOwotICAgICAgICAgICAgICAg
ICsraW5kZXg7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGlmICghaXNOYU4oZm9ybWF0W2luZGV4XSkpIHsKLSAgICAgICAgICAgICAgICAv
LyBUaGUgZmlyc3QgY2hhcmFjdGVyIGlzIGEgbnVtYmVyLCBpdCBtaWdodCBiZSBhIHN1YnN0aXR1
dGlvbiBpbmRleC4KLSAgICAgICAgICAgICAgICB2YXIgbnVtYmVyID0gcGFyc2VJbnQoZm9ybWF0
LnN1YnN0cmluZyhpbmRleCksIDEwKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoIWlzTmFOKGZv
cm1hdFtpbmRleF0pKQotICAgICAgICAgICAgICAgICAgICArK2luZGV4OwotCi0gICAgICAgICAg
ICAgICAgLy8gSWYgdGhlIG51bWJlciBpcyBncmVhdGVyIHRoYW4gemVybyBhbmQgZW5kcyB3aXRo
IGEgIiQiLAotICAgICAgICAgICAgICAgIC8vIHRoZW4gdGhpcyBpcyBhIHN1YnN0aXR1dGlvbiBp
bmRleC4KLSAgICAgICAgICAgICAgICBpZiAobnVtYmVyID4gMCAmJiBmb3JtYXRbaW5kZXhdID09
PSAiJCIpIHsKLSAgICAgICAgICAgICAgICAgICAgc3Vic3RpdHV0aW9uSW5kZXggPSAobnVtYmVy
IC0gMSk7Ci0gICAgICAgICAgICAgICAgICAgICsraW5kZXg7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YXIgcHJlY2lzaW9uID0gLTE7Ci0gICAgICAg
ICAgICBpZiAoZm9ybWF0W2luZGV4XSA9PT0gIi4iKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhp
cyBpcyBhIHByZWNpc2lvbiBzcGVjaWZpZXIuIElmIG5vIGRpZ2l0IGZvbGxvd3MgdGhlICIuIiwK
LSAgICAgICAgICAgICAgICAvLyB0aGVuIHRoZSBwcmVjaXNpb24gc2hvdWxkIGJlIHplcm8uCi0g
ICAgICAgICAgICAgICAgKytpbmRleDsKLQotICAgICAgICAgICAgICAgIHByZWNpc2lvbiA9IHBh
cnNlSW50KGZvcm1hdC5zdWJzdHJpbmcoaW5kZXgpLCAxMCk7Ci0gICAgICAgICAgICAgICAgaWYg
KGlzTmFOKHByZWNpc2lvbikpCi0gICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbiA9IDA7Ci0K
LSAgICAgICAgICAgICAgICB3aGlsZSAoIWlzTmFOKGZvcm1hdFtpbmRleF0pKQotICAgICAgICAg
ICAgICAgICAgICArK2luZGV4OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBhZGRTcGVj
aWZpZXJUb2tlbihmb3JtYXRbaW5kZXhdLCBwcmVjaXNpb24sIHN1YnN0aXR1dGlvbkluZGV4KTsK
LQotICAgICAgICAgICAgKytzdWJzdGl0dXRpb25JbmRleDsKLSAgICAgICAgICAgICsraW5kZXg7
Ci0gICAgICAgIH0KLQotICAgICAgICBhZGRTdHJpbmdUb2tlbihmb3JtYXQuc3Vic3RyaW5nKGlu
ZGV4KSk7Ci0KLSAgICAgICAgcmV0dXJuIHRva2VuczsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRl
ZmluZVByb3BlcnR5KFN0cmluZy5wcm90b3R5cGUsICJoYXNoIiwKLXsKLSAgICBnZXQ6IGZ1bmN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIC8vIE1hdGNoZXMgdGhlIHd0Zi9IYXNoZXIuaCAoU3VwZXJG
YXN0SGFzaCkgYWxnb3JpdGhtLgotCi0gICAgICAgIC8vIEFyYml0cmFyeSBzdGFydCB2YWx1ZSB0
byBhdm9pZCBtYXBwaW5nIGFsbCAwJ3MgdG8gYWxsIDAncy4KLSAgICAgICAgY29uc3Qgc3RyaW5n
SGFzaGluZ1N0YXJ0VmFsdWUgPSAweDllMzc3OWI5OwotCi0gICAgICAgIHZhciByZXN1bHQgPSBz
dHJpbmdIYXNoaW5nU3RhcnRWYWx1ZTsKLSAgICAgICAgdmFyIHBlbmRpbmdDaGFyYWN0ZXIgPSBu
dWxsOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgICAgIHZhciBjdXJyZW50Q2hhcmFjdGVyID0gdGhpc1tpXS5jaGFyQ29kZUF0KDApOwot
ICAgICAgICAgICAgaWYgKHBlbmRpbmdDaGFyYWN0ZXIgPT09IG51bGwpIHsKLSAgICAgICAgICAg
ICAgICBwZW5kaW5nQ2hhcmFjdGVyID0gY3VycmVudENoYXJhY3RlcjsKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmVzdWx0ICs9IHBlbmRp
bmdDaGFyYWN0ZXI7Ci0gICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0IDw8IDE2KSBeICgoY3Vy
cmVudENoYXJhY3RlciA8PCAxMSkgXiByZXN1bHQpOwotICAgICAgICAgICAgcmVzdWx0ICs9IHJl
c3VsdCA+PiAxMTsKLQotICAgICAgICAgICAgcGVuZGluZ0NoYXJhY3RlciA9IG51bGw7Ci0gICAg
ICAgIH0KLQotICAgICAgICAvLyBIYW5kbGUgdGhlIGxhc3QgY2hhcmFjdGVyIGluIG9kZCBsZW5n
dGggc3RyaW5ncy4KLSAgICAgICAgaWYgKHBlbmRpbmdDaGFyYWN0ZXIgIT09IG51bGwpIHsKLSAg
ICAgICAgICAgIHJlc3VsdCArPSBwZW5kaW5nQ2hhcmFjdGVyOwotICAgICAgICAgICAgcmVzdWx0
IF49IHJlc3VsdCA8PCAxMTsKLSAgICAgICAgICAgIHJlc3VsdCArPSByZXN1bHQgPj4gMTc7Ci0g
ICAgICAgIH0KLQotICAgICAgICAvLyBGb3JjZSAiYXZhbGFuY2hpbmciIG9mIGZpbmFsIDMxIGJp
dHMuCi0gICAgICAgIHJlc3VsdCBePSByZXN1bHQgPDwgMzsKLSAgICAgICAgcmVzdWx0ICs9IHJl
c3VsdCA+PiA1OwotICAgICAgICByZXN1bHQgXj0gcmVzdWx0IDw8IDI7Ci0gICAgICAgIHJlc3Vs
dCArPSByZXN1bHQgPj4gMTU7Ci0gICAgICAgIHJlc3VsdCBePSByZXN1bHQgPDwgMTA7Ci0KLSAg
ICAgICAgLy8gUHJldmVudCAwIGFuZCBuZWdhdGl2ZSByZXN1bHRzLgotICAgICAgICByZXR1cm4g
KDB4ZmZmZmZmZmYgKyByZXN1bHQgKyAxKS50b1N0cmluZygzNik7Ci0gICAgfQotfSk7Ci0KLU9i
amVjdC5kZWZpbmVQcm9wZXJ0eShTdHJpbmcsICJzdGFuZGFyZEZvcm1hdHRlcnMiLAotewotICAg
IHZhbHVlOiB7Ci0gICAgICAgIGQ6IGZ1bmN0aW9uKHN1YnN0aXR1dGlvbikKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuICFpc05hTihzdWJzdGl0dXRpb24pID8gc3Vic3RpdHV0aW9uIDog
MDsKLSAgICAgICAgfSwKLQotICAgICAgICBmOiBmdW5jdGlvbihzdWJzdGl0dXRpb24sIHRva2Vu
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoc3Vic3RpdHV0aW9uICYmIHRva2VuLnByZWNp
c2lvbiA+IC0xKQotICAgICAgICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbi50
b0ZpeGVkKHRva2VuLnByZWNpc2lvbik7Ci0gICAgICAgICAgICByZXR1cm4gIWlzTmFOKHN1YnN0
aXR1dGlvbikgPyBzdWJzdGl0dXRpb24gOiAodG9rZW4ucHJlY2lzaW9uID4gLTEgPyBOdW1iZXIo
MCkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24pIDogMCk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAg
czogZnVuY3Rpb24oc3Vic3RpdHV0aW9uKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
c3Vic3RpdHV0aW9uOwotICAgICAgICB9Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShTdHJpbmcsICJmb3JtYXQiLAotewotICAgIHZhbHVlOiBmdW5jdGlvbihmb3JtYXQsIHN1
YnN0aXR1dGlvbnMsIGZvcm1hdHRlcnMsIGluaXRpYWxWYWx1ZSwgYXBwZW5kKQotICAgIHsKLSAg
ICAgICAgaWYgKCFmb3JtYXQgfHwgIXN1YnN0aXR1dGlvbnMgfHwgIXN1YnN0aXR1dGlvbnMubGVu
Z3RoKQotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICBmb3JtYXR0ZWRSZXN1
bHQ6IGFwcGVuZChpbml0aWFsVmFsdWUsIGZvcm1hdCksCi0gICAgICAgICAgICAgICAgdW51c2Vk
U3Vic3RpdHV0aW9uczogc3Vic3RpdHV0aW9ucwotICAgICAgICAgICAgfTsKLQotICAgICAgICBm
dW5jdGlvbiBwcmV0dHlGdW5jdGlvbk5hbWUoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gIlN0cmluZy5mb3JtYXQoXCIiICsgZm9ybWF0ICsgIlwiLCBcIiIgKyBzdWJzdGl0dXRpb25z
LmpvaW4oIlwiLCBcIiIpICsgIlwiKSI7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiB3
YXJuKG1zZykKLSAgICAgICAgewotICAgICAgICAgICAgY29uc29sZS53YXJuKHByZXR0eUZ1bmN0
aW9uTmFtZSgpICsgIjogIiArIG1zZyk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBl
cnJvcihtc2cpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IocHJldHR5RnVu
Y3Rpb25OYW1lKCkgKyAiOiAiICsgbXNnKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciByZXN1
bHQgPSBpbml0aWFsVmFsdWU7Ci0gICAgICAgIHZhciB0b2tlbnMgPSBTdHJpbmcudG9rZW5pemVG
b3JtYXRTdHJpbmcoZm9ybWF0KTsKLSAgICAgICAgdmFyIHVzZWRTdWJzdGl0dXRpb25JbmRleGVz
ID0ge307Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgICAgIHZhciB0b2tlbiA9IHRva2Vuc1tpXTsKLQotICAgICAgICAgICAgaWYg
KHRva2VuLnR5cGUgPT09ICJzdHJpbmciKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gYXBw
ZW5kKHJlc3VsdCwgdG9rZW4udmFsdWUpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAodG9rZW4udHlwZSAhPT0gInNwZWNpZmllciIp
IHsKLSAgICAgICAgICAgICAgICBlcnJvcigiVW5rbm93biB0b2tlbiB0eXBlIFwiIiArIHRva2Vu
LnR5cGUgKyAiXCIgZm91bmQuIik7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIGlmICh0b2tlbi5zdWJzdGl0dXRpb25JbmRleCA+PSBzdWJz
dGl0dXRpb25zLmxlbmd0aCkgewotICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBub3Qg
ZW5vdWdoIHN1YnN0aXR1dGlvbnMgZm9yIHRoZSBjdXJyZW50IHN1YnN0aXR1dGlvbkluZGV4Ci0g
ICAgICAgICAgICAgICAgLy8ganVzdCBvdXRwdXQgdGhlIGZvcm1hdCBzcGVjaWZpZXIgbGl0ZXJh
bGx5IGFuZCBtb3ZlIG9uLgotICAgICAgICAgICAgICAgIGVycm9yKCJub3QgZW5vdWdoIHN1YnN0
aXR1dGlvbiBhcmd1bWVudHMuIEhhZCAiICsgc3Vic3RpdHV0aW9ucy5sZW5ndGggKyAiIGJ1dCBu
ZWVkZWQgIiArICh0b2tlbi5zdWJzdGl0dXRpb25JbmRleCArIDEpICsgIiwgc28gc3Vic3RpdHV0
aW9uIHdhcyBza2lwcGVkLiIpOwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFwcGVuZChyZXN1
bHQsICIlIiArICh0b2tlbi5wcmVjaXNpb24gPiAtMSA/IHRva2VuLnByZWNpc2lvbiA6ICIiKSAr
IHRva2VuLnNwZWNpZmllcik7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIHVzZWRTdWJzdGl0dXRpb25JbmRleGVzW3Rva2VuLnN1YnN0aXR1
dGlvbkluZGV4XSA9IHRydWU7Ci0KLSAgICAgICAgICAgIGlmICghKHRva2VuLnNwZWNpZmllciBp
biBmb3JtYXR0ZXJzKSkgewotICAgICAgICAgICAgICAgIC8vIEVuY291bnRlcmVkIGFuIHVuc3Vw
cG9ydGVkIGZvcm1hdCBjaGFyYWN0ZXIsIHRyZWF0IGFzIGEgc3RyaW5nLgotICAgICAgICAgICAg
ICAgIHdhcm4oInVuc3VwcG9ydGVkIGZvcm1hdCBjaGFyYWN0ZXIgXHUyMDFDIiArIHRva2VuLnNw
ZWNpZmllciArICJcdTIwMUQuIFRyZWF0aW5nIGFzIGEgc3RyaW5nLiIpOwotICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IGFwcGVuZChyZXN1bHQsIHN1YnN0aXR1dGlvbnNbdG9rZW4uc3Vic3RpdHV0
aW9uSW5kZXhdKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgcmVzdWx0ID0gYXBwZW5kKHJlc3VsdCwgZm9ybWF0dGVyc1t0b2tlbi5zcGVj
aWZpZXJdKHN1YnN0aXR1dGlvbnNbdG9rZW4uc3Vic3RpdHV0aW9uSW5kZXhdLCB0b2tlbikpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHVudXNlZFN1YnN0aXR1dGlvbnMgPSBbXTsKLSAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdWJzdGl0dXRpb25zLmxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgICAgICBpZiAoaSBpbiB1c2VkU3Vic3RpdHV0aW9uSW5kZXhlcykKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIHVudXNlZFN1YnN0aXR1dGlvbnMucHVzaChzdWJzdGl0
dXRpb25zW2ldKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBm
b3JtYXR0ZWRSZXN1bHQ6IHJlc3VsdCwKLSAgICAgICAgICAgIHVudXNlZFN1YnN0aXR1dGlvbnMK
LSAgICAgICAgfTsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KFN0cmluZy5w
cm90b3R5cGUsICJmb3JtYXQiLAotewotICAgIHZhbHVlOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICByZXR1cm4gU3RyaW5nLmZvcm1hdCh0aGlzLCBhcmd1bWVudHMsIFN0cmluZy5zdGFuZGFy
ZEZvcm1hdHRlcnMsICIiLCBmdW5jdGlvbihhLCBiKSB7Ci0gICAgICAgICAgICByZXR1cm4gYSAr
IGI7Ci0gICAgICAgIH0pLmZvcm1hdHRlZFJlc3VsdDsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRl
ZmluZVByb3BlcnR5KFN0cmluZy5wcm90b3R5cGUsICJpbnNlcnRXb3JkQnJlYWtDaGFyYWN0ZXJz
IiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgLy8gQWRkIHplcm8g
d2lkdGggc3BhY2VzIGFmdGVyIGNoYXJhY3RlcnMgdGhhdCBhcmUgZ29vZCB0byBicmVhayBhZnRl
ci4KLSAgICAgICAgLy8gT3RoZXJ3aXNlIGEgc3RyaW5nIHdpdGggbm8gc3BhY2VzIHdpbGwgbm90
IGJyZWFrIGFuZCBvdmVyZmxvdyBpdHMgY29udGFpbmVyLgotICAgICAgICAvLyBUaGlzIGlzIG1h
aW5seSB1c2VkIG9uIFVSTCBzdHJpbmdzLCBzbyB0aGUgY2hhcmFjdGVycyBhcmUgdGFpbG9yZWQg
Zm9yIFVSTHMuCi0gICAgICAgIHJldHVybiB0aGlzLnJlcGxhY2UoLyhbXC87OlwpXF1cfSY/XSkv
ZywgIiQxXHUyMDBiIik7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShTdHJp
bmcucHJvdG90eXBlLCAicmVtb3ZlV29yZEJyZWFrQ2hhcmFjdGVycyIsCi17Ci0gICAgdmFsdWU6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIC8vIFVuZG9lcyB3aGF0IGluc2VydFdvcmRCcmVh
a0NoYXJhY3RlcnMgZGlkLgotICAgICAgICByZXR1cm4gdGhpcy5yZXBsYWNlKC9cdTIwMGIvZywg
IiIpOwotICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoU3RyaW5nLnByb3RvdHlw
ZSwgImdldE1hdGNoaW5nSW5kZXhlcyIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKG5lZWRsZSkK
LSAgICB7Ci0gICAgICAgIHZhciBpbmRleGVzT2ZOZWVkbGUgPSBbXTsKLSAgICAgICAgdmFyIGlu
ZGV4ID0gdGhpcy5pbmRleE9mKG5lZWRsZSk7Ci0KLSAgICAgICAgd2hpbGUgKGluZGV4ID49IDAp
IHsKLSAgICAgICAgICAgIGluZGV4ZXNPZk5lZWRsZS5wdXNoKGluZGV4KTsKLSAgICAgICAgICAg
IGluZGV4ID0gdGhpcy5pbmRleE9mKG5lZWRsZSwgaW5kZXggKyAxKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHJldHVybiBpbmRleGVzT2ZOZWVkbGU7Ci0gICAgfQotfSk7Ci0KLU9iamVjdC5kZWZp
bmVQcm9wZXJ0eShTdHJpbmcucHJvdG90eXBlLCAibGV2ZW5zaHRlaW5EaXN0YW5jZSIsCi17Ci0g
ICAgdmFsdWU6IGZ1bmN0aW9uKHMpCi0gICAgewotICAgICAgICB2YXIgbSA9IHRoaXMubGVuZ3Ro
OwotICAgICAgICB2YXIgbiA9IHMubGVuZ3RoOwotICAgICAgICB2YXIgZCA9IG5ldyBBcnJheSht
ICsgMSk7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gbTsgKytpKSB7Ci0gICAgICAg
ICAgICBkW2ldID0gbmV3IEFycmF5KG4gKyAxKTsKLSAgICAgICAgICAgIGRbaV1bMF0gPSBpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPD0gbjsgKytqKQotICAgICAg
ICAgICAgZFswXVtqXSA9IGo7Ci0KLSAgICAgICAgZm9yICh2YXIgaiA9IDE7IGogPD0gbjsgKytq
KSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSBtOyArK2kpIHsKLSAgICAgICAg
ICAgICAgICBpZiAodGhpc1tpIC0gMV0gPT09IHNbaiAtIDFdKQotICAgICAgICAgICAgICAgICAg
ICBkW2ldW2pdID0gZFtpIC0gMV1baiAtIDFdOwotICAgICAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICB2YXIgZGVsZXRpb24gPSBkW2kgLSAxXVtqXSArIDE7Ci0gICAgICAg
ICAgICAgICAgICAgIHZhciBpbnNlcnRpb24gPSBkW2ldW2ogLSAxXSArIDE7Ci0gICAgICAgICAg
ICAgICAgICAgIHZhciBzdWJzdGl0dXRpb24gPSBkW2kgLSAxXVtqIC0gMV0gKyAxOwotICAgICAg
ICAgICAgICAgICAgICBkW2ldW2pdID0gTWF0aC5taW4oZGVsZXRpb24sIGluc2VydGlvbiwgc3Vi
c3RpdHV0aW9uKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICByZXR1cm4gZFttXVtuXTsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVBy
b3BlcnR5KFN0cmluZy5wcm90b3R5cGUsICJ0b0NhbWVsQ2FzZSIsCi17Ci0gICAgdmFsdWU6IGZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLnRvTG93ZXJDYXNlKCkucmVwbGFj
ZSgvW15cd10rKFx3KS9nLCAobWF0Y2gsIGdyb3VwKSA9PiBncm91cC50b1VwcGVyQ2FzZSgpKTsK
LSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KE1hdGgsICJyb3VuZFRvIiwKLXsK
LSAgICB2YWx1ZTogZnVuY3Rpb24obnVtLCBzdGVwKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE1h
dGgucm91bmQobnVtIC8gc3RlcCkgKiBzdGVwOwotICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5l
UHJvcGVydHkoTnVtYmVyLCAiY29uc3RyYWluIiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24obnVt
LCBtaW4sIG1heCkKLSAgICB7Ci0gICAgICAgIGlmIChtYXggPCBtaW4pCi0gICAgICAgICAgICBy
ZXR1cm4gbWluOwotCi0gICAgICAgIGlmIChudW0gPCBtaW4pCi0gICAgICAgICAgICBudW0gPSBt
aW47Ci0gICAgICAgIGVsc2UgaWYgKG51bSA+IG1heCkKLSAgICAgICAgICAgIG51bSA9IG1heDsK
LSAgICAgICAgcmV0dXJuIG51bTsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5
KE51bWJlciwgInBlcmNlbnRhZ2VTdHJpbmciLAotewotICAgIHZhbHVlOiBmdW5jdGlvbihwZXJj
ZW50LCBwcmVjaXNpb249MSkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBlcmNlbnQg
Pj0gMCAmJiBwZXJjZW50IDw9IDEwMCk7Ci0gICAgICAgIHJldHVybiBwZXJjZW50LnRvRml4ZWQo
cHJlY2lzaW9uKSArICIlIjsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KE51
bWJlciwgInNlY29uZHNUb01pbGxpc2Vjb25kc1N0cmluZyIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0
aW9uKHNlY29uZHMsIGhpZ2hlclJlc29sdXRpb24pCi0gICAgewotICAgICAgICBsZXQgbXMgPSBz
ZWNvbmRzICogMTAwMDsKLQotICAgICAgICBpZiAoaGlnaGVyUmVzb2x1dGlvbikKLSAgICAgICAg
ICAgIHJldHVybiBXSS5VSVN0cmluZygiJS4yZm1zIikuZm9ybWF0KG1zKTsKLSAgICAgICAgcmV0
dXJuIFdJLlVJU3RyaW5nKCIlLjFmbXMiKS5mb3JtYXQobXMpOwotICAgIH0KLX0pOwotCi1PYmpl
Y3QuZGVmaW5lUHJvcGVydHkoTnVtYmVyLCAic2Vjb25kc1RvU3RyaW5nIiwKLXsKLSAgICB2YWx1
ZTogZnVuY3Rpb24oc2Vjb25kcywgaGlnaGVyUmVzb2x1dGlvbikKLSAgICB7Ci0gICAgICAgIGxl
dCBtcyA9IHNlY29uZHMgKiAxMDAwOwotCi0gICAgICAgIGlmIChNYXRoLmFicyhtcykgPCAxMCkg
ewotICAgICAgICAgICAgaWYgKGhpZ2hlclJlc29sdXRpb24pCi0gICAgICAgICAgICAgICAgcmV0
dXJuIFdJLlVJU3RyaW5nKCIlLjNmbXMiKS5mb3JtYXQobXMpOwotICAgICAgICAgICAgcmV0dXJu
IFdJLlVJU3RyaW5nKCIlLjJmbXMiKS5mb3JtYXQobXMpOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKE1hdGguYWJzKG1zKSA8IDEwMCkgewotICAgICAgICAgICAgaWYgKGhpZ2hlclJlc29sdXRp
b24pCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdJLlVJU3RyaW5nKCIlLjJmbXMiKS5mb3JtYXQo
bXMpOwotICAgICAgICAgICAgcmV0dXJuIFdJLlVJU3RyaW5nKCIlLjFmbXMiKS5mb3JtYXQobXMp
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKE1hdGguYWJzKG1zKSA8IDEwMDApIHsKLSAgICAg
ICAgICAgIGlmIChoaWdoZXJSZXNvbHV0aW9uKQotICAgICAgICAgICAgICAgIHJldHVybiBXSS5V
SVN0cmluZygiJS4xZm1zIikuZm9ybWF0KG1zKTsKLSAgICAgICAgICAgIHJldHVybiBXSS5VSVN0
cmluZygiJS4wZm1zIikuZm9ybWF0KG1zKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIERvIG5v
dCBnbyBvdmVyIHNlY29uZHMgd2hlbiBpbiBoaWdoIHJlc29sdXRpb24gbW9kZS4KLSAgICAgICAg
aWYgKGhpZ2hlclJlc29sdXRpb24gfHwgTWF0aC5hYnMoc2Vjb25kcykgPCA2MCkKLSAgICAgICAg
ICAgIHJldHVybiBXSS5VSVN0cmluZygiJS4yZnMiKS5mb3JtYXQoc2Vjb25kcyk7Ci0KLSAgICAg
ICAgbGV0IG1pbnV0ZXMgPSBzZWNvbmRzIC8gNjA7Ci0gICAgICAgIGlmIChNYXRoLmFicyhtaW51
dGVzKSA8IDYwKQotICAgICAgICAgICAgcmV0dXJuIFdJLlVJU3RyaW5nKCIlLjFmbWluIikuZm9y
bWF0KG1pbnV0ZXMpOwotCi0gICAgICAgIGxldCBob3VycyA9IG1pbnV0ZXMgLyA2MDsKLSAgICAg
ICAgaWYgKE1hdGguYWJzKGhvdXJzKSA8IDI0KQotICAgICAgICAgICAgcmV0dXJuIFdJLlVJU3Ry
aW5nKCIlLjFmaHJzIikuZm9ybWF0KGhvdXJzKTsKLQotICAgICAgICBsZXQgZGF5cyA9IGhvdXJz
IC8gMjQ7Ci0gICAgICAgIHJldHVybiBXSS5VSVN0cmluZygiJS4xZiBkYXlzIikuZm9ybWF0KGRh
eXMpOwotICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoTnVtYmVyLCAiYnl0ZXNU
b1N0cmluZyIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKGJ5dGVzLCBoaWdoZXJSZXNvbHV0aW9u
KQotICAgIHsKLSAgICAgICAgaWYgKGhpZ2hlclJlc29sdXRpb24gPT09IHVuZGVmaW5lZCkKLSAg
ICAgICAgICAgIGhpZ2hlclJlc29sdXRpb24gPSB0cnVlOwotCi0gICAgICAgIGlmIChNYXRoLmFi
cyhieXRlcykgPCAxMDI0KQotICAgICAgICAgICAgcmV0dXJuIFdJLlVJU3RyaW5nKCIlLjBmIEIi
KS5mb3JtYXQoYnl0ZXMpOwotCi0gICAgICAgIGxldCBraWxvYnl0ZXMgPSBieXRlcyAvIDEwMjQ7
Ci0gICAgICAgIGlmIChNYXRoLmFicyhraWxvYnl0ZXMpIDwgMTAyNCkgewotICAgICAgICAgICAg
aWYgKGhpZ2hlclJlc29sdXRpb24gfHwgTWF0aC5hYnMoa2lsb2J5dGVzKSA8IDEwKQotICAgICAg
ICAgICAgICAgIHJldHVybiBXSS5VSVN0cmluZygiJS4yZiBLQiIpLmZvcm1hdChraWxvYnl0ZXMp
OwotICAgICAgICAgICAgcmV0dXJuIFdJLlVJU3RyaW5nKCIlLjFmIEtCIikuZm9ybWF0KGtpbG9i
eXRlcyk7Ci0gICAgICAgIH0KLQotICAgICAgICBsZXQgbWVnYWJ5dGVzID0ga2lsb2J5dGVzIC8g
MTAyNDsKLSAgICAgICAgaWYgKGhpZ2hlclJlc29sdXRpb24gfHwgTWF0aC5hYnMobWVnYWJ5dGVz
KSA8IDEwKQotICAgICAgICAgICAgcmV0dXJuIFdJLlVJU3RyaW5nKCIlLjJmIE1CIikuZm9ybWF0
KG1lZ2FieXRlcyk7Ci0gICAgICAgIHJldHVybiBXSS5VSVN0cmluZygiJS4xZiBNQiIpLmZvcm1h
dChtZWdhYnl0ZXMpOwotICAgIH0KLX0pOwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoVWludDMy
QXJyYXksICJpc0xpdHRsZUVuZGlhbiIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIGlmICgiX2lzTGl0dGxlRW5kaWFuIiBpbiB0aGlzKQotICAgICAgICAgICAgcmV0
dXJuIHRoaXMuX2lzTGl0dGxlRW5kaWFuOwotCi0gICAgICAgIHZhciBidWZmZXIgPSBuZXcgQXJy
YXlCdWZmZXIoNCk7Ci0gICAgICAgIHZhciBsb25nRGF0YSA9IG5ldyBVaW50MzJBcnJheShidWZm
ZXIpOwotICAgICAgICB2YXIgZGF0YSA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7Ci0KLSAgICAg
ICAgbG9uZ0RhdGFbMF0gPSAweDBhMGIwYzBkOwotCi0gICAgICAgIHRoaXMuX2lzTGl0dGxlRW5k
aWFuID0gZGF0YVswXSA9PT0gMHgwZCAmJiBkYXRhWzFdID09PSAweDBjICYmIGRhdGFbMl0gPT09
IDB4MGIgJiYgZGF0YVszXSA9PT0gMHgwYTsKLQotICAgICAgICByZXR1cm4gdGhpcy5faXNMaXR0
bGVFbmRpYW47Ci0gICAgfQotfSk7Ci0KLWZ1bmN0aW9uIGlzRW1wdHlPYmplY3Qob2JqZWN0KQot
ewotICAgIGZvciAodmFyIHByb3BlcnR5IGluIG9iamVjdCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJldHVybiB0cnVlOwotfQotCi1mdW5jdGlvbiBpc0VudGVyS2V5KGV2ZW50KQotewot
ICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYW4gSU1FIGV2ZW50LgotICAgIHJldHVybiBldmVudC5r
ZXlDb2RlICE9PSAyMjkgJiYgZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIkVudGVyIjsKLX0KLQot
ZnVuY3Rpb24gcmVzb2x2ZURvdHNJblBhdGgocGF0aCkKLXsKLSAgICBpZiAoIXBhdGgpCi0gICAg
ICAgIHJldHVybiBwYXRoOwotCi0gICAgaWYgKHBhdGguaW5kZXhPZigiLi8iKSA9PT0gLTEpCi0g
ICAgICAgIHJldHVybiBwYXRoOwotCi0gICAgY29uc29sZS5hc3NlcnQocGF0aC5jaGFyQXQoMCkg
PT09ICIvIik7Ci0KLSAgICB2YXIgcmVzdWx0ID0gW107Ci0KLSAgICB2YXIgY29tcG9uZW50cyA9
IHBhdGguc3BsaXQoIi8iKTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbXBvbmVudHMubGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgdmFyIGNvbXBvbmVudCA9IGNvbXBvbmVudHNbaV07Ci0KLSAg
ICAgICAgLy8gU2tpcCBvdmVyICIuLyIuCi0gICAgICAgIGlmIChjb21wb25lbnQgPT09ICIuIikK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8vIFJld2luZCBvbmUgY29tcG9uZW50
IGZvciAiLi4vIi4KLSAgICAgICAgaWYgKGNvbXBvbmVudCA9PT0gIi4uIikgewotICAgICAgICAg
ICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDEpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICByZXN1bHQucG9wKCk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
fQotCi0gICAgICAgIHJlc3VsdC5wdXNoKGNvbXBvbmVudCk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IHJlc3VsdC5qb2luKCIvIik7Ci19Ci0KLWZ1bmN0aW9uIHBhcnNlTUlNRVR5cGUoZnVsbE1pbWVU
eXBlKQotewotICAgIGlmICghZnVsbE1pbWVUeXBlKQotICAgICAgICByZXR1cm4gewotICAgICAg
ICAgICAgdHlwZTogZnVsbE1pbWVUeXBlLAotICAgICAgICAgICAgYm91bmRhcnk6IG51bGwsCi0g
ICAgICAgICAgICBlbmNvZGluZzogbnVsbAotICAgICAgICB9OwotCi0gICAgdmFyIHR5cGVQYXJ0
cyA9IGZ1bGxNaW1lVHlwZS5zcGxpdCgvXHMqO1xzKi8pOwotICAgIGNvbnNvbGUuYXNzZXJ0KHR5
cGVQYXJ0cy5sZW5ndGggPj0gMSk7Ci0KLSAgICB2YXIgdHlwZSA9IHR5cGVQYXJ0c1swXTsKLSAg
ICB2YXIgYm91bmRhcnkgPSBudWxsOwotICAgIHZhciBlbmNvZGluZyA9IG51bGw7Ci0KLSAgICBm
b3IgKHZhciBpID0gMTsgaSA8IHR5cGVQYXJ0cy5sZW5ndGg7ICsraSkgewotICAgICAgICB2YXIg
c3VicGFydHMgPSB0eXBlUGFydHNbaV0uc3BsaXQoL1xzKj1ccyovKTsKLSAgICAgICAgaWYgKHN1
YnBhcnRzLmxlbmd0aCAhPT0gMikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlm
IChzdWJwYXJ0c1swXS50b0xvd2VyQ2FzZSgpID09PSAiYm91bmRhcnkiKQotICAgICAgICAgICAg
Ym91bmRhcnkgPSBzdWJwYXJ0c1sxXTsKLSAgICAgICAgZWxzZSBpZiAoc3VicGFydHNbMF0udG9M
b3dlckNhc2UoKSA9PT0gImNoYXJzZXQiKQotICAgICAgICAgICAgZW5jb2RpbmcgPSBzdWJwYXJ0
c1sxXS5yZXBsYWNlKCJeXCJ8XCIkIiwgIiIpOyAvLyBUcmltIHF1b3Rlcy4KLSAgICB9Ci0KLSAg
ICByZXR1cm4gewotICAgICAgICB0eXBlLAotICAgICAgICBib3VuZGFyeTogYm91bmRhcnkgfHwg
bnVsbCwKLSAgICAgICAgZW5jb2Rpbmc6IGVuY29kaW5nIHx8IG51bGwKLSAgICB9OwotfQotCi1m
dW5jdGlvbiBzaW1wbGVHbG9iU3RyaW5nVG9SZWdFeHAoZ2xvYlN0cmluZywgcmVnRXhwRmxhZ3Mp
Ci17Ci0gICAgLy8gT25seSBzdXBwb3J0cyAiKiIgZ2xvYnMuCi0KLSAgICBpZiAoIWdsb2JTdHJp
bmcpCi0gICAgICAgIHJldHVybiBudWxsOwotCi0gICAgLy8gRXNjYXBlIGV2ZXJ5dGhpbmcgZnJv
bSBTdHJpbmcucHJvdG90eXBlLmVzY2FwZUZvclJlZ0V4cCBleGNlcHQgIioiLgotICAgIHZhciBy
ZWdleFN0cmluZyA9IGdsb2JTdHJpbmcuZXNjYXBlQ2hhcmFjdGVycygiXltde30oKVxcLiQrP3wi
KTsKLQotICAgIC8vIFVuZXNjYXBlIGFsbCBkb3VibHkgZXNjYXBlZCBiYWNrc2xhc2hlcyBpbiBm
cm9udCBvZiBlc2NhcGVkIGFzdGVyaXNrcy4KLSAgICAvLyBTbyAiXFwqIiB3aWxsIGJlY29tZSAi
XCoiIGFnYWluLCB1bmRvaW5nIGVzY2FwZUNoYXJhY3RlcnMgZXNjYXBpbmcgb2YgIlwiLgotICAg
IC8vIFRoaXMgbWFrZXMgIlwqIiBtYXRjaCBhIGxpdGVyYWwgIioiIGluc3RlYWQgb2YgdXNpbmcg
dGhlICIqIiBmb3IgZ2xvYmJpbmcuCi0gICAgcmVnZXhTdHJpbmcgPSByZWdleFN0cmluZy5yZXBs
YWNlKC9cXFxcXCovZywgIlxcKiIpOwotCi0gICAgLy8gVGhlIGZvbGxvd2luZyByZWdleCBkb2Vz
bid0IG1hdGNoIGFuIGFzdGVyaXNrIHRoYXQgaGFzIGEgYmFja3NsYXNoIGluIGZyb250LgotICAg
IC8vIEl0IGFsc28gY2F0Y2hlcyBjb25zZWN1dGl2ZSBhc3Rlcmlza3Mgc28gdGhleSBjb2xsYXBz
ZSBkb3duIHdoZW4gcmVwbGFjZWQuCi0gICAgdmFyIHVuZXNjYXBlZEFzdGVyaXNrUmVnZXggPSAv
KF58W15cXF0pXCorL2c7Ci0gICAgaWYgKHVuZXNjYXBlZEFzdGVyaXNrUmVnZXgudGVzdChnbG9i
U3RyaW5nKSkgewotICAgICAgICAvLyBSZXBsYWNlIGFsbCB1bmVzY2FwZWQgYXN0ZXJpc2tzIHdp
dGggIi4qIi4KLSAgICAgICAgcmVnZXhTdHJpbmcgPSByZWdleFN0cmluZy5yZXBsYWNlKHVuZXNj
YXBlZEFzdGVyaXNrUmVnZXgsICIkMS4qIik7Ci0KLSAgICAgICAgLy8gTWF0Y2ggZWRnZSBib3Vu
ZGFyaWVzIHdoZW4gdGhlcmUgaXMgYW4gYXN0ZXJpc2sgdG8gYmV0dGVyIG1lZXQgdGhlIGV4cGVj
dGF0aW9ucwotICAgICAgICAvLyBvZiB0aGUgdXNlci4gV2hlbiBzb21lb25lIHR5cGVzICIqLmpz
IiB0aGV5IGRvbid0IGV4cGVjdCAiZm9vLmpzb24iIHRvIG1hdGNoLiBUaGV5Ci0gICAgICAgIC8v
IHdvdWxkIG9ubHkgZXhwZWN0IHRoYXQgaWYgdGhleSB0eXBlICIqLmpzKiIuIFdlIHVzZSBcYiAo
aW5zdGVhZCBvZiBeIGFuZCAkKSB0byBhbGxvdwotICAgICAgICAvLyBtYXRjaGVzIGluc2lkZSBw
YXRocyBvciBVUkxzLCBzbyAiYmEqLmpzIiB3aWxsIG1hdGNoICJmb28vYmFyLmpzIiBidXQgbm90
ICJib28vYmJhci5qcyIuCi0gICAgICAgIC8vIFdoZW4gdGhlcmUgaXNuJ3QgYW4gYXN0ZXJpc2sg
dGhlIHJlZ2V4U3RyaW5nIGlzIGp1c3QgYSBzdWJzdHJpbmcgc2VhcmNoLgotICAgICAgICByZWdl
eFN0cmluZyA9ICJcXGIiICsgcmVnZXhTdHJpbmcgKyAiXFxiIjsKLSAgICB9Ci0KLSAgICByZXR1
cm4gbmV3IFJlZ0V4cChyZWdleFN0cmluZywgcmVnRXhwRmxhZ3MpOwotfQotCi1PYmplY3QuZGVm
aW5lUHJvcGVydHkoQXJyYXkucHJvdG90eXBlLCAibG93ZXJCb3VuZCIsCi17Ci0gICAgLy8gUmV0
dXJuIGluZGV4IG9mIHRoZSBsZWZ0bW9zdCBlbGVtZW50IHRoYXQgaXMgZXF1YWwgb3IgZ3JlYXRl
cgotICAgIC8vIHRoYW4gdGhlIHNwZWNpbWVuIG9iamVjdC4gSWYgdGhlcmUncyBubyBzdWNoIGVs
ZW1lbnQgKGkuZS4gYWxsCi0gICAgLy8gZWxlbWVudHMgYXJlIHNtYWxsZXIgdGhhbiB0aGUgc3Bl
Y2ltZW4pIHJldHVybnMgYXJyYXkubGVuZ3RoLgotICAgIC8vIFRoZSBmdW5jdGlvbiB3b3JrcyBm
b3Igc29ydGVkIGFycmF5LgotICAgIHZhbHVlOiBmdW5jdGlvbihvYmplY3QsIGNvbXBhcmF0b3Ip
Ci0gICAgewotICAgICAgICBmdW5jdGlvbiBkZWZhdWx0Q29tcGFyYXRvcihhLCBiKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gYSAtIGI7Ci0gICAgICAgIH0KLSAgICAgICAgY29tcGFy
YXRvciA9IGNvbXBhcmF0b3IgfHwgZGVmYXVsdENvbXBhcmF0b3I7Ci0gICAgICAgIHZhciBsID0g
MDsKLSAgICAgICAgdmFyIHIgPSB0aGlzLmxlbmd0aDsKLSAgICAgICAgd2hpbGUgKGwgPCByKSB7
Ci0gICAgICAgICAgICB2YXIgbSA9IChsICsgcikgPj4gMTsKLSAgICAgICAgICAgIGlmIChjb21w
YXJhdG9yKG9iamVjdCwgdGhpc1ttXSkgPiAwKQotICAgICAgICAgICAgICAgIGwgPSBtICsgMTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByID0gbTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gcjsKLSAgICB9Ci19KTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5
LnByb3RvdHlwZSwgInVwcGVyQm91bmQiLAotewotICAgIC8vIFJldHVybiBpbmRleCBvZiB0aGUg
bGVmdG1vc3QgZWxlbWVudCB0aGF0IGlzIGdyZWF0ZXIKLSAgICAvLyB0aGFuIHRoZSBzcGVjaW1l
biBvYmplY3QuIElmIHRoZXJlJ3Mgbm8gc3VjaCBlbGVtZW50IChpLmUuIGFsbAotICAgIC8vIGVs
ZW1lbnRzIGFyZSBzbWFsbGVyIHRoYW4gdGhlIHNwZWNpbWVuKSByZXR1cm5zIGFycmF5Lmxlbmd0
aC4KLSAgICAvLyBUaGUgZnVuY3Rpb24gd29ya3MgZm9yIHNvcnRlZCBhcnJheS4KLSAgICB2YWx1
ZTogZnVuY3Rpb24ob2JqZWN0LCBjb21wYXJhdG9yKQotICAgIHsKLSAgICAgICAgZnVuY3Rpb24g
ZGVmYXVsdENvbXBhcmF0b3IoYSwgYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEg
LSBiOwotICAgICAgICB9Ci0gICAgICAgIGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yIHx8IGRlZmF1
bHRDb21wYXJhdG9yOwotICAgICAgICB2YXIgbCA9IDA7Ci0gICAgICAgIHZhciByID0gdGhpcy5s
ZW5ndGg7Ci0gICAgICAgIHdoaWxlIChsIDwgcikgewotICAgICAgICAgICAgdmFyIG0gPSAobCAr
IHIpID4+IDE7Ci0gICAgICAgICAgICBpZiAoY29tcGFyYXRvcihvYmplY3QsIHRoaXNbbV0pID49
IDApCi0gICAgICAgICAgICAgICAgbCA9IG0gKyAxOwotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIHIgPSBtOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByOwotICAgIH0KLX0p
OwotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoQXJyYXkucHJvdG90eXBlLCAiYmluYXJ5SW5kZXhP
ZiIsCi17Ci0gICAgdmFsdWU6IGZ1bmN0aW9uKHZhbHVlLCBjb21wYXJhdG9yKQotICAgIHsKLSAg
ICAgICAgdmFyIGluZGV4ID0gdGhpcy5sb3dlckJvdW5kKHZhbHVlLCBjb21wYXJhdG9yKTsKLSAg
ICAgICAgcmV0dXJuIGluZGV4IDwgdGhpcy5sZW5ndGggJiYgY29tcGFyYXRvcih2YWx1ZSwgdGhp
c1tpbmRleF0pID09PSAwID8gaW5kZXggOiAtMTsKLSAgICB9Ci19KTsKLQotKGZ1bmN0aW9uKCkg
ewotICAgIGNvbnN0IGRlYm91bmNlU3ltYm9sID0gU3ltYm9sKCJmdW5jdGlvbi1kZWJvdW5jZS10
aW1lb3V0Iik7Ci0gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEZ1bmN0aW9uLnByb3RvdHlwZSwg
ImRlYm91bmNlIiwKLSAgICB7Ci0gICAgICAgIHZhbHVlOiBmdW5jdGlvbihkZWxheSwgdGhpc09i
amVjdCkKLSAgICAgICAgewotICAgICAgICAgICAgbGV0IGNhbGxiYWNrID0gdGhpcy5iaW5kKHRo
aXNPYmplY3QpOwotICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ICAgIGNsZWFyVGltZW91dChjYWxsYmFja1tkZWJvdW5jZVN5bWJvbF0pOwotICAgICAgICAgICAg
ICAgIGxldCBhcmdzID0gYXJndW1lbnRzOwotICAgICAgICAgICAgICAgIGNhbGxiYWNrW2RlYm91
bmNlU3ltYm9sXSA9IHNldFRpbWVvdXQoKCkgPT4gewotICAgICAgICAgICAgICAgICAgICBjYWxs
YmFjay5hcHBseShudWxsLCBhcmdzKTsKLSAgICAgICAgICAgICAgICB9LCBkZWxheSk7Ci0gICAg
ICAgICAgICB9OwotICAgICAgICB9Ci0gICAgfSk7Ci19KSgpOwotCi1mdW5jdGlvbiBhcHBlbmRX
ZWJJbnNwZWN0b3JTb3VyY2VVUkwoc3RyaW5nKQotewotICAgIHJldHVybiAiXG4vLyMgc291cmNl
VVJMPV9fV2ViSW5zcGVjdG9ySW50ZXJuYWxfX1xuIiArIHN0cmluZzsKLX0KLQotZnVuY3Rpb24g
aXNXZWJJbnNwZWN0b3JJbnRlcm5hbFNjcmlwdCh1cmwpCi17Ci0gICAgcmV0dXJuIHVybCA9PT0g
Il9fV2ViSW5zcGVjdG9ySW50ZXJuYWxfXyI7Ci19Ci0KLWZ1bmN0aW9uIGlzV2ViS2l0SW50ZXJu
YWxTY3JpcHQodXJsKQotewotICAgIHJldHVybiB1cmwgJiYgdXJsLnN0YXJ0c1dpdGgoIl9fV2Vi
IikgJiYgdXJsLmVuZHNXaXRoKCJfXyIpOwotfQotCi1mdW5jdGlvbiBpc0Z1bmN0aW9uU3RyaW5n
TmF0aXZlQ29kZShzdHIpCi17Ci0gICAgcmV0dXJuIHN0ci5lbmRzV2l0aCgie1xuICAgIFtuYXRp
dmUgY29kZV1cbn0iKTsKLX0KLQotZnVuY3Rpb24gZG91YmxlUXVvdGVkU3RyaW5nKHN0cikKLXsK
LSAgICByZXR1cm4gIlwiIiArIHN0ci5yZXBsYWNlKC9cXC9nLCAiXFxcXCIpLnJlcGxhY2UoLyIv
ZywgIlxcXCIiKSArICJcIiI7Ci19Ci0KLWZ1bmN0aW9uIGluc2VydGlvbkluZGV4Rm9yT2JqZWN0
SW5MaXN0U29ydGVkQnlGdW5jdGlvbihvYmplY3QsIGxpc3QsIGNvbXBhcmF0b3IsIGluc2VydGlv
bkluZGV4QWZ0ZXIpCi17Ci0gICAgaWYgKGluc2VydGlvbkluZGV4QWZ0ZXIpIHsKLSAgICAgICAg
cmV0dXJuIGxpc3QudXBwZXJCb3VuZChvYmplY3QsIGNvbXBhcmF0b3IpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIHJldHVybiBsaXN0Lmxvd2VyQm91bmQob2JqZWN0LCBjb21wYXJhdG9yKTsKLSAg
ICB9Ci19Ci0KLWZ1bmN0aW9uIGluc2VydE9iamVjdEludG9Tb3J0ZWRBcnJheShvYmplY3QsIGFy
cmF5LCBjb21wYXJhdG9yKQotewotICAgIGFycmF5LnNwbGljZShpbnNlcnRpb25JbmRleEZvck9i
amVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24ob2JqZWN0LCBhcnJheSwgY29tcGFyYXRvciksIDAs
IG9iamVjdCk7Ci19Ci0KLWZ1bmN0aW9uIGRlY29kZUJhc2U2NFRvQmxvYihiYXNlNjREYXRhLCBt
aW1lVHlwZSkKLXsKLSAgICBtaW1lVHlwZSA9IG1pbWVUeXBlIHx8ICcnOwotCi0gICAgY29uc3Qg
c2xpY2VTaXplID0gMTAyNDsKLSAgICB2YXIgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKGJhc2U2NERh
dGEpOwotICAgIHZhciBieXRlc0xlbmd0aCA9IGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aDsKLSAgICB2
YXIgc2xpY2VzQ291bnQgPSBNYXRoLmNlaWwoYnl0ZXNMZW5ndGggLyBzbGljZVNpemUpOwotICAg
IHZhciBieXRlQXJyYXlzID0gbmV3IEFycmF5KHNsaWNlc0NvdW50KTsKLQotICAgIGZvciAodmFy
IHNsaWNlSW5kZXggPSAwOyBzbGljZUluZGV4IDwgc2xpY2VzQ291bnQ7ICsrc2xpY2VJbmRleCkg
ewotICAgICAgICB2YXIgYmVnaW4gPSBzbGljZUluZGV4ICogc2xpY2VTaXplOwotICAgICAgICB2
YXIgZW5kID0gTWF0aC5taW4oYmVnaW4gKyBzbGljZVNpemUsIGJ5dGVzTGVuZ3RoKTsKLQotICAg
ICAgICB2YXIgYnl0ZXMgPSBuZXcgQXJyYXkoZW5kIC0gYmVnaW4pOwotICAgICAgICBmb3IgKHZh
ciBvZmZzZXQgPSBiZWdpbiwgaSA9IDA7IG9mZnNldCA8IGVuZDsgKytpLCArK29mZnNldCkKLSAg
ICAgICAgICAgIGJ5dGVzW2ldID0gYnl0ZUNoYXJhY3RlcnNbb2Zmc2V0XS5jaGFyQ29kZUF0KDAp
OwotCi0gICAgICAgIGJ5dGVBcnJheXNbc2xpY2VJbmRleF0gPSBuZXcgVWludDhBcnJheShieXRl
cyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG5ldyBCbG9iKGJ5dGVBcnJheXMsIHsKLSAgICAgICAg
dHlwZTogbWltZVR5cGUKLSAgICB9KTsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3NhbXBsZS13ZWJpbnNw
ZWN0b3Itb2JqZWN0LWV4cGVjdGVkLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRp
bmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvc2FtcGxlLXdlYmluc3BlY3Rvci1vYmplY3Qt
ZXhwZWN0ZWQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczYjYwMTVmMDZmZTg3
MTQ4NWQ5YTUxYmFjZDc5ZTA5YzFjOGRjOGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3Vy
Y2VzL2phdmFzY3JpcHQtdGVzdHMvc2FtcGxlLXdlYmluc3BlY3Rvci1vYmplY3QtZXhwZWN0ZWQu
anMKKysrIC9kZXYvbnVsbApAQCAtMSwxNTggKzAsMCBAQAotV0kuT2JqZWN0ID0gY2xhc3MgV2Vi
SW5zcGVjdG9yT2JqZWN0Ci17Ci0gICAgY29uc3RydWN0b3IoKQotICAgIHsKLSAgICAgICAgdGhp
cy5fbGlzdGVuZXJzID0gbnVsbDsKLSAgICB9Ci0gICAgc3RhdGljIGFkZEV2ZW50TGlzdGVuZXIo
ZXZlbnRUeXBlLCBsaXN0ZW5lciwgdGhpc09iamVjdCkKLSAgICB7Ci0gICAgICAgIHRoaXNPYmpl
Y3QgPSB0aGlzT2JqZWN0IHx8IG51bGw7Ci0gICAgICAgIGlmICghZXZlbnRUeXBlKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoIWxpc3RlbmVyKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBpZiAoIXRoaXMuX2xpc3RlbmVycykKLSAgICAgICAgICAgIHRoaXMuX2xpc3Rl
bmVycyA9IG5ldyBNYXAoKTsKLSAgICAgICAgbGV0IGxpc3RlbmVyc1RhYmxlID0gdGhpcy5fbGlz
dGVuZXJzLmdldChldmVudFR5cGUpOwotICAgICAgICBpZiAoIWxpc3RlbmVyc1RhYmxlKSB7Ci0g
ICAgICAgICAgICBsaXN0ZW5lcnNUYWJsZSA9IG5ldyBMaXN0TXVsdGltYXAoKTsKLSAgICAgICAg
ICAgIHRoaXMuX2xpc3RlbmVycy5zZXQoZXZlbnRUeXBlLCBsaXN0ZW5lcnNUYWJsZSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgbGlzdGVuZXJzVGFibGUuYWRkKHRoaXNPYmplY3QsIGxpc3RlbmVyKTsK
LSAgICB9Ci0gICAgc3RhdGljIHNpbmdsZUZpcmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlz
dGVuZXIsIHRoaXNPYmplY3QpCi0gICAgewotICAgICAgICBsZXQgd3JhcHBlZENhbGxiYWNrID0g
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRU
eXBlLCB3cmFwcGVkQ2FsbGJhY2ssIG51bGwpOwotICAgICAgICAgICAgbGlzdGVuZXIuYXBwbHko
dGhpc09iamVjdCwgYXJndW1lbnRzKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpOwotICAgICAgICB0
aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCB3cmFwcGVkQ2FsbGJhY2ssIG51bGwpOwot
ICAgICAgICByZXR1cm4gd3JhcHBlZENhbGxiYWNrOwotICAgIH0KLSAgICBzdGF0aWMgcmVtb3Zl
RXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB0aGlzT2JqZWN0KQotICAgIHsKLSAg
ICAgICAgZXZlbnRUeXBlID0gZXZlbnRUeXBlIHx8IG51bGw7Ci0gICAgICAgIGxpc3RlbmVyID0g
bGlzdGVuZXIgfHwgbnVsbDsKLSAgICAgICAgdGhpc09iamVjdCA9IHRoaXNPYmplY3QgfHwgbnVs
bDsKLSAgICAgICAgaWYgKCF0aGlzLl9saXN0ZW5lcnMpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIGlmICh0aGlzT2JqZWN0ICYmICFldmVudFR5cGUpIHsKLSAgICAgICAgICAgIHRoaXMu
X2xpc3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9uKGxpc3RlbmVyc1RhYmxlKSB7Ci0gICAgICAgICAg
ICAgICAgbGV0IGxpc3RlbmVyUGFpcnMgPSBsaXN0ZW5lcnNUYWJsZS50b0FycmF5KCk7Ci0gICAg
ICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbmd0aCA9IGxpc3RlbmVyUGFpcnMubGVuZ3Ro
OyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IGV4aXN0aW5nVGhp
c09iamVjdCA9IGxpc3RlbmVyUGFpcnNbaV1bMF07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChl
eGlzdGluZ1RoaXNPYmplY3QgPT09IHRoaXNPYmplY3QpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBsaXN0ZW5lcnNUYWJsZS5kZWxldGVBbGwoZXhpc3RpbmdUaGlzT2JqZWN0KTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgICAgICBsZXQgbGlzdGVuZXJzVGFibGUgPSB0aGlzLl9saXN0ZW5lcnMuZ2V0KGV2ZW50
VHlwZSk7Ci0gICAgICAgIGlmICghbGlzdGVuZXJzVGFibGUgfHwgbGlzdGVuZXJzVGFibGUuc2l6
ZSA9PT0gMCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbGV0IGRpZERlbGV0ZSA9IGxp
c3RlbmVyc1RhYmxlLmRlbGV0ZSh0aGlzT2JqZWN0LCBsaXN0ZW5lcik7Ci0gICAgfQotICAgIHN0
YXRpYyBoYXNFdmVudExpc3RlbmVycyhldmVudFR5cGUpCi0gICAgewotICAgICAgICBpZiAoIXRo
aXMuX2xpc3RlbmVycykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbGV0IGxp
c3RlbmVyc1RhYmxlID0gdGhpcy5fbGlzdGVuZXJzLmdldChldmVudFR5cGUpOwotICAgICAgICBy
ZXR1cm4gbGlzdGVuZXJzVGFibGUgJiYgbGlzdGVuZXJzVGFibGUuc2l6ZSA+IDA7Ci0gICAgfQot
ICAgIHN0YXRpYyByZXRhaW5lZE9iamVjdHNXaXRoUHJvdG90eXBlKHByb3RvKQotICAgIHsKLSAg
ICAgICAgbGV0IHJlc3VsdHMgPSBuZXcgU2V0OwotICAgICAgICBpZiAodGhpcy5fbGlzdGVuZXJz
KSB7Ci0gICAgICAgICAgICB0aGlzLl9saXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlvbihsaXN0ZW5l
cnNUYWJsZSwgZXZlbnRUeXBlKSB7Ci0gICAgICAgICAgICAgICAgbGlzdGVuZXJzVGFibGUuZm9y
RWFjaChmdW5jdGlvbihwYWlyKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCB0aGlzT2JqZWN0
ID0gcGFpclswXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QgaW5zdGFuY2Vv
ZiBwcm90bykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuYWRkKHRoaXNPYmplY3Qp
OwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIHJlc3VsdHM7Ci0gICAgfQotICAgIGFkZEV2ZW50TGlzdGVuZXIoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIFdJLk9iamVjdC5hZGRFdmVudExpc3RlbmVyLmFwcGx5KHRoaXMsIGFy
Z3VtZW50cyk7Ci0gICAgfQotICAgIHNpbmdsZUZpcmVFdmVudExpc3RlbmVyKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBXSS5PYmplY3Quc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIuYXBwbHkodGhp
cywgYXJndW1lbnRzKTsKLSAgICB9Ci0gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcigpCi0gICAgewot
ICAgICAgICByZXR1cm4gV0kuT2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIuYXBwbHkodGhpcywg
YXJndW1lbnRzKTsKLSAgICB9Ci0gICAgaGFzRXZlbnRMaXN0ZW5lcnMoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIFdJLk9iamVjdC5oYXNFdmVudExpc3RlbmVycy5hcHBseSh0aGlzLCBhcmd1bWVu
dHMpOwotICAgIH0KLSAgICByZXRhaW5lZE9iamVjdHNXaXRoUHJvdG90eXBlKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBXSS5PYmplY3QucmV0YWluZWRPYmplY3RzV2l0aFByb3RvdHlwZS5hcHBs
eSh0aGlzLCBhcmd1bWVudHMpOwotICAgIH0KLSAgICBkaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
ZXZlbnRUeXBlLCBldmVudERhdGEpCi0gICAgewotICAgICAgICBsZXQgZXZlbnQgPSBuZXcgV0ku
RXZlbnQodGhpcywgZXZlbnRUeXBlLCBldmVudERhdGEpOwotICAgICAgICBmdW5jdGlvbiBkaXNw
YXRjaChvYmplY3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghb2JqZWN0IHx8IGV2ZW50
Ll9zdG9wcGVkUHJvcGFnYXRpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgbGV0IGxpc3RlbmVyVHlwZXNNYXAgPSBvYmplY3QuX2xpc3RlbmVyczsKLSAgICAgICAgICAg
IGlmICghbGlzdGVuZXJUeXBlc01hcCB8fCAhb2JqZWN0Lmhhc093blByb3BlcnR5KCJfbGlzdGVu
ZXJzIikpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbGV0IGxpc3RlbmVy
c1RhYmxlID0gbGlzdGVuZXJUeXBlc01hcC5nZXQoZXZlbnRUeXBlKTsKLSAgICAgICAgICAgIGlm
ICghbGlzdGVuZXJzVGFibGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
bGV0IGxpc3RlbmVycyA9IGxpc3RlbmVyc1RhYmxlLnRvQXJyYXkoKTsKLSAgICAgICAgICAgIGZv
ciAobGV0IGkgPSAwLCBsZW5ndGggPSBsaXN0ZW5lcnMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgICAgICAgICBsZXQgW3RoaXNPYmplY3QsIGxpc3RlbmVyXSA9IGxpc3RlbmVy
c1tpXTsKLSAgICAgICAgICAgICAgICBsaXN0ZW5lci5jYWxsKHRoaXNPYmplY3QsIGV2ZW50KTsK
LSAgICAgICAgICAgICAgICBpZiAoZXZlbnQuX3N0b3BwZWRQcm9wYWdhdGlvbikKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZGlz
cGF0Y2godGhpcyk7Ci0gICAgICAgIGV2ZW50Ll9zdG9wcGVkUHJvcGFnYXRpb24gPSBmYWxzZTsK
LSAgICAgICAgbGV0IGNvbnN0cnVjdG9yID0gdGhpcy5jb25zdHJ1Y3RvcjsKLSAgICAgICAgd2hp
bGUgKGNvbnN0cnVjdG9yKSB7Ci0gICAgICAgICAgICBkaXNwYXRjaChjb25zdHJ1Y3Rvcik7Ci0g
ICAgICAgICAgICBpZiAoIWNvbnN0cnVjdG9yLnByb3RvdHlwZS5fX3Byb3RvX18pCi0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yLnBy
b3RvdHlwZS5fX3Byb3RvX18uY29uc3RydWN0b3I7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQ7Ci0gICAgfQotfQotOwotV0kuRXZlbnQgPSBjbGFzcyBF
dmVudAotewotICAgIGNvbnN0cnVjdG9yKHRhcmdldCwgdHlwZSwgZGF0YSkKLSAgICB7Ci0gICAg
ICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0OwotICAgICAgICB0aGlzLnR5cGUgPSB0eXBlOwotICAg
ICAgICB0aGlzLmRhdGEgPSBkYXRhOwotICAgICAgICB0aGlzLmRlZmF1bHRQcmV2ZW50ZWQgPSBm
YWxzZTsKLSAgICAgICAgdGhpcy5fc3RvcHBlZFByb3BhZ2F0aW9uID0gZmFsc2U7Ci0gICAgfQot
ICAgIHN0b3BQcm9wYWdhdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9zdG9wcGVkUHJvcGFn
YXRpb24gPSB0cnVlOwotICAgIH0KLSAgICBwcmV2ZW50RGVmYXVsdCgpCi0gICAgewotICAgICAg
ICB0aGlzLmRlZmF1bHRQcmV2ZW50ZWQgPSB0cnVlOwotICAgIH0KLX0KLTsKLVdJLm5vdGlmaWNh
dGlvbnMgPSBuZXcgV0kuT2JqZWN0OwotV0kuTm90aWZpY2F0aW9uID0gewotICAgIEdsb2JhbE1v
ZGlmaWVyS2V5c0RpZENoYW5nZTogImdsb2JhbC1tb2RpZmllcnMtZGlkLWNoYW5nZSIsCi0gICAg
UGFnZUFyY2hpdmVTdGFydGVkOiAicGFnZS1hcmNoaXZlLXN0YXJ0ZWQiLAotICAgIFBhZ2VBcmNo
aXZlRW5kZWQ6ICJwYWdlLWFyY2hpdmUtZW5kZWQiLAotICAgIEV4dHJhRG9tYWluc0FjdGl2YXRl
ZDogImV4dHJhLWRvbWFpbnMtYWN0aXZhdGVkIiwKLSAgICBUYWJUeXBlc0NoYW5nZWQ6ICJ0YWIt
dHlwZXMtY2hhbmdlZCIsCi0gICAgRGVidWdVSUVuYWJsZWREaWRDaGFuZ2U6ICJkZWJ1Zy11aS1l
bmFibGVkLWRpZC1jaGFuZ2UiLAotfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3N3aXRjaC1jYXNlLWRlZmF1
bHQtZXhwZWN0ZWQuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJj
ZXMvamF2YXNjcmlwdC10ZXN0cy9zd2l0Y2gtY2FzZS1kZWZhdWx0LWV4cGVjdGVkLmpzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjcyMjQ3N2MzMmQxYWY0ZWQxOTAzYzZkYWUxOWFl
NGEzYzE0MTYwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRl
c3RzL3N3aXRjaC1jYXNlLWRlZmF1bHQtZXhwZWN0ZWQuanMKKysrIC9kZXYvbnVsbApAQCAtMSw5
MyArMCwwIEBACi1zd2l0Y2ggKDEpIHsKLX0KLQotc3dpdGNoICgxKSB7Ci19Ci0yCi0KLXN3aXRj
aCAoeCkgewotY2FzZSAxOgotfQotCi1zd2l0Y2ggKHgpIHsKLWNhc2UgMToKLSAgICA7Ci19Ci0K
LXN3aXRjaCAoeCkgewotY2FzZSAxOgotICAgIGJyZWFrCi19Ci0KLXN3aXRjaCAoeCkgewotY2Fz
ZSAxOgotICAgIGJyZWFrOwotfQotCi1zd2l0Y2ggKHgpIHsKLWRlZmF1bHQ6Ci19Ci0KLXN3aXRj
aCAoeCkgewotZGVmYXVsdDoKLSAgICA7Ci19Ci0KLXN3aXRjaCAoeCkgewotZGVmYXVsdDoKLSAg
ICBicmVhawotfQotCi1zd2l0Y2ggKHgpIHsKLWNhc2UgMToKLWNhc2UgMjoKLSAgICBicmVhazsK
LX0KLQotc3dpdGNoICh4KSB7Ci1jYXNlIDE6Ci0gICAgYnJlYWs7Ci1jYXNlIDI6Ci0gICAgYnJl
YWs7Ci19Ci0KLXN3aXRjaCAoeCkgewotY2FzZSAxOgotICAgIGJyZWFrOwotY2FzZSAyOgotICAg
IGJyZWFrOwotZGVmYXVsdDoKLSAgICBicmVhazsKLX0KLQotc3dpdGNoICh4KSB7Ci1jYXNlICh4
KToKLSAgICBicmVhazsKLWNhc2UgInRlc3QiOgotICAgIGJyZWFrOwotZGVmYXVsdDoKLSAgICBi
cmVhazsKLX0KLQotc3dpdGNoICh4KSB7Ci1jYXNlIDE6Ci0gICAgc3dpdGNoICh5KSB7Ci0gICAg
Y2FzZSAyOgotICAgIGNhc2UgMzoKLSAgICAgICAgdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ZGVmYXVsdDoKLSAgICAgICAgZmFsc2U7Ci0gICAgICAgIGJyZWFrCi0gICAgfQotICAgIGJyZWFr
OwotY2FzZSA0OgotICAgIHRydWU7Ci0gICAgYnJlYWs7Ci19Ci0KLS8vIEZJWE1FOiBQb29yLgot
c3dpdGNoICgoeCkgKSB7Ci1jYXNlIDE6Ci0gICAgOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvdGVtcGxh
dGUtc3RyaW5ncy1leHBlY3RlZC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5n
L3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3RlbXBsYXRlLXN0cmluZ3MtZXhwZWN0ZWQuanMK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1MmYzZGRhYTgyYzkxMzE0MWExZDZkNTc0
MWMxNjEyNTE0YjkzNzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3Jp
cHQtdGVzdHMvdGVtcGxhdGUtc3RyaW5ncy1leHBlY3RlZC5qcworKysgL2Rldi9udWxsCkBAIC0x
LDIxICswLDAgQEAKLWB0ZW1wbGF0ZSBzdHJpbmdgCi1gJHsxICsgMX1gCi1gJHsxICsgMX1gCi1g
YmVmb3JlICR7MSArIDF9IGFmdGVyYAotYGJlZm9yZSAke2BuZXN0ZWQgJHsxICsgMX1gfSBhZnRl
cmAKLWBiZWZvcmUgJHtgbmVzdGVkICR7MSArIDF9YH0gYWZ0ZXJgCi0KLXRhZ2B0YWdnZWQgdGVt
cGxhdGUgc3RyaW5nYAotdGFnYHRhZ2dlZCB0ZW1wbGF0ZSBzdHJpbmdgCi10YWdgYmVmb3JlICR7
MSArIDF9IGFmdGVyYAotCi1gCi0gICAgYmVmb3JlICR7MSArIDF9IGFmdGVyCi0gICAgYmVmb3Jl
ICR7eH0gYWZ0ZXIKLSAgICBiZWZvcmUgJHtmdW5jKCl9IGFmdGVyCi0gICAgYmVmb3JlICR7e2E6
IDF9fSBhZnRlcgotICAgIGJlZm9yZSAke1sxXX0gYWZ0ZXIKLSAgICBiZWZvcmUgJHsKLXkKLX0g
YWZ0ZXIKLWAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jl
c291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3Rlcm5hcnktZXhwcmVzc2lvbnMtZXhwZWN0ZWQuanMg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10
ZXN0cy90ZXJuYXJ5LWV4cHJlc3Npb25zLWV4cGVjdGVkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1NjE4MjA2OTNjMmNmNzY2M2ZlNGVkYjY4Y2Q4ZmUxZWU5OTFmMjdjLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3Rlcm5hcnktZXhw
cmVzc2lvbnMtZXhwZWN0ZWQuanMKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLTEgPyAy
IDogMzsKLSgxKSA/IDIgOiAzOwotMSA/ICgyKSA6IDM7Ci0xID8gMiA6ICgzKTsKLSgxKSA/ICgy
KSA6ICgzKTsKLTEgPyAyID8gMyA6IDQgOiA1OwotCi1vID0gYSAmJiBiID8gYyA6IGQ7Ci1vID0g
KGEgJiYgYikgPyBjIDogZDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3Jt
YXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3RyeS1jYXRjaC1maW5hbGx5LXN0YXRl
bWVudHMtZXhwZWN0ZWQuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNv
dXJjZXMvamF2YXNjcmlwdC10ZXN0cy90cnktY2F0Y2gtZmluYWxseS1zdGF0ZW1lbnRzLWV4cGVj
dGVkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTQ4NTkzY2E0MjYwODAzODA2
ZmE3NWYyMzUyN2RiMGQ5MDFiNjA5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9q
YXZhc2NyaXB0LXRlc3RzL3RyeS1jYXRjaC1maW5hbGx5LXN0YXRlbWVudHMtZXhwZWN0ZWQuanMK
KysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi10cnkge30gY2F0Y2gge30KLXRyeSB7fSBj
YXRjaCB7fSBmaW5hbGx5IHt9Ci0KLXRyeSB7Ci0gICAgMQotfSBjYXRjaCB7fQotdHJ5IHsKLSAg
ICAxCi19IGNhdGNoIHt9IGZpbmFsbHkge30KLXRyeSB7Ci0gICAgMQotfSBjYXRjaCB7Ci0gICAg
MgotfSBmaW5hbGx5IHt9Ci10cnkgewotICAgIDEKLX0gY2F0Y2ggewotICAgIDIKLX0gZmluYWxs
eSB7Ci0gICAgMwotfQotCi10cnkge30gY2F0Y2ggewotICAgIDIKLX0gZmluYWxseSB7fQotdHJ5
IHt9IGNhdGNoIHt9IGZpbmFsbHkgewotICAgIDMKLX0KLQotdHJ5IHt9IGNhdGNoIChlKSB7fQot
dHJ5IHt9IGNhdGNoIChlKSB7fSBmaW5hbGx5IHt9Ci0KLXRyeSB7Ci0gICAgMQotfSBjYXRjaCAo
ZSkge30KLXRyeSB7Ci0gICAgMQotfSBjYXRjaCAoZSkge30gZmluYWxseSB7fQotCi10cnkgewot
ICAgIDEKLX0gY2F0Y2ggKGUpIHsKLSAgICAxCi19Ci10cnkgewotICAgIDEKLX0gY2F0Y2ggKGUp
IHsKLSAgICAxCi19IGZpbmFsbHkge30KLQotdHJ5IHsKLSAgICAxCi19IGNhdGNoIChlKSB7Ci0g
ICAgMQotfSBmaW5hbGx5IHsKLSAgICAxCi19Ci0KLXRyeSB7fSBjYXRjaCAoZSkgewotICAgIDEK
LX0KLXRyeSB7fSBjYXRjaCAoZSkgewotICAgIDEKLX0gZmluYWxseSB7fQotCi10cnkge30gY2F0
Y2ggKGUpIHt9IGZpbmFsbHkgewotICAgIDEKLX0KLQotdHJ5IHt9IGNhdGNoIChlKSB7fSBmaW5h
bGx5IHt9Ci10cnkge30gY2F0Y2ggKGUpIHt9IGZpbmFsbHkge30KLQotdHJ5IHsKLSAgICAxCi19
IGNhdGNoIChlKSB7Ci0gICAgMQotfSBmaW5hbGx5IHsKLSAgICAxCi19Ci10cnkgewotICAgIDIK
LX0gY2F0Y2ggKGUpIHsKLSAgICAyCi19IGZpbmFsbHkgewotICAgIDIKLX0KLQotdGhyb3cgYSgp
LCBiKCksIGMoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5n
L3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3VuYXJ5LWJpbmFyeS1leHByZXNzaW9ucy1leHBl
Y3RlZC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZh
c2NyaXB0LXRlc3RzL3VuYXJ5LWJpbmFyeS1leHByZXNzaW9ucy1leHBlY3RlZC5qcwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdiZTQ2NzZhNTVlOGJlOGIxZjlkYWY0OGM3YjQyYWE1
ODBhYWRhMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0
cy91bmFyeS1iaW5hcnktZXhwcmVzc2lvbnMtZXhwZWN0ZWQuanMKKysrIC9kZXYvbnVsbApAQCAt
MSw3NiArMCwwIEBACi0rMTsKLS0xOwotfjE7Ci0hMTsKLSEhMTsKLTEgKyAxIC0gMSAqIDEgLyAx
ICUgMTsKLTEuMiArIDEuMiAtIDEuMiAqIDEuMiAvIDEuMiAlIDEuMjsKLSgxICsgMSAtIDEgKiAx
IC8gMSAlIDEpOwotKDEpICsgKDEpIC0gKDEpICogKDEpIC8gKDEpICUgKDEpOwotKygxKTsKLStz
OwotLXM7Ci1+czsKLXgrKzsKLXgtLTsKLSsreDsKLS0teDsKLXggPSAxOwoteCA9IDFlMjsKLXgg
PSAxICsgMTsKLXggPSAxZTIgKyAxZTI7Ci14ID0geCArIDE7Ci14ID0geCA9IHg7Ci14ID0geFsx
XSArIDE7Ci14ID0gWzFdOwoteCA9ICgxKTsKLXggPSAocyk7Ci14ID0gWzEsIDEsIHNdOwotZm9v
KDEsIDEsIHMpOwoteCA9IFsxICsgMSAtIDEgKiAxIC8gMSAlIDEsICsxLCAxIC0gMSwgLTEsIH4x
LCAtcywgcyArIDEsIHMgLSAxLCBhWzFdICsgMSwgYVsxXSAtIDFdOwotZm9vKDEgKyAxIC0gMSAq
IDEgLyAxICUgMSwgKzEsIDEgLSAxLCAtMSwgfjEsIC1zLCBzICsgMSwgcyAtIDEsIGFbMV0gKyAx
LCBhWzFdIC0gMSk7Ci14ID0gWy0xICsgMSAqIDEgLyAxICUgMV07Ci14ID0gKC0xICsgMSAqIDEg
LyAxICUgMSk7Ci14ID0gMSA/ICsxIDogLXM7Ci14ID0gKDEgPyArMSA6IC1zKTsKLXggPSBbMSA/
IC0xIDogK3NdOwoteCA9IHsKLSAgICBhOiAtMSwKLSAgICBiOiArMSwKLSAgICBjOiAxIC0gMSwK
LSAgICBkOiAxLAotICAgIHM6IHMKLX07Ci14ID0geCAqKiAyOwotCi1hIDwgYjsKLWEgPiBiOwot
YSA8PSBiOwotYSA+PSBiOwotYSA9PSBiOwotYSAhPSBiOwotYSA9PT0gYjsKLWEgIT09IGI7Ci0h
YSAhPSAhYjsKLSEhYSAhPSAhIWI7Ci0KLXggKz0geDsKLXggKj0geDsKLXggPDw9IHg7Ci14ICoq
PSB4OwoteCAlPSB4OwotCi12b2lkIDA7Ci12b2lkICgwKTsKLXZvaWQgKDApOwotdHlwZW9mIHg7
Ci10eXBlb2YgKHgpOwoteCBpbnN0YW5jZW9mIHg7Ci14IGluc3RhbmNlb2YgKHgpOwotCi0vLyBF
UzIwMjAgLSBCaWdJbnQKLTFuICsgMm4gLSAzbiAqIDRuIC8gNW4gJSA2bjsKLTEyM24gPT09IDA7
Ci0wID09PSAxMjNuOwotKzEyM24gPT09IC0xMjNuOwotLTEyM24gPT09ICsxMjNuOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVzb3VyY2VzL2phdmFzY3Jp
cHQtdGVzdHMvdmFyaWFibGUtZGVjbGFyYXRpb24tZXhwZWN0ZWQuanMgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy92YXJpYWJsZS1k
ZWNsYXJhdGlvbi1leHBlY3RlZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU1
YmM1Njc3OGYwOTNlNzljMWZkYTVmNjBhODcwZGQ5YzVjMjU4ZC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0
dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy92YXJpYWJsZS1kZWNsYXJhdGlvbi1leHBl
Y3RlZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLXZhciBhOwotdmFyIGEgPSAx
OwotdmFyIGEsCi0gICAgYjsKLXZhciBhID0gMSwKLSAgICBiOwotdmFyIGEsCi0gICAgYiA9IDE7
Ci12YXIgYSA9IDEsCi0gICAgYiA9IDI7Ci0KLWxldCBhOwotbGV0IGEgPSAxOwotbGV0IGEsCi0g
ICAgYjsKLWxldCBhID0gMSwKLSAgICBiOwotbGV0IGEsCi0gICAgYiA9IDE7Ci1sZXQgYSA9IDEs
Ci0gICAgYiA9IDI7Ci0KLWNvbnN0IGEgPSAxOwotY29uc3QgYSA9IDEsCi0gICAgYiA9IDI7Ci0K
LXZhciBhID0gewotICAgIGE6IDEsCi0gICAgYjogMgotfTsKLQotdmFyIGEgPSB7Ci0gICAgICAg
IGE6IDEsCi0gICAgICAgIGI6IDIKLSAgICB9LAotICAgIGIgPSB7Ci0gICAgICAgIHg6IDEsCi0g
ICAgICAgIHk6IDIKLSAgICB9LAotICAgIGMgPSBbMSwgMiwgM10sCi0gICAgZCA9IC9yZWdleC8s
Ci0gICAgZSA9IHRydWU7Ci0KLS8vIERlc3RydWN0dXJpbmcKLQotdmFyIHthbHBoYTogYSwgYmV0
YToge2IsIGdhbW1hOiBjfSwgY2x1YjogW2QsIGVdfSA9IG87Ci12YXIge2FscGhhOiBhLCBiZXRh
OiB7YiwgZ2FtbWE6IGN9LCBjbHViOiBbZCwgZV19ID0gewotICAgIGFscGhhOiAxLAotICAgIGJl
dGE6IHsKLSAgICAgICAgYjogMiwKLSAgICAgICAgZ2FtbWE6IDMKLSAgICB9LAotICAgIGNsdWI6
IFs0LCA1XQotfTsKLXZhciB7dHlwZSwgLi4ucmVzdH0gPSB7Ci0gICAgdHlwZTogIkNvY29hIiwK
LSAgICB0YXN0ZTogIlN3ZWV0IgotfTsKLXZhciB7Li4ucmVzdH0gPSB7Ci0gICAgYTogMSwKLSAg
ICBiOiAyCi19OwotCi12YXIgW2EsIGJdID0gWzAsIDFdOwotdmFyIFthLCBiLCAuLi5yZXN0XSA9
IFswLCAxLCAyXTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5n
L3Jlc291cmNlcy9qYXZhc2NyaXB0LXRlc3RzL3doaWxlLXN0YXRlbWVudC1leHBlY3RlZC5qcyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9mb3JtYXR0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0LXRl
c3RzL3doaWxlLXN0YXRlbWVudC1leHBlY3RlZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzIyMDI0MDM2ZTZiMmUwNDU4NzA4MzdhYzJlYTYzM2RmNDZmOGIxNC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy93aGlsZS1zdGF0ZW1lbnQt
ZXhwZWN0ZWQuanMKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi13aGlsZSAodHJ1ZSkK
LSAgICA7Ci13aGlsZSAodHJ1ZSkKLSAgICAxCi13aGlsZSAodHJ1ZSkge30KLXdoaWxlICh0cnVl
KSB7Ci0gICAgMQotfQotCi13aGlsZSAoKHRydWUpKQotICAgIDsKLXdoaWxlICgodHJ1ZSkpIHt9
Ci13aGlsZSAoKHRydWUpKSB7Ci0gICAgMQotfQotCi13aGlsZSAoKHRydWUpKQotICAgIDsKLXdo
aWxlICgodHJ1ZSkpIHt9Ci13aGlsZSAoKHRydWUpKSB7Ci0gICAgMQotfQotCi13aGlsZSAoeCAm
JiAheSkKLSAgICB4Kys7Ci0KLXdoaWxlIChmb28ubGVuZ3RoIDwgNSkgewotICAgIHgrKzsKLSAg
ICB5KysKLX0KLQotd2hpbGUgKHRydWUpCi0gICAgd2hpbGUgKHRydWUpCi0gICAgICAgIHdoaWxl
ICh0cnVlKQotICAgICAgICAgICAgd2hpbGUgKHRydWUpCi0gICAgICAgICAgICAgICAgOwotCi13
aGlsZSAodHJ1ZSkKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICB3aGlsZSAodHJ1ZSkKLSAg
ICAgICAgICAgIDEKLSAgICB9Ci0KLXdoaWxlICh0cnVlKQotICAgIHdoaWxlICh0cnVlKQotICAg
ICAgICAxOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Zvcm1hdHRpbmcvcmVz
b3VyY2VzL2phdmFzY3JpcHQtdGVzdHMvd2l0aC1zdGF0ZW1lbnQtZXhwZWN0ZWQuanMgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZm9ybWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy93
aXRoLXN0YXRlbWVudC1leHBlY3RlZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZjAyYTkyYTdlYmM2MjhhNzA4MDliZGE4NTdhYjJiYjNmODlhNTdhNS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZm9y
bWF0dGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC10ZXN0cy93aXRoLXN0YXRlbWVudC1leHBlY3Rl
ZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLXdpdGggKHgpCi0gICAgOwotd2l0
aCAoeCkge30KLXdpdGggKHgpIHsKLSAgICAxCi19Ci13aXRoICgoeCkpIHsKLSAgICAxCi19Ci13
aXRoICgxKQotICAgIHdpdGggKDIpCi0gICAgICAgIDM7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YS1pbnRlcmNlcHRlZC5qc29uIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2RhdGEtaW50ZXJjZXB0ZWQuanNv
bgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY0ZTJiMGQ5OTY3Y2ViMWVkN2UzMmNk
MTkyOTM1ZGYxNzY1ODEyNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YS1pbnRl
cmNlcHRlZC5qc29uCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotaW50ZXJjZXB0ZWQgcmVx
dWVzdApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431230</attachid>
            <date>2021-06-11 14:07:01 -0700</date>
            <delta_ts>2021-07-27 17:37:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226800-20210611160700.patch</filename>
            <type>text/plain</type>
            <size>2144</size>
            <attacher name="Amir Mark Jr">amir_mark</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NzgwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2UxOTJiNTUxNjE1ZTNiOGY4OTYz
OThlNjZiZWJiZGI3YmUyMGQzZC4uNzFlNWQ4MDVhYWI5YjYwOWIzZTg4NWFlODIwYzY4NmM0N2E0
OTQzYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA2LTExICBBbWlyIE1hcmsgSnIgIDxh
bWlyX21hcmtAYXBwbGUuY29tPgorCisgICAgICAgIFtMYXlvdXRUZXN0c10gRGVsZXRlIHVudXNl
ZCBMYXlvdXRUZXN0cy9pbnNwZWN0b3IgcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY4MDAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlL3Jlc291cmNlcy9l
cnJvcnMuY3NzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9kb20vcmVzb3VyY2VzL2hp
Z2hsaWdodC1pZnJhbWUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvbmV0d29y
ay9yZXNvdXJjZXMvZGF0YS1pbnRlcmNlcHRlZC5qc29uOiBSZW1vdmVkLgorCiAyMDIxLTA2LTEx
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtMaXZl
IFRleHRdIFRleHQgc2VsZWN0aW9uIGluc2lkZSBpbWFnZSBlbGVtZW50cyBzaG91bGQgbm90IGJl
IGNsZWFyZWQgdXBvbiByZXNpemUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9j
b25zb2xlL3Jlc291cmNlcy9lcnJvcnMuY3NzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNv
bGUvcmVzb3VyY2VzL2Vycm9ycy5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4
NWI0MjFhNmYwYzNmZTU0ZGIwMDA3MzEwZDdhODRhZjViYmZjNGMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNv
bGUvcmVzb3VyY2VzL2Vycm9ycy5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLWRp
diB7ICogY29sb3I6IHJlZDsgfSBkaXYgeyAqIGNvbG9yOiByZWQ7IH0KLQotZGl2IHsKLSAgICAq
Ci0gICAgY29sb3I6Ci0gICAgcmVkOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RvbS9yZXNvdXJjZXMvaGlnaGxpZ2h0LWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RvbS9yZXNvdXJjZXMvaGlnaGxpZ2h0LWlmcmFtZS5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwYjM0YTU0MWNkOThjNmIwMTU1Y2Y2NDFhYTQxNGY4NjI0YWZjZTUx
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kb20vcmVzb3VyY2VzL2hpZ2hsaWdodC1pZnJhbWUuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDggKzAsMCBAQAotPGh0bWw+Ci0gICAgPGhlYWQ+Ci0gICAgPC9oZWFkPgot
ICAgIDxib2R5PgotICAgICAgICA8ZGl2IGlkPSJpZC1vbmUiIHN0eWxlPSJ3aWR0aDoxNTBweDsg
aGVpZ2h0OiAyNTBweCI+PC9kaXY+Ci0gICAgICAgIDxkaXY+PC9kaXY+Ci0gICAgPC9ib2R5Pgot
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9kYXRhLWludGVyY2VwdGVkLmpzb24gYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YS1pbnRlcmNlcHRlZC5q
c29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjRlMmIwZDk5NjdjZWIxZWQ3ZTMy
Y2QxOTI5MzVkZjE3NjU4MTI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9kYXRhLWlu
dGVyY2VwdGVkLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1pbnRlcmNlcHRlZCBy
ZXF1ZXN0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434389</attachid>
            <date>2021-07-27 17:37:15 -0700</date>
            <delta_ts>2021-07-27 18:38:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226800-20210727173714.patch</filename>
            <type>text/plain</type>
            <size>2144</size>
            <attacher name="Robert Jenner">jenner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzY0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDE0M2E1Y2I5MTYxY2VmODRjMjdl
ZGJhZDUxNWQwOGUxMTk0ZTQ0NS4uNGQzNzM3MjIyYThlMGI2OGFmNDE0MjA0NjFjMjBiNDMyMzQ0
N2YyMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA3LTI3ICBBbWlyIE1hcmsgSnIgIDxh
bWlyX21hcmtAYXBwbGUuY29tPgorCisgICAgICAgIFtMYXlvdXRUZXN0c10gRGVsZXRlIHVudXNl
ZCBMYXlvdXRUZXN0cy9pbnNwZWN0b3IgcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY4MDAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlL3Jlc291cmNlcy9l
cnJvcnMuY3NzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9kb20vcmVzb3VyY2VzL2hp
Z2hsaWdodC1pZnJhbWUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvbmV0d29y
ay9yZXNvdXJjZXMvZGF0YS1pbnRlcmNlcHRlZC5qc29uOiBSZW1vdmVkLgorCiAyMDIxLTA3LTI3
ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBQcm94
eU9iamVjdCBjYWxsZWVzIHNob3VsZCBiZSBza2lwcGVkIGR1cmluZyBGdW5jdGlvbi5wcm90b3R5
cGUuY2FsbGVyIHJlc29sdXRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9j
b25zb2xlL3Jlc291cmNlcy9lcnJvcnMuY3NzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNv
bGUvcmVzb3VyY2VzL2Vycm9ycy5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4
NWI0MjFhNmYwYzNmZTU0ZGIwMDA3MzEwZDdhODRhZjViYmZjNGMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNv
bGUvcmVzb3VyY2VzL2Vycm9ycy5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLWRp
diB7ICogY29sb3I6IHJlZDsgfSBkaXYgeyAqIGNvbG9yOiByZWQ7IH0KLQotZGl2IHsKLSAgICAq
Ci0gICAgY29sb3I6Ci0gICAgcmVkOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RvbS9yZXNvdXJjZXMvaGlnaGxpZ2h0LWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RvbS9yZXNvdXJjZXMvaGlnaGxpZ2h0LWlmcmFtZS5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwYjM0YTU0MWNkOThjNmIwMTU1Y2Y2NDFhYTQxNGY4NjI0YWZjZTUx
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kb20vcmVzb3VyY2VzL2hpZ2hsaWdodC1pZnJhbWUuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDggKzAsMCBAQAotPGh0bWw+Ci0gICAgPGhlYWQ+Ci0gICAgPC9oZWFkPgot
ICAgIDxib2R5PgotICAgICAgICA8ZGl2IGlkPSJpZC1vbmUiIHN0eWxlPSJ3aWR0aDoxNTBweDsg
aGVpZ2h0OiAyNTBweCI+PC9kaXY+Ci0gICAgICAgIDxkaXY+PC9kaXY+Ci0gICAgPC9ib2R5Pgot
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9kYXRhLWludGVyY2VwdGVkLmpzb24gYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YS1pbnRlcmNlcHRlZC5q
c29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjRlMmIwZDk5NjdjZWIxZWQ3ZTMy
Y2QxOTI5MzVkZjE3NjU4MTI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9kYXRhLWlu
dGVyY2VwdGVkLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1pbnRlcmNlcHRlZCBy
ZXF1ZXN0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>