<?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>92769</bug_id>
          
          <creation_ts>2012-07-31 09:43:09 -0700</creation_ts>
          <short_desc>Web Inspector: replace the Web Inspector editor with CodeMirror</short_desc>
          <delta_ts>2012-08-09 14:01:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Jan Keromnes">janx</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dsam2912</cc>
    
    <cc>janx</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>vivekgalatage</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>683203</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-07-31 09:43:09 -0700</bug_when>
    <thetext>A provocative ticket.

Jan K. has shown me a codemirror-based editor implementation within the inspector and it impressed me a lot.
- It is a 3K lines
- Its runtime footprint is better (438MB of 600KLOC vs ~650MB for existing editor)
- It loads file faster (5s for 600KLOC vs ~20s for existing editor)
It is currently available under the MIT license which we should be ok with.

The downside is that inspector contributors don&apos;t know the source base and it is evolving rapidly. But if we get a nice agreement for the support from some of the codemirror members, it should be Ok though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683266</commentid>
    <comment_count>1</comment_count>
    <who name="Vivek Galatage">vivekgalatage</who>
    <bug_when>2012-07-31 11:03:10 -0700</bug_when>
    <thetext>+1

I am game for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683926</commentid>
    <comment_count>2</comment_count>
    <who name="Jan Keromnes">janx</who>
    <bug_when>2012-08-01 00:04:20 -0700</bug_when>
    <thetext>Obvious +1

I&apos;d gladly provide support on the codemirror side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691181</commentid>
    <comment_count>3</comment_count>
      <attachid>157382</attachid>
    <who name="Jan Keromnes">janx</who>
    <bug_when>2012-08-08 21:44:30 -0700</bug_when>
    <thetext>Created attachment 157382
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691198</commentid>
    <comment_count>4</comment_count>
    <who name="Jan Keromnes">janx</who>
    <bug_when>2012-08-08 22:16:47 -0700</bug_when>
    <thetext>I integrated CodeMirror2 as a devtools experiment, replacing DefaultTextEditor when the experiment is active.

The above patch adds support for:
- Open/closing files
- Editing files
- Search/replacing (1)
- Saving files
- Setting breakpoints (UI only)
- Add/get/removeAttribute for any line (2)

Features that are not yet supported by this implementation:
- Communication with WebInspector&apos;s breakpoint manager
- Showing and hiding message bubbles (e.g. error messages in the code)
- Displaying popovers (i.e. when stopped on a breakpoint, showing the value for an expression on hover)
- Populated context menus

Please tell me if you think I forgot an important editor feature in the lists above.

Potential performance issues:
(1) The search functionality implemented by WebInspector doesn&apos;t scale well with CodeMirror on big files (&gt; 10KLOC). It could also be a good idea to use CodeMirror&apos;s own search algorithm instead.
(2) WebInspector seems to check for the attribute &quot;breakpoint&quot; on every line of a file. The current implementation of getAttribute gets the actual CodeMirror line handle, and I have the impression that accessing it for every line deoptimizes what the viewport gains. Maybe the list of current breakpoints can be provided by the breakpoint manager instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691214</commentid>
    <comment_count>5</comment_count>
      <attachid>157382</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-08 22:36:30 -0700</bug_when>
    <thetext>Comment on attachment 157382
Patch

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

Good stuff, gives a really good clue on what is missing and what not.

&gt; Source/WebCore/WebCore.gypi:6258
&gt; +            &apos;inspector/front-end/css.js&apos;,

we&apos;ll need to fix the build so that we could store cm files under a separate folder (as we do to uglify)

&gt; Source/WebCore/WebCore.gypi:6259
&gt; +            &apos;inspector/front-end/javascript.js&apos;,

Given the size of these, they are likely to slow down the load time. We should probably deploy them separately (as we do with worker scripts) and load them using XHR in case the experiment is turned on.

&gt; Source/WebCore/WebCore.vcproj/WebCore.vcproj:75425
&gt; +					RelativePath=&quot;..\inspector\front-end\codemirror.js&quot;

you are missing the mode files.

&gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:50
&gt; +        onGutterClick: function(cm, line) {

I guess you should add this later along with the proper breakpoint marker. You should fire corresponding event to embedder, decoration will be added by the sourceframe later.

&gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:58
&gt; +        extraKeys: { &quot;Ctrl-S&quot;: this._commitEditing.bind(this) }

Also might require a more careful treatment.

&gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:76
&gt; +        this._codeMirror.setOption(&quot;mode&quot;, mimeType);

Nuke this line.

&gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:89
&gt; +        console.log(&apos;called setReadOnly&apos;, arguments);

Remove logging here and below.

&gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:90
&gt; +        this._readOnly = readOnly;

Do you really need this state? You can synchronously query option for that.

&gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:123
&gt; +        this._codeMirror.setCursor({line: lineNumber});

should  be line: lineNumber, ch: 0

&gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:125
&gt; +        this._codeMirror.scrollTo(coords.x, coords.y);

Doesn&apos;t cm do that on its own? If not, lets upstream it. Going through coords for such a simple operation sounds strange.

&gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:164
&gt; +        var mark = this._codeMirror.markText({line:lineNumber,ch:0},{line:lineNumber,ch:line.length},&quot;CodeMirror-searching&quot;);

Please format arrays and objects as in WebKit.

&gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:175
&gt; +        console.log(&apos;called freeCachedElements&apos;, arguments);

We should just remove this (call it on willHide in DefaultTextViewer)

&gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:197
&gt; +        console.log(&apos;called beginUpdates&apos;, arguments);

We call these around the calls into decorations. We should make it private and call it within addDecoration and such in the default editor.

&gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:232
&gt; +        this._delegate.beforeTextChanged();

beforeTextChanged expects to be called on the original state of the model. I can look into how we can workaround it. Worst case we would need an additional event.

&gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:243
&gt; +        this._delegate.commitEditing();

We should probably move this to the embedder...

&gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:256
&gt; +        this._codeMirror.setCursor({line:lineNumber, ch:0});

What is the difference between the revealLine and scrollToLine?

&gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:266
&gt; +        return null;

This should not be hard to mock.

&gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:314
&gt; +        return this._toRange({line:0, ch:0}, this._codeMirror.posFromIndex(this._codeMirror.getValue().length));

getValue is expensive in codemirror. You probably want something like {line: lineCount - 1, ch: getLine(lineCount - 1).length}

&gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:369
&gt; +        if (handle.attributes !== undefined) delete handle.attributes[name];

You can&apos;t compare to undefined in JavaScript (not a good style), you do id (handle.attributes)

Also, delete should go on the next line.

&gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:375
&gt; +        if (this._content) {

This hack is no longer needed.

&gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:386
&gt; +    _textChanged: function(event)

This does not need to be used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691244</commentid>
    <comment_count>6</comment_count>
      <attachid>157394</attachid>
    <who name="Jan Keromnes">janx</who>
    <bug_when>2012-08-08 23:08:29 -0700</bug_when>
    <thetext>Created attachment 157394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691263</commentid>
    <comment_count>7</comment_count>
      <attachid>157394</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-08 23:34:48 -0700</bug_when>
    <thetext>Comment on attachment 157394
Patch

Attachment 157394 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13460463

New failing tests:
http/tests/inspector/appcache/appcache-iframe-manifests.html
http/tests/inspector/injected-script-for-origin.html
http/tests/inspector/extensions-network-redirect.html
http/tests/inspector/change-iframe-src.html
http/tests/inspector/modify-cross-domain-rule.html
http/tests/inspector/resource-har-conversion.html
http/tests/inspector/console-resource-errors.html
http/tests/inspector/extensions-headers.html
http/tests/inspector-enabled/injected-script-discard.html
http/tests/inspector/console-cross-origin-iframe-logging.html
http/tests/inspector-enabled/contentSecurityPolicy-blocks-setTimeout.html
http/tests/inspector/extensions-useragent.html
fast/canvas/webgl/shader-precision-format.html
http/tests/inspector/console-cd-completions.html
http/tests/inspector/compiler-script-mapping.html
http/tests/inspector-enabled/contentSecurityPolicy-blocks-setInterval.html
http/tests/inspector/compiler-source-mapping-debug.html
http/tests/inspector/web-socket-frame-error.html
http/tests/inspector/console-xhr-logging.html
http/tests/inspector/console-xhr-logging-async.html
http/tests/inspector/console-cd.html
http/tests/inspector/resource-har-headers.html
http/tests/inspector/network-preflight-options.html
http/tests/inspector/inspect-iframe-from-different-domain.html
http/tests/inspector-enabled/console-log-before-frame-navigation.html
http/tests/inspector-enabled/dom-storage-open.html
http/tests/inspector/resource-parameters.html
http/tests/inspector-enabled/database-open.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691264</commentid>
    <comment_count>8</comment_count>
      <attachid>157399</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-08 23:34:55 -0700</bug_when>
    <thetext>Created attachment 157399
Archive of layout-test-results from gce-cr-linux-08

The attached test failures were seen while running run-webkit-tests on the chromium-ews.
Bot: gce-cr-linux-08  Port: &lt;class &apos;webkitpy.common.config.ports.ChromiumXVFBPort&apos;&gt;  Platform: Linux-2.6.39-gcg-201203291735-x86_64-with-Ubuntu-10.04-lucid</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691267</commentid>
    <comment_count>9</comment_count>
    <who name="Jan Keromnes">janx</who>
    <bug_when>2012-08-08 23:45:39 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; we&apos;ll need to fix the build so that we could store cm files under a separate folder (as we do to uglify)
&gt;
&gt; Given the size of these, they are likely to slow down the load time. We should probably deploy them separately (as we do with worker scripts) and load them using XHR in case the experiment is turned on.

Good idea!

&gt; I guess you should add this later along with the proper breakpoint marker. You should fire corresponding event to embedder, decoration will be added by the sourceframe later.

Removed in patch above.

&gt; &gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:58
&gt; &gt; +        extraKeys: { &quot;Ctrl-S&quot;: this._commitEditing.bind(this) }
&gt; 
&gt; Also might require a more careful treatment.

I tested it and it seems to work, it has the same behavior as DefaultTextEditor. Did you spot any particular problem?

&gt; &gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:76
&gt; &gt; +        this._codeMirror.setOption(&quot;mode&quot;, mimeType);
&gt; 
&gt; Nuke this line.

It is needed for proper language-specific highlighting.

&gt; &gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:89
&gt; &gt; +        console.log(&apos;called setReadOnly&apos;, arguments);
&gt; 
&gt; Remove logging here and below.

Removed all logging instrumentation in patch above.

&gt; &gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:90
&gt; &gt; +        this._readOnly = readOnly;
&gt; 
&gt; Do you really need this state? You can synchronously query option for that.

Indeed the state is not needed, I&apos;ll remove it.

&gt; &gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:123
&gt; &gt; +        this._codeMirror.setCursor({line: lineNumber});
&gt; 
&gt; should  be line: lineNumber, ch: 0

`ch` defaults to 0 but if you prefer the explicit version I&apos;ll change it.

&gt; &gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:125
&gt; &gt; +        this._codeMirror.scrollTo(coords.x, coords.y);
&gt; 
&gt; Doesn&apos;t cm do that on its own? If not, lets upstream it. Going through coords for such a simple operation sounds strange.

I think we might have to upstream that one. I&apos;ll remove it when it&apos;s done.

&gt; &gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:164
&gt; &gt; +        var mark = this._codeMirror.markText({line:lineNumber,ch:0},{line:lineNumber,ch:line.length},&quot;CodeMirror-searching&quot;);
&gt; 
&gt; Please format arrays and objects as in WebKit.

Will do.

&gt; &gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:175
&gt; &gt; +        console.log(&apos;called freeCachedElements&apos;, arguments);
&gt; 
&gt; We should just remove this (call it on willHide in DefaultTextViewer)

ditto

&gt; &gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:197
&gt; &gt; +        console.log(&apos;called beginUpdates&apos;, arguments);
&gt; 
&gt; We call these around the calls into decorations. We should make it private and call it within addDecoration and such in the default editor.

ditto

&gt; &gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:232
&gt; &gt; +        this._delegate.beforeTextChanged();
&gt; 
&gt; beforeTextChanged expects to be called on the original state of the model. I can look into how we can workaround it. Worst case we would need an additional event.

I&apos;ll wait for your conclusion then.

&gt; &gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:243
&gt; &gt; +        this._delegate.commitEditing();
&gt; 
&gt; We should probably move this to the embedder...

I&apos;m not sure what you mean. This calls back to the SourceFrame to commit a working copy, should it work differently?

&gt; &gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:256
&gt; &gt; +        this._codeMirror.setCursor({line:lineNumber, ch:0});
&gt; 
&gt; What is the difference between the revealLine and scrollToLine?

Not sure anymore, I&apos;ll investigate this.

&gt; &gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:266
&gt; &gt; +        return null;
&gt; 
&gt; This should not be hard to mock.

I&apos;ll implement this in the next patch.

&gt; &gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:314
&gt; &gt; +        return this._toRange({line:0, ch:0}, this._codeMirror.posFromIndex(this._codeMirror.getValue().length));
&gt; 
&gt; getValue is expensive in codemirror. You probably want something like {line: lineCount - 1, ch: getLine(lineCount - 1).length}

I&apos;ll change it to your version.

&gt; &gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:369
&gt; &gt; +        if (handle.attributes !== undefined) delete handle.attributes[name];
&gt; 
&gt; You can&apos;t compare to undefined in JavaScript (not a good style), you do id (handle.attributes)
&gt; 
&gt; Also, delete should go on the next line.

Ok.

&gt; &gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:375
&gt; &gt; +        if (this._content) {
&gt; 
&gt; This hack is no longer needed.
&gt;
&gt; &gt; Source/WebCore/inspector/front-end/CodeMirrorTextEditor.js:386
&gt; &gt; +    _textChanged: function(event)
&gt; 
&gt; This does not need to be used.

Removing the hack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691300</commentid>
    <comment_count>10</comment_count>
      <attachid>157408</attachid>
    <who name="Jan Keromnes">janx</who>
    <bug_when>2012-08-09 00:40:23 -0700</bug_when>
    <thetext>Created attachment 157408
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691316</commentid>
    <comment_count>11</comment_count>
      <attachid>157408</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-09 01:02:50 -0700</bug_when>
    <thetext>Comment on attachment 157408
Patch

Attachment 157408 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13470172

New failing tests:
http/tests/inspector/appcache/appcache-iframe-manifests.html
http/tests/inspector/injected-script-for-origin.html
http/tests/inspector/extensions-network-redirect.html
http/tests/inspector/change-iframe-src.html
http/tests/inspector/modify-cross-domain-rule.html
http/tests/inspector/resource-har-conversion.html
http/tests/inspector/console-resource-errors.html
http/tests/inspector/extensions-headers.html
http/tests/inspector-enabled/injected-script-discard.html
http/tests/inspector/console-cross-origin-iframe-logging.html
http/tests/inspector-enabled/contentSecurityPolicy-blocks-setTimeout.html
http/tests/inspector/extensions-useragent.html
fast/canvas/webgl/shader-precision-format.html
http/tests/inspector/console-cd-completions.html
http/tests/inspector/compiler-script-mapping.html
http/tests/inspector-enabled/contentSecurityPolicy-blocks-setInterval.html
http/tests/inspector/compiler-source-mapping-debug.html
http/tests/inspector/web-socket-frame-error.html
http/tests/inspector/console-xhr-logging.html
http/tests/inspector/console-xhr-logging-async.html
http/tests/inspector/console-cd.html
http/tests/inspector/resource-har-headers.html
http/tests/inspector/network-preflight-options.html
http/tests/inspector/inspect-iframe-from-different-domain.html
http/tests/inspector-enabled/console-log-before-frame-navigation.html
http/tests/inspector-enabled/dom-storage-open.html
http/tests/inspector/resource-parameters.html
http/tests/inspector-enabled/database-open.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691317</commentid>
    <comment_count>12</comment_count>
      <attachid>157412</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-09 01:02:57 -0700</bug_when>
    <thetext>Created attachment 157412
Archive of layout-test-results from gce-cr-linux-02

The attached test failures were seen while running run-webkit-tests on the chromium-ews.
Bot: gce-cr-linux-02  Port: &lt;class &apos;webkitpy.common.config.ports.ChromiumXVFBPort&apos;&gt;  Platform: Linux-2.6.39-gcg-201203291735-x86_64-with-Ubuntu-10.04-lucid</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691322</commentid>
    <comment_count>13</comment_count>
      <attachid>157413</attachid>
    <who name="Jan Keromnes">janx</who>
    <bug_when>2012-08-09 01:06:39 -0700</bug_when>
    <thetext>Created attachment 157413
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691325</commentid>
    <comment_count>14</comment_count>
    <who name="Jan Keromnes">janx</who>
    <bug_when>2012-08-09 01:10:36 -0700</bug_when>
    <thetext>Looks like the test bot is failing, all tests pass on my machine.

New patch with stripped down functional prototype, without logging instrumentation nor breakpoint UI, and with the changes you asked for in comment #5. Missing features and performance issues described in comment #4 still apply.

Still not sure about revealLine and scrollToLine. I&apos;ll let you work on deployment and refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691573</commentid>
    <comment_count>15</comment_count>
      <attachid>157413</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-09 10:43:12 -0700</bug_when>
    <thetext>Comment on attachment 157413
Patch

Attachment 157413 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13464361

New failing tests:
http/tests/inspector/appcache/appcache-iframe-manifests.html
http/tests/inspector/injected-script-for-origin.html
http/tests/inspector/extensions-network-redirect.html
http/tests/inspector/change-iframe-src.html
http/tests/inspector/modify-cross-domain-rule.html
http/tests/inspector/resource-har-conversion.html
http/tests/inspector/console-resource-errors.html
http/tests/inspector/extensions-headers.html
http/tests/inspector-enabled/injected-script-discard.html
http/tests/inspector/console-cross-origin-iframe-logging.html
http/tests/inspector-enabled/contentSecurityPolicy-blocks-setTimeout.html
http/tests/inspector/extensions-useragent.html
fast/canvas/webgl/shader-precision-format.html
http/tests/inspector/console-cd-completions.html
http/tests/inspector/compiler-script-mapping.html
http/tests/inspector-enabled/contentSecurityPolicy-blocks-setInterval.html
http/tests/inspector/compiler-source-mapping-debug.html
http/tests/inspector/web-socket-frame-error.html
http/tests/inspector/console-xhr-logging.html
http/tests/inspector/console-xhr-logging-async.html
http/tests/inspector/console-cd.html
http/tests/inspector/resource-har-headers.html
http/tests/inspector/network-preflight-options.html
http/tests/inspector/inspect-iframe-from-different-domain.html
http/tests/inspector-enabled/console-log-before-frame-navigation.html
http/tests/inspector-enabled/dom-storage-open.html
http/tests/inspector/resource-parameters.html
http/tests/inspector-enabled/database-open.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691574</commentid>
    <comment_count>16</comment_count>
      <attachid>157486</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-09 10:43:19 -0700</bug_when>
    <thetext>Created attachment 157486
Archive of layout-test-results from gce-cr-linux-06

The attached test failures were seen while running run-webkit-tests on the chromium-ews.
Bot: gce-cr-linux-06  Port: &lt;class &apos;webkitpy.common.config.ports.ChromiumXVFBPort&apos;&gt;  Platform: Linux-2.6.39-gcg-201203291735-x86_64-with-Ubuntu-10.04-lucid</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691631</commentid>
    <comment_count>17</comment_count>
      <attachid>157497</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-09 11:35:08 -0700</bug_when>
    <thetext>Created attachment 157497
[Patch] stripped away the code we are unsure of</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691821</commentid>
    <comment_count>18</comment_count>
      <attachid>157497</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-09 14:01:02 -0700</bug_when>
    <thetext>Comment on attachment 157497
[Patch] stripped away the code we are unsure of

Clearing flags on attachment: 157497

Committed r125201: &lt;http://trac.webkit.org/changeset/125201&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691822</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-09 14:01:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157382</attachid>
            <date>2012-08-08 21:44:30 -0700</date>
            <delta_ts>2012-08-08 23:08:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92769-20120808214403.patch</filename>
            <type>text/plain</type>
            <size>208291</size>
            <attacher name="Jan Keromnes">janx</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MDg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWU5ZjIyMDY0YzAxYjZj
YWFkNzgwOTNkYWNiNjc3YjMzZmEzMjUzNS4uNTc0Njc2NWU5NjFiNTUyZjkyY2RjMmJhYTc5MzBl
ODdhOWY5MDAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NCBAQAorMjAxMi0wOC0wOCAgSmFu
IEtlcm9tbmVzICA8amFueEBsaW51eC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVw
bGFjZSB0aGUgV2ViIEluc3BlY3RvciBlZGl0b3Igd2l0aCBDb2RlTWlycm9yCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mjc2OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludGVncmF0aW5nIENvZGVNaXJy
b3IgYXMgYSBkZXZ0b29scyBleHBlcmltZW50LiBDdXJyZW50bHkgc3VwcG9ydGluZworICAgICAg
ICBiYXNpYyBlZGl0aW5nLCBzZWFyY2gvcmVwbGFjaW5nLCBhbmQgc2F2aW5nLiBNaXNzaW5nIHBy
b3BlciBicmVha3BvaW50cworICAgICAgICB3aXJpbmcsIGRlYnVnZ2luZywgbWVzc2FnZSBidWJi
bGVzLCBwb3BvdmVycyBhbmQgY29udGV4dCBtZW51cy4gV0lQLgorCisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAg
ICAqIGluc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NvZGVNaXJyb3JUZXh0RWRpdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci50aGlzLl9jb2RlTWlycm9yLkNvZGVNaXJyb3Ip
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuc2V0IG1pbWVUeXBl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUu
c2V0UmVhZE9ubHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9y
LnByb3RvdHlwZS5yZWFkT25seSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRl
eHRFZGl0b3IucHJvdG90eXBlLmRlZmF1bHRGb2N1c2VkRWxlbWVudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLmZvY3VzKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUucmV2ZWFsTGluZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLmFk
ZERlY29yYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9y
LnByb3RvdHlwZS5yZW1vdmVEZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2Rl
TWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUubWFya0FuZFJldmVhbFJhbmdlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuaGlnaGxpZ2h0TGlu
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBl
LmNsZWFyTGluZUhpZ2hsaWdodCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRl
eHRFZGl0b3IucHJvdG90eXBlLmZyZWVDYWNoZWRFbGVtZW50cyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLmVsZW1lbnRzVG9SZXN0b3JlU2Ny
b2xsUG9zaXRpb25zRm9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVk
aXRvci5wcm90b3R5cGUuaW5oZXJpdFNjcm9sbFBvc2l0aW9ucyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLmJlZ2luVXBkYXRlcyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLmVuZFVwZGF0
ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlw
ZS5vblJlc2l6ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3Iu
cHJvdG90eXBlLmVkaXRSYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRl
eHRFZGl0b3IucHJvdG90eXBlLl9vbkNoYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29k
ZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLl9jb21taXRFZGl0aW5nKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuc2Nyb2xsVG9MaW5lKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuc2Vs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90
b3R5cGUubGFzdFNlbGVjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRl
eHRFZGl0b3IucHJvdG90eXBlLnNldFNlbGVjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLnNldFRleHQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZS50ZXh0KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUucmFuZ2UpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZS5saW5lKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuZ2V0IGxp
bmVzQ291bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnBy
b3RvdHlwZS5zZXRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JU
ZXh0RWRpdG9yLnByb3RvdHlwZS5nZXRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZS53YXNTaG93bik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLndp
bGxIaWRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90
b3R5cGUuX3RleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4
dEVkaXRvci5wcm90b3R5cGUuX3RvUG9zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWly
cm9yVGV4dEVkaXRvci5wcm90b3R5cGUuX3RvUmFuZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvU2V0dGluZ3MuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXhwZXJpbWVudHNT
ZXR0aW5ncyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZSk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvY21k
ZXZ0b29scy5jc3M6IEFkZGVkLgorICAgICAgICAoLkNvZGVNaXJyb3Itc2Nyb2xsKToKKyAgICAg
ICAgKC5Db2RlTWlycm9yKToKKyAgICAgICAgKC5jbS1zLXdlYi1pbnNwZWN0b3ItanMgc3Bhbi5j
bS1rZXl3b3JkKToKKyAgICAgICAgKC5jbS1zLXdlYi1pbnNwZWN0b3ItanMgc3Bhbi5jbS1udW1i
ZXIpOgorICAgICAgICAoLmNtLXMtd2ViLWluc3BlY3Rvci1qcyBzcGFuLmNtLWNvbW1lbnQpOgor
ICAgICAgICAoLmNtLXMtd2ViLWluc3BlY3Rvci1qcyBzcGFuLmNtLXN0cmluZyk6CisgICAgICAg
ICguY20tcy13ZWItaW5zcGVjdG9yLWpzIHNwYW4uY20tc3RyaW5nLTIpOgorICAgICAgICAoLmNt
LXMtd2ViLWluc3BlY3Rvci1jc3Mgc3Bhbi5jbS1rZXl3b3JkKToKKyAgICAgICAgKC5jbS1zLXdl
Yi1pbnNwZWN0b3ItY3NzIHNwYW4uY20tbnVtYmVyKToKKyAgICAgICAgKC5jbS1zLXdlYi1pbnNw
ZWN0b3ItY3NzIHNwYW4uY20tY29tbWVudCk6CisgICAgICAgICguY20tcy13ZWItaW5zcGVjdG9y
LWNzcyBzcGFuLmNtLXN0cmluZyk6CisgICAgICAgICguY20tcy13ZWItaW5zcGVjdG9yLWNzcyBz
cGFuLmNtLXN0cmluZy0yKToKKyAgICAgICAgKC5jbS1zLXdlYi1pbnNwZWN0b3ItY3NzIHNwYW4u
Y20tbGluayk6CisgICAgICAgICguY20tcy13ZWItaW5zcGVjdG9yLWNzcyBzcGFuLmNtLXZhcmlh
YmxlKToKKyAgICAgICAgKC5jbS1zLXdlYi1pbnNwZWN0b3ItaHRtbCBzcGFuLmNtLW1ldGEpOgor
ICAgICAgICAoLmNtLXMtd2ViLWluc3BlY3Rvci1odG1sIHNwYW4uY20tY29tbWVudCk6CisgICAg
ICAgICguY20tcy13ZWItaW5zcGVjdG9yLWh0bWwgc3Bhbi5jbS1zdHJpbmcpOgorICAgICAgICAo
LmNtLXMtd2ViLWluc3BlY3Rvci1odG1sIHNwYW4uY20tdGFnKToKKyAgICAgICAgKC5jbS1zLXdl
Yi1pbnNwZWN0b3ItaHRtbCBzcGFuLmNtLWF0dHJpYnV0ZSk6CisgICAgICAgICguY20tcy13ZWIt
aW5zcGVjdG9yLWh0bWwgc3Bhbi5jbS1saW5rKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL2NvZGVtaXJyb3IuY3NzOiBBZGRlZC4KKyAgICAgICAgKC5Db2RlTWlycm9yKToKKyAgICAg
ICAgKC5Db2RlTWlycm9yLXNjcm9sbCk6CisgICAgICAgICguQ29kZU1pcnJvci1zY3JvbGxiYXIp
OgorICAgICAgICAoLkNvZGVNaXJyb3Itc2Nyb2xsYmFyLWlubmVyKToKKyAgICAgICAgKC5Db2Rl
TWlycm9yLXNjcm9sbGJhci5jbS1zYi1vdmVybGFwKToKKyAgICAgICAgKC5Db2RlTWlycm9yLXNj
cm9sbGJhci5jbS1zYi1ub25vdmVybGFwKToKKyAgICAgICAgKC5Db2RlTWlycm9yLXNjcm9sbGJh
ci5jbS1zYi1pZTcpOgorICAgICAgICAoLkNvZGVNaXJyb3ItZ3V0dGVyKToKKyAgICAgICAgKC5D
b2RlTWlycm9yLWd1dHRlci10ZXh0KToKKyAgICAgICAgKC5Db2RlTWlycm9yLWxpbmVzKToKKyAg
ICAgICAgKC5Db2RlTWlycm9yIHByZSk6CisgICAgICAgICguQ29kZU1pcnJvci13cmFwIHByZSk6
CisgICAgICAgICguQ29kZU1pcnJvci13cmFwIC5Db2RlTWlycm9yLXNjcm9sbCk6CisgICAgICAg
ICguQ29kZU1pcnJvciB0ZXh0YXJlYSk6CisgICAgICAgICguQ29kZU1pcnJvciBwcmUuQ29kZU1p
cnJvci1jdXJzb3IpOgorICAgICAgICAoLmNtLWtleW1hcC1mYXQtY3Vyc29yIHByZS5Db2RlTWly
cm9yLWN1cnNvcik6CisgICAgICAgICguY20ta2V5bWFwLWZhdC1jdXJzb3IgcHJlLkNvZGVNaXJy
b3ItY3Vyc29yOm5vdCgjbm9uc2Vuc2VfaWQpKToKKyAgICAgICAgKC5Db2RlTWlycm9yIHByZS5D
b2RlTWlycm9yLWN1cnNvci5Db2RlTWlycm9yLW92ZXJ3cml0ZSk6CisgICAgICAgICguQ29kZU1p
cnJvci1mb2N1c2VkIHByZS5Db2RlTWlycm9yLWN1cnNvcik6CisgICAgICAgIChkaXYuQ29kZU1p
cnJvci1zZWxlY3RlZCk6CisgICAgICAgICguQ29kZU1pcnJvci1mb2N1c2VkIGRpdi5Db2RlTWly
cm9yLXNlbGVjdGVkKToKKyAgICAgICAgKC5Db2RlTWlycm9yLXNlYXJjaGluZyk6CisgICAgICAg
ICguY20tcy1kZWZhdWx0IHNwYW4uY20ta2V5d29yZCk6CisgICAgICAgICguY20tcy1kZWZhdWx0
IHNwYW4uY20tYXRvbSk6CisgICAgICAgICguY20tcy1kZWZhdWx0IHNwYW4uY20tbnVtYmVyKToK
KyAgICAgICAgKC5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1kZWYpOgorICAgICAgICAoLmNtLXMtZGVm
YXVsdCBzcGFuLmNtLXZhcmlhYmxlKToKKyAgICAgICAgKC5jbS1zLWRlZmF1bHQgc3Bhbi5jbS12
YXJpYWJsZS0yKToKKyAgICAgICAgKC5jbS1zLWRlZmF1bHQgc3Bhbi5jbS12YXJpYWJsZS0zKToK
KyAgICAgICAgKC5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1wcm9wZXJ0eSk6CisgICAgICAgICguY20t
cy1kZWZhdWx0IHNwYW4uY20tb3BlcmF0b3IpOgorICAgICAgICAoLmNtLXMtZGVmYXVsdCBzcGFu
LmNtLWNvbW1lbnQpOgorICAgICAgICAoLmNtLXMtZGVmYXVsdCBzcGFuLmNtLXN0cmluZyk6Cisg
ICAgICAgICguY20tcy1kZWZhdWx0IHNwYW4uY20tc3RyaW5nLTIpOgorICAgICAgICAoLmNtLXMt
ZGVmYXVsdCBzcGFuLmNtLW1ldGEpOgorICAgICAgICAoLmNtLXMtZGVmYXVsdCBzcGFuLmNtLWVy
cm9yKToKKyAgICAgICAgKC5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1xdWFsaWZpZXIpOgorICAgICAg
ICAoLmNtLXMtZGVmYXVsdCBzcGFuLmNtLWJ1aWx0aW4pOgorICAgICAgICAoLmNtLXMtZGVmYXVs
dCBzcGFuLmNtLWJyYWNrZXQpOgorICAgICAgICAoLmNtLXMtZGVmYXVsdCBzcGFuLmNtLXRhZyk6
CisgICAgICAgICguY20tcy1kZWZhdWx0IHNwYW4uY20tYXR0cmlidXRlKToKKyAgICAgICAgKC5j
bS1zLWRlZmF1bHQgc3Bhbi5jbS1oZWFkZXIpOgorICAgICAgICAoLmNtLXMtZGVmYXVsdCBzcGFu
LmNtLXF1b3RlKToKKyAgICAgICAgKC5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1ocik6CisgICAgICAg
ICguY20tcy1kZWZhdWx0IHNwYW4uY20tbGluayk6CisgICAgICAgIChzcGFuLmNtLWhlYWRlciwg
c3Bhbi5jbS1zdHJvbmcpOgorICAgICAgICAoc3Bhbi5jbS1lbSk6CisgICAgICAgIChzcGFuLmNt
LWVtc3Ryb25nKToKKyAgICAgICAgKHNwYW4uY20tbGluayk6CisgICAgICAgIChzcGFuLmNtLWlu
dmFsaWRjaGFyKToKKyAgICAgICAgKGRpdi5Db2RlTWlycm9yIHNwYW4uQ29kZU1pcnJvci1tYXRj
aGluZ2JyYWNrZXQpOgorICAgICAgICAoZGl2LkNvZGVNaXJyb3Igc3Bhbi5Db2RlTWlycm9yLW5v
bm1hdGNoaW5nYnJhY2tldCk6CisgICAgICAgIChAbWVkaWEgcHJpbnQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvY29kZW1pcnJvci5qczogQWRkZWQuCisgICAgICAgIChDb2RlTWly
cm9yLik6CisgICAgICAgIChDb2RlTWlycm9yKToKKyAgICAgICAgKC4pOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvY3NzLmpzOiBBZGRlZC4KKyAgICAgICAgKENvZGVNaXJyb3IuZGVm
aW5lTW9kZSk6CisgICAgICAgIChDb2RlTWlycm9yLmRlZmluZU1vZGUuKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL2h0bWxtaXhlZC5qczogQWRkZWQuCisgICAgICAgIChDb2RlTWly
cm9yLmRlZmluZU1vZGUpOgorICAgICAgICAoQ29kZU1pcnJvci5kZWZpbmVNb2RlLik6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL2phdmFzY3JpcHQuanM6IEFkZGVkLgorICAgICAgICAoQ29kZU1pcnJv
ci5kZWZpbmVNb2RlLik6CisgICAgICAgIChDb2RlTWlycm9yLmRlZmluZU1vZGUpOgorICAgICAg
ICAobWF5YmVvcGVyYXRvcik6CisgICAgICAgIChtYXliZWxhYmVsKToKKyAgICAgICAgKHByb3Bl
cnR5KToKKyAgICAgICAgKG9ianByb3ApOgorICAgICAgICAoY29tbWFzZXAucHJvY2VlZCk6Cisg
ICAgICAgIChjb21tYXNlcC5yZXR1cm4uY29tbWFTZXBhcmF0ZWQpOgorICAgICAgICAoY29tbWFz
ZXApOgorICAgICAgICAoYmxvY2spOgorICAgICAgICAodmFyZGVmMSk6CisgICAgICAgICh2YXJk
ZWYyKToKKyAgICAgICAgKGZvcnNwZWMxKToKKyAgICAgICAgKGZvcm1heWJlaW4pOgorICAgICAg
ICAoZm9yc3BlYzIpOgorICAgICAgICAoZm9yc3BlYzMpOgorICAgICAgICAoZnVuY3Rpb25kZWYp
OgorICAgICAgICAoZnVuYXJnKToKKyAgICAgICAgKHJldHVybi5zdGFydFN0YXRlKToKKyAgICAg
ICAgKHJldHVybi50b2tlbik6CisgICAgICAgIChyZXR1cm4pOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQveG1sLmpzOiBBZGRlZC4KKyAgICAgICAgKENvZGVNaXJyb3IuZGVmaW5lTW9k
ZS4pOgorICAgICAgICAoQ29kZU1pcnJvci5kZWZpbmVNb2RlKToKKwogMjAxMi0wOC0wNyAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
T25seSB1c2UgcHVibGljIFBsYXRmb3JtIEFQSSBpbiBOb25Db21wb3NpdGVkQ29udGVudEhvc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCBhNjJiYThiNjVhYTdiNjU3ZGY5MDcyZDY3YjYwOWNjMWQ0ZGUw
NWIwLi40ODViN2Q4ZGUzOWRiN2U0MTk0YTEwNDgzYmQxYzcyN2I0ZWIwODQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC02MjUzLDYgKzYyNTMsMTIgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJhclBhbmUuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanMnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ2hlY2tib3guanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9u
dC1lbmQvQ29kZU1pcnJvclRleHRFZGl0b3IuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvY29kZW1pcnJvci5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9jc3MuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvamF2YXNjcmlwdC5q
cycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC94bWwuanMnLAorICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvaHRtbG1peGVkLmpzJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL0NvbG9yLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9Db25zb2xlTWVzc2FnZS5qcycsCkBAIC02NDQxLDYgKzY0NDcsOCBAQAogICAgICAg
ICBdLAogICAgICAgICAnd2ViaW5zcGVjdG9yX3N0YW5kYWxvbmVfY3NzX2ZpbGVzJzogWwogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvYXVkaXRzUGFuZWwuY3NzJywKKyAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL2NvZGVtaXJyb3IuY3NzJywKKyAgICAgICAgICAgICdp
bnNwZWN0b3IvZnJvbnQtZW5kL2NtZGV2dG9vbHMuY3NzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL2RhdGFHcmlkLmNzcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9lbGVtZW50c1BhbmVsLmNzcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9maWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cuY3NzJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNmRlNDg5OWE4ZWNlYzlmZTc4MWMxMTc4
OTIxZWFhNGM0MDE5NTVkZC4uYzdkZDAxMDkzYjU3M2RiZjIwYjA3ZDE2Mzk0M2UyYTU5MzU2MTMx
MiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAg
LTc1NDE4LDYgKzc1NDE4LDIyIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXENvZGVNaXJyb3JUZXh0RWRp
dG9yLmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxjb2RlbWlycm9yLmpzIgorCQkJCQk+CisJCQkJPC9G
aWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVu
ZFxjb2RlbWlycm9yLmNzcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcY21kZXZ0b29scy5jc3MiCisJCQkJ
CT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0
b3JcZnJvbnQtZW5kXENvbG9yLmpzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5IGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CmluZGV4IGU2YjQ5OGVlYmFmZjlk
Y2EzNmNlOGM4Y2ZhMThiNDI0NjAwZGFjNTMuLjA5YjFkMzRlZjk4YzAxOGUxOTNhMDUyM2E4NDJm
N2Y4MWVhZmIyNmUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxl
LWZyb250LWVuZC5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9u
dC1lbmQucHkKQEAgLTExNiw2ICsxMTYsNyBAQCBtb2R1bGVzID0gWwogICAgICAgICAic291cmNl
cyI6IFsKICAgICAgICAgICAgICJBZHZhbmNlZFNlYXJjaENvbnRyb2xsZXIuanMiLAogICAgICAg
ICAgICAgIkNoZWNrYm94LmpzIiwKKyAgICAgICAgICAgICJDb2RlTWlycm9yVGV4dEVkaXRvci5q
cyIsCiAgICAgICAgICAgICAiQ29udGV4dE1lbnUuanMiLAogICAgICAgICAgICAgIkNvb2tpZXNU
YWJsZS5qcyIsCiAgICAgICAgICAgICAiRE9NU3ludGF4SGlnaGxpZ2h0ZXIuanMiLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db2RlTWlycm9yVGV4dEVk
aXRvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29kZU1pcnJvclRl
eHRFZGl0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWRmZDZhNjcxNjk5MGNiMTgzNGIxOGM0MjJhZWNjMDQw
NzUyY2ZlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQ29kZU1pcnJvclRleHRFZGl0b3IuanMKQEAgLTAsMCArMSw0MTMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBj
b25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5WaWV3fQorICogQGltcGxlbWVu
dHMge1dlYkluc3BlY3Rvci5UZXh0RWRpdG9yfQorICogQHBhcmFtIHs/c3RyaW5nfSB1cmwKKyAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JEZWxlZ2F0ZX0gZGVsZWdhdGUKKyAqLwor
V2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yID0gZnVuY3Rpb24odXJsLCBkZWxlZ2F0
ZSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOworICAgIHRoaXMuX2RlbGVn
YXRlID0gZGVsZWdhdGU7CisgICAgdGhpcy5fdXJsID0gdXJsOworCisgICAgdGhpcy5yZWdpc3Rl
clJlcXVpcmVkQ1NTKCJjb2RlbWlycm9yLmNzcyIpOworICAgIHRoaXMucmVnaXN0ZXJSZXF1aXJl
ZENTUygiY21kZXZ0b29scy5jc3MiKTsKKworICAgIHRoaXMuX2NvZGVNaXJyb3IgPSBDb2RlTWly
cm9yKHRoaXMuZWxlbWVudCwgeworICAgICAgICBsaW5lTnVtYmVyczogdHJ1ZSwKKyAgICAgICAg
Zml4ZWRHdXR0ZXI6IHRydWUsCisgICAgICAgIG9uR3V0dGVyQ2xpY2s6IGZ1bmN0aW9uKGNtLCBs
aW5lKSB7CisgICAgICAgICAgICB2YXIgaW5mbyA9IGNtLmxpbmVJbmZvKGxpbmUpOworICAgICAg
ICAgICAgaWYgKGluZm8ubWFya2VyVGV4dCkKKyAgICAgICAgICAgICAgICBjbS5jbGVhck1hcmtl
cihsaW5lKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjbS5zZXRNYXJrZXIo
bGluZSwgIjxzcGFuIHN0eWxlPVwiY29sb3I6IHdoaXRlOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxl
ZnQ6IDA7IHJpZ2h0OiAtNnB4OyBib3JkZXItd2lkdGg6IDAgOHB4IDBweCAycHg7IC13ZWJraXQt
Ym9yZGVyLWltYWdlOiB1cmwoSW1hZ2VzL2JyZWFrcG9pbnRCb3JkZXIucG5nKSAxIDE0IDEgMjtc
Ij4lTiU8L3NwYW4+eCIpOworICAgICAgICB9LAorICAgICAgICBvbkNoYW5nZTogdGhpcy5fb25D
aGFuZ2UuYmluZCh0aGlzKSwKKyAgICAgICAgZXh0cmFLZXlzOiB7ICJDdHJsLVMiOiB0aGlzLl9j
b21taXRFZGl0aW5nLmJpbmQodGhpcykgfQorICAgIH0pOworCisgICAgdGhpcy5fbGFzdFJhbmdl
ID0gdGhpcy5yYW5nZSgpOworCisgICAgdGhpcy5lbGVtZW50LmZpcnN0Q2hpbGQuYWRkU3R5bGVD
bGFzcygic291cmNlLWNvZGUiKTsKKyAgICB0aGlzLmVsZW1lbnQuZmlyc3RDaGlsZC5hZGRTdHls
ZUNsYXNzKCJmaWxsIik7CisKKyAgICAvLyBGSVhNRSB0ZW1wb3JhcmlseSBleHBvc2UgaW5zdGFu
Y2UgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcywgcmVtb3ZlIHdoZW4gbW9yZSBzdGFibGUKKyAgICB0
aGlzLmVsZW1lbnQuaW5zdGFuY2UgPSB0aGlzLl9jb2RlTWlycm9yOworfQorCitXZWJJbnNwZWN0
b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBtaW1lVHlwZQorICAgICAqLworICAgIHNldCBtaW1lVHlwZShtaW1lVHlw
ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iuc2V0T3B0aW9uKCJtb2RlIiwgbWlt
ZVR5cGUpOworICAgICAgICBzd2l0Y2gobWltZVR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgInRl
eHQvaHRtbCI6IHRoaXMuX2NvZGVNaXJyb3Iuc2V0T3B0aW9uKCJ0aGVtZSIsICJ3ZWItaW5zcGVj
dG9yLWh0bWwiKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJ0ZXh0L2NzcyI6IHRoaXMuX2Nv
ZGVNaXJyb3Iuc2V0T3B0aW9uKCJ0aGVtZSIsICJ3ZWItaW5zcGVjdG9yLWNzcyIpOyBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgInRleHQvamF2YXNjcmlwdCI6IHRoaXMuX2NvZGVNaXJyb3Iuc2V0
T3B0aW9uKCJ0aGVtZSIsICJ3ZWItaW5zcGVjdG9yLWpzIik7IGJyZWFrOworICAgICAgICB9Cisg
ICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmVhZE9ubHkKKyAgICAg
Ki8KKyAgICBzZXRSZWFkT25seTogZnVuY3Rpb24ocmVhZE9ubHkpCisgICAgeworICAgICAgICBj
b25zb2xlLmxvZygnY2FsbGVkIHNldFJlYWRPbmx5JywgYXJndW1lbnRzKTsKKyAgICAgICAgdGhp
cy5fcmVhZE9ubHkgPSByZWFkT25seTsKKyAgICAgICAgdGhpcy5fY29kZU1pcnJvci5zZXRPcHRp
b24oInJlYWRPbmx5IiwgcmVhZE9ubHkpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0
dXJuIHtib29sZWFufQorICAgICAqLworICAgIHJlYWRPbmx5OiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICBjb25zb2xlLmxvZygnY2FsbGVkIHJlYWRPbmx5JywgYXJndW1lbnRzKTsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0
dXJuIHtFbGVtZW50fQorICAgICAqLworICAgIGRlZmF1bHRGb2N1c2VkRWxlbWVudDogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgY29uc29sZS5sb2coJ2NhbGxlZCBkZWZhdWx0Rm9jdXNlZEVs
ZW1lbnQnLCBhcmd1bWVudHMpOworICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50LmZpcnN0Q2hp
bGQ7CisgICAgfSwKKworICAgIGZvY3VzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlz
Ll9jb2RlTWlycm9yLmZvY3VzKCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBsaW5lTnVtYmVyCisgICAgICovCisgICAgcmV2ZWFsTGluZTogZnVuY3Rpb24obGlu
ZU51bWJlcikKKyAgICB7CisgICAgICAgIGNvbnNvbGUubG9nKCdjYWxsZWQgcmV2ZWFsTGluZScs
IGFyZ3VtZW50cyk7CisgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iuc2V0Q3Vyc29yKHtsaW5lOiBs
aW5lTnVtYmVyfSk7CisgICAgICAgIHZhciBjb29yZHMgPSB0aGlzLl9jb2RlTWlycm9yLmN1cnNv
ckNvb3JkcygpOworICAgICAgICB0aGlzLl9jb2RlTWlycm9yLnNjcm9sbFRvKGNvb3Jkcy54LCBj
b29yZHMueSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5l
TnVtYmVyCisgICAgICogQHBhcmFtIHtzdHJpbmd8RWxlbWVudH0gZGVjb3JhdGlvbgorICAgICAq
LworICAgIGFkZERlY29yYXRpb246IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGRlY29yYXRpb24pCisg
ICAgeworICAgICAgICBjb25zb2xlLmxvZygnY2FsbGVkIGFkZERlY29yYXRpb24nLCBhcmd1bWVu
dHMpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51bWJl
cgorICAgICAqIEBwYXJhbSB7c3RyaW5nfEVsZW1lbnR9IGRlY29yYXRpb24KKyAgICAgKi8KKyAg
ICByZW1vdmVEZWNvcmF0aW9uOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBkZWNvcmF0aW9uKQorICAg
IHsKKyAgICAgICAgY29uc29sZS5sb2coJ2NhbGxlZCByZW1vdmVEZWNvcmF0aW9uJywgYXJndW1l
bnRzKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGV4
dFJhbmdlfSByYW5nZQorICAgICAqLworICAgIG1hcmtBbmRSZXZlYWxSYW5nZTogZnVuY3Rpb24o
cmFuZ2UpCisgICAgeworICAgICAgICBjb25zb2xlLmxvZygnY2FsbGVkIG1hcmtBbmRSZXZlYWxS
YW5nZScsIGFyZ3VtZW50cyk7CisgICAgICAgIGlmIChyYW5nZSkKKyAgICAgICAgICAgIHRoaXMu
c2V0U2VsZWN0aW9uKHJhbmdlKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IGxpbmVOdW1iZXIKKyAgICAgKi8KKyAgICBoaWdobGlnaHRMaW5lOiBmdW5jdGlvbihs
aW5lTnVtYmVyKQorICAgIHsKKyAgICAgICAgY29uc29sZS5sb2coJ2NhbGxlZCBoaWdobGlnaHRM
aW5lJywgYXJndW1lbnRzKTsKKyAgICAgICAgLy90aGlzLnNjcm9sbFRvTGluZShsaW5lTnVtYmVy
KTsKKyAgICAgICAgdmFyIGxpbmUgPSB0aGlzLl9jb2RlTWlycm9yLmdldExpbmUobGluZU51bWJl
cik7CisgICAgICAgIHZhciBtYXJrID0gdGhpcy5fY29kZU1pcnJvci5tYXJrVGV4dCh7bGluZTps
aW5lTnVtYmVyLGNoOjB9LHtsaW5lOmxpbmVOdW1iZXIsY2g6bGluZS5sZW5ndGh9LCJDb2RlTWly
cm9yLXNlYXJjaGluZyIpOworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bWFyay5jbGVh
cigpO30sMTAwMCk7CisgICAgfSwKKworICAgIGNsZWFyTGluZUhpZ2hsaWdodDogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgY29uc29sZS5sb2coJ2NhbGxlZCBjbGVhckxpbmVIaWdobGlnaHQn
LCBhcmd1bWVudHMpOworICAgIH0sCisKKyAgICBmcmVlQ2FjaGVkRWxlbWVudHM6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUubG9nKCdjYWxsZWQgZnJlZUNhY2hlZEVsZW1lbnRz
JywgYXJndW1lbnRzKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7QXJyYXku
PEVsZW1lbnQ+fQorICAgICAqLworICAgIGVsZW1lbnRzVG9SZXN0b3JlU2Nyb2xsUG9zaXRpb25z
Rm9yOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBjb25zb2xlLmxvZygnY2FsbGVkIGVsZW1l
bnRzVG9SZXN0b3JlU2Nyb2xsUG9zaXRpb25zRm9yJywgYXJndW1lbnRzKTsKKyAgICAgICAgcmV0
dXJuIFtdOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5U
ZXh0RWRpdG9yfSB0ZXh0RWRpdG9yCisgICAgICovCisgICAgaW5oZXJpdFNjcm9sbFBvc2l0aW9u
czogZnVuY3Rpb24odGV4dEVkaXRvcikKKyAgICB7CisgICAgICAgIGNvbnNvbGUubG9nKCdjYWxs
ZWQgaW5oZXJpdFNjcm9sbFBvc2l0aW9ucycsIGFyZ3VtZW50cyk7CisgICAgfSwKKworICAgIGJl
Z2luVXBkYXRlczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgY29uc29sZS5sb2coJ2NhbGxl
ZCBiZWdpblVwZGF0ZXMnLCBhcmd1bWVudHMpOworICAgIH0sCisKKyAgICBlbmRVcGRhdGVzOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICBjb25zb2xlLmxvZygnY2FsbGVkIGVuZFVwZGF0ZXMn
LCBhcmd1bWVudHMpOworICAgIH0sCisKKyAgICBvblJlc2l6ZTogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgY29uc29sZS5sb2coJ2NhbGxlZCBvblJlc2l6ZScsIGFyZ3VtZW50cyk7CisgICAg
ICAgIHRoaXMuX2NvZGVNaXJyb3IucmVmcmVzaCgpOworICAgIH0sCisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9IHJhbmdlCisgICAgICogQHBhcmFtIHtz
dHJpbmd9IHRleHQKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfQorICAg
ICAqLworICAgIGVkaXRSYW5nZTogZnVuY3Rpb24ocmFuZ2UsIHRleHQpCisgICAgeworICAgICAg
ICBjb25zb2xlLmxvZygnY2FsbGVkIGVkaXRSYW5nZScsIGFyZ3VtZW50cyk7CisgICAgICAgIHRo
aXMuX2RlbGVnYXRlLmJlZm9yZVRleHRDaGFuZ2VkKCk7CisKKyAgICAgICAgdmFyIHBvcyA9IHRo
aXMuX3RvUG9zKHJhbmdlKTsKKyAgICAgICAgdGhpcy5fY29kZU1pcnJvci5yZXBsYWNlUmFuZ2Uo
dGV4dCwgcG9zLnN0YXJ0LCBwb3MuZW5kKTsKKyAgICAgICAgdmFyIG5ld1JhbmdlID0gdGhpcy5f
dG9SYW5nZShwb3Muc3RhcnQsIHRoaXMuX2NvZGVNaXJyb3IucG9zRnJvbUluZGV4KHRoaXMuX2Nv
ZGVNaXJyb3IuaW5kZXhGcm9tUG9zKHBvcy5zdGFydCkgKyB0ZXh0Lmxlbmd0aCkpOworCisgICAg
ICAgIHRoaXMuX2RlbGVnYXRlLmFmdGVyVGV4dENoYW5nZWQocmFuZ2UsIG5ld1JhbmdlKTsKKwor
ICAgICAgICByZXR1cm4gbmV3UmFuZ2U7CisgICAgfSwKKworICAgIF9vbkNoYW5nZTogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fZGVsZWdhdGUuYmVmb3JlVGV4dENoYW5nZWQoKTsK
KyAgICAgICAgdmFyIG5ld1JhbmdlID0gdGhpcy5yYW5nZSgpOworICAgICAgICB0aGlzLl9kZWxl
Z2F0ZS5hZnRlclRleHRDaGFuZ2VkKHRoaXMuX2xhc3RSYW5nZSwgbmV3UmFuZ2UpOworICAgICAg
ICB0aGlzLl9sYXN0UmFuZ2UgPSBuZXdSYW5nZTsKKyAgICB9LAorCisgICAgX2NvbW1pdEVkaXRp
bmc6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdGhpcy5fZGVsZWdhdGUuY29tbWl0RWRp
dGluZygpOworICAgICAgICBpZiAodGhpcy5fdXJsICYmIFdlYkluc3BlY3Rvci5maWxlTWFuYWdl
ci5pc1VSTFNhdmVkKHRoaXMuX3VybCkpCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZmlsZU1h
bmFnZXIuc2F2ZSh0aGlzLl91cmwsIHRoaXMudGV4dCgpLCBmYWxzZSk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0sCisKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5l
TnVtYmVyCisgICAgICovCisgICAgc2Nyb2xsVG9MaW5lOiBmdW5jdGlvbihsaW5lTnVtYmVyKQor
ICAgIHsKKyAgICAgICAgY29uc29sZS5sb2coJ2NhbGxlZCBzY3JvbGxUb0xpbmUnLCBhcmd1bWVu
dHMpOworICAgICAgICB0aGlzLl9jb2RlTWlycm9yLnNldEN1cnNvcih7bGluZTpsaW5lTnVtYmVy
LCBjaDowfSk7CisgICAgICAgIC8vdGhpcy5fbWFpblBhbmVsLnNjcm9sbFRvTGluZShsaW5lTnVt
YmVyKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlRl
eHRSYW5nZX0KKyAgICAgKi8KKyAgICBzZWxlY3Rpb246IGZ1bmN0aW9uKHRleHRSYW5nZSkKKyAg
ICB7CisgICAgICAgIGNvbnNvbGUubG9nKCdjYWxsZWQgc2VsZWN0aW9uJywgYXJndW1lbnRzKTsK
KyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4g
e1dlYkluc3BlY3Rvci5UZXh0UmFuZ2U/fQorICAgICAqLworICAgIGxhc3RTZWxlY3Rpb246IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUubG9nKCdjYWxsZWQgbGFzdFNlbGVjdGlv
bicsIGFyZ3VtZW50cyk7CisgICAgICAgIHJldHVybiB0aGlzLl9sYXN0U2VsZWN0aW9uOworICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9IHRl
eHRSYW5nZQorICAgICAqLworICAgIHNldFNlbGVjdGlvbjogZnVuY3Rpb24odGV4dFJhbmdlKQor
ICAgIHsKKyAgICAgICAgY29uc29sZS5sb2coJ2NhbGxlZCBzZXRTZWxlY3Rpb24nLCBhcmd1bWVu
dHMpOworICAgICAgICB0aGlzLl9sYXN0U2VsZWN0aW9uID0gdGV4dFJhbmdlOworICAgICAgICB2
YXIgcG9zID0gdGhpcy5fdG9Qb3ModGV4dFJhbmdlKTsKKyAgICAgICAgdGhpcy5fY29kZU1pcnJv
ci5zZXRTZWxlY3Rpb24ocG9zLnN0YXJ0LCBwb3MuZW5kKTsKKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQKKyAgICAgKi8KKyAgICBzZXRUZXh0OiBmdW5jdGlv
bih0ZXh0KQorICAgIHsKKyAgICAgICAgY29uc29sZS5sb2coJ2NhbGxlZCBzZXRUZXh0JywgYXJn
dW1lbnRzKTsKKyAgICAgICAgdGhpcy5fY29kZU1pcnJvci5zZXRWYWx1ZSh0ZXh0KTsKKyAgICB9
LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIHRleHQ6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUubG9nKCdjYWxsZWQgdGV4dCcsIGFy
Z3VtZW50cyk7CisgICAgICAgIHJldHVybiB0aGlzLl9jb2RlTWlycm9yLmdldFZhbHVlKCk7Cisg
ICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9
CisgICAgICovCisgICAgcmFuZ2U6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUu
bG9nKCdjYWxsZWQgcmFuZ2UnLCBhcmd1bWVudHMpOworICAgICAgICB2YXIgbGluZUNvdW50ID0g
dGhpcy5saW5lc0NvdW50OworICAgICAgICByZXR1cm4gdGhpcy5fdG9SYW5nZSh7bGluZTowLCBj
aDowfSwgdGhpcy5fY29kZU1pcnJvci5wb3NGcm9tSW5kZXgodGhpcy5fY29kZU1pcnJvci5nZXRW
YWx1ZSgpLmxlbmd0aCkpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gbGluZU51bWJlcgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBsaW5l
OiBmdW5jdGlvbihsaW5lTnVtYmVyKQorICAgIHsKKyAgICAgICAgY29uc29sZS5sb2coJ2NhbGxl
ZCBsaW5lJywgYXJndW1lbnRzKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3IuZ2V0
TGluZShsaW5lTnVtYmVyKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7bnVt
YmVyfQorICAgICAqLworICAgIGdldCBsaW5lc0NvdW50KCkKKyAgICB7CisgICAgICAgIGNvbnNv
bGUubG9nKCdjYWxsZWQgZ2V0IExpbmVzQ291bnQnLCBhcmd1bWVudHMpOworICAgICAgICByZXR1
cm4gdGhpcy5fY29kZU1pcnJvci5saW5lQ291bnQoKTsKKyAgICB9LAorCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtudW1iZXJ9IGxpbmUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAg
ICAqIEBwYXJhbSB7T2JqZWN0P30gdmFsdWUKKyAgICAgKi8KKyAgICBzZXRBdHRyaWJ1dGU6IGZ1
bmN0aW9uKGxpbmUsIG5hbWUsIHZhbHVlKQorICAgIHsKKyAgICAgICAgY29uc29sZS5sb2coJ2Nh
bGxlZCBzZXRBdHRyaWJ1dGUnLCBhcmd1bWVudHMpOworICAgICAgICB2YXIgaGFuZGxlID0gdGhp
cy5fY29kZU1pcnJvci5nZXRMaW5lSGFuZGxlKGxpbmUpOworICAgICAgICBpZiAoaGFuZGxlLmF0
dHJpYnV0ZXMgPT09IHVuZGVmaW5lZCkgaGFuZGxlLmF0dHJpYnV0ZXMgPSB7fTsKKyAgICAgICAg
aGFuZGxlLmF0dHJpYnV0ZXNbbmFtZV0gPSB2YWx1ZTsKKyAgICB9LAorCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtudW1iZXJ9IGxpbmUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAg
ICAqIEByZXR1cm4ge09iamVjdHxudWxsfSB2YWx1ZQorICAgICAqLworICAgIGdldEF0dHJpYnV0
ZTogZnVuY3Rpb24obGluZSwgbmFtZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUubG9nKCdjYWxs
ZWQgZ2V0QXR0cmlidXRlJywgYXJndW1lbnRzKTsKKyAgICAgICAgdmFyIGhhbmRsZSA9IHRoaXMu
X2NvZGVNaXJyb3IuZ2V0TGluZUhhbmRsZShsaW5lKTsKKyAgICAgICAgcmV0dXJuIGhhbmRsZS5h
dHRyaWJ1dGVzICYmIGhhbmRsZS5hdHRyaWJ1dGVzW25hbWVdICE9PSB1bmRlZmluZWQgPyBoYW5k
bGUuYXR0cmlidXRlc1tuYW1lXSA6IG51bGw7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSBsaW5lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKi8K
KyAgICByZW1vdmVBdHRyaWJ1dGU6IGZ1bmN0aW9uKGxpbmUsIG5hbWUpCisgICAgeworICAgICAg
ICBjb25zb2xlLmxvZygnY2FsbGVkIHJlbW92ZUF0dHJpYnV0ZScsIGFyZ3VtZW50cyk7CisgICAg
ICAgIHZhciBoYW5kbGUgPSB0aGlzLl9jb2RlTWlycm9yLmdldExpbmVIYW5kbGUobGluZSk7Cisg
ICAgICAgIGlmIChoYW5kbGUuYXR0cmlidXRlcyAhPT0gdW5kZWZpbmVkKSBkZWxldGUgaGFuZGxl
LmF0dHJpYnV0ZXNbbmFtZV07CisgICAgfSwKKworICAgIHdhc1Nob3duOiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICBjb25zb2xlLmxvZygnY2FsbGVkIHdhc1Nob3duJywgYXJndW1lbnRzKTsK
KyAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnQpIHsKKyAgICAgICAgICAgIHRoaXMuX2NvZGVNaXJy
b3IucmVwbGFjZVJhbmdlKHRoaXMuX2NvbnRlbnQuc3RyaW5nLCB0aGlzLl9jb250ZW50LnBvcy5z
dGFydCwgdGhpcy5fY29udGVudC5wb3MuZW5kKTsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9j
b250ZW50OworICAgICAgICB9CisgICAgfSwKKworICAgIHdpbGxIaWRlOiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICBjb25zb2xlLmxvZygnY2FsbGVkIHdpbGxIaWRlJywgYXJndW1lbnRzKTsK
KyAgICB9LAorCisgICAgX3RleHRDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAg
ICAgIGNvbnNvbGUubG9nKCdjYWxsZWQgX3RleHRDaGFuZ2VkJywgYXJndW1lbnRzKTsKKyAgICAg
ICAgdmFyIHN0cmluZyA9IHRoaXMuX3RleHRNb2RlbC5jb3B5UmFuZ2UoZXZlbnQuZGF0YS5uZXdS
YW5nZSk7CisgICAgICAgIHZhciBwb3MgPSB0aGlzLl90b1BvcyhldmVudC5kYXRhLm9sZFJhbmdl
KTsKKyAgICAgICAgaWYgKCF0aGlzLmlzU2hvd2luZygpKSB7CisgICAgICAgICAgICB0aGlzLl9j
b250ZW50ID0ge3N0cmluZzogc3RyaW5nLCBwb3M6IHBvc307CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9jb2RlTWlycm9yLnJlcGxhY2VSYW5nZShzdHJp
bmcsIHBvcy5zdGFydCwgcG9zLmVuZCk7CisgICAgfSwKKworICAgIF90b1BvczogZnVuY3Rpb24o
cmFuZ2UpCisgICAgeworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgc3RhcnQ6IHtsaW5l
OiByYW5nZS5zdGFydExpbmUsIGNoOiByYW5nZS5zdGFydENvbHVtbn0sCisgICAgICAgICAgICBl
bmQ6IHtsaW5lOiByYW5nZS5lbmRMaW5lLCBjaDogcmFuZ2UuZW5kQ29sdW1ufQorICAgICAgICB9
CisgICAgfSwKKworICAgIF90b1JhbmdlOiBmdW5jdGlvbihzdGFydCwgZW5kKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKHN0YXJ0LmxpbmUsIHN0YXJ0
LmNoLCBlbmQubGluZSwgZW5kLmNoKTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5Db2RlTWly
cm9yVGV4dEVkaXRvci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlZpZXcucHJv
dG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9T
ZXR0aW5ncy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3Mu
anMKaW5kZXggMWVjMmM1NDJjYWVjNjE5NTdlMDczMjg5YzNiOWFjYTc4ZTFiMzI2Ni4uMTI5OTU3
YTA2NzU3NjgzY2JmODU2ZTY0NjliNGQ1ZjRlNjM1NDhhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCkBAIC0xOTMsNiArMTkzLDcgQEAgV2Vi
SW5zcGVjdG9yLkV4cGVyaW1lbnRzU2V0dGluZ3MgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5nZW9s
b2NhdGlvbk92ZXJyaWRlID0gdGhpcy5fY3JlYXRlRXhwZXJpbWVudCgiZ2VvbG9jYXRpb25PdmVy
cmlkZSIsICJPdmVycmlkZSBEZXZpY2UgR2VvbG9jYXRpb24iKTsKICAgICB0aGlzLmRldmljZU9y
aWVudGF0aW9uT3ZlcnJpZGUgPSB0aGlzLl9jcmVhdGVFeHBlcmltZW50KCJkZXZpY2VPcmllbnRh
dGlvbk92ZXJyaWRlIiwgIk92ZXJyaWRlIERldmljZSBPcmllbnRhdGlvbiIpOwogICAgIHRoaXMu
c2FzcyA9IHRoaXMuX2NyZWF0ZUV4cGVyaW1lbnQoInNhc3MiLCAiU3VwcG9ydCBmb3IgU0FTUyIp
OworICAgIHRoaXMuY29kZW1pcnJvciA9IHRoaXMuX2NyZWF0ZUV4cGVyaW1lbnQoIkNvZGVNaXJy
b3IiLCAiVXNlIENvZGVNaXJyb3IgYXMgZWRpdG9yIik7CiAKICAgICB0aGlzLl9jbGVhblVwU2V0
dGluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Tb3VyY2VGcmFtZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291
cmNlRnJhbWUuanMKaW5kZXggMjc1ODljNzBjOGRkYWJlMGExYzM3MjI3YzZiMjVhODg4ODRhNjA0
Mi4uZTE0NTdhY2JjMmQ2NjU0ODgwZWUwNTNmZTk3YWY1Y2I0YzZmZjI5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCkBAIC00Miw3
ICs0MiwxMSBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUgPSBmdW5jdGlvbihjb250ZW50UHJv
dmlkZXIpCiAgICAgdGhpcy5fY29udGVudFByb3ZpZGVyID0gY29udGVudFByb3ZpZGVyOwogCiAg
ICAgdmFyIHRleHRFZGl0b3JEZWxlZ2F0ZSA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckRl
bGVnYXRlRm9yU291cmNlRnJhbWUodGhpcyk7Ci0gICAgdGhpcy5fdGV4dEVkaXRvciA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGVmYXVsdFRleHRFZGl0b3IodGhpcy5fdXJsLCB0ZXh0RWRpdG9yRGVsZWdh
dGUpOworCisgICAgaWYgKFdlYkluc3BlY3Rvci5leHBlcmltZW50c1NldHRpbmdzLmNvZGVtaXJy
b3IuaXNFbmFibGVkKCkpCisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IgPSBuZXcgV2ViSW5zcGVj
dG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yKHRoaXMuX3VybCwgdGV4dEVkaXRvckRlbGVnYXRlKTsK
KyAgICBlbHNlCisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLkRl
ZmF1bHRUZXh0RWRpdG9yKHRoaXMuX3VybCwgdGV4dEVkaXRvckRlbGVnYXRlKTsKIAogICAgIHRo
aXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IC0xOwogICAgIHRoaXMuX3NlYXJjaFJlc3Vs
dHMgPSBbXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
V2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFy
YwppbmRleCAyZDBhMjE1YTI3MmQyOTU2NzEzYzEzYzIwYWMxNDJhNDc5NDNlMjA5Li4xYmZmMjE4
ZWNiZmRiMjc2NGRkZTNkOTQzNjAzOGY0MGYxM2ZmOWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC0xNSw2ICsxNSw3IEBACiAgICAgPGZp
bGU+QnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qczwvZmlsZT4KICAgICA8ZmlsZT5DYWxsU3RhY2tT
aWRlYmFyUGFuZS5qczwvZmlsZT4KICAgICA8ZmlsZT5DaGVja2JveC5qczwvZmlsZT4KKyAgICA8
ZmlsZT5Db2RlTWlycm9yVGV4dEVkaXRvci5qczwvZmlsZT4KICAgICA8ZmlsZT5Db2xvci5qczwv
ZmlsZT4KICAgICA8ZmlsZT5Db21waWxlclNjcmlwdE1hcHBpbmcuanM8L2ZpbGU+CiAgICAgPGZp
bGU+Q29uc29sZU1lc3NhZ2UuanM8L2ZpbGU+CkBAIC0xOTcsNyArMTk4LDkgQEAKICAgICA8Zmls
ZT5Xb3Jrc3BhY2UuanM8L2ZpbGU+CiAgICAgPGZpbGU+VWdsaWZ5SlMvcGFyc2UtanMuanM8L2Zp
bGU+CiAgICAgPGZpbGU+YXVkaXRzUGFuZWwuY3NzPC9maWxlPgorICAgIDxmaWxlPmNvZGVtaXJy
b3IuY3NzPC9maWxlPgogICAgIDxmaWxlPmRhdGFHcmlkLmNzczwvZmlsZT4KKyAgICA8ZmlsZT5j
bWRldnRvb2xzLmNzczwvZmlsZT4KICAgICA8ZmlsZT5kaWFsb2cuY3NzPC9maWxlPgogICAgIDxm
aWxlPmVsZW1lbnRzUGFuZWwuY3NzPC9maWxlPgogICAgIDxmaWxlPmZpbHRlcmVkSXRlbVNlbGVj
dGlvbkRpYWxvZy5jc3M8L2ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2NtZGV2dG9vbHMuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9jbWRldnRvb2xzLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjI2OGRmMzEzZThkZTU4ZjAzOGNl
MzdiYjU2NWMwZTgwOTQ1M2U0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9jbWRldnRvb2xzLmNzcwpAQCAtMCwwICsxLDI2IEBACisuQ29kZU1p
cnJvci1zY3JvbGwgeworICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKK30KKy5Db2RlTWlycm9y
IHsKKyAgbGluZS1oZWlnaHQ6IDEuMWVtOworfQorLmNtLXMtd2ViLWluc3BlY3Rvci1qcyBzcGFu
LmNtLWtleXdvcmQge2NvbG9yOiByZ2IoMTcwLCAxMywgMTQ1KTt9CisuY20tcy13ZWItaW5zcGVj
dG9yLWpzIHNwYW4uY20tbnVtYmVyIHtjb2xvcjogcmdiKDI4LCAwLCAyMDcpO30KKy5jbS1zLXdl
Yi1pbnNwZWN0b3ItanMgc3Bhbi5jbS1jb21tZW50IHtjb2xvcjogcmdiKDAsIDExNiwgMCk7fQor
LmNtLXMtd2ViLWluc3BlY3Rvci1qcyBzcGFuLmNtLXN0cmluZyB7Y29sb3I6IHJnYigxOTYsIDI2
LCAyMik7fQorLmNtLXMtd2ViLWluc3BlY3Rvci1qcyBzcGFuLmNtLXN0cmluZy0yIHtjb2xvcjog
cmdiKDE5NiwgMjYsIDIyKTt9CisKKy5jbS1zLXdlYi1pbnNwZWN0b3ItY3NzIHNwYW4uY20ta2V5
d29yZCB7IGNvbG9yOiByZ2IoNywgMTQ0LCAxNTQpO30KKy5jbS1zLXdlYi1pbnNwZWN0b3ItY3Nz
IHNwYW4uY20tbnVtYmVyIHtjb2xvcjogcmdiKDUwLCAwLCAyNTUpO30KKy5jbS1zLXdlYi1pbnNw
ZWN0b3ItY3NzIHNwYW4uY20tY29tbWVudCB7Y29sb3I6IHJnYigwLCAxMTYsIDApO30KKy5jbS1z
LXdlYi1pbnNwZWN0b3ItY3NzIHNwYW4uY20tc3RyaW5nIHtjb2xvcjogcmdiKDcsIDE0NCwgMTU0
KTt9CisuY20tcy13ZWItaW5zcGVjdG9yLWNzcyBzcGFuLmNtLXN0cmluZy0yIHtjb2xvcjogcmdi
KDcsIDE0NCwgMTU0KTt9CisuY20tcy13ZWItaW5zcGVjdG9yLWNzcyBzcGFuLmNtLWxpbmsge2Nv
bG9yOiByZ2IoNywgMTQ0LCAxNTQpO30KKy5jbS1zLXdlYi1pbnNwZWN0b3ItY3NzIHNwYW4uY20t
dmFyaWFibGUge2NvbG9yOiByZ2IoMjAwLCAwLCAwKTt9CisKKy5jbS1zLXdlYi1pbnNwZWN0b3It
aHRtbCBzcGFuLmNtLW1ldGEge2NvbG9yOiByZ2IoMTkyLCAxOTIsIDE5Mik7fQorLmNtLXMtd2Vi
LWluc3BlY3Rvci1odG1sIHNwYW4uY20tY29tbWVudCB7Y29sb3I6IHJnYigzNSwgMTEwLCAzNyk7
fQorLmNtLXMtd2ViLWluc3BlY3Rvci1odG1sIHNwYW4uY20tc3RyaW5nIHtjb2xvcjogcmdiKDI2
LCAyNiwgMTY2KTt9CisuY20tcy13ZWItaW5zcGVjdG9yLWh0bWwgc3Bhbi5jbS10YWcge2NvbG9y
OiByZ2IoMTM2LCAxOCwgMTI4KTt9CisuY20tcy13ZWItaW5zcGVjdG9yLWh0bWwgc3Bhbi5jbS1h
dHRyaWJ1dGUge2NvbG9yOiByZ2IoMTUzLCA2OSwgMCk7fQorLmNtLXMtd2ViLWluc3BlY3Rvci1o
dG1sIHNwYW4uY20tbGluayB7Y29sb3I6ICMwMGU7fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9jb2RlbWlycm9yLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvY29kZW1pcnJvci5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjBlOTFiMmQ3MzNh
MTFmZmRhMWIwZTJmZjNiNTBhNGIzMGI1YmFjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvY29kZW1pcnJvci5jc3MKQEAgLTAsMCArMSwxNzMg
QEAKKy5Db2RlTWlycm9yIHsKKyAgbGluZS1oZWlnaHQ6IDFlbTsKKyAgZm9udC1mYW1pbHk6IG1v
bm9zcGFjZTsKKworICAvKiBOZWNlc3Nhcnkgc28gdGhlIHNjcm9sbGJhciBjYW4gYmUgYWJzb2x1
dGVseSBwb3NpdGlvbmVkIHdpdGhpbiB0aGUgd3JhcHBlciBvbiBMaW9uLiAqLworICBwb3NpdGlv
bjogcmVsYXRpdmU7CisgIC8qIFRoaXMgcHJldmVudHMgdW53YW50ZWQgc2Nyb2xsYmFycyBmcm9t
IHNob3dpbmcgdXAgb24gdGhlIGJvZHkgYW5kIHdyYXBwZXIgaW4gSUUuICovCisgIG92ZXJmbG93
OiBoaWRkZW47Cit9CisKKy5Db2RlTWlycm9yLXNjcm9sbCB7CisgIG92ZXJmbG93OiBhdXRvOwor
ICBoZWlnaHQ6IDMwMHB4OworICAvKiBUaGlzIGlzIG5lZWRlZCB0byBwcmV2ZW50IGFuIElFWzY3
XSBidWcgd2hlcmUgdGhlIHNjcm9sbGVkIGNvbnRlbnQKKyAgICAgaXMgdmlzaWJsZSBvdXRzaWRl
IG9mIHRoZSBzY3JvbGxpbmcgYm94LiAqLworICBwb3NpdGlvbjogcmVsYXRpdmU7CisgIG91dGxp
bmU6IG5vbmU7Cit9CisKKy8qIFZlcnRpY2FsIHNjcm9sbGJhciAqLworLkNvZGVNaXJyb3Itc2Ny
b2xsYmFyIHsKKyAgcG9zaXRpb246IGFic29sdXRlOworICByaWdodDogMDsgdG9wOiAwOworICBv
dmVyZmxvdy14OiBoaWRkZW47CisgIG92ZXJmbG93LXk6IHNjcm9sbDsKKyAgei1pbmRleDogNTsK
K30KKy5Db2RlTWlycm9yLXNjcm9sbGJhci1pbm5lciB7CisgIC8qIFRoaXMgbmVlZHMgdG8gaGF2
ZSBhIG5vbnplcm8gd2lkdGggaW4gb3JkZXIgZm9yIHRoZSBzY3JvbGxiYXIgdG8gYXBwZWFyCisg
ICAgIGluIEZpcmVmb3ggYW5kIElFOS4gKi8KKyAgd2lkdGg6IDFweDsKK30KKy5Db2RlTWlycm9y
LXNjcm9sbGJhci5jbS1zYi1vdmVybGFwIHsKKyAgLyogRW5zdXJlIHRoYXQgdGhlIHNjcm9sbGJh
ciBhcHBlYXJzIGluIExpb24sIGFuZCB0aGF0IGl0IG92ZXJsYXBzIHRoZSBjb250ZW50CisgICAg
IHJhdGhlciB0aGFuIHNpdHRpbmcgdG8gdGhlIHJpZ2h0IG9mIGl0LiAqLworICBwb3NpdGlvbjog
YWJzb2x1dGU7CisgIHotaW5kZXg6IDE7CisgIGZsb2F0OiBub25lOworICByaWdodDogMDsKKyAg
bWluLXdpZHRoOiAxMnB4OworfQorLkNvZGVNaXJyb3Itc2Nyb2xsYmFyLmNtLXNiLW5vbm92ZXJs
YXAgeworICBtaW4td2lkdGg6IDEycHg7Cit9CisuQ29kZU1pcnJvci1zY3JvbGxiYXIuY20tc2It
aWU3IHsKKyAgbWluLXdpZHRoOiAxOHB4OworfQorCisuQ29kZU1pcnJvci1ndXR0ZXIgeworICBw
b3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDA7IHRvcDogMDsKKyAgei1pbmRleDogMTA7CisgIGJh
Y2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7CisgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNlZWU7
CisgIG1pbi13aWR0aDogMmVtOworICBoZWlnaHQ6IDEwMCU7Cit9CisuQ29kZU1pcnJvci1ndXR0
ZXItdGV4dCB7CisgIGNvbG9yOiAjYWFhOworICB0ZXh0LWFsaWduOiByaWdodDsKKyAgcGFkZGlu
ZzogLjRlbSAuMmVtIC40ZW0gLjRlbTsKKyAgd2hpdGUtc3BhY2U6IHByZSAhaW1wb3J0YW50Owor
ICBjdXJzb3I6IGRlZmF1bHQ7Cit9CisuQ29kZU1pcnJvci1saW5lcyB7CisgIHBhZGRpbmc6IC40
ZW07CisgIHdoaXRlLXNwYWNlOiBwcmU7CisgIGN1cnNvcjogdGV4dDsKK30KKworLkNvZGVNaXJy
b3IgcHJlIHsKKyAgLW1vei1ib3JkZXItcmFkaXVzOiAwOworICAtd2Via2l0LWJvcmRlci1yYWRp
dXM6IDA7CisgIC1vLWJvcmRlci1yYWRpdXM6IDA7CisgIGJvcmRlci1yYWRpdXM6IDA7CisgIGJv
cmRlci13aWR0aDogMDsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyBiYWNrZ3JvdW5kOiB0cmFuc3Bh
cmVudDsKKyAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CisgIGZvbnQtc2l6ZTogaW5oZXJpdDsKKyAg
cGFkZGluZzogMDsgbWFyZ2luOiAwOworICB3aGl0ZS1zcGFjZTogcHJlOworICB3b3JkLXdyYXA6
IG5vcm1hbDsKKyAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7CisgIGNvbG9yOiBpbmhlcml0OworfQor
CisuQ29kZU1pcnJvci13cmFwIHByZSB7CisgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKKyAgd2hp
dGUtc3BhY2U6IHByZS13cmFwOworICB3b3JkLWJyZWFrOiBub3JtYWw7Cit9CisuQ29kZU1pcnJv
ci13cmFwIC5Db2RlTWlycm9yLXNjcm9sbCB7CisgIG92ZXJmbG93LXg6IGhpZGRlbjsKK30KKwor
LkNvZGVNaXJyb3IgdGV4dGFyZWEgeworICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7Cit9CisK
Ky5Db2RlTWlycm9yIHByZS5Db2RlTWlycm9yLWN1cnNvciB7CisgIHotaW5kZXg6IDEwOworICBw
b3NpdGlvbjogYWJzb2x1dGU7CisgIHZpc2liaWxpdHk6IGhpZGRlbjsKKyAgYm9yZGVyLWxlZnQ6
IDFweCBzb2xpZCBibGFjazsKKyAgYm9yZGVyLXJpZ2h0OiBub25lOworICB3aWR0aDogMDsKK30K
Ky5jbS1rZXltYXAtZmF0LWN1cnNvciBwcmUuQ29kZU1pcnJvci1jdXJzb3IgeworICB3aWR0aDog
YXV0bzsKKyAgYm9yZGVyOiAwOworICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKKyAgYmFja2dy
b3VuZDogcmdiYSgwLCAyMDAsIDAsIC40KTsKKyAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5z
Zm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0jNjYwMGM4MDAsIGVuZENvbG9y
c3RyPSM0YzAwYzgwMCk7Cit9CisvKiBLbHVkZ2UgdG8gdHVybiBvZmYgZmlsdGVyIGluIGllOSss
IHdoaWNoIGFsc28gYWNjZXB0cyByZ2JhICovCisuY20ta2V5bWFwLWZhdC1jdXJzb3IgcHJlLkNv
ZGVNaXJyb3ItY3Vyc29yOm5vdCgjbm9uc2Vuc2VfaWQpIHsKKyAgZmlsdGVyOiBwcm9naWQ6RFhJ
bWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZD1mYWxzZSk7Cit9CisuQ29k
ZU1pcnJvciBwcmUuQ29kZU1pcnJvci1jdXJzb3IuQ29kZU1pcnJvci1vdmVyd3JpdGUge30KKy5D
b2RlTWlycm9yLWZvY3VzZWQgcHJlLkNvZGVNaXJyb3ItY3Vyc29yIHsKKyAgdmlzaWJpbGl0eTog
dmlzaWJsZTsKK30KKworZGl2LkNvZGVNaXJyb3Itc2VsZWN0ZWQgeyBiYWNrZ3JvdW5kOiAjZDlk
OWQ5OyB9CisuQ29kZU1pcnJvci1mb2N1c2VkIGRpdi5Db2RlTWlycm9yLXNlbGVjdGVkIHsgYmFj
a2dyb3VuZDogI2Q3ZDRmMDsgfQorCisuQ29kZU1pcnJvci1zZWFyY2hpbmcgeworICBiYWNrZ3Jv
dW5kOiAjZmZhOworICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAwLCAuNCk7Cit9CisKKy8q
IERlZmF1bHQgdGhlbWUgKi8KKworLmNtLXMtZGVmYXVsdCBzcGFuLmNtLWtleXdvcmQge2NvbG9y
OiAjNzA4O30KKy5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1hdG9tIHtjb2xvcjogIzIxOTt9CisuY20t
cy1kZWZhdWx0IHNwYW4uY20tbnVtYmVyIHtjb2xvcjogIzE2NDt9CisuY20tcy1kZWZhdWx0IHNw
YW4uY20tZGVmIHtjb2xvcjogIzAwZjt9CisuY20tcy1kZWZhdWx0IHNwYW4uY20tdmFyaWFibGUg
e2NvbG9yOiBibGFjazt9CisuY20tcy1kZWZhdWx0IHNwYW4uY20tdmFyaWFibGUtMiB7Y29sb3I6
ICMwNWE7fQorLmNtLXMtZGVmYXVsdCBzcGFuLmNtLXZhcmlhYmxlLTMge2NvbG9yOiAjMDg1O30K
Ky5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1wcm9wZXJ0eSB7Y29sb3I6IGJsYWNrO30KKy5jbS1zLWRl
ZmF1bHQgc3Bhbi5jbS1vcGVyYXRvciB7Y29sb3I6IGJsYWNrO30KKy5jbS1zLWRlZmF1bHQgc3Bh
bi5jbS1jb21tZW50IHtjb2xvcjogI2E1MDt9CisuY20tcy1kZWZhdWx0IHNwYW4uY20tc3RyaW5n
IHtjb2xvcjogI2ExMTt9CisuY20tcy1kZWZhdWx0IHNwYW4uY20tc3RyaW5nLTIge2NvbG9yOiAj
ZjUwO30KKy5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1tZXRhIHtjb2xvcjogIzU1NTt9CisuY20tcy1k
ZWZhdWx0IHNwYW4uY20tZXJyb3Ige2NvbG9yOiAjZjAwO30KKy5jbS1zLWRlZmF1bHQgc3Bhbi5j
bS1xdWFsaWZpZXIge2NvbG9yOiAjNTU1O30KKy5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1idWlsdGlu
IHtjb2xvcjogIzMwYTt9CisuY20tcy1kZWZhdWx0IHNwYW4uY20tYnJhY2tldCB7Y29sb3I6ICNj
Yzc7fQorLmNtLXMtZGVmYXVsdCBzcGFuLmNtLXRhZyB7Y29sb3I6ICMxNzA7fQorLmNtLXMtZGVm
YXVsdCBzcGFuLmNtLWF0dHJpYnV0ZSB7Y29sb3I6ICMwMGM7fQorLmNtLXMtZGVmYXVsdCBzcGFu
LmNtLWhlYWRlciB7Y29sb3I6IGJsdWU7fQorLmNtLXMtZGVmYXVsdCBzcGFuLmNtLXF1b3RlIHtj
b2xvcjogIzA5MDt9CisuY20tcy1kZWZhdWx0IHNwYW4uY20taHIge2NvbG9yOiAjOTk5O30KKy5j
bS1zLWRlZmF1bHQgc3Bhbi5jbS1saW5rIHtjb2xvcjogIzAwYzt9CisKK3NwYW4uY20taGVhZGVy
LCBzcGFuLmNtLXN0cm9uZyB7Zm9udC13ZWlnaHQ6IGJvbGQ7fQorc3Bhbi5jbS1lbSB7Zm9udC1z
dHlsZTogaXRhbGljO30KK3NwYW4uY20tZW1zdHJvbmcge2ZvbnQtc3R5bGU6IGl0YWxpYzsgZm9u
dC13ZWlnaHQ6IGJvbGQ7fQorc3Bhbi5jbS1saW5rIHt0ZXh0LWRlY29yYXRpb246IHVuZGVybGlu
ZTt9CisKK3NwYW4uY20taW52YWxpZGNoYXIge2NvbG9yOiAjZjAwO30KKworZGl2LkNvZGVNaXJy
b3Igc3Bhbi5Db2RlTWlycm9yLW1hdGNoaW5nYnJhY2tldCB7Y29sb3I6ICMwZjA7fQorZGl2LkNv
ZGVNaXJyb3Igc3Bhbi5Db2RlTWlycm9yLW5vbm1hdGNoaW5nYnJhY2tldCB7Y29sb3I6ICNmMjI7
fQorCitAbWVkaWEgcHJpbnQgeworCisgIC8qIEhpZGUgdGhlIGN1cnNvciB3aGVuIHByaW50aW5n
ICovCisgIC5Db2RlTWlycm9yIHByZS5Db2RlTWlycm9yLWN1cnNvciB7CisgICAgdmlzaWJpbGl0
eTogaGlkZGVuOworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2NvZGVtaXJyb3IuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2NvZGVtaXJyb3IuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZmY3YzQ1NzIyMTdmZGQwMjQ5ZDU1OTUyZjBjZGE1MTI2MWU3OWVjOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvY29kZW1pcnJvci5qcwpA
QCAtMCwwICsxLDMyMjAgQEAKKy8vIEFsbCBmdW5jdGlvbnMgdGhhdCBuZWVkIGFjY2VzcyB0byB0
aGUgZWRpdG9yJ3Mgc3RhdGUgbGl2ZSBpbnNpZGUKKy8vIHRoZSBDb2RlTWlycm9yIGZ1bmN0aW9u
LiBCZWxvdyB0aGF0LCBhdCB0aGUgYm90dG9tIG9mIHRoZSBmaWxlLAorLy8gc29tZSB1dGlsaXRp
ZXMgYXJlIGRlZmluZWQuCisKKy8vIENvZGVNaXJyb3IgaXMgdGhlIG9ubHkgZ2xvYmFsIHZhciB3
ZSBjbGFpbQordmFyIENvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CisgICJ1c2Ugc3RyaWN0IjsK
KyAgLy8gVGhpcyBpcyB0aGUgZnVuY3Rpb24gdGhhdCBwcm9kdWNlcyBhbiBlZGl0b3IgaW5zdGFu
Y2UuIEl0cworICAvLyBjbG9zdXJlIGlzIHVzZWQgdG8gc3RvcmUgdGhlIGVkaXRvciBzdGF0ZS4K
KyAgZnVuY3Rpb24gQ29kZU1pcnJvcihwbGFjZSwgZ2l2ZW5PcHRpb25zKSB7CisgICAgLy8gRGV0
ZXJtaW5lIGVmZmVjdGl2ZSBvcHRpb25zIGJhc2VkIG9uIGdpdmVuIHZhbHVlcyBhbmQgZGVmYXVs
dHMuCisgICAgdmFyIG9wdGlvbnMgPSB7fSwgZGVmYXVsdHMgPSBDb2RlTWlycm9yLmRlZmF1bHRz
OworICAgIGZvciAodmFyIG9wdCBpbiBkZWZhdWx0cykKKyAgICAgIGlmIChkZWZhdWx0cy5oYXNP
d25Qcm9wZXJ0eShvcHQpKQorICAgICAgICBvcHRpb25zW29wdF0gPSAoZ2l2ZW5PcHRpb25zICYm
IGdpdmVuT3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShvcHQpID8gZ2l2ZW5PcHRpb25zIDogZGVmYXVs
dHMpW29wdF07CisKKyAgICB2YXIgaW5wdXQgPSBlbHQoInRleHRhcmVhIiwgbnVsbCwgbnVsbCwg
InBvc2l0aW9uOiBhYnNvbHV0ZTsgcGFkZGluZzogMDsgd2lkdGg6IDFweDsgaGVpZ2h0OiAxZW0i
KTsKKyAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoIndyYXAiLCAib2ZmIik7IGlucHV0LnNldEF0dHJp
YnV0ZSgiYXV0b2NvcnJlY3QiLCAib2ZmIik7IGlucHV0LnNldEF0dHJpYnV0ZSgiYXV0b2NhcGl0
YWxpemUiLCAib2ZmIik7CisgICAgLy8gV3JhcHMgYW5kIGhpZGVzIGlucHV0IHRleHRhcmVhCisg
ICAgdmFyIGlucHV0RGl2ID0gZWx0KCJkaXYiLCBbaW5wdXRdLCBudWxsLCAib3ZlcmZsb3c6IGhp
ZGRlbjsgcG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogM3B4OyBoZWlnaHQ6IDBweDsiKTsKKyAg
ICAvLyBUaGUgZW1wdHkgc2Nyb2xsYmFyIGNvbnRlbnQsIHVzZWQgc29sZWx5IGZvciBtYW5hZ2lu
ZyB0aGUgc2Nyb2xsYmFyIHRodW1iLgorICAgIHZhciBzY3JvbGxiYXJJbm5lciA9IGVsdCgiZGl2
IiwgbnVsbCwgIkNvZGVNaXJyb3Itc2Nyb2xsYmFyLWlubmVyIik7CisgICAgLy8gVGhlIHZlcnRp
Y2FsIHNjcm9sbGJhci4gSG9yaXpvbnRhbCBzY3JvbGxpbmcgaXMgaGFuZGxlZCBieSB0aGUgc2Ny
b2xsZXIgaXRzZWxmLgorICAgIHZhciBzY3JvbGxiYXIgPSBlbHQoImRpdiIsIFtzY3JvbGxiYXJJ
bm5lcl0sICJDb2RlTWlycm9yLXNjcm9sbGJhciIpOworICAgIC8vIERJVnMgY29udGFpbmluZyB0
aGUgc2VsZWN0aW9uIGFuZCB0aGUgYWN0dWFsIGNvZGUKKyAgICB2YXIgbGluZURpdiA9IGVsdCgi
ZGl2IiksIHNlbGVjdGlvbkRpdiA9IGVsdCgiZGl2IiwgbnVsbCwgbnVsbCwgInBvc2l0aW9uOiBy
ZWxhdGl2ZTsgei1pbmRleDogLTEiKTsKKyAgICAvLyBCbGlua3kgY3Vyc29yLCBhbmQgZWxlbWVu
dCB1c2VkIHRvIGVuc3VyZSBjdXJzb3IgZml0cyBhdCB0aGUgZW5kIG9mIGEgbGluZQorICAgIHZh
ciBjdXJzb3IgPSBlbHQoInByZSIsICJcdTAwYTAiLCAiQ29kZU1pcnJvci1jdXJzb3IiKSwgd2lk
dGhGb3JjZXIgPSBlbHQoInByZSIsICJcdTAwYTAiLCAiQ29kZU1pcnJvci1jdXJzb3IiLCAidmlz
aWJpbGl0eTogaGlkZGVuIik7CisgICAgLy8gVXNlZCB0byBtZWFzdXJlIHRleHQgc2l6ZQorICAg
IHZhciBtZWFzdXJlID0gZWx0KCJkaXYiLCBudWxsLCBudWxsLCAicG9zaXRpb246IGFic29sdXRl
OyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAwcHg7IG92ZXJmbG93OiBoaWRkZW47IHZpc2liaWxpdHk6
IGhpZGRlbjsiKTsKKyAgICB2YXIgbGluZVNwYWNlID0gZWx0KCJkaXYiLCBbbWVhc3VyZSwgY3Vy
c29yLCB3aWR0aEZvcmNlciwgc2VsZWN0aW9uRGl2LCBsaW5lRGl2XSwgbnVsbCwgInBvc2l0aW9u
OiByZWxhdGl2ZTsgei1pbmRleDogMCIpOworICAgIHZhciBndXR0ZXJUZXh0ID0gZWx0KCJkaXYi
LCBudWxsLCAiQ29kZU1pcnJvci1ndXR0ZXItdGV4dCIpLCBndXR0ZXIgPSBlbHQoImRpdiIsIFtn
dXR0ZXJUZXh0XSwgIkNvZGVNaXJyb3ItZ3V0dGVyIik7CisgICAgLy8gTW92ZWQgYXJvdW5kIGl0
cyBwYXJlbnQgdG8gY292ZXIgdmlzaWJsZSB2aWV3CisgICAgdmFyIG1vdmVyID0gZWx0KCJkaXYi
LCBbZ3V0dGVyLCBlbHQoImRpdiIsIFtsaW5lU3BhY2VdLCAiQ29kZU1pcnJvci1saW5lcyIpXSwg
bnVsbCwgInBvc2l0aW9uOiByZWxhdGl2ZSIpOworICAgIC8vIFNldCB0byB0aGUgaGVpZ2h0IG9m
IHRoZSB0ZXh0LCBjYXVzZXMgc2Nyb2xsaW5nCisgICAgdmFyIHNpemVyID0gZWx0KCJkaXYiLCBb
bW92ZXJdLCBudWxsLCAicG9zaXRpb246IHJlbGF0aXZlIik7CisgICAgLy8gUHJvdmlkZXMgc2Ny
b2xsaW5nCisgICAgdmFyIHNjcm9sbGVyID0gZWx0KCJkaXYiLCBbc2l6ZXJdLCAiQ29kZU1pcnJv
ci1zY3JvbGwiKTsKKyAgICBzY3JvbGxlci5zZXRBdHRyaWJ1dGUoInRhYkluZGV4IiwgIi0xIik7
CisgICAgLy8gVGhlIGVsZW1lbnQgaW4gd2hpY2ggdGhlIGVkaXRvciBsaXZlcy4KKyAgICB2YXIg
d3JhcHBlciA9IGVsdCgiZGl2IiwgW2lucHV0RGl2LCBzY3JvbGxiYXIsIHNjcm9sbGVyXSwgIkNv
ZGVNaXJyb3IiICsgKG9wdGlvbnMubGluZVdyYXBwaW5nID8gIiBDb2RlTWlycm9yLXdyYXAiIDog
IiIpKTsKKyAgICBpZiAocGxhY2UuYXBwZW5kQ2hpbGQpIHBsYWNlLmFwcGVuZENoaWxkKHdyYXBw
ZXIpOyBlbHNlIHBsYWNlKHdyYXBwZXIpOworCisgICAgdGhlbWVDaGFuZ2VkKCk7IGtleU1hcENo
YW5nZWQoKTsKKyAgICAvLyBOZWVkZWQgdG8gaGlkZSBiaWcgYmx1ZSBibGlua2luZyBjdXJzb3Ig
b24gTW9iaWxlIFNhZmFyaQorICAgIGlmIChpb3MpIGlucHV0LnN0eWxlLndpZHRoID0gIjBweCI7
CisgICAgaWYgKCF3ZWJraXQpIHNjcm9sbGVyLmRyYWdnYWJsZSA9IHRydWU7CisgICAgbGluZVNw
YWNlLnN0eWxlLm91dGxpbmUgPSAibm9uZSI7CisgICAgaWYgKG9wdGlvbnMudGFiaW5kZXggIT0g
bnVsbCkgaW5wdXQudGFiSW5kZXggPSBvcHRpb25zLnRhYmluZGV4OworICAgIGlmIChvcHRpb25z
LmF1dG9mb2N1cykgZm9jdXNJbnB1dCgpOworICAgIGlmICghb3B0aW9ucy5ndXR0ZXIgJiYgIW9w
dGlvbnMubGluZU51bWJlcnMpIGd1dHRlci5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworICAgIC8v
IE5lZWRlZCB0byBoYW5kbGUgVGFiIGtleSBpbiBLSFRNTAorICAgIGlmIChraHRtbCkgaW5wdXRE
aXYuc3R5bGUuaGVpZ2h0ID0gIjFweCIsIGlucHV0RGl2LnN0eWxlLnBvc2l0aW9uID0gImFic29s
dXRlIjsKKworICAgIC8vIENoZWNrIGZvciBPUyBYID49IDEwLjcuIElmIHNvLCB3ZSBuZWVkIHRv
IGZvcmNlIGEgd2lkdGggb24gdGhlIHNjcm9sbGJhciwgYW5kCisgICAgLy8gbWFrZSBpdCBvdmVy
bGFwIHRoZSBjb250ZW50LiAoQnV0IHdlIG9ubHkgZG8gdGhpcyBpZiB0aGUgc2Nyb2xsYmFyIGRv
ZXNuJ3QgYWxyZWFkeQorICAgIC8vIGhhdmUgYSBuYXR1cmFsIHdpZHRoLiBJZiB0aGUgbW91c2Ug
aXMgcGx1Z2dlZCBpbiBvciB0aGUgdXNlciBzZXRzIHRoZSBzeXN0ZW0gcHJlZgorICAgIC8vIHRv
IGFsd2F5cyBzaG93IHNjcm9sbGJhcnMsIHRoZSBzY3JvbGxiYXIgc2hvdWxkbid0IG92ZXJsYXAu
KQorICAgIGlmIChtYWNfZ2VMaW9uKSB7CisgICAgICBzY3JvbGxiYXIuY2xhc3NOYW1lICs9IChv
dmVybGFwU2Nyb2xsYmFycygpID8gIiBjbS1zYi1vdmVybGFwIiA6ICIgY20tc2Itbm9ub3Zlcmxh
cCIpOworICAgIH0gZWxzZSBpZiAoaWVfbHQ4KSB7CisgICAgICAvLyBOZWVkIHRvIHNldCBhIG1p
bmltdW0gd2lkdGggdG8gc2VlIHRoZSBzY3JvbGxiYXIgb24gSUU3IChidXQgbXVzdCBub3Qgc2V0
IGl0IG9uIElFOCkuCisgICAgICBzY3JvbGxiYXIuY2xhc3NOYW1lICs9ICIgY20tc2ItaWU3IjsK
KyAgICB9CisKKyAgICAvLyBDaGVjayBmb3IgcHJvYmxlbSB3aXRoIElFIGlubmVySFRNTCBub3Qg
d29ya2luZyB3aGVuIHdlIGhhdmUgYQorICAgIC8vIFAgKG9yIHNpbWlsYXIpIHBhcmVudCBub2Rl
LgorICAgIHRyeSB7IGNoYXJXaWR0aCgpOyB9CisgICAgY2F0Y2ggKGUpIHsKKyAgICAgIGlmIChl
Lm1lc3NhZ2UubWF0Y2goL3J1bnRpbWUvaSkpCisgICAgICAgIGUgPSBuZXcgRXJyb3IoIkEgQ29k
ZU1pcnJvciBpbnNpZGUgYSBQLXN0eWxlIGVsZW1lbnQgZG9lcyBub3Qgd29yayBpbiBJbnRlcm5l
dCBFeHBsb3Jlci4gKGlubmVySFRNTCBidWcpIik7CisgICAgICB0aHJvdyBlOworICAgIH0KKwor
ICAgIC8vIERlbGF5ZWQgb2JqZWN0IHdyYXAgdGltZW91dHMsIG1ha2luZyBzdXJlIG9ubHkgb25l
IGlzIGFjdGl2ZS4gYmxpbmtlciBob2xkcyBhbiBpbnRlcnZhbC4KKyAgICB2YXIgcG9sbCA9IG5l
dyBEZWxheWVkKCksIGhpZ2hsaWdodCA9IG5ldyBEZWxheWVkKCksIGJsaW5rZXI7CisKKyAgICAv
LyBtb2RlIGhvbGRzIGEgbW9kZSBBUEkgb2JqZWN0LiBkb2MgaXMgdGhlIHRyZWUgb2YgTGluZSBv
YmplY3RzLAorICAgIC8vIHdvcmsgYW4gYXJyYXkgb2YgbGluZXMgdGhhdCBzaG91bGQgYmUgcGFy
c2VkLCBhbmQgaGlzdG9yeSB0aGUKKyAgICAvLyB1bmRvIGhpc3RvcnkgKGluc3RhbmNlIG9mIEhp
c3RvcnkgY29uc3RydWN0b3IpLgorICAgIHZhciBtb2RlLCBkb2MgPSBuZXcgQnJhbmNoQ2h1bmso
W25ldyBMZWFmQ2h1bmsoW25ldyBMaW5lKCIiKV0pXSksIHdvcmssIGZvY3VzZWQ7CisgICAgbG9h
ZE1vZGUoKTsKKyAgICAvLyBUaGUgc2VsZWN0aW9uLiBUaGVzZSBhcmUgYWx3YXlzIG1haW50YWlu
ZWQgdG8gcG9pbnQgYXQgdmFsaWQKKyAgICAvLyBwb3NpdGlvbnMuIEludmVydGVkIGlzIHVzZWQg
dG8gcmVtZW1iZXIgdGhhdCB0aGUgdXNlciBpcworICAgIC8vIHNlbGVjdGluZyBib3R0b20tdG8t
dG9wLgorICAgIHZhciBzZWwgPSB7ZnJvbToge2xpbmU6IDAsIGNoOiAwfSwgdG86IHtsaW5lOiAw
LCBjaDogMH0sIGludmVydGVkOiBmYWxzZX07CisgICAgLy8gU2VsZWN0aW9uLXJlbGF0ZWQgZmxh
Z3MuIHNoaWZ0U2VsZWN0aW5nIG9idmlvdXNseSB0cmFja3MKKyAgICAvLyB3aGV0aGVyIHRoZSB1
c2VyIGlzIGhvbGRpbmcgc2hpZnQuCisgICAgdmFyIHNoaWZ0U2VsZWN0aW5nLCBsYXN0Q2xpY2ss
IGxhc3REb3VibGVDbGljaywgbGFzdFNjcm9sbFRvcCA9IDAsIGRyYWdnaW5nVGV4dCwKKyAgICAg
ICAgb3ZlcndyaXRlID0gZmFsc2UsIHN1cHByZXNzRWRpdHMgPSBmYWxzZTsKKyAgICAvLyBWYXJp
YWJsZXMgdXNlZCBieSBzdGFydE9wZXJhdGlvbi9lbmRPcGVyYXRpb24gdG8gdHJhY2sgd2hhdAor
ICAgIC8vIGhhcHBlbmVkIGR1cmluZyB0aGUgb3BlcmF0aW9uLgorICAgIHZhciB1cGRhdGVJbnB1
dCwgdXNlclNlbENoYW5nZSwgY2hhbmdlcywgdGV4dENoYW5nZWQsIHNlbGVjdGlvbkNoYW5nZWQs
IGxlYXZlSW5wdXRBbG9uZSwKKyAgICAgICAgZ3V0dGVyRGlydHksIGNhbGxiYWNrczsKKyAgICAv
LyBDdXJyZW50IHZpc2libGUgcmFuZ2UgKG1heSBiZSBiaWdnZXIgdGhhbiB0aGUgdmlldyB3aW5k
b3cpLgorICAgIHZhciBkaXNwbGF5T2Zmc2V0ID0gMCwgc2hvd2luZ0Zyb20gPSAwLCBzaG93aW5n
VG8gPSAwLCBsYXN0U2l6ZUMgPSAwOworICAgIC8vIGJyYWNrZXRIaWdobGlnaHRlZCBpcyB1c2Vk
IHRvIHJlbWVtYmVyIHRoYXQgYSBicmFja2V0IGhhcyBiZWVuCisgICAgLy8gbWFya2VkLgorICAg
IHZhciBicmFja2V0SGlnaGxpZ2h0ZWQ7CisgICAgLy8gVHJhY2tzIHRoZSBtYXhpbXVtIGxpbmUg
bGVuZ3RoIHNvIHRoYXQgdGhlIGhvcml6b250YWwgc2Nyb2xsYmFyCisgICAgLy8gY2FuIGJlIGtl
cHQgc3RhdGljIHdoZW4gc2Nyb2xsaW5nLgorICAgIHZhciBtYXhMaW5lID0gZ2V0TGluZSgwKSwg
dXBkYXRlTWF4TGluZSA9IGZhbHNlLCBtYXhMaW5lQ2hhbmdlZCA9IHRydWU7CisgICAgdmFyIHRh
YkNhY2hlID0ge307CisgICAgdmFyIHBvbGxpbmdGYXN0ID0gZmFsc2U7IC8vIEVuc3VyZXMgc2xv
d1BvbGwgZG9lc24ndCBjYW5jZWwgZmFzdFBvbGwKKyAgICB2YXIgZ29hbENvbHVtbiA9IG51bGw7
CisKKyAgICAvLyBJbml0aWFsaXplIHRoZSBjb250ZW50LgorICAgIG9wZXJhdGlvbihmdW5jdGlv
bigpe3NldFZhbHVlKG9wdGlvbnMudmFsdWUgfHwgIiIpOyB1cGRhdGVJbnB1dCA9IGZhbHNlO30p
KCk7CisgICAgdmFyIGhpc3RvcnkgPSBuZXcgSGlzdG9yeSgpOworCisgICAgLy8gUmVnaXN0ZXIg
b3VyIGV2ZW50IGhhbmRsZXJzLgorICAgIGNvbm5lY3Qoc2Nyb2xsZXIsICJtb3VzZWRvd24iLCBv
cGVyYXRpb24ob25Nb3VzZURvd24pKTsKKyAgICBjb25uZWN0KHNjcm9sbGVyLCAiZGJsY2xpY2si
LCBvcGVyYXRpb24ob25Eb3VibGVDbGljaykpOworICAgIGNvbm5lY3QobGluZVNwYWNlLCAic2Vs
ZWN0c3RhcnQiLCBlX3ByZXZlbnREZWZhdWx0KTsKKyAgICAvLyBHZWNrbyBicm93c2VycyBmaXJl
IGNvbnRleHRtZW51ICphZnRlciogb3BlbmluZyB0aGUgbWVudSwgYXQKKyAgICAvLyB3aGljaCBw
b2ludCB3ZSBjYW4ndCBtZXNzIHdpdGggaXQgYW55bW9yZS4gQ29udGV4dCBtZW51IGlzCisgICAg
Ly8gaGFuZGxlZCBpbiBvbk1vdXNlRG93biBmb3IgR2Vja28uCisgICAgaWYgKCFnZWNrbykgY29u
bmVjdChzY3JvbGxlciwgImNvbnRleHRtZW51Iiwgb25Db250ZXh0TWVudSk7CisgICAgY29ubmVj
dChzY3JvbGxlciwgInNjcm9sbCIsIG9uU2Nyb2xsTWFpbik7CisgICAgY29ubmVjdChzY3JvbGxi
YXIsICJzY3JvbGwiLCBvblNjcm9sbEJhcik7CisgICAgY29ubmVjdChzY3JvbGxiYXIsICJtb3Vz
ZWRvd24iLCBmdW5jdGlvbigpIHtpZiAoZm9jdXNlZCkgc2V0VGltZW91dChmb2N1c0lucHV0LCAw
KTt9KTsKKyAgICBjb25uZWN0KHdpbmRvdywgInJlc2l6ZSIsIGZ1bmN0aW9uKCkge3VwZGF0ZURp
c3BsYXkodHJ1ZSk7fSk7CisgICAgY29ubmVjdChpbnB1dCwgImtleXVwIiwgb3BlcmF0aW9uKG9u
S2V5VXApKTsKKyAgICBjb25uZWN0KGlucHV0LCAiaW5wdXQiLCBmYXN0UG9sbCk7CisgICAgY29u
bmVjdChpbnB1dCwgImtleWRvd24iLCBvcGVyYXRpb24ob25LZXlEb3duKSk7CisgICAgY29ubmVj
dChpbnB1dCwgImtleXByZXNzIiwgb3BlcmF0aW9uKG9uS2V5UHJlc3MpKTsKKyAgICBjb25uZWN0
KGlucHV0LCAiZm9jdXMiLCBvbkZvY3VzKTsKKyAgICBjb25uZWN0KGlucHV0LCAiYmx1ciIsIG9u
Qmx1cik7CisKKyAgICBmdW5jdGlvbiBkcmFnXyhlKSB7CisgICAgICBpZiAob3B0aW9ucy5vbkRy
YWdFdmVudCAmJiBvcHRpb25zLm9uRHJhZ0V2ZW50KGluc3RhbmNlLCBhZGRTdG9wKGUpKSkgcmV0
dXJuOworICAgICAgZV9zdG9wKGUpOworICAgIH0KKyAgICBpZiAob3B0aW9ucy5kcmFnRHJvcCkg
eworICAgICAgY29ubmVjdChzY3JvbGxlciwgImRyYWdzdGFydCIsIG9uRHJhZ1N0YXJ0KTsKKyAg
ICAgIGNvbm5lY3Qoc2Nyb2xsZXIsICJkcmFnZW50ZXIiLCBkcmFnXyk7CisgICAgICBjb25uZWN0
KHNjcm9sbGVyLCAiZHJhZ292ZXIiLCBkcmFnXyk7CisgICAgICBjb25uZWN0KHNjcm9sbGVyLCAi
ZHJvcCIsIG9wZXJhdGlvbihvbkRyb3ApKTsKKyAgICB9CisgICAgY29ubmVjdChzY3JvbGxlciwg
InBhc3RlIiwgZnVuY3Rpb24oKXtmb2N1c0lucHV0KCk7IGZhc3RQb2xsKCk7fSk7CisgICAgY29u
bmVjdChpbnB1dCwgInBhc3RlIiwgZmFzdFBvbGwpOworICAgIGNvbm5lY3QoaW5wdXQsICJjdXQi
LCBvcGVyYXRpb24oZnVuY3Rpb24oKXsKKyAgICAgIGlmICghb3B0aW9ucy5yZWFkT25seSkgcmVw
bGFjZVNlbGVjdGlvbigiIik7CisgICAgfSkpOworCisgICAgLy8gTmVlZGVkIHRvIGhhbmRsZSBU
YWIga2V5IGluIEtIVE1MCisgICAgaWYgKGtodG1sKSBjb25uZWN0KHNpemVyLCAibW91c2V1cCIs
IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBpbnB1
dCkgaW5wdXQuYmx1cigpOworICAgICAgICBmb2N1c0lucHV0KCk7CisgICAgfSk7CisKKyAgICAv
LyBJRSB0aHJvd3MgdW5zcGVjaWZpZWQgZXJyb3IgaW4gY2VydGFpbiBjYXNlcywgd2hlbgorICAg
IC8vIHRyeWluZyB0byBhY2Nlc3MgYWN0aXZlRWxlbWVudCBiZWZvcmUgb25sb2FkCisgICAgdmFy
IGhhc0ZvY3VzOyB0cnkgeyBoYXNGb2N1cyA9IChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGlu
cHV0KTsgfSBjYXRjaChlKSB7IH0KKyAgICBpZiAoaGFzRm9jdXMgfHwgb3B0aW9ucy5hdXRvZm9j
dXMpIHNldFRpbWVvdXQob25Gb2N1cywgMjApOworICAgIGVsc2Ugb25CbHVyKCk7CisKKyAgICBm
dW5jdGlvbiBpc0xpbmUobCkge3JldHVybiBsID49IDAgJiYgbCA8IGRvYy5zaXplO30KKyAgICAv
LyBUaGUgaW5zdGFuY2Ugb2JqZWN0IHRoYXQgd2UnbGwgcmV0dXJuLiBNb3N0bHkgY2FsbHMgb3V0
IHRvCisgICAgLy8gbG9jYWwgZnVuY3Rpb25zIGluIHRoZSBDb2RlTWlycm9yIGZ1bmN0aW9uLiBT
b21lIGRvIHNvbWUgZXh0cmEKKyAgICAvLyByYW5nZSBjaGVja2luZyBhbmQvb3IgY2xpcHBpbmcu
IG9wZXJhdGlvbiBpcyB1c2VkIHRvIHdyYXAgdGhlCisgICAgLy8gY2FsbCBzbyB0aGF0IGNoYW5n
ZXMgaXQgbWFrZXMgYXJlIHRyYWNrZWQsIGFuZCB0aGUgZGlzcGxheSBpcworICAgIC8vIHVwZGF0
ZWQgYWZ0ZXJ3YXJkcy4KKyAgICB2YXIgaW5zdGFuY2UgPSB3cmFwcGVyLkNvZGVNaXJyb3IgPSB7
CisgICAgICBnZXRWYWx1ZTogZ2V0VmFsdWUsCisgICAgICBzZXRWYWx1ZTogb3BlcmF0aW9uKHNl
dFZhbHVlKSwKKyAgICAgIGdldFNlbGVjdGlvbjogZ2V0U2VsZWN0aW9uLAorICAgICAgcmVwbGFj
ZVNlbGVjdGlvbjogb3BlcmF0aW9uKHJlcGxhY2VTZWxlY3Rpb24pLAorICAgICAgZm9jdXM6IGZ1
bmN0aW9uKCl7d2luZG93LmZvY3VzKCk7IGZvY3VzSW5wdXQoKTsgb25Gb2N1cygpOyBmYXN0UG9s
bCgpO30sCisgICAgICBzZXRPcHRpb246IGZ1bmN0aW9uKG9wdGlvbiwgdmFsdWUpIHsKKyAgICAg
ICAgdmFyIG9sZFZhbCA9IG9wdGlvbnNbb3B0aW9uXTsKKyAgICAgICAgb3B0aW9uc1tvcHRpb25d
ID0gdmFsdWU7CisgICAgICAgIGlmIChvcHRpb24gPT0gIm1vZGUiIHx8IG9wdGlvbiA9PSAiaW5k
ZW50VW5pdCIpIGxvYWRNb2RlKCk7CisgICAgICAgIGVsc2UgaWYgKG9wdGlvbiA9PSAicmVhZE9u
bHkiICYmIHZhbHVlID09ICJub2N1cnNvciIpIHtvbkJsdXIoKTsgaW5wdXQuYmx1cigpO30KKyAg
ICAgICAgZWxzZSBpZiAob3B0aW9uID09ICJyZWFkT25seSIgJiYgIXZhbHVlKSB7cmVzZXRJbnB1
dCh0cnVlKTt9CisgICAgICAgIGVsc2UgaWYgKG9wdGlvbiA9PSAidGhlbWUiKSB0aGVtZUNoYW5n
ZWQoKTsKKyAgICAgICAgZWxzZSBpZiAob3B0aW9uID09ICJsaW5lV3JhcHBpbmciICYmIG9sZFZh
bCAhPSB2YWx1ZSkgb3BlcmF0aW9uKHdyYXBwaW5nQ2hhbmdlZCkoKTsKKyAgICAgICAgZWxzZSBp
ZiAob3B0aW9uID09ICJ0YWJTaXplIikgdXBkYXRlRGlzcGxheSh0cnVlKTsKKyAgICAgICAgZWxz
ZSBpZiAob3B0aW9uID09ICJrZXlNYXAiKSBrZXlNYXBDaGFuZ2VkKCk7CisgICAgICAgIGlmIChv
cHRpb24gPT0gImxpbmVOdW1iZXJzIiB8fCBvcHRpb24gPT0gImd1dHRlciIgfHwgb3B0aW9uID09
ICJmaXJzdExpbmVOdW1iZXIiIHx8CisgICAgICAgICAgICBvcHRpb24gPT0gInRoZW1lIiB8fCBv
cHRpb24gPT0gImxpbmVOdW1iZXJGb3JtYXR0ZXIiKSB7CisgICAgICAgICAgZ3V0dGVyQ2hhbmdl
ZCgpOworICAgICAgICAgIHVwZGF0ZURpc3BsYXkodHJ1ZSk7CisgICAgICAgIH0KKyAgICAgIH0s
CisgICAgICBnZXRPcHRpb246IGZ1bmN0aW9uKG9wdGlvbikge3JldHVybiBvcHRpb25zW29wdGlv
bl07fSwKKyAgICAgIHVuZG86IG9wZXJhdGlvbih1bmRvKSwKKyAgICAgIHJlZG86IG9wZXJhdGlv
bihyZWRvKSwKKyAgICAgIGluZGVudExpbmU6IG9wZXJhdGlvbihmdW5jdGlvbihuLCBkaXIpIHsK
KyAgICAgICAgaWYgKHR5cGVvZiBkaXIgIT0gInN0cmluZyIpIHsKKyAgICAgICAgICBpZiAoZGly
ID09IG51bGwpIGRpciA9IG9wdGlvbnMuc21hcnRJbmRlbnQgPyAic21hcnQiIDogInByZXYiOwor
ICAgICAgICAgIGVsc2UgZGlyID0gZGlyID8gImFkZCIgOiAic3VidHJhY3QiOworICAgICAgICB9
CisgICAgICAgIGlmIChpc0xpbmUobikpIGluZGVudExpbmUobiwgZGlyKTsKKyAgICAgIH0pLAor
ICAgICAgaW5kZW50U2VsZWN0aW9uOiBvcGVyYXRpb24oaW5kZW50U2VsZWN0ZWQpLAorICAgICAg
aGlzdG9yeVNpemU6IGZ1bmN0aW9uKCkge3JldHVybiB7dW5kbzogaGlzdG9yeS5kb25lLmxlbmd0
aCwgcmVkbzogaGlzdG9yeS51bmRvbmUubGVuZ3RofTt9LAorICAgICAgY2xlYXJIaXN0b3J5OiBm
dW5jdGlvbigpIHtoaXN0b3J5ID0gbmV3IEhpc3RvcnkoKTt9LAorICAgICAgc2V0SGlzdG9yeTog
ZnVuY3Rpb24oaGlzdERhdGEpIHsKKyAgICAgICAgaGlzdG9yeSA9IG5ldyBIaXN0b3J5KCk7Cisg
ICAgICAgIGhpc3RvcnkuZG9uZSA9IGhpc3REYXRhLmRvbmU7CisgICAgICAgIGhpc3RvcnkudW5k
b25lID0gaGlzdERhdGEudW5kb25lOworICAgICAgfSwKKyAgICAgIGdldEhpc3Rvcnk6IGZ1bmN0
aW9uKCkgeworICAgICAgICBoaXN0b3J5LnRpbWUgPSAwOworICAgICAgICByZXR1cm4ge2RvbmU6
IGhpc3RvcnkuZG9uZS5jb25jYXQoW10pLCB1bmRvbmU6IGhpc3RvcnkudW5kb25lLmNvbmNhdChb
XSl9OworICAgICAgfSwKKyAgICAgIG1hdGNoQnJhY2tldHM6IG9wZXJhdGlvbihmdW5jdGlvbigp
e21hdGNoQnJhY2tldHModHJ1ZSk7fSksCisgICAgICBnZXRUb2tlbkF0OiBvcGVyYXRpb24oZnVu
Y3Rpb24ocG9zKSB7CisgICAgICAgIHBvcyA9IGNsaXBQb3MocG9zKTsKKyAgICAgICAgcmV0dXJu
IGdldExpbmUocG9zLmxpbmUpLmdldFRva2VuQXQobW9kZSwgZ2V0U3RhdGVCZWZvcmUocG9zLmxp
bmUpLCBwb3MuY2gpOworICAgICAgfSksCisgICAgICBnZXRTdGF0ZUFmdGVyOiBmdW5jdGlvbihs
aW5lKSB7CisgICAgICAgIGxpbmUgPSBjbGlwTGluZShsaW5lID09IG51bGwgPyBkb2Muc2l6ZSAt
IDE6IGxpbmUpOworICAgICAgICByZXR1cm4gZ2V0U3RhdGVCZWZvcmUobGluZSArIDEpOworICAg
ICAgfSwKKyAgICAgIGN1cnNvckNvb3JkczogZnVuY3Rpb24oc3RhcnQsIG1vZGUpIHsKKyAgICAg
ICAgaWYgKHN0YXJ0ID09IG51bGwpIHN0YXJ0ID0gc2VsLmludmVydGVkOworICAgICAgICByZXR1
cm4gdGhpcy5jaGFyQ29vcmRzKHN0YXJ0ID8gc2VsLmZyb20gOiBzZWwudG8sIG1vZGUpOworICAg
ICAgfSwKKyAgICAgIGNoYXJDb29yZHM6IGZ1bmN0aW9uKHBvcywgbW9kZSkgeworICAgICAgICBw
b3MgPSBjbGlwUG9zKHBvcyk7CisgICAgICAgIGlmIChtb2RlID09ICJsb2NhbCIpIHJldHVybiBs
b2NhbENvb3Jkcyhwb3MsIGZhbHNlKTsKKyAgICAgICAgaWYgKG1vZGUgPT0gImRpdiIpIHJldHVy
biBsb2NhbENvb3Jkcyhwb3MsIHRydWUpOworICAgICAgICByZXR1cm4gcGFnZUNvb3Jkcyhwb3Mp
OworICAgICAgfSwKKyAgICAgIGNvb3Jkc0NoYXI6IGZ1bmN0aW9uKGNvb3JkcykgeworICAgICAg
ICB2YXIgb2ZmID0gZWx0T2Zmc2V0KGxpbmVTcGFjZSk7CisgICAgICAgIHJldHVybiBjb29yZHND
aGFyKGNvb3Jkcy54IC0gb2ZmLmxlZnQsIGNvb3Jkcy55IC0gb2ZmLnRvcCk7CisgICAgICB9LAor
ICAgICAgbWFya1RleHQ6IG9wZXJhdGlvbihtYXJrVGV4dCksCisgICAgICBzZXRCb29rbWFyazog
c2V0Qm9va21hcmssCisgICAgICBmaW5kTWFya3NBdDogZmluZE1hcmtzQXQsCisgICAgICBzZXRN
YXJrZXI6IG9wZXJhdGlvbihhZGRHdXR0ZXJNYXJrZXIpLAorICAgICAgY2xlYXJNYXJrZXI6IG9w
ZXJhdGlvbihyZW1vdmVHdXR0ZXJNYXJrZXIpLAorICAgICAgc2V0TGluZUNsYXNzOiBvcGVyYXRp
b24oc2V0TGluZUNsYXNzKSwKKyAgICAgIGhpZGVMaW5lOiBvcGVyYXRpb24oZnVuY3Rpb24oaCkg
e3JldHVybiBzZXRMaW5lSGlkZGVuKGgsIHRydWUpO30pLAorICAgICAgc2hvd0xpbmU6IG9wZXJh
dGlvbihmdW5jdGlvbihoKSB7cmV0dXJuIHNldExpbmVIaWRkZW4oaCwgZmFsc2UpO30pLAorICAg
ICAgb25EZWxldGVMaW5lOiBmdW5jdGlvbihsaW5lLCBmKSB7CisgICAgICAgIGlmICh0eXBlb2Yg
bGluZSA9PSAibnVtYmVyIikgeworICAgICAgICAgIGlmICghaXNMaW5lKGxpbmUpKSByZXR1cm4g
bnVsbDsKKyAgICAgICAgICBsaW5lID0gZ2V0TGluZShsaW5lKTsKKyAgICAgICAgfQorICAgICAg
ICAobGluZS5oYW5kbGVycyB8fCAobGluZS5oYW5kbGVycyA9IFtdKSkucHVzaChmKTsKKyAgICAg
ICAgcmV0dXJuIGxpbmU7CisgICAgICB9LAorICAgICAgbGluZUluZm86IGxpbmVJbmZvLAorICAg
ICAgYWRkV2lkZ2V0OiBmdW5jdGlvbihwb3MsIG5vZGUsIHNjcm9sbCwgdmVydCwgaG9yaXopIHsK
KyAgICAgICAgcG9zID0gbG9jYWxDb29yZHMoY2xpcFBvcyhwb3MpKTsKKyAgICAgICAgdmFyIHRv
cCA9IHBvcy55Qm90LCBsZWZ0ID0gcG9zLng7CisgICAgICAgIG5vZGUuc3R5bGUucG9zaXRpb24g
PSAiYWJzb2x1dGUiOworICAgICAgICBzaXplci5hcHBlbmRDaGlsZChub2RlKTsKKyAgICAgICAg
aWYgKHZlcnQgPT0gIm92ZXIiKSB0b3AgPSBwb3MueTsKKyAgICAgICAgZWxzZSBpZiAodmVydCA9
PSAibmVhciIpIHsKKyAgICAgICAgICB2YXIgdnNwYWNlID0gTWF0aC5tYXgoc2Nyb2xsZXIub2Zm
c2V0SGVpZ2h0LCBkb2MuaGVpZ2h0ICogdGV4dEhlaWdodCgpKSwKKyAgICAgICAgICAgICAgaHNw
YWNlID0gTWF0aC5tYXgoc2l6ZXIuY2xpZW50V2lkdGgsIGxpbmVTcGFjZS5jbGllbnRXaWR0aCkg
LSBwYWRkaW5nTGVmdCgpOworICAgICAgICAgIGlmIChwb3MueUJvdCArIG5vZGUub2Zmc2V0SGVp
Z2h0ID4gdnNwYWNlICYmIHBvcy55ID4gbm9kZS5vZmZzZXRIZWlnaHQpCisgICAgICAgICAgICB0
b3AgPSBwb3MueSAtIG5vZGUub2Zmc2V0SGVpZ2h0OworICAgICAgICAgIGlmIChsZWZ0ICsgbm9k
ZS5vZmZzZXRXaWR0aCA+IGhzcGFjZSkKKyAgICAgICAgICAgIGxlZnQgPSBoc3BhY2UgLSBub2Rl
Lm9mZnNldFdpZHRoOworICAgICAgICB9CisgICAgICAgIG5vZGUuc3R5bGUudG9wID0gKHRvcCAr
IHBhZGRpbmdUb3AoKSkgKyAicHgiOworICAgICAgICBub2RlLnN0eWxlLmxlZnQgPSBub2RlLnN0
eWxlLnJpZ2h0ID0gIiI7CisgICAgICAgIGlmIChob3JpeiA9PSAicmlnaHQiKSB7CisgICAgICAg
ICAgbGVmdCA9IHNpemVyLmNsaWVudFdpZHRoIC0gbm9kZS5vZmZzZXRXaWR0aDsKKyAgICAgICAg
ICBub2RlLnN0eWxlLnJpZ2h0ID0gIjBweCI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
aWYgKGhvcml6ID09ICJsZWZ0IikgbGVmdCA9IDA7CisgICAgICAgICAgZWxzZSBpZiAoaG9yaXog
PT0gIm1pZGRsZSIpIGxlZnQgPSAoc2l6ZXIuY2xpZW50V2lkdGggLSBub2RlLm9mZnNldFdpZHRo
KSAvIDI7CisgICAgICAgICAgbm9kZS5zdHlsZS5sZWZ0ID0gKGxlZnQgKyBwYWRkaW5nTGVmdCgp
KSArICJweCI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNjcm9sbCkKKyAgICAgICAgICBzY3Jv
bGxJbnRvVmlldyhsZWZ0LCB0b3AsIGxlZnQgKyBub2RlLm9mZnNldFdpZHRoLCB0b3AgKyBub2Rl
Lm9mZnNldEhlaWdodCk7CisgICAgICB9LAorCisgICAgICBsaW5lQ291bnQ6IGZ1bmN0aW9uKCkg
e3JldHVybiBkb2Muc2l6ZTt9LAorICAgICAgY2xpcFBvczogY2xpcFBvcywKKyAgICAgIGdldEN1
cnNvcjogZnVuY3Rpb24oc3RhcnQpIHsKKyAgICAgICAgaWYgKHN0YXJ0ID09IG51bGwpIHN0YXJ0
ID0gc2VsLmludmVydGVkOworICAgICAgICByZXR1cm4gY29weVBvcyhzdGFydCA/IHNlbC5mcm9t
IDogc2VsLnRvKTsKKyAgICAgIH0sCisgICAgICBzb21ldGhpbmdTZWxlY3RlZDogZnVuY3Rpb24o
KSB7cmV0dXJuICFwb3NFcShzZWwuZnJvbSwgc2VsLnRvKTt9LAorICAgICAgc2V0Q3Vyc29yOiBv
cGVyYXRpb24oZnVuY3Rpb24obGluZSwgY2gsIHVzZXIpIHsKKyAgICAgICAgaWYgKGNoID09IG51
bGwgJiYgdHlwZW9mIGxpbmUubGluZSA9PSAibnVtYmVyIikgc2V0Q3Vyc29yKGxpbmUubGluZSwg
bGluZS5jaCwgdXNlcik7CisgICAgICAgIGVsc2Ugc2V0Q3Vyc29yKGxpbmUsIGNoLCB1c2VyKTsK
KyAgICAgIH0pLAorICAgICAgc2V0U2VsZWN0aW9uOiBvcGVyYXRpb24oZnVuY3Rpb24oZnJvbSwg
dG8sIHVzZXIpIHsKKyAgICAgICAgKHVzZXIgPyBzZXRTZWxlY3Rpb25Vc2VyIDogc2V0U2VsZWN0
aW9uKShjbGlwUG9zKGZyb20pLCBjbGlwUG9zKHRvIHx8IGZyb20pKTsKKyAgICAgIH0pLAorICAg
ICAgZ2V0TGluZTogZnVuY3Rpb24obGluZSkge2lmIChpc0xpbmUobGluZSkpIHJldHVybiBnZXRM
aW5lKGxpbmUpLnRleHQ7fSwKKyAgICAgIGdldExpbmVIYW5kbGU6IGZ1bmN0aW9uKGxpbmUpIHtp
ZiAoaXNMaW5lKGxpbmUpKSByZXR1cm4gZ2V0TGluZShsaW5lKTt9LAorICAgICAgc2V0TGluZTog
b3BlcmF0aW9uKGZ1bmN0aW9uKGxpbmUsIHRleHQpIHsKKyAgICAgICAgaWYgKGlzTGluZShsaW5l
KSkgcmVwbGFjZVJhbmdlKHRleHQsIHtsaW5lOiBsaW5lLCBjaDogMH0sIHtsaW5lOiBsaW5lLCBj
aDogZ2V0TGluZShsaW5lKS50ZXh0Lmxlbmd0aH0pOworICAgICAgfSksCisgICAgICByZW1vdmVM
aW5lOiBvcGVyYXRpb24oZnVuY3Rpb24obGluZSkgeworICAgICAgICBpZiAoaXNMaW5lKGxpbmUp
KSByZXBsYWNlUmFuZ2UoIiIsIHtsaW5lOiBsaW5lLCBjaDogMH0sIGNsaXBQb3Moe2xpbmU6IGxp
bmUrMSwgY2g6IDB9KSk7CisgICAgICB9KSwKKyAgICAgIHJlcGxhY2VSYW5nZTogb3BlcmF0aW9u
KHJlcGxhY2VSYW5nZSksCisgICAgICBnZXRSYW5nZTogZnVuY3Rpb24oZnJvbSwgdG8sIGxpbmVT
ZXApIHtyZXR1cm4gZ2V0UmFuZ2UoY2xpcFBvcyhmcm9tKSwgY2xpcFBvcyh0byksIGxpbmVTZXAp
O30sCisKKyAgICAgIHRyaWdnZXJPbktleURvd246IG9wZXJhdGlvbihvbktleURvd24pLAorICAg
ICAgZXhlY0NvbW1hbmQ6IGZ1bmN0aW9uKGNtZCkge3JldHVybiBjb21tYW5kc1tjbWRdKGluc3Rh
bmNlKTt9LAorICAgICAgLy8gU3R1ZmYgdXNlZCBieSBjb21tYW5kcywgcHJvYmFibHkgbm90IG11
Y2ggdXNlIHRvIG91dHNpZGUgY29kZS4KKyAgICAgIG1vdmVIOiBvcGVyYXRpb24obW92ZUgpLAor
ICAgICAgZGVsZXRlSDogb3BlcmF0aW9uKGRlbGV0ZUgpLAorICAgICAgbW92ZVY6IG9wZXJhdGlv
bihtb3ZlViksCisgICAgICB0b2dnbGVPdmVyd3JpdGU6IGZ1bmN0aW9uKCkgeworICAgICAgICBp
ZihvdmVyd3JpdGUpeworICAgICAgICAgIG92ZXJ3cml0ZSA9IGZhbHNlOworICAgICAgICAgIGN1
cnNvci5jbGFzc05hbWUgPSBjdXJzb3IuY2xhc3NOYW1lLnJlcGxhY2UoIiBDb2RlTWlycm9yLW92
ZXJ3cml0ZSIsICIiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBvdmVyd3JpdGUgPSB0
cnVlOworICAgICAgICAgIGN1cnNvci5jbGFzc05hbWUgKz0gIiBDb2RlTWlycm9yLW92ZXJ3cml0
ZSI7CisgICAgICAgIH0KKyAgICAgIH0sCisKKyAgICAgIHBvc0Zyb21JbmRleDogZnVuY3Rpb24o
b2ZmKSB7CisgICAgICAgIHZhciBsaW5lTm8gPSAwLCBjaDsKKyAgICAgICAgZG9jLml0ZXIoMCwg
ZG9jLnNpemUsIGZ1bmN0aW9uKGxpbmUpIHsKKyAgICAgICAgICB2YXIgc3ogPSBsaW5lLnRleHQu
bGVuZ3RoICsgMTsKKyAgICAgICAgICBpZiAoc3ogPiBvZmYpIHsgY2ggPSBvZmY7IHJldHVybiB0
cnVlOyB9CisgICAgICAgICAgb2ZmIC09IHN6OworICAgICAgICAgICsrbGluZU5vOworICAgICAg
ICB9KTsKKyAgICAgICAgcmV0dXJuIGNsaXBQb3Moe2xpbmU6IGxpbmVObywgY2g6IGNofSk7Cisg
ICAgICB9LAorICAgICAgaW5kZXhGcm9tUG9zOiBmdW5jdGlvbiAoY29vcmRzKSB7CisgICAgICAg
IGlmIChjb29yZHMubGluZSA8IDAgfHwgY29vcmRzLmNoIDwgMCkgcmV0dXJuIDA7CisgICAgICAg
IHZhciBpbmRleCA9IGNvb3Jkcy5jaDsKKyAgICAgICAgZG9jLml0ZXIoMCwgY29vcmRzLmxpbmUs
IGZ1bmN0aW9uIChsaW5lKSB7CisgICAgICAgICAgaW5kZXggKz0gbGluZS50ZXh0Lmxlbmd0aCAr
IDE7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgICB9LAorICAgICAg
c2Nyb2xsVG86IGZ1bmN0aW9uKHgsIHkpIHsKKyAgICAgICAgaWYgKHggIT0gbnVsbCkgc2Nyb2xs
ZXIuc2Nyb2xsTGVmdCA9IHg7CisgICAgICAgIGlmICh5ICE9IG51bGwpIHNjcm9sbGJhci5zY3Jv
bGxUb3AgPSBzY3JvbGxlci5zY3JvbGxUb3AgPSB5OworICAgICAgICB1cGRhdGVEaXNwbGF5KFtd
KTsKKyAgICAgIH0sCisgICAgICBnZXRTY3JvbGxJbmZvOiBmdW5jdGlvbigpIHsKKyAgICAgICAg
cmV0dXJuIHt4OiBzY3JvbGxlci5zY3JvbGxMZWZ0LCB5OiBzY3JvbGxiYXIuc2Nyb2xsVG9wLAor
ICAgICAgICAgICAgICAgIGhlaWdodDogc2Nyb2xsYmFyLnNjcm9sbEhlaWdodCwgd2lkdGg6IHNj
cm9sbGVyLnNjcm9sbFdpZHRofTsKKyAgICAgIH0sCisgICAgICBzZXRTaXplOiBmdW5jdGlvbih3
aWR0aCwgaGVpZ2h0KSB7CisgICAgICAgIGZ1bmN0aW9uIGludGVycHJldCh2YWwpIHsKKyAgICAg
ICAgICB2YWwgPSBTdHJpbmcodmFsKTsKKyAgICAgICAgICByZXR1cm4gL15cZCskLy50ZXN0KHZh
bCkgPyB2YWwgKyAicHgiIDogdmFsOworICAgICAgICB9CisgICAgICAgIGlmICh3aWR0aCAhPSBu
dWxsKSB3cmFwcGVyLnN0eWxlLndpZHRoID0gaW50ZXJwcmV0KHdpZHRoKTsKKyAgICAgICAgaWYg
KGhlaWdodCAhPSBudWxsKSBzY3JvbGxlci5zdHlsZS5oZWlnaHQgPSBpbnRlcnByZXQoaGVpZ2h0
KTsKKyAgICAgICAgaW5zdGFuY2UucmVmcmVzaCgpOworICAgICAgfSwKKworICAgICAgb3BlcmF0
aW9uOiBmdW5jdGlvbihmKXtyZXR1cm4gb3BlcmF0aW9uKGYpKCk7fSwKKyAgICAgIGNvbXBvdW5k
Q2hhbmdlOiBmdW5jdGlvbihmKXtyZXR1cm4gY29tcG91bmRDaGFuZ2UoZik7fSwKKyAgICAgIHJl
ZnJlc2g6IGZ1bmN0aW9uKCl7CisgICAgICAgIHVwZGF0ZURpc3BsYXkodHJ1ZSwgbnVsbCwgbGFz
dFNjcm9sbFRvcCk7CisgICAgICAgIGlmIChzY3JvbGxiYXIuc2Nyb2xsSGVpZ2h0ID4gbGFzdFNj
cm9sbFRvcCkKKyAgICAgICAgICBzY3JvbGxiYXIuc2Nyb2xsVG9wID0gbGFzdFNjcm9sbFRvcDsK
KyAgICAgIH0sCisgICAgICBnZXRJbnB1dEZpZWxkOiBmdW5jdGlvbigpe3JldHVybiBpbnB1dDt9
LAorICAgICAgZ2V0V3JhcHBlckVsZW1lbnQ6IGZ1bmN0aW9uKCl7cmV0dXJuIHdyYXBwZXI7fSwK
KyAgICAgIGdldFNjcm9sbGVyRWxlbWVudDogZnVuY3Rpb24oKXtyZXR1cm4gc2Nyb2xsZXI7fSwK
KyAgICAgIGdldEd1dHRlckVsZW1lbnQ6IGZ1bmN0aW9uKCl7cmV0dXJuIGd1dHRlcjt9CisgICAg
fTsKKworICAgIGZ1bmN0aW9uIGdldExpbmUobikgeyByZXR1cm4gZ2V0TGluZUF0KGRvYywgbik7
IH0KKyAgICBmdW5jdGlvbiB1cGRhdGVMaW5lSGVpZ2h0KGxpbmUsIGhlaWdodCkgeworICAgICAg
Z3V0dGVyRGlydHkgPSB0cnVlOworICAgICAgdmFyIGRpZmYgPSBoZWlnaHQgLSBsaW5lLmhlaWdo
dDsKKyAgICAgIGZvciAodmFyIG4gPSBsaW5lOyBuOyBuID0gbi5wYXJlbnQpIG4uaGVpZ2h0ICs9
IGRpZmY7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2V0VmFsdWUoY29kZSkgeworICAgICAgdmFy
IHRvcCA9IHtsaW5lOiAwLCBjaDogMH07CisgICAgICB1cGRhdGVMaW5lcyh0b3AsIHtsaW5lOiBk
b2Muc2l6ZSAtIDEsIGNoOiBnZXRMaW5lKGRvYy5zaXplLTEpLnRleHQubGVuZ3RofSwKKyAgICAg
ICAgICAgICAgICAgIHNwbGl0TGluZXMoY29kZSksIHRvcCwgdG9wKTsKKyAgICAgIHVwZGF0ZUlu
cHV0ID0gdHJ1ZTsKKyAgICB9CisgICAgZnVuY3Rpb24gZ2V0VmFsdWUobGluZVNlcCkgeworICAg
ICAgdmFyIHRleHQgPSBbXTsKKyAgICAgIGRvYy5pdGVyKDAsIGRvYy5zaXplLCBmdW5jdGlvbihs
aW5lKSB7IHRleHQucHVzaChsaW5lLnRleHQpOyB9KTsKKyAgICAgIHJldHVybiB0ZXh0LmpvaW4o
bGluZVNlcCB8fCAiXG4iKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBvblNjcm9sbEJhcihlKSB7
CisgICAgICBpZiAoc2Nyb2xsYmFyLnNjcm9sbFRvcCAhPSBsYXN0U2Nyb2xsVG9wKSB7CisgICAg
ICAgIGxhc3RTY3JvbGxUb3AgPSBzY3JvbGxlci5zY3JvbGxUb3AgPSBzY3JvbGxiYXIuc2Nyb2xs
VG9wOworICAgICAgICB1cGRhdGVEaXNwbGF5KFtdKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBm
dW5jdGlvbiBvblNjcm9sbE1haW4oZSkgeworICAgICAgaWYgKG9wdGlvbnMuZml4ZWRHdXR0ZXIg
JiYgZ3V0dGVyLnN0eWxlLmxlZnQgIT0gc2Nyb2xsZXIuc2Nyb2xsTGVmdCArICJweCIpCisgICAg
ICAgIGd1dHRlci5zdHlsZS5sZWZ0ID0gc2Nyb2xsZXIuc2Nyb2xsTGVmdCArICJweCI7CisgICAg
ICBpZiAoc2Nyb2xsZXIuc2Nyb2xsVG9wICE9IGxhc3RTY3JvbGxUb3ApIHsKKyAgICAgICAgbGFz
dFNjcm9sbFRvcCA9IHNjcm9sbGVyLnNjcm9sbFRvcDsKKyAgICAgICAgaWYgKHNjcm9sbGJhci5z
Y3JvbGxUb3AgIT0gbGFzdFNjcm9sbFRvcCkKKyAgICAgICAgICBzY3JvbGxiYXIuc2Nyb2xsVG9w
ID0gbGFzdFNjcm9sbFRvcDsKKyAgICAgICAgdXBkYXRlRGlzcGxheShbXSk7CisgICAgICB9Cisg
ICAgICBpZiAob3B0aW9ucy5vblNjcm9sbCkgb3B0aW9ucy5vblNjcm9sbChpbnN0YW5jZSk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gb25Nb3VzZURvd24oZSkgeworICAgICAgc2V0U2hpZnQoZV9w
cm9wKGUsICJzaGlmdEtleSIpKTsKKyAgICAgIC8vIENoZWNrIHdoZXRoZXIgdGhpcyBpcyBhIGNs
aWNrIGluIGEgd2lkZ2V0CisgICAgICBmb3IgKHZhciBuID0gZV90YXJnZXQoZSk7IG4gIT0gd3Jh
cHBlcjsgbiA9IG4ucGFyZW50Tm9kZSkKKyAgICAgICAgaWYgKG4ucGFyZW50Tm9kZSA9PSBzaXpl
ciAmJiBuICE9IG1vdmVyKSByZXR1cm47CisKKyAgICAgIC8vIFNlZSBpZiB0aGlzIGlzIGEgY2xp
Y2sgaW4gdGhlIGd1dHRlcgorICAgICAgZm9yICh2YXIgbiA9IGVfdGFyZ2V0KGUpOyBuICE9IHdy
YXBwZXI7IG4gPSBuLnBhcmVudE5vZGUpCisgICAgICAgIGlmIChuLnBhcmVudE5vZGUgPT0gZ3V0
dGVyVGV4dCkgeworICAgICAgICAgIGlmIChvcHRpb25zLm9uR3V0dGVyQ2xpY2spCisgICAgICAg
ICAgICBvcHRpb25zLm9uR3V0dGVyQ2xpY2soaW5zdGFuY2UsIGluZGV4T2YoZ3V0dGVyVGV4dC5j
aGlsZE5vZGVzLCBuKSArIHNob3dpbmdGcm9tLCBlKTsKKyAgICAgICAgICByZXR1cm4gZV9wcmV2
ZW50RGVmYXVsdChlKTsKKyAgICAgICAgfQorCisgICAgICB2YXIgc3RhcnQgPSBwb3NGcm9tTW91
c2UoZSk7CisKKyAgICAgIHN3aXRjaCAoZV9idXR0b24oZSkpIHsKKyAgICAgIGNhc2UgMzoKKyAg
ICAgICAgaWYgKGdlY2tvKSBvbkNvbnRleHRNZW51KGUpOworICAgICAgICByZXR1cm47CisgICAg
ICBjYXNlIDI6CisgICAgICAgIGlmIChzdGFydCkgc2V0Q3Vyc29yKHN0YXJ0LmxpbmUsIHN0YXJ0
LmNoLCB0cnVlKTsKKyAgICAgICAgc2V0VGltZW91dChmb2N1c0lucHV0LCAyMCk7CisgICAgICAg
IGVfcHJldmVudERlZmF1bHQoZSk7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAgICAgIC8v
IEZvciBidXR0b24gMSwgaWYgaXQgd2FzIGNsaWNrZWQgaW5zaWRlIHRoZSBlZGl0b3IKKyAgICAg
IC8vIChwb3NGcm9tTW91c2UgcmV0dXJuaW5nIG5vbi1udWxsKSwgd2UgaGF2ZSB0byBhZGp1c3Qg
dGhlCisgICAgICAvLyBzZWxlY3Rpb24uCisgICAgICBpZiAoIXN0YXJ0KSB7aWYgKGVfdGFyZ2V0
KGUpID09IHNjcm9sbGVyKSBlX3ByZXZlbnREZWZhdWx0KGUpOyByZXR1cm47fQorCisgICAgICBp
ZiAoIWZvY3VzZWQpIG9uRm9jdXMoKTsKKworICAgICAgdmFyIG5vdyA9ICtuZXcgRGF0ZSwgdHlw
ZSA9ICJzaW5nbGUiOworICAgICAgaWYgKGxhc3REb3VibGVDbGljayAmJiBsYXN0RG91YmxlQ2xp
Y2sudGltZSA+IG5vdyAtIDQwMCAmJiBwb3NFcShsYXN0RG91YmxlQ2xpY2sucG9zLCBzdGFydCkp
IHsKKyAgICAgICAgdHlwZSA9ICJ0cmlwbGUiOworICAgICAgICBlX3ByZXZlbnREZWZhdWx0KGUp
OworICAgICAgICBzZXRUaW1lb3V0KGZvY3VzSW5wdXQsIDIwKTsKKyAgICAgICAgc2VsZWN0TGlu
ZShzdGFydC5saW5lKTsKKyAgICAgIH0gZWxzZSBpZiAobGFzdENsaWNrICYmIGxhc3RDbGljay50
aW1lID4gbm93IC0gNDAwICYmIHBvc0VxKGxhc3RDbGljay5wb3MsIHN0YXJ0KSkgeworICAgICAg
ICB0eXBlID0gImRvdWJsZSI7CisgICAgICAgIGxhc3REb3VibGVDbGljayA9IHt0aW1lOiBub3cs
IHBvczogc3RhcnR9OworICAgICAgICBlX3ByZXZlbnREZWZhdWx0KGUpOworICAgICAgICB2YXIg
d29yZCA9IGZpbmRXb3JkQXQoc3RhcnQpOworICAgICAgICBzZXRTZWxlY3Rpb25Vc2VyKHdvcmQu
ZnJvbSwgd29yZC50byk7CisgICAgICB9IGVsc2UgeyBsYXN0Q2xpY2sgPSB7dGltZTogbm93LCBw
b3M6IHN0YXJ0fTsgfQorCisgICAgICBmdW5jdGlvbiBkcmFnRW5kKGUyKSB7CisgICAgICAgIGlm
ICh3ZWJraXQpIHNjcm9sbGVyLmRyYWdnYWJsZSA9IGZhbHNlOworICAgICAgICBkcmFnZ2luZ1Rl
eHQgPSBmYWxzZTsKKyAgICAgICAgdXAoKTsgZHJvcCgpOworICAgICAgICBpZiAoTWF0aC5hYnMo
ZS5jbGllbnRYIC0gZTIuY2xpZW50WCkgKyBNYXRoLmFicyhlLmNsaWVudFkgLSBlMi5jbGllbnRZ
KSA8IDEwKSB7CisgICAgICAgICAgZV9wcmV2ZW50RGVmYXVsdChlMik7CisgICAgICAgICAgc2V0
Q3Vyc29yKHN0YXJ0LmxpbmUsIHN0YXJ0LmNoLCB0cnVlKTsKKyAgICAgICAgICBmb2N1c0lucHV0
KCk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHZhciBsYXN0ID0gc3RhcnQsIGdvaW5nOwor
ICAgICAgaWYgKG9wdGlvbnMuZHJhZ0Ryb3AgJiYgZHJhZ0FuZERyb3AgJiYgIW9wdGlvbnMucmVh
ZE9ubHkgJiYgIXBvc0VxKHNlbC5mcm9tLCBzZWwudG8pICYmCisgICAgICAgICAgIXBvc0xlc3Mo
c3RhcnQsIHNlbC5mcm9tKSAmJiAhcG9zTGVzcyhzZWwudG8sIHN0YXJ0KSAmJiB0eXBlID09ICJz
aW5nbGUiKSB7CisgICAgICAgIC8vIExldCB0aGUgZHJhZyBoYW5kbGVyIGhhbmRsZSB0aGlzLgor
ICAgICAgICBpZiAod2Via2l0KSBzY3JvbGxlci5kcmFnZ2FibGUgPSB0cnVlOworICAgICAgICB2
YXIgdXAgPSBjb25uZWN0KGRvY3VtZW50LCAibW91c2V1cCIsIG9wZXJhdGlvbihkcmFnRW5kKSwg
dHJ1ZSk7CisgICAgICAgIHZhciBkcm9wID0gY29ubmVjdChzY3JvbGxlciwgImRyb3AiLCBvcGVy
YXRpb24oZHJhZ0VuZCksIHRydWUpOworICAgICAgICBkcmFnZ2luZ1RleHQgPSB0cnVlOworICAg
ICAgICAvLyBJRSdzIGFwcHJvYWNoIHRvIGRyYWdnYWJsZQorICAgICAgICBpZiAoc2Nyb2xsZXIu
ZHJhZ0Ryb3ApIHNjcm9sbGVyLmRyYWdEcm9wKCk7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0K
KyAgICAgIGVfcHJldmVudERlZmF1bHQoZSk7CisgICAgICBpZiAodHlwZSA9PSAic2luZ2xlIikg
c2V0Q3Vyc29yKHN0YXJ0LmxpbmUsIHN0YXJ0LmNoLCB0cnVlKTsKKworICAgICAgdmFyIHN0YXJ0
c3RhcnQgPSBzZWwuZnJvbSwgc3RhcnRlbmQgPSBzZWwudG87CisKKyAgICAgIGZ1bmN0aW9uIGRv
U2VsZWN0KGN1cikgeworICAgICAgICBpZiAodHlwZSA9PSAic2luZ2xlIikgeworICAgICAgICAg
IHNldFNlbGVjdGlvblVzZXIoc3RhcnQsIGN1cik7CisgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9
PSAiZG91YmxlIikgeworICAgICAgICAgIHZhciB3b3JkID0gZmluZFdvcmRBdChjdXIpOworICAg
ICAgICAgIGlmIChwb3NMZXNzKGN1ciwgc3RhcnRzdGFydCkpIHNldFNlbGVjdGlvblVzZXIod29y
ZC5mcm9tLCBzdGFydGVuZCk7CisgICAgICAgICAgZWxzZSBzZXRTZWxlY3Rpb25Vc2VyKHN0YXJ0
c3RhcnQsIHdvcmQudG8pOworICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gInRyaXBsZSIpIHsK
KyAgICAgICAgICBpZiAocG9zTGVzcyhjdXIsIHN0YXJ0c3RhcnQpKSBzZXRTZWxlY3Rpb25Vc2Vy
KHN0YXJ0ZW5kLCBjbGlwUG9zKHtsaW5lOiBjdXIubGluZSwgY2g6IDB9KSk7CisgICAgICAgICAg
ZWxzZSBzZXRTZWxlY3Rpb25Vc2VyKHN0YXJ0c3RhcnQsIGNsaXBQb3Moe2xpbmU6IGN1ci5saW5l
ICsgMSwgY2g6IDB9KSk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgZnVuY3Rpb24gZXh0
ZW5kKGUpIHsKKyAgICAgICAgdmFyIGN1ciA9IHBvc0Zyb21Nb3VzZShlLCB0cnVlKTsKKyAgICAg
ICAgaWYgKGN1ciAmJiAhcG9zRXEoY3VyLCBsYXN0KSkgeworICAgICAgICAgIGlmICghZm9jdXNl
ZCkgb25Gb2N1cygpOworICAgICAgICAgIGxhc3QgPSBjdXI7CisgICAgICAgICAgZG9TZWxlY3Qo
Y3VyKTsKKyAgICAgICAgICB1cGRhdGVJbnB1dCA9IGZhbHNlOworICAgICAgICAgIHZhciB2aXNp
YmxlID0gdmlzaWJsZUxpbmVzKCk7CisgICAgICAgICAgaWYgKGN1ci5saW5lID49IHZpc2libGUu
dG8gfHwgY3VyLmxpbmUgPCB2aXNpYmxlLmZyb20pCisgICAgICAgICAgICBnb2luZyA9IHNldFRp
bWVvdXQob3BlcmF0aW9uKGZ1bmN0aW9uKCl7ZXh0ZW5kKGUpO30pLCAxNTApOworICAgICAgICB9
CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIGRvbmUoZSkgeworICAgICAgICBjbGVhclRpbWVv
dXQoZ29pbmcpOworICAgICAgICB2YXIgY3VyID0gcG9zRnJvbU1vdXNlKGUpOworICAgICAgICBp
ZiAoY3VyKSBkb1NlbGVjdChjdXIpOworICAgICAgICBlX3ByZXZlbnREZWZhdWx0KGUpOworICAg
ICAgICBmb2N1c0lucHV0KCk7CisgICAgICAgIHVwZGF0ZUlucHV0ID0gdHJ1ZTsKKyAgICAgICAg
bW92ZSgpOyB1cCgpOworICAgICAgfQorICAgICAgdmFyIG1vdmUgPSBjb25uZWN0KGRvY3VtZW50
LCAibW91c2Vtb3ZlIiwgb3BlcmF0aW9uKGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgY2xlYXJUaW1l
b3V0KGdvaW5nKTsKKyAgICAgICAgZV9wcmV2ZW50RGVmYXVsdChlKTsKKyAgICAgICAgaWYgKCFp
ZSAmJiAhZV9idXR0b24oZSkpIGRvbmUoZSk7CisgICAgICAgIGVsc2UgZXh0ZW5kKGUpOworICAg
ICAgfSksIHRydWUpOworICAgICAgdmFyIHVwID0gY29ubmVjdChkb2N1bWVudCwgIm1vdXNldXAi
LCBvcGVyYXRpb24oZG9uZSksIHRydWUpOworICAgIH0KKyAgICBmdW5jdGlvbiBvbkRvdWJsZUNs
aWNrKGUpIHsKKyAgICAgIGZvciAodmFyIG4gPSBlX3RhcmdldChlKTsgbiAhPSB3cmFwcGVyOyBu
ID0gbi5wYXJlbnROb2RlKQorICAgICAgICBpZiAobi5wYXJlbnROb2RlID09IGd1dHRlclRleHQp
IHJldHVybiBlX3ByZXZlbnREZWZhdWx0KGUpOworICAgICAgZV9wcmV2ZW50RGVmYXVsdChlKTsK
KyAgICB9CisgICAgZnVuY3Rpb24gb25Ecm9wKGUpIHsKKyAgICAgIGlmIChvcHRpb25zLm9uRHJh
Z0V2ZW50ICYmIG9wdGlvbnMub25EcmFnRXZlbnQoaW5zdGFuY2UsIGFkZFN0b3AoZSkpKSByZXR1
cm47CisgICAgICBlX3ByZXZlbnREZWZhdWx0KGUpOworICAgICAgdmFyIHBvcyA9IHBvc0Zyb21N
b3VzZShlLCB0cnVlKSwgZmlsZXMgPSBlLmRhdGFUcmFuc2Zlci5maWxlczsKKyAgICAgIGlmICgh
cG9zIHx8IG9wdGlvbnMucmVhZE9ubHkpIHJldHVybjsKKyAgICAgIGlmIChmaWxlcyAmJiBmaWxl
cy5sZW5ndGggJiYgd2luZG93LkZpbGVSZWFkZXIgJiYgd2luZG93LkZpbGUpIHsKKyAgICAgICAg
dmFyIG4gPSBmaWxlcy5sZW5ndGgsIHRleHQgPSBBcnJheShuKSwgcmVhZCA9IDA7CisgICAgICAg
IHZhciBsb2FkRmlsZSA9IGZ1bmN0aW9uKGZpbGUsIGkpIHsKKyAgICAgICAgICB2YXIgcmVhZGVy
ID0gbmV3IEZpbGVSZWFkZXI7CisgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgdGV4dFtpXSA9IHJlYWRlci5yZXN1bHQ7CisgICAgICAgICAgICBpZiAo
KytyZWFkID09IG4pIHsKKyAgICAgICAgICAgICAgcG9zID0gY2xpcFBvcyhwb3MpOworICAgICAg
ICAgICAgICBvcGVyYXRpb24oZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdmFyIGVuZCA9
IHJlcGxhY2VSYW5nZSh0ZXh0LmpvaW4oIiIpLCBwb3MsIHBvcyk7CisgICAgICAgICAgICAgICAg
c2V0U2VsZWN0aW9uVXNlcihwb3MsIGVuZCk7CisgICAgICAgICAgICAgIH0pKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgfTsKKyAgICAgICAgICByZWFkZXIucmVhZEFzVGV4dChmaWxlKTsK
KyAgICAgICAgfTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIGxvYWRGaWxl
KGZpbGVzW2ldLCBpKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIC8vIERvbid0IGRvIGEgcmVw
bGFjZSBpZiB0aGUgZHJvcCBoYXBwZW5lZCBpbnNpZGUgb2YgdGhlIHNlbGVjdGVkIHRleHQuCisg
ICAgICAgIGlmIChkcmFnZ2luZ1RleHQgJiYgIShwb3NMZXNzKHBvcywgc2VsLmZyb20pIHx8IHBv
c0xlc3Moc2VsLnRvLCBwb3MpKSkgcmV0dXJuOworICAgICAgICB0cnkgeworICAgICAgICAgIHZh
ciB0ZXh0ID0gZS5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgiVGV4dCIpOworICAgICAgICAgIGlmICh0
ZXh0KSB7CisgICAgICAgICAgICBjb21wb3VuZENoYW5nZShmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgdmFyIGN1ckZyb20gPSBzZWwuZnJvbSwgY3VyVG8gPSBzZWwudG87CisgICAgICAgICAg
ICAgIHNldFNlbGVjdGlvblVzZXIocG9zLCBwb3MpOworICAgICAgICAgICAgICBpZiAoZHJhZ2dp
bmdUZXh0KSByZXBsYWNlUmFuZ2UoIiIsIGN1ckZyb20sIGN1clRvKTsKKyAgICAgICAgICAgICAg
cmVwbGFjZVNlbGVjdGlvbih0ZXh0KTsKKyAgICAgICAgICAgICAgZm9jdXNJbnB1dCgpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhdGNoKGUpe30K
KyAgICAgIH0KKyAgICB9CisgICAgZnVuY3Rpb24gb25EcmFnU3RhcnQoZSkgeworICAgICAgdmFy
IHR4dCA9IGdldFNlbGVjdGlvbigpOworICAgICAgZS5kYXRhVHJhbnNmZXIuc2V0RGF0YSgiVGV4
dCIsIHR4dCk7CisKKyAgICAgIC8vIFVzZSBkdW1teSBpbWFnZSBpbnN0ZWFkIG9mIGRlZmF1bHQg
YnJvd3NlcnMgaW1hZ2UuCisgICAgICBpZiAoZ2Vja28gfHwgY2hyb21lIHx8IG9wZXJhKSB7Cisg
ICAgICAgIHZhciBpbWcgPSBlbHQoJ2ltZycpOworICAgICAgICBpbWcuc2NyID0gJ2RhdGE6aW1h
Z2UvZ2lmO2Jhc2U2NCxSMGxHT0RkaEFnQUNBSUFBQUFBQUFQLy8veXdBQUFBQUFnQUNBQUFDQW9S
UkFEcz0nOyAvLzF4MSBpbWFnZQorICAgICAgICBlLmRhdGFUcmFuc2Zlci5zZXREcmFnSW1hZ2Uo
aW1nLCAwLCAwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBkb0hhbmRsZUJpbmRp
bmcoYm91bmQsIGRyb3BTaGlmdCkgeworICAgICAgaWYgKHR5cGVvZiBib3VuZCA9PSAic3RyaW5n
IikgeworICAgICAgICBib3VuZCA9IGNvbW1hbmRzW2JvdW5kXTsKKyAgICAgICAgaWYgKCFib3Vu
ZCkgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgICAgdmFyIHByZXZTaGlmdCA9IHNoaWZ0U2Vs
ZWN0aW5nOworICAgICAgdHJ5IHsKKyAgICAgICAgaWYgKG9wdGlvbnMucmVhZE9ubHkpIHN1cHBy
ZXNzRWRpdHMgPSB0cnVlOworICAgICAgICBpZiAoZHJvcFNoaWZ0KSBzaGlmdFNlbGVjdGluZyA9
IG51bGw7CisgICAgICAgIGJvdW5kKGluc3RhbmNlKTsKKyAgICAgIH0gY2F0Y2goZSkgeworICAg
ICAgICBpZiAoZSAhPSBQYXNzKSB0aHJvdyBlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICB9IGZpbmFsbHkgeworICAgICAgICBzaGlmdFNlbGVjdGluZyA9IHByZXZTaGlmdDsKKyAgICAg
ICAgc3VwcHJlc3NFZGl0cyA9IGZhbHNlOworICAgICAgfQorICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIHZhciBtYXliZVRyYW5zaXRpb247CisgICAgZnVuY3Rpb24gaGFuZGxlS2V5Qmlu
ZGluZyhlKSB7CisgICAgICAvLyBIYW5kbGUgYXV0byBrZXltYXAgdHJhbnNpdGlvbnMKKyAgICAg
IHZhciBzdGFydE1hcCA9IGdldEtleU1hcChvcHRpb25zLmtleU1hcCksIG5leHQgPSBzdGFydE1h
cC5hdXRvOworICAgICAgY2xlYXJUaW1lb3V0KG1heWJlVHJhbnNpdGlvbik7CisgICAgICBpZiAo
bmV4dCAmJiAhaXNNb2RpZmllcktleShlKSkgbWF5YmVUcmFuc2l0aW9uID0gc2V0VGltZW91dChm
dW5jdGlvbigpIHsKKyAgICAgICAgaWYgKGdldEtleU1hcChvcHRpb25zLmtleU1hcCkgPT0gc3Rh
cnRNYXApIHsKKyAgICAgICAgICBvcHRpb25zLmtleU1hcCA9IChuZXh0LmNhbGwgPyBuZXh0LmNh
bGwobnVsbCwgaW5zdGFuY2UpIDogbmV4dCk7CisgICAgICAgIH0KKyAgICAgIH0sIDUwKTsKKwor
ICAgICAgdmFyIG5hbWUgPSBrZXlOYW1lc1tlX3Byb3AoZSwgImtleUNvZGUiKV0sIGhhbmRsZWQg
PSBmYWxzZTsKKyAgICAgIGlmIChuYW1lID09IG51bGwgfHwgZS5hbHRHcmFwaEtleSkgcmV0dXJu
IGZhbHNlOworICAgICAgaWYgKGVfcHJvcChlLCAiYWx0S2V5IikpIG5hbWUgPSAiQWx0LSIgKyBu
YW1lOworICAgICAgaWYgKGVfcHJvcChlLCAiY3RybEtleSIpKSBuYW1lID0gIkN0cmwtIiArIG5h
bWU7CisgICAgICBpZiAoZV9wcm9wKGUsICJtZXRhS2V5IikpIG5hbWUgPSAiQ21kLSIgKyBuYW1l
OworCisgICAgICB2YXIgc3RvcHBlZCA9IGZhbHNlOworICAgICAgZnVuY3Rpb24gc3RvcCgpIHsg
c3RvcHBlZCA9IHRydWU7IH0KKworICAgICAgaWYgKGVfcHJvcChlLCAic2hpZnRLZXkiKSkgewor
ICAgICAgICBoYW5kbGVkID0gbG9va3VwS2V5KCJTaGlmdC0iICsgbmFtZSwgb3B0aW9ucy5leHRy
YUtleXMsIG9wdGlvbnMua2V5TWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0
aW9uKGIpIHtyZXR1cm4gZG9IYW5kbGVCaW5kaW5nKGIsIHRydWUpO30sIHN0b3ApCisgICAgICAg
ICAgICAgICB8fCBsb29rdXBLZXkobmFtZSwgb3B0aW9ucy5leHRyYUtleXMsIG9wdGlvbnMua2V5
TWFwLCBmdW5jdGlvbihiKSB7CisgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYiA9PSAic3Ry
aW5nIiAmJiAvXmdvW0EtWl0vLnRlc3QoYikpIHJldHVybiBkb0hhbmRsZUJpbmRpbmcoYik7Cisg
ICAgICAgICAgICAgICB9LCBzdG9wKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGhhbmRsZWQg
PSBsb29rdXBLZXkobmFtZSwgb3B0aW9ucy5leHRyYUtleXMsIG9wdGlvbnMua2V5TWFwLCBkb0hh
bmRsZUJpbmRpbmcsIHN0b3ApOworICAgICAgfQorICAgICAgaWYgKHN0b3BwZWQpIGhhbmRsZWQg
PSBmYWxzZTsKKyAgICAgIGlmIChoYW5kbGVkKSB7CisgICAgICAgIGVfcHJldmVudERlZmF1bHQo
ZSk7CisgICAgICAgIHJlc3RhcnRCbGluaygpOworICAgICAgICBpZiAoaWUpIHsgZS5vbGRLZXlD
b2RlID0gZS5rZXlDb2RlOyBlLmtleUNvZGUgPSAwOyB9CisgICAgICB9CisgICAgICByZXR1cm4g
aGFuZGxlZDsKKyAgICB9CisgICAgZnVuY3Rpb24gaGFuZGxlQ2hhckJpbmRpbmcoZSwgY2gpIHsK
KyAgICAgIHZhciBoYW5kbGVkID0gbG9va3VwS2V5KCInIiArIGNoICsgIiciLCBvcHRpb25zLmV4
dHJhS2V5cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMua2V5TWFwLCBm
dW5jdGlvbihiKSB7IHJldHVybiBkb0hhbmRsZUJpbmRpbmcoYiwgdHJ1ZSk7IH0pOworICAgICAg
aWYgKGhhbmRsZWQpIHsKKyAgICAgICAgZV9wcmV2ZW50RGVmYXVsdChlKTsKKyAgICAgICAgcmVz
dGFydEJsaW5rKCk7CisgICAgICB9CisgICAgICByZXR1cm4gaGFuZGxlZDsKKyAgICB9CisKKyAg
ICB2YXIgbGFzdFN0b3BwZWRLZXkgPSBudWxsOworICAgIGZ1bmN0aW9uIG9uS2V5RG93bihlKSB7
CisgICAgICBpZiAoIWZvY3VzZWQpIG9uRm9jdXMoKTsKKyAgICAgIGlmIChpZSAmJiBlLmtleUNv
ZGUgPT0gMjcpIHsgZS5yZXR1cm5WYWx1ZSA9IGZhbHNlOyB9CisgICAgICBpZiAocG9sbGluZ0Zh
c3QpIHsgaWYgKHJlYWRJbnB1dCgpKSBwb2xsaW5nRmFzdCA9IGZhbHNlOyB9CisgICAgICBpZiAo
b3B0aW9ucy5vbktleUV2ZW50ICYmIG9wdGlvbnMub25LZXlFdmVudChpbnN0YW5jZSwgYWRkU3Rv
cChlKSkpIHJldHVybjsKKyAgICAgIHZhciBjb2RlID0gZV9wcm9wKGUsICJrZXlDb2RlIik7Cisg
ICAgICAvLyBJRSBkb2VzIHN0cmFuZ2UgdGhpbmdzIHdpdGggZXNjYXBlLgorICAgICAgc2V0U2hp
ZnQoY29kZSA9PSAxNiB8fCBlX3Byb3AoZSwgInNoaWZ0S2V5IikpOworICAgICAgLy8gRmlyc3Qg
Z2l2ZSBvbktleUV2ZW50IG9wdGlvbiBhIGNoYW5jZSB0byBoYW5kbGUgdGhpcy4KKyAgICAgIHZh
ciBoYW5kbGVkID0gaGFuZGxlS2V5QmluZGluZyhlKTsKKyAgICAgIGlmIChvcGVyYSkgeworICAg
ICAgICBsYXN0U3RvcHBlZEtleSA9IGhhbmRsZWQgPyBjb2RlIDogbnVsbDsKKyAgICAgICAgLy8g
T3BlcmEgaGFzIG5vIGN1dCBldmVudC4uLiB3ZSB0cnkgdG8gYXQgbGVhc3QgY2F0Y2ggdGhlIGtl
eSBjb21ibworICAgICAgICBpZiAoIWhhbmRsZWQgJiYgY29kZSA9PSA4OCAmJiBlX3Byb3AoZSwg
bWFjID8gIm1ldGFLZXkiIDogImN0cmxLZXkiKSkKKyAgICAgICAgICByZXBsYWNlU2VsZWN0aW9u
KCIiKTsKKyAgICAgIH0KKyAgICB9CisgICAgZnVuY3Rpb24gb25LZXlQcmVzcyhlKSB7CisgICAg
ICBpZiAocG9sbGluZ0Zhc3QpIHJlYWRJbnB1dCgpOworICAgICAgaWYgKG9wdGlvbnMub25LZXlF
dmVudCAmJiBvcHRpb25zLm9uS2V5RXZlbnQoaW5zdGFuY2UsIGFkZFN0b3AoZSkpKSByZXR1cm47
CisgICAgICB2YXIga2V5Q29kZSA9IGVfcHJvcChlLCAia2V5Q29kZSIpLCBjaGFyQ29kZSA9IGVf
cHJvcChlLCAiY2hhckNvZGUiKTsKKyAgICAgIGlmIChvcGVyYSAmJiBrZXlDb2RlID09IGxhc3RT
dG9wcGVkS2V5KSB7bGFzdFN0b3BwZWRLZXkgPSBudWxsOyBlX3ByZXZlbnREZWZhdWx0KGUpOyBy
ZXR1cm47fQorICAgICAgaWYgKCgob3BlcmEgJiYgKCFlLndoaWNoIHx8IGUud2hpY2ggPCAxMCkp
IHx8IGtodG1sKSAmJiBoYW5kbGVLZXlCaW5kaW5nKGUpKSByZXR1cm47CisgICAgICB2YXIgY2gg
PSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNoYXJDb2RlID09IG51bGwgPyBrZXlDb2RlIDogY2hhckNv
ZGUpOworICAgICAgaWYgKG9wdGlvbnMuZWxlY3RyaWNDaGFycyAmJiBtb2RlLmVsZWN0cmljQ2hh
cnMgJiYgb3B0aW9ucy5zbWFydEluZGVudCAmJiAhb3B0aW9ucy5yZWFkT25seSkgeworICAgICAg
ICBpZiAobW9kZS5lbGVjdHJpY0NoYXJzLmluZGV4T2YoY2gpID4gLTEpCisgICAgICAgICAgc2V0
VGltZW91dChvcGVyYXRpb24oZnVuY3Rpb24oKSB7aW5kZW50TGluZShzZWwudG8ubGluZSwgInNt
YXJ0Iik7fSksIDc1KTsKKyAgICAgIH0KKyAgICAgIGlmIChoYW5kbGVDaGFyQmluZGluZyhlLCBj
aCkpIHJldHVybjsKKyAgICAgIGZhc3RQb2xsKCk7CisgICAgfQorICAgIGZ1bmN0aW9uIG9uS2V5
VXAoZSkgeworICAgICAgaWYgKG9wdGlvbnMub25LZXlFdmVudCAmJiBvcHRpb25zLm9uS2V5RXZl
bnQoaW5zdGFuY2UsIGFkZFN0b3AoZSkpKSByZXR1cm47CisgICAgICBpZiAoZV9wcm9wKGUsICJr
ZXlDb2RlIikgPT0gMTYpIHNoaWZ0U2VsZWN0aW5nID0gbnVsbDsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBvbkZvY3VzKCkgeworICAgICAgaWYgKG9wdGlvbnMucmVhZE9ubHkgPT0gIm5vY3Vyc29y
IikgcmV0dXJuOworICAgICAgaWYgKCFmb2N1c2VkKSB7CisgICAgICAgIGlmIChvcHRpb25zLm9u
Rm9jdXMpIG9wdGlvbnMub25Gb2N1cyhpbnN0YW5jZSk7CisgICAgICAgIGZvY3VzZWQgPSB0cnVl
OworICAgICAgICBpZiAoc2Nyb2xsZXIuY2xhc3NOYW1lLnNlYXJjaCgvXGJDb2RlTWlycm9yLWZv
Y3VzZWRcYi8pID09IC0xKQorICAgICAgICAgIHNjcm9sbGVyLmNsYXNzTmFtZSArPSAiIENvZGVN
aXJyb3ItZm9jdXNlZCI7CisgICAgICAgIGlmICghbGVhdmVJbnB1dEFsb25lKSByZXNldElucHV0
KHRydWUpOworICAgICAgfQorICAgICAgc2xvd1BvbGwoKTsKKyAgICAgIHJlc3RhcnRCbGluaygp
OworICAgIH0KKyAgICBmdW5jdGlvbiBvbkJsdXIoKSB7CisgICAgICBpZiAoZm9jdXNlZCkgewor
ICAgICAgICBpZiAob3B0aW9ucy5vbkJsdXIpIG9wdGlvbnMub25CbHVyKGluc3RhbmNlKTsKKyAg
ICAgICAgZm9jdXNlZCA9IGZhbHNlOworICAgICAgICBpZiAoYnJhY2tldEhpZ2hsaWdodGVkKQor
ICAgICAgICAgIG9wZXJhdGlvbihmdW5jdGlvbigpeworICAgICAgICAgICAgaWYgKGJyYWNrZXRI
aWdobGlnaHRlZCkgeyBicmFja2V0SGlnaGxpZ2h0ZWQoKTsgYnJhY2tldEhpZ2hsaWdodGVkID0g
bnVsbDsgfQorICAgICAgICAgIH0pKCk7CisgICAgICAgIHNjcm9sbGVyLmNsYXNzTmFtZSA9IHNj
cm9sbGVyLmNsYXNzTmFtZS5yZXBsYWNlKCIgQ29kZU1pcnJvci1mb2N1c2VkIiwgIiIpOworICAg
ICAgfQorICAgICAgY2xlYXJJbnRlcnZhbChibGlua2VyKTsKKyAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7aWYgKCFmb2N1c2VkKSBzaGlmdFNlbGVjdGluZyA9IG51bGw7fSwgMTUwKTsKKyAg
ICB9CisKKyAgICAvLyBSZXBsYWNlIHRoZSByYW5nZSBmcm9tIGZyb20gdG8gdG8gYnkgdGhlIHN0
cmluZ3MgaW4gbmV3VGV4dC4KKyAgICAvLyBBZnRlcndhcmRzLCBzZXQgdGhlIHNlbGVjdGlvbiB0
byBzZWxGcm9tLCBzZWxUby4KKyAgICBmdW5jdGlvbiB1cGRhdGVMaW5lcyhmcm9tLCB0bywgbmV3
VGV4dCwgc2VsRnJvbSwgc2VsVG8pIHsKKyAgICAgIGlmIChzdXBwcmVzc0VkaXRzKSByZXR1cm47
CisgICAgICBpZiAoaGlzdG9yeSkgeworICAgICAgICB2YXIgb2xkID0gW107CisgICAgICAgIGRv
Yy5pdGVyKGZyb20ubGluZSwgdG8ubGluZSArIDEsIGZ1bmN0aW9uKGxpbmUpIHsgb2xkLnB1c2go
bGluZS50ZXh0KTsgfSk7CisgICAgICAgIGhpc3RvcnkuYWRkQ2hhbmdlKGZyb20ubGluZSwgbmV3
VGV4dC5sZW5ndGgsIG9sZCk7CisgICAgICAgIHdoaWxlIChoaXN0b3J5LmRvbmUubGVuZ3RoID4g
b3B0aW9ucy51bmRvRGVwdGgpIGhpc3RvcnkuZG9uZS5zaGlmdCgpOworICAgICAgfQorICAgICAg
dXBkYXRlTGluZXNOb1VuZG8oZnJvbSwgdG8sIG5ld1RleHQsIHNlbEZyb20sIHNlbFRvKTsKKyAg
ICB9CisgICAgZnVuY3Rpb24gdW5yZWRvSGVscGVyKGZyb20sIHRvKSB7CisgICAgICBpZiAoIWZy
b20ubGVuZ3RoKSByZXR1cm47CisgICAgICB2YXIgc2V0ID0gZnJvbS5wb3AoKSwgb3V0ID0gW107
CisgICAgICBmb3IgKHZhciBpID0gc2V0Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaSAtPSAxKSB7Cisg
ICAgICAgIHZhciBjaGFuZ2UgPSBzZXRbaV07CisgICAgICAgIHZhciByZXBsYWNlZCA9IFtdLCBl
bmQgPSBjaGFuZ2Uuc3RhcnQgKyBjaGFuZ2UuYWRkZWQ7CisgICAgICAgIGRvYy5pdGVyKGNoYW5n
ZS5zdGFydCwgZW5kLCBmdW5jdGlvbihsaW5lKSB7IHJlcGxhY2VkLnB1c2gobGluZS50ZXh0KTsg
fSk7CisgICAgICAgIG91dC5wdXNoKHtzdGFydDogY2hhbmdlLnN0YXJ0LCBhZGRlZDogY2hhbmdl
Lm9sZC5sZW5ndGgsIG9sZDogcmVwbGFjZWR9KTsKKyAgICAgICAgdmFyIHBvcyA9IHtsaW5lOiBj
aGFuZ2Uuc3RhcnQgKyBjaGFuZ2Uub2xkLmxlbmd0aCAtIDEsCisgICAgICAgICAgICAgICAgICAg
Y2g6IGVkaXRFbmQocmVwbGFjZWRbcmVwbGFjZWQubGVuZ3RoLTFdLCBjaGFuZ2Uub2xkW2NoYW5n
ZS5vbGQubGVuZ3RoLTFdKX07CisgICAgICAgIHVwZGF0ZUxpbmVzTm9VbmRvKHtsaW5lOiBjaGFu
Z2Uuc3RhcnQsIGNoOiAwfSwge2xpbmU6IGVuZCAtIDEsIGNoOiBnZXRMaW5lKGVuZC0xKS50ZXh0
Lmxlbmd0aH0sIGNoYW5nZS5vbGQsIHBvcywgcG9zKTsKKyAgICAgIH0KKyAgICAgIHVwZGF0ZUlu
cHV0ID0gdHJ1ZTsKKyAgICAgIHRvLnB1c2gob3V0KTsKKyAgICB9CisgICAgZnVuY3Rpb24gdW5k
bygpIHt1bnJlZG9IZWxwZXIoaGlzdG9yeS5kb25lLCBoaXN0b3J5LnVuZG9uZSk7fQorICAgIGZ1
bmN0aW9uIHJlZG8oKSB7dW5yZWRvSGVscGVyKGhpc3RvcnkudW5kb25lLCBoaXN0b3J5LmRvbmUp
O30KKworICAgIGZ1bmN0aW9uIHVwZGF0ZUxpbmVzTm9VbmRvKGZyb20sIHRvLCBuZXdUZXh0LCBz
ZWxGcm9tLCBzZWxUbykgeworICAgICAgaWYgKHN1cHByZXNzRWRpdHMpIHJldHVybjsKKyAgICAg
IHZhciByZWNvbXB1dGVNYXhMZW5ndGggPSBmYWxzZSwgbWF4TGluZUxlbmd0aCA9IG1heExpbmUu
dGV4dC5sZW5ndGg7CisgICAgICBpZiAoIW9wdGlvbnMubGluZVdyYXBwaW5nKQorICAgICAgICBk
b2MuaXRlcihmcm9tLmxpbmUsIHRvLmxpbmUgKyAxLCBmdW5jdGlvbihsaW5lKSB7CisgICAgICAg
ICAgaWYgKCFsaW5lLmhpZGRlbiAmJiBsaW5lLnRleHQubGVuZ3RoID09IG1heExpbmVMZW5ndGgp
IHtyZWNvbXB1dGVNYXhMZW5ndGggPSB0cnVlOyByZXR1cm4gdHJ1ZTt9CisgICAgICAgIH0pOwor
ICAgICAgaWYgKGZyb20ubGluZSAhPSB0by5saW5lIHx8IG5ld1RleHQubGVuZ3RoID4gMSkgZ3V0
dGVyRGlydHkgPSB0cnVlOworCisgICAgICB2YXIgbmxpbmVzID0gdG8ubGluZSAtIGZyb20ubGlu
ZSwgZmlyc3RMaW5lID0gZ2V0TGluZShmcm9tLmxpbmUpLCBsYXN0TGluZSA9IGdldExpbmUodG8u
bGluZSk7CisgICAgICAvLyBGaXJzdCBhZGp1c3QgdGhlIGxpbmUgc3RydWN0dXJlLCB0YWtpbmcg
c29tZSBjYXJlIHRvIGxlYXZlIGhpZ2hsaWdodGluZyBpbnRhY3QuCisgICAgICBpZiAoZnJvbS5j
aCA9PSAwICYmIHRvLmNoID09IDAgJiYgbmV3VGV4dFtuZXdUZXh0Lmxlbmd0aCAtIDFdID09ICIi
KSB7CisgICAgICAgIC8vIFRoaXMgaXMgYSB3aG9sZS1saW5lIHJlcGxhY2UuIFRyZWF0ZWQgc3Bl
Y2lhbGx5IHRvIG1ha2UKKyAgICAgICAgLy8gc3VyZSBsaW5lIG9iamVjdHMgbW92ZSB0aGUgd2F5
IHRoZXkgYXJlIHN1cHBvc2VkIHRvLgorICAgICAgICB2YXIgYWRkZWQgPSBbXSwgcHJldkxpbmUg
PSBudWxsOworICAgICAgICBpZiAoZnJvbS5saW5lKSB7CisgICAgICAgICAgcHJldkxpbmUgPSBn
ZXRMaW5lKGZyb20ubGluZSAtIDEpOworICAgICAgICAgIHByZXZMaW5lLmZpeE1hcmtFbmRzKGxh
c3RMaW5lKTsKKyAgICAgICAgfSBlbHNlIGxhc3RMaW5lLmZpeE1hcmtTdGFydHMoKTsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDAsIGUgPSBuZXdUZXh0Lmxlbmd0aCAtIDE7IGkgPCBlOyArK2kpCisg
ICAgICAgICAgYWRkZWQucHVzaChMaW5lLmluaGVyaXRNYXJrcyhuZXdUZXh0W2ldLCBwcmV2TGlu
ZSkpOworICAgICAgICBpZiAobmxpbmVzKSBkb2MucmVtb3ZlKGZyb20ubGluZSwgbmxpbmVzLCBj
YWxsYmFja3MpOworICAgICAgICBpZiAoYWRkZWQubGVuZ3RoKSBkb2MuaW5zZXJ0KGZyb20ubGlu
ZSwgYWRkZWQpOworICAgICAgfSBlbHNlIGlmIChmaXJzdExpbmUgPT0gbGFzdExpbmUpIHsKKyAg
ICAgICAgaWYgKG5ld1RleHQubGVuZ3RoID09IDEpCisgICAgICAgICAgZmlyc3RMaW5lLnJlcGxh
Y2UoZnJvbS5jaCwgdG8uY2gsIG5ld1RleHRbMF0pOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICBsYXN0TGluZSA9IGZpcnN0TGluZS5zcGxpdCh0by5jaCwgbmV3VGV4dFtuZXdUZXh0Lmxlbmd0
aC0xXSk7CisgICAgICAgICAgZmlyc3RMaW5lLnJlcGxhY2UoZnJvbS5jaCwgbnVsbCwgbmV3VGV4
dFswXSk7CisgICAgICAgICAgZmlyc3RMaW5lLmZpeE1hcmtFbmRzKGxhc3RMaW5lKTsKKyAgICAg
ICAgICB2YXIgYWRkZWQgPSBbXTsKKyAgICAgICAgICBmb3IgKHZhciBpID0gMSwgZSA9IG5ld1Rl
eHQubGVuZ3RoIC0gMTsgaSA8IGU7ICsraSkKKyAgICAgICAgICAgIGFkZGVkLnB1c2goTGluZS5p
bmhlcml0TWFya3MobmV3VGV4dFtpXSwgZmlyc3RMaW5lKSk7CisgICAgICAgICAgYWRkZWQucHVz
aChsYXN0TGluZSk7CisgICAgICAgICAgZG9jLmluc2VydChmcm9tLmxpbmUgKyAxLCBhZGRlZCk7
CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSBpZiAobmV3VGV4dC5sZW5ndGggPT0gMSkgeworICAg
ICAgICBmaXJzdExpbmUucmVwbGFjZShmcm9tLmNoLCBudWxsLCBuZXdUZXh0WzBdKTsKKyAgICAg
ICAgbGFzdExpbmUucmVwbGFjZShudWxsLCB0by5jaCwgIiIpOworICAgICAgICBmaXJzdExpbmUu
YXBwZW5kKGxhc3RMaW5lKTsKKyAgICAgICAgZG9jLnJlbW92ZShmcm9tLmxpbmUgKyAxLCBubGlu
ZXMsIGNhbGxiYWNrcyk7CisgICAgICB9IGVsc2UgeworICAgICAgICB2YXIgYWRkZWQgPSBbXTsK
KyAgICAgICAgZmlyc3RMaW5lLnJlcGxhY2UoZnJvbS5jaCwgbnVsbCwgbmV3VGV4dFswXSk7Cisg
ICAgICAgIGxhc3RMaW5lLnJlcGxhY2UobnVsbCwgdG8uY2gsIG5ld1RleHRbbmV3VGV4dC5sZW5n
dGgtMV0pOworICAgICAgICBmaXJzdExpbmUuZml4TWFya0VuZHMobGFzdExpbmUpOworICAgICAg
ICBmb3IgKHZhciBpID0gMSwgZSA9IG5ld1RleHQubGVuZ3RoIC0gMTsgaSA8IGU7ICsraSkKKyAg
ICAgICAgICBhZGRlZC5wdXNoKExpbmUuaW5oZXJpdE1hcmtzKG5ld1RleHRbaV0sIGZpcnN0TGlu
ZSkpOworICAgICAgICBpZiAobmxpbmVzID4gMSkgZG9jLnJlbW92ZShmcm9tLmxpbmUgKyAxLCBu
bGluZXMgLSAxLCBjYWxsYmFja3MpOworICAgICAgICBkb2MuaW5zZXJ0KGZyb20ubGluZSArIDEs
IGFkZGVkKTsKKyAgICAgIH0KKyAgICAgIGlmIChvcHRpb25zLmxpbmVXcmFwcGluZykgeworICAg
ICAgICB2YXIgcGVyTGluZSA9IE1hdGgubWF4KDUsIHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gY2hh
cldpZHRoKCkgLSAzKTsKKyAgICAgICAgZG9jLml0ZXIoZnJvbS5saW5lLCBmcm9tLmxpbmUgKyBu
ZXdUZXh0Lmxlbmd0aCwgZnVuY3Rpb24obGluZSkgeworICAgICAgICAgIGlmIChsaW5lLmhpZGRl
bikgcmV0dXJuOworICAgICAgICAgIHZhciBndWVzcyA9IE1hdGguY2VpbChsaW5lLnRleHQubGVu
Z3RoIC8gcGVyTGluZSkgfHwgMTsKKyAgICAgICAgICBpZiAoZ3Vlc3MgIT0gbGluZS5oZWlnaHQp
IHVwZGF0ZUxpbmVIZWlnaHQobGluZSwgZ3Vlc3MpOworICAgICAgICB9KTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIGRvYy5pdGVyKGZyb20ubGluZSwgZnJvbS5saW5lICsgbmV3VGV4dC5sZW5n
dGgsIGZ1bmN0aW9uKGxpbmUpIHsKKyAgICAgICAgICB2YXIgbCA9IGxpbmUudGV4dDsKKyAgICAg
ICAgICBpZiAoIWxpbmUuaGlkZGVuICYmIGwubGVuZ3RoID4gbWF4TGluZUxlbmd0aCkgeworICAg
ICAgICAgICAgbWF4TGluZSA9IGxpbmU7IG1heExpbmVMZW5ndGggPSBsLmxlbmd0aDsgbWF4TGlu
ZUNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgcmVjb21wdXRlTWF4TGVuZ3RoID0gZmFsc2U7
CisgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgaWYgKHJlY29tcHV0ZU1heExlbmd0
aCkgdXBkYXRlTWF4TGluZSA9IHRydWU7CisgICAgICB9CisKKyAgICAgIC8vIEFkZCB0aGVzZSBs
aW5lcyB0byB0aGUgd29yayBhcnJheSwgc28gdGhhdCB0aGV5IHdpbGwgYmUKKyAgICAgIC8vIGhp
Z2hsaWdodGVkLiBBZGp1c3Qgd29yayBsaW5lcyBpZiBsaW5lcyB3ZXJlIGFkZGVkL3JlbW92ZWQu
CisgICAgICB2YXIgbmV3V29yayA9IFtdLCBsZW5kaWZmID0gbmV3VGV4dC5sZW5ndGggLSBubGlu
ZXMgLSAxOworICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSB3b3JrLmxlbmd0aDsgaSA8IGw7ICsr
aSkgeworICAgICAgICB2YXIgdGFzayA9IHdvcmtbaV07CisgICAgICAgIGlmICh0YXNrIDwgZnJv
bS5saW5lKSBuZXdXb3JrLnB1c2godGFzayk7CisgICAgICAgIGVsc2UgaWYgKHRhc2sgPiB0by5s
aW5lKSBuZXdXb3JrLnB1c2godGFzayArIGxlbmRpZmYpOworICAgICAgfQorICAgICAgdmFyIGhs
RW5kID0gZnJvbS5saW5lICsgTWF0aC5taW4obmV3VGV4dC5sZW5ndGgsIDUwMCk7CisgICAgICBo
aWdobGlnaHRMaW5lcyhmcm9tLmxpbmUsIGhsRW5kKTsKKyAgICAgIG5ld1dvcmsucHVzaChobEVu
ZCk7CisgICAgICB3b3JrID0gbmV3V29yazsKKyAgICAgIHN0YXJ0V29ya2VyKDEwMCk7CisgICAg
ICAvLyBSZW1lbWJlciB0aGF0IHRoZXNlIGxpbmVzIGNoYW5nZWQsIGZvciB1cGRhdGluZyB0aGUg
ZGlzcGxheQorICAgICAgY2hhbmdlcy5wdXNoKHtmcm9tOiBmcm9tLmxpbmUsIHRvOiB0by5saW5l
ICsgMSwgZGlmZjogbGVuZGlmZn0pOworICAgICAgdmFyIGNoYW5nZU9iaiA9IHtmcm9tOiBmcm9t
LCB0bzogdG8sIHRleHQ6IG5ld1RleHR9OworICAgICAgaWYgKHRleHRDaGFuZ2VkKSB7CisgICAg
ICAgIGZvciAodmFyIGN1ciA9IHRleHRDaGFuZ2VkOyBjdXIubmV4dDsgY3VyID0gY3VyLm5leHQp
IHt9CisgICAgICAgIGN1ci5uZXh0ID0gY2hhbmdlT2JqOworICAgICAgfSBlbHNlIHRleHRDaGFu
Z2VkID0gY2hhbmdlT2JqOworCisgICAgICAvLyBVcGRhdGUgdGhlIHNlbGVjdGlvbgorICAgICAg
ZnVuY3Rpb24gdXBkYXRlTGluZShuKSB7cmV0dXJuIG4gPD0gTWF0aC5taW4odG8ubGluZSwgdG8u
bGluZSArIGxlbmRpZmYpID8gbiA6IG4gKyBsZW5kaWZmO30KKyAgICAgIHNldFNlbGVjdGlvbihj
bGlwUG9zKHNlbEZyb20pLCBjbGlwUG9zKHNlbFRvKSwKKyAgICAgICAgICAgICAgICAgICB1cGRh
dGVMaW5lKHNlbC5mcm9tLmxpbmUpLCB1cGRhdGVMaW5lKHNlbC50by5saW5lKSk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gbmVlZHNTY3JvbGxiYXIoKSB7CisgICAgICB2YXIgcmVhbEhlaWdodCA9
IGRvYy5oZWlnaHQgKiB0ZXh0SGVpZ2h0KCkgKyAyICogcGFkZGluZ1RvcCgpOworICAgICAgcmV0
dXJuIHJlYWxIZWlnaHQgLSAxID4gc2Nyb2xsZXIub2Zmc2V0SGVpZ2h0ID8gcmVhbEhlaWdodCA6
IGZhbHNlOworICAgIH0KKworICAgIGZ1bmN0aW9uIHVwZGF0ZVZlcnRpY2FsU2Nyb2xsKHNjcm9s
bFRvcCkgeworICAgICAgdmFyIHNjcm9sbEhlaWdodCA9IG5lZWRzU2Nyb2xsYmFyKCk7CisgICAg
ICBzY3JvbGxiYXIuc3R5bGUuZGlzcGxheSA9IHNjcm9sbEhlaWdodCA/ICJibG9jayIgOiAibm9u
ZSI7CisgICAgICBpZiAoc2Nyb2xsSGVpZ2h0KSB7CisgICAgICAgIHNjcm9sbGJhcklubmVyLnN0
eWxlLmhlaWdodCA9IHNpemVyLnN0eWxlLm1pbkhlaWdodCA9IHNjcm9sbEhlaWdodCArICJweCI7
CisgICAgICAgIHNjcm9sbGJhci5zdHlsZS5oZWlnaHQgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQg
KyAicHgiOworICAgICAgICBpZiAoc2Nyb2xsVG9wICE9IG51bGwpIHNjcm9sbGJhci5zY3JvbGxU
b3AgPSBzY3JvbGxlci5zY3JvbGxUb3AgPSBzY3JvbGxUb3A7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBzaXplci5zdHlsZS5taW5IZWlnaHQgPSAiIjsKKyAgICAgIH0KKyAgICAgIC8vIFBvc2l0
aW9uIHRoZSBtb3ZlciBkaXYgdG8gYWxpZ24gd2l0aCB0aGUgY3VycmVudCB2aXJ0dWFsIHNjcm9s
bCBwb3NpdGlvbgorICAgICAgbW92ZXIuc3R5bGUudG9wID0gZGlzcGxheU9mZnNldCAqIHRleHRI
ZWlnaHQoKSArICJweCI7CisgICAgfQorCisgICAgLy8gT24gTWFjIE9TIFggTGlvbiBhbmQgdXAs
IGRldGVjdCB3aGV0aGVyIHRoZSBtb3VzZSBpcyBwbHVnZ2VkIGluIGJ5IG1lYXN1cmluZworICAg
IC8vIHRoZSB3aWR0aCBvZiBhIGRpdiB3aXRoIGEgc2Nyb2xsYmFyIGluIGl0LiBJZiB0aGUgd2lk
dGggaXMgPD0gMSwgdGhlbgorICAgIC8vIHRoZSBtb3VzZSBpc24ndCBwbHVnZ2VkIGluIGFuZCBz
Y3JvbGxiYXJzIHNob3VsZCBvdmVybGFwIHRoZSBjb250ZW50LgorICAgIGZ1bmN0aW9uIG92ZXJs
YXBTY3JvbGxiYXJzKCkgeworICAgICAgdmFyIHRtcFNiSW5uZXIgPSBlbHQoImRpdiIsIG51bGws
ICJDb2RlTWlycm9yLXNjcm9sbGJhci1pbm5lciIsICJoZWlnaHQ6IDIwMHB4Iik7CisgICAgICB2
YXIgdG1wU2IgPSBlbHQoImRpdiIsIFt0bXBTYklubmVyXSwgIkNvZGVNaXJyb3Itc2Nyb2xsYmFy
IiwgInBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogLTk5OTlweDsgaGVpZ2h0OiAxMDBweDsiKTsK
KyAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodG1wU2IpOworICAgICAgdmFyIHJlc3Vs
dCA9ICh0bXBTYi5vZmZzZXRXaWR0aCA8PSAxKTsKKyAgICAgIGRvY3VtZW50LmJvZHkucmVtb3Zl
Q2hpbGQodG1wU2IpOworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBjb21wdXRlTWF4TGVuZ3RoKCkgeworICAgICAgbWF4TGluZSA9IGdldExpbmUoMCk7IG1heExp
bmVDaGFuZ2VkID0gdHJ1ZTsKKyAgICAgIHZhciBtYXhMaW5lTGVuZ3RoID0gbWF4TGluZS50ZXh0
Lmxlbmd0aDsKKyAgICAgIGRvYy5pdGVyKDEsIGRvYy5zaXplLCBmdW5jdGlvbihsaW5lKSB7Cisg
ICAgICAgIHZhciBsID0gbGluZS50ZXh0OworICAgICAgICBpZiAoIWxpbmUuaGlkZGVuICYmIGwu
bGVuZ3RoID4gbWF4TGluZUxlbmd0aCkgeworICAgICAgICAgIG1heExpbmVMZW5ndGggPSBsLmxl
bmd0aDsgbWF4TGluZSA9IGxpbmU7CisgICAgICAgIH0KKyAgICAgIH0pOworICAgICAgdXBkYXRl
TWF4TGluZSA9IGZhbHNlOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJlcGxhY2VSYW5nZShjb2Rl
LCBmcm9tLCB0bykgeworICAgICAgZnJvbSA9IGNsaXBQb3MoZnJvbSk7CisgICAgICBpZiAoIXRv
KSB0byA9IGZyb207IGVsc2UgdG8gPSBjbGlwUG9zKHRvKTsKKyAgICAgIGNvZGUgPSBzcGxpdExp
bmVzKGNvZGUpOworICAgICAgZnVuY3Rpb24gYWRqdXN0UG9zKHBvcykgeworICAgICAgICBpZiAo
cG9zTGVzcyhwb3MsIGZyb20pKSByZXR1cm4gcG9zOworICAgICAgICBpZiAoIXBvc0xlc3ModG8s
IHBvcykpIHJldHVybiBlbmQ7CisgICAgICAgIHZhciBsaW5lID0gcG9zLmxpbmUgKyBjb2RlLmxl
bmd0aCAtICh0by5saW5lIC0gZnJvbS5saW5lKSAtIDE7CisgICAgICAgIHZhciBjaCA9IHBvcy5j
aDsKKyAgICAgICAgaWYgKHBvcy5saW5lID09IHRvLmxpbmUpCisgICAgICAgICAgY2ggKz0gY29k
ZVtjb2RlLmxlbmd0aC0xXS5sZW5ndGggLSAodG8uY2ggLSAodG8ubGluZSA9PSBmcm9tLmxpbmUg
PyBmcm9tLmNoIDogMCkpOworICAgICAgICByZXR1cm4ge2xpbmU6IGxpbmUsIGNoOiBjaH07Cisg
ICAgICB9CisgICAgICB2YXIgZW5kOworICAgICAgcmVwbGFjZVJhbmdlMShjb2RlLCBmcm9tLCB0
bywgZnVuY3Rpb24oZW5kMSkgeworICAgICAgICBlbmQgPSBlbmQxOworICAgICAgICByZXR1cm4g
e2Zyb206IGFkanVzdFBvcyhzZWwuZnJvbSksIHRvOiBhZGp1c3RQb3Moc2VsLnRvKX07CisgICAg
ICB9KTsKKyAgICAgIHJldHVybiBlbmQ7CisgICAgfQorICAgIGZ1bmN0aW9uIHJlcGxhY2VTZWxl
Y3Rpb24oY29kZSwgY29sbGFwc2UpIHsKKyAgICAgIHJlcGxhY2VSYW5nZTEoc3BsaXRMaW5lcyhj
b2RlKSwgc2VsLmZyb20sIHNlbC50bywgZnVuY3Rpb24oZW5kKSB7CisgICAgICAgIGlmIChjb2xs
YXBzZSA9PSAiZW5kIikgcmV0dXJuIHtmcm9tOiBlbmQsIHRvOiBlbmR9OworICAgICAgICBlbHNl
IGlmIChjb2xsYXBzZSA9PSAic3RhcnQiKSByZXR1cm4ge2Zyb206IHNlbC5mcm9tLCB0bzogc2Vs
LmZyb219OworICAgICAgICBlbHNlIHJldHVybiB7ZnJvbTogc2VsLmZyb20sIHRvOiBlbmR9Owor
ICAgICAgfSk7CisgICAgfQorICAgIGZ1bmN0aW9uIHJlcGxhY2VSYW5nZTEoY29kZSwgZnJvbSwg
dG8sIGNvbXB1dGVTZWwpIHsKKyAgICAgIHZhciBlbmRjaCA9IGNvZGUubGVuZ3RoID09IDEgPyBj
b2RlWzBdLmxlbmd0aCArIGZyb20uY2ggOiBjb2RlW2NvZGUubGVuZ3RoLTFdLmxlbmd0aDsKKyAg
ICAgIHZhciBuZXdTZWwgPSBjb21wdXRlU2VsKHtsaW5lOiBmcm9tLmxpbmUgKyBjb2RlLmxlbmd0
aCAtIDEsIGNoOiBlbmRjaH0pOworICAgICAgdXBkYXRlTGluZXMoZnJvbSwgdG8sIGNvZGUsIG5l
d1NlbC5mcm9tLCBuZXdTZWwudG8pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGdldFJhbmdlKGZy
b20sIHRvLCBsaW5lU2VwKSB7CisgICAgICB2YXIgbDEgPSBmcm9tLmxpbmUsIGwyID0gdG8ubGlu
ZTsKKyAgICAgIGlmIChsMSA9PSBsMikgcmV0dXJuIGdldExpbmUobDEpLnRleHQuc2xpY2UoZnJv
bS5jaCwgdG8uY2gpOworICAgICAgdmFyIGNvZGUgPSBbZ2V0TGluZShsMSkudGV4dC5zbGljZShm
cm9tLmNoKV07CisgICAgICBkb2MuaXRlcihsMSArIDEsIGwyLCBmdW5jdGlvbihsaW5lKSB7IGNv
ZGUucHVzaChsaW5lLnRleHQpOyB9KTsKKyAgICAgIGNvZGUucHVzaChnZXRMaW5lKGwyKS50ZXh0
LnNsaWNlKDAsIHRvLmNoKSk7CisgICAgICByZXR1cm4gY29kZS5qb2luKGxpbmVTZXAgfHwgIlxu
Iik7CisgICAgfQorICAgIGZ1bmN0aW9uIGdldFNlbGVjdGlvbihsaW5lU2VwKSB7CisgICAgICBy
ZXR1cm4gZ2V0UmFuZ2Uoc2VsLmZyb20sIHNlbC50bywgbGluZVNlcCk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gc2xvd1BvbGwoKSB7CisgICAgICBpZiAocG9sbGluZ0Zhc3QpIHJldHVybjsKKyAg
ICAgIHBvbGwuc2V0KG9wdGlvbnMucG9sbEludGVydmFsLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
c3RhcnRPcGVyYXRpb24oKTsKKyAgICAgICAgcmVhZElucHV0KCk7CisgICAgICAgIGlmIChmb2N1
c2VkKSBzbG93UG9sbCgpOworICAgICAgICBlbmRPcGVyYXRpb24oKTsKKyAgICAgIH0pOworICAg
IH0KKyAgICBmdW5jdGlvbiBmYXN0UG9sbCgpIHsKKyAgICAgIHZhciBtaXNzZWQgPSBmYWxzZTsK
KyAgICAgIHBvbGxpbmdGYXN0ID0gdHJ1ZTsKKyAgICAgIGZ1bmN0aW9uIHAoKSB7CisgICAgICAg
IHN0YXJ0T3BlcmF0aW9uKCk7CisgICAgICAgIHZhciBjaGFuZ2VkID0gcmVhZElucHV0KCk7Cisg
ICAgICAgIGlmICghY2hhbmdlZCAmJiAhbWlzc2VkKSB7bWlzc2VkID0gdHJ1ZTsgcG9sbC5zZXQo
NjAsIHApO30KKyAgICAgICAgZWxzZSB7cG9sbGluZ0Zhc3QgPSBmYWxzZTsgc2xvd1BvbGwoKTt9
CisgICAgICAgIGVuZE9wZXJhdGlvbigpOworICAgICAgfQorICAgICAgcG9sbC5zZXQoMjAsIHAp
OworICAgIH0KKworICAgIC8vIFByZXZpbnB1dCBpcyBhIGhhY2sgdG8gd29yayB3aXRoIElNRS4g
SWYgd2UgcmVzZXQgdGhlIHRleHRhcmVhCisgICAgLy8gb24gZXZlcnkgY2hhbmdlLCB0aGF0IGJy
ZWFrcyBJTUUuIFNvIHdlIGxvb2sgZm9yIGNoYW5nZXMKKyAgICAvLyBjb21wYXJlZCB0byB0aGUg
cHJldmlvdXMgY29udGVudCBpbnN0ZWFkLiAoTW9kZXJuIGJyb3dzZXJzIGhhdmUKKyAgICAvLyBl
dmVudHMgdGhhdCBpbmRpY2F0ZSBJTUUgdGFraW5nIHBsYWNlLCBidXQgdGhlc2UgYXJlIG5vdCB3
aWRlbHkKKyAgICAvLyBzdXBwb3J0ZWQgb3IgY29tcGF0aWJsZSBlbm91Z2ggeWV0IHRvIHJlbHkg
b24uKQorICAgIHZhciBwcmV2SW5wdXQgPSAiIjsKKyAgICBmdW5jdGlvbiByZWFkSW5wdXQoKSB7
CisgICAgICBpZiAobGVhdmVJbnB1dEFsb25lIHx8ICFmb2N1c2VkIHx8IGhhc1NlbGVjdGlvbihp
bnB1dCkgfHwgb3B0aW9ucy5yZWFkT25seSkgcmV0dXJuIGZhbHNlOworICAgICAgdmFyIHRleHQg
PSBpbnB1dC52YWx1ZTsKKyAgICAgIGlmICh0ZXh0ID09IHByZXZJbnB1dCkgcmV0dXJuIGZhbHNl
OworICAgICAgc2hpZnRTZWxlY3RpbmcgPSBudWxsOworICAgICAgdmFyIHNhbWUgPSAwLCBsID0g
TWF0aC5taW4ocHJldklucHV0Lmxlbmd0aCwgdGV4dC5sZW5ndGgpOworICAgICAgd2hpbGUgKHNh
bWUgPCBsICYmIHByZXZJbnB1dFtzYW1lXSA9PSB0ZXh0W3NhbWVdKSArK3NhbWU7CisgICAgICBp
ZiAoc2FtZSA8IHByZXZJbnB1dC5sZW5ndGgpCisgICAgICAgIHNlbC5mcm9tID0ge2xpbmU6IHNl
bC5mcm9tLmxpbmUsIGNoOiBzZWwuZnJvbS5jaCAtIChwcmV2SW5wdXQubGVuZ3RoIC0gc2FtZSl9
OworICAgICAgZWxzZSBpZiAob3ZlcndyaXRlICYmIHBvc0VxKHNlbC5mcm9tLCBzZWwudG8pKQor
ICAgICAgICBzZWwudG8gPSB7bGluZTogc2VsLnRvLmxpbmUsIGNoOiBNYXRoLm1pbihnZXRMaW5l
KHNlbC50by5saW5lKS50ZXh0Lmxlbmd0aCwgc2VsLnRvLmNoICsgKHRleHQubGVuZ3RoIC0gc2Ft
ZSkpfTsKKyAgICAgIHJlcGxhY2VTZWxlY3Rpb24odGV4dC5zbGljZShzYW1lKSwgImVuZCIpOwor
ICAgICAgaWYgKHRleHQubGVuZ3RoID4gMTAwMCkgeyBpbnB1dC52YWx1ZSA9IHByZXZJbnB1dCA9
ICIiOyB9CisgICAgICBlbHNlIHByZXZJbnB1dCA9IHRleHQ7CisgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgZnVuY3Rpb24gcmVzZXRJbnB1dCh1c2VyKSB7CisgICAgICBpZiAoIXBvc0Vx
KHNlbC5mcm9tLCBzZWwudG8pKSB7CisgICAgICAgIHByZXZJbnB1dCA9ICIiOworICAgICAgICBp
bnB1dC52YWx1ZSA9IGdldFNlbGVjdGlvbigpOworICAgICAgICBzZWxlY3RJbnB1dChpbnB1dCk7
CisgICAgICB9IGVsc2UgaWYgKHVzZXIpIHByZXZJbnB1dCA9IGlucHV0LnZhbHVlID0gIiI7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gZm9jdXNJbnB1dCgpIHsKKyAgICAgIGlmIChvcHRpb25zLnJl
YWRPbmx5ICE9ICJub2N1cnNvciIpIGlucHV0LmZvY3VzKCk7CisgICAgfQorCisgICAgZnVuY3Rp
b24gc2Nyb2xsRWRpdG9ySW50b1ZpZXcoKSB7CisgICAgICB2YXIgcmVjdCA9IGN1cnNvci5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgIC8vIElFIHJldHVybnMgYm9ndXMgY29vcmRpbmF0
ZXMgd2hlbiB0aGUgaW5zdGFuY2Ugc2l0cyBpbnNpZGUgb2YgYW4gaWZyYW1lIGFuZCB0aGUgY3Vy
c29yIGlzIGhpZGRlbgorICAgICAgaWYgKGllICYmIHJlY3QudG9wID09IHJlY3QuYm90dG9tKSBy
ZXR1cm47CisgICAgICB2YXIgd2luSCA9IHdpbmRvdy5pbm5lckhlaWdodCB8fCBNYXRoLm1heChk
b2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNl
dEhlaWdodCk7CisgICAgICBpZiAocmVjdC50b3AgPCAwIHx8IHJlY3QuYm90dG9tID4gd2luSCkg
c2Nyb2xsQ3Vyc29ySW50b1ZpZXcoKTsKKyAgICB9CisgICAgZnVuY3Rpb24gc2Nyb2xsQ3Vyc29y
SW50b1ZpZXcoKSB7CisgICAgICB2YXIgY29vcmRzID0gY2FsY3VsYXRlQ3Vyc29yQ29vcmRzKCk7
CisgICAgICBzY3JvbGxJbnRvVmlldyhjb29yZHMueCwgY29vcmRzLnksIGNvb3Jkcy54LCBjb29y
ZHMueUJvdCk7CisgICAgfQorICAgIGZ1bmN0aW9uIGNhbGN1bGF0ZUN1cnNvckNvb3JkcygpIHsK
KyAgICAgIHZhciBjdXJzb3IgPSBsb2NhbENvb3JkcyhzZWwuaW52ZXJ0ZWQgPyBzZWwuZnJvbSA6
IHNlbC50byk7CisgICAgICB2YXIgeCA9IG9wdGlvbnMubGluZVdyYXBwaW5nID8gTWF0aC5taW4o
Y3Vyc29yLngsIGxpbmVTcGFjZS5vZmZzZXRXaWR0aCkgOiBjdXJzb3IueDsKKyAgICAgIHJldHVy
biB7eDogeCwgeTogY3Vyc29yLnksIHlCb3Q6IGN1cnNvci55Qm90fTsKKyAgICB9CisgICAgZnVu
Y3Rpb24gc2Nyb2xsSW50b1ZpZXcoeDEsIHkxLCB4MiwgeTIpIHsKKyAgICAgIHZhciBzY3JvbGxQ
b3MgPSBjYWxjdWxhdGVTY3JvbGxQb3MoeDEsIHkxLCB4MiwgeTIpOworICAgICAgaWYgKHNjcm9s
bFBvcy5zY3JvbGxMZWZ0ICE9IG51bGwpIHtzY3JvbGxlci5zY3JvbGxMZWZ0ID0gc2Nyb2xsUG9z
LnNjcm9sbExlZnQ7fQorICAgICAgaWYgKHNjcm9sbFBvcy5zY3JvbGxUb3AgIT0gbnVsbCkge3Nj
cm9sbGJhci5zY3JvbGxUb3AgPSBzY3JvbGxlci5zY3JvbGxUb3AgPSBzY3JvbGxQb3Muc2Nyb2xs
VG9wO30KKyAgICB9CisgICAgZnVuY3Rpb24gY2FsY3VsYXRlU2Nyb2xsUG9zKHgxLCB5MSwgeDIs
IHkyKSB7CisgICAgICB2YXIgcGwgPSBwYWRkaW5nTGVmdCgpLCBwdCA9IHBhZGRpbmdUb3AoKTsK
KyAgICAgIHkxICs9IHB0OyB5MiArPSBwdDsgeDEgKz0gcGw7IHgyICs9IHBsOworICAgICAgdmFy
IHNjcmVlbiA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCwgc2NyZWVudG9wID0gc2Nyb2xsYmFyLnNj
cm9sbFRvcCwgcmVzdWx0ID0ge307CisgICAgICB2YXIgZG9jQm90dG9tID0gbmVlZHNTY3JvbGxi
YXIoKSB8fCBJbmZpbml0eTsKKyAgICAgIHZhciBhdFRvcCA9IHkxIDwgcHQgKyAxMCwgYXRCb3R0
b20gPSB5MiArIHB0ID4gZG9jQm90dG9tIC0gMTA7CisgICAgICBpZiAoeTEgPCBzY3JlZW50b3Ap
IHJlc3VsdC5zY3JvbGxUb3AgPSBhdFRvcCA/IDAgOiBNYXRoLm1heCgwLCB5MSk7CisgICAgICBl
bHNlIGlmICh5MiA+IHNjcmVlbnRvcCArIHNjcmVlbikgcmVzdWx0LnNjcm9sbFRvcCA9IChhdEJv
dHRvbSA/IGRvY0JvdHRvbSA6IHkyKSAtIHNjcmVlbjsKKworICAgICAgdmFyIHNjcmVlbncgPSBz
Y3JvbGxlci5jbGllbnRXaWR0aCwgc2NyZWVubGVmdCA9IHNjcm9sbGVyLnNjcm9sbExlZnQ7Cisg
ICAgICB2YXIgZ3V0dGVydyA9IG9wdGlvbnMuZml4ZWRHdXR0ZXIgPyBndXR0ZXIuY2xpZW50V2lk
dGggOiAwOworICAgICAgdmFyIGF0TGVmdCA9IHgxIDwgZ3V0dGVydyArIHBsICsgMTA7CisgICAg
ICBpZiAoeDEgPCBzY3JlZW5sZWZ0ICsgZ3V0dGVydyB8fCBhdExlZnQpIHsKKyAgICAgICAgaWYg
KGF0TGVmdCkgeDEgPSAwOworICAgICAgICByZXN1bHQuc2Nyb2xsTGVmdCA9IE1hdGgubWF4KDAs
IHgxIC0gMTAgLSBndXR0ZXJ3KTsKKyAgICAgIH0gZWxzZSBpZiAoeDIgPiBzY3JlZW53ICsgc2Ny
ZWVubGVmdCAtIDMpIHsKKyAgICAgICAgcmVzdWx0LnNjcm9sbExlZnQgPSB4MiArIDEwIC0gc2Ny
ZWVudzsKKyAgICAgIH0KKyAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgZnVuY3Rp
b24gdmlzaWJsZUxpbmVzKHNjcm9sbFRvcCkgeworICAgICAgdmFyIGxoID0gdGV4dEhlaWdodCgp
LCB0b3AgPSAoc2Nyb2xsVG9wICE9IG51bGwgPyBzY3JvbGxUb3AgOiBzY3JvbGxiYXIuc2Nyb2xs
VG9wKSAtIHBhZGRpbmdUb3AoKTsKKyAgICAgIHZhciBmcm9tSGVpZ2h0ID0gTWF0aC5tYXgoMCwg
TWF0aC5mbG9vcih0b3AgLyBsaCkpOworICAgICAgdmFyIHRvSGVpZ2h0ID0gTWF0aC5jZWlsKCh0
b3AgKyBzY3JvbGxlci5jbGllbnRIZWlnaHQpIC8gbGgpOworICAgICAgcmV0dXJuIHtmcm9tOiBs
aW5lQXRIZWlnaHQoZG9jLCBmcm9tSGVpZ2h0KSwKKyAgICAgICAgICAgICAgdG86IGxpbmVBdEhl
aWdodChkb2MsIHRvSGVpZ2h0KX07CisgICAgfQorICAgIC8vIFVzZXMgYSBzZXQgb2YgY2hhbmdl
cyBwbHVzIHRoZSBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiB0bworICAgIC8vIGRldGVybWluZSB3
aGljaCBET00gdXBkYXRlcyBoYXZlIHRvIGJlIG1hZGUsIGFuZCBtYWtlcyB0aGUKKyAgICAvLyB1
cGRhdGVzLgorICAgIGZ1bmN0aW9uIHVwZGF0ZURpc3BsYXkoY2hhbmdlcywgc3VwcHJlc3NDYWxs
YmFjaywgc2Nyb2xsVG9wKSB7CisgICAgICBpZiAoIXNjcm9sbGVyLmNsaWVudFdpZHRoKSB7Cisg
ICAgICAgIHNob3dpbmdGcm9tID0gc2hvd2luZ1RvID0gZGlzcGxheU9mZnNldCA9IDA7CisgICAg
ICAgIHJldHVybjsKKyAgICAgIH0KKyAgICAgIC8vIENvbXB1dGUgdGhlIG5ldyB2aXNpYmxlIHdp
bmRvdworICAgICAgLy8gSWYgc2Nyb2xsVG9wIGlzIHNwZWNpZmllZCwgdXNlIHRoYXQgdG8gZGV0
ZXJtaW5lIHdoaWNoIGxpbmVzCisgICAgICAvLyB0byByZW5kZXIgaW5zdGVhZCBvZiB0aGUgY3Vy
cmVudCBzY3JvbGxiYXIgcG9zaXRpb24uCisgICAgICB2YXIgdmlzaWJsZSA9IHZpc2libGVMaW5l
cyhzY3JvbGxUb3ApOworICAgICAgLy8gQmFpbCBvdXQgaWYgdGhlIHZpc2libGUgYXJlYSBpcyBh
bHJlYWR5IHJlbmRlcmVkIGFuZCBub3RoaW5nIGNoYW5nZWQuCisgICAgICBpZiAoY2hhbmdlcyAh
PT0gdHJ1ZSAmJiBjaGFuZ2VzLmxlbmd0aCA9PSAwICYmIHZpc2libGUuZnJvbSA+IHNob3dpbmdG
cm9tICYmIHZpc2libGUudG8gPCBzaG93aW5nVG8pIHsKKyAgICAgICAgdXBkYXRlVmVydGljYWxT
Y3JvbGwoc2Nyb2xsVG9wKTsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgdmFyIGZy
b20gPSBNYXRoLm1heCh2aXNpYmxlLmZyb20gLSAxMDAsIDApLCB0byA9IE1hdGgubWluKGRvYy5z
aXplLCB2aXNpYmxlLnRvICsgMTAwKTsKKyAgICAgIGlmIChzaG93aW5nRnJvbSA8IGZyb20gJiYg
ZnJvbSAtIHNob3dpbmdGcm9tIDwgMjApIGZyb20gPSBzaG93aW5nRnJvbTsKKyAgICAgIGlmIChz
aG93aW5nVG8gPiB0byAmJiBzaG93aW5nVG8gLSB0byA8IDIwKSB0byA9IE1hdGgubWluKGRvYy5z
aXplLCBzaG93aW5nVG8pOworCisgICAgICAvLyBDcmVhdGUgYSByYW5nZSBvZiB0aGVvcmV0aWNh
bGx5IGludGFjdCBsaW5lcywgYW5kIHB1bmNoIGhvbGVzCisgICAgICAvLyBpbiB0aGF0IHVzaW5n
IHRoZSBjaGFuZ2UgaW5mby4KKyAgICAgIHZhciBpbnRhY3QgPSBjaGFuZ2VzID09PSB0cnVlID8g
W10gOgorICAgICAgICBjb21wdXRlSW50YWN0KFt7ZnJvbTogc2hvd2luZ0Zyb20sIHRvOiBzaG93
aW5nVG8sIGRvbVN0YXJ0OiAwfV0sIGNoYW5nZXMpOworICAgICAgLy8gQ2xpcCBvZmYgdGhlIHBh
cnRzIHRoYXQgd29uJ3QgYmUgdmlzaWJsZQorICAgICAgdmFyIGludGFjdExpbmVzID0gMDsKKyAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW50YWN0Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZh
ciByYW5nZSA9IGludGFjdFtpXTsKKyAgICAgICAgaWYgKHJhbmdlLmZyb20gPCBmcm9tKSB7cmFu
Z2UuZG9tU3RhcnQgKz0gKGZyb20gLSByYW5nZS5mcm9tKTsgcmFuZ2UuZnJvbSA9IGZyb207fQor
ICAgICAgICBpZiAocmFuZ2UudG8gPiB0bykgcmFuZ2UudG8gPSB0bzsKKyAgICAgICAgaWYgKHJh
bmdlLmZyb20gPj0gcmFuZ2UudG8pIGludGFjdC5zcGxpY2UoaS0tLCAxKTsKKyAgICAgICAgZWxz
ZSBpbnRhY3RMaW5lcyArPSByYW5nZS50byAtIHJhbmdlLmZyb207CisgICAgICB9CisgICAgICBp
ZiAoaW50YWN0TGluZXMgPT0gdG8gLSBmcm9tICYmIGZyb20gPT0gc2hvd2luZ0Zyb20gJiYgdG8g
PT0gc2hvd2luZ1RvKSB7CisgICAgICAgIHVwZGF0ZVZlcnRpY2FsU2Nyb2xsKHNjcm9sbFRvcCk7
CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAgICAgIGludGFjdC5zb3J0KGZ1bmN0aW9uKGEs
IGIpIHtyZXR1cm4gYS5kb21TdGFydCAtIGIuZG9tU3RhcnQ7fSk7CisKKyAgICAgIHZhciB0aCA9
IHRleHRIZWlnaHQoKSwgZ3V0dGVyRGlzcGxheSA9IGd1dHRlci5zdHlsZS5kaXNwbGF5OworICAg
ICAgbGluZURpdi5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworICAgICAgcGF0Y2hEaXNwbGF5KGZy
b20sIHRvLCBpbnRhY3QpOworICAgICAgbGluZURpdi5zdHlsZS5kaXNwbGF5ID0gZ3V0dGVyLnN0
eWxlLmRpc3BsYXkgPSAiIjsKKworICAgICAgdmFyIGRpZmZlcmVudCA9IGZyb20gIT0gc2hvd2lu
Z0Zyb20gfHwgdG8gIT0gc2hvd2luZ1RvIHx8IGxhc3RTaXplQyAhPSBzY3JvbGxlci5jbGllbnRI
ZWlnaHQgKyB0aDsKKyAgICAgIC8vIFRoaXMgaXMganVzdCBhIGJvZ3VzIGZvcm11bGEgdGhhdCBk
ZXRlY3RzIHdoZW4gdGhlIGVkaXRvciBpcworICAgICAgLy8gcmVzaXplZCBvciB0aGUgZm9udCBz
aXplIGNoYW5nZXMuCisgICAgICBpZiAoZGlmZmVyZW50KSBsYXN0U2l6ZUMgPSBzY3JvbGxlci5j
bGllbnRIZWlnaHQgKyB0aDsKKyAgICAgIHNob3dpbmdGcm9tID0gZnJvbTsgc2hvd2luZ1RvID0g
dG87CisgICAgICBkaXNwbGF5T2Zmc2V0ID0gaGVpZ2h0QXRMaW5lKGRvYywgZnJvbSk7CisKKyAg
ICAgIC8vIFNpbmNlIHRoaXMgaXMgYWxsIHJhdGhlciBlcnJvciBwcm9uZSwgaXQgaXMgaG9ub3Vy
ZWQgd2l0aCB0aGUKKyAgICAgIC8vIG9ubHkgYXNzZXJ0aW9uIGluIHRoZSB3aG9sZSBmaWxlLgor
ICAgICAgaWYgKGxpbmVEaXYuY2hpbGROb2Rlcy5sZW5ndGggIT0gc2hvd2luZ1RvIC0gc2hvd2lu
Z0Zyb20pCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQkFEIFBBVENIISAiICsgSlNPTi5zdHJp
bmdpZnkoaW50YWN0KSArICIgc2l6ZT0iICsgKHNob3dpbmdUbyAtIHNob3dpbmdGcm9tKSArCisg
ICAgICAgICAgICAgICAgICAgICAgICAiIG5vZGVzPSIgKyBsaW5lRGl2LmNoaWxkTm9kZXMubGVu
Z3RoKTsKKworICAgICAgZnVuY3Rpb24gY2hlY2tIZWlnaHRzKCkgeworICAgICAgICB2YXIgY3Vy
Tm9kZSA9IGxpbmVEaXYuZmlyc3RDaGlsZCwgaGVpZ2h0Q2hhbmdlZCA9IGZhbHNlOworICAgICAg
ICBkb2MuaXRlcihzaG93aW5nRnJvbSwgc2hvd2luZ1RvLCBmdW5jdGlvbihsaW5lKSB7CisgICAg
ICAgICAgLy8gV29yayBhcm91bmQgYml6YXJybyBJRTcgYnVnIHdoZXJlLCBzb21ldGltZXMsIG91
ciBjdXJOb2RlCisgICAgICAgICAgLy8gaXMgbWFnaWNhbGx5IHJlcGxhY2VkIHdpdGggYSBuZXcg
bm9kZSBpbiB0aGUgRE9NLCBsZWF2aW5nCisgICAgICAgICAgLy8gdXMgd2l0aCBhIHJlZmVyZW5j
ZSB0byBhbiBvcnBoYW4gKG5leHRTaWJsaW5nLWxlc3MpIG5vZGUuCisgICAgICAgICAgaWYgKCFj
dXJOb2RlKSByZXR1cm47CisgICAgICAgICAgaWYgKCFsaW5lLmhpZGRlbikgeworICAgICAgICAg
ICAgdmFyIGhlaWdodCA9IE1hdGgucm91bmQoY3VyTm9kZS5vZmZzZXRIZWlnaHQgLyB0aCkgfHwg
MTsKKyAgICAgICAgICAgIGlmIChsaW5lLmhlaWdodCAhPSBoZWlnaHQpIHsKKyAgICAgICAgICAg
ICAgdXBkYXRlTGluZUhlaWdodChsaW5lLCBoZWlnaHQpOworICAgICAgICAgICAgICBndXR0ZXJE
aXJ0eSA9IGhlaWdodENoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgIH0K
KyAgICAgICAgICBjdXJOb2RlID0gY3VyTm9kZS5uZXh0U2libGluZzsKKyAgICAgICAgfSk7Cisg
ICAgICAgIHJldHVybiBoZWlnaHRDaGFuZ2VkOworICAgICAgfQorCisgICAgICBpZiAob3B0aW9u
cy5saW5lV3JhcHBpbmcpIHsKKyAgICAgICAgY2hlY2tIZWlnaHRzKCk7CisgICAgICAgIHZhciBz
Y3JvbGxIZWlnaHQgPSBuZWVkc1Njcm9sbGJhcigpOworICAgICAgICB2YXIgc2hvdWxkSGF2ZVNj
cm9sbGJhciA9IHNjcm9sbEhlaWdodCA/ICJibG9jayIgOiAibm9uZSI7CisgICAgICAgIGlmIChz
Y3JvbGxiYXIuc3R5bGUuZGlzcGxheSAhPSBzaG91bGRIYXZlU2Nyb2xsYmFyKSB7CisgICAgICAg
ICAgc2Nyb2xsYmFyLnN0eWxlLmRpc3BsYXkgPSBzaG91bGRIYXZlU2Nyb2xsYmFyOworICAgICAg
ICAgIGlmIChzY3JvbGxIZWlnaHQpIHNjcm9sbGJhcklubmVyLnN0eWxlLmhlaWdodCA9IHNjcm9s
bEhlaWdodCArICJweCI7CisgICAgICAgICAgY2hlY2tIZWlnaHRzKCk7CisgICAgICAgIH0KKyAg
ICAgIH0KKworICAgICAgZ3V0dGVyLnN0eWxlLmRpc3BsYXkgPSBndXR0ZXJEaXNwbGF5OworICAg
ICAgaWYgKGRpZmZlcmVudCB8fCBndXR0ZXJEaXJ0eSkgeworICAgICAgICAvLyBJZiB0aGUgZ3V0
dGVyIGdyZXcgaW4gc2l6ZSwgcmUtY2hlY2sgaGVpZ2h0cy4gSWYgdGhvc2UgY2hhbmdlZCwgcmUt
ZHJhdyBndXR0ZXIuCisgICAgICAgIHVwZGF0ZUd1dHRlcigpICYmIG9wdGlvbnMubGluZVdyYXBw
aW5nICYmIGNoZWNrSGVpZ2h0cygpICYmIHVwZGF0ZUd1dHRlcigpOworICAgICAgfQorICAgICAg
dXBkYXRlVmVydGljYWxTY3JvbGwoc2Nyb2xsVG9wKTsKKyAgICAgIHVwZGF0ZVNlbGVjdGlvbigp
OworICAgICAgaWYgKCFzdXBwcmVzc0NhbGxiYWNrICYmIG9wdGlvbnMub25VcGRhdGUpIG9wdGlv
bnMub25VcGRhdGUoaW5zdGFuY2UpOworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gY29tcHV0ZUludGFjdChpbnRhY3QsIGNoYW5nZXMpIHsKKyAgICAgIGZvciAodmFy
IGkgPSAwLCBsID0gY2hhbmdlcy5sZW5ndGggfHwgMDsgaSA8IGw7ICsraSkgeworICAgICAgICB2
YXIgY2hhbmdlID0gY2hhbmdlc1tpXSwgaW50YWN0MiA9IFtdLCBkaWZmID0gY2hhbmdlLmRpZmYg
fHwgMDsKKyAgICAgICAgZm9yICh2YXIgaiA9IDAsIGwyID0gaW50YWN0Lmxlbmd0aDsgaiA8IGwy
OyArK2opIHsKKyAgICAgICAgICB2YXIgcmFuZ2UgPSBpbnRhY3Rbal07CisgICAgICAgICAgaWYg
KGNoYW5nZS50byA8PSByYW5nZS5mcm9tICYmIGNoYW5nZS5kaWZmKQorICAgICAgICAgICAgaW50
YWN0Mi5wdXNoKHtmcm9tOiByYW5nZS5mcm9tICsgZGlmZiwgdG86IHJhbmdlLnRvICsgZGlmZiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tU3RhcnQ6IHJhbmdlLmRvbVN0YXJ0fSk7Cisg
ICAgICAgICAgZWxzZSBpZiAoY2hhbmdlLnRvIDw9IHJhbmdlLmZyb20gfHwgY2hhbmdlLmZyb20g
Pj0gcmFuZ2UudG8pCisgICAgICAgICAgICBpbnRhY3QyLnB1c2gocmFuZ2UpOworICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgaWYgKGNoYW5nZS5mcm9tID4gcmFuZ2UuZnJvbSkKKyAgICAg
ICAgICAgICAgaW50YWN0Mi5wdXNoKHtmcm9tOiByYW5nZS5mcm9tLCB0bzogY2hhbmdlLmZyb20s
IGRvbVN0YXJ0OiByYW5nZS5kb21TdGFydH0pOworICAgICAgICAgICAgaWYgKGNoYW5nZS50byA8
IHJhbmdlLnRvKQorICAgICAgICAgICAgICBpbnRhY3QyLnB1c2goe2Zyb206IGNoYW5nZS50byAr
IGRpZmYsIHRvOiByYW5nZS50byArIGRpZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG9tU3RhcnQ6IHJhbmdlLmRvbVN0YXJ0ICsgKGNoYW5nZS50byAtIHJhbmdlLmZyb20pfSk7Cisg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGludGFjdCA9IGludGFjdDI7CisgICAgICB9
CisgICAgICByZXR1cm4gaW50YWN0OworICAgIH0KKworICAgIGZ1bmN0aW9uIHBhdGNoRGlzcGxh
eShmcm9tLCB0bywgaW50YWN0KSB7CisgICAgICBmdW5jdGlvbiBraWxsTm9kZShub2RlKSB7Cisg
ICAgICAgIHZhciB0bXAgPSBub2RlLm5leHRTaWJsaW5nOworICAgICAgICBub2RlLnBhcmVudE5v
ZGUucmVtb3ZlQ2hpbGQobm9kZSk7CisgICAgICAgIHJldHVybiB0bXA7CisgICAgICB9CisgICAg
ICAvLyBUaGUgZmlyc3QgcGFzcyByZW1vdmVzIHRoZSBET00gbm9kZXMgdGhhdCBhcmVuJ3QgaW50
YWN0LgorICAgICAgaWYgKCFpbnRhY3QubGVuZ3RoKSByZW1vdmVDaGlsZHJlbihsaW5lRGl2KTsK
KyAgICAgIGVsc2UgeworICAgICAgICB2YXIgZG9tUG9zID0gMCwgY3VyTm9kZSA9IGxpbmVEaXYu
Zmlyc3RDaGlsZCwgbjsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnRhY3QubGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgICB2YXIgY3VyID0gaW50YWN0W2ldOworICAgICAgICAgIHdoaWxl
IChjdXIuZG9tU3RhcnQgPiBkb21Qb3MpIHtjdXJOb2RlID0ga2lsbE5vZGUoY3VyTm9kZSk7IGRv
bVBvcysrO30KKyAgICAgICAgICBmb3IgKHZhciBqID0gMCwgZSA9IGN1ci50byAtIGN1ci5mcm9t
OyBqIDwgZTsgKytqKSB7Y3VyTm9kZSA9IGN1ck5vZGUubmV4dFNpYmxpbmc7IGRvbVBvcysrO30K
KyAgICAgICAgfQorICAgICAgICB3aGlsZSAoY3VyTm9kZSkgY3VyTm9kZSA9IGtpbGxOb2RlKGN1
ck5vZGUpOworICAgICAgfQorICAgICAgLy8gVGhpcyBwYXNzIGZpbGxzIGluIHRoZSBsaW5lcyB0
aGF0IGFjdHVhbGx5IGNoYW5nZWQuCisgICAgICB2YXIgbmV4dEludGFjdCA9IGludGFjdC5zaGlm
dCgpLCBjdXJOb2RlID0gbGluZURpdi5maXJzdENoaWxkLCBqID0gZnJvbTsKKyAgICAgIGRvYy5p
dGVyKGZyb20sIHRvLCBmdW5jdGlvbihsaW5lKSB7CisgICAgICAgIGlmIChuZXh0SW50YWN0ICYm
IG5leHRJbnRhY3QudG8gPT0gaikgbmV4dEludGFjdCA9IGludGFjdC5zaGlmdCgpOworICAgICAg
ICBpZiAoIW5leHRJbnRhY3QgfHwgbmV4dEludGFjdC5mcm9tID4gaikgeworICAgICAgICAgIGlm
IChsaW5lLmhpZGRlbikgdmFyIGxpbmVFbGVtZW50ID0gZWx0KCJwcmUiKTsKKyAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIHZhciBsaW5lRWxlbWVudCA9IGxpbmUuZ2V0RWxlbWVudChtYWtl
VGFiKTsKKyAgICAgICAgICAgIGlmIChsaW5lLmNsYXNzTmFtZSkgbGluZUVsZW1lbnQuY2xhc3NO
YW1lID0gbGluZS5jbGFzc05hbWU7CisgICAgICAgICAgICAvLyBLbHVkZ2UgdG8gbWFrZSBzdXJl
IHRoZSBzdHlsZWQgZWxlbWVudCBsaWVzIGJlaGluZCB0aGUgc2VsZWN0aW9uIChieSB6LWluZGV4
KQorICAgICAgICAgICAgaWYgKGxpbmUuYmdDbGFzc05hbWUpIHsKKyAgICAgICAgICAgICAgdmFy
IHByZSA9IGVsdCgicHJlIiwgIlx1MDBhMCIsIGxpbmUuYmdDbGFzc05hbWUsICJwb3NpdGlvbjog
YWJzb2x1dGU7IGxlZnQ6IDA7IHJpZ2h0OiAwOyB0b3A6IDA7IGJvdHRvbTogMDsgei1pbmRleDog
LTIiKTsKKyAgICAgICAgICAgICAgbGluZUVsZW1lbnQgPSBlbHQoImRpdiIsIFtwcmUsIGxpbmVF
bGVtZW50XSwgbnVsbCwgInBvc2l0aW9uOiByZWxhdGl2ZSIpOworICAgICAgICAgICAgfQorICAg
ICAgICAgIH0KKyAgICAgICAgICBsaW5lRGl2Lmluc2VydEJlZm9yZShsaW5lRWxlbWVudCwgY3Vy
Tm9kZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgY3VyTm9kZSA9IGN1ck5vZGUubmV4
dFNpYmxpbmc7CisgICAgICAgIH0KKyAgICAgICAgKytqOworICAgICAgfSk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gdXBkYXRlR3V0dGVyKCkgeworICAgICAgaWYgKCFvcHRpb25zLmd1dHRlciAm
JiAhb3B0aW9ucy5saW5lTnVtYmVycykgcmV0dXJuOworICAgICAgdmFyIGhUZXh0ID0gbW92ZXIu
b2Zmc2V0SGVpZ2h0LCBoRWRpdG9yID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0OworICAgICAgZ3V0
dGVyLnN0eWxlLmhlaWdodCA9IChoVGV4dCAtIGhFZGl0b3IgPCAyID8gaEVkaXRvciA6IGhUZXh0
KSArICJweCI7CisgICAgICB2YXIgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZy
YWdtZW50KCksIGkgPSBzaG93aW5nRnJvbSwgbm9ybWFsTm9kZTsKKyAgICAgIGRvYy5pdGVyKHNo
b3dpbmdGcm9tLCBNYXRoLm1heChzaG93aW5nVG8sIHNob3dpbmdGcm9tICsgMSksIGZ1bmN0aW9u
KGxpbmUpIHsKKyAgICAgICAgaWYgKGxpbmUuaGlkZGVuKSB7CisgICAgICAgICAgZnJhZ21lbnQu
YXBwZW5kQ2hpbGQoZWx0KCJwcmUiKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgdmFy
IG1hcmtlciA9IGxpbmUuZ3V0dGVyTWFya2VyOworICAgICAgICAgIHZhciB0ZXh0ID0gb3B0aW9u
cy5saW5lTnVtYmVycyA/IG9wdGlvbnMubGluZU51bWJlckZvcm1hdHRlcihpICsgb3B0aW9ucy5m
aXJzdExpbmVOdW1iZXIpIDogbnVsbDsKKyAgICAgICAgICBpZiAobWFya2VyICYmIG1hcmtlci50
ZXh0KQorICAgICAgICAgICAgdGV4dCA9IG1hcmtlci50ZXh0LnJlcGxhY2UoIiVOJSIsIHRleHQg
IT0gbnVsbCA/IHRleHQgOiAiIik7CisgICAgICAgICAgZWxzZSBpZiAodGV4dCA9PSBudWxsKQor
ICAgICAgICAgICAgdGV4dCA9ICJcdTAwYTAiOworICAgICAgICAgIHZhciBtYXJrZXJFbGVtZW50
ID0gZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZWx0KCJwcmUiLCBudWxsLCBtYXJrZXIgJiYgbWFya2Vy
LnN0eWxlKSk7CisgICAgICAgICAgbWFya2VyRWxlbWVudC5pbm5lckhUTUwgPSB0ZXh0OworICAg
ICAgICAgIGZvciAodmFyIGogPSAxOyBqIDwgbGluZS5oZWlnaHQ7ICsraikgeworICAgICAgICAg
ICAgbWFya2VyRWxlbWVudC5hcHBlbmRDaGlsZChlbHQoImJyIikpOworICAgICAgICAgICAgbWFy
a2VyRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiXHUwMGEwIikp
OworICAgICAgICAgIH0KKyAgICAgICAgICBpZiAoIW1hcmtlcikgbm9ybWFsTm9kZSA9IGk7Cisg
ICAgICAgIH0KKyAgICAgICAgKytpOworICAgICAgfSk7CisgICAgICBndXR0ZXIuc3R5bGUuZGlz
cGxheSA9ICJub25lIjsKKyAgICAgIHJlbW92ZUNoaWxkcmVuQW5kQWRkKGd1dHRlclRleHQsIGZy
YWdtZW50KTsKKyAgICAgIC8vIE1ha2Ugc3VyZSBzY3JvbGxpbmcgZG9lc24ndCBjYXVzZSBudW1i
ZXIgZ3V0dGVyIHNpemUgdG8gcG9wCisgICAgICBpZiAobm9ybWFsTm9kZSAhPSBudWxsICYmIG9w
dGlvbnMubGluZU51bWJlcnMpIHsKKyAgICAgICAgdmFyIG5vZGUgPSBndXR0ZXJUZXh0LmNoaWxk
Tm9kZXNbbm9ybWFsTm9kZSAtIHNob3dpbmdGcm9tXTsKKyAgICAgICAgdmFyIG1pbndpZHRoID0g
U3RyaW5nKGRvYy5zaXplKS5sZW5ndGgsIHZhbCA9IGVsdFRleHQobm9kZS5maXJzdENoaWxkKSwg
cGFkID0gIiI7CisgICAgICAgIHdoaWxlICh2YWwubGVuZ3RoICsgcGFkLmxlbmd0aCA8IG1pbndp
ZHRoKSBwYWQgKz0gIlx1MDBhMCI7CisgICAgICAgIGlmIChwYWQpIG5vZGUuaW5zZXJ0QmVmb3Jl
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHBhZCksIG5vZGUuZmlyc3RDaGlsZCk7CisgICAgICB9
CisgICAgICBndXR0ZXIuc3R5bGUuZGlzcGxheSA9ICIiOworICAgICAgdmFyIHJlc2l6ZWQgPSBN
YXRoLmFicygocGFyc2VJbnQobGluZVNwYWNlLnN0eWxlLm1hcmdpbkxlZnQpIHx8IDApIC0gZ3V0
dGVyLm9mZnNldFdpZHRoKSA+IDI7CisgICAgICBsaW5lU3BhY2Uuc3R5bGUubWFyZ2luTGVmdCA9
IGd1dHRlci5vZmZzZXRXaWR0aCArICJweCI7CisgICAgICBndXR0ZXJEaXJ0eSA9IGZhbHNlOwor
ICAgICAgcmV0dXJuIHJlc2l6ZWQ7CisgICAgfQorICAgIGZ1bmN0aW9uIHVwZGF0ZVNlbGVjdGlv
bigpIHsKKyAgICAgIHZhciBjb2xsYXBzZWQgPSBwb3NFcShzZWwuZnJvbSwgc2VsLnRvKTsKKyAg
ICAgIHZhciBmcm9tUG9zID0gbG9jYWxDb29yZHMoc2VsLmZyb20sIHRydWUpOworICAgICAgdmFy
IHRvUG9zID0gY29sbGFwc2VkID8gZnJvbVBvcyA6IGxvY2FsQ29vcmRzKHNlbC50bywgdHJ1ZSk7
CisgICAgICB2YXIgaGVhZFBvcyA9IHNlbC5pbnZlcnRlZCA/IGZyb21Qb3MgOiB0b1BvcywgdGgg
PSB0ZXh0SGVpZ2h0KCk7CisgICAgICB2YXIgd3JhcE9mZiA9IGVsdE9mZnNldCh3cmFwcGVyKSwg
bGluZU9mZiA9IGVsdE9mZnNldChsaW5lRGl2KTsKKyAgICAgIGlucHV0RGl2LnN0eWxlLnRvcCA9
IE1hdGgubWF4KDAsIE1hdGgubWluKHNjcm9sbGVyLm9mZnNldEhlaWdodCwgaGVhZFBvcy55ICsg
bGluZU9mZi50b3AgLSB3cmFwT2ZmLnRvcCkpICsgInB4IjsKKyAgICAgIGlucHV0RGl2LnN0eWxl
LmxlZnQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihzY3JvbGxlci5vZmZzZXRXaWR0aCwgaGVhZFBv
cy54ICsgbGluZU9mZi5sZWZ0IC0gd3JhcE9mZi5sZWZ0KSkgKyAicHgiOworICAgICAgaWYgKGNv
bGxhcHNlZCkgeworICAgICAgICBjdXJzb3Iuc3R5bGUudG9wID0gaGVhZFBvcy55ICsgInB4IjsK
KyAgICAgICAgY3Vyc29yLnN0eWxlLmxlZnQgPSAob3B0aW9ucy5saW5lV3JhcHBpbmcgPyBNYXRo
Lm1pbihoZWFkUG9zLngsIGxpbmVTcGFjZS5vZmZzZXRXaWR0aCkgOiBoZWFkUG9zLngpICsgInB4
IjsKKyAgICAgICAgY3Vyc29yLnN0eWxlLmRpc3BsYXkgPSAiIjsKKyAgICAgICAgc2VsZWN0aW9u
RGl2LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CisgICAgICB9IGVsc2UgeworICAgICAgICB2YXIg
c2FtZUxpbmUgPSBmcm9tUG9zLnkgPT0gdG9Qb3MueSwgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVh
dGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgICAgIHZhciBjbGllbnRXaWR0aCA9IGxpbmVTcGFj
ZS5jbGllbnRXaWR0aCB8fCBsaW5lU3BhY2Uub2Zmc2V0V2lkdGg7CisgICAgICAgIHZhciBjbGll
bnRIZWlnaHQgPSBsaW5lU3BhY2UuY2xpZW50SGVpZ2h0IHx8IGxpbmVTcGFjZS5vZmZzZXRIZWln
aHQ7CisgICAgICAgIHZhciBhZGQgPSBmdW5jdGlvbihsZWZ0LCB0b3AsIHJpZ2h0LCBoZWlnaHQp
IHsKKyAgICAgICAgICB2YXIgcnN0eWxlID0gcXVpcmtzTW9kZSA/ICJ3aWR0aDogIiArICghcmln
aHQgPyBjbGllbnRXaWR0aCA6IGNsaWVudFdpZHRoIC0gcmlnaHQgLSBsZWZ0KSArICJweCIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJyaWdodDogIiArIHJpZ2h0ICsgInB4
IjsKKyAgICAgICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChlbHQoImRpdiIsIG51bGwsICJDb2Rl
TWlycm9yLXNlbGVjdGVkIiwgInBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogIiArIGxlZnQgKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHg7IHRvcDogIiArIHRvcCArICJw
eDsgIiArIHJzdHlsZSArICI7IGhlaWdodDogIiArIGhlaWdodCArICJweCIpKTsKKyAgICAgICAg
fTsKKyAgICAgICAgaWYgKHNlbC5mcm9tLmNoICYmIGZyb21Qb3MueSA+PSAwKSB7CisgICAgICAg
ICAgdmFyIHJpZ2h0ID0gc2FtZUxpbmUgPyBjbGllbnRXaWR0aCAtIHRvUG9zLnggOiAwOworICAg
ICAgICAgIGFkZChmcm9tUG9zLngsIGZyb21Qb3MueSwgcmlnaHQsIHRoKTsKKyAgICAgICAgfQor
ICAgICAgICB2YXIgbWlkZGxlU3RhcnQgPSBNYXRoLm1heCgwLCBmcm9tUG9zLnkgKyAoc2VsLmZy
b20uY2ggPyB0aCA6IDApKTsKKyAgICAgICAgdmFyIG1pZGRsZUhlaWdodCA9IE1hdGgubWluKHRv
UG9zLnksIGNsaWVudEhlaWdodCkgLSBtaWRkbGVTdGFydDsKKyAgICAgICAgaWYgKG1pZGRsZUhl
aWdodCA+IDAuMiAqIHRoKQorICAgICAgICAgIGFkZCgwLCBtaWRkbGVTdGFydCwgMCwgbWlkZGxl
SGVpZ2h0KTsKKyAgICAgICAgaWYgKCghc2FtZUxpbmUgfHwgIXNlbC5mcm9tLmNoKSAmJiB0b1Bv
cy55IDwgY2xpZW50SGVpZ2h0IC0gLjUgKiB0aCkKKyAgICAgICAgICBhZGQoMCwgdG9Qb3MueSwg
Y2xpZW50V2lkdGggLSB0b1Bvcy54LCB0aCk7CisgICAgICAgIHJlbW92ZUNoaWxkcmVuQW5kQWRk
KHNlbGVjdGlvbkRpdiwgZnJhZ21lbnQpOworICAgICAgICBjdXJzb3Iuc3R5bGUuZGlzcGxheSA9
ICJub25lIjsKKyAgICAgICAgc2VsZWN0aW9uRGl2LnN0eWxlLmRpc3BsYXkgPSAiIjsKKyAgICAg
IH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZXRTaGlmdCh2YWwpIHsKKyAgICAgIGlmICh2YWwp
IHNoaWZ0U2VsZWN0aW5nID0gc2hpZnRTZWxlY3RpbmcgfHwgKHNlbC5pbnZlcnRlZCA/IHNlbC50
byA6IHNlbC5mcm9tKTsKKyAgICAgIGVsc2Ugc2hpZnRTZWxlY3RpbmcgPSBudWxsOworICAgIH0K
KyAgICBmdW5jdGlvbiBzZXRTZWxlY3Rpb25Vc2VyKGZyb20sIHRvKSB7CisgICAgICB2YXIgc2gg
PSBzaGlmdFNlbGVjdGluZyAmJiBjbGlwUG9zKHNoaWZ0U2VsZWN0aW5nKTsKKyAgICAgIGlmIChz
aCkgeworICAgICAgICBpZiAocG9zTGVzcyhzaCwgZnJvbSkpIGZyb20gPSBzaDsKKyAgICAgICAg
ZWxzZSBpZiAocG9zTGVzcyh0bywgc2gpKSB0byA9IHNoOworICAgICAgfQorICAgICAgc2V0U2Vs
ZWN0aW9uKGZyb20sIHRvKTsKKyAgICAgIHVzZXJTZWxDaGFuZ2UgPSB0cnVlOworICAgIH0KKyAg
ICAvLyBVcGRhdGUgdGhlIHNlbGVjdGlvbi4gTGFzdCB0d28gYXJncyBhcmUgb25seSB1c2VkIGJ5
CisgICAgLy8gdXBkYXRlTGluZXMsIHNpbmNlIHRoZXkgaGF2ZSB0byBiZSBleHByZXNzZWQgaW4g
dGhlIGxpbmUKKyAgICAvLyBudW1iZXJzIGJlZm9yZSB0aGUgdXBkYXRlLgorICAgIGZ1bmN0aW9u
IHNldFNlbGVjdGlvbihmcm9tLCB0bywgb2xkRnJvbSwgb2xkVG8pIHsKKyAgICAgIGdvYWxDb2x1
bW4gPSBudWxsOworICAgICAgaWYgKG9sZEZyb20gPT0gbnVsbCkge29sZEZyb20gPSBzZWwuZnJv
bS5saW5lOyBvbGRUbyA9IHNlbC50by5saW5lO30KKyAgICAgIGlmIChwb3NFcShzZWwuZnJvbSwg
ZnJvbSkgJiYgcG9zRXEoc2VsLnRvLCB0bykpIHJldHVybjsKKyAgICAgIGlmIChwb3NMZXNzKHRv
LCBmcm9tKSkge3ZhciB0bXAgPSB0bzsgdG8gPSBmcm9tOyBmcm9tID0gdG1wO30KKworICAgICAg
Ly8gU2tpcCBvdmVyIGhpZGRlbiBsaW5lcy4KKyAgICAgIGlmIChmcm9tLmxpbmUgIT0gb2xkRnJv
bSkgeworICAgICAgICB2YXIgZnJvbTEgPSBza2lwSGlkZGVuKGZyb20sIG9sZEZyb20sIHNlbC5m
cm9tLmNoKTsKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gbm9uLWhpZGRlbiBsaW5lIGxlZnQs
IGZvcmNlIHZpc2liaWxpdHkgb24gY3VycmVudCBsaW5lCisgICAgICAgIGlmICghZnJvbTEpIHNl
dExpbmVIaWRkZW4oZnJvbS5saW5lLCBmYWxzZSk7CisgICAgICAgIGVsc2UgZnJvbSA9IGZyb20x
OworICAgICAgfQorICAgICAgaWYgKHRvLmxpbmUgIT0gb2xkVG8pIHRvID0gc2tpcEhpZGRlbih0
bywgb2xkVG8sIHNlbC50by5jaCk7CisKKyAgICAgIGlmIChwb3NFcShmcm9tLCB0bykpIHNlbC5p
bnZlcnRlZCA9IGZhbHNlOworICAgICAgZWxzZSBpZiAocG9zRXEoZnJvbSwgc2VsLnRvKSkgc2Vs
LmludmVydGVkID0gZmFsc2U7CisgICAgICBlbHNlIGlmIChwb3NFcSh0bywgc2VsLmZyb20pKSBz
ZWwuaW52ZXJ0ZWQgPSB0cnVlOworCisgICAgICBpZiAob3B0aW9ucy5hdXRvQ2xlYXJFbXB0eUxp
bmVzICYmIHBvc0VxKHNlbC5mcm9tLCBzZWwudG8pKSB7CisgICAgICAgIHZhciBoZWFkID0gc2Vs
LmludmVydGVkID8gZnJvbSA6IHRvOworICAgICAgICBpZiAoaGVhZC5saW5lICE9IHNlbC5mcm9t
LmxpbmUgJiYgc2VsLmZyb20ubGluZSA8IGRvYy5zaXplKSB7CisgICAgICAgICAgdmFyIG9sZExp
bmUgPSBnZXRMaW5lKHNlbC5mcm9tLmxpbmUpOworICAgICAgICAgIGlmICgvXlxzKyQvLnRlc3Qo
b2xkTGluZS50ZXh0KSkKKyAgICAgICAgICAgIHNldFRpbWVvdXQob3BlcmF0aW9uKGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICBpZiAob2xkTGluZS5wYXJlbnQgJiYgL15ccyskLy50ZXN0KG9s
ZExpbmUudGV4dCkpIHsKKyAgICAgICAgICAgICAgICB2YXIgbm8gPSBsaW5lTm8ob2xkTGluZSk7
CisgICAgICAgICAgICAgICAgcmVwbGFjZVJhbmdlKCIiLCB7bGluZTogbm8sIGNoOiAwfSwge2xp
bmU6IG5vLCBjaDogb2xkTGluZS50ZXh0Lmxlbmd0aH0pOworICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9LCAxMCkpOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHNlbC5mcm9tID0g
ZnJvbTsgc2VsLnRvID0gdG87CisgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gdHJ1ZTsKKyAgICB9
CisgICAgZnVuY3Rpb24gc2tpcEhpZGRlbihwb3MsIG9sZExpbmUsIG9sZENoKSB7CisgICAgICBm
dW5jdGlvbiBnZXROb25IaWRkZW4oZGlyKSB7CisgICAgICAgIHZhciBsTm8gPSBwb3MubGluZSAr
IGRpciwgZW5kID0gZGlyID09IDEgPyBkb2Muc2l6ZSA6IC0xOworICAgICAgICB3aGlsZSAobE5v
ICE9IGVuZCkgeworICAgICAgICAgIHZhciBsaW5lID0gZ2V0TGluZShsTm8pOworICAgICAgICAg
IGlmICghbGluZS5oaWRkZW4pIHsKKyAgICAgICAgICAgIHZhciBjaCA9IHBvcy5jaDsKKyAgICAg
ICAgICAgIGlmICh0b0VuZCB8fCBjaCA+IG9sZENoIHx8IGNoID4gbGluZS50ZXh0Lmxlbmd0aCkg
Y2ggPSBsaW5lLnRleHQubGVuZ3RoOworICAgICAgICAgICAgcmV0dXJuIHtsaW5lOiBsTm8sIGNo
OiBjaH07CisgICAgICAgICAgfQorICAgICAgICAgIGxObyArPSBkaXI7CisgICAgICAgIH0KKyAg
ICAgIH0KKyAgICAgIHZhciBsaW5lID0gZ2V0TGluZShwb3MubGluZSk7CisgICAgICB2YXIgdG9F
bmQgPSBwb3MuY2ggPT0gbGluZS50ZXh0Lmxlbmd0aCAmJiBwb3MuY2ggIT0gb2xkQ2g7CisgICAg
ICBpZiAoIWxpbmUuaGlkZGVuKSByZXR1cm4gcG9zOworICAgICAgaWYgKHBvcy5saW5lID49IG9s
ZExpbmUpIHJldHVybiBnZXROb25IaWRkZW4oMSkgfHwgZ2V0Tm9uSGlkZGVuKC0xKTsKKyAgICAg
IGVsc2UgcmV0dXJuIGdldE5vbkhpZGRlbigtMSkgfHwgZ2V0Tm9uSGlkZGVuKDEpOworICAgIH0K
KyAgICBmdW5jdGlvbiBzZXRDdXJzb3IobGluZSwgY2gsIHVzZXIpIHsKKyAgICAgIHZhciBwb3Mg
PSBjbGlwUG9zKHtsaW5lOiBsaW5lLCBjaDogY2ggfHwgMH0pOworICAgICAgKHVzZXIgPyBzZXRT
ZWxlY3Rpb25Vc2VyIDogc2V0U2VsZWN0aW9uKShwb3MsIHBvcyk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gY2xpcExpbmUobikge3JldHVybiBNYXRoLm1heCgwLCBNYXRoLm1pbihuLCBkb2Muc2l6
ZS0xKSk7fQorICAgIGZ1bmN0aW9uIGNsaXBQb3MocG9zKSB7CisgICAgICBpZiAocG9zLmxpbmUg
PCAwKSByZXR1cm4ge2xpbmU6IDAsIGNoOiAwfTsKKyAgICAgIGlmIChwb3MubGluZSA+PSBkb2Mu
c2l6ZSkgcmV0dXJuIHtsaW5lOiBkb2Muc2l6ZS0xLCBjaDogZ2V0TGluZShkb2Muc2l6ZS0xKS50
ZXh0Lmxlbmd0aH07CisgICAgICB2YXIgY2ggPSBwb3MuY2gsIGxpbmVsZW4gPSBnZXRMaW5lKHBv
cy5saW5lKS50ZXh0Lmxlbmd0aDsKKyAgICAgIGlmIChjaCA9PSBudWxsIHx8IGNoID4gbGluZWxl
bikgcmV0dXJuIHtsaW5lOiBwb3MubGluZSwgY2g6IGxpbmVsZW59OworICAgICAgZWxzZSBpZiAo
Y2ggPCAwKSByZXR1cm4ge2xpbmU6IHBvcy5saW5lLCBjaDogMH07CisgICAgICBlbHNlIHJldHVy
biBwb3M7CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluZFBvc0goZGlyLCB1bml0KSB7CisgICAg
ICB2YXIgZW5kID0gc2VsLmludmVydGVkID8gc2VsLmZyb20gOiBzZWwudG8sIGxpbmUgPSBlbmQu
bGluZSwgY2ggPSBlbmQuY2g7CisgICAgICB2YXIgbGluZU9iaiA9IGdldExpbmUobGluZSk7Cisg
ICAgICBmdW5jdGlvbiBmaW5kTmV4dExpbmUoKSB7CisgICAgICAgIGZvciAodmFyIGwgPSBsaW5l
ICsgZGlyLCBlID0gZGlyIDwgMCA/IC0xIDogZG9jLnNpemU7IGwgIT0gZTsgbCArPSBkaXIpIHsK
KyAgICAgICAgICB2YXIgbG8gPSBnZXRMaW5lKGwpOworICAgICAgICAgIGlmICghbG8uaGlkZGVu
KSB7IGxpbmUgPSBsOyBsaW5lT2JqID0gbG87IHJldHVybiB0cnVlOyB9CisgICAgICAgIH0KKyAg
ICAgIH0KKyAgICAgIGZ1bmN0aW9uIG1vdmVPbmNlKGJvdW5kVG9MaW5lKSB7CisgICAgICAgIGlm
IChjaCA9PSAoZGlyIDwgMCA/IDAgOiBsaW5lT2JqLnRleHQubGVuZ3RoKSkgeworICAgICAgICAg
IGlmICghYm91bmRUb0xpbmUgJiYgZmluZE5leHRMaW5lKCkpIGNoID0gZGlyIDwgMCA/IGxpbmVP
YmoudGV4dC5sZW5ndGggOiAwOworICAgICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9IGVsc2UgY2ggKz0gZGlyOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KKyAgICAg
IGlmICh1bml0ID09ICJjaGFyIikgbW92ZU9uY2UoKTsKKyAgICAgIGVsc2UgaWYgKHVuaXQgPT0g
ImNvbHVtbiIpIG1vdmVPbmNlKHRydWUpOworICAgICAgZWxzZSBpZiAodW5pdCA9PSAid29yZCIp
IHsKKyAgICAgICAgdmFyIHNhd1dvcmQgPSBmYWxzZTsKKyAgICAgICAgZm9yICg7OykgeworICAg
ICAgICAgIGlmIChkaXIgPCAwKSBpZiAoIW1vdmVPbmNlKCkpIGJyZWFrOworICAgICAgICAgIGlm
IChpc1dvcmRDaGFyKGxpbmVPYmoudGV4dC5jaGFyQXQoY2gpKSkgc2F3V29yZCA9IHRydWU7Cisg
ICAgICAgICAgZWxzZSBpZiAoc2F3V29yZCkge2lmIChkaXIgPCAwKSB7ZGlyID0gMTsgbW92ZU9u
Y2UoKTt9IGJyZWFrO30KKyAgICAgICAgICBpZiAoZGlyID4gMCkgaWYgKCFtb3ZlT25jZSgpKSBi
cmVhazsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgcmV0dXJuIHtsaW5lOiBsaW5lLCBjaDog
Y2h9OworICAgIH0KKyAgICBmdW5jdGlvbiBtb3ZlSChkaXIsIHVuaXQpIHsKKyAgICAgIHZhciBw
b3MgPSBkaXIgPCAwID8gc2VsLmZyb20gOiBzZWwudG87CisgICAgICBpZiAoc2hpZnRTZWxlY3Rp
bmcgfHwgcG9zRXEoc2VsLmZyb20sIHNlbC50bykpIHBvcyA9IGZpbmRQb3NIKGRpciwgdW5pdCk7
CisgICAgICBzZXRDdXJzb3IocG9zLmxpbmUsIHBvcy5jaCwgdHJ1ZSk7CisgICAgfQorICAgIGZ1
bmN0aW9uIGRlbGV0ZUgoZGlyLCB1bml0KSB7CisgICAgICBpZiAoIXBvc0VxKHNlbC5mcm9tLCBz
ZWwudG8pKSByZXBsYWNlUmFuZ2UoIiIsIHNlbC5mcm9tLCBzZWwudG8pOworICAgICAgZWxzZSBp
ZiAoZGlyIDwgMCkgcmVwbGFjZVJhbmdlKCIiLCBmaW5kUG9zSChkaXIsIHVuaXQpLCBzZWwudG8p
OworICAgICAgZWxzZSByZXBsYWNlUmFuZ2UoIiIsIHNlbC5mcm9tLCBmaW5kUG9zSChkaXIsIHVu
aXQpKTsKKyAgICAgIHVzZXJTZWxDaGFuZ2UgPSB0cnVlOworICAgIH0KKyAgICBmdW5jdGlvbiBt
b3ZlVihkaXIsIHVuaXQpIHsKKyAgICAgIHZhciBkaXN0ID0gMCwgcG9zID0gbG9jYWxDb29yZHMo
c2VsLmludmVydGVkID8gc2VsLmZyb20gOiBzZWwudG8sIHRydWUpOworICAgICAgaWYgKGdvYWxD
b2x1bW4gIT0gbnVsbCkgcG9zLnggPSBnb2FsQ29sdW1uOworICAgICAgaWYgKHVuaXQgPT0gInBh
Z2UiKSBkaXN0ID0gTWF0aC5taW4oc2Nyb2xsZXIuY2xpZW50SGVpZ2h0LCB3aW5kb3cuaW5uZXJI
ZWlnaHQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCk7CisgICAgICBl
bHNlIGlmICh1bml0ID09ICJsaW5lIikgZGlzdCA9IHRleHRIZWlnaHQoKTsKKyAgICAgIHZhciB0
YXJnZXQgPSBjb29yZHNDaGFyKHBvcy54LCBwb3MueSArIGRpc3QgKiBkaXIgKyAyKTsKKyAgICAg
IGlmICh1bml0ID09ICJwYWdlIikgc2Nyb2xsYmFyLnNjcm9sbFRvcCArPSBsb2NhbENvb3Jkcyh0
YXJnZXQsIHRydWUpLnkgLSBwb3MueTsKKyAgICAgIHNldEN1cnNvcih0YXJnZXQubGluZSwgdGFy
Z2V0LmNoLCB0cnVlKTsKKyAgICAgIGdvYWxDb2x1bW4gPSBwb3MueDsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBmaW5kV29yZEF0KHBvcykgeworICAgICAgdmFyIGxpbmUgPSBnZXRMaW5lKHBvcy5s
aW5lKS50ZXh0OworICAgICAgdmFyIHN0YXJ0ID0gcG9zLmNoLCBlbmQgPSBwb3MuY2g7CisgICAg
ICBpZiAobGluZSkgeworICAgICAgICBpZiAocG9zLmFmdGVyID09PSBmYWxzZSB8fCBlbmQgPT0g
bGluZS5sZW5ndGgpIC0tc3RhcnQ7IGVsc2UgKytlbmQ7CisgICAgICAgIHZhciBzdGFydENoYXIg
PSBsaW5lLmNoYXJBdChzdGFydCk7CisgICAgICAgIHZhciBjaGVjayA9IGlzV29yZENoYXIoc3Rh
cnRDaGFyKSA/IGlzV29yZENoYXIgOgorICAgICAgICAgICAgICAgICAgICAvXHMvLnRlc3Qoc3Rh
cnRDaGFyKSA/IGZ1bmN0aW9uKGNoKSB7cmV0dXJuIC9ccy8udGVzdChjaCk7fSA6CisgICAgICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uKGNoKSB7cmV0dXJuICEvXHMvLnRlc3QoY2gpICYmICFpc1dv
cmRDaGFyKGNoKTt9OworICAgICAgICB3aGlsZSAoc3RhcnQgPiAwICYmIGNoZWNrKGxpbmUuY2hh
ckF0KHN0YXJ0IC0gMSkpKSAtLXN0YXJ0OworICAgICAgICB3aGlsZSAoZW5kIDwgbGluZS5sZW5n
dGggJiYgY2hlY2sobGluZS5jaGFyQXQoZW5kKSkpICsrZW5kOworICAgICAgfQorICAgICAgcmV0
dXJuIHtmcm9tOiB7bGluZTogcG9zLmxpbmUsIGNoOiBzdGFydH0sIHRvOiB7bGluZTogcG9zLmxp
bmUsIGNoOiBlbmR9fTsKKyAgICB9CisgICAgZnVuY3Rpb24gc2VsZWN0TGluZShsaW5lKSB7Cisg
ICAgICBzZXRTZWxlY3Rpb25Vc2VyKHtsaW5lOiBsaW5lLCBjaDogMH0sIGNsaXBQb3Moe2xpbmU6
IGxpbmUgKyAxLCBjaDogMH0pKTsKKyAgICB9CisgICAgZnVuY3Rpb24gaW5kZW50U2VsZWN0ZWQo
bW9kZSkgeworICAgICAgaWYgKHBvc0VxKHNlbC5mcm9tLCBzZWwudG8pKSByZXR1cm4gaW5kZW50
TGluZShzZWwuZnJvbS5saW5lLCBtb2RlKTsKKyAgICAgIHZhciBlID0gc2VsLnRvLmxpbmUgLSAo
c2VsLnRvLmNoID8gMCA6IDEpOworICAgICAgZm9yICh2YXIgaSA9IHNlbC5mcm9tLmxpbmU7IGkg
PD0gZTsgKytpKSBpbmRlbnRMaW5lKGksIG1vZGUpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGlu
ZGVudExpbmUobiwgaG93KSB7CisgICAgICBpZiAoIWhvdykgaG93ID0gImFkZCI7CisgICAgICBp
ZiAoaG93ID09ICJzbWFydCIpIHsKKyAgICAgICAgaWYgKCFtb2RlLmluZGVudCkgaG93ID0gInBy
ZXYiOworICAgICAgICBlbHNlIHZhciBzdGF0ZSA9IGdldFN0YXRlQmVmb3JlKG4pOworICAgICAg
fQorCisgICAgICB2YXIgbGluZSA9IGdldExpbmUobiksIGN1clNwYWNlID0gbGluZS5pbmRlbnRh
dGlvbihvcHRpb25zLnRhYlNpemUpLAorICAgICAgICAgIGN1clNwYWNlU3RyaW5nID0gbGluZS50
ZXh0Lm1hdGNoKC9eXHMqLylbMF0sIGluZGVudGF0aW9uOworICAgICAgaWYgKGhvdyA9PSAic21h
cnQiKSB7CisgICAgICAgIGluZGVudGF0aW9uID0gbW9kZS5pbmRlbnQoc3RhdGUsIGxpbmUudGV4
dC5zbGljZShjdXJTcGFjZVN0cmluZy5sZW5ndGgpLCBsaW5lLnRleHQpOworICAgICAgICBpZiAo
aW5kZW50YXRpb24gPT0gUGFzcykgaG93ID0gInByZXYiOworICAgICAgfQorICAgICAgaWYgKGhv
dyA9PSAicHJldiIpIHsKKyAgICAgICAgaWYgKG4pIGluZGVudGF0aW9uID0gZ2V0TGluZShuLTEp
LmluZGVudGF0aW9uKG9wdGlvbnMudGFiU2l6ZSk7CisgICAgICAgIGVsc2UgaW5kZW50YXRpb24g
PSAwOworICAgICAgfQorICAgICAgZWxzZSBpZiAoaG93ID09ICJhZGQiKSBpbmRlbnRhdGlvbiA9
IGN1clNwYWNlICsgb3B0aW9ucy5pbmRlbnRVbml0OworICAgICAgZWxzZSBpZiAoaG93ID09ICJz
dWJ0cmFjdCIpIGluZGVudGF0aW9uID0gY3VyU3BhY2UgLSBvcHRpb25zLmluZGVudFVuaXQ7Cisg
ICAgICBpbmRlbnRhdGlvbiA9IE1hdGgubWF4KDAsIGluZGVudGF0aW9uKTsKKyAgICAgIHZhciBk
aWZmID0gaW5kZW50YXRpb24gLSBjdXJTcGFjZTsKKworICAgICAgdmFyIGluZGVudFN0cmluZyA9
ICIiLCBwb3MgPSAwOworICAgICAgaWYgKG9wdGlvbnMuaW5kZW50V2l0aFRhYnMpCisgICAgICAg
IGZvciAodmFyIGkgPSBNYXRoLmZsb29yKGluZGVudGF0aW9uIC8gb3B0aW9ucy50YWJTaXplKTsg
aTsgLS1pKSB7cG9zICs9IG9wdGlvbnMudGFiU2l6ZTsgaW5kZW50U3RyaW5nICs9ICJcdCI7fQor
ICAgICAgd2hpbGUgKHBvcyA8IGluZGVudGF0aW9uKSB7Kytwb3M7IGluZGVudFN0cmluZyArPSAi
ICI7fQorCisgICAgICByZXBsYWNlUmFuZ2UoaW5kZW50U3RyaW5nLCB7bGluZTogbiwgY2g6IDB9
LCB7bGluZTogbiwgY2g6IGN1clNwYWNlU3RyaW5nLmxlbmd0aH0pOworICAgIH0KKworICAgIGZ1
bmN0aW9uIGxvYWRNb2RlKCkgeworICAgICAgbW9kZSA9IENvZGVNaXJyb3IuZ2V0TW9kZShvcHRp
b25zLCBvcHRpb25zLm1vZGUpOworICAgICAgZG9jLml0ZXIoMCwgZG9jLnNpemUsIGZ1bmN0aW9u
KGxpbmUpIHsgbGluZS5zdGF0ZUFmdGVyID0gbnVsbDsgfSk7CisgICAgICB3b3JrID0gWzBdOwor
ICAgICAgc3RhcnRXb3JrZXIoKTsKKyAgICB9CisgICAgZnVuY3Rpb24gZ3V0dGVyQ2hhbmdlZCgp
IHsKKyAgICAgIHZhciB2aXNpYmxlID0gb3B0aW9ucy5ndXR0ZXIgfHwgb3B0aW9ucy5saW5lTnVt
YmVyczsKKyAgICAgIGd1dHRlci5zdHlsZS5kaXNwbGF5ID0gdmlzaWJsZSA/ICIiIDogIm5vbmUi
OworICAgICAgaWYgKHZpc2libGUpIGd1dHRlckRpcnR5ID0gdHJ1ZTsKKyAgICAgIGVsc2UgbGlu
ZURpdi5wYXJlbnROb2RlLnN0eWxlLm1hcmdpbkxlZnQgPSAwOworICAgIH0KKyAgICBmdW5jdGlv
biB3cmFwcGluZ0NoYW5nZWQoZnJvbSwgdG8pIHsKKyAgICAgIGlmIChvcHRpb25zLmxpbmVXcmFw
cGluZykgeworICAgICAgICB3cmFwcGVyLmNsYXNzTmFtZSArPSAiIENvZGVNaXJyb3Itd3JhcCI7
CisgICAgICAgIHZhciBwZXJMaW5lID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyBjaGFyV2lkdGgo
KSAtIDM7CisgICAgICAgIGRvYy5pdGVyKDAsIGRvYy5zaXplLCBmdW5jdGlvbihsaW5lKSB7Cisg
ICAgICAgICAgaWYgKGxpbmUuaGlkZGVuKSByZXR1cm47CisgICAgICAgICAgdmFyIGd1ZXNzID0g
TWF0aC5jZWlsKGxpbmUudGV4dC5sZW5ndGggLyBwZXJMaW5lKSB8fCAxOworICAgICAgICAgIGlm
IChndWVzcyAhPSAxKSB1cGRhdGVMaW5lSGVpZ2h0KGxpbmUsIGd1ZXNzKTsKKyAgICAgICAgfSk7
CisgICAgICAgIGxpbmVTcGFjZS5zdHlsZS5taW5XaWR0aCA9IHdpZHRoRm9yY2VyLnN0eWxlLmxl
ZnQgPSAiIjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHdyYXBwZXIuY2xhc3NOYW1lID0gd3Jh
cHBlci5jbGFzc05hbWUucmVwbGFjZSgiIENvZGVNaXJyb3Itd3JhcCIsICIiKTsKKyAgICAgICAg
Y29tcHV0ZU1heExlbmd0aCgpOworICAgICAgICBkb2MuaXRlcigwLCBkb2Muc2l6ZSwgZnVuY3Rp
b24obGluZSkgeworICAgICAgICAgIGlmIChsaW5lLmhlaWdodCAhPSAxICYmICFsaW5lLmhpZGRl
bikgdXBkYXRlTGluZUhlaWdodChsaW5lLCAxKTsKKyAgICAgICAgfSk7CisgICAgICB9CisgICAg
ICBjaGFuZ2VzLnB1c2goe2Zyb206IDAsIHRvOiBkb2Muc2l6ZX0pOworICAgIH0KKyAgICBmdW5j
dGlvbiBtYWtlVGFiKGNvbCkgeworICAgICAgdmFyIHcgPSBvcHRpb25zLnRhYlNpemUgLSBjb2wg
JSBvcHRpb25zLnRhYlNpemUsIGNhY2hlZCA9IHRhYkNhY2hlW3ddOworICAgICAgaWYgKGNhY2hl
ZCkgcmV0dXJuIGNhY2hlZDsKKyAgICAgIGZvciAodmFyIHN0ciA9ICIiLCBpID0gMDsgaSA8IHc7
ICsraSkgc3RyICs9ICIgIjsKKyAgICAgIHZhciBzcGFuID0gZWx0KCJzcGFuIiwgc3RyLCAiY20t
dGFiIik7CisgICAgICByZXR1cm4gKHRhYkNhY2hlW3ddID0ge2VsZW1lbnQ6IHNwYW4sIHdpZHRo
OiB3fSk7CisgICAgfQorICAgIGZ1bmN0aW9uIHRoZW1lQ2hhbmdlZCgpIHsKKyAgICAgIHNjcm9s
bGVyLmNsYXNzTmFtZSA9IHNjcm9sbGVyLmNsYXNzTmFtZS5yZXBsYWNlKC9ccypjbS1zLVxTKy9n
LCAiIikgKworICAgICAgICBvcHRpb25zLnRoZW1lLnJlcGxhY2UoLyhefFxzKVxzKi9nLCAiIGNt
LXMtIik7CisgICAgfQorICAgIGZ1bmN0aW9uIGtleU1hcENoYW5nZWQoKSB7CisgICAgICB2YXIg
c3R5bGUgPSBrZXlNYXBbb3B0aW9ucy5rZXlNYXBdLnN0eWxlOworICAgICAgd3JhcHBlci5jbGFz
c05hbWUgPSB3cmFwcGVyLmNsYXNzTmFtZS5yZXBsYWNlKC9ccypjbS1rZXltYXAtXFMrL2csICIi
KSArCisgICAgICAgIChzdHlsZSA/ICIgY20ta2V5bWFwLSIgKyBzdHlsZSA6ICIiKTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBUZXh0TWFya2VyKCkgeyB0aGlzLnNldCA9IFtdOyB9CisgICAgVGV4
dE1hcmtlci5wcm90b3R5cGUuY2xlYXIgPSBvcGVyYXRpb24oZnVuY3Rpb24oKSB7CisgICAgICB2
YXIgbWluID0gSW5maW5pdHksIG1heCA9IC1JbmZpbml0eTsKKyAgICAgIGZvciAodmFyIGkgPSAw
LCBlID0gdGhpcy5zZXQubGVuZ3RoOyBpIDwgZTsgKytpKSB7CisgICAgICAgIHZhciBsaW5lID0g
dGhpcy5zZXRbaV0sIG1rID0gbGluZS5tYXJrZWQ7CisgICAgICAgIGlmICghbWsgfHwgIWxpbmUu
cGFyZW50KSBjb250aW51ZTsKKyAgICAgICAgdmFyIGxpbmVOID0gbGluZU5vKGxpbmUpOworICAg
ICAgICBtaW4gPSBNYXRoLm1pbihtaW4sIGxpbmVOKTsgbWF4ID0gTWF0aC5tYXgobWF4LCBsaW5l
Tik7CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbWsubGVuZ3RoOyArK2opCisgICAgICAg
ICAgaWYgKG1rW2pdLm1hcmtlciA9PSB0aGlzKSBtay5zcGxpY2Uoai0tLCAxKTsKKyAgICAgIH0K
KyAgICAgIGlmIChtaW4gIT0gSW5maW5pdHkpCisgICAgICAgIGNoYW5nZXMucHVzaCh7ZnJvbTog
bWluLCB0bzogbWF4ICsgMX0pOworICAgIH0pOworICAgIFRleHRNYXJrZXIucHJvdG90eXBlLmZp
bmQgPSBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBmcm9tLCB0bzsKKyAgICAgIGZvciAodmFyIGkg
PSAwLCBlID0gdGhpcy5zZXQubGVuZ3RoOyBpIDwgZTsgKytpKSB7CisgICAgICAgIHZhciBsaW5l
ID0gdGhpcy5zZXRbaV0sIG1rID0gbGluZS5tYXJrZWQ7CisgICAgICAgIGZvciAodmFyIGogPSAw
OyBqIDwgbWsubGVuZ3RoOyArK2opIHsKKyAgICAgICAgICB2YXIgbWFyayA9IG1rW2pdOworICAg
ICAgICAgIGlmIChtYXJrLm1hcmtlciA9PSB0aGlzKSB7CisgICAgICAgICAgICBpZiAobWFyay5m
cm9tICE9IG51bGwgfHwgbWFyay50byAhPSBudWxsKSB7CisgICAgICAgICAgICAgIHZhciBmb3Vu
ZCA9IGxpbmVObyhsaW5lKTsKKyAgICAgICAgICAgICAgaWYgKGZvdW5kICE9IG51bGwpIHsKKyAg
ICAgICAgICAgICAgICBpZiAobWFyay5mcm9tICE9IG51bGwpIGZyb20gPSB7bGluZTogZm91bmQs
IGNoOiBtYXJrLmZyb219OworICAgICAgICAgICAgICAgIGlmIChtYXJrLnRvICE9IG51bGwpIHRv
ID0ge2xpbmU6IGZvdW5kLCBjaDogbWFyay50b307CisgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHJldHVybiB7ZnJv
bTogZnJvbSwgdG86IHRvfTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gbWFya1RleHQoZnJvbSwg
dG8sIGNsYXNzTmFtZSkgeworICAgICAgZnJvbSA9IGNsaXBQb3MoZnJvbSk7IHRvID0gY2xpcFBv
cyh0byk7CisgICAgICB2YXIgdG0gPSBuZXcgVGV4dE1hcmtlcigpOworICAgICAgaWYgKCFwb3NM
ZXNzKGZyb20sIHRvKSkgcmV0dXJuIHRtOworICAgICAgZnVuY3Rpb24gYWRkKGxpbmUsIGZyb20s
IHRvLCBjbGFzc05hbWUpIHsKKyAgICAgICAgZ2V0TGluZShsaW5lKS5hZGRNYXJrKG5ldyBNYXJr
ZWRUZXh0KGZyb20sIHRvLCBjbGFzc05hbWUsIHRtKSk7CisgICAgICB9CisgICAgICBpZiAoZnJv
bS5saW5lID09IHRvLmxpbmUpIGFkZChmcm9tLmxpbmUsIGZyb20uY2gsIHRvLmNoLCBjbGFzc05h
bWUpOworICAgICAgZWxzZSB7CisgICAgICAgIGFkZChmcm9tLmxpbmUsIGZyb20uY2gsIG51bGws
IGNsYXNzTmFtZSk7CisgICAgICAgIGZvciAodmFyIGkgPSBmcm9tLmxpbmUgKyAxLCBlID0gdG8u
bGluZTsgaSA8IGU7ICsraSkKKyAgICAgICAgICBhZGQoaSwgbnVsbCwgbnVsbCwgY2xhc3NOYW1l
KTsKKyAgICAgICAgYWRkKHRvLmxpbmUsIG51bGwsIHRvLmNoLCBjbGFzc05hbWUpOworICAgICAg
fQorICAgICAgY2hhbmdlcy5wdXNoKHtmcm9tOiBmcm9tLmxpbmUsIHRvOiB0by5saW5lICsgMX0p
OworICAgICAgcmV0dXJuIHRtOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNldEJvb2ttYXJrKHBv
cykgeworICAgICAgcG9zID0gY2xpcFBvcyhwb3MpOworICAgICAgdmFyIGJtID0gbmV3IEJvb2tt
YXJrKHBvcy5jaCk7CisgICAgICBnZXRMaW5lKHBvcy5saW5lKS5hZGRNYXJrKGJtKTsKKyAgICAg
IHJldHVybiBibTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5kTWFya3NBdChwb3MpIHsKKyAg
ICAgIHBvcyA9IGNsaXBQb3MocG9zKTsKKyAgICAgIHZhciBtYXJrZXJzID0gW10sIG1hcmtlZCA9
IGdldExpbmUocG9zLmxpbmUpLm1hcmtlZDsKKyAgICAgIGlmICghbWFya2VkKSByZXR1cm4gbWFy
a2VyczsKKyAgICAgIGZvciAodmFyIGkgPSAwLCBlID0gbWFya2VkLmxlbmd0aDsgaSA8IGU7ICsr
aSkgeworICAgICAgICB2YXIgbSA9IG1hcmtlZFtpXTsKKyAgICAgICAgaWYgKChtLmZyb20gPT0g
bnVsbCB8fCBtLmZyb20gPD0gcG9zLmNoKSAmJgorICAgICAgICAgICAgKG0udG8gPT0gbnVsbCB8
fCBtLnRvID49IHBvcy5jaCkpCisgICAgICAgICAgbWFya2Vycy5wdXNoKG0ubWFya2VyIHx8IG0p
OworICAgICAgfQorICAgICAgcmV0dXJuIG1hcmtlcnM7CisgICAgfQorCisgICAgZnVuY3Rpb24g
YWRkR3V0dGVyTWFya2VyKGxpbmUsIHRleHQsIGNsYXNzTmFtZSkgeworICAgICAgaWYgKHR5cGVv
ZiBsaW5lID09ICJudW1iZXIiKSBsaW5lID0gZ2V0TGluZShjbGlwTGluZShsaW5lKSk7CisgICAg
ICBsaW5lLmd1dHRlck1hcmtlciA9IHt0ZXh0OiB0ZXh0LCBzdHlsZTogY2xhc3NOYW1lfTsKKyAg
ICAgIGd1dHRlckRpcnR5ID0gdHJ1ZTsKKyAgICAgIHJldHVybiBsaW5lOworICAgIH0KKyAgICBm
dW5jdGlvbiByZW1vdmVHdXR0ZXJNYXJrZXIobGluZSkgeworICAgICAgaWYgKHR5cGVvZiBsaW5l
ID09ICJudW1iZXIiKSBsaW5lID0gZ2V0TGluZShjbGlwTGluZShsaW5lKSk7CisgICAgICBsaW5l
Lmd1dHRlck1hcmtlciA9IG51bGw7CisgICAgICBndXR0ZXJEaXJ0eSA9IHRydWU7CisgICAgfQor
CisgICAgZnVuY3Rpb24gY2hhbmdlTGluZShoYW5kbGUsIG9wKSB7CisgICAgICB2YXIgbm8gPSBo
YW5kbGUsIGxpbmUgPSBoYW5kbGU7CisgICAgICBpZiAodHlwZW9mIGhhbmRsZSA9PSAibnVtYmVy
IikgbGluZSA9IGdldExpbmUoY2xpcExpbmUoaGFuZGxlKSk7CisgICAgICBlbHNlIG5vID0gbGlu
ZU5vKGhhbmRsZSk7CisgICAgICBpZiAobm8gPT0gbnVsbCkgcmV0dXJuIG51bGw7CisgICAgICBp
ZiAob3AobGluZSwgbm8pKSBjaGFuZ2VzLnB1c2goe2Zyb206IG5vLCB0bzogbm8gKyAxfSk7Cisg
ICAgICBlbHNlIHJldHVybiBudWxsOworICAgICAgcmV0dXJuIGxpbmU7CisgICAgfQorICAgIGZ1
bmN0aW9uIHNldExpbmVDbGFzcyhoYW5kbGUsIGNsYXNzTmFtZSwgYmdDbGFzc05hbWUpIHsKKyAg
ICAgIHJldHVybiBjaGFuZ2VMaW5lKGhhbmRsZSwgZnVuY3Rpb24obGluZSkgeworICAgICAgICBp
ZiAobGluZS5jbGFzc05hbWUgIT0gY2xhc3NOYW1lIHx8IGxpbmUuYmdDbGFzc05hbWUgIT0gYmdD
bGFzc05hbWUpIHsKKyAgICAgICAgICBsaW5lLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKKyAgICAg
ICAgICBsaW5lLmJnQ2xhc3NOYW1lID0gYmdDbGFzc05hbWU7CisgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICAgIH0pOworICAgIH0KKyAgICBmdW5jdGlvbiBzZXRMaW5lSGlk
ZGVuKGhhbmRsZSwgaGlkZGVuKSB7CisgICAgICByZXR1cm4gY2hhbmdlTGluZShoYW5kbGUsIGZ1
bmN0aW9uKGxpbmUsIG5vKSB7CisgICAgICAgIGlmIChsaW5lLmhpZGRlbiAhPSBoaWRkZW4pIHsK
KyAgICAgICAgICBsaW5lLmhpZGRlbiA9IGhpZGRlbjsKKyAgICAgICAgICBpZiAoIW9wdGlvbnMu
bGluZVdyYXBwaW5nKSB7CisgICAgICAgICAgICBpZiAoaGlkZGVuICYmIGxpbmUudGV4dC5sZW5n
dGggPT0gbWF4TGluZS50ZXh0Lmxlbmd0aCkgeworICAgICAgICAgICAgICB1cGRhdGVNYXhMaW5l
ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIWhpZGRlbiAmJiBsaW5lLnRleHQubGVu
Z3RoID4gbWF4TGluZS50ZXh0Lmxlbmd0aCkgeworICAgICAgICAgICAgICBtYXhMaW5lID0gbGlu
ZTsgdXBkYXRlTWF4TGluZSA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAg
ICAgICAgICB1cGRhdGVMaW5lSGVpZ2h0KGxpbmUsIGhpZGRlbiA/IDAgOiAxKTsKKyAgICAgICAg
ICB2YXIgZmxpbmUgPSBzZWwuZnJvbS5saW5lLCB0bGluZSA9IHNlbC50by5saW5lOworICAgICAg
ICAgIGlmIChoaWRkZW4gJiYgKGZsaW5lID09IG5vIHx8IHRsaW5lID09IG5vKSkgeworICAgICAg
ICAgICAgdmFyIGZyb20gPSBmbGluZSA9PSBubyA/IHNraXBIaWRkZW4oe2xpbmU6IGZsaW5lLCBj
aDogMH0sIGZsaW5lLCAwKSA6IHNlbC5mcm9tOworICAgICAgICAgICAgdmFyIHRvID0gdGxpbmUg
PT0gbm8gPyBza2lwSGlkZGVuKHtsaW5lOiB0bGluZSwgY2g6IDB9LCB0bGluZSwgMCkgOiBzZWwu
dG87CisgICAgICAgICAgICAvLyBDYW4ndCBoaWRlIHRoZSBsYXN0IHZpc2libGUgbGluZSwgd2Un
ZCBoYXZlIG5vIHBsYWNlIHRvIHB1dCB0aGUgY3Vyc29yCisgICAgICAgICAgICBpZiAoIXRvKSBy
ZXR1cm47CisgICAgICAgICAgICBzZXRTZWxlY3Rpb24oZnJvbSwgdG8pOworICAgICAgICAgIH0K
KyAgICAgICAgICByZXR1cm4gKGd1dHRlckRpcnR5ID0gdHJ1ZSk7CisgICAgICAgIH0KKyAgICAg
IH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGxpbmVJbmZvKGxpbmUpIHsKKyAgICAgIGlmICh0
eXBlb2YgbGluZSA9PSAibnVtYmVyIikgeworICAgICAgICBpZiAoIWlzTGluZShsaW5lKSkgcmV0
dXJuIG51bGw7CisgICAgICAgIHZhciBuID0gbGluZTsKKyAgICAgICAgbGluZSA9IGdldExpbmUo
bGluZSk7CisgICAgICAgIGlmICghbGluZSkgcmV0dXJuIG51bGw7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICB2YXIgbiA9IGxpbmVObyhsaW5lKTsKKyAgICAgICAgaWYgKG4gPT0gbnVsbCkgcmV0
dXJuIG51bGw7CisgICAgICB9CisgICAgICB2YXIgbWFya2VyID0gbGluZS5ndXR0ZXJNYXJrZXI7
CisgICAgICByZXR1cm4ge2xpbmU6IG4sIGhhbmRsZTogbGluZSwgdGV4dDogbGluZS50ZXh0LCBt
YXJrZXJUZXh0OiBtYXJrZXIgJiYgbWFya2VyLnRleHQsCisgICAgICAgICAgICAgIG1hcmtlckNs
YXNzOiBtYXJrZXIgJiYgbWFya2VyLnN0eWxlLCBsaW5lQ2xhc3M6IGxpbmUuY2xhc3NOYW1lLCBi
Z0NsYXNzOiBsaW5lLmJnQ2xhc3NOYW1lfTsKKyAgICB9CisKKyAgICAvLyBUaGVzZSBhcmUgdXNl
ZCB0byBnbyBmcm9tIHBpeGVsIHBvc2l0aW9ucyB0byBjaGFyYWN0ZXIKKyAgICAvLyBwb3NpdGlv
bnMsIHRha2luZyB2YXJ5aW5nIGNoYXJhY3RlciB3aWR0aHMgaW50byBhY2NvdW50LgorICAgIGZ1
bmN0aW9uIGNoYXJGcm9tWChsaW5lLCB4KSB7CisgICAgICBpZiAoeCA8PSAwKSByZXR1cm4gMDsK
KyAgICAgIHZhciBsaW5lT2JqID0gZ2V0TGluZShsaW5lKSwgdGV4dCA9IGxpbmVPYmoudGV4dDsK
KyAgICAgIGZ1bmN0aW9uIGdldFgobGVuKSB7CisgICAgICAgIHJldHVybiBtZWFzdXJlTGluZShs
aW5lT2JqLCBsZW4pLmxlZnQ7CisgICAgICB9CisgICAgICB2YXIgZnJvbSA9IDAsIGZyb21YID0g
MCwgdG8gPSB0ZXh0Lmxlbmd0aCwgdG9YOworICAgICAgLy8gR3Vlc3MgYSBzdWl0YWJsZSB1cHBl
ciBib3VuZCBmb3Igb3VyIHNlYXJjaC4KKyAgICAgIHZhciBlc3RpbWF0ZWQgPSBNYXRoLm1pbih0
bywgTWF0aC5jZWlsKHggLyBjaGFyV2lkdGgoKSkpOworICAgICAgZm9yICg7OykgeworICAgICAg
ICB2YXIgZXN0WCA9IGdldFgoZXN0aW1hdGVkKTsKKyAgICAgICAgaWYgKGVzdFggPD0geCAmJiBl
c3RpbWF0ZWQgPCB0bykgZXN0aW1hdGVkID0gTWF0aC5taW4odG8sIE1hdGguY2VpbChlc3RpbWF0
ZWQgKiAxLjIpKTsKKyAgICAgICAgZWxzZSB7dG9YID0gZXN0WDsgdG8gPSBlc3RpbWF0ZWQ7IGJy
ZWFrO30KKyAgICAgIH0KKyAgICAgIGlmICh4ID4gdG9YKSByZXR1cm4gdG87CisgICAgICAvLyBU
cnkgdG8gZ3Vlc3MgYSBzdWl0YWJsZSBsb3dlciBib3VuZCBhcyB3ZWxsLgorICAgICAgZXN0aW1h
dGVkID0gTWF0aC5mbG9vcih0byAqIDAuOCk7IGVzdFggPSBnZXRYKGVzdGltYXRlZCk7CisgICAg
ICBpZiAoZXN0WCA8IHgpIHtmcm9tID0gZXN0aW1hdGVkOyBmcm9tWCA9IGVzdFg7fQorICAgICAg
Ly8gRG8gYSBiaW5hcnkgc2VhcmNoIGJldHdlZW4gdGhlc2UgYm91bmRzLgorICAgICAgZm9yICg7
OykgeworICAgICAgICBpZiAodG8gLSBmcm9tIDw9IDEpIHJldHVybiAodG9YIC0geCA+IHggLSBm
cm9tWCkgPyBmcm9tIDogdG87CisgICAgICAgIHZhciBtaWRkbGUgPSBNYXRoLmNlaWwoKGZyb20g
KyB0bykgLyAyKSwgbWlkZGxlWCA9IGdldFgobWlkZGxlKTsKKyAgICAgICAgaWYgKG1pZGRsZVgg
PiB4KSB7dG8gPSBtaWRkbGU7IHRvWCA9IG1pZGRsZVg7fQorICAgICAgICBlbHNlIHtmcm9tID0g
bWlkZGxlOyBmcm9tWCA9IG1pZGRsZVg7fQorICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9u
IG1lYXN1cmVMaW5lKGxpbmUsIGNoKSB7CisgICAgICBpZiAoY2ggPT0gMCkgcmV0dXJuIHt0b3A6
IDAsIGxlZnQ6IDB9OworICAgICAgdmFyIHdiciA9IG9wdGlvbnMubGluZVdyYXBwaW5nICYmIGNo
IDwgbGluZS50ZXh0Lmxlbmd0aCAmJgorICAgICAgICAgICAgICAgIHNwYW5BZmZlY3RzV3JhcHBp
bmcudGVzdChsaW5lLnRleHQuc2xpY2UoY2ggLSAxLCBjaCArIDEpKTsKKyAgICAgIHZhciBwcmUg
PSBsaW5lLmdldEVsZW1lbnQobWFrZVRhYiwgY2gsIHdicik7CisgICAgICByZW1vdmVDaGlsZHJl
bkFuZEFkZChtZWFzdXJlLCBwcmUpOworICAgICAgdmFyIGFuY2hvciA9IHByZS5hbmNob3I7Cisg
ICAgICB2YXIgdG9wID0gYW5jaG9yLm9mZnNldFRvcCwgbGVmdCA9IGFuY2hvci5vZmZzZXRMZWZ0
OworICAgICAgLy8gT2xkZXIgSUVzIHJlcG9ydCB6ZXJvIG9mZnNldHMgZm9yIHNwYW5zIGRpcmVj
dGx5IGFmdGVyIGEgd3JhcAorICAgICAgaWYgKGllICYmIHRvcCA9PSAwICYmIGxlZnQgPT0gMCkg
eworICAgICAgICB2YXIgYmFja3VwID0gZWx0KCJzcGFuIiwgIngiKTsKKyAgICAgICAgYW5jaG9y
LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGJhY2t1cCwgYW5jaG9yLm5leHRTaWJsaW5nKTsKKyAg
ICAgICAgdG9wID0gYmFja3VwLm9mZnNldFRvcDsKKyAgICAgIH0KKyAgICAgIHJldHVybiB7dG9w
OiB0b3AsIGxlZnQ6IGxlZnR9OworICAgIH0KKyAgICBmdW5jdGlvbiBsb2NhbENvb3Jkcyhwb3Ms
IGluTGluZVdyYXApIHsKKyAgICAgIHZhciB4LCBsaCA9IHRleHRIZWlnaHQoKSwgeSA9IGxoICog
KGhlaWdodEF0TGluZShkb2MsIHBvcy5saW5lKSAtIChpbkxpbmVXcmFwID8gZGlzcGxheU9mZnNl
dCA6IDApKTsKKyAgICAgIGlmIChwb3MuY2ggPT0gMCkgeCA9IDA7CisgICAgICBlbHNlIHsKKyAg
ICAgICAgdmFyIHNwID0gbWVhc3VyZUxpbmUoZ2V0TGluZShwb3MubGluZSksIHBvcy5jaCk7Cisg
ICAgICAgIHggPSBzcC5sZWZ0OworICAgICAgICBpZiAob3B0aW9ucy5saW5lV3JhcHBpbmcpIHkg
Kz0gTWF0aC5tYXgoMCwgc3AudG9wKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiB7eDogeCwgeTog
eSwgeUJvdDogeSArIGxofTsKKyAgICB9CisgICAgLy8gQ29vcmRzIG11c3QgYmUgbGluZVNwYWNl
LWxvY2FsCisgICAgZnVuY3Rpb24gY29vcmRzQ2hhcih4LCB5KSB7CisgICAgICBpZiAoeSA8IDAp
IHJldHVybiB7bGluZTogMCwgY2g6IDB9OworICAgICAgdmFyIHRoID0gdGV4dEhlaWdodCgpLCBj
dyA9IGNoYXJXaWR0aCgpLCBoZWlnaHRQb3MgPSBkaXNwbGF5T2Zmc2V0ICsgTWF0aC5mbG9vcih5
IC8gdGgpOworICAgICAgdmFyIGxpbmVObyA9IGxpbmVBdEhlaWdodChkb2MsIGhlaWdodFBvcyk7
CisgICAgICBpZiAobGluZU5vID49IGRvYy5zaXplKSByZXR1cm4ge2xpbmU6IGRvYy5zaXplIC0g
MSwgY2g6IGdldExpbmUoZG9jLnNpemUgLSAxKS50ZXh0Lmxlbmd0aH07CisgICAgICB2YXIgbGlu
ZU9iaiA9IGdldExpbmUobGluZU5vKSwgdGV4dCA9IGxpbmVPYmoudGV4dDsKKyAgICAgIHZhciB0
dyA9IG9wdGlvbnMubGluZVdyYXBwaW5nLCBpbm5lck9mZiA9IHR3ID8gaGVpZ2h0UG9zIC0gaGVp
Z2h0QXRMaW5lKGRvYywgbGluZU5vKSA6IDA7CisgICAgICBpZiAoeCA8PSAwICYmIGlubmVyT2Zm
ID09IDApIHJldHVybiB7bGluZTogbGluZU5vLCBjaDogMH07CisgICAgICB2YXIgd3JvbmdMaW5l
ID0gZmFsc2U7CisgICAgICBmdW5jdGlvbiBnZXRYKGxlbikgeworICAgICAgICB2YXIgc3AgPSBt
ZWFzdXJlTGluZShsaW5lT2JqLCBsZW4pOworICAgICAgICBpZiAodHcpIHsKKyAgICAgICAgICB2
YXIgb2ZmID0gTWF0aC5yb3VuZChzcC50b3AgLyB0aCk7CisgICAgICAgICAgd3JvbmdMaW5lID0g
b2ZmICE9IGlubmVyT2ZmOworICAgICAgICAgIHJldHVybiBNYXRoLm1heCgwLCBzcC5sZWZ0ICsg
KG9mZiAtIGlubmVyT2ZmKSAqIHNjcm9sbGVyLmNsaWVudFdpZHRoKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gc3AubGVmdDsKKyAgICAgIH0KKyAgICAgIHZhciBmcm9tID0gMCwgZnJvbVgg
PSAwLCB0byA9IHRleHQubGVuZ3RoLCB0b1g7CisgICAgICAvLyBHdWVzcyBhIHN1aXRhYmxlIHVw
cGVyIGJvdW5kIGZvciBvdXIgc2VhcmNoLgorICAgICAgdmFyIGVzdGltYXRlZCA9IE1hdGgubWlu
KHRvLCBNYXRoLmNlaWwoKHggKyBpbm5lck9mZiAqIHNjcm9sbGVyLmNsaWVudFdpZHRoICogLjkp
IC8gY3cpKTsKKyAgICAgIGZvciAoOzspIHsKKyAgICAgICAgdmFyIGVzdFggPSBnZXRYKGVzdGlt
YXRlZCk7CisgICAgICAgIGlmIChlc3RYIDw9IHggJiYgZXN0aW1hdGVkIDwgdG8pIGVzdGltYXRl
ZCA9IE1hdGgubWluKHRvLCBNYXRoLmNlaWwoZXN0aW1hdGVkICogMS4yKSk7CisgICAgICAgIGVs
c2Uge3RvWCA9IGVzdFg7IHRvID0gZXN0aW1hdGVkOyBicmVhazt9CisgICAgICB9CisgICAgICBp
ZiAoeCA+IHRvWCkgcmV0dXJuIHtsaW5lOiBsaW5lTm8sIGNoOiB0b307CisgICAgICAvLyBUcnkg
dG8gZ3Vlc3MgYSBzdWl0YWJsZSBsb3dlciBib3VuZCBhcyB3ZWxsLgorICAgICAgZXN0aW1hdGVk
ID0gTWF0aC5mbG9vcih0byAqIDAuOCk7IGVzdFggPSBnZXRYKGVzdGltYXRlZCk7CisgICAgICBp
ZiAoZXN0WCA8IHgpIHtmcm9tID0gZXN0aW1hdGVkOyBmcm9tWCA9IGVzdFg7fQorICAgICAgLy8g
RG8gYSBiaW5hcnkgc2VhcmNoIGJldHdlZW4gdGhlc2UgYm91bmRzLgorICAgICAgZm9yICg7Oykg
eworICAgICAgICBpZiAodG8gLSBmcm9tIDw9IDEpIHsKKyAgICAgICAgICB2YXIgYWZ0ZXIgPSB4
IC0gZnJvbVggPCB0b1ggLSB4OworICAgICAgICAgIHJldHVybiB7bGluZTogbGluZU5vLCBjaDog
YWZ0ZXIgPyBmcm9tIDogdG8sIGFmdGVyOiBhZnRlcn07CisgICAgICAgIH0KKyAgICAgICAgdmFy
IG1pZGRsZSA9IE1hdGguY2VpbCgoZnJvbSArIHRvKSAvIDIpLCBtaWRkbGVYID0gZ2V0WChtaWRk
bGUpOworICAgICAgICBpZiAobWlkZGxlWCA+IHgpIHt0byA9IG1pZGRsZTsgdG9YID0gbWlkZGxl
WDsgaWYgKHdyb25nTGluZSkgdG9YICs9IDEwMDA7IH0KKyAgICAgICAgZWxzZSB7ZnJvbSA9IG1p
ZGRsZTsgZnJvbVggPSBtaWRkbGVYO30KKyAgICAgIH0KKyAgICB9CisgICAgZnVuY3Rpb24gcGFn
ZUNvb3Jkcyhwb3MpIHsKKyAgICAgIHZhciBsb2NhbCA9IGxvY2FsQ29vcmRzKHBvcywgdHJ1ZSks
IG9mZiA9IGVsdE9mZnNldChsaW5lU3BhY2UpOworICAgICAgcmV0dXJuIHt4OiBvZmYubGVmdCAr
IGxvY2FsLngsIHk6IG9mZi50b3AgKyBsb2NhbC55LCB5Qm90OiBvZmYudG9wICsgbG9jYWwueUJv
dH07CisgICAgfQorCisgICAgdmFyIGNhY2hlZEhlaWdodCwgY2FjaGVkSGVpZ2h0Rm9yLCBtZWFz
dXJlUHJlOworICAgIGZ1bmN0aW9uIHRleHRIZWlnaHQoKSB7CisgICAgICBpZiAobWVhc3VyZVBy
ZSA9PSBudWxsKSB7CisgICAgICAgIG1lYXN1cmVQcmUgPSBlbHQoInByZSIpOworICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDQ5OyArK2kpIHsKKyAgICAgICAgICBtZWFzdXJlUHJlLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJ4IikpOworICAgICAgICAgIG1lYXN1cmVQ
cmUuYXBwZW5kQ2hpbGQoZWx0KCJiciIpKTsKKyAgICAgICAgfQorICAgICAgICBtZWFzdXJlUHJl
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJ4IikpOworICAgICAgfQorICAg
ICAgdmFyIG9mZnNldEhlaWdodCA9IGxpbmVEaXYuY2xpZW50SGVpZ2h0OworICAgICAgaWYgKG9m
ZnNldEhlaWdodCA9PSBjYWNoZWRIZWlnaHRGb3IpIHJldHVybiBjYWNoZWRIZWlnaHQ7CisgICAg
ICBjYWNoZWRIZWlnaHRGb3IgPSBvZmZzZXRIZWlnaHQ7CisgICAgICByZW1vdmVDaGlsZHJlbkFu
ZEFkZChtZWFzdXJlLCBtZWFzdXJlUHJlLmNsb25lTm9kZSh0cnVlKSk7CisgICAgICBjYWNoZWRI
ZWlnaHQgPSBtZWFzdXJlLmZpcnN0Q2hpbGQub2Zmc2V0SGVpZ2h0IC8gNTAgfHwgMTsKKyAgICAg
IHJlbW92ZUNoaWxkcmVuKG1lYXN1cmUpOworICAgICAgcmV0dXJuIGNhY2hlZEhlaWdodDsKKyAg
ICB9CisgICAgdmFyIGNhY2hlZFdpZHRoLCBjYWNoZWRXaWR0aEZvciA9IDA7CisgICAgZnVuY3Rp
b24gY2hhcldpZHRoKCkgeworICAgICAgaWYgKHNjcm9sbGVyLmNsaWVudFdpZHRoID09IGNhY2hl
ZFdpZHRoRm9yKSByZXR1cm4gY2FjaGVkV2lkdGg7CisgICAgICBjYWNoZWRXaWR0aEZvciA9IHNj
cm9sbGVyLmNsaWVudFdpZHRoOworICAgICAgdmFyIGFuY2hvciA9IGVsdCgic3BhbiIsICJ4Iik7
CisgICAgICB2YXIgcHJlID0gZWx0KCJwcmUiLCBbYW5jaG9yXSk7CisgICAgICByZW1vdmVDaGls
ZHJlbkFuZEFkZChtZWFzdXJlLCBwcmUpOworICAgICAgcmV0dXJuIChjYWNoZWRXaWR0aCA9IGFu
Y2hvci5vZmZzZXRXaWR0aCB8fCAxMCk7CisgICAgfQorICAgIGZ1bmN0aW9uIHBhZGRpbmdUb3Ao
KSB7cmV0dXJuIGxpbmVTcGFjZS5vZmZzZXRUb3A7fQorICAgIGZ1bmN0aW9uIHBhZGRpbmdMZWZ0
KCkge3JldHVybiBsaW5lU3BhY2Uub2Zmc2V0TGVmdDt9CisKKyAgICBmdW5jdGlvbiBwb3NGcm9t
TW91c2UoZSwgbGliZXJhbCkgeworICAgICAgdmFyIG9mZlcgPSBlbHRPZmZzZXQoc2Nyb2xsZXIs
IHRydWUpLCB4LCB5OworICAgICAgLy8gRmFpbHMgdW5wcmVkaWN0YWJseSBvbiBJRVs2N10gd2hl
biBtb3VzZSBpcyBkcmFnZ2VkIGFyb3VuZCBxdWlja2x5LgorICAgICAgdHJ5IHsgeCA9IGUuY2xp
ZW50WDsgeSA9IGUuY2xpZW50WTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gbnVsbDsgfQorICAgICAg
Ly8gVGhpcyBpcyBhIG1lc3Mgb2YgYSBoZXVyaXN0aWMgdG8gdHJ5IGFuZCBkZXRlcm1pbmUgd2hl
dGhlciBhCisgICAgICAvLyBzY3JvbGwtYmFyIHdhcyBjbGlja2VkIG9yIG5vdCwgYW5kIHRvIHJl
dHVybiBudWxsIGlmIG9uZSB3YXMKKyAgICAgIC8vIChhbmQgIWxpYmVyYWwpLgorICAgICAgaWYg
KCFsaWJlcmFsICYmICh4IC0gb2ZmVy5sZWZ0ID4gc2Nyb2xsZXIuY2xpZW50V2lkdGggfHwgeSAt
IG9mZlcudG9wID4gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0KSkKKyAgICAgICAgcmV0dXJuIG51bGw7
CisgICAgICB2YXIgb2ZmTCA9IGVsdE9mZnNldChsaW5lU3BhY2UsIHRydWUpOworICAgICAgcmV0
dXJuIGNvb3Jkc0NoYXIoeCAtIG9mZkwubGVmdCwgeSAtIG9mZkwudG9wKTsKKyAgICB9CisgICAg
ZnVuY3Rpb24gb25Db250ZXh0TWVudShlKSB7CisgICAgICB2YXIgcG9zID0gcG9zRnJvbU1vdXNl
KGUpLCBzY3JvbGxQb3MgPSBzY3JvbGxiYXIuc2Nyb2xsVG9wOworICAgICAgaWYgKCFwb3MgfHwg
b3BlcmEpIHJldHVybjsgLy8gT3BlcmEgaXMgZGlmZmljdWx0LgorICAgICAgaWYgKHBvc0VxKHNl
bC5mcm9tLCBzZWwudG8pIHx8IHBvc0xlc3MocG9zLCBzZWwuZnJvbSkgfHwgIXBvc0xlc3MocG9z
LCBzZWwudG8pKQorICAgICAgICBvcGVyYXRpb24oc2V0Q3Vyc29yKShwb3MubGluZSwgcG9zLmNo
KTsKKworICAgICAgdmFyIG9sZENTUyA9IGlucHV0LnN0eWxlLmNzc1RleHQ7CisgICAgICBpbnB1
dERpdi5zdHlsZS5wb3NpdGlvbiA9ICJhYnNvbHV0ZSI7CisgICAgICBpbnB1dC5zdHlsZS5jc3NU
ZXh0ID0gInBvc2l0aW9uOiBmaXhlZDsgd2lkdGg6IDMwcHg7IGhlaWdodDogMzBweDsgdG9wOiAi
ICsgKGUuY2xpZW50WSAtIDUpICsKKyAgICAgICAgInB4OyBsZWZ0OiAiICsgKGUuY2xpZW50WCAt
IDUpICsgInB4OyB6LWluZGV4OiAxMDAwOyBiYWNrZ3JvdW5kOiB3aGl0ZTsgIiArCisgICAgICAg
ICJib3JkZXItd2lkdGg6IDA7IG91dGxpbmU6IG5vbmU7IG92ZXJmbG93OiBoaWRkZW47IG9wYWNp
dHk6IC4wNTsgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTUpOyI7CisgICAgICBsZWF2ZUlucHV0QWxv
bmUgPSB0cnVlOworICAgICAgdmFyIHZhbCA9IGlucHV0LnZhbHVlID0gZ2V0U2VsZWN0aW9uKCk7
CisgICAgICBmb2N1c0lucHV0KCk7CisgICAgICBzZWxlY3RJbnB1dChpbnB1dCk7CisgICAgICBm
dW5jdGlvbiByZWhpZGUoKSB7CisgICAgICAgIHZhciBuZXdWYWwgPSBzcGxpdExpbmVzKGlucHV0
LnZhbHVlKS5qb2luKCJcbiIpOworICAgICAgICBpZiAobmV3VmFsICE9IHZhbCAmJiAhb3B0aW9u
cy5yZWFkT25seSkgb3BlcmF0aW9uKHJlcGxhY2VTZWxlY3Rpb24pKG5ld1ZhbCwgImVuZCIpOwor
ICAgICAgICBpbnB1dERpdi5zdHlsZS5wb3NpdGlvbiA9ICJyZWxhdGl2ZSI7CisgICAgICAgIGlu
cHV0LnN0eWxlLmNzc1RleHQgPSBvbGRDU1M7CisgICAgICAgIGlmIChpZV9sdDkpIHNjcm9sbGJh
ci5zY3JvbGxUb3AgPSBzY3JvbGxQb3M7CisgICAgICAgIGxlYXZlSW5wdXRBbG9uZSA9IGZhbHNl
OworICAgICAgICByZXNldElucHV0KHRydWUpOworICAgICAgICBzbG93UG9sbCgpOworICAgICAg
fQorCisgICAgICBpZiAoZ2Vja28pIHsKKyAgICAgICAgZV9zdG9wKGUpOworICAgICAgICB2YXIg
bW91c2V1cCA9IGNvbm5lY3Qod2luZG93LCAibW91c2V1cCIsIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgIG1vdXNldXAoKTsKKyAgICAgICAgICBzZXRUaW1lb3V0KHJlaGlkZSwgMjApOworICAgICAg
ICB9LCB0cnVlKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHNldFRpbWVvdXQocmVoaWRlLCA1
MCk7CisgICAgICB9CisgICAgfQorCisgICAgLy8gQ3Vyc29yLWJsaW5raW5nCisgICAgZnVuY3Rp
b24gcmVzdGFydEJsaW5rKCkgeworICAgICAgY2xlYXJJbnRlcnZhbChibGlua2VyKTsKKyAgICAg
IHZhciBvbiA9IHRydWU7CisgICAgICBjdXJzb3Iuc3R5bGUudmlzaWJpbGl0eSA9ICIiOworICAg
ICAgYmxpbmtlciA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICBjdXJzb3Iuc3R5
bGUudmlzaWJpbGl0eSA9IChvbiA9ICFvbikgPyAiIiA6ICJoaWRkZW4iOworICAgICAgfSwgNjUw
KTsKKyAgICB9CisKKyAgICB2YXIgbWF0Y2hpbmcgPSB7IigiOiAiKT4iLCAiKSI6ICIoPCIsICJb
IjogIl0+IiwgIl0iOiAiWzwiLCAieyI6ICJ9PiIsICJ9IjogIns8In07CisgICAgZnVuY3Rpb24g
bWF0Y2hCcmFja2V0cyhhdXRvY2xlYXIpIHsKKyAgICAgIHZhciBoZWFkID0gc2VsLmludmVydGVk
ID8gc2VsLmZyb20gOiBzZWwudG8sIGxpbmUgPSBnZXRMaW5lKGhlYWQubGluZSksIHBvcyA9IGhl
YWQuY2ggLSAxOworICAgICAgdmFyIG1hdGNoID0gKHBvcyA+PSAwICYmIG1hdGNoaW5nW2xpbmUu
dGV4dC5jaGFyQXQocG9zKV0pIHx8IG1hdGNoaW5nW2xpbmUudGV4dC5jaGFyQXQoKytwb3MpXTsK
KyAgICAgIGlmICghbWF0Y2gpIHJldHVybjsKKyAgICAgIHZhciBjaCA9IG1hdGNoLmNoYXJBdCgw
KSwgZm9yd2FyZCA9IG1hdGNoLmNoYXJBdCgxKSA9PSAiPiIsIGQgPSBmb3J3YXJkID8gMSA6IC0x
LCBzdCA9IGxpbmUuc3R5bGVzOworICAgICAgZm9yICh2YXIgb2ZmID0gcG9zICsgMSwgaSA9IDAs
IGUgPSBzdC5sZW5ndGg7IGkgPCBlOyBpKz0yKQorICAgICAgICBpZiAoKG9mZiAtPSBzdFtpXS5s
ZW5ndGgpIDw9IDApIHt2YXIgc3R5bGUgPSBzdFtpKzFdOyBicmVhazt9CisKKyAgICAgIHZhciBz
dGFjayA9IFtsaW5lLnRleHQuY2hhckF0KHBvcyldLCByZSA9IC9bKCl7fVtcXV0vOworICAgICAg
ZnVuY3Rpb24gc2NhbihsaW5lLCBmcm9tLCB0bykgeworICAgICAgICBpZiAoIWxpbmUudGV4dCkg
cmV0dXJuOworICAgICAgICB2YXIgc3QgPSBsaW5lLnN0eWxlcywgcG9zID0gZm9yd2FyZCA/IDAg
OiBsaW5lLnRleHQubGVuZ3RoIC0gMSwgY3VyOworICAgICAgICBmb3IgKHZhciBpID0gZm9yd2Fy
ZCA/IDAgOiBzdC5sZW5ndGggLSAyLCBlID0gZm9yd2FyZCA/IHN0Lmxlbmd0aCA6IC0yOyBpICE9
IGU7IGkgKz0gMipkKSB7CisgICAgICAgICAgdmFyIHRleHQgPSBzdFtpXTsKKyAgICAgICAgICBp
ZiAoc3RbaSsxXSAhPSBzdHlsZSkge3BvcyArPSBkICogdGV4dC5sZW5ndGg7IGNvbnRpbnVlO30K
KyAgICAgICAgICBmb3IgKHZhciBqID0gZm9yd2FyZCA/IDAgOiB0ZXh0Lmxlbmd0aCAtIDEsIHRl
ID0gZm9yd2FyZCA/IHRleHQubGVuZ3RoIDogLTE7IGogIT0gdGU7IGogKz0gZCwgcG9zKz1kKSB7
CisgICAgICAgICAgICBpZiAocG9zID49IGZyb20gJiYgcG9zIDwgdG8gJiYgcmUudGVzdChjdXIg
PSB0ZXh0LmNoYXJBdChqKSkpIHsKKyAgICAgICAgICAgICAgdmFyIG1hdGNoID0gbWF0Y2hpbmdb
Y3VyXTsKKyAgICAgICAgICAgICAgaWYgKG1hdGNoLmNoYXJBdCgxKSA9PSAiPiIgPT0gZm9yd2Fy
ZCkgc3RhY2sucHVzaChjdXIpOworICAgICAgICAgICAgICBlbHNlIGlmIChzdGFjay5wb3AoKSAh
PSBtYXRjaC5jaGFyQXQoMCkpIHJldHVybiB7cG9zOiBwb3MsIG1hdGNoOiBmYWxzZX07CisgICAg
ICAgICAgICAgIGVsc2UgaWYgKCFzdGFjay5sZW5ndGgpIHJldHVybiB7cG9zOiBwb3MsIG1hdGNo
OiB0cnVlfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICAgIGZvciAodmFyIGkgPSBoZWFkLmxpbmUsIGUgPSBmb3J3YXJkID8gTWF0aC5taW4oaSAr
IDEwMCwgZG9jLnNpemUpIDogTWF0aC5tYXgoLTEsIGkgLSAxMDApOyBpICE9IGU7IGkrPWQpIHsK
KyAgICAgICAgdmFyIGxpbmUgPSBnZXRMaW5lKGkpLCBmaXJzdCA9IGkgPT0gaGVhZC5saW5lOwor
ICAgICAgICB2YXIgZm91bmQgPSBzY2FuKGxpbmUsIGZpcnN0ICYmIGZvcndhcmQgPyBwb3MgKyAx
IDogMCwgZmlyc3QgJiYgIWZvcndhcmQgPyBwb3MgOiBsaW5lLnRleHQubGVuZ3RoKTsKKyAgICAg
ICAgaWYgKGZvdW5kKSBicmVhazsKKyAgICAgIH0KKyAgICAgIGlmICghZm91bmQpIGZvdW5kID0g
e3BvczogbnVsbCwgbWF0Y2g6IGZhbHNlfTsKKyAgICAgIHZhciBzdHlsZSA9IGZvdW5kLm1hdGNo
ID8gIkNvZGVNaXJyb3ItbWF0Y2hpbmdicmFja2V0IiA6ICJDb2RlTWlycm9yLW5vbm1hdGNoaW5n
YnJhY2tldCI7CisgICAgICB2YXIgb25lID0gbWFya1RleHQoe2xpbmU6IGhlYWQubGluZSwgY2g6
IHBvc30sIHtsaW5lOiBoZWFkLmxpbmUsIGNoOiBwb3MrMX0sIHN0eWxlKSwKKyAgICAgICAgICB0
d28gPSBmb3VuZC5wb3MgIT0gbnVsbCAmJiBtYXJrVGV4dCh7bGluZTogaSwgY2g6IGZvdW5kLnBv
c30sIHtsaW5lOiBpLCBjaDogZm91bmQucG9zICsgMX0sIHN0eWxlKTsKKyAgICAgIHZhciBjbGVh
ciA9IG9wZXJhdGlvbihmdW5jdGlvbigpe29uZS5jbGVhcigpOyB0d28gJiYgdHdvLmNsZWFyKCk7
fSk7CisgICAgICBpZiAoYXV0b2NsZWFyKSBzZXRUaW1lb3V0KGNsZWFyLCA4MDApOworICAgICAg
ZWxzZSBicmFja2V0SGlnaGxpZ2h0ZWQgPSBjbGVhcjsKKyAgICB9CisKKyAgICAvLyBGaW5kcyB0
aGUgbGluZSB0byBzdGFydCB3aXRoIHdoZW4gc3RhcnRpbmcgYSBwYXJzZS4gVHJpZXMgdG8KKyAg
ICAvLyBmaW5kIGEgbGluZSB3aXRoIGEgc3RhdGVBZnRlciwgc28gdGhhdCBpdCBjYW4gc3RhcnQg
d2l0aCBhCisgICAgLy8gdmFsaWQgc3RhdGUuIElmIHRoYXQgZmFpbHMsIGl0IHJldHVybnMgdGhl
IGxpbmUgd2l0aCB0aGUKKyAgICAvLyBzbWFsbGVzdCBpbmRlbnRhdGlvbiwgd2hpY2ggdGVuZHMg
dG8gbmVlZCB0aGUgbGVhc3QgY29udGV4dCB0bworICAgIC8vIHBhcnNlIGNvcnJlY3RseS4KKyAg
ICBmdW5jdGlvbiBmaW5kU3RhcnRMaW5lKG4pIHsKKyAgICAgIHZhciBtaW5pbmRlbnQsIG1pbmxp
bmU7CisgICAgICBmb3IgKHZhciBzZWFyY2ggPSBuLCBsaW0gPSBuIC0gNDA7IHNlYXJjaCA+IGxp
bTsgLS1zZWFyY2gpIHsKKyAgICAgICAgaWYgKHNlYXJjaCA9PSAwKSByZXR1cm4gMDsKKyAgICAg
ICAgdmFyIGxpbmUgPSBnZXRMaW5lKHNlYXJjaC0xKTsKKyAgICAgICAgaWYgKGxpbmUuc3RhdGVB
ZnRlcikgcmV0dXJuIHNlYXJjaDsKKyAgICAgICAgdmFyIGluZGVudGVkID0gbGluZS5pbmRlbnRh
dGlvbihvcHRpb25zLnRhYlNpemUpOworICAgICAgICBpZiAobWlubGluZSA9PSBudWxsIHx8IG1p
bmluZGVudCA+IGluZGVudGVkKSB7CisgICAgICAgICAgbWlubGluZSA9IHNlYXJjaCAtIDE7Cisg
ICAgICAgICAgbWluaW5kZW50ID0gaW5kZW50ZWQ7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAg
IHJldHVybiBtaW5saW5lOworICAgIH0KKyAgICBmdW5jdGlvbiBnZXRTdGF0ZUJlZm9yZShuKSB7
CisgICAgICB2YXIgc3RhcnQgPSBmaW5kU3RhcnRMaW5lKG4pLCBzdGF0ZSA9IHN0YXJ0ICYmIGdl
dExpbmUoc3RhcnQtMSkuc3RhdGVBZnRlcjsKKyAgICAgIGlmICghc3RhdGUpIHN0YXRlID0gc3Rh
cnRTdGF0ZShtb2RlKTsKKyAgICAgIGVsc2Ugc3RhdGUgPSBjb3B5U3RhdGUobW9kZSwgc3RhdGUp
OworICAgICAgZG9jLml0ZXIoc3RhcnQsIG4sIGZ1bmN0aW9uKGxpbmUpIHsKKyAgICAgICAgbGlu
ZS5oaWdobGlnaHQobW9kZSwgc3RhdGUsIG9wdGlvbnMudGFiU2l6ZSk7CisgICAgICAgIGxpbmUu
c3RhdGVBZnRlciA9IGNvcHlTdGF0ZShtb2RlLCBzdGF0ZSk7CisgICAgICB9KTsKKyAgICAgIGlm
IChzdGFydCA8IG4pIGNoYW5nZXMucHVzaCh7ZnJvbTogc3RhcnQsIHRvOiBufSk7CisgICAgICBp
ZiAobiA8IGRvYy5zaXplICYmICFnZXRMaW5lKG4pLnN0YXRlQWZ0ZXIpIHdvcmsucHVzaChuKTsK
KyAgICAgIHJldHVybiBzdGF0ZTsKKyAgICB9CisgICAgZnVuY3Rpb24gaGlnaGxpZ2h0TGluZXMo
c3RhcnQsIGVuZCkgeworICAgICAgdmFyIHN0YXRlID0gZ2V0U3RhdGVCZWZvcmUoc3RhcnQpOwor
ICAgICAgZG9jLml0ZXIoc3RhcnQsIGVuZCwgZnVuY3Rpb24obGluZSkgeworICAgICAgICBsaW5l
LmhpZ2hsaWdodChtb2RlLCBzdGF0ZSwgb3B0aW9ucy50YWJTaXplKTsKKyAgICAgICAgbGluZS5z
dGF0ZUFmdGVyID0gY29weVN0YXRlKG1vZGUsIHN0YXRlKTsKKyAgICAgIH0pOworICAgIH0KKyAg
ICBmdW5jdGlvbiBoaWdobGlnaHRXb3JrZXIoKSB7CisgICAgICB2YXIgZW5kID0gK25ldyBEYXRl
ICsgb3B0aW9ucy53b3JrVGltZTsKKyAgICAgIHZhciBmb3VuZFdvcmsgPSB3b3JrLmxlbmd0aDsK
KyAgICAgIHdoaWxlICh3b3JrLmxlbmd0aCkgeworICAgICAgICBpZiAoIWdldExpbmUoc2hvd2lu
Z0Zyb20pLnN0YXRlQWZ0ZXIpIHZhciB0YXNrID0gc2hvd2luZ0Zyb207CisgICAgICAgIGVsc2Ug
dmFyIHRhc2sgPSB3b3JrLnBvcCgpOworICAgICAgICBpZiAodGFzayA+PSBkb2Muc2l6ZSkgY29u
dGludWU7CisgICAgICAgIHZhciBzdGFydCA9IGZpbmRTdGFydExpbmUodGFzayksIHN0YXRlID0g
c3RhcnQgJiYgZ2V0TGluZShzdGFydC0xKS5zdGF0ZUFmdGVyOworICAgICAgICBpZiAoc3RhdGUp
IHN0YXRlID0gY29weVN0YXRlKG1vZGUsIHN0YXRlKTsKKyAgICAgICAgZWxzZSBzdGF0ZSA9IHN0
YXJ0U3RhdGUobW9kZSk7CisKKyAgICAgICAgdmFyIHVuY2hhbmdlZCA9IDAsIGNvbXBhcmUgPSBt
b2RlLmNvbXBhcmVTdGF0ZXMsIHJlYWxDaGFuZ2UgPSBmYWxzZSwKKyAgICAgICAgICAgIGkgPSBz
dGFydCwgYmFpbCA9IGZhbHNlOworICAgICAgICBkb2MuaXRlcihpLCBkb2Muc2l6ZSwgZnVuY3Rp
b24obGluZSkgeworICAgICAgICAgIHZhciBoYWRTdGF0ZSA9IGxpbmUuc3RhdGVBZnRlcjsKKyAg
ICAgICAgICBpZiAoK25ldyBEYXRlID4gZW5kKSB7CisgICAgICAgICAgICB3b3JrLnB1c2goaSk7
CisgICAgICAgICAgICBzdGFydFdvcmtlcihvcHRpb25zLndvcmtEZWxheSk7CisgICAgICAgICAg
ICBpZiAocmVhbENoYW5nZSkgY2hhbmdlcy5wdXNoKHtmcm9tOiB0YXNrLCB0bzogaSArIDF9KTsK
KyAgICAgICAgICAgIHJldHVybiAoYmFpbCA9IHRydWUpOworICAgICAgICAgIH0KKyAgICAgICAg
ICB2YXIgY2hhbmdlZCA9IGxpbmUuaGlnaGxpZ2h0KG1vZGUsIHN0YXRlLCBvcHRpb25zLnRhYlNp
emUpOworICAgICAgICAgIGlmIChjaGFuZ2VkKSByZWFsQ2hhbmdlID0gdHJ1ZTsKKyAgICAgICAg
ICBsaW5lLnN0YXRlQWZ0ZXIgPSBjb3B5U3RhdGUobW9kZSwgc3RhdGUpOworICAgICAgICAgIHZh
ciBkb25lID0gbnVsbDsKKyAgICAgICAgICBpZiAoY29tcGFyZSkgeworICAgICAgICAgICAgdmFy
IHNhbWUgPSBoYWRTdGF0ZSAmJiBjb21wYXJlKGhhZFN0YXRlLCBzdGF0ZSk7CisgICAgICAgICAg
ICBpZiAoc2FtZSAhPSBQYXNzKSBkb25lID0gISFzYW1lOworICAgICAgICAgIH0KKyAgICAgICAg
ICBpZiAoZG9uZSA9PSBudWxsKSB7CisgICAgICAgICAgICBpZiAoY2hhbmdlZCAhPT0gZmFsc2Ug
fHwgIWhhZFN0YXRlKSB1bmNoYW5nZWQgPSAwOworICAgICAgICAgICAgZWxzZSBpZiAoKyt1bmNo
YW5nZWQgPiAzICYmICghbW9kZS5pbmRlbnQgfHwgbW9kZS5pbmRlbnQoaGFkU3RhdGUsICIiKSA9
PSBtb2RlLmluZGVudChzdGF0ZSwgIiIpKSkKKyAgICAgICAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgICAgICAgfQorICAgICAgICAgIGlmIChkb25lKSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAr
K2k7CisgICAgICAgIH0pOworICAgICAgICBpZiAoYmFpbCkgcmV0dXJuOworICAgICAgICBpZiAo
cmVhbENoYW5nZSkgY2hhbmdlcy5wdXNoKHtmcm9tOiB0YXNrLCB0bzogaSArIDF9KTsKKyAgICAg
IH0KKyAgICAgIGlmIChmb3VuZFdvcmsgJiYgb3B0aW9ucy5vbkhpZ2hsaWdodENvbXBsZXRlKQor
ICAgICAgICBvcHRpb25zLm9uSGlnaGxpZ2h0Q29tcGxldGUoaW5zdGFuY2UpOworICAgIH0KKyAg
ICBmdW5jdGlvbiBzdGFydFdvcmtlcih0aW1lKSB7CisgICAgICBpZiAoIXdvcmsubGVuZ3RoKSBy
ZXR1cm47CisgICAgICBoaWdobGlnaHQuc2V0KHRpbWUsIG9wZXJhdGlvbihoaWdobGlnaHRXb3Jr
ZXIpKTsKKyAgICB9CisKKyAgICAvLyBPcGVyYXRpb25zIGFyZSB1c2VkIHRvIHdyYXAgY2hhbmdl
cyBpbiBzdWNoIGEgd2F5IHRoYXQgZWFjaAorICAgIC8vIGNoYW5nZSB3b24ndCBoYXZlIHRvIHVw
ZGF0ZSB0aGUgY3Vyc29yIGFuZCBkaXNwbGF5ICh3aGljaCB3b3VsZAorICAgIC8vIGJlIGF3a3dh
cmQsIHNsb3csIGFuZCBlcnJvci1wcm9uZSksIGJ1dCBpbnN0ZWFkIHVwZGF0ZXMgYXJlCisgICAg
Ly8gYmF0Y2hlZCBhbmQgdGhlbiBhbGwgY29tYmluZWQgYW5kIGV4ZWN1dGVkIGF0IG9uY2UuCisg
ICAgZnVuY3Rpb24gc3RhcnRPcGVyYXRpb24oKSB7CisgICAgICB1cGRhdGVJbnB1dCA9IHVzZXJT
ZWxDaGFuZ2UgPSB0ZXh0Q2hhbmdlZCA9IG51bGw7CisgICAgICBjaGFuZ2VzID0gW107IHNlbGVj
dGlvbkNoYW5nZWQgPSBmYWxzZTsgY2FsbGJhY2tzID0gW107CisgICAgfQorICAgIGZ1bmN0aW9u
IGVuZE9wZXJhdGlvbigpIHsKKyAgICAgIGlmICh1cGRhdGVNYXhMaW5lKSBjb21wdXRlTWF4TGVu
Z3RoKCk7CisgICAgICBpZiAobWF4TGluZUNoYW5nZWQgJiYgIW9wdGlvbnMubGluZVdyYXBwaW5n
KSB7CisgICAgICAgIHZhciBjdXJzb3JXaWR0aCA9IHdpZHRoRm9yY2VyLm9mZnNldFdpZHRoLCBs
ZWZ0ID0gbWVhc3VyZUxpbmUobWF4TGluZSwgbWF4TGluZS50ZXh0Lmxlbmd0aCkubGVmdDsKKyAg
ICAgICAgd2lkdGhGb3JjZXIuc3R5bGUubGVmdCA9IGxlZnQgKyAicHgiOworICAgICAgICBsaW5l
U3BhY2Uuc3R5bGUubWluV2lkdGggPSAobGVmdCArIGN1cnNvcldpZHRoKSArICJweCI7CisgICAg
ICAgIG1heExpbmVDaGFuZ2VkID0gZmFsc2U7CisgICAgICB9CisgICAgICB2YXIgbmV3U2Nyb2xs
UG9zLCB1cGRhdGVkOworICAgICAgaWYgKHNlbGVjdGlvbkNoYW5nZWQpIHsKKyAgICAgICAgdmFy
IGNvb3JkcyA9IGNhbGN1bGF0ZUN1cnNvckNvb3JkcygpOworICAgICAgICBuZXdTY3JvbGxQb3Mg
PSBjYWxjdWxhdGVTY3JvbGxQb3MoY29vcmRzLngsIGNvb3Jkcy55LCBjb29yZHMueCwgY29vcmRz
LnlCb3QpOworICAgICAgfQorICAgICAgaWYgKGNoYW5nZXMubGVuZ3RoIHx8IG5ld1Njcm9sbFBv
cyAmJiBuZXdTY3JvbGxQb3Muc2Nyb2xsVG9wICE9IG51bGwpCisgICAgICAgIHVwZGF0ZWQgPSB1
cGRhdGVEaXNwbGF5KGNoYW5nZXMsIHRydWUsIG5ld1Njcm9sbFBvcyAmJiBuZXdTY3JvbGxQb3Mu
c2Nyb2xsVG9wKTsKKyAgICAgIGlmICghdXBkYXRlZCkgeworICAgICAgICBpZiAoc2VsZWN0aW9u
Q2hhbmdlZCkgdXBkYXRlU2VsZWN0aW9uKCk7CisgICAgICAgIGlmIChndXR0ZXJEaXJ0eSkgdXBk
YXRlR3V0dGVyKCk7CisgICAgICB9CisgICAgICBpZiAobmV3U2Nyb2xsUG9zKSBzY3JvbGxDdXJz
b3JJbnRvVmlldygpOworICAgICAgaWYgKHNlbGVjdGlvbkNoYW5nZWQpIHtzY3JvbGxFZGl0b3JJ
bnRvVmlldygpOyByZXN0YXJ0QmxpbmsoKTt9CisKKyAgICAgIGlmIChmb2N1c2VkICYmICFsZWF2
ZUlucHV0QWxvbmUgJiYKKyAgICAgICAgICAodXBkYXRlSW5wdXQgPT09IHRydWUgfHwgKHVwZGF0
ZUlucHV0ICE9PSBmYWxzZSAmJiBzZWxlY3Rpb25DaGFuZ2VkKSkpCisgICAgICAgIHJlc2V0SW5w
dXQodXNlclNlbENoYW5nZSk7CisKKyAgICAgIGlmIChzZWxlY3Rpb25DaGFuZ2VkICYmIG9wdGlv
bnMubWF0Y2hCcmFja2V0cykKKyAgICAgICAgc2V0VGltZW91dChvcGVyYXRpb24oZnVuY3Rpb24o
KSB7CisgICAgICAgICAgaWYgKGJyYWNrZXRIaWdobGlnaHRlZCkge2JyYWNrZXRIaWdobGlnaHRl
ZCgpOyBicmFja2V0SGlnaGxpZ2h0ZWQgPSBudWxsO30KKyAgICAgICAgICBpZiAocG9zRXEoc2Vs
LmZyb20sIHNlbC50bykpIG1hdGNoQnJhY2tldHMoZmFsc2UpOworICAgICAgICB9KSwgMjApOwor
ICAgICAgdmFyIHNjID0gc2VsZWN0aW9uQ2hhbmdlZCwgY2JzID0gY2FsbGJhY2tzOyAvLyB0aGVz
ZSBjYW4gYmUgcmVzZXQgYnkgY2FsbGJhY2tzCisgICAgICBpZiAodGV4dENoYW5nZWQgJiYgb3B0
aW9ucy5vbkNoYW5nZSAmJiBpbnN0YW5jZSkKKyAgICAgICAgb3B0aW9ucy5vbkNoYW5nZShpbnN0
YW5jZSwgdGV4dENoYW5nZWQpOworICAgICAgaWYgKHNjICYmIG9wdGlvbnMub25DdXJzb3JBY3Rp
dml0eSkKKyAgICAgICAgb3B0aW9ucy5vbkN1cnNvckFjdGl2aXR5KGluc3RhbmNlKTsKKyAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgY2JzLmxlbmd0aDsgKytpKSBjYnNbaV0oaW5zdGFuY2UpOwor
ICAgICAgaWYgKHVwZGF0ZWQgJiYgb3B0aW9ucy5vblVwZGF0ZSkgb3B0aW9ucy5vblVwZGF0ZShp
bnN0YW5jZSk7CisgICAgfQorICAgIHZhciBuZXN0ZWRPcGVyYXRpb24gPSAwOworICAgIGZ1bmN0
aW9uIG9wZXJhdGlvbihmKSB7CisgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIGlm
ICghbmVzdGVkT3BlcmF0aW9uKyspIHN0YXJ0T3BlcmF0aW9uKCk7CisgICAgICAgIHRyeSB7dmFy
IHJlc3VsdCA9IGYuYXBwbHkodGhpcywgYXJndW1lbnRzKTt9CisgICAgICAgIGZpbmFsbHkge2lm
ICghLS1uZXN0ZWRPcGVyYXRpb24pIGVuZE9wZXJhdGlvbigpO30KKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgIH07CisgICAgfQorCisgICAgZnVuY3Rpb24gY29tcG91bmRDaGFuZ2UoZikg
eworICAgICAgaGlzdG9yeS5zdGFydENvbXBvdW5kKCk7CisgICAgICB0cnkgeyByZXR1cm4gZigp
OyB9IGZpbmFsbHkgeyBoaXN0b3J5LmVuZENvbXBvdW5kKCk7IH0KKyAgICB9CisKKyAgICBmb3Ig
KHZhciBleHQgaW4gZXh0ZW5zaW9ucykKKyAgICAgIGlmIChleHRlbnNpb25zLnByb3BlcnR5SXNF
bnVtZXJhYmxlKGV4dCkgJiYKKyAgICAgICAgICAhaW5zdGFuY2UucHJvcGVydHlJc0VudW1lcmFi
bGUoZXh0KSkKKyAgICAgICAgaW5zdGFuY2VbZXh0XSA9IGV4dGVuc2lvbnNbZXh0XTsKKyAgICBy
ZXR1cm4gaW5zdGFuY2U7CisgIH0gLy8gKGVuZCBvZiBmdW5jdGlvbiBDb2RlTWlycm9yKQorCisg
IC8vIFRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KKyAgQ29kZU1pcnJvci5kZWZh
dWx0cyA9IHsKKyAgICB2YWx1ZTogIiIsCisgICAgbW9kZTogbnVsbCwKKyAgICB0aGVtZTogImRl
ZmF1bHQiLAorICAgIGluZGVudFVuaXQ6IDIsCisgICAgaW5kZW50V2l0aFRhYnM6IGZhbHNlLAor
ICAgIHNtYXJ0SW5kZW50OiB0cnVlLAorICAgIHRhYlNpemU6IDQsCisgICAga2V5TWFwOiAiZGVm
YXVsdCIsCisgICAgZXh0cmFLZXlzOiBudWxsLAorICAgIGVsZWN0cmljQ2hhcnM6IHRydWUsCisg
ICAgYXV0b0NsZWFyRW1wdHlMaW5lczogZmFsc2UsCisgICAgb25LZXlFdmVudDogbnVsbCwKKyAg
ICBvbkRyYWdFdmVudDogbnVsbCwKKyAgICBsaW5lV3JhcHBpbmc6IGZhbHNlLAorICAgIGxpbmVO
dW1iZXJzOiBmYWxzZSwKKyAgICBndXR0ZXI6IGZhbHNlLAorICAgIGZpeGVkR3V0dGVyOiBmYWxz
ZSwKKyAgICBmaXJzdExpbmVOdW1iZXI6IDEsCisgICAgcmVhZE9ubHk6IGZhbHNlLAorICAgIGRy
YWdEcm9wOiB0cnVlLAorICAgIG9uQ2hhbmdlOiBudWxsLAorICAgIG9uQ3Vyc29yQWN0aXZpdHk6
IG51bGwsCisgICAgb25HdXR0ZXJDbGljazogbnVsbCwKKyAgICBvbkhpZ2hsaWdodENvbXBsZXRl
OiBudWxsLAorICAgIG9uVXBkYXRlOiBudWxsLAorICAgIG9uRm9jdXM6IG51bGwsIG9uQmx1cjog
bnVsbCwgb25TY3JvbGw6IG51bGwsCisgICAgbWF0Y2hCcmFja2V0czogZmFsc2UsCisgICAgd29y
a1RpbWU6IDEwMCwKKyAgICB3b3JrRGVsYXk6IDIwMCwKKyAgICBwb2xsSW50ZXJ2YWw6IDEwMCwK
KyAgICB1bmRvRGVwdGg6IDQwLAorICAgIHRhYmluZGV4OiBudWxsLAorICAgIGF1dG9mb2N1czog
bnVsbCwKKyAgICBsaW5lTnVtYmVyRm9ybWF0dGVyOiBmdW5jdGlvbihpbnRlZ2VyKSB7IHJldHVy
biBpbnRlZ2VyOyB9CisgIH07CisKKyAgdmFyIGlvcyA9IC9BcHBsZVdlYktpdC8udGVzdChuYXZp
Z2F0b3IudXNlckFnZW50KSAmJiAvTW9iaWxlXC9cdysvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2Vu
dCk7CisgIHZhciBtYWMgPSBpb3MgfHwgL01hYy8udGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pOwor
ICB2YXIgd2luID0gL1dpbi8udGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pOworCisgIC8vIEtub3du
IG1vZGVzLCBieSBuYW1lIGFuZCBieSBNSU1FCisgIHZhciBtb2RlcyA9IENvZGVNaXJyb3IubW9k
ZXMgPSB7fSwgbWltZU1vZGVzID0gQ29kZU1pcnJvci5taW1lTW9kZXMgPSB7fTsKKyAgQ29kZU1p
cnJvci5kZWZpbmVNb2RlID0gZnVuY3Rpb24obmFtZSwgbW9kZSkgeworICAgIGlmICghQ29kZU1p
cnJvci5kZWZhdWx0cy5tb2RlICYmIG5hbWUgIT0gIm51bGwiKSBDb2RlTWlycm9yLmRlZmF1bHRz
Lm1vZGUgPSBuYW1lOworICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMikgeworICAgICAgbW9k
ZS5kZXBlbmRlbmNpZXMgPSBbXTsKKyAgICAgIGZvciAodmFyIGkgPSAyOyBpIDwgYXJndW1lbnRz
Lmxlbmd0aDsgKytpKSBtb2RlLmRlcGVuZGVuY2llcy5wdXNoKGFyZ3VtZW50c1tpXSk7CisgICAg
fQorICAgIG1vZGVzW25hbWVdID0gbW9kZTsKKyAgfTsKKyAgQ29kZU1pcnJvci5kZWZpbmVNSU1F
ID0gZnVuY3Rpb24obWltZSwgc3BlYykgeworICAgIG1pbWVNb2Rlc1ttaW1lXSA9IHNwZWM7Cisg
IH07CisgIENvZGVNaXJyb3IucmVzb2x2ZU1vZGUgPSBmdW5jdGlvbihzcGVjKSB7CisgICAgaWYg
KHR5cGVvZiBzcGVjID09ICJzdHJpbmciICYmIG1pbWVNb2Rlcy5oYXNPd25Qcm9wZXJ0eShzcGVj
KSkKKyAgICAgIHNwZWMgPSBtaW1lTW9kZXNbc3BlY107CisgICAgZWxzZSBpZiAodHlwZW9mIHNw
ZWMgPT0gInN0cmluZyIgJiYgL15bXHdcLV0rXC9bXHdcLV0rXCt4bWwkLy50ZXN0KHNwZWMpKQor
ICAgICAgcmV0dXJuIENvZGVNaXJyb3IucmVzb2x2ZU1vZGUoImFwcGxpY2F0aW9uL3htbCIpOwor
ICAgIGlmICh0eXBlb2Ygc3BlYyA9PSAic3RyaW5nIikgcmV0dXJuIHtuYW1lOiBzcGVjfTsKKyAg
ICBlbHNlIHJldHVybiBzcGVjIHx8IHtuYW1lOiAibnVsbCJ9OworICB9OworICBDb2RlTWlycm9y
LmdldE1vZGUgPSBmdW5jdGlvbihvcHRpb25zLCBzcGVjKSB7CisgICAgdmFyIHNwZWMgPSBDb2Rl
TWlycm9yLnJlc29sdmVNb2RlKHNwZWMpOworICAgIHZhciBtZmFjdG9yeSA9IG1vZGVzW3NwZWMu
bmFtZV07CisgICAgaWYgKCFtZmFjdG9yeSkgcmV0dXJuIENvZGVNaXJyb3IuZ2V0TW9kZShvcHRp
b25zLCAidGV4dC9wbGFpbiIpOworICAgIHJldHVybiBtZmFjdG9yeShvcHRpb25zLCBzcGVjKTsK
KyAgfTsKKyAgQ29kZU1pcnJvci5saXN0TW9kZXMgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgbGlz
dCA9IFtdOworICAgIGZvciAodmFyIG0gaW4gbW9kZXMpCisgICAgICBpZiAobW9kZXMucHJvcGVy
dHlJc0VudW1lcmFibGUobSkpIGxpc3QucHVzaChtKTsKKyAgICByZXR1cm4gbGlzdDsKKyAgfTsK
KyAgQ29kZU1pcnJvci5saXN0TUlNRXMgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgbGlzdCA9IFtd
OworICAgIGZvciAodmFyIG0gaW4gbWltZU1vZGVzKQorICAgICAgaWYgKG1pbWVNb2Rlcy5wcm9w
ZXJ0eUlzRW51bWVyYWJsZShtKSkgbGlzdC5wdXNoKHttaW1lOiBtLCBtb2RlOiBtaW1lTW9kZXNb
bV19KTsKKyAgICByZXR1cm4gbGlzdDsKKyAgfTsKKworICB2YXIgZXh0ZW5zaW9ucyA9IENvZGVN
aXJyb3IuZXh0ZW5zaW9ucyA9IHt9OworICBDb2RlTWlycm9yLmRlZmluZUV4dGVuc2lvbiA9IGZ1
bmN0aW9uKG5hbWUsIGZ1bmMpIHsKKyAgICBleHRlbnNpb25zW25hbWVdID0gZnVuYzsKKyAgfTsK
KworICB2YXIgY29tbWFuZHMgPSBDb2RlTWlycm9yLmNvbW1hbmRzID0geworICAgIHNlbGVjdEFs
bDogZnVuY3Rpb24oY20pIHtjbS5zZXRTZWxlY3Rpb24oe2xpbmU6IDAsIGNoOiAwfSwge2xpbmU6
IGNtLmxpbmVDb3VudCgpIC0gMX0pO30sCisgICAga2lsbExpbmU6IGZ1bmN0aW9uKGNtKSB7Cisg
ICAgICB2YXIgZnJvbSA9IGNtLmdldEN1cnNvcih0cnVlKSwgdG8gPSBjbS5nZXRDdXJzb3IoZmFs
c2UpLCBzZWwgPSAhcG9zRXEoZnJvbSwgdG8pOworICAgICAgaWYgKCFzZWwgJiYgY20uZ2V0TGlu
ZShmcm9tLmxpbmUpLmxlbmd0aCA9PSBmcm9tLmNoKSBjbS5yZXBsYWNlUmFuZ2UoIiIsIGZyb20s
IHtsaW5lOiBmcm9tLmxpbmUgKyAxLCBjaDogMH0pOworICAgICAgZWxzZSBjbS5yZXBsYWNlUmFu
Z2UoIiIsIGZyb20sIHNlbCA/IHRvIDoge2xpbmU6IGZyb20ubGluZX0pOworICAgIH0sCisgICAg
ZGVsZXRlTGluZTogZnVuY3Rpb24oY20pIHt2YXIgbCA9IGNtLmdldEN1cnNvcigpLmxpbmU7IGNt
LnJlcGxhY2VSYW5nZSgiIiwge2xpbmU6IGwsIGNoOiAwfSwge2xpbmU6IGx9KTt9LAorICAgIHVu
ZG86IGZ1bmN0aW9uKGNtKSB7Y20udW5kbygpO30sCisgICAgcmVkbzogZnVuY3Rpb24oY20pIHtj
bS5yZWRvKCk7fSwKKyAgICBnb0RvY1N0YXJ0OiBmdW5jdGlvbihjbSkge2NtLnNldEN1cnNvcigw
LCAwLCB0cnVlKTt9LAorICAgIGdvRG9jRW5kOiBmdW5jdGlvbihjbSkge2NtLnNldFNlbGVjdGlv
bih7bGluZTogY20ubGluZUNvdW50KCkgLSAxfSwgbnVsbCwgdHJ1ZSk7fSwKKyAgICBnb0xpbmVT
dGFydDogZnVuY3Rpb24oY20pIHtjbS5zZXRDdXJzb3IoY20uZ2V0Q3Vyc29yKCkubGluZSwgMCwg
dHJ1ZSk7fSwKKyAgICBnb0xpbmVTdGFydFNtYXJ0OiBmdW5jdGlvbihjbSkgeworICAgICAgdmFy
IGN1ciA9IGNtLmdldEN1cnNvcigpOworICAgICAgdmFyIHRleHQgPSBjbS5nZXRMaW5lKGN1ci5s
aW5lKSwgZmlyc3ROb25XUyA9IE1hdGgubWF4KDAsIHRleHQuc2VhcmNoKC9cUy8pKTsKKyAgICAg
IGNtLnNldEN1cnNvcihjdXIubGluZSwgY3VyLmNoIDw9IGZpcnN0Tm9uV1MgJiYgY3VyLmNoID8g
MCA6IGZpcnN0Tm9uV1MsIHRydWUpOworICAgIH0sCisgICAgZ29MaW5lRW5kOiBmdW5jdGlvbihj
bSkge2NtLnNldFNlbGVjdGlvbih7bGluZTogY20uZ2V0Q3Vyc29yKCkubGluZX0sIG51bGwsIHRy
dWUpO30sCisgICAgZ29MaW5lVXA6IGZ1bmN0aW9uKGNtKSB7Y20ubW92ZVYoLTEsICJsaW5lIik7
fSwKKyAgICBnb0xpbmVEb3duOiBmdW5jdGlvbihjbSkge2NtLm1vdmVWKDEsICJsaW5lIik7fSwK
KyAgICBnb1BhZ2VVcDogZnVuY3Rpb24oY20pIHtjbS5tb3ZlVigtMSwgInBhZ2UiKTt9LAorICAg
IGdvUGFnZURvd246IGZ1bmN0aW9uKGNtKSB7Y20ubW92ZVYoMSwgInBhZ2UiKTt9LAorICAgIGdv
Q2hhckxlZnQ6IGZ1bmN0aW9uKGNtKSB7Y20ubW92ZUgoLTEsICJjaGFyIik7fSwKKyAgICBnb0No
YXJSaWdodDogZnVuY3Rpb24oY20pIHtjbS5tb3ZlSCgxLCAiY2hhciIpO30sCisgICAgZ29Db2x1
bW5MZWZ0OiBmdW5jdGlvbihjbSkge2NtLm1vdmVIKC0xLCAiY29sdW1uIik7fSwKKyAgICBnb0Nv
bHVtblJpZ2h0OiBmdW5jdGlvbihjbSkge2NtLm1vdmVIKDEsICJjb2x1bW4iKTt9LAorICAgIGdv
V29yZExlZnQ6IGZ1bmN0aW9uKGNtKSB7Y20ubW92ZUgoLTEsICJ3b3JkIik7fSwKKyAgICBnb1dv
cmRSaWdodDogZnVuY3Rpb24oY20pIHtjbS5tb3ZlSCgxLCAid29yZCIpO30sCisgICAgZGVsQ2hh
ckxlZnQ6IGZ1bmN0aW9uKGNtKSB7Y20uZGVsZXRlSCgtMSwgImNoYXIiKTt9LAorICAgIGRlbENo
YXJSaWdodDogZnVuY3Rpb24oY20pIHtjbS5kZWxldGVIKDEsICJjaGFyIik7fSwKKyAgICBkZWxX
b3JkTGVmdDogZnVuY3Rpb24oY20pIHtjbS5kZWxldGVIKC0xLCAid29yZCIpO30sCisgICAgZGVs
V29yZFJpZ2h0OiBmdW5jdGlvbihjbSkge2NtLmRlbGV0ZUgoMSwgIndvcmQiKTt9LAorICAgIGlu
ZGVudEF1dG86IGZ1bmN0aW9uKGNtKSB7Y20uaW5kZW50U2VsZWN0aW9uKCJzbWFydCIpO30sCisg
ICAgaW5kZW50TW9yZTogZnVuY3Rpb24oY20pIHtjbS5pbmRlbnRTZWxlY3Rpb24oImFkZCIpO30s
CisgICAgaW5kZW50TGVzczogZnVuY3Rpb24oY20pIHtjbS5pbmRlbnRTZWxlY3Rpb24oInN1YnRy
YWN0Iik7fSwKKyAgICBpbnNlcnRUYWI6IGZ1bmN0aW9uKGNtKSB7Y20ucmVwbGFjZVNlbGVjdGlv
bigiXHQiLCAiZW5kIik7fSwKKyAgICBkZWZhdWx0VGFiOiBmdW5jdGlvbihjbSkgeworICAgICAg
aWYgKGNtLnNvbWV0aGluZ1NlbGVjdGVkKCkpIGNtLmluZGVudFNlbGVjdGlvbigiYWRkIik7Cisg
ICAgICBlbHNlIGNtLnJlcGxhY2VTZWxlY3Rpb24oIlx0IiwgImVuZCIpOworICAgIH0sCisgICAg
dHJhbnNwb3NlQ2hhcnM6IGZ1bmN0aW9uKGNtKSB7CisgICAgICB2YXIgY3VyID0gY20uZ2V0Q3Vy
c29yKCksIGxpbmUgPSBjbS5nZXRMaW5lKGN1ci5saW5lKTsKKyAgICAgIGlmIChjdXIuY2ggPiAw
ICYmIGN1ci5jaCA8IGxpbmUubGVuZ3RoIC0gMSkKKyAgICAgICAgY20ucmVwbGFjZVJhbmdlKGxp
bmUuY2hhckF0KGN1ci5jaCkgKyBsaW5lLmNoYXJBdChjdXIuY2ggLSAxKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHtsaW5lOiBjdXIubGluZSwgY2g6IGN1ci5jaCAtIDF9LCB7bGluZTogY3Vy
LmxpbmUsIGNoOiBjdXIuY2ggKyAxfSk7CisgICAgfSwKKyAgICBuZXdsaW5lQW5kSW5kZW50OiBm
dW5jdGlvbihjbSkgeworICAgICAgY20ucmVwbGFjZVNlbGVjdGlvbigiXG4iLCAiZW5kIik7Cisg
ICAgICBjbS5pbmRlbnRMaW5lKGNtLmdldEN1cnNvcigpLmxpbmUpOworICAgIH0sCisgICAgdG9n
Z2xlT3ZlcndyaXRlOiBmdW5jdGlvbihjbSkge2NtLnRvZ2dsZU92ZXJ3cml0ZSgpO30KKyAgfTsK
KworICB2YXIga2V5TWFwID0gQ29kZU1pcnJvci5rZXlNYXAgPSB7fTsKKyAga2V5TWFwLmJhc2lj
ID0geworICAgICJMZWZ0IjogImdvQ2hhckxlZnQiLCAiUmlnaHQiOiAiZ29DaGFyUmlnaHQiLCAi
VXAiOiAiZ29MaW5lVXAiLCAiRG93biI6ICJnb0xpbmVEb3duIiwKKyAgICAiRW5kIjogImdvTGlu
ZUVuZCIsICJIb21lIjogImdvTGluZVN0YXJ0U21hcnQiLCAiUGFnZVVwIjogImdvUGFnZVVwIiwg
IlBhZ2VEb3duIjogImdvUGFnZURvd24iLAorICAgICJEZWxldGUiOiAiZGVsQ2hhclJpZ2h0Iiwg
IkJhY2tzcGFjZSI6ICJkZWxDaGFyTGVmdCIsICJUYWIiOiAiZGVmYXVsdFRhYiIsICJTaGlmdC1U
YWIiOiAiaW5kZW50QXV0byIsCisgICAgIkVudGVyIjogIm5ld2xpbmVBbmRJbmRlbnQiLCAiSW5z
ZXJ0IjogInRvZ2dsZU92ZXJ3cml0ZSIKKyAgfTsKKyAgLy8gTm90ZSB0aGF0IHRoZSBzYXZlIGFu
ZCBmaW5kLXJlbGF0ZWQgY29tbWFuZHMgYXJlbid0IGRlZmluZWQgYnkKKyAgLy8gZGVmYXVsdC4g
VW5rbm93biBjb21tYW5kcyBhcmUgc2ltcGx5IGlnbm9yZWQuCisgIGtleU1hcC5wY0RlZmF1bHQg
PSB7CisgICAgIkN0cmwtQSI6ICJzZWxlY3RBbGwiLCAiQ3RybC1EIjogImRlbGV0ZUxpbmUiLCAi
Q3RybC1aIjogInVuZG8iLCAiU2hpZnQtQ3RybC1aIjogInJlZG8iLCAiQ3RybC1ZIjogInJlZG8i
LAorICAgICJDdHJsLUhvbWUiOiAiZ29Eb2NTdGFydCIsICJBbHQtVXAiOiAiZ29Eb2NTdGFydCIs
ICJDdHJsLUVuZCI6ICJnb0RvY0VuZCIsICJDdHJsLURvd24iOiAiZ29Eb2NFbmQiLAorICAgICJD
dHJsLUxlZnQiOiAiZ29Xb3JkTGVmdCIsICJDdHJsLVJpZ2h0IjogImdvV29yZFJpZ2h0IiwgIkFs
dC1MZWZ0IjogImdvTGluZVN0YXJ0IiwgIkFsdC1SaWdodCI6ICJnb0xpbmVFbmQiLAorICAgICJD
dHJsLUJhY2tzcGFjZSI6ICJkZWxXb3JkTGVmdCIsICJDdHJsLURlbGV0ZSI6ICJkZWxXb3JkUmln
aHQiLCAiQ3RybC1TIjogInNhdmUiLCAiQ3RybC1GIjogImZpbmQiLAorICAgICJDdHJsLUciOiAi
ZmluZE5leHQiLCAiU2hpZnQtQ3RybC1HIjogImZpbmRQcmV2IiwgIlNoaWZ0LUN0cmwtRiI6ICJy
ZXBsYWNlIiwgIlNoaWZ0LUN0cmwtUiI6ICJyZXBsYWNlQWxsIiwKKyAgICAiQ3RybC1bIjogImlu
ZGVudExlc3MiLCAiQ3RybC1dIjogImluZGVudE1vcmUiLAorICAgIGZhbGx0aHJvdWdoOiAiYmFz
aWMiCisgIH07CisgIGtleU1hcC5tYWNEZWZhdWx0ID0geworICAgICJDbWQtQSI6ICJzZWxlY3RB
bGwiLCAiQ21kLUQiOiAiZGVsZXRlTGluZSIsICJDbWQtWiI6ICJ1bmRvIiwgIlNoaWZ0LUNtZC1a
IjogInJlZG8iLCAiQ21kLVkiOiAicmVkbyIsCisgICAgIkNtZC1VcCI6ICJnb0RvY1N0YXJ0Iiwg
IkNtZC1FbmQiOiAiZ29Eb2NFbmQiLCAiQ21kLURvd24iOiAiZ29Eb2NFbmQiLCAiQWx0LUxlZnQi
OiAiZ29Xb3JkTGVmdCIsCisgICAgIkFsdC1SaWdodCI6ICJnb1dvcmRSaWdodCIsICJDbWQtTGVm
dCI6ICJnb0xpbmVTdGFydCIsICJDbWQtUmlnaHQiOiAiZ29MaW5lRW5kIiwgIkFsdC1CYWNrc3Bh
Y2UiOiAiZGVsV29yZExlZnQiLAorICAgICJDdHJsLUFsdC1CYWNrc3BhY2UiOiAiZGVsV29yZFJp
Z2h0IiwgIkFsdC1EZWxldGUiOiAiZGVsV29yZFJpZ2h0IiwgIkNtZC1TIjogInNhdmUiLCAiQ21k
LUYiOiAiZmluZCIsCisgICAgIkNtZC1HIjogImZpbmROZXh0IiwgIlNoaWZ0LUNtZC1HIjogImZp
bmRQcmV2IiwgIkNtZC1BbHQtRiI6ICJyZXBsYWNlIiwgIlNoaWZ0LUNtZC1BbHQtRiI6ICJyZXBs
YWNlQWxsIiwKKyAgICAiQ21kLVsiOiAiaW5kZW50TGVzcyIsICJDbWQtXSI6ICJpbmRlbnRNb3Jl
IiwKKyAgICBmYWxsdGhyb3VnaDogWyJiYXNpYyIsICJlbWFjc3kiXQorICB9OworICBrZXlNYXBb
ImRlZmF1bHQiXSA9IG1hYyA/IGtleU1hcC5tYWNEZWZhdWx0IDoga2V5TWFwLnBjRGVmYXVsdDsK
KyAga2V5TWFwLmVtYWNzeSA9IHsKKyAgICAiQ3RybC1GIjogImdvQ2hhclJpZ2h0IiwgIkN0cmwt
QiI6ICJnb0NoYXJMZWZ0IiwgIkN0cmwtUCI6ICJnb0xpbmVVcCIsICJDdHJsLU4iOiAiZ29MaW5l
RG93biIsCisgICAgIkFsdC1GIjogImdvV29yZFJpZ2h0IiwgIkFsdC1CIjogImdvV29yZExlZnQi
LCAiQ3RybC1BIjogImdvTGluZVN0YXJ0IiwgIkN0cmwtRSI6ICJnb0xpbmVFbmQiLAorICAgICJD
dHJsLVYiOiAiZ29QYWdlVXAiLCAiU2hpZnQtQ3RybC1WIjogImdvUGFnZURvd24iLCAiQ3RybC1E
IjogImRlbENoYXJSaWdodCIsICJDdHJsLUgiOiAiZGVsQ2hhckxlZnQiLAorICAgICJBbHQtRCI6
ICJkZWxXb3JkUmlnaHQiLCAiQWx0LUJhY2tzcGFjZSI6ICJkZWxXb3JkTGVmdCIsICJDdHJsLUsi
OiAia2lsbExpbmUiLCAiQ3RybC1UIjogInRyYW5zcG9zZUNoYXJzIgorICB9OworCisgIGZ1bmN0
aW9uIGdldEtleU1hcCh2YWwpIHsKKyAgICBpZiAodHlwZW9mIHZhbCA9PSAic3RyaW5nIikgcmV0
dXJuIGtleU1hcFt2YWxdOworICAgIGVsc2UgcmV0dXJuIHZhbDsKKyAgfQorICBmdW5jdGlvbiBs
b29rdXBLZXkobmFtZSwgZXh0cmFNYXAsIG1hcCwgaGFuZGxlLCBzdG9wKSB7CisgICAgZnVuY3Rp
b24gbG9va3VwKG1hcCkgeworICAgICAgbWFwID0gZ2V0S2V5TWFwKG1hcCk7CisgICAgICB2YXIg
Zm91bmQgPSBtYXBbbmFtZV07CisgICAgICBpZiAoZm91bmQgPT09IGZhbHNlKSB7CisgICAgICAg
IGlmIChzdG9wKSBzdG9wKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQorICAgICAg
aWYgKGZvdW5kICE9IG51bGwgJiYgaGFuZGxlKGZvdW5kKSkgcmV0dXJuIHRydWU7CisgICAgICBp
ZiAobWFwLm5vZmFsbHRocm91Z2gpIHsKKyAgICAgICAgaWYgKHN0b3ApIHN0b3AoKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICB9CisgICAgICB2YXIgZmFsbHRocm91Z2ggPSBtYXAuZmFs
bHRocm91Z2g7CisgICAgICBpZiAoZmFsbHRocm91Z2ggPT0gbnVsbCkgcmV0dXJuIGZhbHNlOwor
ICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChmYWxsdGhyb3VnaCkgIT0g
IltvYmplY3QgQXJyYXldIikKKyAgICAgICAgcmV0dXJuIGxvb2t1cChmYWxsdGhyb3VnaCk7Cisg
ICAgICBmb3IgKHZhciBpID0gMCwgZSA9IGZhbGx0aHJvdWdoLmxlbmd0aDsgaSA8IGU7ICsraSkg
eworICAgICAgICBpZiAobG9va3VwKGZhbGx0aHJvdWdoW2ldKSkgcmV0dXJuIHRydWU7CisgICAg
ICB9CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChleHRyYU1hcCAmJiBsb29r
dXAoZXh0cmFNYXApKSByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbG9va3VwKG1hcCk7CisgIH0K
KyAgZnVuY3Rpb24gaXNNb2RpZmllcktleShldmVudCkgeworICAgIHZhciBuYW1lID0ga2V5TmFt
ZXNbZV9wcm9wKGV2ZW50LCAia2V5Q29kZSIpXTsKKyAgICByZXR1cm4gbmFtZSA9PSAiQ3RybCIg
fHwgbmFtZSA9PSAiQWx0IiB8fCBuYW1lID09ICJTaGlmdCIgfHwgbmFtZSA9PSAiTW9kIjsKKyAg
fQorCisgIENvZGVNaXJyb3IuZnJvbVRleHRBcmVhID0gZnVuY3Rpb24odGV4dGFyZWEsIG9wdGlv
bnMpIHsKKyAgICBpZiAoIW9wdGlvbnMpIG9wdGlvbnMgPSB7fTsKKyAgICBvcHRpb25zLnZhbHVl
ID0gdGV4dGFyZWEudmFsdWU7CisgICAgaWYgKCFvcHRpb25zLnRhYmluZGV4ICYmIHRleHRhcmVh
LnRhYmluZGV4KQorICAgICAgb3B0aW9ucy50YWJpbmRleCA9IHRleHRhcmVhLnRhYmluZGV4Owor
ICAgIGlmIChvcHRpb25zLmF1dG9mb2N1cyA9PSBudWxsICYmIHRleHRhcmVhLmdldEF0dHJpYnV0
ZSgiYXV0b2ZvY3VzIikgIT0gbnVsbCkKKyAgICAgIG9wdGlvbnMuYXV0b2ZvY3VzID0gdHJ1ZTsK
KworICAgIGZ1bmN0aW9uIHNhdmUoKSB7dGV4dGFyZWEudmFsdWUgPSBpbnN0YW5jZS5nZXRWYWx1
ZSgpO30KKyAgICBpZiAodGV4dGFyZWEuZm9ybSkgeworICAgICAgLy8gRGVwbG9yYWJsZSBoYWNr
IHRvIG1ha2UgdGhlIHN1Ym1pdCBtZXRob2QgZG8gdGhlIHJpZ2h0IHRoaW5nLgorICAgICAgdmFy
IHJtU3VibWl0ID0gY29ubmVjdCh0ZXh0YXJlYS5mb3JtLCAic3VibWl0Iiwgc2F2ZSwgdHJ1ZSk7
CisgICAgICBpZiAodHlwZW9mIHRleHRhcmVhLmZvcm0uc3VibWl0ID09ICJmdW5jdGlvbiIpIHsK
KyAgICAgICAgdmFyIHJlYWxTdWJtaXQgPSB0ZXh0YXJlYS5mb3JtLnN1Ym1pdDsKKyAgICAgICAg
dGV4dGFyZWEuZm9ybS5zdWJtaXQgPSBmdW5jdGlvbiB3cmFwcGVkU3VibWl0KCkgeworICAgICAg
ICAgIHNhdmUoKTsKKyAgICAgICAgICB0ZXh0YXJlYS5mb3JtLnN1Ym1pdCA9IHJlYWxTdWJtaXQ7
CisgICAgICAgICAgdGV4dGFyZWEuZm9ybS5zdWJtaXQoKTsKKyAgICAgICAgICB0ZXh0YXJlYS5m
b3JtLnN1Ym1pdCA9IHdyYXBwZWRTdWJtaXQ7CisgICAgICAgIH07CisgICAgICB9CisgICAgfQor
CisgICAgdGV4dGFyZWEuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICB2YXIgaW5zdGFuY2Ug
PSBDb2RlTWlycm9yKGZ1bmN0aW9uKG5vZGUpIHsKKyAgICAgIHRleHRhcmVhLnBhcmVudE5vZGUu
aW5zZXJ0QmVmb3JlKG5vZGUsIHRleHRhcmVhLm5leHRTaWJsaW5nKTsKKyAgICB9LCBvcHRpb25z
KTsKKyAgICBpbnN0YW5jZS5zYXZlID0gc2F2ZTsKKyAgICBpbnN0YW5jZS5nZXRUZXh0QXJlYSA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGV4dGFyZWE7IH07CisgICAgaW5zdGFuY2UudG9UZXh0QXJl
YSA9IGZ1bmN0aW9uKCkgeworICAgICAgc2F2ZSgpOworICAgICAgdGV4dGFyZWEucGFyZW50Tm9k
ZS5yZW1vdmVDaGlsZChpbnN0YW5jZS5nZXRXcmFwcGVyRWxlbWVudCgpKTsKKyAgICAgIHRleHRh
cmVhLnN0eWxlLmRpc3BsYXkgPSAiIjsKKyAgICAgIGlmICh0ZXh0YXJlYS5mb3JtKSB7CisgICAg
ICAgIHJtU3VibWl0KCk7CisgICAgICAgIGlmICh0eXBlb2YgdGV4dGFyZWEuZm9ybS5zdWJtaXQg
PT0gImZ1bmN0aW9uIikKKyAgICAgICAgICB0ZXh0YXJlYS5mb3JtLnN1Ym1pdCA9IHJlYWxTdWJt
aXQ7CisgICAgICB9CisgICAgfTsKKyAgICByZXR1cm4gaW5zdGFuY2U7CisgIH07CisKKyAgdmFy
IGdlY2tvID0gL2dlY2tvXC9cZHs3fS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CisgIHZh
ciBpZSA9IC9NU0lFIFxkLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOworICB2YXIgaWVfbHQ4
ID0gL01TSUUgWzEtN11cYi8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTsKKyAgdmFyIGllX2x0
OSA9IC9NU0lFIFsxLThdXGIvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CisgIHZhciBxdWly
a3NNb2RlID0gaWUgJiYgZG9jdW1lbnQuZG9jdW1lbnRNb2RlID09IDU7CisgIHZhciB3ZWJraXQg
PSAvV2ViS2l0XC8vLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CisgIHZhciBjaHJvbWUgPSAv
Q2hyb21lXC8vLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CisgIHZhciBvcGVyYSA9IC9PcGVy
YVwvLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOworICB2YXIgc2FmYXJpID0gL0FwcGxlIENv
bXB1dGVyLy50ZXN0KG5hdmlnYXRvci52ZW5kb3IpOworICB2YXIga2h0bWwgPSAvS0hUTUxcLy8u
dGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTsKKyAgdmFyIG1hY19nZUxpb24gPSAvTWFjIE9TIFgg
MTBcRChbNy05XXxcZFxkKVxELy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOworCisgIC8vIFV0
aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggc3RhdGUuIEV4cG9ydGVkIGJlY2F1c2Ug
bW9kZXMKKyAgLy8gc29tZXRpbWVzIG5lZWQgdG8gZG8gdGhpcy4KKyAgZnVuY3Rpb24gY29weVN0
YXRlKG1vZGUsIHN0YXRlKSB7CisgICAgaWYgKHN0YXRlID09PSB0cnVlKSByZXR1cm4gc3RhdGU7
CisgICAgaWYgKG1vZGUuY29weVN0YXRlKSByZXR1cm4gbW9kZS5jb3B5U3RhdGUoc3RhdGUpOwor
ICAgIHZhciBuc3RhdGUgPSB7fTsKKyAgICBmb3IgKHZhciBuIGluIHN0YXRlKSB7CisgICAgICB2
YXIgdmFsID0gc3RhdGVbbl07CisgICAgICBpZiAodmFsIGluc3RhbmNlb2YgQXJyYXkpIHZhbCA9
IHZhbC5jb25jYXQoW10pOworICAgICAgbnN0YXRlW25dID0gdmFsOworICAgIH0KKyAgICByZXR1
cm4gbnN0YXRlOworICB9CisgIENvZGVNaXJyb3IuY29weVN0YXRlID0gY29weVN0YXRlOworICBm
dW5jdGlvbiBzdGFydFN0YXRlKG1vZGUsIGExLCBhMikgeworICAgIHJldHVybiBtb2RlLnN0YXJ0
U3RhdGUgPyBtb2RlLnN0YXJ0U3RhdGUoYTEsIGEyKSA6IHRydWU7CisgIH0KKyAgQ29kZU1pcnJv
ci5zdGFydFN0YXRlID0gc3RhcnRTdGF0ZTsKKworICAvLyBUaGUgY2hhcmFjdGVyIHN0cmVhbSB1
c2VkIGJ5IGEgbW9kZSdzIHBhcnNlci4KKyAgZnVuY3Rpb24gU3RyaW5nU3RyZWFtKHN0cmluZywg
dGFiU2l6ZSkgeworICAgIHRoaXMucG9zID0gdGhpcy5zdGFydCA9IDA7CisgICAgdGhpcy5zdHJp
bmcgPSBzdHJpbmc7CisgICAgdGhpcy50YWJTaXplID0gdGFiU2l6ZSB8fCA4OworICB9CisgIFN0
cmluZ1N0cmVhbS5wcm90b3R5cGUgPSB7CisgICAgZW9sOiBmdW5jdGlvbigpIHtyZXR1cm4gdGhp
cy5wb3MgPj0gdGhpcy5zdHJpbmcubGVuZ3RoO30sCisgICAgc29sOiBmdW5jdGlvbigpIHtyZXR1
cm4gdGhpcy5wb3MgPT0gMDt9LAorICAgIHBlZWs6IGZ1bmN0aW9uKCkge3JldHVybiB0aGlzLnN0
cmluZy5jaGFyQXQodGhpcy5wb3MpO30sCisgICAgbmV4dDogZnVuY3Rpb24oKSB7CisgICAgICBp
ZiAodGhpcy5wb3MgPCB0aGlzLnN0cmluZy5sZW5ndGgpCisgICAgICAgIHJldHVybiB0aGlzLnN0
cmluZy5jaGFyQXQodGhpcy5wb3MrKyk7CisgICAgfSwKKyAgICBlYXQ6IGZ1bmN0aW9uKG1hdGNo
KSB7CisgICAgICB2YXIgY2ggPSB0aGlzLnN0cmluZy5jaGFyQXQodGhpcy5wb3MpOworICAgICAg
aWYgKHR5cGVvZiBtYXRjaCA9PSAic3RyaW5nIikgdmFyIG9rID0gY2ggPT0gbWF0Y2g7CisgICAg
ICBlbHNlIHZhciBvayA9IGNoICYmIChtYXRjaC50ZXN0ID8gbWF0Y2gudGVzdChjaCkgOiBtYXRj
aChjaCkpOworICAgICAgaWYgKG9rKSB7Kyt0aGlzLnBvczsgcmV0dXJuIGNoO30KKyAgICB9LAor
ICAgIGVhdFdoaWxlOiBmdW5jdGlvbihtYXRjaCkgeworICAgICAgdmFyIHN0YXJ0ID0gdGhpcy5w
b3M7CisgICAgICB3aGlsZSAodGhpcy5lYXQobWF0Y2gpKXt9CisgICAgICByZXR1cm4gdGhpcy5w
b3MgPiBzdGFydDsKKyAgICB9LAorICAgIGVhdFNwYWNlOiBmdW5jdGlvbigpIHsKKyAgICAgIHZh
ciBzdGFydCA9IHRoaXMucG9zOworICAgICAgd2hpbGUgKC9bXHNcdTAwYTBdLy50ZXN0KHRoaXMu
c3RyaW5nLmNoYXJBdCh0aGlzLnBvcykpKSArK3RoaXMucG9zOworICAgICAgcmV0dXJuIHRoaXMu
cG9zID4gc3RhcnQ7CisgICAgfSwKKyAgICBza2lwVG9FbmQ6IGZ1bmN0aW9uKCkge3RoaXMucG9z
ID0gdGhpcy5zdHJpbmcubGVuZ3RoO30sCisgICAgc2tpcFRvOiBmdW5jdGlvbihjaCkgeworICAg
ICAgdmFyIGZvdW5kID0gdGhpcy5zdHJpbmcuaW5kZXhPZihjaCwgdGhpcy5wb3MpOworICAgICAg
aWYgKGZvdW5kID4gLTEpIHt0aGlzLnBvcyA9IGZvdW5kOyByZXR1cm4gdHJ1ZTt9CisgICAgfSwK
KyAgICBiYWNrVXA6IGZ1bmN0aW9uKG4pIHt0aGlzLnBvcyAtPSBuO30sCisgICAgY29sdW1uOiBm
dW5jdGlvbigpIHtyZXR1cm4gY291bnRDb2x1bW4odGhpcy5zdHJpbmcsIHRoaXMuc3RhcnQsIHRo
aXMudGFiU2l6ZSk7fSwKKyAgICBpbmRlbnRhdGlvbjogZnVuY3Rpb24oKSB7cmV0dXJuIGNvdW50
Q29sdW1uKHRoaXMuc3RyaW5nLCBudWxsLCB0aGlzLnRhYlNpemUpO30sCisgICAgbWF0Y2g6IGZ1
bmN0aW9uKHBhdHRlcm4sIGNvbnN1bWUsIGNhc2VJbnNlbnNpdGl2ZSkgeworICAgICAgaWYgKHR5
cGVvZiBwYXR0ZXJuID09ICJzdHJpbmciKSB7CisgICAgICAgIHZhciBjYXNlZCA9IGZ1bmN0aW9u
KHN0cikge3JldHVybiBjYXNlSW5zZW5zaXRpdmUgPyBzdHIudG9Mb3dlckNhc2UoKSA6IHN0cjt9
OworICAgICAgICBpZiAoY2FzZWQodGhpcy5zdHJpbmcpLmluZGV4T2YoY2FzZWQocGF0dGVybiks
IHRoaXMucG9zKSA9PSB0aGlzLnBvcykgeworICAgICAgICAgIGlmIChjb25zdW1lICE9PSBmYWxz
ZSkgdGhpcy5wb3MgKz0gcGF0dGVybi5sZW5ndGg7CisgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHZhciBtYXRjaCA9IHRoaXMuc3RyaW5n
LnNsaWNlKHRoaXMucG9zKS5tYXRjaChwYXR0ZXJuKTsKKyAgICAgICAgaWYgKG1hdGNoICYmIGNv
bnN1bWUgIT09IGZhbHNlKSB0aGlzLnBvcyArPSBtYXRjaFswXS5sZW5ndGg7CisgICAgICAgIHJl
dHVybiBtYXRjaDsKKyAgICAgIH0KKyAgICB9LAorICAgIGN1cnJlbnQ6IGZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuc3RyaW5nLnNsaWNlKHRoaXMuc3RhcnQsIHRoaXMucG9zKTt9CisgIH07CisgIENv
ZGVNaXJyb3IuU3RyaW5nU3RyZWFtID0gU3RyaW5nU3RyZWFtOworCisgIGZ1bmN0aW9uIE1hcmtl
ZFRleHQoZnJvbSwgdG8sIGNsYXNzTmFtZSwgbWFya2VyKSB7CisgICAgdGhpcy5mcm9tID0gZnJv
bTsgdGhpcy50byA9IHRvOyB0aGlzLnN0eWxlID0gY2xhc3NOYW1lOyB0aGlzLm1hcmtlciA9IG1h
cmtlcjsKKyAgfQorICBNYXJrZWRUZXh0LnByb3RvdHlwZSA9IHsKKyAgICBhdHRhY2g6IGZ1bmN0
aW9uKGxpbmUpIHsgdGhpcy5tYXJrZXIuc2V0LnB1c2gobGluZSk7IH0sCisgICAgZGV0YWNoOiBm
dW5jdGlvbihsaW5lKSB7CisgICAgICB2YXIgaXggPSBpbmRleE9mKHRoaXMubWFya2VyLnNldCwg
bGluZSk7CisgICAgICBpZiAoaXggPiAtMSkgdGhpcy5tYXJrZXIuc2V0LnNwbGljZShpeCwgMSk7
CisgICAgfSwKKyAgICBzcGxpdDogZnVuY3Rpb24ocG9zLCBsZW5CZWZvcmUpIHsKKyAgICAgIGlm
ICh0aGlzLnRvIDw9IHBvcyAmJiB0aGlzLnRvICE9IG51bGwpIHJldHVybiBudWxsOworICAgICAg
dmFyIGZyb20gPSB0aGlzLmZyb20gPCBwb3MgfHwgdGhpcy5mcm9tID09IG51bGwgPyBudWxsIDog
dGhpcy5mcm9tIC0gcG9zICsgbGVuQmVmb3JlOworICAgICAgdmFyIHRvID0gdGhpcy50byA9PSBu
dWxsID8gbnVsbCA6IHRoaXMudG8gLSBwb3MgKyBsZW5CZWZvcmU7CisgICAgICByZXR1cm4gbmV3
IE1hcmtlZFRleHQoZnJvbSwgdG8sIHRoaXMuc3R5bGUsIHRoaXMubWFya2VyKTsKKyAgICB9LAor
ICAgIGR1cDogZnVuY3Rpb24oKSB7IHJldHVybiBuZXcgTWFya2VkVGV4dChudWxsLCBudWxsLCB0
aGlzLnN0eWxlLCB0aGlzLm1hcmtlcik7IH0sCisgICAgY2xpcFRvOiBmdW5jdGlvbihmcm9tT3Bl
biwgZnJvbSwgdG9PcGVuLCB0bywgZGlmZikgeworICAgICAgaWYgKGZyb21PcGVuICYmIHRvID4g
dGhpcy5mcm9tICYmICh0byA8IHRoaXMudG8gfHwgdGhpcy50byA9PSBudWxsKSkKKyAgICAgICAg
dGhpcy5mcm9tID0gbnVsbDsKKyAgICAgIGVsc2UgaWYgKHRoaXMuZnJvbSAhPSBudWxsICYmIHRo
aXMuZnJvbSA+PSBmcm9tKQorICAgICAgICB0aGlzLmZyb20gPSBNYXRoLm1heCh0bywgdGhpcy5m
cm9tKSArIGRpZmY7CisgICAgICBpZiAodG9PcGVuICYmIChmcm9tIDwgdGhpcy50byB8fCB0aGlz
LnRvID09IG51bGwpICYmIChmcm9tID4gdGhpcy5mcm9tIHx8IHRoaXMuZnJvbSA9PSBudWxsKSkK
KyAgICAgICAgdGhpcy50byA9IG51bGw7CisgICAgICBlbHNlIGlmICh0aGlzLnRvICE9IG51bGwg
JiYgdGhpcy50byA+IGZyb20pCisgICAgICAgIHRoaXMudG8gPSB0byA8IHRoaXMudG8gPyB0aGlz
LnRvICsgZGlmZiA6IGZyb207CisgICAgfSwKKyAgICBpc0RlYWQ6IGZ1bmN0aW9uKCkgeyByZXR1
cm4gdGhpcy5mcm9tICE9IG51bGwgJiYgdGhpcy50byAhPSBudWxsICYmIHRoaXMuZnJvbSA+PSB0
aGlzLnRvOyB9LAorICAgIHNhbWVTZXQ6IGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHRoaXMubWFya2Vy
ID09IHgubWFya2VyOyB9CisgIH07CisKKyAgZnVuY3Rpb24gQm9va21hcmsocG9zKSB7CisgICAg
dGhpcy5mcm9tID0gcG9zOyB0aGlzLnRvID0gcG9zOyB0aGlzLmxpbmUgPSBudWxsOworICB9Cisg
IEJvb2ttYXJrLnByb3RvdHlwZSA9IHsKKyAgICBhdHRhY2g6IGZ1bmN0aW9uKGxpbmUpIHsgdGhp
cy5saW5lID0gbGluZTsgfSwKKyAgICBkZXRhY2g6IGZ1bmN0aW9uKGxpbmUpIHsgaWYgKHRoaXMu
bGluZSA9PSBsaW5lKSB0aGlzLmxpbmUgPSBudWxsOyB9LAorICAgIHNwbGl0OiBmdW5jdGlvbihw
b3MsIGxlbkJlZm9yZSkgeworICAgICAgaWYgKHBvcyA8IHRoaXMuZnJvbSkgeworICAgICAgICB0
aGlzLmZyb20gPSB0aGlzLnRvID0gKHRoaXMuZnJvbSAtIHBvcykgKyBsZW5CZWZvcmU7CisgICAg
ICAgIHJldHVybiB0aGlzOworICAgICAgfQorICAgIH0sCisgICAgaXNEZWFkOiBmdW5jdGlvbigp
IHsgcmV0dXJuIHRoaXMuZnJvbSA+IHRoaXMudG87IH0sCisgICAgY2xpcFRvOiBmdW5jdGlvbihm
cm9tT3BlbiwgZnJvbSwgdG9PcGVuLCB0bywgZGlmZikgeworICAgICAgaWYgKChmcm9tT3BlbiB8
fCBmcm9tIDwgdGhpcy5mcm9tKSAmJiAodG9PcGVuIHx8IHRvID4gdGhpcy50bykpIHsKKyAgICAg
ICAgdGhpcy5mcm9tID0gMDsgdGhpcy50byA9IC0xOworICAgICAgfSBlbHNlIGlmICh0aGlzLmZy
b20gPiBmcm9tKSB7CisgICAgICAgIHRoaXMuZnJvbSA9IHRoaXMudG8gPSBNYXRoLm1heCh0bywg
dGhpcy5mcm9tKSArIGRpZmY7CisgICAgICB9CisgICAgfSwKKyAgICBzYW1lU2V0OiBmdW5jdGlv
bih4KSB7IHJldHVybiBmYWxzZTsgfSwKKyAgICBmaW5kOiBmdW5jdGlvbigpIHsKKyAgICAgIGlm
ICghdGhpcy5saW5lIHx8ICF0aGlzLmxpbmUucGFyZW50KSByZXR1cm4gbnVsbDsKKyAgICAgIHJl
dHVybiB7bGluZTogbGluZU5vKHRoaXMubGluZSksIGNoOiB0aGlzLmZyb219OworICAgIH0sCisg
ICAgY2xlYXI6IGZ1bmN0aW9uKCkgeworICAgICAgaWYgKHRoaXMubGluZSkgeworICAgICAgICB2
YXIgZm91bmQgPSBpbmRleE9mKHRoaXMubGluZS5tYXJrZWQsIHRoaXMpOworICAgICAgICBpZiAo
Zm91bmQgIT0gLTEpIHRoaXMubGluZS5tYXJrZWQuc3BsaWNlKGZvdW5kLCAxKTsKKyAgICAgICAg
dGhpcy5saW5lID0gbnVsbDsKKyAgICAgIH0KKyAgICB9CisgIH07CisKKyAgLy8gV2hlbiBtZWFz
dXJpbmcgdGhlIHBvc2l0aW9uIG9mIHRoZSBlbmQgb2YgYSBsaW5lLCBkaWZmZXJlbnQKKyAgLy8g
YnJvd3NlcnMgcmVxdWlyZSBkaWZmZXJlbnQgYXBwcm9hY2hlcy4gSWYgYW4gZW1wdHkgc3BhbiBp
cyBhZGRlZCwKKyAgLy8gbWFueSBicm93c2VycyByZXBvcnQgYm9ndXMgb2Zmc2V0cy4gT2YgdGhv
c2UsIHNvbWUgKFdlYmtpdCwKKyAgLy8gcmVjZW50IElFKSB3aWxsIGFjY2VwdCBhIHNwYWNlIHdp
dGhvdXQgbW92aW5nIHRoZSB3aG9sZSBzcGFuIHRvCisgIC8vIHRoZSBuZXh0IGxpbmUgd2hlbiB3
cmFwcGluZyBpdCwgb3RoZXJzIHdvcmsgd2l0aCBhIHplcm8td2lkdGgKKyAgLy8gc3BhY2UuCisg
IHZhciBlb2xTcGFuQ29udGVudCA9ICIgIjsKKyAgaWYgKGdlY2tvIHx8IChpZSAmJiAhaWVfbHQ4
KSkgZW9sU3BhbkNvbnRlbnQgPSAiXHUyMDBiIjsKKyAgZWxzZSBpZiAob3BlcmEpIGVvbFNwYW5D
b250ZW50ID0gIiI7CisKKyAgLy8gTGluZSBvYmplY3RzLiBUaGVzZSBob2xkIHN0YXRlIHJlbGF0
ZWQgdG8gYSBsaW5lLCBpbmNsdWRpbmcKKyAgLy8gaGlnaGxpZ2h0aW5nIGluZm8gKHRoZSBzdHls
ZXMgYXJyYXkpLgorICBmdW5jdGlvbiBMaW5lKHRleHQsIHN0eWxlcykgeworICAgIHRoaXMuc3R5
bGVzID0gc3R5bGVzIHx8IFt0ZXh0LCBudWxsXTsKKyAgICB0aGlzLnRleHQgPSB0ZXh0OworICAg
IHRoaXMuaGVpZ2h0ID0gMTsKKyAgfQorICBMaW5lLmluaGVyaXRNYXJrcyA9IGZ1bmN0aW9uKHRl
eHQsIG9yaWcpIHsKKyAgICB2YXIgbG4gPSBuZXcgTGluZSh0ZXh0KSwgbWsgPSBvcmlnICYmIG9y
aWcubWFya2VkOworICAgIGlmIChtaykgeworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtay5s
ZW5ndGg7ICsraSkgeworICAgICAgICBpZiAobWtbaV0udG8gPT0gbnVsbCAmJiBta1tpXS5zdHls
ZSkgeworICAgICAgICAgIHZhciBuZXdtayA9IGxuLm1hcmtlZCB8fCAobG4ubWFya2VkID0gW10p
LCBtYXJrID0gbWtbaV07CisgICAgICAgICAgdmFyIG5tYXJrID0gbWFyay5kdXAoKTsgbmV3bWsu
cHVzaChubWFyayk7IG5tYXJrLmF0dGFjaChsbik7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIGxuOworICB9OworICBMaW5lLnByb3RvdHlwZSA9IHsKKyAgICAvLyBSZXBs
YWNlIGEgcGllY2Ugb2YgYSBsaW5lLCBrZWVwaW5nIHRoZSBzdHlsZXMgYXJvdW5kIGl0IGludGFj
dC4KKyAgICByZXBsYWNlOiBmdW5jdGlvbihmcm9tLCB0b18sIHRleHQpIHsKKyAgICAgIHZhciBz
dCA9IFtdLCBtayA9IHRoaXMubWFya2VkLCB0byA9IHRvXyA9PSBudWxsID8gdGhpcy50ZXh0Lmxl
bmd0aCA6IHRvXzsKKyAgICAgIGNvcHlTdHlsZXMoMCwgZnJvbSwgdGhpcy5zdHlsZXMsIHN0KTsK
KyAgICAgIGlmICh0ZXh0KSBzdC5wdXNoKHRleHQsIG51bGwpOworICAgICAgY29weVN0eWxlcyh0
bywgdGhpcy50ZXh0Lmxlbmd0aCwgdGhpcy5zdHlsZXMsIHN0KTsKKyAgICAgIHRoaXMuc3R5bGVz
ID0gc3Q7CisgICAgICB0aGlzLnRleHQgPSB0aGlzLnRleHQuc2xpY2UoMCwgZnJvbSkgKyB0ZXh0
ICsgdGhpcy50ZXh0LnNsaWNlKHRvKTsKKyAgICAgIHRoaXMuc3RhdGVBZnRlciA9IG51bGw7Cisg
ICAgICBpZiAobWspIHsKKyAgICAgICAgdmFyIGRpZmYgPSB0ZXh0Lmxlbmd0aCAtICh0byAtIGZy
b20pOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1rLmxlbmd0aDsgKytpKSB7CisgICAg
ICAgICAgdmFyIG1hcmsgPSBta1tpXTsKKyAgICAgICAgICBtYXJrLmNsaXBUbyhmcm9tID09IG51
bGwsIGZyb20gfHwgMCwgdG9fID09IG51bGwsIHRvLCBkaWZmKTsKKyAgICAgICAgICBpZiAobWFy
ay5pc0RlYWQoKSkge21hcmsuZGV0YWNoKHRoaXMpOyBtay5zcGxpY2UoaS0tLCAxKTt9CisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgIC8vIFNwbGl0IGEgcGFydCBvZmYgYSBsaW5lLCBr
ZWVwaW5nIHN0eWxlcyBhbmQgbWFya2VycyBpbnRhY3QuCisgICAgc3BsaXQ6IGZ1bmN0aW9uKHBv
cywgdGV4dEJlZm9yZSkgeworICAgICAgdmFyIHN0ID0gW3RleHRCZWZvcmUsIG51bGxdLCBtayA9
IHRoaXMubWFya2VkOworICAgICAgY29weVN0eWxlcyhwb3MsIHRoaXMudGV4dC5sZW5ndGgsIHRo
aXMuc3R5bGVzLCBzdCk7CisgICAgICB2YXIgdGFrZW4gPSBuZXcgTGluZSh0ZXh0QmVmb3JlICsg
dGhpcy50ZXh0LnNsaWNlKHBvcyksIHN0KTsKKyAgICAgIGlmIChtaykgeworICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IG1rLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgdmFyIG1hcmsgPSBt
a1tpXTsKKyAgICAgICAgICB2YXIgbmV3bWFyayA9IG1hcmsuc3BsaXQocG9zLCB0ZXh0QmVmb3Jl
Lmxlbmd0aCk7CisgICAgICAgICAgaWYgKG5ld21hcmspIHsKKyAgICAgICAgICAgIGlmICghdGFr
ZW4ubWFya2VkKSB0YWtlbi5tYXJrZWQgPSBbXTsKKyAgICAgICAgICAgIHRha2VuLm1hcmtlZC5w
dXNoKG5ld21hcmspOyBuZXdtYXJrLmF0dGFjaCh0YWtlbik7CisgICAgICAgICAgICBpZiAobmV3
bWFyayA9PSBtYXJrKSBtay5zcGxpY2UoaS0tLCAxKTsKKyAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICAgIHJldHVybiB0YWtlbjsKKyAgICB9LAorICAgIGFwcGVuZDogZnVuY3Rp
b24obGluZSkgeworICAgICAgdmFyIG15bGVuID0gdGhpcy50ZXh0Lmxlbmd0aCwgbWsgPSBsaW5l
Lm1hcmtlZCwgbXltayA9IHRoaXMubWFya2VkOworICAgICAgdGhpcy50ZXh0ICs9IGxpbmUudGV4
dDsKKyAgICAgIGNvcHlTdHlsZXMoMCwgbGluZS50ZXh0Lmxlbmd0aCwgbGluZS5zdHlsZXMsIHRo
aXMuc3R5bGVzKTsKKyAgICAgIGlmIChteW1rKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbXltay5sZW5ndGg7ICsraSkKKyAgICAgICAgICBpZiAobXlta1tpXS50byA9PSBudWxsKSBt
eW1rW2ldLnRvID0gbXlsZW47CisgICAgICB9CisgICAgICBpZiAobWsgJiYgbWsubGVuZ3RoKSB7
CisgICAgICAgIGlmICghbXltaykgdGhpcy5tYXJrZWQgPSBteW1rID0gW107CisgICAgICAgIG91
dGVyOiBmb3IgKHZhciBpID0gMDsgaSA8IG1rLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgdmFy
IG1hcmsgPSBta1tpXTsKKyAgICAgICAgICBpZiAoIW1hcmsuZnJvbSkgeworICAgICAgICAgICAg
Zm9yICh2YXIgaiA9IDA7IGogPCBteW1rLmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICAgIHZh
ciBteW1hcmsgPSBteW1rW2pdOworICAgICAgICAgICAgICBpZiAobXltYXJrLnRvID09IG15bGVu
ICYmIG15bWFyay5zYW1lU2V0KG1hcmspKSB7CisgICAgICAgICAgICAgICAgbXltYXJrLnRvID0g
bWFyay50byA9PSBudWxsID8gbnVsbCA6IG1hcmsudG8gKyBteWxlbjsKKyAgICAgICAgICAgICAg
ICBpZiAobXltYXJrLmlzRGVhZCgpKSB7CisgICAgICAgICAgICAgICAgICBteW1hcmsuZGV0YWNo
KHRoaXMpOworICAgICAgICAgICAgICAgICAgbWsuc3BsaWNlKGktLSwgMSk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGNvbnRpbnVlIG91dGVyOworICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIG15bWsucHVzaChtYXJrKTsK
KyAgICAgICAgICBtYXJrLmF0dGFjaCh0aGlzKTsKKyAgICAgICAgICBtYXJrLmZyb20gKz0gbXls
ZW47CisgICAgICAgICAgaWYgKG1hcmsudG8gIT0gbnVsbCkgbWFyay50byArPSBteWxlbjsKKyAg
ICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAgZml4TWFya0VuZHM6IGZ1bmN0aW9uKG90aGVy
KSB7CisgICAgICB2YXIgbWsgPSB0aGlzLm1hcmtlZCwgb21rID0gb3RoZXIubWFya2VkOworICAg
ICAgaWYgKCFtaykgcmV0dXJuOworICAgICAgb3V0ZXI6IGZvciAodmFyIGkgPSAwOyBpIDwgbWsu
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIG1hcmsgPSBta1tpXSwgY2xvc2UgPSBtYXJrLnRv
ID09IG51bGw7CisgICAgICAgIGlmIChjbG9zZSAmJiBvbWspIHsKKyAgICAgICAgICBmb3IgKHZh
ciBqID0gMDsgaiA8IG9tay5sZW5ndGg7ICsraikgeworICAgICAgICAgICAgdmFyIG9tID0gb21r
W2pdOworICAgICAgICAgICAgaWYgKCFvbS5zYW1lU2V0KG1hcmspIHx8IG9tLmZyb20gIT0gbnVs
bCkgY29udGludWU7CisgICAgICAgICAgICBpZiAobWFyay5mcm9tID09IHRoaXMudGV4dC5sZW5n
dGggJiYgb20udG8gPT0gMCkgeworICAgICAgICAgICAgICBvbWsuc3BsaWNlKGosIDEpOworICAg
ICAgICAgICAgICBtay5zcGxpY2UoaS0tLCAxKTsKKyAgICAgICAgICAgICAgY29udGludWUgb3V0
ZXI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICBjbG9zZSA9IGZhbHNlOyBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGNsb3NlKSBtYXJrLnRvID0gdGhpcy50ZXh0Lmxlbmd0aDsKKyAgICAgIH0KKyAgICB9LAorICAg
IGZpeE1hcmtTdGFydHM6IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIG1rID0gdGhpcy5tYXJrZWQ7
CisgICAgICBpZiAoIW1rKSByZXR1cm47CisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1rLmxl
bmd0aDsgKytpKQorICAgICAgICBpZiAobWtbaV0uZnJvbSA9PSBudWxsKSBta1tpXS5mcm9tID0g
MDsKKyAgICB9LAorICAgIGFkZE1hcms6IGZ1bmN0aW9uKG1hcmspIHsKKyAgICAgIG1hcmsuYXR0
YWNoKHRoaXMpOworICAgICAgaWYgKHRoaXMubWFya2VkID09IG51bGwpIHRoaXMubWFya2VkID0g
W107CisgICAgICB0aGlzLm1hcmtlZC5wdXNoKG1hcmspOworICAgICAgdGhpcy5tYXJrZWQuc29y
dChmdW5jdGlvbihhLCBiKXtyZXR1cm4gKGEuZnJvbSB8fCAwKSAtIChiLmZyb20gfHwgMCk7fSk7
CisgICAgfSwKKyAgICAvLyBSdW4gdGhlIGdpdmVuIG1vZGUncyBwYXJzZXIgb3ZlciBhIGxpbmUs
IHVwZGF0ZSB0aGUgc3R5bGVzCisgICAgLy8gYXJyYXksIHdoaWNoIGNvbnRhaW5zIGFsdGVybmF0
aW5nIGZyYWdtZW50cyBvZiB0ZXh0IGFuZCBDU1MKKyAgICAvLyBjbGFzc2VzLgorICAgIGhpZ2hs
aWdodDogZnVuY3Rpb24obW9kZSwgc3RhdGUsIHRhYlNpemUpIHsKKyAgICAgIHZhciBzdHJlYW0g
PSBuZXcgU3RyaW5nU3RyZWFtKHRoaXMudGV4dCwgdGFiU2l6ZSksIHN0ID0gdGhpcy5zdHlsZXMs
IHBvcyA9IDA7CisgICAgICB2YXIgY2hhbmdlZCA9IGZhbHNlLCBjdXJXb3JkID0gc3RbMF0sIHBy
ZXZXb3JkOworICAgICAgaWYgKHRoaXMudGV4dCA9PSAiIiAmJiBtb2RlLmJsYW5rTGluZSkgbW9k
ZS5ibGFua0xpbmUoc3RhdGUpOworICAgICAgd2hpbGUgKCFzdHJlYW0uZW9sKCkpIHsKKyAgICAg
ICAgdmFyIHN0eWxlID0gbW9kZS50b2tlbihzdHJlYW0sIHN0YXRlKTsKKyAgICAgICAgdmFyIHN1
YnN0ciA9IHRoaXMudGV4dC5zbGljZShzdHJlYW0uc3RhcnQsIHN0cmVhbS5wb3MpOworICAgICAg
ICBzdHJlYW0uc3RhcnQgPSBzdHJlYW0ucG9zOworICAgICAgICBpZiAocG9zICYmIHN0W3Bvcy0x
XSA9PSBzdHlsZSkKKyAgICAgICAgICBzdFtwb3MtMl0gKz0gc3Vic3RyOworICAgICAgICBlbHNl
IGlmIChzdWJzdHIpIHsKKyAgICAgICAgICBpZiAoIWNoYW5nZWQgJiYgKHN0W3BvcysxXSAhPSBz
dHlsZSB8fCAocG9zICYmIHN0W3Bvcy0yXSAhPSBwcmV2V29yZCkpKSBjaGFuZ2VkID0gdHJ1ZTsK
KyAgICAgICAgICBzdFtwb3MrK10gPSBzdWJzdHI7IHN0W3BvcysrXSA9IHN0eWxlOworICAgICAg
ICAgIHByZXZXb3JkID0gY3VyV29yZDsgY3VyV29yZCA9IHN0W3Bvc107CisgICAgICAgIH0KKyAg
ICAgICAgLy8gR2l2ZSB1cCB3aGVuIGxpbmUgaXMgcmlkaWN1bG91c2x5IGxvbmcKKyAgICAgICAg
aWYgKHN0cmVhbS5wb3MgPiA1MDAwKSB7CisgICAgICAgICAgc3RbcG9zKytdID0gdGhpcy50ZXh0
LnNsaWNlKHN0cmVhbS5wb3MpOyBzdFtwb3MrK10gPSBudWxsOworICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICB9CisgICAgICBpZiAoc3QubGVuZ3RoICE9IHBvcykge3N0Lmxlbmd0
aCA9IHBvczsgY2hhbmdlZCA9IHRydWU7fQorICAgICAgaWYgKHBvcyAmJiBzdFtwb3MtMl0gIT0g
cHJldldvcmQpIGNoYW5nZWQgPSB0cnVlOworICAgICAgLy8gU2hvcnQgbGluZXMgd2l0aCBzaW1w
bGUgaGlnaGxpZ2h0cyByZXR1cm4gbnVsbCwgYW5kIGFyZQorICAgICAgLy8gY291bnRlZCBhcyBj
aGFuZ2VkIGJ5IHRoZSBkcml2ZXIgYmVjYXVzZSB0aGV5IGFyZSBsaWtlbHkgdG8KKyAgICAgIC8v
IGhpZ2hsaWdodCB0aGUgc2FtZSB3YXkgaW4gdmFyaW91cyBjb250ZXh0cy4KKyAgICAgIHJldHVy
biBjaGFuZ2VkIHx8IChzdC5sZW5ndGggPCA1ICYmIHRoaXMudGV4dC5sZW5ndGggPCAxMCA/IG51
bGwgOiBmYWxzZSk7CisgICAgfSwKKyAgICAvLyBGZXRjaCB0aGUgcGFyc2VyIHRva2VuIGZvciBh
IGdpdmVuIGNoYXJhY3Rlci4gVXNlZnVsIGZvciBoYWNrcworICAgIC8vIHRoYXQgd2FudCB0byBp
bnNwZWN0IHRoZSBtb2RlIHN0YXRlIChzYXksIGZvciBjb21wbGV0aW9uKS4KKyAgICBnZXRUb2tl
bkF0OiBmdW5jdGlvbihtb2RlLCBzdGF0ZSwgY2gpIHsKKyAgICAgIHZhciB0eHQgPSB0aGlzLnRl
eHQsIHN0cmVhbSA9IG5ldyBTdHJpbmdTdHJlYW0odHh0KTsKKyAgICAgIHdoaWxlIChzdHJlYW0u
cG9zIDwgY2ggJiYgIXN0cmVhbS5lb2woKSkgeworICAgICAgICBzdHJlYW0uc3RhcnQgPSBzdHJl
YW0ucG9zOworICAgICAgICB2YXIgc3R5bGUgPSBtb2RlLnRva2VuKHN0cmVhbSwgc3RhdGUpOwor
ICAgICAgfQorICAgICAgcmV0dXJuIHtzdGFydDogc3RyZWFtLnN0YXJ0LAorICAgICAgICAgICAg
ICBlbmQ6IHN0cmVhbS5wb3MsCisgICAgICAgICAgICAgIHN0cmluZzogc3RyZWFtLmN1cnJlbnQo
KSwKKyAgICAgICAgICAgICAgY2xhc3NOYW1lOiBzdHlsZSB8fCBudWxsLAorICAgICAgICAgICAg
ICBzdGF0ZTogc3RhdGV9OworICAgIH0sCisgICAgaW5kZW50YXRpb246IGZ1bmN0aW9uKHRhYlNp
emUpIHtyZXR1cm4gY291bnRDb2x1bW4odGhpcy50ZXh0LCBudWxsLCB0YWJTaXplKTt9LAorICAg
IC8vIFByb2R1Y2VzIGFuIEhUTUwgZnJhZ21lbnQgZm9yIHRoZSBsaW5lLCB0YWtpbmcgc2VsZWN0
aW9uLAorICAgIC8vIG1hcmtpbmcsIGFuZCBoaWdobGlnaHRpbmcgaW50byBhY2NvdW50LgorICAg
IGdldEVsZW1lbnQ6IGZ1bmN0aW9uKG1ha2VUYWIsIHdyYXBBdCwgd3JhcFdCUikgeworICAgICAg
dmFyIGZpcnN0ID0gdHJ1ZSwgY29sID0gMCwgc3BlY2lhbHMgPSAvW1x0XHUwMDAwLVx1MDAxOVx1
MjAwYlx1MjAyOFx1MjAyOVx1RkVGRl0vZzsKKyAgICAgIHZhciBwcmUgPSBlbHQoInByZSIpOwor
ICAgICAgZnVuY3Rpb24gc3Bhbl8oaHRtbCwgdGV4dCwgc3R5bGUpIHsKKyAgICAgICAgaWYgKCF0
ZXh0KSByZXR1cm47CisgICAgICAgIC8vIFdvcmsgYXJvdW5kIGEgYnVnIHdoZXJlLCBpbiBzb21l
IGNvbXBhdCBtb2RlcywgSUUgaWdub3JlcyBsZWFkaW5nIHNwYWNlcworICAgICAgICBpZiAoZmly
c3QgJiYgaWUgJiYgdGV4dC5jaGFyQXQoMCkgPT0gIiAiKSB0ZXh0ID0gIlx1MDBhMCIgKyB0ZXh0
LnNsaWNlKDEpOworICAgICAgICBmaXJzdCA9IGZhbHNlOworICAgICAgICBpZiAoIXNwZWNpYWxz
LnRlc3QodGV4dCkpIHsKKyAgICAgICAgICBjb2wgKz0gdGV4dC5sZW5ndGg7CisgICAgICAgICAg
dmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJh
Z21lbnQoKSwgcG9zID0gMDsKKyAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAg
c3BlY2lhbHMubGFzdEluZGV4ID0gcG9zOworICAgICAgICAgICAgdmFyIG0gPSBzcGVjaWFscy5l
eGVjKHRleHQpOworICAgICAgICAgICAgdmFyIHNraXBwZWQgPSBtID8gbS5pbmRleCAtIHBvcyA6
IHRleHQubGVuZ3RoIC0gcG9zOworICAgICAgICAgICAgaWYgKHNraXBwZWQpIHsKKyAgICAgICAg
ICAgICAgY29udGVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0LnNs
aWNlKHBvcywgcG9zICsgc2tpcHBlZCkpKTsKKyAgICAgICAgICAgICAgY29sICs9IHNraXBwZWQ7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIW0pIGJyZWFrOworICAgICAgICAgICAg
cG9zICs9IHNraXBwZWQgKyAxOworICAgICAgICAgICAgaWYgKG1bMF0gPT0gIlx0IikgeworICAg
ICAgICAgICAgICB2YXIgdGFiID0gbWFrZVRhYihjb2wpOworICAgICAgICAgICAgICBjb250ZW50
LmFwcGVuZENoaWxkKHRhYi5lbGVtZW50LmNsb25lTm9kZSh0cnVlKSk7CisgICAgICAgICAgICAg
IGNvbCArPSB0YWIud2lkdGg7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICB2
YXIgdG9rZW4gPSBlbHQoInNwYW4iLCAiXHUyMDIyIiwgImNtLWludmFsaWRjaGFyIik7CisgICAg
ICAgICAgICAgIHRva2VuLnRpdGxlID0gIlxcdSIgKyBtWzBdLmNoYXJDb2RlQXQoMCkudG9TdHJp
bmcoMTYpOworICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKHRva2VuKTsKKyAgICAg
ICAgICAgICAgY29sICs9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGlmIChzdHlsZSkgaHRtbC5hcHBlbmRDaGlsZChlbHQoInNwYW4iLCBbY29udGVu
dF0sIHN0eWxlKSk7CisgICAgICAgIGVsc2UgaHRtbC5hcHBlbmRDaGlsZChjb250ZW50KTsKKyAg
ICAgIH0KKyAgICAgIHZhciBzcGFuID0gc3Bhbl87CisgICAgICBpZiAod3JhcEF0ICE9IG51bGwp
IHsKKyAgICAgICAgdmFyIG91dFBvcyA9IDAsIGFuY2hvciA9IHByZS5hbmNob3IgPSBlbHQoInNw
YW4iKTsKKyAgICAgICAgc3BhbiA9IGZ1bmN0aW9uKGh0bWwsIHRleHQsIHN0eWxlKSB7CisgICAg
ICAgICAgdmFyIGwgPSB0ZXh0Lmxlbmd0aDsKKyAgICAgICAgICBpZiAod3JhcEF0ID49IG91dFBv
cyAmJiB3cmFwQXQgPCBvdXRQb3MgKyBsKSB7CisgICAgICAgICAgICBpZiAod3JhcEF0ID4gb3V0
UG9zKSB7CisgICAgICAgICAgICAgIHNwYW5fKGh0bWwsIHRleHQuc2xpY2UoMCwgd3JhcEF0IC0g
b3V0UG9zKSwgc3R5bGUpOworICAgICAgICAgICAgICAvLyBTZWUgY29tbWVudCBhdCB0aGUgZGVm
aW5pdGlvbiBvZiBzcGFuQWZmZWN0c1dyYXBwaW5nCisgICAgICAgICAgICAgIGlmICh3cmFwV0JS
KSBodG1sLmFwcGVuZENoaWxkKGVsdCgid2JyIikpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaHRtbC5hcHBlbmRDaGlsZChhbmNob3IpOworICAgICAgICAgICAgdmFyIGN1dCA9IHdyYXBB
dCAtIG91dFBvczsKKyAgICAgICAgICAgIHNwYW5fKGFuY2hvciwgb3BlcmEgPyB0ZXh0LnNsaWNl
KGN1dCwgY3V0ICsgMSkgOiB0ZXh0LnNsaWNlKGN1dCksIHN0eWxlKTsKKyAgICAgICAgICAgIGlm
IChvcGVyYSkgc3Bhbl8oaHRtbCwgdGV4dC5zbGljZShjdXQgKyAxKSwgc3R5bGUpOworICAgICAg
ICAgICAgd3JhcEF0LS07CisgICAgICAgICAgICBvdXRQb3MgKz0gbDsKKyAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgb3V0UG9zICs9IGw7CisgICAgICAgICAgICBzcGFuXyhodG1sLCB0
ZXh0LCBzdHlsZSk7CisgICAgICAgICAgICBpZiAob3V0UG9zID09IHdyYXBBdCAmJiBvdXRQb3Mg
PT0gbGVuKSB7CisgICAgICAgICAgICAgIHNldFRleHRDb250ZW50KGFuY2hvciwgZW9sU3BhbkNv
bnRlbnQpOworICAgICAgICAgICAgICBodG1sLmFwcGVuZENoaWxkKGFuY2hvcik7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAvLyBTdG9wIG91dHB1dHRpbmcgSFRNTCB3aGVuIGdvbmUgc3Vm
ZmljaWVudGx5IGZhciBiZXlvbmQgbWVhc3VyZQorICAgICAgICAgICAgZWxzZSBpZiAob3V0UG9z
ID4gd3JhcEF0ICsgMTAgJiYgL1xzLy50ZXN0KHRleHQpKSBzcGFuID0gZnVuY3Rpb24oKXt9Owor
ICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgIH0KKworICAgICAgdmFyIHN0ID0gdGhpcy5z
dHlsZXMsIGFsbFRleHQgPSB0aGlzLnRleHQsIG1hcmtlZCA9IHRoaXMubWFya2VkOworICAgICAg
dmFyIGxlbiA9IGFsbFRleHQubGVuZ3RoOworICAgICAgZnVuY3Rpb24gc3R5bGVUb0NsYXNzKHN0
eWxlKSB7CisgICAgICAgIGlmICghc3R5bGUpIHJldHVybiBudWxsOworICAgICAgICByZXR1cm4g
ImNtLSIgKyBzdHlsZS5yZXBsYWNlKC8gKy9nLCAiIGNtLSIpOworICAgICAgfQorICAgICAgaWYg
KCFhbGxUZXh0ICYmIHdyYXBBdCA9PSBudWxsKSB7CisgICAgICAgIHNwYW4ocHJlLCAiICIpOwor
ICAgICAgfSBlbHNlIGlmICghbWFya2VkIHx8ICFtYXJrZWQubGVuZ3RoKSB7CisgICAgICAgIGZv
ciAodmFyIGkgPSAwLCBjaCA9IDA7IGNoIDwgbGVuOyBpKz0yKSB7CisgICAgICAgICAgdmFyIHN0
ciA9IHN0W2ldLCBzdHlsZSA9IHN0W2krMV0sIGwgPSBzdHIubGVuZ3RoOworICAgICAgICAgIGlm
IChjaCArIGwgPiBsZW4pIHN0ciA9IHN0ci5zbGljZSgwLCBsZW4gLSBjaCk7CisgICAgICAgICAg
Y2ggKz0gbDsKKyAgICAgICAgICBzcGFuKHByZSwgc3RyLCBzdHlsZVRvQ2xhc3Moc3R5bGUpKTsK
KyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIHBvcyA9IDAsIGkgPSAwLCB0
ZXh0ID0gIiIsIHN0eWxlLCBzZyA9IDA7CisgICAgICAgIHZhciBuZXh0Q2hhbmdlID0gbWFya2Vk
WzBdLmZyb20gfHwgMCwgbWFya3MgPSBbXSwgbWFya3BvcyA9IDA7CisgICAgICAgIHZhciBhZHZh
bmNlTWFya3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICB2YXIgbTsKKyAgICAgICAgICB3aGls
ZSAobWFya3BvcyA8IG1hcmtlZC5sZW5ndGggJiYKKyAgICAgICAgICAgICAgICAgKChtID0gbWFy
a2VkW21hcmtwb3NdKS5mcm9tID09IHBvcyB8fCBtLmZyb20gPT0gbnVsbCkpIHsKKyAgICAgICAg
ICAgIGlmIChtLnN0eWxlICE9IG51bGwpIG1hcmtzLnB1c2gobSk7CisgICAgICAgICAgICArK21h
cmtwb3M7CisgICAgICAgICAgfQorICAgICAgICAgIG5leHRDaGFuZ2UgPSBtYXJrcG9zIDwgbWFy
a2VkLmxlbmd0aCA/IG1hcmtlZFttYXJrcG9zXS5mcm9tIDogSW5maW5pdHk7CisgICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBtYXJrcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFy
IHRvID0gbWFya3NbaV0udG87CisgICAgICAgICAgICBpZiAodG8gPT0gbnVsbCkgdG8gPSBJbmZp
bml0eTsKKyAgICAgICAgICAgIGlmICh0byA9PSBwb3MpIG1hcmtzLnNwbGljZShpLS0sIDEpOwor
ICAgICAgICAgICAgZWxzZSBuZXh0Q2hhbmdlID0gTWF0aC5taW4odG8sIG5leHRDaGFuZ2UpOwor
ICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgdmFyIG0gPSAwOworICAgICAgICB3aGls
ZSAocG9zIDwgbGVuKSB7CisgICAgICAgICAgaWYgKG5leHRDaGFuZ2UgPT0gcG9zKSBhZHZhbmNl
TWFya3MoKTsKKyAgICAgICAgICB2YXIgdXB0byA9IE1hdGgubWluKGxlbiwgbmV4dENoYW5nZSk7
CisgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGlmICh0ZXh0KSB7CisgICAg
ICAgICAgICAgIHZhciBlbmQgPSBwb3MgKyB0ZXh0Lmxlbmd0aDsKKyAgICAgICAgICAgICAgdmFy
IGFwcGxpZWRTdHlsZSA9IHN0eWxlOworICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8
IG1hcmtzLmxlbmd0aDsgKytqKQorICAgICAgICAgICAgICAgIGFwcGxpZWRTdHlsZSA9IChhcHBs
aWVkU3R5bGUgPyBhcHBsaWVkU3R5bGUgKyAiICIgOiAiIikgKyBtYXJrc1tqXS5zdHlsZTsKKyAg
ICAgICAgICAgICAgc3BhbihwcmUsIGVuZCA+IHVwdG8gPyB0ZXh0LnNsaWNlKDAsIHVwdG8gLSBw
b3MpIDogdGV4dCwgYXBwbGllZFN0eWxlKTsKKyAgICAgICAgICAgICAgaWYgKGVuZCA+PSB1cHRv
KSB7dGV4dCA9IHRleHQuc2xpY2UodXB0byAtIHBvcyk7IHBvcyA9IHVwdG87IGJyZWFrO30KKyAg
ICAgICAgICAgICAgcG9zID0gZW5kOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGV4dCA9
IHN0W2krK107IHN0eWxlID0gc3R5bGVUb0NsYXNzKHN0W2krK10pOworICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgfQorICAgICAgcmV0dXJuIHByZTsKKyAgICB9LAorICAgIGNsZWFuVXA6
IGZ1bmN0aW9uKCkgeworICAgICAgdGhpcy5wYXJlbnQgPSBudWxsOworICAgICAgaWYgKHRoaXMu
bWFya2VkKQorICAgICAgICBmb3IgKHZhciBpID0gMCwgZSA9IHRoaXMubWFya2VkLmxlbmd0aDsg
aSA8IGU7ICsraSkgdGhpcy5tYXJrZWRbaV0uZGV0YWNoKHRoaXMpOworICAgIH0KKyAgfTsKKyAg
Ly8gVXRpbGl0eSB1c2VkIGJ5IHJlcGxhY2UgYW5kIHNwbGl0IGFib3ZlCisgIGZ1bmN0aW9uIGNv
cHlTdHlsZXMoZnJvbSwgdG8sIHNvdXJjZSwgZGVzdCkgeworICAgIGZvciAodmFyIGkgPSAwLCBw
b3MgPSAwLCBzdGF0ZSA9IDA7IHBvcyA8IHRvOyBpKz0yKSB7CisgICAgICB2YXIgcGFydCA9IHNv
dXJjZVtpXSwgZW5kID0gcG9zICsgcGFydC5sZW5ndGg7CisgICAgICBpZiAoc3RhdGUgPT0gMCkg
eworICAgICAgICBpZiAoZW5kID4gZnJvbSkgZGVzdC5wdXNoKHBhcnQuc2xpY2UoZnJvbSAtIHBv
cywgTWF0aC5taW4ocGFydC5sZW5ndGgsIHRvIC0gcG9zKSksIHNvdXJjZVtpKzFdKTsKKyAgICAg
ICAgaWYgKGVuZCA+PSBmcm9tKSBzdGF0ZSA9IDE7CisgICAgICB9IGVsc2UgaWYgKHN0YXRlID09
IDEpIHsKKyAgICAgICAgaWYgKGVuZCA+IHRvKSBkZXN0LnB1c2gocGFydC5zbGljZSgwLCB0byAt
IHBvcyksIHNvdXJjZVtpKzFdKTsKKyAgICAgICAgZWxzZSBkZXN0LnB1c2gocGFydCwgc291cmNl
W2krMV0pOworICAgICAgfQorICAgICAgcG9zID0gZW5kOworICAgIH0KKyAgfQorCisgIC8vIERh
dGEgc3RydWN0dXJlIHRoYXQgaG9sZHMgdGhlIHNlcXVlbmNlIG9mIGxpbmVzLgorICBmdW5jdGlv
biBMZWFmQ2h1bmsobGluZXMpIHsKKyAgICB0aGlzLmxpbmVzID0gbGluZXM7CisgICAgdGhpcy5w
YXJlbnQgPSBudWxsOworICAgIGZvciAodmFyIGkgPSAwLCBlID0gbGluZXMubGVuZ3RoLCBoZWln
aHQgPSAwOyBpIDwgZTsgKytpKSB7CisgICAgICBsaW5lc1tpXS5wYXJlbnQgPSB0aGlzOworICAg
ICAgaGVpZ2h0ICs9IGxpbmVzW2ldLmhlaWdodDsKKyAgICB9CisgICAgdGhpcy5oZWlnaHQgPSBo
ZWlnaHQ7CisgIH0KKyAgTGVhZkNodW5rLnByb3RvdHlwZSA9IHsKKyAgICBjaHVua1NpemU6IGZ1
bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5saW5lcy5sZW5ndGg7IH0sCisgICAgcmVtb3ZlOiBmdW5j
dGlvbihhdCwgbiwgY2FsbGJhY2tzKSB7CisgICAgICBmb3IgKHZhciBpID0gYXQsIGUgPSBhdCAr
IG47IGkgPCBlOyArK2kpIHsKKyAgICAgICAgdmFyIGxpbmUgPSB0aGlzLmxpbmVzW2ldOworICAg
ICAgICB0aGlzLmhlaWdodCAtPSBsaW5lLmhlaWdodDsKKyAgICAgICAgbGluZS5jbGVhblVwKCk7
CisgICAgICAgIGlmIChsaW5lLmhhbmRsZXJzKQorICAgICAgICAgIGZvciAodmFyIGogPSAwOyBq
IDwgbGluZS5oYW5kbGVycy5sZW5ndGg7ICsraikgY2FsbGJhY2tzLnB1c2gobGluZS5oYW5kbGVy
c1tqXSk7CisgICAgICB9CisgICAgICB0aGlzLmxpbmVzLnNwbGljZShhdCwgbik7CisgICAgfSwK
KyAgICBjb2xsYXBzZTogZnVuY3Rpb24obGluZXMpIHsKKyAgICAgIGxpbmVzLnNwbGljZS5hcHBs
eShsaW5lcywgW2xpbmVzLmxlbmd0aCwgMF0uY29uY2F0KHRoaXMubGluZXMpKTsKKyAgICB9LAor
ICAgIGluc2VydEhlaWdodDogZnVuY3Rpb24oYXQsIGxpbmVzLCBoZWlnaHQpIHsKKyAgICAgIHRo
aXMuaGVpZ2h0ICs9IGhlaWdodDsKKyAgICAgIHRoaXMubGluZXMgPSB0aGlzLmxpbmVzLnNsaWNl
KDAsIGF0KS5jb25jYXQobGluZXMpLmNvbmNhdCh0aGlzLmxpbmVzLnNsaWNlKGF0KSk7CisgICAg
ICBmb3IgKHZhciBpID0gMCwgZSA9IGxpbmVzLmxlbmd0aDsgaSA8IGU7ICsraSkgbGluZXNbaV0u
cGFyZW50ID0gdGhpczsKKyAgICB9LAorICAgIGl0ZXJOOiBmdW5jdGlvbihhdCwgbiwgb3ApIHsK
KyAgICAgIGZvciAodmFyIGUgPSBhdCArIG47IGF0IDwgZTsgKythdCkKKyAgICAgICAgaWYgKG9w
KHRoaXMubGluZXNbYXRdKSkgcmV0dXJuIHRydWU7CisgICAgfQorICB9OworICBmdW5jdGlvbiBC
cmFuY2hDaHVuayhjaGlsZHJlbikgeworICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjsKKyAg
ICB2YXIgc2l6ZSA9IDAsIGhlaWdodCA9IDA7CisgICAgZm9yICh2YXIgaSA9IDAsIGUgPSBjaGls
ZHJlbi5sZW5ndGg7IGkgPCBlOyArK2kpIHsKKyAgICAgIHZhciBjaCA9IGNoaWxkcmVuW2ldOwor
ICAgICAgc2l6ZSArPSBjaC5jaHVua1NpemUoKTsgaGVpZ2h0ICs9IGNoLmhlaWdodDsKKyAgICAg
IGNoLnBhcmVudCA9IHRoaXM7CisgICAgfQorICAgIHRoaXMuc2l6ZSA9IHNpemU7CisgICAgdGhp
cy5oZWlnaHQgPSBoZWlnaHQ7CisgICAgdGhpcy5wYXJlbnQgPSBudWxsOworICB9CisgIEJyYW5j
aENodW5rLnByb3RvdHlwZSA9IHsKKyAgICBjaHVua1NpemU6IGZ1bmN0aW9uKCkgeyByZXR1cm4g
dGhpcy5zaXplOyB9LAorICAgIHJlbW92ZTogZnVuY3Rpb24oYXQsIG4sIGNhbGxiYWNrcykgewor
ICAgICAgdGhpcy5zaXplIC09IG47CisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hp
bGRyZW4ubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5jaGlsZHJlbltp
XSwgc3ogPSBjaGlsZC5jaHVua1NpemUoKTsKKyAgICAgICAgaWYgKGF0IDwgc3opIHsKKyAgICAg
ICAgICB2YXIgcm0gPSBNYXRoLm1pbihuLCBzeiAtIGF0KSwgb2xkSGVpZ2h0ID0gY2hpbGQuaGVp
Z2h0OworICAgICAgICAgIGNoaWxkLnJlbW92ZShhdCwgcm0sIGNhbGxiYWNrcyk7CisgICAgICAg
ICAgdGhpcy5oZWlnaHQgLT0gb2xkSGVpZ2h0IC0gY2hpbGQuaGVpZ2h0OworICAgICAgICAgIGlm
IChzeiA9PSBybSkgeyB0aGlzLmNoaWxkcmVuLnNwbGljZShpLS0sIDEpOyBjaGlsZC5wYXJlbnQg
PSBudWxsOyB9CisgICAgICAgICAgaWYgKChuIC09IHJtKSA9PSAwKSBicmVhazsKKyAgICAgICAg
ICBhdCA9IDA7CisgICAgICAgIH0gZWxzZSBhdCAtPSBzejsKKyAgICAgIH0KKyAgICAgIGlmICh0
aGlzLnNpemUgLSBuIDwgMjUpIHsKKyAgICAgICAgdmFyIGxpbmVzID0gW107CisgICAgICAgIHRo
aXMuY29sbGFwc2UobGluZXMpOworICAgICAgICB0aGlzLmNoaWxkcmVuID0gW25ldyBMZWFmQ2h1
bmsobGluZXMpXTsKKyAgICAgICAgdGhpcy5jaGlsZHJlblswXS5wYXJlbnQgPSB0aGlzOworICAg
ICAgfQorICAgIH0sCisgICAgY29sbGFwc2U6IGZ1bmN0aW9uKGxpbmVzKSB7CisgICAgICBmb3Ig
KHZhciBpID0gMCwgZSA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgZTsgKytpKSB0aGlzLmNo
aWxkcmVuW2ldLmNvbGxhcHNlKGxpbmVzKTsKKyAgICB9LAorICAgIGluc2VydDogZnVuY3Rpb24o
YXQsIGxpbmVzKSB7CisgICAgICB2YXIgaGVpZ2h0ID0gMDsKKyAgICAgIGZvciAodmFyIGkgPSAw
LCBlID0gbGluZXMubGVuZ3RoOyBpIDwgZTsgKytpKSBoZWlnaHQgKz0gbGluZXNbaV0uaGVpZ2h0
OworICAgICAgdGhpcy5pbnNlcnRIZWlnaHQoYXQsIGxpbmVzLCBoZWlnaHQpOworICAgIH0sCisg
ICAgaW5zZXJ0SGVpZ2h0OiBmdW5jdGlvbihhdCwgbGluZXMsIGhlaWdodCkgeworICAgICAgdGhp
cy5zaXplICs9IGxpbmVzLmxlbmd0aDsKKyAgICAgIHRoaXMuaGVpZ2h0ICs9IGhlaWdodDsKKyAg
ICAgIGZvciAodmFyIGkgPSAwLCBlID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkgPCBlOyArK2kp
IHsKKyAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5jaGlsZHJlbltpXSwgc3ogPSBjaGlsZC5jaHVu
a1NpemUoKTsKKyAgICAgICAgaWYgKGF0IDw9IHN6KSB7CisgICAgICAgICAgY2hpbGQuaW5zZXJ0
SGVpZ2h0KGF0LCBsaW5lcywgaGVpZ2h0KTsKKyAgICAgICAgICBpZiAoY2hpbGQubGluZXMgJiYg
Y2hpbGQubGluZXMubGVuZ3RoID4gNTApIHsKKyAgICAgICAgICAgIHdoaWxlIChjaGlsZC5saW5l
cy5sZW5ndGggPiA1MCkgeworICAgICAgICAgICAgICB2YXIgc3BpbGxlZCA9IGNoaWxkLmxpbmVz
LnNwbGljZShjaGlsZC5saW5lcy5sZW5ndGggLSAyNSwgMjUpOworICAgICAgICAgICAgICB2YXIg
bmV3bGVhZiA9IG5ldyBMZWFmQ2h1bmsoc3BpbGxlZCk7CisgICAgICAgICAgICAgIGNoaWxkLmhl
aWdodCAtPSBuZXdsZWFmLmhlaWdodDsKKyAgICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5zcGxp
Y2UoaSArIDEsIDAsIG5ld2xlYWYpOworICAgICAgICAgICAgICBuZXdsZWFmLnBhcmVudCA9IHRo
aXM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlzLm1heWJlU3BpbGwoKTsKKyAgICAg
ICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYXQgLT0gc3o7Cisg
ICAgICB9CisgICAgfSwKKyAgICBtYXliZVNwaWxsOiBmdW5jdGlvbigpIHsKKyAgICAgIGlmICh0
aGlzLmNoaWxkcmVuLmxlbmd0aCA8PSAxMCkgcmV0dXJuOworICAgICAgdmFyIG1lID0gdGhpczsK
KyAgICAgIGRvIHsKKyAgICAgICAgdmFyIHNwaWxsZWQgPSBtZS5jaGlsZHJlbi5zcGxpY2UobWUu
Y2hpbGRyZW4ubGVuZ3RoIC0gNSwgNSk7CisgICAgICAgIHZhciBzaWJsaW5nID0gbmV3IEJyYW5j
aENodW5rKHNwaWxsZWQpOworICAgICAgICBpZiAoIW1lLnBhcmVudCkgeyAvLyBCZWNvbWUgdGhl
IHBhcmVudCBub2RlCisgICAgICAgICAgdmFyIGNvcHkgPSBuZXcgQnJhbmNoQ2h1bmsobWUuY2hp
bGRyZW4pOworICAgICAgICAgIGNvcHkucGFyZW50ID0gbWU7CisgICAgICAgICAgbWUuY2hpbGRy
ZW4gPSBbY29weSwgc2libGluZ107CisgICAgICAgICAgbWUgPSBjb3B5OworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgIG1lLnNpemUgLT0gc2libGluZy5zaXplOworICAgICAgICAgIG1lLmhl
aWdodCAtPSBzaWJsaW5nLmhlaWdodDsKKyAgICAgICAgICB2YXIgbXlJbmRleCA9IGluZGV4T2Yo
bWUucGFyZW50LmNoaWxkcmVuLCBtZSk7CisgICAgICAgICAgbWUucGFyZW50LmNoaWxkcmVuLnNw
bGljZShteUluZGV4ICsgMSwgMCwgc2libGluZyk7CisgICAgICAgIH0KKyAgICAgICAgc2libGlu
Zy5wYXJlbnQgPSBtZS5wYXJlbnQ7CisgICAgICB9IHdoaWxlIChtZS5jaGlsZHJlbi5sZW5ndGgg
PiAxMCk7CisgICAgICBtZS5wYXJlbnQubWF5YmVTcGlsbCgpOworICAgIH0sCisgICAgaXRlcjog
ZnVuY3Rpb24oZnJvbSwgdG8sIG9wKSB7IHRoaXMuaXRlck4oZnJvbSwgdG8gLSBmcm9tLCBvcCk7
IH0sCisgICAgaXRlck46IGZ1bmN0aW9uKGF0LCBuLCBvcCkgeworICAgICAgZm9yICh2YXIgaSA9
IDAsIGUgPSB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGU7ICsraSkgeworICAgICAgICB2YXIg
Y2hpbGQgPSB0aGlzLmNoaWxkcmVuW2ldLCBzeiA9IGNoaWxkLmNodW5rU2l6ZSgpOworICAgICAg
ICBpZiAoYXQgPCBzeikgeworICAgICAgICAgIHZhciB1c2VkID0gTWF0aC5taW4obiwgc3ogLSBh
dCk7CisgICAgICAgICAgaWYgKGNoaWxkLml0ZXJOKGF0LCB1c2VkLCBvcCkpIHJldHVybiB0cnVl
OworICAgICAgICAgIGlmICgobiAtPSB1c2VkKSA9PSAwKSBicmVhazsKKyAgICAgICAgICBhdCA9
IDA7CisgICAgICAgIH0gZWxzZSBhdCAtPSBzejsKKyAgICAgIH0KKyAgICB9CisgIH07CisKKyAg
ZnVuY3Rpb24gZ2V0TGluZUF0KGNodW5rLCBuKSB7CisgICAgd2hpbGUgKCFjaHVuay5saW5lcykg
eworICAgICAgZm9yICh2YXIgaSA9IDA7OyArK2kpIHsKKyAgICAgICAgdmFyIGNoaWxkID0gY2h1
bmsuY2hpbGRyZW5baV0sIHN6ID0gY2hpbGQuY2h1bmtTaXplKCk7CisgICAgICAgIGlmIChuIDwg
c3opIHsgY2h1bmsgPSBjaGlsZDsgYnJlYWs7IH0KKyAgICAgICAgbiAtPSBzejsKKyAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuIGNodW5rLmxpbmVzW25dOworICB9CisgIGZ1bmN0aW9uIGxpbmVO
byhsaW5lKSB7CisgICAgaWYgKGxpbmUucGFyZW50ID09IG51bGwpIHJldHVybiBudWxsOworICAg
IHZhciBjdXIgPSBsaW5lLnBhcmVudCwgbm8gPSBpbmRleE9mKGN1ci5saW5lcywgbGluZSk7Cisg
ICAgZm9yICh2YXIgY2h1bmsgPSBjdXIucGFyZW50OyBjaHVuazsgY3VyID0gY2h1bmssIGNodW5r
ID0gY2h1bmsucGFyZW50KSB7CisgICAgICBmb3IgKHZhciBpID0gMCwgZSA9IGNodW5rLmNoaWxk
cmVuLmxlbmd0aDsgOyArK2kpIHsKKyAgICAgICAgaWYgKGNodW5rLmNoaWxkcmVuW2ldID09IGN1
cikgYnJlYWs7CisgICAgICAgIG5vICs9IGNodW5rLmNoaWxkcmVuW2ldLmNodW5rU2l6ZSgpOwor
ICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbm87CisgIH0KKyAgZnVuY3Rpb24gbGluZUF0SGVp
Z2h0KGNodW5rLCBoKSB7CisgICAgdmFyIG4gPSAwOworICAgIG91dGVyOiBkbyB7CisgICAgICBm
b3IgKHZhciBpID0gMCwgZSA9IGNodW5rLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGU7ICsraSkgewor
ICAgICAgICB2YXIgY2hpbGQgPSBjaHVuay5jaGlsZHJlbltpXSwgY2ggPSBjaGlsZC5oZWlnaHQ7
CisgICAgICAgIGlmIChoIDwgY2gpIHsgY2h1bmsgPSBjaGlsZDsgY29udGludWUgb3V0ZXI7IH0K
KyAgICAgICAgaCAtPSBjaDsKKyAgICAgICAgbiArPSBjaGlsZC5jaHVua1NpemUoKTsKKyAgICAg
IH0KKyAgICAgIHJldHVybiBuOworICAgIH0gd2hpbGUgKCFjaHVuay5saW5lcyk7CisgICAgZm9y
ICh2YXIgaSA9IDAsIGUgPSBjaHVuay5saW5lcy5sZW5ndGg7IGkgPCBlOyArK2kpIHsKKyAgICAg
IHZhciBsaW5lID0gY2h1bmsubGluZXNbaV0sIGxoID0gbGluZS5oZWlnaHQ7CisgICAgICBpZiAo
aCA8IGxoKSBicmVhazsKKyAgICAgIGggLT0gbGg7CisgICAgfQorICAgIHJldHVybiBuICsgaTsK
KyAgfQorICBmdW5jdGlvbiBoZWlnaHRBdExpbmUoY2h1bmssIG4pIHsKKyAgICB2YXIgaCA9IDA7
CisgICAgb3V0ZXI6IGRvIHsKKyAgICAgIGZvciAodmFyIGkgPSAwLCBlID0gY2h1bmsuY2hpbGRy
ZW4ubGVuZ3RoOyBpIDwgZTsgKytpKSB7CisgICAgICAgIHZhciBjaGlsZCA9IGNodW5rLmNoaWxk
cmVuW2ldLCBzeiA9IGNoaWxkLmNodW5rU2l6ZSgpOworICAgICAgICBpZiAobiA8IHN6KSB7IGNo
dW5rID0gY2hpbGQ7IGNvbnRpbnVlIG91dGVyOyB9CisgICAgICAgIG4gLT0gc3o7CisgICAgICAg
IGggKz0gY2hpbGQuaGVpZ2h0OworICAgICAgfQorICAgICAgcmV0dXJuIGg7CisgICAgfSB3aGls
ZSAoIWNodW5rLmxpbmVzKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkgaCArPSBj
aHVuay5saW5lc1tpXS5oZWlnaHQ7CisgICAgcmV0dXJuIGg7CisgIH0KKworICAvLyBUaGUgaGlz
dG9yeSBvYmplY3QgJ2NodW5rcycgY2hhbmdlcyB0aGF0IGFyZSBtYWRlIGNsb3NlIHRvZ2V0aGVy
CisgIC8vIGFuZCBhdCBhbG1vc3QgdGhlIHNhbWUgdGltZSBpbnRvIGJpZ2dlciB1bmRvYWJsZSB1
bml0cy4KKyAgZnVuY3Rpb24gSGlzdG9yeSgpIHsKKyAgICB0aGlzLnRpbWUgPSAwOworICAgIHRo
aXMuZG9uZSA9IFtdOyB0aGlzLnVuZG9uZSA9IFtdOworICAgIHRoaXMuY29tcG91bmQgPSAwOwor
ICAgIHRoaXMuY2xvc2VkID0gZmFsc2U7CisgIH0KKyAgSGlzdG9yeS5wcm90b3R5cGUgPSB7Cisg
ICAgYWRkQ2hhbmdlOiBmdW5jdGlvbihzdGFydCwgYWRkZWQsIG9sZCkgeworICAgICAgdGhpcy51
bmRvbmUubGVuZ3RoID0gMDsKKyAgICAgIHZhciB0aW1lID0gK25ldyBEYXRlLCBjdXIgPSB0aGlz
LmRvbmVbdGhpcy5kb25lLmxlbmd0aCAtIDFdLCBsYXN0ID0gY3VyICYmIGN1cltjdXIubGVuZ3Ro
IC0gMV07CisgICAgICB2YXIgZHRpbWUgPSB0aW1lIC0gdGhpcy50aW1lOworCisgICAgICBpZiAo
dGhpcy5jb21wb3VuZCAmJiBjdXIgJiYgIXRoaXMuY2xvc2VkKSB7CisgICAgICAgIGN1ci5wdXNo
KHtzdGFydDogc3RhcnQsIGFkZGVkOiBhZGRlZCwgb2xkOiBvbGR9KTsKKyAgICAgIH0gZWxzZSBp
ZiAoZHRpbWUgPiA0MDAgfHwgIWxhc3QgfHwgdGhpcy5jbG9zZWQgfHwKKyAgICAgICAgICAgICAg
ICAgbGFzdC5zdGFydCA+IHN0YXJ0ICsgb2xkLmxlbmd0aCB8fCBsYXN0LnN0YXJ0ICsgbGFzdC5h
ZGRlZCA8IHN0YXJ0KSB7CisgICAgICAgIHRoaXMuZG9uZS5wdXNoKFt7c3RhcnQ6IHN0YXJ0LCBh
ZGRlZDogYWRkZWQsIG9sZDogb2xkfV0pOworICAgICAgICB0aGlzLmNsb3NlZCA9IGZhbHNlOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIHN0YXJ0QmVmb3JlID0gTWF0aC5tYXgoMCwgbGFz
dC5zdGFydCAtIHN0YXJ0KSwKKyAgICAgICAgICAgIGVuZEFmdGVyID0gTWF0aC5tYXgoMCwgKHN0
YXJ0ICsgb2xkLmxlbmd0aCkgLSAobGFzdC5zdGFydCArIGxhc3QuYWRkZWQpKTsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IHN0YXJ0QmVmb3JlOyBpID4gMDsgLS1pKSBsYXN0Lm9sZC51bnNoaWZ0KG9s
ZFtpIC0gMV0pOworICAgICAgICBmb3IgKHZhciBpID0gZW5kQWZ0ZXI7IGkgPiAwOyAtLWkpIGxh
c3Qub2xkLnB1c2gob2xkW29sZC5sZW5ndGggLSBpXSk7CisgICAgICAgIGlmIChzdGFydEJlZm9y
ZSkgbGFzdC5zdGFydCA9IHN0YXJ0OworICAgICAgICBsYXN0LmFkZGVkICs9IGFkZGVkIC0gKG9s
ZC5sZW5ndGggLSBzdGFydEJlZm9yZSAtIGVuZEFmdGVyKTsKKyAgICAgIH0KKyAgICAgIHRoaXMu
dGltZSA9IHRpbWU7CisgICAgfSwKKyAgICBzdGFydENvbXBvdW5kOiBmdW5jdGlvbigpIHsKKyAg
ICAgIGlmICghdGhpcy5jb21wb3VuZCsrKSB0aGlzLmNsb3NlZCA9IHRydWU7CisgICAgfSwKKyAg
ICBlbmRDb21wb3VuZDogZnVuY3Rpb24oKSB7CisgICAgICBpZiAoIS0tdGhpcy5jb21wb3VuZCkg
dGhpcy5jbG9zZWQgPSB0cnVlOworICAgIH0KKyAgfTsKKworICBmdW5jdGlvbiBzdG9wTWV0aG9k
KCkge2Vfc3RvcCh0aGlzKTt9CisgIC8vIEVuc3VyZSBhbiBldmVudCBoYXMgYSBzdG9wIG1ldGhv
ZC4KKyAgZnVuY3Rpb24gYWRkU3RvcChldmVudCkgeworICAgIGlmICghZXZlbnQuc3RvcCkgZXZl
bnQuc3RvcCA9IHN0b3BNZXRob2Q7CisgICAgcmV0dXJuIGV2ZW50OworICB9CisKKyAgZnVuY3Rp
b24gZV9wcmV2ZW50RGVmYXVsdChlKSB7CisgICAgaWYgKGUucHJldmVudERlZmF1bHQpIGUucHJl
dmVudERlZmF1bHQoKTsKKyAgICBlbHNlIGUucmV0dXJuVmFsdWUgPSBmYWxzZTsKKyAgfQorICBm
dW5jdGlvbiBlX3N0b3BQcm9wYWdhdGlvbihlKSB7CisgICAgaWYgKGUuc3RvcFByb3BhZ2F0aW9u
KSBlLnN0b3BQcm9wYWdhdGlvbigpOworICAgIGVsc2UgZS5jYW5jZWxCdWJibGUgPSB0cnVlOwor
ICB9CisgIGZ1bmN0aW9uIGVfc3RvcChlKSB7ZV9wcmV2ZW50RGVmYXVsdChlKTsgZV9zdG9wUHJv
cGFnYXRpb24oZSk7fQorICBDb2RlTWlycm9yLmVfc3RvcCA9IGVfc3RvcDsKKyAgQ29kZU1pcnJv
ci5lX3ByZXZlbnREZWZhdWx0ID0gZV9wcmV2ZW50RGVmYXVsdDsKKyAgQ29kZU1pcnJvci5lX3N0
b3BQcm9wYWdhdGlvbiA9IGVfc3RvcFByb3BhZ2F0aW9uOworCisgIGZ1bmN0aW9uIGVfdGFyZ2V0
KGUpIHtyZXR1cm4gZS50YXJnZXQgfHwgZS5zcmNFbGVtZW50O30KKyAgZnVuY3Rpb24gZV9idXR0
b24oZSkgeworICAgIHZhciBiID0gZS53aGljaDsKKyAgICBpZiAoYiA9PSBudWxsKSB7CisgICAg
ICBpZiAoZS5idXR0b24gJiAxKSBiID0gMTsKKyAgICAgIGVsc2UgaWYgKGUuYnV0dG9uICYgMikg
YiA9IDM7CisgICAgICBlbHNlIGlmIChlLmJ1dHRvbiAmIDQpIGIgPSAyOworICAgIH0KKyAgICBp
ZiAobWFjICYmIGUuY3RybEtleSAmJiBiID09IDEpIGIgPSAzOworICAgIHJldHVybiBiOworICB9
CisKKyAgLy8gQWxsb3cgM3JkLXBhcnR5IGNvZGUgdG8gb3ZlcnJpZGUgZXZlbnQgcHJvcGVydGll
cyBieSBhZGRpbmcgYW4gb3ZlcnJpZGUKKyAgLy8gb2JqZWN0IHRvIGFuIGV2ZW50IG9iamVjdC4K
KyAgZnVuY3Rpb24gZV9wcm9wKGUsIHByb3ApIHsKKyAgICB2YXIgb3ZlcnJpZGRlbiA9IGUub3Zl
cnJpZGUgJiYgZS5vdmVycmlkZS5oYXNPd25Qcm9wZXJ0eShwcm9wKTsKKyAgICByZXR1cm4gb3Zl
cnJpZGRlbiA/IGUub3ZlcnJpZGVbcHJvcF0gOiBlW3Byb3BdOworICB9CisKKyAgLy8gRXZlbnQg
aGFuZGxlciByZWdpc3RyYXRpb24uIElmIGRpc2Nvbm5lY3QgaXMgdHJ1ZSwgaXQnbGwgcmV0dXJu
IGEKKyAgLy8gZnVuY3Rpb24gdGhhdCB1bnJlZ2lzdGVycyB0aGUgaGFuZGxlci4KKyAgZnVuY3Rp
b24gY29ubmVjdChub2RlLCB0eXBlLCBoYW5kbGVyLCBkaXNjb25uZWN0KSB7CisgICAgaWYgKHR5
cGVvZiBub2RlLmFkZEV2ZW50TGlzdGVuZXIgPT0gImZ1bmN0aW9uIikgeworICAgICAgbm9kZS5h
ZGRFdmVudExpc3RlbmVyKHR5cGUsIGhhbmRsZXIsIGZhbHNlKTsKKyAgICAgIGlmIChkaXNjb25u
ZWN0KSByZXR1cm4gZnVuY3Rpb24oKSB7bm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGhh
bmRsZXIsIGZhbHNlKTt9OworICAgIH0gZWxzZSB7CisgICAgICB2YXIgd3JhcEhhbmRsZXIgPSBm
dW5jdGlvbihldmVudCkge2hhbmRsZXIoZXZlbnQgfHwgd2luZG93LmV2ZW50KTt9OworICAgICAg
bm9kZS5hdHRhY2hFdmVudCgib24iICsgdHlwZSwgd3JhcEhhbmRsZXIpOworICAgICAgaWYgKGRp
c2Nvbm5lY3QpIHJldHVybiBmdW5jdGlvbigpIHtub2RlLmRldGFjaEV2ZW50KCJvbiIgKyB0eXBl
LCB3cmFwSGFuZGxlcik7fTsKKyAgICB9CisgIH0KKyAgQ29kZU1pcnJvci5jb25uZWN0ID0gY29u
bmVjdDsKKworICBmdW5jdGlvbiBEZWxheWVkKCkge3RoaXMuaWQgPSBudWxsO30KKyAgRGVsYXll
ZC5wcm90b3R5cGUgPSB7c2V0OiBmdW5jdGlvbihtcywgZikge2NsZWFyVGltZW91dCh0aGlzLmlk
KTsgdGhpcy5pZCA9IHNldFRpbWVvdXQoZiwgbXMpO319OworCisgIHZhciBQYXNzID0gQ29kZU1p
cnJvci5QYXNzID0ge3RvU3RyaW5nOiBmdW5jdGlvbigpe3JldHVybiAiQ29kZU1pcnJvci5QYXNz
Ijt9fTsKKworICAvLyBEZXRlY3QgZHJhZy1hbmQtZHJvcAorICB2YXIgZHJhZ0FuZERyb3AgPSBm
dW5jdGlvbigpIHsKKyAgICAvLyBUaGVyZSBpcyAqc29tZSoga2luZCBvZiBkcmFnLWFuZC1kcm9w
IHN1cHBvcnQgaW4gSUU2LTgsIGJ1dCBJCisgICAgLy8gY291bGRuJ3QgZ2V0IGl0IHRvIHdvcmsg
eWV0LgorICAgIGlmIChpZV9sdDkpIHJldHVybiBmYWxzZTsKKyAgICB2YXIgZGl2ID0gZWx0KCdk
aXYnKTsKKyAgICByZXR1cm4gImRyYWdnYWJsZSIgaW4gZGl2IHx8ICJkcmFnRHJvcCIgaW4gZGl2
OworICB9KCk7CisKKyAgLy8gRmVhdHVyZS1kZXRlY3Qgd2hldGhlciBuZXdsaW5lcyBpbiB0ZXh0
YXJlYXMgYXJlIGNvbnZlcnRlZCB0byBcclxuCisgIHZhciBsaW5lU2VwID0gZnVuY3Rpb24gKCkg
eworICAgIHZhciB0ZSA9IGVsdCgidGV4dGFyZWEiKTsKKyAgICB0ZS52YWx1ZSA9ICJmb29cbmJh
ciI7CisgICAgaWYgKHRlLnZhbHVlLmluZGV4T2YoIlxyIikgPiAtMSkgcmV0dXJuICJcclxuIjsK
KyAgICByZXR1cm4gIlxuIjsKKyAgfSgpOworCisgIC8vIEZvciBhIHJlYXNvbiBJIGhhdmUgeWV0
IHRvIGZpZ3VyZSBvdXQsIHNvbWUgYnJvd3NlcnMgZGlzYWxsb3cKKyAgLy8gd29yZCB3cmFwcGlu
ZyBiZXR3ZWVuIGNlcnRhaW4gY2hhcmFjdGVycyAqb25seSogaWYgYSBuZXcgaW5saW5lCisgIC8v
IGVsZW1lbnQgaXMgc3RhcnRlZCBiZXR3ZWVuIHRoZW0uIFRoaXMgbWFrZXMgaXQgaGFyZCB0byBy
ZWxpYWJseQorICAvLyBtZWFzdXJlIHRoZSBwb3NpdGlvbiBvZiB0aGluZ3MsIHNpbmNlIHRoYXQg
cmVxdWlyZXMgaW5zZXJ0aW5nIGFuCisgIC8vIGV4dHJhIHNwYW4uIFRoaXMgdGVycmlibHkgZnJh
Z2lsZSBzZXQgb2YgcmVnZXhwcyBtYXRjaGVzIHRoZQorICAvLyBjaGFyYWN0ZXIgY29tYmluYXRp
b25zIHRoYXQgc3VmZmVyIGZyb20gdGhpcyBwaGVub21lbm9uIG9uIHRoZQorICAvLyB2YXJpb3Vz
IGJyb3dzZXJzLgorICB2YXIgc3BhbkFmZmVjdHNXcmFwcGluZyA9IC9eJC87IC8vIFdvbid0IG1h
dGNoIGFueSB0d28tY2hhcmFjdGVyIHN0cmluZworICBpZiAoZ2Vja28pIHNwYW5BZmZlY3RzV3Jh
cHBpbmcgPSAvJCcvOworICBlbHNlIGlmIChzYWZhcmkpIHNwYW5BZmZlY3RzV3JhcHBpbmcgPSAv
XC1bXiBcLT9dfFw/W14gISdcIlwpLC5cLVwvOjtcP1xdXH1dLzsKKyAgZWxzZSBpZiAoY2hyb21l
KSBzcGFuQWZmZWN0c1dyYXBwaW5nID0gL1wtW14gXC1cLj9dfFw/W14gXC1cLj9cXVx9OjshJ1wi
XCksXC9dfFtcLiFcIiMmJVwpKissOjs9PlxdfFx9fl1bXChce1xbPF18XCQnLzsKKworICAvLyBD
b3VudHMgdGhlIGNvbHVtbiBvZmZzZXQgaW4gYSBzdHJpbmcsIHRha2luZyB0YWJzIGludG8gYWNj
b3VudC4KKyAgLy8gVXNlZCBtb3N0bHkgdG8gZmluZCBpbmRlbnRhdGlvbi4KKyAgZnVuY3Rpb24g
Y291bnRDb2x1bW4oc3RyaW5nLCBlbmQsIHRhYlNpemUpIHsKKyAgICBpZiAoZW5kID09IG51bGwp
IHsKKyAgICAgIGVuZCA9IHN0cmluZy5zZWFyY2goL1teXHNcdTAwYTBdLyk7CisgICAgICBpZiAo
ZW5kID09IC0xKSBlbmQgPSBzdHJpbmcubGVuZ3RoOworICAgIH0KKyAgICBmb3IgKHZhciBpID0g
MCwgbiA9IDA7IGkgPCBlbmQ7ICsraSkgeworICAgICAgaWYgKHN0cmluZy5jaGFyQXQoaSkgPT0g
Ilx0IikgbiArPSB0YWJTaXplIC0gKG4gJSB0YWJTaXplKTsKKyAgICAgIGVsc2UgKytuOworICAg
IH0KKyAgICByZXR1cm4gbjsKKyAgfQorCisgIGZ1bmN0aW9uIGNvbXB1dGVkU3R5bGUoZWx0KSB7
CisgICAgaWYgKGVsdC5jdXJyZW50U3R5bGUpIHJldHVybiBlbHQuY3VycmVudFN0eWxlOworICAg
IHJldHVybiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbHQsIG51bGwpOworICB9CisKKyAgZnVu
Y3Rpb24gZWx0T2Zmc2V0KG5vZGUsIHNjcmVlbikgeworICAgIC8vIFRha2UgdGhlIHBhcnRzIG9m
IGJvdW5kaW5nIGNsaWVudCByZWN0IHRoYXQgd2UgYXJlIGludGVyZXN0ZWQgaW4gc28gd2UgYXJl
IGFibGUgdG8gZWRpdCBpZiBuZWVkIGJlLAorICAgIC8vIHNpbmNlIHRoZSByZXR1cm5lZCB2YWx1
ZSBjYW5ub3QgYmUgY2hhbmdlZCBleHRlcm5hbGx5ICh0aGV5IGFyZSBrZXB0IGluIHN5bmMgYXMg
dGhlIGVsZW1lbnQgbW92ZXMgd2l0aGluIHRoZSBwYWdlKQorICAgIHRyeSB7IHZhciBib3ggPSBu
b2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOyBib3ggPSB7IHRvcDogYm94LnRvcCwgbGVmdDog
Ym94LmxlZnQgfTsgfQorICAgIGNhdGNoKGUpIHsgYm94ID0ge3RvcDogMCwgbGVmdDogMH07IH0K
KyAgICBpZiAoIXNjcmVlbikgeworICAgICAgLy8gR2V0IHRoZSB0b3BsZXZlbCBzY3JvbGwsIHdv
cmtpbmcgYXJvdW5kIGJyb3dzZXIgZGlmZmVyZW5jZXMuCisgICAgICBpZiAod2luZG93LnBhZ2VZ
T2Zmc2V0ID09IG51bGwpIHsKKyAgICAgICAgdmFyIHQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQgfHwgZG9jdW1lbnQuYm9keS5wYXJlbnROb2RlOworICAgICAgICBpZiAodC5zY3JvbGxUb3Ag
PT0gbnVsbCkgdCA9IGRvY3VtZW50LmJvZHk7CisgICAgICAgIGJveC50b3AgKz0gdC5zY3JvbGxU
b3A7IGJveC5sZWZ0ICs9IHQuc2Nyb2xsTGVmdDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGJv
eC50b3AgKz0gd2luZG93LnBhZ2VZT2Zmc2V0OyBib3gubGVmdCArPSB3aW5kb3cucGFnZVhPZmZz
ZXQ7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBib3g7CisgIH0KKworICAvLyBHZXQgYSBu
b2RlJ3MgdGV4dCBjb250ZW50LgorICBmdW5jdGlvbiBlbHRUZXh0KG5vZGUpIHsKKyAgICByZXR1
cm4gbm9kZS50ZXh0Q29udGVudCB8fCBub2RlLmlubmVyVGV4dCB8fCBub2RlLm5vZGVWYWx1ZSB8
fCAiIjsKKyAgfQorICBmdW5jdGlvbiBzZWxlY3RJbnB1dChub2RlKSB7CisgICAgaWYgKGlvcykg
eyAvLyBNb2JpbGUgU2FmYXJpIGFwcGFyZW50bHkgaGFzIGEgYnVnIHdoZXJlIHNlbGVjdCgpIGlz
IGJyb2tlbi4KKyAgICAgIG5vZGUuc2VsZWN0aW9uU3RhcnQgPSAwOworICAgICAgbm9kZS5zZWxl
Y3Rpb25FbmQgPSBub2RlLnZhbHVlLmxlbmd0aDsKKyAgICB9IGVsc2Ugbm9kZS5zZWxlY3QoKTsK
KyAgfQorCisgIC8vIE9wZXJhdGlvbnMgb24ge2xpbmUsIGNofSBvYmplY3RzLgorICBmdW5jdGlv
biBwb3NFcShhLCBiKSB7cmV0dXJuIGEubGluZSA9PSBiLmxpbmUgJiYgYS5jaCA9PSBiLmNoO30K
KyAgZnVuY3Rpb24gcG9zTGVzcyhhLCBiKSB7cmV0dXJuIGEubGluZSA8IGIubGluZSB8fCAoYS5s
aW5lID09IGIubGluZSAmJiBhLmNoIDwgYi5jaCk7fQorICBmdW5jdGlvbiBjb3B5UG9zKHgpIHty
ZXR1cm4ge2xpbmU6IHgubGluZSwgY2g6IHguY2h9O30KKworICBmdW5jdGlvbiBlbHQodGFnLCBj
b250ZW50LCBjbGFzc05hbWUsIHN0eWxlKSB7CisgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KHRhZyk7CisgICAgaWYgKGNsYXNzTmFtZSkgZS5jbGFzc05hbWUgPSBjbGFzc05hbWU7
CisgICAgaWYgKHN0eWxlKSBlLnN0eWxlLmNzc1RleHQgPSBzdHlsZTsKKyAgICBpZiAodHlwZW9m
IGNvbnRlbnQgPT0gInN0cmluZyIpIHNldFRleHRDb250ZW50KGUsIGNvbnRlbnQpOworICAgIGVs
c2UgaWYgKGNvbnRlbnQpIGZvciAodmFyIGkgPSAwOyBpIDwgY29udGVudC5sZW5ndGg7ICsraSkg
ZS5hcHBlbmRDaGlsZChjb250ZW50W2ldKTsKKyAgICByZXR1cm4gZTsKKyAgfQorICBmdW5jdGlv
biByZW1vdmVDaGlsZHJlbihlKSB7CisgICAgZS5pbm5lckhUTUwgPSAiIjsKKyAgICByZXR1cm4g
ZTsKKyAgfQorICBmdW5jdGlvbiByZW1vdmVDaGlsZHJlbkFuZEFkZChwYXJlbnQsIGUpIHsKKyAg
ICByZW1vdmVDaGlsZHJlbihwYXJlbnQpLmFwcGVuZENoaWxkKGUpOworICB9CisgIGZ1bmN0aW9u
IHNldFRleHRDb250ZW50KGUsIHN0cikgeworICAgIGlmIChpZV9sdDkpIHsKKyAgICAgIGUuaW5u
ZXJIVE1MID0gIiI7CisgICAgICBlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KHN0cikpOworICAgIH0gZWxzZSBlLnRleHRDb250ZW50ID0gc3RyOworICB9CisgIENvZGVNaXJy
b3Iuc2V0VGV4dENvbnRlbnQgPSBzZXRUZXh0Q29udGVudDsKKworICAvLyBVc2VkIHRvIHBvc2l0
aW9uIHRoZSBjdXJzb3IgYWZ0ZXIgYW4gdW5kby9yZWRvIGJ5IGZpbmRpbmcgdGhlCisgIC8vIGxh
c3QgZWRpdGVkIGNoYXJhY3Rlci4KKyAgZnVuY3Rpb24gZWRpdEVuZChmcm9tLCB0bykgeworICAg
IGlmICghdG8pIHJldHVybiAwOworICAgIGlmICghZnJvbSkgcmV0dXJuIHRvLmxlbmd0aDsKKyAg
ICBmb3IgKHZhciBpID0gZnJvbS5sZW5ndGgsIGogPSB0by5sZW5ndGg7IGkgPj0gMCAmJiBqID49
IDA7IC0taSwgLS1qKQorICAgICAgaWYgKGZyb20uY2hhckF0KGkpICE9IHRvLmNoYXJBdChqKSkg
YnJlYWs7CisgICAgcmV0dXJuIGogKyAxOworICB9CisKKyAgZnVuY3Rpb24gaW5kZXhPZihjb2xs
ZWN0aW9uLCBlbHQpIHsKKyAgICBpZiAoY29sbGVjdGlvbi5pbmRleE9mKSByZXR1cm4gY29sbGVj
dGlvbi5pbmRleE9mKGVsdCk7CisgICAgZm9yICh2YXIgaSA9IDAsIGUgPSBjb2xsZWN0aW9uLmxl
bmd0aDsgaSA8IGU7ICsraSkKKyAgICAgIGlmIChjb2xsZWN0aW9uW2ldID09IGVsdCkgcmV0dXJu
IGk7CisgICAgcmV0dXJuIC0xOworICB9CisgIGZ1bmN0aW9uIGlzV29yZENoYXIoY2gpIHsKKyAg
ICByZXR1cm4gL1x3Ly50ZXN0KGNoKSB8fCBjaC50b1VwcGVyQ2FzZSgpICE9IGNoLnRvTG93ZXJD
YXNlKCk7CisgIH0KKworICAvLyBTZWUgaWYgIiIuc3BsaXQgaXMgdGhlIGJyb2tlbiBJRSB2ZXJz
aW9uLCBpZiBzbywgcHJvdmlkZSBhbgorICAvLyBhbHRlcm5hdGl2ZSB3YXkgdG8gc3BsaXQgbGlu
ZXMuCisgIHZhciBzcGxpdExpbmVzID0gIlxuXG5iIi5zcGxpdCgvXG4vKS5sZW5ndGggIT0gMyA/
IGZ1bmN0aW9uKHN0cmluZykgeworICAgIHZhciBwb3MgPSAwLCByZXN1bHQgPSBbXSwgbCA9IHN0
cmluZy5sZW5ndGg7CisgICAgd2hpbGUgKHBvcyA8PSBsKSB7CisgICAgICB2YXIgbmwgPSBzdHJp
bmcuaW5kZXhPZigiXG4iLCBwb3MpOworICAgICAgaWYgKG5sID09IC0xKSBubCA9IHN0cmluZy5s
ZW5ndGg7CisgICAgICB2YXIgbGluZSA9IHN0cmluZy5zbGljZShwb3MsIHN0cmluZy5jaGFyQXQo
bmwgLSAxKSA9PSAiXHIiID8gbmwgLSAxIDogbmwpOworICAgICAgdmFyIHJ0ID0gbGluZS5pbmRl
eE9mKCJcciIpOworICAgICAgaWYgKHJ0ICE9IC0xKSB7CisgICAgICAgIHJlc3VsdC5wdXNoKGxp
bmUuc2xpY2UoMCwgcnQpKTsKKyAgICAgICAgcG9zICs9IHJ0ICsgMTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIHJlc3VsdC5wdXNoKGxpbmUpOworICAgICAgICBwb3MgPSBubCArIDE7CisgICAg
ICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7CisgIH0gOiBmdW5jdGlvbihzdHJpbmcpe3Jl
dHVybiBzdHJpbmcuc3BsaXQoL1xyXG4/fFxuLyk7fTsKKyAgQ29kZU1pcnJvci5zcGxpdExpbmVz
ID0gc3BsaXRMaW5lczsKKworICB2YXIgaGFzU2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlv
biA/IGZ1bmN0aW9uKHRlKSB7CisgICAgdHJ5IHsgcmV0dXJuIHRlLnNlbGVjdGlvblN0YXJ0ICE9
IHRlLnNlbGVjdGlvbkVuZDsgfQorICAgIGNhdGNoKGUpIHsgcmV0dXJuIGZhbHNlOyB9CisgIH0g
OiBmdW5jdGlvbih0ZSkgeworICAgIHRyeSB7dmFyIHJhbmdlID0gdGUub3duZXJEb2N1bWVudC5z
ZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTt9CisgICAgY2F0Y2goZSkge30KKyAgICBpZiAoIXJhbmdl
IHx8IHJhbmdlLnBhcmVudEVsZW1lbnQoKSAhPSB0ZSkgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biByYW5nZS5jb21wYXJlRW5kUG9pbnRzKCJTdGFydFRvRW5kIiwgcmFuZ2UpICE9IDA7CisgIH07
CisKKyAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJudWxsIiwgZnVuY3Rpb24oKSB7CisgICAgcmV0
dXJuIHt0b2tlbjogZnVuY3Rpb24oc3RyZWFtKSB7c3RyZWFtLnNraXBUb0VuZCgpO319OworICB9
KTsKKyAgQ29kZU1pcnJvci5kZWZpbmVNSU1FKCJ0ZXh0L3BsYWluIiwgIm51bGwiKTsKKworICB2
YXIga2V5TmFtZXMgPSB7MzogIkVudGVyIiwgODogIkJhY2tzcGFjZSIsIDk6ICJUYWIiLCAxMzog
IkVudGVyIiwgMTY6ICJTaGlmdCIsIDE3OiAiQ3RybCIsIDE4OiAiQWx0IiwKKyAgICAgICAgICAg
ICAgICAgIDE5OiAiUGF1c2UiLCAyMDogIkNhcHNMb2NrIiwgMjc6ICJFc2MiLCAzMjogIlNwYWNl
IiwgMzM6ICJQYWdlVXAiLCAzNDogIlBhZ2VEb3duIiwgMzU6ICJFbmQiLAorICAgICAgICAgICAg
ICAgICAgMzY6ICJIb21lIiwgMzc6ICJMZWZ0IiwgMzg6ICJVcCIsIDM5OiAiUmlnaHQiLCA0MDog
IkRvd24iLCA0NDogIlByaW50U2NybiIsIDQ1OiAiSW5zZXJ0IiwKKyAgICAgICAgICAgICAgICAg
IDQ2OiAiRGVsZXRlIiwgNTk6ICI7IiwgOTE6ICJNb2QiLCA5MjogIk1vZCIsIDkzOiAiTW9kIiwg
MTA5OiAiLSIsIDEwNzogIj0iLCAxMjc6ICJEZWxldGUiLAorICAgICAgICAgICAgICAgICAgMTg2
OiAiOyIsIDE4NzogIj0iLCAxODg6ICIsIiwgMTg5OiAiLSIsIDE5MDogIi4iLCAxOTE6ICIvIiwg
MTkyOiAiYCIsIDIxOTogIlsiLCAyMjA6ICJcXCIsCisgICAgICAgICAgICAgICAgICAyMjE6ICJd
IiwgMjIyOiAiJyIsIDYzMjc2OiAiUGFnZVVwIiwgNjMyNzc6ICJQYWdlRG93biIsIDYzMjc1OiAi
RW5kIiwgNjMyNzM6ICJIb21lIiwKKyAgICAgICAgICAgICAgICAgIDYzMjM0OiAiTGVmdCIsIDYz
MjMyOiAiVXAiLCA2MzIzNTogIlJpZ2h0IiwgNjMyMzM6ICJEb3duIiwgNjMzMDI6ICJJbnNlcnQi
LCA2MzI3MjogIkRlbGV0ZSJ9OworICBDb2RlTWlycm9yLmtleU5hbWVzID0ga2V5TmFtZXM7Cisg
IChmdW5jdGlvbigpIHsKKyAgICAvLyBOdW1iZXIga2V5cworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMTA7IGkrKykga2V5TmFtZXNbaSArIDQ4XSA9IFN0cmluZyhpKTsKKyAgICAvLyBBbHBoYWJl
dGljIGtleXMKKyAgICBmb3IgKHZhciBpID0gNjU7IGkgPD0gOTA7IGkrKykga2V5TmFtZXNbaV0g
PSBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpOworICAgIC8vIEZ1bmN0aW9uIGtleXMKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8PSAxMjsgaSsrKSBrZXlOYW1lc1tpICsgMTExXSA9IGtleU5hbWVzW2kg
KyA2MzIzNV0gPSAiRiIgKyBpOworICB9KSgpOworCisgIHJldHVybiBDb2RlTWlycm9yOworfSko
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvY3NzLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9jc3MuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmJiM2JjZDE5NmRmNzZjNDI2NzJiYTE4N2Q1MWI1ZmQ2YThiYmZiMgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvY3NzLmpzCkBAIC0wLDAgKzEs
MTc0IEBACitDb2RlTWlycm9yLmRlZmluZU1vZGUoImNzcyIsIGZ1bmN0aW9uKGNvbmZpZykgewor
ICB2YXIgaW5kZW50VW5pdCA9IGNvbmZpZy5pbmRlbnRVbml0LCB0eXBlOworCisgIHZhciBrZXl3
b3JkcyA9IGtleVNldChbImFib3ZlIiwgImFic29sdXRlIiwgImFjdGl2ZWJvcmRlciIsICJhY3Rp
dmVjYXB0aW9uIiwgImFmYXIiLCAiYWZ0ZXItd2hpdGUtc3BhY2UiLCAiYWhlYWQiLCAiYWxpYXMi
LCAiYWxsIiwgImFsbC1zY3JvbGwiLAorICAgICJhbHRlcm5hdGUiLCAiYWx3YXlzIiwgImFtaGFy
aWMiLCAiYW1oYXJpYy1hYmVnZWRlIiwgImFudGlhbGlhc2VkIiwgImFwcHdvcmtzcGFjZSIsICJh
cmFiaWMtaW5kaWMiLCAiYXJtZW5pYW4iLCAiYXN0ZXJpc2tzIiwKKyAgICAiYXV0byIsICJhdm9p
ZCIsICJiYWNrZ3JvdW5kIiwgImJhY2t3YXJkcyIsICJiYXNlbGluZSIsICJiZWxvdyIsICJiaWRp
LW92ZXJyaWRlIiwgImJpbmFyeSIsICJiZW5nYWxpIiwgImJsaW5rIiwKKyAgICAiYmxvY2siLCAi
YmxvY2stYXhpcyIsICJib2xkIiwgImJvbGRlciIsICJib3JkZXIiLCAiYm9yZGVyLWJveCIsICJi
b3RoIiwgImJvdHRvbSIsICJicmVhay1hbGwiLCAiYnJlYWstd29yZCIsICJidXR0b24iLAorICAg
ICJidXR0b24tYmV2ZWwiLCAiYnV0dG9uZmFjZSIsICJidXR0b25oaWdobGlnaHQiLCAiYnV0dG9u
c2hhZG93IiwgImJ1dHRvbnRleHQiLCAiY2FtYm9kaWFuIiwgImNhcGl0YWxpemUiLCAiY2Fwcy1s
b2NrLWluZGljYXRvciIsCisgICAgImNhcHRpb24iLCAiY2FwdGlvbnRleHQiLCAiY2FyZXQiLCAi
Y2VsbCIsICJjZW50ZXIiLCAiY2hlY2tib3giLCAiY2lyY2xlIiwgImNqay1lYXJ0aGx5LWJyYW5j
aCIsICJjamstaGVhdmVubHktc3RlbSIsICJjamstaWRlb2dyYXBoaWMiLAorICAgICJjbGVhciIs
ICJjbGlwIiwgImNsb3NlLXF1b3RlIiwgImNvbC1yZXNpemUiLCAiY29sbGFwc2UiLCAiY29tcGFj
dCIsICJjb25kZW5zZWQiLCAiY29udGFpbiIsICJjb250ZW50IiwgImNvbnRlbnQtYm94IiwgImNv
bnRleHQtbWVudSIsCisgICAgImNvbnRpbnVvdXMiLCAiY29weSIsICJjb3ZlciIsICJjcm9wIiwg
ImNyb3NzIiwgImNyb3NzaGFpciIsICJjdXJyZW50Y29sb3IiLCAiY3Vyc2l2ZSIsICJkYXNoZWQi
LCAiZGVjaW1hbCIsICJkZWNpbWFsLWxlYWRpbmctemVybyIsICJkZWZhdWx0IiwKKyAgICAiZGVm
YXVsdC1idXR0b24iLCAiZGVzdGluYXRpb24tYXRvcCIsICJkZXN0aW5hdGlvbi1pbiIsICJkZXN0
aW5hdGlvbi1vdXQiLCAiZGVzdGluYXRpb24tb3ZlciIsICJkZXZhbmFnYXJpIiwgImRpc2MiLCAi
ZGlzY2FyZCIsICJkb2N1bWVudCIsCisgICAgImRvdC1kYXNoIiwgImRvdC1kb3QtZGFzaCIsICJk
b3R0ZWQiLCAiZG91YmxlIiwgImRvd24iLCAiZS1yZXNpemUiLCAiZWFzZSIsICJlYXNlLWluIiwg
ImVhc2UtaW4tb3V0IiwgImVhc2Utb3V0IiwgImVsZW1lbnQiLAorICAgICJlbGxpcHNpcyIsICJl
bWJlZCIsICJlbmQiLCAiZXRoaW9waWMiLCAiZXRoaW9waWMtYWJlZ2VkZSIsICJldGhpb3BpYy1h
YmVnZWRlLWFtLWV0IiwgImV0aGlvcGljLWFiZWdlZGUtZ2V6IiwKKyAgICAiZXRoaW9waWMtYWJl
Z2VkZS10aS1lciIsICJldGhpb3BpYy1hYmVnZWRlLXRpLWV0IiwgImV0aGlvcGljLWhhbGVoYW1l
LWFhLWVyIiwgImV0aGlvcGljLWhhbGVoYW1lLWFhLWV0IiwKKyAgICAiZXRoaW9waWMtaGFsZWhh
bWUtYW0tZXQiLCAiZXRoaW9waWMtaGFsZWhhbWUtZ2V6IiwgImV0aGlvcGljLWhhbGVoYW1lLW9t
LWV0IiwgImV0aGlvcGljLWhhbGVoYW1lLXNpZC1ldCIsCisgICAgImV0aGlvcGljLWhhbGVoYW1l
LXNvLWV0IiwgImV0aGlvcGljLWhhbGVoYW1lLXRpLWVyIiwgImV0aGlvcGljLWhhbGVoYW1lLXRp
LWV0IiwgImV0aGlvcGljLWhhbGVoYW1lLXRpZyIsICJldy1yZXNpemUiLCAiZXhwYW5kZWQiLAor
ICAgICJleHRyYS1jb25kZW5zZWQiLCAiZXh0cmEtZXhwYW5kZWQiLCAiZmFudGFzeSIsICJmYXN0
IiwgImZpbGwiLCAiZml4ZWQiLCAiZmxhdCIsICJmb290bm90ZXMiLCAiZm9yd2FyZHMiLCAiZnJv
bSIsICJnZW9tZXRyaWNQcmVjaXNpb24iLAorICAgICJnZW9yZ2lhbiIsICJncmF5dGV4dCIsICJn
cm9vdmUiLCAiZ3VqYXJhdGkiLCAiZ3VybXVraGkiLCAiaGFuZCIsICJoYW5ndWwiLCAiaGFuZ3Vs
LWNvbnNvbmFudCIsICJoZWJyZXciLCAiaGVscCIsCisgICAgImhpZGRlbiIsICJoaWRlIiwgImhp
Z2hlciIsICJoaWdobGlnaHQiLCAiaGlnaGxpZ2h0dGV4dCIsICJoaXJhZ2FuYSIsICJoaXJhZ2Fu
YS1pcm9oYSIsICJob3Jpem9udGFsIiwgImhzbCIsICJoc2xhIiwgImljb24iLCAiaWdub3JlIiwK
KyAgICAiaW5hY3RpdmVib3JkZXIiLCAiaW5hY3RpdmVjYXB0aW9uIiwgImluYWN0aXZlY2FwdGlv
bnRleHQiLCAiaW5maW5pdGUiLCAiaW5mb2JhY2tncm91bmQiLCAiaW5mb3RleHQiLCAiaW5oZXJp
dCIsICJpbml0aWFsIiwgImlubGluZSIsCisgICAgImlubGluZS1heGlzIiwgImlubGluZS1ibG9j
ayIsICJpbmxpbmUtdGFibGUiLCAiaW5zZXQiLCAiaW5zaWRlIiwgImludHJpbnNpYyIsICJpbnZl
cnQiLCAiaXRhbGljIiwgImp1c3RpZnkiLCAia2FubmFkYSIsICJrYXRha2FuYSIsCisgICAgImth
dGFrYW5hLWlyb2hhIiwgImtobWVyIiwgImxhbmRzY2FwZSIsICJsYW8iLCAibGFyZ2UiLCAibGFy
Z2VyIiwgImxlZnQiLCAibGV2ZWwiLCAibGlnaHRlciIsICJsaW5lLXRocm91Z2giLCAibGluZWFy
IiwgImxpbmVzIiwKKyAgICAibGlzdC1pdGVtIiwgImxpc3Rib3giLCAibGlzdGl0ZW0iLCAibG9j
YWwiLCAibG9naWNhbCIsICJsb3VkIiwgImxvd2VyIiwgImxvd2VyLWFscGhhIiwgImxvd2VyLWFy
bWVuaWFuIiwgImxvd2VyLWdyZWVrIiwKKyAgICAibG93ZXItaGV4YWRlY2ltYWwiLCAibG93ZXIt
bGF0aW4iLCAibG93ZXItbm9yd2VnaWFuIiwgImxvd2VyLXJvbWFuIiwgImxvd2VyY2FzZSIsICJs
dHIiLCAibWFsYXlhbGFtIiwgIm1hdGNoIiwgIm1lZGlhLWNvbnRyb2xzLWJhY2tncm91bmQiLAor
ICAgICJtZWRpYS1jdXJyZW50LXRpbWUtZGlzcGxheSIsICJtZWRpYS1mdWxsc2NyZWVuLWJ1dHRv
biIsICJtZWRpYS1tdXRlLWJ1dHRvbiIsICJtZWRpYS1wbGF5LWJ1dHRvbiIsICJtZWRpYS1yZXR1
cm4tdG8tcmVhbHRpbWUtYnV0dG9uIiwKKyAgICAibWVkaWEtcmV3aW5kLWJ1dHRvbiIsICJtZWRp
YS1zZWVrLWJhY2stYnV0dG9uIiwgIm1lZGlhLXNlZWstZm9yd2FyZC1idXR0b24iLCAibWVkaWEt
c2xpZGVyIiwgIm1lZGlhLXNsaWRlcnRodW1iIiwgIm1lZGlhLXRpbWUtcmVtYWluaW5nLWRpc3Bs
YXkiLAorICAgICJtZWRpYS12b2x1bWUtc2xpZGVyIiwgIm1lZGlhLXZvbHVtZS1zbGlkZXItY29u
dGFpbmVyIiwgIm1lZGlhLXZvbHVtZS1zbGlkZXJ0aHVtYiIsICJtZWRpdW0iLCAibWVudSIsICJt
ZW51bGlzdCIsICJtZW51bGlzdC1idXR0b24iLAorICAgICJtZW51bGlzdC10ZXh0IiwgIm1lbnVs
aXN0LXRleHRmaWVsZCIsICJtZW51dGV4dCIsICJtZXNzYWdlLWJveCIsICJtaWRkbGUiLCAibWlu
LWludHJpbnNpYyIsICJtaXgiLCAibW9uZ29saWFuIiwgIm1vbm9zcGFjZSIsICJtb3ZlIiwgIm11
bHRpcGxlIiwKKyAgICAibXlhbm1hciIsICJuLXJlc2l6ZSIsICJuYXJyb3dlciIsICJuYXZ5Iiwg
Im5lLXJlc2l6ZSIsICJuZXN3LXJlc2l6ZSIsICJuby1jbG9zZS1xdW90ZSIsICJuby1kcm9wIiwg
Im5vLW9wZW4tcXVvdGUiLCAibm8tcmVwZWF0IiwgIm5vbmUiLAorICAgICJub3JtYWwiLCAibm90
LWFsbG93ZWQiLCAibm93cmFwIiwgIm5zLXJlc2l6ZSIsICJudy1yZXNpemUiLCAibndzZS1yZXNp
emUiLCAib2JsaXF1ZSIsICJvY3RhbCIsICJvcGVuLXF1b3RlIiwgIm9wdGltaXplTGVnaWJpbGl0
eSIsCisgICAgIm9wdGltaXplU3BlZWQiLCAib3JpeWEiLCAib3JvbW8iLCAib3V0c2V0IiwgIm91
dHNpZGUiLCAib3ZlcmxheSIsICJvdmVybGluZSIsICJwYWRkaW5nIiwgInBhZGRpbmctYm94Iiwg
InBhaW50ZWQiLCAicGF1c2VkIiwKKyAgICAicGVyc2lhbiIsICJwbHVzLWRhcmtlciIsICJwbHVz
LWxpZ2h0ZXIiLCAicG9pbnRlciIsICJwb3J0cmFpdCIsICJwcmUiLCAicHJlLWxpbmUiLCAicHJl
LXdyYXAiLCAicHJlc2VydmUtM2QiLCAicHJvZ3Jlc3MiLAorICAgICJwdXNoLWJ1dHRvbiIsICJy
YWRpbyIsICJyZWFkLW9ubHkiLCAicmVhZC13cml0ZSIsICJyZWFkLXdyaXRlLXBsYWludGV4dC1v
bmx5IiwgInJlbGF0aXZlIiwgInJlcGVhdCIsICJyZXBlYXQteCIsCisgICAgInJlcGVhdC15Iiwg
InJlc2V0IiwgInJldmVyc2UiLCAicmdiIiwgInJnYmEiLCAicmlkZ2UiLCAicmlnaHQiLCAicm91
bmQiLCAicm93LXJlc2l6ZSIsICJydGwiLCAicnVuLWluIiwgInJ1bm5pbmciLCAicy1yZXNpemUi
LCAic2Fucy1zZXJpZiIsCisgICAgInNjcm9sbCIsICJzY3JvbGxiYXIiLCAic2UtcmVzaXplIiwg
InNlYXJjaGZpZWxkIiwgInNlYXJjaGZpZWxkLWNhbmNlbC1idXR0b24iLCAic2VhcmNoZmllbGQt
ZGVjb3JhdGlvbiIsICJzZWFyY2hmaWVsZC1yZXN1bHRzLWJ1dHRvbiIsCisgICAgInNlYXJjaGZp
ZWxkLXJlc3VsdHMtZGVjb3JhdGlvbiIsICJzZW1pLWNvbmRlbnNlZCIsICJzZW1pLWV4cGFuZGVk
IiwgInNlcGFyYXRlIiwgInNlcmlmIiwgInNob3ciLCAic2lkYW1hIiwgInNpbmdsZSIsCisgICAg
InNraXAtd2hpdGUtc3BhY2UiLCAic2xpZGUiLCAic2xpZGVyLWhvcml6b250YWwiLCAic2xpZGVy
LXZlcnRpY2FsIiwgInNsaWRlcnRodW1iLWhvcml6b250YWwiLCAic2xpZGVydGh1bWItdmVydGlj
YWwiLCAic2xvdyIsCisgICAgInNtYWxsIiwgInNtYWxsLWNhcHMiLCAic21hbGwtY2FwdGlvbiIs
ICJzbWFsbGVyIiwgInNvbGlkIiwgInNvbWFsaSIsICJzb3VyY2UtYXRvcCIsICJzb3VyY2UtaW4i
LCAic291cmNlLW91dCIsICJzb3VyY2Utb3ZlciIsCisgICAgInNwYWNlIiwgInNxdWFyZSIsICJz
cXVhcmUtYnV0dG9uIiwgInN0YXJ0IiwgInN0YXRpYyIsICJzdGF0dXMtYmFyIiwgInN0cmV0Y2gi
LCAic3Ryb2tlIiwgInN1YiIsICJzdWJwaXhlbC1hbnRpYWxpYXNlZCIsICJzdXBlciIsCisgICAg
InN3LXJlc2l6ZSIsICJ0YWJsZSIsICJ0YWJsZS1jYXB0aW9uIiwgInRhYmxlLWNlbGwiLCAidGFi
bGUtY29sdW1uIiwgInRhYmxlLWNvbHVtbi1ncm91cCIsICJ0YWJsZS1mb290ZXItZ3JvdXAiLCAi
dGFibGUtaGVhZGVyLWdyb3VwIiwKKyAgICAidGFibGUtcm93IiwgInRhYmxlLXJvdy1ncm91cCIs
ICJ0ZWx1Z3UiLCAidGV4dCIsICJ0ZXh0LWJvdHRvbSIsICJ0ZXh0LXRvcCIsICJ0ZXh0YXJlYSIs
ICJ0ZXh0ZmllbGQiLCAidGhhaSIsICJ0aGljayIsICJ0aGluIiwKKyAgICAidGhyZWVkZGFya3No
YWRvdyIsICJ0aHJlZWRmYWNlIiwgInRocmVlZGhpZ2hsaWdodCIsICJ0aHJlZWRsaWdodHNoYWRv
dyIsICJ0aHJlZWRzaGFkb3ciLCAidGliZXRhbiIsICJ0aWdyZSIsICJ0aWdyaW55YS1lciIsICJ0
aWdyaW55YS1lci1hYmVnZWRlIiwKKyAgICAidGlncmlueWEtZXQiLCAidGlncmlueWEtZXQtYWJl
Z2VkZSIsICJ0byIsICJ0b3AiLCAidHJhbnNwYXJlbnQiLCAidWx0cmEtY29uZGVuc2VkIiwgInVs
dHJhLWV4cGFuZGVkIiwgInVuZGVybGluZSIsICJ1cCIsICJ1cHBlci1hbHBoYSIsICJ1cHBlci1h
cm1lbmlhbiIsCisgICAgInVwcGVyLWdyZWVrIiwgInVwcGVyLWhleGFkZWNpbWFsIiwgInVwcGVy
LWxhdGluIiwgInVwcGVyLW5vcndlZ2lhbiIsICJ1cHBlci1yb21hbiIsICJ1cHBlcmNhc2UiLCAi
dXJkdSIsICJ1cmwiLCAidmVydGljYWwiLCAidmVydGljYWwtdGV4dCIsICJ2aXNpYmxlIiwKKyAg
ICAidmlzaWJsZUZpbGwiLCAidmlzaWJsZVBhaW50ZWQiLCAidmlzaWJsZVN0cm9rZSIsICJ2aXN1
YWwiLCAidy1yZXNpemUiLCAid2FpdCIsICJ3YXZlIiwgIndoaXRlIiwgIndpZGVyIiwgIndpbmRv
dyIsICJ3aW5kb3dmcmFtZSIsICJ3aW5kb3d0ZXh0IiwKKyAgICAieC1sYXJnZSIsICJ4LXNtYWxs
IiwgInhvciIsICJ4eC1sYXJnZSIsICJ4eC1zbWFsbCIsICJ5ZWxsb3ciLCAiLXdhcC1tYXJxdWVl
IiwgIi13ZWJraXQtYWN0aXZlbGluayIsICItd2Via2l0LWF1dG8iLCAiLXdlYmtpdC1iYXNlbGlu
ZS1taWRkbGUiLAorICAgICItd2Via2l0LWJvZHkiLCAiLXdlYmtpdC1ib3giLCAiLXdlYmtpdC1j
ZW50ZXIiLCAiLXdlYmtpdC1jb250cm9sIiwgIi13ZWJraXQtZm9jdXMtcmluZy1jb2xvciIsICIt
d2Via2l0LWdyYWIiLCAiLXdlYmtpdC1ncmFiYmluZyIsCisgICAgIi13ZWJraXQtZ3JhZGllbnQi
LCAiLXdlYmtpdC1pbmxpbmUtYm94IiwgIi13ZWJraXQtbGVmdCIsICItd2Via2l0LWxpbmsiLCAi
LXdlYmtpdC1tYXJxdWVlIiwgIi13ZWJraXQtbWluaS1jb250cm9sIiwgIi13ZWJraXQtbm93cmFw
IiwgIi13ZWJraXQtcGljdG9ncmFwaCIsCisgICAgIi13ZWJraXQtcmlnaHQiLCAiLXdlYmtpdC1z
bWFsbC1jb250cm9sIiwgIi13ZWJraXQtdGV4dCIsICItd2Via2l0LXh4eC1sYXJnZSIsICItd2Vi
a2l0LXpvb20taW4iLCAiLXdlYmtpdC16b29tLW91dCJdKTsKKworICBmdW5jdGlvbiBrZXlTZXQo
YXJyYXkpIHsgdmFyIGtleXMgPSB7fTsgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7
ICsraSkga2V5c1thcnJheVtpXV0gPSB0cnVlOyByZXR1cm4ga2V5czsgfQorICBmdW5jdGlvbiBy
ZXQoc3R5bGUsIHRwKSB7dHlwZSA9IHRwOyByZXR1cm4gc3R5bGU7fQorCisgIGZ1bmN0aW9uIHRv
a2VuQmFzZShzdHJlYW0sIHN0YXRlKSB7CisgICAgdmFyIGNoID0gc3RyZWFtLm5leHQoKTsKKyAg
ICBpZiAoY2ggPT0gIkAiKSB7c3RyZWFtLmVhdFdoaWxlKC9bXHdcXFwtXS8pOyByZXR1cm4gcmV0
KCJtZXRhIiwgc3RyZWFtLmN1cnJlbnQoKSk7fQorICAgIGVsc2UgaWYgKGNoID09ICIvIiAmJiBz
dHJlYW0uZWF0KCIqIikpIHsKKyAgICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5DQ29tbWVudDsK
KyAgICAgIHJldHVybiB0b2tlbkNDb21tZW50KHN0cmVhbSwgc3RhdGUpOworICAgIH0KKyAgICBl
bHNlIGlmIChjaCA9PSAiPCIgJiYgc3RyZWFtLmVhdCgiISIpKSB7CisgICAgICBzdGF0ZS50b2tl
bml6ZSA9IHRva2VuU0dNTENvbW1lbnQ7CisgICAgICByZXR1cm4gdG9rZW5TR01MQ29tbWVudChz
dHJlYW0sIHN0YXRlKTsKKyAgICB9CisgICAgZWxzZSBpZiAoY2ggPT0gIj0iKSByZXQobnVsbCwg
ImNvbXBhcmUiKTsKKyAgICBlbHNlIGlmICgoY2ggPT0gIn4iIHx8IGNoID09ICJ8IikgJiYgc3Ry
ZWFtLmVhdCgiPSIpKSByZXR1cm4gcmV0KG51bGwsICJjb21wYXJlIik7CisgICAgZWxzZSBpZiAo
Y2ggPT0gIlwiIiB8fCBjaCA9PSAiJyIpIHsKKyAgICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5T
dHJpbmcoY2gpOworICAgICAgcmV0dXJuIHN0YXRlLnRva2VuaXplKHN0cmVhbSwgc3RhdGUpOwor
ICAgIH0KKyAgICBlbHNlIGlmIChjaCA9PSAiIyIpIHsKKyAgICAgIHN0cmVhbS5lYXRXaGlsZSgv
W1x3XFxcLV0vKTsKKyAgICAgIHJldHVybiByZXQoImF0b20iLCAiaGFzaCIpOworICAgIH0KKyAg
ICBlbHNlIGlmIChjaCA9PSAiISIpIHsKKyAgICAgIHN0cmVhbS5tYXRjaCgvXlxzKlx3Ki8pOwor
ICAgICAgcmV0dXJuIHJldCgia2V5d29yZCIsICJpbXBvcnRhbnQiKTsKKyAgICB9CisgICAgZWxz
ZSBpZiAoL1xkLy50ZXN0KGNoKSkgeworICAgICAgc3RyZWFtLmVhdFdoaWxlKC9bXHcuJV0vKTsK
KyAgICAgIHJldHVybiByZXQoIm51bWJlciIsICJ1bml0Iik7CisgICAgfQorICAgIGVsc2UgaWYg
KC9bLC4rPipcL10vLnRlc3QoY2gpKSB7CisgICAgICByZXR1cm4gcmV0KG51bGwsICJzZWxlY3Qt
b3AiKTsKKyAgICB9CisgICAgZWxzZSBpZiAoL1s7e306XFtcXV0vLnRlc3QoY2gpKSB7CisgICAg
ICByZXR1cm4gcmV0KG51bGwsIGNoKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBzdHJlYW0u
ZWF0V2hpbGUoL1tcd1xcXC1dLyk7CisgICAgICByZXR1cm4gcmV0KCJ2YXJpYWJsZSIsICJ2YXJp
YWJsZSIpOworICAgIH0KKyAgfQorCisgIGZ1bmN0aW9uIHRva2VuQ0NvbW1lbnQoc3RyZWFtLCBz
dGF0ZSkgeworICAgIHZhciBtYXliZUVuZCA9IGZhbHNlLCBjaDsKKyAgICB3aGlsZSAoKGNoID0g
c3RyZWFtLm5leHQoKSkgIT0gbnVsbCkgeworICAgICAgaWYgKG1heWJlRW5kICYmIGNoID09ICIv
IikgeworICAgICAgICBzdGF0ZS50b2tlbml6ZSA9IHRva2VuQmFzZTsKKyAgICAgICAgYnJlYWs7
CisgICAgICB9CisgICAgICBtYXliZUVuZCA9IChjaCA9PSAiKiIpOworICAgIH0KKyAgICByZXR1
cm4gcmV0KCJjb21tZW50IiwgImNvbW1lbnQiKTsKKyAgfQorCisgIGZ1bmN0aW9uIHRva2VuU0dN
TENvbW1lbnQoc3RyZWFtLCBzdGF0ZSkgeworICAgIHZhciBkYXNoZXMgPSAwLCBjaDsKKyAgICB3
aGlsZSAoKGNoID0gc3RyZWFtLm5leHQoKSkgIT0gbnVsbCkgeworICAgICAgaWYgKGRhc2hlcyA+
PSAyICYmIGNoID09ICI+IikgeworICAgICAgICBzdGF0ZS50b2tlbml6ZSA9IHRva2VuQmFzZTsK
KyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBkYXNoZXMgPSAoY2ggPT0gIi0iKSA/IGRh
c2hlcyArIDEgOiAwOworICAgIH0KKyAgICByZXR1cm4gcmV0KCJjb21tZW50IiwgImNvbW1lbnQi
KTsKKyAgfQorCisgIGZ1bmN0aW9uIHRva2VuU3RyaW5nKHF1b3RlKSB7CisgICAgcmV0dXJuIGZ1
bmN0aW9uKHN0cmVhbSwgc3RhdGUpIHsKKyAgICAgIHZhciBlc2NhcGVkID0gZmFsc2UsIGNoOwor
ICAgICAgd2hpbGUgKChjaCA9IHN0cmVhbS5uZXh0KCkpICE9IG51bGwpIHsKKyAgICAgICAgaWYg
KGNoID09IHF1b3RlICYmICFlc2NhcGVkKQorICAgICAgICAgIGJyZWFrOworICAgICAgICBlc2Nh
cGVkID0gIWVzY2FwZWQgJiYgY2ggPT0gIlxcIjsKKyAgICAgIH0KKyAgICAgIGlmICghZXNjYXBl
ZCkgc3RhdGUudG9rZW5pemUgPSB0b2tlbkJhc2U7CisgICAgICByZXR1cm4gcmV0KCJzdHJpbmci
LCAic3RyaW5nIik7CisgICAgfTsKKyAgfQorCisgIHJldHVybiB7CisgICAgc3RhcnRTdGF0ZTog
ZnVuY3Rpb24oYmFzZSkgeworICAgICAgcmV0dXJuIHt0b2tlbml6ZTogdG9rZW5CYXNlLAorICAg
ICAgICAgICAgICBiYXNlSW5kZW50OiBiYXNlIHx8IDAsCisgICAgICAgICAgICAgIHN0YWNrOiBb
XX07CisgICAgfSwKKworICAgIHRva2VuOiBmdW5jdGlvbihzdHJlYW0sIHN0YXRlKSB7CisgICAg
ICBpZiAoc3RyZWFtLmVhdFNwYWNlKCkpIHJldHVybiBudWxsOworICAgICAgdmFyIHN0eWxlID0g
c3RhdGUudG9rZW5pemUoc3RyZWFtLCBzdGF0ZSk7CisKKyAgICAgIHZhciBjb250ZXh0ID0gc3Rh
dGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdOworICAgICAgaWYgKHR5cGUgPT0gImhhc2gi
ICYmIGNvbnRleHQgIT0gInJ1bGUiKSBzdHlsZSA9ICJzdHJpbmctMiI7CisgICAgICBlbHNlIGlm
IChzdHlsZSA9PSAidmFyaWFibGUiKSB7CisgICAgICAgIGlmIChjb250ZXh0ID09ICJydWxlIikg
c3R5bGUgPSBrZXl3b3Jkc1tzdHJlYW0uY3VycmVudCgpXSA/ICJrZXl3b3JkIiA6ICJudW1iZXIi
OworICAgICAgICBlbHNlIGlmICghY29udGV4dCB8fCBjb250ZXh0ID09ICJAbWVkaWF7Iikgc3R5
bGUgPSAidGFnIjsKKyAgICAgIH0KKworICAgICAgaWYgKGNvbnRleHQgPT0gInJ1bGUiICYmIC9e
W1x7XH07XSQvLnRlc3QodHlwZSkpCisgICAgICAgIHN0YXRlLnN0YWNrLnBvcCgpOworICAgICAg
aWYgKHR5cGUgPT0gInsiKSB7CisgICAgICAgIGlmIChjb250ZXh0ID09ICJAbWVkaWEiKSBzdGF0
ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPSAiQG1lZGlheyI7CisgICAgICAgIGVsc2Ug
c3RhdGUuc3RhY2sucHVzaCgieyIpOworICAgICAgfQorICAgICAgZWxzZSBpZiAodHlwZSA9PSAi
fSIpIHN0YXRlLnN0YWNrLnBvcCgpOworICAgICAgZWxzZSBpZiAodHlwZSA9PSAiQG1lZGlhIikg
c3RhdGUuc3RhY2sucHVzaCgiQG1lZGlhIik7CisgICAgICBlbHNlIGlmIChjb250ZXh0ID09ICJ7
IiAmJiB0eXBlICE9ICJjb21tZW50Iikgc3RhdGUuc3RhY2sucHVzaCgicnVsZSIpOworICAgICAg
cmV0dXJuIHN0eWxlOworICAgIH0sCisKKyAgICBpbmRlbnQ6IGZ1bmN0aW9uKHN0YXRlLCB0ZXh0
QWZ0ZXIpIHsKKyAgICAgIHZhciBuID0gc3RhdGUuc3RhY2subGVuZ3RoOworICAgICAgaWYgKC9e
XH0vLnRlc3QodGV4dEFmdGVyKSkKKyAgICAgICAgbiAtPSBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFj
ay5sZW5ndGgtMV0gPT0gInJ1bGUiID8gMiA6IDE7CisgICAgICByZXR1cm4gc3RhdGUuYmFzZUlu
ZGVudCArIG4gKiBpbmRlbnRVbml0OworICAgIH0sCisKKyAgICBlbGVjdHJpY0NoYXJzOiAifSIK
KyAgfTsKK30pOworCitDb2RlTWlycm9yLmRlZmluZU1JTUUoInRleHQvY3NzIiwgImNzcyIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9odG1sbWl4ZWQu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2h0bWxtaXhlZC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jNDdjYWE3MTczZWVlYTRmOGRlMTc1NDdiMDVhYTcxNTQxZjFlODBkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9odG1sbWl4ZWQu
anMKQEAgLTAsMCArMSw4NSBAQAorQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJodG1sbWl4ZWQiLCBm
dW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgeworICB2YXIgaHRtbE1vZGUgPSBDb2RlTWly
cm9yLmdldE1vZGUoY29uZmlnLCB7bmFtZTogInhtbCIsIGh0bWxNb2RlOiB0cnVlfSk7CisgIHZh
ciBqc01vZGUgPSBDb2RlTWlycm9yLmdldE1vZGUoY29uZmlnLCAiamF2YXNjcmlwdCIpOworICB2
YXIgY3NzTW9kZSA9IENvZGVNaXJyb3IuZ2V0TW9kZShjb25maWcsICJjc3MiKTsKKworICBmdW5j
dGlvbiBodG1sKHN0cmVhbSwgc3RhdGUpIHsKKyAgICB2YXIgc3R5bGUgPSBodG1sTW9kZS50b2tl
bihzdHJlYW0sIHN0YXRlLmh0bWxTdGF0ZSk7CisgICAgaWYgKHN0eWxlID09ICJ0YWciICYmIHN0
cmVhbS5jdXJyZW50KCkgPT0gIj4iICYmIHN0YXRlLmh0bWxTdGF0ZS5jb250ZXh0KSB7CisgICAg
ICBpZiAoL15zY3JpcHQkL2kudGVzdChzdGF0ZS5odG1sU3RhdGUuY29udGV4dC50YWdOYW1lKSkg
eworICAgICAgICBzdGF0ZS50b2tlbiA9IGphdmFzY3JpcHQ7CisgICAgICAgIHN0YXRlLmxvY2Fs
U3RhdGUgPSBqc01vZGUuc3RhcnRTdGF0ZShodG1sTW9kZS5pbmRlbnQoc3RhdGUuaHRtbFN0YXRl
LCAiIikpOworICAgICAgICBzdGF0ZS5tb2RlID0gImphdmFzY3JpcHQiOworICAgICAgfQorICAg
ICAgZWxzZSBpZiAoL15zdHlsZSQvaS50ZXN0KHN0YXRlLmh0bWxTdGF0ZS5jb250ZXh0LnRhZ05h
bWUpKSB7CisgICAgICAgIHN0YXRlLnRva2VuID0gY3NzOworICAgICAgICBzdGF0ZS5sb2NhbFN0
YXRlID0gY3NzTW9kZS5zdGFydFN0YXRlKGh0bWxNb2RlLmluZGVudChzdGF0ZS5odG1sU3RhdGUs
ICIiKSk7CisgICAgICAgIHN0YXRlLm1vZGUgPSAiY3NzIjsKKyAgICAgIH0KKyAgICB9CisgICAg
cmV0dXJuIHN0eWxlOworICB9CisgIGZ1bmN0aW9uIG1heWJlQmFja3VwKHN0cmVhbSwgcGF0LCBz
dHlsZSkgeworICAgIHZhciBjdXIgPSBzdHJlYW0uY3VycmVudCgpOworICAgIHZhciBjbG9zZSA9
IGN1ci5zZWFyY2gocGF0KTsKKyAgICBpZiAoY2xvc2UgPiAtMSkgc3RyZWFtLmJhY2tVcChjdXIu
bGVuZ3RoIC0gY2xvc2UpOworICAgIHJldHVybiBzdHlsZTsKKyAgfQorICBmdW5jdGlvbiBqYXZh
c2NyaXB0KHN0cmVhbSwgc3RhdGUpIHsKKyAgICBpZiAoc3RyZWFtLm1hdGNoKC9ePFwvXHMqc2Ny
aXB0XHMqPi9pLCBmYWxzZSkpIHsKKyAgICAgIHN0YXRlLnRva2VuID0gaHRtbDsKKyAgICAgIHN0
YXRlLmxvY2FsU3RhdGUgPSBudWxsOworICAgICAgc3RhdGUubW9kZSA9ICJodG1sIjsKKyAgICAg
IHJldHVybiBodG1sKHN0cmVhbSwgc3RhdGUpOworICAgIH0KKyAgICByZXR1cm4gbWF5YmVCYWNr
dXAoc3RyZWFtLCAvPFwvXHMqc2NyaXB0XHMqPi8sCisgICAgICAgICAgICAgICAgICAgICAgIGpz
TW9kZS50b2tlbihzdHJlYW0sIHN0YXRlLmxvY2FsU3RhdGUpKTsKKyAgfQorICBmdW5jdGlvbiBj
c3Moc3RyZWFtLCBzdGF0ZSkgeworICAgIGlmIChzdHJlYW0ubWF0Y2goL148XC9ccypzdHlsZVxz
Kj4vaSwgZmFsc2UpKSB7CisgICAgICBzdGF0ZS50b2tlbiA9IGh0bWw7CisgICAgICBzdGF0ZS5s
b2NhbFN0YXRlID0gbnVsbDsKKyAgICAgIHN0YXRlLm1vZGUgPSAiaHRtbCI7CisgICAgICByZXR1
cm4gaHRtbChzdHJlYW0sIHN0YXRlKTsKKyAgICB9CisgICAgcmV0dXJuIG1heWJlQmFja3VwKHN0
cmVhbSwgLzxcL1xzKnN0eWxlXHMqPi8sCisgICAgICAgICAgICAgICAgICAgICAgIGNzc01vZGUu
dG9rZW4oc3RyZWFtLCBzdGF0ZS5sb2NhbFN0YXRlKSk7CisgIH0KKworICByZXR1cm4geworICAg
IHN0YXJ0U3RhdGU6IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIHN0YXRlID0gaHRtbE1vZGUuc3Rh
cnRTdGF0ZSgpOworICAgICAgcmV0dXJuIHt0b2tlbjogaHRtbCwgbG9jYWxTdGF0ZTogbnVsbCwg
bW9kZTogImh0bWwiLCBodG1sU3RhdGU6IHN0YXRlfTsKKyAgICB9LAorCisgICAgY29weVN0YXRl
OiBmdW5jdGlvbihzdGF0ZSkgeworICAgICAgaWYgKHN0YXRlLmxvY2FsU3RhdGUpCisgICAgICAg
IHZhciBsb2NhbCA9IENvZGVNaXJyb3IuY29weVN0YXRlKHN0YXRlLnRva2VuID09IGNzcyA/IGNz
c01vZGUgOiBqc01vZGUsIHN0YXRlLmxvY2FsU3RhdGUpOworICAgICAgcmV0dXJuIHt0b2tlbjog
c3RhdGUudG9rZW4sIGxvY2FsU3RhdGU6IGxvY2FsLCBtb2RlOiBzdGF0ZS5tb2RlLAorICAgICAg
ICAgICAgICBodG1sU3RhdGU6IENvZGVNaXJyb3IuY29weVN0YXRlKGh0bWxNb2RlLCBzdGF0ZS5o
dG1sU3RhdGUpfTsKKyAgICB9LAorCisgICAgdG9rZW46IGZ1bmN0aW9uKHN0cmVhbSwgc3RhdGUp
IHsKKyAgICAgIHJldHVybiBzdGF0ZS50b2tlbihzdHJlYW0sIHN0YXRlKTsKKyAgICB9LAorCisg
ICAgaW5kZW50OiBmdW5jdGlvbihzdGF0ZSwgdGV4dEFmdGVyKSB7CisgICAgICBpZiAoc3RhdGUu
dG9rZW4gPT0gaHRtbCB8fCAvXlxzKjxcLy8udGVzdCh0ZXh0QWZ0ZXIpKQorICAgICAgICByZXR1
cm4gaHRtbE1vZGUuaW5kZW50KHN0YXRlLmh0bWxTdGF0ZSwgdGV4dEFmdGVyKTsKKyAgICAgIGVs
c2UgaWYgKHN0YXRlLnRva2VuID09IGphdmFzY3JpcHQpCisgICAgICAgIHJldHVybiBqc01vZGUu
aW5kZW50KHN0YXRlLmxvY2FsU3RhdGUsIHRleHRBZnRlcik7CisgICAgICBlbHNlCisgICAgICAg
IHJldHVybiBjc3NNb2RlLmluZGVudChzdGF0ZS5sb2NhbFN0YXRlLCB0ZXh0QWZ0ZXIpOworICAg
IH0sCisKKyAgICBjb21wYXJlU3RhdGVzOiBmdW5jdGlvbihhLCBiKSB7CisgICAgICBpZiAoYS5t
b2RlICE9IGIubW9kZSkgcmV0dXJuIGZhbHNlOworICAgICAgaWYgKGEubG9jYWxTdGF0ZSkgcmV0
dXJuIENvZGVNaXJyb3IuUGFzczsKKyAgICAgIHJldHVybiBodG1sTW9kZS5jb21wYXJlU3RhdGVz
KGEuaHRtbFN0YXRlLCBiLmh0bWxTdGF0ZSk7CisgICAgfSwKKworICAgIGVsZWN0cmljQ2hhcnM6
ICIve306IgorICB9OworfSwgInhtbCIsICJqYXZhc2NyaXB0IiwgImNzcyIpOworCitDb2RlTWly
cm9yLmRlZmluZU1JTUUoInRleHQvaHRtbCIsICJodG1sbWl4ZWQiKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmluZGV4IDA1ZjdhMWQ4
NjkyOWRkN2FhNjk3NWRlNTgyMGUxZTI4YTc0MzUzM2IuLmU5YTI2YzRlZDAyZWY1MDcyY2Y3MGYx
OTUxZjQwZTdiNGUxYmE3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAtMTIwLDYgKzEyMCwxMiBAQCBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ik5ldHdvcmtQYW5lbC5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iVGV4dEVkaXRv
ci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
RGVmYXVsdFRleHRFZGl0b3IuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IkNvZGVNaXJyb3JUZXh0RWRpdG9yLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJjb2RlbWlycm9yLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJjc3MuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImphdmFzY3JpcHQu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Inht
bC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
aHRtbG1peGVkLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJTb3VyY2VGcmFtZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iVUlTb3VyY2VDb2RlRnJhbWUuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlJlc291cmNlVmlldy5qcyI+PC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2phdmFz
Y3JpcHQuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2phdmFzY3JpcHQu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWEzYzMyNmRmMjMzMmQ3ZjUzZGJkZTZhNTYwOTlhNTY2MjJkMzM3ZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvamF2
YXNjcmlwdC5qcwpAQCAtMCwwICsxLDM2MSBAQAorQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJqYXZh
c2NyaXB0IiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKKyAgdmFyIGluZGVudFVu
aXQgPSBjb25maWcuaW5kZW50VW5pdDsKKyAgdmFyIGpzb25Nb2RlID0gcGFyc2VyQ29uZmlnLmpz
b247CisKKyAgLy8gVG9rZW5pemVyCisKKyAgdmFyIGtleXdvcmRzID0gZnVuY3Rpb24oKXsKKyAg
ICBmdW5jdGlvbiBrdyh0eXBlKSB7cmV0dXJuIHt0eXBlOiB0eXBlLCBzdHlsZTogImtleXdvcmQi
fTt9CisgICAgdmFyIEEgPSBrdygia2V5d29yZCBhIiksIEIgPSBrdygia2V5d29yZCBiIiksIEMg
PSBrdygia2V5d29yZCBjIik7CisgICAgdmFyIG9wZXJhdG9yID0ga3coIm9wZXJhdG9yIiksIGF0
b20gPSB7dHlwZTogImF0b20iLCBzdHlsZTogImF0b20ifTsKKyAgICByZXR1cm4geworICAgICAg
ImlmIjogQSwgIndoaWxlIjogQSwgIndpdGgiOiBBLCAiZWxzZSI6IEIsICJkbyI6IEIsICJ0cnki
OiBCLCAiZmluYWxseSI6IEIsCisgICAgICAicmV0dXJuIjogQywgImJyZWFrIjogQywgImNvbnRp
bnVlIjogQywgIm5ldyI6IEMsICJkZWxldGUiOiBDLCAidGhyb3ciOiBDLAorICAgICAgInZhciI6
IGt3KCJ2YXIiKSwgImNvbnN0Ijoga3coInZhciIpLCAibGV0Ijoga3coInZhciIpLAorICAgICAg
ImZ1bmN0aW9uIjoga3coImZ1bmN0aW9uIiksICJjYXRjaCI6IGt3KCJjYXRjaCIpLAorICAgICAg
ImZvciI6IGt3KCJmb3IiKSwgInN3aXRjaCI6IGt3KCJzd2l0Y2giKSwgImNhc2UiOiBrdygiY2Fz
ZSIpLCAiZGVmYXVsdCI6IGt3KCJkZWZhdWx0IiksCisgICAgICAiaW4iOiBvcGVyYXRvciwgInR5
cGVvZiI6IG9wZXJhdG9yLCAiaW5zdGFuY2VvZiI6IG9wZXJhdG9yLAorICAgICAgInRydWUiOiBh
dG9tLCAiZmFsc2UiOiBhdG9tLCAibnVsbCI6IGF0b20sICJ1bmRlZmluZWQiOiBhdG9tLCAiTmFO
IjogYXRvbSwgIkluZmluaXR5IjogYXRvbQorICAgIH07CisgIH0oKTsKKworICB2YXIgaXNPcGVy
YXRvckNoYXIgPSAvWytcLSomJT08PiE/fF0vOworCisgIGZ1bmN0aW9uIGNoYWluKHN0cmVhbSwg
c3RhdGUsIGYpIHsKKyAgICBzdGF0ZS50b2tlbml6ZSA9IGY7CisgICAgcmV0dXJuIGYoc3RyZWFt
LCBzdGF0ZSk7CisgIH0KKworICBmdW5jdGlvbiBuZXh0VW50aWxVbmVzY2FwZWQoc3RyZWFtLCBl
bmQpIHsKKyAgICB2YXIgZXNjYXBlZCA9IGZhbHNlLCBuZXh0OworICAgIHdoaWxlICgobmV4dCA9
IHN0cmVhbS5uZXh0KCkpICE9IG51bGwpIHsKKyAgICAgIGlmIChuZXh0ID09IGVuZCAmJiAhZXNj
YXBlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkICYm
IG5leHQgPT0gIlxcIjsKKyAgICB9CisgICAgcmV0dXJuIGVzY2FwZWQ7CisgIH0KKworICAvLyBV
c2VkIGFzIHNjcmF0Y2ggdmFyaWFibGVzIHRvIGNvbW11bmljYXRlIG11bHRpcGxlIHZhbHVlcyB3
aXRob3V0CisgIC8vIGNvbnNpbmcgdXAgdG9ucyBvZiBvYmplY3RzLgorICB2YXIgdHlwZSwgY29u
dGVudDsKKyAgZnVuY3Rpb24gcmV0KHRwLCBzdHlsZSwgY29udCkgeworICAgIHR5cGUgPSB0cDsg
Y29udGVudCA9IGNvbnQ7CisgICAgcmV0dXJuIHN0eWxlOworICB9CisKKyAgZnVuY3Rpb24ganNU
b2tlbkJhc2Uoc3RyZWFtLCBzdGF0ZSkgeworICAgIHZhciBjaCA9IHN0cmVhbS5uZXh0KCk7Cisg
ICAgaWYgKGNoID09ICciJyB8fCBjaCA9PSAiJyIpCisgICAgICByZXR1cm4gY2hhaW4oc3RyZWFt
LCBzdGF0ZSwganNUb2tlblN0cmluZyhjaCkpOworICAgIGVsc2UgaWYgKC9bXFtcXXt9XChcKSw7
XDpcLl0vLnRlc3QoY2gpKQorICAgICAgcmV0dXJuIHJldChjaCk7CisgICAgZWxzZSBpZiAoY2gg
PT0gIjAiICYmIHN0cmVhbS5lYXQoL3gvaSkpIHsKKyAgICAgIHN0cmVhbS5lYXRXaGlsZSgvW1xk
YS1mXS9pKTsKKyAgICAgIHJldHVybiByZXQoIm51bWJlciIsICJudW1iZXIiKTsKKyAgICB9Cisg
ICAgZWxzZSBpZiAoL1xkLy50ZXN0KGNoKSB8fCBjaCA9PSAiLSIgJiYgc3RyZWFtLmVhdCgvXGQv
KSkgeworICAgICAgc3RyZWFtLm1hdGNoKC9eXGQqKD86XC5cZCopPyg/OltlRV1bK1wtXT9cZCsp
Py8pOworICAgICAgcmV0dXJuIHJldCgibnVtYmVyIiwgIm51bWJlciIpOworICAgIH0KKyAgICBl
bHNlIGlmIChjaCA9PSAiLyIpIHsKKyAgICAgIGlmIChzdHJlYW0uZWF0KCIqIikpIHsKKyAgICAg
ICAgcmV0dXJuIGNoYWluKHN0cmVhbSwgc3RhdGUsIGpzVG9rZW5Db21tZW50KTsKKyAgICAgIH0K
KyAgICAgIGVsc2UgaWYgKHN0cmVhbS5lYXQoIi8iKSkgeworICAgICAgICBzdHJlYW0uc2tpcFRv
RW5kKCk7CisgICAgICAgIHJldHVybiByZXQoImNvbW1lbnQiLCAiY29tbWVudCIpOworICAgICAg
fQorICAgICAgZWxzZSBpZiAoc3RhdGUucmVBbGxvd2VkKSB7CisgICAgICAgIG5leHRVbnRpbFVu
ZXNjYXBlZChzdHJlYW0sICIvIik7CisgICAgICAgIHN0cmVhbS5lYXRXaGlsZSgvW2dpbXldLyk7
IC8vICd5JyBpcyAic3RpY2t5IiBvcHRpb24gaW4gTW96aWxsYQorICAgICAgICByZXR1cm4gcmV0
KCJyZWdleHAiLCAic3RyaW5nLTIiKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBz
dHJlYW0uZWF0V2hpbGUoaXNPcGVyYXRvckNoYXIpOworICAgICAgICByZXR1cm4gcmV0KCJvcGVy
YXRvciIsIG51bGwsIHN0cmVhbS5jdXJyZW50KCkpOworICAgICAgfQorICAgIH0KKyAgICBlbHNl
IGlmIChjaCA9PSAiIyIpIHsKKyAgICAgICAgc3RyZWFtLnNraXBUb0VuZCgpOworICAgICAgICBy
ZXR1cm4gcmV0KCJlcnJvciIsICJlcnJvciIpOworICAgIH0KKyAgICBlbHNlIGlmIChpc09wZXJh
dG9yQ2hhci50ZXN0KGNoKSkgeworICAgICAgc3RyZWFtLmVhdFdoaWxlKGlzT3BlcmF0b3JDaGFy
KTsKKyAgICAgIHJldHVybiByZXQoIm9wZXJhdG9yIiwgbnVsbCwgc3RyZWFtLmN1cnJlbnQoKSk7
CisgICAgfQorICAgIGVsc2UgeworICAgICAgc3RyZWFtLmVhdFdoaWxlKC9bXHdcJF9dLyk7Cisg
ICAgICB2YXIgd29yZCA9IHN0cmVhbS5jdXJyZW50KCksIGtub3duID0ga2V5d29yZHMucHJvcGVy
dHlJc0VudW1lcmFibGUod29yZCkgJiYga2V5d29yZHNbd29yZF07CisgICAgICByZXR1cm4gKGtu
b3duICYmIHN0YXRlLmt3QWxsb3dlZCkgPyByZXQoa25vd24udHlwZSwga25vd24uc3R5bGUsIHdv
cmQpIDoKKyAgICAgICAgICAgICAgICAgICAgIHJldCgidmFyaWFibGUiLCAidmFyaWFibGUiLCB3
b3JkKTsKKyAgICB9CisgIH0KKworICBmdW5jdGlvbiBqc1Rva2VuU3RyaW5nKHF1b3RlKSB7Cisg
ICAgcmV0dXJuIGZ1bmN0aW9uKHN0cmVhbSwgc3RhdGUpIHsKKyAgICAgIGlmICghbmV4dFVudGls
VW5lc2NhcGVkKHN0cmVhbSwgcXVvdGUpKQorICAgICAgICBzdGF0ZS50b2tlbml6ZSA9IGpzVG9r
ZW5CYXNlOworICAgICAgcmV0dXJuIHJldCgic3RyaW5nIiwgInN0cmluZyIpOworICAgIH07Cisg
IH0KKworICBmdW5jdGlvbiBqc1Rva2VuQ29tbWVudChzdHJlYW0sIHN0YXRlKSB7CisgICAgdmFy
IG1heWJlRW5kID0gZmFsc2UsIGNoOworICAgIHdoaWxlIChjaCA9IHN0cmVhbS5uZXh0KCkpIHsK
KyAgICAgIGlmIChjaCA9PSAiLyIgJiYgbWF5YmVFbmQpIHsKKyAgICAgICAgc3RhdGUudG9rZW5p
emUgPSBqc1Rva2VuQmFzZTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBtYXliZUVu
ZCA9IChjaCA9PSAiKiIpOworICAgIH0KKyAgICByZXR1cm4gcmV0KCJjb21tZW50IiwgImNvbW1l
bnQiKTsKKyAgfQorCisgIC8vIFBhcnNlcgorCisgIHZhciBhdG9taWNUeXBlcyA9IHsiYXRvbSI6
IHRydWUsICJudW1iZXIiOiB0cnVlLCAidmFyaWFibGUiOiB0cnVlLCAic3RyaW5nIjogdHJ1ZSwg
InJlZ2V4cCI6IHRydWV9OworCisgIGZ1bmN0aW9uIEpTTGV4aWNhbChpbmRlbnRlZCwgY29sdW1u
LCB0eXBlLCBhbGlnbiwgcHJldiwgaW5mbykgeworICAgIHRoaXMuaW5kZW50ZWQgPSBpbmRlbnRl
ZDsKKyAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjsKKyAgICB0aGlzLnR5cGUgPSB0eXBlOworICAg
IHRoaXMucHJldiA9IHByZXY7CisgICAgdGhpcy5pbmZvID0gaW5mbzsKKyAgICBpZiAoYWxpZ24g
IT0gbnVsbCkgdGhpcy5hbGlnbiA9IGFsaWduOworICB9CisKKyAgZnVuY3Rpb24gaW5TY29wZShz
dGF0ZSwgdmFybmFtZSkgeworICAgIGZvciAodmFyIHYgPSBzdGF0ZS5sb2NhbFZhcnM7IHY7IHYg
PSB2Lm5leHQpCisgICAgICBpZiAodi5uYW1lID09IHZhcm5hbWUpIHJldHVybiB0cnVlOworICB9
CisKKyAgZnVuY3Rpb24gcGFyc2VKUyhzdGF0ZSwgc3R5bGUsIHR5cGUsIGNvbnRlbnQsIHN0cmVh
bSkgeworICAgIHZhciBjYyA9IHN0YXRlLmNjOworICAgIC8vIENvbW11bmljYXRlIG91ciBjb250
ZXh0IHRvIHRoZSBjb21iaW5hdG9ycy4KKyAgICAvLyAoTGVzcyB3YXN0ZWZ1bCB0aGFuIGNvbnNp
bmcgdXAgYSBodW5kcmVkIGNsb3N1cmVzIG9uIGV2ZXJ5IGNhbGwuKQorICAgIGN4LnN0YXRlID0g
c3RhdGU7IGN4LnN0cmVhbSA9IHN0cmVhbTsgY3gubWFya2VkID0gbnVsbCwgY3guY2MgPSBjYzsK
KworICAgIGlmICghc3RhdGUubGV4aWNhbC5oYXNPd25Qcm9wZXJ0eSgiYWxpZ24iKSkKKyAgICAg
IHN0YXRlLmxleGljYWwuYWxpZ24gPSB0cnVlOworCisgICAgd2hpbGUodHJ1ZSkgeworICAgICAg
dmFyIGNvbWJpbmF0b3IgPSBjYy5sZW5ndGggPyBjYy5wb3AoKSA6IGpzb25Nb2RlID8gZXhwcmVz
c2lvbiA6IHN0YXRlbWVudDsKKyAgICAgIGlmIChjb21iaW5hdG9yKHR5cGUsIGNvbnRlbnQpKSB7
CisgICAgICAgIHdoaWxlKGNjLmxlbmd0aCAmJiBjY1tjYy5sZW5ndGggLSAxXS5sZXgpCisgICAg
ICAgICAgY2MucG9wKCkoKTsKKyAgICAgICAgaWYgKGN4Lm1hcmtlZCkgcmV0dXJuIGN4Lm1hcmtl
ZDsKKyAgICAgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIiAmJiBpblNjb3BlKHN0YXRlLCBjb250
ZW50KSkgcmV0dXJuICJ2YXJpYWJsZS0yIjsKKyAgICAgICAgcmV0dXJuIHN0eWxlOworICAgICAg
fQorICAgIH0KKyAgfQorCisgIC8vIENvbWJpbmF0b3IgdXRpbHMKKworICB2YXIgY3ggPSB7c3Rh
dGU6IG51bGwsIGNvbHVtbjogbnVsbCwgbWFya2VkOiBudWxsLCBjYzogbnVsbH07CisgIGZ1bmN0
aW9uIHBhc3MoKSB7CisgICAgZm9yICh2YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGggLSAxOyBpID49
IDA7IGktLSkgY3guY2MucHVzaChhcmd1bWVudHNbaV0pOworICB9CisgIGZ1bmN0aW9uIGNvbnQo
KSB7CisgICAgcGFzcy5hcHBseShudWxsLCBhcmd1bWVudHMpOworICAgIHJldHVybiB0cnVlOwor
ICB9CisgIGZ1bmN0aW9uIHJlZ2lzdGVyKHZhcm5hbWUpIHsKKyAgICB2YXIgc3RhdGUgPSBjeC5z
dGF0ZTsKKyAgICBpZiAoc3RhdGUuY29udGV4dCkgeworICAgICAgY3gubWFya2VkID0gImRlZiI7
CisgICAgICBmb3IgKHZhciB2ID0gc3RhdGUubG9jYWxWYXJzOyB2OyB2ID0gdi5uZXh0KQorICAg
ICAgICBpZiAodi5uYW1lID09IHZhcm5hbWUpIHJldHVybjsKKyAgICAgIHN0YXRlLmxvY2FsVmFy
cyA9IHtuYW1lOiB2YXJuYW1lLCBuZXh0OiBzdGF0ZS5sb2NhbFZhcnN9OworICAgIH0KKyAgfQor
CisgIC8vIENvbWJpbmF0b3JzCisKKyAgdmFyIGRlZmF1bHRWYXJzID0ge25hbWU6ICJ0aGlzIiwg
bmV4dDoge25hbWU6ICJhcmd1bWVudHMifX07CisgIGZ1bmN0aW9uIHB1c2hjb250ZXh0KCkgewor
ICAgIGlmICghY3guc3RhdGUuY29udGV4dCkgY3guc3RhdGUubG9jYWxWYXJzID0gZGVmYXVsdFZh
cnM7CisgICAgY3guc3RhdGUuY29udGV4dCA9IHtwcmV2OiBjeC5zdGF0ZS5jb250ZXh0LCB2YXJz
OiBjeC5zdGF0ZS5sb2NhbFZhcnN9OworICB9CisgIGZ1bmN0aW9uIHBvcGNvbnRleHQoKSB7Cisg
ICAgY3guc3RhdGUubG9jYWxWYXJzID0gY3guc3RhdGUuY29udGV4dC52YXJzOworICAgIGN4LnN0
YXRlLmNvbnRleHQgPSBjeC5zdGF0ZS5jb250ZXh0LnByZXY7CisgIH0KKyAgZnVuY3Rpb24gcHVz
aGxleCh0eXBlLCBpbmZvKSB7CisgICAgdmFyIHJlc3VsdCA9IGZ1bmN0aW9uKCkgeworICAgICAg
dmFyIHN0YXRlID0gY3guc3RhdGU7CisgICAgICBzdGF0ZS5sZXhpY2FsID0gbmV3IEpTTGV4aWNh
bChzdGF0ZS5pbmRlbnRlZCwgY3guc3RyZWFtLmNvbHVtbigpLCB0eXBlLCBudWxsLCBzdGF0ZS5s
ZXhpY2FsLCBpbmZvKTsKKyAgICB9OworICAgIHJlc3VsdC5sZXggPSB0cnVlOworICAgIHJldHVy
biByZXN1bHQ7CisgIH0KKyAgZnVuY3Rpb24gcG9wbGV4KCkgeworICAgIHZhciBzdGF0ZSA9IGN4
LnN0YXRlOworICAgIGlmIChzdGF0ZS5sZXhpY2FsLnByZXYpIHsKKyAgICAgIGlmIChzdGF0ZS5s
ZXhpY2FsLnR5cGUgPT0gIikiKQorICAgICAgICBzdGF0ZS5pbmRlbnRlZCA9IHN0YXRlLmxleGlj
YWwuaW5kZW50ZWQ7CisgICAgICBzdGF0ZS5sZXhpY2FsID0gc3RhdGUubGV4aWNhbC5wcmV2Owor
ICAgIH0KKyAgfQorICBwb3BsZXgubGV4ID0gdHJ1ZTsKKworICBmdW5jdGlvbiBleHBlY3Qod2Fu
dGVkKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uIGV4cGVjdGluZyh0eXBlKSB7CisgICAgICBpZiAo
dHlwZSA9PSB3YW50ZWQpIHJldHVybiBjb250KCk7CisgICAgICBlbHNlIGlmICh3YW50ZWQgPT0g
IjsiKSByZXR1cm4gcGFzcygpOworICAgICAgZWxzZSByZXR1cm4gY29udChhcmd1bWVudHMuY2Fs
bGVlKTsKKyAgICB9OworICB9CisKKyAgZnVuY3Rpb24gc3RhdGVtZW50KHR5cGUpIHsKKyAgICBp
ZiAodHlwZSA9PSAidmFyIikgcmV0dXJuIGNvbnQocHVzaGxleCgidmFyZGVmIiksIHZhcmRlZjEs
IGV4cGVjdCgiOyIpLCBwb3BsZXgpOworICAgIGlmICh0eXBlID09ICJrZXl3b3JkIGEiKSByZXR1
cm4gY29udChwdXNobGV4KCJmb3JtIiksIGV4cHJlc3Npb24sIHN0YXRlbWVudCwgcG9wbGV4KTsK
KyAgICBpZiAodHlwZSA9PSAia2V5d29yZCBiIikgcmV0dXJuIGNvbnQocHVzaGxleCgiZm9ybSIp
LCBzdGF0ZW1lbnQsIHBvcGxleCk7CisgICAgaWYgKHR5cGUgPT0gInsiKSByZXR1cm4gY29udChw
dXNobGV4KCJ9IiksIGJsb2NrLCBwb3BsZXgpOworICAgIGlmICh0eXBlID09ICI7IikgcmV0dXJu
IGNvbnQoKTsKKyAgICBpZiAodHlwZSA9PSAiZnVuY3Rpb24iKSByZXR1cm4gY29udChmdW5jdGlv
bmRlZik7CisgICAgaWYgKHR5cGUgPT0gImZvciIpIHJldHVybiBjb250KHB1c2hsZXgoImZvcm0i
KSwgZXhwZWN0KCIoIiksIHB1c2hsZXgoIikiKSwgZm9yc3BlYzEsIGV4cGVjdCgiKSIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3BsZXgsIHN0YXRlbWVudCwgcG9w
bGV4KTsKKyAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiKSByZXR1cm4gY29udChwdXNobGV4KCJz
dGF0IiksIG1heWJlbGFiZWwpOworICAgIGlmICh0eXBlID09ICJzd2l0Y2giKSByZXR1cm4gY29u
dChwdXNobGV4KCJmb3JtIiksIGV4cHJlc3Npb24sIHB1c2hsZXgoIn0iLCAic3dpdGNoIiksIGV4
cGVjdCgieyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9j
aywgcG9wbGV4LCBwb3BsZXgpOworICAgIGlmICh0eXBlID09ICJjYXNlIikgcmV0dXJuIGNvbnQo
ZXhwcmVzc2lvbiwgZXhwZWN0KCI6IikpOworICAgIGlmICh0eXBlID09ICJkZWZhdWx0IikgcmV0
dXJuIGNvbnQoZXhwZWN0KCI6IikpOworICAgIGlmICh0eXBlID09ICJjYXRjaCIpIHJldHVybiBj
b250KHB1c2hsZXgoImZvcm0iKSwgcHVzaGNvbnRleHQsIGV4cGVjdCgiKCIpLCBmdW5hcmcsIGV4
cGVjdCgiKSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRl
bWVudCwgcG9wbGV4LCBwb3Bjb250ZXh0KTsKKyAgICByZXR1cm4gcGFzcyhwdXNobGV4KCJzdGF0
IiksIGV4cHJlc3Npb24sIGV4cGVjdCgiOyIpLCBwb3BsZXgpOworICB9CisgIGZ1bmN0aW9uIGV4
cHJlc3Npb24odHlwZSkgeworICAgIGlmIChhdG9taWNUeXBlcy5oYXNPd25Qcm9wZXJ0eSh0eXBl
KSkgcmV0dXJuIGNvbnQobWF5YmVvcGVyYXRvcik7CisgICAgaWYgKHR5cGUgPT0gImZ1bmN0aW9u
IikgcmV0dXJuIGNvbnQoZnVuY3Rpb25kZWYpOworICAgIGlmICh0eXBlID09ICJrZXl3b3JkIGMi
KSByZXR1cm4gY29udChtYXliZWV4cHJlc3Npb24pOworICAgIGlmICh0eXBlID09ICIoIikgcmV0
dXJuIGNvbnQocHVzaGxleCgiKSIpLCBtYXliZWV4cHJlc3Npb24sIGV4cGVjdCgiKSIpLCBwb3Bs
ZXgsIG1heWJlb3BlcmF0b3IpOworICAgIGlmICh0eXBlID09ICJvcGVyYXRvciIpIHJldHVybiBj
b250KGV4cHJlc3Npb24pOworICAgIGlmICh0eXBlID09ICJbIikgcmV0dXJuIGNvbnQocHVzaGxl
eCgiXSIpLCBjb21tYXNlcChleHByZXNzaW9uLCAiXSIpLCBwb3BsZXgsIG1heWJlb3BlcmF0b3Ip
OworICAgIGlmICh0eXBlID09ICJ7IikgcmV0dXJuIGNvbnQocHVzaGxleCgifSIpLCBjb21tYXNl
cChvYmpwcm9wLCAifSIpLCBwb3BsZXgsIG1heWJlb3BlcmF0b3IpOworICAgIHJldHVybiBjb250
KCk7CisgIH0KKyAgZnVuY3Rpb24gbWF5YmVleHByZXNzaW9uKHR5cGUpIHsKKyAgICBpZiAodHlw
ZS5tYXRjaCgvWztcfVwpXF0sXS8pKSByZXR1cm4gcGFzcygpOworICAgIHJldHVybiBwYXNzKGV4
cHJlc3Npb24pOworICB9CisKKyAgZnVuY3Rpb24gbWF5YmVvcGVyYXRvcih0eXBlLCB2YWx1ZSkg
eworICAgIGlmICh0eXBlID09ICJvcGVyYXRvciIgJiYgL1wrXCt8LS0vLnRlc3QodmFsdWUpKSBy
ZXR1cm4gY29udChtYXliZW9wZXJhdG9yKTsKKyAgICBpZiAodHlwZSA9PSAib3BlcmF0b3IiICYm
IHZhbHVlID09ICI/IikgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbiwgZXhwZWN0KCI6IiksIGV4cHJl
c3Npb24pOworICAgIGlmICh0eXBlID09ICI7IikgcmV0dXJuOworICAgIGlmICh0eXBlID09ICIo
IikgcmV0dXJuIGNvbnQocHVzaGxleCgiKSIpLCBjb21tYXNlcChleHByZXNzaW9uLCAiKSIpLCBw
b3BsZXgsIG1heWJlb3BlcmF0b3IpOworICAgIGlmICh0eXBlID09ICIuIikgcmV0dXJuIGNvbnQo
cHJvcGVydHksIG1heWJlb3BlcmF0b3IpOworICAgIGlmICh0eXBlID09ICJbIikgcmV0dXJuIGNv
bnQocHVzaGxleCgiXSIpLCBleHByZXNzaW9uLCBleHBlY3QoIl0iKSwgcG9wbGV4LCBtYXliZW9w
ZXJhdG9yKTsKKyAgfQorICBmdW5jdGlvbiBtYXliZWxhYmVsKHR5cGUpIHsKKyAgICBpZiAodHlw
ZSA9PSAiOiIpIHJldHVybiBjb250KHBvcGxleCwgc3RhdGVtZW50KTsKKyAgICByZXR1cm4gcGFz
cyhtYXliZW9wZXJhdG9yLCBleHBlY3QoIjsiKSwgcG9wbGV4KTsKKyAgfQorICBmdW5jdGlvbiBw
cm9wZXJ0eSh0eXBlKSB7CisgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikge2N4Lm1hcmtlZCA9
ICJwcm9wZXJ0eSI7IHJldHVybiBjb250KCk7fQorICB9CisgIGZ1bmN0aW9uIG9ianByb3AodHlw
ZSkgeworICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIGN4Lm1hcmtlZCA9ICJwcm9wZXJ0eSI7
CisgICAgaWYgKGF0b21pY1R5cGVzLmhhc093blByb3BlcnR5KHR5cGUpKSByZXR1cm4gY29udChl
eHBlY3QoIjoiKSwgZXhwcmVzc2lvbik7CisgIH0KKyAgZnVuY3Rpb24gY29tbWFzZXAod2hhdCwg
ZW5kKSB7CisgICAgZnVuY3Rpb24gcHJvY2VlZCh0eXBlKSB7CisgICAgICBpZiAodHlwZSA9PSAi
LCIpIHJldHVybiBjb250KHdoYXQsIHByb2NlZWQpOworICAgICAgaWYgKHR5cGUgPT0gZW5kKSBy
ZXR1cm4gY29udCgpOworICAgICAgcmV0dXJuIGNvbnQoZXhwZWN0KGVuZCkpOworICAgIH0KKyAg
ICByZXR1cm4gZnVuY3Rpb24gY29tbWFTZXBhcmF0ZWQodHlwZSkgeworICAgICAgaWYgKHR5cGUg
PT0gZW5kKSByZXR1cm4gY29udCgpOworICAgICAgZWxzZSByZXR1cm4gcGFzcyh3aGF0LCBwcm9j
ZWVkKTsKKyAgICB9OworICB9CisgIGZ1bmN0aW9uIGJsb2NrKHR5cGUpIHsKKyAgICBpZiAodHlw
ZSA9PSAifSIpIHJldHVybiBjb250KCk7CisgICAgcmV0dXJuIHBhc3Moc3RhdGVtZW50LCBibG9j
ayk7CisgIH0KKyAgZnVuY3Rpb24gdmFyZGVmMSh0eXBlLCB2YWx1ZSkgeworICAgIGlmICh0eXBl
ID09ICJ2YXJpYWJsZSIpe3JlZ2lzdGVyKHZhbHVlKTsgcmV0dXJuIGNvbnQodmFyZGVmMik7fQor
ICAgIHJldHVybiBjb250KCk7CisgIH0KKyAgZnVuY3Rpb24gdmFyZGVmMih0eXBlLCB2YWx1ZSkg
eworICAgIGlmICh2YWx1ZSA9PSAiPSIpIHJldHVybiBjb250KGV4cHJlc3Npb24sIHZhcmRlZjIp
OworICAgIGlmICh0eXBlID09ICIsIikgcmV0dXJuIGNvbnQodmFyZGVmMSk7CisgIH0KKyAgZnVu
Y3Rpb24gZm9yc3BlYzEodHlwZSkgeworICAgIGlmICh0eXBlID09ICJ2YXIiKSByZXR1cm4gY29u
dCh2YXJkZWYxLCBmb3JzcGVjMik7CisgICAgaWYgKHR5cGUgPT0gIjsiKSByZXR1cm4gcGFzcyhm
b3JzcGVjMik7CisgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikgcmV0dXJuIGNvbnQoZm9ybWF5
YmVpbik7CisgICAgcmV0dXJuIHBhc3MoZm9yc3BlYzIpOworICB9CisgIGZ1bmN0aW9uIGZvcm1h
eWJlaW4odHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodmFsdWUgPT0gImluIikgcmV0dXJuIGNvbnQo
ZXhwcmVzc2lvbik7CisgICAgcmV0dXJuIGNvbnQobWF5YmVvcGVyYXRvciwgZm9yc3BlYzIpOwor
ICB9CisgIGZ1bmN0aW9uIGZvcnNwZWMyKHR5cGUsIHZhbHVlKSB7CisgICAgaWYgKHR5cGUgPT0g
IjsiKSByZXR1cm4gY29udChmb3JzcGVjMyk7CisgICAgaWYgKHZhbHVlID09ICJpbiIpIHJldHVy
biBjb250KGV4cHJlc3Npb24pOworICAgIHJldHVybiBjb250KGV4cHJlc3Npb24sIGV4cGVjdCgi
OyIpLCBmb3JzcGVjMyk7CisgIH0KKyAgZnVuY3Rpb24gZm9yc3BlYzModHlwZSkgeworICAgIGlm
ICh0eXBlICE9ICIpIikgY29udChleHByZXNzaW9uKTsKKyAgfQorICBmdW5jdGlvbiBmdW5jdGlv
bmRlZih0eXBlLCB2YWx1ZSkgeworICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIHtyZWdpc3Rl
cih2YWx1ZSk7IHJldHVybiBjb250KGZ1bmN0aW9uZGVmKTt9CisgICAgaWYgKHR5cGUgPT0gIigi
KSByZXR1cm4gY29udChwdXNobGV4KCIpIiksIHB1c2hjb250ZXh0LCBjb21tYXNlcChmdW5hcmcs
ICIpIiksIHBvcGxleCwgc3RhdGVtZW50LCBwb3Bjb250ZXh0KTsKKyAgfQorICBmdW5jdGlvbiBm
dW5hcmcodHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiKSB7cmVnaXN0
ZXIodmFsdWUpOyByZXR1cm4gY29udCgpO30KKyAgfQorCisgIC8vIEludGVyZmFjZQorCisgIHJl
dHVybiB7CisgICAgc3RhcnRTdGF0ZTogZnVuY3Rpb24oYmFzZWNvbHVtbikgeworICAgICAgcmV0
dXJuIHsKKyAgICAgICAgdG9rZW5pemU6IGpzVG9rZW5CYXNlLAorICAgICAgICByZUFsbG93ZWQ6
IHRydWUsCisgICAgICAgIGt3QWxsb3dlZDogdHJ1ZSwKKyAgICAgICAgY2M6IFtdLAorICAgICAg
ICBsZXhpY2FsOiBuZXcgSlNMZXhpY2FsKChiYXNlY29sdW1uIHx8IDApIC0gaW5kZW50VW5pdCwg
MCwgImJsb2NrIiwgZmFsc2UpLAorICAgICAgICBsb2NhbFZhcnM6IHBhcnNlckNvbmZpZy5sb2Nh
bFZhcnMsCisgICAgICAgIGNvbnRleHQ6IHBhcnNlckNvbmZpZy5sb2NhbFZhcnMgJiYge3ZhcnM6
IHBhcnNlckNvbmZpZy5sb2NhbFZhcnN9LAorICAgICAgICBpbmRlbnRlZDogMAorICAgICAgfTsK
KyAgICB9LAorCisgICAgdG9rZW46IGZ1bmN0aW9uKHN0cmVhbSwgc3RhdGUpIHsKKyAgICAgIGlm
IChzdHJlYW0uc29sKCkpIHsKKyAgICAgICAgaWYgKCFzdGF0ZS5sZXhpY2FsLmhhc093blByb3Bl
cnR5KCJhbGlnbiIpKQorICAgICAgICAgIHN0YXRlLmxleGljYWwuYWxpZ24gPSBmYWxzZTsKKyAg
ICAgICAgc3RhdGUuaW5kZW50ZWQgPSBzdHJlYW0uaW5kZW50YXRpb24oKTsKKyAgICAgIH0KKyAg
ICAgIGlmIChzdHJlYW0uZWF0U3BhY2UoKSkgcmV0dXJuIG51bGw7CisgICAgICB2YXIgc3R5bGUg
PSBzdGF0ZS50b2tlbml6ZShzdHJlYW0sIHN0YXRlKTsKKyAgICAgIGlmICh0eXBlID09ICJjb21t
ZW50IikgcmV0dXJuIHN0eWxlOworICAgICAgc3RhdGUucmVBbGxvd2VkID0gISEodHlwZSA9PSAi
b3BlcmF0b3IiIHx8IHR5cGUgPT0gImtleXdvcmQgYyIgfHwgdHlwZS5tYXRjaCgvXltcW3t9XCgs
OzpdJC8pKTsKKyAgICAgIHN0YXRlLmt3QWxsb3dlZCA9IHR5cGUgIT0gJy4nOworICAgICAgcmV0
dXJuIHBhcnNlSlMoc3RhdGUsIHN0eWxlLCB0eXBlLCBjb250ZW50LCBzdHJlYW0pOworICAgIH0s
CisKKyAgICBpbmRlbnQ6IGZ1bmN0aW9uKHN0YXRlLCB0ZXh0QWZ0ZXIpIHsKKyAgICAgIGlmIChz
dGF0ZS50b2tlbml6ZSAhPSBqc1Rva2VuQmFzZSkgcmV0dXJuIDA7CisgICAgICB2YXIgZmlyc3RD
aGFyID0gdGV4dEFmdGVyICYmIHRleHRBZnRlci5jaGFyQXQoMCksIGxleGljYWwgPSBzdGF0ZS5s
ZXhpY2FsOworICAgICAgaWYgKGxleGljYWwudHlwZSA9PSAic3RhdCIgJiYgZmlyc3RDaGFyID09
ICJ9IikgbGV4aWNhbCA9IGxleGljYWwucHJldjsKKyAgICAgIHZhciB0eXBlID0gbGV4aWNhbC50
eXBlLCBjbG9zaW5nID0gZmlyc3RDaGFyID09IHR5cGU7CisgICAgICBpZiAodHlwZSA9PSAidmFy
ZGVmIikgcmV0dXJuIGxleGljYWwuaW5kZW50ZWQgKyA0OworICAgICAgZWxzZSBpZiAodHlwZSA9
PSAiZm9ybSIgJiYgZmlyc3RDaGFyID09ICJ7IikgcmV0dXJuIGxleGljYWwuaW5kZW50ZWQ7Cisg
ICAgICBlbHNlIGlmICh0eXBlID09ICJzdGF0IiB8fCB0eXBlID09ICJmb3JtIikgcmV0dXJuIGxl
eGljYWwuaW5kZW50ZWQgKyBpbmRlbnRVbml0OworICAgICAgZWxzZSBpZiAobGV4aWNhbC5pbmZv
ID09ICJzd2l0Y2giICYmICFjbG9zaW5nKQorICAgICAgICByZXR1cm4gbGV4aWNhbC5pbmRlbnRl
ZCArICgvXig/OmNhc2V8ZGVmYXVsdClcYi8udGVzdCh0ZXh0QWZ0ZXIpID8gaW5kZW50VW5pdCA6
IDIgKiBpbmRlbnRVbml0KTsKKyAgICAgIGVsc2UgaWYgKGxleGljYWwuYWxpZ24pIHJldHVybiBs
ZXhpY2FsLmNvbHVtbiArIChjbG9zaW5nID8gMCA6IDEpOworICAgICAgZWxzZSByZXR1cm4gbGV4
aWNhbC5pbmRlbnRlZCArIChjbG9zaW5nID8gMCA6IGluZGVudFVuaXQpOworICAgIH0sCisKKyAg
ICBlbGVjdHJpY0NoYXJzOiAiOnt9IgorICB9OworfSk7CisKK0NvZGVNaXJyb3IuZGVmaW5lTUlN
RSgidGV4dC9qYXZhc2NyaXB0IiwgImphdmFzY3JpcHQiKTsKK0NvZGVNaXJyb3IuZGVmaW5lTUlN
RSgiYXBwbGljYXRpb24vanNvbiIsIHtuYW1lOiAiamF2YXNjcmlwdCIsIGpzb246IHRydWV9KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQveG1sLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC94bWwuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzBm
NDM1MWZhNTFjOWIxYTg2MDM2Y2JjNmY1YWMzOTVmZjE4NDcwZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQveG1sLmpzCkBAIC0wLDAgKzEsMzI2
IEBACitDb2RlTWlycm9yLmRlZmluZU1vZGUoInhtbCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2Vy
Q29uZmlnKSB7CisgIHZhciBpbmRlbnRVbml0ID0gY29uZmlnLmluZGVudFVuaXQ7CisgIHZhciBL
bHVkZ2VzID0gcGFyc2VyQ29uZmlnLmh0bWxNb2RlID8geworICAgIGF1dG9TZWxmQ2xvc2Vyczog
eydhcmVhJzogdHJ1ZSwgJ2Jhc2UnOiB0cnVlLCAnYnInOiB0cnVlLCAnY29sJzogdHJ1ZSwgJ2Nv
bW1hbmQnOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICdlbWJlZCc6IHRydWUsICdmcmFt
ZSc6IHRydWUsICdocic6IHRydWUsICdpbWcnOiB0cnVlLCAnaW5wdXQnOiB0cnVlLAorICAgICAg
ICAgICAgICAgICAgICAgICdrZXlnZW4nOiB0cnVlLCAnbGluayc6IHRydWUsICdtZXRhJzogdHJ1
ZSwgJ3BhcmFtJzogdHJ1ZSwgJ3NvdXJjZSc6IHRydWUsCisgICAgICAgICAgICAgICAgICAgICAg
J3RyYWNrJzogdHJ1ZSwgJ3dicic6IHRydWV9LAorICAgIGltcGxpY2l0bHlDbG9zZWQ6IHsnZGQn
OiB0cnVlLCAnbGknOiB0cnVlLCAnb3B0Z3JvdXAnOiB0cnVlLCAnb3B0aW9uJzogdHJ1ZSwgJ3An
OiB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAncnAnOiB0cnVlLCAncnQnOiB0cnVlLCAn
dGJvZHknOiB0cnVlLCAndGQnOiB0cnVlLCAndGZvb3QnOiB0cnVlLAorICAgICAgICAgICAgICAg
ICAgICAgICAndGgnOiB0cnVlLCAndHInOiB0cnVlfSwKKyAgICBjb250ZXh0R3JhYmJlcnM6IHsK
KyAgICAgICdkZCc6IHsnZGQnOiB0cnVlLCAnZHQnOiB0cnVlfSwKKyAgICAgICdkdCc6IHsnZGQn
OiB0cnVlLCAnZHQnOiB0cnVlfSwKKyAgICAgICdsaSc6IHsnbGknOiB0cnVlfSwKKyAgICAgICdv
cHRpb24nOiB7J29wdGlvbic6IHRydWUsICdvcHRncm91cCc6IHRydWV9LAorICAgICAgJ29wdGdy
b3VwJzogeydvcHRncm91cCc6IHRydWV9LAorICAgICAgJ3AnOiB7J2FkZHJlc3MnOiB0cnVlLCAn
YXJ0aWNsZSc6IHRydWUsICdhc2lkZSc6IHRydWUsICdibG9ja3F1b3RlJzogdHJ1ZSwgJ2Rpcic6
IHRydWUsCisgICAgICAgICAgICAnZGl2JzogdHJ1ZSwgJ2RsJzogdHJ1ZSwgJ2ZpZWxkc2V0Jzog
dHJ1ZSwgJ2Zvb3Rlcic6IHRydWUsICdmb3JtJzogdHJ1ZSwKKyAgICAgICAgICAgICdoMSc6IHRy
dWUsICdoMic6IHRydWUsICdoMyc6IHRydWUsICdoNCc6IHRydWUsICdoNSc6IHRydWUsICdoNic6
IHRydWUsCisgICAgICAgICAgICAnaGVhZGVyJzogdHJ1ZSwgJ2hncm91cCc6IHRydWUsICdocic6
IHRydWUsICdtZW51JzogdHJ1ZSwgJ25hdic6IHRydWUsICdvbCc6IHRydWUsCisgICAgICAgICAg
ICAncCc6IHRydWUsICdwcmUnOiB0cnVlLCAnc2VjdGlvbic6IHRydWUsICd0YWJsZSc6IHRydWUs
ICd1bCc6IHRydWV9LAorICAgICAgJ3JwJzogeydycCc6IHRydWUsICdydCc6IHRydWV9LAorICAg
ICAgJ3J0JzogeydycCc6IHRydWUsICdydCc6IHRydWV9LAorICAgICAgJ3Rib2R5Jzogeyd0Ym9k
eSc6IHRydWUsICd0Zm9vdCc6IHRydWV9LAorICAgICAgJ3RkJzogeyd0ZCc6IHRydWUsICd0aCc6
IHRydWV9LAorICAgICAgJ3Rmb290Jzogeyd0Ym9keSc6IHRydWV9LAorICAgICAgJ3RoJzogeyd0
ZCc6IHRydWUsICd0aCc6IHRydWV9LAorICAgICAgJ3RoZWFkJzogeyd0Ym9keSc6IHRydWUsICd0
Zm9vdCc6IHRydWV9LAorICAgICAgJ3RyJzogeyd0cic6IHRydWV9CisgICAgfSwKKyAgICBkb05v
dEluZGVudDogeyJwcmUiOiB0cnVlfSwKKyAgICBhbGxvd1VucXVvdGVkOiB0cnVlLAorICAgIGFs
bG93TWlzc2luZzogdHJ1ZQorICB9IDogeworICAgIGF1dG9TZWxmQ2xvc2Vyczoge30sCisgICAg
aW1wbGljaXRseUNsb3NlZDoge30sCisgICAgY29udGV4dEdyYWJiZXJzOiB7fSwKKyAgICBkb05v
dEluZGVudDoge30sCisgICAgYWxsb3dVbnF1b3RlZDogZmFsc2UsCisgICAgYWxsb3dNaXNzaW5n
OiBmYWxzZQorICB9OworICB2YXIgYWxpZ25DREFUQSA9IHBhcnNlckNvbmZpZy5hbGlnbkNEQVRB
OworCisgIC8vIFJldHVybiB2YXJpYWJsZXMgZm9yIHRva2VuaXplcnMKKyAgdmFyIHRhZ05hbWUs
IHR5cGU7CisKKyAgZnVuY3Rpb24gaW5UZXh0KHN0cmVhbSwgc3RhdGUpIHsKKyAgICBmdW5jdGlv
biBjaGFpbihwYXJzZXIpIHsKKyAgICAgIHN0YXRlLnRva2VuaXplID0gcGFyc2VyOworICAgICAg
cmV0dXJuIHBhcnNlcihzdHJlYW0sIHN0YXRlKTsKKyAgICB9CisKKyAgICB2YXIgY2ggPSBzdHJl
YW0ubmV4dCgpOworICAgIGlmIChjaCA9PSAiPCIpIHsKKyAgICAgIGlmIChzdHJlYW0uZWF0KCIh
IikpIHsKKyAgICAgICAgaWYgKHN0cmVhbS5lYXQoIlsiKSkgeworICAgICAgICAgIGlmIChzdHJl
YW0ubWF0Y2goIkNEQVRBWyIpKSByZXR1cm4gY2hhaW4oaW5CbG9jaygiYXRvbSIsICJdXT4iKSk7
CisgICAgICAgICAgZWxzZSByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlm
IChzdHJlYW0ubWF0Y2goIi0tIikpIHJldHVybiBjaGFpbihpbkJsb2NrKCJjb21tZW50IiwgIi0t
PiIpKTsKKyAgICAgICAgZWxzZSBpZiAoc3RyZWFtLm1hdGNoKCJET0NUWVBFIiwgdHJ1ZSwgdHJ1
ZSkpIHsKKyAgICAgICAgICBzdHJlYW0uZWF0V2hpbGUoL1tcd1wuX1wtXS8pOworICAgICAgICAg
IHJldHVybiBjaGFpbihkb2N0eXBlKDEpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHJldHVy
biBudWxsOworICAgICAgfQorICAgICAgZWxzZSBpZiAoc3RyZWFtLmVhdCgiPyIpKSB7CisgICAg
ICAgIHN0cmVhbS5lYXRXaGlsZSgvW1x3XC5fXC1dLyk7CisgICAgICAgIHN0YXRlLnRva2VuaXpl
ID0gaW5CbG9jaygibWV0YSIsICI/PiIpOworICAgICAgICByZXR1cm4gIm1ldGEiOworICAgICAg
fQorICAgICAgZWxzZSB7CisgICAgICAgIHR5cGUgPSBzdHJlYW0uZWF0KCIvIikgPyAiY2xvc2VU
YWciIDogIm9wZW5UYWciOworICAgICAgICBzdHJlYW0uZWF0U3BhY2UoKTsKKyAgICAgICAgdGFn
TmFtZSA9ICIiOworICAgICAgICB2YXIgYzsKKyAgICAgICAgd2hpbGUgKChjID0gc3RyZWFtLmVh
dCgvW15cc1x1MDBhMD08PlwiXCdcLz9dLykpKSB0YWdOYW1lICs9IGM7CisgICAgICAgIHN0YXRl
LnRva2VuaXplID0gaW5UYWc7CisgICAgICAgIHJldHVybiAidGFnIjsKKyAgICAgIH0KKyAgICB9
CisgICAgZWxzZSBpZiAoY2ggPT0gIiYiKSB7CisgICAgICB2YXIgb2s7CisgICAgICBpZiAoc3Ry
ZWFtLmVhdCgiIyIpKSB7CisgICAgICAgIGlmIChzdHJlYW0uZWF0KCJ4IikpIHsKKyAgICAgICAg
ICBvayA9IHN0cmVhbS5lYXRXaGlsZSgvW2EtZkEtRlxkXS8pICYmIHN0cmVhbS5lYXQoIjsiKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBvayA9IHN0cmVhbS5lYXRXaGlsZSgvW1xkXS8p
ICYmIHN0cmVhbS5lYXQoIjsiKTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAg
b2sgPSBzdHJlYW0uZWF0V2hpbGUoL1tcd1wuXC06XS8pICYmIHN0cmVhbS5lYXQoIjsiKTsKKyAg
ICAgIH0KKyAgICAgIHJldHVybiBvayA/ICJhdG9tIiA6ICJlcnJvciI7CisgICAgfQorICAgIGVs
c2UgeworICAgICAgc3RyZWFtLmVhdFdoaWxlKC9bXiY8XS8pOworICAgICAgcmV0dXJuIG51bGw7
CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24gaW5UYWcoc3RyZWFtLCBzdGF0ZSkgeworICAgIHZh
ciBjaCA9IHN0cmVhbS5uZXh0KCk7CisgICAgaWYgKGNoID09ICI+IiB8fCAoY2ggPT0gIi8iICYm
IHN0cmVhbS5lYXQoIj4iKSkpIHsKKyAgICAgIHN0YXRlLnRva2VuaXplID0gaW5UZXh0OworICAg
ICAgdHlwZSA9IGNoID09ICI+IiA/ICJlbmRUYWciIDogInNlbGZjbG9zZVRhZyI7CisgICAgICBy
ZXR1cm4gInRhZyI7CisgICAgfQorICAgIGVsc2UgaWYgKGNoID09ICI9IikgeworICAgICAgdHlw
ZSA9ICJlcXVhbHMiOworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIGVsc2UgaWYgKC9b
XCdcIl0vLnRlc3QoY2gpKSB7CisgICAgICBzdGF0ZS50b2tlbml6ZSA9IGluQXR0cmlidXRlKGNo
KTsKKyAgICAgIHJldHVybiBzdGF0ZS50b2tlbml6ZShzdHJlYW0sIHN0YXRlKTsKKyAgICB9Cisg
ICAgZWxzZSB7CisgICAgICBzdHJlYW0uZWF0V2hpbGUoL1teXHNcdTAwYTA9PD5cIlwnXC8/XS8p
OworICAgICAgcmV0dXJuICJ3b3JkIjsKKyAgICB9CisgIH0KKworICBmdW5jdGlvbiBpbkF0dHJp
YnV0ZShxdW90ZSkgeworICAgIHJldHVybiBmdW5jdGlvbihzdHJlYW0sIHN0YXRlKSB7CisgICAg
ICB3aGlsZSAoIXN0cmVhbS5lb2woKSkgeworICAgICAgICBpZiAoc3RyZWFtLm5leHQoKSA9PSBx
dW90ZSkgeworICAgICAgICAgIHN0YXRlLnRva2VuaXplID0gaW5UYWc7CisgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHJldHVybiAic3RyaW5nIjsKKyAgICB9Owor
ICB9CisKKyAgZnVuY3Rpb24gaW5CbG9jayhzdHlsZSwgdGVybWluYXRvcikgeworICAgIHJldHVy
biBmdW5jdGlvbihzdHJlYW0sIHN0YXRlKSB7CisgICAgICB3aGlsZSAoIXN0cmVhbS5lb2woKSkg
eworICAgICAgICBpZiAoc3RyZWFtLm1hdGNoKHRlcm1pbmF0b3IpKSB7CisgICAgICAgICAgc3Rh
dGUudG9rZW5pemUgPSBpblRleHQ7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgc3RyZWFtLm5leHQoKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBzdHlsZTsKKyAgICB9Owor
ICB9CisgIGZ1bmN0aW9uIGRvY3R5cGUoZGVwdGgpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24oc3Ry
ZWFtLCBzdGF0ZSkgeworICAgICAgdmFyIGNoOworICAgICAgd2hpbGUgKChjaCA9IHN0cmVhbS5u
ZXh0KCkpICE9IG51bGwpIHsKKyAgICAgICAgaWYgKGNoID09ICI8IikgeworICAgICAgICAgIHN0
YXRlLnRva2VuaXplID0gZG9jdHlwZShkZXB0aCArIDEpOworICAgICAgICAgIHJldHVybiBzdGF0
ZS50b2tlbml6ZShzdHJlYW0sIHN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjaCA9PSAiPiIp
IHsKKyAgICAgICAgICBpZiAoZGVwdGggPT0gMSkgeworICAgICAgICAgICAgc3RhdGUudG9rZW5p
emUgPSBpblRleHQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgc3RhdGUudG9rZW5pemUgPSBkb2N0eXBlKGRlcHRoIC0gMSk7CisgICAgICAgICAg
ICByZXR1cm4gc3RhdGUudG9rZW5pemUoc3RyZWFtLCBzdGF0ZSk7CisgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICB9CisgICAgICByZXR1cm4gIm1ldGEiOworICAgIH07CisgIH0KKworICB2
YXIgY3VyU3RhdGUsIHNldFN0eWxlOworICBmdW5jdGlvbiBwYXNzKCkgeworICAgIGZvciAodmFy
IGkgPSBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGN1clN0YXRlLmNjLnB1c2go
YXJndW1lbnRzW2ldKTsKKyAgfQorICBmdW5jdGlvbiBjb250KCkgeworICAgIHBhc3MuYXBwbHko
bnVsbCwgYXJndW1lbnRzKTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIGZ1bmN0aW9uIHB1
c2hDb250ZXh0KHRhZ05hbWUsIHN0YXJ0T2ZMaW5lKSB7CisgICAgdmFyIG5vSW5kZW50ID0gS2x1
ZGdlcy5kb05vdEluZGVudC5oYXNPd25Qcm9wZXJ0eSh0YWdOYW1lKSB8fCAoY3VyU3RhdGUuY29u
dGV4dCAmJiBjdXJTdGF0ZS5jb250ZXh0Lm5vSW5kZW50KTsKKyAgICBjdXJTdGF0ZS5jb250ZXh0
ID0geworICAgICAgcHJldjogY3VyU3RhdGUuY29udGV4dCwKKyAgICAgIHRhZ05hbWU6IHRhZ05h
bWUsCisgICAgICBpbmRlbnQ6IGN1clN0YXRlLmluZGVudGVkLAorICAgICAgc3RhcnRPZkxpbmU6
IHN0YXJ0T2ZMaW5lLAorICAgICAgbm9JbmRlbnQ6IG5vSW5kZW50CisgICAgfTsKKyAgfQorICBm
dW5jdGlvbiBwb3BDb250ZXh0KCkgeworICAgIGlmIChjdXJTdGF0ZS5jb250ZXh0KSBjdXJTdGF0
ZS5jb250ZXh0ID0gY3VyU3RhdGUuY29udGV4dC5wcmV2OworICB9CisKKyAgZnVuY3Rpb24gZWxl
bWVudCh0eXBlKSB7CisgICAgaWYgKHR5cGUgPT0gIm9wZW5UYWciKSB7CisgICAgICBjdXJTdGF0
ZS50YWdOYW1lID0gdGFnTmFtZTsKKyAgICAgIHJldHVybiBjb250KGF0dHJpYnV0ZXMsIGVuZHRh
ZyhjdXJTdGF0ZS5zdGFydE9mTGluZSkpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAiY2xvc2VU
YWciKSB7CisgICAgICB2YXIgZXJyID0gZmFsc2U7CisgICAgICBpZiAoY3VyU3RhdGUuY29udGV4
dCkgeworICAgICAgICBpZiAoY3VyU3RhdGUuY29udGV4dC50YWdOYW1lICE9IHRhZ05hbWUpIHsK
KyAgICAgICAgICBpZiAoS2x1ZGdlcy5pbXBsaWNpdGx5Q2xvc2VkLmhhc093blByb3BlcnR5KGN1
clN0YXRlLmNvbnRleHQudGFnTmFtZS50b0xvd2VyQ2FzZSgpKSkgeworICAgICAgICAgICAgcG9w
Q29udGV4dCgpOworICAgICAgICAgIH0KKyAgICAgICAgICBlcnIgPSAhY3VyU3RhdGUuY29udGV4
dCB8fCBjdXJTdGF0ZS5jb250ZXh0LnRhZ05hbWUgIT0gdGFnTmFtZTsKKyAgICAgICAgfQorICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgZXJyID0gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIGlmIChlcnIp
IHNldFN0eWxlID0gImVycm9yIjsKKyAgICAgIHJldHVybiBjb250KGVuZGNsb3NldGFnKGVycikp
OworICAgIH0KKyAgICByZXR1cm4gY29udCgpOworICB9CisgIGZ1bmN0aW9uIGVuZHRhZyhzdGFy
dE9mTGluZSkgeworICAgIHJldHVybiBmdW5jdGlvbih0eXBlKSB7CisgICAgICBpZiAodHlwZSA9
PSAic2VsZmNsb3NlVGFnIiB8fAorICAgICAgICAgICh0eXBlID09ICJlbmRUYWciICYmIEtsdWRn
ZXMuYXV0b1NlbGZDbG9zZXJzLmhhc093blByb3BlcnR5KGN1clN0YXRlLnRhZ05hbWUudG9Mb3dl
ckNhc2UoKSkpKSB7CisgICAgICAgIG1heWJlUG9wQ29udGV4dChjdXJTdGF0ZS50YWdOYW1lLnRv
TG93ZXJDYXNlKCkpOworICAgICAgICByZXR1cm4gY29udCgpOworICAgICAgfQorICAgICAgaWYg
KHR5cGUgPT0gImVuZFRhZyIpIHsKKyAgICAgICAgbWF5YmVQb3BDb250ZXh0KGN1clN0YXRlLnRh
Z05hbWUudG9Mb3dlckNhc2UoKSk7CisgICAgICAgIHB1c2hDb250ZXh0KGN1clN0YXRlLnRhZ05h
bWUsIHN0YXJ0T2ZMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnQoKTsKKyAgICAgIH0KKyAgICAg
IHJldHVybiBjb250KCk7CisgICAgfTsKKyAgfQorICBmdW5jdGlvbiBlbmRjbG9zZXRhZyhlcnIp
IHsKKyAgICByZXR1cm4gZnVuY3Rpb24odHlwZSkgeworICAgICAgaWYgKGVycikgc2V0U3R5bGUg
PSAiZXJyb3IiOworICAgICAgaWYgKHR5cGUgPT0gImVuZFRhZyIpIHsgcG9wQ29udGV4dCgpOyBy
ZXR1cm4gY29udCgpOyB9CisgICAgICBzZXRTdHlsZSA9ICJlcnJvciI7CisgICAgICByZXR1cm4g
Y29udChhcmd1bWVudHMuY2FsbGVlKTsKKyAgICB9OworICB9CisgIGZ1bmN0aW9uIG1heWJlUG9w
Q29udGV4dChuZXh0VGFnTmFtZSkgeworICAgIHZhciBwYXJlbnRUYWdOYW1lOworICAgIHdoaWxl
ICh0cnVlKSB7CisgICAgICBpZiAoIWN1clN0YXRlLmNvbnRleHQpIHsKKyAgICAgICAgcmV0dXJu
OworICAgICAgfQorICAgICAgcGFyZW50VGFnTmFtZSA9IGN1clN0YXRlLmNvbnRleHQudGFnTmFt
ZS50b0xvd2VyQ2FzZSgpOworICAgICAgaWYgKCFLbHVkZ2VzLmNvbnRleHRHcmFiYmVycy5oYXNP
d25Qcm9wZXJ0eShwYXJlbnRUYWdOYW1lKSB8fAorICAgICAgICAgICFLbHVkZ2VzLmNvbnRleHRH
cmFiYmVyc1twYXJlbnRUYWdOYW1lXS5oYXNPd25Qcm9wZXJ0eShuZXh0VGFnTmFtZSkpIHsKKyAg
ICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgcG9wQ29udGV4dCgpOworICAgIH0KKyAgfQor
CisgIGZ1bmN0aW9uIGF0dHJpYnV0ZXModHlwZSkgeworICAgIGlmICh0eXBlID09ICJ3b3JkIikg
e3NldFN0eWxlID0gImF0dHJpYnV0ZSI7IHJldHVybiBjb250KGF0dHJpYnV0ZSwgYXR0cmlidXRl
cyk7fQorICAgIGlmICh0eXBlID09ICJlbmRUYWciIHx8IHR5cGUgPT0gInNlbGZjbG9zZVRhZyIp
IHJldHVybiBwYXNzKCk7CisgICAgc2V0U3R5bGUgPSAiZXJyb3IiOworICAgIHJldHVybiBjb250
KGF0dHJpYnV0ZXMpOworICB9CisgIGZ1bmN0aW9uIGF0dHJpYnV0ZSh0eXBlKSB7CisgICAgaWYg
KHR5cGUgPT0gImVxdWFscyIpIHJldHVybiBjb250KGF0dHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAg
ICBpZiAoIUtsdWRnZXMuYWxsb3dNaXNzaW5nKSBzZXRTdHlsZSA9ICJlcnJvciI7CisgICAgcmV0
dXJuICh0eXBlID09ICJlbmRUYWciIHx8IHR5cGUgPT0gInNlbGZjbG9zZVRhZyIpID8gcGFzcygp
IDogY29udCgpOworICB9CisgIGZ1bmN0aW9uIGF0dHZhbHVlKHR5cGUpIHsKKyAgICBpZiAodHlw
ZSA9PSAic3RyaW5nIikgcmV0dXJuIGNvbnQoYXR0dmFsdWVtYXliZSk7CisgICAgaWYgKHR5cGUg
PT0gIndvcmQiICYmIEtsdWRnZXMuYWxsb3dVbnF1b3RlZCkge3NldFN0eWxlID0gInN0cmluZyI7
IHJldHVybiBjb250KCk7fQorICAgIHNldFN0eWxlID0gImVycm9yIjsKKyAgICByZXR1cm4gKHR5
cGUgPT0gImVuZFRhZyIgfHwgdHlwZSA9PSAic2VsZkNsb3NlVGFnIikgPyBwYXNzKCkgOiBjb250
KCk7CisgIH0KKyAgZnVuY3Rpb24gYXR0dmFsdWVtYXliZSh0eXBlKSB7CisgICAgaWYgKHR5cGUg
PT0gInN0cmluZyIpIHJldHVybiBjb250KGF0dHZhbHVlbWF5YmUpOworICAgIGVsc2UgcmV0dXJu
IHBhc3MoKTsKKyAgfQorCisgIHJldHVybiB7CisgICAgc3RhcnRTdGF0ZTogZnVuY3Rpb24oKSB7
CisgICAgICByZXR1cm4ge3Rva2VuaXplOiBpblRleHQsIGNjOiBbXSwgaW5kZW50ZWQ6IDAsIHN0
YXJ0T2ZMaW5lOiB0cnVlLCB0YWdOYW1lOiBudWxsLCBjb250ZXh0OiBudWxsfTsKKyAgICB9LAor
CisgICAgdG9rZW46IGZ1bmN0aW9uKHN0cmVhbSwgc3RhdGUpIHsKKyAgICAgIGlmIChzdHJlYW0u
c29sKCkpIHsKKyAgICAgICAgc3RhdGUuc3RhcnRPZkxpbmUgPSB0cnVlOworICAgICAgICBzdGF0
ZS5pbmRlbnRlZCA9IHN0cmVhbS5pbmRlbnRhdGlvbigpOworICAgICAgfQorICAgICAgaWYgKHN0
cmVhbS5lYXRTcGFjZSgpKSByZXR1cm4gbnVsbDsKKworICAgICAgc2V0U3R5bGUgPSB0eXBlID0g
dGFnTmFtZSA9IG51bGw7CisgICAgICB2YXIgc3R5bGUgPSBzdGF0ZS50b2tlbml6ZShzdHJlYW0s
IHN0YXRlKTsKKyAgICAgIHN0YXRlLnR5cGUgPSB0eXBlOworICAgICAgaWYgKChzdHlsZSB8fCB0
eXBlKSAmJiBzdHlsZSAhPSAiY29tbWVudCIpIHsKKyAgICAgICAgY3VyU3RhdGUgPSBzdGF0ZTsK
KyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICB2YXIgY29tYiA9IHN0YXRlLmNjLnBv
cCgpIHx8IGVsZW1lbnQ7CisgICAgICAgICAgaWYgKGNvbWIodHlwZSB8fCBzdHlsZSkpIGJyZWFr
OworICAgICAgICB9CisgICAgICB9CisgICAgICBzdGF0ZS5zdGFydE9mTGluZSA9IGZhbHNlOwor
ICAgICAgcmV0dXJuIHNldFN0eWxlIHx8IHN0eWxlOworICAgIH0sCisKKyAgICBpbmRlbnQ6IGZ1
bmN0aW9uKHN0YXRlLCB0ZXh0QWZ0ZXIsIGZ1bGxMaW5lKSB7CisgICAgICB2YXIgY29udGV4dCA9
IHN0YXRlLmNvbnRleHQ7CisgICAgICBpZiAoKHN0YXRlLnRva2VuaXplICE9IGluVGFnICYmIHN0
YXRlLnRva2VuaXplICE9IGluVGV4dCkgfHwKKyAgICAgICAgICBjb250ZXh0ICYmIGNvbnRleHQu
bm9JbmRlbnQpCisgICAgICAgIHJldHVybiBmdWxsTGluZSA/IGZ1bGxMaW5lLm1hdGNoKC9eKFxz
KikvKVswXS5sZW5ndGggOiAwOworICAgICAgaWYgKGFsaWduQ0RBVEEgJiYgLzwhXFtDREFUQVxb
Ly50ZXN0KHRleHRBZnRlcikpIHJldHVybiAwOworICAgICAgaWYgKGNvbnRleHQgJiYgL148XC8v
LnRlc3QodGV4dEFmdGVyKSkKKyAgICAgICAgY29udGV4dCA9IGNvbnRleHQucHJldjsKKyAgICAg
IHdoaWxlIChjb250ZXh0ICYmICFjb250ZXh0LnN0YXJ0T2ZMaW5lKQorICAgICAgICBjb250ZXh0
ID0gY29udGV4dC5wcmV2OworICAgICAgaWYgKGNvbnRleHQpIHJldHVybiBjb250ZXh0LmluZGVu
dCArIGluZGVudFVuaXQ7CisgICAgICBlbHNlIHJldHVybiAwOworICAgIH0sCisKKyAgICBjb21w
YXJlU3RhdGVzOiBmdW5jdGlvbihhLCBiKSB7CisgICAgICBpZiAoYS5pbmRlbnRlZCAhPSBiLmlu
ZGVudGVkIHx8IGEudG9rZW5pemUgIT0gYi50b2tlbml6ZSkgcmV0dXJuIGZhbHNlOworICAgICAg
Zm9yICh2YXIgY2EgPSBhLmNvbnRleHQsIGNiID0gYi5jb250ZXh0OyA7IGNhID0gY2EucHJldiwg
Y2IgPSBjYi5wcmV2KSB7CisgICAgICAgIGlmICghY2EgfHwgIWNiKSByZXR1cm4gY2EgPT0gY2I7
CisgICAgICAgIGlmIChjYS50YWdOYW1lICE9IGNiLnRhZ05hbWUgfHwgY2EuaW5kZW50ICE9IGNi
LmluZGVudCkgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgIH0sCisKKyAgICBlbGVjdHJpY0No
YXJzOiAiLyIKKyAgfTsKK30pOworCitDb2RlTWlycm9yLmRlZmluZU1JTUUoInRleHQveG1sIiwg
InhtbCIpOworQ29kZU1pcnJvci5kZWZpbmVNSU1FKCJhcHBsaWNhdGlvbi94bWwiLCAieG1sIik7
CitpZiAoIUNvZGVNaXJyb3IubWltZU1vZGVzLmhhc093blByb3BlcnR5KCJ0ZXh0L2h0bWwiKSkK
KyAgQ29kZU1pcnJvci5kZWZpbmVNSU1FKCJ0ZXh0L2h0bWwiLCB7bmFtZTogInhtbCIsIGh0bWxN
b2RlOiB0cnVlfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157394</attachid>
            <date>2012-08-08 23:08:29 -0700</date>
            <delta_ts>2012-08-09 00:40:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92769-20120808230802.patch</filename>
            <type>text/plain</type>
            <size>205895</size>
            <attacher name="Jan Keromnes">janx</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MDg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWU5ZjIyMDY0YzAxYjZj
YWFkNzgwOTNkYWNiNjc3YjMzZmEzMjUzNS4uNTc0Njc2NWU5NjFiNTUyZjkyY2RjMmJhYTc5MzBl
ODdhOWY5MDAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NCBAQAorMjAxMi0wOC0wOCAgSmFu
IEtlcm9tbmVzICA8amFueEBsaW51eC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVw
bGFjZSB0aGUgV2ViIEluc3BlY3RvciBlZGl0b3Igd2l0aCBDb2RlTWlycm9yCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mjc2OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludGVncmF0aW5nIENvZGVNaXJy
b3IgYXMgYSBkZXZ0b29scyBleHBlcmltZW50LiBDdXJyZW50bHkgc3VwcG9ydGluZworICAgICAg
ICBiYXNpYyBlZGl0aW5nLCBzZWFyY2gvcmVwbGFjaW5nLCBhbmQgc2F2aW5nLiBNaXNzaW5nIHBy
b3BlciBicmVha3BvaW50cworICAgICAgICB3aXJpbmcsIGRlYnVnZ2luZywgbWVzc2FnZSBidWJi
bGVzLCBwb3BvdmVycyBhbmQgY29udGV4dCBtZW51cy4gV0lQLgorCisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAg
ICAqIGluc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NvZGVNaXJyb3JUZXh0RWRpdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci50aGlzLl9jb2RlTWlycm9yLkNvZGVNaXJyb3Ip
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuc2V0IG1pbWVUeXBl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUu
c2V0UmVhZE9ubHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9y
LnByb3RvdHlwZS5yZWFkT25seSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRl
eHRFZGl0b3IucHJvdG90eXBlLmRlZmF1bHRGb2N1c2VkRWxlbWVudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLmZvY3VzKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUucmV2ZWFsTGluZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLmFk
ZERlY29yYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9y
LnByb3RvdHlwZS5yZW1vdmVEZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2Rl
TWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUubWFya0FuZFJldmVhbFJhbmdlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuaGlnaGxpZ2h0TGlu
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBl
LmNsZWFyTGluZUhpZ2hsaWdodCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRl
eHRFZGl0b3IucHJvdG90eXBlLmZyZWVDYWNoZWRFbGVtZW50cyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLmVsZW1lbnRzVG9SZXN0b3JlU2Ny
b2xsUG9zaXRpb25zRm9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVk
aXRvci5wcm90b3R5cGUuaW5oZXJpdFNjcm9sbFBvc2l0aW9ucyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLmJlZ2luVXBkYXRlcyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLmVuZFVwZGF0
ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlw
ZS5vblJlc2l6ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3Iu
cHJvdG90eXBlLmVkaXRSYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRl
eHRFZGl0b3IucHJvdG90eXBlLl9vbkNoYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29k
ZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLl9jb21taXRFZGl0aW5nKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuc2Nyb2xsVG9MaW5lKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuc2Vs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90
b3R5cGUubGFzdFNlbGVjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRl
eHRFZGl0b3IucHJvdG90eXBlLnNldFNlbGVjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLnNldFRleHQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZS50ZXh0KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUucmFuZ2UpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZS5saW5lKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuZ2V0IGxp
bmVzQ291bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnBy
b3RvdHlwZS5zZXRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JU
ZXh0RWRpdG9yLnByb3RvdHlwZS5nZXRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZS53YXNTaG93bik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLndp
bGxIaWRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90
b3R5cGUuX3RleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4
dEVkaXRvci5wcm90b3R5cGUuX3RvUG9zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWly
cm9yVGV4dEVkaXRvci5wcm90b3R5cGUuX3RvUmFuZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvU2V0dGluZ3MuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXhwZXJpbWVudHNT
ZXR0aW5ncyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZSk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvY21k
ZXZ0b29scy5jc3M6IEFkZGVkLgorICAgICAgICAoLkNvZGVNaXJyb3Itc2Nyb2xsKToKKyAgICAg
ICAgKC5Db2RlTWlycm9yKToKKyAgICAgICAgKC5jbS1zLXdlYi1pbnNwZWN0b3ItanMgc3Bhbi5j
bS1rZXl3b3JkKToKKyAgICAgICAgKC5jbS1zLXdlYi1pbnNwZWN0b3ItanMgc3Bhbi5jbS1udW1i
ZXIpOgorICAgICAgICAoLmNtLXMtd2ViLWluc3BlY3Rvci1qcyBzcGFuLmNtLWNvbW1lbnQpOgor
ICAgICAgICAoLmNtLXMtd2ViLWluc3BlY3Rvci1qcyBzcGFuLmNtLXN0cmluZyk6CisgICAgICAg
ICguY20tcy13ZWItaW5zcGVjdG9yLWpzIHNwYW4uY20tc3RyaW5nLTIpOgorICAgICAgICAoLmNt
LXMtd2ViLWluc3BlY3Rvci1jc3Mgc3Bhbi5jbS1rZXl3b3JkKToKKyAgICAgICAgKC5jbS1zLXdl
Yi1pbnNwZWN0b3ItY3NzIHNwYW4uY20tbnVtYmVyKToKKyAgICAgICAgKC5jbS1zLXdlYi1pbnNw
ZWN0b3ItY3NzIHNwYW4uY20tY29tbWVudCk6CisgICAgICAgICguY20tcy13ZWItaW5zcGVjdG9y
LWNzcyBzcGFuLmNtLXN0cmluZyk6CisgICAgICAgICguY20tcy13ZWItaW5zcGVjdG9yLWNzcyBz
cGFuLmNtLXN0cmluZy0yKToKKyAgICAgICAgKC5jbS1zLXdlYi1pbnNwZWN0b3ItY3NzIHNwYW4u
Y20tbGluayk6CisgICAgICAgICguY20tcy13ZWItaW5zcGVjdG9yLWNzcyBzcGFuLmNtLXZhcmlh
YmxlKToKKyAgICAgICAgKC5jbS1zLXdlYi1pbnNwZWN0b3ItaHRtbCBzcGFuLmNtLW1ldGEpOgor
ICAgICAgICAoLmNtLXMtd2ViLWluc3BlY3Rvci1odG1sIHNwYW4uY20tY29tbWVudCk6CisgICAg
ICAgICguY20tcy13ZWItaW5zcGVjdG9yLWh0bWwgc3Bhbi5jbS1zdHJpbmcpOgorICAgICAgICAo
LmNtLXMtd2ViLWluc3BlY3Rvci1odG1sIHNwYW4uY20tdGFnKToKKyAgICAgICAgKC5jbS1zLXdl
Yi1pbnNwZWN0b3ItaHRtbCBzcGFuLmNtLWF0dHJpYnV0ZSk6CisgICAgICAgICguY20tcy13ZWIt
aW5zcGVjdG9yLWh0bWwgc3Bhbi5jbS1saW5rKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL2NvZGVtaXJyb3IuY3NzOiBBZGRlZC4KKyAgICAgICAgKC5Db2RlTWlycm9yKToKKyAgICAg
ICAgKC5Db2RlTWlycm9yLXNjcm9sbCk6CisgICAgICAgICguQ29kZU1pcnJvci1zY3JvbGxiYXIp
OgorICAgICAgICAoLkNvZGVNaXJyb3Itc2Nyb2xsYmFyLWlubmVyKToKKyAgICAgICAgKC5Db2Rl
TWlycm9yLXNjcm9sbGJhci5jbS1zYi1vdmVybGFwKToKKyAgICAgICAgKC5Db2RlTWlycm9yLXNj
cm9sbGJhci5jbS1zYi1ub25vdmVybGFwKToKKyAgICAgICAgKC5Db2RlTWlycm9yLXNjcm9sbGJh
ci5jbS1zYi1pZTcpOgorICAgICAgICAoLkNvZGVNaXJyb3ItZ3V0dGVyKToKKyAgICAgICAgKC5D
b2RlTWlycm9yLWd1dHRlci10ZXh0KToKKyAgICAgICAgKC5Db2RlTWlycm9yLWxpbmVzKToKKyAg
ICAgICAgKC5Db2RlTWlycm9yIHByZSk6CisgICAgICAgICguQ29kZU1pcnJvci13cmFwIHByZSk6
CisgICAgICAgICguQ29kZU1pcnJvci13cmFwIC5Db2RlTWlycm9yLXNjcm9sbCk6CisgICAgICAg
ICguQ29kZU1pcnJvciB0ZXh0YXJlYSk6CisgICAgICAgICguQ29kZU1pcnJvciBwcmUuQ29kZU1p
cnJvci1jdXJzb3IpOgorICAgICAgICAoLmNtLWtleW1hcC1mYXQtY3Vyc29yIHByZS5Db2RlTWly
cm9yLWN1cnNvcik6CisgICAgICAgICguY20ta2V5bWFwLWZhdC1jdXJzb3IgcHJlLkNvZGVNaXJy
b3ItY3Vyc29yOm5vdCgjbm9uc2Vuc2VfaWQpKToKKyAgICAgICAgKC5Db2RlTWlycm9yIHByZS5D
b2RlTWlycm9yLWN1cnNvci5Db2RlTWlycm9yLW92ZXJ3cml0ZSk6CisgICAgICAgICguQ29kZU1p
cnJvci1mb2N1c2VkIHByZS5Db2RlTWlycm9yLWN1cnNvcik6CisgICAgICAgIChkaXYuQ29kZU1p
cnJvci1zZWxlY3RlZCk6CisgICAgICAgICguQ29kZU1pcnJvci1mb2N1c2VkIGRpdi5Db2RlTWly
cm9yLXNlbGVjdGVkKToKKyAgICAgICAgKC5Db2RlTWlycm9yLXNlYXJjaGluZyk6CisgICAgICAg
ICguY20tcy1kZWZhdWx0IHNwYW4uY20ta2V5d29yZCk6CisgICAgICAgICguY20tcy1kZWZhdWx0
IHNwYW4uY20tYXRvbSk6CisgICAgICAgICguY20tcy1kZWZhdWx0IHNwYW4uY20tbnVtYmVyKToK
KyAgICAgICAgKC5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1kZWYpOgorICAgICAgICAoLmNtLXMtZGVm
YXVsdCBzcGFuLmNtLXZhcmlhYmxlKToKKyAgICAgICAgKC5jbS1zLWRlZmF1bHQgc3Bhbi5jbS12
YXJpYWJsZS0yKToKKyAgICAgICAgKC5jbS1zLWRlZmF1bHQgc3Bhbi5jbS12YXJpYWJsZS0zKToK
KyAgICAgICAgKC5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1wcm9wZXJ0eSk6CisgICAgICAgICguY20t
cy1kZWZhdWx0IHNwYW4uY20tb3BlcmF0b3IpOgorICAgICAgICAoLmNtLXMtZGVmYXVsdCBzcGFu
LmNtLWNvbW1lbnQpOgorICAgICAgICAoLmNtLXMtZGVmYXVsdCBzcGFuLmNtLXN0cmluZyk6Cisg
ICAgICAgICguY20tcy1kZWZhdWx0IHNwYW4uY20tc3RyaW5nLTIpOgorICAgICAgICAoLmNtLXMt
ZGVmYXVsdCBzcGFuLmNtLW1ldGEpOgorICAgICAgICAoLmNtLXMtZGVmYXVsdCBzcGFuLmNtLWVy
cm9yKToKKyAgICAgICAgKC5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1xdWFsaWZpZXIpOgorICAgICAg
ICAoLmNtLXMtZGVmYXVsdCBzcGFuLmNtLWJ1aWx0aW4pOgorICAgICAgICAoLmNtLXMtZGVmYXVs
dCBzcGFuLmNtLWJyYWNrZXQpOgorICAgICAgICAoLmNtLXMtZGVmYXVsdCBzcGFuLmNtLXRhZyk6
CisgICAgICAgICguY20tcy1kZWZhdWx0IHNwYW4uY20tYXR0cmlidXRlKToKKyAgICAgICAgKC5j
bS1zLWRlZmF1bHQgc3Bhbi5jbS1oZWFkZXIpOgorICAgICAgICAoLmNtLXMtZGVmYXVsdCBzcGFu
LmNtLXF1b3RlKToKKyAgICAgICAgKC5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1ocik6CisgICAgICAg
ICguY20tcy1kZWZhdWx0IHNwYW4uY20tbGluayk6CisgICAgICAgIChzcGFuLmNtLWhlYWRlciwg
c3Bhbi5jbS1zdHJvbmcpOgorICAgICAgICAoc3Bhbi5jbS1lbSk6CisgICAgICAgIChzcGFuLmNt
LWVtc3Ryb25nKToKKyAgICAgICAgKHNwYW4uY20tbGluayk6CisgICAgICAgIChzcGFuLmNtLWlu
dmFsaWRjaGFyKToKKyAgICAgICAgKGRpdi5Db2RlTWlycm9yIHNwYW4uQ29kZU1pcnJvci1tYXRj
aGluZ2JyYWNrZXQpOgorICAgICAgICAoZGl2LkNvZGVNaXJyb3Igc3Bhbi5Db2RlTWlycm9yLW5v
bm1hdGNoaW5nYnJhY2tldCk6CisgICAgICAgIChAbWVkaWEgcHJpbnQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvY29kZW1pcnJvci5qczogQWRkZWQuCisgICAgICAgIChDb2RlTWly
cm9yLik6CisgICAgICAgIChDb2RlTWlycm9yKToKKyAgICAgICAgKC4pOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvY3NzLmpzOiBBZGRlZC4KKyAgICAgICAgKENvZGVNaXJyb3IuZGVm
aW5lTW9kZSk6CisgICAgICAgIChDb2RlTWlycm9yLmRlZmluZU1vZGUuKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL2h0bWxtaXhlZC5qczogQWRkZWQuCisgICAgICAgIChDb2RlTWly
cm9yLmRlZmluZU1vZGUpOgorICAgICAgICAoQ29kZU1pcnJvci5kZWZpbmVNb2RlLik6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL2phdmFzY3JpcHQuanM6IEFkZGVkLgorICAgICAgICAoQ29kZU1pcnJv
ci5kZWZpbmVNb2RlLik6CisgICAgICAgIChDb2RlTWlycm9yLmRlZmluZU1vZGUpOgorICAgICAg
ICAobWF5YmVvcGVyYXRvcik6CisgICAgICAgIChtYXliZWxhYmVsKToKKyAgICAgICAgKHByb3Bl
cnR5KToKKyAgICAgICAgKG9ianByb3ApOgorICAgICAgICAoY29tbWFzZXAucHJvY2VlZCk6Cisg
ICAgICAgIChjb21tYXNlcC5yZXR1cm4uY29tbWFTZXBhcmF0ZWQpOgorICAgICAgICAoY29tbWFz
ZXApOgorICAgICAgICAoYmxvY2spOgorICAgICAgICAodmFyZGVmMSk6CisgICAgICAgICh2YXJk
ZWYyKToKKyAgICAgICAgKGZvcnNwZWMxKToKKyAgICAgICAgKGZvcm1heWJlaW4pOgorICAgICAg
ICAoZm9yc3BlYzIpOgorICAgICAgICAoZm9yc3BlYzMpOgorICAgICAgICAoZnVuY3Rpb25kZWYp
OgorICAgICAgICAoZnVuYXJnKToKKyAgICAgICAgKHJldHVybi5zdGFydFN0YXRlKToKKyAgICAg
ICAgKHJldHVybi50b2tlbik6CisgICAgICAgIChyZXR1cm4pOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQveG1sLmpzOiBBZGRlZC4KKyAgICAgICAgKENvZGVNaXJyb3IuZGVmaW5lTW9k
ZS4pOgorICAgICAgICAoQ29kZU1pcnJvci5kZWZpbmVNb2RlKToKKwogMjAxMi0wOC0wNyAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
T25seSB1c2UgcHVibGljIFBsYXRmb3JtIEFQSSBpbiBOb25Db21wb3NpdGVkQ29udGVudEhvc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCBhNjJiYThiNjVhYTdiNjU3ZGY5MDcyZDY3YjYwOWNjMWQ0ZGUw
NWIwLi40ODViN2Q4ZGUzOWRiN2U0MTk0YTEwNDgzYmQxYzcyN2I0ZWIwODQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC02MjUzLDYgKzYyNTMsMTIgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJhclBhbmUuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanMnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ2hlY2tib3guanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9u
dC1lbmQvQ29kZU1pcnJvclRleHRFZGl0b3IuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvY29kZW1pcnJvci5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9jc3MuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvamF2YXNjcmlwdC5q
cycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC94bWwuanMnLAorICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvaHRtbG1peGVkLmpzJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL0NvbG9yLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9Db25zb2xlTWVzc2FnZS5qcycsCkBAIC02NDQxLDYgKzY0NDcsOCBAQAogICAgICAg
ICBdLAogICAgICAgICAnd2ViaW5zcGVjdG9yX3N0YW5kYWxvbmVfY3NzX2ZpbGVzJzogWwogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvYXVkaXRzUGFuZWwuY3NzJywKKyAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL2NvZGVtaXJyb3IuY3NzJywKKyAgICAgICAgICAgICdp
bnNwZWN0b3IvZnJvbnQtZW5kL2NtZGV2dG9vbHMuY3NzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL2RhdGFHcmlkLmNzcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9lbGVtZW50c1BhbmVsLmNzcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9maWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cuY3NzJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNmRlNDg5OWE4ZWNlYzlmZTc4MWMxMTc4
OTIxZWFhNGM0MDE5NTVkZC4uYzdkZDAxMDkzYjU3M2RiZjIwYjA3ZDE2Mzk0M2UyYTU5MzU2MTMx
MiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAg
LTc1NDE4LDYgKzc1NDE4LDIyIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXENvZGVNaXJyb3JUZXh0RWRp
dG9yLmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxjb2RlbWlycm9yLmpzIgorCQkJCQk+CisJCQkJPC9G
aWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVu
ZFxjb2RlbWlycm9yLmNzcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcY21kZXZ0b29scy5jc3MiCisJCQkJ
CT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0
b3JcZnJvbnQtZW5kXENvbG9yLmpzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5IGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CmluZGV4IGU2YjQ5OGVlYmFmZjlk
Y2EzNmNlOGM4Y2ZhMThiNDI0NjAwZGFjNTMuLjA5YjFkMzRlZjk4YzAxOGUxOTNhMDUyM2E4NDJm
N2Y4MWVhZmIyNmUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxl
LWZyb250LWVuZC5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9u
dC1lbmQucHkKQEAgLTExNiw2ICsxMTYsNyBAQCBtb2R1bGVzID0gWwogICAgICAgICAic291cmNl
cyI6IFsKICAgICAgICAgICAgICJBZHZhbmNlZFNlYXJjaENvbnRyb2xsZXIuanMiLAogICAgICAg
ICAgICAgIkNoZWNrYm94LmpzIiwKKyAgICAgICAgICAgICJDb2RlTWlycm9yVGV4dEVkaXRvci5q
cyIsCiAgICAgICAgICAgICAiQ29udGV4dE1lbnUuanMiLAogICAgICAgICAgICAgIkNvb2tpZXNU
YWJsZS5qcyIsCiAgICAgICAgICAgICAiRE9NU3ludGF4SGlnaGxpZ2h0ZXIuanMiLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db2RlTWlycm9yVGV4dEVk
aXRvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29kZU1pcnJvclRl
eHRFZGl0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmVkNDBhNjUxMzcwODgxMjIyNDFhOGU0NjM5ZmM5Zjg0
NWQwMTkyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQ29kZU1pcnJvclRleHRFZGl0b3IuanMKQEAgLTAsMCArMSwzNzAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBj
b25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5WaWV3fQorICogQGltcGxlbWVu
dHMge1dlYkluc3BlY3Rvci5UZXh0RWRpdG9yfQorICogQHBhcmFtIHs/c3RyaW5nfSB1cmwKKyAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JEZWxlZ2F0ZX0gZGVsZWdhdGUKKyAqLwor
V2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yID0gZnVuY3Rpb24odXJsLCBkZWxlZ2F0
ZSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOworICAgIHRoaXMuX2RlbGVn
YXRlID0gZGVsZWdhdGU7CisgICAgdGhpcy5fdXJsID0gdXJsOworCisgICAgdGhpcy5yZWdpc3Rl
clJlcXVpcmVkQ1NTKCJjb2RlbWlycm9yLmNzcyIpOworICAgIHRoaXMucmVnaXN0ZXJSZXF1aXJl
ZENTUygiY21kZXZ0b29scy5jc3MiKTsKKworICAgIHRoaXMuX2NvZGVNaXJyb3IgPSBDb2RlTWly
cm9yKHRoaXMuZWxlbWVudCwgeworICAgICAgICBsaW5lTnVtYmVyczogdHJ1ZSwKKyAgICAgICAg
Zml4ZWRHdXR0ZXI6IHRydWUsCisgICAgICAgIG9uQ2hhbmdlOiB0aGlzLl9vbkNoYW5nZS5iaW5k
KHRoaXMpLAorICAgICAgICBleHRyYUtleXM6IHsgIkN0cmwtUyI6IHRoaXMuX2NvbW1pdEVkaXRp
bmcuYmluZCh0aGlzKSB9CisgICAgfSk7CisKKyAgICB0aGlzLl9sYXN0UmFuZ2UgPSB0aGlzLnJh
bmdlKCk7CisKKyAgICB0aGlzLmVsZW1lbnQuZmlyc3RDaGlsZC5hZGRTdHlsZUNsYXNzKCJzb3Vy
Y2UtY29kZSIpOworICAgIHRoaXMuZWxlbWVudC5maXJzdENoaWxkLmFkZFN0eWxlQ2xhc3MoImZp
bGwiKTsKK30KKworV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZSA9
IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWltZVR5cGUKKyAgICAgKi8KKyAg
ICBzZXQgbWltZVR5cGUobWltZVR5cGUpCisgICAgeworICAgICAgICB0aGlzLl9jb2RlTWlycm9y
LnNldE9wdGlvbigibW9kZSIsIG1pbWVUeXBlKTsKKyAgICAgICAgc3dpdGNoKG1pbWVUeXBlKSB7
CisgICAgICAgICAgICBjYXNlICJ0ZXh0L2h0bWwiOiB0aGlzLl9jb2RlTWlycm9yLnNldE9wdGlv
bigidGhlbWUiLCAid2ViLWluc3BlY3Rvci1odG1sIik7IGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSAidGV4dC9jc3MiOiB0aGlzLl9jb2RlTWlycm9yLnNldE9wdGlvbigidGhlbWUiLCAid2ViLWlu
c3BlY3Rvci1jc3MiKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJ0ZXh0L2phdmFzY3JpcHQi
OiB0aGlzLl9jb2RlTWlycm9yLnNldE9wdGlvbigidGhlbWUiLCAid2ViLWluc3BlY3Rvci1qcyIp
OyBicmVhazsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Jv
b2xlYW59IHJlYWRPbmx5CisgICAgICovCisgICAgc2V0UmVhZE9ubHk6IGZ1bmN0aW9uKHJlYWRP
bmx5KQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVhZE9ubHkgPSByZWFkT25seTsKKyAgICAgICAg
dGhpcy5fY29kZU1pcnJvci5zZXRPcHRpb24oInJlYWRPbmx5IiwgcmVhZE9ubHkpOworICAgIH0s
CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIHJlYWRP
bmx5OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHk7Cisg
ICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge0VsZW1lbnR9CisgICAgICovCisgICAg
ZGVmYXVsdEZvY3VzZWRFbGVtZW50OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy5lbGVtZW50LmZpcnN0Q2hpbGQ7CisgICAgfSwKKworICAgIGZvY3VzOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICB0aGlzLl9jb2RlTWlycm9yLmZvY3VzKCk7CisgICAgfSwKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCisgICAgICovCisgICAgcmV2
ZWFsTGluZTogZnVuY3Rpb24obGluZU51bWJlcikKKyAgICB7CisgICAgICAgIHRoaXMuX2NvZGVN
aXJyb3Iuc2V0Q3Vyc29yKHtsaW5lOiBsaW5lTnVtYmVyfSk7CisgICAgICAgIHZhciBjb29yZHMg
PSB0aGlzLl9jb2RlTWlycm9yLmN1cnNvckNvb3JkcygpOworICAgICAgICB0aGlzLl9jb2RlTWly
cm9yLnNjcm9sbFRvKGNvb3Jkcy54LCBjb29yZHMueSk7CisgICAgfSwKKworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCisgICAgICogQHBhcmFtIHtzdHJpbmd8RWxl
bWVudH0gZGVjb3JhdGlvbgorICAgICAqLworICAgIGFkZERlY29yYXRpb246IGZ1bmN0aW9uKGxp
bmVOdW1iZXIsIGRlY29yYXRpb24pCisgICAgeworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gbGluZU51bWJlcgorICAgICAqIEBwYXJhbSB7c3RyaW5nfEVsZW1lbnR9
IGRlY29yYXRpb24KKyAgICAgKi8KKyAgICByZW1vdmVEZWNvcmF0aW9uOiBmdW5jdGlvbihsaW5l
TnVtYmVyLCBkZWNvcmF0aW9uKQorICAgIHsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfSByYW5nZQorICAgICAqLworICAgIG1hcmtBbmRS
ZXZlYWxSYW5nZTogZnVuY3Rpb24ocmFuZ2UpCisgICAgeworICAgICAgICBpZiAocmFuZ2UpCisg
ICAgICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihyYW5nZSk7CisgICAgfSwKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCisgICAgICovCisgICAgaGlnaGxpZ2h0
TGluZTogZnVuY3Rpb24obGluZU51bWJlcikKKyAgICB7CisgICAgICAgIHZhciBsaW5lID0gdGhp
cy5fY29kZU1pcnJvci5nZXRMaW5lKGxpbmVOdW1iZXIpOworICAgICAgICB2YXIgbWFyayA9IHRo
aXMuX2NvZGVNaXJyb3IubWFya1RleHQoe2xpbmU6bGluZU51bWJlcixjaDowfSx7bGluZTpsaW5l
TnVtYmVyLGNoOmxpbmUubGVuZ3RofSwiQ29kZU1pcnJvci1zZWFyY2hpbmciKTsKKyAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpe21hcmsuY2xlYXIoKTt9LDEwMDApOworICAgIH0sCisKKyAg
ICBjbGVhckxpbmVIaWdobGlnaHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgfSwKKworICAgIGZy
ZWVDYWNoZWRFbGVtZW50czogZnVuY3Rpb24oKQorICAgIHsKKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQHJldHVybiB7QXJyYXkuPEVsZW1lbnQ+fQorICAgICAqLworICAgIGVsZW1lbnRzVG9S
ZXN0b3JlU2Nyb2xsUG9zaXRpb25zRm9yOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1
cm4gW107CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRl
eHRFZGl0b3J9IHRleHRFZGl0b3IKKyAgICAgKi8KKyAgICBpbmhlcml0U2Nyb2xsUG9zaXRpb25z
OiBmdW5jdGlvbih0ZXh0RWRpdG9yKQorICAgIHsKKyAgICB9LAorCisgICAgYmVnaW5VcGRhdGVz
OiBmdW5jdGlvbigpCisgICAgeworICAgIH0sCisKKyAgICBlbmRVcGRhdGVzOiBmdW5jdGlvbigp
CisgICAgeworICAgIH0sCisKKyAgICBvblJlc2l6ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgdGhpcy5fY29kZU1pcnJvci5yZWZyZXNoKCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRleHRSYW5nZX0gcmFuZ2UKKyAgICAgKiBAcGFyYW0ge3N0
cmluZ30gdGV4dAorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9CisgICAg
ICovCisgICAgZWRpdFJhbmdlOiBmdW5jdGlvbihyYW5nZSwgdGV4dCkKKyAgICB7CisgICAgICAg
IHRoaXMuX2RlbGVnYXRlLmJlZm9yZVRleHRDaGFuZ2VkKCk7CisKKyAgICAgICAgdmFyIHBvcyA9
IHRoaXMuX3RvUG9zKHJhbmdlKTsKKyAgICAgICAgdGhpcy5fY29kZU1pcnJvci5yZXBsYWNlUmFu
Z2UodGV4dCwgcG9zLnN0YXJ0LCBwb3MuZW5kKTsKKyAgICAgICAgdmFyIG5ld1JhbmdlID0gdGhp
cy5fdG9SYW5nZShwb3Muc3RhcnQsIHRoaXMuX2NvZGVNaXJyb3IucG9zRnJvbUluZGV4KHRoaXMu
X2NvZGVNaXJyb3IuaW5kZXhGcm9tUG9zKHBvcy5zdGFydCkgKyB0ZXh0Lmxlbmd0aCkpOworCisg
ICAgICAgIHRoaXMuX2RlbGVnYXRlLmFmdGVyVGV4dENoYW5nZWQocmFuZ2UsIG5ld1JhbmdlKTsK
KworICAgICAgICByZXR1cm4gbmV3UmFuZ2U7CisgICAgfSwKKworICAgIF9vbkNoYW5nZTogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fZGVsZWdhdGUuYmVmb3JlVGV4dENoYW5nZWQo
KTsKKyAgICAgICAgdmFyIG5ld1JhbmdlID0gdGhpcy5yYW5nZSgpOworICAgICAgICB0aGlzLl9k
ZWxlZ2F0ZS5hZnRlclRleHRDaGFuZ2VkKHRoaXMuX2xhc3RSYW5nZSwgbmV3UmFuZ2UpOworICAg
ICAgICB0aGlzLl9sYXN0UmFuZ2UgPSBuZXdSYW5nZTsKKyAgICB9LAorCisgICAgX2NvbW1pdEVk
aXRpbmc6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdGhpcy5fZGVsZWdhdGUuY29tbWl0
RWRpdGluZygpOworICAgICAgICBpZiAodGhpcy5fdXJsICYmIFdlYkluc3BlY3Rvci5maWxlTWFu
YWdlci5pc1VSTFNhdmVkKHRoaXMuX3VybCkpCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZmls
ZU1hbmFnZXIuc2F2ZSh0aGlzLl91cmwsIHRoaXMudGV4dCgpLCBmYWxzZSk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0sCisKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBs
aW5lTnVtYmVyCisgICAgICovCisgICAgc2Nyb2xsVG9MaW5lOiBmdW5jdGlvbihsaW5lTnVtYmVy
KQorICAgIHsKKyAgICAgICAgdGhpcy5fY29kZU1pcnJvci5zZXRDdXJzb3Ioe2xpbmU6bGluZU51
bWJlciwgY2g6MH0pOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNw
ZWN0b3IuVGV4dFJhbmdlfQorICAgICAqLworICAgIHNlbGVjdGlvbjogZnVuY3Rpb24odGV4dFJh
bmdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfSwKKworICAgIC8qKgorICAg
ICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2U/fQorICAgICAqLworICAgIGxhc3RT
ZWxlY3Rpb246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9sYXN0U2Vs
ZWN0aW9uOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5U
ZXh0UmFuZ2V9IHRleHRSYW5nZQorICAgICAqLworICAgIHNldFNlbGVjdGlvbjogZnVuY3Rpb24o
dGV4dFJhbmdlKQorICAgIHsKKyAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGlvbiA9IHRleHRSYW5n
ZTsKKyAgICAgICAgdmFyIHBvcyA9IHRoaXMuX3RvUG9zKHRleHRSYW5nZSk7CisgICAgICAgIHRo
aXMuX2NvZGVNaXJyb3Iuc2V0U2VsZWN0aW9uKHBvcy5zdGFydCwgcG9zLmVuZCk7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0CisgICAgICovCisgICAgc2V0
VGV4dDogZnVuY3Rpb24odGV4dCkKKyAgICB7CisgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iuc2V0
VmFsdWUodGV4dCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30K
KyAgICAgKi8KKyAgICB0ZXh0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhp
cy5fY29kZU1pcnJvci5nZXRWYWx1ZSgpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0
dXJuIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfQorICAgICAqLworICAgIHJhbmdlOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICB2YXIgbGluZUNvdW50ID0gdGhpcy5saW5lc0NvdW50OworICAg
ICAgICByZXR1cm4gdGhpcy5fdG9SYW5nZSh7bGluZTowLCBjaDowfSwgdGhpcy5fY29kZU1pcnJv
ci5wb3NGcm9tSW5kZXgodGhpcy5fY29kZU1pcnJvci5nZXRWYWx1ZSgpLmxlbmd0aCkpOworICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51bWJlcgorICAgICAq
IEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBsaW5lOiBmdW5jdGlvbihsaW5lTnVtYmVy
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3IuZ2V0TGluZShsaW5lTnVt
YmVyKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAq
LworICAgIGdldCBsaW5lc0NvdW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jb2Rl
TWlycm9yLmxpbmVDb3VudCgpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gbGluZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtP
YmplY3Q/fSB2YWx1ZQorICAgICAqLworICAgIHNldEF0dHJpYnV0ZTogZnVuY3Rpb24obGluZSwg
bmFtZSwgdmFsdWUpCisgICAgeworICAgICAgICB2YXIgaGFuZGxlID0gdGhpcy5fY29kZU1pcnJv
ci5nZXRMaW5lSGFuZGxlKGxpbmUpOworICAgICAgICBpZiAoaGFuZGxlLmF0dHJpYnV0ZXMgPT09
IHVuZGVmaW5lZCkgaGFuZGxlLmF0dHJpYnV0ZXMgPSB7fTsKKyAgICAgICAgaGFuZGxlLmF0dHJp
YnV0ZXNbbmFtZV0gPSB2YWx1ZTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IGxpbmUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEByZXR1cm4g
e09iamVjdHxudWxsfSB2YWx1ZQorICAgICAqLworICAgIGdldEF0dHJpYnV0ZTogZnVuY3Rpb24o
bGluZSwgbmFtZSkKKyAgICB7CisgICAgICAgIHZhciBoYW5kbGUgPSB0aGlzLl9jb2RlTWlycm9y
LmdldExpbmVIYW5kbGUobGluZSk7CisgICAgICAgIHJldHVybiBoYW5kbGUuYXR0cmlidXRlcyAm
JiBoYW5kbGUuYXR0cmlidXRlc1tuYW1lXSAhPT0gdW5kZWZpbmVkID8gaGFuZGxlLmF0dHJpYnV0
ZXNbbmFtZV0gOiBudWxsOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gbGluZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICovCisgICAgcmVtb3Zl
QXR0cmlidXRlOiBmdW5jdGlvbihsaW5lLCBuYW1lKQorICAgIHsKKyAgICAgICAgdmFyIGhhbmRs
ZSA9IHRoaXMuX2NvZGVNaXJyb3IuZ2V0TGluZUhhbmRsZShsaW5lKTsKKyAgICAgICAgaWYgKGhh
bmRsZS5hdHRyaWJ1dGVzICE9PSB1bmRlZmluZWQpIGRlbGV0ZSBoYW5kbGUuYXR0cmlidXRlc1tu
YW1lXTsKKyAgICB9LAorCisgICAgd2FzU2hvd246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IGlmICh0aGlzLl9jb250ZW50KSB7CisgICAgICAgICAgICB0aGlzLl9jb2RlTWlycm9yLnJlcGxh
Y2VSYW5nZSh0aGlzLl9jb250ZW50LnN0cmluZywgdGhpcy5fY29udGVudC5wb3Muc3RhcnQsIHRo
aXMuX2NvbnRlbnQucG9zLmVuZCk7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fY29udGVudDsK
KyAgICAgICAgfQorICAgIH0sCisKKyAgICB3aWxsSGlkZTogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICB9LAorCisgICAgX3RleHRDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAg
IHZhciBzdHJpbmcgPSB0aGlzLl90ZXh0TW9kZWwuY29weVJhbmdlKGV2ZW50LmRhdGEubmV3UmFu
Z2UpOworICAgICAgICB2YXIgcG9zID0gdGhpcy5fdG9Qb3MoZXZlbnQuZGF0YS5vbGRSYW5nZSk7
CisgICAgICAgIGlmICghdGhpcy5pc1Nob3dpbmcoKSkgeworICAgICAgICAgICAgdGhpcy5fY29u
dGVudCA9IHtzdHJpbmc6IHN0cmluZywgcG9zOiBwb3N9OworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fY29kZU1pcnJvci5yZXBsYWNlUmFuZ2Uoc3RyaW5n
LCBwb3Muc3RhcnQsIHBvcy5lbmQpOworICAgIH0sCisKKyAgICBfdG9Qb3M6IGZ1bmN0aW9uKHJh
bmdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHN0YXJ0OiB7bGluZTog
cmFuZ2Uuc3RhcnRMaW5lLCBjaDogcmFuZ2Uuc3RhcnRDb2x1bW59LAorICAgICAgICAgICAgZW5k
OiB7bGluZTogcmFuZ2UuZW5kTGluZSwgY2g6IHJhbmdlLmVuZENvbHVtbn0KKyAgICAgICAgfQor
ICAgIH0sCisKKyAgICBfdG9SYW5nZTogZnVuY3Rpb24oc3RhcnQsIGVuZCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZShzdGFydC5saW5lLCBzdGFydC5j
aCwgZW5kLmxpbmUsIGVuZC5jaCk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuQ29kZU1pcnJv
clRleHRFZGl0b3IucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5WaWV3LnByb3Rv
dHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0
dGluZ3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpz
CmluZGV4IDFlYzJjNTQyY2FlYzYxOTU3ZTA3MzI4OWMzYjlhY2E3OGUxYjMyNjYuLjEyOTk1N2Ew
Njc1NzY4M2NiZjg1NmU2NDY5YjRkNWY0ZTYzNTQ4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwpAQCAtMTkzLDYgKzE5Myw3IEBAIFdlYklu
c3BlY3Rvci5FeHBlcmltZW50c1NldHRpbmdzID0gZnVuY3Rpb24oKQogICAgIHRoaXMuZ2VvbG9j
YXRpb25PdmVycmlkZSA9IHRoaXMuX2NyZWF0ZUV4cGVyaW1lbnQoImdlb2xvY2F0aW9uT3ZlcnJp
ZGUiLCAiT3ZlcnJpZGUgRGV2aWNlIEdlb2xvY2F0aW9uIik7CiAgICAgdGhpcy5kZXZpY2VPcmll
bnRhdGlvbk92ZXJyaWRlID0gdGhpcy5fY3JlYXRlRXhwZXJpbWVudCgiZGV2aWNlT3JpZW50YXRp
b25PdmVycmlkZSIsICJPdmVycmlkZSBEZXZpY2UgT3JpZW50YXRpb24iKTsKICAgICB0aGlzLnNh
c3MgPSB0aGlzLl9jcmVhdGVFeHBlcmltZW50KCJzYXNzIiwgIlN1cHBvcnQgZm9yIFNBU1MiKTsK
KyAgICB0aGlzLmNvZGVtaXJyb3IgPSB0aGlzLl9jcmVhdGVFeHBlcmltZW50KCJDb2RlTWlycm9y
IiwgIlVzZSBDb2RlTWlycm9yIGFzIGVkaXRvciIpOwogCiAgICAgdGhpcy5fY2xlYW5VcFNldHRp
bmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U291cmNlRnJhbWUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJj
ZUZyYW1lLmpzCmluZGV4IDI3NTg5YzcwYzhkZGFiZTBhMWMzNzIyN2M2YjI1YTg4ODg0YTYwNDIu
LmUxNDU3YWNiYzJkNjY1NDg4MGVlMDUzZmU5N2FmNWNiNGM2ZmYyOWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcwpAQCAtNDIsNyAr
NDIsMTEgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lID0gZnVuY3Rpb24oY29udGVudFByb3Zp
ZGVyKQogICAgIHRoaXMuX2NvbnRlbnRQcm92aWRlciA9IGNvbnRlbnRQcm92aWRlcjsKIAogICAg
IHZhciB0ZXh0RWRpdG9yRGVsZWdhdGUgPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JEZWxl
Z2F0ZUZvclNvdXJjZUZyYW1lKHRoaXMpOwotICAgIHRoaXMuX3RleHRFZGl0b3IgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9yKHRoaXMuX3VybCwgdGV4dEVkaXRvckRlbGVnYXRl
KTsKKworICAgIGlmIChXZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNTZXR0aW5ncy5jb2RlbWlycm9y
LmlzRW5hYmxlZCgpKQorICAgICAgICB0aGlzLl90ZXh0RWRpdG9yID0gbmV3IFdlYkluc3BlY3Rv
ci5Db2RlTWlycm9yVGV4dEVkaXRvcih0aGlzLl91cmwsIHRleHRFZGl0b3JEZWxlZ2F0ZSk7Cisg
ICAgZWxzZQorICAgICAgICB0aGlzLl90ZXh0RWRpdG9yID0gbmV3IFdlYkluc3BlY3Rvci5EZWZh
dWx0VGV4dEVkaXRvcih0aGlzLl91cmwsIHRleHRFZGl0b3JEZWxlZ2F0ZSk7CiAKICAgICB0aGlz
Ll9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSAtMTsKICAgICB0aGlzLl9zZWFyY2hSZXN1bHRz
ID0gW107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dl
YktpdC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMK
aW5kZXggMmQwYTIxNWEyNzJkMjk1NjcxM2MxM2MyMGFjMTQyYTQ3OTQzZTIwOS4uMWJmZjIxOGVj
YmZkYjI3NjRkZGUzZDk0MzYwMzhmNDBmMTNmZjlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtMTUsNiArMTUsNyBAQAogICAgIDxmaWxl
PkJyZWFrcG9pbnRzU2lkZWJhclBhbmUuanM8L2ZpbGU+CiAgICAgPGZpbGU+Q2FsbFN0YWNrU2lk
ZWJhclBhbmUuanM8L2ZpbGU+CiAgICAgPGZpbGU+Q2hlY2tib3guanM8L2ZpbGU+CisgICAgPGZp
bGU+Q29kZU1pcnJvclRleHRFZGl0b3IuanM8L2ZpbGU+CiAgICAgPGZpbGU+Q29sb3IuanM8L2Zp
bGU+CiAgICAgPGZpbGU+Q29tcGlsZXJTY3JpcHRNYXBwaW5nLmpzPC9maWxlPgogICAgIDxmaWxl
PkNvbnNvbGVNZXNzYWdlLmpzPC9maWxlPgpAQCAtMTk3LDcgKzE5OCw5IEBACiAgICAgPGZpbGU+
V29ya3NwYWNlLmpzPC9maWxlPgogICAgIDxmaWxlPlVnbGlmeUpTL3BhcnNlLWpzLmpzPC9maWxl
PgogICAgIDxmaWxlPmF1ZGl0c1BhbmVsLmNzczwvZmlsZT4KKyAgICA8ZmlsZT5jb2RlbWlycm9y
LmNzczwvZmlsZT4KICAgICA8ZmlsZT5kYXRhR3JpZC5jc3M8L2ZpbGU+CisgICAgPGZpbGU+Y21k
ZXZ0b29scy5jc3M8L2ZpbGU+CiAgICAgPGZpbGU+ZGlhbG9nLmNzczwvZmlsZT4KICAgICA8Zmls
ZT5lbGVtZW50c1BhbmVsLmNzczwvZmlsZT4KICAgICA8ZmlsZT5maWx0ZXJlZEl0ZW1TZWxlY3Rp
b25EaWFsb2cuY3NzPC9maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9jbWRldnRvb2xzLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvY21kZXZ0b29scy5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzYyNjhkZjMxM2U4ZGU1OGYwMzhjZTM3
YmI1NjVjMGU4MDk0NTNlNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvY21kZXZ0b29scy5jc3MKQEAgLTAsMCArMSwyNiBAQAorLkNvZGVNaXJy
b3Itc2Nyb2xsIHsKKyAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7Cit9CisuQ29kZU1pcnJvciB7
CisgIGxpbmUtaGVpZ2h0OiAxLjFlbTsKK30KKy5jbS1zLXdlYi1pbnNwZWN0b3ItanMgc3Bhbi5j
bS1rZXl3b3JkIHtjb2xvcjogcmdiKDE3MCwgMTMsIDE0NSk7fQorLmNtLXMtd2ViLWluc3BlY3Rv
ci1qcyBzcGFuLmNtLW51bWJlciB7Y29sb3I6IHJnYigyOCwgMCwgMjA3KTt9CisuY20tcy13ZWIt
aW5zcGVjdG9yLWpzIHNwYW4uY20tY29tbWVudCB7Y29sb3I6IHJnYigwLCAxMTYsIDApO30KKy5j
bS1zLXdlYi1pbnNwZWN0b3ItanMgc3Bhbi5jbS1zdHJpbmcge2NvbG9yOiByZ2IoMTk2LCAyNiwg
MjIpO30KKy5jbS1zLXdlYi1pbnNwZWN0b3ItanMgc3Bhbi5jbS1zdHJpbmctMiB7Y29sb3I6IHJn
YigxOTYsIDI2LCAyMik7fQorCisuY20tcy13ZWItaW5zcGVjdG9yLWNzcyBzcGFuLmNtLWtleXdv
cmQgeyBjb2xvcjogcmdiKDcsIDE0NCwgMTU0KTt9CisuY20tcy13ZWItaW5zcGVjdG9yLWNzcyBz
cGFuLmNtLW51bWJlciB7Y29sb3I6IHJnYig1MCwgMCwgMjU1KTt9CisuY20tcy13ZWItaW5zcGVj
dG9yLWNzcyBzcGFuLmNtLWNvbW1lbnQge2NvbG9yOiByZ2IoMCwgMTE2LCAwKTt9CisuY20tcy13
ZWItaW5zcGVjdG9yLWNzcyBzcGFuLmNtLXN0cmluZyB7Y29sb3I6IHJnYig3LCAxNDQsIDE1NCk7
fQorLmNtLXMtd2ViLWluc3BlY3Rvci1jc3Mgc3Bhbi5jbS1zdHJpbmctMiB7Y29sb3I6IHJnYig3
LCAxNDQsIDE1NCk7fQorLmNtLXMtd2ViLWluc3BlY3Rvci1jc3Mgc3Bhbi5jbS1saW5rIHtjb2xv
cjogcmdiKDcsIDE0NCwgMTU0KTt9CisuY20tcy13ZWItaW5zcGVjdG9yLWNzcyBzcGFuLmNtLXZh
cmlhYmxlIHtjb2xvcjogcmdiKDIwMCwgMCwgMCk7fQorCisuY20tcy13ZWItaW5zcGVjdG9yLWh0
bWwgc3Bhbi5jbS1tZXRhIHtjb2xvcjogcmdiKDE5MiwgMTkyLCAxOTIpO30KKy5jbS1zLXdlYi1p
bnNwZWN0b3ItaHRtbCBzcGFuLmNtLWNvbW1lbnQge2NvbG9yOiByZ2IoMzUsIDExMCwgMzcpO30K
Ky5jbS1zLXdlYi1pbnNwZWN0b3ItaHRtbCBzcGFuLmNtLXN0cmluZyB7Y29sb3I6IHJnYigyNiwg
MjYsIDE2Nik7fQorLmNtLXMtd2ViLWluc3BlY3Rvci1odG1sIHNwYW4uY20tdGFnIHtjb2xvcjog
cmdiKDEzNiwgMTgsIDEyOCk7fQorLmNtLXMtd2ViLWluc3BlY3Rvci1odG1sIHNwYW4uY20tYXR0
cmlidXRlIHtjb2xvcjogcmdiKDE1MywgNjksIDApO30KKy5jbS1zLXdlYi1pbnNwZWN0b3ItaHRt
bCBzcGFuLmNtLWxpbmsge2NvbG9yOiAjMDBlO30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvY29kZW1pcnJvci5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2NvZGVtaXJyb3IuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwZTkxYjJkNzMzYTEx
ZmZkYTFiMGUyZmYzYjUwYTRiMzBiNWJhYzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2NvZGVtaXJyb3IuY3NzCkBAIC0wLDAgKzEsMTczIEBA
CisuQ29kZU1pcnJvciB7CisgIGxpbmUtaGVpZ2h0OiAxZW07CisgIGZvbnQtZmFtaWx5OiBtb25v
c3BhY2U7CisKKyAgLyogTmVjZXNzYXJ5IHNvIHRoZSBzY3JvbGxiYXIgY2FuIGJlIGFic29sdXRl
bHkgcG9zaXRpb25lZCB3aXRoaW4gdGhlIHdyYXBwZXIgb24gTGlvbi4gKi8KKyAgcG9zaXRpb246
IHJlbGF0aXZlOworICAvKiBUaGlzIHByZXZlbnRzIHVud2FudGVkIHNjcm9sbGJhcnMgZnJvbSBz
aG93aW5nIHVwIG9uIHRoZSBib2R5IGFuZCB3cmFwcGVyIGluIElFLiAqLworICBvdmVyZmxvdzog
aGlkZGVuOworfQorCisuQ29kZU1pcnJvci1zY3JvbGwgeworICBvdmVyZmxvdzogYXV0bzsKKyAg
aGVpZ2h0OiAzMDBweDsKKyAgLyogVGhpcyBpcyBuZWVkZWQgdG8gcHJldmVudCBhbiBJRVs2N10g
YnVnIHdoZXJlIHRoZSBzY3JvbGxlZCBjb250ZW50CisgICAgIGlzIHZpc2libGUgb3V0c2lkZSBv
ZiB0aGUgc2Nyb2xsaW5nIGJveC4gKi8KKyAgcG9zaXRpb246IHJlbGF0aXZlOworICBvdXRsaW5l
OiBub25lOworfQorCisvKiBWZXJ0aWNhbCBzY3JvbGxiYXIgKi8KKy5Db2RlTWlycm9yLXNjcm9s
bGJhciB7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgcmlnaHQ6IDA7IHRvcDogMDsKKyAgb3Zl
cmZsb3cteDogaGlkZGVuOworICBvdmVyZmxvdy15OiBzY3JvbGw7CisgIHotaW5kZXg6IDU7Cit9
CisuQ29kZU1pcnJvci1zY3JvbGxiYXItaW5uZXIgeworICAvKiBUaGlzIG5lZWRzIHRvIGhhdmUg
YSBub256ZXJvIHdpZHRoIGluIG9yZGVyIGZvciB0aGUgc2Nyb2xsYmFyIHRvIGFwcGVhcgorICAg
ICBpbiBGaXJlZm94IGFuZCBJRTkuICovCisgIHdpZHRoOiAxcHg7Cit9CisuQ29kZU1pcnJvci1z
Y3JvbGxiYXIuY20tc2Itb3ZlcmxhcCB7CisgIC8qIEVuc3VyZSB0aGF0IHRoZSBzY3JvbGxiYXIg
YXBwZWFycyBpbiBMaW9uLCBhbmQgdGhhdCBpdCBvdmVybGFwcyB0aGUgY29udGVudAorICAgICBy
YXRoZXIgdGhhbiBzaXR0aW5nIHRvIHRoZSByaWdodCBvZiBpdC4gKi8KKyAgcG9zaXRpb246IGFi
c29sdXRlOworICB6LWluZGV4OiAxOworICBmbG9hdDogbm9uZTsKKyAgcmlnaHQ6IDA7CisgIG1p
bi13aWR0aDogMTJweDsKK30KKy5Db2RlTWlycm9yLXNjcm9sbGJhci5jbS1zYi1ub25vdmVybGFw
IHsKKyAgbWluLXdpZHRoOiAxMnB4OworfQorLkNvZGVNaXJyb3Itc2Nyb2xsYmFyLmNtLXNiLWll
NyB7CisgIG1pbi13aWR0aDogMThweDsKK30KKworLkNvZGVNaXJyb3ItZ3V0dGVyIHsKKyAgcG9z
aXRpb246IGFic29sdXRlOyBsZWZ0OiAwOyB0b3A6IDA7CisgIHotaW5kZXg6IDEwOworICBiYWNr
Z3JvdW5kLWNvbG9yOiAjZjdmN2Y3OworICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZWVlOwor
ICBtaW4td2lkdGg6IDJlbTsKKyAgaGVpZ2h0OiAxMDAlOworfQorLkNvZGVNaXJyb3ItZ3V0dGVy
LXRleHQgeworICBjb2xvcjogI2FhYTsKKyAgdGV4dC1hbGlnbjogcmlnaHQ7CisgIHBhZGRpbmc6
IC40ZW0gLjJlbSAuNGVtIC40ZW07CisgIHdoaXRlLXNwYWNlOiBwcmUgIWltcG9ydGFudDsKKyAg
Y3Vyc29yOiBkZWZhdWx0OworfQorLkNvZGVNaXJyb3ItbGluZXMgeworICBwYWRkaW5nOiAuNGVt
OworICB3aGl0ZS1zcGFjZTogcHJlOworICBjdXJzb3I6IHRleHQ7Cit9CisKKy5Db2RlTWlycm9y
IHByZSB7CisgIC1tb3otYm9yZGVyLXJhZGl1czogMDsKKyAgLXdlYmtpdC1ib3JkZXItcmFkaXVz
OiAwOworICAtby1ib3JkZXItcmFkaXVzOiAwOworICBib3JkZXItcmFkaXVzOiAwOworICBib3Jk
ZXItd2lkdGg6IDA7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgYmFja2dyb3VuZDogdHJhbnNwYXJl
bnQ7CisgIGZvbnQtZmFtaWx5OiBpbmhlcml0OworICBmb250LXNpemU6IGluaGVyaXQ7CisgIHBh
ZGRpbmc6IDA7IG1hcmdpbjogMDsKKyAgd2hpdGUtc3BhY2U6IHByZTsKKyAgd29yZC13cmFwOiBu
b3JtYWw7CisgIGxpbmUtaGVpZ2h0OiBpbmhlcml0OworICBjb2xvcjogaW5oZXJpdDsKK30KKwor
LkNvZGVNaXJyb3Itd3JhcCBwcmUgeworICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CisgIHdoaXRl
LXNwYWNlOiBwcmUtd3JhcDsKKyAgd29yZC1icmVhazogbm9ybWFsOworfQorLkNvZGVNaXJyb3It
d3JhcCAuQ29kZU1pcnJvci1zY3JvbGwgeworICBvdmVyZmxvdy14OiBoaWRkZW47Cit9CisKKy5D
b2RlTWlycm9yIHRleHRhcmVhIHsKKyAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50OworfQorCisu
Q29kZU1pcnJvciBwcmUuQ29kZU1pcnJvci1jdXJzb3IgeworICB6LWluZGV4OiAxMDsKKyAgcG9z
aXRpb246IGFic29sdXRlOworICB2aXNpYmlsaXR5OiBoaWRkZW47CisgIGJvcmRlci1sZWZ0OiAx
cHggc29saWQgYmxhY2s7CisgIGJvcmRlci1yaWdodDogbm9uZTsKKyAgd2lkdGg6IDA7Cit9Cisu
Y20ta2V5bWFwLWZhdC1jdXJzb3IgcHJlLkNvZGVNaXJyb3ItY3Vyc29yIHsKKyAgd2lkdGg6IGF1
dG87CisgIGJvcmRlcjogMDsKKyAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CisgIGJhY2tncm91
bmQ6IHJnYmEoMCwgMjAwLCAwLCAuNCk7CisgIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zv
cm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9IzY2MDBjODAwLCBlbmRDb2xvcnN0
cj0jNGMwMGM4MDApOworfQorLyogS2x1ZGdlIHRvIHR1cm4gb2ZmIGZpbHRlciBpbiBpZTkrLCB3
aGljaCBhbHNvIGFjY2VwdHMgcmdiYSAqLworLmNtLWtleW1hcC1mYXQtY3Vyc29yIHByZS5Db2Rl
TWlycm9yLWN1cnNvcjpub3QoI25vbnNlbnNlX2lkKSB7CisgIGZpbHRlcjogcHJvZ2lkOkRYSW1h
Z2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGVuYWJsZWQ9ZmFsc2UpOworfQorLkNvZGVN
aXJyb3IgcHJlLkNvZGVNaXJyb3ItY3Vyc29yLkNvZGVNaXJyb3Itb3ZlcndyaXRlIHt9CisuQ29k
ZU1pcnJvci1mb2N1c2VkIHByZS5Db2RlTWlycm9yLWN1cnNvciB7CisgIHZpc2liaWxpdHk6IHZp
c2libGU7Cit9CisKK2Rpdi5Db2RlTWlycm9yLXNlbGVjdGVkIHsgYmFja2dyb3VuZDogI2Q5ZDlk
OTsgfQorLkNvZGVNaXJyb3ItZm9jdXNlZCBkaXYuQ29kZU1pcnJvci1zZWxlY3RlZCB7IGJhY2tn
cm91bmQ6ICNkN2Q0ZjA7IH0KKworLkNvZGVNaXJyb3Itc2VhcmNoaW5nIHsKKyAgYmFja2dyb3Vu
ZDogI2ZmYTsKKyAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMCwgLjQpOworfQorCisvKiBE
ZWZhdWx0IHRoZW1lICovCisKKy5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1rZXl3b3JkIHtjb2xvcjog
IzcwODt9CisuY20tcy1kZWZhdWx0IHNwYW4uY20tYXRvbSB7Y29sb3I6ICMyMTk7fQorLmNtLXMt
ZGVmYXVsdCBzcGFuLmNtLW51bWJlciB7Y29sb3I6ICMxNjQ7fQorLmNtLXMtZGVmYXVsdCBzcGFu
LmNtLWRlZiB7Y29sb3I6ICMwMGY7fQorLmNtLXMtZGVmYXVsdCBzcGFuLmNtLXZhcmlhYmxlIHtj
b2xvcjogYmxhY2s7fQorLmNtLXMtZGVmYXVsdCBzcGFuLmNtLXZhcmlhYmxlLTIge2NvbG9yOiAj
MDVhO30KKy5jbS1zLWRlZmF1bHQgc3Bhbi5jbS12YXJpYWJsZS0zIHtjb2xvcjogIzA4NTt9Cisu
Y20tcy1kZWZhdWx0IHNwYW4uY20tcHJvcGVydHkge2NvbG9yOiBibGFjazt9CisuY20tcy1kZWZh
dWx0IHNwYW4uY20tb3BlcmF0b3Ige2NvbG9yOiBibGFjazt9CisuY20tcy1kZWZhdWx0IHNwYW4u
Y20tY29tbWVudCB7Y29sb3I6ICNhNTA7fQorLmNtLXMtZGVmYXVsdCBzcGFuLmNtLXN0cmluZyB7
Y29sb3I6ICNhMTE7fQorLmNtLXMtZGVmYXVsdCBzcGFuLmNtLXN0cmluZy0yIHtjb2xvcjogI2Y1
MDt9CisuY20tcy1kZWZhdWx0IHNwYW4uY20tbWV0YSB7Y29sb3I6ICM1NTU7fQorLmNtLXMtZGVm
YXVsdCBzcGFuLmNtLWVycm9yIHtjb2xvcjogI2YwMDt9CisuY20tcy1kZWZhdWx0IHNwYW4uY20t
cXVhbGlmaWVyIHtjb2xvcjogIzU1NTt9CisuY20tcy1kZWZhdWx0IHNwYW4uY20tYnVpbHRpbiB7
Y29sb3I6ICMzMGE7fQorLmNtLXMtZGVmYXVsdCBzcGFuLmNtLWJyYWNrZXQge2NvbG9yOiAjY2M3
O30KKy5jbS1zLWRlZmF1bHQgc3Bhbi5jbS10YWcge2NvbG9yOiAjMTcwO30KKy5jbS1zLWRlZmF1
bHQgc3Bhbi5jbS1hdHRyaWJ1dGUge2NvbG9yOiAjMDBjO30KKy5jbS1zLWRlZmF1bHQgc3Bhbi5j
bS1oZWFkZXIge2NvbG9yOiBibHVlO30KKy5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1xdW90ZSB7Y29s
b3I6ICMwOTA7fQorLmNtLXMtZGVmYXVsdCBzcGFuLmNtLWhyIHtjb2xvcjogIzk5OTt9CisuY20t
cy1kZWZhdWx0IHNwYW4uY20tbGluayB7Y29sb3I6ICMwMGM7fQorCitzcGFuLmNtLWhlYWRlciwg
c3Bhbi5jbS1zdHJvbmcge2ZvbnQtd2VpZ2h0OiBib2xkO30KK3NwYW4uY20tZW0ge2ZvbnQtc3R5
bGU6IGl0YWxpYzt9CitzcGFuLmNtLWVtc3Ryb25nIHtmb250LXN0eWxlOiBpdGFsaWM7IGZvbnQt
d2VpZ2h0OiBib2xkO30KK3NwYW4uY20tbGluayB7dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7
fQorCitzcGFuLmNtLWludmFsaWRjaGFyIHtjb2xvcjogI2YwMDt9CisKK2Rpdi5Db2RlTWlycm9y
IHNwYW4uQ29kZU1pcnJvci1tYXRjaGluZ2JyYWNrZXQge2NvbG9yOiAjMGYwO30KK2Rpdi5Db2Rl
TWlycm9yIHNwYW4uQ29kZU1pcnJvci1ub25tYXRjaGluZ2JyYWNrZXQge2NvbG9yOiAjZjIyO30K
KworQG1lZGlhIHByaW50IHsKKworICAvKiBIaWRlIHRoZSBjdXJzb3Igd2hlbiBwcmludGluZyAq
LworICAuQ29kZU1pcnJvciBwcmUuQ29kZU1pcnJvci1jdXJzb3IgeworICAgIHZpc2liaWxpdHk6
IGhpZGRlbjsKKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9jb2RlbWlycm9yLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9jb2RlbWlycm9yLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmZmN2M0NTcyMjE3ZmRkMDI0OWQ1NTk1MmYwY2RhNTEyNjFlNzllYzkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2NvZGVtaXJyb3IuanMKQEAg
LTAsMCArMSwzMjIwIEBACisvLyBBbGwgZnVuY3Rpb25zIHRoYXQgbmVlZCBhY2Nlc3MgdG8gdGhl
IGVkaXRvcidzIHN0YXRlIGxpdmUgaW5zaWRlCisvLyB0aGUgQ29kZU1pcnJvciBmdW5jdGlvbi4g
QmVsb3cgdGhhdCwgYXQgdGhlIGJvdHRvbSBvZiB0aGUgZmlsZSwKKy8vIHNvbWUgdXRpbGl0aWVz
IGFyZSBkZWZpbmVkLgorCisvLyBDb2RlTWlycm9yIGlzIHRoZSBvbmx5IGdsb2JhbCB2YXIgd2Ug
Y2xhaW0KK3ZhciBDb2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgeworICAidXNlIHN0cmljdCI7Cisg
IC8vIFRoaXMgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgcHJvZHVjZXMgYW4gZWRpdG9yIGluc3RhbmNl
LiBJdHMKKyAgLy8gY2xvc3VyZSBpcyB1c2VkIHRvIHN0b3JlIHRoZSBlZGl0b3Igc3RhdGUuCisg
IGZ1bmN0aW9uIENvZGVNaXJyb3IocGxhY2UsIGdpdmVuT3B0aW9ucykgeworICAgIC8vIERldGVy
bWluZSBlZmZlY3RpdmUgb3B0aW9ucyBiYXNlZCBvbiBnaXZlbiB2YWx1ZXMgYW5kIGRlZmF1bHRz
LgorICAgIHZhciBvcHRpb25zID0ge30sIGRlZmF1bHRzID0gQ29kZU1pcnJvci5kZWZhdWx0czsK
KyAgICBmb3IgKHZhciBvcHQgaW4gZGVmYXVsdHMpCisgICAgICBpZiAoZGVmYXVsdHMuaGFzT3du
UHJvcGVydHkob3B0KSkKKyAgICAgICAgb3B0aW9uc1tvcHRdID0gKGdpdmVuT3B0aW9ucyAmJiBn
aXZlbk9wdGlvbnMuaGFzT3duUHJvcGVydHkob3B0KSA/IGdpdmVuT3B0aW9ucyA6IGRlZmF1bHRz
KVtvcHRdOworCisgICAgdmFyIGlucHV0ID0gZWx0KCJ0ZXh0YXJlYSIsIG51bGwsIG51bGwsICJw
b3NpdGlvbjogYWJzb2x1dGU7IHBhZGRpbmc6IDA7IHdpZHRoOiAxcHg7IGhlaWdodDogMWVtIik7
CisgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJ3cmFwIiwgIm9mZiIpOyBpbnB1dC5zZXRBdHRyaWJ1
dGUoImF1dG9jb3JyZWN0IiwgIm9mZiIpOyBpbnB1dC5zZXRBdHRyaWJ1dGUoImF1dG9jYXBpdGFs
aXplIiwgIm9mZiIpOworICAgIC8vIFdyYXBzIGFuZCBoaWRlcyBpbnB1dCB0ZXh0YXJlYQorICAg
IHZhciBpbnB1dERpdiA9IGVsdCgiZGl2IiwgW2lucHV0XSwgbnVsbCwgIm92ZXJmbG93OiBoaWRk
ZW47IHBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDNweDsgaGVpZ2h0OiAwcHg7Iik7CisgICAg
Ly8gVGhlIGVtcHR5IHNjcm9sbGJhciBjb250ZW50LCB1c2VkIHNvbGVseSBmb3IgbWFuYWdpbmcg
dGhlIHNjcm9sbGJhciB0aHVtYi4KKyAgICB2YXIgc2Nyb2xsYmFySW5uZXIgPSBlbHQoImRpdiIs
IG51bGwsICJDb2RlTWlycm9yLXNjcm9sbGJhci1pbm5lciIpOworICAgIC8vIFRoZSB2ZXJ0aWNh
bCBzY3JvbGxiYXIuIEhvcml6b250YWwgc2Nyb2xsaW5nIGlzIGhhbmRsZWQgYnkgdGhlIHNjcm9s
bGVyIGl0c2VsZi4KKyAgICB2YXIgc2Nyb2xsYmFyID0gZWx0KCJkaXYiLCBbc2Nyb2xsYmFySW5u
ZXJdLCAiQ29kZU1pcnJvci1zY3JvbGxiYXIiKTsKKyAgICAvLyBESVZzIGNvbnRhaW5pbmcgdGhl
IHNlbGVjdGlvbiBhbmQgdGhlIGFjdHVhbCBjb2RlCisgICAgdmFyIGxpbmVEaXYgPSBlbHQoImRp
diIpLCBzZWxlY3Rpb25EaXYgPSBlbHQoImRpdiIsIG51bGwsIG51bGwsICJwb3NpdGlvbjogcmVs
YXRpdmU7IHotaW5kZXg6IC0xIik7CisgICAgLy8gQmxpbmt5IGN1cnNvciwgYW5kIGVsZW1lbnQg
dXNlZCB0byBlbnN1cmUgY3Vyc29yIGZpdHMgYXQgdGhlIGVuZCBvZiBhIGxpbmUKKyAgICB2YXIg
Y3Vyc29yID0gZWx0KCJwcmUiLCAiXHUwMGEwIiwgIkNvZGVNaXJyb3ItY3Vyc29yIiksIHdpZHRo
Rm9yY2VyID0gZWx0KCJwcmUiLCAiXHUwMGEwIiwgIkNvZGVNaXJyb3ItY3Vyc29yIiwgInZpc2li
aWxpdHk6IGhpZGRlbiIpOworICAgIC8vIFVzZWQgdG8gbWVhc3VyZSB0ZXh0IHNpemUKKyAgICB2
YXIgbWVhc3VyZSA9IGVsdCgiZGl2IiwgbnVsbCwgbnVsbCwgInBvc2l0aW9uOiBhYnNvbHV0ZTsg
d2lkdGg6IDEwMCU7IGhlaWdodDogMHB4OyBvdmVyZmxvdzogaGlkZGVuOyB2aXNpYmlsaXR5OiBo
aWRkZW47Iik7CisgICAgdmFyIGxpbmVTcGFjZSA9IGVsdCgiZGl2IiwgW21lYXN1cmUsIGN1cnNv
ciwgd2lkdGhGb3JjZXIsIHNlbGVjdGlvbkRpdiwgbGluZURpdl0sIG51bGwsICJwb3NpdGlvbjog
cmVsYXRpdmU7IHotaW5kZXg6IDAiKTsKKyAgICB2YXIgZ3V0dGVyVGV4dCA9IGVsdCgiZGl2Iiwg
bnVsbCwgIkNvZGVNaXJyb3ItZ3V0dGVyLXRleHQiKSwgZ3V0dGVyID0gZWx0KCJkaXYiLCBbZ3V0
dGVyVGV4dF0sICJDb2RlTWlycm9yLWd1dHRlciIpOworICAgIC8vIE1vdmVkIGFyb3VuZCBpdHMg
cGFyZW50IHRvIGNvdmVyIHZpc2libGUgdmlldworICAgIHZhciBtb3ZlciA9IGVsdCgiZGl2Iiwg
W2d1dHRlciwgZWx0KCJkaXYiLCBbbGluZVNwYWNlXSwgIkNvZGVNaXJyb3ItbGluZXMiKV0sIG51
bGwsICJwb3NpdGlvbjogcmVsYXRpdmUiKTsKKyAgICAvLyBTZXQgdG8gdGhlIGhlaWdodCBvZiB0
aGUgdGV4dCwgY2F1c2VzIHNjcm9sbGluZworICAgIHZhciBzaXplciA9IGVsdCgiZGl2IiwgW21v
dmVyXSwgbnVsbCwgInBvc2l0aW9uOiByZWxhdGl2ZSIpOworICAgIC8vIFByb3ZpZGVzIHNjcm9s
bGluZworICAgIHZhciBzY3JvbGxlciA9IGVsdCgiZGl2IiwgW3NpemVyXSwgIkNvZGVNaXJyb3It
c2Nyb2xsIik7CisgICAgc2Nyb2xsZXIuc2V0QXR0cmlidXRlKCJ0YWJJbmRleCIsICItMSIpOwor
ICAgIC8vIFRoZSBlbGVtZW50IGluIHdoaWNoIHRoZSBlZGl0b3IgbGl2ZXMuCisgICAgdmFyIHdy
YXBwZXIgPSBlbHQoImRpdiIsIFtpbnB1dERpdiwgc2Nyb2xsYmFyLCBzY3JvbGxlcl0sICJDb2Rl
TWlycm9yIiArIChvcHRpb25zLmxpbmVXcmFwcGluZyA/ICIgQ29kZU1pcnJvci13cmFwIiA6ICIi
KSk7CisgICAgaWYgKHBsYWNlLmFwcGVuZENoaWxkKSBwbGFjZS5hcHBlbmRDaGlsZCh3cmFwcGVy
KTsgZWxzZSBwbGFjZSh3cmFwcGVyKTsKKworICAgIHRoZW1lQ2hhbmdlZCgpOyBrZXlNYXBDaGFu
Z2VkKCk7CisgICAgLy8gTmVlZGVkIHRvIGhpZGUgYmlnIGJsdWUgYmxpbmtpbmcgY3Vyc29yIG9u
IE1vYmlsZSBTYWZhcmkKKyAgICBpZiAoaW9zKSBpbnB1dC5zdHlsZS53aWR0aCA9ICIwcHgiOwor
ICAgIGlmICghd2Via2l0KSBzY3JvbGxlci5kcmFnZ2FibGUgPSB0cnVlOworICAgIGxpbmVTcGFj
ZS5zdHlsZS5vdXRsaW5lID0gIm5vbmUiOworICAgIGlmIChvcHRpb25zLnRhYmluZGV4ICE9IG51
bGwpIGlucHV0LnRhYkluZGV4ID0gb3B0aW9ucy50YWJpbmRleDsKKyAgICBpZiAob3B0aW9ucy5h
dXRvZm9jdXMpIGZvY3VzSW5wdXQoKTsKKyAgICBpZiAoIW9wdGlvbnMuZ3V0dGVyICYmICFvcHRp
b25zLmxpbmVOdW1iZXJzKSBndXR0ZXIuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICAvLyBO
ZWVkZWQgdG8gaGFuZGxlIFRhYiBrZXkgaW4gS0hUTUwKKyAgICBpZiAoa2h0bWwpIGlucHV0RGl2
LnN0eWxlLmhlaWdodCA9ICIxcHgiLCBpbnB1dERpdi5zdHlsZS5wb3NpdGlvbiA9ICJhYnNvbHV0
ZSI7CisKKyAgICAvLyBDaGVjayBmb3IgT1MgWCA+PSAxMC43LiBJZiBzbywgd2UgbmVlZCB0byBm
b3JjZSBhIHdpZHRoIG9uIHRoZSBzY3JvbGxiYXIsIGFuZAorICAgIC8vIG1ha2UgaXQgb3Zlcmxh
cCB0aGUgY29udGVudC4gKEJ1dCB3ZSBvbmx5IGRvIHRoaXMgaWYgdGhlIHNjcm9sbGJhciBkb2Vz
bid0IGFscmVhZHkKKyAgICAvLyBoYXZlIGEgbmF0dXJhbCB3aWR0aC4gSWYgdGhlIG1vdXNlIGlz
IHBsdWdnZWQgaW4gb3IgdGhlIHVzZXIgc2V0cyB0aGUgc3lzdGVtIHByZWYKKyAgICAvLyB0byBh
bHdheXMgc2hvdyBzY3JvbGxiYXJzLCB0aGUgc2Nyb2xsYmFyIHNob3VsZG4ndCBvdmVybGFwLikK
KyAgICBpZiAobWFjX2dlTGlvbikgeworICAgICAgc2Nyb2xsYmFyLmNsYXNzTmFtZSArPSAob3Zl
cmxhcFNjcm9sbGJhcnMoKSA/ICIgY20tc2Itb3ZlcmxhcCIgOiAiIGNtLXNiLW5vbm92ZXJsYXAi
KTsKKyAgICB9IGVsc2UgaWYgKGllX2x0OCkgeworICAgICAgLy8gTmVlZCB0byBzZXQgYSBtaW5p
bXVtIHdpZHRoIHRvIHNlZSB0aGUgc2Nyb2xsYmFyIG9uIElFNyAoYnV0IG11c3Qgbm90IHNldCBp
dCBvbiBJRTgpLgorICAgICAgc2Nyb2xsYmFyLmNsYXNzTmFtZSArPSAiIGNtLXNiLWllNyI7Cisg
ICAgfQorCisgICAgLy8gQ2hlY2sgZm9yIHByb2JsZW0gd2l0aCBJRSBpbm5lckhUTUwgbm90IHdv
cmtpbmcgd2hlbiB3ZSBoYXZlIGEKKyAgICAvLyBQIChvciBzaW1pbGFyKSBwYXJlbnQgbm9kZS4K
KyAgICB0cnkgeyBjaGFyV2lkdGgoKTsgfQorICAgIGNhdGNoIChlKSB7CisgICAgICBpZiAoZS5t
ZXNzYWdlLm1hdGNoKC9ydW50aW1lL2kpKQorICAgICAgICBlID0gbmV3IEVycm9yKCJBIENvZGVN
aXJyb3IgaW5zaWRlIGEgUC1zdHlsZSBlbGVtZW50IGRvZXMgbm90IHdvcmsgaW4gSW50ZXJuZXQg
RXhwbG9yZXIuIChpbm5lckhUTUwgYnVnKSIpOworICAgICAgdGhyb3cgZTsKKyAgICB9CisKKyAg
ICAvLyBEZWxheWVkIG9iamVjdCB3cmFwIHRpbWVvdXRzLCBtYWtpbmcgc3VyZSBvbmx5IG9uZSBp
cyBhY3RpdmUuIGJsaW5rZXIgaG9sZHMgYW4gaW50ZXJ2YWwuCisgICAgdmFyIHBvbGwgPSBuZXcg
RGVsYXllZCgpLCBoaWdobGlnaHQgPSBuZXcgRGVsYXllZCgpLCBibGlua2VyOworCisgICAgLy8g
bW9kZSBob2xkcyBhIG1vZGUgQVBJIG9iamVjdC4gZG9jIGlzIHRoZSB0cmVlIG9mIExpbmUgb2Jq
ZWN0cywKKyAgICAvLyB3b3JrIGFuIGFycmF5IG9mIGxpbmVzIHRoYXQgc2hvdWxkIGJlIHBhcnNl
ZCwgYW5kIGhpc3RvcnkgdGhlCisgICAgLy8gdW5kbyBoaXN0b3J5IChpbnN0YW5jZSBvZiBIaXN0
b3J5IGNvbnN0cnVjdG9yKS4KKyAgICB2YXIgbW9kZSwgZG9jID0gbmV3IEJyYW5jaENodW5rKFtu
ZXcgTGVhZkNodW5rKFtuZXcgTGluZSgiIildKV0pLCB3b3JrLCBmb2N1c2VkOworICAgIGxvYWRN
b2RlKCk7CisgICAgLy8gVGhlIHNlbGVjdGlvbi4gVGhlc2UgYXJlIGFsd2F5cyBtYWludGFpbmVk
IHRvIHBvaW50IGF0IHZhbGlkCisgICAgLy8gcG9zaXRpb25zLiBJbnZlcnRlZCBpcyB1c2VkIHRv
IHJlbWVtYmVyIHRoYXQgdGhlIHVzZXIgaXMKKyAgICAvLyBzZWxlY3RpbmcgYm90dG9tLXRvLXRv
cC4KKyAgICB2YXIgc2VsID0ge2Zyb206IHtsaW5lOiAwLCBjaDogMH0sIHRvOiB7bGluZTogMCwg
Y2g6IDB9LCBpbnZlcnRlZDogZmFsc2V9OworICAgIC8vIFNlbGVjdGlvbi1yZWxhdGVkIGZsYWdz
LiBzaGlmdFNlbGVjdGluZyBvYnZpb3VzbHkgdHJhY2tzCisgICAgLy8gd2hldGhlciB0aGUgdXNl
ciBpcyBob2xkaW5nIHNoaWZ0LgorICAgIHZhciBzaGlmdFNlbGVjdGluZywgbGFzdENsaWNrLCBs
YXN0RG91YmxlQ2xpY2ssIGxhc3RTY3JvbGxUb3AgPSAwLCBkcmFnZ2luZ1RleHQsCisgICAgICAg
IG92ZXJ3cml0ZSA9IGZhbHNlLCBzdXBwcmVzc0VkaXRzID0gZmFsc2U7CisgICAgLy8gVmFyaWFi
bGVzIHVzZWQgYnkgc3RhcnRPcGVyYXRpb24vZW5kT3BlcmF0aW9uIHRvIHRyYWNrIHdoYXQKKyAg
ICAvLyBoYXBwZW5lZCBkdXJpbmcgdGhlIG9wZXJhdGlvbi4KKyAgICB2YXIgdXBkYXRlSW5wdXQs
IHVzZXJTZWxDaGFuZ2UsIGNoYW5nZXMsIHRleHRDaGFuZ2VkLCBzZWxlY3Rpb25DaGFuZ2VkLCBs
ZWF2ZUlucHV0QWxvbmUsCisgICAgICAgIGd1dHRlckRpcnR5LCBjYWxsYmFja3M7CisgICAgLy8g
Q3VycmVudCB2aXNpYmxlIHJhbmdlIChtYXkgYmUgYmlnZ2VyIHRoYW4gdGhlIHZpZXcgd2luZG93
KS4KKyAgICB2YXIgZGlzcGxheU9mZnNldCA9IDAsIHNob3dpbmdGcm9tID0gMCwgc2hvd2luZ1Rv
ID0gMCwgbGFzdFNpemVDID0gMDsKKyAgICAvLyBicmFja2V0SGlnaGxpZ2h0ZWQgaXMgdXNlZCB0
byByZW1lbWJlciB0aGF0IGEgYnJhY2tldCBoYXMgYmVlbgorICAgIC8vIG1hcmtlZC4KKyAgICB2
YXIgYnJhY2tldEhpZ2hsaWdodGVkOworICAgIC8vIFRyYWNrcyB0aGUgbWF4aW11bSBsaW5lIGxl
bmd0aCBzbyB0aGF0IHRoZSBob3Jpem9udGFsIHNjcm9sbGJhcgorICAgIC8vIGNhbiBiZSBrZXB0
IHN0YXRpYyB3aGVuIHNjcm9sbGluZy4KKyAgICB2YXIgbWF4TGluZSA9IGdldExpbmUoMCksIHVw
ZGF0ZU1heExpbmUgPSBmYWxzZSwgbWF4TGluZUNoYW5nZWQgPSB0cnVlOworICAgIHZhciB0YWJD
YWNoZSA9IHt9OworICAgIHZhciBwb2xsaW5nRmFzdCA9IGZhbHNlOyAvLyBFbnN1cmVzIHNsb3dQ
b2xsIGRvZXNuJ3QgY2FuY2VsIGZhc3RQb2xsCisgICAgdmFyIGdvYWxDb2x1bW4gPSBudWxsOwor
CisgICAgLy8gSW5pdGlhbGl6ZSB0aGUgY29udGVudC4KKyAgICBvcGVyYXRpb24oZnVuY3Rpb24o
KXtzZXRWYWx1ZShvcHRpb25zLnZhbHVlIHx8ICIiKTsgdXBkYXRlSW5wdXQgPSBmYWxzZTt9KSgp
OworICAgIHZhciBoaXN0b3J5ID0gbmV3IEhpc3RvcnkoKTsKKworICAgIC8vIFJlZ2lzdGVyIG91
ciBldmVudCBoYW5kbGVycy4KKyAgICBjb25uZWN0KHNjcm9sbGVyLCAibW91c2Vkb3duIiwgb3Bl
cmF0aW9uKG9uTW91c2VEb3duKSk7CisgICAgY29ubmVjdChzY3JvbGxlciwgImRibGNsaWNrIiwg
b3BlcmF0aW9uKG9uRG91YmxlQ2xpY2spKTsKKyAgICBjb25uZWN0KGxpbmVTcGFjZSwgInNlbGVj
dHN0YXJ0IiwgZV9wcmV2ZW50RGVmYXVsdCk7CisgICAgLy8gR2Vja28gYnJvd3NlcnMgZmlyZSBj
b250ZXh0bWVudSAqYWZ0ZXIqIG9wZW5pbmcgdGhlIG1lbnUsIGF0CisgICAgLy8gd2hpY2ggcG9p
bnQgd2UgY2FuJ3QgbWVzcyB3aXRoIGl0IGFueW1vcmUuIENvbnRleHQgbWVudSBpcworICAgIC8v
IGhhbmRsZWQgaW4gb25Nb3VzZURvd24gZm9yIEdlY2tvLgorICAgIGlmICghZ2Vja28pIGNvbm5l
Y3Qoc2Nyb2xsZXIsICJjb250ZXh0bWVudSIsIG9uQ29udGV4dE1lbnUpOworICAgIGNvbm5lY3Qo
c2Nyb2xsZXIsICJzY3JvbGwiLCBvblNjcm9sbE1haW4pOworICAgIGNvbm5lY3Qoc2Nyb2xsYmFy
LCAic2Nyb2xsIiwgb25TY3JvbGxCYXIpOworICAgIGNvbm5lY3Qoc2Nyb2xsYmFyLCAibW91c2Vk
b3duIiwgZnVuY3Rpb24oKSB7aWYgKGZvY3VzZWQpIHNldFRpbWVvdXQoZm9jdXNJbnB1dCwgMCk7
fSk7CisgICAgY29ubmVjdCh3aW5kb3csICJyZXNpemUiLCBmdW5jdGlvbigpIHt1cGRhdGVEaXNw
bGF5KHRydWUpO30pOworICAgIGNvbm5lY3QoaW5wdXQsICJrZXl1cCIsIG9wZXJhdGlvbihvbktl
eVVwKSk7CisgICAgY29ubmVjdChpbnB1dCwgImlucHV0IiwgZmFzdFBvbGwpOworICAgIGNvbm5l
Y3QoaW5wdXQsICJrZXlkb3duIiwgb3BlcmF0aW9uKG9uS2V5RG93bikpOworICAgIGNvbm5lY3Qo
aW5wdXQsICJrZXlwcmVzcyIsIG9wZXJhdGlvbihvbktleVByZXNzKSk7CisgICAgY29ubmVjdChp
bnB1dCwgImZvY3VzIiwgb25Gb2N1cyk7CisgICAgY29ubmVjdChpbnB1dCwgImJsdXIiLCBvbkJs
dXIpOworCisgICAgZnVuY3Rpb24gZHJhZ18oZSkgeworICAgICAgaWYgKG9wdGlvbnMub25EcmFn
RXZlbnQgJiYgb3B0aW9ucy5vbkRyYWdFdmVudChpbnN0YW5jZSwgYWRkU3RvcChlKSkpIHJldHVy
bjsKKyAgICAgIGVfc3RvcChlKTsKKyAgICB9CisgICAgaWYgKG9wdGlvbnMuZHJhZ0Ryb3ApIHsK
KyAgICAgIGNvbm5lY3Qoc2Nyb2xsZXIsICJkcmFnc3RhcnQiLCBvbkRyYWdTdGFydCk7CisgICAg
ICBjb25uZWN0KHNjcm9sbGVyLCAiZHJhZ2VudGVyIiwgZHJhZ18pOworICAgICAgY29ubmVjdChz
Y3JvbGxlciwgImRyYWdvdmVyIiwgZHJhZ18pOworICAgICAgY29ubmVjdChzY3JvbGxlciwgImRy
b3AiLCBvcGVyYXRpb24ob25Ecm9wKSk7CisgICAgfQorICAgIGNvbm5lY3Qoc2Nyb2xsZXIsICJw
YXN0ZSIsIGZ1bmN0aW9uKCl7Zm9jdXNJbnB1dCgpOyBmYXN0UG9sbCgpO30pOworICAgIGNvbm5l
Y3QoaW5wdXQsICJwYXN0ZSIsIGZhc3RQb2xsKTsKKyAgICBjb25uZWN0KGlucHV0LCAiY3V0Iiwg
b3BlcmF0aW9uKGZ1bmN0aW9uKCl7CisgICAgICBpZiAoIW9wdGlvbnMucmVhZE9ubHkpIHJlcGxh
Y2VTZWxlY3Rpb24oIiIpOworICAgIH0pKTsKKworICAgIC8vIE5lZWRlZCB0byBoYW5kbGUgVGFi
IGtleSBpbiBLSFRNTAorICAgIGlmIChraHRtbCkgY29ubmVjdChzaXplciwgIm1vdXNldXAiLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gaW5wdXQp
IGlucHV0LmJsdXIoKTsKKyAgICAgICAgZm9jdXNJbnB1dCgpOworICAgIH0pOworCisgICAgLy8g
SUUgdGhyb3dzIHVuc3BlY2lmaWVkIGVycm9yIGluIGNlcnRhaW4gY2FzZXMsIHdoZW4KKyAgICAv
LyB0cnlpbmcgdG8gYWNjZXNzIGFjdGl2ZUVsZW1lbnQgYmVmb3JlIG9ubG9hZAorICAgIHZhciBo
YXNGb2N1czsgdHJ5IHsgaGFzRm9jdXMgPSAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBpbnB1
dCk7IH0gY2F0Y2goZSkgeyB9CisgICAgaWYgKGhhc0ZvY3VzIHx8IG9wdGlvbnMuYXV0b2ZvY3Vz
KSBzZXRUaW1lb3V0KG9uRm9jdXMsIDIwKTsKKyAgICBlbHNlIG9uQmx1cigpOworCisgICAgZnVu
Y3Rpb24gaXNMaW5lKGwpIHtyZXR1cm4gbCA+PSAwICYmIGwgPCBkb2Muc2l6ZTt9CisgICAgLy8g
VGhlIGluc3RhbmNlIG9iamVjdCB0aGF0IHdlJ2xsIHJldHVybi4gTW9zdGx5IGNhbGxzIG91dCB0
bworICAgIC8vIGxvY2FsIGZ1bmN0aW9ucyBpbiB0aGUgQ29kZU1pcnJvciBmdW5jdGlvbi4gU29t
ZSBkbyBzb21lIGV4dHJhCisgICAgLy8gcmFuZ2UgY2hlY2tpbmcgYW5kL29yIGNsaXBwaW5nLiBv
cGVyYXRpb24gaXMgdXNlZCB0byB3cmFwIHRoZQorICAgIC8vIGNhbGwgc28gdGhhdCBjaGFuZ2Vz
IGl0IG1ha2VzIGFyZSB0cmFja2VkLCBhbmQgdGhlIGRpc3BsYXkgaXMKKyAgICAvLyB1cGRhdGVk
IGFmdGVyd2FyZHMuCisgICAgdmFyIGluc3RhbmNlID0gd3JhcHBlci5Db2RlTWlycm9yID0gewor
ICAgICAgZ2V0VmFsdWU6IGdldFZhbHVlLAorICAgICAgc2V0VmFsdWU6IG9wZXJhdGlvbihzZXRW
YWx1ZSksCisgICAgICBnZXRTZWxlY3Rpb246IGdldFNlbGVjdGlvbiwKKyAgICAgIHJlcGxhY2VT
ZWxlY3Rpb246IG9wZXJhdGlvbihyZXBsYWNlU2VsZWN0aW9uKSwKKyAgICAgIGZvY3VzOiBmdW5j
dGlvbigpe3dpbmRvdy5mb2N1cygpOyBmb2N1c0lucHV0KCk7IG9uRm9jdXMoKTsgZmFzdFBvbGwo
KTt9LAorICAgICAgc2V0T3B0aW9uOiBmdW5jdGlvbihvcHRpb24sIHZhbHVlKSB7CisgICAgICAg
IHZhciBvbGRWYWwgPSBvcHRpb25zW29wdGlvbl07CisgICAgICAgIG9wdGlvbnNbb3B0aW9uXSA9
IHZhbHVlOworICAgICAgICBpZiAob3B0aW9uID09ICJtb2RlIiB8fCBvcHRpb24gPT0gImluZGVu
dFVuaXQiKSBsb2FkTW9kZSgpOworICAgICAgICBlbHNlIGlmIChvcHRpb24gPT0gInJlYWRPbmx5
IiAmJiB2YWx1ZSA9PSAibm9jdXJzb3IiKSB7b25CbHVyKCk7IGlucHV0LmJsdXIoKTt9CisgICAg
ICAgIGVsc2UgaWYgKG9wdGlvbiA9PSAicmVhZE9ubHkiICYmICF2YWx1ZSkge3Jlc2V0SW5wdXQo
dHJ1ZSk7fQorICAgICAgICBlbHNlIGlmIChvcHRpb24gPT0gInRoZW1lIikgdGhlbWVDaGFuZ2Vk
KCk7CisgICAgICAgIGVsc2UgaWYgKG9wdGlvbiA9PSAibGluZVdyYXBwaW5nIiAmJiBvbGRWYWwg
IT0gdmFsdWUpIG9wZXJhdGlvbih3cmFwcGluZ0NoYW5nZWQpKCk7CisgICAgICAgIGVsc2UgaWYg
KG9wdGlvbiA9PSAidGFiU2l6ZSIpIHVwZGF0ZURpc3BsYXkodHJ1ZSk7CisgICAgICAgIGVsc2Ug
aWYgKG9wdGlvbiA9PSAia2V5TWFwIikga2V5TWFwQ2hhbmdlZCgpOworICAgICAgICBpZiAob3B0
aW9uID09ICJsaW5lTnVtYmVycyIgfHwgb3B0aW9uID09ICJndXR0ZXIiIHx8IG9wdGlvbiA9PSAi
Zmlyc3RMaW5lTnVtYmVyIiB8fAorICAgICAgICAgICAgb3B0aW9uID09ICJ0aGVtZSIgfHwgb3B0
aW9uID09ICJsaW5lTnVtYmVyRm9ybWF0dGVyIikgeworICAgICAgICAgIGd1dHRlckNoYW5nZWQo
KTsKKyAgICAgICAgICB1cGRhdGVEaXNwbGF5KHRydWUpOworICAgICAgICB9CisgICAgICB9LAor
ICAgICAgZ2V0T3B0aW9uOiBmdW5jdGlvbihvcHRpb24pIHtyZXR1cm4gb3B0aW9uc1tvcHRpb25d
O30sCisgICAgICB1bmRvOiBvcGVyYXRpb24odW5kbyksCisgICAgICByZWRvOiBvcGVyYXRpb24o
cmVkbyksCisgICAgICBpbmRlbnRMaW5lOiBvcGVyYXRpb24oZnVuY3Rpb24obiwgZGlyKSB7Cisg
ICAgICAgIGlmICh0eXBlb2YgZGlyICE9ICJzdHJpbmciKSB7CisgICAgICAgICAgaWYgKGRpciA9
PSBudWxsKSBkaXIgPSBvcHRpb25zLnNtYXJ0SW5kZW50ID8gInNtYXJ0IiA6ICJwcmV2IjsKKyAg
ICAgICAgICBlbHNlIGRpciA9IGRpciA/ICJhZGQiIDogInN1YnRyYWN0IjsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoaXNMaW5lKG4pKSBpbmRlbnRMaW5lKG4sIGRpcik7CisgICAgICB9KSwKKyAg
ICAgIGluZGVudFNlbGVjdGlvbjogb3BlcmF0aW9uKGluZGVudFNlbGVjdGVkKSwKKyAgICAgIGhp
c3RvcnlTaXplOiBmdW5jdGlvbigpIHtyZXR1cm4ge3VuZG86IGhpc3RvcnkuZG9uZS5sZW5ndGgs
IHJlZG86IGhpc3RvcnkudW5kb25lLmxlbmd0aH07fSwKKyAgICAgIGNsZWFySGlzdG9yeTogZnVu
Y3Rpb24oKSB7aGlzdG9yeSA9IG5ldyBIaXN0b3J5KCk7fSwKKyAgICAgIHNldEhpc3Rvcnk6IGZ1
bmN0aW9uKGhpc3REYXRhKSB7CisgICAgICAgIGhpc3RvcnkgPSBuZXcgSGlzdG9yeSgpOworICAg
ICAgICBoaXN0b3J5LmRvbmUgPSBoaXN0RGF0YS5kb25lOworICAgICAgICBoaXN0b3J5LnVuZG9u
ZSA9IGhpc3REYXRhLnVuZG9uZTsKKyAgICAgIH0sCisgICAgICBnZXRIaXN0b3J5OiBmdW5jdGlv
bigpIHsKKyAgICAgICAgaGlzdG9yeS50aW1lID0gMDsKKyAgICAgICAgcmV0dXJuIHtkb25lOiBo
aXN0b3J5LmRvbmUuY29uY2F0KFtdKSwgdW5kb25lOiBoaXN0b3J5LnVuZG9uZS5jb25jYXQoW10p
fTsKKyAgICAgIH0sCisgICAgICBtYXRjaEJyYWNrZXRzOiBvcGVyYXRpb24oZnVuY3Rpb24oKXtt
YXRjaEJyYWNrZXRzKHRydWUpO30pLAorICAgICAgZ2V0VG9rZW5BdDogb3BlcmF0aW9uKGZ1bmN0
aW9uKHBvcykgeworICAgICAgICBwb3MgPSBjbGlwUG9zKHBvcyk7CisgICAgICAgIHJldHVybiBn
ZXRMaW5lKHBvcy5saW5lKS5nZXRUb2tlbkF0KG1vZGUsIGdldFN0YXRlQmVmb3JlKHBvcy5saW5l
KSwgcG9zLmNoKTsKKyAgICAgIH0pLAorICAgICAgZ2V0U3RhdGVBZnRlcjogZnVuY3Rpb24obGlu
ZSkgeworICAgICAgICBsaW5lID0gY2xpcExpbmUobGluZSA9PSBudWxsID8gZG9jLnNpemUgLSAx
OiBsaW5lKTsKKyAgICAgICAgcmV0dXJuIGdldFN0YXRlQmVmb3JlKGxpbmUgKyAxKTsKKyAgICAg
IH0sCisgICAgICBjdXJzb3JDb29yZHM6IGZ1bmN0aW9uKHN0YXJ0LCBtb2RlKSB7CisgICAgICAg
IGlmIChzdGFydCA9PSBudWxsKSBzdGFydCA9IHNlbC5pbnZlcnRlZDsKKyAgICAgICAgcmV0dXJu
IHRoaXMuY2hhckNvb3JkcyhzdGFydCA/IHNlbC5mcm9tIDogc2VsLnRvLCBtb2RlKTsKKyAgICAg
IH0sCisgICAgICBjaGFyQ29vcmRzOiBmdW5jdGlvbihwb3MsIG1vZGUpIHsKKyAgICAgICAgcG9z
ID0gY2xpcFBvcyhwb3MpOworICAgICAgICBpZiAobW9kZSA9PSAibG9jYWwiKSByZXR1cm4gbG9j
YWxDb29yZHMocG9zLCBmYWxzZSk7CisgICAgICAgIGlmIChtb2RlID09ICJkaXYiKSByZXR1cm4g
bG9jYWxDb29yZHMocG9zLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIHBhZ2VDb29yZHMocG9zKTsK
KyAgICAgIH0sCisgICAgICBjb29yZHNDaGFyOiBmdW5jdGlvbihjb29yZHMpIHsKKyAgICAgICAg
dmFyIG9mZiA9IGVsdE9mZnNldChsaW5lU3BhY2UpOworICAgICAgICByZXR1cm4gY29vcmRzQ2hh
cihjb29yZHMueCAtIG9mZi5sZWZ0LCBjb29yZHMueSAtIG9mZi50b3ApOworICAgICAgfSwKKyAg
ICAgIG1hcmtUZXh0OiBvcGVyYXRpb24obWFya1RleHQpLAorICAgICAgc2V0Qm9va21hcms6IHNl
dEJvb2ttYXJrLAorICAgICAgZmluZE1hcmtzQXQ6IGZpbmRNYXJrc0F0LAorICAgICAgc2V0TWFy
a2VyOiBvcGVyYXRpb24oYWRkR3V0dGVyTWFya2VyKSwKKyAgICAgIGNsZWFyTWFya2VyOiBvcGVy
YXRpb24ocmVtb3ZlR3V0dGVyTWFya2VyKSwKKyAgICAgIHNldExpbmVDbGFzczogb3BlcmF0aW9u
KHNldExpbmVDbGFzcyksCisgICAgICBoaWRlTGluZTogb3BlcmF0aW9uKGZ1bmN0aW9uKGgpIHty
ZXR1cm4gc2V0TGluZUhpZGRlbihoLCB0cnVlKTt9KSwKKyAgICAgIHNob3dMaW5lOiBvcGVyYXRp
b24oZnVuY3Rpb24oaCkge3JldHVybiBzZXRMaW5lSGlkZGVuKGgsIGZhbHNlKTt9KSwKKyAgICAg
IG9uRGVsZXRlTGluZTogZnVuY3Rpb24obGluZSwgZikgeworICAgICAgICBpZiAodHlwZW9mIGxp
bmUgPT0gIm51bWJlciIpIHsKKyAgICAgICAgICBpZiAoIWlzTGluZShsaW5lKSkgcmV0dXJuIG51
bGw7CisgICAgICAgICAgbGluZSA9IGdldExpbmUobGluZSk7CisgICAgICAgIH0KKyAgICAgICAg
KGxpbmUuaGFuZGxlcnMgfHwgKGxpbmUuaGFuZGxlcnMgPSBbXSkpLnB1c2goZik7CisgICAgICAg
IHJldHVybiBsaW5lOworICAgICAgfSwKKyAgICAgIGxpbmVJbmZvOiBsaW5lSW5mbywKKyAgICAg
IGFkZFdpZGdldDogZnVuY3Rpb24ocG9zLCBub2RlLCBzY3JvbGwsIHZlcnQsIGhvcml6KSB7Cisg
ICAgICAgIHBvcyA9IGxvY2FsQ29vcmRzKGNsaXBQb3MocG9zKSk7CisgICAgICAgIHZhciB0b3Ag
PSBwb3MueUJvdCwgbGVmdCA9IHBvcy54OworICAgICAgICBub2RlLnN0eWxlLnBvc2l0aW9uID0g
ImFic29sdXRlIjsKKyAgICAgICAgc2l6ZXIuYXBwZW5kQ2hpbGQobm9kZSk7CisgICAgICAgIGlm
ICh2ZXJ0ID09ICJvdmVyIikgdG9wID0gcG9zLnk7CisgICAgICAgIGVsc2UgaWYgKHZlcnQgPT0g
Im5lYXIiKSB7CisgICAgICAgICAgdmFyIHZzcGFjZSA9IE1hdGgubWF4KHNjcm9sbGVyLm9mZnNl
dEhlaWdodCwgZG9jLmhlaWdodCAqIHRleHRIZWlnaHQoKSksCisgICAgICAgICAgICAgIGhzcGFj
ZSA9IE1hdGgubWF4KHNpemVyLmNsaWVudFdpZHRoLCBsaW5lU3BhY2UuY2xpZW50V2lkdGgpIC0g
cGFkZGluZ0xlZnQoKTsKKyAgICAgICAgICBpZiAocG9zLnlCb3QgKyBub2RlLm9mZnNldEhlaWdo
dCA+IHZzcGFjZSAmJiBwb3MueSA+IG5vZGUub2Zmc2V0SGVpZ2h0KQorICAgICAgICAgICAgdG9w
ID0gcG9zLnkgLSBub2RlLm9mZnNldEhlaWdodDsKKyAgICAgICAgICBpZiAobGVmdCArIG5vZGUu
b2Zmc2V0V2lkdGggPiBoc3BhY2UpCisgICAgICAgICAgICBsZWZ0ID0gaHNwYWNlIC0gbm9kZS5v
ZmZzZXRXaWR0aDsKKyAgICAgICAgfQorICAgICAgICBub2RlLnN0eWxlLnRvcCA9ICh0b3AgKyBw
YWRkaW5nVG9wKCkpICsgInB4IjsKKyAgICAgICAgbm9kZS5zdHlsZS5sZWZ0ID0gbm9kZS5zdHls
ZS5yaWdodCA9ICIiOworICAgICAgICBpZiAoaG9yaXogPT0gInJpZ2h0IikgeworICAgICAgICAg
IGxlZnQgPSBzaXplci5jbGllbnRXaWR0aCAtIG5vZGUub2Zmc2V0V2lkdGg7CisgICAgICAgICAg
bm9kZS5zdHlsZS5yaWdodCA9ICIwcHgiOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGlm
IChob3JpeiA9PSAibGVmdCIpIGxlZnQgPSAwOworICAgICAgICAgIGVsc2UgaWYgKGhvcml6ID09
ICJtaWRkbGUiKSBsZWZ0ID0gKHNpemVyLmNsaWVudFdpZHRoIC0gbm9kZS5vZmZzZXRXaWR0aCkg
LyAyOworICAgICAgICAgIG5vZGUuc3R5bGUubGVmdCA9IChsZWZ0ICsgcGFkZGluZ0xlZnQoKSkg
KyAicHgiOworICAgICAgICB9CisgICAgICAgIGlmIChzY3JvbGwpCisgICAgICAgICAgc2Nyb2xs
SW50b1ZpZXcobGVmdCwgdG9wLCBsZWZ0ICsgbm9kZS5vZmZzZXRXaWR0aCwgdG9wICsgbm9kZS5v
ZmZzZXRIZWlnaHQpOworICAgICAgfSwKKworICAgICAgbGluZUNvdW50OiBmdW5jdGlvbigpIHty
ZXR1cm4gZG9jLnNpemU7fSwKKyAgICAgIGNsaXBQb3M6IGNsaXBQb3MsCisgICAgICBnZXRDdXJz
b3I6IGZ1bmN0aW9uKHN0YXJ0KSB7CisgICAgICAgIGlmIChzdGFydCA9PSBudWxsKSBzdGFydCA9
IHNlbC5pbnZlcnRlZDsKKyAgICAgICAgcmV0dXJuIGNvcHlQb3Moc3RhcnQgPyBzZWwuZnJvbSA6
IHNlbC50byk7CisgICAgICB9LAorICAgICAgc29tZXRoaW5nU2VsZWN0ZWQ6IGZ1bmN0aW9uKCkg
e3JldHVybiAhcG9zRXEoc2VsLmZyb20sIHNlbC50byk7fSwKKyAgICAgIHNldEN1cnNvcjogb3Bl
cmF0aW9uKGZ1bmN0aW9uKGxpbmUsIGNoLCB1c2VyKSB7CisgICAgICAgIGlmIChjaCA9PSBudWxs
ICYmIHR5cGVvZiBsaW5lLmxpbmUgPT0gIm51bWJlciIpIHNldEN1cnNvcihsaW5lLmxpbmUsIGxp
bmUuY2gsIHVzZXIpOworICAgICAgICBlbHNlIHNldEN1cnNvcihsaW5lLCBjaCwgdXNlcik7Cisg
ICAgICB9KSwKKyAgICAgIHNldFNlbGVjdGlvbjogb3BlcmF0aW9uKGZ1bmN0aW9uKGZyb20sIHRv
LCB1c2VyKSB7CisgICAgICAgICh1c2VyID8gc2V0U2VsZWN0aW9uVXNlciA6IHNldFNlbGVjdGlv
bikoY2xpcFBvcyhmcm9tKSwgY2xpcFBvcyh0byB8fCBmcm9tKSk7CisgICAgICB9KSwKKyAgICAg
IGdldExpbmU6IGZ1bmN0aW9uKGxpbmUpIHtpZiAoaXNMaW5lKGxpbmUpKSByZXR1cm4gZ2V0TGlu
ZShsaW5lKS50ZXh0O30sCisgICAgICBnZXRMaW5lSGFuZGxlOiBmdW5jdGlvbihsaW5lKSB7aWYg
KGlzTGluZShsaW5lKSkgcmV0dXJuIGdldExpbmUobGluZSk7fSwKKyAgICAgIHNldExpbmU6IG9w
ZXJhdGlvbihmdW5jdGlvbihsaW5lLCB0ZXh0KSB7CisgICAgICAgIGlmIChpc0xpbmUobGluZSkp
IHJlcGxhY2VSYW5nZSh0ZXh0LCB7bGluZTogbGluZSwgY2g6IDB9LCB7bGluZTogbGluZSwgY2g6
IGdldExpbmUobGluZSkudGV4dC5sZW5ndGh9KTsKKyAgICAgIH0pLAorICAgICAgcmVtb3ZlTGlu
ZTogb3BlcmF0aW9uKGZ1bmN0aW9uKGxpbmUpIHsKKyAgICAgICAgaWYgKGlzTGluZShsaW5lKSkg
cmVwbGFjZVJhbmdlKCIiLCB7bGluZTogbGluZSwgY2g6IDB9LCBjbGlwUG9zKHtsaW5lOiBsaW5l
KzEsIGNoOiAwfSkpOworICAgICAgfSksCisgICAgICByZXBsYWNlUmFuZ2U6IG9wZXJhdGlvbihy
ZXBsYWNlUmFuZ2UpLAorICAgICAgZ2V0UmFuZ2U6IGZ1bmN0aW9uKGZyb20sIHRvLCBsaW5lU2Vw
KSB7cmV0dXJuIGdldFJhbmdlKGNsaXBQb3MoZnJvbSksIGNsaXBQb3ModG8pLCBsaW5lU2VwKTt9
LAorCisgICAgICB0cmlnZ2VyT25LZXlEb3duOiBvcGVyYXRpb24ob25LZXlEb3duKSwKKyAgICAg
IGV4ZWNDb21tYW5kOiBmdW5jdGlvbihjbWQpIHtyZXR1cm4gY29tbWFuZHNbY21kXShpbnN0YW5j
ZSk7fSwKKyAgICAgIC8vIFN0dWZmIHVzZWQgYnkgY29tbWFuZHMsIHByb2JhYmx5IG5vdCBtdWNo
IHVzZSB0byBvdXRzaWRlIGNvZGUuCisgICAgICBtb3ZlSDogb3BlcmF0aW9uKG1vdmVIKSwKKyAg
ICAgIGRlbGV0ZUg6IG9wZXJhdGlvbihkZWxldGVIKSwKKyAgICAgIG1vdmVWOiBvcGVyYXRpb24o
bW92ZVYpLAorICAgICAgdG9nZ2xlT3ZlcndyaXRlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYo
b3ZlcndyaXRlKXsKKyAgICAgICAgICBvdmVyd3JpdGUgPSBmYWxzZTsKKyAgICAgICAgICBjdXJz
b3IuY2xhc3NOYW1lID0gY3Vyc29yLmNsYXNzTmFtZS5yZXBsYWNlKCIgQ29kZU1pcnJvci1vdmVy
d3JpdGUiLCAiIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgb3ZlcndyaXRlID0gdHJ1
ZTsKKyAgICAgICAgICBjdXJzb3IuY2xhc3NOYW1lICs9ICIgQ29kZU1pcnJvci1vdmVyd3JpdGUi
OworICAgICAgICB9CisgICAgICB9LAorCisgICAgICBwb3NGcm9tSW5kZXg6IGZ1bmN0aW9uKG9m
ZikgeworICAgICAgICB2YXIgbGluZU5vID0gMCwgY2g7CisgICAgICAgIGRvYy5pdGVyKDAsIGRv
Yy5zaXplLCBmdW5jdGlvbihsaW5lKSB7CisgICAgICAgICAgdmFyIHN6ID0gbGluZS50ZXh0Lmxl
bmd0aCArIDE7CisgICAgICAgICAgaWYgKHN6ID4gb2ZmKSB7IGNoID0gb2ZmOyByZXR1cm4gdHJ1
ZTsgfQorICAgICAgICAgIG9mZiAtPSBzejsKKyAgICAgICAgICArK2xpbmVObzsKKyAgICAgICAg
fSk7CisgICAgICAgIHJldHVybiBjbGlwUG9zKHtsaW5lOiBsaW5lTm8sIGNoOiBjaH0pOworICAg
ICAgfSwKKyAgICAgIGluZGV4RnJvbVBvczogZnVuY3Rpb24gKGNvb3JkcykgeworICAgICAgICBp
ZiAoY29vcmRzLmxpbmUgPCAwIHx8IGNvb3Jkcy5jaCA8IDApIHJldHVybiAwOworICAgICAgICB2
YXIgaW5kZXggPSBjb29yZHMuY2g7CisgICAgICAgIGRvYy5pdGVyKDAsIGNvb3Jkcy5saW5lLCBm
dW5jdGlvbiAobGluZSkgeworICAgICAgICAgIGluZGV4ICs9IGxpbmUudGV4dC5sZW5ndGggKyAx
OworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIGluZGV4OworICAgICAgfSwKKyAgICAgIHNj
cm9sbFRvOiBmdW5jdGlvbih4LCB5KSB7CisgICAgICAgIGlmICh4ICE9IG51bGwpIHNjcm9sbGVy
LnNjcm9sbExlZnQgPSB4OworICAgICAgICBpZiAoeSAhPSBudWxsKSBzY3JvbGxiYXIuc2Nyb2xs
VG9wID0gc2Nyb2xsZXIuc2Nyb2xsVG9wID0geTsKKyAgICAgICAgdXBkYXRlRGlzcGxheShbXSk7
CisgICAgICB9LAorICAgICAgZ2V0U2Nyb2xsSW5mbzogZnVuY3Rpb24oKSB7CisgICAgICAgIHJl
dHVybiB7eDogc2Nyb2xsZXIuc2Nyb2xsTGVmdCwgeTogc2Nyb2xsYmFyLnNjcm9sbFRvcCwKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IHNjcm9sbGJhci5zY3JvbGxIZWlnaHQsIHdpZHRoOiBzY3Jv
bGxlci5zY3JvbGxXaWR0aH07CisgICAgICB9LAorICAgICAgc2V0U2l6ZTogZnVuY3Rpb24od2lk
dGgsIGhlaWdodCkgeworICAgICAgICBmdW5jdGlvbiBpbnRlcnByZXQodmFsKSB7CisgICAgICAg
ICAgdmFsID0gU3RyaW5nKHZhbCk7CisgICAgICAgICAgcmV0dXJuIC9eXGQrJC8udGVzdCh2YWwp
ID8gdmFsICsgInB4IiA6IHZhbDsKKyAgICAgICAgfQorICAgICAgICBpZiAod2lkdGggIT0gbnVs
bCkgd3JhcHBlci5zdHlsZS53aWR0aCA9IGludGVycHJldCh3aWR0aCk7CisgICAgICAgIGlmICho
ZWlnaHQgIT0gbnVsbCkgc2Nyb2xsZXIuc3R5bGUuaGVpZ2h0ID0gaW50ZXJwcmV0KGhlaWdodCk7
CisgICAgICAgIGluc3RhbmNlLnJlZnJlc2goKTsKKyAgICAgIH0sCisKKyAgICAgIG9wZXJhdGlv
bjogZnVuY3Rpb24oZil7cmV0dXJuIG9wZXJhdGlvbihmKSgpO30sCisgICAgICBjb21wb3VuZENo
YW5nZTogZnVuY3Rpb24oZil7cmV0dXJuIGNvbXBvdW5kQ2hhbmdlKGYpO30sCisgICAgICByZWZy
ZXNoOiBmdW5jdGlvbigpeworICAgICAgICB1cGRhdGVEaXNwbGF5KHRydWUsIG51bGwsIGxhc3RT
Y3JvbGxUb3ApOworICAgICAgICBpZiAoc2Nyb2xsYmFyLnNjcm9sbEhlaWdodCA+IGxhc3RTY3Jv
bGxUb3ApCisgICAgICAgICAgc2Nyb2xsYmFyLnNjcm9sbFRvcCA9IGxhc3RTY3JvbGxUb3A7Cisg
ICAgICB9LAorICAgICAgZ2V0SW5wdXRGaWVsZDogZnVuY3Rpb24oKXtyZXR1cm4gaW5wdXQ7fSwK
KyAgICAgIGdldFdyYXBwZXJFbGVtZW50OiBmdW5jdGlvbigpe3JldHVybiB3cmFwcGVyO30sCisg
ICAgICBnZXRTY3JvbGxlckVsZW1lbnQ6IGZ1bmN0aW9uKCl7cmV0dXJuIHNjcm9sbGVyO30sCisg
ICAgICBnZXRHdXR0ZXJFbGVtZW50OiBmdW5jdGlvbigpe3JldHVybiBndXR0ZXI7fQorICAgIH07
CisKKyAgICBmdW5jdGlvbiBnZXRMaW5lKG4pIHsgcmV0dXJuIGdldExpbmVBdChkb2MsIG4pOyB9
CisgICAgZnVuY3Rpb24gdXBkYXRlTGluZUhlaWdodChsaW5lLCBoZWlnaHQpIHsKKyAgICAgIGd1
dHRlckRpcnR5ID0gdHJ1ZTsKKyAgICAgIHZhciBkaWZmID0gaGVpZ2h0IC0gbGluZS5oZWlnaHQ7
CisgICAgICBmb3IgKHZhciBuID0gbGluZTsgbjsgbiA9IG4ucGFyZW50KSBuLmhlaWdodCArPSBk
aWZmOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNldFZhbHVlKGNvZGUpIHsKKyAgICAgIHZhciB0
b3AgPSB7bGluZTogMCwgY2g6IDB9OworICAgICAgdXBkYXRlTGluZXModG9wLCB7bGluZTogZG9j
LnNpemUgLSAxLCBjaDogZ2V0TGluZShkb2Muc2l6ZS0xKS50ZXh0Lmxlbmd0aH0sCisgICAgICAg
ICAgICAgICAgICBzcGxpdExpbmVzKGNvZGUpLCB0b3AsIHRvcCk7CisgICAgICB1cGRhdGVJbnB1
dCA9IHRydWU7CisgICAgfQorICAgIGZ1bmN0aW9uIGdldFZhbHVlKGxpbmVTZXApIHsKKyAgICAg
IHZhciB0ZXh0ID0gW107CisgICAgICBkb2MuaXRlcigwLCBkb2Muc2l6ZSwgZnVuY3Rpb24obGlu
ZSkgeyB0ZXh0LnB1c2gobGluZS50ZXh0KTsgfSk7CisgICAgICByZXR1cm4gdGV4dC5qb2luKGxp
bmVTZXAgfHwgIlxuIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gb25TY3JvbGxCYXIoZSkgewor
ICAgICAgaWYgKHNjcm9sbGJhci5zY3JvbGxUb3AgIT0gbGFzdFNjcm9sbFRvcCkgeworICAgICAg
ICBsYXN0U2Nyb2xsVG9wID0gc2Nyb2xsZXIuc2Nyb2xsVG9wID0gc2Nyb2xsYmFyLnNjcm9sbFRv
cDsKKyAgICAgICAgdXBkYXRlRGlzcGxheShbXSk7CisgICAgICB9CisgICAgfQorCisgICAgZnVu
Y3Rpb24gb25TY3JvbGxNYWluKGUpIHsKKyAgICAgIGlmIChvcHRpb25zLmZpeGVkR3V0dGVyICYm
IGd1dHRlci5zdHlsZS5sZWZ0ICE9IHNjcm9sbGVyLnNjcm9sbExlZnQgKyAicHgiKQorICAgICAg
ICBndXR0ZXIuc3R5bGUubGVmdCA9IHNjcm9sbGVyLnNjcm9sbExlZnQgKyAicHgiOworICAgICAg
aWYgKHNjcm9sbGVyLnNjcm9sbFRvcCAhPSBsYXN0U2Nyb2xsVG9wKSB7CisgICAgICAgIGxhc3RT
Y3JvbGxUb3AgPSBzY3JvbGxlci5zY3JvbGxUb3A7CisgICAgICAgIGlmIChzY3JvbGxiYXIuc2Ny
b2xsVG9wICE9IGxhc3RTY3JvbGxUb3ApCisgICAgICAgICAgc2Nyb2xsYmFyLnNjcm9sbFRvcCA9
IGxhc3RTY3JvbGxUb3A7CisgICAgICAgIHVwZGF0ZURpc3BsYXkoW10pOworICAgICAgfQorICAg
ICAgaWYgKG9wdGlvbnMub25TY3JvbGwpIG9wdGlvbnMub25TY3JvbGwoaW5zdGFuY2UpOworICAg
IH0KKworICAgIGZ1bmN0aW9uIG9uTW91c2VEb3duKGUpIHsKKyAgICAgIHNldFNoaWZ0KGVfcHJv
cChlLCAic2hpZnRLZXkiKSk7CisgICAgICAvLyBDaGVjayB3aGV0aGVyIHRoaXMgaXMgYSBjbGlj
ayBpbiBhIHdpZGdldAorICAgICAgZm9yICh2YXIgbiA9IGVfdGFyZ2V0KGUpOyBuICE9IHdyYXBw
ZXI7IG4gPSBuLnBhcmVudE5vZGUpCisgICAgICAgIGlmIChuLnBhcmVudE5vZGUgPT0gc2l6ZXIg
JiYgbiAhPSBtb3ZlcikgcmV0dXJuOworCisgICAgICAvLyBTZWUgaWYgdGhpcyBpcyBhIGNsaWNr
IGluIHRoZSBndXR0ZXIKKyAgICAgIGZvciAodmFyIG4gPSBlX3RhcmdldChlKTsgbiAhPSB3cmFw
cGVyOyBuID0gbi5wYXJlbnROb2RlKQorICAgICAgICBpZiAobi5wYXJlbnROb2RlID09IGd1dHRl
clRleHQpIHsKKyAgICAgICAgICBpZiAob3B0aW9ucy5vbkd1dHRlckNsaWNrKQorICAgICAgICAg
ICAgb3B0aW9ucy5vbkd1dHRlckNsaWNrKGluc3RhbmNlLCBpbmRleE9mKGd1dHRlclRleHQuY2hp
bGROb2RlcywgbikgKyBzaG93aW5nRnJvbSwgZSk7CisgICAgICAgICAgcmV0dXJuIGVfcHJldmVu
dERlZmF1bHQoZSk7CisgICAgICAgIH0KKworICAgICAgdmFyIHN0YXJ0ID0gcG9zRnJvbU1vdXNl
KGUpOworCisgICAgICBzd2l0Y2ggKGVfYnV0dG9uKGUpKSB7CisgICAgICBjYXNlIDM6CisgICAg
ICAgIGlmIChnZWNrbykgb25Db250ZXh0TWVudShlKTsKKyAgICAgICAgcmV0dXJuOworICAgICAg
Y2FzZSAyOgorICAgICAgICBpZiAoc3RhcnQpIHNldEN1cnNvcihzdGFydC5saW5lLCBzdGFydC5j
aCwgdHJ1ZSk7CisgICAgICAgIHNldFRpbWVvdXQoZm9jdXNJbnB1dCwgMjApOworICAgICAgICBl
X3ByZXZlbnREZWZhdWx0KGUpOworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgICAvLyBG
b3IgYnV0dG9uIDEsIGlmIGl0IHdhcyBjbGlja2VkIGluc2lkZSB0aGUgZWRpdG9yCisgICAgICAv
LyAocG9zRnJvbU1vdXNlIHJldHVybmluZyBub24tbnVsbCksIHdlIGhhdmUgdG8gYWRqdXN0IHRo
ZQorICAgICAgLy8gc2VsZWN0aW9uLgorICAgICAgaWYgKCFzdGFydCkge2lmIChlX3RhcmdldChl
KSA9PSBzY3JvbGxlcikgZV9wcmV2ZW50RGVmYXVsdChlKTsgcmV0dXJuO30KKworICAgICAgaWYg
KCFmb2N1c2VkKSBvbkZvY3VzKCk7CisKKyAgICAgIHZhciBub3cgPSArbmV3IERhdGUsIHR5cGUg
PSAic2luZ2xlIjsKKyAgICAgIGlmIChsYXN0RG91YmxlQ2xpY2sgJiYgbGFzdERvdWJsZUNsaWNr
LnRpbWUgPiBub3cgLSA0MDAgJiYgcG9zRXEobGFzdERvdWJsZUNsaWNrLnBvcywgc3RhcnQpKSB7
CisgICAgICAgIHR5cGUgPSAidHJpcGxlIjsKKyAgICAgICAgZV9wcmV2ZW50RGVmYXVsdChlKTsK
KyAgICAgICAgc2V0VGltZW91dChmb2N1c0lucHV0LCAyMCk7CisgICAgICAgIHNlbGVjdExpbmUo
c3RhcnQubGluZSk7CisgICAgICB9IGVsc2UgaWYgKGxhc3RDbGljayAmJiBsYXN0Q2xpY2sudGlt
ZSA+IG5vdyAtIDQwMCAmJiBwb3NFcShsYXN0Q2xpY2sucG9zLCBzdGFydCkpIHsKKyAgICAgICAg
dHlwZSA9ICJkb3VibGUiOworICAgICAgICBsYXN0RG91YmxlQ2xpY2sgPSB7dGltZTogbm93LCBw
b3M6IHN0YXJ0fTsKKyAgICAgICAgZV9wcmV2ZW50RGVmYXVsdChlKTsKKyAgICAgICAgdmFyIHdv
cmQgPSBmaW5kV29yZEF0KHN0YXJ0KTsKKyAgICAgICAgc2V0U2VsZWN0aW9uVXNlcih3b3JkLmZy
b20sIHdvcmQudG8pOworICAgICAgfSBlbHNlIHsgbGFzdENsaWNrID0ge3RpbWU6IG5vdywgcG9z
OiBzdGFydH07IH0KKworICAgICAgZnVuY3Rpb24gZHJhZ0VuZChlMikgeworICAgICAgICBpZiAo
d2Via2l0KSBzY3JvbGxlci5kcmFnZ2FibGUgPSBmYWxzZTsKKyAgICAgICAgZHJhZ2dpbmdUZXh0
ID0gZmFsc2U7CisgICAgICAgIHVwKCk7IGRyb3AoKTsKKyAgICAgICAgaWYgKE1hdGguYWJzKGUu
Y2xpZW50WCAtIGUyLmNsaWVudFgpICsgTWF0aC5hYnMoZS5jbGllbnRZIC0gZTIuY2xpZW50WSkg
PCAxMCkgeworICAgICAgICAgIGVfcHJldmVudERlZmF1bHQoZTIpOworICAgICAgICAgIHNldEN1
cnNvcihzdGFydC5saW5lLCBzdGFydC5jaCwgdHJ1ZSk7CisgICAgICAgICAgZm9jdXNJbnB1dCgp
OworICAgICAgICB9CisgICAgICB9CisgICAgICB2YXIgbGFzdCA9IHN0YXJ0LCBnb2luZzsKKyAg
ICAgIGlmIChvcHRpb25zLmRyYWdEcm9wICYmIGRyYWdBbmREcm9wICYmICFvcHRpb25zLnJlYWRP
bmx5ICYmICFwb3NFcShzZWwuZnJvbSwgc2VsLnRvKSAmJgorICAgICAgICAgICFwb3NMZXNzKHN0
YXJ0LCBzZWwuZnJvbSkgJiYgIXBvc0xlc3Moc2VsLnRvLCBzdGFydCkgJiYgdHlwZSA9PSAic2lu
Z2xlIikgeworICAgICAgICAvLyBMZXQgdGhlIGRyYWcgaGFuZGxlciBoYW5kbGUgdGhpcy4KKyAg
ICAgICAgaWYgKHdlYmtpdCkgc2Nyb2xsZXIuZHJhZ2dhYmxlID0gdHJ1ZTsKKyAgICAgICAgdmFy
IHVwID0gY29ubmVjdChkb2N1bWVudCwgIm1vdXNldXAiLCBvcGVyYXRpb24oZHJhZ0VuZCksIHRy
dWUpOworICAgICAgICB2YXIgZHJvcCA9IGNvbm5lY3Qoc2Nyb2xsZXIsICJkcm9wIiwgb3BlcmF0
aW9uKGRyYWdFbmQpLCB0cnVlKTsKKyAgICAgICAgZHJhZ2dpbmdUZXh0ID0gdHJ1ZTsKKyAgICAg
ICAgLy8gSUUncyBhcHByb2FjaCB0byBkcmFnZ2FibGUKKyAgICAgICAgaWYgKHNjcm9sbGVyLmRy
YWdEcm9wKSBzY3JvbGxlci5kcmFnRHJvcCgpOworICAgICAgICByZXR1cm47CisgICAgICB9Cisg
ICAgICBlX3ByZXZlbnREZWZhdWx0KGUpOworICAgICAgaWYgKHR5cGUgPT0gInNpbmdsZSIpIHNl
dEN1cnNvcihzdGFydC5saW5lLCBzdGFydC5jaCwgdHJ1ZSk7CisKKyAgICAgIHZhciBzdGFydHN0
YXJ0ID0gc2VsLmZyb20sIHN0YXJ0ZW5kID0gc2VsLnRvOworCisgICAgICBmdW5jdGlvbiBkb1Nl
bGVjdChjdXIpIHsKKyAgICAgICAgaWYgKHR5cGUgPT0gInNpbmdsZSIpIHsKKyAgICAgICAgICBz
ZXRTZWxlY3Rpb25Vc2VyKHN0YXJ0LCBjdXIpOworICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0g
ImRvdWJsZSIpIHsKKyAgICAgICAgICB2YXIgd29yZCA9IGZpbmRXb3JkQXQoY3VyKTsKKyAgICAg
ICAgICBpZiAocG9zTGVzcyhjdXIsIHN0YXJ0c3RhcnQpKSBzZXRTZWxlY3Rpb25Vc2VyKHdvcmQu
ZnJvbSwgc3RhcnRlbmQpOworICAgICAgICAgIGVsc2Ugc2V0U2VsZWN0aW9uVXNlcihzdGFydHN0
YXJ0LCB3b3JkLnRvKTsKKyAgICAgICAgfSBlbHNlIGlmICh0eXBlID09ICJ0cmlwbGUiKSB7Cisg
ICAgICAgICAgaWYgKHBvc0xlc3MoY3VyLCBzdGFydHN0YXJ0KSkgc2V0U2VsZWN0aW9uVXNlcihz
dGFydGVuZCwgY2xpcFBvcyh7bGluZTogY3VyLmxpbmUsIGNoOiAwfSkpOworICAgICAgICAgIGVs
c2Ugc2V0U2VsZWN0aW9uVXNlcihzdGFydHN0YXJ0LCBjbGlwUG9zKHtsaW5lOiBjdXIubGluZSAr
IDEsIGNoOiAwfSkpOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIGV4dGVu
ZChlKSB7CisgICAgICAgIHZhciBjdXIgPSBwb3NGcm9tTW91c2UoZSwgdHJ1ZSk7CisgICAgICAg
IGlmIChjdXIgJiYgIXBvc0VxKGN1ciwgbGFzdCkpIHsKKyAgICAgICAgICBpZiAoIWZvY3VzZWQp
IG9uRm9jdXMoKTsKKyAgICAgICAgICBsYXN0ID0gY3VyOworICAgICAgICAgIGRvU2VsZWN0KGN1
cik7CisgICAgICAgICAgdXBkYXRlSW5wdXQgPSBmYWxzZTsKKyAgICAgICAgICB2YXIgdmlzaWJs
ZSA9IHZpc2libGVMaW5lcygpOworICAgICAgICAgIGlmIChjdXIubGluZSA+PSB2aXNpYmxlLnRv
IHx8IGN1ci5saW5lIDwgdmlzaWJsZS5mcm9tKQorICAgICAgICAgICAgZ29pbmcgPSBzZXRUaW1l
b3V0KG9wZXJhdGlvbihmdW5jdGlvbigpe2V4dGVuZChlKTt9KSwgMTUwKTsKKyAgICAgICAgfQor
ICAgICAgfQorCisgICAgICBmdW5jdGlvbiBkb25lKGUpIHsKKyAgICAgICAgY2xlYXJUaW1lb3V0
KGdvaW5nKTsKKyAgICAgICAgdmFyIGN1ciA9IHBvc0Zyb21Nb3VzZShlKTsKKyAgICAgICAgaWYg
KGN1cikgZG9TZWxlY3QoY3VyKTsKKyAgICAgICAgZV9wcmV2ZW50RGVmYXVsdChlKTsKKyAgICAg
ICAgZm9jdXNJbnB1dCgpOworICAgICAgICB1cGRhdGVJbnB1dCA9IHRydWU7CisgICAgICAgIG1v
dmUoKTsgdXAoKTsKKyAgICAgIH0KKyAgICAgIHZhciBtb3ZlID0gY29ubmVjdChkb2N1bWVudCwg
Im1vdXNlbW92ZSIsIG9wZXJhdGlvbihmdW5jdGlvbihlKSB7CisgICAgICAgIGNsZWFyVGltZW91
dChnb2luZyk7CisgICAgICAgIGVfcHJldmVudERlZmF1bHQoZSk7CisgICAgICAgIGlmICghaWUg
JiYgIWVfYnV0dG9uKGUpKSBkb25lKGUpOworICAgICAgICBlbHNlIGV4dGVuZChlKTsKKyAgICAg
IH0pLCB0cnVlKTsKKyAgICAgIHZhciB1cCA9IGNvbm5lY3QoZG9jdW1lbnQsICJtb3VzZXVwIiwg
b3BlcmF0aW9uKGRvbmUpLCB0cnVlKTsKKyAgICB9CisgICAgZnVuY3Rpb24gb25Eb3VibGVDbGlj
ayhlKSB7CisgICAgICBmb3IgKHZhciBuID0gZV90YXJnZXQoZSk7IG4gIT0gd3JhcHBlcjsgbiA9
IG4ucGFyZW50Tm9kZSkKKyAgICAgICAgaWYgKG4ucGFyZW50Tm9kZSA9PSBndXR0ZXJUZXh0KSBy
ZXR1cm4gZV9wcmV2ZW50RGVmYXVsdChlKTsKKyAgICAgIGVfcHJldmVudERlZmF1bHQoZSk7Cisg
ICAgfQorICAgIGZ1bmN0aW9uIG9uRHJvcChlKSB7CisgICAgICBpZiAob3B0aW9ucy5vbkRyYWdF
dmVudCAmJiBvcHRpb25zLm9uRHJhZ0V2ZW50KGluc3RhbmNlLCBhZGRTdG9wKGUpKSkgcmV0dXJu
OworICAgICAgZV9wcmV2ZW50RGVmYXVsdChlKTsKKyAgICAgIHZhciBwb3MgPSBwb3NGcm9tTW91
c2UoZSwgdHJ1ZSksIGZpbGVzID0gZS5kYXRhVHJhbnNmZXIuZmlsZXM7CisgICAgICBpZiAoIXBv
cyB8fCBvcHRpb25zLnJlYWRPbmx5KSByZXR1cm47CisgICAgICBpZiAoZmlsZXMgJiYgZmlsZXMu
bGVuZ3RoICYmIHdpbmRvdy5GaWxlUmVhZGVyICYmIHdpbmRvdy5GaWxlKSB7CisgICAgICAgIHZh
ciBuID0gZmlsZXMubGVuZ3RoLCB0ZXh0ID0gQXJyYXkobiksIHJlYWQgPSAwOworICAgICAgICB2
YXIgbG9hZEZpbGUgPSBmdW5jdGlvbihmaWxlLCBpKSB7CisgICAgICAgICAgdmFyIHJlYWRlciA9
IG5ldyBGaWxlUmVhZGVyOworICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIHRleHRbaV0gPSByZWFkZXIucmVzdWx0OworICAgICAgICAgICAgaWYgKCsr
cmVhZCA9PSBuKSB7CisgICAgICAgICAgICAgIHBvcyA9IGNsaXBQb3MocG9zKTsKKyAgICAgICAg
ICAgICAgb3BlcmF0aW9uKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHZhciBlbmQgPSBy
ZXBsYWNlUmFuZ2UodGV4dC5qb2luKCIiKSwgcG9zLCBwb3MpOworICAgICAgICAgICAgICAgIHNl
dFNlbGVjdGlvblVzZXIocG9zLCBlbmQpOworICAgICAgICAgICAgICB9KSgpOworICAgICAgICAg
ICAgfQorICAgICAgICAgIH07CisgICAgICAgICAgcmVhZGVyLnJlYWRBc1RleHQoZmlsZSk7Cisg
ICAgICAgIH07CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSBsb2FkRmlsZShm
aWxlc1tpXSwgaSk7CisgICAgICB9IGVsc2UgeworICAgICAgICAvLyBEb24ndCBkbyBhIHJlcGxh
Y2UgaWYgdGhlIGRyb3AgaGFwcGVuZWQgaW5zaWRlIG9mIHRoZSBzZWxlY3RlZCB0ZXh0LgorICAg
ICAgICBpZiAoZHJhZ2dpbmdUZXh0ICYmICEocG9zTGVzcyhwb3MsIHNlbC5mcm9tKSB8fCBwb3NM
ZXNzKHNlbC50bywgcG9zKSkpIHJldHVybjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICB2YXIg
dGV4dCA9IGUuZGF0YVRyYW5zZmVyLmdldERhdGEoIlRleHQiKTsKKyAgICAgICAgICBpZiAodGV4
dCkgeworICAgICAgICAgICAgY29tcG91bmRDaGFuZ2UoZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgIHZhciBjdXJGcm9tID0gc2VsLmZyb20sIGN1clRvID0gc2VsLnRvOworICAgICAgICAgICAg
ICBzZXRTZWxlY3Rpb25Vc2VyKHBvcywgcG9zKTsKKyAgICAgICAgICAgICAgaWYgKGRyYWdnaW5n
VGV4dCkgcmVwbGFjZVJhbmdlKCIiLCBjdXJGcm9tLCBjdXJUbyk7CisgICAgICAgICAgICAgIHJl
cGxhY2VTZWxlY3Rpb24odGV4dCk7CisgICAgICAgICAgICAgIGZvY3VzSW5wdXQoKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXRjaChlKXt9Cisg
ICAgICB9CisgICAgfQorICAgIGZ1bmN0aW9uIG9uRHJhZ1N0YXJ0KGUpIHsKKyAgICAgIHZhciB0
eHQgPSBnZXRTZWxlY3Rpb24oKTsKKyAgICAgIGUuZGF0YVRyYW5zZmVyLnNldERhdGEoIlRleHQi
LCB0eHQpOworCisgICAgICAvLyBVc2UgZHVtbXkgaW1hZ2UgaW5zdGVhZCBvZiBkZWZhdWx0IGJy
b3dzZXJzIGltYWdlLgorICAgICAgaWYgKGdlY2tvIHx8IGNocm9tZSB8fCBvcGVyYSkgeworICAg
ICAgICB2YXIgaW1nID0gZWx0KCdpbWcnKTsKKyAgICAgICAgaW1nLnNjciA9ICdkYXRhOmltYWdl
L2dpZjtiYXNlNjQsUjBsR09EZGhBZ0FDQUlBQUFBQUFBUC8vL3l3QUFBQUFBZ0FDQUFBQ0FvUlJB
RHM9JzsgLy8xeDEgaW1hZ2UKKyAgICAgICAgZS5kYXRhVHJhbnNmZXIuc2V0RHJhZ0ltYWdlKGlt
ZywgMCwgMCk7CisgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gZG9IYW5kbGVCaW5kaW5n
KGJvdW5kLCBkcm9wU2hpZnQpIHsKKyAgICAgIGlmICh0eXBlb2YgYm91bmQgPT0gInN0cmluZyIp
IHsKKyAgICAgICAgYm91bmQgPSBjb21tYW5kc1tib3VuZF07CisgICAgICAgIGlmICghYm91bmQp
IHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICAgIHZhciBwcmV2U2hpZnQgPSBzaGlmdFNlbGVj
dGluZzsKKyAgICAgIHRyeSB7CisgICAgICAgIGlmIChvcHRpb25zLnJlYWRPbmx5KSBzdXBwcmVz
c0VkaXRzID0gdHJ1ZTsKKyAgICAgICAgaWYgKGRyb3BTaGlmdCkgc2hpZnRTZWxlY3RpbmcgPSBu
dWxsOworICAgICAgICBib3VuZChpbnN0YW5jZSk7CisgICAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgaWYgKGUgIT0gUGFzcykgdGhyb3cgZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
fSBmaW5hbGx5IHsKKyAgICAgICAgc2hpZnRTZWxlY3RpbmcgPSBwcmV2U2hpZnQ7CisgICAgICAg
IHN1cHByZXNzRWRpdHMgPSBmYWxzZTsKKyAgICAgIH0KKyAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICB2YXIgbWF5YmVUcmFuc2l0aW9uOworICAgIGZ1bmN0aW9uIGhhbmRsZUtleUJpbmRp
bmcoZSkgeworICAgICAgLy8gSGFuZGxlIGF1dG8ga2V5bWFwIHRyYW5zaXRpb25zCisgICAgICB2
YXIgc3RhcnRNYXAgPSBnZXRLZXlNYXAob3B0aW9ucy5rZXlNYXApLCBuZXh0ID0gc3RhcnRNYXAu
YXV0bzsKKyAgICAgIGNsZWFyVGltZW91dChtYXliZVRyYW5zaXRpb24pOworICAgICAgaWYgKG5l
eHQgJiYgIWlzTW9kaWZpZXJLZXkoZSkpIG1heWJlVHJhbnNpdGlvbiA9IHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7CisgICAgICAgIGlmIChnZXRLZXlNYXAob3B0aW9ucy5rZXlNYXApID09IHN0YXJ0
TWFwKSB7CisgICAgICAgICAgb3B0aW9ucy5rZXlNYXAgPSAobmV4dC5jYWxsID8gbmV4dC5jYWxs
KG51bGwsIGluc3RhbmNlKSA6IG5leHQpOworICAgICAgICB9CisgICAgICB9LCA1MCk7CisKKyAg
ICAgIHZhciBuYW1lID0ga2V5TmFtZXNbZV9wcm9wKGUsICJrZXlDb2RlIildLCBoYW5kbGVkID0g
ZmFsc2U7CisgICAgICBpZiAobmFtZSA9PSBudWxsIHx8IGUuYWx0R3JhcGhLZXkpIHJldHVybiBm
YWxzZTsKKyAgICAgIGlmIChlX3Byb3AoZSwgImFsdEtleSIpKSBuYW1lID0gIkFsdC0iICsgbmFt
ZTsKKyAgICAgIGlmIChlX3Byb3AoZSwgImN0cmxLZXkiKSkgbmFtZSA9ICJDdHJsLSIgKyBuYW1l
OworICAgICAgaWYgKGVfcHJvcChlLCAibWV0YUtleSIpKSBuYW1lID0gIkNtZC0iICsgbmFtZTsK
KworICAgICAgdmFyIHN0b3BwZWQgPSBmYWxzZTsKKyAgICAgIGZ1bmN0aW9uIHN0b3AoKSB7IHN0
b3BwZWQgPSB0cnVlOyB9CisKKyAgICAgIGlmIChlX3Byb3AoZSwgInNoaWZ0S2V5IikpIHsKKyAg
ICAgICAgaGFuZGxlZCA9IGxvb2t1cEtleSgiU2hpZnQtIiArIG5hbWUsIG9wdGlvbnMuZXh0cmFL
ZXlzLCBvcHRpb25zLmtleU1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlv
bihiKSB7cmV0dXJuIGRvSGFuZGxlQmluZGluZyhiLCB0cnVlKTt9LCBzdG9wKQorICAgICAgICAg
ICAgICAgfHwgbG9va3VwS2V5KG5hbWUsIG9wdGlvbnMuZXh0cmFLZXlzLCBvcHRpb25zLmtleU1h
cCwgZnVuY3Rpb24oYikgeworICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGIgPT0gInN0cmlu
ZyIgJiYgL15nb1tBLVpdLy50ZXN0KGIpKSByZXR1cm4gZG9IYW5kbGVCaW5kaW5nKGIpOworICAg
ICAgICAgICAgICAgfSwgc3RvcCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBoYW5kbGVkID0g
bG9va3VwS2V5KG5hbWUsIG9wdGlvbnMuZXh0cmFLZXlzLCBvcHRpb25zLmtleU1hcCwgZG9IYW5k
bGVCaW5kaW5nLCBzdG9wKTsKKyAgICAgIH0KKyAgICAgIGlmIChzdG9wcGVkKSBoYW5kbGVkID0g
ZmFsc2U7CisgICAgICBpZiAoaGFuZGxlZCkgeworICAgICAgICBlX3ByZXZlbnREZWZhdWx0KGUp
OworICAgICAgICByZXN0YXJ0QmxpbmsoKTsKKyAgICAgICAgaWYgKGllKSB7IGUub2xkS2V5Q29k
ZSA9IGUua2V5Q29kZTsgZS5rZXlDb2RlID0gMDsgfQorICAgICAgfQorICAgICAgcmV0dXJuIGhh
bmRsZWQ7CisgICAgfQorICAgIGZ1bmN0aW9uIGhhbmRsZUNoYXJCaW5kaW5nKGUsIGNoKSB7Cisg
ICAgICB2YXIgaGFuZGxlZCA9IGxvb2t1cEtleSgiJyIgKyBjaCArICInIiwgb3B0aW9ucy5leHRy
YUtleXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmtleU1hcCwgZnVu
Y3Rpb24oYikgeyByZXR1cm4gZG9IYW5kbGVCaW5kaW5nKGIsIHRydWUpOyB9KTsKKyAgICAgIGlm
IChoYW5kbGVkKSB7CisgICAgICAgIGVfcHJldmVudERlZmF1bHQoZSk7CisgICAgICAgIHJlc3Rh
cnRCbGluaygpOworICAgICAgfQorICAgICAgcmV0dXJuIGhhbmRsZWQ7CisgICAgfQorCisgICAg
dmFyIGxhc3RTdG9wcGVkS2V5ID0gbnVsbDsKKyAgICBmdW5jdGlvbiBvbktleURvd24oZSkgewor
ICAgICAgaWYgKCFmb2N1c2VkKSBvbkZvY3VzKCk7CisgICAgICBpZiAoaWUgJiYgZS5rZXlDb2Rl
ID09IDI3KSB7IGUucmV0dXJuVmFsdWUgPSBmYWxzZTsgfQorICAgICAgaWYgKHBvbGxpbmdGYXN0
KSB7IGlmIChyZWFkSW5wdXQoKSkgcG9sbGluZ0Zhc3QgPSBmYWxzZTsgfQorICAgICAgaWYgKG9w
dGlvbnMub25LZXlFdmVudCAmJiBvcHRpb25zLm9uS2V5RXZlbnQoaW5zdGFuY2UsIGFkZFN0b3Ao
ZSkpKSByZXR1cm47CisgICAgICB2YXIgY29kZSA9IGVfcHJvcChlLCAia2V5Q29kZSIpOworICAg
ICAgLy8gSUUgZG9lcyBzdHJhbmdlIHRoaW5ncyB3aXRoIGVzY2FwZS4KKyAgICAgIHNldFNoaWZ0
KGNvZGUgPT0gMTYgfHwgZV9wcm9wKGUsICJzaGlmdEtleSIpKTsKKyAgICAgIC8vIEZpcnN0IGdp
dmUgb25LZXlFdmVudCBvcHRpb24gYSBjaGFuY2UgdG8gaGFuZGxlIHRoaXMuCisgICAgICB2YXIg
aGFuZGxlZCA9IGhhbmRsZUtleUJpbmRpbmcoZSk7CisgICAgICBpZiAob3BlcmEpIHsKKyAgICAg
ICAgbGFzdFN0b3BwZWRLZXkgPSBoYW5kbGVkID8gY29kZSA6IG51bGw7CisgICAgICAgIC8vIE9w
ZXJhIGhhcyBubyBjdXQgZXZlbnQuLi4gd2UgdHJ5IHRvIGF0IGxlYXN0IGNhdGNoIHRoZSBrZXkg
Y29tYm8KKyAgICAgICAgaWYgKCFoYW5kbGVkICYmIGNvZGUgPT0gODggJiYgZV9wcm9wKGUsIG1h
YyA/ICJtZXRhS2V5IiA6ICJjdHJsS2V5IikpCisgICAgICAgICAgcmVwbGFjZVNlbGVjdGlvbigi
Iik7CisgICAgICB9CisgICAgfQorICAgIGZ1bmN0aW9uIG9uS2V5UHJlc3MoZSkgeworICAgICAg
aWYgKHBvbGxpbmdGYXN0KSByZWFkSW5wdXQoKTsKKyAgICAgIGlmIChvcHRpb25zLm9uS2V5RXZl
bnQgJiYgb3B0aW9ucy5vbktleUV2ZW50KGluc3RhbmNlLCBhZGRTdG9wKGUpKSkgcmV0dXJuOwor
ICAgICAgdmFyIGtleUNvZGUgPSBlX3Byb3AoZSwgImtleUNvZGUiKSwgY2hhckNvZGUgPSBlX3By
b3AoZSwgImNoYXJDb2RlIik7CisgICAgICBpZiAob3BlcmEgJiYga2V5Q29kZSA9PSBsYXN0U3Rv
cHBlZEtleSkge2xhc3RTdG9wcGVkS2V5ID0gbnVsbDsgZV9wcmV2ZW50RGVmYXVsdChlKTsgcmV0
dXJuO30KKyAgICAgIGlmICgoKG9wZXJhICYmICghZS53aGljaCB8fCBlLndoaWNoIDwgMTApKSB8
fCBraHRtbCkgJiYgaGFuZGxlS2V5QmluZGluZyhlKSkgcmV0dXJuOworICAgICAgdmFyIGNoID0g
U3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSA9PSBudWxsID8ga2V5Q29kZSA6IGNoYXJDb2Rl
KTsKKyAgICAgIGlmIChvcHRpb25zLmVsZWN0cmljQ2hhcnMgJiYgbW9kZS5lbGVjdHJpY0NoYXJz
ICYmIG9wdGlvbnMuc21hcnRJbmRlbnQgJiYgIW9wdGlvbnMucmVhZE9ubHkpIHsKKyAgICAgICAg
aWYgKG1vZGUuZWxlY3RyaWNDaGFycy5pbmRleE9mKGNoKSA+IC0xKQorICAgICAgICAgIHNldFRp
bWVvdXQob3BlcmF0aW9uKGZ1bmN0aW9uKCkge2luZGVudExpbmUoc2VsLnRvLmxpbmUsICJzbWFy
dCIpO30pLCA3NSk7CisgICAgICB9CisgICAgICBpZiAoaGFuZGxlQ2hhckJpbmRpbmcoZSwgY2gp
KSByZXR1cm47CisgICAgICBmYXN0UG9sbCgpOworICAgIH0KKyAgICBmdW5jdGlvbiBvbktleVVw
KGUpIHsKKyAgICAgIGlmIChvcHRpb25zLm9uS2V5RXZlbnQgJiYgb3B0aW9ucy5vbktleUV2ZW50
KGluc3RhbmNlLCBhZGRTdG9wKGUpKSkgcmV0dXJuOworICAgICAgaWYgKGVfcHJvcChlLCAia2V5
Q29kZSIpID09IDE2KSBzaGlmdFNlbGVjdGluZyA9IG51bGw7CisgICAgfQorCisgICAgZnVuY3Rp
b24gb25Gb2N1cygpIHsKKyAgICAgIGlmIChvcHRpb25zLnJlYWRPbmx5ID09ICJub2N1cnNvciIp
IHJldHVybjsKKyAgICAgIGlmICghZm9jdXNlZCkgeworICAgICAgICBpZiAob3B0aW9ucy5vbkZv
Y3VzKSBvcHRpb25zLm9uRm9jdXMoaW5zdGFuY2UpOworICAgICAgICBmb2N1c2VkID0gdHJ1ZTsK
KyAgICAgICAgaWYgKHNjcm9sbGVyLmNsYXNzTmFtZS5zZWFyY2goL1xiQ29kZU1pcnJvci1mb2N1
c2VkXGIvKSA9PSAtMSkKKyAgICAgICAgICBzY3JvbGxlci5jbGFzc05hbWUgKz0gIiBDb2RlTWly
cm9yLWZvY3VzZWQiOworICAgICAgICBpZiAoIWxlYXZlSW5wdXRBbG9uZSkgcmVzZXRJbnB1dCh0
cnVlKTsKKyAgICAgIH0KKyAgICAgIHNsb3dQb2xsKCk7CisgICAgICByZXN0YXJ0QmxpbmsoKTsK
KyAgICB9CisgICAgZnVuY3Rpb24gb25CbHVyKCkgeworICAgICAgaWYgKGZvY3VzZWQpIHsKKyAg
ICAgICAgaWYgKG9wdGlvbnMub25CbHVyKSBvcHRpb25zLm9uQmx1cihpbnN0YW5jZSk7CisgICAg
ICAgIGZvY3VzZWQgPSBmYWxzZTsKKyAgICAgICAgaWYgKGJyYWNrZXRIaWdobGlnaHRlZCkKKyAg
ICAgICAgICBvcGVyYXRpb24oZnVuY3Rpb24oKXsKKyAgICAgICAgICAgIGlmIChicmFja2V0SGln
aGxpZ2h0ZWQpIHsgYnJhY2tldEhpZ2hsaWdodGVkKCk7IGJyYWNrZXRIaWdobGlnaHRlZCA9IG51
bGw7IH0KKyAgICAgICAgICB9KSgpOworICAgICAgICBzY3JvbGxlci5jbGFzc05hbWUgPSBzY3Jv
bGxlci5jbGFzc05hbWUucmVwbGFjZSgiIENvZGVNaXJyb3ItZm9jdXNlZCIsICIiKTsKKyAgICAg
IH0KKyAgICAgIGNsZWFySW50ZXJ2YWwoYmxpbmtlcik7CisgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkge2lmICghZm9jdXNlZCkgc2hpZnRTZWxlY3RpbmcgPSBudWxsO30sIDE1MCk7CisgICAg
fQorCisgICAgLy8gUmVwbGFjZSB0aGUgcmFuZ2UgZnJvbSBmcm9tIHRvIHRvIGJ5IHRoZSBzdHJp
bmdzIGluIG5ld1RleHQuCisgICAgLy8gQWZ0ZXJ3YXJkcywgc2V0IHRoZSBzZWxlY3Rpb24gdG8g
c2VsRnJvbSwgc2VsVG8uCisgICAgZnVuY3Rpb24gdXBkYXRlTGluZXMoZnJvbSwgdG8sIG5ld1Rl
eHQsIHNlbEZyb20sIHNlbFRvKSB7CisgICAgICBpZiAoc3VwcHJlc3NFZGl0cykgcmV0dXJuOwor
ICAgICAgaWYgKGhpc3RvcnkpIHsKKyAgICAgICAgdmFyIG9sZCA9IFtdOworICAgICAgICBkb2Mu
aXRlcihmcm9tLmxpbmUsIHRvLmxpbmUgKyAxLCBmdW5jdGlvbihsaW5lKSB7IG9sZC5wdXNoKGxp
bmUudGV4dCk7IH0pOworICAgICAgICBoaXN0b3J5LmFkZENoYW5nZShmcm9tLmxpbmUsIG5ld1Rl
eHQubGVuZ3RoLCBvbGQpOworICAgICAgICB3aGlsZSAoaGlzdG9yeS5kb25lLmxlbmd0aCA+IG9w
dGlvbnMudW5kb0RlcHRoKSBoaXN0b3J5LmRvbmUuc2hpZnQoKTsKKyAgICAgIH0KKyAgICAgIHVw
ZGF0ZUxpbmVzTm9VbmRvKGZyb20sIHRvLCBuZXdUZXh0LCBzZWxGcm9tLCBzZWxUbyk7CisgICAg
fQorICAgIGZ1bmN0aW9uIHVucmVkb0hlbHBlcihmcm9tLCB0bykgeworICAgICAgaWYgKCFmcm9t
Lmxlbmd0aCkgcmV0dXJuOworICAgICAgdmFyIHNldCA9IGZyb20ucG9wKCksIG91dCA9IFtdOwor
ICAgICAgZm9yICh2YXIgaSA9IHNldC5sZW5ndGggLSAxOyBpID49IDA7IGkgLT0gMSkgeworICAg
ICAgICB2YXIgY2hhbmdlID0gc2V0W2ldOworICAgICAgICB2YXIgcmVwbGFjZWQgPSBbXSwgZW5k
ID0gY2hhbmdlLnN0YXJ0ICsgY2hhbmdlLmFkZGVkOworICAgICAgICBkb2MuaXRlcihjaGFuZ2Uu
c3RhcnQsIGVuZCwgZnVuY3Rpb24obGluZSkgeyByZXBsYWNlZC5wdXNoKGxpbmUudGV4dCk7IH0p
OworICAgICAgICBvdXQucHVzaCh7c3RhcnQ6IGNoYW5nZS5zdGFydCwgYWRkZWQ6IGNoYW5nZS5v
bGQubGVuZ3RoLCBvbGQ6IHJlcGxhY2VkfSk7CisgICAgICAgIHZhciBwb3MgPSB7bGluZTogY2hh
bmdlLnN0YXJ0ICsgY2hhbmdlLm9sZC5sZW5ndGggLSAxLAorICAgICAgICAgICAgICAgICAgIGNo
OiBlZGl0RW5kKHJlcGxhY2VkW3JlcGxhY2VkLmxlbmd0aC0xXSwgY2hhbmdlLm9sZFtjaGFuZ2Uu
b2xkLmxlbmd0aC0xXSl9OworICAgICAgICB1cGRhdGVMaW5lc05vVW5kbyh7bGluZTogY2hhbmdl
LnN0YXJ0LCBjaDogMH0sIHtsaW5lOiBlbmQgLSAxLCBjaDogZ2V0TGluZShlbmQtMSkudGV4dC5s
ZW5ndGh9LCBjaGFuZ2Uub2xkLCBwb3MsIHBvcyk7CisgICAgICB9CisgICAgICB1cGRhdGVJbnB1
dCA9IHRydWU7CisgICAgICB0by5wdXNoKG91dCk7CisgICAgfQorICAgIGZ1bmN0aW9uIHVuZG8o
KSB7dW5yZWRvSGVscGVyKGhpc3RvcnkuZG9uZSwgaGlzdG9yeS51bmRvbmUpO30KKyAgICBmdW5j
dGlvbiByZWRvKCkge3VucmVkb0hlbHBlcihoaXN0b3J5LnVuZG9uZSwgaGlzdG9yeS5kb25lKTt9
CisKKyAgICBmdW5jdGlvbiB1cGRhdGVMaW5lc05vVW5kbyhmcm9tLCB0bywgbmV3VGV4dCwgc2Vs
RnJvbSwgc2VsVG8pIHsKKyAgICAgIGlmIChzdXBwcmVzc0VkaXRzKSByZXR1cm47CisgICAgICB2
YXIgcmVjb21wdXRlTWF4TGVuZ3RoID0gZmFsc2UsIG1heExpbmVMZW5ndGggPSBtYXhMaW5lLnRl
eHQubGVuZ3RoOworICAgICAgaWYgKCFvcHRpb25zLmxpbmVXcmFwcGluZykKKyAgICAgICAgZG9j
Lml0ZXIoZnJvbS5saW5lLCB0by5saW5lICsgMSwgZnVuY3Rpb24obGluZSkgeworICAgICAgICAg
IGlmICghbGluZS5oaWRkZW4gJiYgbGluZS50ZXh0Lmxlbmd0aCA9PSBtYXhMaW5lTGVuZ3RoKSB7
cmVjb21wdXRlTWF4TGVuZ3RoID0gdHJ1ZTsgcmV0dXJuIHRydWU7fQorICAgICAgICB9KTsKKyAg
ICAgIGlmIChmcm9tLmxpbmUgIT0gdG8ubGluZSB8fCBuZXdUZXh0Lmxlbmd0aCA+IDEpIGd1dHRl
ckRpcnR5ID0gdHJ1ZTsKKworICAgICAgdmFyIG5saW5lcyA9IHRvLmxpbmUgLSBmcm9tLmxpbmUs
IGZpcnN0TGluZSA9IGdldExpbmUoZnJvbS5saW5lKSwgbGFzdExpbmUgPSBnZXRMaW5lKHRvLmxp
bmUpOworICAgICAgLy8gRmlyc3QgYWRqdXN0IHRoZSBsaW5lIHN0cnVjdHVyZSwgdGFraW5nIHNv
bWUgY2FyZSB0byBsZWF2ZSBoaWdobGlnaHRpbmcgaW50YWN0LgorICAgICAgaWYgKGZyb20uY2gg
PT0gMCAmJiB0by5jaCA9PSAwICYmIG5ld1RleHRbbmV3VGV4dC5sZW5ndGggLSAxXSA9PSAiIikg
eworICAgICAgICAvLyBUaGlzIGlzIGEgd2hvbGUtbGluZSByZXBsYWNlLiBUcmVhdGVkIHNwZWNp
YWxseSB0byBtYWtlCisgICAgICAgIC8vIHN1cmUgbGluZSBvYmplY3RzIG1vdmUgdGhlIHdheSB0
aGV5IGFyZSBzdXBwb3NlZCB0by4KKyAgICAgICAgdmFyIGFkZGVkID0gW10sIHByZXZMaW5lID0g
bnVsbDsKKyAgICAgICAgaWYgKGZyb20ubGluZSkgeworICAgICAgICAgIHByZXZMaW5lID0gZ2V0
TGluZShmcm9tLmxpbmUgLSAxKTsKKyAgICAgICAgICBwcmV2TGluZS5maXhNYXJrRW5kcyhsYXN0
TGluZSk7CisgICAgICAgIH0gZWxzZSBsYXN0TGluZS5maXhNYXJrU3RhcnRzKCk7CisgICAgICAg
IGZvciAodmFyIGkgPSAwLCBlID0gbmV3VGV4dC5sZW5ndGggLSAxOyBpIDwgZTsgKytpKQorICAg
ICAgICAgIGFkZGVkLnB1c2goTGluZS5pbmhlcml0TWFya3MobmV3VGV4dFtpXSwgcHJldkxpbmUp
KTsKKyAgICAgICAgaWYgKG5saW5lcykgZG9jLnJlbW92ZShmcm9tLmxpbmUsIG5saW5lcywgY2Fs
bGJhY2tzKTsKKyAgICAgICAgaWYgKGFkZGVkLmxlbmd0aCkgZG9jLmluc2VydChmcm9tLmxpbmUs
IGFkZGVkKTsKKyAgICAgIH0gZWxzZSBpZiAoZmlyc3RMaW5lID09IGxhc3RMaW5lKSB7CisgICAg
ICAgIGlmIChuZXdUZXh0Lmxlbmd0aCA9PSAxKQorICAgICAgICAgIGZpcnN0TGluZS5yZXBsYWNl
KGZyb20uY2gsIHRvLmNoLCBuZXdUZXh0WzBdKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
bGFzdExpbmUgPSBmaXJzdExpbmUuc3BsaXQodG8uY2gsIG5ld1RleHRbbmV3VGV4dC5sZW5ndGgt
MV0pOworICAgICAgICAgIGZpcnN0TGluZS5yZXBsYWNlKGZyb20uY2gsIG51bGwsIG5ld1RleHRb
MF0pOworICAgICAgICAgIGZpcnN0TGluZS5maXhNYXJrRW5kcyhsYXN0TGluZSk7CisgICAgICAg
ICAgdmFyIGFkZGVkID0gW107CisgICAgICAgICAgZm9yICh2YXIgaSA9IDEsIGUgPSBuZXdUZXh0
Lmxlbmd0aCAtIDE7IGkgPCBlOyArK2kpCisgICAgICAgICAgICBhZGRlZC5wdXNoKExpbmUuaW5o
ZXJpdE1hcmtzKG5ld1RleHRbaV0sIGZpcnN0TGluZSkpOworICAgICAgICAgIGFkZGVkLnB1c2go
bGFzdExpbmUpOworICAgICAgICAgIGRvYy5pbnNlcnQoZnJvbS5saW5lICsgMSwgYWRkZWQpOwor
ICAgICAgICB9CisgICAgICB9IGVsc2UgaWYgKG5ld1RleHQubGVuZ3RoID09IDEpIHsKKyAgICAg
ICAgZmlyc3RMaW5lLnJlcGxhY2UoZnJvbS5jaCwgbnVsbCwgbmV3VGV4dFswXSk7CisgICAgICAg
IGxhc3RMaW5lLnJlcGxhY2UobnVsbCwgdG8uY2gsICIiKTsKKyAgICAgICAgZmlyc3RMaW5lLmFw
cGVuZChsYXN0TGluZSk7CisgICAgICAgIGRvYy5yZW1vdmUoZnJvbS5saW5lICsgMSwgbmxpbmVz
LCBjYWxsYmFja3MpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIGFkZGVkID0gW107Cisg
ICAgICAgIGZpcnN0TGluZS5yZXBsYWNlKGZyb20uY2gsIG51bGwsIG5ld1RleHRbMF0pOworICAg
ICAgICBsYXN0TGluZS5yZXBsYWNlKG51bGwsIHRvLmNoLCBuZXdUZXh0W25ld1RleHQubGVuZ3Ro
LTFdKTsKKyAgICAgICAgZmlyc3RMaW5lLmZpeE1hcmtFbmRzKGxhc3RMaW5lKTsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDEsIGUgPSBuZXdUZXh0Lmxlbmd0aCAtIDE7IGkgPCBlOyArK2kpCisgICAg
ICAgICAgYWRkZWQucHVzaChMaW5lLmluaGVyaXRNYXJrcyhuZXdUZXh0W2ldLCBmaXJzdExpbmUp
KTsKKyAgICAgICAgaWYgKG5saW5lcyA+IDEpIGRvYy5yZW1vdmUoZnJvbS5saW5lICsgMSwgbmxp
bmVzIC0gMSwgY2FsbGJhY2tzKTsKKyAgICAgICAgZG9jLmluc2VydChmcm9tLmxpbmUgKyAxLCBh
ZGRlZCk7CisgICAgICB9CisgICAgICBpZiAob3B0aW9ucy5saW5lV3JhcHBpbmcpIHsKKyAgICAg
ICAgdmFyIHBlckxpbmUgPSBNYXRoLm1heCg1LCBzY3JvbGxlci5jbGllbnRXaWR0aCAvIGNoYXJX
aWR0aCgpIC0gMyk7CisgICAgICAgIGRvYy5pdGVyKGZyb20ubGluZSwgZnJvbS5saW5lICsgbmV3
VGV4dC5sZW5ndGgsIGZ1bmN0aW9uKGxpbmUpIHsKKyAgICAgICAgICBpZiAobGluZS5oaWRkZW4p
IHJldHVybjsKKyAgICAgICAgICB2YXIgZ3Vlc3MgPSBNYXRoLmNlaWwobGluZS50ZXh0Lmxlbmd0
aCAvIHBlckxpbmUpIHx8IDE7CisgICAgICAgICAgaWYgKGd1ZXNzICE9IGxpbmUuaGVpZ2h0KSB1
cGRhdGVMaW5lSGVpZ2h0KGxpbmUsIGd1ZXNzKTsKKyAgICAgICAgfSk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBkb2MuaXRlcihmcm9tLmxpbmUsIGZyb20ubGluZSArIG5ld1RleHQubGVuZ3Ro
LCBmdW5jdGlvbihsaW5lKSB7CisgICAgICAgICAgdmFyIGwgPSBsaW5lLnRleHQ7CisgICAgICAg
ICAgaWYgKCFsaW5lLmhpZGRlbiAmJiBsLmxlbmd0aCA+IG1heExpbmVMZW5ndGgpIHsKKyAgICAg
ICAgICAgIG1heExpbmUgPSBsaW5lOyBtYXhMaW5lTGVuZ3RoID0gbC5sZW5ndGg7IG1heExpbmVD
aGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJlY29tcHV0ZU1heExlbmd0aCA9IGZhbHNlOwor
ICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIGlmIChyZWNvbXB1dGVNYXhMZW5ndGgp
IHVwZGF0ZU1heExpbmUgPSB0cnVlOworICAgICAgfQorCisgICAgICAvLyBBZGQgdGhlc2UgbGlu
ZXMgdG8gdGhlIHdvcmsgYXJyYXksIHNvIHRoYXQgdGhleSB3aWxsIGJlCisgICAgICAvLyBoaWdo
bGlnaHRlZC4gQWRqdXN0IHdvcmsgbGluZXMgaWYgbGluZXMgd2VyZSBhZGRlZC9yZW1vdmVkLgor
ICAgICAgdmFyIG5ld1dvcmsgPSBbXSwgbGVuZGlmZiA9IG5ld1RleHQubGVuZ3RoIC0gbmxpbmVz
IC0gMTsKKyAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gd29yay5sZW5ndGg7IGkgPCBsOyArK2kp
IHsKKyAgICAgICAgdmFyIHRhc2sgPSB3b3JrW2ldOworICAgICAgICBpZiAodGFzayA8IGZyb20u
bGluZSkgbmV3V29yay5wdXNoKHRhc2spOworICAgICAgICBlbHNlIGlmICh0YXNrID4gdG8ubGlu
ZSkgbmV3V29yay5wdXNoKHRhc2sgKyBsZW5kaWZmKTsKKyAgICAgIH0KKyAgICAgIHZhciBobEVu
ZCA9IGZyb20ubGluZSArIE1hdGgubWluKG5ld1RleHQubGVuZ3RoLCA1MDApOworICAgICAgaGln
aGxpZ2h0TGluZXMoZnJvbS5saW5lLCBobEVuZCk7CisgICAgICBuZXdXb3JrLnB1c2goaGxFbmQp
OworICAgICAgd29yayA9IG5ld1dvcms7CisgICAgICBzdGFydFdvcmtlcigxMDApOworICAgICAg
Ly8gUmVtZW1iZXIgdGhhdCB0aGVzZSBsaW5lcyBjaGFuZ2VkLCBmb3IgdXBkYXRpbmcgdGhlIGRp
c3BsYXkKKyAgICAgIGNoYW5nZXMucHVzaCh7ZnJvbTogZnJvbS5saW5lLCB0bzogdG8ubGluZSAr
IDEsIGRpZmY6IGxlbmRpZmZ9KTsKKyAgICAgIHZhciBjaGFuZ2VPYmogPSB7ZnJvbTogZnJvbSwg
dG86IHRvLCB0ZXh0OiBuZXdUZXh0fTsKKyAgICAgIGlmICh0ZXh0Q2hhbmdlZCkgeworICAgICAg
ICBmb3IgKHZhciBjdXIgPSB0ZXh0Q2hhbmdlZDsgY3VyLm5leHQ7IGN1ciA9IGN1ci5uZXh0KSB7
fQorICAgICAgICBjdXIubmV4dCA9IGNoYW5nZU9iajsKKyAgICAgIH0gZWxzZSB0ZXh0Q2hhbmdl
ZCA9IGNoYW5nZU9iajsKKworICAgICAgLy8gVXBkYXRlIHRoZSBzZWxlY3Rpb24KKyAgICAgIGZ1
bmN0aW9uIHVwZGF0ZUxpbmUobikge3JldHVybiBuIDw9IE1hdGgubWluKHRvLmxpbmUsIHRvLmxp
bmUgKyBsZW5kaWZmKSA/IG4gOiBuICsgbGVuZGlmZjt9CisgICAgICBzZXRTZWxlY3Rpb24oY2xp
cFBvcyhzZWxGcm9tKSwgY2xpcFBvcyhzZWxUbyksCisgICAgICAgICAgICAgICAgICAgdXBkYXRl
TGluZShzZWwuZnJvbS5saW5lKSwgdXBkYXRlTGluZShzZWwudG8ubGluZSkpOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIG5lZWRzU2Nyb2xsYmFyKCkgeworICAgICAgdmFyIHJlYWxIZWlnaHQgPSBk
b2MuaGVpZ2h0ICogdGV4dEhlaWdodCgpICsgMiAqIHBhZGRpbmdUb3AoKTsKKyAgICAgIHJldHVy
biByZWFsSGVpZ2h0IC0gMSA+IHNjcm9sbGVyLm9mZnNldEhlaWdodCA/IHJlYWxIZWlnaHQgOiBm
YWxzZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB1cGRhdGVWZXJ0aWNhbFNjcm9sbChzY3JvbGxU
b3ApIHsKKyAgICAgIHZhciBzY3JvbGxIZWlnaHQgPSBuZWVkc1Njcm9sbGJhcigpOworICAgICAg
c2Nyb2xsYmFyLnN0eWxlLmRpc3BsYXkgPSBzY3JvbGxIZWlnaHQgPyAiYmxvY2siIDogIm5vbmUi
OworICAgICAgaWYgKHNjcm9sbEhlaWdodCkgeworICAgICAgICBzY3JvbGxiYXJJbm5lci5zdHls
ZS5oZWlnaHQgPSBzaXplci5zdHlsZS5taW5IZWlnaHQgPSBzY3JvbGxIZWlnaHQgKyAicHgiOwor
ICAgICAgICBzY3JvbGxiYXIuc3R5bGUuaGVpZ2h0ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0ICsg
InB4IjsKKyAgICAgICAgaWYgKHNjcm9sbFRvcCAhPSBudWxsKSBzY3JvbGxiYXIuc2Nyb2xsVG9w
ID0gc2Nyb2xsZXIuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgc2l6ZXIuc3R5bGUubWluSGVpZ2h0ID0gIiI7CisgICAgICB9CisgICAgICAvLyBQb3NpdGlv
biB0aGUgbW92ZXIgZGl2IHRvIGFsaWduIHdpdGggdGhlIGN1cnJlbnQgdmlydHVhbCBzY3JvbGwg
cG9zaXRpb24KKyAgICAgIG1vdmVyLnN0eWxlLnRvcCA9IGRpc3BsYXlPZmZzZXQgKiB0ZXh0SGVp
Z2h0KCkgKyAicHgiOworICAgIH0KKworICAgIC8vIE9uIE1hYyBPUyBYIExpb24gYW5kIHVwLCBk
ZXRlY3Qgd2hldGhlciB0aGUgbW91c2UgaXMgcGx1Z2dlZCBpbiBieSBtZWFzdXJpbmcKKyAgICAv
LyB0aGUgd2lkdGggb2YgYSBkaXYgd2l0aCBhIHNjcm9sbGJhciBpbiBpdC4gSWYgdGhlIHdpZHRo
IGlzIDw9IDEsIHRoZW4KKyAgICAvLyB0aGUgbW91c2UgaXNuJ3QgcGx1Z2dlZCBpbiBhbmQgc2Ny
b2xsYmFycyBzaG91bGQgb3ZlcmxhcCB0aGUgY29udGVudC4KKyAgICBmdW5jdGlvbiBvdmVybGFw
U2Nyb2xsYmFycygpIHsKKyAgICAgIHZhciB0bXBTYklubmVyID0gZWx0KCJkaXYiLCBudWxsLCAi
Q29kZU1pcnJvci1zY3JvbGxiYXItaW5uZXIiLCAiaGVpZ2h0OiAyMDBweCIpOworICAgICAgdmFy
IHRtcFNiID0gZWx0KCJkaXYiLCBbdG1wU2JJbm5lcl0sICJDb2RlTWlycm9yLXNjcm9sbGJhciIs
ICJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IC05OTk5cHg7IGhlaWdodDogMTAwcHg7Iik7Cisg
ICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRtcFNiKTsKKyAgICAgIHZhciByZXN1bHQg
PSAodG1wU2Iub2Zmc2V0V2lkdGggPD0gMSk7CisgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNo
aWxkKHRtcFNiKTsKKyAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgZnVuY3Rpb24g
Y29tcHV0ZU1heExlbmd0aCgpIHsKKyAgICAgIG1heExpbmUgPSBnZXRMaW5lKDApOyBtYXhMaW5l
Q2hhbmdlZCA9IHRydWU7CisgICAgICB2YXIgbWF4TGluZUxlbmd0aCA9IG1heExpbmUudGV4dC5s
ZW5ndGg7CisgICAgICBkb2MuaXRlcigxLCBkb2Muc2l6ZSwgZnVuY3Rpb24obGluZSkgeworICAg
ICAgICB2YXIgbCA9IGxpbmUudGV4dDsKKyAgICAgICAgaWYgKCFsaW5lLmhpZGRlbiAmJiBsLmxl
bmd0aCA+IG1heExpbmVMZW5ndGgpIHsKKyAgICAgICAgICBtYXhMaW5lTGVuZ3RoID0gbC5sZW5n
dGg7IG1heExpbmUgPSBsaW5lOworICAgICAgICB9CisgICAgICB9KTsKKyAgICAgIHVwZGF0ZU1h
eExpbmUgPSBmYWxzZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiByZXBsYWNlUmFuZ2UoY29kZSwg
ZnJvbSwgdG8pIHsKKyAgICAgIGZyb20gPSBjbGlwUG9zKGZyb20pOworICAgICAgaWYgKCF0bykg
dG8gPSBmcm9tOyBlbHNlIHRvID0gY2xpcFBvcyh0byk7CisgICAgICBjb2RlID0gc3BsaXRMaW5l
cyhjb2RlKTsKKyAgICAgIGZ1bmN0aW9uIGFkanVzdFBvcyhwb3MpIHsKKyAgICAgICAgaWYgKHBv
c0xlc3MocG9zLCBmcm9tKSkgcmV0dXJuIHBvczsKKyAgICAgICAgaWYgKCFwb3NMZXNzKHRvLCBw
b3MpKSByZXR1cm4gZW5kOworICAgICAgICB2YXIgbGluZSA9IHBvcy5saW5lICsgY29kZS5sZW5n
dGggLSAodG8ubGluZSAtIGZyb20ubGluZSkgLSAxOworICAgICAgICB2YXIgY2ggPSBwb3MuY2g7
CisgICAgICAgIGlmIChwb3MubGluZSA9PSB0by5saW5lKQorICAgICAgICAgIGNoICs9IGNvZGVb
Y29kZS5sZW5ndGgtMV0ubGVuZ3RoIC0gKHRvLmNoIC0gKHRvLmxpbmUgPT0gZnJvbS5saW5lID8g
ZnJvbS5jaCA6IDApKTsKKyAgICAgICAgcmV0dXJuIHtsaW5lOiBsaW5lLCBjaDogY2h9OworICAg
ICAgfQorICAgICAgdmFyIGVuZDsKKyAgICAgIHJlcGxhY2VSYW5nZTEoY29kZSwgZnJvbSwgdG8s
IGZ1bmN0aW9uKGVuZDEpIHsKKyAgICAgICAgZW5kID0gZW5kMTsKKyAgICAgICAgcmV0dXJuIHtm
cm9tOiBhZGp1c3RQb3Moc2VsLmZyb20pLCB0bzogYWRqdXN0UG9zKHNlbC50byl9OworICAgICAg
fSk7CisgICAgICByZXR1cm4gZW5kOworICAgIH0KKyAgICBmdW5jdGlvbiByZXBsYWNlU2VsZWN0
aW9uKGNvZGUsIGNvbGxhcHNlKSB7CisgICAgICByZXBsYWNlUmFuZ2UxKHNwbGl0TGluZXMoY29k
ZSksIHNlbC5mcm9tLCBzZWwudG8sIGZ1bmN0aW9uKGVuZCkgeworICAgICAgICBpZiAoY29sbGFw
c2UgPT0gImVuZCIpIHJldHVybiB7ZnJvbTogZW5kLCB0bzogZW5kfTsKKyAgICAgICAgZWxzZSBp
ZiAoY29sbGFwc2UgPT0gInN0YXJ0IikgcmV0dXJuIHtmcm9tOiBzZWwuZnJvbSwgdG86IHNlbC5m
cm9tfTsKKyAgICAgICAgZWxzZSByZXR1cm4ge2Zyb206IHNlbC5mcm9tLCB0bzogZW5kfTsKKyAg
ICAgIH0pOworICAgIH0KKyAgICBmdW5jdGlvbiByZXBsYWNlUmFuZ2UxKGNvZGUsIGZyb20sIHRv
LCBjb21wdXRlU2VsKSB7CisgICAgICB2YXIgZW5kY2ggPSBjb2RlLmxlbmd0aCA9PSAxID8gY29k
ZVswXS5sZW5ndGggKyBmcm9tLmNoIDogY29kZVtjb2RlLmxlbmd0aC0xXS5sZW5ndGg7CisgICAg
ICB2YXIgbmV3U2VsID0gY29tcHV0ZVNlbCh7bGluZTogZnJvbS5saW5lICsgY29kZS5sZW5ndGgg
LSAxLCBjaDogZW5kY2h9KTsKKyAgICAgIHVwZGF0ZUxpbmVzKGZyb20sIHRvLCBjb2RlLCBuZXdT
ZWwuZnJvbSwgbmV3U2VsLnRvKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBnZXRSYW5nZShmcm9t
LCB0bywgbGluZVNlcCkgeworICAgICAgdmFyIGwxID0gZnJvbS5saW5lLCBsMiA9IHRvLmxpbmU7
CisgICAgICBpZiAobDEgPT0gbDIpIHJldHVybiBnZXRMaW5lKGwxKS50ZXh0LnNsaWNlKGZyb20u
Y2gsIHRvLmNoKTsKKyAgICAgIHZhciBjb2RlID0gW2dldExpbmUobDEpLnRleHQuc2xpY2UoZnJv
bS5jaCldOworICAgICAgZG9jLml0ZXIobDEgKyAxLCBsMiwgZnVuY3Rpb24obGluZSkgeyBjb2Rl
LnB1c2gobGluZS50ZXh0KTsgfSk7CisgICAgICBjb2RlLnB1c2goZ2V0TGluZShsMikudGV4dC5z
bGljZSgwLCB0by5jaCkpOworICAgICAgcmV0dXJuIGNvZGUuam9pbihsaW5lU2VwIHx8ICJcbiIp
OworICAgIH0KKyAgICBmdW5jdGlvbiBnZXRTZWxlY3Rpb24obGluZVNlcCkgeworICAgICAgcmV0
dXJuIGdldFJhbmdlKHNlbC5mcm9tLCBzZWwudG8sIGxpbmVTZXApOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHNsb3dQb2xsKCkgeworICAgICAgaWYgKHBvbGxpbmdGYXN0KSByZXR1cm47CisgICAg
ICBwb2xsLnNldChvcHRpb25zLnBvbGxJbnRlcnZhbCwgZnVuY3Rpb24oKSB7CisgICAgICAgIHN0
YXJ0T3BlcmF0aW9uKCk7CisgICAgICAgIHJlYWRJbnB1dCgpOworICAgICAgICBpZiAoZm9jdXNl
ZCkgc2xvd1BvbGwoKTsKKyAgICAgICAgZW5kT3BlcmF0aW9uKCk7CisgICAgICB9KTsKKyAgICB9
CisgICAgZnVuY3Rpb24gZmFzdFBvbGwoKSB7CisgICAgICB2YXIgbWlzc2VkID0gZmFsc2U7Cisg
ICAgICBwb2xsaW5nRmFzdCA9IHRydWU7CisgICAgICBmdW5jdGlvbiBwKCkgeworICAgICAgICBz
dGFydE9wZXJhdGlvbigpOworICAgICAgICB2YXIgY2hhbmdlZCA9IHJlYWRJbnB1dCgpOworICAg
ICAgICBpZiAoIWNoYW5nZWQgJiYgIW1pc3NlZCkge21pc3NlZCA9IHRydWU7IHBvbGwuc2V0KDYw
LCBwKTt9CisgICAgICAgIGVsc2Uge3BvbGxpbmdGYXN0ID0gZmFsc2U7IHNsb3dQb2xsKCk7fQor
ICAgICAgICBlbmRPcGVyYXRpb24oKTsKKyAgICAgIH0KKyAgICAgIHBvbGwuc2V0KDIwLCBwKTsK
KyAgICB9CisKKyAgICAvLyBQcmV2aW5wdXQgaXMgYSBoYWNrIHRvIHdvcmsgd2l0aCBJTUUuIElm
IHdlIHJlc2V0IHRoZSB0ZXh0YXJlYQorICAgIC8vIG9uIGV2ZXJ5IGNoYW5nZSwgdGhhdCBicmVh
a3MgSU1FLiBTbyB3ZSBsb29rIGZvciBjaGFuZ2VzCisgICAgLy8gY29tcGFyZWQgdG8gdGhlIHBy
ZXZpb3VzIGNvbnRlbnQgaW5zdGVhZC4gKE1vZGVybiBicm93c2VycyBoYXZlCisgICAgLy8gZXZl
bnRzIHRoYXQgaW5kaWNhdGUgSU1FIHRha2luZyBwbGFjZSwgYnV0IHRoZXNlIGFyZSBub3Qgd2lk
ZWx5CisgICAgLy8gc3VwcG9ydGVkIG9yIGNvbXBhdGlibGUgZW5vdWdoIHlldCB0byByZWx5IG9u
LikKKyAgICB2YXIgcHJldklucHV0ID0gIiI7CisgICAgZnVuY3Rpb24gcmVhZElucHV0KCkgewor
ICAgICAgaWYgKGxlYXZlSW5wdXRBbG9uZSB8fCAhZm9jdXNlZCB8fCBoYXNTZWxlY3Rpb24oaW5w
dXQpIHx8IG9wdGlvbnMucmVhZE9ubHkpIHJldHVybiBmYWxzZTsKKyAgICAgIHZhciB0ZXh0ID0g
aW5wdXQudmFsdWU7CisgICAgICBpZiAodGV4dCA9PSBwcmV2SW5wdXQpIHJldHVybiBmYWxzZTsK
KyAgICAgIHNoaWZ0U2VsZWN0aW5nID0gbnVsbDsKKyAgICAgIHZhciBzYW1lID0gMCwgbCA9IE1h
dGgubWluKHByZXZJbnB1dC5sZW5ndGgsIHRleHQubGVuZ3RoKTsKKyAgICAgIHdoaWxlIChzYW1l
IDwgbCAmJiBwcmV2SW5wdXRbc2FtZV0gPT0gdGV4dFtzYW1lXSkgKytzYW1lOworICAgICAgaWYg
KHNhbWUgPCBwcmV2SW5wdXQubGVuZ3RoKQorICAgICAgICBzZWwuZnJvbSA9IHtsaW5lOiBzZWwu
ZnJvbS5saW5lLCBjaDogc2VsLmZyb20uY2ggLSAocHJldklucHV0Lmxlbmd0aCAtIHNhbWUpfTsK
KyAgICAgIGVsc2UgaWYgKG92ZXJ3cml0ZSAmJiBwb3NFcShzZWwuZnJvbSwgc2VsLnRvKSkKKyAg
ICAgICAgc2VsLnRvID0ge2xpbmU6IHNlbC50by5saW5lLCBjaDogTWF0aC5taW4oZ2V0TGluZShz
ZWwudG8ubGluZSkudGV4dC5sZW5ndGgsIHNlbC50by5jaCArICh0ZXh0Lmxlbmd0aCAtIHNhbWUp
KX07CisgICAgICByZXBsYWNlU2VsZWN0aW9uKHRleHQuc2xpY2Uoc2FtZSksICJlbmQiKTsKKyAg
ICAgIGlmICh0ZXh0Lmxlbmd0aCA+IDEwMDApIHsgaW5wdXQudmFsdWUgPSBwcmV2SW5wdXQgPSAi
IjsgfQorICAgICAgZWxzZSBwcmV2SW5wdXQgPSB0ZXh0OworICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIGZ1bmN0aW9uIHJlc2V0SW5wdXQodXNlcikgeworICAgICAgaWYgKCFwb3NFcShz
ZWwuZnJvbSwgc2VsLnRvKSkgeworICAgICAgICBwcmV2SW5wdXQgPSAiIjsKKyAgICAgICAgaW5w
dXQudmFsdWUgPSBnZXRTZWxlY3Rpb24oKTsKKyAgICAgICAgc2VsZWN0SW5wdXQoaW5wdXQpOwor
ICAgICAgfSBlbHNlIGlmICh1c2VyKSBwcmV2SW5wdXQgPSBpbnB1dC52YWx1ZSA9ICIiOworICAg
IH0KKworICAgIGZ1bmN0aW9uIGZvY3VzSW5wdXQoKSB7CisgICAgICBpZiAob3B0aW9ucy5yZWFk
T25seSAhPSAibm9jdXJzb3IiKSBpbnB1dC5mb2N1cygpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHNjcm9sbEVkaXRvckludG9WaWV3KCkgeworICAgICAgdmFyIHJlY3QgPSBjdXJzb3IuZ2V0Qm91
bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAvLyBJRSByZXR1cm5zIGJvZ3VzIGNvb3JkaW5hdGVz
IHdoZW4gdGhlIGluc3RhbmNlIHNpdHMgaW5zaWRlIG9mIGFuIGlmcmFtZSBhbmQgdGhlIGN1cnNv
ciBpcyBoaWRkZW4KKyAgICAgIGlmIChpZSAmJiByZWN0LnRvcCA9PSByZWN0LmJvdHRvbSkgcmV0
dXJuOworICAgICAgdmFyIHdpbkggPSB3aW5kb3cuaW5uZXJIZWlnaHQgfHwgTWF0aC5tYXgoZG9j
dW1lbnQuYm9keS5vZmZzZXRIZWlnaHQsIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vZmZzZXRI
ZWlnaHQpOworICAgICAgaWYgKHJlY3QudG9wIDwgMCB8fCByZWN0LmJvdHRvbSA+IHdpbkgpIHNj
cm9sbEN1cnNvckludG9WaWV3KCk7CisgICAgfQorICAgIGZ1bmN0aW9uIHNjcm9sbEN1cnNvcklu
dG9WaWV3KCkgeworICAgICAgdmFyIGNvb3JkcyA9IGNhbGN1bGF0ZUN1cnNvckNvb3JkcygpOwor
ICAgICAgc2Nyb2xsSW50b1ZpZXcoY29vcmRzLngsIGNvb3Jkcy55LCBjb29yZHMueCwgY29vcmRz
LnlCb3QpOworICAgIH0KKyAgICBmdW5jdGlvbiBjYWxjdWxhdGVDdXJzb3JDb29yZHMoKSB7Cisg
ICAgICB2YXIgY3Vyc29yID0gbG9jYWxDb29yZHMoc2VsLmludmVydGVkID8gc2VsLmZyb20gOiBz
ZWwudG8pOworICAgICAgdmFyIHggPSBvcHRpb25zLmxpbmVXcmFwcGluZyA/IE1hdGgubWluKGN1
cnNvci54LCBsaW5lU3BhY2Uub2Zmc2V0V2lkdGgpIDogY3Vyc29yLng7CisgICAgICByZXR1cm4g
e3g6IHgsIHk6IGN1cnNvci55LCB5Qm90OiBjdXJzb3IueUJvdH07CisgICAgfQorICAgIGZ1bmN0
aW9uIHNjcm9sbEludG9WaWV3KHgxLCB5MSwgeDIsIHkyKSB7CisgICAgICB2YXIgc2Nyb2xsUG9z
ID0gY2FsY3VsYXRlU2Nyb2xsUG9zKHgxLCB5MSwgeDIsIHkyKTsKKyAgICAgIGlmIChzY3JvbGxQ
b3Muc2Nyb2xsTGVmdCAhPSBudWxsKSB7c2Nyb2xsZXIuc2Nyb2xsTGVmdCA9IHNjcm9sbFBvcy5z
Y3JvbGxMZWZ0O30KKyAgICAgIGlmIChzY3JvbGxQb3Muc2Nyb2xsVG9wICE9IG51bGwpIHtzY3Jv
bGxiYXIuc2Nyb2xsVG9wID0gc2Nyb2xsZXIuc2Nyb2xsVG9wID0gc2Nyb2xsUG9zLnNjcm9sbFRv
cDt9CisgICAgfQorICAgIGZ1bmN0aW9uIGNhbGN1bGF0ZVNjcm9sbFBvcyh4MSwgeTEsIHgyLCB5
MikgeworICAgICAgdmFyIHBsID0gcGFkZGluZ0xlZnQoKSwgcHQgPSBwYWRkaW5nVG9wKCk7Cisg
ICAgICB5MSArPSBwdDsgeTIgKz0gcHQ7IHgxICs9IHBsOyB4MiArPSBwbDsKKyAgICAgIHZhciBz
Y3JlZW4gPSBzY3JvbGxlci5jbGllbnRIZWlnaHQsIHNjcmVlbnRvcCA9IHNjcm9sbGJhci5zY3Jv
bGxUb3AsIHJlc3VsdCA9IHt9OworICAgICAgdmFyIGRvY0JvdHRvbSA9IG5lZWRzU2Nyb2xsYmFy
KCkgfHwgSW5maW5pdHk7CisgICAgICB2YXIgYXRUb3AgPSB5MSA8IHB0ICsgMTAsIGF0Qm90dG9t
ID0geTIgKyBwdCA+IGRvY0JvdHRvbSAtIDEwOworICAgICAgaWYgKHkxIDwgc2NyZWVudG9wKSBy
ZXN1bHQuc2Nyb2xsVG9wID0gYXRUb3AgPyAwIDogTWF0aC5tYXgoMCwgeTEpOworICAgICAgZWxz
ZSBpZiAoeTIgPiBzY3JlZW50b3AgKyBzY3JlZW4pIHJlc3VsdC5zY3JvbGxUb3AgPSAoYXRCb3R0
b20gPyBkb2NCb3R0b20gOiB5MikgLSBzY3JlZW47CisKKyAgICAgIHZhciBzY3JlZW53ID0gc2Ny
b2xsZXIuY2xpZW50V2lkdGgsIHNjcmVlbmxlZnQgPSBzY3JvbGxlci5zY3JvbGxMZWZ0OworICAg
ICAgdmFyIGd1dHRlcncgPSBvcHRpb25zLmZpeGVkR3V0dGVyID8gZ3V0dGVyLmNsaWVudFdpZHRo
IDogMDsKKyAgICAgIHZhciBhdExlZnQgPSB4MSA8IGd1dHRlcncgKyBwbCArIDEwOworICAgICAg
aWYgKHgxIDwgc2NyZWVubGVmdCArIGd1dHRlcncgfHwgYXRMZWZ0KSB7CisgICAgICAgIGlmIChh
dExlZnQpIHgxID0gMDsKKyAgICAgICAgcmVzdWx0LnNjcm9sbExlZnQgPSBNYXRoLm1heCgwLCB4
MSAtIDEwIC0gZ3V0dGVydyk7CisgICAgICB9IGVsc2UgaWYgKHgyID4gc2NyZWVudyArIHNjcmVl
bmxlZnQgLSAzKSB7CisgICAgICAgIHJlc3VsdC5zY3JvbGxMZWZ0ID0geDIgKyAxMCAtIHNjcmVl
bnc7CisgICAgICB9CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGZ1bmN0aW9u
IHZpc2libGVMaW5lcyhzY3JvbGxUb3ApIHsKKyAgICAgIHZhciBsaCA9IHRleHRIZWlnaHQoKSwg
dG9wID0gKHNjcm9sbFRvcCAhPSBudWxsID8gc2Nyb2xsVG9wIDogc2Nyb2xsYmFyLnNjcm9sbFRv
cCkgLSBwYWRkaW5nVG9wKCk7CisgICAgICB2YXIgZnJvbUhlaWdodCA9IE1hdGgubWF4KDAsIE1h
dGguZmxvb3IodG9wIC8gbGgpKTsKKyAgICAgIHZhciB0b0hlaWdodCA9IE1hdGguY2VpbCgodG9w
ICsgc2Nyb2xsZXIuY2xpZW50SGVpZ2h0KSAvIGxoKTsKKyAgICAgIHJldHVybiB7ZnJvbTogbGlu
ZUF0SGVpZ2h0KGRvYywgZnJvbUhlaWdodCksCisgICAgICAgICAgICAgIHRvOiBsaW5lQXRIZWln
aHQoZG9jLCB0b0hlaWdodCl9OworICAgIH0KKyAgICAvLyBVc2VzIGEgc2V0IG9mIGNoYW5nZXMg
cGx1cyB0aGUgY3VycmVudCBzY3JvbGwgcG9zaXRpb24gdG8KKyAgICAvLyBkZXRlcm1pbmUgd2hp
Y2ggRE9NIHVwZGF0ZXMgaGF2ZSB0byBiZSBtYWRlLCBhbmQgbWFrZXMgdGhlCisgICAgLy8gdXBk
YXRlcy4KKyAgICBmdW5jdGlvbiB1cGRhdGVEaXNwbGF5KGNoYW5nZXMsIHN1cHByZXNzQ2FsbGJh
Y2ssIHNjcm9sbFRvcCkgeworICAgICAgaWYgKCFzY3JvbGxlci5jbGllbnRXaWR0aCkgeworICAg
ICAgICBzaG93aW5nRnJvbSA9IHNob3dpbmdUbyA9IGRpc3BsYXlPZmZzZXQgPSAwOworICAgICAg
ICByZXR1cm47CisgICAgICB9CisgICAgICAvLyBDb21wdXRlIHRoZSBuZXcgdmlzaWJsZSB3aW5k
b3cKKyAgICAgIC8vIElmIHNjcm9sbFRvcCBpcyBzcGVjaWZpZWQsIHVzZSB0aGF0IHRvIGRldGVy
bWluZSB3aGljaCBsaW5lcworICAgICAgLy8gdG8gcmVuZGVyIGluc3RlYWQgb2YgdGhlIGN1cnJl
bnQgc2Nyb2xsYmFyIHBvc2l0aW9uLgorICAgICAgdmFyIHZpc2libGUgPSB2aXNpYmxlTGluZXMo
c2Nyb2xsVG9wKTsKKyAgICAgIC8vIEJhaWwgb3V0IGlmIHRoZSB2aXNpYmxlIGFyZWEgaXMgYWxy
ZWFkeSByZW5kZXJlZCBhbmQgbm90aGluZyBjaGFuZ2VkLgorICAgICAgaWYgKGNoYW5nZXMgIT09
IHRydWUgJiYgY2hhbmdlcy5sZW5ndGggPT0gMCAmJiB2aXNpYmxlLmZyb20gPiBzaG93aW5nRnJv
bSAmJiB2aXNpYmxlLnRvIDwgc2hvd2luZ1RvKSB7CisgICAgICAgIHVwZGF0ZVZlcnRpY2FsU2Ny
b2xsKHNjcm9sbFRvcCk7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAgICAgIHZhciBmcm9t
ID0gTWF0aC5tYXgodmlzaWJsZS5mcm9tIC0gMTAwLCAwKSwgdG8gPSBNYXRoLm1pbihkb2Muc2l6
ZSwgdmlzaWJsZS50byArIDEwMCk7CisgICAgICBpZiAoc2hvd2luZ0Zyb20gPCBmcm9tICYmIGZy
b20gLSBzaG93aW5nRnJvbSA8IDIwKSBmcm9tID0gc2hvd2luZ0Zyb207CisgICAgICBpZiAoc2hv
d2luZ1RvID4gdG8gJiYgc2hvd2luZ1RvIC0gdG8gPCAyMCkgdG8gPSBNYXRoLm1pbihkb2Muc2l6
ZSwgc2hvd2luZ1RvKTsKKworICAgICAgLy8gQ3JlYXRlIGEgcmFuZ2Ugb2YgdGhlb3JldGljYWxs
eSBpbnRhY3QgbGluZXMsIGFuZCBwdW5jaCBob2xlcworICAgICAgLy8gaW4gdGhhdCB1c2luZyB0
aGUgY2hhbmdlIGluZm8uCisgICAgICB2YXIgaW50YWN0ID0gY2hhbmdlcyA9PT0gdHJ1ZSA/IFtd
IDoKKyAgICAgICAgY29tcHV0ZUludGFjdChbe2Zyb206IHNob3dpbmdGcm9tLCB0bzogc2hvd2lu
Z1RvLCBkb21TdGFydDogMH1dLCBjaGFuZ2VzKTsKKyAgICAgIC8vIENsaXAgb2ZmIHRoZSBwYXJ0
cyB0aGF0IHdvbid0IGJlIHZpc2libGUKKyAgICAgIHZhciBpbnRhY3RMaW5lcyA9IDA7CisgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGludGFjdC5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIg
cmFuZ2UgPSBpbnRhY3RbaV07CisgICAgICAgIGlmIChyYW5nZS5mcm9tIDwgZnJvbSkge3Jhbmdl
LmRvbVN0YXJ0ICs9IChmcm9tIC0gcmFuZ2UuZnJvbSk7IHJhbmdlLmZyb20gPSBmcm9tO30KKyAg
ICAgICAgaWYgKHJhbmdlLnRvID4gdG8pIHJhbmdlLnRvID0gdG87CisgICAgICAgIGlmIChyYW5n
ZS5mcm9tID49IHJhbmdlLnRvKSBpbnRhY3Quc3BsaWNlKGktLSwgMSk7CisgICAgICAgIGVsc2Ug
aW50YWN0TGluZXMgKz0gcmFuZ2UudG8gLSByYW5nZS5mcm9tOworICAgICAgfQorICAgICAgaWYg
KGludGFjdExpbmVzID09IHRvIC0gZnJvbSAmJiBmcm9tID09IHNob3dpbmdGcm9tICYmIHRvID09
IHNob3dpbmdUbykgeworICAgICAgICB1cGRhdGVWZXJ0aWNhbFNjcm9sbChzY3JvbGxUb3ApOwor
ICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgICBpbnRhY3Quc29ydChmdW5jdGlvbihhLCBi
KSB7cmV0dXJuIGEuZG9tU3RhcnQgLSBiLmRvbVN0YXJ0O30pOworCisgICAgICB2YXIgdGggPSB0
ZXh0SGVpZ2h0KCksIGd1dHRlckRpc3BsYXkgPSBndXR0ZXIuc3R5bGUuZGlzcGxheTsKKyAgICAg
IGxpbmVEaXYuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICAgIHBhdGNoRGlzcGxheShmcm9t
LCB0bywgaW50YWN0KTsKKyAgICAgIGxpbmVEaXYuc3R5bGUuZGlzcGxheSA9IGd1dHRlci5zdHls
ZS5kaXNwbGF5ID0gIiI7CisKKyAgICAgIHZhciBkaWZmZXJlbnQgPSBmcm9tICE9IHNob3dpbmdG
cm9tIHx8IHRvICE9IHNob3dpbmdUbyB8fCBsYXN0U2l6ZUMgIT0gc2Nyb2xsZXIuY2xpZW50SGVp
Z2h0ICsgdGg7CisgICAgICAvLyBUaGlzIGlzIGp1c3QgYSBib2d1cyBmb3JtdWxhIHRoYXQgZGV0
ZWN0cyB3aGVuIHRoZSBlZGl0b3IgaXMKKyAgICAgIC8vIHJlc2l6ZWQgb3IgdGhlIGZvbnQgc2l6
ZSBjaGFuZ2VzLgorICAgICAgaWYgKGRpZmZlcmVudCkgbGFzdFNpemVDID0gc2Nyb2xsZXIuY2xp
ZW50SGVpZ2h0ICsgdGg7CisgICAgICBzaG93aW5nRnJvbSA9IGZyb207IHNob3dpbmdUbyA9IHRv
OworICAgICAgZGlzcGxheU9mZnNldCA9IGhlaWdodEF0TGluZShkb2MsIGZyb20pOworCisgICAg
ICAvLyBTaW5jZSB0aGlzIGlzIGFsbCByYXRoZXIgZXJyb3IgcHJvbmUsIGl0IGlzIGhvbm91cmVk
IHdpdGggdGhlCisgICAgICAvLyBvbmx5IGFzc2VydGlvbiBpbiB0aGUgd2hvbGUgZmlsZS4KKyAg
ICAgIGlmIChsaW5lRGl2LmNoaWxkTm9kZXMubGVuZ3RoICE9IHNob3dpbmdUbyAtIHNob3dpbmdG
cm9tKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJBRCBQQVRDSCEgIiArIEpTT04uc3RyaW5n
aWZ5KGludGFjdCkgKyAiIHNpemU9IiArIChzaG93aW5nVG8gLSBzaG93aW5nRnJvbSkgKworICAg
ICAgICAgICAgICAgICAgICAgICAgIiBub2Rlcz0iICsgbGluZURpdi5jaGlsZE5vZGVzLmxlbmd0
aCk7CisKKyAgICAgIGZ1bmN0aW9uIGNoZWNrSGVpZ2h0cygpIHsKKyAgICAgICAgdmFyIGN1ck5v
ZGUgPSBsaW5lRGl2LmZpcnN0Q2hpbGQsIGhlaWdodENoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAg
ZG9jLml0ZXIoc2hvd2luZ0Zyb20sIHNob3dpbmdUbywgZnVuY3Rpb24obGluZSkgeworICAgICAg
ICAgIC8vIFdvcmsgYXJvdW5kIGJpemFycm8gSUU3IGJ1ZyB3aGVyZSwgc29tZXRpbWVzLCBvdXIg
Y3VyTm9kZQorICAgICAgICAgIC8vIGlzIG1hZ2ljYWxseSByZXBsYWNlZCB3aXRoIGEgbmV3IG5v
ZGUgaW4gdGhlIERPTSwgbGVhdmluZworICAgICAgICAgIC8vIHVzIHdpdGggYSByZWZlcmVuY2Ug
dG8gYW4gb3JwaGFuIChuZXh0U2libGluZy1sZXNzKSBub2RlLgorICAgICAgICAgIGlmICghY3Vy
Tm9kZSkgcmV0dXJuOworICAgICAgICAgIGlmICghbGluZS5oaWRkZW4pIHsKKyAgICAgICAgICAg
IHZhciBoZWlnaHQgPSBNYXRoLnJvdW5kKGN1ck5vZGUub2Zmc2V0SGVpZ2h0IC8gdGgpIHx8IDE7
CisgICAgICAgICAgICBpZiAobGluZS5oZWlnaHQgIT0gaGVpZ2h0KSB7CisgICAgICAgICAgICAg
IHVwZGF0ZUxpbmVIZWlnaHQobGluZSwgaGVpZ2h0KTsKKyAgICAgICAgICAgICAgZ3V0dGVyRGly
dHkgPSBoZWlnaHRDaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9Cisg
ICAgICAgICAgY3VyTm9kZSA9IGN1ck5vZGUubmV4dFNpYmxpbmc7CisgICAgICAgIH0pOworICAg
ICAgICByZXR1cm4gaGVpZ2h0Q2hhbmdlZDsKKyAgICAgIH0KKworICAgICAgaWYgKG9wdGlvbnMu
bGluZVdyYXBwaW5nKSB7CisgICAgICAgIGNoZWNrSGVpZ2h0cygpOworICAgICAgICB2YXIgc2Ny
b2xsSGVpZ2h0ID0gbmVlZHNTY3JvbGxiYXIoKTsKKyAgICAgICAgdmFyIHNob3VsZEhhdmVTY3Jv
bGxiYXIgPSBzY3JvbGxIZWlnaHQgPyAiYmxvY2siIDogIm5vbmUiOworICAgICAgICBpZiAoc2Ny
b2xsYmFyLnN0eWxlLmRpc3BsYXkgIT0gc2hvdWxkSGF2ZVNjcm9sbGJhcikgeworICAgICAgICAg
IHNjcm9sbGJhci5zdHlsZS5kaXNwbGF5ID0gc2hvdWxkSGF2ZVNjcm9sbGJhcjsKKyAgICAgICAg
ICBpZiAoc2Nyb2xsSGVpZ2h0KSBzY3JvbGxiYXJJbm5lci5zdHlsZS5oZWlnaHQgPSBzY3JvbGxI
ZWlnaHQgKyAicHgiOworICAgICAgICAgIGNoZWNrSGVpZ2h0cygpOworICAgICAgICB9CisgICAg
ICB9CisKKyAgICAgIGd1dHRlci5zdHlsZS5kaXNwbGF5ID0gZ3V0dGVyRGlzcGxheTsKKyAgICAg
IGlmIChkaWZmZXJlbnQgfHwgZ3V0dGVyRGlydHkpIHsKKyAgICAgICAgLy8gSWYgdGhlIGd1dHRl
ciBncmV3IGluIHNpemUsIHJlLWNoZWNrIGhlaWdodHMuIElmIHRob3NlIGNoYW5nZWQsIHJlLWRy
YXcgZ3V0dGVyLgorICAgICAgICB1cGRhdGVHdXR0ZXIoKSAmJiBvcHRpb25zLmxpbmVXcmFwcGlu
ZyAmJiBjaGVja0hlaWdodHMoKSAmJiB1cGRhdGVHdXR0ZXIoKTsKKyAgICAgIH0KKyAgICAgIHVw
ZGF0ZVZlcnRpY2FsU2Nyb2xsKHNjcm9sbFRvcCk7CisgICAgICB1cGRhdGVTZWxlY3Rpb24oKTsK
KyAgICAgIGlmICghc3VwcHJlc3NDYWxsYmFjayAmJiBvcHRpb25zLm9uVXBkYXRlKSBvcHRpb25z
Lm9uVXBkYXRlKGluc3RhbmNlKTsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGZ1
bmN0aW9uIGNvbXB1dGVJbnRhY3QoaW50YWN0LCBjaGFuZ2VzKSB7CisgICAgICBmb3IgKHZhciBp
ID0gMCwgbCA9IGNoYW5nZXMubGVuZ3RoIHx8IDA7IGkgPCBsOyArK2kpIHsKKyAgICAgICAgdmFy
IGNoYW5nZSA9IGNoYW5nZXNbaV0sIGludGFjdDIgPSBbXSwgZGlmZiA9IGNoYW5nZS5kaWZmIHx8
IDA7CisgICAgICAgIGZvciAodmFyIGogPSAwLCBsMiA9IGludGFjdC5sZW5ndGg7IGogPCBsMjsg
KytqKSB7CisgICAgICAgICAgdmFyIHJhbmdlID0gaW50YWN0W2pdOworICAgICAgICAgIGlmIChj
aGFuZ2UudG8gPD0gcmFuZ2UuZnJvbSAmJiBjaGFuZ2UuZGlmZikKKyAgICAgICAgICAgIGludGFj
dDIucHVzaCh7ZnJvbTogcmFuZ2UuZnJvbSArIGRpZmYsIHRvOiByYW5nZS50byArIGRpZmYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRvbVN0YXJ0OiByYW5nZS5kb21TdGFydH0pOworICAg
ICAgICAgIGVsc2UgaWYgKGNoYW5nZS50byA8PSByYW5nZS5mcm9tIHx8IGNoYW5nZS5mcm9tID49
IHJhbmdlLnRvKQorICAgICAgICAgICAgaW50YWN0Mi5wdXNoKHJhbmdlKTsKKyAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIGlmIChjaGFuZ2UuZnJvbSA+IHJhbmdlLmZyb20pCisgICAgICAg
ICAgICAgIGludGFjdDIucHVzaCh7ZnJvbTogcmFuZ2UuZnJvbSwgdG86IGNoYW5nZS5mcm9tLCBk
b21TdGFydDogcmFuZ2UuZG9tU3RhcnR9KTsKKyAgICAgICAgICAgIGlmIChjaGFuZ2UudG8gPCBy
YW5nZS50bykKKyAgICAgICAgICAgICAgaW50YWN0Mi5wdXNoKHtmcm9tOiBjaGFuZ2UudG8gKyBk
aWZmLCB0bzogcmFuZ2UudG8gKyBkaWZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRv
bVN0YXJ0OiByYW5nZS5kb21TdGFydCArIChjaGFuZ2UudG8gLSByYW5nZS5mcm9tKX0pOworICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpbnRhY3QgPSBpbnRhY3QyOworICAgICAgfQor
ICAgICAgcmV0dXJuIGludGFjdDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwYXRjaERpc3BsYXko
ZnJvbSwgdG8sIGludGFjdCkgeworICAgICAgZnVuY3Rpb24ga2lsbE5vZGUobm9kZSkgeworICAg
ICAgICB2YXIgdG1wID0gbm9kZS5uZXh0U2libGluZzsKKyAgICAgICAgbm9kZS5wYXJlbnROb2Rl
LnJlbW92ZUNoaWxkKG5vZGUpOworICAgICAgICByZXR1cm4gdG1wOworICAgICAgfQorICAgICAg
Ly8gVGhlIGZpcnN0IHBhc3MgcmVtb3ZlcyB0aGUgRE9NIG5vZGVzIHRoYXQgYXJlbid0IGludGFj
dC4KKyAgICAgIGlmICghaW50YWN0Lmxlbmd0aCkgcmVtb3ZlQ2hpbGRyZW4obGluZURpdik7Cisg
ICAgICBlbHNlIHsKKyAgICAgICAgdmFyIGRvbVBvcyA9IDAsIGN1ck5vZGUgPSBsaW5lRGl2LmZp
cnN0Q2hpbGQsIG47CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW50YWN0Lmxlbmd0aDsg
KytpKSB7CisgICAgICAgICAgdmFyIGN1ciA9IGludGFjdFtpXTsKKyAgICAgICAgICB3aGlsZSAo
Y3VyLmRvbVN0YXJ0ID4gZG9tUG9zKSB7Y3VyTm9kZSA9IGtpbGxOb2RlKGN1ck5vZGUpOyBkb21Q
b3MrKzt9CisgICAgICAgICAgZm9yICh2YXIgaiA9IDAsIGUgPSBjdXIudG8gLSBjdXIuZnJvbTsg
aiA8IGU7ICsraikge2N1ck5vZGUgPSBjdXJOb2RlLm5leHRTaWJsaW5nOyBkb21Qb3MrKzt9Cisg
ICAgICAgIH0KKyAgICAgICAgd2hpbGUgKGN1ck5vZGUpIGN1ck5vZGUgPSBraWxsTm9kZShjdXJO
b2RlKTsKKyAgICAgIH0KKyAgICAgIC8vIFRoaXMgcGFzcyBmaWxscyBpbiB0aGUgbGluZXMgdGhh
dCBhY3R1YWxseSBjaGFuZ2VkLgorICAgICAgdmFyIG5leHRJbnRhY3QgPSBpbnRhY3Quc2hpZnQo
KSwgY3VyTm9kZSA9IGxpbmVEaXYuZmlyc3RDaGlsZCwgaiA9IGZyb207CisgICAgICBkb2MuaXRl
cihmcm9tLCB0bywgZnVuY3Rpb24obGluZSkgeworICAgICAgICBpZiAobmV4dEludGFjdCAmJiBu
ZXh0SW50YWN0LnRvID09IGopIG5leHRJbnRhY3QgPSBpbnRhY3Quc2hpZnQoKTsKKyAgICAgICAg
aWYgKCFuZXh0SW50YWN0IHx8IG5leHRJbnRhY3QuZnJvbSA+IGopIHsKKyAgICAgICAgICBpZiAo
bGluZS5oaWRkZW4pIHZhciBsaW5lRWxlbWVudCA9IGVsdCgicHJlIik7CisgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICB2YXIgbGluZUVsZW1lbnQgPSBsaW5lLmdldEVsZW1lbnQobWFrZVRh
Yik7CisgICAgICAgICAgICBpZiAobGluZS5jbGFzc05hbWUpIGxpbmVFbGVtZW50LmNsYXNzTmFt
ZSA9IGxpbmUuY2xhc3NOYW1lOworICAgICAgICAgICAgLy8gS2x1ZGdlIHRvIG1ha2Ugc3VyZSB0
aGUgc3R5bGVkIGVsZW1lbnQgbGllcyBiZWhpbmQgdGhlIHNlbGVjdGlvbiAoYnkgei1pbmRleCkK
KyAgICAgICAgICAgIGlmIChsaW5lLmJnQ2xhc3NOYW1lKSB7CisgICAgICAgICAgICAgIHZhciBw
cmUgPSBlbHQoInByZSIsICJcdTAwYTAiLCBsaW5lLmJnQ2xhc3NOYW1lLCAicG9zaXRpb246IGFi
c29sdXRlOyBsZWZ0OiAwOyByaWdodDogMDsgdG9wOiAwOyBib3R0b206IDA7IHotaW5kZXg6IC0y
Iik7CisgICAgICAgICAgICAgIGxpbmVFbGVtZW50ID0gZWx0KCJkaXYiLCBbcHJlLCBsaW5lRWxl
bWVudF0sIG51bGwsICJwb3NpdGlvbjogcmVsYXRpdmUiKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICB9CisgICAgICAgICAgbGluZURpdi5pbnNlcnRCZWZvcmUobGluZUVsZW1lbnQsIGN1ck5v
ZGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGN1ck5vZGUgPSBjdXJOb2RlLm5leHRT
aWJsaW5nOworICAgICAgICB9CisgICAgICAgICsrajsKKyAgICAgIH0pOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHVwZGF0ZUd1dHRlcigpIHsKKyAgICAgIGlmICghb3B0aW9ucy5ndXR0ZXIgJiYg
IW9wdGlvbnMubGluZU51bWJlcnMpIHJldHVybjsKKyAgICAgIHZhciBoVGV4dCA9IG1vdmVyLm9m
ZnNldEhlaWdodCwgaEVkaXRvciA9IHNjcm9sbGVyLmNsaWVudEhlaWdodDsKKyAgICAgIGd1dHRl
ci5zdHlsZS5oZWlnaHQgPSAoaFRleHQgLSBoRWRpdG9yIDwgMiA/IGhFZGl0b3IgOiBoVGV4dCkg
KyAicHgiOworICAgICAgdmFyIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFn
bWVudCgpLCBpID0gc2hvd2luZ0Zyb20sIG5vcm1hbE5vZGU7CisgICAgICBkb2MuaXRlcihzaG93
aW5nRnJvbSwgTWF0aC5tYXgoc2hvd2luZ1RvLCBzaG93aW5nRnJvbSArIDEpLCBmdW5jdGlvbihs
aW5lKSB7CisgICAgICAgIGlmIChsaW5lLmhpZGRlbikgeworICAgICAgICAgIGZyYWdtZW50LmFw
cGVuZENoaWxkKGVsdCgicHJlIikpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHZhciBt
YXJrZXIgPSBsaW5lLmd1dHRlck1hcmtlcjsKKyAgICAgICAgICB2YXIgdGV4dCA9IG9wdGlvbnMu
bGluZU51bWJlcnMgPyBvcHRpb25zLmxpbmVOdW1iZXJGb3JtYXR0ZXIoaSArIG9wdGlvbnMuZmly
c3RMaW5lTnVtYmVyKSA6IG51bGw7CisgICAgICAgICAgaWYgKG1hcmtlciAmJiBtYXJrZXIudGV4
dCkKKyAgICAgICAgICAgIHRleHQgPSBtYXJrZXIudGV4dC5yZXBsYWNlKCIlTiUiLCB0ZXh0ICE9
IG51bGwgPyB0ZXh0IDogIiIpOworICAgICAgICAgIGVsc2UgaWYgKHRleHQgPT0gbnVsbCkKKyAg
ICAgICAgICAgIHRleHQgPSAiXHUwMGEwIjsKKyAgICAgICAgICB2YXIgbWFya2VyRWxlbWVudCA9
IGZyYWdtZW50LmFwcGVuZENoaWxkKGVsdCgicHJlIiwgbnVsbCwgbWFya2VyICYmIG1hcmtlci5z
dHlsZSkpOworICAgICAgICAgIG1hcmtlckVsZW1lbnQuaW5uZXJIVE1MID0gdGV4dDsKKyAgICAg
ICAgICBmb3IgKHZhciBqID0gMTsgaiA8IGxpbmUuaGVpZ2h0OyArK2opIHsKKyAgICAgICAgICAg
IG1hcmtlckVsZW1lbnQuYXBwZW5kQ2hpbGQoZWx0KCJiciIpKTsKKyAgICAgICAgICAgIG1hcmtl
ckVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlx1MDBhMCIpKTsK
KyAgICAgICAgICB9CisgICAgICAgICAgaWYgKCFtYXJrZXIpIG5vcm1hbE5vZGUgPSBpOworICAg
ICAgICB9CisgICAgICAgICsraTsKKyAgICAgIH0pOworICAgICAgZ3V0dGVyLnN0eWxlLmRpc3Bs
YXkgPSAibm9uZSI7CisgICAgICByZW1vdmVDaGlsZHJlbkFuZEFkZChndXR0ZXJUZXh0LCBmcmFn
bWVudCk7CisgICAgICAvLyBNYWtlIHN1cmUgc2Nyb2xsaW5nIGRvZXNuJ3QgY2F1c2UgbnVtYmVy
IGd1dHRlciBzaXplIHRvIHBvcAorICAgICAgaWYgKG5vcm1hbE5vZGUgIT0gbnVsbCAmJiBvcHRp
b25zLmxpbmVOdW1iZXJzKSB7CisgICAgICAgIHZhciBub2RlID0gZ3V0dGVyVGV4dC5jaGlsZE5v
ZGVzW25vcm1hbE5vZGUgLSBzaG93aW5nRnJvbV07CisgICAgICAgIHZhciBtaW53aWR0aCA9IFN0
cmluZyhkb2Muc2l6ZSkubGVuZ3RoLCB2YWwgPSBlbHRUZXh0KG5vZGUuZmlyc3RDaGlsZCksIHBh
ZCA9ICIiOworICAgICAgICB3aGlsZSAodmFsLmxlbmd0aCArIHBhZC5sZW5ndGggPCBtaW53aWR0
aCkgcGFkICs9ICJcdTAwYTAiOworICAgICAgICBpZiAocGFkKSBub2RlLmluc2VydEJlZm9yZShk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZShwYWQpLCBub2RlLmZpcnN0Q2hpbGQpOworICAgICAgfQor
ICAgICAgZ3V0dGVyLnN0eWxlLmRpc3BsYXkgPSAiIjsKKyAgICAgIHZhciByZXNpemVkID0gTWF0
aC5hYnMoKHBhcnNlSW50KGxpbmVTcGFjZS5zdHlsZS5tYXJnaW5MZWZ0KSB8fCAwKSAtIGd1dHRl
ci5vZmZzZXRXaWR0aCkgPiAyOworICAgICAgbGluZVNwYWNlLnN0eWxlLm1hcmdpbkxlZnQgPSBn
dXR0ZXIub2Zmc2V0V2lkdGggKyAicHgiOworICAgICAgZ3V0dGVyRGlydHkgPSBmYWxzZTsKKyAg
ICAgIHJldHVybiByZXNpemVkOworICAgIH0KKyAgICBmdW5jdGlvbiB1cGRhdGVTZWxlY3Rpb24o
KSB7CisgICAgICB2YXIgY29sbGFwc2VkID0gcG9zRXEoc2VsLmZyb20sIHNlbC50byk7CisgICAg
ICB2YXIgZnJvbVBvcyA9IGxvY2FsQ29vcmRzKHNlbC5mcm9tLCB0cnVlKTsKKyAgICAgIHZhciB0
b1BvcyA9IGNvbGxhcHNlZCA/IGZyb21Qb3MgOiBsb2NhbENvb3JkcyhzZWwudG8sIHRydWUpOwor
ICAgICAgdmFyIGhlYWRQb3MgPSBzZWwuaW52ZXJ0ZWQgPyBmcm9tUG9zIDogdG9Qb3MsIHRoID0g
dGV4dEhlaWdodCgpOworICAgICAgdmFyIHdyYXBPZmYgPSBlbHRPZmZzZXQod3JhcHBlciksIGxp
bmVPZmYgPSBlbHRPZmZzZXQobGluZURpdik7CisgICAgICBpbnB1dERpdi5zdHlsZS50b3AgPSBN
YXRoLm1heCgwLCBNYXRoLm1pbihzY3JvbGxlci5vZmZzZXRIZWlnaHQsIGhlYWRQb3MueSArIGxp
bmVPZmYudG9wIC0gd3JhcE9mZi50b3ApKSArICJweCI7CisgICAgICBpbnB1dERpdi5zdHlsZS5s
ZWZ0ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oc2Nyb2xsZXIub2Zmc2V0V2lkdGgsIGhlYWRQb3Mu
eCArIGxpbmVPZmYubGVmdCAtIHdyYXBPZmYubGVmdCkpICsgInB4IjsKKyAgICAgIGlmIChjb2xs
YXBzZWQpIHsKKyAgICAgICAgY3Vyc29yLnN0eWxlLnRvcCA9IGhlYWRQb3MueSArICJweCI7Cisg
ICAgICAgIGN1cnNvci5zdHlsZS5sZWZ0ID0gKG9wdGlvbnMubGluZVdyYXBwaW5nID8gTWF0aC5t
aW4oaGVhZFBvcy54LCBsaW5lU3BhY2Uub2Zmc2V0V2lkdGgpIDogaGVhZFBvcy54KSArICJweCI7
CisgICAgICAgIGN1cnNvci5zdHlsZS5kaXNwbGF5ID0gIiI7CisgICAgICAgIHNlbGVjdGlvbkRp
di5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIHNh
bWVMaW5lID0gZnJvbVBvcy55ID09IHRvUG9zLnksIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RG9jdW1lbnRGcmFnbWVudCgpOworICAgICAgICB2YXIgY2xpZW50V2lkdGggPSBsaW5lU3BhY2Uu
Y2xpZW50V2lkdGggfHwgbGluZVNwYWNlLm9mZnNldFdpZHRoOworICAgICAgICB2YXIgY2xpZW50
SGVpZ2h0ID0gbGluZVNwYWNlLmNsaWVudEhlaWdodCB8fCBsaW5lU3BhY2Uub2Zmc2V0SGVpZ2h0
OworICAgICAgICB2YXIgYWRkID0gZnVuY3Rpb24obGVmdCwgdG9wLCByaWdodCwgaGVpZ2h0KSB7
CisgICAgICAgICAgdmFyIHJzdHlsZSA9IHF1aXJrc01vZGUgPyAid2lkdGg6ICIgKyAoIXJpZ2h0
ID8gY2xpZW50V2lkdGggOiBjbGllbnRXaWR0aCAtIHJpZ2h0IC0gbGVmdCkgKyAicHgiCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAicmlnaHQ6ICIgKyByaWdodCArICJweCI7
CisgICAgICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZWx0KCJkaXYiLCBudWxsLCAiQ29kZU1p
cnJvci1zZWxlY3RlZCIsICJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6ICIgKyBsZWZ0ICsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB4OyB0b3A6ICIgKyB0b3AgKyAicHg7
ICIgKyByc3R5bGUgKyAiOyBoZWlnaHQ6ICIgKyBoZWlnaHQgKyAicHgiKSk7CisgICAgICAgIH07
CisgICAgICAgIGlmIChzZWwuZnJvbS5jaCAmJiBmcm9tUG9zLnkgPj0gMCkgeworICAgICAgICAg
IHZhciByaWdodCA9IHNhbWVMaW5lID8gY2xpZW50V2lkdGggLSB0b1Bvcy54IDogMDsKKyAgICAg
ICAgICBhZGQoZnJvbVBvcy54LCBmcm9tUG9zLnksIHJpZ2h0LCB0aCk7CisgICAgICAgIH0KKyAg
ICAgICAgdmFyIG1pZGRsZVN0YXJ0ID0gTWF0aC5tYXgoMCwgZnJvbVBvcy55ICsgKHNlbC5mcm9t
LmNoID8gdGggOiAwKSk7CisgICAgICAgIHZhciBtaWRkbGVIZWlnaHQgPSBNYXRoLm1pbih0b1Bv
cy55LCBjbGllbnRIZWlnaHQpIC0gbWlkZGxlU3RhcnQ7CisgICAgICAgIGlmIChtaWRkbGVIZWln
aHQgPiAwLjIgKiB0aCkKKyAgICAgICAgICBhZGQoMCwgbWlkZGxlU3RhcnQsIDAsIG1pZGRsZUhl
aWdodCk7CisgICAgICAgIGlmICgoIXNhbWVMaW5lIHx8ICFzZWwuZnJvbS5jaCkgJiYgdG9Qb3Mu
eSA8IGNsaWVudEhlaWdodCAtIC41ICogdGgpCisgICAgICAgICAgYWRkKDAsIHRvUG9zLnksIGNs
aWVudFdpZHRoIC0gdG9Qb3MueCwgdGgpOworICAgICAgICByZW1vdmVDaGlsZHJlbkFuZEFkZChz
ZWxlY3Rpb25EaXYsIGZyYWdtZW50KTsKKyAgICAgICAgY3Vyc29yLnN0eWxlLmRpc3BsYXkgPSAi
bm9uZSI7CisgICAgICAgIHNlbGVjdGlvbkRpdi5zdHlsZS5kaXNwbGF5ID0gIiI7CisgICAgICB9
CisgICAgfQorCisgICAgZnVuY3Rpb24gc2V0U2hpZnQodmFsKSB7CisgICAgICBpZiAodmFsKSBz
aGlmdFNlbGVjdGluZyA9IHNoaWZ0U2VsZWN0aW5nIHx8IChzZWwuaW52ZXJ0ZWQgPyBzZWwudG8g
OiBzZWwuZnJvbSk7CisgICAgICBlbHNlIHNoaWZ0U2VsZWN0aW5nID0gbnVsbDsKKyAgICB9Cisg
ICAgZnVuY3Rpb24gc2V0U2VsZWN0aW9uVXNlcihmcm9tLCB0bykgeworICAgICAgdmFyIHNoID0g
c2hpZnRTZWxlY3RpbmcgJiYgY2xpcFBvcyhzaGlmdFNlbGVjdGluZyk7CisgICAgICBpZiAoc2gp
IHsKKyAgICAgICAgaWYgKHBvc0xlc3Moc2gsIGZyb20pKSBmcm9tID0gc2g7CisgICAgICAgIGVs
c2UgaWYgKHBvc0xlc3ModG8sIHNoKSkgdG8gPSBzaDsKKyAgICAgIH0KKyAgICAgIHNldFNlbGVj
dGlvbihmcm9tLCB0byk7CisgICAgICB1c2VyU2VsQ2hhbmdlID0gdHJ1ZTsKKyAgICB9CisgICAg
Ly8gVXBkYXRlIHRoZSBzZWxlY3Rpb24uIExhc3QgdHdvIGFyZ3MgYXJlIG9ubHkgdXNlZCBieQor
ICAgIC8vIHVwZGF0ZUxpbmVzLCBzaW5jZSB0aGV5IGhhdmUgdG8gYmUgZXhwcmVzc2VkIGluIHRo
ZSBsaW5lCisgICAgLy8gbnVtYmVycyBiZWZvcmUgdGhlIHVwZGF0ZS4KKyAgICBmdW5jdGlvbiBz
ZXRTZWxlY3Rpb24oZnJvbSwgdG8sIG9sZEZyb20sIG9sZFRvKSB7CisgICAgICBnb2FsQ29sdW1u
ID0gbnVsbDsKKyAgICAgIGlmIChvbGRGcm9tID09IG51bGwpIHtvbGRGcm9tID0gc2VsLmZyb20u
bGluZTsgb2xkVG8gPSBzZWwudG8ubGluZTt9CisgICAgICBpZiAocG9zRXEoc2VsLmZyb20sIGZy
b20pICYmIHBvc0VxKHNlbC50bywgdG8pKSByZXR1cm47CisgICAgICBpZiAocG9zTGVzcyh0bywg
ZnJvbSkpIHt2YXIgdG1wID0gdG87IHRvID0gZnJvbTsgZnJvbSA9IHRtcDt9CisKKyAgICAgIC8v
IFNraXAgb3ZlciBoaWRkZW4gbGluZXMuCisgICAgICBpZiAoZnJvbS5saW5lICE9IG9sZEZyb20p
IHsKKyAgICAgICAgdmFyIGZyb20xID0gc2tpcEhpZGRlbihmcm9tLCBvbGRGcm9tLCBzZWwuZnJv
bS5jaCk7CisgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIG5vbi1oaWRkZW4gbGluZSBsZWZ0LCBm
b3JjZSB2aXNpYmlsaXR5IG9uIGN1cnJlbnQgbGluZQorICAgICAgICBpZiAoIWZyb20xKSBzZXRM
aW5lSGlkZGVuKGZyb20ubGluZSwgZmFsc2UpOworICAgICAgICBlbHNlIGZyb20gPSBmcm9tMTsK
KyAgICAgIH0KKyAgICAgIGlmICh0by5saW5lICE9IG9sZFRvKSB0byA9IHNraXBIaWRkZW4odG8s
IG9sZFRvLCBzZWwudG8uY2gpOworCisgICAgICBpZiAocG9zRXEoZnJvbSwgdG8pKSBzZWwuaW52
ZXJ0ZWQgPSBmYWxzZTsKKyAgICAgIGVsc2UgaWYgKHBvc0VxKGZyb20sIHNlbC50bykpIHNlbC5p
bnZlcnRlZCA9IGZhbHNlOworICAgICAgZWxzZSBpZiAocG9zRXEodG8sIHNlbC5mcm9tKSkgc2Vs
LmludmVydGVkID0gdHJ1ZTsKKworICAgICAgaWYgKG9wdGlvbnMuYXV0b0NsZWFyRW1wdHlMaW5l
cyAmJiBwb3NFcShzZWwuZnJvbSwgc2VsLnRvKSkgeworICAgICAgICB2YXIgaGVhZCA9IHNlbC5p
bnZlcnRlZCA/IGZyb20gOiB0bzsKKyAgICAgICAgaWYgKGhlYWQubGluZSAhPSBzZWwuZnJvbS5s
aW5lICYmIHNlbC5mcm9tLmxpbmUgPCBkb2Muc2l6ZSkgeworICAgICAgICAgIHZhciBvbGRMaW5l
ID0gZ2V0TGluZShzZWwuZnJvbS5saW5lKTsKKyAgICAgICAgICBpZiAoL15ccyskLy50ZXN0KG9s
ZExpbmUudGV4dCkpCisgICAgICAgICAgICBzZXRUaW1lb3V0KG9wZXJhdGlvbihmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgaWYgKG9sZExpbmUucGFyZW50ICYmIC9eXHMrJC8udGVzdChvbGRM
aW5lLnRleHQpKSB7CisgICAgICAgICAgICAgICAgdmFyIG5vID0gbGluZU5vKG9sZExpbmUpOwor
ICAgICAgICAgICAgICAgIHJlcGxhY2VSYW5nZSgiIiwge2xpbmU6IG5vLCBjaDogMH0sIHtsaW5l
OiBubywgY2g6IG9sZExpbmUudGV4dC5sZW5ndGh9KTsKKyAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSwgMTApKTsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICBzZWwuZnJvbSA9IGZy
b207IHNlbC50byA9IHRvOworICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7CisgICAgfQor
ICAgIGZ1bmN0aW9uIHNraXBIaWRkZW4ocG9zLCBvbGRMaW5lLCBvbGRDaCkgeworICAgICAgZnVu
Y3Rpb24gZ2V0Tm9uSGlkZGVuKGRpcikgeworICAgICAgICB2YXIgbE5vID0gcG9zLmxpbmUgKyBk
aXIsIGVuZCA9IGRpciA9PSAxID8gZG9jLnNpemUgOiAtMTsKKyAgICAgICAgd2hpbGUgKGxObyAh
PSBlbmQpIHsKKyAgICAgICAgICB2YXIgbGluZSA9IGdldExpbmUobE5vKTsKKyAgICAgICAgICBp
ZiAoIWxpbmUuaGlkZGVuKSB7CisgICAgICAgICAgICB2YXIgY2ggPSBwb3MuY2g7CisgICAgICAg
ICAgICBpZiAodG9FbmQgfHwgY2ggPiBvbGRDaCB8fCBjaCA+IGxpbmUudGV4dC5sZW5ndGgpIGNo
ID0gbGluZS50ZXh0Lmxlbmd0aDsKKyAgICAgICAgICAgIHJldHVybiB7bGluZTogbE5vLCBjaDog
Y2h9OworICAgICAgICAgIH0KKyAgICAgICAgICBsTm8gKz0gZGlyOworICAgICAgICB9CisgICAg
ICB9CisgICAgICB2YXIgbGluZSA9IGdldExpbmUocG9zLmxpbmUpOworICAgICAgdmFyIHRvRW5k
ID0gcG9zLmNoID09IGxpbmUudGV4dC5sZW5ndGggJiYgcG9zLmNoICE9IG9sZENoOworICAgICAg
aWYgKCFsaW5lLmhpZGRlbikgcmV0dXJuIHBvczsKKyAgICAgIGlmIChwb3MubGluZSA+PSBvbGRM
aW5lKSByZXR1cm4gZ2V0Tm9uSGlkZGVuKDEpIHx8IGdldE5vbkhpZGRlbigtMSk7CisgICAgICBl
bHNlIHJldHVybiBnZXROb25IaWRkZW4oLTEpIHx8IGdldE5vbkhpZGRlbigxKTsKKyAgICB9Cisg
ICAgZnVuY3Rpb24gc2V0Q3Vyc29yKGxpbmUsIGNoLCB1c2VyKSB7CisgICAgICB2YXIgcG9zID0g
Y2xpcFBvcyh7bGluZTogbGluZSwgY2g6IGNoIHx8IDB9KTsKKyAgICAgICh1c2VyID8gc2V0U2Vs
ZWN0aW9uVXNlciA6IHNldFNlbGVjdGlvbikocG9zLCBwb3MpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIGNsaXBMaW5lKG4pIHtyZXR1cm4gTWF0aC5tYXgoMCwgTWF0aC5taW4obiwgZG9jLnNpemUt
MSkpO30KKyAgICBmdW5jdGlvbiBjbGlwUG9zKHBvcykgeworICAgICAgaWYgKHBvcy5saW5lIDwg
MCkgcmV0dXJuIHtsaW5lOiAwLCBjaDogMH07CisgICAgICBpZiAocG9zLmxpbmUgPj0gZG9jLnNp
emUpIHJldHVybiB7bGluZTogZG9jLnNpemUtMSwgY2g6IGdldExpbmUoZG9jLnNpemUtMSkudGV4
dC5sZW5ndGh9OworICAgICAgdmFyIGNoID0gcG9zLmNoLCBsaW5lbGVuID0gZ2V0TGluZShwb3Mu
bGluZSkudGV4dC5sZW5ndGg7CisgICAgICBpZiAoY2ggPT0gbnVsbCB8fCBjaCA+IGxpbmVsZW4p
IHJldHVybiB7bGluZTogcG9zLmxpbmUsIGNoOiBsaW5lbGVufTsKKyAgICAgIGVsc2UgaWYgKGNo
IDwgMCkgcmV0dXJuIHtsaW5lOiBwb3MubGluZSwgY2g6IDB9OworICAgICAgZWxzZSByZXR1cm4g
cG9zOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmRQb3NIKGRpciwgdW5pdCkgeworICAgICAg
dmFyIGVuZCA9IHNlbC5pbnZlcnRlZCA/IHNlbC5mcm9tIDogc2VsLnRvLCBsaW5lID0gZW5kLmxp
bmUsIGNoID0gZW5kLmNoOworICAgICAgdmFyIGxpbmVPYmogPSBnZXRMaW5lKGxpbmUpOworICAg
ICAgZnVuY3Rpb24gZmluZE5leHRMaW5lKCkgeworICAgICAgICBmb3IgKHZhciBsID0gbGluZSAr
IGRpciwgZSA9IGRpciA8IDAgPyAtMSA6IGRvYy5zaXplOyBsICE9IGU7IGwgKz0gZGlyKSB7Cisg
ICAgICAgICAgdmFyIGxvID0gZ2V0TGluZShsKTsKKyAgICAgICAgICBpZiAoIWxvLmhpZGRlbikg
eyBsaW5lID0gbDsgbGluZU9iaiA9IGxvOyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB9CisgICAg
ICB9CisgICAgICBmdW5jdGlvbiBtb3ZlT25jZShib3VuZFRvTGluZSkgeworICAgICAgICBpZiAo
Y2ggPT0gKGRpciA8IDAgPyAwIDogbGluZU9iai50ZXh0Lmxlbmd0aCkpIHsKKyAgICAgICAgICBp
ZiAoIWJvdW5kVG9MaW5lICYmIGZpbmROZXh0TGluZSgpKSBjaCA9IGRpciA8IDAgPyBsaW5lT2Jq
LnRleHQubGVuZ3RoIDogMDsKKyAgICAgICAgICBlbHNlIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fSBlbHNlIGNoICs9IGRpcjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9CisgICAgICBp
ZiAodW5pdCA9PSAiY2hhciIpIG1vdmVPbmNlKCk7CisgICAgICBlbHNlIGlmICh1bml0ID09ICJj
b2x1bW4iKSBtb3ZlT25jZSh0cnVlKTsKKyAgICAgIGVsc2UgaWYgKHVuaXQgPT0gIndvcmQiKSB7
CisgICAgICAgIHZhciBzYXdXb3JkID0gZmFsc2U7CisgICAgICAgIGZvciAoOzspIHsKKyAgICAg
ICAgICBpZiAoZGlyIDwgMCkgaWYgKCFtb3ZlT25jZSgpKSBicmVhazsKKyAgICAgICAgICBpZiAo
aXNXb3JkQ2hhcihsaW5lT2JqLnRleHQuY2hhckF0KGNoKSkpIHNhd1dvcmQgPSB0cnVlOworICAg
ICAgICAgIGVsc2UgaWYgKHNhd1dvcmQpIHtpZiAoZGlyIDwgMCkge2RpciA9IDE7IG1vdmVPbmNl
KCk7fSBicmVhazt9CisgICAgICAgICAgaWYgKGRpciA+IDApIGlmICghbW92ZU9uY2UoKSkgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHJldHVybiB7bGluZTogbGluZSwgY2g6IGNo
fTsKKyAgICB9CisgICAgZnVuY3Rpb24gbW92ZUgoZGlyLCB1bml0KSB7CisgICAgICB2YXIgcG9z
ID0gZGlyIDwgMCA/IHNlbC5mcm9tIDogc2VsLnRvOworICAgICAgaWYgKHNoaWZ0U2VsZWN0aW5n
IHx8IHBvc0VxKHNlbC5mcm9tLCBzZWwudG8pKSBwb3MgPSBmaW5kUG9zSChkaXIsIHVuaXQpOwor
ICAgICAgc2V0Q3Vyc29yKHBvcy5saW5lLCBwb3MuY2gsIHRydWUpOworICAgIH0KKyAgICBmdW5j
dGlvbiBkZWxldGVIKGRpciwgdW5pdCkgeworICAgICAgaWYgKCFwb3NFcShzZWwuZnJvbSwgc2Vs
LnRvKSkgcmVwbGFjZVJhbmdlKCIiLCBzZWwuZnJvbSwgc2VsLnRvKTsKKyAgICAgIGVsc2UgaWYg
KGRpciA8IDApIHJlcGxhY2VSYW5nZSgiIiwgZmluZFBvc0goZGlyLCB1bml0KSwgc2VsLnRvKTsK
KyAgICAgIGVsc2UgcmVwbGFjZVJhbmdlKCIiLCBzZWwuZnJvbSwgZmluZFBvc0goZGlyLCB1bml0
KSk7CisgICAgICB1c2VyU2VsQ2hhbmdlID0gdHJ1ZTsKKyAgICB9CisgICAgZnVuY3Rpb24gbW92
ZVYoZGlyLCB1bml0KSB7CisgICAgICB2YXIgZGlzdCA9IDAsIHBvcyA9IGxvY2FsQ29vcmRzKHNl
bC5pbnZlcnRlZCA/IHNlbC5mcm9tIDogc2VsLnRvLCB0cnVlKTsKKyAgICAgIGlmIChnb2FsQ29s
dW1uICE9IG51bGwpIHBvcy54ID0gZ29hbENvbHVtbjsKKyAgICAgIGlmICh1bml0ID09ICJwYWdl
IikgZGlzdCA9IE1hdGgubWluKHNjcm9sbGVyLmNsaWVudEhlaWdodCwgd2luZG93LmlubmVySGVp
Z2h0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpOworICAgICAgZWxz
ZSBpZiAodW5pdCA9PSAibGluZSIpIGRpc3QgPSB0ZXh0SGVpZ2h0KCk7CisgICAgICB2YXIgdGFy
Z2V0ID0gY29vcmRzQ2hhcihwb3MueCwgcG9zLnkgKyBkaXN0ICogZGlyICsgMik7CisgICAgICBp
ZiAodW5pdCA9PSAicGFnZSIpIHNjcm9sbGJhci5zY3JvbGxUb3AgKz0gbG9jYWxDb29yZHModGFy
Z2V0LCB0cnVlKS55IC0gcG9zLnk7CisgICAgICBzZXRDdXJzb3IodGFyZ2V0LmxpbmUsIHRhcmdl
dC5jaCwgdHJ1ZSk7CisgICAgICBnb2FsQ29sdW1uID0gcG9zLng7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gZmluZFdvcmRBdChwb3MpIHsKKyAgICAgIHZhciBsaW5lID0gZ2V0TGluZShwb3MubGlu
ZSkudGV4dDsKKyAgICAgIHZhciBzdGFydCA9IHBvcy5jaCwgZW5kID0gcG9zLmNoOworICAgICAg
aWYgKGxpbmUpIHsKKyAgICAgICAgaWYgKHBvcy5hZnRlciA9PT0gZmFsc2UgfHwgZW5kID09IGxp
bmUubGVuZ3RoKSAtLXN0YXJ0OyBlbHNlICsrZW5kOworICAgICAgICB2YXIgc3RhcnRDaGFyID0g
bGluZS5jaGFyQXQoc3RhcnQpOworICAgICAgICB2YXIgY2hlY2sgPSBpc1dvcmRDaGFyKHN0YXJ0
Q2hhcikgPyBpc1dvcmRDaGFyIDoKKyAgICAgICAgICAgICAgICAgICAgL1xzLy50ZXN0KHN0YXJ0
Q2hhcikgPyBmdW5jdGlvbihjaCkge3JldHVybiAvXHMvLnRlc3QoY2gpO30gOgorICAgICAgICAg
ICAgICAgICAgICBmdW5jdGlvbihjaCkge3JldHVybiAhL1xzLy50ZXN0KGNoKSAmJiAhaXNXb3Jk
Q2hhcihjaCk7fTsKKyAgICAgICAgd2hpbGUgKHN0YXJ0ID4gMCAmJiBjaGVjayhsaW5lLmNoYXJB
dChzdGFydCAtIDEpKSkgLS1zdGFydDsKKyAgICAgICAgd2hpbGUgKGVuZCA8IGxpbmUubGVuZ3Ro
ICYmIGNoZWNrKGxpbmUuY2hhckF0KGVuZCkpKSArK2VuZDsKKyAgICAgIH0KKyAgICAgIHJldHVy
biB7ZnJvbToge2xpbmU6IHBvcy5saW5lLCBjaDogc3RhcnR9LCB0bzoge2xpbmU6IHBvcy5saW5l
LCBjaDogZW5kfX07CisgICAgfQorICAgIGZ1bmN0aW9uIHNlbGVjdExpbmUobGluZSkgeworICAg
ICAgc2V0U2VsZWN0aW9uVXNlcih7bGluZTogbGluZSwgY2g6IDB9LCBjbGlwUG9zKHtsaW5lOiBs
aW5lICsgMSwgY2g6IDB9KSk7CisgICAgfQorICAgIGZ1bmN0aW9uIGluZGVudFNlbGVjdGVkKG1v
ZGUpIHsKKyAgICAgIGlmIChwb3NFcShzZWwuZnJvbSwgc2VsLnRvKSkgcmV0dXJuIGluZGVudExp
bmUoc2VsLmZyb20ubGluZSwgbW9kZSk7CisgICAgICB2YXIgZSA9IHNlbC50by5saW5lIC0gKHNl
bC50by5jaCA/IDAgOiAxKTsKKyAgICAgIGZvciAodmFyIGkgPSBzZWwuZnJvbS5saW5lOyBpIDw9
IGU7ICsraSkgaW5kZW50TGluZShpLCBtb2RlKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBpbmRl
bnRMaW5lKG4sIGhvdykgeworICAgICAgaWYgKCFob3cpIGhvdyA9ICJhZGQiOworICAgICAgaWYg
KGhvdyA9PSAic21hcnQiKSB7CisgICAgICAgIGlmICghbW9kZS5pbmRlbnQpIGhvdyA9ICJwcmV2
IjsKKyAgICAgICAgZWxzZSB2YXIgc3RhdGUgPSBnZXRTdGF0ZUJlZm9yZShuKTsKKyAgICAgIH0K
KworICAgICAgdmFyIGxpbmUgPSBnZXRMaW5lKG4pLCBjdXJTcGFjZSA9IGxpbmUuaW5kZW50YXRp
b24ob3B0aW9ucy50YWJTaXplKSwKKyAgICAgICAgICBjdXJTcGFjZVN0cmluZyA9IGxpbmUudGV4
dC5tYXRjaCgvXlxzKi8pWzBdLCBpbmRlbnRhdGlvbjsKKyAgICAgIGlmIChob3cgPT0gInNtYXJ0
IikgeworICAgICAgICBpbmRlbnRhdGlvbiA9IG1vZGUuaW5kZW50KHN0YXRlLCBsaW5lLnRleHQu
c2xpY2UoY3VyU3BhY2VTdHJpbmcubGVuZ3RoKSwgbGluZS50ZXh0KTsKKyAgICAgICAgaWYgKGlu
ZGVudGF0aW9uID09IFBhc3MpIGhvdyA9ICJwcmV2IjsKKyAgICAgIH0KKyAgICAgIGlmIChob3cg
PT0gInByZXYiKSB7CisgICAgICAgIGlmIChuKSBpbmRlbnRhdGlvbiA9IGdldExpbmUobi0xKS5p
bmRlbnRhdGlvbihvcHRpb25zLnRhYlNpemUpOworICAgICAgICBlbHNlIGluZGVudGF0aW9uID0g
MDsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKGhvdyA9PSAiYWRkIikgaW5kZW50YXRpb24gPSBj
dXJTcGFjZSArIG9wdGlvbnMuaW5kZW50VW5pdDsKKyAgICAgIGVsc2UgaWYgKGhvdyA9PSAic3Vi
dHJhY3QiKSBpbmRlbnRhdGlvbiA9IGN1clNwYWNlIC0gb3B0aW9ucy5pbmRlbnRVbml0OworICAg
ICAgaW5kZW50YXRpb24gPSBNYXRoLm1heCgwLCBpbmRlbnRhdGlvbik7CisgICAgICB2YXIgZGlm
ZiA9IGluZGVudGF0aW9uIC0gY3VyU3BhY2U7CisKKyAgICAgIHZhciBpbmRlbnRTdHJpbmcgPSAi
IiwgcG9zID0gMDsKKyAgICAgIGlmIChvcHRpb25zLmluZGVudFdpdGhUYWJzKQorICAgICAgICBm
b3IgKHZhciBpID0gTWF0aC5mbG9vcihpbmRlbnRhdGlvbiAvIG9wdGlvbnMudGFiU2l6ZSk7IGk7
IC0taSkge3BvcyArPSBvcHRpb25zLnRhYlNpemU7IGluZGVudFN0cmluZyArPSAiXHQiO30KKyAg
ICAgIHdoaWxlIChwb3MgPCBpbmRlbnRhdGlvbikgeysrcG9zOyBpbmRlbnRTdHJpbmcgKz0gIiAi
O30KKworICAgICAgcmVwbGFjZVJhbmdlKGluZGVudFN0cmluZywge2xpbmU6IG4sIGNoOiAwfSwg
e2xpbmU6IG4sIGNoOiBjdXJTcGFjZVN0cmluZy5sZW5ndGh9KTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBsb2FkTW9kZSgpIHsKKyAgICAgIG1vZGUgPSBDb2RlTWlycm9yLmdldE1vZGUob3B0aW9u
cywgb3B0aW9ucy5tb2RlKTsKKyAgICAgIGRvYy5pdGVyKDAsIGRvYy5zaXplLCBmdW5jdGlvbihs
aW5lKSB7IGxpbmUuc3RhdGVBZnRlciA9IG51bGw7IH0pOworICAgICAgd29yayA9IFswXTsKKyAg
ICAgIHN0YXJ0V29ya2VyKCk7CisgICAgfQorICAgIGZ1bmN0aW9uIGd1dHRlckNoYW5nZWQoKSB7
CisgICAgICB2YXIgdmlzaWJsZSA9IG9wdGlvbnMuZ3V0dGVyIHx8IG9wdGlvbnMubGluZU51bWJl
cnM7CisgICAgICBndXR0ZXIuc3R5bGUuZGlzcGxheSA9IHZpc2libGUgPyAiIiA6ICJub25lIjsK
KyAgICAgIGlmICh2aXNpYmxlKSBndXR0ZXJEaXJ0eSA9IHRydWU7CisgICAgICBlbHNlIGxpbmVE
aXYucGFyZW50Tm9kZS5zdHlsZS5tYXJnaW5MZWZ0ID0gMDsKKyAgICB9CisgICAgZnVuY3Rpb24g
d3JhcHBpbmdDaGFuZ2VkKGZyb20sIHRvKSB7CisgICAgICBpZiAob3B0aW9ucy5saW5lV3JhcHBp
bmcpIHsKKyAgICAgICAgd3JhcHBlci5jbGFzc05hbWUgKz0gIiBDb2RlTWlycm9yLXdyYXAiOwor
ICAgICAgICB2YXIgcGVyTGluZSA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gY2hhcldpZHRoKCkg
LSAzOworICAgICAgICBkb2MuaXRlcigwLCBkb2Muc2l6ZSwgZnVuY3Rpb24obGluZSkgeworICAg
ICAgICAgIGlmIChsaW5lLmhpZGRlbikgcmV0dXJuOworICAgICAgICAgIHZhciBndWVzcyA9IE1h
dGguY2VpbChsaW5lLnRleHQubGVuZ3RoIC8gcGVyTGluZSkgfHwgMTsKKyAgICAgICAgICBpZiAo
Z3Vlc3MgIT0gMSkgdXBkYXRlTGluZUhlaWdodChsaW5lLCBndWVzcyk7CisgICAgICAgIH0pOwor
ICAgICAgICBsaW5lU3BhY2Uuc3R5bGUubWluV2lkdGggPSB3aWR0aEZvcmNlci5zdHlsZS5sZWZ0
ID0gIiI7CisgICAgICB9IGVsc2UgeworICAgICAgICB3cmFwcGVyLmNsYXNzTmFtZSA9IHdyYXBw
ZXIuY2xhc3NOYW1lLnJlcGxhY2UoIiBDb2RlTWlycm9yLXdyYXAiLCAiIik7CisgICAgICAgIGNv
bXB1dGVNYXhMZW5ndGgoKTsKKyAgICAgICAgZG9jLml0ZXIoMCwgZG9jLnNpemUsIGZ1bmN0aW9u
KGxpbmUpIHsKKyAgICAgICAgICBpZiAobGluZS5oZWlnaHQgIT0gMSAmJiAhbGluZS5oaWRkZW4p
IHVwZGF0ZUxpbmVIZWlnaHQobGluZSwgMSk7CisgICAgICAgIH0pOworICAgICAgfQorICAgICAg
Y2hhbmdlcy5wdXNoKHtmcm9tOiAwLCB0bzogZG9jLnNpemV9KTsKKyAgICB9CisgICAgZnVuY3Rp
b24gbWFrZVRhYihjb2wpIHsKKyAgICAgIHZhciB3ID0gb3B0aW9ucy50YWJTaXplIC0gY29sICUg
b3B0aW9ucy50YWJTaXplLCBjYWNoZWQgPSB0YWJDYWNoZVt3XTsKKyAgICAgIGlmIChjYWNoZWQp
IHJldHVybiBjYWNoZWQ7CisgICAgICBmb3IgKHZhciBzdHIgPSAiIiwgaSA9IDA7IGkgPCB3OyAr
K2kpIHN0ciArPSAiICI7CisgICAgICB2YXIgc3BhbiA9IGVsdCgic3BhbiIsIHN0ciwgImNtLXRh
YiIpOworICAgICAgcmV0dXJuICh0YWJDYWNoZVt3XSA9IHtlbGVtZW50OiBzcGFuLCB3aWR0aDog
d30pOworICAgIH0KKyAgICBmdW5jdGlvbiB0aGVtZUNoYW5nZWQoKSB7CisgICAgICBzY3JvbGxl
ci5jbGFzc05hbWUgPSBzY3JvbGxlci5jbGFzc05hbWUucmVwbGFjZSgvXHMqY20tcy1cUysvZywg
IiIpICsKKyAgICAgICAgb3B0aW9ucy50aGVtZS5yZXBsYWNlKC8oXnxccylccyovZywgIiBjbS1z
LSIpOworICAgIH0KKyAgICBmdW5jdGlvbiBrZXlNYXBDaGFuZ2VkKCkgeworICAgICAgdmFyIHN0
eWxlID0ga2V5TWFwW29wdGlvbnMua2V5TWFwXS5zdHlsZTsKKyAgICAgIHdyYXBwZXIuY2xhc3NO
YW1lID0gd3JhcHBlci5jbGFzc05hbWUucmVwbGFjZSgvXHMqY20ta2V5bWFwLVxTKy9nLCAiIikg
KworICAgICAgICAoc3R5bGUgPyAiIGNtLWtleW1hcC0iICsgc3R5bGUgOiAiIik7CisgICAgfQor
CisgICAgZnVuY3Rpb24gVGV4dE1hcmtlcigpIHsgdGhpcy5zZXQgPSBbXTsgfQorICAgIFRleHRN
YXJrZXIucHJvdG90eXBlLmNsZWFyID0gb3BlcmF0aW9uKGZ1bmN0aW9uKCkgeworICAgICAgdmFy
IG1pbiA9IEluZmluaXR5LCBtYXggPSAtSW5maW5pdHk7CisgICAgICBmb3IgKHZhciBpID0gMCwg
ZSA9IHRoaXMuc2V0Lmxlbmd0aDsgaSA8IGU7ICsraSkgeworICAgICAgICB2YXIgbGluZSA9IHRo
aXMuc2V0W2ldLCBtayA9IGxpbmUubWFya2VkOworICAgICAgICBpZiAoIW1rIHx8ICFsaW5lLnBh
cmVudCkgY29udGludWU7CisgICAgICAgIHZhciBsaW5lTiA9IGxpbmVObyhsaW5lKTsKKyAgICAg
ICAgbWluID0gTWF0aC5taW4obWluLCBsaW5lTik7IG1heCA9IE1hdGgubWF4KG1heCwgbGluZU4p
OworICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1rLmxlbmd0aDsgKytqKQorICAgICAgICAg
IGlmIChta1tqXS5tYXJrZXIgPT0gdGhpcykgbWsuc3BsaWNlKGotLSwgMSk7CisgICAgICB9Cisg
ICAgICBpZiAobWluICE9IEluZmluaXR5KQorICAgICAgICBjaGFuZ2VzLnB1c2goe2Zyb206IG1p
biwgdG86IG1heCArIDF9KTsKKyAgICB9KTsKKyAgICBUZXh0TWFya2VyLnByb3RvdHlwZS5maW5k
ID0gZnVuY3Rpb24oKSB7CisgICAgICB2YXIgZnJvbSwgdG87CisgICAgICBmb3IgKHZhciBpID0g
MCwgZSA9IHRoaXMuc2V0Lmxlbmd0aDsgaSA8IGU7ICsraSkgeworICAgICAgICB2YXIgbGluZSA9
IHRoaXMuc2V0W2ldLCBtayA9IGxpbmUubWFya2VkOworICAgICAgICBmb3IgKHZhciBqID0gMDsg
aiA8IG1rLmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgdmFyIG1hcmsgPSBta1tqXTsKKyAgICAg
ICAgICBpZiAobWFyay5tYXJrZXIgPT0gdGhpcykgeworICAgICAgICAgICAgaWYgKG1hcmsuZnJv
bSAhPSBudWxsIHx8IG1hcmsudG8gIT0gbnVsbCkgeworICAgICAgICAgICAgICB2YXIgZm91bmQg
PSBsaW5lTm8obGluZSk7CisgICAgICAgICAgICAgIGlmIChmb3VuZCAhPSBudWxsKSB7CisgICAg
ICAgICAgICAgICAgaWYgKG1hcmsuZnJvbSAhPSBudWxsKSBmcm9tID0ge2xpbmU6IGZvdW5kLCBj
aDogbWFyay5mcm9tfTsKKyAgICAgICAgICAgICAgICBpZiAobWFyay50byAhPSBudWxsKSB0byA9
IHtsaW5lOiBmb3VuZCwgY2g6IG1hcmsudG99OworICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICByZXR1cm4ge2Zyb206
IGZyb20sIHRvOiB0b307CisgICAgfTsKKworICAgIGZ1bmN0aW9uIG1hcmtUZXh0KGZyb20sIHRv
LCBjbGFzc05hbWUpIHsKKyAgICAgIGZyb20gPSBjbGlwUG9zKGZyb20pOyB0byA9IGNsaXBQb3Mo
dG8pOworICAgICAgdmFyIHRtID0gbmV3IFRleHRNYXJrZXIoKTsKKyAgICAgIGlmICghcG9zTGVz
cyhmcm9tLCB0bykpIHJldHVybiB0bTsKKyAgICAgIGZ1bmN0aW9uIGFkZChsaW5lLCBmcm9tLCB0
bywgY2xhc3NOYW1lKSB7CisgICAgICAgIGdldExpbmUobGluZSkuYWRkTWFyayhuZXcgTWFya2Vk
VGV4dChmcm9tLCB0bywgY2xhc3NOYW1lLCB0bSkpOworICAgICAgfQorICAgICAgaWYgKGZyb20u
bGluZSA9PSB0by5saW5lKSBhZGQoZnJvbS5saW5lLCBmcm9tLmNoLCB0by5jaCwgY2xhc3NOYW1l
KTsKKyAgICAgIGVsc2UgeworICAgICAgICBhZGQoZnJvbS5saW5lLCBmcm9tLmNoLCBudWxsLCBj
bGFzc05hbWUpOworICAgICAgICBmb3IgKHZhciBpID0gZnJvbS5saW5lICsgMSwgZSA9IHRvLmxp
bmU7IGkgPCBlOyArK2kpCisgICAgICAgICAgYWRkKGksIG51bGwsIG51bGwsIGNsYXNzTmFtZSk7
CisgICAgICAgIGFkZCh0by5saW5lLCBudWxsLCB0by5jaCwgY2xhc3NOYW1lKTsKKyAgICAgIH0K
KyAgICAgIGNoYW5nZXMucHVzaCh7ZnJvbTogZnJvbS5saW5lLCB0bzogdG8ubGluZSArIDF9KTsK
KyAgICAgIHJldHVybiB0bTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZXRCb29rbWFyayhwb3Mp
IHsKKyAgICAgIHBvcyA9IGNsaXBQb3MocG9zKTsKKyAgICAgIHZhciBibSA9IG5ldyBCb29rbWFy
ayhwb3MuY2gpOworICAgICAgZ2V0TGluZShwb3MubGluZSkuYWRkTWFyayhibSk7CisgICAgICBy
ZXR1cm4gYm07CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluZE1hcmtzQXQocG9zKSB7CisgICAg
ICBwb3MgPSBjbGlwUG9zKHBvcyk7CisgICAgICB2YXIgbWFya2VycyA9IFtdLCBtYXJrZWQgPSBn
ZXRMaW5lKHBvcy5saW5lKS5tYXJrZWQ7CisgICAgICBpZiAoIW1hcmtlZCkgcmV0dXJuIG1hcmtl
cnM7CisgICAgICBmb3IgKHZhciBpID0gMCwgZSA9IG1hcmtlZC5sZW5ndGg7IGkgPCBlOyArK2kp
IHsKKyAgICAgICAgdmFyIG0gPSBtYXJrZWRbaV07CisgICAgICAgIGlmICgobS5mcm9tID09IG51
bGwgfHwgbS5mcm9tIDw9IHBvcy5jaCkgJiYKKyAgICAgICAgICAgIChtLnRvID09IG51bGwgfHwg
bS50byA+PSBwb3MuY2gpKQorICAgICAgICAgIG1hcmtlcnMucHVzaChtLm1hcmtlciB8fCBtKTsK
KyAgICAgIH0KKyAgICAgIHJldHVybiBtYXJrZXJzOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFk
ZEd1dHRlck1hcmtlcihsaW5lLCB0ZXh0LCBjbGFzc05hbWUpIHsKKyAgICAgIGlmICh0eXBlb2Yg
bGluZSA9PSAibnVtYmVyIikgbGluZSA9IGdldExpbmUoY2xpcExpbmUobGluZSkpOworICAgICAg
bGluZS5ndXR0ZXJNYXJrZXIgPSB7dGV4dDogdGV4dCwgc3R5bGU6IGNsYXNzTmFtZX07CisgICAg
ICBndXR0ZXJEaXJ0eSA9IHRydWU7CisgICAgICByZXR1cm4gbGluZTsKKyAgICB9CisgICAgZnVu
Y3Rpb24gcmVtb3ZlR3V0dGVyTWFya2VyKGxpbmUpIHsKKyAgICAgIGlmICh0eXBlb2YgbGluZSA9
PSAibnVtYmVyIikgbGluZSA9IGdldExpbmUoY2xpcExpbmUobGluZSkpOworICAgICAgbGluZS5n
dXR0ZXJNYXJrZXIgPSBudWxsOworICAgICAgZ3V0dGVyRGlydHkgPSB0cnVlOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIGNoYW5nZUxpbmUoaGFuZGxlLCBvcCkgeworICAgICAgdmFyIG5vID0gaGFu
ZGxlLCBsaW5lID0gaGFuZGxlOworICAgICAgaWYgKHR5cGVvZiBoYW5kbGUgPT0gIm51bWJlciIp
IGxpbmUgPSBnZXRMaW5lKGNsaXBMaW5lKGhhbmRsZSkpOworICAgICAgZWxzZSBubyA9IGxpbmVO
byhoYW5kbGUpOworICAgICAgaWYgKG5vID09IG51bGwpIHJldHVybiBudWxsOworICAgICAgaWYg
KG9wKGxpbmUsIG5vKSkgY2hhbmdlcy5wdXNoKHtmcm9tOiBubywgdG86IG5vICsgMX0pOworICAg
ICAgZWxzZSByZXR1cm4gbnVsbDsKKyAgICAgIHJldHVybiBsaW5lOworICAgIH0KKyAgICBmdW5j
dGlvbiBzZXRMaW5lQ2xhc3MoaGFuZGxlLCBjbGFzc05hbWUsIGJnQ2xhc3NOYW1lKSB7CisgICAg
ICByZXR1cm4gY2hhbmdlTGluZShoYW5kbGUsIGZ1bmN0aW9uKGxpbmUpIHsKKyAgICAgICAgaWYg
KGxpbmUuY2xhc3NOYW1lICE9IGNsYXNzTmFtZSB8fCBsaW5lLmJnQ2xhc3NOYW1lICE9IGJnQ2xh
c3NOYW1lKSB7CisgICAgICAgICAgbGluZS5jbGFzc05hbWUgPSBjbGFzc05hbWU7CisgICAgICAg
ICAgbGluZS5iZ0NsYXNzTmFtZSA9IGJnQ2xhc3NOYW1lOworICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisgICAgICB9KTsKKyAgICB9CisgICAgZnVuY3Rpb24gc2V0TGluZUhpZGRl
bihoYW5kbGUsIGhpZGRlbikgeworICAgICAgcmV0dXJuIGNoYW5nZUxpbmUoaGFuZGxlLCBmdW5j
dGlvbihsaW5lLCBubykgeworICAgICAgICBpZiAobGluZS5oaWRkZW4gIT0gaGlkZGVuKSB7Cisg
ICAgICAgICAgbGluZS5oaWRkZW4gPSBoaWRkZW47CisgICAgICAgICAgaWYgKCFvcHRpb25zLmxp
bmVXcmFwcGluZykgeworICAgICAgICAgICAgaWYgKGhpZGRlbiAmJiBsaW5lLnRleHQubGVuZ3Ro
ID09IG1heExpbmUudGV4dC5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgdXBkYXRlTWF4TGluZSA9
IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCFoaWRkZW4gJiYgbGluZS50ZXh0Lmxlbmd0
aCA+IG1heExpbmUudGV4dC5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgbWF4TGluZSA9IGxpbmU7
IHVwZGF0ZU1heExpbmUgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAg
ICAgICAgdXBkYXRlTGluZUhlaWdodChsaW5lLCBoaWRkZW4gPyAwIDogMSk7CisgICAgICAgICAg
dmFyIGZsaW5lID0gc2VsLmZyb20ubGluZSwgdGxpbmUgPSBzZWwudG8ubGluZTsKKyAgICAgICAg
ICBpZiAoaGlkZGVuICYmIChmbGluZSA9PSBubyB8fCB0bGluZSA9PSBubykpIHsKKyAgICAgICAg
ICAgIHZhciBmcm9tID0gZmxpbmUgPT0gbm8gPyBza2lwSGlkZGVuKHtsaW5lOiBmbGluZSwgY2g6
IDB9LCBmbGluZSwgMCkgOiBzZWwuZnJvbTsKKyAgICAgICAgICAgIHZhciB0byA9IHRsaW5lID09
IG5vID8gc2tpcEhpZGRlbih7bGluZTogdGxpbmUsIGNoOiAwfSwgdGxpbmUsIDApIDogc2VsLnRv
OworICAgICAgICAgICAgLy8gQ2FuJ3QgaGlkZSB0aGUgbGFzdCB2aXNpYmxlIGxpbmUsIHdlJ2Qg
aGF2ZSBubyBwbGFjZSB0byBwdXQgdGhlIGN1cnNvcgorICAgICAgICAgICAgaWYgKCF0bykgcmV0
dXJuOworICAgICAgICAgICAgc2V0U2VsZWN0aW9uKGZyb20sIHRvKTsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgcmV0dXJuIChndXR0ZXJEaXJ0eSA9IHRydWUpOworICAgICAgICB9CisgICAgICB9
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBsaW5lSW5mbyhsaW5lKSB7CisgICAgICBpZiAodHlw
ZW9mIGxpbmUgPT0gIm51bWJlciIpIHsKKyAgICAgICAgaWYgKCFpc0xpbmUobGluZSkpIHJldHVy
biBudWxsOworICAgICAgICB2YXIgbiA9IGxpbmU7CisgICAgICAgIGxpbmUgPSBnZXRMaW5lKGxp
bmUpOworICAgICAgICBpZiAoIWxpbmUpIHJldHVybiBudWxsOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgdmFyIG4gPSBsaW5lTm8obGluZSk7CisgICAgICAgIGlmIChuID09IG51bGwpIHJldHVy
biBudWxsOworICAgICAgfQorICAgICAgdmFyIG1hcmtlciA9IGxpbmUuZ3V0dGVyTWFya2VyOwor
ICAgICAgcmV0dXJuIHtsaW5lOiBuLCBoYW5kbGU6IGxpbmUsIHRleHQ6IGxpbmUudGV4dCwgbWFy
a2VyVGV4dDogbWFya2VyICYmIG1hcmtlci50ZXh0LAorICAgICAgICAgICAgICBtYXJrZXJDbGFz
czogbWFya2VyICYmIG1hcmtlci5zdHlsZSwgbGluZUNsYXNzOiBsaW5lLmNsYXNzTmFtZSwgYmdD
bGFzczogbGluZS5iZ0NsYXNzTmFtZX07CisgICAgfQorCisgICAgLy8gVGhlc2UgYXJlIHVzZWQg
dG8gZ28gZnJvbSBwaXhlbCBwb3NpdGlvbnMgdG8gY2hhcmFjdGVyCisgICAgLy8gcG9zaXRpb25z
LCB0YWtpbmcgdmFyeWluZyBjaGFyYWN0ZXIgd2lkdGhzIGludG8gYWNjb3VudC4KKyAgICBmdW5j
dGlvbiBjaGFyRnJvbVgobGluZSwgeCkgeworICAgICAgaWYgKHggPD0gMCkgcmV0dXJuIDA7Cisg
ICAgICB2YXIgbGluZU9iaiA9IGdldExpbmUobGluZSksIHRleHQgPSBsaW5lT2JqLnRleHQ7Cisg
ICAgICBmdW5jdGlvbiBnZXRYKGxlbikgeworICAgICAgICByZXR1cm4gbWVhc3VyZUxpbmUobGlu
ZU9iaiwgbGVuKS5sZWZ0OworICAgICAgfQorICAgICAgdmFyIGZyb20gPSAwLCBmcm9tWCA9IDAs
IHRvID0gdGV4dC5sZW5ndGgsIHRvWDsKKyAgICAgIC8vIEd1ZXNzIGEgc3VpdGFibGUgdXBwZXIg
Ym91bmQgZm9yIG91ciBzZWFyY2guCisgICAgICB2YXIgZXN0aW1hdGVkID0gTWF0aC5taW4odG8s
IE1hdGguY2VpbCh4IC8gY2hhcldpZHRoKCkpKTsKKyAgICAgIGZvciAoOzspIHsKKyAgICAgICAg
dmFyIGVzdFggPSBnZXRYKGVzdGltYXRlZCk7CisgICAgICAgIGlmIChlc3RYIDw9IHggJiYgZXN0
aW1hdGVkIDwgdG8pIGVzdGltYXRlZCA9IE1hdGgubWluKHRvLCBNYXRoLmNlaWwoZXN0aW1hdGVk
ICogMS4yKSk7CisgICAgICAgIGVsc2Uge3RvWCA9IGVzdFg7IHRvID0gZXN0aW1hdGVkOyBicmVh
azt9CisgICAgICB9CisgICAgICBpZiAoeCA+IHRvWCkgcmV0dXJuIHRvOworICAgICAgLy8gVHJ5
IHRvIGd1ZXNzIGEgc3VpdGFibGUgbG93ZXIgYm91bmQgYXMgd2VsbC4KKyAgICAgIGVzdGltYXRl
ZCA9IE1hdGguZmxvb3IodG8gKiAwLjgpOyBlc3RYID0gZ2V0WChlc3RpbWF0ZWQpOworICAgICAg
aWYgKGVzdFggPCB4KSB7ZnJvbSA9IGVzdGltYXRlZDsgZnJvbVggPSBlc3RYO30KKyAgICAgIC8v
IERvIGEgYmluYXJ5IHNlYXJjaCBiZXR3ZWVuIHRoZXNlIGJvdW5kcy4KKyAgICAgIGZvciAoOzsp
IHsKKyAgICAgICAgaWYgKHRvIC0gZnJvbSA8PSAxKSByZXR1cm4gKHRvWCAtIHggPiB4IC0gZnJv
bVgpID8gZnJvbSA6IHRvOworICAgICAgICB2YXIgbWlkZGxlID0gTWF0aC5jZWlsKChmcm9tICsg
dG8pIC8gMiksIG1pZGRsZVggPSBnZXRYKG1pZGRsZSk7CisgICAgICAgIGlmIChtaWRkbGVYID4g
eCkge3RvID0gbWlkZGxlOyB0b1ggPSBtaWRkbGVYO30KKyAgICAgICAgZWxzZSB7ZnJvbSA9IG1p
ZGRsZTsgZnJvbVggPSBtaWRkbGVYO30KKyAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBt
ZWFzdXJlTGluZShsaW5lLCBjaCkgeworICAgICAgaWYgKGNoID09IDApIHJldHVybiB7dG9wOiAw
LCBsZWZ0OiAwfTsKKyAgICAgIHZhciB3YnIgPSBvcHRpb25zLmxpbmVXcmFwcGluZyAmJiBjaCA8
IGxpbmUudGV4dC5sZW5ndGggJiYKKyAgICAgICAgICAgICAgICBzcGFuQWZmZWN0c1dyYXBwaW5n
LnRlc3QobGluZS50ZXh0LnNsaWNlKGNoIC0gMSwgY2ggKyAxKSk7CisgICAgICB2YXIgcHJlID0g
bGluZS5nZXRFbGVtZW50KG1ha2VUYWIsIGNoLCB3YnIpOworICAgICAgcmVtb3ZlQ2hpbGRyZW5B
bmRBZGQobWVhc3VyZSwgcHJlKTsKKyAgICAgIHZhciBhbmNob3IgPSBwcmUuYW5jaG9yOworICAg
ICAgdmFyIHRvcCA9IGFuY2hvci5vZmZzZXRUb3AsIGxlZnQgPSBhbmNob3Iub2Zmc2V0TGVmdDsK
KyAgICAgIC8vIE9sZGVyIElFcyByZXBvcnQgemVybyBvZmZzZXRzIGZvciBzcGFucyBkaXJlY3Rs
eSBhZnRlciBhIHdyYXAKKyAgICAgIGlmIChpZSAmJiB0b3AgPT0gMCAmJiBsZWZ0ID09IDApIHsK
KyAgICAgICAgdmFyIGJhY2t1cCA9IGVsdCgic3BhbiIsICJ4Iik7CisgICAgICAgIGFuY2hvci5w
YXJlbnROb2RlLmluc2VydEJlZm9yZShiYWNrdXAsIGFuY2hvci5uZXh0U2libGluZyk7CisgICAg
ICAgIHRvcCA9IGJhY2t1cC5vZmZzZXRUb3A7CisgICAgICB9CisgICAgICByZXR1cm4ge3RvcDog
dG9wLCBsZWZ0OiBsZWZ0fTsKKyAgICB9CisgICAgZnVuY3Rpb24gbG9jYWxDb29yZHMocG9zLCBp
bkxpbmVXcmFwKSB7CisgICAgICB2YXIgeCwgbGggPSB0ZXh0SGVpZ2h0KCksIHkgPSBsaCAqICho
ZWlnaHRBdExpbmUoZG9jLCBwb3MubGluZSkgLSAoaW5MaW5lV3JhcCA/IGRpc3BsYXlPZmZzZXQg
OiAwKSk7CisgICAgICBpZiAocG9zLmNoID09IDApIHggPSAwOworICAgICAgZWxzZSB7CisgICAg
ICAgIHZhciBzcCA9IG1lYXN1cmVMaW5lKGdldExpbmUocG9zLmxpbmUpLCBwb3MuY2gpOworICAg
ICAgICB4ID0gc3AubGVmdDsKKyAgICAgICAgaWYgKG9wdGlvbnMubGluZVdyYXBwaW5nKSB5ICs9
IE1hdGgubWF4KDAsIHNwLnRvcCk7CisgICAgICB9CisgICAgICByZXR1cm4ge3g6IHgsIHk6IHks
IHlCb3Q6IHkgKyBsaH07CisgICAgfQorICAgIC8vIENvb3JkcyBtdXN0IGJlIGxpbmVTcGFjZS1s
b2NhbAorICAgIGZ1bmN0aW9uIGNvb3Jkc0NoYXIoeCwgeSkgeworICAgICAgaWYgKHkgPCAwKSBy
ZXR1cm4ge2xpbmU6IDAsIGNoOiAwfTsKKyAgICAgIHZhciB0aCA9IHRleHRIZWlnaHQoKSwgY3cg
PSBjaGFyV2lkdGgoKSwgaGVpZ2h0UG9zID0gZGlzcGxheU9mZnNldCArIE1hdGguZmxvb3IoeSAv
IHRoKTsKKyAgICAgIHZhciBsaW5lTm8gPSBsaW5lQXRIZWlnaHQoZG9jLCBoZWlnaHRQb3MpOwor
ICAgICAgaWYgKGxpbmVObyA+PSBkb2Muc2l6ZSkgcmV0dXJuIHtsaW5lOiBkb2Muc2l6ZSAtIDEs
IGNoOiBnZXRMaW5lKGRvYy5zaXplIC0gMSkudGV4dC5sZW5ndGh9OworICAgICAgdmFyIGxpbmVP
YmogPSBnZXRMaW5lKGxpbmVObyksIHRleHQgPSBsaW5lT2JqLnRleHQ7CisgICAgICB2YXIgdHcg
PSBvcHRpb25zLmxpbmVXcmFwcGluZywgaW5uZXJPZmYgPSB0dyA/IGhlaWdodFBvcyAtIGhlaWdo
dEF0TGluZShkb2MsIGxpbmVObykgOiAwOworICAgICAgaWYgKHggPD0gMCAmJiBpbm5lck9mZiA9
PSAwKSByZXR1cm4ge2xpbmU6IGxpbmVObywgY2g6IDB9OworICAgICAgdmFyIHdyb25nTGluZSA9
IGZhbHNlOworICAgICAgZnVuY3Rpb24gZ2V0WChsZW4pIHsKKyAgICAgICAgdmFyIHNwID0gbWVh
c3VyZUxpbmUobGluZU9iaiwgbGVuKTsKKyAgICAgICAgaWYgKHR3KSB7CisgICAgICAgICAgdmFy
IG9mZiA9IE1hdGgucm91bmQoc3AudG9wIC8gdGgpOworICAgICAgICAgIHdyb25nTGluZSA9IG9m
ZiAhPSBpbm5lck9mZjsKKyAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoMCwgc3AubGVmdCArIChv
ZmYgLSBpbm5lck9mZikgKiBzY3JvbGxlci5jbGllbnRXaWR0aCk7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHNwLmxlZnQ7CisgICAgICB9CisgICAgICB2YXIgZnJvbSA9IDAsIGZyb21YID0g
MCwgdG8gPSB0ZXh0Lmxlbmd0aCwgdG9YOworICAgICAgLy8gR3Vlc3MgYSBzdWl0YWJsZSB1cHBl
ciBib3VuZCBmb3Igb3VyIHNlYXJjaC4KKyAgICAgIHZhciBlc3RpbWF0ZWQgPSBNYXRoLm1pbih0
bywgTWF0aC5jZWlsKCh4ICsgaW5uZXJPZmYgKiBzY3JvbGxlci5jbGllbnRXaWR0aCAqIC45KSAv
IGN3KSk7CisgICAgICBmb3IgKDs7KSB7CisgICAgICAgIHZhciBlc3RYID0gZ2V0WChlc3RpbWF0
ZWQpOworICAgICAgICBpZiAoZXN0WCA8PSB4ICYmIGVzdGltYXRlZCA8IHRvKSBlc3RpbWF0ZWQg
PSBNYXRoLm1pbih0bywgTWF0aC5jZWlsKGVzdGltYXRlZCAqIDEuMikpOworICAgICAgICBlbHNl
IHt0b1ggPSBlc3RYOyB0byA9IGVzdGltYXRlZDsgYnJlYWs7fQorICAgICAgfQorICAgICAgaWYg
KHggPiB0b1gpIHJldHVybiB7bGluZTogbGluZU5vLCBjaDogdG99OworICAgICAgLy8gVHJ5IHRv
IGd1ZXNzIGEgc3VpdGFibGUgbG93ZXIgYm91bmQgYXMgd2VsbC4KKyAgICAgIGVzdGltYXRlZCA9
IE1hdGguZmxvb3IodG8gKiAwLjgpOyBlc3RYID0gZ2V0WChlc3RpbWF0ZWQpOworICAgICAgaWYg
KGVzdFggPCB4KSB7ZnJvbSA9IGVzdGltYXRlZDsgZnJvbVggPSBlc3RYO30KKyAgICAgIC8vIERv
IGEgYmluYXJ5IHNlYXJjaCBiZXR3ZWVuIHRoZXNlIGJvdW5kcy4KKyAgICAgIGZvciAoOzspIHsK
KyAgICAgICAgaWYgKHRvIC0gZnJvbSA8PSAxKSB7CisgICAgICAgICAgdmFyIGFmdGVyID0geCAt
IGZyb21YIDwgdG9YIC0geDsKKyAgICAgICAgICByZXR1cm4ge2xpbmU6IGxpbmVObywgY2g6IGFm
dGVyID8gZnJvbSA6IHRvLCBhZnRlcjogYWZ0ZXJ9OworICAgICAgICB9CisgICAgICAgIHZhciBt
aWRkbGUgPSBNYXRoLmNlaWwoKGZyb20gKyB0bykgLyAyKSwgbWlkZGxlWCA9IGdldFgobWlkZGxl
KTsKKyAgICAgICAgaWYgKG1pZGRsZVggPiB4KSB7dG8gPSBtaWRkbGU7IHRvWCA9IG1pZGRsZVg7
IGlmICh3cm9uZ0xpbmUpIHRvWCArPSAxMDAwOyB9CisgICAgICAgIGVsc2Uge2Zyb20gPSBtaWRk
bGU7IGZyb21YID0gbWlkZGxlWDt9CisgICAgICB9CisgICAgfQorICAgIGZ1bmN0aW9uIHBhZ2VD
b29yZHMocG9zKSB7CisgICAgICB2YXIgbG9jYWwgPSBsb2NhbENvb3Jkcyhwb3MsIHRydWUpLCBv
ZmYgPSBlbHRPZmZzZXQobGluZVNwYWNlKTsKKyAgICAgIHJldHVybiB7eDogb2ZmLmxlZnQgKyBs
b2NhbC54LCB5OiBvZmYudG9wICsgbG9jYWwueSwgeUJvdDogb2ZmLnRvcCArIGxvY2FsLnlCb3R9
OworICAgIH0KKworICAgIHZhciBjYWNoZWRIZWlnaHQsIGNhY2hlZEhlaWdodEZvciwgbWVhc3Vy
ZVByZTsKKyAgICBmdW5jdGlvbiB0ZXh0SGVpZ2h0KCkgeworICAgICAgaWYgKG1lYXN1cmVQcmUg
PT0gbnVsbCkgeworICAgICAgICBtZWFzdXJlUHJlID0gZWx0KCJwcmUiKTsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCA0OTsgKytpKSB7CisgICAgICAgICAgbWVhc3VyZVByZS5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgieCIpKTsKKyAgICAgICAgICBtZWFzdXJlUHJl
LmFwcGVuZENoaWxkKGVsdCgiYnIiKSk7CisgICAgICAgIH0KKyAgICAgICAgbWVhc3VyZVByZS5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgieCIpKTsKKyAgICAgIH0KKyAgICAg
IHZhciBvZmZzZXRIZWlnaHQgPSBsaW5lRGl2LmNsaWVudEhlaWdodDsKKyAgICAgIGlmIChvZmZz
ZXRIZWlnaHQgPT0gY2FjaGVkSGVpZ2h0Rm9yKSByZXR1cm4gY2FjaGVkSGVpZ2h0OworICAgICAg
Y2FjaGVkSGVpZ2h0Rm9yID0gb2Zmc2V0SGVpZ2h0OworICAgICAgcmVtb3ZlQ2hpbGRyZW5BbmRB
ZGQobWVhc3VyZSwgbWVhc3VyZVByZS5jbG9uZU5vZGUodHJ1ZSkpOworICAgICAgY2FjaGVkSGVp
Z2h0ID0gbWVhc3VyZS5maXJzdENoaWxkLm9mZnNldEhlaWdodCAvIDUwIHx8IDE7CisgICAgICBy
ZW1vdmVDaGlsZHJlbihtZWFzdXJlKTsKKyAgICAgIHJldHVybiBjYWNoZWRIZWlnaHQ7CisgICAg
fQorICAgIHZhciBjYWNoZWRXaWR0aCwgY2FjaGVkV2lkdGhGb3IgPSAwOworICAgIGZ1bmN0aW9u
IGNoYXJXaWR0aCgpIHsKKyAgICAgIGlmIChzY3JvbGxlci5jbGllbnRXaWR0aCA9PSBjYWNoZWRX
aWR0aEZvcikgcmV0dXJuIGNhY2hlZFdpZHRoOworICAgICAgY2FjaGVkV2lkdGhGb3IgPSBzY3Jv
bGxlci5jbGllbnRXaWR0aDsKKyAgICAgIHZhciBhbmNob3IgPSBlbHQoInNwYW4iLCAieCIpOwor
ICAgICAgdmFyIHByZSA9IGVsdCgicHJlIiwgW2FuY2hvcl0pOworICAgICAgcmVtb3ZlQ2hpbGRy
ZW5BbmRBZGQobWVhc3VyZSwgcHJlKTsKKyAgICAgIHJldHVybiAoY2FjaGVkV2lkdGggPSBhbmNo
b3Iub2Zmc2V0V2lkdGggfHwgMTApOworICAgIH0KKyAgICBmdW5jdGlvbiBwYWRkaW5nVG9wKCkg
e3JldHVybiBsaW5lU3BhY2Uub2Zmc2V0VG9wO30KKyAgICBmdW5jdGlvbiBwYWRkaW5nTGVmdCgp
IHtyZXR1cm4gbGluZVNwYWNlLm9mZnNldExlZnQ7fQorCisgICAgZnVuY3Rpb24gcG9zRnJvbU1v
dXNlKGUsIGxpYmVyYWwpIHsKKyAgICAgIHZhciBvZmZXID0gZWx0T2Zmc2V0KHNjcm9sbGVyLCB0
cnVlKSwgeCwgeTsKKyAgICAgIC8vIEZhaWxzIHVucHJlZGljdGFibHkgb24gSUVbNjddIHdoZW4g
bW91c2UgaXMgZHJhZ2dlZCBhcm91bmQgcXVpY2tseS4KKyAgICAgIHRyeSB7IHggPSBlLmNsaWVu
dFg7IHkgPSBlLmNsaWVudFk7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIG51bGw7IH0KKyAgICAgIC8v
IFRoaXMgaXMgYSBtZXNzIG9mIGEgaGV1cmlzdGljIHRvIHRyeSBhbmQgZGV0ZXJtaW5lIHdoZXRo
ZXIgYQorICAgICAgLy8gc2Nyb2xsLWJhciB3YXMgY2xpY2tlZCBvciBub3QsIGFuZCB0byByZXR1
cm4gbnVsbCBpZiBvbmUgd2FzCisgICAgICAvLyAoYW5kICFsaWJlcmFsKS4KKyAgICAgIGlmICgh
bGliZXJhbCAmJiAoeCAtIG9mZlcubGVmdCA+IHNjcm9sbGVyLmNsaWVudFdpZHRoIHx8IHkgLSBv
ZmZXLnRvcCA+IHNjcm9sbGVyLmNsaWVudEhlaWdodCkpCisgICAgICAgIHJldHVybiBudWxsOwor
ICAgICAgdmFyIG9mZkwgPSBlbHRPZmZzZXQobGluZVNwYWNlLCB0cnVlKTsKKyAgICAgIHJldHVy
biBjb29yZHNDaGFyKHggLSBvZmZMLmxlZnQsIHkgLSBvZmZMLnRvcCk7CisgICAgfQorICAgIGZ1
bmN0aW9uIG9uQ29udGV4dE1lbnUoZSkgeworICAgICAgdmFyIHBvcyA9IHBvc0Zyb21Nb3VzZShl
KSwgc2Nyb2xsUG9zID0gc2Nyb2xsYmFyLnNjcm9sbFRvcDsKKyAgICAgIGlmICghcG9zIHx8IG9w
ZXJhKSByZXR1cm47IC8vIE9wZXJhIGlzIGRpZmZpY3VsdC4KKyAgICAgIGlmIChwb3NFcShzZWwu
ZnJvbSwgc2VsLnRvKSB8fCBwb3NMZXNzKHBvcywgc2VsLmZyb20pIHx8ICFwb3NMZXNzKHBvcywg
c2VsLnRvKSkKKyAgICAgICAgb3BlcmF0aW9uKHNldEN1cnNvcikocG9zLmxpbmUsIHBvcy5jaCk7
CisKKyAgICAgIHZhciBvbGRDU1MgPSBpbnB1dC5zdHlsZS5jc3NUZXh0OworICAgICAgaW5wdXRE
aXYuc3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiOworICAgICAgaW5wdXQuc3R5bGUuY3NzVGV4
dCA9ICJwb3NpdGlvbjogZml4ZWQ7IHdpZHRoOiAzMHB4OyBoZWlnaHQ6IDMwcHg7IHRvcDogIiAr
IChlLmNsaWVudFkgLSA1KSArCisgICAgICAgICJweDsgbGVmdDogIiArIChlLmNsaWVudFggLSA1
KSArICJweDsgei1pbmRleDogMTAwMDsgYmFja2dyb3VuZDogd2hpdGU7ICIgKworICAgICAgICAi
Ym9yZGVyLXdpZHRoOiAwOyBvdXRsaW5lOiBub25lOyBvdmVyZmxvdzogaGlkZGVuOyBvcGFjaXR5
OiAuMDU7IGZpbHRlcjogYWxwaGEob3BhY2l0eT01KTsiOworICAgICAgbGVhdmVJbnB1dEFsb25l
ID0gdHJ1ZTsKKyAgICAgIHZhciB2YWwgPSBpbnB1dC52YWx1ZSA9IGdldFNlbGVjdGlvbigpOwor
ICAgICAgZm9jdXNJbnB1dCgpOworICAgICAgc2VsZWN0SW5wdXQoaW5wdXQpOworICAgICAgZnVu
Y3Rpb24gcmVoaWRlKCkgeworICAgICAgICB2YXIgbmV3VmFsID0gc3BsaXRMaW5lcyhpbnB1dC52
YWx1ZSkuam9pbigiXG4iKTsKKyAgICAgICAgaWYgKG5ld1ZhbCAhPSB2YWwgJiYgIW9wdGlvbnMu
cmVhZE9ubHkpIG9wZXJhdGlvbihyZXBsYWNlU2VsZWN0aW9uKShuZXdWYWwsICJlbmQiKTsKKyAg
ICAgICAgaW5wdXREaXYuc3R5bGUucG9zaXRpb24gPSAicmVsYXRpdmUiOworICAgICAgICBpbnB1
dC5zdHlsZS5jc3NUZXh0ID0gb2xkQ1NTOworICAgICAgICBpZiAoaWVfbHQ5KSBzY3JvbGxiYXIu
c2Nyb2xsVG9wID0gc2Nyb2xsUG9zOworICAgICAgICBsZWF2ZUlucHV0QWxvbmUgPSBmYWxzZTsK
KyAgICAgICAgcmVzZXRJbnB1dCh0cnVlKTsKKyAgICAgICAgc2xvd1BvbGwoKTsKKyAgICAgIH0K
KworICAgICAgaWYgKGdlY2tvKSB7CisgICAgICAgIGVfc3RvcChlKTsKKyAgICAgICAgdmFyIG1v
dXNldXAgPSBjb25uZWN0KHdpbmRvdywgIm1vdXNldXAiLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICBtb3VzZXVwKCk7CisgICAgICAgICAgc2V0VGltZW91dChyZWhpZGUsIDIwKTsKKyAgICAgICAg
fSwgdHJ1ZSk7CisgICAgICB9IGVsc2UgeworICAgICAgICBzZXRUaW1lb3V0KHJlaGlkZSwgNTAp
OworICAgICAgfQorICAgIH0KKworICAgIC8vIEN1cnNvci1ibGlua2luZworICAgIGZ1bmN0aW9u
IHJlc3RhcnRCbGluaygpIHsKKyAgICAgIGNsZWFySW50ZXJ2YWwoYmxpbmtlcik7CisgICAgICB2
YXIgb24gPSB0cnVlOworICAgICAgY3Vyc29yLnN0eWxlLnZpc2liaWxpdHkgPSAiIjsKKyAgICAg
IGJsaW5rZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgY3Vyc29yLnN0eWxl
LnZpc2liaWxpdHkgPSAob24gPSAhb24pID8gIiIgOiAiaGlkZGVuIjsKKyAgICAgIH0sIDY1MCk7
CisgICAgfQorCisgICAgdmFyIG1hdGNoaW5nID0geyIoIjogIik+IiwgIikiOiAiKDwiLCAiWyI6
ICJdPiIsICJdIjogIls8IiwgInsiOiAifT4iLCAifSI6ICJ7PCJ9OworICAgIGZ1bmN0aW9uIG1h
dGNoQnJhY2tldHMoYXV0b2NsZWFyKSB7CisgICAgICB2YXIgaGVhZCA9IHNlbC5pbnZlcnRlZCA/
IHNlbC5mcm9tIDogc2VsLnRvLCBsaW5lID0gZ2V0TGluZShoZWFkLmxpbmUpLCBwb3MgPSBoZWFk
LmNoIC0gMTsKKyAgICAgIHZhciBtYXRjaCA9IChwb3MgPj0gMCAmJiBtYXRjaGluZ1tsaW5lLnRl
eHQuY2hhckF0KHBvcyldKSB8fCBtYXRjaGluZ1tsaW5lLnRleHQuY2hhckF0KCsrcG9zKV07Cisg
ICAgICBpZiAoIW1hdGNoKSByZXR1cm47CisgICAgICB2YXIgY2ggPSBtYXRjaC5jaGFyQXQoMCks
IGZvcndhcmQgPSBtYXRjaC5jaGFyQXQoMSkgPT0gIj4iLCBkID0gZm9yd2FyZCA/IDEgOiAtMSwg
c3QgPSBsaW5lLnN0eWxlczsKKyAgICAgIGZvciAodmFyIG9mZiA9IHBvcyArIDEsIGkgPSAwLCBl
ID0gc3QubGVuZ3RoOyBpIDwgZTsgaSs9MikKKyAgICAgICAgaWYgKChvZmYgLT0gc3RbaV0ubGVu
Z3RoKSA8PSAwKSB7dmFyIHN0eWxlID0gc3RbaSsxXTsgYnJlYWs7fQorCisgICAgICB2YXIgc3Rh
Y2sgPSBbbGluZS50ZXh0LmNoYXJBdChwb3MpXSwgcmUgPSAvWygpe31bXF1dLzsKKyAgICAgIGZ1
bmN0aW9uIHNjYW4obGluZSwgZnJvbSwgdG8pIHsKKyAgICAgICAgaWYgKCFsaW5lLnRleHQpIHJl
dHVybjsKKyAgICAgICAgdmFyIHN0ID0gbGluZS5zdHlsZXMsIHBvcyA9IGZvcndhcmQgPyAwIDog
bGluZS50ZXh0Lmxlbmd0aCAtIDEsIGN1cjsKKyAgICAgICAgZm9yICh2YXIgaSA9IGZvcndhcmQg
PyAwIDogc3QubGVuZ3RoIC0gMiwgZSA9IGZvcndhcmQgPyBzdC5sZW5ndGggOiAtMjsgaSAhPSBl
OyBpICs9IDIqZCkgeworICAgICAgICAgIHZhciB0ZXh0ID0gc3RbaV07CisgICAgICAgICAgaWYg
KHN0W2krMV0gIT0gc3R5bGUpIHtwb3MgKz0gZCAqIHRleHQubGVuZ3RoOyBjb250aW51ZTt9Cisg
ICAgICAgICAgZm9yICh2YXIgaiA9IGZvcndhcmQgPyAwIDogdGV4dC5sZW5ndGggLSAxLCB0ZSA9
IGZvcndhcmQgPyB0ZXh0Lmxlbmd0aCA6IC0xOyBqICE9IHRlOyBqICs9IGQsIHBvcys9ZCkgewor
ICAgICAgICAgICAgaWYgKHBvcyA+PSBmcm9tICYmIHBvcyA8IHRvICYmIHJlLnRlc3QoY3VyID0g
dGV4dC5jaGFyQXQoaikpKSB7CisgICAgICAgICAgICAgIHZhciBtYXRjaCA9IG1hdGNoaW5nW2N1
cl07CisgICAgICAgICAgICAgIGlmIChtYXRjaC5jaGFyQXQoMSkgPT0gIj4iID09IGZvcndhcmQp
IHN0YWNrLnB1c2goY3VyKTsKKyAgICAgICAgICAgICAgZWxzZSBpZiAoc3RhY2sucG9wKCkgIT0g
bWF0Y2guY2hhckF0KDApKSByZXR1cm4ge3BvczogcG9zLCBtYXRjaDogZmFsc2V9OworICAgICAg
ICAgICAgICBlbHNlIGlmICghc3RhY2subGVuZ3RoKSByZXR1cm4ge3BvczogcG9zLCBtYXRjaDog
dHJ1ZX07CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9Cisg
ICAgICBmb3IgKHZhciBpID0gaGVhZC5saW5lLCBlID0gZm9yd2FyZCA/IE1hdGgubWluKGkgKyAx
MDAsIGRvYy5zaXplKSA6IE1hdGgubWF4KC0xLCBpIC0gMTAwKTsgaSAhPSBlOyBpKz1kKSB7Cisg
ICAgICAgIHZhciBsaW5lID0gZ2V0TGluZShpKSwgZmlyc3QgPSBpID09IGhlYWQubGluZTsKKyAg
ICAgICAgdmFyIGZvdW5kID0gc2NhbihsaW5lLCBmaXJzdCAmJiBmb3J3YXJkID8gcG9zICsgMSA6
IDAsIGZpcnN0ICYmICFmb3J3YXJkID8gcG9zIDogbGluZS50ZXh0Lmxlbmd0aCk7CisgICAgICAg
IGlmIChmb3VuZCkgYnJlYWs7CisgICAgICB9CisgICAgICBpZiAoIWZvdW5kKSBmb3VuZCA9IHtw
b3M6IG51bGwsIG1hdGNoOiBmYWxzZX07CisgICAgICB2YXIgc3R5bGUgPSBmb3VuZC5tYXRjaCA/
ICJDb2RlTWlycm9yLW1hdGNoaW5nYnJhY2tldCIgOiAiQ29kZU1pcnJvci1ub25tYXRjaGluZ2Jy
YWNrZXQiOworICAgICAgdmFyIG9uZSA9IG1hcmtUZXh0KHtsaW5lOiBoZWFkLmxpbmUsIGNoOiBw
b3N9LCB7bGluZTogaGVhZC5saW5lLCBjaDogcG9zKzF9LCBzdHlsZSksCisgICAgICAgICAgdHdv
ID0gZm91bmQucG9zICE9IG51bGwgJiYgbWFya1RleHQoe2xpbmU6IGksIGNoOiBmb3VuZC5wb3N9
LCB7bGluZTogaSwgY2g6IGZvdW5kLnBvcyArIDF9LCBzdHlsZSk7CisgICAgICB2YXIgY2xlYXIg
PSBvcGVyYXRpb24oZnVuY3Rpb24oKXtvbmUuY2xlYXIoKTsgdHdvICYmIHR3by5jbGVhcigpO30p
OworICAgICAgaWYgKGF1dG9jbGVhcikgc2V0VGltZW91dChjbGVhciwgODAwKTsKKyAgICAgIGVs
c2UgYnJhY2tldEhpZ2hsaWdodGVkID0gY2xlYXI7CisgICAgfQorCisgICAgLy8gRmluZHMgdGhl
IGxpbmUgdG8gc3RhcnQgd2l0aCB3aGVuIHN0YXJ0aW5nIGEgcGFyc2UuIFRyaWVzIHRvCisgICAg
Ly8gZmluZCBhIGxpbmUgd2l0aCBhIHN0YXRlQWZ0ZXIsIHNvIHRoYXQgaXQgY2FuIHN0YXJ0IHdp
dGggYQorICAgIC8vIHZhbGlkIHN0YXRlLiBJZiB0aGF0IGZhaWxzLCBpdCByZXR1cm5zIHRoZSBs
aW5lIHdpdGggdGhlCisgICAgLy8gc21hbGxlc3QgaW5kZW50YXRpb24sIHdoaWNoIHRlbmRzIHRv
IG5lZWQgdGhlIGxlYXN0IGNvbnRleHQgdG8KKyAgICAvLyBwYXJzZSBjb3JyZWN0bHkuCisgICAg
ZnVuY3Rpb24gZmluZFN0YXJ0TGluZShuKSB7CisgICAgICB2YXIgbWluaW5kZW50LCBtaW5saW5l
OworICAgICAgZm9yICh2YXIgc2VhcmNoID0gbiwgbGltID0gbiAtIDQwOyBzZWFyY2ggPiBsaW07
IC0tc2VhcmNoKSB7CisgICAgICAgIGlmIChzZWFyY2ggPT0gMCkgcmV0dXJuIDA7CisgICAgICAg
IHZhciBsaW5lID0gZ2V0TGluZShzZWFyY2gtMSk7CisgICAgICAgIGlmIChsaW5lLnN0YXRlQWZ0
ZXIpIHJldHVybiBzZWFyY2g7CisgICAgICAgIHZhciBpbmRlbnRlZCA9IGxpbmUuaW5kZW50YXRp
b24ob3B0aW9ucy50YWJTaXplKTsKKyAgICAgICAgaWYgKG1pbmxpbmUgPT0gbnVsbCB8fCBtaW5p
bmRlbnQgPiBpbmRlbnRlZCkgeworICAgICAgICAgIG1pbmxpbmUgPSBzZWFyY2ggLSAxOworICAg
ICAgICAgIG1pbmluZGVudCA9IGluZGVudGVkOworICAgICAgICB9CisgICAgICB9CisgICAgICBy
ZXR1cm4gbWlubGluZTsKKyAgICB9CisgICAgZnVuY3Rpb24gZ2V0U3RhdGVCZWZvcmUobikgewor
ICAgICAgdmFyIHN0YXJ0ID0gZmluZFN0YXJ0TGluZShuKSwgc3RhdGUgPSBzdGFydCAmJiBnZXRM
aW5lKHN0YXJ0LTEpLnN0YXRlQWZ0ZXI7CisgICAgICBpZiAoIXN0YXRlKSBzdGF0ZSA9IHN0YXJ0
U3RhdGUobW9kZSk7CisgICAgICBlbHNlIHN0YXRlID0gY29weVN0YXRlKG1vZGUsIHN0YXRlKTsK
KyAgICAgIGRvYy5pdGVyKHN0YXJ0LCBuLCBmdW5jdGlvbihsaW5lKSB7CisgICAgICAgIGxpbmUu
aGlnaGxpZ2h0KG1vZGUsIHN0YXRlLCBvcHRpb25zLnRhYlNpemUpOworICAgICAgICBsaW5lLnN0
YXRlQWZ0ZXIgPSBjb3B5U3RhdGUobW9kZSwgc3RhdGUpOworICAgICAgfSk7CisgICAgICBpZiAo
c3RhcnQgPCBuKSBjaGFuZ2VzLnB1c2goe2Zyb206IHN0YXJ0LCB0bzogbn0pOworICAgICAgaWYg
KG4gPCBkb2Muc2l6ZSAmJiAhZ2V0TGluZShuKS5zdGF0ZUFmdGVyKSB3b3JrLnB1c2gobik7Cisg
ICAgICByZXR1cm4gc3RhdGU7CisgICAgfQorICAgIGZ1bmN0aW9uIGhpZ2hsaWdodExpbmVzKHN0
YXJ0LCBlbmQpIHsKKyAgICAgIHZhciBzdGF0ZSA9IGdldFN0YXRlQmVmb3JlKHN0YXJ0KTsKKyAg
ICAgIGRvYy5pdGVyKHN0YXJ0LCBlbmQsIGZ1bmN0aW9uKGxpbmUpIHsKKyAgICAgICAgbGluZS5o
aWdobGlnaHQobW9kZSwgc3RhdGUsIG9wdGlvbnMudGFiU2l6ZSk7CisgICAgICAgIGxpbmUuc3Rh
dGVBZnRlciA9IGNvcHlTdGF0ZShtb2RlLCBzdGF0ZSk7CisgICAgICB9KTsKKyAgICB9CisgICAg
ZnVuY3Rpb24gaGlnaGxpZ2h0V29ya2VyKCkgeworICAgICAgdmFyIGVuZCA9ICtuZXcgRGF0ZSAr
IG9wdGlvbnMud29ya1RpbWU7CisgICAgICB2YXIgZm91bmRXb3JrID0gd29yay5sZW5ndGg7Cisg
ICAgICB3aGlsZSAod29yay5sZW5ndGgpIHsKKyAgICAgICAgaWYgKCFnZXRMaW5lKHNob3dpbmdG
cm9tKS5zdGF0ZUFmdGVyKSB2YXIgdGFzayA9IHNob3dpbmdGcm9tOworICAgICAgICBlbHNlIHZh
ciB0YXNrID0gd29yay5wb3AoKTsKKyAgICAgICAgaWYgKHRhc2sgPj0gZG9jLnNpemUpIGNvbnRp
bnVlOworICAgICAgICB2YXIgc3RhcnQgPSBmaW5kU3RhcnRMaW5lKHRhc2spLCBzdGF0ZSA9IHN0
YXJ0ICYmIGdldExpbmUoc3RhcnQtMSkuc3RhdGVBZnRlcjsKKyAgICAgICAgaWYgKHN0YXRlKSBz
dGF0ZSA9IGNvcHlTdGF0ZShtb2RlLCBzdGF0ZSk7CisgICAgICAgIGVsc2Ugc3RhdGUgPSBzdGFy
dFN0YXRlKG1vZGUpOworCisgICAgICAgIHZhciB1bmNoYW5nZWQgPSAwLCBjb21wYXJlID0gbW9k
ZS5jb21wYXJlU3RhdGVzLCByZWFsQ2hhbmdlID0gZmFsc2UsCisgICAgICAgICAgICBpID0gc3Rh
cnQsIGJhaWwgPSBmYWxzZTsKKyAgICAgICAgZG9jLml0ZXIoaSwgZG9jLnNpemUsIGZ1bmN0aW9u
KGxpbmUpIHsKKyAgICAgICAgICB2YXIgaGFkU3RhdGUgPSBsaW5lLnN0YXRlQWZ0ZXI7CisgICAg
ICAgICAgaWYgKCtuZXcgRGF0ZSA+IGVuZCkgeworICAgICAgICAgICAgd29yay5wdXNoKGkpOwor
ICAgICAgICAgICAgc3RhcnRXb3JrZXIob3B0aW9ucy53b3JrRGVsYXkpOworICAgICAgICAgICAg
aWYgKHJlYWxDaGFuZ2UpIGNoYW5nZXMucHVzaCh7ZnJvbTogdGFzaywgdG86IGkgKyAxfSk7Cisg
ICAgICAgICAgICByZXR1cm4gKGJhaWwgPSB0cnVlKTsKKyAgICAgICAgICB9CisgICAgICAgICAg
dmFyIGNoYW5nZWQgPSBsaW5lLmhpZ2hsaWdodChtb2RlLCBzdGF0ZSwgb3B0aW9ucy50YWJTaXpl
KTsKKyAgICAgICAgICBpZiAoY2hhbmdlZCkgcmVhbENoYW5nZSA9IHRydWU7CisgICAgICAgICAg
bGluZS5zdGF0ZUFmdGVyID0gY29weVN0YXRlKG1vZGUsIHN0YXRlKTsKKyAgICAgICAgICB2YXIg
ZG9uZSA9IG51bGw7CisgICAgICAgICAgaWYgKGNvbXBhcmUpIHsKKyAgICAgICAgICAgIHZhciBz
YW1lID0gaGFkU3RhdGUgJiYgY29tcGFyZShoYWRTdGF0ZSwgc3RhdGUpOworICAgICAgICAgICAg
aWYgKHNhbWUgIT0gUGFzcykgZG9uZSA9ICEhc2FtZTsKKyAgICAgICAgICB9CisgICAgICAgICAg
aWYgKGRvbmUgPT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKGNoYW5nZWQgIT09IGZhbHNlIHx8
ICFoYWRTdGF0ZSkgdW5jaGFuZ2VkID0gMDsKKyAgICAgICAgICAgIGVsc2UgaWYgKCsrdW5jaGFu
Z2VkID4gMyAmJiAoIW1vZGUuaW5kZW50IHx8IG1vZGUuaW5kZW50KGhhZFN0YXRlLCAiIikgPT0g
bW9kZS5pbmRlbnQoc3RhdGUsICIiKSkpCisgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAg
ICAgICAgIH0KKyAgICAgICAgICBpZiAoZG9uZSkgcmV0dXJuIHRydWU7CisgICAgICAgICAgKytp
OworICAgICAgICB9KTsKKyAgICAgICAgaWYgKGJhaWwpIHJldHVybjsKKyAgICAgICAgaWYgKHJl
YWxDaGFuZ2UpIGNoYW5nZXMucHVzaCh7ZnJvbTogdGFzaywgdG86IGkgKyAxfSk7CisgICAgICB9
CisgICAgICBpZiAoZm91bmRXb3JrICYmIG9wdGlvbnMub25IaWdobGlnaHRDb21wbGV0ZSkKKyAg
ICAgICAgb3B0aW9ucy5vbkhpZ2hsaWdodENvbXBsZXRlKGluc3RhbmNlKTsKKyAgICB9CisgICAg
ZnVuY3Rpb24gc3RhcnRXb3JrZXIodGltZSkgeworICAgICAgaWYgKCF3b3JrLmxlbmd0aCkgcmV0
dXJuOworICAgICAgaGlnaGxpZ2h0LnNldCh0aW1lLCBvcGVyYXRpb24oaGlnaGxpZ2h0V29ya2Vy
KSk7CisgICAgfQorCisgICAgLy8gT3BlcmF0aW9ucyBhcmUgdXNlZCB0byB3cmFwIGNoYW5nZXMg
aW4gc3VjaCBhIHdheSB0aGF0IGVhY2gKKyAgICAvLyBjaGFuZ2Ugd29uJ3QgaGF2ZSB0byB1cGRh
dGUgdGhlIGN1cnNvciBhbmQgZGlzcGxheSAod2hpY2ggd291bGQKKyAgICAvLyBiZSBhd2t3YXJk
LCBzbG93LCBhbmQgZXJyb3ItcHJvbmUpLCBidXQgaW5zdGVhZCB1cGRhdGVzIGFyZQorICAgIC8v
IGJhdGNoZWQgYW5kIHRoZW4gYWxsIGNvbWJpbmVkIGFuZCBleGVjdXRlZCBhdCBvbmNlLgorICAg
IGZ1bmN0aW9uIHN0YXJ0T3BlcmF0aW9uKCkgeworICAgICAgdXBkYXRlSW5wdXQgPSB1c2VyU2Vs
Q2hhbmdlID0gdGV4dENoYW5nZWQgPSBudWxsOworICAgICAgY2hhbmdlcyA9IFtdOyBzZWxlY3Rp
b25DaGFuZ2VkID0gZmFsc2U7IGNhbGxiYWNrcyA9IFtdOworICAgIH0KKyAgICBmdW5jdGlvbiBl
bmRPcGVyYXRpb24oKSB7CisgICAgICBpZiAodXBkYXRlTWF4TGluZSkgY29tcHV0ZU1heExlbmd0
aCgpOworICAgICAgaWYgKG1heExpbmVDaGFuZ2VkICYmICFvcHRpb25zLmxpbmVXcmFwcGluZykg
eworICAgICAgICB2YXIgY3Vyc29yV2lkdGggPSB3aWR0aEZvcmNlci5vZmZzZXRXaWR0aCwgbGVm
dCA9IG1lYXN1cmVMaW5lKG1heExpbmUsIG1heExpbmUudGV4dC5sZW5ndGgpLmxlZnQ7CisgICAg
ICAgIHdpZHRoRm9yY2VyLnN0eWxlLmxlZnQgPSBsZWZ0ICsgInB4IjsKKyAgICAgICAgbGluZVNw
YWNlLnN0eWxlLm1pbldpZHRoID0gKGxlZnQgKyBjdXJzb3JXaWR0aCkgKyAicHgiOworICAgICAg
ICBtYXhMaW5lQ2hhbmdlZCA9IGZhbHNlOworICAgICAgfQorICAgICAgdmFyIG5ld1Njcm9sbFBv
cywgdXBkYXRlZDsKKyAgICAgIGlmIChzZWxlY3Rpb25DaGFuZ2VkKSB7CisgICAgICAgIHZhciBj
b29yZHMgPSBjYWxjdWxhdGVDdXJzb3JDb29yZHMoKTsKKyAgICAgICAgbmV3U2Nyb2xsUG9zID0g
Y2FsY3VsYXRlU2Nyb2xsUG9zKGNvb3Jkcy54LCBjb29yZHMueSwgY29vcmRzLngsIGNvb3Jkcy55
Qm90KTsKKyAgICAgIH0KKyAgICAgIGlmIChjaGFuZ2VzLmxlbmd0aCB8fCBuZXdTY3JvbGxQb3Mg
JiYgbmV3U2Nyb2xsUG9zLnNjcm9sbFRvcCAhPSBudWxsKQorICAgICAgICB1cGRhdGVkID0gdXBk
YXRlRGlzcGxheShjaGFuZ2VzLCB0cnVlLCBuZXdTY3JvbGxQb3MgJiYgbmV3U2Nyb2xsUG9zLnNj
cm9sbFRvcCk7CisgICAgICBpZiAoIXVwZGF0ZWQpIHsKKyAgICAgICAgaWYgKHNlbGVjdGlvbkNo
YW5nZWQpIHVwZGF0ZVNlbGVjdGlvbigpOworICAgICAgICBpZiAoZ3V0dGVyRGlydHkpIHVwZGF0
ZUd1dHRlcigpOworICAgICAgfQorICAgICAgaWYgKG5ld1Njcm9sbFBvcykgc2Nyb2xsQ3Vyc29y
SW50b1ZpZXcoKTsKKyAgICAgIGlmIChzZWxlY3Rpb25DaGFuZ2VkKSB7c2Nyb2xsRWRpdG9ySW50
b1ZpZXcoKTsgcmVzdGFydEJsaW5rKCk7fQorCisgICAgICBpZiAoZm9jdXNlZCAmJiAhbGVhdmVJ
bnB1dEFsb25lICYmCisgICAgICAgICAgKHVwZGF0ZUlucHV0ID09PSB0cnVlIHx8ICh1cGRhdGVJ
bnB1dCAhPT0gZmFsc2UgJiYgc2VsZWN0aW9uQ2hhbmdlZCkpKQorICAgICAgICByZXNldElucHV0
KHVzZXJTZWxDaGFuZ2UpOworCisgICAgICBpZiAoc2VsZWN0aW9uQ2hhbmdlZCAmJiBvcHRpb25z
Lm1hdGNoQnJhY2tldHMpCisgICAgICAgIHNldFRpbWVvdXQob3BlcmF0aW9uKGZ1bmN0aW9uKCkg
eworICAgICAgICAgIGlmIChicmFja2V0SGlnaGxpZ2h0ZWQpIHticmFja2V0SGlnaGxpZ2h0ZWQo
KTsgYnJhY2tldEhpZ2hsaWdodGVkID0gbnVsbDt9CisgICAgICAgICAgaWYgKHBvc0VxKHNlbC5m
cm9tLCBzZWwudG8pKSBtYXRjaEJyYWNrZXRzKGZhbHNlKTsKKyAgICAgICAgfSksIDIwKTsKKyAg
ICAgIHZhciBzYyA9IHNlbGVjdGlvbkNoYW5nZWQsIGNicyA9IGNhbGxiYWNrczsgLy8gdGhlc2Ug
Y2FuIGJlIHJlc2V0IGJ5IGNhbGxiYWNrcworICAgICAgaWYgKHRleHRDaGFuZ2VkICYmIG9wdGlv
bnMub25DaGFuZ2UgJiYgaW5zdGFuY2UpCisgICAgICAgIG9wdGlvbnMub25DaGFuZ2UoaW5zdGFu
Y2UsIHRleHRDaGFuZ2VkKTsKKyAgICAgIGlmIChzYyAmJiBvcHRpb25zLm9uQ3Vyc29yQWN0aXZp
dHkpCisgICAgICAgIG9wdGlvbnMub25DdXJzb3JBY3Rpdml0eShpbnN0YW5jZSk7CisgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGNicy5sZW5ndGg7ICsraSkgY2JzW2ldKGluc3RhbmNlKTsKKyAg
ICAgIGlmICh1cGRhdGVkICYmIG9wdGlvbnMub25VcGRhdGUpIG9wdGlvbnMub25VcGRhdGUoaW5z
dGFuY2UpOworICAgIH0KKyAgICB2YXIgbmVzdGVkT3BlcmF0aW9uID0gMDsKKyAgICBmdW5jdGlv
biBvcGVyYXRpb24oZikgeworICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAo
IW5lc3RlZE9wZXJhdGlvbisrKSBzdGFydE9wZXJhdGlvbigpOworICAgICAgICB0cnkge3ZhciBy
ZXN1bHQgPSBmLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7fQorICAgICAgICBmaW5hbGx5IHtpZiAo
IS0tbmVzdGVkT3BlcmF0aW9uKSBlbmRPcGVyYXRpb24oKTt9CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgICB9OworICAgIH0KKworICAgIGZ1bmN0aW9uIGNvbXBvdW5kQ2hhbmdlKGYpIHsK
KyAgICAgIGhpc3Rvcnkuc3RhcnRDb21wb3VuZCgpOworICAgICAgdHJ5IHsgcmV0dXJuIGYoKTsg
fSBmaW5hbGx5IHsgaGlzdG9yeS5lbmRDb21wb3VuZCgpOyB9CisgICAgfQorCisgICAgZm9yICh2
YXIgZXh0IGluIGV4dGVuc2lvbnMpCisgICAgICBpZiAoZXh0ZW5zaW9ucy5wcm9wZXJ0eUlzRW51
bWVyYWJsZShleHQpICYmCisgICAgICAgICAgIWluc3RhbmNlLnByb3BlcnR5SXNFbnVtZXJhYmxl
KGV4dCkpCisgICAgICAgIGluc3RhbmNlW2V4dF0gPSBleHRlbnNpb25zW2V4dF07CisgICAgcmV0
dXJuIGluc3RhbmNlOworICB9IC8vIChlbmQgb2YgZnVuY3Rpb24gQ29kZU1pcnJvcikKKworICAv
LyBUaGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIG9wdGlvbnMuCisgIENvZGVNaXJyb3IuZGVmYXVs
dHMgPSB7CisgICAgdmFsdWU6ICIiLAorICAgIG1vZGU6IG51bGwsCisgICAgdGhlbWU6ICJkZWZh
dWx0IiwKKyAgICBpbmRlbnRVbml0OiAyLAorICAgIGluZGVudFdpdGhUYWJzOiBmYWxzZSwKKyAg
ICBzbWFydEluZGVudDogdHJ1ZSwKKyAgICB0YWJTaXplOiA0LAorICAgIGtleU1hcDogImRlZmF1
bHQiLAorICAgIGV4dHJhS2V5czogbnVsbCwKKyAgICBlbGVjdHJpY0NoYXJzOiB0cnVlLAorICAg
IGF1dG9DbGVhckVtcHR5TGluZXM6IGZhbHNlLAorICAgIG9uS2V5RXZlbnQ6IG51bGwsCisgICAg
b25EcmFnRXZlbnQ6IG51bGwsCisgICAgbGluZVdyYXBwaW5nOiBmYWxzZSwKKyAgICBsaW5lTnVt
YmVyczogZmFsc2UsCisgICAgZ3V0dGVyOiBmYWxzZSwKKyAgICBmaXhlZEd1dHRlcjogZmFsc2Us
CisgICAgZmlyc3RMaW5lTnVtYmVyOiAxLAorICAgIHJlYWRPbmx5OiBmYWxzZSwKKyAgICBkcmFn
RHJvcDogdHJ1ZSwKKyAgICBvbkNoYW5nZTogbnVsbCwKKyAgICBvbkN1cnNvckFjdGl2aXR5OiBu
dWxsLAorICAgIG9uR3V0dGVyQ2xpY2s6IG51bGwsCisgICAgb25IaWdobGlnaHRDb21wbGV0ZTog
bnVsbCwKKyAgICBvblVwZGF0ZTogbnVsbCwKKyAgICBvbkZvY3VzOiBudWxsLCBvbkJsdXI6IG51
bGwsIG9uU2Nyb2xsOiBudWxsLAorICAgIG1hdGNoQnJhY2tldHM6IGZhbHNlLAorICAgIHdvcmtU
aW1lOiAxMDAsCisgICAgd29ya0RlbGF5OiAyMDAsCisgICAgcG9sbEludGVydmFsOiAxMDAsCisg
ICAgdW5kb0RlcHRoOiA0MCwKKyAgICB0YWJpbmRleDogbnVsbCwKKyAgICBhdXRvZm9jdXM6IG51
bGwsCisgICAgbGluZU51bWJlckZvcm1hdHRlcjogZnVuY3Rpb24oaW50ZWdlcikgeyByZXR1cm4g
aW50ZWdlcjsgfQorICB9OworCisgIHZhciBpb3MgPSAvQXBwbGVXZWJLaXQvLnRlc3QobmF2aWdh
dG9yLnVzZXJBZ2VudCkgJiYgL01vYmlsZVwvXHcrLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQp
OworICB2YXIgbWFjID0gaW9zIHx8IC9NYWMvLnRlc3QobmF2aWdhdG9yLnBsYXRmb3JtKTsKKyAg
dmFyIHdpbiA9IC9XaW4vLnRlc3QobmF2aWdhdG9yLnBsYXRmb3JtKTsKKworICAvLyBLbm93biBt
b2RlcywgYnkgbmFtZSBhbmQgYnkgTUlNRQorICB2YXIgbW9kZXMgPSBDb2RlTWlycm9yLm1vZGVz
ID0ge30sIG1pbWVNb2RlcyA9IENvZGVNaXJyb3IubWltZU1vZGVzID0ge307CisgIENvZGVNaXJy
b3IuZGVmaW5lTW9kZSA9IGZ1bmN0aW9uKG5hbWUsIG1vZGUpIHsKKyAgICBpZiAoIUNvZGVNaXJy
b3IuZGVmYXVsdHMubW9kZSAmJiBuYW1lICE9ICJudWxsIikgQ29kZU1pcnJvci5kZWZhdWx0cy5t
b2RlID0gbmFtZTsKKyAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpIHsKKyAgICAgIG1vZGUu
ZGVwZW5kZW5jaWVzID0gW107CisgICAgICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3VtZW50cy5s
ZW5ndGg7ICsraSkgbW9kZS5kZXBlbmRlbmNpZXMucHVzaChhcmd1bWVudHNbaV0pOworICAgIH0K
KyAgICBtb2Rlc1tuYW1lXSA9IG1vZGU7CisgIH07CisgIENvZGVNaXJyb3IuZGVmaW5lTUlNRSA9
IGZ1bmN0aW9uKG1pbWUsIHNwZWMpIHsKKyAgICBtaW1lTW9kZXNbbWltZV0gPSBzcGVjOworICB9
OworICBDb2RlTWlycm9yLnJlc29sdmVNb2RlID0gZnVuY3Rpb24oc3BlYykgeworICAgIGlmICh0
eXBlb2Ygc3BlYyA9PSAic3RyaW5nIiAmJiBtaW1lTW9kZXMuaGFzT3duUHJvcGVydHkoc3BlYykp
CisgICAgICBzcGVjID0gbWltZU1vZGVzW3NwZWNdOworICAgIGVsc2UgaWYgKHR5cGVvZiBzcGVj
ID09ICJzdHJpbmciICYmIC9eW1x3XC1dK1wvW1x3XC1dK1wreG1sJC8udGVzdChzcGVjKSkKKyAg
ICAgIHJldHVybiBDb2RlTWlycm9yLnJlc29sdmVNb2RlKCJhcHBsaWNhdGlvbi94bWwiKTsKKyAg
ICBpZiAodHlwZW9mIHNwZWMgPT0gInN0cmluZyIpIHJldHVybiB7bmFtZTogc3BlY307CisgICAg
ZWxzZSByZXR1cm4gc3BlYyB8fCB7bmFtZTogIm51bGwifTsKKyAgfTsKKyAgQ29kZU1pcnJvci5n
ZXRNb2RlID0gZnVuY3Rpb24ob3B0aW9ucywgc3BlYykgeworICAgIHZhciBzcGVjID0gQ29kZU1p
cnJvci5yZXNvbHZlTW9kZShzcGVjKTsKKyAgICB2YXIgbWZhY3RvcnkgPSBtb2Rlc1tzcGVjLm5h
bWVdOworICAgIGlmICghbWZhY3RvcnkpIHJldHVybiBDb2RlTWlycm9yLmdldE1vZGUob3B0aW9u
cywgInRleHQvcGxhaW4iKTsKKyAgICByZXR1cm4gbWZhY3Rvcnkob3B0aW9ucywgc3BlYyk7Cisg
IH07CisgIENvZGVNaXJyb3IubGlzdE1vZGVzID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGxpc3Qg
PSBbXTsKKyAgICBmb3IgKHZhciBtIGluIG1vZGVzKQorICAgICAgaWYgKG1vZGVzLnByb3BlcnR5
SXNFbnVtZXJhYmxlKG0pKSBsaXN0LnB1c2gobSk7CisgICAgcmV0dXJuIGxpc3Q7CisgIH07Cisg
IENvZGVNaXJyb3IubGlzdE1JTUVzID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGxpc3QgPSBbXTsK
KyAgICBmb3IgKHZhciBtIGluIG1pbWVNb2RlcykKKyAgICAgIGlmIChtaW1lTW9kZXMucHJvcGVy
dHlJc0VudW1lcmFibGUobSkpIGxpc3QucHVzaCh7bWltZTogbSwgbW9kZTogbWltZU1vZGVzW21d
fSk7CisgICAgcmV0dXJuIGxpc3Q7CisgIH07CisKKyAgdmFyIGV4dGVuc2lvbnMgPSBDb2RlTWly
cm9yLmV4dGVuc2lvbnMgPSB7fTsKKyAgQ29kZU1pcnJvci5kZWZpbmVFeHRlbnNpb24gPSBmdW5j
dGlvbihuYW1lLCBmdW5jKSB7CisgICAgZXh0ZW5zaW9uc1tuYW1lXSA9IGZ1bmM7CisgIH07CisK
KyAgdmFyIGNvbW1hbmRzID0gQ29kZU1pcnJvci5jb21tYW5kcyA9IHsKKyAgICBzZWxlY3RBbGw6
IGZ1bmN0aW9uKGNtKSB7Y20uc2V0U2VsZWN0aW9uKHtsaW5lOiAwLCBjaDogMH0sIHtsaW5lOiBj
bS5saW5lQ291bnQoKSAtIDF9KTt9LAorICAgIGtpbGxMaW5lOiBmdW5jdGlvbihjbSkgeworICAg
ICAgdmFyIGZyb20gPSBjbS5nZXRDdXJzb3IodHJ1ZSksIHRvID0gY20uZ2V0Q3Vyc29yKGZhbHNl
KSwgc2VsID0gIXBvc0VxKGZyb20sIHRvKTsKKyAgICAgIGlmICghc2VsICYmIGNtLmdldExpbmUo
ZnJvbS5saW5lKS5sZW5ndGggPT0gZnJvbS5jaCkgY20ucmVwbGFjZVJhbmdlKCIiLCBmcm9tLCB7
bGluZTogZnJvbS5saW5lICsgMSwgY2g6IDB9KTsKKyAgICAgIGVsc2UgY20ucmVwbGFjZVJhbmdl
KCIiLCBmcm9tLCBzZWwgPyB0byA6IHtsaW5lOiBmcm9tLmxpbmV9KTsKKyAgICB9LAorICAgIGRl
bGV0ZUxpbmU6IGZ1bmN0aW9uKGNtKSB7dmFyIGwgPSBjbS5nZXRDdXJzb3IoKS5saW5lOyBjbS5y
ZXBsYWNlUmFuZ2UoIiIsIHtsaW5lOiBsLCBjaDogMH0sIHtsaW5lOiBsfSk7fSwKKyAgICB1bmRv
OiBmdW5jdGlvbihjbSkge2NtLnVuZG8oKTt9LAorICAgIHJlZG86IGZ1bmN0aW9uKGNtKSB7Y20u
cmVkbygpO30sCisgICAgZ29Eb2NTdGFydDogZnVuY3Rpb24oY20pIHtjbS5zZXRDdXJzb3IoMCwg
MCwgdHJ1ZSk7fSwKKyAgICBnb0RvY0VuZDogZnVuY3Rpb24oY20pIHtjbS5zZXRTZWxlY3Rpb24o
e2xpbmU6IGNtLmxpbmVDb3VudCgpIC0gMX0sIG51bGwsIHRydWUpO30sCisgICAgZ29MaW5lU3Rh
cnQ6IGZ1bmN0aW9uKGNtKSB7Y20uc2V0Q3Vyc29yKGNtLmdldEN1cnNvcigpLmxpbmUsIDAsIHRy
dWUpO30sCisgICAgZ29MaW5lU3RhcnRTbWFydDogZnVuY3Rpb24oY20pIHsKKyAgICAgIHZhciBj
dXIgPSBjbS5nZXRDdXJzb3IoKTsKKyAgICAgIHZhciB0ZXh0ID0gY20uZ2V0TGluZShjdXIubGlu
ZSksIGZpcnN0Tm9uV1MgPSBNYXRoLm1heCgwLCB0ZXh0LnNlYXJjaCgvXFMvKSk7CisgICAgICBj
bS5zZXRDdXJzb3IoY3VyLmxpbmUsIGN1ci5jaCA8PSBmaXJzdE5vbldTICYmIGN1ci5jaCA/IDAg
OiBmaXJzdE5vbldTLCB0cnVlKTsKKyAgICB9LAorICAgIGdvTGluZUVuZDogZnVuY3Rpb24oY20p
IHtjbS5zZXRTZWxlY3Rpb24oe2xpbmU6IGNtLmdldEN1cnNvcigpLmxpbmV9LCBudWxsLCB0cnVl
KTt9LAorICAgIGdvTGluZVVwOiBmdW5jdGlvbihjbSkge2NtLm1vdmVWKC0xLCAibGluZSIpO30s
CisgICAgZ29MaW5lRG93bjogZnVuY3Rpb24oY20pIHtjbS5tb3ZlVigxLCAibGluZSIpO30sCisg
ICAgZ29QYWdlVXA6IGZ1bmN0aW9uKGNtKSB7Y20ubW92ZVYoLTEsICJwYWdlIik7fSwKKyAgICBn
b1BhZ2VEb3duOiBmdW5jdGlvbihjbSkge2NtLm1vdmVWKDEsICJwYWdlIik7fSwKKyAgICBnb0No
YXJMZWZ0OiBmdW5jdGlvbihjbSkge2NtLm1vdmVIKC0xLCAiY2hhciIpO30sCisgICAgZ29DaGFy
UmlnaHQ6IGZ1bmN0aW9uKGNtKSB7Y20ubW92ZUgoMSwgImNoYXIiKTt9LAorICAgIGdvQ29sdW1u
TGVmdDogZnVuY3Rpb24oY20pIHtjbS5tb3ZlSCgtMSwgImNvbHVtbiIpO30sCisgICAgZ29Db2x1
bW5SaWdodDogZnVuY3Rpb24oY20pIHtjbS5tb3ZlSCgxLCAiY29sdW1uIik7fSwKKyAgICBnb1dv
cmRMZWZ0OiBmdW5jdGlvbihjbSkge2NtLm1vdmVIKC0xLCAid29yZCIpO30sCisgICAgZ29Xb3Jk
UmlnaHQ6IGZ1bmN0aW9uKGNtKSB7Y20ubW92ZUgoMSwgIndvcmQiKTt9LAorICAgIGRlbENoYXJM
ZWZ0OiBmdW5jdGlvbihjbSkge2NtLmRlbGV0ZUgoLTEsICJjaGFyIik7fSwKKyAgICBkZWxDaGFy
UmlnaHQ6IGZ1bmN0aW9uKGNtKSB7Y20uZGVsZXRlSCgxLCAiY2hhciIpO30sCisgICAgZGVsV29y
ZExlZnQ6IGZ1bmN0aW9uKGNtKSB7Y20uZGVsZXRlSCgtMSwgIndvcmQiKTt9LAorICAgIGRlbFdv
cmRSaWdodDogZnVuY3Rpb24oY20pIHtjbS5kZWxldGVIKDEsICJ3b3JkIik7fSwKKyAgICBpbmRl
bnRBdXRvOiBmdW5jdGlvbihjbSkge2NtLmluZGVudFNlbGVjdGlvbigic21hcnQiKTt9LAorICAg
IGluZGVudE1vcmU6IGZ1bmN0aW9uKGNtKSB7Y20uaW5kZW50U2VsZWN0aW9uKCJhZGQiKTt9LAor
ICAgIGluZGVudExlc3M6IGZ1bmN0aW9uKGNtKSB7Y20uaW5kZW50U2VsZWN0aW9uKCJzdWJ0cmFj
dCIpO30sCisgICAgaW5zZXJ0VGFiOiBmdW5jdGlvbihjbSkge2NtLnJlcGxhY2VTZWxlY3Rpb24o
Ilx0IiwgImVuZCIpO30sCisgICAgZGVmYXVsdFRhYjogZnVuY3Rpb24oY20pIHsKKyAgICAgIGlm
IChjbS5zb21ldGhpbmdTZWxlY3RlZCgpKSBjbS5pbmRlbnRTZWxlY3Rpb24oImFkZCIpOworICAg
ICAgZWxzZSBjbS5yZXBsYWNlU2VsZWN0aW9uKCJcdCIsICJlbmQiKTsKKyAgICB9LAorICAgIHRy
YW5zcG9zZUNoYXJzOiBmdW5jdGlvbihjbSkgeworICAgICAgdmFyIGN1ciA9IGNtLmdldEN1cnNv
cigpLCBsaW5lID0gY20uZ2V0TGluZShjdXIubGluZSk7CisgICAgICBpZiAoY3VyLmNoID4gMCAm
JiBjdXIuY2ggPCBsaW5lLmxlbmd0aCAtIDEpCisgICAgICAgIGNtLnJlcGxhY2VSYW5nZShsaW5l
LmNoYXJBdChjdXIuY2gpICsgbGluZS5jaGFyQXQoY3VyLmNoIC0gMSksCisgICAgICAgICAgICAg
ICAgICAgICAgICB7bGluZTogY3VyLmxpbmUsIGNoOiBjdXIuY2ggLSAxfSwge2xpbmU6IGN1ci5s
aW5lLCBjaDogY3VyLmNoICsgMX0pOworICAgIH0sCisgICAgbmV3bGluZUFuZEluZGVudDogZnVu
Y3Rpb24oY20pIHsKKyAgICAgIGNtLnJlcGxhY2VTZWxlY3Rpb24oIlxuIiwgImVuZCIpOworICAg
ICAgY20uaW5kZW50TGluZShjbS5nZXRDdXJzb3IoKS5saW5lKTsKKyAgICB9LAorICAgIHRvZ2ds
ZU92ZXJ3cml0ZTogZnVuY3Rpb24oY20pIHtjbS50b2dnbGVPdmVyd3JpdGUoKTt9CisgIH07CisK
KyAgdmFyIGtleU1hcCA9IENvZGVNaXJyb3Iua2V5TWFwID0ge307CisgIGtleU1hcC5iYXNpYyA9
IHsKKyAgICAiTGVmdCI6ICJnb0NoYXJMZWZ0IiwgIlJpZ2h0IjogImdvQ2hhclJpZ2h0IiwgIlVw
IjogImdvTGluZVVwIiwgIkRvd24iOiAiZ29MaW5lRG93biIsCisgICAgIkVuZCI6ICJnb0xpbmVF
bmQiLCAiSG9tZSI6ICJnb0xpbmVTdGFydFNtYXJ0IiwgIlBhZ2VVcCI6ICJnb1BhZ2VVcCIsICJQ
YWdlRG93biI6ICJnb1BhZ2VEb3duIiwKKyAgICAiRGVsZXRlIjogImRlbENoYXJSaWdodCIsICJC
YWNrc3BhY2UiOiAiZGVsQ2hhckxlZnQiLCAiVGFiIjogImRlZmF1bHRUYWIiLCAiU2hpZnQtVGFi
IjogImluZGVudEF1dG8iLAorICAgICJFbnRlciI6ICJuZXdsaW5lQW5kSW5kZW50IiwgIkluc2Vy
dCI6ICJ0b2dnbGVPdmVyd3JpdGUiCisgIH07CisgIC8vIE5vdGUgdGhhdCB0aGUgc2F2ZSBhbmQg
ZmluZC1yZWxhdGVkIGNvbW1hbmRzIGFyZW4ndCBkZWZpbmVkIGJ5CisgIC8vIGRlZmF1bHQuIFVu
a25vd24gY29tbWFuZHMgYXJlIHNpbXBseSBpZ25vcmVkLgorICBrZXlNYXAucGNEZWZhdWx0ID0g
eworICAgICJDdHJsLUEiOiAic2VsZWN0QWxsIiwgIkN0cmwtRCI6ICJkZWxldGVMaW5lIiwgIkN0
cmwtWiI6ICJ1bmRvIiwgIlNoaWZ0LUN0cmwtWiI6ICJyZWRvIiwgIkN0cmwtWSI6ICJyZWRvIiwK
KyAgICAiQ3RybC1Ib21lIjogImdvRG9jU3RhcnQiLCAiQWx0LVVwIjogImdvRG9jU3RhcnQiLCAi
Q3RybC1FbmQiOiAiZ29Eb2NFbmQiLCAiQ3RybC1Eb3duIjogImdvRG9jRW5kIiwKKyAgICAiQ3Ry
bC1MZWZ0IjogImdvV29yZExlZnQiLCAiQ3RybC1SaWdodCI6ICJnb1dvcmRSaWdodCIsICJBbHQt
TGVmdCI6ICJnb0xpbmVTdGFydCIsICJBbHQtUmlnaHQiOiAiZ29MaW5lRW5kIiwKKyAgICAiQ3Ry
bC1CYWNrc3BhY2UiOiAiZGVsV29yZExlZnQiLCAiQ3RybC1EZWxldGUiOiAiZGVsV29yZFJpZ2h0
IiwgIkN0cmwtUyI6ICJzYXZlIiwgIkN0cmwtRiI6ICJmaW5kIiwKKyAgICAiQ3RybC1HIjogImZp
bmROZXh0IiwgIlNoaWZ0LUN0cmwtRyI6ICJmaW5kUHJldiIsICJTaGlmdC1DdHJsLUYiOiAicmVw
bGFjZSIsICJTaGlmdC1DdHJsLVIiOiAicmVwbGFjZUFsbCIsCisgICAgIkN0cmwtWyI6ICJpbmRl
bnRMZXNzIiwgIkN0cmwtXSI6ICJpbmRlbnRNb3JlIiwKKyAgICBmYWxsdGhyb3VnaDogImJhc2lj
IgorICB9OworICBrZXlNYXAubWFjRGVmYXVsdCA9IHsKKyAgICAiQ21kLUEiOiAic2VsZWN0QWxs
IiwgIkNtZC1EIjogImRlbGV0ZUxpbmUiLCAiQ21kLVoiOiAidW5kbyIsICJTaGlmdC1DbWQtWiI6
ICJyZWRvIiwgIkNtZC1ZIjogInJlZG8iLAorICAgICJDbWQtVXAiOiAiZ29Eb2NTdGFydCIsICJD
bWQtRW5kIjogImdvRG9jRW5kIiwgIkNtZC1Eb3duIjogImdvRG9jRW5kIiwgIkFsdC1MZWZ0Ijog
ImdvV29yZExlZnQiLAorICAgICJBbHQtUmlnaHQiOiAiZ29Xb3JkUmlnaHQiLCAiQ21kLUxlZnQi
OiAiZ29MaW5lU3RhcnQiLCAiQ21kLVJpZ2h0IjogImdvTGluZUVuZCIsICJBbHQtQmFja3NwYWNl
IjogImRlbFdvcmRMZWZ0IiwKKyAgICAiQ3RybC1BbHQtQmFja3NwYWNlIjogImRlbFdvcmRSaWdo
dCIsICJBbHQtRGVsZXRlIjogImRlbFdvcmRSaWdodCIsICJDbWQtUyI6ICJzYXZlIiwgIkNtZC1G
IjogImZpbmQiLAorICAgICJDbWQtRyI6ICJmaW5kTmV4dCIsICJTaGlmdC1DbWQtRyI6ICJmaW5k
UHJldiIsICJDbWQtQWx0LUYiOiAicmVwbGFjZSIsICJTaGlmdC1DbWQtQWx0LUYiOiAicmVwbGFj
ZUFsbCIsCisgICAgIkNtZC1bIjogImluZGVudExlc3MiLCAiQ21kLV0iOiAiaW5kZW50TW9yZSIs
CisgICAgZmFsbHRocm91Z2g6IFsiYmFzaWMiLCAiZW1hY3N5Il0KKyAgfTsKKyAga2V5TWFwWyJk
ZWZhdWx0Il0gPSBtYWMgPyBrZXlNYXAubWFjRGVmYXVsdCA6IGtleU1hcC5wY0RlZmF1bHQ7Cisg
IGtleU1hcC5lbWFjc3kgPSB7CisgICAgIkN0cmwtRiI6ICJnb0NoYXJSaWdodCIsICJDdHJsLUIi
OiAiZ29DaGFyTGVmdCIsICJDdHJsLVAiOiAiZ29MaW5lVXAiLCAiQ3RybC1OIjogImdvTGluZURv
d24iLAorICAgICJBbHQtRiI6ICJnb1dvcmRSaWdodCIsICJBbHQtQiI6ICJnb1dvcmRMZWZ0Iiwg
IkN0cmwtQSI6ICJnb0xpbmVTdGFydCIsICJDdHJsLUUiOiAiZ29MaW5lRW5kIiwKKyAgICAiQ3Ry
bC1WIjogImdvUGFnZVVwIiwgIlNoaWZ0LUN0cmwtViI6ICJnb1BhZ2VEb3duIiwgIkN0cmwtRCI6
ICJkZWxDaGFyUmlnaHQiLCAiQ3RybC1IIjogImRlbENoYXJMZWZ0IiwKKyAgICAiQWx0LUQiOiAi
ZGVsV29yZFJpZ2h0IiwgIkFsdC1CYWNrc3BhY2UiOiAiZGVsV29yZExlZnQiLCAiQ3RybC1LIjog
ImtpbGxMaW5lIiwgIkN0cmwtVCI6ICJ0cmFuc3Bvc2VDaGFycyIKKyAgfTsKKworICBmdW5jdGlv
biBnZXRLZXlNYXAodmFsKSB7CisgICAgaWYgKHR5cGVvZiB2YWwgPT0gInN0cmluZyIpIHJldHVy
biBrZXlNYXBbdmFsXTsKKyAgICBlbHNlIHJldHVybiB2YWw7CisgIH0KKyAgZnVuY3Rpb24gbG9v
a3VwS2V5KG5hbWUsIGV4dHJhTWFwLCBtYXAsIGhhbmRsZSwgc3RvcCkgeworICAgIGZ1bmN0aW9u
IGxvb2t1cChtYXApIHsKKyAgICAgIG1hcCA9IGdldEtleU1hcChtYXApOworICAgICAgdmFyIGZv
dW5kID0gbWFwW25hbWVdOworICAgICAgaWYgKGZvdW5kID09PSBmYWxzZSkgeworICAgICAgICBp
ZiAoc3RvcCkgc3RvcCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIGlm
IChmb3VuZCAhPSBudWxsICYmIGhhbmRsZShmb3VuZCkpIHJldHVybiB0cnVlOworICAgICAgaWYg
KG1hcC5ub2ZhbGx0aHJvdWdoKSB7CisgICAgICAgIGlmIChzdG9wKSBzdG9wKCk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgfQorICAgICAgdmFyIGZhbGx0aHJvdWdoID0gbWFwLmZhbGx0
aHJvdWdoOworICAgICAgaWYgKGZhbGx0aHJvdWdoID09IG51bGwpIHJldHVybiBmYWxzZTsKKyAg
ICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZmFsbHRocm91Z2gpICE9ICJb
b2JqZWN0IEFycmF5XSIpCisgICAgICAgIHJldHVybiBsb29rdXAoZmFsbHRocm91Z2gpOworICAg
ICAgZm9yICh2YXIgaSA9IDAsIGUgPSBmYWxsdGhyb3VnaC5sZW5ndGg7IGkgPCBlOyArK2kpIHsK
KyAgICAgICAgaWYgKGxvb2t1cChmYWxsdGhyb3VnaFtpXSkpIHJldHVybiB0cnVlOworICAgICAg
fQorICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAoZXh0cmFNYXAgJiYgbG9va3Vw
KGV4dHJhTWFwKSkgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGxvb2t1cChtYXApOworICB9Cisg
IGZ1bmN0aW9uIGlzTW9kaWZpZXJLZXkoZXZlbnQpIHsKKyAgICB2YXIgbmFtZSA9IGtleU5hbWVz
W2VfcHJvcChldmVudCwgImtleUNvZGUiKV07CisgICAgcmV0dXJuIG5hbWUgPT0gIkN0cmwiIHx8
IG5hbWUgPT0gIkFsdCIgfHwgbmFtZSA9PSAiU2hpZnQiIHx8IG5hbWUgPT0gIk1vZCI7CisgIH0K
KworICBDb2RlTWlycm9yLmZyb21UZXh0QXJlYSA9IGZ1bmN0aW9uKHRleHRhcmVhLCBvcHRpb25z
KSB7CisgICAgaWYgKCFvcHRpb25zKSBvcHRpb25zID0ge307CisgICAgb3B0aW9ucy52YWx1ZSA9
IHRleHRhcmVhLnZhbHVlOworICAgIGlmICghb3B0aW9ucy50YWJpbmRleCAmJiB0ZXh0YXJlYS50
YWJpbmRleCkKKyAgICAgIG9wdGlvbnMudGFiaW5kZXggPSB0ZXh0YXJlYS50YWJpbmRleDsKKyAg
ICBpZiAob3B0aW9ucy5hdXRvZm9jdXMgPT0gbnVsbCAmJiB0ZXh0YXJlYS5nZXRBdHRyaWJ1dGUo
ImF1dG9mb2N1cyIpICE9IG51bGwpCisgICAgICBvcHRpb25zLmF1dG9mb2N1cyA9IHRydWU7CisK
KyAgICBmdW5jdGlvbiBzYXZlKCkge3RleHRhcmVhLnZhbHVlID0gaW5zdGFuY2UuZ2V0VmFsdWUo
KTt9CisgICAgaWYgKHRleHRhcmVhLmZvcm0pIHsKKyAgICAgIC8vIERlcGxvcmFibGUgaGFjayB0
byBtYWtlIHRoZSBzdWJtaXQgbWV0aG9kIGRvIHRoZSByaWdodCB0aGluZy4KKyAgICAgIHZhciBy
bVN1Ym1pdCA9IGNvbm5lY3QodGV4dGFyZWEuZm9ybSwgInN1Ym1pdCIsIHNhdmUsIHRydWUpOwor
ICAgICAgaWYgKHR5cGVvZiB0ZXh0YXJlYS5mb3JtLnN1Ym1pdCA9PSAiZnVuY3Rpb24iKSB7Cisg
ICAgICAgIHZhciByZWFsU3VibWl0ID0gdGV4dGFyZWEuZm9ybS5zdWJtaXQ7CisgICAgICAgIHRl
eHRhcmVhLmZvcm0uc3VibWl0ID0gZnVuY3Rpb24gd3JhcHBlZFN1Ym1pdCgpIHsKKyAgICAgICAg
ICBzYXZlKCk7CisgICAgICAgICAgdGV4dGFyZWEuZm9ybS5zdWJtaXQgPSByZWFsU3VibWl0Owor
ICAgICAgICAgIHRleHRhcmVhLmZvcm0uc3VibWl0KCk7CisgICAgICAgICAgdGV4dGFyZWEuZm9y
bS5zdWJtaXQgPSB3cmFwcGVkU3VibWl0OworICAgICAgICB9OworICAgICAgfQorICAgIH0KKwor
ICAgIHRleHRhcmVhLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CisgICAgdmFyIGluc3RhbmNlID0g
Q29kZU1pcnJvcihmdW5jdGlvbihub2RlKSB7CisgICAgICB0ZXh0YXJlYS5wYXJlbnROb2RlLmlu
c2VydEJlZm9yZShub2RlLCB0ZXh0YXJlYS5uZXh0U2libGluZyk7CisgICAgfSwgb3B0aW9ucyk7
CisgICAgaW5zdGFuY2Uuc2F2ZSA9IHNhdmU7CisgICAgaW5zdGFuY2UuZ2V0VGV4dEFyZWEgPSBm
dW5jdGlvbigpIHsgcmV0dXJuIHRleHRhcmVhOyB9OworICAgIGluc3RhbmNlLnRvVGV4dEFyZWEg
PSBmdW5jdGlvbigpIHsKKyAgICAgIHNhdmUoKTsKKyAgICAgIHRleHRhcmVhLnBhcmVudE5vZGUu
cmVtb3ZlQ2hpbGQoaW5zdGFuY2UuZ2V0V3JhcHBlckVsZW1lbnQoKSk7CisgICAgICB0ZXh0YXJl
YS5zdHlsZS5kaXNwbGF5ID0gIiI7CisgICAgICBpZiAodGV4dGFyZWEuZm9ybSkgeworICAgICAg
ICBybVN1Ym1pdCgpOworICAgICAgICBpZiAodHlwZW9mIHRleHRhcmVhLmZvcm0uc3VibWl0ID09
ICJmdW5jdGlvbiIpCisgICAgICAgICAgdGV4dGFyZWEuZm9ybS5zdWJtaXQgPSByZWFsU3VibWl0
OworICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIGluc3RhbmNlOworICB9OworCisgIHZhciBn
ZWNrbyA9IC9nZWNrb1wvXGR7N30vaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOworICB2YXIg
aWUgPSAvTVNJRSBcZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTsKKyAgdmFyIGllX2x0OCA9
IC9NU0lFIFsxLTddXGIvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CisgIHZhciBpZV9sdDkg
PSAvTVNJRSBbMS04XVxiLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOworICB2YXIgcXVpcmtz
TW9kZSA9IGllICYmIGRvY3VtZW50LmRvY3VtZW50TW9kZSA9PSA1OworICB2YXIgd2Via2l0ID0g
L1dlYktpdFwvLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOworICB2YXIgY2hyb21lID0gL0No
cm9tZVwvLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOworICB2YXIgb3BlcmEgPSAvT3BlcmFc
Ly8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTsKKyAgdmFyIHNhZmFyaSA9IC9BcHBsZSBDb21w
dXRlci8udGVzdChuYXZpZ2F0b3IudmVuZG9yKTsKKyAgdmFyIGtodG1sID0gL0tIVE1MXC8vLnRl
c3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CisgIHZhciBtYWNfZ2VMaW9uID0gL01hYyBPUyBYIDEw
XEQoWzctOV18XGRcZClcRC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTsKKworICAvLyBVdGls
aXR5IGZ1bmN0aW9ucyBmb3Igd29ya2luZyB3aXRoIHN0YXRlLiBFeHBvcnRlZCBiZWNhdXNlIG1v
ZGVzCisgIC8vIHNvbWV0aW1lcyBuZWVkIHRvIGRvIHRoaXMuCisgIGZ1bmN0aW9uIGNvcHlTdGF0
ZShtb2RlLCBzdGF0ZSkgeworICAgIGlmIChzdGF0ZSA9PT0gdHJ1ZSkgcmV0dXJuIHN0YXRlOwor
ICAgIGlmIChtb2RlLmNvcHlTdGF0ZSkgcmV0dXJuIG1vZGUuY29weVN0YXRlKHN0YXRlKTsKKyAg
ICB2YXIgbnN0YXRlID0ge307CisgICAgZm9yICh2YXIgbiBpbiBzdGF0ZSkgeworICAgICAgdmFy
IHZhbCA9IHN0YXRlW25dOworICAgICAgaWYgKHZhbCBpbnN0YW5jZW9mIEFycmF5KSB2YWwgPSB2
YWwuY29uY2F0KFtdKTsKKyAgICAgIG5zdGF0ZVtuXSA9IHZhbDsKKyAgICB9CisgICAgcmV0dXJu
IG5zdGF0ZTsKKyAgfQorICBDb2RlTWlycm9yLmNvcHlTdGF0ZSA9IGNvcHlTdGF0ZTsKKyAgZnVu
Y3Rpb24gc3RhcnRTdGF0ZShtb2RlLCBhMSwgYTIpIHsKKyAgICByZXR1cm4gbW9kZS5zdGFydFN0
YXRlID8gbW9kZS5zdGFydFN0YXRlKGExLCBhMikgOiB0cnVlOworICB9CisgIENvZGVNaXJyb3Iu
c3RhcnRTdGF0ZSA9IHN0YXJ0U3RhdGU7CisKKyAgLy8gVGhlIGNoYXJhY3RlciBzdHJlYW0gdXNl
ZCBieSBhIG1vZGUncyBwYXJzZXIuCisgIGZ1bmN0aW9uIFN0cmluZ1N0cmVhbShzdHJpbmcsIHRh
YlNpemUpIHsKKyAgICB0aGlzLnBvcyA9IHRoaXMuc3RhcnQgPSAwOworICAgIHRoaXMuc3RyaW5n
ID0gc3RyaW5nOworICAgIHRoaXMudGFiU2l6ZSA9IHRhYlNpemUgfHwgODsKKyAgfQorICBTdHJp
bmdTdHJlYW0ucHJvdG90eXBlID0geworICAgIGVvbDogZnVuY3Rpb24oKSB7cmV0dXJuIHRoaXMu
cG9zID49IHRoaXMuc3RyaW5nLmxlbmd0aDt9LAorICAgIHNvbDogZnVuY3Rpb24oKSB7cmV0dXJu
IHRoaXMucG9zID09IDA7fSwKKyAgICBwZWVrOiBmdW5jdGlvbigpIHtyZXR1cm4gdGhpcy5zdHJp
bmcuY2hhckF0KHRoaXMucG9zKTt9LAorICAgIG5leHQ6IGZ1bmN0aW9uKCkgeworICAgICAgaWYg
KHRoaXMucG9zIDwgdGhpcy5zdHJpbmcubGVuZ3RoKQorICAgICAgICByZXR1cm4gdGhpcy5zdHJp
bmcuY2hhckF0KHRoaXMucG9zKyspOworICAgIH0sCisgICAgZWF0OiBmdW5jdGlvbihtYXRjaCkg
eworICAgICAgdmFyIGNoID0gdGhpcy5zdHJpbmcuY2hhckF0KHRoaXMucG9zKTsKKyAgICAgIGlm
ICh0eXBlb2YgbWF0Y2ggPT0gInN0cmluZyIpIHZhciBvayA9IGNoID09IG1hdGNoOworICAgICAg
ZWxzZSB2YXIgb2sgPSBjaCAmJiAobWF0Y2gudGVzdCA/IG1hdGNoLnRlc3QoY2gpIDogbWF0Y2go
Y2gpKTsKKyAgICAgIGlmIChvaykgeysrdGhpcy5wb3M7IHJldHVybiBjaDt9CisgICAgfSwKKyAg
ICBlYXRXaGlsZTogZnVuY3Rpb24obWF0Y2gpIHsKKyAgICAgIHZhciBzdGFydCA9IHRoaXMucG9z
OworICAgICAgd2hpbGUgKHRoaXMuZWF0KG1hdGNoKSl7fQorICAgICAgcmV0dXJuIHRoaXMucG9z
ID4gc3RhcnQ7CisgICAgfSwKKyAgICBlYXRTcGFjZTogZnVuY3Rpb24oKSB7CisgICAgICB2YXIg
c3RhcnQgPSB0aGlzLnBvczsKKyAgICAgIHdoaWxlICgvW1xzXHUwMGEwXS8udGVzdCh0aGlzLnN0
cmluZy5jaGFyQXQodGhpcy5wb3MpKSkgKyt0aGlzLnBvczsKKyAgICAgIHJldHVybiB0aGlzLnBv
cyA+IHN0YXJ0OworICAgIH0sCisgICAgc2tpcFRvRW5kOiBmdW5jdGlvbigpIHt0aGlzLnBvcyA9
IHRoaXMuc3RyaW5nLmxlbmd0aDt9LAorICAgIHNraXBUbzogZnVuY3Rpb24oY2gpIHsKKyAgICAg
IHZhciBmb3VuZCA9IHRoaXMuc3RyaW5nLmluZGV4T2YoY2gsIHRoaXMucG9zKTsKKyAgICAgIGlm
IChmb3VuZCA+IC0xKSB7dGhpcy5wb3MgPSBmb3VuZDsgcmV0dXJuIHRydWU7fQorICAgIH0sCisg
ICAgYmFja1VwOiBmdW5jdGlvbihuKSB7dGhpcy5wb3MgLT0gbjt9LAorICAgIGNvbHVtbjogZnVu
Y3Rpb24oKSB7cmV0dXJuIGNvdW50Q29sdW1uKHRoaXMuc3RyaW5nLCB0aGlzLnN0YXJ0LCB0aGlz
LnRhYlNpemUpO30sCisgICAgaW5kZW50YXRpb246IGZ1bmN0aW9uKCkge3JldHVybiBjb3VudENv
bHVtbih0aGlzLnN0cmluZywgbnVsbCwgdGhpcy50YWJTaXplKTt9LAorICAgIG1hdGNoOiBmdW5j
dGlvbihwYXR0ZXJuLCBjb25zdW1lLCBjYXNlSW5zZW5zaXRpdmUpIHsKKyAgICAgIGlmICh0eXBl
b2YgcGF0dGVybiA9PSAic3RyaW5nIikgeworICAgICAgICB2YXIgY2FzZWQgPSBmdW5jdGlvbihz
dHIpIHtyZXR1cm4gY2FzZUluc2Vuc2l0aXZlID8gc3RyLnRvTG93ZXJDYXNlKCkgOiBzdHI7fTsK
KyAgICAgICAgaWYgKGNhc2VkKHRoaXMuc3RyaW5nKS5pbmRleE9mKGNhc2VkKHBhdHRlcm4pLCB0
aGlzLnBvcykgPT0gdGhpcy5wb3MpIHsKKyAgICAgICAgICBpZiAoY29uc3VtZSAhPT0gZmFsc2Up
IHRoaXMucG9zICs9IHBhdHRlcm4ubGVuZ3RoOworICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICB2YXIgbWF0Y2ggPSB0aGlzLnN0cmluZy5z
bGljZSh0aGlzLnBvcykubWF0Y2gocGF0dGVybik7CisgICAgICAgIGlmIChtYXRjaCAmJiBjb25z
dW1lICE9PSBmYWxzZSkgdGhpcy5wb3MgKz0gbWF0Y2hbMF0ubGVuZ3RoOworICAgICAgICByZXR1
cm4gbWF0Y2g7CisgICAgICB9CisgICAgfSwKKyAgICBjdXJyZW50OiBmdW5jdGlvbigpe3JldHVy
biB0aGlzLnN0cmluZy5zbGljZSh0aGlzLnN0YXJ0LCB0aGlzLnBvcyk7fQorICB9OworICBDb2Rl
TWlycm9yLlN0cmluZ1N0cmVhbSA9IFN0cmluZ1N0cmVhbTsKKworICBmdW5jdGlvbiBNYXJrZWRU
ZXh0KGZyb20sIHRvLCBjbGFzc05hbWUsIG1hcmtlcikgeworICAgIHRoaXMuZnJvbSA9IGZyb207
IHRoaXMudG8gPSB0bzsgdGhpcy5zdHlsZSA9IGNsYXNzTmFtZTsgdGhpcy5tYXJrZXIgPSBtYXJr
ZXI7CisgIH0KKyAgTWFya2VkVGV4dC5wcm90b3R5cGUgPSB7CisgICAgYXR0YWNoOiBmdW5jdGlv
bihsaW5lKSB7IHRoaXMubWFya2VyLnNldC5wdXNoKGxpbmUpOyB9LAorICAgIGRldGFjaDogZnVu
Y3Rpb24obGluZSkgeworICAgICAgdmFyIGl4ID0gaW5kZXhPZih0aGlzLm1hcmtlci5zZXQsIGxp
bmUpOworICAgICAgaWYgKGl4ID4gLTEpIHRoaXMubWFya2VyLnNldC5zcGxpY2UoaXgsIDEpOwor
ICAgIH0sCisgICAgc3BsaXQ6IGZ1bmN0aW9uKHBvcywgbGVuQmVmb3JlKSB7CisgICAgICBpZiAo
dGhpcy50byA8PSBwb3MgJiYgdGhpcy50byAhPSBudWxsKSByZXR1cm4gbnVsbDsKKyAgICAgIHZh
ciBmcm9tID0gdGhpcy5mcm9tIDwgcG9zIHx8IHRoaXMuZnJvbSA9PSBudWxsID8gbnVsbCA6IHRo
aXMuZnJvbSAtIHBvcyArIGxlbkJlZm9yZTsKKyAgICAgIHZhciB0byA9IHRoaXMudG8gPT0gbnVs
bCA/IG51bGwgOiB0aGlzLnRvIC0gcG9zICsgbGVuQmVmb3JlOworICAgICAgcmV0dXJuIG5ldyBN
YXJrZWRUZXh0KGZyb20sIHRvLCB0aGlzLnN0eWxlLCB0aGlzLm1hcmtlcik7CisgICAgfSwKKyAg
ICBkdXA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbmV3IE1hcmtlZFRleHQobnVsbCwgbnVsbCwgdGhp
cy5zdHlsZSwgdGhpcy5tYXJrZXIpOyB9LAorICAgIGNsaXBUbzogZnVuY3Rpb24oZnJvbU9wZW4s
IGZyb20sIHRvT3BlbiwgdG8sIGRpZmYpIHsKKyAgICAgIGlmIChmcm9tT3BlbiAmJiB0byA+IHRo
aXMuZnJvbSAmJiAodG8gPCB0aGlzLnRvIHx8IHRoaXMudG8gPT0gbnVsbCkpCisgICAgICAgIHRo
aXMuZnJvbSA9IG51bGw7CisgICAgICBlbHNlIGlmICh0aGlzLmZyb20gIT0gbnVsbCAmJiB0aGlz
LmZyb20gPj0gZnJvbSkKKyAgICAgICAgdGhpcy5mcm9tID0gTWF0aC5tYXgodG8sIHRoaXMuZnJv
bSkgKyBkaWZmOworICAgICAgaWYgKHRvT3BlbiAmJiAoZnJvbSA8IHRoaXMudG8gfHwgdGhpcy50
byA9PSBudWxsKSAmJiAoZnJvbSA+IHRoaXMuZnJvbSB8fCB0aGlzLmZyb20gPT0gbnVsbCkpCisg
ICAgICAgIHRoaXMudG8gPSBudWxsOworICAgICAgZWxzZSBpZiAodGhpcy50byAhPSBudWxsICYm
IHRoaXMudG8gPiBmcm9tKQorICAgICAgICB0aGlzLnRvID0gdG8gPCB0aGlzLnRvID8gdGhpcy50
byArIGRpZmYgOiBmcm9tOworICAgIH0sCisgICAgaXNEZWFkOiBmdW5jdGlvbigpIHsgcmV0dXJu
IHRoaXMuZnJvbSAhPSBudWxsICYmIHRoaXMudG8gIT0gbnVsbCAmJiB0aGlzLmZyb20gPj0gdGhp
cy50bzsgfSwKKyAgICBzYW1lU2V0OiBmdW5jdGlvbih4KSB7IHJldHVybiB0aGlzLm1hcmtlciA9
PSB4Lm1hcmtlcjsgfQorICB9OworCisgIGZ1bmN0aW9uIEJvb2ttYXJrKHBvcykgeworICAgIHRo
aXMuZnJvbSA9IHBvczsgdGhpcy50byA9IHBvczsgdGhpcy5saW5lID0gbnVsbDsKKyAgfQorICBC
b29rbWFyay5wcm90b3R5cGUgPSB7CisgICAgYXR0YWNoOiBmdW5jdGlvbihsaW5lKSB7IHRoaXMu
bGluZSA9IGxpbmU7IH0sCisgICAgZGV0YWNoOiBmdW5jdGlvbihsaW5lKSB7IGlmICh0aGlzLmxp
bmUgPT0gbGluZSkgdGhpcy5saW5lID0gbnVsbDsgfSwKKyAgICBzcGxpdDogZnVuY3Rpb24ocG9z
LCBsZW5CZWZvcmUpIHsKKyAgICAgIGlmIChwb3MgPCB0aGlzLmZyb20pIHsKKyAgICAgICAgdGhp
cy5mcm9tID0gdGhpcy50byA9ICh0aGlzLmZyb20gLSBwb3MpICsgbGVuQmVmb3JlOworICAgICAg
ICByZXR1cm4gdGhpczsKKyAgICAgIH0KKyAgICB9LAorICAgIGlzRGVhZDogZnVuY3Rpb24oKSB7
IHJldHVybiB0aGlzLmZyb20gPiB0aGlzLnRvOyB9LAorICAgIGNsaXBUbzogZnVuY3Rpb24oZnJv
bU9wZW4sIGZyb20sIHRvT3BlbiwgdG8sIGRpZmYpIHsKKyAgICAgIGlmICgoZnJvbU9wZW4gfHwg
ZnJvbSA8IHRoaXMuZnJvbSkgJiYgKHRvT3BlbiB8fCB0byA+IHRoaXMudG8pKSB7CisgICAgICAg
IHRoaXMuZnJvbSA9IDA7IHRoaXMudG8gPSAtMTsKKyAgICAgIH0gZWxzZSBpZiAodGhpcy5mcm9t
ID4gZnJvbSkgeworICAgICAgICB0aGlzLmZyb20gPSB0aGlzLnRvID0gTWF0aC5tYXgodG8sIHRo
aXMuZnJvbSkgKyBkaWZmOworICAgICAgfQorICAgIH0sCisgICAgc2FtZVNldDogZnVuY3Rpb24o
eCkgeyByZXR1cm4gZmFsc2U7IH0sCisgICAgZmluZDogZnVuY3Rpb24oKSB7CisgICAgICBpZiAo
IXRoaXMubGluZSB8fCAhdGhpcy5saW5lLnBhcmVudCkgcmV0dXJuIG51bGw7CisgICAgICByZXR1
cm4ge2xpbmU6IGxpbmVObyh0aGlzLmxpbmUpLCBjaDogdGhpcy5mcm9tfTsKKyAgICB9LAorICAg
IGNsZWFyOiBmdW5jdGlvbigpIHsKKyAgICAgIGlmICh0aGlzLmxpbmUpIHsKKyAgICAgICAgdmFy
IGZvdW5kID0gaW5kZXhPZih0aGlzLmxpbmUubWFya2VkLCB0aGlzKTsKKyAgICAgICAgaWYgKGZv
dW5kICE9IC0xKSB0aGlzLmxpbmUubWFya2VkLnNwbGljZShmb3VuZCwgMSk7CisgICAgICAgIHRo
aXMubGluZSA9IG51bGw7CisgICAgICB9CisgICAgfQorICB9OworCisgIC8vIFdoZW4gbWVhc3Vy
aW5nIHRoZSBwb3NpdGlvbiBvZiB0aGUgZW5kIG9mIGEgbGluZSwgZGlmZmVyZW50CisgIC8vIGJy
b3dzZXJzIHJlcXVpcmUgZGlmZmVyZW50IGFwcHJvYWNoZXMuIElmIGFuIGVtcHR5IHNwYW4gaXMg
YWRkZWQsCisgIC8vIG1hbnkgYnJvd3NlcnMgcmVwb3J0IGJvZ3VzIG9mZnNldHMuIE9mIHRob3Nl
LCBzb21lIChXZWJraXQsCisgIC8vIHJlY2VudCBJRSkgd2lsbCBhY2NlcHQgYSBzcGFjZSB3aXRo
b3V0IG1vdmluZyB0aGUgd2hvbGUgc3BhbiB0bworICAvLyB0aGUgbmV4dCBsaW5lIHdoZW4gd3Jh
cHBpbmcgaXQsIG90aGVycyB3b3JrIHdpdGggYSB6ZXJvLXdpZHRoCisgIC8vIHNwYWNlLgorICB2
YXIgZW9sU3BhbkNvbnRlbnQgPSAiICI7CisgIGlmIChnZWNrbyB8fCAoaWUgJiYgIWllX2x0OCkp
IGVvbFNwYW5Db250ZW50ID0gIlx1MjAwYiI7CisgIGVsc2UgaWYgKG9wZXJhKSBlb2xTcGFuQ29u
dGVudCA9ICIiOworCisgIC8vIExpbmUgb2JqZWN0cy4gVGhlc2UgaG9sZCBzdGF0ZSByZWxhdGVk
IHRvIGEgbGluZSwgaW5jbHVkaW5nCisgIC8vIGhpZ2hsaWdodGluZyBpbmZvICh0aGUgc3R5bGVz
IGFycmF5KS4KKyAgZnVuY3Rpb24gTGluZSh0ZXh0LCBzdHlsZXMpIHsKKyAgICB0aGlzLnN0eWxl
cyA9IHN0eWxlcyB8fCBbdGV4dCwgbnVsbF07CisgICAgdGhpcy50ZXh0ID0gdGV4dDsKKyAgICB0
aGlzLmhlaWdodCA9IDE7CisgIH0KKyAgTGluZS5pbmhlcml0TWFya3MgPSBmdW5jdGlvbih0ZXh0
LCBvcmlnKSB7CisgICAgdmFyIGxuID0gbmV3IExpbmUodGV4dCksIG1rID0gb3JpZyAmJiBvcmln
Lm1hcmtlZDsKKyAgICBpZiAobWspIHsKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWsubGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgaWYgKG1rW2ldLnRvID09IG51bGwgJiYgbWtbaV0uc3R5bGUp
IHsKKyAgICAgICAgICB2YXIgbmV3bWsgPSBsbi5tYXJrZWQgfHwgKGxuLm1hcmtlZCA9IFtdKSwg
bWFyayA9IG1rW2ldOworICAgICAgICAgIHZhciBubWFyayA9IG1hcmsuZHVwKCk7IG5ld21rLnB1
c2gobm1hcmspOyBubWFyay5hdHRhY2gobG4pOworICAgICAgICB9CisgICAgICB9CisgICAgfQor
ICAgIHJldHVybiBsbjsKKyAgfTsKKyAgTGluZS5wcm90b3R5cGUgPSB7CisgICAgLy8gUmVwbGFj
ZSBhIHBpZWNlIG9mIGEgbGluZSwga2VlcGluZyB0aGUgc3R5bGVzIGFyb3VuZCBpdCBpbnRhY3Qu
CisgICAgcmVwbGFjZTogZnVuY3Rpb24oZnJvbSwgdG9fLCB0ZXh0KSB7CisgICAgICB2YXIgc3Qg
PSBbXSwgbWsgPSB0aGlzLm1hcmtlZCwgdG8gPSB0b18gPT0gbnVsbCA/IHRoaXMudGV4dC5sZW5n
dGggOiB0b187CisgICAgICBjb3B5U3R5bGVzKDAsIGZyb20sIHRoaXMuc3R5bGVzLCBzdCk7Cisg
ICAgICBpZiAodGV4dCkgc3QucHVzaCh0ZXh0LCBudWxsKTsKKyAgICAgIGNvcHlTdHlsZXModG8s
IHRoaXMudGV4dC5sZW5ndGgsIHRoaXMuc3R5bGVzLCBzdCk7CisgICAgICB0aGlzLnN0eWxlcyA9
IHN0OworICAgICAgdGhpcy50ZXh0ID0gdGhpcy50ZXh0LnNsaWNlKDAsIGZyb20pICsgdGV4dCAr
IHRoaXMudGV4dC5zbGljZSh0byk7CisgICAgICB0aGlzLnN0YXRlQWZ0ZXIgPSBudWxsOworICAg
ICAgaWYgKG1rKSB7CisgICAgICAgIHZhciBkaWZmID0gdGV4dC5sZW5ndGggLSAodG8gLSBmcm9t
KTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtay5sZW5ndGg7ICsraSkgeworICAgICAg
ICAgIHZhciBtYXJrID0gbWtbaV07CisgICAgICAgICAgbWFyay5jbGlwVG8oZnJvbSA9PSBudWxs
LCBmcm9tIHx8IDAsIHRvXyA9PSBudWxsLCB0bywgZGlmZik7CisgICAgICAgICAgaWYgKG1hcmsu
aXNEZWFkKCkpIHttYXJrLmRldGFjaCh0aGlzKTsgbWsuc3BsaWNlKGktLSwgMSk7fQorICAgICAg
ICB9CisgICAgICB9CisgICAgfSwKKyAgICAvLyBTcGxpdCBhIHBhcnQgb2ZmIGEgbGluZSwga2Vl
cGluZyBzdHlsZXMgYW5kIG1hcmtlcnMgaW50YWN0LgorICAgIHNwbGl0OiBmdW5jdGlvbihwb3Ms
IHRleHRCZWZvcmUpIHsKKyAgICAgIHZhciBzdCA9IFt0ZXh0QmVmb3JlLCBudWxsXSwgbWsgPSB0
aGlzLm1hcmtlZDsKKyAgICAgIGNvcHlTdHlsZXMocG9zLCB0aGlzLnRleHQubGVuZ3RoLCB0aGlz
LnN0eWxlcywgc3QpOworICAgICAgdmFyIHRha2VuID0gbmV3IExpbmUodGV4dEJlZm9yZSArIHRo
aXMudGV4dC5zbGljZShwb3MpLCBzdCk7CisgICAgICBpZiAobWspIHsKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBtay5sZW5ndGg7ICsraSkgeworICAgICAgICAgIHZhciBtYXJrID0gbWtb
aV07CisgICAgICAgICAgdmFyIG5ld21hcmsgPSBtYXJrLnNwbGl0KHBvcywgdGV4dEJlZm9yZS5s
ZW5ndGgpOworICAgICAgICAgIGlmIChuZXdtYXJrKSB7CisgICAgICAgICAgICBpZiAoIXRha2Vu
Lm1hcmtlZCkgdGFrZW4ubWFya2VkID0gW107CisgICAgICAgICAgICB0YWtlbi5tYXJrZWQucHVz
aChuZXdtYXJrKTsgbmV3bWFyay5hdHRhY2godGFrZW4pOworICAgICAgICAgICAgaWYgKG5ld21h
cmsgPT0gbWFyaykgbWsuc3BsaWNlKGktLSwgMSk7CisgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICB9CisgICAgICByZXR1cm4gdGFrZW47CisgICAgfSwKKyAgICBhcHBlbmQ6IGZ1bmN0aW9u
KGxpbmUpIHsKKyAgICAgIHZhciBteWxlbiA9IHRoaXMudGV4dC5sZW5ndGgsIG1rID0gbGluZS5t
YXJrZWQsIG15bWsgPSB0aGlzLm1hcmtlZDsKKyAgICAgIHRoaXMudGV4dCArPSBsaW5lLnRleHQ7
CisgICAgICBjb3B5U3R5bGVzKDAsIGxpbmUudGV4dC5sZW5ndGgsIGxpbmUuc3R5bGVzLCB0aGlz
LnN0eWxlcyk7CisgICAgICBpZiAobXltaykgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IG15bWsubGVuZ3RoOyArK2kpCisgICAgICAgICAgaWYgKG15bWtbaV0udG8gPT0gbnVsbCkgbXlt
a1tpXS50byA9IG15bGVuOworICAgICAgfQorICAgICAgaWYgKG1rICYmIG1rLmxlbmd0aCkgewor
ICAgICAgICBpZiAoIW15bWspIHRoaXMubWFya2VkID0gbXltayA9IFtdOworICAgICAgICBvdXRl
cjogZm9yICh2YXIgaSA9IDA7IGkgPCBtay5sZW5ndGg7ICsraSkgeworICAgICAgICAgIHZhciBt
YXJrID0gbWtbaV07CisgICAgICAgICAgaWYgKCFtYXJrLmZyb20pIHsKKyAgICAgICAgICAgIGZv
ciAodmFyIGogPSAwOyBqIDwgbXltay5sZW5ndGg7ICsraikgeworICAgICAgICAgICAgICB2YXIg
bXltYXJrID0gbXlta1tqXTsKKyAgICAgICAgICAgICAgaWYgKG15bWFyay50byA9PSBteWxlbiAm
JiBteW1hcmsuc2FtZVNldChtYXJrKSkgeworICAgICAgICAgICAgICAgIG15bWFyay50byA9IG1h
cmsudG8gPT0gbnVsbCA/IG51bGwgOiBtYXJrLnRvICsgbXlsZW47CisgICAgICAgICAgICAgICAg
aWYgKG15bWFyay5pc0RlYWQoKSkgeworICAgICAgICAgICAgICAgICAgbXltYXJrLmRldGFjaCh0
aGlzKTsKKyAgICAgICAgICAgICAgICAgIG1rLnNwbGljZShpLS0sIDEpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBjb250aW51ZSBvdXRlcjsKKyAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBteW1rLnB1c2gobWFyayk7Cisg
ICAgICAgICAgbWFyay5hdHRhY2godGhpcyk7CisgICAgICAgICAgbWFyay5mcm9tICs9IG15bGVu
OworICAgICAgICAgIGlmIChtYXJrLnRvICE9IG51bGwpIG1hcmsudG8gKz0gbXlsZW47CisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgIGZpeE1hcmtFbmRzOiBmdW5jdGlvbihvdGhlcikg
eworICAgICAgdmFyIG1rID0gdGhpcy5tYXJrZWQsIG9tayA9IG90aGVyLm1hcmtlZDsKKyAgICAg
IGlmICghbWspIHJldHVybjsKKyAgICAgIG91dGVyOiBmb3IgKHZhciBpID0gMDsgaSA8IG1rLmxl
bmd0aDsgKytpKSB7CisgICAgICAgIHZhciBtYXJrID0gbWtbaV0sIGNsb3NlID0gbWFyay50byA9
PSBudWxsOworICAgICAgICBpZiAoY2xvc2UgJiYgb21rKSB7CisgICAgICAgICAgZm9yICh2YXIg
aiA9IDA7IGogPCBvbWsubGVuZ3RoOyArK2opIHsKKyAgICAgICAgICAgIHZhciBvbSA9IG9ta1tq
XTsKKyAgICAgICAgICAgIGlmICghb20uc2FtZVNldChtYXJrKSB8fCBvbS5mcm9tICE9IG51bGwp
IGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKG1hcmsuZnJvbSA9PSB0aGlzLnRleHQubGVuZ3Ro
ICYmIG9tLnRvID09IDApIHsKKyAgICAgICAgICAgICAgb21rLnNwbGljZShqLCAxKTsKKyAgICAg
ICAgICAgICAgbWsuc3BsaWNlKGktLSwgMSk7CisgICAgICAgICAgICAgIGNvbnRpbnVlIG91dGVy
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgY2xvc2UgPSBmYWxzZTsgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChj
bG9zZSkgbWFyay50byA9IHRoaXMudGV4dC5sZW5ndGg7CisgICAgICB9CisgICAgfSwKKyAgICBm
aXhNYXJrU3RhcnRzOiBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBtayA9IHRoaXMubWFya2VkOwor
ICAgICAgaWYgKCFtaykgcmV0dXJuOworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtay5sZW5n
dGg7ICsraSkKKyAgICAgICAgaWYgKG1rW2ldLmZyb20gPT0gbnVsbCkgbWtbaV0uZnJvbSA9IDA7
CisgICAgfSwKKyAgICBhZGRNYXJrOiBmdW5jdGlvbihtYXJrKSB7CisgICAgICBtYXJrLmF0dGFj
aCh0aGlzKTsKKyAgICAgIGlmICh0aGlzLm1hcmtlZCA9PSBudWxsKSB0aGlzLm1hcmtlZCA9IFtd
OworICAgICAgdGhpcy5tYXJrZWQucHVzaChtYXJrKTsKKyAgICAgIHRoaXMubWFya2VkLnNvcnQo
ZnVuY3Rpb24oYSwgYil7cmV0dXJuIChhLmZyb20gfHwgMCkgLSAoYi5mcm9tIHx8IDApO30pOwor
ICAgIH0sCisgICAgLy8gUnVuIHRoZSBnaXZlbiBtb2RlJ3MgcGFyc2VyIG92ZXIgYSBsaW5lLCB1
cGRhdGUgdGhlIHN0eWxlcworICAgIC8vIGFycmF5LCB3aGljaCBjb250YWlucyBhbHRlcm5hdGlu
ZyBmcmFnbWVudHMgb2YgdGV4dCBhbmQgQ1NTCisgICAgLy8gY2xhc3Nlcy4KKyAgICBoaWdobGln
aHQ6IGZ1bmN0aW9uKG1vZGUsIHN0YXRlLCB0YWJTaXplKSB7CisgICAgICB2YXIgc3RyZWFtID0g
bmV3IFN0cmluZ1N0cmVhbSh0aGlzLnRleHQsIHRhYlNpemUpLCBzdCA9IHRoaXMuc3R5bGVzLCBw
b3MgPSAwOworICAgICAgdmFyIGNoYW5nZWQgPSBmYWxzZSwgY3VyV29yZCA9IHN0WzBdLCBwcmV2
V29yZDsKKyAgICAgIGlmICh0aGlzLnRleHQgPT0gIiIgJiYgbW9kZS5ibGFua0xpbmUpIG1vZGUu
YmxhbmtMaW5lKHN0YXRlKTsKKyAgICAgIHdoaWxlICghc3RyZWFtLmVvbCgpKSB7CisgICAgICAg
IHZhciBzdHlsZSA9IG1vZGUudG9rZW4oc3RyZWFtLCBzdGF0ZSk7CisgICAgICAgIHZhciBzdWJz
dHIgPSB0aGlzLnRleHQuc2xpY2Uoc3RyZWFtLnN0YXJ0LCBzdHJlYW0ucG9zKTsKKyAgICAgICAg
c3RyZWFtLnN0YXJ0ID0gc3RyZWFtLnBvczsKKyAgICAgICAgaWYgKHBvcyAmJiBzdFtwb3MtMV0g
PT0gc3R5bGUpCisgICAgICAgICAgc3RbcG9zLTJdICs9IHN1YnN0cjsKKyAgICAgICAgZWxzZSBp
ZiAoc3Vic3RyKSB7CisgICAgICAgICAgaWYgKCFjaGFuZ2VkICYmIChzdFtwb3MrMV0gIT0gc3R5
bGUgfHwgKHBvcyAmJiBzdFtwb3MtMl0gIT0gcHJldldvcmQpKSkgY2hhbmdlZCA9IHRydWU7Cisg
ICAgICAgICAgc3RbcG9zKytdID0gc3Vic3RyOyBzdFtwb3MrK10gPSBzdHlsZTsKKyAgICAgICAg
ICBwcmV2V29yZCA9IGN1cldvcmQ7IGN1cldvcmQgPSBzdFtwb3NdOworICAgICAgICB9CisgICAg
ICAgIC8vIEdpdmUgdXAgd2hlbiBsaW5lIGlzIHJpZGljdWxvdXNseSBsb25nCisgICAgICAgIGlm
IChzdHJlYW0ucG9zID4gNTAwMCkgeworICAgICAgICAgIHN0W3BvcysrXSA9IHRoaXMudGV4dC5z
bGljZShzdHJlYW0ucG9zKTsgc3RbcG9zKytdID0gbnVsbDsKKyAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgfQorICAgICAgaWYgKHN0Lmxlbmd0aCAhPSBwb3MpIHtzdC5sZW5ndGgg
PSBwb3M7IGNoYW5nZWQgPSB0cnVlO30KKyAgICAgIGlmIChwb3MgJiYgc3RbcG9zLTJdICE9IHBy
ZXZXb3JkKSBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgIC8vIFNob3J0IGxpbmVzIHdpdGggc2ltcGxl
IGhpZ2hsaWdodHMgcmV0dXJuIG51bGwsIGFuZCBhcmUKKyAgICAgIC8vIGNvdW50ZWQgYXMgY2hh
bmdlZCBieSB0aGUgZHJpdmVyIGJlY2F1c2UgdGhleSBhcmUgbGlrZWx5IHRvCisgICAgICAvLyBo
aWdobGlnaHQgdGhlIHNhbWUgd2F5IGluIHZhcmlvdXMgY29udGV4dHMuCisgICAgICByZXR1cm4g
Y2hhbmdlZCB8fCAoc3QubGVuZ3RoIDwgNSAmJiB0aGlzLnRleHQubGVuZ3RoIDwgMTAgPyBudWxs
IDogZmFsc2UpOworICAgIH0sCisgICAgLy8gRmV0Y2ggdGhlIHBhcnNlciB0b2tlbiBmb3IgYSBn
aXZlbiBjaGFyYWN0ZXIuIFVzZWZ1bCBmb3IgaGFja3MKKyAgICAvLyB0aGF0IHdhbnQgdG8gaW5z
cGVjdCB0aGUgbW9kZSBzdGF0ZSAoc2F5LCBmb3IgY29tcGxldGlvbikuCisgICAgZ2V0VG9rZW5B
dDogZnVuY3Rpb24obW9kZSwgc3RhdGUsIGNoKSB7CisgICAgICB2YXIgdHh0ID0gdGhpcy50ZXh0
LCBzdHJlYW0gPSBuZXcgU3RyaW5nU3RyZWFtKHR4dCk7CisgICAgICB3aGlsZSAoc3RyZWFtLnBv
cyA8IGNoICYmICFzdHJlYW0uZW9sKCkpIHsKKyAgICAgICAgc3RyZWFtLnN0YXJ0ID0gc3RyZWFt
LnBvczsKKyAgICAgICAgdmFyIHN0eWxlID0gbW9kZS50b2tlbihzdHJlYW0sIHN0YXRlKTsKKyAg
ICAgIH0KKyAgICAgIHJldHVybiB7c3RhcnQ6IHN0cmVhbS5zdGFydCwKKyAgICAgICAgICAgICAg
ZW5kOiBzdHJlYW0ucG9zLAorICAgICAgICAgICAgICBzdHJpbmc6IHN0cmVhbS5jdXJyZW50KCks
CisgICAgICAgICAgICAgIGNsYXNzTmFtZTogc3R5bGUgfHwgbnVsbCwKKyAgICAgICAgICAgICAg
c3RhdGU6IHN0YXRlfTsKKyAgICB9LAorICAgIGluZGVudGF0aW9uOiBmdW5jdGlvbih0YWJTaXpl
KSB7cmV0dXJuIGNvdW50Q29sdW1uKHRoaXMudGV4dCwgbnVsbCwgdGFiU2l6ZSk7fSwKKyAgICAv
LyBQcm9kdWNlcyBhbiBIVE1MIGZyYWdtZW50IGZvciB0aGUgbGluZSwgdGFraW5nIHNlbGVjdGlv
biwKKyAgICAvLyBtYXJraW5nLCBhbmQgaGlnaGxpZ2h0aW5nIGludG8gYWNjb3VudC4KKyAgICBn
ZXRFbGVtZW50OiBmdW5jdGlvbihtYWtlVGFiLCB3cmFwQXQsIHdyYXBXQlIpIHsKKyAgICAgIHZh
ciBmaXJzdCA9IHRydWUsIGNvbCA9IDAsIHNwZWNpYWxzID0gL1tcdFx1MDAwMC1cdTAwMTlcdTIw
MGJcdTIwMjhcdTIwMjlcdUZFRkZdL2c7CisgICAgICB2YXIgcHJlID0gZWx0KCJwcmUiKTsKKyAg
ICAgIGZ1bmN0aW9uIHNwYW5fKGh0bWwsIHRleHQsIHN0eWxlKSB7CisgICAgICAgIGlmICghdGV4
dCkgcmV0dXJuOworICAgICAgICAvLyBXb3JrIGFyb3VuZCBhIGJ1ZyB3aGVyZSwgaW4gc29tZSBj
b21wYXQgbW9kZXMsIElFIGlnbm9yZXMgbGVhZGluZyBzcGFjZXMKKyAgICAgICAgaWYgKGZpcnN0
ICYmIGllICYmIHRleHQuY2hhckF0KDApID09ICIgIikgdGV4dCA9ICJcdTAwYTAiICsgdGV4dC5z
bGljZSgxKTsKKyAgICAgICAgZmlyc3QgPSBmYWxzZTsKKyAgICAgICAgaWYgKCFzcGVjaWFscy50
ZXN0KHRleHQpKSB7CisgICAgICAgICAgY29sICs9IHRleHQubGVuZ3RoOworICAgICAgICAgIHZh
ciBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdt
ZW50KCksIHBvcyA9IDA7CisgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIHNw
ZWNpYWxzLmxhc3RJbmRleCA9IHBvczsKKyAgICAgICAgICAgIHZhciBtID0gc3BlY2lhbHMuZXhl
Yyh0ZXh0KTsKKyAgICAgICAgICAgIHZhciBza2lwcGVkID0gbSA/IG0uaW5kZXggLSBwb3MgOiB0
ZXh0Lmxlbmd0aCAtIHBvczsKKyAgICAgICAgICAgIGlmIChza2lwcGVkKSB7CisgICAgICAgICAg
ICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dC5zbGlj
ZShwb3MsIHBvcyArIHNraXBwZWQpKSk7CisgICAgICAgICAgICAgIGNvbCArPSBza2lwcGVkOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFtKSBicmVhazsKKyAgICAgICAgICAgIHBv
cyArPSBza2lwcGVkICsgMTsKKyAgICAgICAgICAgIGlmIChtWzBdID09ICJcdCIpIHsKKyAgICAg
ICAgICAgICAgdmFyIHRhYiA9IG1ha2VUYWIoY29sKTsKKyAgICAgICAgICAgICAgY29udGVudC5h
cHBlbmRDaGlsZCh0YWIuZWxlbWVudC5jbG9uZU5vZGUodHJ1ZSkpOworICAgICAgICAgICAgICBj
b2wgKz0gdGFiLndpZHRoOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgdmFy
IHRva2VuID0gZWx0KCJzcGFuIiwgIlx1MjAyMiIsICJjbS1pbnZhbGlkY2hhciIpOworICAgICAg
ICAgICAgICB0b2tlbi50aXRsZSA9ICJcXHUiICsgbVswXS5jaGFyQ29kZUF0KDApLnRvU3RyaW5n
KDE2KTsKKyAgICAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZCh0b2tlbik7CisgICAgICAg
ICAgICAgIGNvbCArPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBpZiAoc3R5bGUpIGh0bWwuYXBwZW5kQ2hpbGQoZWx0KCJzcGFuIiwgW2NvbnRlbnRd
LCBzdHlsZSkpOworICAgICAgICBlbHNlIGh0bWwuYXBwZW5kQ2hpbGQoY29udGVudCk7CisgICAg
ICB9CisgICAgICB2YXIgc3BhbiA9IHNwYW5fOworICAgICAgaWYgKHdyYXBBdCAhPSBudWxsKSB7
CisgICAgICAgIHZhciBvdXRQb3MgPSAwLCBhbmNob3IgPSBwcmUuYW5jaG9yID0gZWx0KCJzcGFu
Iik7CisgICAgICAgIHNwYW4gPSBmdW5jdGlvbihodG1sLCB0ZXh0LCBzdHlsZSkgeworICAgICAg
ICAgIHZhciBsID0gdGV4dC5sZW5ndGg7CisgICAgICAgICAgaWYgKHdyYXBBdCA+PSBvdXRQb3Mg
JiYgd3JhcEF0IDwgb3V0UG9zICsgbCkgeworICAgICAgICAgICAgaWYgKHdyYXBBdCA+IG91dFBv
cykgeworICAgICAgICAgICAgICBzcGFuXyhodG1sLCB0ZXh0LnNsaWNlKDAsIHdyYXBBdCAtIG91
dFBvcyksIHN0eWxlKTsKKyAgICAgICAgICAgICAgLy8gU2VlIGNvbW1lbnQgYXQgdGhlIGRlZmlu
aXRpb24gb2Ygc3BhbkFmZmVjdHNXcmFwcGluZworICAgICAgICAgICAgICBpZiAod3JhcFdCUikg
aHRtbC5hcHBlbmRDaGlsZChlbHQoIndiciIpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGh0bWwuYXBwZW5kQ2hpbGQoYW5jaG9yKTsKKyAgICAgICAgICAgIHZhciBjdXQgPSB3cmFwQXQg
LSBvdXRQb3M7CisgICAgICAgICAgICBzcGFuXyhhbmNob3IsIG9wZXJhID8gdGV4dC5zbGljZShj
dXQsIGN1dCArIDEpIDogdGV4dC5zbGljZShjdXQpLCBzdHlsZSk7CisgICAgICAgICAgICBpZiAo
b3BlcmEpIHNwYW5fKGh0bWwsIHRleHQuc2xpY2UoY3V0ICsgMSksIHN0eWxlKTsKKyAgICAgICAg
ICAgIHdyYXBBdC0tOworICAgICAgICAgICAgb3V0UG9zICs9IGw7CisgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIG91dFBvcyArPSBsOworICAgICAgICAgICAgc3Bhbl8oaHRtbCwgdGV4
dCwgc3R5bGUpOworICAgICAgICAgICAgaWYgKG91dFBvcyA9PSB3cmFwQXQgJiYgb3V0UG9zID09
IGxlbikgeworICAgICAgICAgICAgICBzZXRUZXh0Q29udGVudChhbmNob3IsIGVvbFNwYW5Db250
ZW50KTsKKyAgICAgICAgICAgICAgaHRtbC5hcHBlbmRDaGlsZChhbmNob3IpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgLy8gU3RvcCBvdXRwdXR0aW5nIEhUTUwgd2hlbiBnb25lIHN1ZmZp
Y2llbnRseSBmYXIgYmV5b25kIG1lYXN1cmUKKyAgICAgICAgICAgIGVsc2UgaWYgKG91dFBvcyA+
IHdyYXBBdCArIDEwICYmIC9ccy8udGVzdCh0ZXh0KSkgc3BhbiA9IGZ1bmN0aW9uKCl7fTsKKyAg
ICAgICAgICB9CisgICAgICAgIH07CisgICAgICB9CisKKyAgICAgIHZhciBzdCA9IHRoaXMuc3R5
bGVzLCBhbGxUZXh0ID0gdGhpcy50ZXh0LCBtYXJrZWQgPSB0aGlzLm1hcmtlZDsKKyAgICAgIHZh
ciBsZW4gPSBhbGxUZXh0Lmxlbmd0aDsKKyAgICAgIGZ1bmN0aW9uIHN0eWxlVG9DbGFzcyhzdHls
ZSkgeworICAgICAgICBpZiAoIXN0eWxlKSByZXR1cm4gbnVsbDsKKyAgICAgICAgcmV0dXJuICJj
bS0iICsgc3R5bGUucmVwbGFjZSgvICsvZywgIiBjbS0iKTsKKyAgICAgIH0KKyAgICAgIGlmICgh
YWxsVGV4dCAmJiB3cmFwQXQgPT0gbnVsbCkgeworICAgICAgICBzcGFuKHByZSwgIiAiKTsKKyAg
ICAgIH0gZWxzZSBpZiAoIW1hcmtlZCB8fCAhbWFya2VkLmxlbmd0aCkgeworICAgICAgICBmb3Ig
KHZhciBpID0gMCwgY2ggPSAwOyBjaCA8IGxlbjsgaSs9MikgeworICAgICAgICAgIHZhciBzdHIg
PSBzdFtpXSwgc3R5bGUgPSBzdFtpKzFdLCBsID0gc3RyLmxlbmd0aDsKKyAgICAgICAgICBpZiAo
Y2ggKyBsID4gbGVuKSBzdHIgPSBzdHIuc2xpY2UoMCwgbGVuIC0gY2gpOworICAgICAgICAgIGNo
ICs9IGw7CisgICAgICAgICAgc3BhbihwcmUsIHN0ciwgc3R5bGVUb0NsYXNzKHN0eWxlKSk7Cisg
ICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHZhciBwb3MgPSAwLCBpID0gMCwgdGV4
dCA9ICIiLCBzdHlsZSwgc2cgPSAwOworICAgICAgICB2YXIgbmV4dENoYW5nZSA9IG1hcmtlZFsw
XS5mcm9tIHx8IDAsIG1hcmtzID0gW10sIG1hcmtwb3MgPSAwOworICAgICAgICB2YXIgYWR2YW5j
ZU1hcmtzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgdmFyIG07CisgICAgICAgICAgd2hpbGUg
KG1hcmtwb3MgPCBtYXJrZWQubGVuZ3RoICYmCisgICAgICAgICAgICAgICAgICgobSA9IG1hcmtl
ZFttYXJrcG9zXSkuZnJvbSA9PSBwb3MgfHwgbS5mcm9tID09IG51bGwpKSB7CisgICAgICAgICAg
ICBpZiAobS5zdHlsZSAhPSBudWxsKSBtYXJrcy5wdXNoKG0pOworICAgICAgICAgICAgKyttYXJr
cG9zOworICAgICAgICAgIH0KKyAgICAgICAgICBuZXh0Q2hhbmdlID0gbWFya3BvcyA8IG1hcmtl
ZC5sZW5ndGggPyBtYXJrZWRbbWFya3Bvc10uZnJvbSA6IEluZmluaXR5OworICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbWFya3MubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciB0
byA9IG1hcmtzW2ldLnRvOworICAgICAgICAgICAgaWYgKHRvID09IG51bGwpIHRvID0gSW5maW5p
dHk7CisgICAgICAgICAgICBpZiAodG8gPT0gcG9zKSBtYXJrcy5zcGxpY2UoaS0tLCAxKTsKKyAg
ICAgICAgICAgIGVsc2UgbmV4dENoYW5nZSA9IE1hdGgubWluKHRvLCBuZXh0Q2hhbmdlKTsKKyAg
ICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIHZhciBtID0gMDsKKyAgICAgICAgd2hpbGUg
KHBvcyA8IGxlbikgeworICAgICAgICAgIGlmIChuZXh0Q2hhbmdlID09IHBvcykgYWR2YW5jZU1h
cmtzKCk7CisgICAgICAgICAgdmFyIHVwdG8gPSBNYXRoLm1pbihsZW4sIG5leHRDaGFuZ2UpOwor
ICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBpZiAodGV4dCkgeworICAgICAg
ICAgICAgICB2YXIgZW5kID0gcG9zICsgdGV4dC5sZW5ndGg7CisgICAgICAgICAgICAgIHZhciBh
cHBsaWVkU3R5bGUgPSBzdHlsZTsKKyAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBt
YXJrcy5sZW5ndGg7ICsraikKKyAgICAgICAgICAgICAgICBhcHBsaWVkU3R5bGUgPSAoYXBwbGll
ZFN0eWxlID8gYXBwbGllZFN0eWxlICsgIiAiIDogIiIpICsgbWFya3Nbal0uc3R5bGU7CisgICAg
ICAgICAgICAgIHNwYW4ocHJlLCBlbmQgPiB1cHRvID8gdGV4dC5zbGljZSgwLCB1cHRvIC0gcG9z
KSA6IHRleHQsIGFwcGxpZWRTdHlsZSk7CisgICAgICAgICAgICAgIGlmIChlbmQgPj0gdXB0bykg
e3RleHQgPSB0ZXh0LnNsaWNlKHVwdG8gLSBwb3MpOyBwb3MgPSB1cHRvOyBicmVhazt9CisgICAg
ICAgICAgICAgIHBvcyA9IGVuZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRleHQgPSBz
dFtpKytdOyBzdHlsZSA9IHN0eWxlVG9DbGFzcyhzdFtpKytdKTsKKyAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICAgIHJldHVybiBwcmU7CisgICAgfSwKKyAgICBjbGVhblVwOiBm
dW5jdGlvbigpIHsKKyAgICAgIHRoaXMucGFyZW50ID0gbnVsbDsKKyAgICAgIGlmICh0aGlzLm1h
cmtlZCkKKyAgICAgICAgZm9yICh2YXIgaSA9IDAsIGUgPSB0aGlzLm1hcmtlZC5sZW5ndGg7IGkg
PCBlOyArK2kpIHRoaXMubWFya2VkW2ldLmRldGFjaCh0aGlzKTsKKyAgICB9CisgIH07CisgIC8v
IFV0aWxpdHkgdXNlZCBieSByZXBsYWNlIGFuZCBzcGxpdCBhYm92ZQorICBmdW5jdGlvbiBjb3B5
U3R5bGVzKGZyb20sIHRvLCBzb3VyY2UsIGRlc3QpIHsKKyAgICBmb3IgKHZhciBpID0gMCwgcG9z
ID0gMCwgc3RhdGUgPSAwOyBwb3MgPCB0bzsgaSs9MikgeworICAgICAgdmFyIHBhcnQgPSBzb3Vy
Y2VbaV0sIGVuZCA9IHBvcyArIHBhcnQubGVuZ3RoOworICAgICAgaWYgKHN0YXRlID09IDApIHsK
KyAgICAgICAgaWYgKGVuZCA+IGZyb20pIGRlc3QucHVzaChwYXJ0LnNsaWNlKGZyb20gLSBwb3Ms
IE1hdGgubWluKHBhcnQubGVuZ3RoLCB0byAtIHBvcykpLCBzb3VyY2VbaSsxXSk7CisgICAgICAg
IGlmIChlbmQgPj0gZnJvbSkgc3RhdGUgPSAxOworICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PSAx
KSB7CisgICAgICAgIGlmIChlbmQgPiB0bykgZGVzdC5wdXNoKHBhcnQuc2xpY2UoMCwgdG8gLSBw
b3MpLCBzb3VyY2VbaSsxXSk7CisgICAgICAgIGVsc2UgZGVzdC5wdXNoKHBhcnQsIHNvdXJjZVtp
KzFdKTsKKyAgICAgIH0KKyAgICAgIHBvcyA9IGVuZDsKKyAgICB9CisgIH0KKworICAvLyBEYXRh
IHN0cnVjdHVyZSB0aGF0IGhvbGRzIHRoZSBzZXF1ZW5jZSBvZiBsaW5lcy4KKyAgZnVuY3Rpb24g
TGVhZkNodW5rKGxpbmVzKSB7CisgICAgdGhpcy5saW5lcyA9IGxpbmVzOworICAgIHRoaXMucGFy
ZW50ID0gbnVsbDsKKyAgICBmb3IgKHZhciBpID0gMCwgZSA9IGxpbmVzLmxlbmd0aCwgaGVpZ2h0
ID0gMDsgaSA8IGU7ICsraSkgeworICAgICAgbGluZXNbaV0ucGFyZW50ID0gdGhpczsKKyAgICAg
IGhlaWdodCArPSBsaW5lc1tpXS5oZWlnaHQ7CisgICAgfQorICAgIHRoaXMuaGVpZ2h0ID0gaGVp
Z2h0OworICB9CisgIExlYWZDaHVuay5wcm90b3R5cGUgPSB7CisgICAgY2h1bmtTaXplOiBmdW5j
dGlvbigpIHsgcmV0dXJuIHRoaXMubGluZXMubGVuZ3RoOyB9LAorICAgIHJlbW92ZTogZnVuY3Rp
b24oYXQsIG4sIGNhbGxiYWNrcykgeworICAgICAgZm9yICh2YXIgaSA9IGF0LCBlID0gYXQgKyBu
OyBpIDwgZTsgKytpKSB7CisgICAgICAgIHZhciBsaW5lID0gdGhpcy5saW5lc1tpXTsKKyAgICAg
ICAgdGhpcy5oZWlnaHQgLT0gbGluZS5oZWlnaHQ7CisgICAgICAgIGxpbmUuY2xlYW5VcCgpOwor
ICAgICAgICBpZiAobGluZS5oYW5kbGVycykKKyAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8
IGxpbmUuaGFuZGxlcnMubGVuZ3RoOyArK2opIGNhbGxiYWNrcy5wdXNoKGxpbmUuaGFuZGxlcnNb
al0pOworICAgICAgfQorICAgICAgdGhpcy5saW5lcy5zcGxpY2UoYXQsIG4pOworICAgIH0sCisg
ICAgY29sbGFwc2U6IGZ1bmN0aW9uKGxpbmVzKSB7CisgICAgICBsaW5lcy5zcGxpY2UuYXBwbHko
bGluZXMsIFtsaW5lcy5sZW5ndGgsIDBdLmNvbmNhdCh0aGlzLmxpbmVzKSk7CisgICAgfSwKKyAg
ICBpbnNlcnRIZWlnaHQ6IGZ1bmN0aW9uKGF0LCBsaW5lcywgaGVpZ2h0KSB7CisgICAgICB0aGlz
LmhlaWdodCArPSBoZWlnaHQ7CisgICAgICB0aGlzLmxpbmVzID0gdGhpcy5saW5lcy5zbGljZSgw
LCBhdCkuY29uY2F0KGxpbmVzKS5jb25jYXQodGhpcy5saW5lcy5zbGljZShhdCkpOworICAgICAg
Zm9yICh2YXIgaSA9IDAsIGUgPSBsaW5lcy5sZW5ndGg7IGkgPCBlOyArK2kpIGxpbmVzW2ldLnBh
cmVudCA9IHRoaXM7CisgICAgfSwKKyAgICBpdGVyTjogZnVuY3Rpb24oYXQsIG4sIG9wKSB7Cisg
ICAgICBmb3IgKHZhciBlID0gYXQgKyBuOyBhdCA8IGU7ICsrYXQpCisgICAgICAgIGlmIChvcCh0
aGlzLmxpbmVzW2F0XSkpIHJldHVybiB0cnVlOworICAgIH0KKyAgfTsKKyAgZnVuY3Rpb24gQnJh
bmNoQ2h1bmsoY2hpbGRyZW4pIHsKKyAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47CisgICAg
dmFyIHNpemUgPSAwLCBoZWlnaHQgPSAwOworICAgIGZvciAodmFyIGkgPSAwLCBlID0gY2hpbGRy
ZW4ubGVuZ3RoOyBpIDwgZTsgKytpKSB7CisgICAgICB2YXIgY2ggPSBjaGlsZHJlbltpXTsKKyAg
ICAgIHNpemUgKz0gY2guY2h1bmtTaXplKCk7IGhlaWdodCArPSBjaC5oZWlnaHQ7CisgICAgICBj
aC5wYXJlbnQgPSB0aGlzOworICAgIH0KKyAgICB0aGlzLnNpemUgPSBzaXplOworICAgIHRoaXMu
aGVpZ2h0ID0gaGVpZ2h0OworICAgIHRoaXMucGFyZW50ID0gbnVsbDsKKyAgfQorICBCcmFuY2hD
aHVuay5wcm90b3R5cGUgPSB7CisgICAgY2h1bmtTaXplOiBmdW5jdGlvbigpIHsgcmV0dXJuIHRo
aXMuc2l6ZTsgfSwKKyAgICByZW1vdmU6IGZ1bmN0aW9uKGF0LCBuLCBjYWxsYmFja3MpIHsKKyAg
ICAgIHRoaXMuc2l6ZSAtPSBuOworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxk
cmVuLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBjaGlsZCA9IHRoaXMuY2hpbGRyZW5baV0s
IHN6ID0gY2hpbGQuY2h1bmtTaXplKCk7CisgICAgICAgIGlmIChhdCA8IHN6KSB7CisgICAgICAg
ICAgdmFyIHJtID0gTWF0aC5taW4obiwgc3ogLSBhdCksIG9sZEhlaWdodCA9IGNoaWxkLmhlaWdo
dDsKKyAgICAgICAgICBjaGlsZC5yZW1vdmUoYXQsIHJtLCBjYWxsYmFja3MpOworICAgICAgICAg
IHRoaXMuaGVpZ2h0IC09IG9sZEhlaWdodCAtIGNoaWxkLmhlaWdodDsKKyAgICAgICAgICBpZiAo
c3ogPT0gcm0pIHsgdGhpcy5jaGlsZHJlbi5zcGxpY2UoaS0tLCAxKTsgY2hpbGQucGFyZW50ID0g
bnVsbDsgfQorICAgICAgICAgIGlmICgobiAtPSBybSkgPT0gMCkgYnJlYWs7CisgICAgICAgICAg
YXQgPSAwOworICAgICAgICB9IGVsc2UgYXQgLT0gc3o7CisgICAgICB9CisgICAgICBpZiAodGhp
cy5zaXplIC0gbiA8IDI1KSB7CisgICAgICAgIHZhciBsaW5lcyA9IFtdOworICAgICAgICB0aGlz
LmNvbGxhcHNlKGxpbmVzKTsKKyAgICAgICAgdGhpcy5jaGlsZHJlbiA9IFtuZXcgTGVhZkNodW5r
KGxpbmVzKV07CisgICAgICAgIHRoaXMuY2hpbGRyZW5bMF0ucGFyZW50ID0gdGhpczsKKyAgICAg
IH0KKyAgICB9LAorICAgIGNvbGxhcHNlOiBmdW5jdGlvbihsaW5lcykgeworICAgICAgZm9yICh2
YXIgaSA9IDAsIGUgPSB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGU7ICsraSkgdGhpcy5jaGls
ZHJlbltpXS5jb2xsYXBzZShsaW5lcyk7CisgICAgfSwKKyAgICBpbnNlcnQ6IGZ1bmN0aW9uKGF0
LCBsaW5lcykgeworICAgICAgdmFyIGhlaWdodCA9IDA7CisgICAgICBmb3IgKHZhciBpID0gMCwg
ZSA9IGxpbmVzLmxlbmd0aDsgaSA8IGU7ICsraSkgaGVpZ2h0ICs9IGxpbmVzW2ldLmhlaWdodDsK
KyAgICAgIHRoaXMuaW5zZXJ0SGVpZ2h0KGF0LCBsaW5lcywgaGVpZ2h0KTsKKyAgICB9LAorICAg
IGluc2VydEhlaWdodDogZnVuY3Rpb24oYXQsIGxpbmVzLCBoZWlnaHQpIHsKKyAgICAgIHRoaXMu
c2l6ZSArPSBsaW5lcy5sZW5ndGg7CisgICAgICB0aGlzLmhlaWdodCArPSBoZWlnaHQ7CisgICAg
ICBmb3IgKHZhciBpID0gMCwgZSA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgZTsgKytpKSB7
CisgICAgICAgIHZhciBjaGlsZCA9IHRoaXMuY2hpbGRyZW5baV0sIHN6ID0gY2hpbGQuY2h1bmtT
aXplKCk7CisgICAgICAgIGlmIChhdCA8PSBzeikgeworICAgICAgICAgIGNoaWxkLmluc2VydEhl
aWdodChhdCwgbGluZXMsIGhlaWdodCk7CisgICAgICAgICAgaWYgKGNoaWxkLmxpbmVzICYmIGNo
aWxkLmxpbmVzLmxlbmd0aCA+IDUwKSB7CisgICAgICAgICAgICB3aGlsZSAoY2hpbGQubGluZXMu
bGVuZ3RoID4gNTApIHsKKyAgICAgICAgICAgICAgdmFyIHNwaWxsZWQgPSBjaGlsZC5saW5lcy5z
cGxpY2UoY2hpbGQubGluZXMubGVuZ3RoIC0gMjUsIDI1KTsKKyAgICAgICAgICAgICAgdmFyIG5l
d2xlYWYgPSBuZXcgTGVhZkNodW5rKHNwaWxsZWQpOworICAgICAgICAgICAgICBjaGlsZC5oZWln
aHQgLT0gbmV3bGVhZi5oZWlnaHQ7CisgICAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4uc3BsaWNl
KGkgKyAxLCAwLCBuZXdsZWFmKTsKKyAgICAgICAgICAgICAgbmV3bGVhZi5wYXJlbnQgPSB0aGlz
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5tYXliZVNwaWxsKCk7CisgICAgICAg
ICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGF0IC09IHN6OworICAg
ICAgfQorICAgIH0sCisgICAgbWF5YmVTcGlsbDogZnVuY3Rpb24oKSB7CisgICAgICBpZiAodGhp
cy5jaGlsZHJlbi5sZW5ndGggPD0gMTApIHJldHVybjsKKyAgICAgIHZhciBtZSA9IHRoaXM7Cisg
ICAgICBkbyB7CisgICAgICAgIHZhciBzcGlsbGVkID0gbWUuY2hpbGRyZW4uc3BsaWNlKG1lLmNo
aWxkcmVuLmxlbmd0aCAtIDUsIDUpOworICAgICAgICB2YXIgc2libGluZyA9IG5ldyBCcmFuY2hD
aHVuayhzcGlsbGVkKTsKKyAgICAgICAgaWYgKCFtZS5wYXJlbnQpIHsgLy8gQmVjb21lIHRoZSBw
YXJlbnQgbm9kZQorICAgICAgICAgIHZhciBjb3B5ID0gbmV3IEJyYW5jaENodW5rKG1lLmNoaWxk
cmVuKTsKKyAgICAgICAgICBjb3B5LnBhcmVudCA9IG1lOworICAgICAgICAgIG1lLmNoaWxkcmVu
ID0gW2NvcHksIHNpYmxpbmddOworICAgICAgICAgIG1lID0gY29weTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICBtZS5zaXplIC09IHNpYmxpbmcuc2l6ZTsKKyAgICAgICAgICBtZS5oZWln
aHQgLT0gc2libGluZy5oZWlnaHQ7CisgICAgICAgICAgdmFyIG15SW5kZXggPSBpbmRleE9mKG1l
LnBhcmVudC5jaGlsZHJlbiwgbWUpOworICAgICAgICAgIG1lLnBhcmVudC5jaGlsZHJlbi5zcGxp
Y2UobXlJbmRleCArIDEsIDAsIHNpYmxpbmcpOworICAgICAgICB9CisgICAgICAgIHNpYmxpbmcu
cGFyZW50ID0gbWUucGFyZW50OworICAgICAgfSB3aGlsZSAobWUuY2hpbGRyZW4ubGVuZ3RoID4g
MTApOworICAgICAgbWUucGFyZW50Lm1heWJlU3BpbGwoKTsKKyAgICB9LAorICAgIGl0ZXI6IGZ1
bmN0aW9uKGZyb20sIHRvLCBvcCkgeyB0aGlzLml0ZXJOKGZyb20sIHRvIC0gZnJvbSwgb3ApOyB9
LAorICAgIGl0ZXJOOiBmdW5jdGlvbihhdCwgbiwgb3ApIHsKKyAgICAgIGZvciAodmFyIGkgPSAw
LCBlID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkgPCBlOyArK2kpIHsKKyAgICAgICAgdmFyIGNo
aWxkID0gdGhpcy5jaGlsZHJlbltpXSwgc3ogPSBjaGlsZC5jaHVua1NpemUoKTsKKyAgICAgICAg
aWYgKGF0IDwgc3opIHsKKyAgICAgICAgICB2YXIgdXNlZCA9IE1hdGgubWluKG4sIHN6IC0gYXQp
OworICAgICAgICAgIGlmIChjaGlsZC5pdGVyTihhdCwgdXNlZCwgb3ApKSByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgICBpZiAoKG4gLT0gdXNlZCkgPT0gMCkgYnJlYWs7CisgICAgICAgICAgYXQgPSAw
OworICAgICAgICB9IGVsc2UgYXQgLT0gc3o7CisgICAgICB9CisgICAgfQorICB9OworCisgIGZ1
bmN0aW9uIGdldExpbmVBdChjaHVuaywgbikgeworICAgIHdoaWxlICghY2h1bmsubGluZXMpIHsK
KyAgICAgIGZvciAodmFyIGkgPSAwOzsgKytpKSB7CisgICAgICAgIHZhciBjaGlsZCA9IGNodW5r
LmNoaWxkcmVuW2ldLCBzeiA9IGNoaWxkLmNodW5rU2l6ZSgpOworICAgICAgICBpZiAobiA8IHN6
KSB7IGNodW5rID0gY2hpbGQ7IGJyZWFrOyB9CisgICAgICAgIG4gLT0gc3o7CisgICAgICB9Cisg
ICAgfQorICAgIHJldHVybiBjaHVuay5saW5lc1tuXTsKKyAgfQorICBmdW5jdGlvbiBsaW5lTm8o
bGluZSkgeworICAgIGlmIChsaW5lLnBhcmVudCA9PSBudWxsKSByZXR1cm4gbnVsbDsKKyAgICB2
YXIgY3VyID0gbGluZS5wYXJlbnQsIG5vID0gaW5kZXhPZihjdXIubGluZXMsIGxpbmUpOworICAg
IGZvciAodmFyIGNodW5rID0gY3VyLnBhcmVudDsgY2h1bms7IGN1ciA9IGNodW5rLCBjaHVuayA9
IGNodW5rLnBhcmVudCkgeworICAgICAgZm9yICh2YXIgaSA9IDAsIGUgPSBjaHVuay5jaGlsZHJl
bi5sZW5ndGg7IDsgKytpKSB7CisgICAgICAgIGlmIChjaHVuay5jaGlsZHJlbltpXSA9PSBjdXIp
IGJyZWFrOworICAgICAgICBubyArPSBjaHVuay5jaGlsZHJlbltpXS5jaHVua1NpemUoKTsKKyAg
ICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG5vOworICB9CisgIGZ1bmN0aW9uIGxpbmVBdEhlaWdo
dChjaHVuaywgaCkgeworICAgIHZhciBuID0gMDsKKyAgICBvdXRlcjogZG8geworICAgICAgZm9y
ICh2YXIgaSA9IDAsIGUgPSBjaHVuay5jaGlsZHJlbi5sZW5ndGg7IGkgPCBlOyArK2kpIHsKKyAg
ICAgICAgdmFyIGNoaWxkID0gY2h1bmsuY2hpbGRyZW5baV0sIGNoID0gY2hpbGQuaGVpZ2h0Owor
ICAgICAgICBpZiAoaCA8IGNoKSB7IGNodW5rID0gY2hpbGQ7IGNvbnRpbnVlIG91dGVyOyB9Cisg
ICAgICAgIGggLT0gY2g7CisgICAgICAgIG4gKz0gY2hpbGQuY2h1bmtTaXplKCk7CisgICAgICB9
CisgICAgICByZXR1cm4gbjsKKyAgICB9IHdoaWxlICghY2h1bmsubGluZXMpOworICAgIGZvciAo
dmFyIGkgPSAwLCBlID0gY2h1bmsubGluZXMubGVuZ3RoOyBpIDwgZTsgKytpKSB7CisgICAgICB2
YXIgbGluZSA9IGNodW5rLmxpbmVzW2ldLCBsaCA9IGxpbmUuaGVpZ2h0OworICAgICAgaWYgKGgg
PCBsaCkgYnJlYWs7CisgICAgICBoIC09IGxoOworICAgIH0KKyAgICByZXR1cm4gbiArIGk7Cisg
IH0KKyAgZnVuY3Rpb24gaGVpZ2h0QXRMaW5lKGNodW5rLCBuKSB7CisgICAgdmFyIGggPSAwOwor
ICAgIG91dGVyOiBkbyB7CisgICAgICBmb3IgKHZhciBpID0gMCwgZSA9IGNodW5rLmNoaWxkcmVu
Lmxlbmd0aDsgaSA8IGU7ICsraSkgeworICAgICAgICB2YXIgY2hpbGQgPSBjaHVuay5jaGlsZHJl
bltpXSwgc3ogPSBjaGlsZC5jaHVua1NpemUoKTsKKyAgICAgICAgaWYgKG4gPCBzeikgeyBjaHVu
ayA9IGNoaWxkOyBjb250aW51ZSBvdXRlcjsgfQorICAgICAgICBuIC09IHN6OworICAgICAgICBo
ICs9IGNoaWxkLmhlaWdodDsKKyAgICAgIH0KKyAgICAgIHJldHVybiBoOworICAgIH0gd2hpbGUg
KCFjaHVuay5saW5lcyk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIGggKz0gY2h1
bmsubGluZXNbaV0uaGVpZ2h0OworICAgIHJldHVybiBoOworICB9CisKKyAgLy8gVGhlIGhpc3Rv
cnkgb2JqZWN0ICdjaHVua3MnIGNoYW5nZXMgdGhhdCBhcmUgbWFkZSBjbG9zZSB0b2dldGhlcgor
ICAvLyBhbmQgYXQgYWxtb3N0IHRoZSBzYW1lIHRpbWUgaW50byBiaWdnZXIgdW5kb2FibGUgdW5p
dHMuCisgIGZ1bmN0aW9uIEhpc3RvcnkoKSB7CisgICAgdGhpcy50aW1lID0gMDsKKyAgICB0aGlz
LmRvbmUgPSBbXTsgdGhpcy51bmRvbmUgPSBbXTsKKyAgICB0aGlzLmNvbXBvdW5kID0gMDsKKyAg
ICB0aGlzLmNsb3NlZCA9IGZhbHNlOworICB9CisgIEhpc3RvcnkucHJvdG90eXBlID0geworICAg
IGFkZENoYW5nZTogZnVuY3Rpb24oc3RhcnQsIGFkZGVkLCBvbGQpIHsKKyAgICAgIHRoaXMudW5k
b25lLmxlbmd0aCA9IDA7CisgICAgICB2YXIgdGltZSA9ICtuZXcgRGF0ZSwgY3VyID0gdGhpcy5k
b25lW3RoaXMuZG9uZS5sZW5ndGggLSAxXSwgbGFzdCA9IGN1ciAmJiBjdXJbY3VyLmxlbmd0aCAt
IDFdOworICAgICAgdmFyIGR0aW1lID0gdGltZSAtIHRoaXMudGltZTsKKworICAgICAgaWYgKHRo
aXMuY29tcG91bmQgJiYgY3VyICYmICF0aGlzLmNsb3NlZCkgeworICAgICAgICBjdXIucHVzaCh7
c3RhcnQ6IHN0YXJ0LCBhZGRlZDogYWRkZWQsIG9sZDogb2xkfSk7CisgICAgICB9IGVsc2UgaWYg
KGR0aW1lID4gNDAwIHx8ICFsYXN0IHx8IHRoaXMuY2xvc2VkIHx8CisgICAgICAgICAgICAgICAg
IGxhc3Quc3RhcnQgPiBzdGFydCArIG9sZC5sZW5ndGggfHwgbGFzdC5zdGFydCArIGxhc3QuYWRk
ZWQgPCBzdGFydCkgeworICAgICAgICB0aGlzLmRvbmUucHVzaChbe3N0YXJ0OiBzdGFydCwgYWRk
ZWQ6IGFkZGVkLCBvbGQ6IG9sZH1dKTsKKyAgICAgICAgdGhpcy5jbG9zZWQgPSBmYWxzZTsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHZhciBzdGFydEJlZm9yZSA9IE1hdGgubWF4KDAsIGxhc3Qu
c3RhcnQgLSBzdGFydCksCisgICAgICAgICAgICBlbmRBZnRlciA9IE1hdGgubWF4KDAsIChzdGFy
dCArIG9sZC5sZW5ndGgpIC0gKGxhc3Quc3RhcnQgKyBsYXN0LmFkZGVkKSk7CisgICAgICAgIGZv
ciAodmFyIGkgPSBzdGFydEJlZm9yZTsgaSA+IDA7IC0taSkgbGFzdC5vbGQudW5zaGlmdChvbGRb
aSAtIDFdKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IGVuZEFmdGVyOyBpID4gMDsgLS1pKSBsYXN0
Lm9sZC5wdXNoKG9sZFtvbGQubGVuZ3RoIC0gaV0pOworICAgICAgICBpZiAoc3RhcnRCZWZvcmUp
IGxhc3Quc3RhcnQgPSBzdGFydDsKKyAgICAgICAgbGFzdC5hZGRlZCArPSBhZGRlZCAtIChvbGQu
bGVuZ3RoIC0gc3RhcnRCZWZvcmUgLSBlbmRBZnRlcik7CisgICAgICB9CisgICAgICB0aGlzLnRp
bWUgPSB0aW1lOworICAgIH0sCisgICAgc3RhcnRDb21wb3VuZDogZnVuY3Rpb24oKSB7CisgICAg
ICBpZiAoIXRoaXMuY29tcG91bmQrKykgdGhpcy5jbG9zZWQgPSB0cnVlOworICAgIH0sCisgICAg
ZW5kQ29tcG91bmQ6IGZ1bmN0aW9uKCkgeworICAgICAgaWYgKCEtLXRoaXMuY29tcG91bmQpIHRo
aXMuY2xvc2VkID0gdHJ1ZTsKKyAgICB9CisgIH07CisKKyAgZnVuY3Rpb24gc3RvcE1ldGhvZCgp
IHtlX3N0b3AodGhpcyk7fQorICAvLyBFbnN1cmUgYW4gZXZlbnQgaGFzIGEgc3RvcCBtZXRob2Qu
CisgIGZ1bmN0aW9uIGFkZFN0b3AoZXZlbnQpIHsKKyAgICBpZiAoIWV2ZW50LnN0b3ApIGV2ZW50
LnN0b3AgPSBzdG9wTWV0aG9kOworICAgIHJldHVybiBldmVudDsKKyAgfQorCisgIGZ1bmN0aW9u
IGVfcHJldmVudERlZmF1bHQoZSkgeworICAgIGlmIChlLnByZXZlbnREZWZhdWx0KSBlLnByZXZl
bnREZWZhdWx0KCk7CisgICAgZWxzZSBlLnJldHVyblZhbHVlID0gZmFsc2U7CisgIH0KKyAgZnVu
Y3Rpb24gZV9zdG9wUHJvcGFnYXRpb24oZSkgeworICAgIGlmIChlLnN0b3BQcm9wYWdhdGlvbikg
ZS5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICBlbHNlIGUuY2FuY2VsQnViYmxlID0gdHJ1ZTsKKyAg
fQorICBmdW5jdGlvbiBlX3N0b3AoZSkge2VfcHJldmVudERlZmF1bHQoZSk7IGVfc3RvcFByb3Bh
Z2F0aW9uKGUpO30KKyAgQ29kZU1pcnJvci5lX3N0b3AgPSBlX3N0b3A7CisgIENvZGVNaXJyb3Iu
ZV9wcmV2ZW50RGVmYXVsdCA9IGVfcHJldmVudERlZmF1bHQ7CisgIENvZGVNaXJyb3IuZV9zdG9w
UHJvcGFnYXRpb24gPSBlX3N0b3BQcm9wYWdhdGlvbjsKKworICBmdW5jdGlvbiBlX3RhcmdldChl
KSB7cmV0dXJuIGUudGFyZ2V0IHx8IGUuc3JjRWxlbWVudDt9CisgIGZ1bmN0aW9uIGVfYnV0dG9u
KGUpIHsKKyAgICB2YXIgYiA9IGUud2hpY2g7CisgICAgaWYgKGIgPT0gbnVsbCkgeworICAgICAg
aWYgKGUuYnV0dG9uICYgMSkgYiA9IDE7CisgICAgICBlbHNlIGlmIChlLmJ1dHRvbiAmIDIpIGIg
PSAzOworICAgICAgZWxzZSBpZiAoZS5idXR0b24gJiA0KSBiID0gMjsKKyAgICB9CisgICAgaWYg
KG1hYyAmJiBlLmN0cmxLZXkgJiYgYiA9PSAxKSBiID0gMzsKKyAgICByZXR1cm4gYjsKKyAgfQor
CisgIC8vIEFsbG93IDNyZC1wYXJ0eSBjb2RlIHRvIG92ZXJyaWRlIGV2ZW50IHByb3BlcnRpZXMg
YnkgYWRkaW5nIGFuIG92ZXJyaWRlCisgIC8vIG9iamVjdCB0byBhbiBldmVudCBvYmplY3QuCisg
IGZ1bmN0aW9uIGVfcHJvcChlLCBwcm9wKSB7CisgICAgdmFyIG92ZXJyaWRkZW4gPSBlLm92ZXJy
aWRlICYmIGUub3ZlcnJpZGUuaGFzT3duUHJvcGVydHkocHJvcCk7CisgICAgcmV0dXJuIG92ZXJy
aWRkZW4gPyBlLm92ZXJyaWRlW3Byb3BdIDogZVtwcm9wXTsKKyAgfQorCisgIC8vIEV2ZW50IGhh
bmRsZXIgcmVnaXN0cmF0aW9uLiBJZiBkaXNjb25uZWN0IGlzIHRydWUsIGl0J2xsIHJldHVybiBh
CisgIC8vIGZ1bmN0aW9uIHRoYXQgdW5yZWdpc3RlcnMgdGhlIGhhbmRsZXIuCisgIGZ1bmN0aW9u
IGNvbm5lY3Qobm9kZSwgdHlwZSwgaGFuZGxlciwgZGlzY29ubmVjdCkgeworICAgIGlmICh0eXBl
b2Ygbm9kZS5hZGRFdmVudExpc3RlbmVyID09ICJmdW5jdGlvbiIpIHsKKyAgICAgIG5vZGUuYWRk
RXZlbnRMaXN0ZW5lcih0eXBlLCBoYW5kbGVyLCBmYWxzZSk7CisgICAgICBpZiAoZGlzY29ubmVj
dCkgcmV0dXJuIGZ1bmN0aW9uKCkge25vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBoYW5k
bGVyLCBmYWxzZSk7fTsKKyAgICB9IGVsc2UgeworICAgICAgdmFyIHdyYXBIYW5kbGVyID0gZnVu
Y3Rpb24oZXZlbnQpIHtoYW5kbGVyKGV2ZW50IHx8IHdpbmRvdy5ldmVudCk7fTsKKyAgICAgIG5v
ZGUuYXR0YWNoRXZlbnQoIm9uIiArIHR5cGUsIHdyYXBIYW5kbGVyKTsKKyAgICAgIGlmIChkaXNj
b25uZWN0KSByZXR1cm4gZnVuY3Rpb24oKSB7bm9kZS5kZXRhY2hFdmVudCgib24iICsgdHlwZSwg
d3JhcEhhbmRsZXIpO307CisgICAgfQorICB9CisgIENvZGVNaXJyb3IuY29ubmVjdCA9IGNvbm5l
Y3Q7CisKKyAgZnVuY3Rpb24gRGVsYXllZCgpIHt0aGlzLmlkID0gbnVsbDt9CisgIERlbGF5ZWQu
cHJvdG90eXBlID0ge3NldDogZnVuY3Rpb24obXMsIGYpIHtjbGVhclRpbWVvdXQodGhpcy5pZCk7
IHRoaXMuaWQgPSBzZXRUaW1lb3V0KGYsIG1zKTt9fTsKKworICB2YXIgUGFzcyA9IENvZGVNaXJy
b3IuUGFzcyA9IHt0b1N0cmluZzogZnVuY3Rpb24oKXtyZXR1cm4gIkNvZGVNaXJyb3IuUGFzcyI7
fX07CisKKyAgLy8gRGV0ZWN0IGRyYWctYW5kLWRyb3AKKyAgdmFyIGRyYWdBbmREcm9wID0gZnVu
Y3Rpb24oKSB7CisgICAgLy8gVGhlcmUgaXMgKnNvbWUqIGtpbmQgb2YgZHJhZy1hbmQtZHJvcCBz
dXBwb3J0IGluIElFNi04LCBidXQgSQorICAgIC8vIGNvdWxkbid0IGdldCBpdCB0byB3b3JrIHll
dC4KKyAgICBpZiAoaWVfbHQ5KSByZXR1cm4gZmFsc2U7CisgICAgdmFyIGRpdiA9IGVsdCgnZGl2
Jyk7CisgICAgcmV0dXJuICJkcmFnZ2FibGUiIGluIGRpdiB8fCAiZHJhZ0Ryb3AiIGluIGRpdjsK
KyAgfSgpOworCisgIC8vIEZlYXR1cmUtZGV0ZWN0IHdoZXRoZXIgbmV3bGluZXMgaW4gdGV4dGFy
ZWFzIGFyZSBjb252ZXJ0ZWQgdG8gXHJcbgorICB2YXIgbGluZVNlcCA9IGZ1bmN0aW9uICgpIHsK
KyAgICB2YXIgdGUgPSBlbHQoInRleHRhcmVhIik7CisgICAgdGUudmFsdWUgPSAiZm9vXG5iYXIi
OworICAgIGlmICh0ZS52YWx1ZS5pbmRleE9mKCJcciIpID4gLTEpIHJldHVybiAiXHJcbiI7Cisg
ICAgcmV0dXJuICJcbiI7CisgIH0oKTsKKworICAvLyBGb3IgYSByZWFzb24gSSBoYXZlIHlldCB0
byBmaWd1cmUgb3V0LCBzb21lIGJyb3dzZXJzIGRpc2FsbG93CisgIC8vIHdvcmQgd3JhcHBpbmcg
YmV0d2VlbiBjZXJ0YWluIGNoYXJhY3RlcnMgKm9ubHkqIGlmIGEgbmV3IGlubGluZQorICAvLyBl
bGVtZW50IGlzIHN0YXJ0ZWQgYmV0d2VlbiB0aGVtLiBUaGlzIG1ha2VzIGl0IGhhcmQgdG8gcmVs
aWFibHkKKyAgLy8gbWVhc3VyZSB0aGUgcG9zaXRpb24gb2YgdGhpbmdzLCBzaW5jZSB0aGF0IHJl
cXVpcmVzIGluc2VydGluZyBhbgorICAvLyBleHRyYSBzcGFuLiBUaGlzIHRlcnJpYmx5IGZyYWdp
bGUgc2V0IG9mIHJlZ2V4cHMgbWF0Y2hlcyB0aGUKKyAgLy8gY2hhcmFjdGVyIGNvbWJpbmF0aW9u
cyB0aGF0IHN1ZmZlciBmcm9tIHRoaXMgcGhlbm9tZW5vbiBvbiB0aGUKKyAgLy8gdmFyaW91cyBi
cm93c2Vycy4KKyAgdmFyIHNwYW5BZmZlY3RzV3JhcHBpbmcgPSAvXiQvOyAvLyBXb24ndCBtYXRj
aCBhbnkgdHdvLWNoYXJhY3RlciBzdHJpbmcKKyAgaWYgKGdlY2tvKSBzcGFuQWZmZWN0c1dyYXBw
aW5nID0gLyQnLzsKKyAgZWxzZSBpZiAoc2FmYXJpKSBzcGFuQWZmZWN0c1dyYXBwaW5nID0gL1wt
W14gXC0/XXxcP1teICEnXCJcKSwuXC1cLzo7XD9cXVx9XS87CisgIGVsc2UgaWYgKGNocm9tZSkg
c3BhbkFmZmVjdHNXcmFwcGluZyA9IC9cLVteIFwtXC4/XXxcP1teIFwtXC4/XF1cfTo7ISdcIlwp
LFwvXXxbXC4hXCIjJiVcKSorLDo7PT5cXXxcfX5dW1woXHtcWzxdfFwkJy87CisKKyAgLy8gQ291
bnRzIHRoZSBjb2x1bW4gb2Zmc2V0IGluIGEgc3RyaW5nLCB0YWtpbmcgdGFicyBpbnRvIGFjY291
bnQuCisgIC8vIFVzZWQgbW9zdGx5IHRvIGZpbmQgaW5kZW50YXRpb24uCisgIGZ1bmN0aW9uIGNv
dW50Q29sdW1uKHN0cmluZywgZW5kLCB0YWJTaXplKSB7CisgICAgaWYgKGVuZCA9PSBudWxsKSB7
CisgICAgICBlbmQgPSBzdHJpbmcuc2VhcmNoKC9bXlxzXHUwMGEwXS8pOworICAgICAgaWYgKGVu
ZCA9PSAtMSkgZW5kID0gc3RyaW5nLmxlbmd0aDsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDAs
IG4gPSAwOyBpIDwgZW5kOyArK2kpIHsKKyAgICAgIGlmIChzdHJpbmcuY2hhckF0KGkpID09ICJc
dCIpIG4gKz0gdGFiU2l6ZSAtIChuICUgdGFiU2l6ZSk7CisgICAgICBlbHNlICsrbjsKKyAgICB9
CisgICAgcmV0dXJuIG47CisgIH0KKworICBmdW5jdGlvbiBjb21wdXRlZFN0eWxlKGVsdCkgewor
ICAgIGlmIChlbHQuY3VycmVudFN0eWxlKSByZXR1cm4gZWx0LmN1cnJlbnRTdHlsZTsKKyAgICBy
ZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWx0LCBudWxsKTsKKyAgfQorCisgIGZ1bmN0
aW9uIGVsdE9mZnNldChub2RlLCBzY3JlZW4pIHsKKyAgICAvLyBUYWtlIHRoZSBwYXJ0cyBvZiBi
b3VuZGluZyBjbGllbnQgcmVjdCB0aGF0IHdlIGFyZSBpbnRlcmVzdGVkIGluIHNvIHdlIGFyZSBh
YmxlIHRvIGVkaXQgaWYgbmVlZCBiZSwKKyAgICAvLyBzaW5jZSB0aGUgcmV0dXJuZWQgdmFsdWUg
Y2Fubm90IGJlIGNoYW5nZWQgZXh0ZXJuYWxseSAodGhleSBhcmUga2VwdCBpbiBzeW5jIGFzIHRo
ZSBlbGVtZW50IG1vdmVzIHdpdGhpbiB0aGUgcGFnZSkKKyAgICB0cnkgeyB2YXIgYm94ID0gbm9k
ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsgYm94ID0geyB0b3A6IGJveC50b3AsIGxlZnQ6IGJv
eC5sZWZ0IH07IH0KKyAgICBjYXRjaChlKSB7IGJveCA9IHt0b3A6IDAsIGxlZnQ6IDB9OyB9Cisg
ICAgaWYgKCFzY3JlZW4pIHsKKyAgICAgIC8vIEdldCB0aGUgdG9wbGV2ZWwgc2Nyb2xsLCB3b3Jr
aW5nIGFyb3VuZCBicm93c2VyIGRpZmZlcmVuY2VzLgorICAgICAgaWYgKHdpbmRvdy5wYWdlWU9m
ZnNldCA9PSBudWxsKSB7CisgICAgICAgIHZhciB0ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
IHx8IGRvY3VtZW50LmJvZHkucGFyZW50Tm9kZTsKKyAgICAgICAgaWYgKHQuc2Nyb2xsVG9wID09
IG51bGwpIHQgPSBkb2N1bWVudC5ib2R5OworICAgICAgICBib3gudG9wICs9IHQuc2Nyb2xsVG9w
OyBib3gubGVmdCArPSB0LnNjcm9sbExlZnQ7CisgICAgICB9IGVsc2UgeworICAgICAgICBib3gu
dG9wICs9IHdpbmRvdy5wYWdlWU9mZnNldDsgYm94LmxlZnQgKz0gd2luZG93LnBhZ2VYT2Zmc2V0
OworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gYm94OworICB9CisKKyAgLy8gR2V0IGEgbm9k
ZSdzIHRleHQgY29udGVudC4KKyAgZnVuY3Rpb24gZWx0VGV4dChub2RlKSB7CisgICAgcmV0dXJu
IG5vZGUudGV4dENvbnRlbnQgfHwgbm9kZS5pbm5lclRleHQgfHwgbm9kZS5ub2RlVmFsdWUgfHwg
IiI7CisgIH0KKyAgZnVuY3Rpb24gc2VsZWN0SW5wdXQobm9kZSkgeworICAgIGlmIChpb3MpIHsg
Ly8gTW9iaWxlIFNhZmFyaSBhcHBhcmVudGx5IGhhcyBhIGJ1ZyB3aGVyZSBzZWxlY3QoKSBpcyBi
cm9rZW4uCisgICAgICBub2RlLnNlbGVjdGlvblN0YXJ0ID0gMDsKKyAgICAgIG5vZGUuc2VsZWN0
aW9uRW5kID0gbm9kZS52YWx1ZS5sZW5ndGg7CisgICAgfSBlbHNlIG5vZGUuc2VsZWN0KCk7Cisg
IH0KKworICAvLyBPcGVyYXRpb25zIG9uIHtsaW5lLCBjaH0gb2JqZWN0cy4KKyAgZnVuY3Rpb24g
cG9zRXEoYSwgYikge3JldHVybiBhLmxpbmUgPT0gYi5saW5lICYmIGEuY2ggPT0gYi5jaDt9Cisg
IGZ1bmN0aW9uIHBvc0xlc3MoYSwgYikge3JldHVybiBhLmxpbmUgPCBiLmxpbmUgfHwgKGEubGlu
ZSA9PSBiLmxpbmUgJiYgYS5jaCA8IGIuY2gpO30KKyAgZnVuY3Rpb24gY29weVBvcyh4KSB7cmV0
dXJuIHtsaW5lOiB4LmxpbmUsIGNoOiB4LmNofTt9CisKKyAgZnVuY3Rpb24gZWx0KHRhZywgY29u
dGVudCwgY2xhc3NOYW1lLCBzdHlsZSkgeworICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCh0YWcpOworICAgIGlmIChjbGFzc05hbWUpIGUuY2xhc3NOYW1lID0gY2xhc3NOYW1lOwor
ICAgIGlmIChzdHlsZSkgZS5zdHlsZS5jc3NUZXh0ID0gc3R5bGU7CisgICAgaWYgKHR5cGVvZiBj
b250ZW50ID09ICJzdHJpbmciKSBzZXRUZXh0Q29udGVudChlLCBjb250ZW50KTsKKyAgICBlbHNl
IGlmIChjb250ZW50KSBmb3IgKHZhciBpID0gMDsgaSA8IGNvbnRlbnQubGVuZ3RoOyArK2kpIGUu
YXBwZW5kQ2hpbGQoY29udGVudFtpXSk7CisgICAgcmV0dXJuIGU7CisgIH0KKyAgZnVuY3Rpb24g
cmVtb3ZlQ2hpbGRyZW4oZSkgeworICAgIGUuaW5uZXJIVE1MID0gIiI7CisgICAgcmV0dXJuIGU7
CisgIH0KKyAgZnVuY3Rpb24gcmVtb3ZlQ2hpbGRyZW5BbmRBZGQocGFyZW50LCBlKSB7CisgICAg
cmVtb3ZlQ2hpbGRyZW4ocGFyZW50KS5hcHBlbmRDaGlsZChlKTsKKyAgfQorICBmdW5jdGlvbiBz
ZXRUZXh0Q29udGVudChlLCBzdHIpIHsKKyAgICBpZiAoaWVfbHQ5KSB7CisgICAgICBlLmlubmVy
SFRNTCA9ICIiOworICAgICAgZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShz
dHIpKTsKKyAgICB9IGVsc2UgZS50ZXh0Q29udGVudCA9IHN0cjsKKyAgfQorICBDb2RlTWlycm9y
LnNldFRleHRDb250ZW50ID0gc2V0VGV4dENvbnRlbnQ7CisKKyAgLy8gVXNlZCB0byBwb3NpdGlv
biB0aGUgY3Vyc29yIGFmdGVyIGFuIHVuZG8vcmVkbyBieSBmaW5kaW5nIHRoZQorICAvLyBsYXN0
IGVkaXRlZCBjaGFyYWN0ZXIuCisgIGZ1bmN0aW9uIGVkaXRFbmQoZnJvbSwgdG8pIHsKKyAgICBp
ZiAoIXRvKSByZXR1cm4gMDsKKyAgICBpZiAoIWZyb20pIHJldHVybiB0by5sZW5ndGg7CisgICAg
Zm9yICh2YXIgaSA9IGZyb20ubGVuZ3RoLCBqID0gdG8ubGVuZ3RoOyBpID49IDAgJiYgaiA+PSAw
OyAtLWksIC0taikKKyAgICAgIGlmIChmcm9tLmNoYXJBdChpKSAhPSB0by5jaGFyQXQoaikpIGJy
ZWFrOworICAgIHJldHVybiBqICsgMTsKKyAgfQorCisgIGZ1bmN0aW9uIGluZGV4T2YoY29sbGVj
dGlvbiwgZWx0KSB7CisgICAgaWYgKGNvbGxlY3Rpb24uaW5kZXhPZikgcmV0dXJuIGNvbGxlY3Rp
b24uaW5kZXhPZihlbHQpOworICAgIGZvciAodmFyIGkgPSAwLCBlID0gY29sbGVjdGlvbi5sZW5n
dGg7IGkgPCBlOyArK2kpCisgICAgICBpZiAoY29sbGVjdGlvbltpXSA9PSBlbHQpIHJldHVybiBp
OworICAgIHJldHVybiAtMTsKKyAgfQorICBmdW5jdGlvbiBpc1dvcmRDaGFyKGNoKSB7CisgICAg
cmV0dXJuIC9cdy8udGVzdChjaCkgfHwgY2gudG9VcHBlckNhc2UoKSAhPSBjaC50b0xvd2VyQ2Fz
ZSgpOworICB9CisKKyAgLy8gU2VlIGlmICIiLnNwbGl0IGlzIHRoZSBicm9rZW4gSUUgdmVyc2lv
biwgaWYgc28sIHByb3ZpZGUgYW4KKyAgLy8gYWx0ZXJuYXRpdmUgd2F5IHRvIHNwbGl0IGxpbmVz
LgorICB2YXIgc3BsaXRMaW5lcyA9ICJcblxuYiIuc3BsaXQoL1xuLykubGVuZ3RoICE9IDMgPyBm
dW5jdGlvbihzdHJpbmcpIHsKKyAgICB2YXIgcG9zID0gMCwgcmVzdWx0ID0gW10sIGwgPSBzdHJp
bmcubGVuZ3RoOworICAgIHdoaWxlIChwb3MgPD0gbCkgeworICAgICAgdmFyIG5sID0gc3RyaW5n
LmluZGV4T2YoIlxuIiwgcG9zKTsKKyAgICAgIGlmIChubCA9PSAtMSkgbmwgPSBzdHJpbmcubGVu
Z3RoOworICAgICAgdmFyIGxpbmUgPSBzdHJpbmcuc2xpY2UocG9zLCBzdHJpbmcuY2hhckF0KG5s
IC0gMSkgPT0gIlxyIiA/IG5sIC0gMSA6IG5sKTsKKyAgICAgIHZhciBydCA9IGxpbmUuaW5kZXhP
ZigiXHIiKTsKKyAgICAgIGlmIChydCAhPSAtMSkgeworICAgICAgICByZXN1bHQucHVzaChsaW5l
LnNsaWNlKDAsIHJ0KSk7CisgICAgICAgIHBvcyArPSBydCArIDE7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICByZXN1bHQucHVzaChsaW5lKTsKKyAgICAgICAgcG9zID0gbmwgKyAxOworICAgICAg
fQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworICB9IDogZnVuY3Rpb24oc3RyaW5nKXtyZXR1
cm4gc3RyaW5nLnNwbGl0KC9cclxuP3xcbi8pO307CisgIENvZGVNaXJyb3Iuc3BsaXRMaW5lcyA9
IHNwbGl0TGluZXM7CisKKyAgdmFyIGhhc1NlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24g
PyBmdW5jdGlvbih0ZSkgeworICAgIHRyeSB7IHJldHVybiB0ZS5zZWxlY3Rpb25TdGFydCAhPSB0
ZS5zZWxlY3Rpb25FbmQ7IH0KKyAgICBjYXRjaChlKSB7IHJldHVybiBmYWxzZTsgfQorICB9IDog
ZnVuY3Rpb24odGUpIHsKKyAgICB0cnkge3ZhciByYW5nZSA9IHRlLm93bmVyRG9jdW1lbnQuc2Vs
ZWN0aW9uLmNyZWF0ZVJhbmdlKCk7fQorICAgIGNhdGNoKGUpIHt9CisgICAgaWYgKCFyYW5nZSB8
fCByYW5nZS5wYXJlbnRFbGVtZW50KCkgIT0gdGUpIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
cmFuZ2UuY29tcGFyZUVuZFBvaW50cygiU3RhcnRUb0VuZCIsIHJhbmdlKSAhPSAwOworICB9Owor
CisgIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgibnVsbCIsIGZ1bmN0aW9uKCkgeworICAgIHJldHVy
biB7dG9rZW46IGZ1bmN0aW9uKHN0cmVhbSkge3N0cmVhbS5za2lwVG9FbmQoKTt9fTsKKyAgfSk7
CisgIENvZGVNaXJyb3IuZGVmaW5lTUlNRSgidGV4dC9wbGFpbiIsICJudWxsIik7CisKKyAgdmFy
IGtleU5hbWVzID0gezM6ICJFbnRlciIsIDg6ICJCYWNrc3BhY2UiLCA5OiAiVGFiIiwgMTM6ICJF
bnRlciIsIDE2OiAiU2hpZnQiLCAxNzogIkN0cmwiLCAxODogIkFsdCIsCisgICAgICAgICAgICAg
ICAgICAxOTogIlBhdXNlIiwgMjA6ICJDYXBzTG9jayIsIDI3OiAiRXNjIiwgMzI6ICJTcGFjZSIs
IDMzOiAiUGFnZVVwIiwgMzQ6ICJQYWdlRG93biIsIDM1OiAiRW5kIiwKKyAgICAgICAgICAgICAg
ICAgIDM2OiAiSG9tZSIsIDM3OiAiTGVmdCIsIDM4OiAiVXAiLCAzOTogIlJpZ2h0IiwgNDA6ICJE
b3duIiwgNDQ6ICJQcmludFNjcm4iLCA0NTogIkluc2VydCIsCisgICAgICAgICAgICAgICAgICA0
NjogIkRlbGV0ZSIsIDU5OiAiOyIsIDkxOiAiTW9kIiwgOTI6ICJNb2QiLCA5MzogIk1vZCIsIDEw
OTogIi0iLCAxMDc6ICI9IiwgMTI3OiAiRGVsZXRlIiwKKyAgICAgICAgICAgICAgICAgIDE4Njog
IjsiLCAxODc6ICI9IiwgMTg4OiAiLCIsIDE4OTogIi0iLCAxOTA6ICIuIiwgMTkxOiAiLyIsIDE5
MjogImAiLCAyMTk6ICJbIiwgMjIwOiAiXFwiLAorICAgICAgICAgICAgICAgICAgMjIxOiAiXSIs
IDIyMjogIiciLCA2MzI3NjogIlBhZ2VVcCIsIDYzMjc3OiAiUGFnZURvd24iLCA2MzI3NTogIkVu
ZCIsIDYzMjczOiAiSG9tZSIsCisgICAgICAgICAgICAgICAgICA2MzIzNDogIkxlZnQiLCA2MzIz
MjogIlVwIiwgNjMyMzU6ICJSaWdodCIsIDYzMjMzOiAiRG93biIsIDYzMzAyOiAiSW5zZXJ0Iiwg
NjMyNzI6ICJEZWxldGUifTsKKyAgQ29kZU1pcnJvci5rZXlOYW1lcyA9IGtleU5hbWVzOworICAo
ZnVuY3Rpb24oKSB7CisgICAgLy8gTnVtYmVyIGtleXMKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDEwOyBpKyspIGtleU5hbWVzW2kgKyA0OF0gPSBTdHJpbmcoaSk7CisgICAgLy8gQWxwaGFiZXRp
YyBrZXlzCisgICAgZm9yICh2YXIgaSA9IDY1OyBpIDw9IDkwOyBpKyspIGtleU5hbWVzW2ldID0g
U3RyaW5nLmZyb21DaGFyQ29kZShpKTsKKyAgICAvLyBGdW5jdGlvbiBrZXlzCisgICAgZm9yICh2
YXIgaSA9IDE7IGkgPD0gMTI7IGkrKykga2V5TmFtZXNbaSArIDExMV0gPSBrZXlOYW1lc1tpICsg
NjMyMzVdID0gIkYiICsgaTsKKyAgfSkoKTsKKworICByZXR1cm4gQ29kZU1pcnJvcjsKK30pKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2Nzcy5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvY3NzLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZi
YjNiY2QxOTZkZjc2YzQyNjcyYmExODdkNTFiNWZkNmE4YmJmYjIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2Nzcy5qcwpAQCAtMCwwICsxLDE3
NCBAQAorQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJjc3MiLCBmdW5jdGlvbihjb25maWcpIHsKKyAg
dmFyIGluZGVudFVuaXQgPSBjb25maWcuaW5kZW50VW5pdCwgdHlwZTsKKworICB2YXIga2V5d29y
ZHMgPSBrZXlTZXQoWyJhYm92ZSIsICJhYnNvbHV0ZSIsICJhY3RpdmVib3JkZXIiLCAiYWN0aXZl
Y2FwdGlvbiIsICJhZmFyIiwgImFmdGVyLXdoaXRlLXNwYWNlIiwgImFoZWFkIiwgImFsaWFzIiwg
ImFsbCIsICJhbGwtc2Nyb2xsIiwKKyAgICAiYWx0ZXJuYXRlIiwgImFsd2F5cyIsICJhbWhhcmlj
IiwgImFtaGFyaWMtYWJlZ2VkZSIsICJhbnRpYWxpYXNlZCIsICJhcHB3b3Jrc3BhY2UiLCAiYXJh
YmljLWluZGljIiwgImFybWVuaWFuIiwgImFzdGVyaXNrcyIsCisgICAgImF1dG8iLCAiYXZvaWQi
LCAiYmFja2dyb3VuZCIsICJiYWNrd2FyZHMiLCAiYmFzZWxpbmUiLCAiYmVsb3ciLCAiYmlkaS1v
dmVycmlkZSIsICJiaW5hcnkiLCAiYmVuZ2FsaSIsICJibGluayIsCisgICAgImJsb2NrIiwgImJs
b2NrLWF4aXMiLCAiYm9sZCIsICJib2xkZXIiLCAiYm9yZGVyIiwgImJvcmRlci1ib3giLCAiYm90
aCIsICJib3R0b20iLCAiYnJlYWstYWxsIiwgImJyZWFrLXdvcmQiLCAiYnV0dG9uIiwKKyAgICAi
YnV0dG9uLWJldmVsIiwgImJ1dHRvbmZhY2UiLCAiYnV0dG9uaGlnaGxpZ2h0IiwgImJ1dHRvbnNo
YWRvdyIsICJidXR0b250ZXh0IiwgImNhbWJvZGlhbiIsICJjYXBpdGFsaXplIiwgImNhcHMtbG9j
ay1pbmRpY2F0b3IiLAorICAgICJjYXB0aW9uIiwgImNhcHRpb250ZXh0IiwgImNhcmV0IiwgImNl
bGwiLCAiY2VudGVyIiwgImNoZWNrYm94IiwgImNpcmNsZSIsICJjamstZWFydGhseS1icmFuY2gi
LCAiY2prLWhlYXZlbmx5LXN0ZW0iLCAiY2prLWlkZW9ncmFwaGljIiwKKyAgICAiY2xlYXIiLCAi
Y2xpcCIsICJjbG9zZS1xdW90ZSIsICJjb2wtcmVzaXplIiwgImNvbGxhcHNlIiwgImNvbXBhY3Qi
LCAiY29uZGVuc2VkIiwgImNvbnRhaW4iLCAiY29udGVudCIsICJjb250ZW50LWJveCIsICJjb250
ZXh0LW1lbnUiLAorICAgICJjb250aW51b3VzIiwgImNvcHkiLCAiY292ZXIiLCAiY3JvcCIsICJj
cm9zcyIsICJjcm9zc2hhaXIiLCAiY3VycmVudGNvbG9yIiwgImN1cnNpdmUiLCAiZGFzaGVkIiwg
ImRlY2ltYWwiLCAiZGVjaW1hbC1sZWFkaW5nLXplcm8iLCAiZGVmYXVsdCIsCisgICAgImRlZmF1
bHQtYnV0dG9uIiwgImRlc3RpbmF0aW9uLWF0b3AiLCAiZGVzdGluYXRpb24taW4iLCAiZGVzdGlu
YXRpb24tb3V0IiwgImRlc3RpbmF0aW9uLW92ZXIiLCAiZGV2YW5hZ2FyaSIsICJkaXNjIiwgImRp
c2NhcmQiLCAiZG9jdW1lbnQiLAorICAgICJkb3QtZGFzaCIsICJkb3QtZG90LWRhc2giLCAiZG90
dGVkIiwgImRvdWJsZSIsICJkb3duIiwgImUtcmVzaXplIiwgImVhc2UiLCAiZWFzZS1pbiIsICJl
YXNlLWluLW91dCIsICJlYXNlLW91dCIsICJlbGVtZW50IiwKKyAgICAiZWxsaXBzaXMiLCAiZW1i
ZWQiLCAiZW5kIiwgImV0aGlvcGljIiwgImV0aGlvcGljLWFiZWdlZGUiLCAiZXRoaW9waWMtYWJl
Z2VkZS1hbS1ldCIsICJldGhpb3BpYy1hYmVnZWRlLWdleiIsCisgICAgImV0aGlvcGljLWFiZWdl
ZGUtdGktZXIiLCAiZXRoaW9waWMtYWJlZ2VkZS10aS1ldCIsICJldGhpb3BpYy1oYWxlaGFtZS1h
YS1lciIsICJldGhpb3BpYy1oYWxlaGFtZS1hYS1ldCIsCisgICAgImV0aGlvcGljLWhhbGVoYW1l
LWFtLWV0IiwgImV0aGlvcGljLWhhbGVoYW1lLWdleiIsICJldGhpb3BpYy1oYWxlaGFtZS1vbS1l
dCIsICJldGhpb3BpYy1oYWxlaGFtZS1zaWQtZXQiLAorICAgICJldGhpb3BpYy1oYWxlaGFtZS1z
by1ldCIsICJldGhpb3BpYy1oYWxlaGFtZS10aS1lciIsICJldGhpb3BpYy1oYWxlaGFtZS10aS1l
dCIsICJldGhpb3BpYy1oYWxlaGFtZS10aWciLCAiZXctcmVzaXplIiwgImV4cGFuZGVkIiwKKyAg
ICAiZXh0cmEtY29uZGVuc2VkIiwgImV4dHJhLWV4cGFuZGVkIiwgImZhbnRhc3kiLCAiZmFzdCIs
ICJmaWxsIiwgImZpeGVkIiwgImZsYXQiLCAiZm9vdG5vdGVzIiwgImZvcndhcmRzIiwgImZyb20i
LCAiZ2VvbWV0cmljUHJlY2lzaW9uIiwKKyAgICAiZ2VvcmdpYW4iLCAiZ3JheXRleHQiLCAiZ3Jv
b3ZlIiwgImd1amFyYXRpIiwgImd1cm11a2hpIiwgImhhbmQiLCAiaGFuZ3VsIiwgImhhbmd1bC1j
b25zb25hbnQiLCAiaGVicmV3IiwgImhlbHAiLAorICAgICJoaWRkZW4iLCAiaGlkZSIsICJoaWdo
ZXIiLCAiaGlnaGxpZ2h0IiwgImhpZ2hsaWdodHRleHQiLCAiaGlyYWdhbmEiLCAiaGlyYWdhbmEt
aXJvaGEiLCAiaG9yaXpvbnRhbCIsICJoc2wiLCAiaHNsYSIsICJpY29uIiwgImlnbm9yZSIsCisg
ICAgImluYWN0aXZlYm9yZGVyIiwgImluYWN0aXZlY2FwdGlvbiIsICJpbmFjdGl2ZWNhcHRpb250
ZXh0IiwgImluZmluaXRlIiwgImluZm9iYWNrZ3JvdW5kIiwgImluZm90ZXh0IiwgImluaGVyaXQi
LCAiaW5pdGlhbCIsICJpbmxpbmUiLAorICAgICJpbmxpbmUtYXhpcyIsICJpbmxpbmUtYmxvY2si
LCAiaW5saW5lLXRhYmxlIiwgImluc2V0IiwgImluc2lkZSIsICJpbnRyaW5zaWMiLCAiaW52ZXJ0
IiwgIml0YWxpYyIsICJqdXN0aWZ5IiwgImthbm5hZGEiLCAia2F0YWthbmEiLAorICAgICJrYXRh
a2FuYS1pcm9oYSIsICJraG1lciIsICJsYW5kc2NhcGUiLCAibGFvIiwgImxhcmdlIiwgImxhcmdl
ciIsICJsZWZ0IiwgImxldmVsIiwgImxpZ2h0ZXIiLCAibGluZS10aHJvdWdoIiwgImxpbmVhciIs
ICJsaW5lcyIsCisgICAgImxpc3QtaXRlbSIsICJsaXN0Ym94IiwgImxpc3RpdGVtIiwgImxvY2Fs
IiwgImxvZ2ljYWwiLCAibG91ZCIsICJsb3dlciIsICJsb3dlci1hbHBoYSIsICJsb3dlci1hcm1l
bmlhbiIsICJsb3dlci1ncmVlayIsCisgICAgImxvd2VyLWhleGFkZWNpbWFsIiwgImxvd2VyLWxh
dGluIiwgImxvd2VyLW5vcndlZ2lhbiIsICJsb3dlci1yb21hbiIsICJsb3dlcmNhc2UiLCAibHRy
IiwgIm1hbGF5YWxhbSIsICJtYXRjaCIsICJtZWRpYS1jb250cm9scy1iYWNrZ3JvdW5kIiwKKyAg
ICAibWVkaWEtY3VycmVudC10aW1lLWRpc3BsYXkiLCAibWVkaWEtZnVsbHNjcmVlbi1idXR0b24i
LCAibWVkaWEtbXV0ZS1idXR0b24iLCAibWVkaWEtcGxheS1idXR0b24iLCAibWVkaWEtcmV0dXJu
LXRvLXJlYWx0aW1lLWJ1dHRvbiIsCisgICAgIm1lZGlhLXJld2luZC1idXR0b24iLCAibWVkaWEt
c2Vlay1iYWNrLWJ1dHRvbiIsICJtZWRpYS1zZWVrLWZvcndhcmQtYnV0dG9uIiwgIm1lZGlhLXNs
aWRlciIsICJtZWRpYS1zbGlkZXJ0aHVtYiIsICJtZWRpYS10aW1lLXJlbWFpbmluZy1kaXNwbGF5
IiwKKyAgICAibWVkaWEtdm9sdW1lLXNsaWRlciIsICJtZWRpYS12b2x1bWUtc2xpZGVyLWNvbnRh
aW5lciIsICJtZWRpYS12b2x1bWUtc2xpZGVydGh1bWIiLCAibWVkaXVtIiwgIm1lbnUiLCAibWVu
dWxpc3QiLCAibWVudWxpc3QtYnV0dG9uIiwKKyAgICAibWVudWxpc3QtdGV4dCIsICJtZW51bGlz
dC10ZXh0ZmllbGQiLCAibWVudXRleHQiLCAibWVzc2FnZS1ib3giLCAibWlkZGxlIiwgIm1pbi1p
bnRyaW5zaWMiLCAibWl4IiwgIm1vbmdvbGlhbiIsICJtb25vc3BhY2UiLCAibW92ZSIsICJtdWx0
aXBsZSIsCisgICAgIm15YW5tYXIiLCAibi1yZXNpemUiLCAibmFycm93ZXIiLCAibmF2eSIsICJu
ZS1yZXNpemUiLCAibmVzdy1yZXNpemUiLCAibm8tY2xvc2UtcXVvdGUiLCAibm8tZHJvcCIsICJu
by1vcGVuLXF1b3RlIiwgIm5vLXJlcGVhdCIsICJub25lIiwKKyAgICAibm9ybWFsIiwgIm5vdC1h
bGxvd2VkIiwgIm5vd3JhcCIsICJucy1yZXNpemUiLCAibnctcmVzaXplIiwgIm53c2UtcmVzaXpl
IiwgIm9ibGlxdWUiLCAib2N0YWwiLCAib3Blbi1xdW90ZSIsICJvcHRpbWl6ZUxlZ2liaWxpdHki
LAorICAgICJvcHRpbWl6ZVNwZWVkIiwgIm9yaXlhIiwgIm9yb21vIiwgIm91dHNldCIsICJvdXRz
aWRlIiwgIm92ZXJsYXkiLCAib3ZlcmxpbmUiLCAicGFkZGluZyIsICJwYWRkaW5nLWJveCIsICJw
YWludGVkIiwgInBhdXNlZCIsCisgICAgInBlcnNpYW4iLCAicGx1cy1kYXJrZXIiLCAicGx1cy1s
aWdodGVyIiwgInBvaW50ZXIiLCAicG9ydHJhaXQiLCAicHJlIiwgInByZS1saW5lIiwgInByZS13
cmFwIiwgInByZXNlcnZlLTNkIiwgInByb2dyZXNzIiwKKyAgICAicHVzaC1idXR0b24iLCAicmFk
aW8iLCAicmVhZC1vbmx5IiwgInJlYWQtd3JpdGUiLCAicmVhZC13cml0ZS1wbGFpbnRleHQtb25s
eSIsICJyZWxhdGl2ZSIsICJyZXBlYXQiLCAicmVwZWF0LXgiLAorICAgICJyZXBlYXQteSIsICJy
ZXNldCIsICJyZXZlcnNlIiwgInJnYiIsICJyZ2JhIiwgInJpZGdlIiwgInJpZ2h0IiwgInJvdW5k
IiwgInJvdy1yZXNpemUiLCAicnRsIiwgInJ1bi1pbiIsICJydW5uaW5nIiwgInMtcmVzaXplIiwg
InNhbnMtc2VyaWYiLAorICAgICJzY3JvbGwiLCAic2Nyb2xsYmFyIiwgInNlLXJlc2l6ZSIsICJz
ZWFyY2hmaWVsZCIsICJzZWFyY2hmaWVsZC1jYW5jZWwtYnV0dG9uIiwgInNlYXJjaGZpZWxkLWRl
Y29yYXRpb24iLCAic2VhcmNoZmllbGQtcmVzdWx0cy1idXR0b24iLAorICAgICJzZWFyY2hmaWVs
ZC1yZXN1bHRzLWRlY29yYXRpb24iLCAic2VtaS1jb25kZW5zZWQiLCAic2VtaS1leHBhbmRlZCIs
ICJzZXBhcmF0ZSIsICJzZXJpZiIsICJzaG93IiwgInNpZGFtYSIsICJzaW5nbGUiLAorICAgICJz
a2lwLXdoaXRlLXNwYWNlIiwgInNsaWRlIiwgInNsaWRlci1ob3Jpem9udGFsIiwgInNsaWRlci12
ZXJ0aWNhbCIsICJzbGlkZXJ0aHVtYi1ob3Jpem9udGFsIiwgInNsaWRlcnRodW1iLXZlcnRpY2Fs
IiwgInNsb3ciLAorICAgICJzbWFsbCIsICJzbWFsbC1jYXBzIiwgInNtYWxsLWNhcHRpb24iLCAi
c21hbGxlciIsICJzb2xpZCIsICJzb21hbGkiLCAic291cmNlLWF0b3AiLCAic291cmNlLWluIiwg
InNvdXJjZS1vdXQiLCAic291cmNlLW92ZXIiLAorICAgICJzcGFjZSIsICJzcXVhcmUiLCAic3F1
YXJlLWJ1dHRvbiIsICJzdGFydCIsICJzdGF0aWMiLCAic3RhdHVzLWJhciIsICJzdHJldGNoIiwg
InN0cm9rZSIsICJzdWIiLCAic3VicGl4ZWwtYW50aWFsaWFzZWQiLCAic3VwZXIiLAorICAgICJz
dy1yZXNpemUiLCAidGFibGUiLCAidGFibGUtY2FwdGlvbiIsICJ0YWJsZS1jZWxsIiwgInRhYmxl
LWNvbHVtbiIsICJ0YWJsZS1jb2x1bW4tZ3JvdXAiLCAidGFibGUtZm9vdGVyLWdyb3VwIiwgInRh
YmxlLWhlYWRlci1ncm91cCIsCisgICAgInRhYmxlLXJvdyIsICJ0YWJsZS1yb3ctZ3JvdXAiLCAi
dGVsdWd1IiwgInRleHQiLCAidGV4dC1ib3R0b20iLCAidGV4dC10b3AiLCAidGV4dGFyZWEiLCAi
dGV4dGZpZWxkIiwgInRoYWkiLCAidGhpY2siLCAidGhpbiIsCisgICAgInRocmVlZGRhcmtzaGFk
b3ciLCAidGhyZWVkZmFjZSIsICJ0aHJlZWRoaWdobGlnaHQiLCAidGhyZWVkbGlnaHRzaGFkb3ci
LCAidGhyZWVkc2hhZG93IiwgInRpYmV0YW4iLCAidGlncmUiLCAidGlncmlueWEtZXIiLCAidGln
cmlueWEtZXItYWJlZ2VkZSIsCisgICAgInRpZ3JpbnlhLWV0IiwgInRpZ3JpbnlhLWV0LWFiZWdl
ZGUiLCAidG8iLCAidG9wIiwgInRyYW5zcGFyZW50IiwgInVsdHJhLWNvbmRlbnNlZCIsICJ1bHRy
YS1leHBhbmRlZCIsICJ1bmRlcmxpbmUiLCAidXAiLCAidXBwZXItYWxwaGEiLCAidXBwZXItYXJt
ZW5pYW4iLAorICAgICJ1cHBlci1ncmVlayIsICJ1cHBlci1oZXhhZGVjaW1hbCIsICJ1cHBlci1s
YXRpbiIsICJ1cHBlci1ub3J3ZWdpYW4iLCAidXBwZXItcm9tYW4iLCAidXBwZXJjYXNlIiwgInVy
ZHUiLCAidXJsIiwgInZlcnRpY2FsIiwgInZlcnRpY2FsLXRleHQiLCAidmlzaWJsZSIsCisgICAg
InZpc2libGVGaWxsIiwgInZpc2libGVQYWludGVkIiwgInZpc2libGVTdHJva2UiLCAidmlzdWFs
IiwgInctcmVzaXplIiwgIndhaXQiLCAid2F2ZSIsICJ3aGl0ZSIsICJ3aWRlciIsICJ3aW5kb3ci
LCAid2luZG93ZnJhbWUiLCAid2luZG93dGV4dCIsCisgICAgIngtbGFyZ2UiLCAieC1zbWFsbCIs
ICJ4b3IiLCAieHgtbGFyZ2UiLCAieHgtc21hbGwiLCAieWVsbG93IiwgIi13YXAtbWFycXVlZSIs
ICItd2Via2l0LWFjdGl2ZWxpbmsiLCAiLXdlYmtpdC1hdXRvIiwgIi13ZWJraXQtYmFzZWxpbmUt
bWlkZGxlIiwKKyAgICAiLXdlYmtpdC1ib2R5IiwgIi13ZWJraXQtYm94IiwgIi13ZWJraXQtY2Vu
dGVyIiwgIi13ZWJraXQtY29udHJvbCIsICItd2Via2l0LWZvY3VzLXJpbmctY29sb3IiLCAiLXdl
YmtpdC1ncmFiIiwgIi13ZWJraXQtZ3JhYmJpbmciLAorICAgICItd2Via2l0LWdyYWRpZW50Iiwg
Ii13ZWJraXQtaW5saW5lLWJveCIsICItd2Via2l0LWxlZnQiLCAiLXdlYmtpdC1saW5rIiwgIi13
ZWJraXQtbWFycXVlZSIsICItd2Via2l0LW1pbmktY29udHJvbCIsICItd2Via2l0LW5vd3JhcCIs
ICItd2Via2l0LXBpY3RvZ3JhcGgiLAorICAgICItd2Via2l0LXJpZ2h0IiwgIi13ZWJraXQtc21h
bGwtY29udHJvbCIsICItd2Via2l0LXRleHQiLCAiLXdlYmtpdC14eHgtbGFyZ2UiLCAiLXdlYmtp
dC16b29tLWluIiwgIi13ZWJraXQtem9vbS1vdXQiXSk7CisKKyAgZnVuY3Rpb24ga2V5U2V0KGFy
cmF5KSB7IHZhciBrZXlzID0ge307IGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyAr
K2kpIGtleXNbYXJyYXlbaV1dID0gdHJ1ZTsgcmV0dXJuIGtleXM7IH0KKyAgZnVuY3Rpb24gcmV0
KHN0eWxlLCB0cCkge3R5cGUgPSB0cDsgcmV0dXJuIHN0eWxlO30KKworICBmdW5jdGlvbiB0b2tl
bkJhc2Uoc3RyZWFtLCBzdGF0ZSkgeworICAgIHZhciBjaCA9IHN0cmVhbS5uZXh0KCk7CisgICAg
aWYgKGNoID09ICJAIikge3N0cmVhbS5lYXRXaGlsZSgvW1x3XFxcLV0vKTsgcmV0dXJuIHJldCgi
bWV0YSIsIHN0cmVhbS5jdXJyZW50KCkpO30KKyAgICBlbHNlIGlmIChjaCA9PSAiLyIgJiYgc3Ry
ZWFtLmVhdCgiKiIpKSB7CisgICAgICBzdGF0ZS50b2tlbml6ZSA9IHRva2VuQ0NvbW1lbnQ7Cisg
ICAgICByZXR1cm4gdG9rZW5DQ29tbWVudChzdHJlYW0sIHN0YXRlKTsKKyAgICB9CisgICAgZWxz
ZSBpZiAoY2ggPT0gIjwiICYmIHN0cmVhbS5lYXQoIiEiKSkgeworICAgICAgc3RhdGUudG9rZW5p
emUgPSB0b2tlblNHTUxDb21tZW50OworICAgICAgcmV0dXJuIHRva2VuU0dNTENvbW1lbnQoc3Ry
ZWFtLCBzdGF0ZSk7CisgICAgfQorICAgIGVsc2UgaWYgKGNoID09ICI9IikgcmV0KG51bGwsICJj
b21wYXJlIik7CisgICAgZWxzZSBpZiAoKGNoID09ICJ+IiB8fCBjaCA9PSAifCIpICYmIHN0cmVh
bS5lYXQoIj0iKSkgcmV0dXJuIHJldChudWxsLCAiY29tcGFyZSIpOworICAgIGVsc2UgaWYgKGNo
ID09ICJcIiIgfHwgY2ggPT0gIiciKSB7CisgICAgICBzdGF0ZS50b2tlbml6ZSA9IHRva2VuU3Ry
aW5nKGNoKTsKKyAgICAgIHJldHVybiBzdGF0ZS50b2tlbml6ZShzdHJlYW0sIHN0YXRlKTsKKyAg
ICB9CisgICAgZWxzZSBpZiAoY2ggPT0gIiMiKSB7CisgICAgICBzdHJlYW0uZWF0V2hpbGUoL1tc
d1xcXC1dLyk7CisgICAgICByZXR1cm4gcmV0KCJhdG9tIiwgImhhc2giKTsKKyAgICB9CisgICAg
ZWxzZSBpZiAoY2ggPT0gIiEiKSB7CisgICAgICBzdHJlYW0ubWF0Y2goL15ccypcdyovKTsKKyAg
ICAgIHJldHVybiByZXQoImtleXdvcmQiLCAiaW1wb3J0YW50Iik7CisgICAgfQorICAgIGVsc2Ug
aWYgKC9cZC8udGVzdChjaCkpIHsKKyAgICAgIHN0cmVhbS5lYXRXaGlsZSgvW1x3LiVdLyk7Cisg
ICAgICByZXR1cm4gcmV0KCJudW1iZXIiLCAidW5pdCIpOworICAgIH0KKyAgICBlbHNlIGlmICgv
WywuKz4qXC9dLy50ZXN0KGNoKSkgeworICAgICAgcmV0dXJuIHJldChudWxsLCAic2VsZWN0LW9w
Iik7CisgICAgfQorICAgIGVsc2UgaWYgKC9bO3t9OlxbXF1dLy50ZXN0KGNoKSkgeworICAgICAg
cmV0dXJuIHJldChudWxsLCBjaCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgc3RyZWFtLmVh
dFdoaWxlKC9bXHdcXFwtXS8pOworICAgICAgcmV0dXJuIHJldCgidmFyaWFibGUiLCAidmFyaWFi
bGUiKTsKKyAgICB9CisgIH0KKworICBmdW5jdGlvbiB0b2tlbkNDb21tZW50KHN0cmVhbSwgc3Rh
dGUpIHsKKyAgICB2YXIgbWF5YmVFbmQgPSBmYWxzZSwgY2g7CisgICAgd2hpbGUgKChjaCA9IHN0
cmVhbS5uZXh0KCkpICE9IG51bGwpIHsKKyAgICAgIGlmIChtYXliZUVuZCAmJiBjaCA9PSAiLyIp
IHsKKyAgICAgICAgc3RhdGUudG9rZW5pemUgPSB0b2tlbkJhc2U7CisgICAgICAgIGJyZWFrOwor
ICAgICAgfQorICAgICAgbWF5YmVFbmQgPSAoY2ggPT0gIioiKTsKKyAgICB9CisgICAgcmV0dXJu
IHJldCgiY29tbWVudCIsICJjb21tZW50Iik7CisgIH0KKworICBmdW5jdGlvbiB0b2tlblNHTUxD
b21tZW50KHN0cmVhbSwgc3RhdGUpIHsKKyAgICB2YXIgZGFzaGVzID0gMCwgY2g7CisgICAgd2hp
bGUgKChjaCA9IHN0cmVhbS5uZXh0KCkpICE9IG51bGwpIHsKKyAgICAgIGlmIChkYXNoZXMgPj0g
MiAmJiBjaCA9PSAiPiIpIHsKKyAgICAgICAgc3RhdGUudG9rZW5pemUgPSB0b2tlbkJhc2U7Cisg
ICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgZGFzaGVzID0gKGNoID09ICItIikgPyBkYXNo
ZXMgKyAxIDogMDsKKyAgICB9CisgICAgcmV0dXJuIHJldCgiY29tbWVudCIsICJjb21tZW50Iik7
CisgIH0KKworICBmdW5jdGlvbiB0b2tlblN0cmluZyhxdW90ZSkgeworICAgIHJldHVybiBmdW5j
dGlvbihzdHJlYW0sIHN0YXRlKSB7CisgICAgICB2YXIgZXNjYXBlZCA9IGZhbHNlLCBjaDsKKyAg
ICAgIHdoaWxlICgoY2ggPSBzdHJlYW0ubmV4dCgpKSAhPSBudWxsKSB7CisgICAgICAgIGlmIChj
aCA9PSBxdW90ZSAmJiAhZXNjYXBlZCkKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgZXNjYXBl
ZCA9ICFlc2NhcGVkICYmIGNoID09ICJcXCI7CisgICAgICB9CisgICAgICBpZiAoIWVzY2FwZWQp
IHN0YXRlLnRva2VuaXplID0gdG9rZW5CYXNlOworICAgICAgcmV0dXJuIHJldCgic3RyaW5nIiwg
InN0cmluZyIpOworICAgIH07CisgIH0KKworICByZXR1cm4geworICAgIHN0YXJ0U3RhdGU6IGZ1
bmN0aW9uKGJhc2UpIHsKKyAgICAgIHJldHVybiB7dG9rZW5pemU6IHRva2VuQmFzZSwKKyAgICAg
ICAgICAgICAgYmFzZUluZGVudDogYmFzZSB8fCAwLAorICAgICAgICAgICAgICBzdGFjazogW119
OworICAgIH0sCisKKyAgICB0b2tlbjogZnVuY3Rpb24oc3RyZWFtLCBzdGF0ZSkgeworICAgICAg
aWYgKHN0cmVhbS5lYXRTcGFjZSgpKSByZXR1cm4gbnVsbDsKKyAgICAgIHZhciBzdHlsZSA9IHN0
YXRlLnRva2VuaXplKHN0cmVhbSwgc3RhdGUpOworCisgICAgICB2YXIgY29udGV4dCA9IHN0YXRl
LnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXTsKKyAgICAgIGlmICh0eXBlID09ICJoYXNoIiAm
JiBjb250ZXh0ICE9ICJydWxlIikgc3R5bGUgPSAic3RyaW5nLTIiOworICAgICAgZWxzZSBpZiAo
c3R5bGUgPT0gInZhcmlhYmxlIikgeworICAgICAgICBpZiAoY29udGV4dCA9PSAicnVsZSIpIHN0
eWxlID0ga2V5d29yZHNbc3RyZWFtLmN1cnJlbnQoKV0gPyAia2V5d29yZCIgOiAibnVtYmVyIjsK
KyAgICAgICAgZWxzZSBpZiAoIWNvbnRleHQgfHwgY29udGV4dCA9PSAiQG1lZGlheyIpIHN0eWxl
ID0gInRhZyI7CisgICAgICB9CisKKyAgICAgIGlmIChjb250ZXh0ID09ICJydWxlIiAmJiAvXltc
e1x9O10kLy50ZXN0KHR5cGUpKQorICAgICAgICBzdGF0ZS5zdGFjay5wb3AoKTsKKyAgICAgIGlm
ICh0eXBlID09ICJ7IikgeworICAgICAgICBpZiAoY29udGV4dCA9PSAiQG1lZGlhIikgc3RhdGUu
c3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID0gIkBtZWRpYXsiOworICAgICAgICBlbHNlIHN0
YXRlLnN0YWNrLnB1c2goInsiKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIn0i
KSBzdGF0ZS5zdGFjay5wb3AoKTsKKyAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIkBtZWRpYSIpIHN0
YXRlLnN0YWNrLnB1c2goIkBtZWRpYSIpOworICAgICAgZWxzZSBpZiAoY29udGV4dCA9PSAieyIg
JiYgdHlwZSAhPSAiY29tbWVudCIpIHN0YXRlLnN0YWNrLnB1c2goInJ1bGUiKTsKKyAgICAgIHJl
dHVybiBzdHlsZTsKKyAgICB9LAorCisgICAgaW5kZW50OiBmdW5jdGlvbihzdGF0ZSwgdGV4dEFm
dGVyKSB7CisgICAgICB2YXIgbiA9IHN0YXRlLnN0YWNrLmxlbmd0aDsKKyAgICAgIGlmICgvXlx9
Ly50ZXN0KHRleHRBZnRlcikpCisgICAgICAgIG4gLT0gc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2su
bGVuZ3RoLTFdID09ICJydWxlIiA/IDIgOiAxOworICAgICAgcmV0dXJuIHN0YXRlLmJhc2VJbmRl
bnQgKyBuICogaW5kZW50VW5pdDsKKyAgICB9LAorCisgICAgZWxlY3RyaWNDaGFyczogIn0iCisg
IH07Cit9KTsKKworQ29kZU1pcnJvci5kZWZpbmVNSU1FKCJ0ZXh0L2NzcyIsICJjc3MiKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaHRtbG1peGVkLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9odG1sbWl4ZWQuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzQ3Y2FhNzE3M2VlZWE0ZjhkZTE3NTQ3YjA1YWE3MTU0MWYxZTgwZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaHRtbG1peGVkLmpz
CkBAIC0wLDAgKzEsODUgQEAKK0NvZGVNaXJyb3IuZGVmaW5lTW9kZSgiaHRtbG1peGVkIiwgZnVu
Y3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKKyAgdmFyIGh0bWxNb2RlID0gQ29kZU1pcnJv
ci5nZXRNb2RlKGNvbmZpZywge25hbWU6ICJ4bWwiLCBodG1sTW9kZTogdHJ1ZX0pOworICB2YXIg
anNNb2RlID0gQ29kZU1pcnJvci5nZXRNb2RlKGNvbmZpZywgImphdmFzY3JpcHQiKTsKKyAgdmFy
IGNzc01vZGUgPSBDb2RlTWlycm9yLmdldE1vZGUoY29uZmlnLCAiY3NzIik7CisKKyAgZnVuY3Rp
b24gaHRtbChzdHJlYW0sIHN0YXRlKSB7CisgICAgdmFyIHN0eWxlID0gaHRtbE1vZGUudG9rZW4o
c3RyZWFtLCBzdGF0ZS5odG1sU3RhdGUpOworICAgIGlmIChzdHlsZSA9PSAidGFnIiAmJiBzdHJl
YW0uY3VycmVudCgpID09ICI+IiAmJiBzdGF0ZS5odG1sU3RhdGUuY29udGV4dCkgeworICAgICAg
aWYgKC9ec2NyaXB0JC9pLnRlc3Qoc3RhdGUuaHRtbFN0YXRlLmNvbnRleHQudGFnTmFtZSkpIHsK
KyAgICAgICAgc3RhdGUudG9rZW4gPSBqYXZhc2NyaXB0OworICAgICAgICBzdGF0ZS5sb2NhbFN0
YXRlID0ganNNb2RlLnN0YXJ0U3RhdGUoaHRtbE1vZGUuaW5kZW50KHN0YXRlLmh0bWxTdGF0ZSwg
IiIpKTsKKyAgICAgICAgc3RhdGUubW9kZSA9ICJqYXZhc2NyaXB0IjsKKyAgICAgIH0KKyAgICAg
IGVsc2UgaWYgKC9ec3R5bGUkL2kudGVzdChzdGF0ZS5odG1sU3RhdGUuY29udGV4dC50YWdOYW1l
KSkgeworICAgICAgICBzdGF0ZS50b2tlbiA9IGNzczsKKyAgICAgICAgc3RhdGUubG9jYWxTdGF0
ZSA9IGNzc01vZGUuc3RhcnRTdGF0ZShodG1sTW9kZS5pbmRlbnQoc3RhdGUuaHRtbFN0YXRlLCAi
IikpOworICAgICAgICBzdGF0ZS5tb2RlID0gImNzcyI7CisgICAgICB9CisgICAgfQorICAgIHJl
dHVybiBzdHlsZTsKKyAgfQorICBmdW5jdGlvbiBtYXliZUJhY2t1cChzdHJlYW0sIHBhdCwgc3R5
bGUpIHsKKyAgICB2YXIgY3VyID0gc3RyZWFtLmN1cnJlbnQoKTsKKyAgICB2YXIgY2xvc2UgPSBj
dXIuc2VhcmNoKHBhdCk7CisgICAgaWYgKGNsb3NlID4gLTEpIHN0cmVhbS5iYWNrVXAoY3VyLmxl
bmd0aCAtIGNsb3NlKTsKKyAgICByZXR1cm4gc3R5bGU7CisgIH0KKyAgZnVuY3Rpb24gamF2YXNj
cmlwdChzdHJlYW0sIHN0YXRlKSB7CisgICAgaWYgKHN0cmVhbS5tYXRjaCgvXjxcL1xzKnNjcmlw
dFxzKj4vaSwgZmFsc2UpKSB7CisgICAgICBzdGF0ZS50b2tlbiA9IGh0bWw7CisgICAgICBzdGF0
ZS5sb2NhbFN0YXRlID0gbnVsbDsKKyAgICAgIHN0YXRlLm1vZGUgPSAiaHRtbCI7CisgICAgICBy
ZXR1cm4gaHRtbChzdHJlYW0sIHN0YXRlKTsKKyAgICB9CisgICAgcmV0dXJuIG1heWJlQmFja3Vw
KHN0cmVhbSwgLzxcL1xzKnNjcmlwdFxzKj4vLAorICAgICAgICAgICAgICAgICAgICAgICBqc01v
ZGUudG9rZW4oc3RyZWFtLCBzdGF0ZS5sb2NhbFN0YXRlKSk7CisgIH0KKyAgZnVuY3Rpb24gY3Nz
KHN0cmVhbSwgc3RhdGUpIHsKKyAgICBpZiAoc3RyZWFtLm1hdGNoKC9ePFwvXHMqc3R5bGVccyo+
L2ksIGZhbHNlKSkgeworICAgICAgc3RhdGUudG9rZW4gPSBodG1sOworICAgICAgc3RhdGUubG9j
YWxTdGF0ZSA9IG51bGw7CisgICAgICBzdGF0ZS5tb2RlID0gImh0bWwiOworICAgICAgcmV0dXJu
IGh0bWwoc3RyZWFtLCBzdGF0ZSk7CisgICAgfQorICAgIHJldHVybiBtYXliZUJhY2t1cChzdHJl
YW0sIC88XC9ccypzdHlsZVxzKj4vLAorICAgICAgICAgICAgICAgICAgICAgICBjc3NNb2RlLnRv
a2VuKHN0cmVhbSwgc3RhdGUubG9jYWxTdGF0ZSkpOworICB9CisKKyAgcmV0dXJuIHsKKyAgICBz
dGFydFN0YXRlOiBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBzdGF0ZSA9IGh0bWxNb2RlLnN0YXJ0
U3RhdGUoKTsKKyAgICAgIHJldHVybiB7dG9rZW46IGh0bWwsIGxvY2FsU3RhdGU6IG51bGwsIG1v
ZGU6ICJodG1sIiwgaHRtbFN0YXRlOiBzdGF0ZX07CisgICAgfSwKKworICAgIGNvcHlTdGF0ZTog
ZnVuY3Rpb24oc3RhdGUpIHsKKyAgICAgIGlmIChzdGF0ZS5sb2NhbFN0YXRlKQorICAgICAgICB2
YXIgbG9jYWwgPSBDb2RlTWlycm9yLmNvcHlTdGF0ZShzdGF0ZS50b2tlbiA9PSBjc3MgPyBjc3NN
b2RlIDoganNNb2RlLCBzdGF0ZS5sb2NhbFN0YXRlKTsKKyAgICAgIHJldHVybiB7dG9rZW46IHN0
YXRlLnRva2VuLCBsb2NhbFN0YXRlOiBsb2NhbCwgbW9kZTogc3RhdGUubW9kZSwKKyAgICAgICAg
ICAgICAgaHRtbFN0YXRlOiBDb2RlTWlycm9yLmNvcHlTdGF0ZShodG1sTW9kZSwgc3RhdGUuaHRt
bFN0YXRlKX07CisgICAgfSwKKworICAgIHRva2VuOiBmdW5jdGlvbihzdHJlYW0sIHN0YXRlKSB7
CisgICAgICByZXR1cm4gc3RhdGUudG9rZW4oc3RyZWFtLCBzdGF0ZSk7CisgICAgfSwKKworICAg
IGluZGVudDogZnVuY3Rpb24oc3RhdGUsIHRleHRBZnRlcikgeworICAgICAgaWYgKHN0YXRlLnRv
a2VuID09IGh0bWwgfHwgL15ccyo8XC8vLnRlc3QodGV4dEFmdGVyKSkKKyAgICAgICAgcmV0dXJu
IGh0bWxNb2RlLmluZGVudChzdGF0ZS5odG1sU3RhdGUsIHRleHRBZnRlcik7CisgICAgICBlbHNl
IGlmIChzdGF0ZS50b2tlbiA9PSBqYXZhc2NyaXB0KQorICAgICAgICByZXR1cm4ganNNb2RlLmlu
ZGVudChzdGF0ZS5sb2NhbFN0YXRlLCB0ZXh0QWZ0ZXIpOworICAgICAgZWxzZQorICAgICAgICBy
ZXR1cm4gY3NzTW9kZS5pbmRlbnQoc3RhdGUubG9jYWxTdGF0ZSwgdGV4dEFmdGVyKTsKKyAgICB9
LAorCisgICAgY29tcGFyZVN0YXRlczogZnVuY3Rpb24oYSwgYikgeworICAgICAgaWYgKGEubW9k
ZSAhPSBiLm1vZGUpIHJldHVybiBmYWxzZTsKKyAgICAgIGlmIChhLmxvY2FsU3RhdGUpIHJldHVy
biBDb2RlTWlycm9yLlBhc3M7CisgICAgICByZXR1cm4gaHRtbE1vZGUuY29tcGFyZVN0YXRlcyhh
Lmh0bWxTdGF0ZSwgYi5odG1sU3RhdGUpOworICAgIH0sCisKKyAgICBlbGVjdHJpY0NoYXJzOiAi
L3t9OiIKKyAgfTsKK30sICJ4bWwiLCAiamF2YXNjcmlwdCIsICJjc3MiKTsKKworQ29kZU1pcnJv
ci5kZWZpbmVNSU1FKCJ0ZXh0L2h0bWwiLCAiaHRtbG1peGVkIik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCAwNWY3YTFkODY5
MjlkZDdhYTY5NzVkZTU4MjBlMWUyOGE3NDM1MzNiLi5lOWEyNmM0ZWQwMmVmNTA3MmNmNzBmMTk1
MWY0MGU3YjRlMWJhNzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5odG1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmh0bWwKQEAgLTEyMCw2ICsxMjAsMTIgQEAgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJOZXR3b3JrUGFuZWwuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlRleHRFZGl0b3Iu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRl
ZmF1bHRUZXh0RWRpdG9yLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJDb2RlTWlycm9yVGV4dEVkaXRvci5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iY29kZW1pcnJvci5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iY3NzLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqYXZhc2NyaXB0Lmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ4bWwu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0
bWxtaXhlZC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iU291cmNlRnJhbWUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IlVJU291cmNlQ29kZUZyYW1lLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJSZXNvdXJjZVZpZXcuanMiPjwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9qYXZhc2Ny
aXB0LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9qYXZhc2NyaXB0Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjlhM2MzMjZkZjIzMzJkN2Y1M2RiZGU2YTU2MDk5YTU2NjIyZDMzN2UKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2phdmFz
Y3JpcHQuanMKQEAgLTAsMCArMSwzNjEgQEAKK0NvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNj
cmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CisgIHZhciBpbmRlbnRVbml0
ID0gY29uZmlnLmluZGVudFVuaXQ7CisgIHZhciBqc29uTW9kZSA9IHBhcnNlckNvbmZpZy5qc29u
OworCisgIC8vIFRva2VuaXplcgorCisgIHZhciBrZXl3b3JkcyA9IGZ1bmN0aW9uKCl7CisgICAg
ZnVuY3Rpb24ga3codHlwZSkge3JldHVybiB7dHlwZTogdHlwZSwgc3R5bGU6ICJrZXl3b3JkIn07
fQorICAgIHZhciBBID0ga3coImtleXdvcmQgYSIpLCBCID0ga3coImtleXdvcmQgYiIpLCBDID0g
a3coImtleXdvcmQgYyIpOworICAgIHZhciBvcGVyYXRvciA9IGt3KCJvcGVyYXRvciIpLCBhdG9t
ID0ge3R5cGU6ICJhdG9tIiwgc3R5bGU6ICJhdG9tIn07CisgICAgcmV0dXJuIHsKKyAgICAgICJp
ZiI6IEEsICJ3aGlsZSI6IEEsICJ3aXRoIjogQSwgImVsc2UiOiBCLCAiZG8iOiBCLCAidHJ5Ijog
QiwgImZpbmFsbHkiOiBCLAorICAgICAgInJldHVybiI6IEMsICJicmVhayI6IEMsICJjb250aW51
ZSI6IEMsICJuZXciOiBDLCAiZGVsZXRlIjogQywgInRocm93IjogQywKKyAgICAgICJ2YXIiOiBr
dygidmFyIiksICJjb25zdCI6IGt3KCJ2YXIiKSwgImxldCI6IGt3KCJ2YXIiKSwKKyAgICAgICJm
dW5jdGlvbiI6IGt3KCJmdW5jdGlvbiIpLCAiY2F0Y2giOiBrdygiY2F0Y2giKSwKKyAgICAgICJm
b3IiOiBrdygiZm9yIiksICJzd2l0Y2giOiBrdygic3dpdGNoIiksICJjYXNlIjoga3coImNhc2Ui
KSwgImRlZmF1bHQiOiBrdygiZGVmYXVsdCIpLAorICAgICAgImluIjogb3BlcmF0b3IsICJ0eXBl
b2YiOiBvcGVyYXRvciwgImluc3RhbmNlb2YiOiBvcGVyYXRvciwKKyAgICAgICJ0cnVlIjogYXRv
bSwgImZhbHNlIjogYXRvbSwgIm51bGwiOiBhdG9tLCAidW5kZWZpbmVkIjogYXRvbSwgIk5hTiI6
IGF0b20sICJJbmZpbml0eSI6IGF0b20KKyAgICB9OworICB9KCk7CisKKyAgdmFyIGlzT3BlcmF0
b3JDaGFyID0gL1srXC0qJiU9PD4hP3xdLzsKKworICBmdW5jdGlvbiBjaGFpbihzdHJlYW0sIHN0
YXRlLCBmKSB7CisgICAgc3RhdGUudG9rZW5pemUgPSBmOworICAgIHJldHVybiBmKHN0cmVhbSwg
c3RhdGUpOworICB9CisKKyAgZnVuY3Rpb24gbmV4dFVudGlsVW5lc2NhcGVkKHN0cmVhbSwgZW5k
KSB7CisgICAgdmFyIGVzY2FwZWQgPSBmYWxzZSwgbmV4dDsKKyAgICB3aGlsZSAoKG5leHQgPSBz
dHJlYW0ubmV4dCgpKSAhPSBudWxsKSB7CisgICAgICBpZiAobmV4dCA9PSBlbmQgJiYgIWVzY2Fw
ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIGVzY2FwZWQgPSAhZXNjYXBlZCAmJiBu
ZXh0ID09ICJcXCI7CisgICAgfQorICAgIHJldHVybiBlc2NhcGVkOworICB9CisKKyAgLy8gVXNl
ZCBhcyBzY3JhdGNoIHZhcmlhYmxlcyB0byBjb21tdW5pY2F0ZSBtdWx0aXBsZSB2YWx1ZXMgd2l0
aG91dAorICAvLyBjb25zaW5nIHVwIHRvbnMgb2Ygb2JqZWN0cy4KKyAgdmFyIHR5cGUsIGNvbnRl
bnQ7CisgIGZ1bmN0aW9uIHJldCh0cCwgc3R5bGUsIGNvbnQpIHsKKyAgICB0eXBlID0gdHA7IGNv
bnRlbnQgPSBjb250OworICAgIHJldHVybiBzdHlsZTsKKyAgfQorCisgIGZ1bmN0aW9uIGpzVG9r
ZW5CYXNlKHN0cmVhbSwgc3RhdGUpIHsKKyAgICB2YXIgY2ggPSBzdHJlYW0ubmV4dCgpOworICAg
IGlmIChjaCA9PSAnIicgfHwgY2ggPT0gIiciKQorICAgICAgcmV0dXJuIGNoYWluKHN0cmVhbSwg
c3RhdGUsIGpzVG9rZW5TdHJpbmcoY2gpKTsKKyAgICBlbHNlIGlmICgvW1xbXF17fVwoXCksO1w6
XC5dLy50ZXN0KGNoKSkKKyAgICAgIHJldHVybiByZXQoY2gpOworICAgIGVsc2UgaWYgKGNoID09
ICIwIiAmJiBzdHJlYW0uZWF0KC94L2kpKSB7CisgICAgICBzdHJlYW0uZWF0V2hpbGUoL1tcZGEt
Zl0vaSk7CisgICAgICByZXR1cm4gcmV0KCJudW1iZXIiLCAibnVtYmVyIik7CisgICAgfQorICAg
IGVsc2UgaWYgKC9cZC8udGVzdChjaCkgfHwgY2ggPT0gIi0iICYmIHN0cmVhbS5lYXQoL1xkLykp
IHsKKyAgICAgIHN0cmVhbS5tYXRjaCgvXlxkKig/OlwuXGQqKT8oPzpbZUVdWytcLV0/XGQrKT8v
KTsKKyAgICAgIHJldHVybiByZXQoIm51bWJlciIsICJudW1iZXIiKTsKKyAgICB9CisgICAgZWxz
ZSBpZiAoY2ggPT0gIi8iKSB7CisgICAgICBpZiAoc3RyZWFtLmVhdCgiKiIpKSB7CisgICAgICAg
IHJldHVybiBjaGFpbihzdHJlYW0sIHN0YXRlLCBqc1Rva2VuQ29tbWVudCk7CisgICAgICB9Cisg
ICAgICBlbHNlIGlmIChzdHJlYW0uZWF0KCIvIikpIHsKKyAgICAgICAgc3RyZWFtLnNraXBUb0Vu
ZCgpOworICAgICAgICByZXR1cm4gcmV0KCJjb21tZW50IiwgImNvbW1lbnQiKTsKKyAgICAgIH0K
KyAgICAgIGVsc2UgaWYgKHN0YXRlLnJlQWxsb3dlZCkgeworICAgICAgICBuZXh0VW50aWxVbmVz
Y2FwZWQoc3RyZWFtLCAiLyIpOworICAgICAgICBzdHJlYW0uZWF0V2hpbGUoL1tnaW15XS8pOyAv
LyAneScgaXMgInN0aWNreSIgb3B0aW9uIGluIE1vemlsbGEKKyAgICAgICAgcmV0dXJuIHJldCgi
cmVnZXhwIiwgInN0cmluZy0yIik7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgc3Ry
ZWFtLmVhdFdoaWxlKGlzT3BlcmF0b3JDaGFyKTsKKyAgICAgICAgcmV0dXJuIHJldCgib3BlcmF0
b3IiLCBudWxsLCBzdHJlYW0uY3VycmVudCgpKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSBp
ZiAoY2ggPT0gIiMiKSB7CisgICAgICAgIHN0cmVhbS5za2lwVG9FbmQoKTsKKyAgICAgICAgcmV0
dXJuIHJldCgiZXJyb3IiLCAiZXJyb3IiKTsKKyAgICB9CisgICAgZWxzZSBpZiAoaXNPcGVyYXRv
ckNoYXIudGVzdChjaCkpIHsKKyAgICAgIHN0cmVhbS5lYXRXaGlsZShpc09wZXJhdG9yQ2hhcik7
CisgICAgICByZXR1cm4gcmV0KCJvcGVyYXRvciIsIG51bGwsIHN0cmVhbS5jdXJyZW50KCkpOwor
ICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHN0cmVhbS5lYXRXaGlsZSgvW1x3XCRfXS8pOworICAg
ICAgdmFyIHdvcmQgPSBzdHJlYW0uY3VycmVudCgpLCBrbm93biA9IGtleXdvcmRzLnByb3BlcnR5
SXNFbnVtZXJhYmxlKHdvcmQpICYmIGtleXdvcmRzW3dvcmRdOworICAgICAgcmV0dXJuIChrbm93
biAmJiBzdGF0ZS5rd0FsbG93ZWQpID8gcmV0KGtub3duLnR5cGUsIGtub3duLnN0eWxlLCB3b3Jk
KSA6CisgICAgICAgICAgICAgICAgICAgICByZXQoInZhcmlhYmxlIiwgInZhcmlhYmxlIiwgd29y
ZCk7CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24ganNUb2tlblN0cmluZyhxdW90ZSkgeworICAg
IHJldHVybiBmdW5jdGlvbihzdHJlYW0sIHN0YXRlKSB7CisgICAgICBpZiAoIW5leHRVbnRpbFVu
ZXNjYXBlZChzdHJlYW0sIHF1b3RlKSkKKyAgICAgICAgc3RhdGUudG9rZW5pemUgPSBqc1Rva2Vu
QmFzZTsKKyAgICAgIHJldHVybiByZXQoInN0cmluZyIsICJzdHJpbmciKTsKKyAgICB9OworICB9
CisKKyAgZnVuY3Rpb24ganNUb2tlbkNvbW1lbnQoc3RyZWFtLCBzdGF0ZSkgeworICAgIHZhciBt
YXliZUVuZCA9IGZhbHNlLCBjaDsKKyAgICB3aGlsZSAoY2ggPSBzdHJlYW0ubmV4dCgpKSB7Cisg
ICAgICBpZiAoY2ggPT0gIi8iICYmIG1heWJlRW5kKSB7CisgICAgICAgIHN0YXRlLnRva2VuaXpl
ID0ganNUb2tlbkJhc2U7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgbWF5YmVFbmQg
PSAoY2ggPT0gIioiKTsKKyAgICB9CisgICAgcmV0dXJuIHJldCgiY29tbWVudCIsICJjb21tZW50
Iik7CisgIH0KKworICAvLyBQYXJzZXIKKworICB2YXIgYXRvbWljVHlwZXMgPSB7ImF0b20iOiB0
cnVlLCAibnVtYmVyIjogdHJ1ZSwgInZhcmlhYmxlIjogdHJ1ZSwgInN0cmluZyI6IHRydWUsICJy
ZWdleHAiOiB0cnVlfTsKKworICBmdW5jdGlvbiBKU0xleGljYWwoaW5kZW50ZWQsIGNvbHVtbiwg
dHlwZSwgYWxpZ24sIHByZXYsIGluZm8pIHsKKyAgICB0aGlzLmluZGVudGVkID0gaW5kZW50ZWQ7
CisgICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47CisgICAgdGhpcy50eXBlID0gdHlwZTsKKyAgICB0
aGlzLnByZXYgPSBwcmV2OworICAgIHRoaXMuaW5mbyA9IGluZm87CisgICAgaWYgKGFsaWduICE9
IG51bGwpIHRoaXMuYWxpZ24gPSBhbGlnbjsKKyAgfQorCisgIGZ1bmN0aW9uIGluU2NvcGUoc3Rh
dGUsIHZhcm5hbWUpIHsKKyAgICBmb3IgKHZhciB2ID0gc3RhdGUubG9jYWxWYXJzOyB2OyB2ID0g
di5uZXh0KQorICAgICAgaWYgKHYubmFtZSA9PSB2YXJuYW1lKSByZXR1cm4gdHJ1ZTsKKyAgfQor
CisgIGZ1bmN0aW9uIHBhcnNlSlMoc3RhdGUsIHN0eWxlLCB0eXBlLCBjb250ZW50LCBzdHJlYW0p
IHsKKyAgICB2YXIgY2MgPSBzdGF0ZS5jYzsKKyAgICAvLyBDb21tdW5pY2F0ZSBvdXIgY29udGV4
dCB0byB0aGUgY29tYmluYXRvcnMuCisgICAgLy8gKExlc3Mgd2FzdGVmdWwgdGhhbiBjb25zaW5n
IHVwIGEgaHVuZHJlZCBjbG9zdXJlcyBvbiBldmVyeSBjYWxsLikKKyAgICBjeC5zdGF0ZSA9IHN0
YXRlOyBjeC5zdHJlYW0gPSBzdHJlYW07IGN4Lm1hcmtlZCA9IG51bGwsIGN4LmNjID0gY2M7CisK
KyAgICBpZiAoIXN0YXRlLmxleGljYWwuaGFzT3duUHJvcGVydHkoImFsaWduIikpCisgICAgICBz
dGF0ZS5sZXhpY2FsLmFsaWduID0gdHJ1ZTsKKworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZh
ciBjb21iaW5hdG9yID0gY2MubGVuZ3RoID8gY2MucG9wKCkgOiBqc29uTW9kZSA/IGV4cHJlc3Np
b24gOiBzdGF0ZW1lbnQ7CisgICAgICBpZiAoY29tYmluYXRvcih0eXBlLCBjb250ZW50KSkgewor
ICAgICAgICB3aGlsZShjYy5sZW5ndGggJiYgY2NbY2MubGVuZ3RoIC0gMV0ubGV4KQorICAgICAg
ICAgIGNjLnBvcCgpKCk7CisgICAgICAgIGlmIChjeC5tYXJrZWQpIHJldHVybiBjeC5tYXJrZWQ7
CisgICAgICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIgJiYgaW5TY29wZShzdGF0ZSwgY29udGVu
dCkpIHJldHVybiAidmFyaWFibGUtMiI7CisgICAgICAgIHJldHVybiBzdHlsZTsKKyAgICAgIH0K
KyAgICB9CisgIH0KKworICAvLyBDb21iaW5hdG9yIHV0aWxzCisKKyAgdmFyIGN4ID0ge3N0YXRl
OiBudWxsLCBjb2x1bW46IG51bGwsIG1hcmtlZDogbnVsbCwgY2M6IG51bGx9OworICBmdW5jdGlv
biBwYXNzKCkgeworICAgIGZvciAodmFyIGkgPSBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSA+PSAw
OyBpLS0pIGN4LmNjLnB1c2goYXJndW1lbnRzW2ldKTsKKyAgfQorICBmdW5jdGlvbiBjb250KCkg
eworICAgIHBhc3MuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAg
fQorICBmdW5jdGlvbiByZWdpc3Rlcih2YXJuYW1lKSB7CisgICAgdmFyIHN0YXRlID0gY3guc3Rh
dGU7CisgICAgaWYgKHN0YXRlLmNvbnRleHQpIHsKKyAgICAgIGN4Lm1hcmtlZCA9ICJkZWYiOwor
ICAgICAgZm9yICh2YXIgdiA9IHN0YXRlLmxvY2FsVmFyczsgdjsgdiA9IHYubmV4dCkKKyAgICAg
ICAgaWYgKHYubmFtZSA9PSB2YXJuYW1lKSByZXR1cm47CisgICAgICBzdGF0ZS5sb2NhbFZhcnMg
PSB7bmFtZTogdmFybmFtZSwgbmV4dDogc3RhdGUubG9jYWxWYXJzfTsKKyAgICB9CisgIH0KKwor
ICAvLyBDb21iaW5hdG9ycworCisgIHZhciBkZWZhdWx0VmFycyA9IHtuYW1lOiAidGhpcyIsIG5l
eHQ6IHtuYW1lOiAiYXJndW1lbnRzIn19OworICBmdW5jdGlvbiBwdXNoY29udGV4dCgpIHsKKyAg
ICBpZiAoIWN4LnN0YXRlLmNvbnRleHQpIGN4LnN0YXRlLmxvY2FsVmFycyA9IGRlZmF1bHRWYXJz
OworICAgIGN4LnN0YXRlLmNvbnRleHQgPSB7cHJldjogY3guc3RhdGUuY29udGV4dCwgdmFyczog
Y3guc3RhdGUubG9jYWxWYXJzfTsKKyAgfQorICBmdW5jdGlvbiBwb3Bjb250ZXh0KCkgeworICAg
IGN4LnN0YXRlLmxvY2FsVmFycyA9IGN4LnN0YXRlLmNvbnRleHQudmFyczsKKyAgICBjeC5zdGF0
ZS5jb250ZXh0ID0gY3guc3RhdGUuY29udGV4dC5wcmV2OworICB9CisgIGZ1bmN0aW9uIHB1c2hs
ZXgodHlwZSwgaW5mbykgeworICAgIHZhciByZXN1bHQgPSBmdW5jdGlvbigpIHsKKyAgICAgIHZh
ciBzdGF0ZSA9IGN4LnN0YXRlOworICAgICAgc3RhdGUubGV4aWNhbCA9IG5ldyBKU0xleGljYWwo
c3RhdGUuaW5kZW50ZWQsIGN4LnN0cmVhbS5jb2x1bW4oKSwgdHlwZSwgbnVsbCwgc3RhdGUubGV4
aWNhbCwgaW5mbyk7CisgICAgfTsKKyAgICByZXN1bHQubGV4ID0gdHJ1ZTsKKyAgICByZXR1cm4g
cmVzdWx0OworICB9CisgIGZ1bmN0aW9uIHBvcGxleCgpIHsKKyAgICB2YXIgc3RhdGUgPSBjeC5z
dGF0ZTsKKyAgICBpZiAoc3RhdGUubGV4aWNhbC5wcmV2KSB7CisgICAgICBpZiAoc3RhdGUubGV4
aWNhbC50eXBlID09ICIpIikKKyAgICAgICAgc3RhdGUuaW5kZW50ZWQgPSBzdGF0ZS5sZXhpY2Fs
LmluZGVudGVkOworICAgICAgc3RhdGUubGV4aWNhbCA9IHN0YXRlLmxleGljYWwucHJldjsKKyAg
ICB9CisgIH0KKyAgcG9wbGV4LmxleCA9IHRydWU7CisKKyAgZnVuY3Rpb24gZXhwZWN0KHdhbnRl
ZCkgeworICAgIHJldHVybiBmdW5jdGlvbiBleHBlY3RpbmcodHlwZSkgeworICAgICAgaWYgKHR5
cGUgPT0gd2FudGVkKSByZXR1cm4gY29udCgpOworICAgICAgZWxzZSBpZiAod2FudGVkID09ICI7
IikgcmV0dXJuIHBhc3MoKTsKKyAgICAgIGVsc2UgcmV0dXJuIGNvbnQoYXJndW1lbnRzLmNhbGxl
ZSk7CisgICAgfTsKKyAgfQorCisgIGZ1bmN0aW9uIHN0YXRlbWVudCh0eXBlKSB7CisgICAgaWYg
KHR5cGUgPT0gInZhciIpIHJldHVybiBjb250KHB1c2hsZXgoInZhcmRlZiIpLCB2YXJkZWYxLCBl
eHBlY3QoIjsiKSwgcG9wbGV4KTsKKyAgICBpZiAodHlwZSA9PSAia2V5d29yZCBhIikgcmV0dXJu
IGNvbnQocHVzaGxleCgiZm9ybSIpLCBleHByZXNzaW9uLCBzdGF0ZW1lbnQsIHBvcGxleCk7Cisg
ICAgaWYgKHR5cGUgPT0gImtleXdvcmQgYiIpIHJldHVybiBjb250KHB1c2hsZXgoImZvcm0iKSwg
c3RhdGVtZW50LCBwb3BsZXgpOworICAgIGlmICh0eXBlID09ICJ7IikgcmV0dXJuIGNvbnQocHVz
aGxleCgifSIpLCBibG9jaywgcG9wbGV4KTsKKyAgICBpZiAodHlwZSA9PSAiOyIpIHJldHVybiBj
b250KCk7CisgICAgaWYgKHR5cGUgPT0gImZ1bmN0aW9uIikgcmV0dXJuIGNvbnQoZnVuY3Rpb25k
ZWYpOworICAgIGlmICh0eXBlID09ICJmb3IiKSByZXR1cm4gY29udChwdXNobGV4KCJmb3JtIiks
IGV4cGVjdCgiKCIpLCBwdXNobGV4KCIpIiksIGZvcnNwZWMxLCBleHBlY3QoIikiKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9wbGV4LCBzdGF0ZW1lbnQsIHBvcGxl
eCk7CisgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikgcmV0dXJuIGNvbnQocHVzaGxleCgic3Rh
dCIpLCBtYXliZWxhYmVsKTsKKyAgICBpZiAodHlwZSA9PSAic3dpdGNoIikgcmV0dXJuIGNvbnQo
cHVzaGxleCgiZm9ybSIpLCBleHByZXNzaW9uLCBwdXNobGV4KCJ9IiwgInN3aXRjaCIpLCBleHBl
Y3QoInsiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2ss
IHBvcGxleCwgcG9wbGV4KTsKKyAgICBpZiAodHlwZSA9PSAiY2FzZSIpIHJldHVybiBjb250KGV4
cHJlc3Npb24sIGV4cGVjdCgiOiIpKTsKKyAgICBpZiAodHlwZSA9PSAiZGVmYXVsdCIpIHJldHVy
biBjb250KGV4cGVjdCgiOiIpKTsKKyAgICBpZiAodHlwZSA9PSAiY2F0Y2giKSByZXR1cm4gY29u
dChwdXNobGV4KCJmb3JtIiksIHB1c2hjb250ZXh0LCBleHBlY3QoIigiKSwgZnVuYXJnLCBleHBl
Y3QoIikiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1l
bnQsIHBvcGxleCwgcG9wY29udGV4dCk7CisgICAgcmV0dXJuIHBhc3MocHVzaGxleCgic3RhdCIp
LCBleHByZXNzaW9uLCBleHBlY3QoIjsiKSwgcG9wbGV4KTsKKyAgfQorICBmdW5jdGlvbiBleHBy
ZXNzaW9uKHR5cGUpIHsKKyAgICBpZiAoYXRvbWljVHlwZXMuaGFzT3duUHJvcGVydHkodHlwZSkp
IHJldHVybiBjb250KG1heWJlb3BlcmF0b3IpOworICAgIGlmICh0eXBlID09ICJmdW5jdGlvbiIp
IHJldHVybiBjb250KGZ1bmN0aW9uZGVmKTsKKyAgICBpZiAodHlwZSA9PSAia2V5d29yZCBjIikg
cmV0dXJuIGNvbnQobWF5YmVleHByZXNzaW9uKTsKKyAgICBpZiAodHlwZSA9PSAiKCIpIHJldHVy
biBjb250KHB1c2hsZXgoIikiKSwgbWF5YmVleHByZXNzaW9uLCBleHBlY3QoIikiKSwgcG9wbGV4
LCBtYXliZW9wZXJhdG9yKTsKKyAgICBpZiAodHlwZSA9PSAib3BlcmF0b3IiKSByZXR1cm4gY29u
dChleHByZXNzaW9uKTsKKyAgICBpZiAodHlwZSA9PSAiWyIpIHJldHVybiBjb250KHB1c2hsZXgo
Il0iKSwgY29tbWFzZXAoZXhwcmVzc2lvbiwgIl0iKSwgcG9wbGV4LCBtYXliZW9wZXJhdG9yKTsK
KyAgICBpZiAodHlwZSA9PSAieyIpIHJldHVybiBjb250KHB1c2hsZXgoIn0iKSwgY29tbWFzZXAo
b2JqcHJvcCwgIn0iKSwgcG9wbGV4LCBtYXliZW9wZXJhdG9yKTsKKyAgICByZXR1cm4gY29udCgp
OworICB9CisgIGZ1bmN0aW9uIG1heWJlZXhwcmVzc2lvbih0eXBlKSB7CisgICAgaWYgKHR5cGUu
bWF0Y2goL1s7XH1cKVxdLF0vKSkgcmV0dXJuIHBhc3MoKTsKKyAgICByZXR1cm4gcGFzcyhleHBy
ZXNzaW9uKTsKKyAgfQorCisgIGZ1bmN0aW9uIG1heWJlb3BlcmF0b3IodHlwZSwgdmFsdWUpIHsK
KyAgICBpZiAodHlwZSA9PSAib3BlcmF0b3IiICYmIC9cK1wrfC0tLy50ZXN0KHZhbHVlKSkgcmV0
dXJuIGNvbnQobWF5YmVvcGVyYXRvcik7CisgICAgaWYgKHR5cGUgPT0gIm9wZXJhdG9yIiAmJiB2
YWx1ZSA9PSAiPyIpIHJldHVybiBjb250KGV4cHJlc3Npb24sIGV4cGVjdCgiOiIpLCBleHByZXNz
aW9uKTsKKyAgICBpZiAodHlwZSA9PSAiOyIpIHJldHVybjsKKyAgICBpZiAodHlwZSA9PSAiKCIp
IHJldHVybiBjb250KHB1c2hsZXgoIikiKSwgY29tbWFzZXAoZXhwcmVzc2lvbiwgIikiKSwgcG9w
bGV4LCBtYXliZW9wZXJhdG9yKTsKKyAgICBpZiAodHlwZSA9PSAiLiIpIHJldHVybiBjb250KHBy
b3BlcnR5LCBtYXliZW9wZXJhdG9yKTsKKyAgICBpZiAodHlwZSA9PSAiWyIpIHJldHVybiBjb250
KHB1c2hsZXgoIl0iKSwgZXhwcmVzc2lvbiwgZXhwZWN0KCJdIiksIHBvcGxleCwgbWF5YmVvcGVy
YXRvcik7CisgIH0KKyAgZnVuY3Rpb24gbWF5YmVsYWJlbCh0eXBlKSB7CisgICAgaWYgKHR5cGUg
PT0gIjoiKSByZXR1cm4gY29udChwb3BsZXgsIHN0YXRlbWVudCk7CisgICAgcmV0dXJuIHBhc3Mo
bWF5YmVvcGVyYXRvciwgZXhwZWN0KCI7IiksIHBvcGxleCk7CisgIH0KKyAgZnVuY3Rpb24gcHJv
cGVydHkodHlwZSkgeworICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIHtjeC5tYXJrZWQgPSAi
cHJvcGVydHkiOyByZXR1cm4gY29udCgpO30KKyAgfQorICBmdW5jdGlvbiBvYmpwcm9wKHR5cGUp
IHsKKyAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiKSBjeC5tYXJrZWQgPSAicHJvcGVydHkiOwor
ICAgIGlmIChhdG9taWNUeXBlcy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgcmV0dXJuIGNvbnQoZXhw
ZWN0KCI6IiksIGV4cHJlc3Npb24pOworICB9CisgIGZ1bmN0aW9uIGNvbW1hc2VwKHdoYXQsIGVu
ZCkgeworICAgIGZ1bmN0aW9uIHByb2NlZWQodHlwZSkgeworICAgICAgaWYgKHR5cGUgPT0gIiwi
KSByZXR1cm4gY29udCh3aGF0LCBwcm9jZWVkKTsKKyAgICAgIGlmICh0eXBlID09IGVuZCkgcmV0
dXJuIGNvbnQoKTsKKyAgICAgIHJldHVybiBjb250KGV4cGVjdChlbmQpKTsKKyAgICB9CisgICAg
cmV0dXJuIGZ1bmN0aW9uIGNvbW1hU2VwYXJhdGVkKHR5cGUpIHsKKyAgICAgIGlmICh0eXBlID09
IGVuZCkgcmV0dXJuIGNvbnQoKTsKKyAgICAgIGVsc2UgcmV0dXJuIHBhc3Mod2hhdCwgcHJvY2Vl
ZCk7CisgICAgfTsKKyAgfQorICBmdW5jdGlvbiBibG9jayh0eXBlKSB7CisgICAgaWYgKHR5cGUg
PT0gIn0iKSByZXR1cm4gY29udCgpOworICAgIHJldHVybiBwYXNzKHN0YXRlbWVudCwgYmxvY2sp
OworICB9CisgIGZ1bmN0aW9uIHZhcmRlZjEodHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodHlwZSA9
PSAidmFyaWFibGUiKXtyZWdpc3Rlcih2YWx1ZSk7IHJldHVybiBjb250KHZhcmRlZjIpO30KKyAg
ICByZXR1cm4gY29udCgpOworICB9CisgIGZ1bmN0aW9uIHZhcmRlZjIodHlwZSwgdmFsdWUpIHsK
KyAgICBpZiAodmFsdWUgPT0gIj0iKSByZXR1cm4gY29udChleHByZXNzaW9uLCB2YXJkZWYyKTsK
KyAgICBpZiAodHlwZSA9PSAiLCIpIHJldHVybiBjb250KHZhcmRlZjEpOworICB9CisgIGZ1bmN0
aW9uIGZvcnNwZWMxKHR5cGUpIHsKKyAgICBpZiAodHlwZSA9PSAidmFyIikgcmV0dXJuIGNvbnQo
dmFyZGVmMSwgZm9yc3BlYzIpOworICAgIGlmICh0eXBlID09ICI7IikgcmV0dXJuIHBhc3MoZm9y
c3BlYzIpOworICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIHJldHVybiBjb250KGZvcm1heWJl
aW4pOworICAgIHJldHVybiBwYXNzKGZvcnNwZWMyKTsKKyAgfQorICBmdW5jdGlvbiBmb3JtYXli
ZWluKHR5cGUsIHZhbHVlKSB7CisgICAgaWYgKHZhbHVlID09ICJpbiIpIHJldHVybiBjb250KGV4
cHJlc3Npb24pOworICAgIHJldHVybiBjb250KG1heWJlb3BlcmF0b3IsIGZvcnNwZWMyKTsKKyAg
fQorICBmdW5jdGlvbiBmb3JzcGVjMih0eXBlLCB2YWx1ZSkgeworICAgIGlmICh0eXBlID09ICI7
IikgcmV0dXJuIGNvbnQoZm9yc3BlYzMpOworICAgIGlmICh2YWx1ZSA9PSAiaW4iKSByZXR1cm4g
Y29udChleHByZXNzaW9uKTsKKyAgICByZXR1cm4gY29udChleHByZXNzaW9uLCBleHBlY3QoIjsi
KSwgZm9yc3BlYzMpOworICB9CisgIGZ1bmN0aW9uIGZvcnNwZWMzKHR5cGUpIHsKKyAgICBpZiAo
dHlwZSAhPSAiKSIpIGNvbnQoZXhwcmVzc2lvbik7CisgIH0KKyAgZnVuY3Rpb24gZnVuY3Rpb25k
ZWYodHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiKSB7cmVnaXN0ZXIo
dmFsdWUpOyByZXR1cm4gY29udChmdW5jdGlvbmRlZik7fQorICAgIGlmICh0eXBlID09ICIoIikg
cmV0dXJuIGNvbnQocHVzaGxleCgiKSIpLCBwdXNoY29udGV4dCwgY29tbWFzZXAoZnVuYXJnLCAi
KSIpLCBwb3BsZXgsIHN0YXRlbWVudCwgcG9wY29udGV4dCk7CisgIH0KKyAgZnVuY3Rpb24gZnVu
YXJnKHR5cGUsIHZhbHVlKSB7CisgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikge3JlZ2lzdGVy
KHZhbHVlKTsgcmV0dXJuIGNvbnQoKTt9CisgIH0KKworICAvLyBJbnRlcmZhY2UKKworICByZXR1
cm4geworICAgIHN0YXJ0U3RhdGU6IGZ1bmN0aW9uKGJhc2Vjb2x1bW4pIHsKKyAgICAgIHJldHVy
biB7CisgICAgICAgIHRva2VuaXplOiBqc1Rva2VuQmFzZSwKKyAgICAgICAgcmVBbGxvd2VkOiB0
cnVlLAorICAgICAgICBrd0FsbG93ZWQ6IHRydWUsCisgICAgICAgIGNjOiBbXSwKKyAgICAgICAg
bGV4aWNhbDogbmV3IEpTTGV4aWNhbCgoYmFzZWNvbHVtbiB8fCAwKSAtIGluZGVudFVuaXQsIDAs
ICJibG9jayIsIGZhbHNlKSwKKyAgICAgICAgbG9jYWxWYXJzOiBwYXJzZXJDb25maWcubG9jYWxW
YXJzLAorICAgICAgICBjb250ZXh0OiBwYXJzZXJDb25maWcubG9jYWxWYXJzICYmIHt2YXJzOiBw
YXJzZXJDb25maWcubG9jYWxWYXJzfSwKKyAgICAgICAgaW5kZW50ZWQ6IDAKKyAgICAgIH07Cisg
ICAgfSwKKworICAgIHRva2VuOiBmdW5jdGlvbihzdHJlYW0sIHN0YXRlKSB7CisgICAgICBpZiAo
c3RyZWFtLnNvbCgpKSB7CisgICAgICAgIGlmICghc3RhdGUubGV4aWNhbC5oYXNPd25Qcm9wZXJ0
eSgiYWxpZ24iKSkKKyAgICAgICAgICBzdGF0ZS5sZXhpY2FsLmFsaWduID0gZmFsc2U7CisgICAg
ICAgIHN0YXRlLmluZGVudGVkID0gc3RyZWFtLmluZGVudGF0aW9uKCk7CisgICAgICB9CisgICAg
ICBpZiAoc3RyZWFtLmVhdFNwYWNlKCkpIHJldHVybiBudWxsOworICAgICAgdmFyIHN0eWxlID0g
c3RhdGUudG9rZW5pemUoc3RyZWFtLCBzdGF0ZSk7CisgICAgICBpZiAodHlwZSA9PSAiY29tbWVu
dCIpIHJldHVybiBzdHlsZTsKKyAgICAgIHN0YXRlLnJlQWxsb3dlZCA9ICEhKHR5cGUgPT0gIm9w
ZXJhdG9yIiB8fCB0eXBlID09ICJrZXl3b3JkIGMiIHx8IHR5cGUubWF0Y2goL15bXFt7fVwoLDs6
XSQvKSk7CisgICAgICBzdGF0ZS5rd0FsbG93ZWQgPSB0eXBlICE9ICcuJzsKKyAgICAgIHJldHVy
biBwYXJzZUpTKHN0YXRlLCBzdHlsZSwgdHlwZSwgY29udGVudCwgc3RyZWFtKTsKKyAgICB9LAor
CisgICAgaW5kZW50OiBmdW5jdGlvbihzdGF0ZSwgdGV4dEFmdGVyKSB7CisgICAgICBpZiAoc3Rh
dGUudG9rZW5pemUgIT0ganNUb2tlbkJhc2UpIHJldHVybiAwOworICAgICAgdmFyIGZpcnN0Q2hh
ciA9IHRleHRBZnRlciAmJiB0ZXh0QWZ0ZXIuY2hhckF0KDApLCBsZXhpY2FsID0gc3RhdGUubGV4
aWNhbDsKKyAgICAgIGlmIChsZXhpY2FsLnR5cGUgPT0gInN0YXQiICYmIGZpcnN0Q2hhciA9PSAi
fSIpIGxleGljYWwgPSBsZXhpY2FsLnByZXY7CisgICAgICB2YXIgdHlwZSA9IGxleGljYWwudHlw
ZSwgY2xvc2luZyA9IGZpcnN0Q2hhciA9PSB0eXBlOworICAgICAgaWYgKHR5cGUgPT0gInZhcmRl
ZiIpIHJldHVybiBsZXhpY2FsLmluZGVudGVkICsgNDsKKyAgICAgIGVsc2UgaWYgKHR5cGUgPT0g
ImZvcm0iICYmIGZpcnN0Q2hhciA9PSAieyIpIHJldHVybiBsZXhpY2FsLmluZGVudGVkOworICAg
ICAgZWxzZSBpZiAodHlwZSA9PSAic3RhdCIgfHwgdHlwZSA9PSAiZm9ybSIpIHJldHVybiBsZXhp
Y2FsLmluZGVudGVkICsgaW5kZW50VW5pdDsKKyAgICAgIGVsc2UgaWYgKGxleGljYWwuaW5mbyA9
PSAic3dpdGNoIiAmJiAhY2xvc2luZykKKyAgICAgICAgcmV0dXJuIGxleGljYWwuaW5kZW50ZWQg
KyAoL14oPzpjYXNlfGRlZmF1bHQpXGIvLnRlc3QodGV4dEFmdGVyKSA/IGluZGVudFVuaXQgOiAy
ICogaW5kZW50VW5pdCk7CisgICAgICBlbHNlIGlmIChsZXhpY2FsLmFsaWduKSByZXR1cm4gbGV4
aWNhbC5jb2x1bW4gKyAoY2xvc2luZyA/IDAgOiAxKTsKKyAgICAgIGVsc2UgcmV0dXJuIGxleGlj
YWwuaW5kZW50ZWQgKyAoY2xvc2luZyA/IDAgOiBpbmRlbnRVbml0KTsKKyAgICB9LAorCisgICAg
ZWxlY3RyaWNDaGFyczogIjp7fSIKKyAgfTsKK30pOworCitDb2RlTWlycm9yLmRlZmluZU1JTUUo
InRleHQvamF2YXNjcmlwdCIsICJqYXZhc2NyaXB0Iik7CitDb2RlTWlycm9yLmRlZmluZU1JTUUo
ImFwcGxpY2F0aW9uL2pzb24iLCB7bmFtZTogImphdmFzY3JpcHQiLCBqc29uOiB0cnVlfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3htbC5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQveG1sLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwZjQz
NTFmYTUxYzliMWE4NjAzNmNiYzZmNWFjMzk1ZmYxODQ3MGQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3htbC5qcwpAQCAtMCwwICsxLDMyNiBA
QAorQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJ4bWwiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNv
bmZpZykgeworICB2YXIgaW5kZW50VW5pdCA9IGNvbmZpZy5pbmRlbnRVbml0OworICB2YXIgS2x1
ZGdlcyA9IHBhcnNlckNvbmZpZy5odG1sTW9kZSA/IHsKKyAgICBhdXRvU2VsZkNsb3NlcnM6IHsn
YXJlYSc6IHRydWUsICdiYXNlJzogdHJ1ZSwgJ2JyJzogdHJ1ZSwgJ2NvbCc6IHRydWUsICdjb21t
YW5kJzogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAnZW1iZWQnOiB0cnVlLCAnZnJhbWUn
OiB0cnVlLCAnaHInOiB0cnVlLCAnaW1nJzogdHJ1ZSwgJ2lucHV0JzogdHJ1ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAna2V5Z2VuJzogdHJ1ZSwgJ2xpbmsnOiB0cnVlLCAnbWV0YSc6IHRydWUs
ICdwYXJhbSc6IHRydWUsICdzb3VyY2UnOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICd0
cmFjayc6IHRydWUsICd3YnInOiB0cnVlfSwKKyAgICBpbXBsaWNpdGx5Q2xvc2VkOiB7J2RkJzog
dHJ1ZSwgJ2xpJzogdHJ1ZSwgJ29wdGdyb3VwJzogdHJ1ZSwgJ29wdGlvbic6IHRydWUsICdwJzog
dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgJ3JwJzogdHJ1ZSwgJ3J0JzogdHJ1ZSwgJ3Ri
b2R5JzogdHJ1ZSwgJ3RkJzogdHJ1ZSwgJ3Rmb290JzogdHJ1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgJ3RoJzogdHJ1ZSwgJ3RyJzogdHJ1ZX0sCisgICAgY29udGV4dEdyYWJiZXJzOiB7Cisg
ICAgICAnZGQnOiB7J2RkJzogdHJ1ZSwgJ2R0JzogdHJ1ZX0sCisgICAgICAnZHQnOiB7J2RkJzog
dHJ1ZSwgJ2R0JzogdHJ1ZX0sCisgICAgICAnbGknOiB7J2xpJzogdHJ1ZX0sCisgICAgICAnb3B0
aW9uJzogeydvcHRpb24nOiB0cnVlLCAnb3B0Z3JvdXAnOiB0cnVlfSwKKyAgICAgICdvcHRncm91
cCc6IHsnb3B0Z3JvdXAnOiB0cnVlfSwKKyAgICAgICdwJzogeydhZGRyZXNzJzogdHJ1ZSwgJ2Fy
dGljbGUnOiB0cnVlLCAnYXNpZGUnOiB0cnVlLCAnYmxvY2txdW90ZSc6IHRydWUsICdkaXInOiB0
cnVlLAorICAgICAgICAgICAgJ2Rpdic6IHRydWUsICdkbCc6IHRydWUsICdmaWVsZHNldCc6IHRy
dWUsICdmb290ZXInOiB0cnVlLCAnZm9ybSc6IHRydWUsCisgICAgICAgICAgICAnaDEnOiB0cnVl
LCAnaDInOiB0cnVlLCAnaDMnOiB0cnVlLCAnaDQnOiB0cnVlLCAnaDUnOiB0cnVlLCAnaDYnOiB0
cnVlLAorICAgICAgICAgICAgJ2hlYWRlcic6IHRydWUsICdoZ3JvdXAnOiB0cnVlLCAnaHInOiB0
cnVlLCAnbWVudSc6IHRydWUsICduYXYnOiB0cnVlLCAnb2wnOiB0cnVlLAorICAgICAgICAgICAg
J3AnOiB0cnVlLCAncHJlJzogdHJ1ZSwgJ3NlY3Rpb24nOiB0cnVlLCAndGFibGUnOiB0cnVlLCAn
dWwnOiB0cnVlfSwKKyAgICAgICdycCc6IHsncnAnOiB0cnVlLCAncnQnOiB0cnVlfSwKKyAgICAg
ICdydCc6IHsncnAnOiB0cnVlLCAncnQnOiB0cnVlfSwKKyAgICAgICd0Ym9keSc6IHsndGJvZHkn
OiB0cnVlLCAndGZvb3QnOiB0cnVlfSwKKyAgICAgICd0ZCc6IHsndGQnOiB0cnVlLCAndGgnOiB0
cnVlfSwKKyAgICAgICd0Zm9vdCc6IHsndGJvZHknOiB0cnVlfSwKKyAgICAgICd0aCc6IHsndGQn
OiB0cnVlLCAndGgnOiB0cnVlfSwKKyAgICAgICd0aGVhZCc6IHsndGJvZHknOiB0cnVlLCAndGZv
b3QnOiB0cnVlfSwKKyAgICAgICd0cic6IHsndHInOiB0cnVlfQorICAgIH0sCisgICAgZG9Ob3RJ
bmRlbnQ6IHsicHJlIjogdHJ1ZX0sCisgICAgYWxsb3dVbnF1b3RlZDogdHJ1ZSwKKyAgICBhbGxv
d01pc3Npbmc6IHRydWUKKyAgfSA6IHsKKyAgICBhdXRvU2VsZkNsb3NlcnM6IHt9LAorICAgIGlt
cGxpY2l0bHlDbG9zZWQ6IHt9LAorICAgIGNvbnRleHRHcmFiYmVyczoge30sCisgICAgZG9Ob3RJ
bmRlbnQ6IHt9LAorICAgIGFsbG93VW5xdW90ZWQ6IGZhbHNlLAorICAgIGFsbG93TWlzc2luZzog
ZmFsc2UKKyAgfTsKKyAgdmFyIGFsaWduQ0RBVEEgPSBwYXJzZXJDb25maWcuYWxpZ25DREFUQTsK
KworICAvLyBSZXR1cm4gdmFyaWFibGVzIGZvciB0b2tlbml6ZXJzCisgIHZhciB0YWdOYW1lLCB0
eXBlOworCisgIGZ1bmN0aW9uIGluVGV4dChzdHJlYW0sIHN0YXRlKSB7CisgICAgZnVuY3Rpb24g
Y2hhaW4ocGFyc2VyKSB7CisgICAgICBzdGF0ZS50b2tlbml6ZSA9IHBhcnNlcjsKKyAgICAgIHJl
dHVybiBwYXJzZXIoc3RyZWFtLCBzdGF0ZSk7CisgICAgfQorCisgICAgdmFyIGNoID0gc3RyZWFt
Lm5leHQoKTsKKyAgICBpZiAoY2ggPT0gIjwiKSB7CisgICAgICBpZiAoc3RyZWFtLmVhdCgiISIp
KSB7CisgICAgICAgIGlmIChzdHJlYW0uZWF0KCJbIikpIHsKKyAgICAgICAgICBpZiAoc3RyZWFt
Lm1hdGNoKCJDREFUQVsiKSkgcmV0dXJuIGNoYWluKGluQmxvY2soImF0b20iLCAiXV0+IikpOwor
ICAgICAgICAgIGVsc2UgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAo
c3RyZWFtLm1hdGNoKCItLSIpKSByZXR1cm4gY2hhaW4oaW5CbG9jaygiY29tbWVudCIsICItLT4i
KSk7CisgICAgICAgIGVsc2UgaWYgKHN0cmVhbS5tYXRjaCgiRE9DVFlQRSIsIHRydWUsIHRydWUp
KSB7CisgICAgICAgICAgc3RyZWFtLmVhdFdoaWxlKC9bXHdcLl9cLV0vKTsKKyAgICAgICAgICBy
ZXR1cm4gY2hhaW4oZG9jdHlwZSgxKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSByZXR1cm4g
bnVsbDsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHN0cmVhbS5lYXQoIj8iKSkgeworICAgICAg
ICBzdHJlYW0uZWF0V2hpbGUoL1tcd1wuX1wtXS8pOworICAgICAgICBzdGF0ZS50b2tlbml6ZSA9
IGluQmxvY2soIm1ldGEiLCAiPz4iKTsKKyAgICAgICAgcmV0dXJuICJtZXRhIjsKKyAgICAgIH0K
KyAgICAgIGVsc2UgeworICAgICAgICB0eXBlID0gc3RyZWFtLmVhdCgiLyIpID8gImNsb3NlVGFn
IiA6ICJvcGVuVGFnIjsKKyAgICAgICAgc3RyZWFtLmVhdFNwYWNlKCk7CisgICAgICAgIHRhZ05h
bWUgPSAiIjsKKyAgICAgICAgdmFyIGM7CisgICAgICAgIHdoaWxlICgoYyA9IHN0cmVhbS5lYXQo
L1teXHNcdTAwYTA9PD5cIlwnXC8/XS8pKSkgdGFnTmFtZSArPSBjOworICAgICAgICBzdGF0ZS50
b2tlbml6ZSA9IGluVGFnOworICAgICAgICByZXR1cm4gInRhZyI7CisgICAgICB9CisgICAgfQor
ICAgIGVsc2UgaWYgKGNoID09ICImIikgeworICAgICAgdmFyIG9rOworICAgICAgaWYgKHN0cmVh
bS5lYXQoIiMiKSkgeworICAgICAgICBpZiAoc3RyZWFtLmVhdCgieCIpKSB7CisgICAgICAgICAg
b2sgPSBzdHJlYW0uZWF0V2hpbGUoL1thLWZBLUZcZF0vKSAmJiBzdHJlYW0uZWF0KCI7Iik7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgb2sgPSBzdHJlYW0uZWF0V2hpbGUoL1tcZF0vKSAm
JiBzdHJlYW0uZWF0KCI7Iik7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIG9r
ID0gc3RyZWFtLmVhdFdoaWxlKC9bXHdcLlwtOl0vKSAmJiBzdHJlYW0uZWF0KCI7Iik7CisgICAg
ICB9CisgICAgICByZXR1cm4gb2sgPyAiYXRvbSIgOiAiZXJyb3IiOworICAgIH0KKyAgICBlbHNl
IHsKKyAgICAgIHN0cmVhbS5lYXRXaGlsZSgvW14mPF0vKTsKKyAgICAgIHJldHVybiBudWxsOwor
ICAgIH0KKyAgfQorCisgIGZ1bmN0aW9uIGluVGFnKHN0cmVhbSwgc3RhdGUpIHsKKyAgICB2YXIg
Y2ggPSBzdHJlYW0ubmV4dCgpOworICAgIGlmIChjaCA9PSAiPiIgfHwgKGNoID09ICIvIiAmJiBz
dHJlYW0uZWF0KCI+IikpKSB7CisgICAgICBzdGF0ZS50b2tlbml6ZSA9IGluVGV4dDsKKyAgICAg
IHR5cGUgPSBjaCA9PSAiPiIgPyAiZW5kVGFnIiA6ICJzZWxmY2xvc2VUYWciOworICAgICAgcmV0
dXJuICJ0YWciOworICAgIH0KKyAgICBlbHNlIGlmIChjaCA9PSAiPSIpIHsKKyAgICAgIHR5cGUg
PSAiZXF1YWxzIjsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICBlbHNlIGlmICgvW1wn
XCJdLy50ZXN0KGNoKSkgeworICAgICAgc3RhdGUudG9rZW5pemUgPSBpbkF0dHJpYnV0ZShjaCk7
CisgICAgICByZXR1cm4gc3RhdGUudG9rZW5pemUoc3RyZWFtLCBzdGF0ZSk7CisgICAgfQorICAg
IGVsc2UgeworICAgICAgc3RyZWFtLmVhdFdoaWxlKC9bXlxzXHUwMGEwPTw+XCJcJ1wvP10vKTsK
KyAgICAgIHJldHVybiAid29yZCI7CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24gaW5BdHRyaWJ1
dGUocXVvdGUpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24oc3RyZWFtLCBzdGF0ZSkgeworICAgICAg
d2hpbGUgKCFzdHJlYW0uZW9sKCkpIHsKKyAgICAgICAgaWYgKHN0cmVhbS5uZXh0KCkgPT0gcXVv
dGUpIHsKKyAgICAgICAgICBzdGF0ZS50b2tlbml6ZSA9IGluVGFnOworICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICB9CisgICAgICByZXR1cm4gInN0cmluZyI7CisgICAgfTsKKyAg
fQorCisgIGZ1bmN0aW9uIGluQmxvY2soc3R5bGUsIHRlcm1pbmF0b3IpIHsKKyAgICByZXR1cm4g
ZnVuY3Rpb24oc3RyZWFtLCBzdGF0ZSkgeworICAgICAgd2hpbGUgKCFzdHJlYW0uZW9sKCkpIHsK
KyAgICAgICAgaWYgKHN0cmVhbS5tYXRjaCh0ZXJtaW5hdG9yKSkgeworICAgICAgICAgIHN0YXRl
LnRva2VuaXplID0gaW5UZXh0OworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IHN0cmVhbS5uZXh0KCk7CisgICAgICB9CisgICAgICByZXR1cm4gc3R5bGU7CisgICAgfTsKKyAg
fQorICBmdW5jdGlvbiBkb2N0eXBlKGRlcHRoKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uKHN0cmVh
bSwgc3RhdGUpIHsKKyAgICAgIHZhciBjaDsKKyAgICAgIHdoaWxlICgoY2ggPSBzdHJlYW0ubmV4
dCgpKSAhPSBudWxsKSB7CisgICAgICAgIGlmIChjaCA9PSAiPCIpIHsKKyAgICAgICAgICBzdGF0
ZS50b2tlbml6ZSA9IGRvY3R5cGUoZGVwdGggKyAxKTsKKyAgICAgICAgICByZXR1cm4gc3RhdGUu
dG9rZW5pemUoc3RyZWFtLCBzdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gIj4iKSB7
CisgICAgICAgICAgaWYgKGRlcHRoID09IDEpIHsKKyAgICAgICAgICAgIHN0YXRlLnRva2VuaXpl
ID0gaW5UZXh0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHN0YXRlLnRva2VuaXplID0gZG9jdHlwZShkZXB0aCAtIDEpOworICAgICAgICAgICAg
cmV0dXJuIHN0YXRlLnRva2VuaXplKHN0cmVhbSwgc3RhdGUpOworICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgfQorICAgICAgcmV0dXJuICJtZXRhIjsKKyAgICB9OworICB9CisKKyAgdmFy
IGN1clN0YXRlLCBzZXRTdHlsZTsKKyAgZnVuY3Rpb24gcGFzcygpIHsKKyAgICBmb3IgKHZhciBp
ID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBjdXJTdGF0ZS5jYy5wdXNoKGFy
Z3VtZW50c1tpXSk7CisgIH0KKyAgZnVuY3Rpb24gY29udCgpIHsKKyAgICBwYXNzLmFwcGx5KG51
bGwsIGFyZ3VtZW50cyk7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKworICBmdW5jdGlvbiBwdXNo
Q29udGV4dCh0YWdOYW1lLCBzdGFydE9mTGluZSkgeworICAgIHZhciBub0luZGVudCA9IEtsdWRn
ZXMuZG9Ob3RJbmRlbnQuaGFzT3duUHJvcGVydHkodGFnTmFtZSkgfHwgKGN1clN0YXRlLmNvbnRl
eHQgJiYgY3VyU3RhdGUuY29udGV4dC5ub0luZGVudCk7CisgICAgY3VyU3RhdGUuY29udGV4dCA9
IHsKKyAgICAgIHByZXY6IGN1clN0YXRlLmNvbnRleHQsCisgICAgICB0YWdOYW1lOiB0YWdOYW1l
LAorICAgICAgaW5kZW50OiBjdXJTdGF0ZS5pbmRlbnRlZCwKKyAgICAgIHN0YXJ0T2ZMaW5lOiBz
dGFydE9mTGluZSwKKyAgICAgIG5vSW5kZW50OiBub0luZGVudAorICAgIH07CisgIH0KKyAgZnVu
Y3Rpb24gcG9wQ29udGV4dCgpIHsKKyAgICBpZiAoY3VyU3RhdGUuY29udGV4dCkgY3VyU3RhdGUu
Y29udGV4dCA9IGN1clN0YXRlLmNvbnRleHQucHJldjsKKyAgfQorCisgIGZ1bmN0aW9uIGVsZW1l
bnQodHlwZSkgeworICAgIGlmICh0eXBlID09ICJvcGVuVGFnIikgeworICAgICAgY3VyU3RhdGUu
dGFnTmFtZSA9IHRhZ05hbWU7CisgICAgICByZXR1cm4gY29udChhdHRyaWJ1dGVzLCBlbmR0YWco
Y3VyU3RhdGUuc3RhcnRPZkxpbmUpKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gImNsb3NlVGFn
IikgeworICAgICAgdmFyIGVyciA9IGZhbHNlOworICAgICAgaWYgKGN1clN0YXRlLmNvbnRleHQp
IHsKKyAgICAgICAgaWYgKGN1clN0YXRlLmNvbnRleHQudGFnTmFtZSAhPSB0YWdOYW1lKSB7Cisg
ICAgICAgICAgaWYgKEtsdWRnZXMuaW1wbGljaXRseUNsb3NlZC5oYXNPd25Qcm9wZXJ0eShjdXJT
dGF0ZS5jb250ZXh0LnRhZ05hbWUudG9Mb3dlckNhc2UoKSkpIHsKKyAgICAgICAgICAgIHBvcENv
bnRleHQoKTsKKyAgICAgICAgICB9CisgICAgICAgICAgZXJyID0gIWN1clN0YXRlLmNvbnRleHQg
fHwgY3VyU3RhdGUuY29udGV4dC50YWdOYW1lICE9IHRhZ05hbWU7CisgICAgICAgIH0KKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIGVyciA9IHRydWU7CisgICAgICB9CisgICAgICBpZiAoZXJyKSBz
ZXRTdHlsZSA9ICJlcnJvciI7CisgICAgICByZXR1cm4gY29udChlbmRjbG9zZXRhZyhlcnIpKTsK
KyAgICB9CisgICAgcmV0dXJuIGNvbnQoKTsKKyAgfQorICBmdW5jdGlvbiBlbmR0YWcoc3RhcnRP
ZkxpbmUpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24odHlwZSkgeworICAgICAgaWYgKHR5cGUgPT0g
InNlbGZjbG9zZVRhZyIgfHwKKyAgICAgICAgICAodHlwZSA9PSAiZW5kVGFnIiAmJiBLbHVkZ2Vz
LmF1dG9TZWxmQ2xvc2Vycy5oYXNPd25Qcm9wZXJ0eShjdXJTdGF0ZS50YWdOYW1lLnRvTG93ZXJD
YXNlKCkpKSkgeworICAgICAgICBtYXliZVBvcENvbnRleHQoY3VyU3RhdGUudGFnTmFtZS50b0xv
d2VyQ2FzZSgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnQoKTsKKyAgICAgIH0KKyAgICAgIGlmICh0
eXBlID09ICJlbmRUYWciKSB7CisgICAgICAgIG1heWJlUG9wQ29udGV4dChjdXJTdGF0ZS50YWdO
YW1lLnRvTG93ZXJDYXNlKCkpOworICAgICAgICBwdXNoQ29udGV4dChjdXJTdGF0ZS50YWdOYW1l
LCBzdGFydE9mTGluZSk7CisgICAgICAgIHJldHVybiBjb250KCk7CisgICAgICB9CisgICAgICBy
ZXR1cm4gY29udCgpOworICAgIH07CisgIH0KKyAgZnVuY3Rpb24gZW5kY2xvc2V0YWcoZXJyKSB7
CisgICAgcmV0dXJuIGZ1bmN0aW9uKHR5cGUpIHsKKyAgICAgIGlmIChlcnIpIHNldFN0eWxlID0g
ImVycm9yIjsKKyAgICAgIGlmICh0eXBlID09ICJlbmRUYWciKSB7IHBvcENvbnRleHQoKTsgcmV0
dXJuIGNvbnQoKTsgfQorICAgICAgc2V0U3R5bGUgPSAiZXJyb3IiOworICAgICAgcmV0dXJuIGNv
bnQoYXJndW1lbnRzLmNhbGxlZSk7CisgICAgfTsKKyAgfQorICBmdW5jdGlvbiBtYXliZVBvcENv
bnRleHQobmV4dFRhZ05hbWUpIHsKKyAgICB2YXIgcGFyZW50VGFnTmFtZTsKKyAgICB3aGlsZSAo
dHJ1ZSkgeworICAgICAgaWYgKCFjdXJTdGF0ZS5jb250ZXh0KSB7CisgICAgICAgIHJldHVybjsK
KyAgICAgIH0KKyAgICAgIHBhcmVudFRhZ05hbWUgPSBjdXJTdGF0ZS5jb250ZXh0LnRhZ05hbWUu
dG9Mb3dlckNhc2UoKTsKKyAgICAgIGlmICghS2x1ZGdlcy5jb250ZXh0R3JhYmJlcnMuaGFzT3du
UHJvcGVydHkocGFyZW50VGFnTmFtZSkgfHwKKyAgICAgICAgICAhS2x1ZGdlcy5jb250ZXh0R3Jh
YmJlcnNbcGFyZW50VGFnTmFtZV0uaGFzT3duUHJvcGVydHkobmV4dFRhZ05hbWUpKSB7CisgICAg
ICAgIHJldHVybjsKKyAgICAgIH0KKyAgICAgIHBvcENvbnRleHQoKTsKKyAgICB9CisgIH0KKwor
ICBmdW5jdGlvbiBhdHRyaWJ1dGVzKHR5cGUpIHsKKyAgICBpZiAodHlwZSA9PSAid29yZCIpIHtz
ZXRTdHlsZSA9ICJhdHRyaWJ1dGUiOyByZXR1cm4gY29udChhdHRyaWJ1dGUsIGF0dHJpYnV0ZXMp
O30KKyAgICBpZiAodHlwZSA9PSAiZW5kVGFnIiB8fCB0eXBlID09ICJzZWxmY2xvc2VUYWciKSBy
ZXR1cm4gcGFzcygpOworICAgIHNldFN0eWxlID0gImVycm9yIjsKKyAgICByZXR1cm4gY29udChh
dHRyaWJ1dGVzKTsKKyAgfQorICBmdW5jdGlvbiBhdHRyaWJ1dGUodHlwZSkgeworICAgIGlmICh0
eXBlID09ICJlcXVhbHMiKSByZXR1cm4gY29udChhdHR2YWx1ZSwgYXR0cmlidXRlcyk7CisgICAg
aWYgKCFLbHVkZ2VzLmFsbG93TWlzc2luZykgc2V0U3R5bGUgPSAiZXJyb3IiOworICAgIHJldHVy
biAodHlwZSA9PSAiZW5kVGFnIiB8fCB0eXBlID09ICJzZWxmY2xvc2VUYWciKSA/IHBhc3MoKSA6
IGNvbnQoKTsKKyAgfQorICBmdW5jdGlvbiBhdHR2YWx1ZSh0eXBlKSB7CisgICAgaWYgKHR5cGUg
PT0gInN0cmluZyIpIHJldHVybiBjb250KGF0dHZhbHVlbWF5YmUpOworICAgIGlmICh0eXBlID09
ICJ3b3JkIiAmJiBLbHVkZ2VzLmFsbG93VW5xdW90ZWQpIHtzZXRTdHlsZSA9ICJzdHJpbmciOyBy
ZXR1cm4gY29udCgpO30KKyAgICBzZXRTdHlsZSA9ICJlcnJvciI7CisgICAgcmV0dXJuICh0eXBl
ID09ICJlbmRUYWciIHx8IHR5cGUgPT0gInNlbGZDbG9zZVRhZyIpID8gcGFzcygpIDogY29udCgp
OworICB9CisgIGZ1bmN0aW9uIGF0dHZhbHVlbWF5YmUodHlwZSkgeworICAgIGlmICh0eXBlID09
ICJzdHJpbmciKSByZXR1cm4gY29udChhdHR2YWx1ZW1heWJlKTsKKyAgICBlbHNlIHJldHVybiBw
YXNzKCk7CisgIH0KKworICByZXR1cm4geworICAgIHN0YXJ0U3RhdGU6IGZ1bmN0aW9uKCkgewor
ICAgICAgcmV0dXJuIHt0b2tlbml6ZTogaW5UZXh0LCBjYzogW10sIGluZGVudGVkOiAwLCBzdGFy
dE9mTGluZTogdHJ1ZSwgdGFnTmFtZTogbnVsbCwgY29udGV4dDogbnVsbH07CisgICAgfSwKKwor
ICAgIHRva2VuOiBmdW5jdGlvbihzdHJlYW0sIHN0YXRlKSB7CisgICAgICBpZiAoc3RyZWFtLnNv
bCgpKSB7CisgICAgICAgIHN0YXRlLnN0YXJ0T2ZMaW5lID0gdHJ1ZTsKKyAgICAgICAgc3RhdGUu
aW5kZW50ZWQgPSBzdHJlYW0uaW5kZW50YXRpb24oKTsKKyAgICAgIH0KKyAgICAgIGlmIChzdHJl
YW0uZWF0U3BhY2UoKSkgcmV0dXJuIG51bGw7CisKKyAgICAgIHNldFN0eWxlID0gdHlwZSA9IHRh
Z05hbWUgPSBudWxsOworICAgICAgdmFyIHN0eWxlID0gc3RhdGUudG9rZW5pemUoc3RyZWFtLCBz
dGF0ZSk7CisgICAgICBzdGF0ZS50eXBlID0gdHlwZTsKKyAgICAgIGlmICgoc3R5bGUgfHwgdHlw
ZSkgJiYgc3R5bGUgIT0gImNvbW1lbnQiKSB7CisgICAgICAgIGN1clN0YXRlID0gc3RhdGU7Cisg
ICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgdmFyIGNvbWIgPSBzdGF0ZS5jYy5wb3Ao
KSB8fCBlbGVtZW50OworICAgICAgICAgIGlmIChjb21iKHR5cGUgfHwgc3R5bGUpKSBicmVhazsK
KyAgICAgICAgfQorICAgICAgfQorICAgICAgc3RhdGUuc3RhcnRPZkxpbmUgPSBmYWxzZTsKKyAg
ICAgIHJldHVybiBzZXRTdHlsZSB8fCBzdHlsZTsKKyAgICB9LAorCisgICAgaW5kZW50OiBmdW5j
dGlvbihzdGF0ZSwgdGV4dEFmdGVyLCBmdWxsTGluZSkgeworICAgICAgdmFyIGNvbnRleHQgPSBz
dGF0ZS5jb250ZXh0OworICAgICAgaWYgKChzdGF0ZS50b2tlbml6ZSAhPSBpblRhZyAmJiBzdGF0
ZS50b2tlbml6ZSAhPSBpblRleHQpIHx8CisgICAgICAgICAgY29udGV4dCAmJiBjb250ZXh0Lm5v
SW5kZW50KQorICAgICAgICByZXR1cm4gZnVsbExpbmUgPyBmdWxsTGluZS5tYXRjaCgvXihccyop
LylbMF0ubGVuZ3RoIDogMDsKKyAgICAgIGlmIChhbGlnbkNEQVRBICYmIC88IVxbQ0RBVEFcWy8u
dGVzdCh0ZXh0QWZ0ZXIpKSByZXR1cm4gMDsKKyAgICAgIGlmIChjb250ZXh0ICYmIC9ePFwvLy50
ZXN0KHRleHRBZnRlcikpCisgICAgICAgIGNvbnRleHQgPSBjb250ZXh0LnByZXY7CisgICAgICB3
aGlsZSAoY29udGV4dCAmJiAhY29udGV4dC5zdGFydE9mTGluZSkKKyAgICAgICAgY29udGV4dCA9
IGNvbnRleHQucHJldjsKKyAgICAgIGlmIChjb250ZXh0KSByZXR1cm4gY29udGV4dC5pbmRlbnQg
KyBpbmRlbnRVbml0OworICAgICAgZWxzZSByZXR1cm4gMDsKKyAgICB9LAorCisgICAgY29tcGFy
ZVN0YXRlczogZnVuY3Rpb24oYSwgYikgeworICAgICAgaWYgKGEuaW5kZW50ZWQgIT0gYi5pbmRl
bnRlZCB8fCBhLnRva2VuaXplICE9IGIudG9rZW5pemUpIHJldHVybiBmYWxzZTsKKyAgICAgIGZv
ciAodmFyIGNhID0gYS5jb250ZXh0LCBjYiA9IGIuY29udGV4dDsgOyBjYSA9IGNhLnByZXYsIGNi
ID0gY2IucHJldikgeworICAgICAgICBpZiAoIWNhIHx8ICFjYikgcmV0dXJuIGNhID09IGNiOwor
ICAgICAgICBpZiAoY2EudGFnTmFtZSAhPSBjYi50YWdOYW1lIHx8IGNhLmluZGVudCAhPSBjYi5p
bmRlbnQpIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICB9LAorCisgICAgZWxlY3RyaWNDaGFy
czogIi8iCisgIH07Cit9KTsKKworQ29kZU1pcnJvci5kZWZpbmVNSU1FKCJ0ZXh0L3htbCIsICJ4
bWwiKTsKK0NvZGVNaXJyb3IuZGVmaW5lTUlNRSgiYXBwbGljYXRpb24veG1sIiwgInhtbCIpOwor
aWYgKCFDb2RlTWlycm9yLm1pbWVNb2Rlcy5oYXNPd25Qcm9wZXJ0eSgidGV4dC9odG1sIikpCisg
IENvZGVNaXJyb3IuZGVmaW5lTUlNRSgidGV4dC9odG1sIiwge25hbWU6ICJ4bWwiLCBodG1sTW9k
ZTogdHJ1ZX0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>157399</attachid>
            <date>2012-08-08 23:34:55 -0700</date>
            <delta_ts>2012-08-08 23:34:55 -0700</delta_ts>
            <desc>Archive of layout-test-results from gce-cr-linux-08</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>134893</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">UEsDBAoAAAAAADQyCUEAAAAAAAAAAAAAAAAYABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvVVQJ
AAMEViNQBVYjUHV4CwABBOgDAAAE6AMAAFBLAwQUAAIACAC0MQlBmnQncC02AADokQIANAAcAHRt
cC9sYXlvdXQtdGVzdC1yZXN1bHRzL3dlYmtpdF91bml0X3Rlc3RzX291dHB1dC54bWxVVAkAAxNV
I1AFViNQdXgLAAEE6AMAAAToAwAAzF3Re+I2En+/v2K/fb8mJOl297727iOQdLkLIQWy2/aln2IL
0MVIriQnoX/9zUiGQMC2jCXvPQWCPb+Z0Wg0kkajH//1skzePVGpmOA/ve98d/r+HeWRiBmf//T+
fnr994/v//XPv/2oqdIqY/DnnfkIj3Y68OyMsCSTFL7Dl5gp8pDQGH8EMlIKaX/QbAkvkWX60/uz
087Z308//v300/T0wz865/84/2B/h5++u/jh0/t3nOCXbpJMEej9P//27t0rfP7rmPKYyimijcVz
nxK9wKffr5m7KOTsdI8x+PDd6YczA5RDRUStkXqET6gGkPfvQAKdwXsy41tvnp6/fxclRKkKzk4q
6E/FkLzA3wG8/3IYrBmQJGoxmMGzI2juWQJ/EVlDQxeJdu4DMMe458qIWSLed6dnn2og/niysYoq
G+nRJPFhJKU20hNJtuSFZnJWJNob5k6qMYyp2I9HWIsjnm09i+JsMcUNWAt122Yq5QTUj3VQq+zm
K30Y8DTTV0+U62sSaSFXO3ZzXs9uCoymLzJkMGHRo0P7FTNVoMmhyBS9Tw39nsi4DgFymy3vSNwT
PB9AmmNUNc6NiEjC/qIxQD9QOejd7zTNWd0uDT7usGhjamSClx0dfxFnBapL1o/3acSWJJnQlEgC
2nDQYSmUswb7RNO3+juvrb+L91XyAcy1kEuip/RFO7rHw0xWqXKyEFI74nWOx0Mi3eHd8IY80EQ1
R6hqsUkkRZJ0OZgJ2McVNy3i2RttqFYaXwE3BbqaJeDH7StXeVjpHaOfS9yQcL1muBWc7nad2uHE
aWHMmcknOoRR64ZxSqSjhRXxd1IB8ktGYvA8LKqtP3eMXvYQlD7IIMNKcAljaERDqkgQpf3Tt4+P
gPcyY/KDENCS7OM3gs+Dg2wAbsUkAwjGgyNNlkLoRZEHa9rTXxsoUDfcsQCpw0KYQT4UwPSZtWLG
WrULUm5gnvQW1LpQnHYAQuvq64LSZCpJiNHkLUI4WWA0yV4Q4xFmgIGk2ccI3TZ98cyn4jJbpjTY
SHmftocQNKjYVlYgoC9ErmDKYFYM1NWfGXsiCeXRqj2klgUzcDdEzmnLmBNNaRrKUiZapAM+ZHGc
BJDLLtVQXwAO64NfGH3emfzhfkfB5O/i4OSvU7hwci2iTA3UgJNIs6fC1adO5+2y2itTBXrqGoIT
IEcdA00nqpkWY6rYX3TIQKHZcgIfC3cUzhrQ/0zZfKHXa9FdHl+zFxp/ZbFe+NTSBs+Qt6AAZnDW
4IX6+1Qbrz+YdC9vrvp/vAIP+CXVz5RyVOXWAhMXumxd9RiotUDhkYbkZdcyvGHgOp9xatNV6pH+
hOqrmGnsxhOaUOg8go9mM0W1AnPYgA74TBRuTFzURsWly96C8Hlxz/9QQdTBgd2Pb6BVUsHV7iJW
x89i4ouWpE80cdsP2GOmlhR/ZvDD/4kQW7y4ygBhLVczaPQRRFEEbWxXlvor8p0CgfQaCbuJ6kp6
zxkw7CZeEZsFVgzjarQwOBP4fkP5vMhHewPqs9mMSsp1QDSSpsnKvJMUDqI+IMZCB6U/iUgSkvwj
fQ5H/Q6CvZSWBEc+QIZES/YSjv5Ixk7zv/rkwTnwODD5Oynm4JBUOISvC8pttxa3Qg+xl7vHrKWA
dXyyedeawu5ezydvXhniLzZb9emMZInuwRgIQQtuivckBRegBjF4NKaPs8c99k/KeNgChyDkLL5K
6BLAVYug3SRpCTXdRg6KZR8c1EuROBJrKs76m1eDInWVYnOOLWX7WGAlXv2ZkURdCpFQwltBHEJ3
ZOioWwEzD+aQLDIvBwZ8pNa1rMIa5JGx0pEo53E7OGNcEwgMdkyMVg/hVnCYAuB74bEMQmCNHRU1
HwPRihznNogbzXpimQoFAYr5PxBSLaB3X5jq8nlLbbaFhlGAfGAwWZUr/Hfr6H06pxx9Pg0Oj/Ok
X4Mj/BY2EGg2JasH9pmotqBwBR4+6eIMUH9AeYzfEsxIrsex0FEG6lBDd6oGLJ3F1QO9xOkj9OO2
hFzjhR9DN0jB3cY20m+tIK3Htu6DyPSv7UN+Ayl/bwVyEz34nRfWWUWx+6xAxeQ6NlreLlhEGfFX
8f5DVzMJ/60p5iEmCxQ8fRZtoi0kbVO6MU1x5Snehpzi+b1wkPdcCQmQa+ECQpkMr0v6F4NBiS0Z
n19nPDpijKgBeQUf28KyOb5tSjbgbaKNMt2ucC0C9jKlxbJd28zXncPAOYwRExE9Un31oinHxdE+
Uyku9YMCtkeJ770MEkhywnCe5yZgBW8nxSh3BL2YhplKaKR8yTC4RL9kAvzzBIIAp/M7jbBg3kUS
FvuDcbZD6A24utfI+L67ODsrMUAMx3Dn7DNNEuE+FzrEn4NZdOP4cgW/90iS1LJFZ6Rb0RMwx3vR
U/JokomCoHxlPBbPl0yHEcLkWxanekCTOgM42NodmdMJxOjmOKBsdny187HA1j5Phze3IqbFxxP3
sogO8VV0uDi3r+uSaA2YO3OGcFTbLX3evN6ok57+ULQfizBfmV6Ui3b6/SHR9tkrSvLqDm4mf/Qm
kzFVIpNRiQ4/NgK6TAh/LBfl/KIRwuapX4c3n4kyOyN9CgRl+XLPuQcFGleHll5+tPRQWmYJmoMt
DmnMyF1CVlT2Eka5HizTpEltiQJjHHCmgb/bLEm+sJgKC+bmA0t4LE547PLYFF1oAa0PX6VY3Unx
xJyTVY4Sau2ttoRSfuAcTOUGX57CFB6TNG34iTN6EgdIWRyYjAbclLfxOIz6DyR6dBS2gtOjBLYE
aCNhSw5K1xP4UGBVwm09gRsM40WnwGt0vy0eCvrBZ5hVEhktVscRdNCDGWZ29VA3nun88EORMjDK
5OUlHfYGsi2OisYRfOIaKwFAGEfjPJZ1rDPjhgAzZIwn0IdfF6/c7VXAcCLeW0ixpDiW/Zs8ERVJ
lmr3kKUO/VvhgNCpj7CesA1hTgQwpioMqmsk2Zzx3oIWVccBuB+OgKNPLKJmq8bWnrlXVOWLIAgr
Mo2OIBUSJjRzn01lDpNArxJ4YsCM6hB1dHV+ZsYExsUbSMfptkdM4SYJw96QvJijOa+C+23EJzzn
8bsQS7P0oezT/pQ3pokgcV9QxTVWS4NhWdIoAIQxvVxn9+ObO3BcVD5RVX5o6kN9uIFZ6K4SpHOE
ifcSSqQ5REZjnAGWtcUxRmVd5K3QbJZnqqkb0Nw9R/25TwWPQ7Kt5D6VOQ5loATO6+OvQiax8tk4
14zHA4693aeb/hmrpJnxsasgWmW8dJg8PwrgGsavz3qZjGal3B/RzlcvNMo0uD8cW/oZLjH2WWzz
n+0/K4blzlEuK0coH5MrDcolLgKT1a3sgRqkejuEhcwV7322gYJ7ni3grPc611A19jnrQh25x1kX
puH+Zl24Y/c26+Icv695jETH7Wkeg3Tk9uJxQrUE1nQfsy5egz3McigH377OrhHSnAX+THicUImr
RJ6XdmYwEbMJfDPmulhWxlxzAXfGsE/elnTm8BXIrOtGEPSZTcUtNZ8dwBEfYvhk1oHaQx3MuZDt
iHnHeJ2TdM3Ark3xx/ba0OBdgx22CNdi2xk8661cwwcPgDbPg8oxxcoHnk3HwQNt3LPjEutZnRrM
6xIS+RiS1512L4TxhrmqShVDEaP/jr3gVOkOV7UnK+juUvC9neZPXkYlBeRxYROhHAzyMEcnxbQn
DMyF4mvXMP5dLVOnJPkGMGOaKWgYs/qtwkJhDREsbQb+MXoETHPap6zyh0fgOylSPNtAvcsoQYG0
17MK7M40lRNzyDaTJGlDuOmC8nxnMQTQkKhHmDTiGU1QY/4J/xnOYvIHNx6gIUil12Do9DEZZneR
ws+GNs+WAEDVH7fCArkI84ajkwrS9vlbcSmwR6lgCLhW7B1DA8Cv5rID9HgTGfUEQPil/1tg+ljm
6Vf/JH8LwOUfEJX8gd/uMFSB3hWC7z0Qj5JATDYVmiTFRdeOpDokL7iKjHMUIB2gN+1heEcgmxoF
Xrm2fALjNDmaWQcvbHYLMSKAfsrA8+zUH6mfQlF0d02aqUWfSb0yrs1NnoOsnRTTH0VRksU0Do3T
pwnFkyvhEAYwh7kjjOuAGIa0CZ02aGVz2r25VxOxaLxuq9ACDol8zC3C7vkY/ICA5pXDqCN+C27I
PPCtGLiT9ImJTAVigq0beJTp0WxIl0KuAqL8TqVAlx6HFudW8C/M3NLjHoA3hspD8fJpYtNuyewp
CLNDKZZgHimR1L949rDofYpAYxpprLuV7yXjjRcx1gk0WSNxKOzBWlAIjLbQlUG1U8YAzaoeWar6
kjz/TLUyS1thmlGa2qdTMVmSJAnRFRbZ3Nq+bUNzgVoAJ4bXOpDEYgSyeIyQVT4K5blYZjByrJrV
EO1bQHV5bF0K03k5MnxIBeLgVuhd7W73vHal3pwdbMmUtrHRrzgvPNRyZ3Z0yP3XKCV/ZuBS50GU
mzKcfeQSDqmWLApgNjGI0k3wejW9FkuZwox4XkpPMjkjEe0RGCro+rEAwwQXPC8jsjM0DNCg+0xp
k1ZRGUM2NakaXPjsV5UTRXhF64TG+UT6PsUEuTeL/Z5OF6jLTDlFjaU8uYll3yyeAZ9527/AHSkT
d2CogftdFnrgZMmFbJ5UA44hCn/CDUt4z3UDpRzPUas9kbIgFoJfMabqSklWCotsusu0zVSN6/ge
iAxtJPC2SJ7yrXoDdifQ77pf33KYySITsYkIptD86xq+qzOpBKy+NXn+dq/1g7ditxG4TnDRyijQ
6dbiedXeKsVNwUlKuB9ypmEVTISU89DtQHVMSXxHlEmiRV6/0Mjsiw82aMVZ2nWx1jou439vMHSg
m3HmVFxxj1SVxfV6d5IJyTQuGOTeIMBetVxX5zcAVy8RpXhkdEhebtiSuSi/mNGipjCzV7vaYkBU
CBRtnxkSTiA6udueqeWvtwGbv2wuFjDVesNj5vu8NL5mUumQeOIJnhe39DlHDoElza3leVANvTfO
otx0uk9g/Wjxo0wrFtOxEOvg+xsxgqXMbHe6cau4WpuJZxMgbTECYfYGfm3W3USJ7f83Z6TKV92N
+qCQy4REjybbYCeGOvWWBIl0TapGPqtSGCNCx+LE0Z8f5POkqi5OXnt9wBUmhzgNfnWB1mexW4Dq
Z7aWdhtYh/XX5bHZkmpXlWFRC7UaDhZ3v8y0OkeCCANL6ORRRscz2pjwWCzXonTxvFYd3MZdsRi/
kaAOns1Eo08k2fdstevSXHx4X1bgqZZA+2ydONAGxf2SUaddrroYhm53jkH2ZqdrTSAAXEM/dpz6
bNnxhL7cwz8cb8E6So+Y+dgCFj6E54chXMDIhWFQpzZ3VyjPiAF8iHfss28k8/k3wr0IYFV1fTU4
xu8dAR38tQkId/OCvK3U9AhfB58Yew4FhMkwmx1x9y2NXQ4LC3BQjOOTzf6BJa980R9nXG3d9KPc
O9xb2pUNkhCNW1r5YeXJIyMNB9FP58U3+UWPdoOp7HT/7lnsQv5OKkF6CUsdF6iOQhksYVKNWdRu
dQqaYZj9wHxzrqSExEdfyvu3YLy0HkbHFxIeki1FOveFdEf0okaNjwZIptlKoS58QY3QCYdrqCiv
k4lb35jLw6PVVpGlIHq85w+Yw0Nj3JTBhTnsyGlJIuEPjeDW1VJydXJziyIucF8LaZboSrLB9op3
lIO7OuOf7UE2c7LX87bQDOekOWFnt7jLz0kV5anIokUz8pWawi3z7hwipbm95mytpI7PCoYTx5uZ
9rgpqupn1ltqbrS7Eu+LDATtM/Vf3KYKBXKAPEQqywdw4rF3TdltQe86wlJJCUlTPObrG+EWfw9B
uM/IXHCwSd+Ee3bnjcb2BXP4LSzGJYVeTwODKIsCs5swIpnqy23o7gBQIAVu9Ys2YcKobe2pQkqy
g9FGz5lKtlzS+HIVGOcqwbIkOLENDrWltjfS9cmSzGkbwPviNsSuCl9eZ3LmMDUGTjY9z8SauDIz
N/vgjdJZLkrynV4ZMOFvro31NMk9HbGOICcu7GC67xZHt4L/XzEFc4J81oqkXiflrseAWmXtWyov
T+jYZrTOVV6huKh/pV9tTqr6vk1KeFMDOkSVC/YXHc0cdF3CUOGR8iQpKXLbkHqq5Rc1pmFYF8/8
TssgpGE2REKxLeksFNtWI+BHXl9ymsodhUTldJVSLORB5q5z0/pAeKZBm7UbePeBygE3x+CkzkjS
Q8IeUF27+Ux4Tlf+MyMc84AsgOMJ+m1unNi/YUrjhcI3lDw2uuzl/KJoPwD6CsUFRdpbRYUlpM86
u1tP+3wVVo6PY0zGyjGKtlA6b6qjF9CvVhd//MzmiwQvEgmQzW0PHe6guB5SPcBa6cnGnyVJFyxS
O6nYV9CN4tjtAFIRYKUO6RNN+pe4lf6ABTobXb7QKS7JL2WWvnZmpyrJB1lzEwq1aFMCC9L9/eWp
T7I5lkC7hDDlIZuB4f9GzcGnge4mWBpwdfUC1q0mC5ElcR9zEBeOLVosxIkjK7cih2UqIjJ+/QET
sMxkC/NDbei6YAkmTubnltvib6MQVFnL2LaVbKV400httFHeFHSrMQYQd0XSFhfGu6FFSvuZdB2o
67Ng6lJb6A03Zt6HRw/wThRUjFdTOLq/nnm+15Gtr1Mw2s2TfIbkcVMBS2TOF+CVMX3iAo+zxV8y
Fj0mqxuh1pXLc6a6CrND2mJDZPrnNLPxSp63vrkncZKleMdF3jnyArrQRzjms+W5GA1NtZhVYSaC
2FfmEvcnw6DozUar9gvlZPgHB6jO995GKBg8WWQr2JvEW9eKd+7n0EgcmxJ3S/FEezCQxF6pM5Mo
FZQuHri64vFohpFoAJAJfDZA02cWUa8AkqYJHq1G6mb9iT77V1URyHRB9GeiRnphThO5lc86Hnaj
Rs8oaLddXF0B0iCEV+qK6iB051RvgjczemNSIPhulmaJc/FHd7gIV54mVN9SGiu8iSkhqx7JFFUY
29NIX9IFeWLOlwXVRM6rkK5skZcawEeC2lnZXaYWr/VPu1GULVG5VL0WwfGv5ANFbaaSQfQq1bby
GwDXGpU2t959FkoHuGobV76kqR1NazvGA7wVj1DrIkyT7EEHxbJHOfGxNjAGPLhAuRvGjMjXSrbO
KyEumLXjpDxovWbmVJ7nxT5TuBELWq373drvjWmMJQvQ2/5sy3JDGGxKTdvnj+mTbyVx0sd/7sc3
u+HiBy9FznGARcncyqO9clFVzLzPZmZJUO8RLytm7k7/fnr90RPNiUfxaSRi6oOSubTYC6WxrVDh
Wh/dgZ7xDXlqmg+KmDDsg47rkS4HEWde2tCXyvHo053bfkolLVs7xJO109Sxjku1DUihRSSSwRGc
VfpOunoQRMahpttIt6dlMqbg0F1i/l2GSo4QjSb5pRDy9zBkfwtDthuG7K9hyPbCkP3ik+yVikhK
fVK0p9Gm5ME/UVxSC0L4lj4njNNghM/8U8ZzN5eSksdgTJ8Ho3xxHOUqf2yO7ZQshHoJ6cXrCSGX
IaWIJzeB+pfjdQEh74KYW6/Xt6UIk8/rIs8bllzlyLdgeyI21e62d9j93ERqA9vLldOJj8MMlQbf
ISjnPAuR+KY8JC/wPPQh74QZD0PY6mLgtO57TPMFULKlHIBlq4svRAZTRxjalu+Jls6+pC7fYWhv
842rKDeUz52mjkdLEA4Fq1oQSa1IsUVT4eAsjj2YFUZhYWjnfNseHNKhGdqOKxHHeJ9g9K9e8Jiy
7vI4NykLpcIYLFNlGV1+XOmXyWuQ0BzLIejJWyZAdvgXXCPLyZ+6ybHDzEk12U4Ysmf+yOZLhf7V
sEu4E4pwMFWchyJ8EYrw98cSduiF67RPXD2gPA6Q3ntpT5bANErSMcU9V7c0piLmig/AcWouGr9h
MxoVp127g7g5MSzGA304w6yfQz7t3F8NSpEaf7vepbfxi8F2LFdRwfGJG+5thgcPSnA9YE6yhzWc
J4zK1uT/BfuxlBqdCihZs67bgLtC7jF4rO720kQKSDt0gO6DkCEWYKaLGlHIFhNOfB88BrArRMdb
o2cmicVWqc/LsajzPk46al0gW8JzUfKCyUUcpSRierXBCgi1OQT5bcDM7a9sPhb622CvgWHwFgle
I2HrZTyBO5q73dznlx9zwdUeU6bkwrfiCPCzhMghAcf3EhB+DF5WKhq3YYjdRFPJTWGUCrg9t9tY
PGfohrDKZKVPNJEmkSZPCdxJofOAW+W2zYmKG3NxTS9hWHd1mSYBxh7c+e/O8cYoULNkThkhJby5
yZYIon/JSNzsaFjhKGROv2is2kyJrFFT7Q1fbrKwxBRcoPZ0jQowqZhTvDcTcyr+190VdSeOK+n3
/Rn3D2SS9Myd+7LnkNBMs5tAbiDT58zLHMcWoG0jcS07hPn1q5JkAwlg2VYJNC8znQT0VX0qlUpS
qXQnm7Lpn4MyXdW13pdx1GQRJXzdDaOOsu/k9RJZOyqWW+JOw9SaW/SDlK7F3O657SO4BdO2uuIB
F3aUTzQXm+6LzDIt/4S0tpbSHz+q88nyPm+3K5dfjrmMEU9IL0mIuXGSPBY6lFDYlgULj0p79DT8
PQdck85hiflLJ8xeLqOR1yIndmC/dgIb0IyoT5uXscsvIfEJmablB6vXCdTZNhKZ2lb2Pu9Etbph
0c+i+U5l0nZ7L8cGQpGm3yKWWD5S+UGUY8X0OENpV99Aqz7bst1aukks48394OuXn5xFK71Xm8XJ
nhBXR1uSa8Kv7yvO7PyzZaNqcYXQ7Ep+LkrVlpAzCpLEXUsIZCYJCpmyWQQy7wm1Ha72rbkn1TSM
QWzZNAa5+izVbWsI5OqGUcg1TaOQW9Xcd9Rin0IxIqsthybNue+wsmWMHqvaRugyk6di+QCLTYty
Oe+s+1Vb7jtLNYvRU7phhG6CcyfrRJxmDVq/UWnb7JDltzcO27POOWvW4AP9QfQxo/OmMSxgVrU+
le2ceHX90/6aTetm4UatK4A0b9T9MN5vH2M8f0BA6FZ1gEOcNuaeaN0uBsGmZQRinzKSqAfU3DeI
Ie4zidLvPEuTr+8RPIumPdMkJ6uXFfy3z9cMHExZo+ZMsM9wO9qdN/4I/wx34ffRnSEtIwo6uG7P
/WirmsYYcNvGMYzYstqSdVsYQqoiC1GcO27OvR2ULWOYQdU2AsFT7jRSLZvDEdVpcFk2113U2s1R
SICQLQ14toz2k6P+6egkarnk7Ek95WTlgw8IdPQKkxBQBzzl8L9/F9wu/rEHQGhSP6jzwNcku5e/
vV9EMHrsZpPWKPalGBpjvKxWHjSpUBxoUjcidsvKu7h+euqZzB0o9TaAfi+gT95oTE5kqnxamR2X
2U7llK7UHd2D+n5xczAF/WBzc++IMKezzyvrE84RqqqXU84fuJWLbwYwkv99SgvhGKi20+9heGQI
Z5BjRiYLbhNh7MlwzAPkfPUYsULGLhuHTcILM9yqYMLnFi2oXUCh52kkfiAkd0hJGXztkeQLblVi
6rNA1iYipVNu5XP+mrsjVAJ1cCBxy7LW5mG5TlXQI5kaJnYRWrPm+RvJojkxpZEhc23M4Puq/leU
Uajde8ezxNI3Ocb+Fgl/4OoxaiH/IaAdr3p/gD6T2rrm23n01th4ikP2lxzr8HaFjKnUd9AUzeVH
tw/+OIaz8HpaVV3SE2IreIrsw1R57WauhIrZL6uUR7Z+/JRoV0fn40GRphoGE8U884QPBOp4w5PB
x2bLnxzdTbYA20PuKecNFRQ9L3qPJQb8kbJzwBqdH6N3j5TvqLpDv18ZdsB2ZfDRC9MMsj31VwaU
QSeof+51jG/0Xpq6Ra6feSYcFrM8NTPep6D71uErRlOVGwVZPJDdK2kecfMkrJW6R0U9WT+7rNBd
vamgWhgyiP7xYc0FQ2dwFh2qnjF9jbLq0tPWMh7UBZdBlBC0Ptavbw3ZHZlTZqdwA4FPUt5bRz8I
a/BurUNsGTHGpBTgibJ4gYNv0/98RRLjGjC21ch6D8JSz09CnczQxkTY++RQmKsGjkHgFTl3Stj0
+oIkxaclw09OutyU7YODFZpbKrInzpVFu6qcoPIa6ragQxjDZy/+TwHPQ6pBlqa2yZm2KGqJLCe4
fDNZ0zxewL76Z2T37Ol68EMmaAIXG9a4CIMIFrk4ONoOMDXZRUDRZMS3FgwvmEHzACQQMSbraKUw
+gWc4KqZKOk4Vhs4nIlEII9RvJDT1X5Uce20nPVIjqWeKmGj1BdK/+EM3kSw9t5HRT5RfnZCck2p
HgbmaTT5W6EPmPSvEQXYGqoChTcgjMdkiZEG/tibR5Th8rDz/oSxtUo0I4i+4LbzOUSBdqaNrRzw
Ftxa9JW/gut9LeaSbkLITpkUcUyEmBXpDjNKMH9ybRkR32maqouD6kBLB6r98gmR6YLAwGrjLlrK
A3ft84ySBHB/hzcPEWGBfDU61JtnfqjfOipF/5hhKzniuvvUl8y4U++Ksjfr1zNb23/ENOCfcMQp
+shDvkSD4Op7RHM936kHvwEaLpuLp4zP5ZQjEOXQOy7iT9ilVMqPGVFZf+OZ+ZNP8OmaK3DhA10Z
s550wcYM4BNRubV3Re7D6EoGVF0h/x1QzoQmmgTv/sAFqvcs0vTesmhfZwxdwwZUM1HzkL2SfE0I
ZnTxIUDHt6Hf5MxQ4dyRGc/INqwutygFauSgyluA5cBAKiHTzTCxz8Jygw2IuljvttNheFN14qsq
elimMTgQR4KWVuDBk9dBS1p6jMPToh/YwRyJlFGxkAGjvrqgHiZXolWiIoLvry2rESJ5UJEjeqC4
jy8n/O0vBlEqziaIP5P8COy21+tX9vA6WyEZlqq+0QQlX+8OXoO2UuewMEfrmoMHHa8ZLNb194R7
lAaH/yfatekHddmlyGZRTBDqXemDC9O+fuNV9DIoThj/IImukWqZAHlA1GO18iJG4QVdeMjXIKsN
//Ih3ckiykgCh2XKfjuhN6RYF9nCqCyWq4km5aa0owGSLuVVjs2kuY57kl4dxxyvZGP0L+ICoZ5M
6LT74nPa0q/OtgG1xcrlrkSxjUg+SnX60LYwD3DD2Zt4WamSxLMcB0h5dwAzZ8RyGTFmBB9LBjCD
NJqr2RSJQvWeMqTDjZmlB+mAMYL6rTmZZ1E6kcZ+7RnvBt8M73ie8+UznS+QTHFSvD7LqMO6NGsX
iBtkFdTcAmklcWGZBNAIS/Z+752KXkrnTE9Uoi9DtHEcp0VCvOBNoplcJqoWEhwyoUyljFcmMRWC
Z0AmGL4vLK2ZT0STdKUSuX1hjjgSnHnM+xF22eMO7dfP+Mro1f0hFTOqLw8TeMMi31Q1rsVjRJm+
DKInH5XWJNzfULGsiN9VbFRu1J08gXDx7yQ/B/x7N/GdcqQy4MKzn2Nio3LTzX7Oxo0Du1Gl/Emi
wqYgPI6NwEh8XKSV2AjsiI8gPIqNwEh8XPQsZCN4B16Uk0rDciWWMuOxcpEOxVJmd6wE4VYsZcZj
JQRbQfArul2GF6Ygu90G8uOydJH200But+wE4XMayI3LTii2g+B/4HpCPoXnzfLpmkN9kTA2ZhrI
jcvORQfFDeR3y1IQ/qeB3LjsXKT/aSB3B3bMwbLxcuPZDE41gvBAjSTHZugiLaiR5K4ZcuuBkP10
Iw2wmQrHlvD8kbqluea6WRV7ZYSF5JYaKeCJr0s2rEYKIPEVRNDURgFPfAVnXwj+yxROWUHNZo08
oa+QFSeC2lZqroYXzi7SwpqLj8JVEN6rufheuArMrrz6LeM5A0sccqDPedgMzBSt9fHDZuBO0Fqf
87B50XutDvTqwKq5mRGEb6yR1T0LF+nTamTtzkIQvqhGVvcsXLItYOQ/EvXYHxQ8MXcRwsiCtBYb
lZvLzIi0FtspN2FkR1qLjcpNIHaD529UsZCUqmgoJIdjIzcuO5dsOjZyu2UnJKdjIzcuO6HYDq7f
eYzEj9B8zimZ8Vi5dHs5JbM7Vi4jU6A5M7g+5hBCCPaC4FsUseaKrnraSl/aDeciSBsFPPF1kSbV
RgEkvoIIgNoo4Imv4OwLI6cpzghhITuwVhr4Yuwy007aaIDFWBiJTW008MVYeDbmIw6DojDhBmF1
0vtgKozpsU56DKbCDLzqpPfBVFg25SXeCspRNRffC1eBTIGIvuo4WKABFqK3sgcLzK48xFVQ9i7d
hB1dWergj7WLzl1rqQsee0FGX5Y6+GMtiEjMUgeXc0GIDq6tEh55C2MmxfdtdZBhRmv43q0pZJD2
5mlfbMTzRSi5Vy3k98NWMDsZNfLjsBXsDlmN/H7YCs22fO2TheS42ijgia9wdjXwfNcpuHB3zPC8
VxO44OzLQ9w14Jn61Xg2G2d0TlmQ0Ze1Fj6ZC2K2tNYCk7kgozJrLXwyF6bNYdRm0EVr4MVJ2ZR+
TunrcpVvwqjE0FR6DKbCqAvQVHrHTI1CN6uRX8sahW5cIzz7uk2qcgtBmJOFvG7YCMJYLOTtwMYL
k5NnTpLbRDcWhIHYCt2BlyfZwErGFPSNhGUuTQR3zM8dkYvL5F5+K4uC5cpGia6R9y4GXEGHZ20D
KizQUodOrGVz8kTfSVpd12cquzqlK4j8A6GtnRIdeOsxuoxy+TvzfvL1eGcdHoSrb6WBQ8Z+wmMM
OY+plSYumKseCgrX2Bqp0L2i7+6fNK6Y8qcok6uDkOpst1ADlbuQaki3UAOFu+CK1XRTBZ3DwG3Q
Tx0XEw4lIVUqqZMZj5VLrjxRJ7M7VkKqhlQnMx4rIdgK7sslBuyF8ZCcTBsFPPF16S9LWCuAxFcw
JZTaKOGJs+BsDM+H9VjywV/26WxGYGGQbkLyZa0U8czfJdtdK0WQ+QtpddNKEc/8BWt/eP5PXRQZ
z8xPITk8O8mxGbpkk7KT3DVDITktO8mxGQrHhhD80JSvlryCGwq1HUaSKTeZh0G4pLZKeOTtIo2s
rRKIvAXhvtoq4ZG3IO0NPc4qN/vDjbcsNfDFWABzp6UGWIwFGI9ZauCLsfBsDMGP9TkrM9B0ktWI
ELlIHfDsTn5mnvGCJfptqSCcWnd1zsLlRZd26q6WF06DcIjd1TkLlxfpKrur0yVuXvOPKOKZJMVu
PsiaBhIKdlXmDDxe5jqkozIeeAxjHdxRmTPwGLQ9njWuLJPl/mbxZZ1aZ+U28Pm8Ti2v3F5G5orz
WL5OvbNy/DexXyS/+8HF35GUr4NdzXdR5gw8XqxldlHGA4/BrN67KHMGHoO2Rz/+cTj7hCuCulvh
SKfzsRqKkbbRyR+robrQNjqdj9XzbNXjM+vkrtEe+vcFYZ/xoZg1jdJ0E9j1NZeqnZ3jC73g5FI1
7xwHcrXOpWpn5/hvZMcI/viRMrosluo3kERA/wrjOKqB3LjsXKR5NZDbLTtBOLgGcuOyE4rtdPQ7
j1G+eMlpqsUyyv7sRNk3ktHZBlwn5D79TgV9pSnN5W8Eje/l54QVD/sSXjXDGvBsp9yZa7ynjP8f
tMzZeCZhVoQlNC7SKHtKI+Yc7SuLUy5kt5v0WKie9SJZvOdZBoW0GIUZ6Q5mKYGGrWqqz34ncvaL
iXANX2+vavBPM0K+cZGrhLsFz/JUdm5yU9nvTeNF3c3xATuRWqdEDzErvU6LeHUU6LFIc3oKR8nZ
GKsTp7cdOL32w+ltV06vm2O14PSeL5dyhLC5OjySa33KCl7AcX4WrdtvR9x++UcX5eXXa5Svkbu1
iZEcjteEbv7agoDrBlNPfzjp3T187f95jAXG80bW9lFaN2rftO/3m3916nf59UYq33RXubOldzN0
W327GvZ9xPqygbuUxz8E/EsOnXNNTDbO7bC8yB71BGgLyr9n8s96VdDVyE5NWk40PyCrA7V7s5xk
KupNSQflb/6BG5wclbjDpLqSYWmur+lHyatcAHxf0JQM2VtnNrBNwUb4tsT0XmXIMsjkn2H7ygEb
193ijOvaOOOoxF3nHV3e1FQdrmqd3kdpCoRf8GixVaC1jSRJ1VqHQOTXboHIr7WGsSdma0+xILCJ
8sqjLDGFuyd5lL0RmH06HAf+3M1L/FzvJWoEb0vIlMY/Kl6V29lucpOkfcTy87+6RSz1kWmd5Feo
caIVesfRCEutKV1KtgYFi/fG5wVGkHWSI8eSVvAtOqTPYaj9oCsdsEDTxhMnprZ4h7mj22z6U+1s
aiN864l1w+JFxhn9azsbgUuSQ2NJxCVbap3k2PtINvBtXEfZ2IAyKhYk+fpGds8uLmzr7qi42I7i
JG6bgRBnPE0ndLmyiqzPuoG1J2o3hZU8sh3rtfb5Ff8ocrdN3Au4G3JUstZdC37oKZqTSRylxMG6
4Lalqrf1bvSYqB1Wip33Tm7xt2M775aYmf9+EbH5JW+MfJCzdQBH3misjWQQxTnP1D/F75SsVzyT
00GCedXLCRP2KrSOHXK+pHFXv/al2ybAl3/Wzt17YrpQFkJik8T1skpkYNxa++tOY//6tonuB6Ru
S4Z+NLhMMrnksP2jpMhx4kG4zgRDz5kr3Jeap3BCYK+Uf0Zuwf5jxDam7NJFr0n35UTm+QBYu3hJ
6/7AIfBkOXnvMnd02wv58sUidDogbgfln8mKwE6KC/VvOoUQN9cWyh8Ut636gyxS+2pRqldWHfq9
WwbDl9qQ+bOorZVWGwa9NH0mLCFZpxP922tsj3JIWtw98aOIbWfNXpKQZLtp2S0+uUafMw+J62PG
PIrbem9H1S1Uf7vk1KRPorrMH7hPScSK1aUa3EmRr/xnLOxjtzE8HY+MeC4dCI9hphrwTK9rx0UO
h96PZMmzzQPdXaPeuDRLR8cLDTW5wj04byVOww5Utw/2rg78q3FmybHhItQw75M0j0a83OdoOmS2
Al7VosB37op8xPXOEzJaGZZpb4YH9sx5DskiJpNTDV29C44ECBMSL3LANe7ZOVBGVqk0bfi8OoLX
HKq4wzlWLB1cBsro4Gb7LkwZVTpHXC8ISdXh1LeIJSmS3cs+So0Ou+89t3N/tXCMs0FUTt3gEJ7J
HMqGwF0gBO2OwIFpjmczQXIEzBVl8eI3+Tvp+zCaP3Di4RyEsgV9pYY3aePVMYvebRRqtD2Bon9w
vsQZcFYyGBLYvPorgiQJTSDLaqQdKEnG7BuVITfDcmtrKueGfcDyevEJyM5j06hZQspoAW22XUnP
HWVkygFwIOMEAdmelUWr+2Q7CW+ok+JwznhG8DBGnFUBcwKAaEhqKeR1jn+kQnWVxEXGMHc64drj
cbTOQ0AjqvsIJLnbqG0yhha+bG1Q9pQONis3Vj8XI0JvLxNjTmAq/O2tVimFN15AFu3r9SkASze4
A+VMnCvsO7LhLDELLiQgFTneFa+vSAGxGStkJr0nmpuRIRtLpPwyWoMZwtwR2i8AgOIJ3szZ+j1/
Izizg1wZL6IVqSb5F5ZTNe0jabTS58WTdbR6JjGhb0T0o6W0fbjLjaFfufCDdHWW32ewzP36nmeR
WTuhxPtPWy1RfFdN6y57acTLs333i1k5sWX0tYDIWX3z63KVb8wzW7gUnoQeIfff50jeAJ+MrDvr
S95zOHVT8ZjIAU1KQGc01rm/0k9POWa4Pft0MKPu3d1vRcPgWrYuA/lxCkrzIouJvu23d/7oHDVV
HA7kx6cSALYfEUAWkZhmEROwhpFzbHXxAwEq11rcR/GivHxvHpNCckCfAXdyYDyoV6F9jbJ0My5y
z6jv0kRZlI7ltD9k+t/nkUBt2NM5I4lffFwPLPTcP93Dx1rNHcKymGJwgPcOWRCiyZTIn8yKVRjo
idrdnWZ0Pgd3v8TBzlW1vKWMlPX88hQJ4cDvNjyDAvU42z+F+uIs0UvXP1JeXy54lmIAwcp41TJq
2JX1yhrQpC/5hYSrIt8oyaIsXmz8arp30oICLXT0Byugcmr1hQMnRyt1eGX0bueL2vH7TFapjD59
dedeR3o3pkEa5dIplusNRNg9PR+oyD/qXsVvrdcbnWTZCVpb7tlaw0u02MMA1mAmE4gvV4QJfbdP
djt9J8kTbLvLn1W7wH6fQpU6mCYjylA7oIFQlbmS5CLl60vzidilSyU96nbcX4aI5YXDyTbf40Ik
U2sbaW80ysk2l+FS+Tsg7YVIWFmfRlpE+bdIXIzHA3mGopcKvve3CxrIhrER9yETTL0Qg90XaSr2
JieBHH3tIe8EA7wo73OalRui9rDzGW2RQJwqEdAD6UPxlPFVNIdkN1MsNt1MuYfhXOUVnCUWNf1r
6B4mknqab2rCfgRkhZhqHryB3vSfee4Z8zYZZ3JkzbNotaCxf6Jvk51a0+eA31V/CJWizJLjjiyo
XHWiT04n6IBD3FKazXdvMuxI8MJWVbluRHw4FBhImsHhmx1W6eufMiJI9kbEbeIX+2zAVYKel9Dy
tOZ7ewH4w+AbVfn3UIWK61NO1Q6sxX2h+tkx3IN8keS+QV14Ofp8OL8D+pYBJv4mywFwNd+dBXnH
yZ0BvVoRqVSqpDyI8CcEbFR72lvbQ1Zr1PIthjN0PuSXmiPh3WWyfw5WKUFfTBxHBbeKiWy+VU5i
Q/aNzhf9p6GvLVy/0JPiNZffmRBYHTnAsTzLm/As10/cVGd4vzi7d6kumcC5ftrkZHtXpCOUPcvu
yHvgBDFaV4NagF83BxgYIKYaN54WGuBFHw/LWDjlcyonim4rJQtc827NO1VOY5zp9KcyKExgPTLi
f/TpbNYB1tK6/11EyZ5t3zh5YGmQ8iiHtuWcK9Vtlqmzlemo+c3SRkmIH1q05GYoGY1yvj/2vzjh
h0DoDZ7JXod9aY4d6qqQA6HhmEPD77gtq8mz8SLoAIptB3+8Inzt8HUxhWCu6/Yyop9KS2C/UXqy
Bpt77TJQtsXYIbeVp+mHKez6Vyeqig2LR2Td4t7fUQGPpm6qTSP++iqd3U5lWiw80OwpKoQuKCCK
JUHWDUrwluVfPfA5zegbjVI1w1FcqO1e9/eIlmujsgtVOWit93A2XZANfOaBy1GTTbn+lBxD8g80
6xeZH1L+XZCi0QWVpjgqfsqKVY4HMYmlHRVyLuBzki/kMhguM2rvk2+Gwtwn84ivNt6gFWME+NAe
RlEJtR2xVdeK54LBpt6FSVFugA4ZWDlBH0sPnK+QxxJcJcgJOpCaDbCnAvXWTO+3jBcrL9OAyomC
qQf8w04V+KRy0PDQiztHUR++/C/ZzOCtna3294VcFu1HLz85iV7GjKiFSglppeRJ+Y6NhTX3BLSQ
YbQfqLJITIlmH4+1QZNdVS3GfXSXRzDoMn9wZbftIuJ23QsTsDmRlN/FQ7ovXml8R/6i0uV8eGrF
CWK981KvhD1Lfo8su26d+C1TQnIJZcF4nsOx4p/Dpdlk78HDWxbqHhX1yh4U/Jrq0iEbpLDj6A35
heX6B8up6TRmfcf2SRrB8+By4Mj2J+ruYJd9sxN7wtNI/HjiIgdDTOBNJ30v1ErN42IeizfiBSVv
REyjTMbpQBAEiCO5KKOCWCeg1cC2o3c727vZcwMqq1u2KsW5Iro1t8dDchU+rWlMvrL/QKAtYAaT
gEhQEL6ZUF/fbQdt3WONyHuuvjCJmEqc+foeQc7cmD0TqSZwCa14AJ4of5Nu1P1d3+BGa9W/ZxFg
T3slhm8JvkXpzIfqgKdqzamKG/9DcwmpApbXSCDASag0SYmY0DlTt+FZXoKZvdxqorXcxO0Kr5by
b1HqA14/7AG1qd9gJlAV1XSxE2wsXbbV/KALuIDJgRfDsasT8MqsXaJbzH+q6ok+I9iPGG++OAss
RMTU2zVEagXPRUKJSrhlzUiTM5cDol41wpNBY6MEa3tAk1OuPg9pX6pUCaRbIgOV26pNirO2Btu5
mGWfT9Nete1heONEptagd9LaM5LgWOVHrKpShkG1v4XYGrOXJGpLNlE31BtdAm2NOSLrFxYrA/XR
hS2yrzqoBuGHH59iUPRIH2R82ScillNk1KQknzv0HotV9R4P2J+M1uayUkfwEdff0Ckx+UKVWlQm
jAq3N3fAbTDzurUqRXrqTtShpXFbvpvch28/TK1XpB3V8Aqkz7jiBcccEmCT6vQkGRRpqn+Hq2GL
fP12WL04LpYFpFgJVQHwmdiWpT6GVx8B91SMUW297h/3/OxmAyijS4jN/yAZ10lD1nfADkp3dRpG
xtUVChpIefrpQZ9eqopAWZ/dt8GoTh3REFTP2NdZbwPR9KC4FVGFDMsbZSY1QRmKKhMpRx4tu1Co
I2YXyMOo2YWToYPZm0WEQWwaUgDEweQA56CSpwncVyl3u3QhdP2Shjb5zprWzkURe4vETV/NtHcZ
TeakSwbwiQJe8CMEDw90RuJNLFXceeyHJH0yI5llod9jMl+1Qh5x5hPcGvZzfO0K2ilunYX1hOAx
7OEmL88PD1zif0jObf5037EXpCbyv+OMzimbFLFcph0vKrH/WOVREa/qcKCcbEZPHLtLrNtOWPcZ
F8JOKWdAakmhsMwB8vmQB9oykJCfSaLKPeHqV6KcX8/z9bFcWmUF7FypHfJHki944gfrG7i8DMsV
7DCqgeTsnZNU33byhQnvyq2lK1rJ2I7U6XvTAHvPt+/8IP77v/4fUEsDBAoAAAAAAOUxCUEAAAAA
AAAAAAAAAAAdABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvY3NzMy9VVAkAA21VI1AFViNQdXgL
AAEE6AMAAAToAwAAUEsDBAoAAAAAAOUxCUEAAAAAAAAAAAAAAAAlABwAdG1wL2xheW91dC10ZXN0
LXJlc3VsdHMvY3NzMy9maWx0ZXJzL1VUCQADbVUjUAVWI1B1eAsAAQToAwAABOgDAABQSwMECgAA
AAAA5TEJQQAAAAAAAAAAAAAAACwAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9jc3MzL2ZpbHRl
cnMvY3VzdG9tL1VUCQADbVUjUAVWI1B1eAsAAQToAwAABOgDAABQSwMEFAACAAgA5TEJQVeoFdyJ
AAAAkwAAAGIAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1
c3RvbS1maWx0ZXItY3NzLWtleXdvcmQtYXMtcGFyYW1ldGVyLW5hbWUtc3RkZXJyLnR4dFVUCQAD
bVUjUG1VI1B1eAsAAQToAwAABOgDAAAlx0ELgjAYgOF7v+I71kXmTJPdJFZ0aMYIOkTI3D51MGds
69C/T+jy8j5PSkldsX8LeqhJtS/qFSXjUraSjQ4j7fRsOoN6MRgyrbdlnhe7F9y4PLXy2ogjh0cj
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
A+pVI1AFViNQdXgLAAEE6AMAAAToAwAAUEsDBBQAAgAIACYyCUFdr6t/xgAAAOABAABKABwAdG1w
L2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVyLXByZWNpc2lvbi1m
b3JtYXQtZGlmZi50eHRVVAkAA+dVI1DoVSNQdXgLAAEE6AMAAAToAwAArc+/asMwEMfxXU9xu3pR
KS2dAg7BnRpqsF/gIp8Tg/wH3al13r6hJvUS2gxZNH1/n0OICE670QU6DUlRWRQjSwoqriFR56n/
JHFfvD8EJ0eqOeIY2bfSDj02Q+xIkaeRvXK90knBWGvvgZLXRGEmswzw5fHhGez5fYUsM1BsyhLm
bXGZvv0sV5H6A+/aHtbr68XTkrQCGhPf4NH0r3dObvF+v/oHuDQX0c5i8p5FmhTCqaAoXC8nja3y
soLtx654z6vcWPMNUEsDBBQAAgAIACcyCUFcawAzigAAAJMAAABSABwAdG1wL2xheW91dC10ZXN0
LXJlc3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1hcnJheS1sZW5ndGgtb3ZlcmZsb3ct
c3RkZXJyLnR4dFVUCQAD6lUjUOpVI1B1eAsAAQToAwAABOgDAAAlx0ELgjAYgOF7v+I71kXmNLLd
hlh0aMYIOkTI3D51MGds69C/T+jy8rxPSklF2L8FPVR5dSxpSQrCGilbyUaHkXZ6Np1BvRgMmdbb
fZ4XuxfcGnlq5ZWLuoEHl+Iizgx4SsH2n4RAwEYwNqreocngPq07qQjRjn6wWvkEbwzDEmblNa72
yqXv5gdQSwMEFAACAAgAJjIJQR8ZY3n7AQAADgwAAE4AHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0
cy9mYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItcHJlY2lzaW9uLWZvcm1hdC1leHBlY3RlZC50eHRV
VAkAA+dVI1DoVSNQdXgLAAEE6AMAAAToAwAAvZZRa+JAEMff+ykGn65QpC1F5MCDcEYNJCqa1nuT
NY5J7tZd2d3U+u1vktbzhMTL9jAvIZCZ+f/2v7szWeBq6INO2BoV7BRGqU6lgI1UW2bAoDbtm5uJ
AJ1FEWp9BweZwT7lHDQiMHqqFDXIDbSmznzegi1FsRgpciM5l3tcw+oArdCdh/B9Ekx9N3RbVDOk
0hpMQiqLnGFeIEyPBIN3gIgzrYGJNcRoykP2Uv2iekXB93qVoQpNpgTVuyQpVz8xyledrwdi3q4q
94W+vbiz0P2xnI+cvju7y6P9yWI58CdOeAup0IaJCMmcC3opuaAy/KRc4Pa956BJxZE3HDWplxvq
jZu1szG9wswrqQ1mzjBwx2Fjp7NM8Nrns0zzuie0ytYGd/G6p7TS0k/o1enKJlFynzd5QKWkouli
EpJ5ZTxdw44ptkWDStfsyEfSAvvswt0SgkDFDI0kfNtRk6cXGn6F6lfwxi+O7/WX7vg5aP8NfmGZ
xJjR9GMKaRAKna44HjF1WUJbMRFjkAr41oOH8125lMDeaiecZjhldOtLfDA9WUM9WVM93NtidR5t
seplnGN1bLG6tlRdO6heD6ytsjH3YwfvG6DqWFN1/oPK5mfQJHR5qcfQSypiwFdUB4gY5zVvMgmX
RjyeQmyW/q9yFGLrS0W9U8wf234DUEsDBBQAAgAIACUyCUFD7jgVqgAAAN8CAABRABwAdG1wL2xh
eW91dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtdmVydGV4LWF0dHJpYi16ZXJv
LWlzc3Vlcy1zdGRlcnIudHh0VVQJAAPlVSNQ5VUjUHV4CwABBOgDAAAE6AMAAM3RPQuDMBgE4L2/
4h3bRfKBGt2k2NKhWkKhg5QSk6gBjSVJh/77Cl271+W42x64hhDEUP5NSlKGGWUsS5MsLzmved6P
2pOHnNRDaTkr7SIptzHGdHeHS8kPNT8X1b6EW8GrU3XMoQjBmfYVNCAwHpTxoh21iuA6LHMQHrzp
bWeksAGe2nWzm4SVeulWjOG9aX6QMhQjzNZFwkmC6LpIhBGUrotEs/SPx30AUEsDBBQAAgAIACYy
CUFX/tIdzgAAAKgBAABBABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvcHJvZ3JhbS10ZXN0LXN0ZGVyci50eHRVVAkAA+dVI1DnVSNQdXgLAAEE6AMAAAToAwAAzc4x
b8IwFATgnV/xxnZBjkND8BZoiCKlAVmFDqiKHs8msWScynYr9d8TlbVDxy6nO+mG78Q5y5m4Z8qX
eZJnLMlYxkQp5U6K3urAO7qqTmkalfZzooenJEkf32Ffyu1OvhTtpoS3QrZ1WwkoYvTm/Bk1MDAB
lAl4tlrN4XWY5oABgundxRC6CB/aX0Z/RUd66g5t/J6dfifxZfq/SHy1yhd/IFUN/JxAVE1Xt8ei
qZ+7KQ8lCOjt2jh1BzYjYTSjE1C7L7RGAQ3okaL2sxtQSwMEFAACAAgAJTIJQaY8gvvbAAAAOAEA
AEUAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmRleC12YWxp
ZGF0aW9uLXN0ZGVyci50eHRVVAkAA+ZVI1DmVSNQdXgLAAEE6AMAAAToAwAAjY9NS8NAGITv/RVz
1EvJR4vr3oKNIRATWYoeSgnbzZt0IdmU3beK/96oePPgZZgZ5vDMIUkiEckfTZM7EYvNfZrGWyFz
pRolh5FC0pqpazsyc0d+bczNNo7T2yOec/XYqKesfsjxmqm6rAuJjNnb05UJEWxAZ4M+jdStsT8v
8awDgh1cb412jAv5fvaTdoYW7/TIH6vD30hiE/0DqajwPYIsqrasX7Kq3LXNAprty6aGxDDuvH7P
R5rIcZDQzDRdGDxDG0MhYL4y5h5eu4HwRp7tUsO6r+nvs9UnUEsDBBQAAgAIACYyCUEZS4sTtQcA
AMEbAABSABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVy
LXByZWNpc2lvbi1mb3JtYXQtcHJldHR5LWRpZmYuaHRtbFVUCQAD6FUjUOhVI1B1eAsAAQToAwAA
BOgDAADdWVtv2zYUfs+vEBJ0AYZKtmM7i+3Gw5YL9rBuBZL3gpIoiw0laiTl2N3233d4kyVZsr21
w4CtWG2Lt3P5zvcdqu9SmdHl2bsUoxg+hNxSvDybU5K/vPXmayKIxLH3+5kH/0m8kX6MI8aRJCyf
eznL8UIPhYzHmPshk5Jlc29UbLwYvuN4cfbnmdnObhIxyvjcuxiOZ3oseCQU35MkseMhil5WnJV5
7LupyY36Uz/InCAYJbF3EcexGUtYLv0EZYRu517GciYKFFkDM8RXBEwe4cwbmkcFA+e0HxxT8GiN
tUHpqGXpeDzu2F+gXPgCc5LUBgX5jPUZ9UN9ihM594bB1D2PiSgogk0kCin2I0ypGXglsUxhg+Hw
jbURxTHJV9VqY59Nj/rWzJA1meQpGCar6SlbY97yajqdLvoCjrEJRaDy8jOcJezihDIErnCySmUz
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
2wgXiiuUCeNS6VVZFqVuOjdiZfu6qp0daufn1k4l59HsCOscvhHodV5lm32aZ8uq2K7KdJcVG9DQ
dEtvHqn35jlqMCG4/hogDGCsdeMIwy3AcAZvLo2Du/Ohfd/QXj6pb0+34IBNDn+JnClOnRhzJE6M
EoyIEwUqQZ0ok4Q0MWYLIQR1ooolcaJCgdSJMaNDfAFQSwMEFAACAAgAJDIJQfiGqTiMAAAAAQEA
AEQAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2NhbnZhcy93ZWJnbC9lcnJvci1yZXBv
cnRpbmctc3RkZXJyLnR4dFVUCQAD5FUjUORVI1B1eAsAAQToAwAABOgDAACLNjIysDCwgpDGRuYW
hhbGBsamZobmVq5BQf5BVuk5qcVG8cm5KfEpqcn5KalFesnJGqaGhsaasQruPgpgRQpW7j7xnn5h
jj6eLvFAMtRVwUohPcc9tcQxuSSzLNWxpKQoM8lKITMvJbVCIb+0RCE/TaEoMS89lSsaq/1mpkYG
VLQ/NC8zLb8oF6sDAFBLAwQUAAIACAAmMglBOWnGugwCAAA9DAAATAAcAHRtcC9sYXlvdXQtdGVz
dC1yZXN1bHRzL2Zhc3QvY2FudmFzL3dlYmdsL3NoYWRlci1wcmVjaXNpb24tZm9ybWF0LWFjdHVh
bC50eHRVVAkAA+dVI1DoVSNQdXgLAAEE6AMAAAToAwAAvZZRa+JAEMff/RSDT1co0pYicuBBOKMG
EhWT1nuTNY5J7taN7G5q/fY3iRUrJF62h3mRgDPz/+1/d2d2gauRCypma5SwkxgmKkkFbFK5ZRo0
Kt1ptaYCVBaGqNQ9HNIM9gnnoBCB0a9MUEG6gfbM8v02bCmKRUiRm5TzdI9rWB2gHdh+AD+n3sy1
A7tNNQMqrUDHpLLIGfwCYXYiGB4BQs6UAibWEKEuD9mn8g/VKwoe61WGStSZFFTvmmS6+o1hvup8
PRDxTlW5b/Tfqz0P7F9Lf2wN7Pl9Hu1OF8uhO7WCO0iE0kyESOZc0UvIBZnhF+U8e+C8eE0qjp3R
uEm93FBn0qydjekVZt5IbTi3Rp49CRo7nWWCtz6fZZq3PaFVtja4i7c9pZWWfkGvTlfWsUz3eZMH
lDKVNF10TDJvjCdr2DHJtqhRqpod+URaYF9cuDtCECiZppGE7ztq8vRBw69Q/Q7O5NVyncHSnrx4
nc/gV5ZJjBlNPyaRBqFQyYrjCVOVJXQkExF6iYAffXi83JVrCey9dsJ5hlNGr77EB9OzMdSzMdXj
gylW98kUq17GJVbXFKtnStUzg+r3wdgqE3M/dvChAaquMVX3P6hMHoM6pstLPYY+EhEBvqE8QMg4
r3mTSbg04ukcYrL0f5WjEFNfKuqdYy4LHl/6m4zzw4xJRU3ybOvnV3yr9RdQSwMEFAACAAgAJDIJ
QaNC157+AAAA1QkAAFAAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2NhbnZhcy93ZWJn
bC9kcmF3LWVsZW1lbnRzLW91dC1vZi1ib3VuZHMtc3RkZXJyLnR4dFVUCQAD41UjUONVI1B1eAsA
AQToAwAABOgDAADN1Llqw0AQANA+XzFl0oS9r85gYQTCCiKkMUFIq5UQ6AirVfL7OUw6tyHTTDFM
8ZjrwhgxxF0jZ9pQw5SyihqXVVVZuWEKG6v93NVd8GsX4qP395JS/vAKpwJ+isCdijo/vxyK/FiX
T1l1eM7LMzgYpmNsPrIpzGFJm4PYLEOAdU+w9tCu+9Jt0K8R2r3vQ7y73MJoIqjFg7GUo8FQqfBg
uLAaD0ZbiQYjiCZoMFIYPGOShuBZYCW1+AtMk1KY3xKkFRrvw7b9wq7K9xDT+JWGcfkujWO7pwDk
NtJYKtA8Q2OlUfg7ZiXBjrSEa4MfqblFj6TcMCwHYqnV6h8wn1BLAwQUAAIACAAnMglBCn2lCDUB
AAChDAAASQAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvY2FudmFzL3dlYmdsL3R5cGUt
Y29udmVyc2lvbi10ZXN0LXN0ZGVyci50eHRVVAkAA+pVI1DqVSNQdXgLAAEE6AMAAAToAwAAzdXN
S8MwFADwu3/FO+pl5HP5uBWtZTA7KW4ehpQuzbpAl0qbif73TndVmCBrLiGBwPsl7z3emhAkkT6t
lAiJpcIcc8p1WhSLQjetHUhp9nVZW9PVtp8Yc80xpjcv8JgW94viIclvU3hOinyWZxqSEHq3OQQL
CNwAtRuqTWvrCTztjsddNcDgGr91pvIBXm2/7fp95Y097n3Vho+r9c8kIVlsJEmi+yXJzyFlc/i+
BDqbl7N8lcxnd+VxXaagoWkzGxIT3Js9KTU4X9t36A4Bui30lW/sL/EJxv8Zf+nd18P/AJCEichy
IqmSsZEYYdGROBqzcuV03MoViODIciIQFTw2EmMyNhLHKDoSpdGRuBixvwUSRIza3wqryCaTUFSS
2EjnjYHLkgSLjqTUmM2kpuJSw/ITUEsDBBQAAgAIACYyCUFlk5kfWwIAAN0MAABMABwAdG1wL2xh
eW91dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVyLXByZWNpc2lvbi1mb3Jt
YXQtd2RpZmYuaHRtbFVUCQAD6FUjUOhVI1B1eAsAAQToAwAABOgDAAC9V+9r4kAQ/e5fMXhwXKHE
thSRNgpyRisYFU3b+yZrMvlxXRPZ3dRKuf/9JgmS9k49k8N8CSE7897bt7szWd1H5nR0qbYcO5qD
HN5hyewXT0Rx6NzBF5exe/gFGnOcP4eYmwzpjSxZb2RQa4GdZ1wORiB95qAA+mAHMohCcCOxYgoU
SqXVapMQZGzbKOUlbKMYNgHnIBGB0VMEKCFyoT7tzud1WFEU85Ai3YjzaIMOLLdQt4y5Bd8n5nRk
WEadMC2ClqB8Ykk1zFMJ052CfibA5kxKYKEDHqr9IZtIvBBeCpjhHQwVqGIREt4xymj5E+1k1sl8
wOPaIbhvNPZkzCzjx2L+0O0Zs8skejR5XvRHk651AUEoFQttJHOO8AXkgoixJJ1p9IaPZpWMD8PB
Q5V8iaHDcbV2VsaXmnkmtv6sOzCNsVXZ7txHeO79uY/zvDv0kK0VruJ5d+lBS0vwnVKVlS+iTVLk
AYWIBHUX5RPNK+OBA2sm2AoVCnliRd4pTWV/OnAXJCFEwRS1JHxbU5GnF2p+KesdDMdP3dGwtzDG
j6b2UfiRaZLGmLofE0iNMJTBkuNOptyXoAkWemgGIXz11H0brj8vzLEc9lYkJ+/kWVLrdKJc3G0Z
dbdl5F1fldDXvCmh77Skv/Q1S+hrlZDXKqau3YYyzhWxO1/Zq2q0Nctoa/6HtiJ/jsqnk04FiV6C
0AN8RbEFm3F+4rEn4r0RN3lIkdn/C45CivpyAC+P2QHqck0lO/1Bb9OVo5MRZNcEN+Z8O2VCUoXN
bf54BaC7CKV3ajW9kVxDfgNQSwMEFAACAAgAJTIJQUm6UF6rAAAAlAIAAFQAHAB0bXAvbGF5b3V0
LXRlc3QtcmVzdWx0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmRleC12YWxpZGF0aW9uLWNvcGllcy1p
bmRpY2VzLXN0ZGVyci50eHRVVAkAA+ZVI1DmVSNQdXgLAAEE6AMAAAToAwAAzZG9CoMwFEb3PsUd
26VoYmrMJigiiBYpXaRIGm9F8KfEa/v6/Vv7AC7fcDjDga9izJGO+i1nvnSl53Mmpa/isixK1fY4
s9oMTd2gmRq0e2O2wnX57gJJBl8JVJLVaX4OszSqi2Nchqe0yEFB20dWP+MeBxxpVqCJcLgT0ATa
GJxnmBaC6QZWjy3CAy11bwzd+FFtd10IwdlUfyO5DA6rj/REIFYfKXy+prtfUEsDBBQAAgAIACUy
CUH+oNkEnwAAAEoBAABfABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvaW5kZXgtdmFsaWRhdGlvbi12ZXJpZmllcy10b28tbWFueS1pbmRpY2VzLXN0ZGVyci50eHRV
VAkAA+ZVI1DmVSNQdXgLAAEE6AMAAAToAwAAzY69CoMwGAD3PsU3tksxUUnIJigiiJZQukgJafwq
gpqSxPb1+7f2AbrccNxwHaURj8SXMWWc8IQTwhgRhZStFMOEnioz96pHY3t0e2O2KSHx7gxlDZ8I
RFmrqjlldZWr9lDI7Fi1DQgYptzpRzHhjEvwAnQION8CBAvaGPQe7BrAXsHpZUC4owvjS8O4vFM3
XtaAEG26n5OUJekfTT4BUEsDBBQAAgAIACQyCUHGm52HlwAAAAICAABEABwAdG1wL2xheW91dC10
ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2V0LWFjdGl2ZS10ZXN0LXN0ZGVyci50eHRV
VAkAA+RVI1DkVSNQdXgLAAEE6AMAAAToAwAAxY6xCsIwFAB3v+KNukjzQk3MVrCUQlEo1KVI0OS1
BNoGYhQ/X9HVRRBdbjq4axETmagXOQrJJGdrhmuu8rre1aof6IzajFZbMt5SWBozTxnjiwMUFTwl
UEWly+0+q8qNfrDJQUE/FBQzE92Vmsl1PowK3GTpBv4SwXcQjlNPs/btACYo/zogUOAXB7IYgzt9
0her9Df9O1BLAwQUAAIACAAkMglBiCrDlJUAAAAmAQAAUQAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1
bHRzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWJpbmQtYXR0cmliLWxvY2F0aW9uLXRlc3Qtc3RkZXJy
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
IBS2hVprh7vu9fE2dnf2grK6rlkyxiqbH4z17Z5vdmhX/qhgrhP1MzZgO7qV5d7vhZSHMQnQwlL7
Cc78mBbZ6tWZYHMpas/ES6SkD11yqQJZ32S8arW8TsZ0uD+8as5SX0NrV43aYfGnusZhugOGK4PG
p8Z0qHMyQcPPxuK2t+wXsOCArf2a0Thl29SVh84EBtedb/EVgv7FHlc18+nK4tErbgVm6UnDL87S
Wr70pGccxBJBrCSIlQaxMh9LdiuOYOkFJUiohIRKSSha7XMCyj19ZAB9fZQBffbTjKRz4lBDMJuv
ezY+mL2r0ggVO/m1NuJ8ehsTM2bv7Zue1kSX19SQe6UyYp15RRo7nifpWWB5ReNa0ByFhpGxrfAo
RDtRa/d6Xx06Padj0yycboV1mQsksJV1XT36qneTZJ/yTTtPN9CVqzQjvm2eA7hEgudN9ukhzlPX
XImxTOReoDaAj0ddDn7cvLWZgFVJwK5ZImPZ6GUx9S/ueNeg6VWhOXkQVa+9s5rxVWGLv6xx9re9
XHqKLPTEGMHCAP2onzAVpfItPJzhP4q+/FNz/gsunUp7Vier+qbP+1t18aRE9LcOky0XC4mK+ZBO
w5UD0r9Xj9dkjZgOtbpFPQuJqoopIFJJiRtEWbAdbkWlBkfFYAxU7KY/tPqUx9iHsD4fl6FLc6UT
Yu3eTsGM1TmhtbO6G8yCc5res+lw3aN0zum8oAQJlZBQKQmVEVDO4eE40IvqDlPixyV9HLpOiTdd
CH3KY/Czu/qnXu6iP36K7drb4irg5759ZP/Uq6lVhxHNTwjeSg96OU9uNrb11cucXSvOmCfxueMN
rGBgtTe4FP2gthT9ojLWozF7/JfxvFBctVYD118mj8TmiUBeaD3TQF4WyMvDePEukBeohzhQD3Gg
XOJQuewDeYdA3jGMJwL1JwL1JwL1J9b6G2cgwVVstevX58LzPPE8Tz3PffXLPc/3nucHz/Oj+/lG
O3197pFf7JFf7JFf7JFf7JFf7JFf7JFf7JFf7JGf8MhPeOQnPPITHvkJj/x87UN45Cc88hMe+QmP
/BKP/BKP/BKP/BKP/BKP/BKP/BKP/BKP/BKP/BKP/FKP/FKP/FKP/FKP/FKP/FKP/FKP/FKP/FKP
/FKP/DKP/DKP/DKP/DKP/DKP/DKP/DKP/DKP/DKP/DKP/HKP/HKP/HK3/Iq3/rXHhz3JPkZbP+Hg
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
AMAxCUEAAAAAAAAAAAAAAAAdABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC9VVAkAAydV
I1AFViNQdXgLAAEE6AMAAAToAwAAUEsDBAoAAAAAAMAxCUEAAAAAAAAAAAAAAAAjABwAdG1wL2xh
eW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9VVAkAAydVI1AFViNQdXgLAAEE6AMAAAToAwAA
UEsDBAoAAAAAAMAxCUEAAAAAAAAAAAAAAAApABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0
cC90ZXN0cy9jYWNoZS9VVAkAAyhVI1AFViNQdXgLAAEE6AMAAAToAwAAUEsDBBQAAgAIAMAxCUH+
waUdQAEAAFoCAABFABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9jYWNoZS9w
b3N0LXJlZGlyZWN0LWdldC1hY3R1YWwudHh0VVQJAAMnVSNQKFUjUHV4CwABBOgDAAAE6AMAAI3R
XUvDMBQG4Pv9isO8mMLoso9+MBBhOlBRBjoUryRNTte4mIwkXVuH/93MWYfCYFchh+c9OUkkrdEA
dXBKuuQMrPhASAipIkJaAA+oOJongeUBIo+IT6RmS9hcz+/vPg/SX6x5DZvJ7OplZ5Nu8mPjZFSF
yejbNnqOlYPNifPL/9ZxHFX9uOEAWwOmUHtWCu7yrRtD+8Z1LKy0tSKVCJn2dwJbMIbWZoUEg2sq
BadOaAVOA6OFRcA1Kme3+0wYBFsrlhutdGFlHcCzr+S6kFx1HDBDbQ4iA60QdAYu1/sG1umVb5Nj
+9C0/TBs5h1GxM8rNeUBPCJC7tzKjnu9tFjYoMR0KVygzaLnzy5ffTFgC3Eh+Hk8iKNBAO1j349U
5A+dvqfIOfJZ+obMh2aT2+nlfJfyM3UHTXDo/7QfktYXUEsDBAoAAgAAAMAxCUGc6ad1BgAAAAYA
AABHABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9jYWNoZS9wb3N0LXJlZGly
ZWN0LWdldC1leHBlY3RlZC50eHRVVAkAAydVI1AoVSNQdXgLAAEE6AMAAAToAwAAUEFTUwoKUEsD
BBQAAgAIAMAxCUFXNUJbmQEAABcDAABDABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90
ZXN0cy9jYWNoZS9wb3N0LXJlZGlyZWN0LWdldC1kaWZmLnR4dFVUCQADJ1UjUChVI1B1eAsAAQTo
AwAABOgDAAClklFv0zAQx9/zKU7lYaDEidOtTTQJUQqTADEV0QrEE3LsS2PmxVV8XlOqfXccSjeB
VGkST7bPv/v7f+djjEFGt5vMiJ31xAgdsQ6dN+SyhmiTDRGXSSEbzDb2963SHUpiaySG/SZsUaXU
E0RxHP+XmpDkhTlozWbA8mQMcZ7kHGaziH16vVxGLIqDOHYgCJ7zhL8Ap38ilJz3U86jGOAztgq7
Lxq3p5gnCcyNlTewf7e6/nh/mn2grdrBfr54++0Al0n5By7Ki35SXhzgI77CUOL+GYXlX/GimPZ5
8cADDBB0vn3ktlpRM4CXMHpPZw5CJ52uDEJtQ13gvJToXO0NdHgnjFaCtG2BLEjhHQLeYUtuONeh
+eB2rWw621rvzC6FryHSWG9Ue0YgO+Ea0DXYFsHWQI19FHBkN0GmwdFJu/lkcjR8PuXBsLFCpbBE
hGEg3GWWVX7t0i1WN5pS262z8Pj2ewimcq1fafWyGBfTcQqjJ7eQ9/xv9uq2QqVQLaofYdRgv5h/
uHqzOqQFV8n4mHkefjaf8OgXUEsDBBQAAgAIAMAxCUG5x48m2x8AAKgrAABFABwAdG1wL2xheW91
dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9jYWNoZS9wb3N0LXJlZGlyZWN0LWdldC1hY3R1YWwu
cG5nVVQJAAMoVSNQKFUjUHV4CwABBOgDAAAE6AMAAO16aVSTV7t2rLW2otBWxQoibQVRELAyCQix
ReUNCBQZgiBERcQwypSAIWBVSgsqGgVkCDgwCDFEhhDCFCdAQEETIkMYZAjIkDAHSEhy7rTvedf5
1vp+nN9nNQsWK8l+nr33PVzDfvjzV0fbTRvUNiAQiE2ofx05gUCs/R6B+Mzjy8/gk61bturAn72R
Rz0ifS/4+QZGRAUjTIzOnPXdb25kZHzQyM/3J6Oz50wOGJ/38zU1Mjf29TtgFPGDOhOB+B6BOvKz
a3S2oI9wy5VPNptZq7vx6vc/7jE7+qvzYT7p9N6zpiVL9ieqG9n3m0uy+rjUV1OXDB0a9A1TW9KE
ng+//tb3nZZewC9fow97H2kw6Vc9XvvD/e+/nzhyK/nqxo0vY+QHp3mhoUvjOTtHm47Or6xGjWZz
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
BBIVtQaHD1wryb2yBrwFwWtCwAc0nrp1oRwCtUaUzhpbk24juAuV0tZamhMPwnEqQRVgDYItwJf2
xYC8rYJNib1DaQej0T7v2ZiFvNpyGcECEUrvK5rEcV6vKNpgvlY+sm4Vh703v0MxEiv1ScmLZJiM
hxH03nt/rGGv0Ks/OUqJcp7fowii+ezb1eflThUy9Yd74Vl408GIPf23oyzufuQ/UEsDBAoAAgAA
AMAxCUGc6ad1BgAAAAYAAABTABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9j
YWNoZS9wb3N0LXdpdGgtY2FjaGVkLXN1YnJlc291cmNlcy1leHBlY3RlZC50eHRVVAkAAyhVI1Ao
VSNQdXgLAAEE6AMAAAToAwAAUEFTUwoKUEsDBBQAAgAIAMAxCUHV9h1ikAgAABsfAABXABwAdG1w
L2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9jYWNoZS9wb3N0LXdpdGgtY2FjaGVkLXN1
YnJlc291cmNlcy1wcmV0dHktZGlmZi5odG1sVVQJAAMoVSNQKFUjUHV4CwABBOgDAAAE6AMAANVZ
a2/bRhb97l8xsJG6LUyKsiRbj8RF4we6Rbsp1sEu9pMxJIfixCRHnRnaUrL973vnRZEUKbnYAO42
aETO48657zPM21Tm2dXR25TgGH6E3GTk6mie0eLxDM2fqKCSxOjLEYL/JFlLLyYR41hSVsxRwQqy
0FMh4zHhXsikZPkcDVdrFMMziRdHfxwZcVZIxDLG5+gkGM30nH9HM3JDk8TOhzh6XHJWFrHnliZT
9ad+kDlBsIzG6CSOYzOXsEJ6Cc5ptpmjnBVMrHBkAeaYLylAHpIcBWZoxUA5rQcnGWj0RDSgdNhC
OhqNOuQLXAhPEE6T2qSgn4k+o36ol5FEzlHgT9x4TMUqwyBE4jAjXkSyzEw801imICAI3liMOI5p
sax2G3zWPeqp6SELmRYpAJPV8pQ9Ed7SajKZLPoMTogxha/88gucJezmJGMYVOF0mcqm99SqazAB
pkV1FAPzUwlqBgfUtlp6Wm7DUs8paOdpP6pwe+Z4tUV2TyLlv97A0ZubYdMOGRu3zu4QVMFqbU64
Xa/AxSAfVCNnyFc/bQ174Qkak3Cj/kYa6vuMRY+/YS59UHWeUC6kF6U0i3sNq467h/1n+4RxkoNr
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
mThzji4CZ06gTbGP7glBjhCF5VL45hrjM74cgGmeH2DQj5b0Bxq/uzy/vDj30atbYPY/p0Swfs2a
NAxepsAtLI9jEn8IPwFZQ18+vP/59vqj0QUceXbu1BlBmR1OgoM0o0aYFSnR0/W12x/NTYE46n8H
/y9QSwMEFAACAAgAwDEJQdsolAOhAQAALwMAAE8AHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9o
dHRwL3Rlc3RzL2NhY2hlL3Bvc3Qtd2l0aC1jYWNoZWQtc3VicmVzb3VyY2VzLWRpZmYudHh0VVQJ
AAMoVSNQKFUjUHV4CwABBOgDAAAE6AMAAK2SUW/TMBDH3/MpTuVhoMSJ061NNAlRCpMAMRXRCsQT
SuxLY5bFkX1eUqp9dxxKN4FUaQ88WXf+3f/+dzZjDBK67ZKm2GlHjNASM2hdQzapibpkzNhEFKLG
pNP+tldUs9+xZNaVHtbOCLQMhw4FoYxpIAjCMPxvyoUgVzQH3cUCWBpNIUyjlMNiEbBPr9frgAWh
b4QGCoLnPOIvwKqfCDnnw5zzIAT4jK1E80Vhf4p5ksCy0eIG9u821x/vT7MPtJY72C9Xb78d4DzK
/8BZfjHM8osDfMQ36EfcPyN//CueZfMhzR54gBEC49pHrleS6hG8hMl7OrPgt2pV2SBU2s8F1gm/
TVu5BgzeFY2SBSndAmkQhbMIeIct2TGulEGwu1bURrfa2WYXw1efqbVrZHtGIExha1AV6BZBV0C1
fhSwpDsvU+PkpN10NjsaPp9zb7jRhYxhjQjj57CXSVK6rY17LG8UxdpsE9+8/+6TsdiqV0q+zKbZ
fBrD5Mkr5AP/m726LVFKlKvyh/+5sF8tP1y92RzKvKtoeqw89y+bznjwC1BLAwQUAAIACADAMQlB
/sGlHUABAABaAgAAUQAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvY2FjaGUv
cG9zdC13aXRoLWNhY2hlZC1zdWJyZXNvdXJjZXMtYWN0dWFsLnR4dFVUCQADKFUjUChVI1B1eAsA
AQToAwAABOgDAACN0V1LwzAUBuD7/YrDvJjC6LKPfjAQYTpQUQY6FK8kTU7XuJiMJF1bh//dzFmH
wmBXIYfnPTlJJK3RAHVwSrrkDKz4QEgIqSJCWgAPqDiaJ4HlASKPiE+kZkvYXM/v7z4P0l+seQ2b
yezqZWeTbvJj42RUhcno2zZ6jpWDzYnzy//WcRxV/bjhAFsDplB7Vgru8q0bQ/vGdSystLUilQiZ
9ncCWzCG1maFBINrKgWnTmgFTgOjhUXANSpnt/tMGARbK5YbrXRhZR3As6/kupBcdRwwQ20OIgOt
EHQGLtf7BtbplW+TY/vQtP0wbOYdRsTPKzXlATwiQu7cyo57vbRY2KDEdClcoM2i588uX30xYAtx
Ifh5PIijQQDtY9+PVOQPnb6nyDnyWfqGzIdmk9vp5XyX8jN1B01w6P+0H5LWF1BLAQIeAwoAAAAA
ADQyCUEAAAAAAAAAAAAAAAAYABgAAAAAAAAAEADtQQAAAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0
cy9VVAUAAwRWI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACAC0MQlBmnQncC02AADokQIANAAY
AAAAAAABAAAApIFSAAAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvd2Via2l0X3VuaXRfdGVzdHNf
b3V0cHV0LnhtbFVUBQADE1UjUHV4CwABBOgDAAAE6AMAAFBLAQIeAwoAAAAAAOUxCUEAAAAAAAAA
AAAAAAAdABgAAAAAAAAAEADtQe02AAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9jc3MzL1VUBQAD
bVUjUHV4CwABBOgDAAAE6AMAAFBLAQIeAwoAAAAAAOUxCUEAAAAAAAAAAAAAAAAlABgAAAAAAAAA
EADtQUQ3AAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9jc3MzL2ZpbHRlcnMvVVQFAANtVSNQdXgL
AAEE6AMAAAToAwAAUEsBAh4DCgAAAAAA5TEJQQAAAAAAAAAAAAAAACwAGAAAAAAAAAAQAO1BozcA
AHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2NzczMvZmlsdGVycy9jdXN0b20vVVQFAANtVSNQdXgL
AAEE6AMAAAToAwAAUEsBAh4DFAACAAgA5TEJQVeoFdyJAAAAkwAAAGIAGAAAAAAAAQAAAKSBCTgA
AHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2NzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRl
ci1jc3Mta2V5d29yZC1hcy1wYXJhbWV0ZXItbmFtZS1zdGRlcnIudHh0VVQFAANtVSNQdXgLAAEE
6AMAAAToAwAAUEsBAh4DFAACAAgAKzIJQQ7xo84bQQAAfkQCACYAGAAAAAAAAQAAAKSBLjkAAHRt
cC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3RzX3J1bjEudHh0VVQFAAPyVSNQdXgLAAEE6AMAAATo
AwAAUEsBAh4DFAACAAgAKzIJQXGB1ZjGQAAA5+8BACYAGAAAAAAAAQAAAKSBqXoAAHRtcC9sYXlv
dXQtdGVzdC1yZXN1bHRzL3Rlc3RzX3J1bjIudHh0VVQFAAPyVSNQdXgLAAEE6AMAAAToAwAAUEsB
Ah4DCgAAAAAAJDIJQQAAAAAAAAAAAAAAAB0AGAAAAAAAAAAQAO1Bz7sAAHRtcC9sYXlvdXQtdGVz
dC1yZXN1bHRzL2Zhc3QvVVQFAAPjVSNQdXgLAAEE6AMAAAToAwAAUEsBAh4DCgAAAAAAJDIJQQAA
AAAAAAAAAAAAACQAGAAAAAAAAAAQAO1BJrwAAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3Qv
Y2FudmFzL1VUBQAD41UjUHV4CwABBOgDAAAE6AMAAFBLAQIeAwoAAAAAACcyCUEAAAAAAAAAAAAA
AAAqABgAAAAAAAAAEADtQYS8AAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2NhbnZhcy93
ZWJnbC9VVAUAA+pVI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACAAmMglBXa+rf8YAAADgAQAA
SgAYAAAAAAABAAAApIHovAAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvc2hhZGVyLXByZWNpc2lvbi1mb3JtYXQtZGlmZi50eHRVVAUAA+dVI1B1eAsAAQToAwAABOgD
AABQSwECHgMUAAIACAAnMglBXGsAM4oAAACTAAAAUgAYAAAAAAABAAAApIEyvgAAdG1wL2xheW91
dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1hcnJheS1sZW5ndGgtb3Zl
cmZsb3ctc3RkZXJyLnR4dFVUBQAD6lUjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIACYyCUEf
GWN5+wEAAA4MAABOABgAAAAAAAEAAACkgUi/AAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0
L2NhbnZhcy93ZWJnbC9zaGFkZXItcHJlY2lzaW9uLWZvcm1hdC1leHBlY3RlZC50eHRVVAUAA+dV
I1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACAAlMglBQ+44FaoAAADfAgAAUQAYAAAAAAABAAAA
pIHLwQAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtdmVydGV4
LWF0dHJpYi16ZXJvLWlzc3Vlcy1zdGRlcnIudHh0VVQFAAPlVSNQdXgLAAEE6AMAAAToAwAAUEsB
Ah4DFAACAAgAJjIJQVf+0h3OAAAAqAEAAEEAGAAAAAAAAQAAAKSBAMMAAHRtcC9sYXlvdXQtdGVz
dC1yZXN1bHRzL2Zhc3QvY2FudmFzL3dlYmdsL3Byb2dyYW0tdGVzdC1zdGRlcnIudHh0VVQFAAPn
VSNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAJTIJQaY8gvvbAAAAOAEAAEUAGAAAAAAAAQAA
AKSBScQAAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZh
bGlkYXRpb24tc3RkZXJyLnR4dFVUBQAD5lUjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIACYy
CUEZS4sTtQcAAMEbAABSABgAAAAAAAEAAACkgaPFAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9m
YXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItcHJlY2lzaW9uLWZvcm1hdC1wcmV0dHktZGlmZi5odG1s
VVQFAAPoVSNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAJDIJQXa4Z77GAAAAXgYAAE4AGAAA
AAAAAQAAAKSB5M0AAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvY2FudmFzL3dlYmdsL2Ry
YXctYXJyYXlzLW91dC1vZi1ib3VuZHMtc3RkZXJyLnR4dFVUBQAD41UjUHV4CwABBOgDAAAE6AMA
AFBLAQIeAxQAAgAIACQyCUH4hqk4jAAAAAEBAABEABgAAAAAAAEAAACkgTLPAAB0bXAvbGF5b3V0
LXRlc3QtcmVzdWx0cy9mYXN0L2NhbnZhcy93ZWJnbC9lcnJvci1yZXBvcnRpbmctc3RkZXJyLnR4
dFVUBQAD5FUjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIACYyCUE5aca6DAIAAD0MAABMABgA
AAAAAAEAAACkgTzQAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2NhbnZhcy93ZWJnbC9z
aGFkZXItcHJlY2lzaW9uLWZvcm1hdC1hY3R1YWwudHh0VVQFAAPnVSNQdXgLAAEE6AMAAAToAwAA
UEsBAh4DFAACAAgAJDIJQaNC157+AAAA1QkAAFAAGAAAAAAAAQAAAKSBztIAAHRtcC9sYXlvdXQt
dGVzdC1yZXN1bHRzL2Zhc3QvY2FudmFzL3dlYmdsL2RyYXctZWxlbWVudHMtb3V0LW9mLWJvdW5k
cy1zdGRlcnIudHh0VVQFAAPjVSNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAJzIJQQp9pQg1
AQAAoQwAAEkAGAAAAAAAAQAAAKSBVtQAAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvY2Fu
dmFzL3dlYmdsL3R5cGUtY29udmVyc2lvbi10ZXN0LXN0ZGVyci50eHRVVAUAA+pVI1B1eAsAAQTo
AwAABOgDAABQSwECHgMUAAIACAAmMglBZZOZH1sCAADdDAAATAAYAAAAAAABAAAApIEO1gAAdG1w
L2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVyLXByZWNpc2lvbi1m
b3JtYXQtd2RpZmYuaHRtbFVUBQAD6FUjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIACUyCUFJ
ulBeqwAAAJQCAABUABgAAAAAAAEAAACkge/YAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0
L2NhbnZhcy93ZWJnbC9pbmRleC12YWxpZGF0aW9uLWNvcGllcy1pbmRpY2VzLXN0ZGVyci50eHRV
VAUAA+ZVI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACAAlMglB/qDZBJ8AAABKAQAAXwAYAAAA
AAABAAAApIEo2gAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5k
ZXgtdmFsaWRhdGlvbi12ZXJpZmllcy10b28tbWFueS1pbmRpY2VzLXN0ZGVyci50eHRVVAUAA+ZV
I1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACAAkMglBxpudh5cAAAACAgAARAAYAAAAAAABAAAA
pIFg2wAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2V0LWFjdGl2
ZS10ZXN0LXN0ZGVyci50eHRVVAUAA+RVI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACAAkMglB
iCrDlJUAAAAmAQAAUQAYAAAAAAABAAAApIF13AAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFz
dC9jYW52YXMvd2ViZ2wvZ2wtYmluZC1hdHRyaWItbG9jYXRpb24tdGVzdC1zdGRlcnIudHh0VVQF
AAPkVSNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAJTIJQYZV0HdaAAAAYQAAAEoAGAAAAAAA
AQAAAKSBld0AAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvY2FudmFzL3dlYmdsL251bGwt
b2JqZWN0LWJlaGF2aW91ci1zdGRlcnIudHh0VVQFAAPmVSNQdXgLAAEE6AMAAAToAwAAUEsBAh4D
CgAAAAAAujEJQQAAAAAAAAAAAAAAAEMAGAAAAAAAAAAAAKSBc94AAHRtcC9sYXlvdXQtdGVzdC1y
ZXN1bHRzL3B5d2Vic29ja2V0LndzLmxvZy0wOUF1ZzIwMTItMDYxMzUyLWVyci50eHRVVAUAAyBV
I1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACAArMglBAlgkURYYAAByJgEAJgAYAAAAAAABAAAA
pIHw3gAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvYWNjZXNzX2xvZy50eHRVVAUAA/JVI1B1eAsA
AQToAwAABOgDAABQSwECHgMUAAIACAArMglB/oisxNFAAAAo6AEAJgAYAAAAAAABAAAApIFm9wAA
dG1wL2xheW91dC10ZXN0LXJlc3VsdHMvdGVzdHNfcnVuMy50eHRVVAUAA/JVI1B1eAsAAQToAwAA
BOgDAABQSwECHgMUAAIACAAsMglBX4uOBf8EAAAXUwAAJQAYAAAAAAABAAAApIGXOAEAdG1wL2xh
eW91dC10ZXN0LXJlc3VsdHMvZXJyb3JfbG9nLnR4dFVUBQAD81UjUHV4CwABBOgDAAAE6AMAAFBL
AQIeAxQAAgAIACsyCUEjXjDazAYAAN4iAAAmABgAAAAAAAEAAACkgfU9AQB0bXAvbGF5b3V0LXRl
c3QtcmVzdWx0cy90ZXN0c19ydW4wLnR4dFVUBQAD8VUjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQA
AgAIADQyCUG3mqGb8CQAAIOdAAAkABgAAAAAAAEAAACkgSFFAQB0bXAvbGF5b3V0LXRlc3QtcmVz
dWx0cy9yZXN1bHRzLmh0bWxVVAUAAwRWI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACAAtMglB
5eY7AMICAAApCgAAKQAYAAAAAAABAAAApIFvagEAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZnVs
bF9yZXN1bHRzLmpzb25VVAUAA/ZVI1B1eAsAAQToAwAABOgDAABQSwECHgMKAAAAAAC6MQlBAAAA
AAAAAAAAAAAAQwAYAAAAAAAAAAAApIGUbQEAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcHl3ZWJz
b2NrZXQud3MubG9nLTA5QXVnMjAxMi0wNjEzNTItb3V0LnR4dFVUBQADIFUjUHV4CwABBOgDAAAE
6AMAAFBLAQIeAxQAAgAIALoxCUGR7GaBGiQAAG9hAAAiABgAAAAAAAEAAACkgRFuAQB0bXAvbGF5
b3V0LXRlc3QtcmVzdWx0cy9odHRwZC5jb25mVVQFAAMfVSNQdXgLAAEE6AMAAAToAwAAUEsBAh4D
CgAAAAAAwDEJQQAAAAAAAAAAAAAAAB0AGAAAAAAAAAAQAO1Bh5IBAHRtcC9sYXlvdXQtdGVzdC1y
ZXN1bHRzL2h0dHAvVVQFAAMnVSNQdXgLAAEE6AMAAAToAwAAUEsBAh4DCgAAAAAAwDEJQQAAAAAA
AAAAAAAAACMAGAAAAAAAAAAQAO1B3pIBAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVz
dHMvVVQFAAMnVSNQdXgLAAEE6AMAAAToAwAAUEsBAh4DCgAAAAAAwDEJQQAAAAAAAAAAAAAAACkA
GAAAAAAAAAAQAO1BO5MBAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvY2FjaGUv
VVQFAAMoVSNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAwDEJQf7BpR1AAQAAWgIAAEUAGAAA
AAAAAQAAAKSBnpMBAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvY2FjaGUvcG9z
dC1yZWRpcmVjdC1nZXQtYWN0dWFsLnR4dFVUBQADJ1UjUHV4CwABBOgDAAAE6AMAAFBLAQIeAwoA
AgAAAMAxCUGc6ad1BgAAAAYAAABHABgAAAAAAAEAAACkgV2VAQB0bXAvbGF5b3V0LXRlc3QtcmVz
dWx0cy9odHRwL3Rlc3RzL2NhY2hlL3Bvc3QtcmVkaXJlY3QtZ2V0LWV4cGVjdGVkLnR4dFVUBQAD
J1UjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAMAxCUFXNUJbmQEAABcDAABDABgAAAAAAAEA
AACkgeSVAQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL2NhY2hlL3Bvc3QtcmVk
aXJlY3QtZ2V0LWRpZmYudHh0VVQFAAMnVSNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAwDEJ
QbnHjybbHwAAqCsAAEUAGAAAAAAAAAAAAKSB+pcBAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0
dHAvdGVzdHMvY2FjaGUvcG9zdC1yZWRpcmVjdC1nZXQtYWN0dWFsLnBuZ1VUBQADKFUjUHV4CwAB
BOgDAAAE6AMAAFBLAQIeAxQAAgAIAMAxCUGNpXyKjwEAAOgCAABFABgAAAAAAAEAAACkgVS4AQB0
bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL2NhY2hlL3Bvc3QtcmVkaXJlY3QtZ2V0
LXdkaWZmLmh0bWxVVAUAAyhVI1B1eAsAAQToAwAABOgDAABQSwECHgMKAAIAAADAMQlBnOmndQYA
AAAGAAAAUwAYAAAAAAABAAAApIFiugEAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0
cy9jYWNoZS9wb3N0LXdpdGgtY2FjaGVkLXN1YnJlc291cmNlcy1leHBlY3RlZC50eHRVVAUAAyhV
I1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACADAMQlB1fYdYpAIAAAbHwAAVwAYAAAAAAABAAAA
pIH1ugEAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9jYWNoZS9wb3N0LXdpdGgt
Y2FjaGVkLXN1YnJlc291cmNlcy1wcmV0dHktZGlmZi5odG1sVVQFAAMoVSNQdXgLAAEE6AMAAATo
AwAAUEsBAh4DFAACAAgAwDEJQY2lfIqPAQAA6AIAAFEAGAAAAAAAAQAAAKSBFsQBAHRtcC9sYXlv
dXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC13aXRoLWNhY2hlZC1zdWJyZXNv
dXJjZXMtd2RpZmYuaHRtbFVUBQADKFUjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAMAxCUG5
x48m2x8AAKgrAABRABgAAAAAAAAAAACkgTDGAQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRw
L3Rlc3RzL2NhY2hlL3Bvc3Qtd2l0aC1jYWNoZWQtc3VicmVzb3VyY2VzLWFjdHVhbC5wbmdVVAUA
AyhVI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACADAMQlBnEKPLYkIAAAPHwAASwAYAAAAAAAB
AAAApIGW5gEAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9jYWNoZS9wb3N0LXJl
ZGlyZWN0LWdldC1wcmV0dHktZGlmZi5odG1sVVQFAAMoVSNQdXgLAAEE6AMAAAToAwAAUEsBAh4D
FAACAAgAwDEJQdsolAOhAQAALwMAAE8AGAAAAAAAAQAAAKSBpO8BAHRtcC9sYXlvdXQtdGVzdC1y
ZXN1bHRzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC13aXRoLWNhY2hlZC1zdWJyZXNvdXJjZXMtZGlm
Zi50eHRVVAUAAyhVI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACADAMQlB/sGlHUABAABaAgAA
UQAYAAAAAAABAAAApIHO8QEAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9jYWNo
ZS9wb3N0LXdpdGgtY2FjaGVkLXN1YnJlc291cmNlcy1hY3R1YWwudHh0VVQFAAMoVSNQdXgLAAEE
6AMAAAToAwAAUEsFBgAAAAA1ADUAPhsAAJnzAQAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157408</attachid>
            <date>2012-08-09 00:40:23 -0700</date>
            <delta_ts>2012-08-09 01:06:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92769-20120809003956.patch</filename>
            <type>text/plain</type>
            <size>222663</size>
            <attacher name="Jan Keromnes">janx</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MDg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWU5ZjIyMDY0YzAxYjZj
YWFkNzgwOTNkYWNiNjc3YjMzZmEzMjUzNS4uNTc0Njc2NWU5NjFiNTUyZjkyY2RjMmJhYTc5MzBl
ODdhOWY5MDAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NCBAQAorMjAxMi0wOC0wOCAgSmFu
IEtlcm9tbmVzICA8amFueEBsaW51eC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVw
bGFjZSB0aGUgV2ViIEluc3BlY3RvciBlZGl0b3Igd2l0aCBDb2RlTWlycm9yCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mjc2OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludGVncmF0aW5nIENvZGVNaXJy
b3IgYXMgYSBkZXZ0b29scyBleHBlcmltZW50LiBDdXJyZW50bHkgc3VwcG9ydGluZworICAgICAg
ICBiYXNpYyBlZGl0aW5nLCBzZWFyY2gvcmVwbGFjaW5nLCBhbmQgc2F2aW5nLiBNaXNzaW5nIHBy
b3BlciBicmVha3BvaW50cworICAgICAgICB3aXJpbmcsIGRlYnVnZ2luZywgbWVzc2FnZSBidWJi
bGVzLCBwb3BvdmVycyBhbmQgY29udGV4dCBtZW51cy4gV0lQLgorCisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAg
ICAqIGluc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NvZGVNaXJyb3JUZXh0RWRpdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci50aGlzLl9jb2RlTWlycm9yLkNvZGVNaXJyb3Ip
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuc2V0IG1pbWVUeXBl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUu
c2V0UmVhZE9ubHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9y
LnByb3RvdHlwZS5yZWFkT25seSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRl
eHRFZGl0b3IucHJvdG90eXBlLmRlZmF1bHRGb2N1c2VkRWxlbWVudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLmZvY3VzKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUucmV2ZWFsTGluZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLmFk
ZERlY29yYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9y
LnByb3RvdHlwZS5yZW1vdmVEZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2Rl
TWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUubWFya0FuZFJldmVhbFJhbmdlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuaGlnaGxpZ2h0TGlu
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBl
LmNsZWFyTGluZUhpZ2hsaWdodCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRl
eHRFZGl0b3IucHJvdG90eXBlLmZyZWVDYWNoZWRFbGVtZW50cyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLmVsZW1lbnRzVG9SZXN0b3JlU2Ny
b2xsUG9zaXRpb25zRm9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVk
aXRvci5wcm90b3R5cGUuaW5oZXJpdFNjcm9sbFBvc2l0aW9ucyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLmJlZ2luVXBkYXRlcyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLmVuZFVwZGF0
ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlw
ZS5vblJlc2l6ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3Iu
cHJvdG90eXBlLmVkaXRSYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRl
eHRFZGl0b3IucHJvdG90eXBlLl9vbkNoYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29k
ZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLl9jb21taXRFZGl0aW5nKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuc2Nyb2xsVG9MaW5lKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuc2Vs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90
b3R5cGUubGFzdFNlbGVjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRl
eHRFZGl0b3IucHJvdG90eXBlLnNldFNlbGVjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLnNldFRleHQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZS50ZXh0KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUucmFuZ2UpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZS5saW5lKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuZ2V0IGxp
bmVzQ291bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnBy
b3RvdHlwZS5zZXRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JU
ZXh0RWRpdG9yLnByb3RvdHlwZS5nZXRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZS53YXNTaG93bik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLndp
bGxIaWRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90
b3R5cGUuX3RleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4
dEVkaXRvci5wcm90b3R5cGUuX3RvUG9zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWly
cm9yVGV4dEVkaXRvci5wcm90b3R5cGUuX3RvUmFuZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvU2V0dGluZ3MuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXhwZXJpbWVudHNT
ZXR0aW5ncyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZSk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvY21k
ZXZ0b29scy5jc3M6IEFkZGVkLgorICAgICAgICAoLkNvZGVNaXJyb3Itc2Nyb2xsKToKKyAgICAg
ICAgKC5Db2RlTWlycm9yKToKKyAgICAgICAgKC5jbS1zLXdlYi1pbnNwZWN0b3ItanMgc3Bhbi5j
bS1rZXl3b3JkKToKKyAgICAgICAgKC5jbS1zLXdlYi1pbnNwZWN0b3ItanMgc3Bhbi5jbS1udW1i
ZXIpOgorICAgICAgICAoLmNtLXMtd2ViLWluc3BlY3Rvci1qcyBzcGFuLmNtLWNvbW1lbnQpOgor
ICAgICAgICAoLmNtLXMtd2ViLWluc3BlY3Rvci1qcyBzcGFuLmNtLXN0cmluZyk6CisgICAgICAg
ICguY20tcy13ZWItaW5zcGVjdG9yLWpzIHNwYW4uY20tc3RyaW5nLTIpOgorICAgICAgICAoLmNt
LXMtd2ViLWluc3BlY3Rvci1jc3Mgc3Bhbi5jbS1rZXl3b3JkKToKKyAgICAgICAgKC5jbS1zLXdl
Yi1pbnNwZWN0b3ItY3NzIHNwYW4uY20tbnVtYmVyKToKKyAgICAgICAgKC5jbS1zLXdlYi1pbnNw
ZWN0b3ItY3NzIHNwYW4uY20tY29tbWVudCk6CisgICAgICAgICguY20tcy13ZWItaW5zcGVjdG9y
LWNzcyBzcGFuLmNtLXN0cmluZyk6CisgICAgICAgICguY20tcy13ZWItaW5zcGVjdG9yLWNzcyBz
cGFuLmNtLXN0cmluZy0yKToKKyAgICAgICAgKC5jbS1zLXdlYi1pbnNwZWN0b3ItY3NzIHNwYW4u
Y20tbGluayk6CisgICAgICAgICguY20tcy13ZWItaW5zcGVjdG9yLWNzcyBzcGFuLmNtLXZhcmlh
YmxlKToKKyAgICAgICAgKC5jbS1zLXdlYi1pbnNwZWN0b3ItaHRtbCBzcGFuLmNtLW1ldGEpOgor
ICAgICAgICAoLmNtLXMtd2ViLWluc3BlY3Rvci1odG1sIHNwYW4uY20tY29tbWVudCk6CisgICAg
ICAgICguY20tcy13ZWItaW5zcGVjdG9yLWh0bWwgc3Bhbi5jbS1zdHJpbmcpOgorICAgICAgICAo
LmNtLXMtd2ViLWluc3BlY3Rvci1odG1sIHNwYW4uY20tdGFnKToKKyAgICAgICAgKC5jbS1zLXdl
Yi1pbnNwZWN0b3ItaHRtbCBzcGFuLmNtLWF0dHJpYnV0ZSk6CisgICAgICAgICguY20tcy13ZWIt
aW5zcGVjdG9yLWh0bWwgc3Bhbi5jbS1saW5rKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL2NvZGVtaXJyb3IuY3NzOiBBZGRlZC4KKyAgICAgICAgKC5Db2RlTWlycm9yKToKKyAgICAg
ICAgKC5Db2RlTWlycm9yLXNjcm9sbCk6CisgICAgICAgICguQ29kZU1pcnJvci1zY3JvbGxiYXIp
OgorICAgICAgICAoLkNvZGVNaXJyb3Itc2Nyb2xsYmFyLWlubmVyKToKKyAgICAgICAgKC5Db2Rl
TWlycm9yLXNjcm9sbGJhci5jbS1zYi1vdmVybGFwKToKKyAgICAgICAgKC5Db2RlTWlycm9yLXNj
cm9sbGJhci5jbS1zYi1ub25vdmVybGFwKToKKyAgICAgICAgKC5Db2RlTWlycm9yLXNjcm9sbGJh
ci5jbS1zYi1pZTcpOgorICAgICAgICAoLkNvZGVNaXJyb3ItZ3V0dGVyKToKKyAgICAgICAgKC5D
b2RlTWlycm9yLWd1dHRlci10ZXh0KToKKyAgICAgICAgKC5Db2RlTWlycm9yLWxpbmVzKToKKyAg
ICAgICAgKC5Db2RlTWlycm9yIHByZSk6CisgICAgICAgICguQ29kZU1pcnJvci13cmFwIHByZSk6
CisgICAgICAgICguQ29kZU1pcnJvci13cmFwIC5Db2RlTWlycm9yLXNjcm9sbCk6CisgICAgICAg
ICguQ29kZU1pcnJvciB0ZXh0YXJlYSk6CisgICAgICAgICguQ29kZU1pcnJvciBwcmUuQ29kZU1p
cnJvci1jdXJzb3IpOgorICAgICAgICAoLmNtLWtleW1hcC1mYXQtY3Vyc29yIHByZS5Db2RlTWly
cm9yLWN1cnNvcik6CisgICAgICAgICguY20ta2V5bWFwLWZhdC1jdXJzb3IgcHJlLkNvZGVNaXJy
b3ItY3Vyc29yOm5vdCgjbm9uc2Vuc2VfaWQpKToKKyAgICAgICAgKC5Db2RlTWlycm9yIHByZS5D
b2RlTWlycm9yLWN1cnNvci5Db2RlTWlycm9yLW92ZXJ3cml0ZSk6CisgICAgICAgICguQ29kZU1p
cnJvci1mb2N1c2VkIHByZS5Db2RlTWlycm9yLWN1cnNvcik6CisgICAgICAgIChkaXYuQ29kZU1p
cnJvci1zZWxlY3RlZCk6CisgICAgICAgICguQ29kZU1pcnJvci1mb2N1c2VkIGRpdi5Db2RlTWly
cm9yLXNlbGVjdGVkKToKKyAgICAgICAgKC5Db2RlTWlycm9yLXNlYXJjaGluZyk6CisgICAgICAg
ICguY20tcy1kZWZhdWx0IHNwYW4uY20ta2V5d29yZCk6CisgICAgICAgICguY20tcy1kZWZhdWx0
IHNwYW4uY20tYXRvbSk6CisgICAgICAgICguY20tcy1kZWZhdWx0IHNwYW4uY20tbnVtYmVyKToK
KyAgICAgICAgKC5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1kZWYpOgorICAgICAgICAoLmNtLXMtZGVm
YXVsdCBzcGFuLmNtLXZhcmlhYmxlKToKKyAgICAgICAgKC5jbS1zLWRlZmF1bHQgc3Bhbi5jbS12
YXJpYWJsZS0yKToKKyAgICAgICAgKC5jbS1zLWRlZmF1bHQgc3Bhbi5jbS12YXJpYWJsZS0zKToK
KyAgICAgICAgKC5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1wcm9wZXJ0eSk6CisgICAgICAgICguY20t
cy1kZWZhdWx0IHNwYW4uY20tb3BlcmF0b3IpOgorICAgICAgICAoLmNtLXMtZGVmYXVsdCBzcGFu
LmNtLWNvbW1lbnQpOgorICAgICAgICAoLmNtLXMtZGVmYXVsdCBzcGFuLmNtLXN0cmluZyk6Cisg
ICAgICAgICguY20tcy1kZWZhdWx0IHNwYW4uY20tc3RyaW5nLTIpOgorICAgICAgICAoLmNtLXMt
ZGVmYXVsdCBzcGFuLmNtLW1ldGEpOgorICAgICAgICAoLmNtLXMtZGVmYXVsdCBzcGFuLmNtLWVy
cm9yKToKKyAgICAgICAgKC5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1xdWFsaWZpZXIpOgorICAgICAg
ICAoLmNtLXMtZGVmYXVsdCBzcGFuLmNtLWJ1aWx0aW4pOgorICAgICAgICAoLmNtLXMtZGVmYXVs
dCBzcGFuLmNtLWJyYWNrZXQpOgorICAgICAgICAoLmNtLXMtZGVmYXVsdCBzcGFuLmNtLXRhZyk6
CisgICAgICAgICguY20tcy1kZWZhdWx0IHNwYW4uY20tYXR0cmlidXRlKToKKyAgICAgICAgKC5j
bS1zLWRlZmF1bHQgc3Bhbi5jbS1oZWFkZXIpOgorICAgICAgICAoLmNtLXMtZGVmYXVsdCBzcGFu
LmNtLXF1b3RlKToKKyAgICAgICAgKC5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1ocik6CisgICAgICAg
ICguY20tcy1kZWZhdWx0IHNwYW4uY20tbGluayk6CisgICAgICAgIChzcGFuLmNtLWhlYWRlciwg
c3Bhbi5jbS1zdHJvbmcpOgorICAgICAgICAoc3Bhbi5jbS1lbSk6CisgICAgICAgIChzcGFuLmNt
LWVtc3Ryb25nKToKKyAgICAgICAgKHNwYW4uY20tbGluayk6CisgICAgICAgIChzcGFuLmNtLWlu
dmFsaWRjaGFyKToKKyAgICAgICAgKGRpdi5Db2RlTWlycm9yIHNwYW4uQ29kZU1pcnJvci1tYXRj
aGluZ2JyYWNrZXQpOgorICAgICAgICAoZGl2LkNvZGVNaXJyb3Igc3Bhbi5Db2RlTWlycm9yLW5v
bm1hdGNoaW5nYnJhY2tldCk6CisgICAgICAgIChAbWVkaWEgcHJpbnQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvY29kZW1pcnJvci5qczogQWRkZWQuCisgICAgICAgIChDb2RlTWly
cm9yLik6CisgICAgICAgIChDb2RlTWlycm9yKToKKyAgICAgICAgKC4pOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvY3NzLmpzOiBBZGRlZC4KKyAgICAgICAgKENvZGVNaXJyb3IuZGVm
aW5lTW9kZSk6CisgICAgICAgIChDb2RlTWlycm9yLmRlZmluZU1vZGUuKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL2h0bWxtaXhlZC5qczogQWRkZWQuCisgICAgICAgIChDb2RlTWly
cm9yLmRlZmluZU1vZGUpOgorICAgICAgICAoQ29kZU1pcnJvci5kZWZpbmVNb2RlLik6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL2phdmFzY3JpcHQuanM6IEFkZGVkLgorICAgICAgICAoQ29kZU1pcnJv
ci5kZWZpbmVNb2RlLik6CisgICAgICAgIChDb2RlTWlycm9yLmRlZmluZU1vZGUpOgorICAgICAg
ICAobWF5YmVvcGVyYXRvcik6CisgICAgICAgIChtYXliZWxhYmVsKToKKyAgICAgICAgKHByb3Bl
cnR5KToKKyAgICAgICAgKG9ianByb3ApOgorICAgICAgICAoY29tbWFzZXAucHJvY2VlZCk6Cisg
ICAgICAgIChjb21tYXNlcC5yZXR1cm4uY29tbWFTZXBhcmF0ZWQpOgorICAgICAgICAoY29tbWFz
ZXApOgorICAgICAgICAoYmxvY2spOgorICAgICAgICAodmFyZGVmMSk6CisgICAgICAgICh2YXJk
ZWYyKToKKyAgICAgICAgKGZvcnNwZWMxKToKKyAgICAgICAgKGZvcm1heWJlaW4pOgorICAgICAg
ICAoZm9yc3BlYzIpOgorICAgICAgICAoZm9yc3BlYzMpOgorICAgICAgICAoZnVuY3Rpb25kZWYp
OgorICAgICAgICAoZnVuYXJnKToKKyAgICAgICAgKHJldHVybi5zdGFydFN0YXRlKToKKyAgICAg
ICAgKHJldHVybi50b2tlbik6CisgICAgICAgIChyZXR1cm4pOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQveG1sLmpzOiBBZGRlZC4KKyAgICAgICAgKENvZGVNaXJyb3IuZGVmaW5lTW9k
ZS4pOgorICAgICAgICAoQ29kZU1pcnJvci5kZWZpbmVNb2RlKToKKwogMjAxMi0wOC0wNyAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
T25seSB1c2UgcHVibGljIFBsYXRmb3JtIEFQSSBpbiBOb25Db21wb3NpdGVkQ29udGVudEhvc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCBhNjJiYThiNjVhYTdiNjU3ZGY5MDcyZDY3YjYwOWNjMWQ0ZGUw
NWIwLi40ODViN2Q4ZGUzOWRiN2U0MTk0YTEwNDgzYmQxYzcyN2I0ZWIwODQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC02MjUzLDYgKzYyNTMsMTIgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJhclBhbmUuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanMnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ2hlY2tib3guanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9u
dC1lbmQvQ29kZU1pcnJvclRleHRFZGl0b3IuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvY29kZW1pcnJvci5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9jc3MuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvamF2YXNjcmlwdC5q
cycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC94bWwuanMnLAorICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvaHRtbG1peGVkLmpzJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL0NvbG9yLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9Db25zb2xlTWVzc2FnZS5qcycsCkBAIC02NDQxLDYgKzY0NDcsOCBAQAogICAgICAg
ICBdLAogICAgICAgICAnd2ViaW5zcGVjdG9yX3N0YW5kYWxvbmVfY3NzX2ZpbGVzJzogWwogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvYXVkaXRzUGFuZWwuY3NzJywKKyAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL2NvZGVtaXJyb3IuY3NzJywKKyAgICAgICAgICAgICdp
bnNwZWN0b3IvZnJvbnQtZW5kL2NtZGV2dG9vbHMuY3NzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL2RhdGFHcmlkLmNzcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9lbGVtZW50c1BhbmVsLmNzcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9maWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cuY3NzJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNmRlNDg5OWE4ZWNlYzlmZTc4MWMxMTc4
OTIxZWFhNGM0MDE5NTVkZC4uYzdkZDAxMDkzYjU3M2RiZjIwYjA3ZDE2Mzk0M2UyYTU5MzU2MTMx
MiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAg
LTc1NDE4LDYgKzc1NDE4LDIyIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXENvZGVNaXJyb3JUZXh0RWRp
dG9yLmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxjb2RlbWlycm9yLmpzIgorCQkJCQk+CisJCQkJPC9G
aWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVu
ZFxjb2RlbWlycm9yLmNzcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcY21kZXZ0b29scy5jc3MiCisJCQkJ
CT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0
b3JcZnJvbnQtZW5kXENvbG9yLmpzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5IGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CmluZGV4IGU2YjQ5OGVlYmFmZjlk
Y2EzNmNlOGM4Y2ZhMThiNDI0NjAwZGFjNTMuLjA5YjFkMzRlZjk4YzAxOGUxOTNhMDUyM2E4NDJm
N2Y4MWVhZmIyNmUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxl
LWZyb250LWVuZC5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9u
dC1lbmQucHkKQEAgLTExNiw2ICsxMTYsNyBAQCBtb2R1bGVzID0gWwogICAgICAgICAic291cmNl
cyI6IFsKICAgICAgICAgICAgICJBZHZhbmNlZFNlYXJjaENvbnRyb2xsZXIuanMiLAogICAgICAg
ICAgICAgIkNoZWNrYm94LmpzIiwKKyAgICAgICAgICAgICJDb2RlTWlycm9yVGV4dEVkaXRvci5q
cyIsCiAgICAgICAgICAgICAiQ29udGV4dE1lbnUuanMiLAogICAgICAgICAgICAgIkNvb2tpZXNU
YWJsZS5qcyIsCiAgICAgICAgICAgICAiRE9NU3ludGF4SGlnaGxpZ2h0ZXIuanMiLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db2RlTWlycm9yVGV4dEVk
aXRvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29kZU1pcnJvclRl
eHRFZGl0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI5ZjNhNjdlMTMzZDg1YTk0ZmFmNDUwM2ZlZTUwOGFm
NTM0ZjJkMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQ29kZU1pcnJvclRleHRFZGl0b3IuanMKQEAgLTAsMCArMSwzNDcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBj
b25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5WaWV3fQorICogQGltcGxlbWVu
dHMge1dlYkluc3BlY3Rvci5UZXh0RWRpdG9yfQorICogQHBhcmFtIHs/c3RyaW5nfSB1cmwKKyAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JEZWxlZ2F0ZX0gZGVsZWdhdGUKKyAqLwor
V2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yID0gZnVuY3Rpb24odXJsLCBkZWxlZ2F0
ZSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOworICAgIHRoaXMuX2RlbGVn
YXRlID0gZGVsZWdhdGU7CisgICAgdGhpcy5fdXJsID0gdXJsOworCisgICAgdGhpcy5yZWdpc3Rl
clJlcXVpcmVkQ1NTKCJjb2RlbWlycm9yLmNzcyIpOworICAgIHRoaXMucmVnaXN0ZXJSZXF1aXJl
ZENTUygiY21kZXZ0b29scy5jc3MiKTsKKworICAgIHRoaXMuX2NvZGVNaXJyb3IgPSBDb2RlTWly
cm9yKHRoaXMuZWxlbWVudCwgeworICAgICAgICBsaW5lTnVtYmVyczogdHJ1ZSwKKyAgICAgICAg
Zml4ZWRHdXR0ZXI6IHRydWUsCisgICAgICAgIG9uQ2hhbmdlOiB0aGlzLl9vbkNoYW5nZS5iaW5k
KHRoaXMpLAorICAgICAgICBleHRyYUtleXM6IHsgIkN0cmwtUyI6IHRoaXMuX2NvbW1pdEVkaXRp
bmcuYmluZCh0aGlzKSB9CisgICAgfSk7CisKKyAgICB0aGlzLl9sYXN0UmFuZ2UgPSB0aGlzLnJh
bmdlKCk7CisKKyAgICB0aGlzLmVsZW1lbnQuZmlyc3RDaGlsZC5hZGRTdHlsZUNsYXNzKCJzb3Vy
Y2UtY29kZSIpOworICAgIHRoaXMuZWxlbWVudC5maXJzdENoaWxkLmFkZFN0eWxlQ2xhc3MoImZp
bGwiKTsKK30KKworV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZSA9
IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWltZVR5cGUKKyAgICAgKi8KKyAg
ICBzZXQgbWltZVR5cGUobWltZVR5cGUpCisgICAgeworICAgICAgICB0aGlzLl9jb2RlTWlycm9y
LnNldE9wdGlvbigibW9kZSIsIG1pbWVUeXBlKTsKKyAgICAgICAgc3dpdGNoKG1pbWVUeXBlKSB7
CisgICAgICAgICAgICBjYXNlICJ0ZXh0L2h0bWwiOiB0aGlzLl9jb2RlTWlycm9yLnNldE9wdGlv
bigidGhlbWUiLCAid2ViLWluc3BlY3Rvci1odG1sIik7IGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSAidGV4dC9jc3MiOiB0aGlzLl9jb2RlTWlycm9yLnNldE9wdGlvbigidGhlbWUiLCAid2ViLWlu
c3BlY3Rvci1jc3MiKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJ0ZXh0L2phdmFzY3JpcHQi
OiB0aGlzLl9jb2RlTWlycm9yLnNldE9wdGlvbigidGhlbWUiLCAid2ViLWluc3BlY3Rvci1qcyIp
OyBicmVhazsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Jv
b2xlYW59IHJlYWRPbmx5CisgICAgICovCisgICAgc2V0UmVhZE9ubHk6IGZ1bmN0aW9uKHJlYWRP
bmx5KQorICAgIHsKKyAgICAgICAgdGhpcy5fY29kZU1pcnJvci5zZXRPcHRpb24oInJlYWRPbmx5
IiwgcmVhZE9ubHkpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtib29sZWFu
fQorICAgICAqLworICAgIHJlYWRPbmx5OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fY29kZU1pcnJvci5nZXRPcHRpb24oInJlYWRPbmx5Iik7CisgICAgfSwKKworICAg
IC8qKgorICAgICAqIEByZXR1cm4ge0VsZW1lbnR9CisgICAgICovCisgICAgZGVmYXVsdEZvY3Vz
ZWRFbGVtZW50OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50
LmZpcnN0Q2hpbGQ7CisgICAgfSwKKworICAgIGZvY3VzOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICB0aGlzLl9jb2RlTWlycm9yLmZvY3VzKCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCisgICAgICovCisgICAgcmV2ZWFsTGluZTogZnVu
Y3Rpb24obGluZU51bWJlcikKKyAgICB7CisgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iuc2V0Q3Vy
c29yKHsgbGluZTogbGluZU51bWJlciwgY2g6IDAgfSk7CisgICAgICAgIHZhciBjb29yZHMgPSB0
aGlzLl9jb2RlTWlycm9yLmN1cnNvckNvb3JkcygpOworICAgICAgICB0aGlzLl9jb2RlTWlycm9y
LnNjcm9sbFRvKGNvb3Jkcy54LCBjb29yZHMueSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCisgICAgICogQHBhcmFtIHtzdHJpbmd8RWxlbWVu
dH0gZGVjb3JhdGlvbgorICAgICAqLworICAgIGFkZERlY29yYXRpb246IGZ1bmN0aW9uKGxpbmVO
dW1iZXIsIGRlY29yYXRpb24pCisgICAgeworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gbGluZU51bWJlcgorICAgICAqIEBwYXJhbSB7c3RyaW5nfEVsZW1lbnR9IGRl
Y29yYXRpb24KKyAgICAgKi8KKyAgICByZW1vdmVEZWNvcmF0aW9uOiBmdW5jdGlvbihsaW5lTnVt
YmVyLCBkZWNvcmF0aW9uKQorICAgIHsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfSByYW5nZQorICAgICAqLworICAgIG1hcmtBbmRSZXZl
YWxSYW5nZTogZnVuY3Rpb24ocmFuZ2UpCisgICAgeworICAgICAgICBpZiAocmFuZ2UpCisgICAg
ICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihyYW5nZSk7CisgICAgfSwKKworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCisgICAgICovCisgICAgaGlnaGxpZ2h0TGlu
ZTogZnVuY3Rpb24obGluZU51bWJlcikKKyAgICB7CisgICAgICAgIHZhciBsaW5lID0gdGhpcy5f
Y29kZU1pcnJvci5nZXRMaW5lKGxpbmVOdW1iZXIpOworICAgICAgICB2YXIgbWFyayA9IHRoaXMu
X2NvZGVNaXJyb3IubWFya1RleHQoeyBsaW5lOiBsaW5lTnVtYmVyLCBjaDogMCB9LCB7IGxpbmU6
IGxpbmVOdW1iZXIsIGNoOiBsaW5lLmxlbmd0aCB9LCAiQ29kZU1pcnJvci1zZWFyY2hpbmciKTsK
KyAgICAgICAgZnVuY3Rpb24gY2xlYXJNYXJrKCkKKyAgICAgICAgeworICAgICAgICAgICAgbWFy
ay5jbGVhcigpOworICAgICAgICB9OworICAgICAgICBzZXRUaW1lb3V0KGNsZWFyTWFyaywgMTAw
MCk7CisgICAgfSwKKworICAgIGNsZWFyTGluZUhpZ2hsaWdodDogZnVuY3Rpb24oKQorICAgIHsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7QXJyYXkuPEVsZW1lbnQ+fQorICAg
ICAqLworICAgIGVsZW1lbnRzVG9SZXN0b3JlU2Nyb2xsUG9zaXRpb25zRm9yOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICByZXR1cm4gW107CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLlRleHRFZGl0b3J9IHRleHRFZGl0b3IKKyAgICAgKi8KKyAgICBp
bmhlcml0U2Nyb2xsUG9zaXRpb25zOiBmdW5jdGlvbih0ZXh0RWRpdG9yKQorICAgIHsKKyAgICB9
LAorCisgICAgb25SZXNpemU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2NvZGVN
aXJyb3IucmVmcmVzaCgpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5UZXh0UmFuZ2V9IHJhbmdlCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQKKyAg
ICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfQorICAgICAqLworICAgIGVkaXRS
YW5nZTogZnVuY3Rpb24ocmFuZ2UsIHRleHQpCisgICAgeworICAgICAgICB0aGlzLl9kZWxlZ2F0
ZS5iZWZvcmVUZXh0Q2hhbmdlZCgpOworCisgICAgICAgIHZhciBwb3MgPSB0aGlzLl90b1Bvcyhy
YW5nZSk7CisgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IucmVwbGFjZVJhbmdlKHRleHQsIHBvcy5z
dGFydCwgcG9zLmVuZCk7CisgICAgICAgIHZhciBuZXdSYW5nZSA9IHRoaXMuX3RvUmFuZ2UocG9z
LnN0YXJ0LCB0aGlzLl9jb2RlTWlycm9yLnBvc0Zyb21JbmRleCh0aGlzLl9jb2RlTWlycm9yLmlu
ZGV4RnJvbVBvcyhwb3Muc3RhcnQpICsgdGV4dC5sZW5ndGgpKTsKKworICAgICAgICB0aGlzLl9k
ZWxlZ2F0ZS5hZnRlclRleHRDaGFuZ2VkKHJhbmdlLCBuZXdSYW5nZSk7CisKKyAgICAgICAgcmV0
dXJuIG5ld1JhbmdlOworICAgIH0sCisKKyAgICBfb25DaGFuZ2U6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHRoaXMuX2RlbGVnYXRlLmJlZm9yZVRleHRDaGFuZ2VkKCk7CisgICAgICAgIHZh
ciBuZXdSYW5nZSA9IHRoaXMucmFuZ2UoKTsKKyAgICAgICAgdGhpcy5fZGVsZWdhdGUuYWZ0ZXJU
ZXh0Q2hhbmdlZCh0aGlzLl9sYXN0UmFuZ2UsIG5ld1JhbmdlKTsKKyAgICAgICAgdGhpcy5fbGFz
dFJhbmdlID0gbmV3UmFuZ2U7CisgICAgfSwKKworICAgIF9jb21taXRFZGl0aW5nOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICBpZiAodGhpcy5yZWFkT25seSgpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIHRoaXMuX2RlbGVnYXRlLmNvbW1pdEVkaXRpbmcoKTsKKyAg
ICAgICAgaWYgKHRoaXMuX3VybCAmJiBXZWJJbnNwZWN0b3IuZmlsZU1hbmFnZXIuaXNVUkxTYXZl
ZCh0aGlzLl91cmwpKQorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZpbGVNYW5hZ2VyLnNhdmUo
dGhpcy5fdXJsLCB0aGlzLnRleHQoKSwgZmFsc2UpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9LAorCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51bWJlcgorICAg
ICAqLworICAgIHNjcm9sbFRvTGluZTogZnVuY3Rpb24obGluZU51bWJlcikKKyAgICB7CisgICAg
ICAgIHRoaXMuX2NvZGVNaXJyb3Iuc2V0Q3Vyc29yKHtsaW5lOmxpbmVOdW1iZXIsIGNoOjB9KTsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlRleHRSYW5n
ZX0KKyAgICAgKi8KKyAgICBzZWxlY3Rpb246IGZ1bmN0aW9uKHRleHRSYW5nZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBudWxsOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtX
ZWJJbnNwZWN0b3IuVGV4dFJhbmdlP30KKyAgICAgKi8KKyAgICBsYXN0U2VsZWN0aW9uOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fbGFzdFNlbGVjdGlvbjsKKyAgICB9
LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfSB0ZXh0
UmFuZ2UKKyAgICAgKi8KKyAgICBzZXRTZWxlY3Rpb246IGZ1bmN0aW9uKHRleHRSYW5nZSkKKyAg
ICB7CisgICAgICAgIHRoaXMuX2xhc3RTZWxlY3Rpb24gPSB0ZXh0UmFuZ2U7CisgICAgICAgIHZh
ciBwb3MgPSB0aGlzLl90b1Bvcyh0ZXh0UmFuZ2UpOworICAgICAgICB0aGlzLl9jb2RlTWlycm9y
LnNldFNlbGVjdGlvbihwb3Muc3RhcnQsIHBvcy5lbmQpOworICAgIH0sCisKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dAorICAgICAqLworICAgIHNldFRleHQ6IGZ1bmN0aW9u
KHRleHQpCisgICAgeworICAgICAgICB0aGlzLl9jb2RlTWlycm9yLnNldFZhbHVlKHRleHQpOwor
ICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAg
dGV4dDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3Iu
Z2V0VmFsdWUoKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7V2ViSW5zcGVj
dG9yLlRleHRSYW5nZX0KKyAgICAgKi8KKyAgICByYW5nZTogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgdmFyIGxpbmVDb3VudCA9IHRoaXMubGluZXNDb3VudDsKKyAgICAgICAgdmFyIGxhc3RM
aW5lID0gdGhpcy5fY29kZU1pcnJvci5nZXRMaW5lKGxpbmVDb3VudCAtIDEpOworICAgICAgICBy
ZXR1cm4gdGhpcy5fdG9SYW5nZSh7IGxpbmU6IDAsIGNoOiAwIH0sIHsgbGluZTogbGluZUNvdW50
IC0gMSwgY2g6IGxhc3RMaW5lLmxlbmd0aCB9KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAg
ICovCisgICAgbGluZTogZnVuY3Rpb24obGluZU51bWJlcikKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLl9jb2RlTWlycm9yLmdldExpbmUobGluZU51bWJlcik7CisgICAgfSwKKworICAgIC8q
KgorICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBnZXQgbGluZXNDb3VudCgp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY29kZU1pcnJvci5saW5lQ291bnQoKTsKKyAg
ICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmUKKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7T2JqZWN0P30gdmFsdWUKKyAgICAgKi8K
KyAgICBzZXRBdHRyaWJ1dGU6IGZ1bmN0aW9uKGxpbmUsIG5hbWUsIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgdmFyIGhhbmRsZSA9IHRoaXMuX2NvZGVNaXJyb3IuZ2V0TGluZUhhbmRsZShsaW5lKTsK
KyAgICAgICAgaWYgKGhhbmRsZS5hdHRyaWJ1dGVzID09PSB1bmRlZmluZWQpIGhhbmRsZS5hdHRy
aWJ1dGVzID0ge307CisgICAgICAgIGhhbmRsZS5hdHRyaWJ1dGVzW25hbWVdID0gdmFsdWU7Cisg
ICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lCisgICAgICogQHBh
cmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcmV0dXJuIHtPYmplY3R8bnVsbH0gdmFsdWUKKyAg
ICAgKi8KKyAgICBnZXRBdHRyaWJ1dGU6IGZ1bmN0aW9uKGxpbmUsIG5hbWUpCisgICAgeworICAg
ICAgICB2YXIgaGFuZGxlID0gdGhpcy5fY29kZU1pcnJvci5nZXRMaW5lSGFuZGxlKGxpbmUpOwor
ICAgICAgICByZXR1cm4gaGFuZGxlLmF0dHJpYnV0ZXMgJiYgaGFuZGxlLmF0dHJpYnV0ZXNbbmFt
ZV0gIT09IHVuZGVmaW5lZCA/IGhhbmRsZS5hdHRyaWJ1dGVzW25hbWVdIDogbnVsbDsKKyAgICB9
LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmUKKyAgICAgKiBAcGFyYW0g
e3N0cmluZ30gbmFtZQorICAgICAqLworICAgIHJlbW92ZUF0dHJpYnV0ZTogZnVuY3Rpb24obGlu
ZSwgbmFtZSkKKyAgICB7CisgICAgICAgIHZhciBoYW5kbGUgPSB0aGlzLl9jb2RlTWlycm9yLmdl
dExpbmVIYW5kbGUobGluZSk7CisgICAgICAgIGlmIChoYW5kbGUuYXR0cmlidXRlcykKKyAgICAg
ICAgICAgIGRlbGV0ZSBoYW5kbGUuYXR0cmlidXRlc1tuYW1lXTsKKyAgICB9LAorCisgICAgd2Fz
U2hvd246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgfSwKKworICAgIHdpbGxIaWRlOiBmdW5jdGlv
bigpCisgICAgeworICAgIH0sCisKKyAgICBfdG9Qb3M6IGZ1bmN0aW9uKHJhbmdlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHN0YXJ0OiB7bGluZTogcmFuZ2Uuc3RhcnRM
aW5lLCBjaDogcmFuZ2Uuc3RhcnRDb2x1bW59LAorICAgICAgICAgICAgZW5kOiB7bGluZTogcmFu
Z2UuZW5kTGluZSwgY2g6IHJhbmdlLmVuZENvbHVtbn0KKyAgICAgICAgfQorICAgIH0sCisKKyAg
ICBfdG9SYW5nZTogZnVuY3Rpb24oc3RhcnQsIGVuZCkKKyAgICB7CisgICAgICAgIHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZShzdGFydC5saW5lLCBzdGFydC5jaCwgZW5kLmxpbmUs
IGVuZC5jaCk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3Iu
cHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0
b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRp
dG9yLmpzCmluZGV4IDMyMjQxZTQzNjQxMmIyODJhMTc0N2ExMTU4ZDBmNGZmMjNlZjc4NGIuLjE5
NWIxNTQ0NTQ0YzEwMGI2YzU1Y2VlNzk0OTIxZTE5N2EzYzExM2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcwpA
QCAtMTQxLDggKzE0MSwxMCBAQCBXZWJJbnNwZWN0b3IuRGVmYXVsdFRleHRFZGl0b3IucHJvdG90
eXBlID0gewogICAgICAqLwogICAgIGFkZERlY29yYXRpb246IGZ1bmN0aW9uKGxpbmVOdW1iZXIs
IGRlY29yYXRpb24pCiAgICAgeworICAgICAgICB0aGlzLl9iZWdpblVwZGF0ZXMoKTsKICAgICAg
ICAgdGhpcy5fbWFpblBhbmVsLmFkZERlY29yYXRpb24obGluZU51bWJlciwgZGVjb3JhdGlvbik7
CiAgICAgICAgIHRoaXMuX2d1dHRlclBhbmVsLmFkZERlY29yYXRpb24obGluZU51bWJlciwgZGVj
b3JhdGlvbik7CisgICAgICAgIHRoaXMuX2VuZFVwZGF0ZXMoKTsKICAgICB9LAogCiAgICAgLyoq
CkBAIC0xNTEsOCArMTUzLDEwIEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvci5wcm90
b3R5cGUgPSB7CiAgICAgICovCiAgICAgcmVtb3ZlRGVjb3JhdGlvbjogZnVuY3Rpb24obGluZU51
bWJlciwgZGVjb3JhdGlvbikKICAgICB7CisgICAgICAgIHRoaXMuX2JlZ2luVXBkYXRlcygpOwog
ICAgICAgICB0aGlzLl9tYWluUGFuZWwucmVtb3ZlRGVjb3JhdGlvbihsaW5lTnVtYmVyLCBkZWNv
cmF0aW9uKTsKICAgICAgICAgdGhpcy5fZ3V0dGVyUGFuZWwucmVtb3ZlRGVjb3JhdGlvbihsaW5l
TnVtYmVyLCBkZWNvcmF0aW9uKTsKKyAgICAgICAgdGhpcy5fZW5kVXBkYXRlcygpOwogICAgIH0s
CiAKICAgICAvKioKQEAgLTIwNSwxNiArMjA5LDE2IEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4
dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX21haW5QYW5lbC5lbGVtZW50Ll9z
Y3JvbGxMZWZ0ID0gdGV4dEVkaXRvci5fbWFpblBhbmVsLmVsZW1lbnQuc2Nyb2xsTGVmdDsKICAg
ICB9LAogCi0gICAgYmVnaW5VcGRhdGVzOiBmdW5jdGlvbigpCisgICAgX2JlZ2luVXBkYXRlczog
ZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fbWFpblBhbmVsLmJlZ2luVXBkYXRlcygp
OwotICAgICAgICB0aGlzLl9ndXR0ZXJQYW5lbC5iZWdpblVwZGF0ZXMoKTsKKyAgICAgICAgdGhp
cy5fbWFpblBhbmVsLl9iZWdpblVwZGF0ZXMoKTsKKyAgICAgICAgdGhpcy5fZ3V0dGVyUGFuZWwu
X2JlZ2luVXBkYXRlcygpOwogICAgIH0sCiAKLSAgICBlbmRVcGRhdGVzOiBmdW5jdGlvbigpCisg
ICAgX2VuZFVwZGF0ZXM6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX21haW5QYW5l
bC5lbmRVcGRhdGVzKCk7Ci0gICAgICAgIHRoaXMuX2d1dHRlclBhbmVsLmVuZFVwZGF0ZXMoKTsK
KyAgICAgICAgdGhpcy5fbWFpblBhbmVsLl9lbmRVcGRhdGVzKCk7CisgICAgICAgIHRoaXMuX2d1
dHRlclBhbmVsLl9lbmRVcGRhdGVzKCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVBhbmVsT2Zmc2V0
cygpOwogICAgIH0sCiAKQEAgLTUxOSw2ICs1MjMsOCBAQCBXZWJJbnNwZWN0b3IuRGVmYXVsdFRl
eHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3Rl
bmVyKCJzZWxlY3Rpb25jaGFuZ2UiLCB0aGlzLl9ib3VuZFNlbGVjdGlvbkNoYW5nZUxpc3RlbmVy
LCBmYWxzZSk7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9ib3VuZFNlbGVjdGlvbkNoYW5nZUxpc3Rl
bmVyOwogCisgICAgICAgIHRoaXMuZnJlZUNhY2hlZEVsZW1lbnRzKCk7CisKICAgICAgICAgaWYg
KCF0aGlzLnJlYWRPbmx5KCkpCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IubWFya0JlaW5nRWRp
dGVkKHRoaXMuZWxlbWVudCwgZmFsc2UpOwogICAgIH0KQEAgLTYwMCw3ICs2MDYsNyBAQCBXZWJJ
bnNwZWN0b3IuVGV4dEVkaXRvckNodW5rZWRQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBfYnVp
bGRDaHVua3M6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuYmVnaW5Eb21VcGRhdGVz
KCk7CisgICAgICAgIHRoaXMuX2JlZ2luRG9tVXBkYXRlcygpOwogCiAgICAgICAgIHRoaXMuX2Nv
bnRhaW5lci5yZW1vdmVDaGlsZHJlbigpOwogCkBAIC02MTMsNyArNjE5LDcgQEAgV2ViSW5zcGVj
dG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMu
X3JlcGFpbnRBbGwoKTsKIAotICAgICAgICB0aGlzLmVuZERvbVVwZGF0ZXMoKTsKKyAgICAgICAg
dGhpcy5fZW5kRG9tVXBkYXRlcygpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTY0Miw3ICs2NDgs
NyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckNodW5rZWRQYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICovCiAgICAgX3NwbGl0Q2h1bmtPbkFMaW5lOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBjaHVu
a051bWJlciwgY3JlYXRlU3VmZml4Q2h1bmspCiAgICAgewotICAgICAgICB0aGlzLmJlZ2luRG9t
VXBkYXRlcygpOworICAgICAgICB0aGlzLl9iZWdpbkRvbVVwZGF0ZXMoKTsKIAogICAgICAgICB2
YXIgb2xkQ2h1bmsgPSB0aGlzLl90ZXh0Q2h1bmtzW2NodW5rTnVtYmVyXTsKICAgICAgICAgdmFy
IHdhc0V4cGFuZGVkID0gb2xkQ2h1bmsuZXhwYW5kZWQ7CkBAIC02ODUsNyArNjkxLDcgQEAgV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgICAgIHN1ZmZpeENodW5rLmV4cGFuZGVkID0gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAg
IHRoaXMuZW5kRG9tVXBkYXRlcygpOworICAgICAgICB0aGlzLl9lbmREb21VcGRhdGVzKCk7CiAK
ICAgICAgICAgcmV0dXJuIGxpbmVDaHVuazsKICAgICB9LApAQCAtNzA0LDI0ICs3MTAsMjQgQEAg
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLl9yZXBhaW50QWxsVGltZXIgPSBzZXRUaW1lb3V0KHRoaXMuX3JlcGFpbnRBbGwuYmlu
ZCh0aGlzKSwgNTApOwogICAgIH0sCiAKLSAgICBiZWdpblVwZGF0ZXM6IGZ1bmN0aW9uKCkKKyAg
ICBfYmVnaW5VcGRhdGVzOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLl9wYWludENv
YWxlc2NpbmdMZXZlbCsrOwogICAgIH0sCiAKLSAgICBlbmRVcGRhdGVzOiBmdW5jdGlvbigpCisg
ICAgX2VuZFVwZGF0ZXM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3BhaW50Q29h
bGVzY2luZ0xldmVsLS07CiAgICAgICAgIGlmICghdGhpcy5fcGFpbnRDb2FsZXNjaW5nTGV2ZWwp
CiAgICAgICAgICAgICB0aGlzLl9yZXBhaW50QWxsKCk7CiAgICAgfSwKIAotICAgIGJlZ2luRG9t
VXBkYXRlczogZnVuY3Rpb24oKQorICAgIF9iZWdpbkRvbVVwZGF0ZXM6IGZ1bmN0aW9uKCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX2RvbVVwZGF0ZUNvYWxlc2NpbmdMZXZlbCsrOwogICAgIH0sCiAK
LSAgICBlbmREb21VcGRhdGVzOiBmdW5jdGlvbigpCisgICAgX2VuZERvbVVwZGF0ZXM6IGZ1bmN0
aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2RvbVVwZGF0ZUNvYWxlc2NpbmdMZXZlbC0tOwog
ICAgIH0sCkBAIC05MDMsNyArOTA5LDcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JHdXR0ZXJQ
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgdGV4dENoYW5nZWQ6IGZ1bmN0aW9uKG9s
ZFJhbmdlLCBuZXdSYW5nZSkKICAgICB7Ci0gICAgICAgIHRoaXMuYmVnaW5Eb21VcGRhdGVzKCk7
CisgICAgICAgIHRoaXMuX2JlZ2luRG9tVXBkYXRlcygpOwogCiAgICAgICAgIHZhciBsaW5lc0Rp
ZmYgPSBuZXdSYW5nZS5saW5lc0NvdW50IC0gb2xkUmFuZ2UubGluZXNDb3VudDsKICAgICAgICAg
aWYgKGxpbmVzRGlmZikgewpAQCAtOTY2LDcgKzk3Miw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRp
dG9yR3V0dGVyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
LSAgICAgICAgdGhpcy5lbmREb21VcGRhdGVzKCk7CisgICAgICAgIHRoaXMuX2VuZERvbVVwZGF0
ZXMoKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xMDU1LDEwICsxMDYxLDEwIEBAIFdlYkluc3Bl
Y3Rvci5UZXh0RWRpdG9yR3V0dGVyQ2h1bmsucHJvdG90eXBlID0gewogICAgICAqLwogICAgIGFk
ZERlY29yYXRpb246IGZ1bmN0aW9uKGRlY29yYXRpb24pCiAgICAgewotICAgICAgICB0aGlzLl90
ZXh0RWRpdG9yLmJlZ2luRG9tVXBkYXRlcygpOworICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLl9i
ZWdpbkRvbVVwZGF0ZXMoKTsKICAgICAgICAgaWYgKHR5cGVvZiBkZWNvcmF0aW9uID09PSAic3Ry
aW5nIikKICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKGRlY29yYXRpb24p
OwotICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmVuZERvbVVwZGF0ZXMoKTsKKyAgICAgICAgdGhp
cy5fdGV4dEVkaXRvci5fZW5kRG9tVXBkYXRlcygpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTEw
NjYsMTAgKzEwNzIsMTAgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JHdXR0ZXJDaHVuay5wcm90
b3R5cGUgPSB7CiAgICAgICovCiAgICAgcmVtb3ZlRGVjb3JhdGlvbjogZnVuY3Rpb24oZGVjb3Jh
dGlvbikKICAgICB7Ci0gICAgICAgIHRoaXMuX3RleHRFZGl0b3IuYmVnaW5Eb21VcGRhdGVzKCk7
CisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuX2JlZ2luRG9tVXBkYXRlcygpOwogICAgICAgICBp
ZiAodHlwZW9mIGRlY29yYXRpb24gPT09ICJzdHJpbmciKQogICAgICAgICAgICAgdGhpcy5lbGVt
ZW50LnJlbW92ZVN0eWxlQ2xhc3MoZGVjb3JhdGlvbik7Ci0gICAgICAgIHRoaXMuX3RleHRFZGl0
b3IuZW5kRG9tVXBkYXRlcygpOworICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLl9lbmREb21VcGRh
dGVzKCk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTA5Myw3ICsxMDk5LDcgQEAgV2ViSW5zcGVj
dG9yLlRleHRFZGl0b3JHdXR0ZXJDaHVuay5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlz
LmxpbmVzQ291bnQgPT09IDEpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5f
dGV4dEVkaXRvci5iZWdpbkRvbVVwZGF0ZXMoKTsKKyAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5f
YmVnaW5Eb21VcGRhdGVzKCk7CiAKICAgICAgICAgaWYgKGV4cGFuZGVkKSB7CiAgICAgICAgICAg
ICB0aGlzLl9leHBhbmRlZExpbmVSb3dzID0gW107CkBAIC0xMTIyLDcgKzExMjgsNyBAQCBXZWJJ
bnNwZWN0b3IuVGV4dEVkaXRvckd1dHRlckNodW5rLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IGRlbGV0ZSB0aGlzLl9leHBhbmRlZExpbmVSb3dzOwogICAgICAgICB9CiAKLSAgICAgICAgdGhp
cy5fdGV4dEVkaXRvci5lbmREb21VcGRhdGVzKCk7CisgICAgICAgIHRoaXMuX3RleHRFZGl0b3Iu
X2VuZERvbVVwZGF0ZXMoKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xMjIzLDcgKzEyMjksNyBA
QCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IGlmICh0aGlzLl9yZWFkT25seSA9PT0gcmVhZE9ubHkpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgdGhpcy5iZWdpbkRvbVVwZGF0ZXMoKTsKKyAgICAgICAgdGhpcy5fYmVnaW5Eb21V
cGRhdGVzKCk7CiAgICAgICAgIHRoaXMuX3JlYWRPbmx5ID0gcmVhZE9ubHk7CiAgICAgICAgIGlm
ICh0aGlzLl9yZWFkT25seSkKICAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5yZW1vdmVTdHls
ZUNsYXNzKCJ0ZXh0LWVkaXRvci1lZGl0YWJsZSIpOwpAQCAtMTIzMiw3ICsxMjM4LDcgQEAgV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAg
aWYgKHJlcXVlc3RGb2N1cykKICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb25P
blN0YXJ0RWRpdGluZygpOwogICAgICAgICB9Ci0gICAgICAgIHRoaXMuZW5kRG9tVXBkYXRlcygp
OworICAgICAgICB0aGlzLl9lbmREb21VcGRhdGVzKCk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAt
MTI4Niw3ICsxMjkyLDcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90
eXBlID0gewogICAgICAqLwogICAgIHNldEVkaXRhYmxlUmFuZ2U6IGZ1bmN0aW9uKHN0YXJ0TGlu
ZSwgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIHRoaXMuYmVnaW5Eb21VcGRhdGVzKCk7CisgICAg
ICAgIHRoaXMuX2JlZ2luRG9tVXBkYXRlcygpOwogCiAgICAgICAgIHZhciBmaXJzdENodW5rTnVt
YmVyID0gdGhpcy5fY2h1bmtOdW1iZXJGb3JMaW5lKHN0YXJ0TGluZSk7CiAgICAgICAgIHZhciBm
aXJzdENodW5rID0gdGhpcy5fdGV4dENodW5rc1tmaXJzdENodW5rTnVtYmVyXTsKQEAgLTEzMTIs
NyArMTMxOCw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgZm9yICh2YXIgY2h1bmtOdW1iZXIgPSBsYXN0Q2h1bmtOdW1iZXI7IGNodW5r
TnVtYmVyIDwgdGhpcy5fdGV4dENodW5rcy5sZW5ndGg7ICsrY2h1bmtOdW1iZXIpCiAgICAgICAg
ICAgICB0aGlzLl90ZXh0Q2h1bmtzW2NodW5rTnVtYmVyXS5yZWFkT25seSA9IHRydWU7CiAKLSAg
ICAgICAgdGhpcy5lbmREb21VcGRhdGVzKCk7CisgICAgICAgIHRoaXMuX2VuZERvbVVwZGF0ZXMo
KTsKICAgICB9LAogCiAgICAgY2xlYXJFZGl0YWJsZVJhbmdlOiBmdW5jdGlvbigpCkBAIC0xMzMx
LDEzICsxMzM3LDEzIEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9yYW5nZVRvTWFyazsKICAgICAgICAgICAg
IC8vIFJlbW92ZSB0aGUgbWFya2VkIHJlZ2lvbiBpbW1lZGlhdGVseS4KICAgICAgICAgICAgIGlm
ICghdGhpcy5fZGlydHlMaW5lcykgewotICAgICAgICAgICAgICAgIHRoaXMuYmVnaW5Eb21VcGRh
dGVzKCk7CisgICAgICAgICAgICAgICAgdGhpcy5fYmVnaW5Eb21VcGRhdGVzKCk7CiAgICAgICAg
ICAgICAgICAgdmFyIGNodW5rID0gdGhpcy5jaHVua0ZvckxpbmUobWFya2VkTGluZSk7CiAgICAg
ICAgICAgICAgICAgdmFyIHdhc0V4cGFuZGVkID0gY2h1bmsuZXhwYW5kZWQ7CiAgICAgICAgICAg
ICAgICAgY2h1bmsuZXhwYW5kZWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBjaHVuay51cGRh
dGVDb2xsYXBzZWRMaW5lUm93KCk7CiAgICAgICAgICAgICAgICAgY2h1bmsuZXhwYW5kZWQgPSB3
YXNFeHBhbmRlZDsKLSAgICAgICAgICAgICAgICB0aGlzLmVuZERvbVVwZGF0ZXMoKTsKKyAgICAg
ICAgICAgICAgICB0aGlzLl9lbmREb21VcGRhdGVzKCk7CiAgICAgICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgICAgICB0aGlzLl9wYWludExpbmVzKG1hcmtlZExpbmUsIG1hcmtlZExpbmUgKyAx
KTsKICAgICAgICAgfQpAQCAtMTM5MSw3ICsxMzk3LDcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fZGlydHlMaW5lcykK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICB0aGlzLmJlZ2luVXBkYXRlcygp
OworICAgICAgICB0aGlzLl9iZWdpblVwZGF0ZXMoKTsKIAogICAgICAgICBmdW5jdGlvbiBiZWZv
cmUoKQogICAgICAgICB7CkBAIC0xNDA1LDcgKzE0MTEsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVk
aXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdmFyIHJhbmdlID0gcmVkbyA/
IHRoaXMuX3RleHRNb2RlbC5yZWRvKGJlZm9yZS5iaW5kKHRoaXMpLCBhZnRlci5iaW5kKHRoaXMp
KSA6IHRoaXMuX3RleHRNb2RlbC51bmRvKGJlZm9yZS5iaW5kKHRoaXMpLCBhZnRlci5iaW5kKHRo
aXMpKTsKIAotICAgICAgICB0aGlzLmVuZFVwZGF0ZXMoKTsKKyAgICAgICAgdGhpcy5fZW5kVXBk
YXRlcygpOwogCiAgICAgICAgIC8vIFJlc3RvcmUgbG9jYXRpb24gcG9zdC1yZXBhaW50LgogICAg
ICAgICBpZiAocmFuZ2UpCkBAIC0xNDI4LDcgKzE0MzQsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVk
aXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdmFyIHJhbmdlID0gc2VsZWN0
aW9uLm5vcm1hbGl6ZSgpOwogCi0gICAgICAgIHRoaXMuYmVnaW5VcGRhdGVzKCk7CisgICAgICAg
IHRoaXMuX2JlZ2luVXBkYXRlcygpOwogICAgICAgICB0aGlzLl9lbnRlclRleHRDaGFuZ2VNb2Rl
KCk7CiAKICAgICAgICAgdmFyIG5ld1JhbmdlOwpAQCAtMTQ0Myw3ICsxNDQ5LDcgQEAgV2ViSW5z
cGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAg
ICAgICAgdGhpcy5fZXhpdFRleHRDaGFuZ2VNb2RlKHJhbmdlLCBuZXdSYW5nZSk7Ci0gICAgICAg
IHRoaXMuZW5kVXBkYXRlcygpOworICAgICAgICB0aGlzLl9lbmRVcGRhdGVzKCk7CiAgICAgICAg
IGlmIChyYW5nZVdhc0VtcHR5KQogICAgICAgICAgICAgbmV3UmFuZ2Uuc3RhcnRDb2x1bW4gPSBu
ZXdSYW5nZS5lbmRDb2x1bW47CiAgICAgICAgIHRoaXMuX3Jlc3RvcmVTZWxlY3Rpb24obmV3UmFu
Z2UsIHRydWUpOwpAQCAtMTU0OCw3ICsxNTU0LDcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JN
YWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIWluZGVudCkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICB0aGlzLmJlZ2luVXBkYXRlcygpOworICAgICAgICB0
aGlzLl9iZWdpblVwZGF0ZXMoKTsKICAgICAgICAgdGhpcy5fZW50ZXJUZXh0Q2hhbmdlTW9kZSgp
OwogCiAgICAgICAgIHZhciBsaW5lQnJlYWsgPSB0aGlzLl90ZXh0TW9kZWwubGluZUJyZWFrOwpA
QCAtMTU2Niw3ICsxNTcyLDcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJv
dG90eXBlID0gewogICAgICAgICAgICAgbmV3UmFuZ2UgPSB0aGlzLl9lZGl0UmFuZ2UocmFuZ2Us
IGxpbmVCcmVhayArIGluZGVudCk7CiAKICAgICAgICAgdGhpcy5fZXhpdFRleHRDaGFuZ2VNb2Rl
KHJhbmdlLCBuZXdSYW5nZSk7Ci0gICAgICAgIHRoaXMuZW5kVXBkYXRlcygpOworICAgICAgICB0
aGlzLl9lbmRVcGRhdGVzKCk7CiAgICAgICAgIHRoaXMuX3Jlc3RvcmVTZWxlY3Rpb24obmV3UmFu
Z2UuY29sbGFwc2VUb0VuZCgpLCB0cnVlKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE1
ODUsOSArMTU5MSw5IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgcmV0dXJuIGNodW5rOwogICAgIH0sCiAKLSAgICBiZWdpbkRvbVVwZGF0
ZXM6IGZ1bmN0aW9uKCkKKyAgICBfYmVnaW5Eb21VcGRhdGVzOiBmdW5jdGlvbigpCiAgICAgewot
ICAgICAgICBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckNodW5rZWRQYW5lbC5wcm90b3R5cGUuYmVn
aW5Eb21VcGRhdGVzLmNhbGwodGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9y
Q2h1bmtlZFBhbmVsLnByb3RvdHlwZS5fYmVnaW5Eb21VcGRhdGVzLmNhbGwodGhpcyk7CiAgICAg
ICAgIGlmICh0aGlzLl9kb21VcGRhdGVDb2FsZXNjaW5nTGV2ZWwgPT09IDEpIHsKICAgICAgICAg
ICAgIHRoaXMuX2NvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKCJET01DaGFyYWN0ZXJEYXRh
TW9kaWZpZWQiLCB0aGlzLl9oYW5kbGVET01VcGRhdGVzQ2FsbGJhY2ssIGZhbHNlKTsKICAgICAg
ICAgICAgIHRoaXMuX2NvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Ob2RlSW5zZXJ0
ZWQiLCB0aGlzLl9oYW5kbGVET01VcGRhdGVzQ2FsbGJhY2ssIGZhbHNlKTsKQEAgLTE1OTUsOSAr
MTYwMSw5IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgfQogICAgIH0sCiAKLSAgICBlbmREb21VcGRhdGVzOiBmdW5jdGlvbigpCisgICAg
X2VuZERvbVVwZGF0ZXM6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5U
ZXh0RWRpdG9yQ2h1bmtlZFBhbmVsLnByb3RvdHlwZS5lbmREb21VcGRhdGVzLmNhbGwodGhpcyk7
CisgICAgICAgIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yQ2h1bmtlZFBhbmVsLnByb3RvdHlwZS5f
ZW5kRG9tVXBkYXRlcy5jYWxsKHRoaXMpOwogICAgICAgICBpZiAodGhpcy5fZG9tVXBkYXRlQ29h
bGVzY2luZ0xldmVsID09PSAwKSB7CiAgICAgICAgICAgICB0aGlzLl9jb250YWluZXIuYWRkRXZl
bnRMaXN0ZW5lcigiRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVkIiwgdGhpcy5faGFuZGxlRE9NVXBk
YXRlc0NhbGxiYWNrLCBmYWxzZSk7CiAgICAgICAgICAgICB0aGlzLl9jb250YWluZXIuYWRkRXZl
bnRMaXN0ZW5lcigiRE9NTm9kZUluc2VydGVkIiwgdGhpcy5faGFuZGxlRE9NVXBkYXRlc0NhbGxi
YWNrLCBmYWxzZSk7CkBAIC0xODE0LDcgKzE4MjAsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICB0aGlzLmJlZ2luRG9tVXBkYXRlcygpOworICAgICAgICB0aGlzLl9iZWdpbkRv
bVVwZGF0ZXMoKTsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGlmICh0aGlzLl9zY2hlZHVs
ZWRQYWludExpbmVzIHx8IHRoaXMuX3BhaW50TGluZXNPcGVyYXRpb25zQ3JlZGl0IDwgMCkgewog
ICAgICAgICAgICAgICAgIHRoaXMuX3NjaGVkdWxlUGFpbnRMaW5lcyhsaW5lTnVtYmVyLCBsaW5l
TnVtYmVyICsgMSk7CkBAIC0xODYzLDcgKzE4NjksNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAg
ICBpZiAodGhpcy5fcmFuZ2VUb01hcmsgJiYgdGhpcy5fcmFuZ2VUb01hcmsuc3RhcnRMaW5lID09
PSBsaW5lTnVtYmVyKQogICAgICAgICAgICAgICAgIHRoaXMuX21hcmtlZFJhbmdlRWxlbWVudCA9
IFdlYkluc3BlY3Rvci5oaWdobGlnaHRTZWFyY2hSZXN1bHQobGluZVJvdywgdGhpcy5fcmFuZ2VU
b01hcmsuc3RhcnRDb2x1bW4sIHRoaXMuX3JhbmdlVG9NYXJrLmVuZENvbHVtbiAtIHRoaXMuX3Jh
bmdlVG9NYXJrLnN0YXJ0Q29sdW1uKTsKLSAgICAgICAgICAgIHRoaXMuZW5kRG9tVXBkYXRlcygp
OworICAgICAgICAgICAgdGhpcy5fZW5kRG9tVXBkYXRlcygpOwogICAgICAgICB9CiAgICAgfSwK
IApAQCAtMjI5MCwxMSArMjI5NiwxMSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgdGV4dENoYW5nZWQ6IGZ1bmN0aW9uKG9sZFJh
bmdlLCBuZXdSYW5nZSkKICAgICB7Ci0gICAgICAgIHRoaXMuYmVnaW5Eb21VcGRhdGVzKCk7Cisg
ICAgICAgIHRoaXMuX2JlZ2luRG9tVXBkYXRlcygpOwogICAgICAgICB0aGlzLl9yZW1vdmVEZWNv
cmF0aW9uc0luUmFuZ2Uob2xkUmFuZ2UpOwogICAgICAgICB0aGlzLl91cGRhdGVDaHVua3NGb3JS
YW5nZXMob2xkUmFuZ2UsIG5ld1JhbmdlKTsKICAgICAgICAgdGhpcy5fdXBkYXRlSGlnaGxpZ2h0
c0ZvclJhbmdlKG5ld1JhbmdlKTsKLSAgICAgICAgdGhpcy5lbmREb21VcGRhdGVzKCk7CisgICAg
ICAgIHRoaXMuX2VuZERvbVVwZGF0ZXMoKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0yNTExLDcg
KzI1MTcsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5DaHVuayA9IGZ1bmN0aW9uKGNo
dW5rZWRQYW5lbCwgc3RhcnRMaW5lLCBlbmRMaW5lKQogV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JN
YWluQ2h1bmsucHJvdG90eXBlID0gewogICAgIGFkZERlY29yYXRpb246IGZ1bmN0aW9uKGRlY29y
YXRpb24pCiAgICAgewotICAgICAgICB0aGlzLl9jaHVua2VkUGFuZWwuYmVnaW5Eb21VcGRhdGVz
KCk7CisgICAgICAgIHRoaXMuX2NodW5rZWRQYW5lbC5fYmVnaW5Eb21VcGRhdGVzKCk7CiAgICAg
ICAgIGlmICh0eXBlb2YgZGVjb3JhdGlvbiA9PT0gInN0cmluZyIpCiAgICAgICAgICAgICB0aGlz
LmVsZW1lbnQuYWRkU3R5bGVDbGFzcyhkZWNvcmF0aW9uKTsKICAgICAgICAgZWxzZSB7CkBAIC0y
NTIyLDcgKzI1MjgsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5DaHVuay5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuZGVjb3JhdGlv
bnNFbGVtZW50LmFwcGVuZENoaWxkKGRlY29yYXRpb24pOwogICAgICAgICB9Ci0gICAgICAgIHRo
aXMuX2NodW5rZWRQYW5lbC5lbmREb21VcGRhdGVzKCk7CisgICAgICAgIHRoaXMuX2NodW5rZWRQ
YW5lbC5fZW5kRG9tVXBkYXRlcygpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTI1MzAsMjMgKzI1
MzYsMjMgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluQ2h1bmsucHJvdG90eXBlID0gewog
ICAgICAqLwogICAgIHJlbW92ZURlY29yYXRpb246IGZ1bmN0aW9uKGRlY29yYXRpb24pCiAgICAg
ewotICAgICAgICB0aGlzLl9jaHVua2VkUGFuZWwuYmVnaW5Eb21VcGRhdGVzKCk7CisgICAgICAg
IHRoaXMuX2NodW5rZWRQYW5lbC5fYmVnaW5Eb21VcGRhdGVzKCk7CiAgICAgICAgIGlmICh0eXBl
b2YgZGVjb3JhdGlvbiA9PT0gInN0cmluZyIpCiAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVt
b3ZlU3R5bGVDbGFzcyhkZWNvcmF0aW9uKTsKICAgICAgICAgZWxzZSBpZiAodGhpcy5lbGVtZW50
LmRlY29yYXRpb25zRWxlbWVudCkKICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5kZWNvcmF0aW9u
c0VsZW1lbnQucmVtb3ZlQ2hpbGQoZGVjb3JhdGlvbik7Ci0gICAgICAgIHRoaXMuX2NodW5rZWRQ
YW5lbC5lbmREb21VcGRhdGVzKCk7CisgICAgICAgIHRoaXMuX2NodW5rZWRQYW5lbC5fZW5kRG9t
VXBkYXRlcygpOwogICAgIH0sCiAKICAgICByZW1vdmVBbGxEZWNvcmF0aW9uczogZnVuY3Rpb24o
KQogICAgIHsKLSAgICAgICAgdGhpcy5fY2h1bmtlZFBhbmVsLmJlZ2luRG9tVXBkYXRlcygpOwor
ICAgICAgICB0aGlzLl9jaHVua2VkUGFuZWwuX2JlZ2luRG9tVXBkYXRlcygpOwogICAgICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gIndlYmtpdC1saW5lLWNvbnRlbnQiOwogICAgICAgICBp
ZiAodGhpcy5lbGVtZW50LmRlY29yYXRpb25zRWxlbWVudCkgewogICAgICAgICAgICAgdGhpcy5l
bGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuZWxlbWVudC5kZWNvcmF0aW9uc0VsZW1lbnQpOwogICAg
ICAgICAgICAgZGVsZXRlIHRoaXMuZWxlbWVudC5kZWNvcmF0aW9uc0VsZW1lbnQ7CiAgICAgICAg
IH0KLSAgICAgICAgdGhpcy5fY2h1bmtlZFBhbmVsLmVuZERvbVVwZGF0ZXMoKTsKKyAgICAgICAg
dGhpcy5fY2h1bmtlZFBhbmVsLl9lbmREb21VcGRhdGVzKCk7CiAgICAgfSwKIAogICAgIC8qKgpA
QCAtMjU5Niw3ICsyNjAyLDcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluQ2h1bmsucHJv
dG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgdGhp
cy5fY2h1bmtlZFBhbmVsLmJlZ2luRG9tVXBkYXRlcygpOworICAgICAgICB0aGlzLl9jaHVua2Vk
UGFuZWwuX2JlZ2luRG9tVXBkYXRlcygpOwogCiAgICAgICAgIGlmIChleHBhbmRlZCkgewogICAg
ICAgICAgICAgdGhpcy5fZXhwYW5kZWRMaW5lUm93cyA9IFtdOwpAQCAtMjYzMCw3ICsyNjM2LDcg
QEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluQ2h1bmsucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgZGVsZXRlIHRoaXMuX2V4cGFuZGVkTGluZVJvd3M7CiAgICAgICAgIH0KIAotICAgICAg
ICB0aGlzLl9jaHVua2VkUGFuZWwuZW5kRG9tVXBkYXRlcygpOworICAgICAgICB0aGlzLl9jaHVu
a2VkUGFuZWwuX2VuZERvbVVwZGF0ZXMoKTsKICAgICB9LAogCiAgICAgc2V0IHJlYWRPbmx5KHJl
YWRPbmx5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9K
YXZhU2NyaXB0U291cmNlRnJhbWUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0phdmFTY3JpcHRTb3VyY2VGcmFtZS5qcwppbmRleCA3YzBhZThjZDQ5NTdmYjZhMGQ1MzQx
NTM3MzMyY2QwYTYyOTVjZjkxLi5hNGMyZmE5OTgxMTgxYzEwM2FmNzViMzFiZWI3MTY2YTg0NjQ1
NWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFT
Y3JpcHRTb3VyY2VGcmFtZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0phdmFTY3JpcHRTb3VyY2VGcmFtZS5qcwpAQCAtMzM1LDcgKzMzNSw2IEBAIFdlYkluc3Bl
Y3Rvci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICB9OwogICAg
ICAgICB0aGlzLnRleHRFZGl0b3Iuc2V0QXR0cmlidXRlKGxpbmVOdW1iZXIsICJicmVha3BvaW50
IiwgYnJlYWtwb2ludCk7CiAKLSAgICAgICAgdGhpcy50ZXh0RWRpdG9yLmJlZ2luVXBkYXRlcygp
OwogICAgICAgICB0aGlzLnRleHRFZGl0b3IuYWRkRGVjb3JhdGlvbihsaW5lTnVtYmVyLCAid2Vi
a2l0LWJyZWFrcG9pbnQiKTsKICAgICAgICAgaWYgKCFlbmFibGVkIHx8IChtdXRlZFdoaWxlRWRp
dGluZyAmJiAhdGhpcy5famF2YVNjcmlwdFNvdXJjZS5zdXBwb3J0c0VuYWJsZWRCcmVha3BvaW50
c1doaWxlRWRpdGluZygpKSkKICAgICAgICAgICAgIHRoaXMudGV4dEVkaXRvci5hZGREZWNvcmF0
aW9uKGxpbmVOdW1iZXIsICJ3ZWJraXQtYnJlYWtwb2ludC1kaXNhYmxlZCIpOwpAQCAtMzQ1LDE3
ICszNDQsMTQgQEAgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VGcmFtZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB0aGlzLnRleHRFZGl0b3IuYWRkRGVjb3JhdGlvbihsaW5lTnVtYmVy
LCAid2Via2l0LWJyZWFrcG9pbnQtY29uZGl0aW9uYWwiKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgdGhpcy50ZXh0RWRpdG9yLnJlbW92ZURlY29yYXRpb24obGluZU51bWJlciwgIndlYmtp
dC1icmVha3BvaW50LWNvbmRpdGlvbmFsIik7Ci0gICAgICAgIHRoaXMudGV4dEVkaXRvci5lbmRV
cGRhdGVzKCk7CiAgICAgfSwKIAogICAgIF9yZW1vdmVCcmVha3BvaW50RGVjb3JhdGlvbjogZnVu
Y3Rpb24obGluZU51bWJlcikKICAgICB7CiAgICAgICAgIHRoaXMudGV4dEVkaXRvci5yZW1vdmVB
dHRyaWJ1dGUobGluZU51bWJlciwgImJyZWFrcG9pbnQiKTsKLSAgICAgICAgdGhpcy50ZXh0RWRp
dG9yLmJlZ2luVXBkYXRlcygpOwogICAgICAgICB0aGlzLnRleHRFZGl0b3IucmVtb3ZlRGVjb3Jh
dGlvbihsaW5lTnVtYmVyLCAid2Via2l0LWJyZWFrcG9pbnQiKTsKICAgICAgICAgdGhpcy50ZXh0
RWRpdG9yLnJlbW92ZURlY29yYXRpb24obGluZU51bWJlciwgIndlYmtpdC1icmVha3BvaW50LWRp
c2FibGVkIik7CiAgICAgICAgIHRoaXMudGV4dEVkaXRvci5yZW1vdmVEZWNvcmF0aW9uKGxpbmVO
dW1iZXIsICJ3ZWJraXQtYnJlYWtwb2ludC1jb25kaXRpb25hbCIpOwotICAgICAgICB0aGlzLnRl
eHRFZGl0b3IuZW5kVXBkYXRlcygpOwogICAgIH0sCiAKICAgICBfb25Nb3VzZURvd246IGZ1bmN0
aW9uKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TZXR0aW5ncy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGlu
Z3MuanMKaW5kZXggMWVjMmM1NDJjYWVjNjE5NTdlMDczMjg5YzNiOWFjYTc4ZTFiMzI2Ni4uMTI5
OTU3YTA2NzU3NjgzY2JmODU2ZTY0NjliNGQ1ZjRlNjM1NDhhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCkBAIC0xOTMsNiArMTkzLDcgQEAg
V2ViSW5zcGVjdG9yLkV4cGVyaW1lbnRzU2V0dGluZ3MgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5n
ZW9sb2NhdGlvbk92ZXJyaWRlID0gdGhpcy5fY3JlYXRlRXhwZXJpbWVudCgiZ2VvbG9jYXRpb25P
dmVycmlkZSIsICJPdmVycmlkZSBEZXZpY2UgR2VvbG9jYXRpb24iKTsKICAgICB0aGlzLmRldmlj
ZU9yaWVudGF0aW9uT3ZlcnJpZGUgPSB0aGlzLl9jcmVhdGVFeHBlcmltZW50KCJkZXZpY2VPcmll
bnRhdGlvbk92ZXJyaWRlIiwgIk92ZXJyaWRlIERldmljZSBPcmllbnRhdGlvbiIpOwogICAgIHRo
aXMuc2FzcyA9IHRoaXMuX2NyZWF0ZUV4cGVyaW1lbnQoInNhc3MiLCAiU3VwcG9ydCBmb3IgU0FT
UyIpOworICAgIHRoaXMuY29kZW1pcnJvciA9IHRoaXMuX2NyZWF0ZUV4cGVyaW1lbnQoIkNvZGVN
aXJyb3IiLCAiVXNlIENvZGVNaXJyb3IgYXMgZWRpdG9yIik7CiAKICAgICB0aGlzLl9jbGVhblVw
U2V0dGluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9Tb3VyY2VGcmFtZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U291cmNlRnJhbWUuanMKaW5kZXggMjc1ODljNzBjOGRkYWJlMGExYzM3MjI3YzZiMjVhODg4ODRh
NjA0Mi4uNjcyOTJmNGFkYjU4ZjEzMjc0NGM4NmMyZTAwYTI1OGJmNmFkMThkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCkBAIC00
Miw3ICs0MiwxMSBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUgPSBmdW5jdGlvbihjb250ZW50
UHJvdmlkZXIpCiAgICAgdGhpcy5fY29udGVudFByb3ZpZGVyID0gY29udGVudFByb3ZpZGVyOwog
CiAgICAgdmFyIHRleHRFZGl0b3JEZWxlZ2F0ZSA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ckRlbGVnYXRlRm9yU291cmNlRnJhbWUodGhpcyk7Ci0gICAgdGhpcy5fdGV4dEVkaXRvciA9IG5l
dyBXZWJJbnNwZWN0b3IuRGVmYXVsdFRleHRFZGl0b3IodGhpcy5fdXJsLCB0ZXh0RWRpdG9yRGVs
ZWdhdGUpOworCisgICAgaWYgKFdlYkluc3BlY3Rvci5leHBlcmltZW50c1NldHRpbmdzLmNvZGVt
aXJyb3IuaXNFbmFibGVkKCkpCisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IgPSBuZXcgV2ViSW5z
cGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yKHRoaXMuX3VybCwgdGV4dEVkaXRvckRlbGVnYXRl
KTsKKyAgICBlbHNlCisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IgPSBuZXcgV2ViSW5zcGVjdG9y
LkRlZmF1bHRUZXh0RWRpdG9yKHRoaXMuX3VybCwgdGV4dEVkaXRvckRlbGVnYXRlKTsKIAogICAg
IHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IC0xOwogICAgIHRoaXMuX3NlYXJjaFJl
c3VsdHMgPSBbXTsKQEAgLTk0LDggKzk4LDYgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnBy
b3RvdHlwZSA9IHsKICAgICB3aWxsSGlkZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgV2Vi
SW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLndpbGxIaWRlLmNhbGwodGhpcyk7Ci0gICAgICAgIGlm
ICh0aGlzLmxvYWRlZCkKLSAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuZnJlZUNhY2hlZEVs
ZW1lbnRzKCk7CiAKICAgICAgICAgdGhpcy5fY2xlYXJMaW5lSGlnaGxpZ2h0KCk7CiAgICAgICAg
IHRoaXMuX2NsZWFyTGluZVRvUmV2ZWFsKCk7CkBAIC0yOTQsOCArMjk2LDYgQEAgV2ViSW5zcGVj
dG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fbG9hZGVkID0gdHJ1
ZTsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5zZXRUZXh0KGNvbnRlbnQgfHwgIiIpOwogCi0g
ICAgICAgIHRoaXMuX3RleHRFZGl0b3IuYmVnaW5VcGRhdGVzKCk7Ci0KICAgICAgICAgdGhpcy5f
c2V0VGV4dEVkaXRvckRlY29yYXRpb25zKCk7CiAKICAgICAgICAgdGhpcy5fd2FzU2hvd25Pckxv
YWRlZCgpOwpAQCAtMzA2LDggKzMwNiw2IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90
b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLm9uVGV4dEVkaXRvckNvbnRlbnRM
b2FkZWQoKTsKLQotICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmVuZFVwZGF0ZXMoKTsKICAgICB9
LAogCiAgICAgb25UZXh0RWRpdG9yQ29udGVudExvYWRlZDogZnVuY3Rpb24oKSB7fSwKQEAgLTMx
NywxMyArMzE1LDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fcm93TWVzc2FnZXMgPSB7fTsKICAgICAgICAgdGhpcy5fbWVzc2FnZUJ1YmJs
ZXMgPSB7fTsKIAotICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmJlZ2luVXBkYXRlcygpOwotCiAg
ICAgICAgIHRoaXMuX2FkZEV4aXN0aW5nTWVzc2FnZXNUb1NvdXJjZSgpOwogCiAgICAgICAgIHRo
aXMuX3RleHRFZGl0b3IuZG9SZXNpemUoKTsKLQotICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmVu
ZFVwZGF0ZXMoKTsKICAgICB9LAogCiAgICAgLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3IuanMKaW5kZXggZjY4ZTliNmM1Zjc4OTU0OWJjMjMw
ZGI1OGI5OWViZTA1M2I1NGJhNC4uNGNmOTExY2IyNmQzZWZkODFkYjg0YjZiMzczMWE2MDhmZGQ5
Y2I3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0
RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVk
aXRvci5qcwpAQCAtOTcsMTAgKzk3LDYgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IucHJvdG90
eXBlID0gewogICAgICAqLwogICAgIGluaGVyaXRTY3JvbGxQb3NpdGlvbnM6IGZ1bmN0aW9uKHRl
eHRFZGl0b3IpIHsgfSwKIAotICAgIGJlZ2luVXBkYXRlczogZnVuY3Rpb24oKSB7IH0sCi0KLSAg
ICBlbmRVcGRhdGVzOiBmdW5jdGlvbigpIHsgfSwKLQogICAgIG9uUmVzaXplOiBmdW5jdGlvbigp
IHsgfSwKIAogICAgIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9XZWJLaXQucXJjIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9X
ZWJLaXQucXJjCmluZGV4IDJkMGEyMTVhMjcyZDI5NTY3MTNjMTNjMjBhYzE0MmE0Nzk0M2UyMDku
LjFiZmYyMThlY2JmZGIyNzY0ZGRlM2Q5NDM2MDM4ZjQwZjEzZmY5YTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKQEAgLTE1LDYgKzE1LDcgQEAK
ICAgICA8ZmlsZT5CcmVha3BvaW50c1NpZGViYXJQYW5lLmpzPC9maWxlPgogICAgIDxmaWxlPkNh
bGxTdGFja1NpZGViYXJQYW5lLmpzPC9maWxlPgogICAgIDxmaWxlPkNoZWNrYm94LmpzPC9maWxl
PgorICAgIDxmaWxlPkNvZGVNaXJyb3JUZXh0RWRpdG9yLmpzPC9maWxlPgogICAgIDxmaWxlPkNv
bG9yLmpzPC9maWxlPgogICAgIDxmaWxlPkNvbXBpbGVyU2NyaXB0TWFwcGluZy5qczwvZmlsZT4K
ICAgICA8ZmlsZT5Db25zb2xlTWVzc2FnZS5qczwvZmlsZT4KQEAgLTE5Nyw3ICsxOTgsOSBAQAog
ICAgIDxmaWxlPldvcmtzcGFjZS5qczwvZmlsZT4KICAgICA8ZmlsZT5VZ2xpZnlKUy9wYXJzZS1q
cy5qczwvZmlsZT4KICAgICA8ZmlsZT5hdWRpdHNQYW5lbC5jc3M8L2ZpbGU+CisgICAgPGZpbGU+
Y29kZW1pcnJvci5jc3M8L2ZpbGU+CiAgICAgPGZpbGU+ZGF0YUdyaWQuY3NzPC9maWxlPgorICAg
IDxmaWxlPmNtZGV2dG9vbHMuY3NzPC9maWxlPgogICAgIDxmaWxlPmRpYWxvZy5jc3M8L2ZpbGU+
CiAgICAgPGZpbGU+ZWxlbWVudHNQYW5lbC5jc3M8L2ZpbGU+CiAgICAgPGZpbGU+ZmlsdGVyZWRJ
dGVtU2VsZWN0aW9uRGlhbG9nLmNzczwvZmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvY21kZXZ0b29scy5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2NtZGV2dG9vbHMuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2MjY4ZGYzMTNlOGRl
NThmMDM4Y2UzN2JiNTY1YzBlODA5NDUzZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2NtZGV2dG9vbHMuY3NzCkBAIC0wLDAgKzEsMjYgQEAK
Ky5Db2RlTWlycm9yLXNjcm9sbCB7CisgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OworfQorLkNv
ZGVNaXJyb3IgeworICBsaW5lLWhlaWdodDogMS4xZW07Cit9CisuY20tcy13ZWItaW5zcGVjdG9y
LWpzIHNwYW4uY20ta2V5d29yZCB7Y29sb3I6IHJnYigxNzAsIDEzLCAxNDUpO30KKy5jbS1zLXdl
Yi1pbnNwZWN0b3ItanMgc3Bhbi5jbS1udW1iZXIge2NvbG9yOiByZ2IoMjgsIDAsIDIwNyk7fQor
LmNtLXMtd2ViLWluc3BlY3Rvci1qcyBzcGFuLmNtLWNvbW1lbnQge2NvbG9yOiByZ2IoMCwgMTE2
LCAwKTt9CisuY20tcy13ZWItaW5zcGVjdG9yLWpzIHNwYW4uY20tc3RyaW5nIHtjb2xvcjogcmdi
KDE5NiwgMjYsIDIyKTt9CisuY20tcy13ZWItaW5zcGVjdG9yLWpzIHNwYW4uY20tc3RyaW5nLTIg
e2NvbG9yOiByZ2IoMTk2LCAyNiwgMjIpO30KKworLmNtLXMtd2ViLWluc3BlY3Rvci1jc3Mgc3Bh
bi5jbS1rZXl3b3JkIHsgY29sb3I6IHJnYig3LCAxNDQsIDE1NCk7fQorLmNtLXMtd2ViLWluc3Bl
Y3Rvci1jc3Mgc3Bhbi5jbS1udW1iZXIge2NvbG9yOiByZ2IoNTAsIDAsIDI1NSk7fQorLmNtLXMt
d2ViLWluc3BlY3Rvci1jc3Mgc3Bhbi5jbS1jb21tZW50IHtjb2xvcjogcmdiKDAsIDExNiwgMCk7
fQorLmNtLXMtd2ViLWluc3BlY3Rvci1jc3Mgc3Bhbi5jbS1zdHJpbmcge2NvbG9yOiByZ2IoNywg
MTQ0LCAxNTQpO30KKy5jbS1zLXdlYi1pbnNwZWN0b3ItY3NzIHNwYW4uY20tc3RyaW5nLTIge2Nv
bG9yOiByZ2IoNywgMTQ0LCAxNTQpO30KKy5jbS1zLXdlYi1pbnNwZWN0b3ItY3NzIHNwYW4uY20t
bGluayB7Y29sb3I6IHJnYig3LCAxNDQsIDE1NCk7fQorLmNtLXMtd2ViLWluc3BlY3Rvci1jc3Mg
c3Bhbi5jbS12YXJpYWJsZSB7Y29sb3I6IHJnYigyMDAsIDAsIDApO30KKworLmNtLXMtd2ViLWlu
c3BlY3Rvci1odG1sIHNwYW4uY20tbWV0YSB7Y29sb3I6IHJnYigxOTIsIDE5MiwgMTkyKTt9Cisu
Y20tcy13ZWItaW5zcGVjdG9yLWh0bWwgc3Bhbi5jbS1jb21tZW50IHtjb2xvcjogcmdiKDM1LCAx
MTAsIDM3KTt9CisuY20tcy13ZWItaW5zcGVjdG9yLWh0bWwgc3Bhbi5jbS1zdHJpbmcge2NvbG9y
OiByZ2IoMjYsIDI2LCAxNjYpO30KKy5jbS1zLXdlYi1pbnNwZWN0b3ItaHRtbCBzcGFuLmNtLXRh
ZyB7Y29sb3I6IHJnYigxMzYsIDE4LCAxMjgpO30KKy5jbS1zLXdlYi1pbnNwZWN0b3ItaHRtbCBz
cGFuLmNtLWF0dHJpYnV0ZSB7Y29sb3I6IHJnYigxNTMsIDY5LCAwKTt9CisuY20tcy13ZWItaW5z
cGVjdG9yLWh0bWwgc3Bhbi5jbS1saW5rIHtjb2xvcjogIzAwZTt9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2NvZGVtaXJyb3IuY3NzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9jb2RlbWlycm9yLmNzcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMGU5
MWIyZDczM2ExMWZmZGExYjBlMmZmM2I1MGE0YjMwYjViYWM0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9jb2RlbWlycm9yLmNzcwpAQCAtMCww
ICsxLDE3MyBAQAorLkNvZGVNaXJyb3IgeworICBsaW5lLWhlaWdodDogMWVtOworICBmb250LWZh
bWlseTogbW9ub3NwYWNlOworCisgIC8qIE5lY2Vzc2FyeSBzbyB0aGUgc2Nyb2xsYmFyIGNhbiBi
ZSBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgd2l0aGluIHRoZSB3cmFwcGVyIG9uIExpb24uICovCisg
IHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgLyogVGhpcyBwcmV2ZW50cyB1bndhbnRlZCBzY3JvbGxi
YXJzIGZyb20gc2hvd2luZyB1cCBvbiB0aGUgYm9keSBhbmQgd3JhcHBlciBpbiBJRS4gKi8KKyAg
b3ZlcmZsb3c6IGhpZGRlbjsKK30KKworLkNvZGVNaXJyb3Itc2Nyb2xsIHsKKyAgb3ZlcmZsb3c6
IGF1dG87CisgIGhlaWdodDogMzAwcHg7CisgIC8qIFRoaXMgaXMgbmVlZGVkIHRvIHByZXZlbnQg
YW4gSUVbNjddIGJ1ZyB3aGVyZSB0aGUgc2Nyb2xsZWQgY29udGVudAorICAgICBpcyB2aXNpYmxl
IG91dHNpZGUgb2YgdGhlIHNjcm9sbGluZyBib3guICovCisgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
KyAgb3V0bGluZTogbm9uZTsKK30KKworLyogVmVydGljYWwgc2Nyb2xsYmFyICovCisuQ29kZU1p
cnJvci1zY3JvbGxiYXIgeworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIHJpZ2h0OiAwOyB0b3A6
IDA7CisgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgb3ZlcmZsb3cteTogc2Nyb2xsOworICB6LWlu
ZGV4OiA1OworfQorLkNvZGVNaXJyb3Itc2Nyb2xsYmFyLWlubmVyIHsKKyAgLyogVGhpcyBuZWVk
cyB0byBoYXZlIGEgbm9uemVybyB3aWR0aCBpbiBvcmRlciBmb3IgdGhlIHNjcm9sbGJhciB0byBh
cHBlYXIKKyAgICAgaW4gRmlyZWZveCBhbmQgSUU5LiAqLworICB3aWR0aDogMXB4OworfQorLkNv
ZGVNaXJyb3Itc2Nyb2xsYmFyLmNtLXNiLW92ZXJsYXAgeworICAvKiBFbnN1cmUgdGhhdCB0aGUg
c2Nyb2xsYmFyIGFwcGVhcnMgaW4gTGlvbiwgYW5kIHRoYXQgaXQgb3ZlcmxhcHMgdGhlIGNvbnRl
bnQKKyAgICAgcmF0aGVyIHRoYW4gc2l0dGluZyB0byB0aGUgcmlnaHQgb2YgaXQuICovCisgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKKyAgei1pbmRleDogMTsKKyAgZmxvYXQ6IG5vbmU7CisgIHJpZ2h0
OiAwOworICBtaW4td2lkdGg6IDEycHg7Cit9CisuQ29kZU1pcnJvci1zY3JvbGxiYXIuY20tc2It
bm9ub3ZlcmxhcCB7CisgIG1pbi13aWR0aDogMTJweDsKK30KKy5Db2RlTWlycm9yLXNjcm9sbGJh
ci5jbS1zYi1pZTcgeworICBtaW4td2lkdGg6IDE4cHg7Cit9CisKKy5Db2RlTWlycm9yLWd1dHRl
ciB7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMDsgdG9wOiAwOworICB6LWluZGV4OiAx
MDsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNzsKKyAgYm9yZGVyLXJpZ2h0OiAxcHggc29s
aWQgI2VlZTsKKyAgbWluLXdpZHRoOiAyZW07CisgIGhlaWdodDogMTAwJTsKK30KKy5Db2RlTWly
cm9yLWd1dHRlci10ZXh0IHsKKyAgY29sb3I6ICNhYWE7CisgIHRleHQtYWxpZ246IHJpZ2h0Owor
ICBwYWRkaW5nOiAuNGVtIC4yZW0gLjRlbSAuNGVtOworICB3aGl0ZS1zcGFjZTogcHJlICFpbXBv
cnRhbnQ7CisgIGN1cnNvcjogZGVmYXVsdDsKK30KKy5Db2RlTWlycm9yLWxpbmVzIHsKKyAgcGFk
ZGluZzogLjRlbTsKKyAgd2hpdGUtc3BhY2U6IHByZTsKKyAgY3Vyc29yOiB0ZXh0OworfQorCisu
Q29kZU1pcnJvciBwcmUgeworICAtbW96LWJvcmRlci1yYWRpdXM6IDA7CisgIC13ZWJraXQtYm9y
ZGVyLXJhZGl1czogMDsKKyAgLW8tYm9yZGVyLXJhZGl1czogMDsKKyAgYm9yZGVyLXJhZGl1czog
MDsKKyAgYm9yZGVyLXdpZHRoOiAwOyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IGJhY2tncm91bmQ6
IHRyYW5zcGFyZW50OworICBmb250LWZhbWlseTogaW5oZXJpdDsKKyAgZm9udC1zaXplOiBpbmhl
cml0OworICBwYWRkaW5nOiAwOyBtYXJnaW46IDA7CisgIHdoaXRlLXNwYWNlOiBwcmU7CisgIHdv
cmQtd3JhcDogbm9ybWFsOworICBsaW5lLWhlaWdodDogaW5oZXJpdDsKKyAgY29sb3I6IGluaGVy
aXQ7Cit9CisKKy5Db2RlTWlycm9yLXdyYXAgcHJlIHsKKyAgd29yZC13cmFwOiBicmVhay13b3Jk
OworICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CisgIHdvcmQtYnJlYWs6IG5vcm1hbDsKK30KKy5D
b2RlTWlycm9yLXdyYXAgLkNvZGVNaXJyb3Itc2Nyb2xsIHsKKyAgb3ZlcmZsb3cteDogaGlkZGVu
OworfQorCisuQ29kZU1pcnJvciB0ZXh0YXJlYSB7CisgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFu
dDsKK30KKworLkNvZGVNaXJyb3IgcHJlLkNvZGVNaXJyb3ItY3Vyc29yIHsKKyAgei1pbmRleDog
MTA7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgdmlzaWJpbGl0eTogaGlkZGVuOworICBib3Jk
ZXItbGVmdDogMXB4IHNvbGlkIGJsYWNrOworICBib3JkZXItcmlnaHQ6IG5vbmU7CisgIHdpZHRo
OiAwOworfQorLmNtLWtleW1hcC1mYXQtY3Vyc29yIHByZS5Db2RlTWlycm9yLWN1cnNvciB7Cisg
IHdpZHRoOiBhdXRvOworICBib3JkZXI6IDA7CisgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50Owor
ICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDIwMCwgMCwgLjQpOworICBmaWx0ZXI6IHByb2dpZDpEWElt
YWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPSM2NjAwYzgwMCwg
ZW5kQ29sb3JzdHI9IzRjMDBjODAwKTsKK30KKy8qIEtsdWRnZSB0byB0dXJuIG9mZiBmaWx0ZXIg
aW4gaWU5Kywgd2hpY2ggYWxzbyBhY2NlcHRzIHJnYmEgKi8KKy5jbS1rZXltYXAtZmF0LWN1cnNv
ciBwcmUuQ29kZU1pcnJvci1jdXJzb3I6bm90KCNub25zZW5zZV9pZCkgeworICBmaWx0ZXI6IHBy
b2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChlbmFibGVkPWZhbHNlKTsK
K30KKy5Db2RlTWlycm9yIHByZS5Db2RlTWlycm9yLWN1cnNvci5Db2RlTWlycm9yLW92ZXJ3cml0
ZSB7fQorLkNvZGVNaXJyb3ItZm9jdXNlZCBwcmUuQ29kZU1pcnJvci1jdXJzb3IgeworICB2aXNp
YmlsaXR5OiB2aXNpYmxlOworfQorCitkaXYuQ29kZU1pcnJvci1zZWxlY3RlZCB7IGJhY2tncm91
bmQ6ICNkOWQ5ZDk7IH0KKy5Db2RlTWlycm9yLWZvY3VzZWQgZGl2LkNvZGVNaXJyb3Itc2VsZWN0
ZWQgeyBiYWNrZ3JvdW5kOiAjZDdkNGYwOyB9CisKKy5Db2RlTWlycm9yLXNlYXJjaGluZyB7Cisg
IGJhY2tncm91bmQ6ICNmZmE7CisgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDAsIC40KTsK
K30KKworLyogRGVmYXVsdCB0aGVtZSAqLworCisuY20tcy1kZWZhdWx0IHNwYW4uY20ta2V5d29y
ZCB7Y29sb3I6ICM3MDg7fQorLmNtLXMtZGVmYXVsdCBzcGFuLmNtLWF0b20ge2NvbG9yOiAjMjE5
O30KKy5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1udW1iZXIge2NvbG9yOiAjMTY0O30KKy5jbS1zLWRl
ZmF1bHQgc3Bhbi5jbS1kZWYge2NvbG9yOiAjMDBmO30KKy5jbS1zLWRlZmF1bHQgc3Bhbi5jbS12
YXJpYWJsZSB7Y29sb3I6IGJsYWNrO30KKy5jbS1zLWRlZmF1bHQgc3Bhbi5jbS12YXJpYWJsZS0y
IHtjb2xvcjogIzA1YTt9CisuY20tcy1kZWZhdWx0IHNwYW4uY20tdmFyaWFibGUtMyB7Y29sb3I6
ICMwODU7fQorLmNtLXMtZGVmYXVsdCBzcGFuLmNtLXByb3BlcnR5IHtjb2xvcjogYmxhY2s7fQor
LmNtLXMtZGVmYXVsdCBzcGFuLmNtLW9wZXJhdG9yIHtjb2xvcjogYmxhY2s7fQorLmNtLXMtZGVm
YXVsdCBzcGFuLmNtLWNvbW1lbnQge2NvbG9yOiAjYTUwO30KKy5jbS1zLWRlZmF1bHQgc3Bhbi5j
bS1zdHJpbmcge2NvbG9yOiAjYTExO30KKy5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1zdHJpbmctMiB7
Y29sb3I6ICNmNTA7fQorLmNtLXMtZGVmYXVsdCBzcGFuLmNtLW1ldGEge2NvbG9yOiAjNTU1O30K
Ky5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1lcnJvciB7Y29sb3I6ICNmMDA7fQorLmNtLXMtZGVmYXVs
dCBzcGFuLmNtLXF1YWxpZmllciB7Y29sb3I6ICM1NTU7fQorLmNtLXMtZGVmYXVsdCBzcGFuLmNt
LWJ1aWx0aW4ge2NvbG9yOiAjMzBhO30KKy5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1icmFja2V0IHtj
b2xvcjogI2NjNzt9CisuY20tcy1kZWZhdWx0IHNwYW4uY20tdGFnIHtjb2xvcjogIzE3MDt9Cisu
Y20tcy1kZWZhdWx0IHNwYW4uY20tYXR0cmlidXRlIHtjb2xvcjogIzAwYzt9CisuY20tcy1kZWZh
dWx0IHNwYW4uY20taGVhZGVyIHtjb2xvcjogYmx1ZTt9CisuY20tcy1kZWZhdWx0IHNwYW4uY20t
cXVvdGUge2NvbG9yOiAjMDkwO30KKy5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1ociB7Y29sb3I6ICM5
OTk7fQorLmNtLXMtZGVmYXVsdCBzcGFuLmNtLWxpbmsge2NvbG9yOiAjMDBjO30KKworc3Bhbi5j
bS1oZWFkZXIsIHNwYW4uY20tc3Ryb25nIHtmb250LXdlaWdodDogYm9sZDt9CitzcGFuLmNtLWVt
IHtmb250LXN0eWxlOiBpdGFsaWM7fQorc3Bhbi5jbS1lbXN0cm9uZyB7Zm9udC1zdHlsZTogaXRh
bGljOyBmb250LXdlaWdodDogYm9sZDt9CitzcGFuLmNtLWxpbmsge3RleHQtZGVjb3JhdGlvbjog
dW5kZXJsaW5lO30KKworc3Bhbi5jbS1pbnZhbGlkY2hhciB7Y29sb3I6ICNmMDA7fQorCitkaXYu
Q29kZU1pcnJvciBzcGFuLkNvZGVNaXJyb3ItbWF0Y2hpbmdicmFja2V0IHtjb2xvcjogIzBmMDt9
CitkaXYuQ29kZU1pcnJvciBzcGFuLkNvZGVNaXJyb3Itbm9ubWF0Y2hpbmdicmFja2V0IHtjb2xv
cjogI2YyMjt9CisKK0BtZWRpYSBwcmludCB7CisKKyAgLyogSGlkZSB0aGUgY3Vyc29yIHdoZW4g
cHJpbnRpbmcgKi8KKyAgLkNvZGVNaXJyb3IgcHJlLkNvZGVNaXJyb3ItY3Vyc29yIHsKKyAgICB2
aXNpYmlsaXR5OiBoaWRkZW47CisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvY29kZW1pcnJv
ci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvY29kZW1pcnJvci5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mZjdjNDU3MjIxN2ZkZDAyNDlkNTU5NTJmMGNkYTUxMjYxZTc5ZWM5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9jb2RlbWly
cm9yLmpzCkBAIC0wLDAgKzEsMzIyMCBAQAorLy8gQWxsIGZ1bmN0aW9ucyB0aGF0IG5lZWQgYWNj
ZXNzIHRvIHRoZSBlZGl0b3IncyBzdGF0ZSBsaXZlIGluc2lkZQorLy8gdGhlIENvZGVNaXJyb3Ig
ZnVuY3Rpb24uIEJlbG93IHRoYXQsIGF0IHRoZSBib3R0b20gb2YgdGhlIGZpbGUsCisvLyBzb21l
IHV0aWxpdGllcyBhcmUgZGVmaW5lZC4KKworLy8gQ29kZU1pcnJvciBpcyB0aGUgb25seSBnbG9i
YWwgdmFyIHdlIGNsYWltCit2YXIgQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKKyAgInVzZSBz
dHJpY3QiOworICAvLyBUaGlzIGlzIHRoZSBmdW5jdGlvbiB0aGF0IHByb2R1Y2VzIGFuIGVkaXRv
ciBpbnN0YW5jZS4gSXRzCisgIC8vIGNsb3N1cmUgaXMgdXNlZCB0byBzdG9yZSB0aGUgZWRpdG9y
IHN0YXRlLgorICBmdW5jdGlvbiBDb2RlTWlycm9yKHBsYWNlLCBnaXZlbk9wdGlvbnMpIHsKKyAg
ICAvLyBEZXRlcm1pbmUgZWZmZWN0aXZlIG9wdGlvbnMgYmFzZWQgb24gZ2l2ZW4gdmFsdWVzIGFu
ZCBkZWZhdWx0cy4KKyAgICB2YXIgb3B0aW9ucyA9IHt9LCBkZWZhdWx0cyA9IENvZGVNaXJyb3Iu
ZGVmYXVsdHM7CisgICAgZm9yICh2YXIgb3B0IGluIGRlZmF1bHRzKQorICAgICAgaWYgKGRlZmF1
bHRzLmhhc093blByb3BlcnR5KG9wdCkpCisgICAgICAgIG9wdGlvbnNbb3B0XSA9IChnaXZlbk9w
dGlvbnMgJiYgZ2l2ZW5PcHRpb25zLmhhc093blByb3BlcnR5KG9wdCkgPyBnaXZlbk9wdGlvbnMg
OiBkZWZhdWx0cylbb3B0XTsKKworICAgIHZhciBpbnB1dCA9IGVsdCgidGV4dGFyZWEiLCBudWxs
LCBudWxsLCAicG9zaXRpb246IGFic29sdXRlOyBwYWRkaW5nOiAwOyB3aWR0aDogMXB4OyBoZWln
aHQ6IDFlbSIpOworICAgIGlucHV0LnNldEF0dHJpYnV0ZSgid3JhcCIsICJvZmYiKTsgaW5wdXQu
c2V0QXR0cmlidXRlKCJhdXRvY29ycmVjdCIsICJvZmYiKTsgaW5wdXQuc2V0QXR0cmlidXRlKCJh
dXRvY2FwaXRhbGl6ZSIsICJvZmYiKTsKKyAgICAvLyBXcmFwcyBhbmQgaGlkZXMgaW5wdXQgdGV4
dGFyZWEKKyAgICB2YXIgaW5wdXREaXYgPSBlbHQoImRpdiIsIFtpbnB1dF0sIG51bGwsICJvdmVy
ZmxvdzogaGlkZGVuOyBwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzcHg7IGhlaWdodDogMHB4
OyIpOworICAgIC8vIFRoZSBlbXB0eSBzY3JvbGxiYXIgY29udGVudCwgdXNlZCBzb2xlbHkgZm9y
IG1hbmFnaW5nIHRoZSBzY3JvbGxiYXIgdGh1bWIuCisgICAgdmFyIHNjcm9sbGJhcklubmVyID0g
ZWx0KCJkaXYiLCBudWxsLCAiQ29kZU1pcnJvci1zY3JvbGxiYXItaW5uZXIiKTsKKyAgICAvLyBU
aGUgdmVydGljYWwgc2Nyb2xsYmFyLiBIb3Jpem9udGFsIHNjcm9sbGluZyBpcyBoYW5kbGVkIGJ5
IHRoZSBzY3JvbGxlciBpdHNlbGYuCisgICAgdmFyIHNjcm9sbGJhciA9IGVsdCgiZGl2IiwgW3Nj
cm9sbGJhcklubmVyXSwgIkNvZGVNaXJyb3Itc2Nyb2xsYmFyIik7CisgICAgLy8gRElWcyBjb250
YWluaW5nIHRoZSBzZWxlY3Rpb24gYW5kIHRoZSBhY3R1YWwgY29kZQorICAgIHZhciBsaW5lRGl2
ID0gZWx0KCJkaXYiKSwgc2VsZWN0aW9uRGl2ID0gZWx0KCJkaXYiLCBudWxsLCBudWxsLCAicG9z
aXRpb246IHJlbGF0aXZlOyB6LWluZGV4OiAtMSIpOworICAgIC8vIEJsaW5reSBjdXJzb3IsIGFu
ZCBlbGVtZW50IHVzZWQgdG8gZW5zdXJlIGN1cnNvciBmaXRzIGF0IHRoZSBlbmQgb2YgYSBsaW5l
CisgICAgdmFyIGN1cnNvciA9IGVsdCgicHJlIiwgIlx1MDBhMCIsICJDb2RlTWlycm9yLWN1cnNv
ciIpLCB3aWR0aEZvcmNlciA9IGVsdCgicHJlIiwgIlx1MDBhMCIsICJDb2RlTWlycm9yLWN1cnNv
ciIsICJ2aXNpYmlsaXR5OiBoaWRkZW4iKTsKKyAgICAvLyBVc2VkIHRvIG1lYXN1cmUgdGV4dCBz
aXplCisgICAgdmFyIG1lYXN1cmUgPSBlbHQoImRpdiIsIG51bGwsIG51bGwsICJwb3NpdGlvbjog
YWJzb2x1dGU7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDBweDsgb3ZlcmZsb3c6IGhpZGRlbjsgdmlz
aWJpbGl0eTogaGlkZGVuOyIpOworICAgIHZhciBsaW5lU3BhY2UgPSBlbHQoImRpdiIsIFttZWFz
dXJlLCBjdXJzb3IsIHdpZHRoRm9yY2VyLCBzZWxlY3Rpb25EaXYsIGxpbmVEaXZdLCBudWxsLCAi
cG9zaXRpb246IHJlbGF0aXZlOyB6LWluZGV4OiAwIik7CisgICAgdmFyIGd1dHRlclRleHQgPSBl
bHQoImRpdiIsIG51bGwsICJDb2RlTWlycm9yLWd1dHRlci10ZXh0IiksIGd1dHRlciA9IGVsdCgi
ZGl2IiwgW2d1dHRlclRleHRdLCAiQ29kZU1pcnJvci1ndXR0ZXIiKTsKKyAgICAvLyBNb3ZlZCBh
cm91bmQgaXRzIHBhcmVudCB0byBjb3ZlciB2aXNpYmxlIHZpZXcKKyAgICB2YXIgbW92ZXIgPSBl
bHQoImRpdiIsIFtndXR0ZXIsIGVsdCgiZGl2IiwgW2xpbmVTcGFjZV0sICJDb2RlTWlycm9yLWxp
bmVzIildLCBudWxsLCAicG9zaXRpb246IHJlbGF0aXZlIik7CisgICAgLy8gU2V0IHRvIHRoZSBo
ZWlnaHQgb2YgdGhlIHRleHQsIGNhdXNlcyBzY3JvbGxpbmcKKyAgICB2YXIgc2l6ZXIgPSBlbHQo
ImRpdiIsIFttb3Zlcl0sIG51bGwsICJwb3NpdGlvbjogcmVsYXRpdmUiKTsKKyAgICAvLyBQcm92
aWRlcyBzY3JvbGxpbmcKKyAgICB2YXIgc2Nyb2xsZXIgPSBlbHQoImRpdiIsIFtzaXplcl0sICJD
b2RlTWlycm9yLXNjcm9sbCIpOworICAgIHNjcm9sbGVyLnNldEF0dHJpYnV0ZSgidGFiSW5kZXgi
LCAiLTEiKTsKKyAgICAvLyBUaGUgZWxlbWVudCBpbiB3aGljaCB0aGUgZWRpdG9yIGxpdmVzLgor
ICAgIHZhciB3cmFwcGVyID0gZWx0KCJkaXYiLCBbaW5wdXREaXYsIHNjcm9sbGJhciwgc2Nyb2xs
ZXJdLCAiQ29kZU1pcnJvciIgKyAob3B0aW9ucy5saW5lV3JhcHBpbmcgPyAiIENvZGVNaXJyb3It
d3JhcCIgOiAiIikpOworICAgIGlmIChwbGFjZS5hcHBlbmRDaGlsZCkgcGxhY2UuYXBwZW5kQ2hp
bGQod3JhcHBlcik7IGVsc2UgcGxhY2Uod3JhcHBlcik7CisKKyAgICB0aGVtZUNoYW5nZWQoKTsg
a2V5TWFwQ2hhbmdlZCgpOworICAgIC8vIE5lZWRlZCB0byBoaWRlIGJpZyBibHVlIGJsaW5raW5n
IGN1cnNvciBvbiBNb2JpbGUgU2FmYXJpCisgICAgaWYgKGlvcykgaW5wdXQuc3R5bGUud2lkdGgg
PSAiMHB4IjsKKyAgICBpZiAoIXdlYmtpdCkgc2Nyb2xsZXIuZHJhZ2dhYmxlID0gdHJ1ZTsKKyAg
ICBsaW5lU3BhY2Uuc3R5bGUub3V0bGluZSA9ICJub25lIjsKKyAgICBpZiAob3B0aW9ucy50YWJp
bmRleCAhPSBudWxsKSBpbnB1dC50YWJJbmRleCA9IG9wdGlvbnMudGFiaW5kZXg7CisgICAgaWYg
KG9wdGlvbnMuYXV0b2ZvY3VzKSBmb2N1c0lucHV0KCk7CisgICAgaWYgKCFvcHRpb25zLmd1dHRl
ciAmJiAhb3B0aW9ucy5saW5lTnVtYmVycykgZ3V0dGVyLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7
CisgICAgLy8gTmVlZGVkIHRvIGhhbmRsZSBUYWIga2V5IGluIEtIVE1MCisgICAgaWYgKGtodG1s
KSBpbnB1dERpdi5zdHlsZS5oZWlnaHQgPSAiMXB4IiwgaW5wdXREaXYuc3R5bGUucG9zaXRpb24g
PSAiYWJzb2x1dGUiOworCisgICAgLy8gQ2hlY2sgZm9yIE9TIFggPj0gMTAuNy4gSWYgc28sIHdl
IG5lZWQgdG8gZm9yY2UgYSB3aWR0aCBvbiB0aGUgc2Nyb2xsYmFyLCBhbmQKKyAgICAvLyBtYWtl
IGl0IG92ZXJsYXAgdGhlIGNvbnRlbnQuIChCdXQgd2Ugb25seSBkbyB0aGlzIGlmIHRoZSBzY3Jv
bGxiYXIgZG9lc24ndCBhbHJlYWR5CisgICAgLy8gaGF2ZSBhIG5hdHVyYWwgd2lkdGguIElmIHRo
ZSBtb3VzZSBpcyBwbHVnZ2VkIGluIG9yIHRoZSB1c2VyIHNldHMgdGhlIHN5c3RlbSBwcmVmCisg
ICAgLy8gdG8gYWx3YXlzIHNob3cgc2Nyb2xsYmFycywgdGhlIHNjcm9sbGJhciBzaG91bGRuJ3Qg
b3ZlcmxhcC4pCisgICAgaWYgKG1hY19nZUxpb24pIHsKKyAgICAgIHNjcm9sbGJhci5jbGFzc05h
bWUgKz0gKG92ZXJsYXBTY3JvbGxiYXJzKCkgPyAiIGNtLXNiLW92ZXJsYXAiIDogIiBjbS1zYi1u
b25vdmVybGFwIik7CisgICAgfSBlbHNlIGlmIChpZV9sdDgpIHsKKyAgICAgIC8vIE5lZWQgdG8g
c2V0IGEgbWluaW11bSB3aWR0aCB0byBzZWUgdGhlIHNjcm9sbGJhciBvbiBJRTcgKGJ1dCBtdXN0
IG5vdCBzZXQgaXQgb24gSUU4KS4KKyAgICAgIHNjcm9sbGJhci5jbGFzc05hbWUgKz0gIiBjbS1z
Yi1pZTciOworICAgIH0KKworICAgIC8vIENoZWNrIGZvciBwcm9ibGVtIHdpdGggSUUgaW5uZXJI
VE1MIG5vdCB3b3JraW5nIHdoZW4gd2UgaGF2ZSBhCisgICAgLy8gUCAob3Igc2ltaWxhcikgcGFy
ZW50IG5vZGUuCisgICAgdHJ5IHsgY2hhcldpZHRoKCk7IH0KKyAgICBjYXRjaCAoZSkgeworICAg
ICAgaWYgKGUubWVzc2FnZS5tYXRjaCgvcnVudGltZS9pKSkKKyAgICAgICAgZSA9IG5ldyBFcnJv
cigiQSBDb2RlTWlycm9yIGluc2lkZSBhIFAtc3R5bGUgZWxlbWVudCBkb2VzIG5vdCB3b3JrIGlu
IEludGVybmV0IEV4cGxvcmVyLiAoaW5uZXJIVE1MIGJ1ZykiKTsKKyAgICAgIHRocm93IGU7Cisg
ICAgfQorCisgICAgLy8gRGVsYXllZCBvYmplY3Qgd3JhcCB0aW1lb3V0cywgbWFraW5nIHN1cmUg
b25seSBvbmUgaXMgYWN0aXZlLiBibGlua2VyIGhvbGRzIGFuIGludGVydmFsLgorICAgIHZhciBw
b2xsID0gbmV3IERlbGF5ZWQoKSwgaGlnaGxpZ2h0ID0gbmV3IERlbGF5ZWQoKSwgYmxpbmtlcjsK
KworICAgIC8vIG1vZGUgaG9sZHMgYSBtb2RlIEFQSSBvYmplY3QuIGRvYyBpcyB0aGUgdHJlZSBv
ZiBMaW5lIG9iamVjdHMsCisgICAgLy8gd29yayBhbiBhcnJheSBvZiBsaW5lcyB0aGF0IHNob3Vs
ZCBiZSBwYXJzZWQsIGFuZCBoaXN0b3J5IHRoZQorICAgIC8vIHVuZG8gaGlzdG9yeSAoaW5zdGFu
Y2Ugb2YgSGlzdG9yeSBjb25zdHJ1Y3RvcikuCisgICAgdmFyIG1vZGUsIGRvYyA9IG5ldyBCcmFu
Y2hDaHVuayhbbmV3IExlYWZDaHVuayhbbmV3IExpbmUoIiIpXSldKSwgd29yaywgZm9jdXNlZDsK
KyAgICBsb2FkTW9kZSgpOworICAgIC8vIFRoZSBzZWxlY3Rpb24uIFRoZXNlIGFyZSBhbHdheXMg
bWFpbnRhaW5lZCB0byBwb2ludCBhdCB2YWxpZAorICAgIC8vIHBvc2l0aW9ucy4gSW52ZXJ0ZWQg
aXMgdXNlZCB0byByZW1lbWJlciB0aGF0IHRoZSB1c2VyIGlzCisgICAgLy8gc2VsZWN0aW5nIGJv
dHRvbS10by10b3AuCisgICAgdmFyIHNlbCA9IHtmcm9tOiB7bGluZTogMCwgY2g6IDB9LCB0bzog
e2xpbmU6IDAsIGNoOiAwfSwgaW52ZXJ0ZWQ6IGZhbHNlfTsKKyAgICAvLyBTZWxlY3Rpb24tcmVs
YXRlZCBmbGFncy4gc2hpZnRTZWxlY3Rpbmcgb2J2aW91c2x5IHRyYWNrcworICAgIC8vIHdoZXRo
ZXIgdGhlIHVzZXIgaXMgaG9sZGluZyBzaGlmdC4KKyAgICB2YXIgc2hpZnRTZWxlY3RpbmcsIGxh
c3RDbGljaywgbGFzdERvdWJsZUNsaWNrLCBsYXN0U2Nyb2xsVG9wID0gMCwgZHJhZ2dpbmdUZXh0
LAorICAgICAgICBvdmVyd3JpdGUgPSBmYWxzZSwgc3VwcHJlc3NFZGl0cyA9IGZhbHNlOworICAg
IC8vIFZhcmlhYmxlcyB1c2VkIGJ5IHN0YXJ0T3BlcmF0aW9uL2VuZE9wZXJhdGlvbiB0byB0cmFj
ayB3aGF0CisgICAgLy8gaGFwcGVuZWQgZHVyaW5nIHRoZSBvcGVyYXRpb24uCisgICAgdmFyIHVw
ZGF0ZUlucHV0LCB1c2VyU2VsQ2hhbmdlLCBjaGFuZ2VzLCB0ZXh0Q2hhbmdlZCwgc2VsZWN0aW9u
Q2hhbmdlZCwgbGVhdmVJbnB1dEFsb25lLAorICAgICAgICBndXR0ZXJEaXJ0eSwgY2FsbGJhY2tz
OworICAgIC8vIEN1cnJlbnQgdmlzaWJsZSByYW5nZSAobWF5IGJlIGJpZ2dlciB0aGFuIHRoZSB2
aWV3IHdpbmRvdykuCisgICAgdmFyIGRpc3BsYXlPZmZzZXQgPSAwLCBzaG93aW5nRnJvbSA9IDAs
IHNob3dpbmdUbyA9IDAsIGxhc3RTaXplQyA9IDA7CisgICAgLy8gYnJhY2tldEhpZ2hsaWdodGVk
IGlzIHVzZWQgdG8gcmVtZW1iZXIgdGhhdCBhIGJyYWNrZXQgaGFzIGJlZW4KKyAgICAvLyBtYXJr
ZWQuCisgICAgdmFyIGJyYWNrZXRIaWdobGlnaHRlZDsKKyAgICAvLyBUcmFja3MgdGhlIG1heGlt
dW0gbGluZSBsZW5ndGggc28gdGhhdCB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXIKKyAgICAvLyBj
YW4gYmUga2VwdCBzdGF0aWMgd2hlbiBzY3JvbGxpbmcuCisgICAgdmFyIG1heExpbmUgPSBnZXRM
aW5lKDApLCB1cGRhdGVNYXhMaW5lID0gZmFsc2UsIG1heExpbmVDaGFuZ2VkID0gdHJ1ZTsKKyAg
ICB2YXIgdGFiQ2FjaGUgPSB7fTsKKyAgICB2YXIgcG9sbGluZ0Zhc3QgPSBmYWxzZTsgLy8gRW5z
dXJlcyBzbG93UG9sbCBkb2Vzbid0IGNhbmNlbCBmYXN0UG9sbAorICAgIHZhciBnb2FsQ29sdW1u
ID0gbnVsbDsKKworICAgIC8vIEluaXRpYWxpemUgdGhlIGNvbnRlbnQuCisgICAgb3BlcmF0aW9u
KGZ1bmN0aW9uKCl7c2V0VmFsdWUob3B0aW9ucy52YWx1ZSB8fCAiIik7IHVwZGF0ZUlucHV0ID0g
ZmFsc2U7fSkoKTsKKyAgICB2YXIgaGlzdG9yeSA9IG5ldyBIaXN0b3J5KCk7CisKKyAgICAvLyBS
ZWdpc3RlciBvdXIgZXZlbnQgaGFuZGxlcnMuCisgICAgY29ubmVjdChzY3JvbGxlciwgIm1vdXNl
ZG93biIsIG9wZXJhdGlvbihvbk1vdXNlRG93bikpOworICAgIGNvbm5lY3Qoc2Nyb2xsZXIsICJk
YmxjbGljayIsIG9wZXJhdGlvbihvbkRvdWJsZUNsaWNrKSk7CisgICAgY29ubmVjdChsaW5lU3Bh
Y2UsICJzZWxlY3RzdGFydCIsIGVfcHJldmVudERlZmF1bHQpOworICAgIC8vIEdlY2tvIGJyb3dz
ZXJzIGZpcmUgY29udGV4dG1lbnUgKmFmdGVyKiBvcGVuaW5nIHRoZSBtZW51LCBhdAorICAgIC8v
IHdoaWNoIHBvaW50IHdlIGNhbid0IG1lc3Mgd2l0aCBpdCBhbnltb3JlLiBDb250ZXh0IG1lbnUg
aXMKKyAgICAvLyBoYW5kbGVkIGluIG9uTW91c2VEb3duIGZvciBHZWNrby4KKyAgICBpZiAoIWdl
Y2tvKSBjb25uZWN0KHNjcm9sbGVyLCAiY29udGV4dG1lbnUiLCBvbkNvbnRleHRNZW51KTsKKyAg
ICBjb25uZWN0KHNjcm9sbGVyLCAic2Nyb2xsIiwgb25TY3JvbGxNYWluKTsKKyAgICBjb25uZWN0
KHNjcm9sbGJhciwgInNjcm9sbCIsIG9uU2Nyb2xsQmFyKTsKKyAgICBjb25uZWN0KHNjcm9sbGJh
ciwgIm1vdXNlZG93biIsIGZ1bmN0aW9uKCkge2lmIChmb2N1c2VkKSBzZXRUaW1lb3V0KGZvY3Vz
SW5wdXQsIDApO30pOworICAgIGNvbm5lY3Qod2luZG93LCAicmVzaXplIiwgZnVuY3Rpb24oKSB7
dXBkYXRlRGlzcGxheSh0cnVlKTt9KTsKKyAgICBjb25uZWN0KGlucHV0LCAia2V5dXAiLCBvcGVy
YXRpb24ob25LZXlVcCkpOworICAgIGNvbm5lY3QoaW5wdXQsICJpbnB1dCIsIGZhc3RQb2xsKTsK
KyAgICBjb25uZWN0KGlucHV0LCAia2V5ZG93biIsIG9wZXJhdGlvbihvbktleURvd24pKTsKKyAg
ICBjb25uZWN0KGlucHV0LCAia2V5cHJlc3MiLCBvcGVyYXRpb24ob25LZXlQcmVzcykpOworICAg
IGNvbm5lY3QoaW5wdXQsICJmb2N1cyIsIG9uRm9jdXMpOworICAgIGNvbm5lY3QoaW5wdXQsICJi
bHVyIiwgb25CbHVyKTsKKworICAgIGZ1bmN0aW9uIGRyYWdfKGUpIHsKKyAgICAgIGlmIChvcHRp
b25zLm9uRHJhZ0V2ZW50ICYmIG9wdGlvbnMub25EcmFnRXZlbnQoaW5zdGFuY2UsIGFkZFN0b3Ao
ZSkpKSByZXR1cm47CisgICAgICBlX3N0b3AoZSk7CisgICAgfQorICAgIGlmIChvcHRpb25zLmRy
YWdEcm9wKSB7CisgICAgICBjb25uZWN0KHNjcm9sbGVyLCAiZHJhZ3N0YXJ0Iiwgb25EcmFnU3Rh
cnQpOworICAgICAgY29ubmVjdChzY3JvbGxlciwgImRyYWdlbnRlciIsIGRyYWdfKTsKKyAgICAg
IGNvbm5lY3Qoc2Nyb2xsZXIsICJkcmFnb3ZlciIsIGRyYWdfKTsKKyAgICAgIGNvbm5lY3Qoc2Ny
b2xsZXIsICJkcm9wIiwgb3BlcmF0aW9uKG9uRHJvcCkpOworICAgIH0KKyAgICBjb25uZWN0KHNj
cm9sbGVyLCAicGFzdGUiLCBmdW5jdGlvbigpe2ZvY3VzSW5wdXQoKTsgZmFzdFBvbGwoKTt9KTsK
KyAgICBjb25uZWN0KGlucHV0LCAicGFzdGUiLCBmYXN0UG9sbCk7CisgICAgY29ubmVjdChpbnB1
dCwgImN1dCIsIG9wZXJhdGlvbihmdW5jdGlvbigpeworICAgICAgaWYgKCFvcHRpb25zLnJlYWRP
bmx5KSByZXBsYWNlU2VsZWN0aW9uKCIiKTsKKyAgICB9KSk7CisKKyAgICAvLyBOZWVkZWQgdG8g
aGFuZGxlIFRhYiBrZXkgaW4gS0hUTUwKKyAgICBpZiAoa2h0bWwpIGNvbm5lY3Qoc2l6ZXIsICJt
b3VzZXVwIiwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50
ID09IGlucHV0KSBpbnB1dC5ibHVyKCk7CisgICAgICAgIGZvY3VzSW5wdXQoKTsKKyAgICB9KTsK
KworICAgIC8vIElFIHRocm93cyB1bnNwZWNpZmllZCBlcnJvciBpbiBjZXJ0YWluIGNhc2VzLCB3
aGVuCisgICAgLy8gdHJ5aW5nIHRvIGFjY2VzcyBhY3RpdmVFbGVtZW50IGJlZm9yZSBvbmxvYWQK
KyAgICB2YXIgaGFzRm9jdXM7IHRyeSB7IGhhc0ZvY3VzID0gKGRvY3VtZW50LmFjdGl2ZUVsZW1l
bnQgPT0gaW5wdXQpOyB9IGNhdGNoKGUpIHsgfQorICAgIGlmIChoYXNGb2N1cyB8fCBvcHRpb25z
LmF1dG9mb2N1cykgc2V0VGltZW91dChvbkZvY3VzLCAyMCk7CisgICAgZWxzZSBvbkJsdXIoKTsK
KworICAgIGZ1bmN0aW9uIGlzTGluZShsKSB7cmV0dXJuIGwgPj0gMCAmJiBsIDwgZG9jLnNpemU7
fQorICAgIC8vIFRoZSBpbnN0YW5jZSBvYmplY3QgdGhhdCB3ZSdsbCByZXR1cm4uIE1vc3RseSBj
YWxscyBvdXQgdG8KKyAgICAvLyBsb2NhbCBmdW5jdGlvbnMgaW4gdGhlIENvZGVNaXJyb3IgZnVu
Y3Rpb24uIFNvbWUgZG8gc29tZSBleHRyYQorICAgIC8vIHJhbmdlIGNoZWNraW5nIGFuZC9vciBj
bGlwcGluZy4gb3BlcmF0aW9uIGlzIHVzZWQgdG8gd3JhcCB0aGUKKyAgICAvLyBjYWxsIHNvIHRo
YXQgY2hhbmdlcyBpdCBtYWtlcyBhcmUgdHJhY2tlZCwgYW5kIHRoZSBkaXNwbGF5IGlzCisgICAg
Ly8gdXBkYXRlZCBhZnRlcndhcmRzLgorICAgIHZhciBpbnN0YW5jZSA9IHdyYXBwZXIuQ29kZU1p
cnJvciA9IHsKKyAgICAgIGdldFZhbHVlOiBnZXRWYWx1ZSwKKyAgICAgIHNldFZhbHVlOiBvcGVy
YXRpb24oc2V0VmFsdWUpLAorICAgICAgZ2V0U2VsZWN0aW9uOiBnZXRTZWxlY3Rpb24sCisgICAg
ICByZXBsYWNlU2VsZWN0aW9uOiBvcGVyYXRpb24ocmVwbGFjZVNlbGVjdGlvbiksCisgICAgICBm
b2N1czogZnVuY3Rpb24oKXt3aW5kb3cuZm9jdXMoKTsgZm9jdXNJbnB1dCgpOyBvbkZvY3VzKCk7
IGZhc3RQb2xsKCk7fSwKKyAgICAgIHNldE9wdGlvbjogZnVuY3Rpb24ob3B0aW9uLCB2YWx1ZSkg
eworICAgICAgICB2YXIgb2xkVmFsID0gb3B0aW9uc1tvcHRpb25dOworICAgICAgICBvcHRpb25z
W29wdGlvbl0gPSB2YWx1ZTsKKyAgICAgICAgaWYgKG9wdGlvbiA9PSAibW9kZSIgfHwgb3B0aW9u
ID09ICJpbmRlbnRVbml0IikgbG9hZE1vZGUoKTsKKyAgICAgICAgZWxzZSBpZiAob3B0aW9uID09
ICJyZWFkT25seSIgJiYgdmFsdWUgPT0gIm5vY3Vyc29yIikge29uQmx1cigpOyBpbnB1dC5ibHVy
KCk7fQorICAgICAgICBlbHNlIGlmIChvcHRpb24gPT0gInJlYWRPbmx5IiAmJiAhdmFsdWUpIHty
ZXNldElucHV0KHRydWUpO30KKyAgICAgICAgZWxzZSBpZiAob3B0aW9uID09ICJ0aGVtZSIpIHRo
ZW1lQ2hhbmdlZCgpOworICAgICAgICBlbHNlIGlmIChvcHRpb24gPT0gImxpbmVXcmFwcGluZyIg
JiYgb2xkVmFsICE9IHZhbHVlKSBvcGVyYXRpb24od3JhcHBpbmdDaGFuZ2VkKSgpOworICAgICAg
ICBlbHNlIGlmIChvcHRpb24gPT0gInRhYlNpemUiKSB1cGRhdGVEaXNwbGF5KHRydWUpOworICAg
ICAgICBlbHNlIGlmIChvcHRpb24gPT0gImtleU1hcCIpIGtleU1hcENoYW5nZWQoKTsKKyAgICAg
ICAgaWYgKG9wdGlvbiA9PSAibGluZU51bWJlcnMiIHx8IG9wdGlvbiA9PSAiZ3V0dGVyIiB8fCBv
cHRpb24gPT0gImZpcnN0TGluZU51bWJlciIgfHwKKyAgICAgICAgICAgIG9wdGlvbiA9PSAidGhl
bWUiIHx8IG9wdGlvbiA9PSAibGluZU51bWJlckZvcm1hdHRlciIpIHsKKyAgICAgICAgICBndXR0
ZXJDaGFuZ2VkKCk7CisgICAgICAgICAgdXBkYXRlRGlzcGxheSh0cnVlKTsKKyAgICAgICAgfQor
ICAgICAgfSwKKyAgICAgIGdldE9wdGlvbjogZnVuY3Rpb24ob3B0aW9uKSB7cmV0dXJuIG9wdGlv
bnNbb3B0aW9uXTt9LAorICAgICAgdW5kbzogb3BlcmF0aW9uKHVuZG8pLAorICAgICAgcmVkbzog
b3BlcmF0aW9uKHJlZG8pLAorICAgICAgaW5kZW50TGluZTogb3BlcmF0aW9uKGZ1bmN0aW9uKG4s
IGRpcikgeworICAgICAgICBpZiAodHlwZW9mIGRpciAhPSAic3RyaW5nIikgeworICAgICAgICAg
IGlmIChkaXIgPT0gbnVsbCkgZGlyID0gb3B0aW9ucy5zbWFydEluZGVudCA/ICJzbWFydCIgOiAi
cHJldiI7CisgICAgICAgICAgZWxzZSBkaXIgPSBkaXIgPyAiYWRkIiA6ICJzdWJ0cmFjdCI7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGlzTGluZShuKSkgaW5kZW50TGluZShuLCBkaXIpOworICAg
ICAgfSksCisgICAgICBpbmRlbnRTZWxlY3Rpb246IG9wZXJhdGlvbihpbmRlbnRTZWxlY3RlZCks
CisgICAgICBoaXN0b3J5U2l6ZTogZnVuY3Rpb24oKSB7cmV0dXJuIHt1bmRvOiBoaXN0b3J5LmRv
bmUubGVuZ3RoLCByZWRvOiBoaXN0b3J5LnVuZG9uZS5sZW5ndGh9O30sCisgICAgICBjbGVhckhp
c3Rvcnk6IGZ1bmN0aW9uKCkge2hpc3RvcnkgPSBuZXcgSGlzdG9yeSgpO30sCisgICAgICBzZXRI
aXN0b3J5OiBmdW5jdGlvbihoaXN0RGF0YSkgeworICAgICAgICBoaXN0b3J5ID0gbmV3IEhpc3Rv
cnkoKTsKKyAgICAgICAgaGlzdG9yeS5kb25lID0gaGlzdERhdGEuZG9uZTsKKyAgICAgICAgaGlz
dG9yeS51bmRvbmUgPSBoaXN0RGF0YS51bmRvbmU7CisgICAgICB9LAorICAgICAgZ2V0SGlzdG9y
eTogZnVuY3Rpb24oKSB7CisgICAgICAgIGhpc3RvcnkudGltZSA9IDA7CisgICAgICAgIHJldHVy
biB7ZG9uZTogaGlzdG9yeS5kb25lLmNvbmNhdChbXSksIHVuZG9uZTogaGlzdG9yeS51bmRvbmUu
Y29uY2F0KFtdKX07CisgICAgICB9LAorICAgICAgbWF0Y2hCcmFja2V0czogb3BlcmF0aW9uKGZ1
bmN0aW9uKCl7bWF0Y2hCcmFja2V0cyh0cnVlKTt9KSwKKyAgICAgIGdldFRva2VuQXQ6IG9wZXJh
dGlvbihmdW5jdGlvbihwb3MpIHsKKyAgICAgICAgcG9zID0gY2xpcFBvcyhwb3MpOworICAgICAg
ICByZXR1cm4gZ2V0TGluZShwb3MubGluZSkuZ2V0VG9rZW5BdChtb2RlLCBnZXRTdGF0ZUJlZm9y
ZShwb3MubGluZSksIHBvcy5jaCk7CisgICAgICB9KSwKKyAgICAgIGdldFN0YXRlQWZ0ZXI6IGZ1
bmN0aW9uKGxpbmUpIHsKKyAgICAgICAgbGluZSA9IGNsaXBMaW5lKGxpbmUgPT0gbnVsbCA/IGRv
Yy5zaXplIC0gMTogbGluZSk7CisgICAgICAgIHJldHVybiBnZXRTdGF0ZUJlZm9yZShsaW5lICsg
MSk7CisgICAgICB9LAorICAgICAgY3Vyc29yQ29vcmRzOiBmdW5jdGlvbihzdGFydCwgbW9kZSkg
eworICAgICAgICBpZiAoc3RhcnQgPT0gbnVsbCkgc3RhcnQgPSBzZWwuaW52ZXJ0ZWQ7CisgICAg
ICAgIHJldHVybiB0aGlzLmNoYXJDb29yZHMoc3RhcnQgPyBzZWwuZnJvbSA6IHNlbC50bywgbW9k
ZSk7CisgICAgICB9LAorICAgICAgY2hhckNvb3JkczogZnVuY3Rpb24ocG9zLCBtb2RlKSB7Cisg
ICAgICAgIHBvcyA9IGNsaXBQb3MocG9zKTsKKyAgICAgICAgaWYgKG1vZGUgPT0gImxvY2FsIikg
cmV0dXJuIGxvY2FsQ29vcmRzKHBvcywgZmFsc2UpOworICAgICAgICBpZiAobW9kZSA9PSAiZGl2
IikgcmV0dXJuIGxvY2FsQ29vcmRzKHBvcywgdHJ1ZSk7CisgICAgICAgIHJldHVybiBwYWdlQ29v
cmRzKHBvcyk7CisgICAgICB9LAorICAgICAgY29vcmRzQ2hhcjogZnVuY3Rpb24oY29vcmRzKSB7
CisgICAgICAgIHZhciBvZmYgPSBlbHRPZmZzZXQobGluZVNwYWNlKTsKKyAgICAgICAgcmV0dXJu
IGNvb3Jkc0NoYXIoY29vcmRzLnggLSBvZmYubGVmdCwgY29vcmRzLnkgLSBvZmYudG9wKTsKKyAg
ICAgIH0sCisgICAgICBtYXJrVGV4dDogb3BlcmF0aW9uKG1hcmtUZXh0KSwKKyAgICAgIHNldEJv
b2ttYXJrOiBzZXRCb29rbWFyaywKKyAgICAgIGZpbmRNYXJrc0F0OiBmaW5kTWFya3NBdCwKKyAg
ICAgIHNldE1hcmtlcjogb3BlcmF0aW9uKGFkZEd1dHRlck1hcmtlciksCisgICAgICBjbGVhck1h
cmtlcjogb3BlcmF0aW9uKHJlbW92ZUd1dHRlck1hcmtlciksCisgICAgICBzZXRMaW5lQ2xhc3M6
IG9wZXJhdGlvbihzZXRMaW5lQ2xhc3MpLAorICAgICAgaGlkZUxpbmU6IG9wZXJhdGlvbihmdW5j
dGlvbihoKSB7cmV0dXJuIHNldExpbmVIaWRkZW4oaCwgdHJ1ZSk7fSksCisgICAgICBzaG93TGlu
ZTogb3BlcmF0aW9uKGZ1bmN0aW9uKGgpIHtyZXR1cm4gc2V0TGluZUhpZGRlbihoLCBmYWxzZSk7
fSksCisgICAgICBvbkRlbGV0ZUxpbmU6IGZ1bmN0aW9uKGxpbmUsIGYpIHsKKyAgICAgICAgaWYg
KHR5cGVvZiBsaW5lID09ICJudW1iZXIiKSB7CisgICAgICAgICAgaWYgKCFpc0xpbmUobGluZSkp
IHJldHVybiBudWxsOworICAgICAgICAgIGxpbmUgPSBnZXRMaW5lKGxpbmUpOworICAgICAgICB9
CisgICAgICAgIChsaW5lLmhhbmRsZXJzIHx8IChsaW5lLmhhbmRsZXJzID0gW10pKS5wdXNoKGYp
OworICAgICAgICByZXR1cm4gbGluZTsKKyAgICAgIH0sCisgICAgICBsaW5lSW5mbzogbGluZUlu
Zm8sCisgICAgICBhZGRXaWRnZXQ6IGZ1bmN0aW9uKHBvcywgbm9kZSwgc2Nyb2xsLCB2ZXJ0LCBo
b3JpeikgeworICAgICAgICBwb3MgPSBsb2NhbENvb3JkcyhjbGlwUG9zKHBvcykpOworICAgICAg
ICB2YXIgdG9wID0gcG9zLnlCb3QsIGxlZnQgPSBwb3MueDsKKyAgICAgICAgbm9kZS5zdHlsZS5w
b3NpdGlvbiA9ICJhYnNvbHV0ZSI7CisgICAgICAgIHNpemVyLmFwcGVuZENoaWxkKG5vZGUpOwor
ICAgICAgICBpZiAodmVydCA9PSAib3ZlciIpIHRvcCA9IHBvcy55OworICAgICAgICBlbHNlIGlm
ICh2ZXJ0ID09ICJuZWFyIikgeworICAgICAgICAgIHZhciB2c3BhY2UgPSBNYXRoLm1heChzY3Jv
bGxlci5vZmZzZXRIZWlnaHQsIGRvYy5oZWlnaHQgKiB0ZXh0SGVpZ2h0KCkpLAorICAgICAgICAg
ICAgICBoc3BhY2UgPSBNYXRoLm1heChzaXplci5jbGllbnRXaWR0aCwgbGluZVNwYWNlLmNsaWVu
dFdpZHRoKSAtIHBhZGRpbmdMZWZ0KCk7CisgICAgICAgICAgaWYgKHBvcy55Qm90ICsgbm9kZS5v
ZmZzZXRIZWlnaHQgPiB2c3BhY2UgJiYgcG9zLnkgPiBub2RlLm9mZnNldEhlaWdodCkKKyAgICAg
ICAgICAgIHRvcCA9IHBvcy55IC0gbm9kZS5vZmZzZXRIZWlnaHQ7CisgICAgICAgICAgaWYgKGxl
ZnQgKyBub2RlLm9mZnNldFdpZHRoID4gaHNwYWNlKQorICAgICAgICAgICAgbGVmdCA9IGhzcGFj
ZSAtIG5vZGUub2Zmc2V0V2lkdGg7CisgICAgICAgIH0KKyAgICAgICAgbm9kZS5zdHlsZS50b3Ag
PSAodG9wICsgcGFkZGluZ1RvcCgpKSArICJweCI7CisgICAgICAgIG5vZGUuc3R5bGUubGVmdCA9
IG5vZGUuc3R5bGUucmlnaHQgPSAiIjsKKyAgICAgICAgaWYgKGhvcml6ID09ICJyaWdodCIpIHsK
KyAgICAgICAgICBsZWZ0ID0gc2l6ZXIuY2xpZW50V2lkdGggLSBub2RlLm9mZnNldFdpZHRoOwor
ICAgICAgICAgIG5vZGUuc3R5bGUucmlnaHQgPSAiMHB4IjsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICBpZiAoaG9yaXogPT0gImxlZnQiKSBsZWZ0ID0gMDsKKyAgICAgICAgICBlbHNlIGlm
IChob3JpeiA9PSAibWlkZGxlIikgbGVmdCA9IChzaXplci5jbGllbnRXaWR0aCAtIG5vZGUub2Zm
c2V0V2lkdGgpIC8gMjsKKyAgICAgICAgICBub2RlLnN0eWxlLmxlZnQgPSAobGVmdCArIHBhZGRp
bmdMZWZ0KCkpICsgInB4IjsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2Nyb2xsKQorICAgICAg
ICAgIHNjcm9sbEludG9WaWV3KGxlZnQsIHRvcCwgbGVmdCArIG5vZGUub2Zmc2V0V2lkdGgsIHRv
cCArIG5vZGUub2Zmc2V0SGVpZ2h0KTsKKyAgICAgIH0sCisKKyAgICAgIGxpbmVDb3VudDogZnVu
Y3Rpb24oKSB7cmV0dXJuIGRvYy5zaXplO30sCisgICAgICBjbGlwUG9zOiBjbGlwUG9zLAorICAg
ICAgZ2V0Q3Vyc29yOiBmdW5jdGlvbihzdGFydCkgeworICAgICAgICBpZiAoc3RhcnQgPT0gbnVs
bCkgc3RhcnQgPSBzZWwuaW52ZXJ0ZWQ7CisgICAgICAgIHJldHVybiBjb3B5UG9zKHN0YXJ0ID8g
c2VsLmZyb20gOiBzZWwudG8pOworICAgICAgfSwKKyAgICAgIHNvbWV0aGluZ1NlbGVjdGVkOiBm
dW5jdGlvbigpIHtyZXR1cm4gIXBvc0VxKHNlbC5mcm9tLCBzZWwudG8pO30sCisgICAgICBzZXRD
dXJzb3I6IG9wZXJhdGlvbihmdW5jdGlvbihsaW5lLCBjaCwgdXNlcikgeworICAgICAgICBpZiAo
Y2ggPT0gbnVsbCAmJiB0eXBlb2YgbGluZS5saW5lID09ICJudW1iZXIiKSBzZXRDdXJzb3IobGlu
ZS5saW5lLCBsaW5lLmNoLCB1c2VyKTsKKyAgICAgICAgZWxzZSBzZXRDdXJzb3IobGluZSwgY2gs
IHVzZXIpOworICAgICAgfSksCisgICAgICBzZXRTZWxlY3Rpb246IG9wZXJhdGlvbihmdW5jdGlv
bihmcm9tLCB0bywgdXNlcikgeworICAgICAgICAodXNlciA/IHNldFNlbGVjdGlvblVzZXIgOiBz
ZXRTZWxlY3Rpb24pKGNsaXBQb3MoZnJvbSksIGNsaXBQb3ModG8gfHwgZnJvbSkpOworICAgICAg
fSksCisgICAgICBnZXRMaW5lOiBmdW5jdGlvbihsaW5lKSB7aWYgKGlzTGluZShsaW5lKSkgcmV0
dXJuIGdldExpbmUobGluZSkudGV4dDt9LAorICAgICAgZ2V0TGluZUhhbmRsZTogZnVuY3Rpb24o
bGluZSkge2lmIChpc0xpbmUobGluZSkpIHJldHVybiBnZXRMaW5lKGxpbmUpO30sCisgICAgICBz
ZXRMaW5lOiBvcGVyYXRpb24oZnVuY3Rpb24obGluZSwgdGV4dCkgeworICAgICAgICBpZiAoaXNM
aW5lKGxpbmUpKSByZXBsYWNlUmFuZ2UodGV4dCwge2xpbmU6IGxpbmUsIGNoOiAwfSwge2xpbmU6
IGxpbmUsIGNoOiBnZXRMaW5lKGxpbmUpLnRleHQubGVuZ3RofSk7CisgICAgICB9KSwKKyAgICAg
IHJlbW92ZUxpbmU6IG9wZXJhdGlvbihmdW5jdGlvbihsaW5lKSB7CisgICAgICAgIGlmIChpc0xp
bmUobGluZSkpIHJlcGxhY2VSYW5nZSgiIiwge2xpbmU6IGxpbmUsIGNoOiAwfSwgY2xpcFBvcyh7
bGluZTogbGluZSsxLCBjaDogMH0pKTsKKyAgICAgIH0pLAorICAgICAgcmVwbGFjZVJhbmdlOiBv
cGVyYXRpb24ocmVwbGFjZVJhbmdlKSwKKyAgICAgIGdldFJhbmdlOiBmdW5jdGlvbihmcm9tLCB0
bywgbGluZVNlcCkge3JldHVybiBnZXRSYW5nZShjbGlwUG9zKGZyb20pLCBjbGlwUG9zKHRvKSwg
bGluZVNlcCk7fSwKKworICAgICAgdHJpZ2dlck9uS2V5RG93bjogb3BlcmF0aW9uKG9uS2V5RG93
biksCisgICAgICBleGVjQ29tbWFuZDogZnVuY3Rpb24oY21kKSB7cmV0dXJuIGNvbW1hbmRzW2Nt
ZF0oaW5zdGFuY2UpO30sCisgICAgICAvLyBTdHVmZiB1c2VkIGJ5IGNvbW1hbmRzLCBwcm9iYWJs
eSBub3QgbXVjaCB1c2UgdG8gb3V0c2lkZSBjb2RlLgorICAgICAgbW92ZUg6IG9wZXJhdGlvbiht
b3ZlSCksCisgICAgICBkZWxldGVIOiBvcGVyYXRpb24oZGVsZXRlSCksCisgICAgICBtb3ZlVjog
b3BlcmF0aW9uKG1vdmVWKSwKKyAgICAgIHRvZ2dsZU92ZXJ3cml0ZTogZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGlmKG92ZXJ3cml0ZSl7CisgICAgICAgICAgb3ZlcndyaXRlID0gZmFsc2U7CisgICAg
ICAgICAgY3Vyc29yLmNsYXNzTmFtZSA9IGN1cnNvci5jbGFzc05hbWUucmVwbGFjZSgiIENvZGVN
aXJyb3Itb3ZlcndyaXRlIiwgIiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIG92ZXJ3
cml0ZSA9IHRydWU7CisgICAgICAgICAgY3Vyc29yLmNsYXNzTmFtZSArPSAiIENvZGVNaXJyb3It
b3ZlcndyaXRlIjsKKyAgICAgICAgfQorICAgICAgfSwKKworICAgICAgcG9zRnJvbUluZGV4OiBm
dW5jdGlvbihvZmYpIHsKKyAgICAgICAgdmFyIGxpbmVObyA9IDAsIGNoOworICAgICAgICBkb2Mu
aXRlcigwLCBkb2Muc2l6ZSwgZnVuY3Rpb24obGluZSkgeworICAgICAgICAgIHZhciBzeiA9IGxp
bmUudGV4dC5sZW5ndGggKyAxOworICAgICAgICAgIGlmIChzeiA+IG9mZikgeyBjaCA9IG9mZjsg
cmV0dXJuIHRydWU7IH0KKyAgICAgICAgICBvZmYgLT0gc3o7CisgICAgICAgICAgKytsaW5lTm87
CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gY2xpcFBvcyh7bGluZTogbGluZU5vLCBjaDog
Y2h9KTsKKyAgICAgIH0sCisgICAgICBpbmRleEZyb21Qb3M6IGZ1bmN0aW9uIChjb29yZHMpIHsK
KyAgICAgICAgaWYgKGNvb3Jkcy5saW5lIDwgMCB8fCBjb29yZHMuY2ggPCAwKSByZXR1cm4gMDsK
KyAgICAgICAgdmFyIGluZGV4ID0gY29vcmRzLmNoOworICAgICAgICBkb2MuaXRlcigwLCBjb29y
ZHMubGluZSwgZnVuY3Rpb24gKGxpbmUpIHsKKyAgICAgICAgICBpbmRleCArPSBsaW5lLnRleHQu
bGVuZ3RoICsgMTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBpbmRleDsKKyAgICAgIH0s
CisgICAgICBzY3JvbGxUbzogZnVuY3Rpb24oeCwgeSkgeworICAgICAgICBpZiAoeCAhPSBudWxs
KSBzY3JvbGxlci5zY3JvbGxMZWZ0ID0geDsKKyAgICAgICAgaWYgKHkgIT0gbnVsbCkgc2Nyb2xs
YmFyLnNjcm9sbFRvcCA9IHNjcm9sbGVyLnNjcm9sbFRvcCA9IHk7CisgICAgICAgIHVwZGF0ZURp
c3BsYXkoW10pOworICAgICAgfSwKKyAgICAgIGdldFNjcm9sbEluZm86IGZ1bmN0aW9uKCkgewor
ICAgICAgICByZXR1cm4ge3g6IHNjcm9sbGVyLnNjcm9sbExlZnQsIHk6IHNjcm9sbGJhci5zY3Jv
bGxUb3AsCisgICAgICAgICAgICAgICAgaGVpZ2h0OiBzY3JvbGxiYXIuc2Nyb2xsSGVpZ2h0LCB3
aWR0aDogc2Nyb2xsZXIuc2Nyb2xsV2lkdGh9OworICAgICAgfSwKKyAgICAgIHNldFNpemU6IGZ1
bmN0aW9uKHdpZHRoLCBoZWlnaHQpIHsKKyAgICAgICAgZnVuY3Rpb24gaW50ZXJwcmV0KHZhbCkg
eworICAgICAgICAgIHZhbCA9IFN0cmluZyh2YWwpOworICAgICAgICAgIHJldHVybiAvXlxkKyQv
LnRlc3QodmFsKSA/IHZhbCArICJweCIgOiB2YWw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHdp
ZHRoICE9IG51bGwpIHdyYXBwZXIuc3R5bGUud2lkdGggPSBpbnRlcnByZXQod2lkdGgpOworICAg
ICAgICBpZiAoaGVpZ2h0ICE9IG51bGwpIHNjcm9sbGVyLnN0eWxlLmhlaWdodCA9IGludGVycHJl
dChoZWlnaHQpOworICAgICAgICBpbnN0YW5jZS5yZWZyZXNoKCk7CisgICAgICB9LAorCisgICAg
ICBvcGVyYXRpb246IGZ1bmN0aW9uKGYpe3JldHVybiBvcGVyYXRpb24oZikoKTt9LAorICAgICAg
Y29tcG91bmRDaGFuZ2U6IGZ1bmN0aW9uKGYpe3JldHVybiBjb21wb3VuZENoYW5nZShmKTt9LAor
ICAgICAgcmVmcmVzaDogZnVuY3Rpb24oKXsKKyAgICAgICAgdXBkYXRlRGlzcGxheSh0cnVlLCBu
dWxsLCBsYXN0U2Nyb2xsVG9wKTsKKyAgICAgICAgaWYgKHNjcm9sbGJhci5zY3JvbGxIZWlnaHQg
PiBsYXN0U2Nyb2xsVG9wKQorICAgICAgICAgIHNjcm9sbGJhci5zY3JvbGxUb3AgPSBsYXN0U2Ny
b2xsVG9wOworICAgICAgfSwKKyAgICAgIGdldElucHV0RmllbGQ6IGZ1bmN0aW9uKCl7cmV0dXJu
IGlucHV0O30sCisgICAgICBnZXRXcmFwcGVyRWxlbWVudDogZnVuY3Rpb24oKXtyZXR1cm4gd3Jh
cHBlcjt9LAorICAgICAgZ2V0U2Nyb2xsZXJFbGVtZW50OiBmdW5jdGlvbigpe3JldHVybiBzY3Jv
bGxlcjt9LAorICAgICAgZ2V0R3V0dGVyRWxlbWVudDogZnVuY3Rpb24oKXtyZXR1cm4gZ3V0dGVy
O30KKyAgICB9OworCisgICAgZnVuY3Rpb24gZ2V0TGluZShuKSB7IHJldHVybiBnZXRMaW5lQXQo
ZG9jLCBuKTsgfQorICAgIGZ1bmN0aW9uIHVwZGF0ZUxpbmVIZWlnaHQobGluZSwgaGVpZ2h0KSB7
CisgICAgICBndXR0ZXJEaXJ0eSA9IHRydWU7CisgICAgICB2YXIgZGlmZiA9IGhlaWdodCAtIGxp
bmUuaGVpZ2h0OworICAgICAgZm9yICh2YXIgbiA9IGxpbmU7IG47IG4gPSBuLnBhcmVudCkgbi5o
ZWlnaHQgKz0gZGlmZjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZXRWYWx1ZShjb2RlKSB7Cisg
ICAgICB2YXIgdG9wID0ge2xpbmU6IDAsIGNoOiAwfTsKKyAgICAgIHVwZGF0ZUxpbmVzKHRvcCwg
e2xpbmU6IGRvYy5zaXplIC0gMSwgY2g6IGdldExpbmUoZG9jLnNpemUtMSkudGV4dC5sZW5ndGh9
LAorICAgICAgICAgICAgICAgICAgc3BsaXRMaW5lcyhjb2RlKSwgdG9wLCB0b3ApOworICAgICAg
dXBkYXRlSW5wdXQgPSB0cnVlOworICAgIH0KKyAgICBmdW5jdGlvbiBnZXRWYWx1ZShsaW5lU2Vw
KSB7CisgICAgICB2YXIgdGV4dCA9IFtdOworICAgICAgZG9jLml0ZXIoMCwgZG9jLnNpemUsIGZ1
bmN0aW9uKGxpbmUpIHsgdGV4dC5wdXNoKGxpbmUudGV4dCk7IH0pOworICAgICAgcmV0dXJuIHRl
eHQuam9pbihsaW5lU2VwIHx8ICJcbiIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIG9uU2Nyb2xs
QmFyKGUpIHsKKyAgICAgIGlmIChzY3JvbGxiYXIuc2Nyb2xsVG9wICE9IGxhc3RTY3JvbGxUb3Ap
IHsKKyAgICAgICAgbGFzdFNjcm9sbFRvcCA9IHNjcm9sbGVyLnNjcm9sbFRvcCA9IHNjcm9sbGJh
ci5zY3JvbGxUb3A7CisgICAgICAgIHVwZGF0ZURpc3BsYXkoW10pOworICAgICAgfQorICAgIH0K
KworICAgIGZ1bmN0aW9uIG9uU2Nyb2xsTWFpbihlKSB7CisgICAgICBpZiAob3B0aW9ucy5maXhl
ZEd1dHRlciAmJiBndXR0ZXIuc3R5bGUubGVmdCAhPSBzY3JvbGxlci5zY3JvbGxMZWZ0ICsgInB4
IikKKyAgICAgICAgZ3V0dGVyLnN0eWxlLmxlZnQgPSBzY3JvbGxlci5zY3JvbGxMZWZ0ICsgInB4
IjsKKyAgICAgIGlmIChzY3JvbGxlci5zY3JvbGxUb3AgIT0gbGFzdFNjcm9sbFRvcCkgeworICAg
ICAgICBsYXN0U2Nyb2xsVG9wID0gc2Nyb2xsZXIuc2Nyb2xsVG9wOworICAgICAgICBpZiAoc2Ny
b2xsYmFyLnNjcm9sbFRvcCAhPSBsYXN0U2Nyb2xsVG9wKQorICAgICAgICAgIHNjcm9sbGJhci5z
Y3JvbGxUb3AgPSBsYXN0U2Nyb2xsVG9wOworICAgICAgICB1cGRhdGVEaXNwbGF5KFtdKTsKKyAg
ICAgIH0KKyAgICAgIGlmIChvcHRpb25zLm9uU2Nyb2xsKSBvcHRpb25zLm9uU2Nyb2xsKGluc3Rh
bmNlKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBvbk1vdXNlRG93bihlKSB7CisgICAgICBzZXRT
aGlmdChlX3Byb3AoZSwgInNoaWZ0S2V5IikpOworICAgICAgLy8gQ2hlY2sgd2hldGhlciB0aGlz
IGlzIGEgY2xpY2sgaW4gYSB3aWRnZXQKKyAgICAgIGZvciAodmFyIG4gPSBlX3RhcmdldChlKTsg
biAhPSB3cmFwcGVyOyBuID0gbi5wYXJlbnROb2RlKQorICAgICAgICBpZiAobi5wYXJlbnROb2Rl
ID09IHNpemVyICYmIG4gIT0gbW92ZXIpIHJldHVybjsKKworICAgICAgLy8gU2VlIGlmIHRoaXMg
aXMgYSBjbGljayBpbiB0aGUgZ3V0dGVyCisgICAgICBmb3IgKHZhciBuID0gZV90YXJnZXQoZSk7
IG4gIT0gd3JhcHBlcjsgbiA9IG4ucGFyZW50Tm9kZSkKKyAgICAgICAgaWYgKG4ucGFyZW50Tm9k
ZSA9PSBndXR0ZXJUZXh0KSB7CisgICAgICAgICAgaWYgKG9wdGlvbnMub25HdXR0ZXJDbGljaykK
KyAgICAgICAgICAgIG9wdGlvbnMub25HdXR0ZXJDbGljayhpbnN0YW5jZSwgaW5kZXhPZihndXR0
ZXJUZXh0LmNoaWxkTm9kZXMsIG4pICsgc2hvd2luZ0Zyb20sIGUpOworICAgICAgICAgIHJldHVy
biBlX3ByZXZlbnREZWZhdWx0KGUpOworICAgICAgICB9CisKKyAgICAgIHZhciBzdGFydCA9IHBv
c0Zyb21Nb3VzZShlKTsKKworICAgICAgc3dpdGNoIChlX2J1dHRvbihlKSkgeworICAgICAgY2Fz
ZSAzOgorICAgICAgICBpZiAoZ2Vja28pIG9uQ29udGV4dE1lbnUoZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICAgIGNhc2UgMjoKKyAgICAgICAgaWYgKHN0YXJ0KSBzZXRDdXJzb3Ioc3RhcnQubGlu
ZSwgc3RhcnQuY2gsIHRydWUpOworICAgICAgICBzZXRUaW1lb3V0KGZvY3VzSW5wdXQsIDIwKTsK
KyAgICAgICAgZV9wcmV2ZW50RGVmYXVsdChlKTsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQor
ICAgICAgLy8gRm9yIGJ1dHRvbiAxLCBpZiBpdCB3YXMgY2xpY2tlZCBpbnNpZGUgdGhlIGVkaXRv
cgorICAgICAgLy8gKHBvc0Zyb21Nb3VzZSByZXR1cm5pbmcgbm9uLW51bGwpLCB3ZSBoYXZlIHRv
IGFkanVzdCB0aGUKKyAgICAgIC8vIHNlbGVjdGlvbi4KKyAgICAgIGlmICghc3RhcnQpIHtpZiAo
ZV90YXJnZXQoZSkgPT0gc2Nyb2xsZXIpIGVfcHJldmVudERlZmF1bHQoZSk7IHJldHVybjt9CisK
KyAgICAgIGlmICghZm9jdXNlZCkgb25Gb2N1cygpOworCisgICAgICB2YXIgbm93ID0gK25ldyBE
YXRlLCB0eXBlID0gInNpbmdsZSI7CisgICAgICBpZiAobGFzdERvdWJsZUNsaWNrICYmIGxhc3RE
b3VibGVDbGljay50aW1lID4gbm93IC0gNDAwICYmIHBvc0VxKGxhc3REb3VibGVDbGljay5wb3Ms
IHN0YXJ0KSkgeworICAgICAgICB0eXBlID0gInRyaXBsZSI7CisgICAgICAgIGVfcHJldmVudERl
ZmF1bHQoZSk7CisgICAgICAgIHNldFRpbWVvdXQoZm9jdXNJbnB1dCwgMjApOworICAgICAgICBz
ZWxlY3RMaW5lKHN0YXJ0LmxpbmUpOworICAgICAgfSBlbHNlIGlmIChsYXN0Q2xpY2sgJiYgbGFz
dENsaWNrLnRpbWUgPiBub3cgLSA0MDAgJiYgcG9zRXEobGFzdENsaWNrLnBvcywgc3RhcnQpKSB7
CisgICAgICAgIHR5cGUgPSAiZG91YmxlIjsKKyAgICAgICAgbGFzdERvdWJsZUNsaWNrID0ge3Rp
bWU6IG5vdywgcG9zOiBzdGFydH07CisgICAgICAgIGVfcHJldmVudERlZmF1bHQoZSk7CisgICAg
ICAgIHZhciB3b3JkID0gZmluZFdvcmRBdChzdGFydCk7CisgICAgICAgIHNldFNlbGVjdGlvblVz
ZXIod29yZC5mcm9tLCB3b3JkLnRvKTsKKyAgICAgIH0gZWxzZSB7IGxhc3RDbGljayA9IHt0aW1l
OiBub3csIHBvczogc3RhcnR9OyB9CisKKyAgICAgIGZ1bmN0aW9uIGRyYWdFbmQoZTIpIHsKKyAg
ICAgICAgaWYgKHdlYmtpdCkgc2Nyb2xsZXIuZHJhZ2dhYmxlID0gZmFsc2U7CisgICAgICAgIGRy
YWdnaW5nVGV4dCA9IGZhbHNlOworICAgICAgICB1cCgpOyBkcm9wKCk7CisgICAgICAgIGlmIChN
YXRoLmFicyhlLmNsaWVudFggLSBlMi5jbGllbnRYKSArIE1hdGguYWJzKGUuY2xpZW50WSAtIGUy
LmNsaWVudFkpIDwgMTApIHsKKyAgICAgICAgICBlX3ByZXZlbnREZWZhdWx0KGUyKTsKKyAgICAg
ICAgICBzZXRDdXJzb3Ioc3RhcnQubGluZSwgc3RhcnQuY2gsIHRydWUpOworICAgICAgICAgIGZv
Y3VzSW5wdXQoKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgdmFyIGxhc3QgPSBzdGFydCwg
Z29pbmc7CisgICAgICBpZiAob3B0aW9ucy5kcmFnRHJvcCAmJiBkcmFnQW5kRHJvcCAmJiAhb3B0
aW9ucy5yZWFkT25seSAmJiAhcG9zRXEoc2VsLmZyb20sIHNlbC50bykgJiYKKyAgICAgICAgICAh
cG9zTGVzcyhzdGFydCwgc2VsLmZyb20pICYmICFwb3NMZXNzKHNlbC50bywgc3RhcnQpICYmIHR5
cGUgPT0gInNpbmdsZSIpIHsKKyAgICAgICAgLy8gTGV0IHRoZSBkcmFnIGhhbmRsZXIgaGFuZGxl
IHRoaXMuCisgICAgICAgIGlmICh3ZWJraXQpIHNjcm9sbGVyLmRyYWdnYWJsZSA9IHRydWU7Cisg
ICAgICAgIHZhciB1cCA9IGNvbm5lY3QoZG9jdW1lbnQsICJtb3VzZXVwIiwgb3BlcmF0aW9uKGRy
YWdFbmQpLCB0cnVlKTsKKyAgICAgICAgdmFyIGRyb3AgPSBjb25uZWN0KHNjcm9sbGVyLCAiZHJv
cCIsIG9wZXJhdGlvbihkcmFnRW5kKSwgdHJ1ZSk7CisgICAgICAgIGRyYWdnaW5nVGV4dCA9IHRy
dWU7CisgICAgICAgIC8vIElFJ3MgYXBwcm9hY2ggdG8gZHJhZ2dhYmxlCisgICAgICAgIGlmIChz
Y3JvbGxlci5kcmFnRHJvcCkgc2Nyb2xsZXIuZHJhZ0Ryb3AoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgICAgfQorICAgICAgZV9wcmV2ZW50RGVmYXVsdChlKTsKKyAgICAgIGlmICh0eXBlID09ICJz
aW5nbGUiKSBzZXRDdXJzb3Ioc3RhcnQubGluZSwgc3RhcnQuY2gsIHRydWUpOworCisgICAgICB2
YXIgc3RhcnRzdGFydCA9IHNlbC5mcm9tLCBzdGFydGVuZCA9IHNlbC50bzsKKworICAgICAgZnVu
Y3Rpb24gZG9TZWxlY3QoY3VyKSB7CisgICAgICAgIGlmICh0eXBlID09ICJzaW5nbGUiKSB7Cisg
ICAgICAgICAgc2V0U2VsZWN0aW9uVXNlcihzdGFydCwgY3VyKTsKKyAgICAgICAgfSBlbHNlIGlm
ICh0eXBlID09ICJkb3VibGUiKSB7CisgICAgICAgICAgdmFyIHdvcmQgPSBmaW5kV29yZEF0KGN1
cik7CisgICAgICAgICAgaWYgKHBvc0xlc3MoY3VyLCBzdGFydHN0YXJ0KSkgc2V0U2VsZWN0aW9u
VXNlcih3b3JkLmZyb20sIHN0YXJ0ZW5kKTsKKyAgICAgICAgICBlbHNlIHNldFNlbGVjdGlvblVz
ZXIoc3RhcnRzdGFydCwgd29yZC50byk7CisgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAidHJp
cGxlIikgeworICAgICAgICAgIGlmIChwb3NMZXNzKGN1ciwgc3RhcnRzdGFydCkpIHNldFNlbGVj
dGlvblVzZXIoc3RhcnRlbmQsIGNsaXBQb3Moe2xpbmU6IGN1ci5saW5lLCBjaDogMH0pKTsKKyAg
ICAgICAgICBlbHNlIHNldFNlbGVjdGlvblVzZXIoc3RhcnRzdGFydCwgY2xpcFBvcyh7bGluZTog
Y3VyLmxpbmUgKyAxLCBjaDogMH0pKTsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICBmdW5j
dGlvbiBleHRlbmQoZSkgeworICAgICAgICB2YXIgY3VyID0gcG9zRnJvbU1vdXNlKGUsIHRydWUp
OworICAgICAgICBpZiAoY3VyICYmICFwb3NFcShjdXIsIGxhc3QpKSB7CisgICAgICAgICAgaWYg
KCFmb2N1c2VkKSBvbkZvY3VzKCk7CisgICAgICAgICAgbGFzdCA9IGN1cjsKKyAgICAgICAgICBk
b1NlbGVjdChjdXIpOworICAgICAgICAgIHVwZGF0ZUlucHV0ID0gZmFsc2U7CisgICAgICAgICAg
dmFyIHZpc2libGUgPSB2aXNpYmxlTGluZXMoKTsKKyAgICAgICAgICBpZiAoY3VyLmxpbmUgPj0g
dmlzaWJsZS50byB8fCBjdXIubGluZSA8IHZpc2libGUuZnJvbSkKKyAgICAgICAgICAgIGdvaW5n
ID0gc2V0VGltZW91dChvcGVyYXRpb24oZnVuY3Rpb24oKXtleHRlbmQoZSk7fSksIDE1MCk7Cisg
ICAgICAgIH0KKyAgICAgIH0KKworICAgICAgZnVuY3Rpb24gZG9uZShlKSB7CisgICAgICAgIGNs
ZWFyVGltZW91dChnb2luZyk7CisgICAgICAgIHZhciBjdXIgPSBwb3NGcm9tTW91c2UoZSk7Cisg
ICAgICAgIGlmIChjdXIpIGRvU2VsZWN0KGN1cik7CisgICAgICAgIGVfcHJldmVudERlZmF1bHQo
ZSk7CisgICAgICAgIGZvY3VzSW5wdXQoKTsKKyAgICAgICAgdXBkYXRlSW5wdXQgPSB0cnVlOwor
ICAgICAgICBtb3ZlKCk7IHVwKCk7CisgICAgICB9CisgICAgICB2YXIgbW92ZSA9IGNvbm5lY3Qo
ZG9jdW1lbnQsICJtb3VzZW1vdmUiLCBvcGVyYXRpb24oZnVuY3Rpb24oZSkgeworICAgICAgICBj
bGVhclRpbWVvdXQoZ29pbmcpOworICAgICAgICBlX3ByZXZlbnREZWZhdWx0KGUpOworICAgICAg
ICBpZiAoIWllICYmICFlX2J1dHRvbihlKSkgZG9uZShlKTsKKyAgICAgICAgZWxzZSBleHRlbmQo
ZSk7CisgICAgICB9KSwgdHJ1ZSk7CisgICAgICB2YXIgdXAgPSBjb25uZWN0KGRvY3VtZW50LCAi
bW91c2V1cCIsIG9wZXJhdGlvbihkb25lKSwgdHJ1ZSk7CisgICAgfQorICAgIGZ1bmN0aW9uIG9u
RG91YmxlQ2xpY2soZSkgeworICAgICAgZm9yICh2YXIgbiA9IGVfdGFyZ2V0KGUpOyBuICE9IHdy
YXBwZXI7IG4gPSBuLnBhcmVudE5vZGUpCisgICAgICAgIGlmIChuLnBhcmVudE5vZGUgPT0gZ3V0
dGVyVGV4dCkgcmV0dXJuIGVfcHJldmVudERlZmF1bHQoZSk7CisgICAgICBlX3ByZXZlbnREZWZh
dWx0KGUpOworICAgIH0KKyAgICBmdW5jdGlvbiBvbkRyb3AoZSkgeworICAgICAgaWYgKG9wdGlv
bnMub25EcmFnRXZlbnQgJiYgb3B0aW9ucy5vbkRyYWdFdmVudChpbnN0YW5jZSwgYWRkU3RvcChl
KSkpIHJldHVybjsKKyAgICAgIGVfcHJldmVudERlZmF1bHQoZSk7CisgICAgICB2YXIgcG9zID0g
cG9zRnJvbU1vdXNlKGUsIHRydWUpLCBmaWxlcyA9IGUuZGF0YVRyYW5zZmVyLmZpbGVzOworICAg
ICAgaWYgKCFwb3MgfHwgb3B0aW9ucy5yZWFkT25seSkgcmV0dXJuOworICAgICAgaWYgKGZpbGVz
ICYmIGZpbGVzLmxlbmd0aCAmJiB3aW5kb3cuRmlsZVJlYWRlciAmJiB3aW5kb3cuRmlsZSkgewor
ICAgICAgICB2YXIgbiA9IGZpbGVzLmxlbmd0aCwgdGV4dCA9IEFycmF5KG4pLCByZWFkID0gMDsK
KyAgICAgICAgdmFyIGxvYWRGaWxlID0gZnVuY3Rpb24oZmlsZSwgaSkgeworICAgICAgICAgIHZh
ciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcjsKKyAgICAgICAgICByZWFkZXIub25sb2FkID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICB0ZXh0W2ldID0gcmVhZGVyLnJlc3VsdDsKKyAgICAgICAg
ICAgIGlmICgrK3JlYWQgPT0gbikgeworICAgICAgICAgICAgICBwb3MgPSBjbGlwUG9zKHBvcyk7
CisgICAgICAgICAgICAgIG9wZXJhdGlvbihmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB2
YXIgZW5kID0gcmVwbGFjZVJhbmdlKHRleHQuam9pbigiIiksIHBvcywgcG9zKTsKKyAgICAgICAg
ICAgICAgICBzZXRTZWxlY3Rpb25Vc2VyKHBvcywgZW5kKTsKKyAgICAgICAgICAgICAgfSkoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICB9OworICAgICAgICAgIHJlYWRlci5yZWFkQXNUZXh0
KGZpbGUpOworICAgICAgICB9OworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkg
bG9hZEZpbGUoZmlsZXNbaV0sIGkpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gRG9uJ3Qg
ZG8gYSByZXBsYWNlIGlmIHRoZSBkcm9wIGhhcHBlbmVkIGluc2lkZSBvZiB0aGUgc2VsZWN0ZWQg
dGV4dC4KKyAgICAgICAgaWYgKGRyYWdnaW5nVGV4dCAmJiAhKHBvc0xlc3MocG9zLCBzZWwuZnJv
bSkgfHwgcG9zTGVzcyhzZWwudG8sIHBvcykpKSByZXR1cm47CisgICAgICAgIHRyeSB7CisgICAg
ICAgICAgdmFyIHRleHQgPSBlLmRhdGFUcmFuc2Zlci5nZXREYXRhKCJUZXh0Iik7CisgICAgICAg
ICAgaWYgKHRleHQpIHsKKyAgICAgICAgICAgIGNvbXBvdW5kQ2hhbmdlKGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICB2YXIgY3VyRnJvbSA9IHNlbC5mcm9tLCBjdXJUbyA9IHNlbC50bzsKKyAg
ICAgICAgICAgICAgc2V0U2VsZWN0aW9uVXNlcihwb3MsIHBvcyk7CisgICAgICAgICAgICAgIGlm
IChkcmFnZ2luZ1RleHQpIHJlcGxhY2VSYW5nZSgiIiwgY3VyRnJvbSwgY3VyVG8pOworICAgICAg
ICAgICAgICByZXBsYWNlU2VsZWN0aW9uKHRleHQpOworICAgICAgICAgICAgICBmb2N1c0lucHV0
KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2F0
Y2goZSl7fQorICAgICAgfQorICAgIH0KKyAgICBmdW5jdGlvbiBvbkRyYWdTdGFydChlKSB7Cisg
ICAgICB2YXIgdHh0ID0gZ2V0U2VsZWN0aW9uKCk7CisgICAgICBlLmRhdGFUcmFuc2Zlci5zZXRE
YXRhKCJUZXh0IiwgdHh0KTsKKworICAgICAgLy8gVXNlIGR1bW15IGltYWdlIGluc3RlYWQgb2Yg
ZGVmYXVsdCBicm93c2VycyBpbWFnZS4KKyAgICAgIGlmIChnZWNrbyB8fCBjaHJvbWUgfHwgb3Bl
cmEpIHsKKyAgICAgICAgdmFyIGltZyA9IGVsdCgnaW1nJyk7CisgICAgICAgIGltZy5zY3IgPSAn
ZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGRoQWdBQ0FJQUFBQUFBQVAvLy95d0FBQUFBQWdB
Q0FBQUNBb1JSQURzPSc7IC8vMXgxIGltYWdlCisgICAgICAgIGUuZGF0YVRyYW5zZmVyLnNldERy
YWdJbWFnZShpbWcsIDAsIDApOworICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIGRvSGFu
ZGxlQmluZGluZyhib3VuZCwgZHJvcFNoaWZ0KSB7CisgICAgICBpZiAodHlwZW9mIGJvdW5kID09
ICJzdHJpbmciKSB7CisgICAgICAgIGJvdW5kID0gY29tbWFuZHNbYm91bmRdOworICAgICAgICBp
ZiAoIWJvdW5kKSByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgICB2YXIgcHJldlNoaWZ0ID0g
c2hpZnRTZWxlY3Rpbmc7CisgICAgICB0cnkgeworICAgICAgICBpZiAob3B0aW9ucy5yZWFkT25s
eSkgc3VwcHJlc3NFZGl0cyA9IHRydWU7CisgICAgICAgIGlmIChkcm9wU2hpZnQpIHNoaWZ0U2Vs
ZWN0aW5nID0gbnVsbDsKKyAgICAgICAgYm91bmQoaW5zdGFuY2UpOworICAgICAgfSBjYXRjaChl
KSB7CisgICAgICAgIGlmIChlICE9IFBhc3MpIHRocm93IGU7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgIH0gZmluYWxseSB7CisgICAgICAgIHNoaWZ0U2VsZWN0aW5nID0gcHJldlNoaWZ0
OworICAgICAgICBzdXBwcmVzc0VkaXRzID0gZmFsc2U7CisgICAgICB9CisgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisgICAgdmFyIG1heWJlVHJhbnNpdGlvbjsKKyAgICBmdW5jdGlvbiBoYW5k
bGVLZXlCaW5kaW5nKGUpIHsKKyAgICAgIC8vIEhhbmRsZSBhdXRvIGtleW1hcCB0cmFuc2l0aW9u
cworICAgICAgdmFyIHN0YXJ0TWFwID0gZ2V0S2V5TWFwKG9wdGlvbnMua2V5TWFwKSwgbmV4dCA9
IHN0YXJ0TWFwLmF1dG87CisgICAgICBjbGVhclRpbWVvdXQobWF5YmVUcmFuc2l0aW9uKTsKKyAg
ICAgIGlmIChuZXh0ICYmICFpc01vZGlmaWVyS2V5KGUpKSBtYXliZVRyYW5zaXRpb24gPSBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAoZ2V0S2V5TWFwKG9wdGlvbnMua2V5TWFw
KSA9PSBzdGFydE1hcCkgeworICAgICAgICAgIG9wdGlvbnMua2V5TWFwID0gKG5leHQuY2FsbCA/
IG5leHQuY2FsbChudWxsLCBpbnN0YW5jZSkgOiBuZXh0KTsKKyAgICAgICAgfQorICAgICAgfSwg
NTApOworCisgICAgICB2YXIgbmFtZSA9IGtleU5hbWVzW2VfcHJvcChlLCAia2V5Q29kZSIpXSwg
aGFuZGxlZCA9IGZhbHNlOworICAgICAgaWYgKG5hbWUgPT0gbnVsbCB8fCBlLmFsdEdyYXBoS2V5
KSByZXR1cm4gZmFsc2U7CisgICAgICBpZiAoZV9wcm9wKGUsICJhbHRLZXkiKSkgbmFtZSA9ICJB
bHQtIiArIG5hbWU7CisgICAgICBpZiAoZV9wcm9wKGUsICJjdHJsS2V5IikpIG5hbWUgPSAiQ3Ry
bC0iICsgbmFtZTsKKyAgICAgIGlmIChlX3Byb3AoZSwgIm1ldGFLZXkiKSkgbmFtZSA9ICJDbWQt
IiArIG5hbWU7CisKKyAgICAgIHZhciBzdG9wcGVkID0gZmFsc2U7CisgICAgICBmdW5jdGlvbiBz
dG9wKCkgeyBzdG9wcGVkID0gdHJ1ZTsgfQorCisgICAgICBpZiAoZV9wcm9wKGUsICJzaGlmdEtl
eSIpKSB7CisgICAgICAgIGhhbmRsZWQgPSBsb29rdXBLZXkoIlNoaWZ0LSIgKyBuYW1lLCBvcHRp
b25zLmV4dHJhS2V5cywgb3B0aW9ucy5rZXlNYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnVuY3Rpb24oYikge3JldHVybiBkb0hhbmRsZUJpbmRpbmcoYiwgdHJ1ZSk7fSwgc3RvcCkK
KyAgICAgICAgICAgICAgIHx8IGxvb2t1cEtleShuYW1lLCBvcHRpb25zLmV4dHJhS2V5cywgb3B0
aW9ucy5rZXlNYXAsIGZ1bmN0aW9uKGIpIHsKKyAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBi
ID09ICJzdHJpbmciICYmIC9eZ29bQS1aXS8udGVzdChiKSkgcmV0dXJuIGRvSGFuZGxlQmluZGlu
ZyhiKTsKKyAgICAgICAgICAgICAgIH0sIHN0b3ApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
aGFuZGxlZCA9IGxvb2t1cEtleShuYW1lLCBvcHRpb25zLmV4dHJhS2V5cywgb3B0aW9ucy5rZXlN
YXAsIGRvSGFuZGxlQmluZGluZywgc3RvcCk7CisgICAgICB9CisgICAgICBpZiAoc3RvcHBlZCkg
aGFuZGxlZCA9IGZhbHNlOworICAgICAgaWYgKGhhbmRsZWQpIHsKKyAgICAgICAgZV9wcmV2ZW50
RGVmYXVsdChlKTsKKyAgICAgICAgcmVzdGFydEJsaW5rKCk7CisgICAgICAgIGlmIChpZSkgeyBl
Lm9sZEtleUNvZGUgPSBlLmtleUNvZGU7IGUua2V5Q29kZSA9IDA7IH0KKyAgICAgIH0KKyAgICAg
IHJldHVybiBoYW5kbGVkOworICAgIH0KKyAgICBmdW5jdGlvbiBoYW5kbGVDaGFyQmluZGluZyhl
LCBjaCkgeworICAgICAgdmFyIGhhbmRsZWQgPSBsb29rdXBLZXkoIiciICsgY2ggKyAiJyIsIG9w
dGlvbnMuZXh0cmFLZXlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5r
ZXlNYXAsIGZ1bmN0aW9uKGIpIHsgcmV0dXJuIGRvSGFuZGxlQmluZGluZyhiLCB0cnVlKTsgfSk7
CisgICAgICBpZiAoaGFuZGxlZCkgeworICAgICAgICBlX3ByZXZlbnREZWZhdWx0KGUpOworICAg
ICAgICByZXN0YXJ0QmxpbmsoKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBoYW5kbGVkOworICAg
IH0KKworICAgIHZhciBsYXN0U3RvcHBlZEtleSA9IG51bGw7CisgICAgZnVuY3Rpb24gb25LZXlE
b3duKGUpIHsKKyAgICAgIGlmICghZm9jdXNlZCkgb25Gb2N1cygpOworICAgICAgaWYgKGllICYm
IGUua2V5Q29kZSA9PSAyNykgeyBlLnJldHVyblZhbHVlID0gZmFsc2U7IH0KKyAgICAgIGlmIChw
b2xsaW5nRmFzdCkgeyBpZiAocmVhZElucHV0KCkpIHBvbGxpbmdGYXN0ID0gZmFsc2U7IH0KKyAg
ICAgIGlmIChvcHRpb25zLm9uS2V5RXZlbnQgJiYgb3B0aW9ucy5vbktleUV2ZW50KGluc3RhbmNl
LCBhZGRTdG9wKGUpKSkgcmV0dXJuOworICAgICAgdmFyIGNvZGUgPSBlX3Byb3AoZSwgImtleUNv
ZGUiKTsKKyAgICAgIC8vIElFIGRvZXMgc3RyYW5nZSB0aGluZ3Mgd2l0aCBlc2NhcGUuCisgICAg
ICBzZXRTaGlmdChjb2RlID09IDE2IHx8IGVfcHJvcChlLCAic2hpZnRLZXkiKSk7CisgICAgICAv
LyBGaXJzdCBnaXZlIG9uS2V5RXZlbnQgb3B0aW9uIGEgY2hhbmNlIHRvIGhhbmRsZSB0aGlzLgor
ICAgICAgdmFyIGhhbmRsZWQgPSBoYW5kbGVLZXlCaW5kaW5nKGUpOworICAgICAgaWYgKG9wZXJh
KSB7CisgICAgICAgIGxhc3RTdG9wcGVkS2V5ID0gaGFuZGxlZCA/IGNvZGUgOiBudWxsOworICAg
ICAgICAvLyBPcGVyYSBoYXMgbm8gY3V0IGV2ZW50Li4uIHdlIHRyeSB0byBhdCBsZWFzdCBjYXRj
aCB0aGUga2V5IGNvbWJvCisgICAgICAgIGlmICghaGFuZGxlZCAmJiBjb2RlID09IDg4ICYmIGVf
cHJvcChlLCBtYWMgPyAibWV0YUtleSIgOiAiY3RybEtleSIpKQorICAgICAgICAgIHJlcGxhY2VT
ZWxlY3Rpb24oIiIpOworICAgICAgfQorICAgIH0KKyAgICBmdW5jdGlvbiBvbktleVByZXNzKGUp
IHsKKyAgICAgIGlmIChwb2xsaW5nRmFzdCkgcmVhZElucHV0KCk7CisgICAgICBpZiAob3B0aW9u
cy5vbktleUV2ZW50ICYmIG9wdGlvbnMub25LZXlFdmVudChpbnN0YW5jZSwgYWRkU3RvcChlKSkp
IHJldHVybjsKKyAgICAgIHZhciBrZXlDb2RlID0gZV9wcm9wKGUsICJrZXlDb2RlIiksIGNoYXJD
b2RlID0gZV9wcm9wKGUsICJjaGFyQ29kZSIpOworICAgICAgaWYgKG9wZXJhICYmIGtleUNvZGUg
PT0gbGFzdFN0b3BwZWRLZXkpIHtsYXN0U3RvcHBlZEtleSA9IG51bGw7IGVfcHJldmVudERlZmF1
bHQoZSk7IHJldHVybjt9CisgICAgICBpZiAoKChvcGVyYSAmJiAoIWUud2hpY2ggfHwgZS53aGlj
aCA8IDEwKSkgfHwga2h0bWwpICYmIGhhbmRsZUtleUJpbmRpbmcoZSkpIHJldHVybjsKKyAgICAg
IHZhciBjaCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhckNvZGUgPT0gbnVsbCA/IGtleUNvZGUg
OiBjaGFyQ29kZSk7CisgICAgICBpZiAob3B0aW9ucy5lbGVjdHJpY0NoYXJzICYmIG1vZGUuZWxl
Y3RyaWNDaGFycyAmJiBvcHRpb25zLnNtYXJ0SW5kZW50ICYmICFvcHRpb25zLnJlYWRPbmx5KSB7
CisgICAgICAgIGlmIChtb2RlLmVsZWN0cmljQ2hhcnMuaW5kZXhPZihjaCkgPiAtMSkKKyAgICAg
ICAgICBzZXRUaW1lb3V0KG9wZXJhdGlvbihmdW5jdGlvbigpIHtpbmRlbnRMaW5lKHNlbC50by5s
aW5lLCAic21hcnQiKTt9KSwgNzUpOworICAgICAgfQorICAgICAgaWYgKGhhbmRsZUNoYXJCaW5k
aW5nKGUsIGNoKSkgcmV0dXJuOworICAgICAgZmFzdFBvbGwoKTsKKyAgICB9CisgICAgZnVuY3Rp
b24gb25LZXlVcChlKSB7CisgICAgICBpZiAob3B0aW9ucy5vbktleUV2ZW50ICYmIG9wdGlvbnMu
b25LZXlFdmVudChpbnN0YW5jZSwgYWRkU3RvcChlKSkpIHJldHVybjsKKyAgICAgIGlmIChlX3By
b3AoZSwgImtleUNvZGUiKSA9PSAxNikgc2hpZnRTZWxlY3RpbmcgPSBudWxsOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIG9uRm9jdXMoKSB7CisgICAgICBpZiAob3B0aW9ucy5yZWFkT25seSA9PSAi
bm9jdXJzb3IiKSByZXR1cm47CisgICAgICBpZiAoIWZvY3VzZWQpIHsKKyAgICAgICAgaWYgKG9w
dGlvbnMub25Gb2N1cykgb3B0aW9ucy5vbkZvY3VzKGluc3RhbmNlKTsKKyAgICAgICAgZm9jdXNl
ZCA9IHRydWU7CisgICAgICAgIGlmIChzY3JvbGxlci5jbGFzc05hbWUuc2VhcmNoKC9cYkNvZGVN
aXJyb3ItZm9jdXNlZFxiLykgPT0gLTEpCisgICAgICAgICAgc2Nyb2xsZXIuY2xhc3NOYW1lICs9
ICIgQ29kZU1pcnJvci1mb2N1c2VkIjsKKyAgICAgICAgaWYgKCFsZWF2ZUlucHV0QWxvbmUpIHJl
c2V0SW5wdXQodHJ1ZSk7CisgICAgICB9CisgICAgICBzbG93UG9sbCgpOworICAgICAgcmVzdGFy
dEJsaW5rKCk7CisgICAgfQorICAgIGZ1bmN0aW9uIG9uQmx1cigpIHsKKyAgICAgIGlmIChmb2N1
c2VkKSB7CisgICAgICAgIGlmIChvcHRpb25zLm9uQmx1cikgb3B0aW9ucy5vbkJsdXIoaW5zdGFu
Y2UpOworICAgICAgICBmb2N1c2VkID0gZmFsc2U7CisgICAgICAgIGlmIChicmFja2V0SGlnaGxp
Z2h0ZWQpCisgICAgICAgICAgb3BlcmF0aW9uKGZ1bmN0aW9uKCl7CisgICAgICAgICAgICBpZiAo
YnJhY2tldEhpZ2hsaWdodGVkKSB7IGJyYWNrZXRIaWdobGlnaHRlZCgpOyBicmFja2V0SGlnaGxp
Z2h0ZWQgPSBudWxsOyB9CisgICAgICAgICAgfSkoKTsKKyAgICAgICAgc2Nyb2xsZXIuY2xhc3NO
YW1lID0gc2Nyb2xsZXIuY2xhc3NOYW1lLnJlcGxhY2UoIiBDb2RlTWlycm9yLWZvY3VzZWQiLCAi
Iik7CisgICAgICB9CisgICAgICBjbGVhckludGVydmFsKGJsaW5rZXIpOworICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHtpZiAoIWZvY3VzZWQpIHNoaWZ0U2VsZWN0aW5nID0gbnVsbDt9LCAx
NTApOworICAgIH0KKworICAgIC8vIFJlcGxhY2UgdGhlIHJhbmdlIGZyb20gZnJvbSB0byB0byBi
eSB0aGUgc3RyaW5ncyBpbiBuZXdUZXh0LgorICAgIC8vIEFmdGVyd2FyZHMsIHNldCB0aGUgc2Vs
ZWN0aW9uIHRvIHNlbEZyb20sIHNlbFRvLgorICAgIGZ1bmN0aW9uIHVwZGF0ZUxpbmVzKGZyb20s
IHRvLCBuZXdUZXh0LCBzZWxGcm9tLCBzZWxUbykgeworICAgICAgaWYgKHN1cHByZXNzRWRpdHMp
IHJldHVybjsKKyAgICAgIGlmIChoaXN0b3J5KSB7CisgICAgICAgIHZhciBvbGQgPSBbXTsKKyAg
ICAgICAgZG9jLml0ZXIoZnJvbS5saW5lLCB0by5saW5lICsgMSwgZnVuY3Rpb24obGluZSkgeyBv
bGQucHVzaChsaW5lLnRleHQpOyB9KTsKKyAgICAgICAgaGlzdG9yeS5hZGRDaGFuZ2UoZnJvbS5s
aW5lLCBuZXdUZXh0Lmxlbmd0aCwgb2xkKTsKKyAgICAgICAgd2hpbGUgKGhpc3RvcnkuZG9uZS5s
ZW5ndGggPiBvcHRpb25zLnVuZG9EZXB0aCkgaGlzdG9yeS5kb25lLnNoaWZ0KCk7CisgICAgICB9
CisgICAgICB1cGRhdGVMaW5lc05vVW5kbyhmcm9tLCB0bywgbmV3VGV4dCwgc2VsRnJvbSwgc2Vs
VG8pOworICAgIH0KKyAgICBmdW5jdGlvbiB1bnJlZG9IZWxwZXIoZnJvbSwgdG8pIHsKKyAgICAg
IGlmICghZnJvbS5sZW5ndGgpIHJldHVybjsKKyAgICAgIHZhciBzZXQgPSBmcm9tLnBvcCgpLCBv
dXQgPSBbXTsKKyAgICAgIGZvciAodmFyIGkgPSBzZXQubGVuZ3RoIC0gMTsgaSA+PSAwOyBpIC09
IDEpIHsKKyAgICAgICAgdmFyIGNoYW5nZSA9IHNldFtpXTsKKyAgICAgICAgdmFyIHJlcGxhY2Vk
ID0gW10sIGVuZCA9IGNoYW5nZS5zdGFydCArIGNoYW5nZS5hZGRlZDsKKyAgICAgICAgZG9jLml0
ZXIoY2hhbmdlLnN0YXJ0LCBlbmQsIGZ1bmN0aW9uKGxpbmUpIHsgcmVwbGFjZWQucHVzaChsaW5l
LnRleHQpOyB9KTsKKyAgICAgICAgb3V0LnB1c2goe3N0YXJ0OiBjaGFuZ2Uuc3RhcnQsIGFkZGVk
OiBjaGFuZ2Uub2xkLmxlbmd0aCwgb2xkOiByZXBsYWNlZH0pOworICAgICAgICB2YXIgcG9zID0g
e2xpbmU6IGNoYW5nZS5zdGFydCArIGNoYW5nZS5vbGQubGVuZ3RoIC0gMSwKKyAgICAgICAgICAg
ICAgICAgICBjaDogZWRpdEVuZChyZXBsYWNlZFtyZXBsYWNlZC5sZW5ndGgtMV0sIGNoYW5nZS5v
bGRbY2hhbmdlLm9sZC5sZW5ndGgtMV0pfTsKKyAgICAgICAgdXBkYXRlTGluZXNOb1VuZG8oe2xp
bmU6IGNoYW5nZS5zdGFydCwgY2g6IDB9LCB7bGluZTogZW5kIC0gMSwgY2g6IGdldExpbmUoZW5k
LTEpLnRleHQubGVuZ3RofSwgY2hhbmdlLm9sZCwgcG9zLCBwb3MpOworICAgICAgfQorICAgICAg
dXBkYXRlSW5wdXQgPSB0cnVlOworICAgICAgdG8ucHVzaChvdXQpOworICAgIH0KKyAgICBmdW5j
dGlvbiB1bmRvKCkge3VucmVkb0hlbHBlcihoaXN0b3J5LmRvbmUsIGhpc3RvcnkudW5kb25lKTt9
CisgICAgZnVuY3Rpb24gcmVkbygpIHt1bnJlZG9IZWxwZXIoaGlzdG9yeS51bmRvbmUsIGhpc3Rv
cnkuZG9uZSk7fQorCisgICAgZnVuY3Rpb24gdXBkYXRlTGluZXNOb1VuZG8oZnJvbSwgdG8sIG5l
d1RleHQsIHNlbEZyb20sIHNlbFRvKSB7CisgICAgICBpZiAoc3VwcHJlc3NFZGl0cykgcmV0dXJu
OworICAgICAgdmFyIHJlY29tcHV0ZU1heExlbmd0aCA9IGZhbHNlLCBtYXhMaW5lTGVuZ3RoID0g
bWF4TGluZS50ZXh0Lmxlbmd0aDsKKyAgICAgIGlmICghb3B0aW9ucy5saW5lV3JhcHBpbmcpCisg
ICAgICAgIGRvYy5pdGVyKGZyb20ubGluZSwgdG8ubGluZSArIDEsIGZ1bmN0aW9uKGxpbmUpIHsK
KyAgICAgICAgICBpZiAoIWxpbmUuaGlkZGVuICYmIGxpbmUudGV4dC5sZW5ndGggPT0gbWF4TGlu
ZUxlbmd0aCkge3JlY29tcHV0ZU1heExlbmd0aCA9IHRydWU7IHJldHVybiB0cnVlO30KKyAgICAg
ICAgfSk7CisgICAgICBpZiAoZnJvbS5saW5lICE9IHRvLmxpbmUgfHwgbmV3VGV4dC5sZW5ndGgg
PiAxKSBndXR0ZXJEaXJ0eSA9IHRydWU7CisKKyAgICAgIHZhciBubGluZXMgPSB0by5saW5lIC0g
ZnJvbS5saW5lLCBmaXJzdExpbmUgPSBnZXRMaW5lKGZyb20ubGluZSksIGxhc3RMaW5lID0gZ2V0
TGluZSh0by5saW5lKTsKKyAgICAgIC8vIEZpcnN0IGFkanVzdCB0aGUgbGluZSBzdHJ1Y3R1cmUs
IHRha2luZyBzb21lIGNhcmUgdG8gbGVhdmUgaGlnaGxpZ2h0aW5nIGludGFjdC4KKyAgICAgIGlm
IChmcm9tLmNoID09IDAgJiYgdG8uY2ggPT0gMCAmJiBuZXdUZXh0W25ld1RleHQubGVuZ3RoIC0g
MV0gPT0gIiIpIHsKKyAgICAgICAgLy8gVGhpcyBpcyBhIHdob2xlLWxpbmUgcmVwbGFjZS4gVHJl
YXRlZCBzcGVjaWFsbHkgdG8gbWFrZQorICAgICAgICAvLyBzdXJlIGxpbmUgb2JqZWN0cyBtb3Zl
IHRoZSB3YXkgdGhleSBhcmUgc3VwcG9zZWQgdG8uCisgICAgICAgIHZhciBhZGRlZCA9IFtdLCBw
cmV2TGluZSA9IG51bGw7CisgICAgICAgIGlmIChmcm9tLmxpbmUpIHsKKyAgICAgICAgICBwcmV2
TGluZSA9IGdldExpbmUoZnJvbS5saW5lIC0gMSk7CisgICAgICAgICAgcHJldkxpbmUuZml4TWFy
a0VuZHMobGFzdExpbmUpOworICAgICAgICB9IGVsc2UgbGFzdExpbmUuZml4TWFya1N0YXJ0cygp
OworICAgICAgICBmb3IgKHZhciBpID0gMCwgZSA9IG5ld1RleHQubGVuZ3RoIC0gMTsgaSA8IGU7
ICsraSkKKyAgICAgICAgICBhZGRlZC5wdXNoKExpbmUuaW5oZXJpdE1hcmtzKG5ld1RleHRbaV0s
IHByZXZMaW5lKSk7CisgICAgICAgIGlmIChubGluZXMpIGRvYy5yZW1vdmUoZnJvbS5saW5lLCBu
bGluZXMsIGNhbGxiYWNrcyk7CisgICAgICAgIGlmIChhZGRlZC5sZW5ndGgpIGRvYy5pbnNlcnQo
ZnJvbS5saW5lLCBhZGRlZCk7CisgICAgICB9IGVsc2UgaWYgKGZpcnN0TGluZSA9PSBsYXN0TGlu
ZSkgeworICAgICAgICBpZiAobmV3VGV4dC5sZW5ndGggPT0gMSkKKyAgICAgICAgICBmaXJzdExp
bmUucmVwbGFjZShmcm9tLmNoLCB0by5jaCwgbmV3VGV4dFswXSk7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgIGxhc3RMaW5lID0gZmlyc3RMaW5lLnNwbGl0KHRvLmNoLCBuZXdUZXh0W25ld1Rl
eHQubGVuZ3RoLTFdKTsKKyAgICAgICAgICBmaXJzdExpbmUucmVwbGFjZShmcm9tLmNoLCBudWxs
LCBuZXdUZXh0WzBdKTsKKyAgICAgICAgICBmaXJzdExpbmUuZml4TWFya0VuZHMobGFzdExpbmUp
OworICAgICAgICAgIHZhciBhZGRlZCA9IFtdOworICAgICAgICAgIGZvciAodmFyIGkgPSAxLCBl
ID0gbmV3VGV4dC5sZW5ndGggLSAxOyBpIDwgZTsgKytpKQorICAgICAgICAgICAgYWRkZWQucHVz
aChMaW5lLmluaGVyaXRNYXJrcyhuZXdUZXh0W2ldLCBmaXJzdExpbmUpKTsKKyAgICAgICAgICBh
ZGRlZC5wdXNoKGxhc3RMaW5lKTsKKyAgICAgICAgICBkb2MuaW5zZXJ0KGZyb20ubGluZSArIDEs
IGFkZGVkKTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIGlmIChuZXdUZXh0Lmxlbmd0aCA9PSAx
KSB7CisgICAgICAgIGZpcnN0TGluZS5yZXBsYWNlKGZyb20uY2gsIG51bGwsIG5ld1RleHRbMF0p
OworICAgICAgICBsYXN0TGluZS5yZXBsYWNlKG51bGwsIHRvLmNoLCAiIik7CisgICAgICAgIGZp
cnN0TGluZS5hcHBlbmQobGFzdExpbmUpOworICAgICAgICBkb2MucmVtb3ZlKGZyb20ubGluZSAr
IDEsIG5saW5lcywgY2FsbGJhY2tzKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHZhciBhZGRl
ZCA9IFtdOworICAgICAgICBmaXJzdExpbmUucmVwbGFjZShmcm9tLmNoLCBudWxsLCBuZXdUZXh0
WzBdKTsKKyAgICAgICAgbGFzdExpbmUucmVwbGFjZShudWxsLCB0by5jaCwgbmV3VGV4dFtuZXdU
ZXh0Lmxlbmd0aC0xXSk7CisgICAgICAgIGZpcnN0TGluZS5maXhNYXJrRW5kcyhsYXN0TGluZSk7
CisgICAgICAgIGZvciAodmFyIGkgPSAxLCBlID0gbmV3VGV4dC5sZW5ndGggLSAxOyBpIDwgZTsg
KytpKQorICAgICAgICAgIGFkZGVkLnB1c2goTGluZS5pbmhlcml0TWFya3MobmV3VGV4dFtpXSwg
Zmlyc3RMaW5lKSk7CisgICAgICAgIGlmIChubGluZXMgPiAxKSBkb2MucmVtb3ZlKGZyb20ubGlu
ZSArIDEsIG5saW5lcyAtIDEsIGNhbGxiYWNrcyk7CisgICAgICAgIGRvYy5pbnNlcnQoZnJvbS5s
aW5lICsgMSwgYWRkZWQpOworICAgICAgfQorICAgICAgaWYgKG9wdGlvbnMubGluZVdyYXBwaW5n
KSB7CisgICAgICAgIHZhciBwZXJMaW5lID0gTWF0aC5tYXgoNSwgc2Nyb2xsZXIuY2xpZW50V2lk
dGggLyBjaGFyV2lkdGgoKSAtIDMpOworICAgICAgICBkb2MuaXRlcihmcm9tLmxpbmUsIGZyb20u
bGluZSArIG5ld1RleHQubGVuZ3RoLCBmdW5jdGlvbihsaW5lKSB7CisgICAgICAgICAgaWYgKGxp
bmUuaGlkZGVuKSByZXR1cm47CisgICAgICAgICAgdmFyIGd1ZXNzID0gTWF0aC5jZWlsKGxpbmUu
dGV4dC5sZW5ndGggLyBwZXJMaW5lKSB8fCAxOworICAgICAgICAgIGlmIChndWVzcyAhPSBsaW5l
LmhlaWdodCkgdXBkYXRlTGluZUhlaWdodChsaW5lLCBndWVzcyk7CisgICAgICAgIH0pOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgZG9jLml0ZXIoZnJvbS5saW5lLCBmcm9tLmxpbmUgKyBuZXdU
ZXh0Lmxlbmd0aCwgZnVuY3Rpb24obGluZSkgeworICAgICAgICAgIHZhciBsID0gbGluZS50ZXh0
OworICAgICAgICAgIGlmICghbGluZS5oaWRkZW4gJiYgbC5sZW5ndGggPiBtYXhMaW5lTGVuZ3Ro
KSB7CisgICAgICAgICAgICBtYXhMaW5lID0gbGluZTsgbWF4TGluZUxlbmd0aCA9IGwubGVuZ3Ro
OyBtYXhMaW5lQ2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICByZWNvbXB1dGVNYXhMZW5ndGgg
PSBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICBpZiAocmVjb21wdXRl
TWF4TGVuZ3RoKSB1cGRhdGVNYXhMaW5lID0gdHJ1ZTsKKyAgICAgIH0KKworICAgICAgLy8gQWRk
IHRoZXNlIGxpbmVzIHRvIHRoZSB3b3JrIGFycmF5LCBzbyB0aGF0IHRoZXkgd2lsbCBiZQorICAg
ICAgLy8gaGlnaGxpZ2h0ZWQuIEFkanVzdCB3b3JrIGxpbmVzIGlmIGxpbmVzIHdlcmUgYWRkZWQv
cmVtb3ZlZC4KKyAgICAgIHZhciBuZXdXb3JrID0gW10sIGxlbmRpZmYgPSBuZXdUZXh0Lmxlbmd0
aCAtIG5saW5lcyAtIDE7CisgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IHdvcmsubGVuZ3RoOyBp
IDwgbDsgKytpKSB7CisgICAgICAgIHZhciB0YXNrID0gd29ya1tpXTsKKyAgICAgICAgaWYgKHRh
c2sgPCBmcm9tLmxpbmUpIG5ld1dvcmsucHVzaCh0YXNrKTsKKyAgICAgICAgZWxzZSBpZiAodGFz
ayA+IHRvLmxpbmUpIG5ld1dvcmsucHVzaCh0YXNrICsgbGVuZGlmZik7CisgICAgICB9CisgICAg
ICB2YXIgaGxFbmQgPSBmcm9tLmxpbmUgKyBNYXRoLm1pbihuZXdUZXh0Lmxlbmd0aCwgNTAwKTsK
KyAgICAgIGhpZ2hsaWdodExpbmVzKGZyb20ubGluZSwgaGxFbmQpOworICAgICAgbmV3V29yay5w
dXNoKGhsRW5kKTsKKyAgICAgIHdvcmsgPSBuZXdXb3JrOworICAgICAgc3RhcnRXb3JrZXIoMTAw
KTsKKyAgICAgIC8vIFJlbWVtYmVyIHRoYXQgdGhlc2UgbGluZXMgY2hhbmdlZCwgZm9yIHVwZGF0
aW5nIHRoZSBkaXNwbGF5CisgICAgICBjaGFuZ2VzLnB1c2goe2Zyb206IGZyb20ubGluZSwgdG86
IHRvLmxpbmUgKyAxLCBkaWZmOiBsZW5kaWZmfSk7CisgICAgICB2YXIgY2hhbmdlT2JqID0ge2Zy
b206IGZyb20sIHRvOiB0bywgdGV4dDogbmV3VGV4dH07CisgICAgICBpZiAodGV4dENoYW5nZWQp
IHsKKyAgICAgICAgZm9yICh2YXIgY3VyID0gdGV4dENoYW5nZWQ7IGN1ci5uZXh0OyBjdXIgPSBj
dXIubmV4dCkge30KKyAgICAgICAgY3VyLm5leHQgPSBjaGFuZ2VPYmo7CisgICAgICB9IGVsc2Ug
dGV4dENoYW5nZWQgPSBjaGFuZ2VPYmo7CisKKyAgICAgIC8vIFVwZGF0ZSB0aGUgc2VsZWN0aW9u
CisgICAgICBmdW5jdGlvbiB1cGRhdGVMaW5lKG4pIHtyZXR1cm4gbiA8PSBNYXRoLm1pbih0by5s
aW5lLCB0by5saW5lICsgbGVuZGlmZikgPyBuIDogbiArIGxlbmRpZmY7fQorICAgICAgc2V0U2Vs
ZWN0aW9uKGNsaXBQb3Moc2VsRnJvbSksIGNsaXBQb3Moc2VsVG8pLAorICAgICAgICAgICAgICAg
ICAgIHVwZGF0ZUxpbmUoc2VsLmZyb20ubGluZSksIHVwZGF0ZUxpbmUoc2VsLnRvLmxpbmUpKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBuZWVkc1Njcm9sbGJhcigpIHsKKyAgICAgIHZhciByZWFs
SGVpZ2h0ID0gZG9jLmhlaWdodCAqIHRleHRIZWlnaHQoKSArIDIgKiBwYWRkaW5nVG9wKCk7Cisg
ICAgICByZXR1cm4gcmVhbEhlaWdodCAtIDEgPiBzY3JvbGxlci5vZmZzZXRIZWlnaHQgPyByZWFs
SGVpZ2h0IDogZmFsc2U7CisgICAgfQorCisgICAgZnVuY3Rpb24gdXBkYXRlVmVydGljYWxTY3Jv
bGwoc2Nyb2xsVG9wKSB7CisgICAgICB2YXIgc2Nyb2xsSGVpZ2h0ID0gbmVlZHNTY3JvbGxiYXIo
KTsKKyAgICAgIHNjcm9sbGJhci5zdHlsZS5kaXNwbGF5ID0gc2Nyb2xsSGVpZ2h0ID8gImJsb2Nr
IiA6ICJub25lIjsKKyAgICAgIGlmIChzY3JvbGxIZWlnaHQpIHsKKyAgICAgICAgc2Nyb2xsYmFy
SW5uZXIuc3R5bGUuaGVpZ2h0ID0gc2l6ZXIuc3R5bGUubWluSGVpZ2h0ID0gc2Nyb2xsSGVpZ2h0
ICsgInB4IjsKKyAgICAgICAgc2Nyb2xsYmFyLnN0eWxlLmhlaWdodCA9IHNjcm9sbGVyLmNsaWVu
dEhlaWdodCArICJweCI7CisgICAgICAgIGlmIChzY3JvbGxUb3AgIT0gbnVsbCkgc2Nyb2xsYmFy
LnNjcm9sbFRvcCA9IHNjcm9sbGVyLnNjcm9sbFRvcCA9IHNjcm9sbFRvcDsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHNpemVyLnN0eWxlLm1pbkhlaWdodCA9ICIiOworICAgICAgfQorICAgICAg
Ly8gUG9zaXRpb24gdGhlIG1vdmVyIGRpdiB0byBhbGlnbiB3aXRoIHRoZSBjdXJyZW50IHZpcnR1
YWwgc2Nyb2xsIHBvc2l0aW9uCisgICAgICBtb3Zlci5zdHlsZS50b3AgPSBkaXNwbGF5T2Zmc2V0
ICogdGV4dEhlaWdodCgpICsgInB4IjsKKyAgICB9CisKKyAgICAvLyBPbiBNYWMgT1MgWCBMaW9u
IGFuZCB1cCwgZGV0ZWN0IHdoZXRoZXIgdGhlIG1vdXNlIGlzIHBsdWdnZWQgaW4gYnkgbWVhc3Vy
aW5nCisgICAgLy8gdGhlIHdpZHRoIG9mIGEgZGl2IHdpdGggYSBzY3JvbGxiYXIgaW4gaXQuIElm
IHRoZSB3aWR0aCBpcyA8PSAxLCB0aGVuCisgICAgLy8gdGhlIG1vdXNlIGlzbid0IHBsdWdnZWQg
aW4gYW5kIHNjcm9sbGJhcnMgc2hvdWxkIG92ZXJsYXAgdGhlIGNvbnRlbnQuCisgICAgZnVuY3Rp
b24gb3ZlcmxhcFNjcm9sbGJhcnMoKSB7CisgICAgICB2YXIgdG1wU2JJbm5lciA9IGVsdCgiZGl2
IiwgbnVsbCwgIkNvZGVNaXJyb3Itc2Nyb2xsYmFyLWlubmVyIiwgImhlaWdodDogMjAwcHgiKTsK
KyAgICAgIHZhciB0bXBTYiA9IGVsdCgiZGl2IiwgW3RtcFNiSW5uZXJdLCAiQ29kZU1pcnJvci1z
Y3JvbGxiYXIiLCAicG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAtOTk5OXB4OyBoZWlnaHQ6IDEw
MHB4OyIpOworICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0bXBTYik7CisgICAgICB2
YXIgcmVzdWx0ID0gKHRtcFNiLm9mZnNldFdpZHRoIDw9IDEpOworICAgICAgZG9jdW1lbnQuYm9k
eS5yZW1vdmVDaGlsZCh0bXBTYik7CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAg
IGZ1bmN0aW9uIGNvbXB1dGVNYXhMZW5ndGgoKSB7CisgICAgICBtYXhMaW5lID0gZ2V0TGluZSgw
KTsgbWF4TGluZUNoYW5nZWQgPSB0cnVlOworICAgICAgdmFyIG1heExpbmVMZW5ndGggPSBtYXhM
aW5lLnRleHQubGVuZ3RoOworICAgICAgZG9jLml0ZXIoMSwgZG9jLnNpemUsIGZ1bmN0aW9uKGxp
bmUpIHsKKyAgICAgICAgdmFyIGwgPSBsaW5lLnRleHQ7CisgICAgICAgIGlmICghbGluZS5oaWRk
ZW4gJiYgbC5sZW5ndGggPiBtYXhMaW5lTGVuZ3RoKSB7CisgICAgICAgICAgbWF4TGluZUxlbmd0
aCA9IGwubGVuZ3RoOyBtYXhMaW5lID0gbGluZTsKKyAgICAgICAgfQorICAgICAgfSk7CisgICAg
ICB1cGRhdGVNYXhMaW5lID0gZmFsc2U7CisgICAgfQorCisgICAgZnVuY3Rpb24gcmVwbGFjZVJh
bmdlKGNvZGUsIGZyb20sIHRvKSB7CisgICAgICBmcm9tID0gY2xpcFBvcyhmcm9tKTsKKyAgICAg
IGlmICghdG8pIHRvID0gZnJvbTsgZWxzZSB0byA9IGNsaXBQb3ModG8pOworICAgICAgY29kZSA9
IHNwbGl0TGluZXMoY29kZSk7CisgICAgICBmdW5jdGlvbiBhZGp1c3RQb3MocG9zKSB7CisgICAg
ICAgIGlmIChwb3NMZXNzKHBvcywgZnJvbSkpIHJldHVybiBwb3M7CisgICAgICAgIGlmICghcG9z
TGVzcyh0bywgcG9zKSkgcmV0dXJuIGVuZDsKKyAgICAgICAgdmFyIGxpbmUgPSBwb3MubGluZSAr
IGNvZGUubGVuZ3RoIC0gKHRvLmxpbmUgLSBmcm9tLmxpbmUpIC0gMTsKKyAgICAgICAgdmFyIGNo
ID0gcG9zLmNoOworICAgICAgICBpZiAocG9zLmxpbmUgPT0gdG8ubGluZSkKKyAgICAgICAgICBj
aCArPSBjb2RlW2NvZGUubGVuZ3RoLTFdLmxlbmd0aCAtICh0by5jaCAtICh0by5saW5lID09IGZy
b20ubGluZSA/IGZyb20uY2ggOiAwKSk7CisgICAgICAgIHJldHVybiB7bGluZTogbGluZSwgY2g6
IGNofTsKKyAgICAgIH0KKyAgICAgIHZhciBlbmQ7CisgICAgICByZXBsYWNlUmFuZ2UxKGNvZGUs
IGZyb20sIHRvLCBmdW5jdGlvbihlbmQxKSB7CisgICAgICAgIGVuZCA9IGVuZDE7CisgICAgICAg
IHJldHVybiB7ZnJvbTogYWRqdXN0UG9zKHNlbC5mcm9tKSwgdG86IGFkanVzdFBvcyhzZWwudG8p
fTsKKyAgICAgIH0pOworICAgICAgcmV0dXJuIGVuZDsKKyAgICB9CisgICAgZnVuY3Rpb24gcmVw
bGFjZVNlbGVjdGlvbihjb2RlLCBjb2xsYXBzZSkgeworICAgICAgcmVwbGFjZVJhbmdlMShzcGxp
dExpbmVzKGNvZGUpLCBzZWwuZnJvbSwgc2VsLnRvLCBmdW5jdGlvbihlbmQpIHsKKyAgICAgICAg
aWYgKGNvbGxhcHNlID09ICJlbmQiKSByZXR1cm4ge2Zyb206IGVuZCwgdG86IGVuZH07CisgICAg
ICAgIGVsc2UgaWYgKGNvbGxhcHNlID09ICJzdGFydCIpIHJldHVybiB7ZnJvbTogc2VsLmZyb20s
IHRvOiBzZWwuZnJvbX07CisgICAgICAgIGVsc2UgcmV0dXJuIHtmcm9tOiBzZWwuZnJvbSwgdG86
IGVuZH07CisgICAgICB9KTsKKyAgICB9CisgICAgZnVuY3Rpb24gcmVwbGFjZVJhbmdlMShjb2Rl
LCBmcm9tLCB0bywgY29tcHV0ZVNlbCkgeworICAgICAgdmFyIGVuZGNoID0gY29kZS5sZW5ndGgg
PT0gMSA/IGNvZGVbMF0ubGVuZ3RoICsgZnJvbS5jaCA6IGNvZGVbY29kZS5sZW5ndGgtMV0ubGVu
Z3RoOworICAgICAgdmFyIG5ld1NlbCA9IGNvbXB1dGVTZWwoe2xpbmU6IGZyb20ubGluZSArIGNv
ZGUubGVuZ3RoIC0gMSwgY2g6IGVuZGNofSk7CisgICAgICB1cGRhdGVMaW5lcyhmcm9tLCB0bywg
Y29kZSwgbmV3U2VsLmZyb20sIG5ld1NlbC50byk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZ2V0
UmFuZ2UoZnJvbSwgdG8sIGxpbmVTZXApIHsKKyAgICAgIHZhciBsMSA9IGZyb20ubGluZSwgbDIg
PSB0by5saW5lOworICAgICAgaWYgKGwxID09IGwyKSByZXR1cm4gZ2V0TGluZShsMSkudGV4dC5z
bGljZShmcm9tLmNoLCB0by5jaCk7CisgICAgICB2YXIgY29kZSA9IFtnZXRMaW5lKGwxKS50ZXh0
LnNsaWNlKGZyb20uY2gpXTsKKyAgICAgIGRvYy5pdGVyKGwxICsgMSwgbDIsIGZ1bmN0aW9uKGxp
bmUpIHsgY29kZS5wdXNoKGxpbmUudGV4dCk7IH0pOworICAgICAgY29kZS5wdXNoKGdldExpbmUo
bDIpLnRleHQuc2xpY2UoMCwgdG8uY2gpKTsKKyAgICAgIHJldHVybiBjb2RlLmpvaW4obGluZVNl
cCB8fCAiXG4iKTsKKyAgICB9CisgICAgZnVuY3Rpb24gZ2V0U2VsZWN0aW9uKGxpbmVTZXApIHsK
KyAgICAgIHJldHVybiBnZXRSYW5nZShzZWwuZnJvbSwgc2VsLnRvLCBsaW5lU2VwKTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBzbG93UG9sbCgpIHsKKyAgICAgIGlmIChwb2xsaW5nRmFzdCkgcmV0
dXJuOworICAgICAgcG9sbC5zZXQob3B0aW9ucy5wb2xsSW50ZXJ2YWwsIGZ1bmN0aW9uKCkgewor
ICAgICAgICBzdGFydE9wZXJhdGlvbigpOworICAgICAgICByZWFkSW5wdXQoKTsKKyAgICAgICAg
aWYgKGZvY3VzZWQpIHNsb3dQb2xsKCk7CisgICAgICAgIGVuZE9wZXJhdGlvbigpOworICAgICAg
fSk7CisgICAgfQorICAgIGZ1bmN0aW9uIGZhc3RQb2xsKCkgeworICAgICAgdmFyIG1pc3NlZCA9
IGZhbHNlOworICAgICAgcG9sbGluZ0Zhc3QgPSB0cnVlOworICAgICAgZnVuY3Rpb24gcCgpIHsK
KyAgICAgICAgc3RhcnRPcGVyYXRpb24oKTsKKyAgICAgICAgdmFyIGNoYW5nZWQgPSByZWFkSW5w
dXQoKTsKKyAgICAgICAgaWYgKCFjaGFuZ2VkICYmICFtaXNzZWQpIHttaXNzZWQgPSB0cnVlOyBw
b2xsLnNldCg2MCwgcCk7fQorICAgICAgICBlbHNlIHtwb2xsaW5nRmFzdCA9IGZhbHNlOyBzbG93
UG9sbCgpO30KKyAgICAgICAgZW5kT3BlcmF0aW9uKCk7CisgICAgICB9CisgICAgICBwb2xsLnNl
dCgyMCwgcCk7CisgICAgfQorCisgICAgLy8gUHJldmlucHV0IGlzIGEgaGFjayB0byB3b3JrIHdp
dGggSU1FLiBJZiB3ZSByZXNldCB0aGUgdGV4dGFyZWEKKyAgICAvLyBvbiBldmVyeSBjaGFuZ2Us
IHRoYXQgYnJlYWtzIElNRS4gU28gd2UgbG9vayBmb3IgY2hhbmdlcworICAgIC8vIGNvbXBhcmVk
IHRvIHRoZSBwcmV2aW91cyBjb250ZW50IGluc3RlYWQuIChNb2Rlcm4gYnJvd3NlcnMgaGF2ZQor
ICAgIC8vIGV2ZW50cyB0aGF0IGluZGljYXRlIElNRSB0YWtpbmcgcGxhY2UsIGJ1dCB0aGVzZSBh
cmUgbm90IHdpZGVseQorICAgIC8vIHN1cHBvcnRlZCBvciBjb21wYXRpYmxlIGVub3VnaCB5ZXQg
dG8gcmVseSBvbi4pCisgICAgdmFyIHByZXZJbnB1dCA9ICIiOworICAgIGZ1bmN0aW9uIHJlYWRJ
bnB1dCgpIHsKKyAgICAgIGlmIChsZWF2ZUlucHV0QWxvbmUgfHwgIWZvY3VzZWQgfHwgaGFzU2Vs
ZWN0aW9uKGlucHV0KSB8fCBvcHRpb25zLnJlYWRPbmx5KSByZXR1cm4gZmFsc2U7CisgICAgICB2
YXIgdGV4dCA9IGlucHV0LnZhbHVlOworICAgICAgaWYgKHRleHQgPT0gcHJldklucHV0KSByZXR1
cm4gZmFsc2U7CisgICAgICBzaGlmdFNlbGVjdGluZyA9IG51bGw7CisgICAgICB2YXIgc2FtZSA9
IDAsIGwgPSBNYXRoLm1pbihwcmV2SW5wdXQubGVuZ3RoLCB0ZXh0Lmxlbmd0aCk7CisgICAgICB3
aGlsZSAoc2FtZSA8IGwgJiYgcHJldklucHV0W3NhbWVdID09IHRleHRbc2FtZV0pICsrc2FtZTsK
KyAgICAgIGlmIChzYW1lIDwgcHJldklucHV0Lmxlbmd0aCkKKyAgICAgICAgc2VsLmZyb20gPSB7
bGluZTogc2VsLmZyb20ubGluZSwgY2g6IHNlbC5mcm9tLmNoIC0gKHByZXZJbnB1dC5sZW5ndGgg
LSBzYW1lKX07CisgICAgICBlbHNlIGlmIChvdmVyd3JpdGUgJiYgcG9zRXEoc2VsLmZyb20sIHNl
bC50bykpCisgICAgICAgIHNlbC50byA9IHtsaW5lOiBzZWwudG8ubGluZSwgY2g6IE1hdGgubWlu
KGdldExpbmUoc2VsLnRvLmxpbmUpLnRleHQubGVuZ3RoLCBzZWwudG8uY2ggKyAodGV4dC5sZW5n
dGggLSBzYW1lKSl9OworICAgICAgcmVwbGFjZVNlbGVjdGlvbih0ZXh0LnNsaWNlKHNhbWUpLCAi
ZW5kIik7CisgICAgICBpZiAodGV4dC5sZW5ndGggPiAxMDAwKSB7IGlucHV0LnZhbHVlID0gcHJl
dklucHV0ID0gIiI7IH0KKyAgICAgIGVsc2UgcHJldklucHV0ID0gdGV4dDsKKyAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICBmdW5jdGlvbiByZXNldElucHV0KHVzZXIpIHsKKyAgICAgIGlm
ICghcG9zRXEoc2VsLmZyb20sIHNlbC50bykpIHsKKyAgICAgICAgcHJldklucHV0ID0gIiI7Cisg
ICAgICAgIGlucHV0LnZhbHVlID0gZ2V0U2VsZWN0aW9uKCk7CisgICAgICAgIHNlbGVjdElucHV0
KGlucHV0KTsKKyAgICAgIH0gZWxzZSBpZiAodXNlcikgcHJldklucHV0ID0gaW5wdXQudmFsdWUg
PSAiIjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmb2N1c0lucHV0KCkgeworICAgICAgaWYgKG9w
dGlvbnMucmVhZE9ubHkgIT0gIm5vY3Vyc29yIikgaW5wdXQuZm9jdXMoKTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBzY3JvbGxFZGl0b3JJbnRvVmlldygpIHsKKyAgICAgIHZhciByZWN0ID0gY3Vy
c29yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgLy8gSUUgcmV0dXJucyBib2d1cyBj
b29yZGluYXRlcyB3aGVuIHRoZSBpbnN0YW5jZSBzaXRzIGluc2lkZSBvZiBhbiBpZnJhbWUgYW5k
IHRoZSBjdXJzb3IgaXMgaGlkZGVuCisgICAgICBpZiAoaWUgJiYgcmVjdC50b3AgPT0gcmVjdC5i
b3R0b20pIHJldHVybjsKKyAgICAgIHZhciB3aW5IID0gd2luZG93LmlubmVySGVpZ2h0IHx8IE1h
dGgubWF4KGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0LCBkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQub2Zmc2V0SGVpZ2h0KTsKKyAgICAgIGlmIChyZWN0LnRvcCA8IDAgfHwgcmVjdC5ib3R0b20g
PiB3aW5IKSBzY3JvbGxDdXJzb3JJbnRvVmlldygpOworICAgIH0KKyAgICBmdW5jdGlvbiBzY3Jv
bGxDdXJzb3JJbnRvVmlldygpIHsKKyAgICAgIHZhciBjb29yZHMgPSBjYWxjdWxhdGVDdXJzb3JD
b29yZHMoKTsKKyAgICAgIHNjcm9sbEludG9WaWV3KGNvb3Jkcy54LCBjb29yZHMueSwgY29vcmRz
LngsIGNvb3Jkcy55Qm90KTsKKyAgICB9CisgICAgZnVuY3Rpb24gY2FsY3VsYXRlQ3Vyc29yQ29v
cmRzKCkgeworICAgICAgdmFyIGN1cnNvciA9IGxvY2FsQ29vcmRzKHNlbC5pbnZlcnRlZCA/IHNl
bC5mcm9tIDogc2VsLnRvKTsKKyAgICAgIHZhciB4ID0gb3B0aW9ucy5saW5lV3JhcHBpbmcgPyBN
YXRoLm1pbihjdXJzb3IueCwgbGluZVNwYWNlLm9mZnNldFdpZHRoKSA6IGN1cnNvci54OworICAg
ICAgcmV0dXJuIHt4OiB4LCB5OiBjdXJzb3IueSwgeUJvdDogY3Vyc29yLnlCb3R9OworICAgIH0K
KyAgICBmdW5jdGlvbiBzY3JvbGxJbnRvVmlldyh4MSwgeTEsIHgyLCB5MikgeworICAgICAgdmFy
IHNjcm9sbFBvcyA9IGNhbGN1bGF0ZVNjcm9sbFBvcyh4MSwgeTEsIHgyLCB5Mik7CisgICAgICBp
ZiAoc2Nyb2xsUG9zLnNjcm9sbExlZnQgIT0gbnVsbCkge3Njcm9sbGVyLnNjcm9sbExlZnQgPSBz
Y3JvbGxQb3Muc2Nyb2xsTGVmdDt9CisgICAgICBpZiAoc2Nyb2xsUG9zLnNjcm9sbFRvcCAhPSBu
dWxsKSB7c2Nyb2xsYmFyLnNjcm9sbFRvcCA9IHNjcm9sbGVyLnNjcm9sbFRvcCA9IHNjcm9sbFBv
cy5zY3JvbGxUb3A7fQorICAgIH0KKyAgICBmdW5jdGlvbiBjYWxjdWxhdGVTY3JvbGxQb3MoeDEs
IHkxLCB4MiwgeTIpIHsKKyAgICAgIHZhciBwbCA9IHBhZGRpbmdMZWZ0KCksIHB0ID0gcGFkZGlu
Z1RvcCgpOworICAgICAgeTEgKz0gcHQ7IHkyICs9IHB0OyB4MSArPSBwbDsgeDIgKz0gcGw7Cisg
ICAgICB2YXIgc2NyZWVuID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0LCBzY3JlZW50b3AgPSBzY3Jv
bGxiYXIuc2Nyb2xsVG9wLCByZXN1bHQgPSB7fTsKKyAgICAgIHZhciBkb2NCb3R0b20gPSBuZWVk
c1Njcm9sbGJhcigpIHx8IEluZmluaXR5OworICAgICAgdmFyIGF0VG9wID0geTEgPCBwdCArIDEw
LCBhdEJvdHRvbSA9IHkyICsgcHQgPiBkb2NCb3R0b20gLSAxMDsKKyAgICAgIGlmICh5MSA8IHNj
cmVlbnRvcCkgcmVzdWx0LnNjcm9sbFRvcCA9IGF0VG9wID8gMCA6IE1hdGgubWF4KDAsIHkxKTsK
KyAgICAgIGVsc2UgaWYgKHkyID4gc2NyZWVudG9wICsgc2NyZWVuKSByZXN1bHQuc2Nyb2xsVG9w
ID0gKGF0Qm90dG9tID8gZG9jQm90dG9tIDogeTIpIC0gc2NyZWVuOworCisgICAgICB2YXIgc2Ny
ZWVudyA9IHNjcm9sbGVyLmNsaWVudFdpZHRoLCBzY3JlZW5sZWZ0ID0gc2Nyb2xsZXIuc2Nyb2xs
TGVmdDsKKyAgICAgIHZhciBndXR0ZXJ3ID0gb3B0aW9ucy5maXhlZEd1dHRlciA/IGd1dHRlci5j
bGllbnRXaWR0aCA6IDA7CisgICAgICB2YXIgYXRMZWZ0ID0geDEgPCBndXR0ZXJ3ICsgcGwgKyAx
MDsKKyAgICAgIGlmICh4MSA8IHNjcmVlbmxlZnQgKyBndXR0ZXJ3IHx8IGF0TGVmdCkgeworICAg
ICAgICBpZiAoYXRMZWZ0KSB4MSA9IDA7CisgICAgICAgIHJlc3VsdC5zY3JvbGxMZWZ0ID0gTWF0
aC5tYXgoMCwgeDEgLSAxMCAtIGd1dHRlcncpOworICAgICAgfSBlbHNlIGlmICh4MiA+IHNjcmVl
bncgKyBzY3JlZW5sZWZ0IC0gMykgeworICAgICAgICByZXN1bHQuc2Nyb2xsTGVmdCA9IHgyICsg
MTAgLSBzY3JlZW53OworICAgICAgfQorICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiB2aXNpYmxlTGluZXMoc2Nyb2xsVG9wKSB7CisgICAgICB2YXIgbGggPSB0ZXh0
SGVpZ2h0KCksIHRvcCA9IChzY3JvbGxUb3AgIT0gbnVsbCA/IHNjcm9sbFRvcCA6IHNjcm9sbGJh
ci5zY3JvbGxUb3ApIC0gcGFkZGluZ1RvcCgpOworICAgICAgdmFyIGZyb21IZWlnaHQgPSBNYXRo
Lm1heCgwLCBNYXRoLmZsb29yKHRvcCAvIGxoKSk7CisgICAgICB2YXIgdG9IZWlnaHQgPSBNYXRo
LmNlaWwoKHRvcCArIHNjcm9sbGVyLmNsaWVudEhlaWdodCkgLyBsaCk7CisgICAgICByZXR1cm4g
e2Zyb206IGxpbmVBdEhlaWdodChkb2MsIGZyb21IZWlnaHQpLAorICAgICAgICAgICAgICB0bzog
bGluZUF0SGVpZ2h0KGRvYywgdG9IZWlnaHQpfTsKKyAgICB9CisgICAgLy8gVXNlcyBhIHNldCBv
ZiBjaGFuZ2VzIHBsdXMgdGhlIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIHRvCisgICAgLy8gZGV0
ZXJtaW5lIHdoaWNoIERPTSB1cGRhdGVzIGhhdmUgdG8gYmUgbWFkZSwgYW5kIG1ha2VzIHRoZQor
ICAgIC8vIHVwZGF0ZXMuCisgICAgZnVuY3Rpb24gdXBkYXRlRGlzcGxheShjaGFuZ2VzLCBzdXBw
cmVzc0NhbGxiYWNrLCBzY3JvbGxUb3ApIHsKKyAgICAgIGlmICghc2Nyb2xsZXIuY2xpZW50V2lk
dGgpIHsKKyAgICAgICAgc2hvd2luZ0Zyb20gPSBzaG93aW5nVG8gPSBkaXNwbGF5T2Zmc2V0ID0g
MDsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgLy8gQ29tcHV0ZSB0aGUgbmV3IHZp
c2libGUgd2luZG93CisgICAgICAvLyBJZiBzY3JvbGxUb3AgaXMgc3BlY2lmaWVkLCB1c2UgdGhh
dCB0byBkZXRlcm1pbmUgd2hpY2ggbGluZXMKKyAgICAgIC8vIHRvIHJlbmRlciBpbnN0ZWFkIG9m
IHRoZSBjdXJyZW50IHNjcm9sbGJhciBwb3NpdGlvbi4KKyAgICAgIHZhciB2aXNpYmxlID0gdmlz
aWJsZUxpbmVzKHNjcm9sbFRvcCk7CisgICAgICAvLyBCYWlsIG91dCBpZiB0aGUgdmlzaWJsZSBh
cmVhIGlzIGFscmVhZHkgcmVuZGVyZWQgYW5kIG5vdGhpbmcgY2hhbmdlZC4KKyAgICAgIGlmIChj
aGFuZ2VzICE9PSB0cnVlICYmIGNoYW5nZXMubGVuZ3RoID09IDAgJiYgdmlzaWJsZS5mcm9tID4g
c2hvd2luZ0Zyb20gJiYgdmlzaWJsZS50byA8IHNob3dpbmdUbykgeworICAgICAgICB1cGRhdGVW
ZXJ0aWNhbFNjcm9sbChzY3JvbGxUb3ApOworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAg
ICB2YXIgZnJvbSA9IE1hdGgubWF4KHZpc2libGUuZnJvbSAtIDEwMCwgMCksIHRvID0gTWF0aC5t
aW4oZG9jLnNpemUsIHZpc2libGUudG8gKyAxMDApOworICAgICAgaWYgKHNob3dpbmdGcm9tIDwg
ZnJvbSAmJiBmcm9tIC0gc2hvd2luZ0Zyb20gPCAyMCkgZnJvbSA9IHNob3dpbmdGcm9tOworICAg
ICAgaWYgKHNob3dpbmdUbyA+IHRvICYmIHNob3dpbmdUbyAtIHRvIDwgMjApIHRvID0gTWF0aC5t
aW4oZG9jLnNpemUsIHNob3dpbmdUbyk7CisKKyAgICAgIC8vIENyZWF0ZSBhIHJhbmdlIG9mIHRo
ZW9yZXRpY2FsbHkgaW50YWN0IGxpbmVzLCBhbmQgcHVuY2ggaG9sZXMKKyAgICAgIC8vIGluIHRo
YXQgdXNpbmcgdGhlIGNoYW5nZSBpbmZvLgorICAgICAgdmFyIGludGFjdCA9IGNoYW5nZXMgPT09
IHRydWUgPyBbXSA6CisgICAgICAgIGNvbXB1dGVJbnRhY3QoW3tmcm9tOiBzaG93aW5nRnJvbSwg
dG86IHNob3dpbmdUbywgZG9tU3RhcnQ6IDB9XSwgY2hhbmdlcyk7CisgICAgICAvLyBDbGlwIG9m
ZiB0aGUgcGFydHMgdGhhdCB3b24ndCBiZSB2aXNpYmxlCisgICAgICB2YXIgaW50YWN0TGluZXMg
PSAwOworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnRhY3QubGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgdmFyIHJhbmdlID0gaW50YWN0W2ldOworICAgICAgICBpZiAocmFuZ2UuZnJvbSA8IGZy
b20pIHtyYW5nZS5kb21TdGFydCArPSAoZnJvbSAtIHJhbmdlLmZyb20pOyByYW5nZS5mcm9tID0g
ZnJvbTt9CisgICAgICAgIGlmIChyYW5nZS50byA+IHRvKSByYW5nZS50byA9IHRvOworICAgICAg
ICBpZiAocmFuZ2UuZnJvbSA+PSByYW5nZS50bykgaW50YWN0LnNwbGljZShpLS0sIDEpOworICAg
ICAgICBlbHNlIGludGFjdExpbmVzICs9IHJhbmdlLnRvIC0gcmFuZ2UuZnJvbTsKKyAgICAgIH0K
KyAgICAgIGlmIChpbnRhY3RMaW5lcyA9PSB0byAtIGZyb20gJiYgZnJvbSA9PSBzaG93aW5nRnJv
bSAmJiB0byA9PSBzaG93aW5nVG8pIHsKKyAgICAgICAgdXBkYXRlVmVydGljYWxTY3JvbGwoc2Ny
b2xsVG9wKTsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgaW50YWN0LnNvcnQoZnVu
Y3Rpb24oYSwgYikge3JldHVybiBhLmRvbVN0YXJ0IC0gYi5kb21TdGFydDt9KTsKKworICAgICAg
dmFyIHRoID0gdGV4dEhlaWdodCgpLCBndXR0ZXJEaXNwbGF5ID0gZ3V0dGVyLnN0eWxlLmRpc3Bs
YXk7CisgICAgICBsaW5lRGl2LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CisgICAgICBwYXRjaERp
c3BsYXkoZnJvbSwgdG8sIGludGFjdCk7CisgICAgICBsaW5lRGl2LnN0eWxlLmRpc3BsYXkgPSBn
dXR0ZXIuc3R5bGUuZGlzcGxheSA9ICIiOworCisgICAgICB2YXIgZGlmZmVyZW50ID0gZnJvbSAh
PSBzaG93aW5nRnJvbSB8fCB0byAhPSBzaG93aW5nVG8gfHwgbGFzdFNpemVDICE9IHNjcm9sbGVy
LmNsaWVudEhlaWdodCArIHRoOworICAgICAgLy8gVGhpcyBpcyBqdXN0IGEgYm9ndXMgZm9ybXVs
YSB0aGF0IGRldGVjdHMgd2hlbiB0aGUgZWRpdG9yIGlzCisgICAgICAvLyByZXNpemVkIG9yIHRo
ZSBmb250IHNpemUgY2hhbmdlcy4KKyAgICAgIGlmIChkaWZmZXJlbnQpIGxhc3RTaXplQyA9IHNj
cm9sbGVyLmNsaWVudEhlaWdodCArIHRoOworICAgICAgc2hvd2luZ0Zyb20gPSBmcm9tOyBzaG93
aW5nVG8gPSB0bzsKKyAgICAgIGRpc3BsYXlPZmZzZXQgPSBoZWlnaHRBdExpbmUoZG9jLCBmcm9t
KTsKKworICAgICAgLy8gU2luY2UgdGhpcyBpcyBhbGwgcmF0aGVyIGVycm9yIHByb25lLCBpdCBp
cyBob25vdXJlZCB3aXRoIHRoZQorICAgICAgLy8gb25seSBhc3NlcnRpb24gaW4gdGhlIHdob2xl
IGZpbGUuCisgICAgICBpZiAobGluZURpdi5jaGlsZE5vZGVzLmxlbmd0aCAhPSBzaG93aW5nVG8g
LSBzaG93aW5nRnJvbSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCQUQgUEFUQ0ghICIgKyBK
U09OLnN0cmluZ2lmeShpbnRhY3QpICsgIiBzaXplPSIgKyAoc2hvd2luZ1RvIC0gc2hvd2luZ0Zy
b20pICsKKyAgICAgICAgICAgICAgICAgICAgICAgICIgbm9kZXM9IiArIGxpbmVEaXYuY2hpbGRO
b2Rlcy5sZW5ndGgpOworCisgICAgICBmdW5jdGlvbiBjaGVja0hlaWdodHMoKSB7CisgICAgICAg
IHZhciBjdXJOb2RlID0gbGluZURpdi5maXJzdENoaWxkLCBoZWlnaHRDaGFuZ2VkID0gZmFsc2U7
CisgICAgICAgIGRvYy5pdGVyKHNob3dpbmdGcm9tLCBzaG93aW5nVG8sIGZ1bmN0aW9uKGxpbmUp
IHsKKyAgICAgICAgICAvLyBXb3JrIGFyb3VuZCBiaXphcnJvIElFNyBidWcgd2hlcmUsIHNvbWV0
aW1lcywgb3VyIGN1ck5vZGUKKyAgICAgICAgICAvLyBpcyBtYWdpY2FsbHkgcmVwbGFjZWQgd2l0
aCBhIG5ldyBub2RlIGluIHRoZSBET00sIGxlYXZpbmcKKyAgICAgICAgICAvLyB1cyB3aXRoIGEg
cmVmZXJlbmNlIHRvIGFuIG9ycGhhbiAobmV4dFNpYmxpbmctbGVzcykgbm9kZS4KKyAgICAgICAg
ICBpZiAoIWN1ck5vZGUpIHJldHVybjsKKyAgICAgICAgICBpZiAoIWxpbmUuaGlkZGVuKSB7Cisg
ICAgICAgICAgICB2YXIgaGVpZ2h0ID0gTWF0aC5yb3VuZChjdXJOb2RlLm9mZnNldEhlaWdodCAv
IHRoKSB8fCAxOworICAgICAgICAgICAgaWYgKGxpbmUuaGVpZ2h0ICE9IGhlaWdodCkgeworICAg
ICAgICAgICAgICB1cGRhdGVMaW5lSGVpZ2h0KGxpbmUsIGhlaWdodCk7CisgICAgICAgICAgICAg
IGd1dHRlckRpcnR5ID0gaGVpZ2h0Q2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgfQorICAgICAgICAgIGN1ck5vZGUgPSBjdXJOb2RlLm5leHRTaWJsaW5nOworICAgICAg
ICB9KTsKKyAgICAgICAgcmV0dXJuIGhlaWdodENoYW5nZWQ7CisgICAgICB9CisKKyAgICAgIGlm
IChvcHRpb25zLmxpbmVXcmFwcGluZykgeworICAgICAgICBjaGVja0hlaWdodHMoKTsKKyAgICAg
ICAgdmFyIHNjcm9sbEhlaWdodCA9IG5lZWRzU2Nyb2xsYmFyKCk7CisgICAgICAgIHZhciBzaG91
bGRIYXZlU2Nyb2xsYmFyID0gc2Nyb2xsSGVpZ2h0ID8gImJsb2NrIiA6ICJub25lIjsKKyAgICAg
ICAgaWYgKHNjcm9sbGJhci5zdHlsZS5kaXNwbGF5ICE9IHNob3VsZEhhdmVTY3JvbGxiYXIpIHsK
KyAgICAgICAgICBzY3JvbGxiYXIuc3R5bGUuZGlzcGxheSA9IHNob3VsZEhhdmVTY3JvbGxiYXI7
CisgICAgICAgICAgaWYgKHNjcm9sbEhlaWdodCkgc2Nyb2xsYmFySW5uZXIuc3R5bGUuaGVpZ2h0
ID0gc2Nyb2xsSGVpZ2h0ICsgInB4IjsKKyAgICAgICAgICBjaGVja0hlaWdodHMoKTsKKyAgICAg
ICAgfQorICAgICAgfQorCisgICAgICBndXR0ZXIuc3R5bGUuZGlzcGxheSA9IGd1dHRlckRpc3Bs
YXk7CisgICAgICBpZiAoZGlmZmVyZW50IHx8IGd1dHRlckRpcnR5KSB7CisgICAgICAgIC8vIElm
IHRoZSBndXR0ZXIgZ3JldyBpbiBzaXplLCByZS1jaGVjayBoZWlnaHRzLiBJZiB0aG9zZSBjaGFu
Z2VkLCByZS1kcmF3IGd1dHRlci4KKyAgICAgICAgdXBkYXRlR3V0dGVyKCkgJiYgb3B0aW9ucy5s
aW5lV3JhcHBpbmcgJiYgY2hlY2tIZWlnaHRzKCkgJiYgdXBkYXRlR3V0dGVyKCk7CisgICAgICB9
CisgICAgICB1cGRhdGVWZXJ0aWNhbFNjcm9sbChzY3JvbGxUb3ApOworICAgICAgdXBkYXRlU2Vs
ZWN0aW9uKCk7CisgICAgICBpZiAoIXN1cHByZXNzQ2FsbGJhY2sgJiYgb3B0aW9ucy5vblVwZGF0
ZSkgb3B0aW9ucy5vblVwZGF0ZShpbnN0YW5jZSk7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBjb21wdXRlSW50YWN0KGludGFjdCwgY2hhbmdlcykgeworICAgICAg
Zm9yICh2YXIgaSA9IDAsIGwgPSBjaGFuZ2VzLmxlbmd0aCB8fCAwOyBpIDwgbDsgKytpKSB7Cisg
ICAgICAgIHZhciBjaGFuZ2UgPSBjaGFuZ2VzW2ldLCBpbnRhY3QyID0gW10sIGRpZmYgPSBjaGFu
Z2UuZGlmZiB8fCAwOworICAgICAgICBmb3IgKHZhciBqID0gMCwgbDIgPSBpbnRhY3QubGVuZ3Ro
OyBqIDwgbDI7ICsraikgeworICAgICAgICAgIHZhciByYW5nZSA9IGludGFjdFtqXTsKKyAgICAg
ICAgICBpZiAoY2hhbmdlLnRvIDw9IHJhbmdlLmZyb20gJiYgY2hhbmdlLmRpZmYpCisgICAgICAg
ICAgICBpbnRhY3QyLnB1c2goe2Zyb206IHJhbmdlLmZyb20gKyBkaWZmLCB0bzogcmFuZ2UudG8g
KyBkaWZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkb21TdGFydDogcmFuZ2UuZG9tU3Rh
cnR9KTsKKyAgICAgICAgICBlbHNlIGlmIChjaGFuZ2UudG8gPD0gcmFuZ2UuZnJvbSB8fCBjaGFu
Z2UuZnJvbSA+PSByYW5nZS50bykKKyAgICAgICAgICAgIGludGFjdDIucHVzaChyYW5nZSk7Cisg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoY2hhbmdlLmZyb20gPiByYW5nZS5mcm9t
KQorICAgICAgICAgICAgICBpbnRhY3QyLnB1c2goe2Zyb206IHJhbmdlLmZyb20sIHRvOiBjaGFu
Z2UuZnJvbSwgZG9tU3RhcnQ6IHJhbmdlLmRvbVN0YXJ0fSk7CisgICAgICAgICAgICBpZiAoY2hh
bmdlLnRvIDwgcmFuZ2UudG8pCisgICAgICAgICAgICAgIGludGFjdDIucHVzaCh7ZnJvbTogY2hh
bmdlLnRvICsgZGlmZiwgdG86IHJhbmdlLnRvICsgZGlmZiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkb21TdGFydDogcmFuZ2UuZG9tU3RhcnQgKyAoY2hhbmdlLnRvIC0gcmFuZ2UuZnJv
bSl9KTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaW50YWN0ID0gaW50YWN0MjsK
KyAgICAgIH0KKyAgICAgIHJldHVybiBpbnRhY3Q7CisgICAgfQorCisgICAgZnVuY3Rpb24gcGF0
Y2hEaXNwbGF5KGZyb20sIHRvLCBpbnRhY3QpIHsKKyAgICAgIGZ1bmN0aW9uIGtpbGxOb2RlKG5v
ZGUpIHsKKyAgICAgICAgdmFyIHRtcCA9IG5vZGUubmV4dFNpYmxpbmc7CisgICAgICAgIG5vZGUu
cGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTsKKyAgICAgICAgcmV0dXJuIHRtcDsKKyAgICAg
IH0KKyAgICAgIC8vIFRoZSBmaXJzdCBwYXNzIHJlbW92ZXMgdGhlIERPTSBub2RlcyB0aGF0IGFy
ZW4ndCBpbnRhY3QuCisgICAgICBpZiAoIWludGFjdC5sZW5ndGgpIHJlbW92ZUNoaWxkcmVuKGxp
bmVEaXYpOworICAgICAgZWxzZSB7CisgICAgICAgIHZhciBkb21Qb3MgPSAwLCBjdXJOb2RlID0g
bGluZURpdi5maXJzdENoaWxkLCBuOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGludGFj
dC5sZW5ndGg7ICsraSkgeworICAgICAgICAgIHZhciBjdXIgPSBpbnRhY3RbaV07CisgICAgICAg
ICAgd2hpbGUgKGN1ci5kb21TdGFydCA+IGRvbVBvcykge2N1ck5vZGUgPSBraWxsTm9kZShjdXJO
b2RlKTsgZG9tUG9zKys7fQorICAgICAgICAgIGZvciAodmFyIGogPSAwLCBlID0gY3VyLnRvIC0g
Y3VyLmZyb207IGogPCBlOyArK2opIHtjdXJOb2RlID0gY3VyTm9kZS5uZXh0U2libGluZzsgZG9t
UG9zKys7fQorICAgICAgICB9CisgICAgICAgIHdoaWxlIChjdXJOb2RlKSBjdXJOb2RlID0ga2ls
bE5vZGUoY3VyTm9kZSk7CisgICAgICB9CisgICAgICAvLyBUaGlzIHBhc3MgZmlsbHMgaW4gdGhl
IGxpbmVzIHRoYXQgYWN0dWFsbHkgY2hhbmdlZC4KKyAgICAgIHZhciBuZXh0SW50YWN0ID0gaW50
YWN0LnNoaWZ0KCksIGN1ck5vZGUgPSBsaW5lRGl2LmZpcnN0Q2hpbGQsIGogPSBmcm9tOworICAg
ICAgZG9jLml0ZXIoZnJvbSwgdG8sIGZ1bmN0aW9uKGxpbmUpIHsKKyAgICAgICAgaWYgKG5leHRJ
bnRhY3QgJiYgbmV4dEludGFjdC50byA9PSBqKSBuZXh0SW50YWN0ID0gaW50YWN0LnNoaWZ0KCk7
CisgICAgICAgIGlmICghbmV4dEludGFjdCB8fCBuZXh0SW50YWN0LmZyb20gPiBqKSB7CisgICAg
ICAgICAgaWYgKGxpbmUuaGlkZGVuKSB2YXIgbGluZUVsZW1lbnQgPSBlbHQoInByZSIpOworICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFyIGxpbmVFbGVtZW50ID0gbGluZS5nZXRFbGVt
ZW50KG1ha2VUYWIpOworICAgICAgICAgICAgaWYgKGxpbmUuY2xhc3NOYW1lKSBsaW5lRWxlbWVu
dC5jbGFzc05hbWUgPSBsaW5lLmNsYXNzTmFtZTsKKyAgICAgICAgICAgIC8vIEtsdWRnZSB0byBt
YWtlIHN1cmUgdGhlIHN0eWxlZCBlbGVtZW50IGxpZXMgYmVoaW5kIHRoZSBzZWxlY3Rpb24gKGJ5
IHotaW5kZXgpCisgICAgICAgICAgICBpZiAobGluZS5iZ0NsYXNzTmFtZSkgeworICAgICAgICAg
ICAgICB2YXIgcHJlID0gZWx0KCJwcmUiLCAiXHUwMGEwIiwgbGluZS5iZ0NsYXNzTmFtZSwgInBv
c2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMDsgcmlnaHQ6IDA7IHRvcDogMDsgYm90dG9tOiAwOyB6
LWluZGV4OiAtMiIpOworICAgICAgICAgICAgICBsaW5lRWxlbWVudCA9IGVsdCgiZGl2IiwgW3By
ZSwgbGluZUVsZW1lbnRdLCBudWxsLCAicG9zaXRpb246IHJlbGF0aXZlIik7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgfQorICAgICAgICAgIGxpbmVEaXYuaW5zZXJ0QmVmb3JlKGxpbmVFbGVt
ZW50LCBjdXJOb2RlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBjdXJOb2RlID0gY3Vy
Tm9kZS5uZXh0U2libGluZzsKKyAgICAgICAgfQorICAgICAgICArK2o7CisgICAgICB9KTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiB1cGRhdGVHdXR0ZXIoKSB7CisgICAgICBpZiAoIW9wdGlvbnMu
Z3V0dGVyICYmICFvcHRpb25zLmxpbmVOdW1iZXJzKSByZXR1cm47CisgICAgICB2YXIgaFRleHQg
PSBtb3Zlci5vZmZzZXRIZWlnaHQsIGhFZGl0b3IgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQ7Cisg
ICAgICBndXR0ZXIuc3R5bGUuaGVpZ2h0ID0gKGhUZXh0IC0gaEVkaXRvciA8IDIgPyBoRWRpdG9y
IDogaFRleHQpICsgInB4IjsKKyAgICAgIHZhciBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURv
Y3VtZW50RnJhZ21lbnQoKSwgaSA9IHNob3dpbmdGcm9tLCBub3JtYWxOb2RlOworICAgICAgZG9j
Lml0ZXIoc2hvd2luZ0Zyb20sIE1hdGgubWF4KHNob3dpbmdUbywgc2hvd2luZ0Zyb20gKyAxKSwg
ZnVuY3Rpb24obGluZSkgeworICAgICAgICBpZiAobGluZS5oaWRkZW4pIHsKKyAgICAgICAgICBm
cmFnbWVudC5hcHBlbmRDaGlsZChlbHQoInByZSIpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICB2YXIgbWFya2VyID0gbGluZS5ndXR0ZXJNYXJrZXI7CisgICAgICAgICAgdmFyIHRleHQg
PSBvcHRpb25zLmxpbmVOdW1iZXJzID8gb3B0aW9ucy5saW5lTnVtYmVyRm9ybWF0dGVyKGkgKyBv
cHRpb25zLmZpcnN0TGluZU51bWJlcikgOiBudWxsOworICAgICAgICAgIGlmIChtYXJrZXIgJiYg
bWFya2VyLnRleHQpCisgICAgICAgICAgICB0ZXh0ID0gbWFya2VyLnRleHQucmVwbGFjZSgiJU4l
IiwgdGV4dCAhPSBudWxsID8gdGV4dCA6ICIiKTsKKyAgICAgICAgICBlbHNlIGlmICh0ZXh0ID09
IG51bGwpCisgICAgICAgICAgICB0ZXh0ID0gIlx1MDBhMCI7CisgICAgICAgICAgdmFyIG1hcmtl
ckVsZW1lbnQgPSBmcmFnbWVudC5hcHBlbmRDaGlsZChlbHQoInByZSIsIG51bGwsIG1hcmtlciAm
JiBtYXJrZXIuc3R5bGUpKTsKKyAgICAgICAgICBtYXJrZXJFbGVtZW50LmlubmVySFRNTCA9IHRl
eHQ7CisgICAgICAgICAgZm9yICh2YXIgaiA9IDE7IGogPCBsaW5lLmhlaWdodDsgKytqKSB7Cisg
ICAgICAgICAgICBtYXJrZXJFbGVtZW50LmFwcGVuZENoaWxkKGVsdCgiYnIiKSk7CisgICAgICAg
ICAgICBtYXJrZXJFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJc
dTAwYTAiKSk7CisgICAgICAgICAgfQorICAgICAgICAgIGlmICghbWFya2VyKSBub3JtYWxOb2Rl
ID0gaTsKKyAgICAgICAgfQorICAgICAgICArK2k7CisgICAgICB9KTsKKyAgICAgIGd1dHRlci5z
dHlsZS5kaXNwbGF5ID0gIm5vbmUiOworICAgICAgcmVtb3ZlQ2hpbGRyZW5BbmRBZGQoZ3V0dGVy
VGV4dCwgZnJhZ21lbnQpOworICAgICAgLy8gTWFrZSBzdXJlIHNjcm9sbGluZyBkb2Vzbid0IGNh
dXNlIG51bWJlciBndXR0ZXIgc2l6ZSB0byBwb3AKKyAgICAgIGlmIChub3JtYWxOb2RlICE9IG51
bGwgJiYgb3B0aW9ucy5saW5lTnVtYmVycykgeworICAgICAgICB2YXIgbm9kZSA9IGd1dHRlclRl
eHQuY2hpbGROb2Rlc1tub3JtYWxOb2RlIC0gc2hvd2luZ0Zyb21dOworICAgICAgICB2YXIgbWlu
d2lkdGggPSBTdHJpbmcoZG9jLnNpemUpLmxlbmd0aCwgdmFsID0gZWx0VGV4dChub2RlLmZpcnN0
Q2hpbGQpLCBwYWQgPSAiIjsKKyAgICAgICAgd2hpbGUgKHZhbC5sZW5ndGggKyBwYWQubGVuZ3Ro
IDwgbWlud2lkdGgpIHBhZCArPSAiXHUwMGEwIjsKKyAgICAgICAgaWYgKHBhZCkgbm9kZS5pbnNl
cnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocGFkKSwgbm9kZS5maXJzdENoaWxkKTsK
KyAgICAgIH0KKyAgICAgIGd1dHRlci5zdHlsZS5kaXNwbGF5ID0gIiI7CisgICAgICB2YXIgcmVz
aXplZCA9IE1hdGguYWJzKChwYXJzZUludChsaW5lU3BhY2Uuc3R5bGUubWFyZ2luTGVmdCkgfHwg
MCkgLSBndXR0ZXIub2Zmc2V0V2lkdGgpID4gMjsKKyAgICAgIGxpbmVTcGFjZS5zdHlsZS5tYXJn
aW5MZWZ0ID0gZ3V0dGVyLm9mZnNldFdpZHRoICsgInB4IjsKKyAgICAgIGd1dHRlckRpcnR5ID0g
ZmFsc2U7CisgICAgICByZXR1cm4gcmVzaXplZDsKKyAgICB9CisgICAgZnVuY3Rpb24gdXBkYXRl
U2VsZWN0aW9uKCkgeworICAgICAgdmFyIGNvbGxhcHNlZCA9IHBvc0VxKHNlbC5mcm9tLCBzZWwu
dG8pOworICAgICAgdmFyIGZyb21Qb3MgPSBsb2NhbENvb3JkcyhzZWwuZnJvbSwgdHJ1ZSk7Cisg
ICAgICB2YXIgdG9Qb3MgPSBjb2xsYXBzZWQgPyBmcm9tUG9zIDogbG9jYWxDb29yZHMoc2VsLnRv
LCB0cnVlKTsKKyAgICAgIHZhciBoZWFkUG9zID0gc2VsLmludmVydGVkID8gZnJvbVBvcyA6IHRv
UG9zLCB0aCA9IHRleHRIZWlnaHQoKTsKKyAgICAgIHZhciB3cmFwT2ZmID0gZWx0T2Zmc2V0KHdy
YXBwZXIpLCBsaW5lT2ZmID0gZWx0T2Zmc2V0KGxpbmVEaXYpOworICAgICAgaW5wdXREaXYuc3R5
bGUudG9wID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oc2Nyb2xsZXIub2Zmc2V0SGVpZ2h0LCBoZWFk
UG9zLnkgKyBsaW5lT2ZmLnRvcCAtIHdyYXBPZmYudG9wKSkgKyAicHgiOworICAgICAgaW5wdXRE
aXYuc3R5bGUubGVmdCA9IE1hdGgubWF4KDAsIE1hdGgubWluKHNjcm9sbGVyLm9mZnNldFdpZHRo
LCBoZWFkUG9zLnggKyBsaW5lT2ZmLmxlZnQgLSB3cmFwT2ZmLmxlZnQpKSArICJweCI7CisgICAg
ICBpZiAoY29sbGFwc2VkKSB7CisgICAgICAgIGN1cnNvci5zdHlsZS50b3AgPSBoZWFkUG9zLnkg
KyAicHgiOworICAgICAgICBjdXJzb3Iuc3R5bGUubGVmdCA9IChvcHRpb25zLmxpbmVXcmFwcGlu
ZyA/IE1hdGgubWluKGhlYWRQb3MueCwgbGluZVNwYWNlLm9mZnNldFdpZHRoKSA6IGhlYWRQb3Mu
eCkgKyAicHgiOworICAgICAgICBjdXJzb3Iuc3R5bGUuZGlzcGxheSA9ICIiOworICAgICAgICBz
ZWxlY3Rpb25EaXYuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIHZhciBzYW1lTGluZSA9IGZyb21Qb3MueSA9PSB0b1Bvcy55LCBmcmFnbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyAgICAgICAgdmFyIGNsaWVudFdpZHRoID0g
bGluZVNwYWNlLmNsaWVudFdpZHRoIHx8IGxpbmVTcGFjZS5vZmZzZXRXaWR0aDsKKyAgICAgICAg
dmFyIGNsaWVudEhlaWdodCA9IGxpbmVTcGFjZS5jbGllbnRIZWlnaHQgfHwgbGluZVNwYWNlLm9m
ZnNldEhlaWdodDsKKyAgICAgICAgdmFyIGFkZCA9IGZ1bmN0aW9uKGxlZnQsIHRvcCwgcmlnaHQs
IGhlaWdodCkgeworICAgICAgICAgIHZhciByc3R5bGUgPSBxdWlya3NNb2RlID8gIndpZHRoOiAi
ICsgKCFyaWdodCA/IGNsaWVudFdpZHRoIDogY2xpZW50V2lkdGggLSByaWdodCAtIGxlZnQpICsg
InB4IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogInJpZ2h0OiAiICsgcmln
aHQgKyAicHgiOworICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGVsdCgiZGl2IiwgbnVs
bCwgIkNvZGVNaXJyb3Itc2VsZWN0ZWQiLCAicG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAiICsg
bGVmdCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweDsgdG9wOiAiICsg
dG9wICsgInB4OyAiICsgcnN0eWxlICsgIjsgaGVpZ2h0OiAiICsgaGVpZ2h0ICsgInB4IikpOwor
ICAgICAgICB9OworICAgICAgICBpZiAoc2VsLmZyb20uY2ggJiYgZnJvbVBvcy55ID49IDApIHsK
KyAgICAgICAgICB2YXIgcmlnaHQgPSBzYW1lTGluZSA/IGNsaWVudFdpZHRoIC0gdG9Qb3MueCA6
IDA7CisgICAgICAgICAgYWRkKGZyb21Qb3MueCwgZnJvbVBvcy55LCByaWdodCwgdGgpOworICAg
ICAgICB9CisgICAgICAgIHZhciBtaWRkbGVTdGFydCA9IE1hdGgubWF4KDAsIGZyb21Qb3MueSAr
IChzZWwuZnJvbS5jaCA/IHRoIDogMCkpOworICAgICAgICB2YXIgbWlkZGxlSGVpZ2h0ID0gTWF0
aC5taW4odG9Qb3MueSwgY2xpZW50SGVpZ2h0KSAtIG1pZGRsZVN0YXJ0OworICAgICAgICBpZiAo
bWlkZGxlSGVpZ2h0ID4gMC4yICogdGgpCisgICAgICAgICAgYWRkKDAsIG1pZGRsZVN0YXJ0LCAw
LCBtaWRkbGVIZWlnaHQpOworICAgICAgICBpZiAoKCFzYW1lTGluZSB8fCAhc2VsLmZyb20uY2gp
ICYmIHRvUG9zLnkgPCBjbGllbnRIZWlnaHQgLSAuNSAqIHRoKQorICAgICAgICAgIGFkZCgwLCB0
b1Bvcy55LCBjbGllbnRXaWR0aCAtIHRvUG9zLngsIHRoKTsKKyAgICAgICAgcmVtb3ZlQ2hpbGRy
ZW5BbmRBZGQoc2VsZWN0aW9uRGl2LCBmcmFnbWVudCk7CisgICAgICAgIGN1cnNvci5zdHlsZS5k
aXNwbGF5ID0gIm5vbmUiOworICAgICAgICBzZWxlY3Rpb25EaXYuc3R5bGUuZGlzcGxheSA9ICIi
OworICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHNldFNoaWZ0KHZhbCkgeworICAgICAg
aWYgKHZhbCkgc2hpZnRTZWxlY3RpbmcgPSBzaGlmdFNlbGVjdGluZyB8fCAoc2VsLmludmVydGVk
ID8gc2VsLnRvIDogc2VsLmZyb20pOworICAgICAgZWxzZSBzaGlmdFNlbGVjdGluZyA9IG51bGw7
CisgICAgfQorICAgIGZ1bmN0aW9uIHNldFNlbGVjdGlvblVzZXIoZnJvbSwgdG8pIHsKKyAgICAg
IHZhciBzaCA9IHNoaWZ0U2VsZWN0aW5nICYmIGNsaXBQb3Moc2hpZnRTZWxlY3RpbmcpOworICAg
ICAgaWYgKHNoKSB7CisgICAgICAgIGlmIChwb3NMZXNzKHNoLCBmcm9tKSkgZnJvbSA9IHNoOwor
ICAgICAgICBlbHNlIGlmIChwb3NMZXNzKHRvLCBzaCkpIHRvID0gc2g7CisgICAgICB9CisgICAg
ICBzZXRTZWxlY3Rpb24oZnJvbSwgdG8pOworICAgICAgdXNlclNlbENoYW5nZSA9IHRydWU7Cisg
ICAgfQorICAgIC8vIFVwZGF0ZSB0aGUgc2VsZWN0aW9uLiBMYXN0IHR3byBhcmdzIGFyZSBvbmx5
IHVzZWQgYnkKKyAgICAvLyB1cGRhdGVMaW5lcywgc2luY2UgdGhleSBoYXZlIHRvIGJlIGV4cHJl
c3NlZCBpbiB0aGUgbGluZQorICAgIC8vIG51bWJlcnMgYmVmb3JlIHRoZSB1cGRhdGUuCisgICAg
ZnVuY3Rpb24gc2V0U2VsZWN0aW9uKGZyb20sIHRvLCBvbGRGcm9tLCBvbGRUbykgeworICAgICAg
Z29hbENvbHVtbiA9IG51bGw7CisgICAgICBpZiAob2xkRnJvbSA9PSBudWxsKSB7b2xkRnJvbSA9
IHNlbC5mcm9tLmxpbmU7IG9sZFRvID0gc2VsLnRvLmxpbmU7fQorICAgICAgaWYgKHBvc0VxKHNl
bC5mcm9tLCBmcm9tKSAmJiBwb3NFcShzZWwudG8sIHRvKSkgcmV0dXJuOworICAgICAgaWYgKHBv
c0xlc3ModG8sIGZyb20pKSB7dmFyIHRtcCA9IHRvOyB0byA9IGZyb207IGZyb20gPSB0bXA7fQor
CisgICAgICAvLyBTa2lwIG92ZXIgaGlkZGVuIGxpbmVzLgorICAgICAgaWYgKGZyb20ubGluZSAh
PSBvbGRGcm9tKSB7CisgICAgICAgIHZhciBmcm9tMSA9IHNraXBIaWRkZW4oZnJvbSwgb2xkRnJv
bSwgc2VsLmZyb20uY2gpOworICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBub24taGlkZGVuIGxp
bmUgbGVmdCwgZm9yY2UgdmlzaWJpbGl0eSBvbiBjdXJyZW50IGxpbmUKKyAgICAgICAgaWYgKCFm
cm9tMSkgc2V0TGluZUhpZGRlbihmcm9tLmxpbmUsIGZhbHNlKTsKKyAgICAgICAgZWxzZSBmcm9t
ID0gZnJvbTE7CisgICAgICB9CisgICAgICBpZiAodG8ubGluZSAhPSBvbGRUbykgdG8gPSBza2lw
SGlkZGVuKHRvLCBvbGRUbywgc2VsLnRvLmNoKTsKKworICAgICAgaWYgKHBvc0VxKGZyb20sIHRv
KSkgc2VsLmludmVydGVkID0gZmFsc2U7CisgICAgICBlbHNlIGlmIChwb3NFcShmcm9tLCBzZWwu
dG8pKSBzZWwuaW52ZXJ0ZWQgPSBmYWxzZTsKKyAgICAgIGVsc2UgaWYgKHBvc0VxKHRvLCBzZWwu
ZnJvbSkpIHNlbC5pbnZlcnRlZCA9IHRydWU7CisKKyAgICAgIGlmIChvcHRpb25zLmF1dG9DbGVh
ckVtcHR5TGluZXMgJiYgcG9zRXEoc2VsLmZyb20sIHNlbC50bykpIHsKKyAgICAgICAgdmFyIGhl
YWQgPSBzZWwuaW52ZXJ0ZWQgPyBmcm9tIDogdG87CisgICAgICAgIGlmIChoZWFkLmxpbmUgIT0g
c2VsLmZyb20ubGluZSAmJiBzZWwuZnJvbS5saW5lIDwgZG9jLnNpemUpIHsKKyAgICAgICAgICB2
YXIgb2xkTGluZSA9IGdldExpbmUoc2VsLmZyb20ubGluZSk7CisgICAgICAgICAgaWYgKC9eXHMr
JC8udGVzdChvbGRMaW5lLnRleHQpKQorICAgICAgICAgICAgc2V0VGltZW91dChvcGVyYXRpb24o
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgIGlmIChvbGRMaW5lLnBhcmVudCAmJiAvXlxzKyQv
LnRlc3Qob2xkTGluZS50ZXh0KSkgeworICAgICAgICAgICAgICAgIHZhciBubyA9IGxpbmVObyhv
bGRMaW5lKTsKKyAgICAgICAgICAgICAgICByZXBsYWNlUmFuZ2UoIiIsIHtsaW5lOiBubywgY2g6
IDB9LCB7bGluZTogbm8sIGNoOiBvbGRMaW5lLnRleHQubGVuZ3RofSk7CisgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0sIDEwKSk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgc2Vs
LmZyb20gPSBmcm9tOyBzZWwudG8gPSB0bzsKKyAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSB0cnVl
OworICAgIH0KKyAgICBmdW5jdGlvbiBza2lwSGlkZGVuKHBvcywgb2xkTGluZSwgb2xkQ2gpIHsK
KyAgICAgIGZ1bmN0aW9uIGdldE5vbkhpZGRlbihkaXIpIHsKKyAgICAgICAgdmFyIGxObyA9IHBv
cy5saW5lICsgZGlyLCBlbmQgPSBkaXIgPT0gMSA/IGRvYy5zaXplIDogLTE7CisgICAgICAgIHdo
aWxlIChsTm8gIT0gZW5kKSB7CisgICAgICAgICAgdmFyIGxpbmUgPSBnZXRMaW5lKGxObyk7Cisg
ICAgICAgICAgaWYgKCFsaW5lLmhpZGRlbikgeworICAgICAgICAgICAgdmFyIGNoID0gcG9zLmNo
OworICAgICAgICAgICAgaWYgKHRvRW5kIHx8IGNoID4gb2xkQ2ggfHwgY2ggPiBsaW5lLnRleHQu
bGVuZ3RoKSBjaCA9IGxpbmUudGV4dC5sZW5ndGg7CisgICAgICAgICAgICByZXR1cm4ge2xpbmU6
IGxObywgY2g6IGNofTsKKyAgICAgICAgICB9CisgICAgICAgICAgbE5vICs9IGRpcjsKKyAgICAg
ICAgfQorICAgICAgfQorICAgICAgdmFyIGxpbmUgPSBnZXRMaW5lKHBvcy5saW5lKTsKKyAgICAg
IHZhciB0b0VuZCA9IHBvcy5jaCA9PSBsaW5lLnRleHQubGVuZ3RoICYmIHBvcy5jaCAhPSBvbGRD
aDsKKyAgICAgIGlmICghbGluZS5oaWRkZW4pIHJldHVybiBwb3M7CisgICAgICBpZiAocG9zLmxp
bmUgPj0gb2xkTGluZSkgcmV0dXJuIGdldE5vbkhpZGRlbigxKSB8fCBnZXROb25IaWRkZW4oLTEp
OworICAgICAgZWxzZSByZXR1cm4gZ2V0Tm9uSGlkZGVuKC0xKSB8fCBnZXROb25IaWRkZW4oMSk7
CisgICAgfQorICAgIGZ1bmN0aW9uIHNldEN1cnNvcihsaW5lLCBjaCwgdXNlcikgeworICAgICAg
dmFyIHBvcyA9IGNsaXBQb3Moe2xpbmU6IGxpbmUsIGNoOiBjaCB8fCAwfSk7CisgICAgICAodXNl
ciA/IHNldFNlbGVjdGlvblVzZXIgOiBzZXRTZWxlY3Rpb24pKHBvcywgcG9zKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBjbGlwTGluZShuKSB7cmV0dXJuIE1hdGgubWF4KDAsIE1hdGgubWluKG4s
IGRvYy5zaXplLTEpKTt9CisgICAgZnVuY3Rpb24gY2xpcFBvcyhwb3MpIHsKKyAgICAgIGlmIChw
b3MubGluZSA8IDApIHJldHVybiB7bGluZTogMCwgY2g6IDB9OworICAgICAgaWYgKHBvcy5saW5l
ID49IGRvYy5zaXplKSByZXR1cm4ge2xpbmU6IGRvYy5zaXplLTEsIGNoOiBnZXRMaW5lKGRvYy5z
aXplLTEpLnRleHQubGVuZ3RofTsKKyAgICAgIHZhciBjaCA9IHBvcy5jaCwgbGluZWxlbiA9IGdl
dExpbmUocG9zLmxpbmUpLnRleHQubGVuZ3RoOworICAgICAgaWYgKGNoID09IG51bGwgfHwgY2gg
PiBsaW5lbGVuKSByZXR1cm4ge2xpbmU6IHBvcy5saW5lLCBjaDogbGluZWxlbn07CisgICAgICBl
bHNlIGlmIChjaCA8IDApIHJldHVybiB7bGluZTogcG9zLmxpbmUsIGNoOiAwfTsKKyAgICAgIGVs
c2UgcmV0dXJuIHBvczsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5kUG9zSChkaXIsIHVuaXQp
IHsKKyAgICAgIHZhciBlbmQgPSBzZWwuaW52ZXJ0ZWQgPyBzZWwuZnJvbSA6IHNlbC50bywgbGlu
ZSA9IGVuZC5saW5lLCBjaCA9IGVuZC5jaDsKKyAgICAgIHZhciBsaW5lT2JqID0gZ2V0TGluZShs
aW5lKTsKKyAgICAgIGZ1bmN0aW9uIGZpbmROZXh0TGluZSgpIHsKKyAgICAgICAgZm9yICh2YXIg
bCA9IGxpbmUgKyBkaXIsIGUgPSBkaXIgPCAwID8gLTEgOiBkb2Muc2l6ZTsgbCAhPSBlOyBsICs9
IGRpcikgeworICAgICAgICAgIHZhciBsbyA9IGdldExpbmUobCk7CisgICAgICAgICAgaWYgKCFs
by5oaWRkZW4pIHsgbGluZSA9IGw7IGxpbmVPYmogPSBsbzsgcmV0dXJuIHRydWU7IH0KKyAgICAg
ICAgfQorICAgICAgfQorICAgICAgZnVuY3Rpb24gbW92ZU9uY2UoYm91bmRUb0xpbmUpIHsKKyAg
ICAgICAgaWYgKGNoID09IChkaXIgPCAwID8gMCA6IGxpbmVPYmoudGV4dC5sZW5ndGgpKSB7Cisg
ICAgICAgICAgaWYgKCFib3VuZFRvTGluZSAmJiBmaW5kTmV4dExpbmUoKSkgY2ggPSBkaXIgPCAw
ID8gbGluZU9iai50ZXh0Lmxlbmd0aCA6IDA7CisgICAgICAgICAgZWxzZSByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0gZWxzZSBjaCArPSBkaXI7CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
fQorICAgICAgaWYgKHVuaXQgPT0gImNoYXIiKSBtb3ZlT25jZSgpOworICAgICAgZWxzZSBpZiAo
dW5pdCA9PSAiY29sdW1uIikgbW92ZU9uY2UodHJ1ZSk7CisgICAgICBlbHNlIGlmICh1bml0ID09
ICJ3b3JkIikgeworICAgICAgICB2YXIgc2F3V29yZCA9IGZhbHNlOworICAgICAgICBmb3IgKDs7
KSB7CisgICAgICAgICAgaWYgKGRpciA8IDApIGlmICghbW92ZU9uY2UoKSkgYnJlYWs7CisgICAg
ICAgICAgaWYgKGlzV29yZENoYXIobGluZU9iai50ZXh0LmNoYXJBdChjaCkpKSBzYXdXb3JkID0g
dHJ1ZTsKKyAgICAgICAgICBlbHNlIGlmIChzYXdXb3JkKSB7aWYgKGRpciA8IDApIHtkaXIgPSAx
OyBtb3ZlT25jZSgpO30gYnJlYWs7fQorICAgICAgICAgIGlmIChkaXIgPiAwKSBpZiAoIW1vdmVP
bmNlKCkpIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisgICAgICByZXR1cm4ge2xpbmU6IGxp
bmUsIGNoOiBjaH07CisgICAgfQorICAgIGZ1bmN0aW9uIG1vdmVIKGRpciwgdW5pdCkgeworICAg
ICAgdmFyIHBvcyA9IGRpciA8IDAgPyBzZWwuZnJvbSA6IHNlbC50bzsKKyAgICAgIGlmIChzaGlm
dFNlbGVjdGluZyB8fCBwb3NFcShzZWwuZnJvbSwgc2VsLnRvKSkgcG9zID0gZmluZFBvc0goZGly
LCB1bml0KTsKKyAgICAgIHNldEN1cnNvcihwb3MubGluZSwgcG9zLmNoLCB0cnVlKTsKKyAgICB9
CisgICAgZnVuY3Rpb24gZGVsZXRlSChkaXIsIHVuaXQpIHsKKyAgICAgIGlmICghcG9zRXEoc2Vs
LmZyb20sIHNlbC50bykpIHJlcGxhY2VSYW5nZSgiIiwgc2VsLmZyb20sIHNlbC50byk7CisgICAg
ICBlbHNlIGlmIChkaXIgPCAwKSByZXBsYWNlUmFuZ2UoIiIsIGZpbmRQb3NIKGRpciwgdW5pdCks
IHNlbC50byk7CisgICAgICBlbHNlIHJlcGxhY2VSYW5nZSgiIiwgc2VsLmZyb20sIGZpbmRQb3NI
KGRpciwgdW5pdCkpOworICAgICAgdXNlclNlbENoYW5nZSA9IHRydWU7CisgICAgfQorICAgIGZ1
bmN0aW9uIG1vdmVWKGRpciwgdW5pdCkgeworICAgICAgdmFyIGRpc3QgPSAwLCBwb3MgPSBsb2Nh
bENvb3JkcyhzZWwuaW52ZXJ0ZWQgPyBzZWwuZnJvbSA6IHNlbC50bywgdHJ1ZSk7CisgICAgICBp
ZiAoZ29hbENvbHVtbiAhPSBudWxsKSBwb3MueCA9IGdvYWxDb2x1bW47CisgICAgICBpZiAodW5p
dCA9PSAicGFnZSIpIGRpc3QgPSBNYXRoLm1pbihzY3JvbGxlci5jbGllbnRIZWlnaHQsIHdpbmRv
dy5pbm5lckhlaWdodCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0KTsK
KyAgICAgIGVsc2UgaWYgKHVuaXQgPT0gImxpbmUiKSBkaXN0ID0gdGV4dEhlaWdodCgpOworICAg
ICAgdmFyIHRhcmdldCA9IGNvb3Jkc0NoYXIocG9zLngsIHBvcy55ICsgZGlzdCAqIGRpciArIDIp
OworICAgICAgaWYgKHVuaXQgPT0gInBhZ2UiKSBzY3JvbGxiYXIuc2Nyb2xsVG9wICs9IGxvY2Fs
Q29vcmRzKHRhcmdldCwgdHJ1ZSkueSAtIHBvcy55OworICAgICAgc2V0Q3Vyc29yKHRhcmdldC5s
aW5lLCB0YXJnZXQuY2gsIHRydWUpOworICAgICAgZ29hbENvbHVtbiA9IHBvcy54OworICAgIH0K
KworICAgIGZ1bmN0aW9uIGZpbmRXb3JkQXQocG9zKSB7CisgICAgICB2YXIgbGluZSA9IGdldExp
bmUocG9zLmxpbmUpLnRleHQ7CisgICAgICB2YXIgc3RhcnQgPSBwb3MuY2gsIGVuZCA9IHBvcy5j
aDsKKyAgICAgIGlmIChsaW5lKSB7CisgICAgICAgIGlmIChwb3MuYWZ0ZXIgPT09IGZhbHNlIHx8
IGVuZCA9PSBsaW5lLmxlbmd0aCkgLS1zdGFydDsgZWxzZSArK2VuZDsKKyAgICAgICAgdmFyIHN0
YXJ0Q2hhciA9IGxpbmUuY2hhckF0KHN0YXJ0KTsKKyAgICAgICAgdmFyIGNoZWNrID0gaXNXb3Jk
Q2hhcihzdGFydENoYXIpID8gaXNXb3JkQ2hhciA6CisgICAgICAgICAgICAgICAgICAgIC9ccy8u
dGVzdChzdGFydENoYXIpID8gZnVuY3Rpb24oY2gpIHtyZXR1cm4gL1xzLy50ZXN0KGNoKTt9IDoK
KyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oY2gpIHtyZXR1cm4gIS9ccy8udGVzdChjaCkg
JiYgIWlzV29yZENoYXIoY2gpO307CisgICAgICAgIHdoaWxlIChzdGFydCA+IDAgJiYgY2hlY2so
bGluZS5jaGFyQXQoc3RhcnQgLSAxKSkpIC0tc3RhcnQ7CisgICAgICAgIHdoaWxlIChlbmQgPCBs
aW5lLmxlbmd0aCAmJiBjaGVjayhsaW5lLmNoYXJBdChlbmQpKSkgKytlbmQ7CisgICAgICB9Cisg
ICAgICByZXR1cm4ge2Zyb206IHtsaW5lOiBwb3MubGluZSwgY2g6IHN0YXJ0fSwgdG86IHtsaW5l
OiBwb3MubGluZSwgY2g6IGVuZH19OworICAgIH0KKyAgICBmdW5jdGlvbiBzZWxlY3RMaW5lKGxp
bmUpIHsKKyAgICAgIHNldFNlbGVjdGlvblVzZXIoe2xpbmU6IGxpbmUsIGNoOiAwfSwgY2xpcFBv
cyh7bGluZTogbGluZSArIDEsIGNoOiAwfSkpOworICAgIH0KKyAgICBmdW5jdGlvbiBpbmRlbnRT
ZWxlY3RlZChtb2RlKSB7CisgICAgICBpZiAocG9zRXEoc2VsLmZyb20sIHNlbC50bykpIHJldHVy
biBpbmRlbnRMaW5lKHNlbC5mcm9tLmxpbmUsIG1vZGUpOworICAgICAgdmFyIGUgPSBzZWwudG8u
bGluZSAtIChzZWwudG8uY2ggPyAwIDogMSk7CisgICAgICBmb3IgKHZhciBpID0gc2VsLmZyb20u
bGluZTsgaSA8PSBlOyArK2kpIGluZGVudExpbmUoaSwgbW9kZSk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gaW5kZW50TGluZShuLCBob3cpIHsKKyAgICAgIGlmICghaG93KSBob3cgPSAiYWRkIjsK
KyAgICAgIGlmIChob3cgPT0gInNtYXJ0IikgeworICAgICAgICBpZiAoIW1vZGUuaW5kZW50KSBo
b3cgPSAicHJldiI7CisgICAgICAgIGVsc2UgdmFyIHN0YXRlID0gZ2V0U3RhdGVCZWZvcmUobik7
CisgICAgICB9CisKKyAgICAgIHZhciBsaW5lID0gZ2V0TGluZShuKSwgY3VyU3BhY2UgPSBsaW5l
LmluZGVudGF0aW9uKG9wdGlvbnMudGFiU2l6ZSksCisgICAgICAgICAgY3VyU3BhY2VTdHJpbmcg
PSBsaW5lLnRleHQubWF0Y2goL15ccyovKVswXSwgaW5kZW50YXRpb247CisgICAgICBpZiAoaG93
ID09ICJzbWFydCIpIHsKKyAgICAgICAgaW5kZW50YXRpb24gPSBtb2RlLmluZGVudChzdGF0ZSwg
bGluZS50ZXh0LnNsaWNlKGN1clNwYWNlU3RyaW5nLmxlbmd0aCksIGxpbmUudGV4dCk7CisgICAg
ICAgIGlmIChpbmRlbnRhdGlvbiA9PSBQYXNzKSBob3cgPSAicHJldiI7CisgICAgICB9CisgICAg
ICBpZiAoaG93ID09ICJwcmV2IikgeworICAgICAgICBpZiAobikgaW5kZW50YXRpb24gPSBnZXRM
aW5lKG4tMSkuaW5kZW50YXRpb24ob3B0aW9ucy50YWJTaXplKTsKKyAgICAgICAgZWxzZSBpbmRl
bnRhdGlvbiA9IDA7CisgICAgICB9CisgICAgICBlbHNlIGlmIChob3cgPT0gImFkZCIpIGluZGVu
dGF0aW9uID0gY3VyU3BhY2UgKyBvcHRpb25zLmluZGVudFVuaXQ7CisgICAgICBlbHNlIGlmICho
b3cgPT0gInN1YnRyYWN0IikgaW5kZW50YXRpb24gPSBjdXJTcGFjZSAtIG9wdGlvbnMuaW5kZW50
VW5pdDsKKyAgICAgIGluZGVudGF0aW9uID0gTWF0aC5tYXgoMCwgaW5kZW50YXRpb24pOworICAg
ICAgdmFyIGRpZmYgPSBpbmRlbnRhdGlvbiAtIGN1clNwYWNlOworCisgICAgICB2YXIgaW5kZW50
U3RyaW5nID0gIiIsIHBvcyA9IDA7CisgICAgICBpZiAob3B0aW9ucy5pbmRlbnRXaXRoVGFicykK
KyAgICAgICAgZm9yICh2YXIgaSA9IE1hdGguZmxvb3IoaW5kZW50YXRpb24gLyBvcHRpb25zLnRh
YlNpemUpOyBpOyAtLWkpIHtwb3MgKz0gb3B0aW9ucy50YWJTaXplOyBpbmRlbnRTdHJpbmcgKz0g
Ilx0Ijt9CisgICAgICB3aGlsZSAocG9zIDwgaW5kZW50YXRpb24pIHsrK3BvczsgaW5kZW50U3Ry
aW5nICs9ICIgIjt9CisKKyAgICAgIHJlcGxhY2VSYW5nZShpbmRlbnRTdHJpbmcsIHtsaW5lOiBu
LCBjaDogMH0sIHtsaW5lOiBuLCBjaDogY3VyU3BhY2VTdHJpbmcubGVuZ3RofSk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gbG9hZE1vZGUoKSB7CisgICAgICBtb2RlID0gQ29kZU1pcnJvci5nZXRN
b2RlKG9wdGlvbnMsIG9wdGlvbnMubW9kZSk7CisgICAgICBkb2MuaXRlcigwLCBkb2Muc2l6ZSwg
ZnVuY3Rpb24obGluZSkgeyBsaW5lLnN0YXRlQWZ0ZXIgPSBudWxsOyB9KTsKKyAgICAgIHdvcmsg
PSBbMF07CisgICAgICBzdGFydFdvcmtlcigpOworICAgIH0KKyAgICBmdW5jdGlvbiBndXR0ZXJD
aGFuZ2VkKCkgeworICAgICAgdmFyIHZpc2libGUgPSBvcHRpb25zLmd1dHRlciB8fCBvcHRpb25z
LmxpbmVOdW1iZXJzOworICAgICAgZ3V0dGVyLnN0eWxlLmRpc3BsYXkgPSB2aXNpYmxlID8gIiIg
OiAibm9uZSI7CisgICAgICBpZiAodmlzaWJsZSkgZ3V0dGVyRGlydHkgPSB0cnVlOworICAgICAg
ZWxzZSBsaW5lRGl2LnBhcmVudE5vZGUuc3R5bGUubWFyZ2luTGVmdCA9IDA7CisgICAgfQorICAg
IGZ1bmN0aW9uIHdyYXBwaW5nQ2hhbmdlZChmcm9tLCB0bykgeworICAgICAgaWYgKG9wdGlvbnMu
bGluZVdyYXBwaW5nKSB7CisgICAgICAgIHdyYXBwZXIuY2xhc3NOYW1lICs9ICIgQ29kZU1pcnJv
ci13cmFwIjsKKyAgICAgICAgdmFyIHBlckxpbmUgPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIGNo
YXJXaWR0aCgpIC0gMzsKKyAgICAgICAgZG9jLml0ZXIoMCwgZG9jLnNpemUsIGZ1bmN0aW9uKGxp
bmUpIHsKKyAgICAgICAgICBpZiAobGluZS5oaWRkZW4pIHJldHVybjsKKyAgICAgICAgICB2YXIg
Z3Vlc3MgPSBNYXRoLmNlaWwobGluZS50ZXh0Lmxlbmd0aCAvIHBlckxpbmUpIHx8IDE7CisgICAg
ICAgICAgaWYgKGd1ZXNzICE9IDEpIHVwZGF0ZUxpbmVIZWlnaHQobGluZSwgZ3Vlc3MpOworICAg
ICAgICB9KTsKKyAgICAgICAgbGluZVNwYWNlLnN0eWxlLm1pbldpZHRoID0gd2lkdGhGb3JjZXIu
c3R5bGUubGVmdCA9ICIiOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgd3JhcHBlci5jbGFzc05h
bWUgPSB3cmFwcGVyLmNsYXNzTmFtZS5yZXBsYWNlKCIgQ29kZU1pcnJvci13cmFwIiwgIiIpOwor
ICAgICAgICBjb21wdXRlTWF4TGVuZ3RoKCk7CisgICAgICAgIGRvYy5pdGVyKDAsIGRvYy5zaXpl
LCBmdW5jdGlvbihsaW5lKSB7CisgICAgICAgICAgaWYgKGxpbmUuaGVpZ2h0ICE9IDEgJiYgIWxp
bmUuaGlkZGVuKSB1cGRhdGVMaW5lSGVpZ2h0KGxpbmUsIDEpOworICAgICAgICB9KTsKKyAgICAg
IH0KKyAgICAgIGNoYW5nZXMucHVzaCh7ZnJvbTogMCwgdG86IGRvYy5zaXplfSk7CisgICAgfQor
ICAgIGZ1bmN0aW9uIG1ha2VUYWIoY29sKSB7CisgICAgICB2YXIgdyA9IG9wdGlvbnMudGFiU2l6
ZSAtIGNvbCAlIG9wdGlvbnMudGFiU2l6ZSwgY2FjaGVkID0gdGFiQ2FjaGVbd107CisgICAgICBp
ZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkOworICAgICAgZm9yICh2YXIgc3RyID0gIiIsIGkgPSAw
OyBpIDwgdzsgKytpKSBzdHIgKz0gIiAiOworICAgICAgdmFyIHNwYW4gPSBlbHQoInNwYW4iLCBz
dHIsICJjbS10YWIiKTsKKyAgICAgIHJldHVybiAodGFiQ2FjaGVbd10gPSB7ZWxlbWVudDogc3Bh
biwgd2lkdGg6IHd9KTsKKyAgICB9CisgICAgZnVuY3Rpb24gdGhlbWVDaGFuZ2VkKCkgeworICAg
ICAgc2Nyb2xsZXIuY2xhc3NOYW1lID0gc2Nyb2xsZXIuY2xhc3NOYW1lLnJlcGxhY2UoL1xzKmNt
LXMtXFMrL2csICIiKSArCisgICAgICAgIG9wdGlvbnMudGhlbWUucmVwbGFjZSgvKF58XHMpXHMq
L2csICIgY20tcy0iKTsKKyAgICB9CisgICAgZnVuY3Rpb24ga2V5TWFwQ2hhbmdlZCgpIHsKKyAg
ICAgIHZhciBzdHlsZSA9IGtleU1hcFtvcHRpb25zLmtleU1hcF0uc3R5bGU7CisgICAgICB3cmFw
cGVyLmNsYXNzTmFtZSA9IHdyYXBwZXIuY2xhc3NOYW1lLnJlcGxhY2UoL1xzKmNtLWtleW1hcC1c
UysvZywgIiIpICsKKyAgICAgICAgKHN0eWxlID8gIiBjbS1rZXltYXAtIiArIHN0eWxlIDogIiIp
OworICAgIH0KKworICAgIGZ1bmN0aW9uIFRleHRNYXJrZXIoKSB7IHRoaXMuc2V0ID0gW107IH0K
KyAgICBUZXh0TWFya2VyLnByb3RvdHlwZS5jbGVhciA9IG9wZXJhdGlvbihmdW5jdGlvbigpIHsK
KyAgICAgIHZhciBtaW4gPSBJbmZpbml0eSwgbWF4ID0gLUluZmluaXR5OworICAgICAgZm9yICh2
YXIgaSA9IDAsIGUgPSB0aGlzLnNldC5sZW5ndGg7IGkgPCBlOyArK2kpIHsKKyAgICAgICAgdmFy
IGxpbmUgPSB0aGlzLnNldFtpXSwgbWsgPSBsaW5lLm1hcmtlZDsKKyAgICAgICAgaWYgKCFtayB8
fCAhbGluZS5wYXJlbnQpIGNvbnRpbnVlOworICAgICAgICB2YXIgbGluZU4gPSBsaW5lTm8obGlu
ZSk7CisgICAgICAgIG1pbiA9IE1hdGgubWluKG1pbiwgbGluZU4pOyBtYXggPSBNYXRoLm1heCht
YXgsIGxpbmVOKTsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBtay5sZW5ndGg7ICsraikK
KyAgICAgICAgICBpZiAobWtbal0ubWFya2VyID09IHRoaXMpIG1rLnNwbGljZShqLS0sIDEpOwor
ICAgICAgfQorICAgICAgaWYgKG1pbiAhPSBJbmZpbml0eSkKKyAgICAgICAgY2hhbmdlcy5wdXNo
KHtmcm9tOiBtaW4sIHRvOiBtYXggKyAxfSk7CisgICAgfSk7CisgICAgVGV4dE1hcmtlci5wcm90
b3R5cGUuZmluZCA9IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIGZyb20sIHRvOworICAgICAgZm9y
ICh2YXIgaSA9IDAsIGUgPSB0aGlzLnNldC5sZW5ndGg7IGkgPCBlOyArK2kpIHsKKyAgICAgICAg
dmFyIGxpbmUgPSB0aGlzLnNldFtpXSwgbWsgPSBsaW5lLm1hcmtlZDsKKyAgICAgICAgZm9yICh2
YXIgaiA9IDA7IGogPCBtay5sZW5ndGg7ICsraikgeworICAgICAgICAgIHZhciBtYXJrID0gbWtb
al07CisgICAgICAgICAgaWYgKG1hcmsubWFya2VyID09IHRoaXMpIHsKKyAgICAgICAgICAgIGlm
IChtYXJrLmZyb20gIT0gbnVsbCB8fCBtYXJrLnRvICE9IG51bGwpIHsKKyAgICAgICAgICAgICAg
dmFyIGZvdW5kID0gbGluZU5vKGxpbmUpOworICAgICAgICAgICAgICBpZiAoZm91bmQgIT0gbnVs
bCkgeworICAgICAgICAgICAgICAgIGlmIChtYXJrLmZyb20gIT0gbnVsbCkgZnJvbSA9IHtsaW5l
OiBmb3VuZCwgY2g6IG1hcmsuZnJvbX07CisgICAgICAgICAgICAgICAgaWYgKG1hcmsudG8gIT0g
bnVsbCkgdG8gPSB7bGluZTogZm91bmQsIGNoOiBtYXJrLnRvfTsKKyAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAgcmV0
dXJuIHtmcm9tOiBmcm9tLCB0bzogdG99OworICAgIH07CisKKyAgICBmdW5jdGlvbiBtYXJrVGV4
dChmcm9tLCB0bywgY2xhc3NOYW1lKSB7CisgICAgICBmcm9tID0gY2xpcFBvcyhmcm9tKTsgdG8g
PSBjbGlwUG9zKHRvKTsKKyAgICAgIHZhciB0bSA9IG5ldyBUZXh0TWFya2VyKCk7CisgICAgICBp
ZiAoIXBvc0xlc3MoZnJvbSwgdG8pKSByZXR1cm4gdG07CisgICAgICBmdW5jdGlvbiBhZGQobGlu
ZSwgZnJvbSwgdG8sIGNsYXNzTmFtZSkgeworICAgICAgICBnZXRMaW5lKGxpbmUpLmFkZE1hcmso
bmV3IE1hcmtlZFRleHQoZnJvbSwgdG8sIGNsYXNzTmFtZSwgdG0pKTsKKyAgICAgIH0KKyAgICAg
IGlmIChmcm9tLmxpbmUgPT0gdG8ubGluZSkgYWRkKGZyb20ubGluZSwgZnJvbS5jaCwgdG8uY2gs
IGNsYXNzTmFtZSk7CisgICAgICBlbHNlIHsKKyAgICAgICAgYWRkKGZyb20ubGluZSwgZnJvbS5j
aCwgbnVsbCwgY2xhc3NOYW1lKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IGZyb20ubGluZSArIDEs
IGUgPSB0by5saW5lOyBpIDwgZTsgKytpKQorICAgICAgICAgIGFkZChpLCBudWxsLCBudWxsLCBj
bGFzc05hbWUpOworICAgICAgICBhZGQodG8ubGluZSwgbnVsbCwgdG8uY2gsIGNsYXNzTmFtZSk7
CisgICAgICB9CisgICAgICBjaGFuZ2VzLnB1c2goe2Zyb206IGZyb20ubGluZSwgdG86IHRvLmxp
bmUgKyAxfSk7CisgICAgICByZXR1cm4gdG07CisgICAgfQorCisgICAgZnVuY3Rpb24gc2V0Qm9v
a21hcmsocG9zKSB7CisgICAgICBwb3MgPSBjbGlwUG9zKHBvcyk7CisgICAgICB2YXIgYm0gPSBu
ZXcgQm9va21hcmsocG9zLmNoKTsKKyAgICAgIGdldExpbmUocG9zLmxpbmUpLmFkZE1hcmsoYm0p
OworICAgICAgcmV0dXJuIGJtOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmRNYXJrc0F0KHBv
cykgeworICAgICAgcG9zID0gY2xpcFBvcyhwb3MpOworICAgICAgdmFyIG1hcmtlcnMgPSBbXSwg
bWFya2VkID0gZ2V0TGluZShwb3MubGluZSkubWFya2VkOworICAgICAgaWYgKCFtYXJrZWQpIHJl
dHVybiBtYXJrZXJzOworICAgICAgZm9yICh2YXIgaSA9IDAsIGUgPSBtYXJrZWQubGVuZ3RoOyBp
IDwgZTsgKytpKSB7CisgICAgICAgIHZhciBtID0gbWFya2VkW2ldOworICAgICAgICBpZiAoKG0u
ZnJvbSA9PSBudWxsIHx8IG0uZnJvbSA8PSBwb3MuY2gpICYmCisgICAgICAgICAgICAobS50byA9
PSBudWxsIHx8IG0udG8gPj0gcG9zLmNoKSkKKyAgICAgICAgICBtYXJrZXJzLnB1c2gobS5tYXJr
ZXIgfHwgbSk7CisgICAgICB9CisgICAgICByZXR1cm4gbWFya2VyczsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBhZGRHdXR0ZXJNYXJrZXIobGluZSwgdGV4dCwgY2xhc3NOYW1lKSB7CisgICAgICBp
ZiAodHlwZW9mIGxpbmUgPT0gIm51bWJlciIpIGxpbmUgPSBnZXRMaW5lKGNsaXBMaW5lKGxpbmUp
KTsKKyAgICAgIGxpbmUuZ3V0dGVyTWFya2VyID0ge3RleHQ6IHRleHQsIHN0eWxlOiBjbGFzc05h
bWV9OworICAgICAgZ3V0dGVyRGlydHkgPSB0cnVlOworICAgICAgcmV0dXJuIGxpbmU7CisgICAg
fQorICAgIGZ1bmN0aW9uIHJlbW92ZUd1dHRlck1hcmtlcihsaW5lKSB7CisgICAgICBpZiAodHlw
ZW9mIGxpbmUgPT0gIm51bWJlciIpIGxpbmUgPSBnZXRMaW5lKGNsaXBMaW5lKGxpbmUpKTsKKyAg
ICAgIGxpbmUuZ3V0dGVyTWFya2VyID0gbnVsbDsKKyAgICAgIGd1dHRlckRpcnR5ID0gdHJ1ZTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGFuZ2VMaW5lKGhhbmRsZSwgb3ApIHsKKyAgICAgIHZh
ciBubyA9IGhhbmRsZSwgbGluZSA9IGhhbmRsZTsKKyAgICAgIGlmICh0eXBlb2YgaGFuZGxlID09
ICJudW1iZXIiKSBsaW5lID0gZ2V0TGluZShjbGlwTGluZShoYW5kbGUpKTsKKyAgICAgIGVsc2Ug
bm8gPSBsaW5lTm8oaGFuZGxlKTsKKyAgICAgIGlmIChubyA9PSBudWxsKSByZXR1cm4gbnVsbDsK
KyAgICAgIGlmIChvcChsaW5lLCBubykpIGNoYW5nZXMucHVzaCh7ZnJvbTogbm8sIHRvOiBubyAr
IDF9KTsKKyAgICAgIGVsc2UgcmV0dXJuIG51bGw7CisgICAgICByZXR1cm4gbGluZTsKKyAgICB9
CisgICAgZnVuY3Rpb24gc2V0TGluZUNsYXNzKGhhbmRsZSwgY2xhc3NOYW1lLCBiZ0NsYXNzTmFt
ZSkgeworICAgICAgcmV0dXJuIGNoYW5nZUxpbmUoaGFuZGxlLCBmdW5jdGlvbihsaW5lKSB7Cisg
ICAgICAgIGlmIChsaW5lLmNsYXNzTmFtZSAhPSBjbGFzc05hbWUgfHwgbGluZS5iZ0NsYXNzTmFt
ZSAhPSBiZ0NsYXNzTmFtZSkgeworICAgICAgICAgIGxpbmUuY2xhc3NOYW1lID0gY2xhc3NOYW1l
OworICAgICAgICAgIGxpbmUuYmdDbGFzc05hbWUgPSBiZ0NsYXNzTmFtZTsKKyAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgfSk7CisgICAgfQorICAgIGZ1bmN0aW9uIHNl
dExpbmVIaWRkZW4oaGFuZGxlLCBoaWRkZW4pIHsKKyAgICAgIHJldHVybiBjaGFuZ2VMaW5lKGhh
bmRsZSwgZnVuY3Rpb24obGluZSwgbm8pIHsKKyAgICAgICAgaWYgKGxpbmUuaGlkZGVuICE9IGhp
ZGRlbikgeworICAgICAgICAgIGxpbmUuaGlkZGVuID0gaGlkZGVuOworICAgICAgICAgIGlmICgh
b3B0aW9ucy5saW5lV3JhcHBpbmcpIHsKKyAgICAgICAgICAgIGlmIChoaWRkZW4gJiYgbGluZS50
ZXh0Lmxlbmd0aCA9PSBtYXhMaW5lLnRleHQubGVuZ3RoKSB7CisgICAgICAgICAgICAgIHVwZGF0
ZU1heExpbmUgPSB0cnVlOworICAgICAgICAgICAgfSBlbHNlIGlmICghaGlkZGVuICYmIGxpbmUu
dGV4dC5sZW5ndGggPiBtYXhMaW5lLnRleHQubGVuZ3RoKSB7CisgICAgICAgICAgICAgIG1heExp
bmUgPSBsaW5lOyB1cGRhdGVNYXhMaW5lID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgfQorICAgICAgICAgIHVwZGF0ZUxpbmVIZWlnaHQobGluZSwgaGlkZGVuID8gMCA6IDEpOwor
ICAgICAgICAgIHZhciBmbGluZSA9IHNlbC5mcm9tLmxpbmUsIHRsaW5lID0gc2VsLnRvLmxpbmU7
CisgICAgICAgICAgaWYgKGhpZGRlbiAmJiAoZmxpbmUgPT0gbm8gfHwgdGxpbmUgPT0gbm8pKSB7
CisgICAgICAgICAgICB2YXIgZnJvbSA9IGZsaW5lID09IG5vID8gc2tpcEhpZGRlbih7bGluZTog
ZmxpbmUsIGNoOiAwfSwgZmxpbmUsIDApIDogc2VsLmZyb207CisgICAgICAgICAgICB2YXIgdG8g
PSB0bGluZSA9PSBubyA/IHNraXBIaWRkZW4oe2xpbmU6IHRsaW5lLCBjaDogMH0sIHRsaW5lLCAw
KSA6IHNlbC50bzsKKyAgICAgICAgICAgIC8vIENhbid0IGhpZGUgdGhlIGxhc3QgdmlzaWJsZSBs
aW5lLCB3ZSdkIGhhdmUgbm8gcGxhY2UgdG8gcHV0IHRoZSBjdXJzb3IKKyAgICAgICAgICAgIGlm
ICghdG8pIHJldHVybjsKKyAgICAgICAgICAgIHNldFNlbGVjdGlvbihmcm9tLCB0byk7CisgICAg
ICAgICAgfQorICAgICAgICAgIHJldHVybiAoZ3V0dGVyRGlydHkgPSB0cnVlKTsKKyAgICAgICAg
fQorICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gbGluZUluZm8obGluZSkgeworICAg
ICAgaWYgKHR5cGVvZiBsaW5lID09ICJudW1iZXIiKSB7CisgICAgICAgIGlmICghaXNMaW5lKGxp
bmUpKSByZXR1cm4gbnVsbDsKKyAgICAgICAgdmFyIG4gPSBsaW5lOworICAgICAgICBsaW5lID0g
Z2V0TGluZShsaW5lKTsKKyAgICAgICAgaWYgKCFsaW5lKSByZXR1cm4gbnVsbDsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIHZhciBuID0gbGluZU5vKGxpbmUpOworICAgICAgICBpZiAobiA9PSBu
dWxsKSByZXR1cm4gbnVsbDsKKyAgICAgIH0KKyAgICAgIHZhciBtYXJrZXIgPSBsaW5lLmd1dHRl
ck1hcmtlcjsKKyAgICAgIHJldHVybiB7bGluZTogbiwgaGFuZGxlOiBsaW5lLCB0ZXh0OiBsaW5l
LnRleHQsIG1hcmtlclRleHQ6IG1hcmtlciAmJiBtYXJrZXIudGV4dCwKKyAgICAgICAgICAgICAg
bWFya2VyQ2xhc3M6IG1hcmtlciAmJiBtYXJrZXIuc3R5bGUsIGxpbmVDbGFzczogbGluZS5jbGFz
c05hbWUsIGJnQ2xhc3M6IGxpbmUuYmdDbGFzc05hbWV9OworICAgIH0KKworICAgIC8vIFRoZXNl
IGFyZSB1c2VkIHRvIGdvIGZyb20gcGl4ZWwgcG9zaXRpb25zIHRvIGNoYXJhY3RlcgorICAgIC8v
IHBvc2l0aW9ucywgdGFraW5nIHZhcnlpbmcgY2hhcmFjdGVyIHdpZHRocyBpbnRvIGFjY291bnQu
CisgICAgZnVuY3Rpb24gY2hhckZyb21YKGxpbmUsIHgpIHsKKyAgICAgIGlmICh4IDw9IDApIHJl
dHVybiAwOworICAgICAgdmFyIGxpbmVPYmogPSBnZXRMaW5lKGxpbmUpLCB0ZXh0ID0gbGluZU9i
ai50ZXh0OworICAgICAgZnVuY3Rpb24gZ2V0WChsZW4pIHsKKyAgICAgICAgcmV0dXJuIG1lYXN1
cmVMaW5lKGxpbmVPYmosIGxlbikubGVmdDsKKyAgICAgIH0KKyAgICAgIHZhciBmcm9tID0gMCwg
ZnJvbVggPSAwLCB0byA9IHRleHQubGVuZ3RoLCB0b1g7CisgICAgICAvLyBHdWVzcyBhIHN1aXRh
YmxlIHVwcGVyIGJvdW5kIGZvciBvdXIgc2VhcmNoLgorICAgICAgdmFyIGVzdGltYXRlZCA9IE1h
dGgubWluKHRvLCBNYXRoLmNlaWwoeCAvIGNoYXJXaWR0aCgpKSk7CisgICAgICBmb3IgKDs7KSB7
CisgICAgICAgIHZhciBlc3RYID0gZ2V0WChlc3RpbWF0ZWQpOworICAgICAgICBpZiAoZXN0WCA8
PSB4ICYmIGVzdGltYXRlZCA8IHRvKSBlc3RpbWF0ZWQgPSBNYXRoLm1pbih0bywgTWF0aC5jZWls
KGVzdGltYXRlZCAqIDEuMikpOworICAgICAgICBlbHNlIHt0b1ggPSBlc3RYOyB0byA9IGVzdGlt
YXRlZDsgYnJlYWs7fQorICAgICAgfQorICAgICAgaWYgKHggPiB0b1gpIHJldHVybiB0bzsKKyAg
ICAgIC8vIFRyeSB0byBndWVzcyBhIHN1aXRhYmxlIGxvd2VyIGJvdW5kIGFzIHdlbGwuCisgICAg
ICBlc3RpbWF0ZWQgPSBNYXRoLmZsb29yKHRvICogMC44KTsgZXN0WCA9IGdldFgoZXN0aW1hdGVk
KTsKKyAgICAgIGlmIChlc3RYIDwgeCkge2Zyb20gPSBlc3RpbWF0ZWQ7IGZyb21YID0gZXN0WDt9
CisgICAgICAvLyBEbyBhIGJpbmFyeSBzZWFyY2ggYmV0d2VlbiB0aGVzZSBib3VuZHMuCisgICAg
ICBmb3IgKDs7KSB7CisgICAgICAgIGlmICh0byAtIGZyb20gPD0gMSkgcmV0dXJuICh0b1ggLSB4
ID4geCAtIGZyb21YKSA/IGZyb20gOiB0bzsKKyAgICAgICAgdmFyIG1pZGRsZSA9IE1hdGguY2Vp
bCgoZnJvbSArIHRvKSAvIDIpLCBtaWRkbGVYID0gZ2V0WChtaWRkbGUpOworICAgICAgICBpZiAo
bWlkZGxlWCA+IHgpIHt0byA9IG1pZGRsZTsgdG9YID0gbWlkZGxlWDt9CisgICAgICAgIGVsc2Ug
e2Zyb20gPSBtaWRkbGU7IGZyb21YID0gbWlkZGxlWDt9CisgICAgICB9CisgICAgfQorCisgICAg
ZnVuY3Rpb24gbWVhc3VyZUxpbmUobGluZSwgY2gpIHsKKyAgICAgIGlmIChjaCA9PSAwKSByZXR1
cm4ge3RvcDogMCwgbGVmdDogMH07CisgICAgICB2YXIgd2JyID0gb3B0aW9ucy5saW5lV3JhcHBp
bmcgJiYgY2ggPCBsaW5lLnRleHQubGVuZ3RoICYmCisgICAgICAgICAgICAgICAgc3BhbkFmZmVj
dHNXcmFwcGluZy50ZXN0KGxpbmUudGV4dC5zbGljZShjaCAtIDEsIGNoICsgMSkpOworICAgICAg
dmFyIHByZSA9IGxpbmUuZ2V0RWxlbWVudChtYWtlVGFiLCBjaCwgd2JyKTsKKyAgICAgIHJlbW92
ZUNoaWxkcmVuQW5kQWRkKG1lYXN1cmUsIHByZSk7CisgICAgICB2YXIgYW5jaG9yID0gcHJlLmFu
Y2hvcjsKKyAgICAgIHZhciB0b3AgPSBhbmNob3Iub2Zmc2V0VG9wLCBsZWZ0ID0gYW5jaG9yLm9m
ZnNldExlZnQ7CisgICAgICAvLyBPbGRlciBJRXMgcmVwb3J0IHplcm8gb2Zmc2V0cyBmb3Igc3Bh
bnMgZGlyZWN0bHkgYWZ0ZXIgYSB3cmFwCisgICAgICBpZiAoaWUgJiYgdG9wID09IDAgJiYgbGVm
dCA9PSAwKSB7CisgICAgICAgIHZhciBiYWNrdXAgPSBlbHQoInNwYW4iLCAieCIpOworICAgICAg
ICBhbmNob3IucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYmFja3VwLCBhbmNob3IubmV4dFNpYmxp
bmcpOworICAgICAgICB0b3AgPSBiYWNrdXAub2Zmc2V0VG9wOworICAgICAgfQorICAgICAgcmV0
dXJuIHt0b3A6IHRvcCwgbGVmdDogbGVmdH07CisgICAgfQorICAgIGZ1bmN0aW9uIGxvY2FsQ29v
cmRzKHBvcywgaW5MaW5lV3JhcCkgeworICAgICAgdmFyIHgsIGxoID0gdGV4dEhlaWdodCgpLCB5
ID0gbGggKiAoaGVpZ2h0QXRMaW5lKGRvYywgcG9zLmxpbmUpIC0gKGluTGluZVdyYXAgPyBkaXNw
bGF5T2Zmc2V0IDogMCkpOworICAgICAgaWYgKHBvcy5jaCA9PSAwKSB4ID0gMDsKKyAgICAgIGVs
c2UgeworICAgICAgICB2YXIgc3AgPSBtZWFzdXJlTGluZShnZXRMaW5lKHBvcy5saW5lKSwgcG9z
LmNoKTsKKyAgICAgICAgeCA9IHNwLmxlZnQ7CisgICAgICAgIGlmIChvcHRpb25zLmxpbmVXcmFw
cGluZykgeSArPSBNYXRoLm1heCgwLCBzcC50b3ApOworICAgICAgfQorICAgICAgcmV0dXJuIHt4
OiB4LCB5OiB5LCB5Qm90OiB5ICsgbGh9OworICAgIH0KKyAgICAvLyBDb29yZHMgbXVzdCBiZSBs
aW5lU3BhY2UtbG9jYWwKKyAgICBmdW5jdGlvbiBjb29yZHNDaGFyKHgsIHkpIHsKKyAgICAgIGlm
ICh5IDwgMCkgcmV0dXJuIHtsaW5lOiAwLCBjaDogMH07CisgICAgICB2YXIgdGggPSB0ZXh0SGVp
Z2h0KCksIGN3ID0gY2hhcldpZHRoKCksIGhlaWdodFBvcyA9IGRpc3BsYXlPZmZzZXQgKyBNYXRo
LmZsb29yKHkgLyB0aCk7CisgICAgICB2YXIgbGluZU5vID0gbGluZUF0SGVpZ2h0KGRvYywgaGVp
Z2h0UG9zKTsKKyAgICAgIGlmIChsaW5lTm8gPj0gZG9jLnNpemUpIHJldHVybiB7bGluZTogZG9j
LnNpemUgLSAxLCBjaDogZ2V0TGluZShkb2Muc2l6ZSAtIDEpLnRleHQubGVuZ3RofTsKKyAgICAg
IHZhciBsaW5lT2JqID0gZ2V0TGluZShsaW5lTm8pLCB0ZXh0ID0gbGluZU9iai50ZXh0OworICAg
ICAgdmFyIHR3ID0gb3B0aW9ucy5saW5lV3JhcHBpbmcsIGlubmVyT2ZmID0gdHcgPyBoZWlnaHRQ
b3MgLSBoZWlnaHRBdExpbmUoZG9jLCBsaW5lTm8pIDogMDsKKyAgICAgIGlmICh4IDw9IDAgJiYg
aW5uZXJPZmYgPT0gMCkgcmV0dXJuIHtsaW5lOiBsaW5lTm8sIGNoOiAwfTsKKyAgICAgIHZhciB3
cm9uZ0xpbmUgPSBmYWxzZTsKKyAgICAgIGZ1bmN0aW9uIGdldFgobGVuKSB7CisgICAgICAgIHZh
ciBzcCA9IG1lYXN1cmVMaW5lKGxpbmVPYmosIGxlbik7CisgICAgICAgIGlmICh0dykgeworICAg
ICAgICAgIHZhciBvZmYgPSBNYXRoLnJvdW5kKHNwLnRvcCAvIHRoKTsKKyAgICAgICAgICB3cm9u
Z0xpbmUgPSBvZmYgIT0gaW5uZXJPZmY7CisgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIHNw
LmxlZnQgKyAob2ZmIC0gaW5uZXJPZmYpICogc2Nyb2xsZXIuY2xpZW50V2lkdGgpOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiBzcC5sZWZ0OworICAgICAgfQorICAgICAgdmFyIGZyb20gPSAw
LCBmcm9tWCA9IDAsIHRvID0gdGV4dC5sZW5ndGgsIHRvWDsKKyAgICAgIC8vIEd1ZXNzIGEgc3Vp
dGFibGUgdXBwZXIgYm91bmQgZm9yIG91ciBzZWFyY2guCisgICAgICB2YXIgZXN0aW1hdGVkID0g
TWF0aC5taW4odG8sIE1hdGguY2VpbCgoeCArIGlubmVyT2ZmICogc2Nyb2xsZXIuY2xpZW50V2lk
dGggKiAuOSkgLyBjdykpOworICAgICAgZm9yICg7OykgeworICAgICAgICB2YXIgZXN0WCA9IGdl
dFgoZXN0aW1hdGVkKTsKKyAgICAgICAgaWYgKGVzdFggPD0geCAmJiBlc3RpbWF0ZWQgPCB0bykg
ZXN0aW1hdGVkID0gTWF0aC5taW4odG8sIE1hdGguY2VpbChlc3RpbWF0ZWQgKiAxLjIpKTsKKyAg
ICAgICAgZWxzZSB7dG9YID0gZXN0WDsgdG8gPSBlc3RpbWF0ZWQ7IGJyZWFrO30KKyAgICAgIH0K
KyAgICAgIGlmICh4ID4gdG9YKSByZXR1cm4ge2xpbmU6IGxpbmVObywgY2g6IHRvfTsKKyAgICAg
IC8vIFRyeSB0byBndWVzcyBhIHN1aXRhYmxlIGxvd2VyIGJvdW5kIGFzIHdlbGwuCisgICAgICBl
c3RpbWF0ZWQgPSBNYXRoLmZsb29yKHRvICogMC44KTsgZXN0WCA9IGdldFgoZXN0aW1hdGVkKTsK
KyAgICAgIGlmIChlc3RYIDwgeCkge2Zyb20gPSBlc3RpbWF0ZWQ7IGZyb21YID0gZXN0WDt9Cisg
ICAgICAvLyBEbyBhIGJpbmFyeSBzZWFyY2ggYmV0d2VlbiB0aGVzZSBib3VuZHMuCisgICAgICBm
b3IgKDs7KSB7CisgICAgICAgIGlmICh0byAtIGZyb20gPD0gMSkgeworICAgICAgICAgIHZhciBh
ZnRlciA9IHggLSBmcm9tWCA8IHRvWCAtIHg7CisgICAgICAgICAgcmV0dXJuIHtsaW5lOiBsaW5l
Tm8sIGNoOiBhZnRlciA/IGZyb20gOiB0bywgYWZ0ZXI6IGFmdGVyfTsKKyAgICAgICAgfQorICAg
ICAgICB2YXIgbWlkZGxlID0gTWF0aC5jZWlsKChmcm9tICsgdG8pIC8gMiksIG1pZGRsZVggPSBn
ZXRYKG1pZGRsZSk7CisgICAgICAgIGlmIChtaWRkbGVYID4geCkge3RvID0gbWlkZGxlOyB0b1gg
PSBtaWRkbGVYOyBpZiAod3JvbmdMaW5lKSB0b1ggKz0gMTAwMDsgfQorICAgICAgICBlbHNlIHtm
cm9tID0gbWlkZGxlOyBmcm9tWCA9IG1pZGRsZVg7fQorICAgICAgfQorICAgIH0KKyAgICBmdW5j
dGlvbiBwYWdlQ29vcmRzKHBvcykgeworICAgICAgdmFyIGxvY2FsID0gbG9jYWxDb29yZHMocG9z
LCB0cnVlKSwgb2ZmID0gZWx0T2Zmc2V0KGxpbmVTcGFjZSk7CisgICAgICByZXR1cm4ge3g6IG9m
Zi5sZWZ0ICsgbG9jYWwueCwgeTogb2ZmLnRvcCArIGxvY2FsLnksIHlCb3Q6IG9mZi50b3AgKyBs
b2NhbC55Qm90fTsKKyAgICB9CisKKyAgICB2YXIgY2FjaGVkSGVpZ2h0LCBjYWNoZWRIZWlnaHRG
b3IsIG1lYXN1cmVQcmU7CisgICAgZnVuY3Rpb24gdGV4dEhlaWdodCgpIHsKKyAgICAgIGlmICht
ZWFzdXJlUHJlID09IG51bGwpIHsKKyAgICAgICAgbWVhc3VyZVByZSA9IGVsdCgicHJlIik7Cisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDk7ICsraSkgeworICAgICAgICAgIG1lYXN1cmVQ
cmUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIngiKSk7CisgICAgICAgICAg
bWVhc3VyZVByZS5hcHBlbmRDaGlsZChlbHQoImJyIikpOworICAgICAgICB9CisgICAgICAgIG1l
YXN1cmVQcmUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIngiKSk7CisgICAg
ICB9CisgICAgICB2YXIgb2Zmc2V0SGVpZ2h0ID0gbGluZURpdi5jbGllbnRIZWlnaHQ7CisgICAg
ICBpZiAob2Zmc2V0SGVpZ2h0ID09IGNhY2hlZEhlaWdodEZvcikgcmV0dXJuIGNhY2hlZEhlaWdo
dDsKKyAgICAgIGNhY2hlZEhlaWdodEZvciA9IG9mZnNldEhlaWdodDsKKyAgICAgIHJlbW92ZUNo
aWxkcmVuQW5kQWRkKG1lYXN1cmUsIG1lYXN1cmVQcmUuY2xvbmVOb2RlKHRydWUpKTsKKyAgICAg
IGNhY2hlZEhlaWdodCA9IG1lYXN1cmUuZmlyc3RDaGlsZC5vZmZzZXRIZWlnaHQgLyA1MCB8fCAx
OworICAgICAgcmVtb3ZlQ2hpbGRyZW4obWVhc3VyZSk7CisgICAgICByZXR1cm4gY2FjaGVkSGVp
Z2h0OworICAgIH0KKyAgICB2YXIgY2FjaGVkV2lkdGgsIGNhY2hlZFdpZHRoRm9yID0gMDsKKyAg
ICBmdW5jdGlvbiBjaGFyV2lkdGgoKSB7CisgICAgICBpZiAoc2Nyb2xsZXIuY2xpZW50V2lkdGgg
PT0gY2FjaGVkV2lkdGhGb3IpIHJldHVybiBjYWNoZWRXaWR0aDsKKyAgICAgIGNhY2hlZFdpZHRo
Rm9yID0gc2Nyb2xsZXIuY2xpZW50V2lkdGg7CisgICAgICB2YXIgYW5jaG9yID0gZWx0KCJzcGFu
IiwgIngiKTsKKyAgICAgIHZhciBwcmUgPSBlbHQoInByZSIsIFthbmNob3JdKTsKKyAgICAgIHJl
bW92ZUNoaWxkcmVuQW5kQWRkKG1lYXN1cmUsIHByZSk7CisgICAgICByZXR1cm4gKGNhY2hlZFdp
ZHRoID0gYW5jaG9yLm9mZnNldFdpZHRoIHx8IDEwKTsKKyAgICB9CisgICAgZnVuY3Rpb24gcGFk
ZGluZ1RvcCgpIHtyZXR1cm4gbGluZVNwYWNlLm9mZnNldFRvcDt9CisgICAgZnVuY3Rpb24gcGFk
ZGluZ0xlZnQoKSB7cmV0dXJuIGxpbmVTcGFjZS5vZmZzZXRMZWZ0O30KKworICAgIGZ1bmN0aW9u
IHBvc0Zyb21Nb3VzZShlLCBsaWJlcmFsKSB7CisgICAgICB2YXIgb2ZmVyA9IGVsdE9mZnNldChz
Y3JvbGxlciwgdHJ1ZSksIHgsIHk7CisgICAgICAvLyBGYWlscyB1bnByZWRpY3RhYmx5IG9uIElF
WzY3XSB3aGVuIG1vdXNlIGlzIGRyYWdnZWQgYXJvdW5kIHF1aWNrbHkuCisgICAgICB0cnkgeyB4
ID0gZS5jbGllbnRYOyB5ID0gZS5jbGllbnRZOyB9IGNhdGNoIChlKSB7IHJldHVybiBudWxsOyB9
CisgICAgICAvLyBUaGlzIGlzIGEgbWVzcyBvZiBhIGhldXJpc3RpYyB0byB0cnkgYW5kIGRldGVy
bWluZSB3aGV0aGVyIGEKKyAgICAgIC8vIHNjcm9sbC1iYXIgd2FzIGNsaWNrZWQgb3Igbm90LCBh
bmQgdG8gcmV0dXJuIG51bGwgaWYgb25lIHdhcworICAgICAgLy8gKGFuZCAhbGliZXJhbCkuCisg
ICAgICBpZiAoIWxpYmVyYWwgJiYgKHggLSBvZmZXLmxlZnQgPiBzY3JvbGxlci5jbGllbnRXaWR0
aCB8fCB5IC0gb2ZmVy50b3AgPiBzY3JvbGxlci5jbGllbnRIZWlnaHQpKQorICAgICAgICByZXR1
cm4gbnVsbDsKKyAgICAgIHZhciBvZmZMID0gZWx0T2Zmc2V0KGxpbmVTcGFjZSwgdHJ1ZSk7Cisg
ICAgICByZXR1cm4gY29vcmRzQ2hhcih4IC0gb2ZmTC5sZWZ0LCB5IC0gb2ZmTC50b3ApOworICAg
IH0KKyAgICBmdW5jdGlvbiBvbkNvbnRleHRNZW51KGUpIHsKKyAgICAgIHZhciBwb3MgPSBwb3NG
cm9tTW91c2UoZSksIHNjcm9sbFBvcyA9IHNjcm9sbGJhci5zY3JvbGxUb3A7CisgICAgICBpZiAo
IXBvcyB8fCBvcGVyYSkgcmV0dXJuOyAvLyBPcGVyYSBpcyBkaWZmaWN1bHQuCisgICAgICBpZiAo
cG9zRXEoc2VsLmZyb20sIHNlbC50bykgfHwgcG9zTGVzcyhwb3MsIHNlbC5mcm9tKSB8fCAhcG9z
TGVzcyhwb3MsIHNlbC50bykpCisgICAgICAgIG9wZXJhdGlvbihzZXRDdXJzb3IpKHBvcy5saW5l
LCBwb3MuY2gpOworCisgICAgICB2YXIgb2xkQ1NTID0gaW5wdXQuc3R5bGUuY3NzVGV4dDsKKyAg
ICAgIGlucHV0RGl2LnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRlIjsKKyAgICAgIGlucHV0LnN0
eWxlLmNzc1RleHQgPSAicG9zaXRpb246IGZpeGVkOyB3aWR0aDogMzBweDsgaGVpZ2h0OiAzMHB4
OyB0b3A6ICIgKyAoZS5jbGllbnRZIC0gNSkgKworICAgICAgICAicHg7IGxlZnQ6ICIgKyAoZS5j
bGllbnRYIC0gNSkgKyAicHg7IHotaW5kZXg6IDEwMDA7IGJhY2tncm91bmQ6IHdoaXRlOyAiICsK
KyAgICAgICAgImJvcmRlci13aWR0aDogMDsgb3V0bGluZTogbm9uZTsgb3ZlcmZsb3c6IGhpZGRl
bjsgb3BhY2l0eTogLjA1OyBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NSk7IjsKKyAgICAgIGxlYXZl
SW5wdXRBbG9uZSA9IHRydWU7CisgICAgICB2YXIgdmFsID0gaW5wdXQudmFsdWUgPSBnZXRTZWxl
Y3Rpb24oKTsKKyAgICAgIGZvY3VzSW5wdXQoKTsKKyAgICAgIHNlbGVjdElucHV0KGlucHV0KTsK
KyAgICAgIGZ1bmN0aW9uIHJlaGlkZSgpIHsKKyAgICAgICAgdmFyIG5ld1ZhbCA9IHNwbGl0TGlu
ZXMoaW5wdXQudmFsdWUpLmpvaW4oIlxuIik7CisgICAgICAgIGlmIChuZXdWYWwgIT0gdmFsICYm
ICFvcHRpb25zLnJlYWRPbmx5KSBvcGVyYXRpb24ocmVwbGFjZVNlbGVjdGlvbikobmV3VmFsLCAi
ZW5kIik7CisgICAgICAgIGlucHV0RGl2LnN0eWxlLnBvc2l0aW9uID0gInJlbGF0aXZlIjsKKyAg
ICAgICAgaW5wdXQuc3R5bGUuY3NzVGV4dCA9IG9sZENTUzsKKyAgICAgICAgaWYgKGllX2x0OSkg
c2Nyb2xsYmFyLnNjcm9sbFRvcCA9IHNjcm9sbFBvczsKKyAgICAgICAgbGVhdmVJbnB1dEFsb25l
ID0gZmFsc2U7CisgICAgICAgIHJlc2V0SW5wdXQodHJ1ZSk7CisgICAgICAgIHNsb3dQb2xsKCk7
CisgICAgICB9CisKKyAgICAgIGlmIChnZWNrbykgeworICAgICAgICBlX3N0b3AoZSk7CisgICAg
ICAgIHZhciBtb3VzZXVwID0gY29ubmVjdCh3aW5kb3csICJtb3VzZXVwIiwgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgbW91c2V1cCgpOworICAgICAgICAgIHNldFRpbWVvdXQocmVoaWRlLCAyMCk7
CisgICAgICAgIH0sIHRydWUpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgc2V0VGltZW91dChy
ZWhpZGUsIDUwKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvLyBDdXJzb3ItYmxpbmtpbmcKKyAg
ICBmdW5jdGlvbiByZXN0YXJ0QmxpbmsoKSB7CisgICAgICBjbGVhckludGVydmFsKGJsaW5rZXIp
OworICAgICAgdmFyIG9uID0gdHJ1ZTsKKyAgICAgIGN1cnNvci5zdHlsZS52aXNpYmlsaXR5ID0g
IiI7CisgICAgICBibGlua2VyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgIGN1
cnNvci5zdHlsZS52aXNpYmlsaXR5ID0gKG9uID0gIW9uKSA/ICIiIDogImhpZGRlbiI7CisgICAg
ICB9LCA2NTApOworICAgIH0KKworICAgIHZhciBtYXRjaGluZyA9IHsiKCI6ICIpPiIsICIpIjog
Iig8IiwgIlsiOiAiXT4iLCAiXSI6ICJbPCIsICJ7IjogIn0+IiwgIn0iOiAiezwifTsKKyAgICBm
dW5jdGlvbiBtYXRjaEJyYWNrZXRzKGF1dG9jbGVhcikgeworICAgICAgdmFyIGhlYWQgPSBzZWwu
aW52ZXJ0ZWQgPyBzZWwuZnJvbSA6IHNlbC50bywgbGluZSA9IGdldExpbmUoaGVhZC5saW5lKSwg
cG9zID0gaGVhZC5jaCAtIDE7CisgICAgICB2YXIgbWF0Y2ggPSAocG9zID49IDAgJiYgbWF0Y2hp
bmdbbGluZS50ZXh0LmNoYXJBdChwb3MpXSkgfHwgbWF0Y2hpbmdbbGluZS50ZXh0LmNoYXJBdCgr
K3BvcyldOworICAgICAgaWYgKCFtYXRjaCkgcmV0dXJuOworICAgICAgdmFyIGNoID0gbWF0Y2gu
Y2hhckF0KDApLCBmb3J3YXJkID0gbWF0Y2guY2hhckF0KDEpID09ICI+IiwgZCA9IGZvcndhcmQg
PyAxIDogLTEsIHN0ID0gbGluZS5zdHlsZXM7CisgICAgICBmb3IgKHZhciBvZmYgPSBwb3MgKyAx
LCBpID0gMCwgZSA9IHN0Lmxlbmd0aDsgaSA8IGU7IGkrPTIpCisgICAgICAgIGlmICgob2ZmIC09
IHN0W2ldLmxlbmd0aCkgPD0gMCkge3ZhciBzdHlsZSA9IHN0W2krMV07IGJyZWFrO30KKworICAg
ICAgdmFyIHN0YWNrID0gW2xpbmUudGV4dC5jaGFyQXQocG9zKV0sIHJlID0gL1soKXt9W1xdXS87
CisgICAgICBmdW5jdGlvbiBzY2FuKGxpbmUsIGZyb20sIHRvKSB7CisgICAgICAgIGlmICghbGlu
ZS50ZXh0KSByZXR1cm47CisgICAgICAgIHZhciBzdCA9IGxpbmUuc3R5bGVzLCBwb3MgPSBmb3J3
YXJkID8gMCA6IGxpbmUudGV4dC5sZW5ndGggLSAxLCBjdXI7CisgICAgICAgIGZvciAodmFyIGkg
PSBmb3J3YXJkID8gMCA6IHN0Lmxlbmd0aCAtIDIsIGUgPSBmb3J3YXJkID8gc3QubGVuZ3RoIDog
LTI7IGkgIT0gZTsgaSArPSAyKmQpIHsKKyAgICAgICAgICB2YXIgdGV4dCA9IHN0W2ldOworICAg
ICAgICAgIGlmIChzdFtpKzFdICE9IHN0eWxlKSB7cG9zICs9IGQgKiB0ZXh0Lmxlbmd0aDsgY29u
dGludWU7fQorICAgICAgICAgIGZvciAodmFyIGogPSBmb3J3YXJkID8gMCA6IHRleHQubGVuZ3Ro
IC0gMSwgdGUgPSBmb3J3YXJkID8gdGV4dC5sZW5ndGggOiAtMTsgaiAhPSB0ZTsgaiArPSBkLCBw
b3MrPWQpIHsKKyAgICAgICAgICAgIGlmIChwb3MgPj0gZnJvbSAmJiBwb3MgPCB0byAmJiByZS50
ZXN0KGN1ciA9IHRleHQuY2hhckF0KGopKSkgeworICAgICAgICAgICAgICB2YXIgbWF0Y2ggPSBt
YXRjaGluZ1tjdXJdOworICAgICAgICAgICAgICBpZiAobWF0Y2guY2hhckF0KDEpID09ICI+IiA9
PSBmb3J3YXJkKSBzdGFjay5wdXNoKGN1cik7CisgICAgICAgICAgICAgIGVsc2UgaWYgKHN0YWNr
LnBvcCgpICE9IG1hdGNoLmNoYXJBdCgwKSkgcmV0dXJuIHtwb3M6IHBvcywgbWF0Y2g6IGZhbHNl
fTsKKyAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0YWNrLmxlbmd0aCkgcmV0dXJuIHtwb3M6IHBv
cywgbWF0Y2g6IHRydWV9OworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgfQorICAgICAgZm9yICh2YXIgaSA9IGhlYWQubGluZSwgZSA9IGZvcndhcmQgPyBNYXRo
Lm1pbihpICsgMTAwLCBkb2Muc2l6ZSkgOiBNYXRoLm1heCgtMSwgaSAtIDEwMCk7IGkgIT0gZTsg
aSs9ZCkgeworICAgICAgICB2YXIgbGluZSA9IGdldExpbmUoaSksIGZpcnN0ID0gaSA9PSBoZWFk
LmxpbmU7CisgICAgICAgIHZhciBmb3VuZCA9IHNjYW4obGluZSwgZmlyc3QgJiYgZm9yd2FyZCA/
IHBvcyArIDEgOiAwLCBmaXJzdCAmJiAhZm9yd2FyZCA/IHBvcyA6IGxpbmUudGV4dC5sZW5ndGgp
OworICAgICAgICBpZiAoZm91bmQpIGJyZWFrOworICAgICAgfQorICAgICAgaWYgKCFmb3VuZCkg
Zm91bmQgPSB7cG9zOiBudWxsLCBtYXRjaDogZmFsc2V9OworICAgICAgdmFyIHN0eWxlID0gZm91
bmQubWF0Y2ggPyAiQ29kZU1pcnJvci1tYXRjaGluZ2JyYWNrZXQiIDogIkNvZGVNaXJyb3Itbm9u
bWF0Y2hpbmdicmFja2V0IjsKKyAgICAgIHZhciBvbmUgPSBtYXJrVGV4dCh7bGluZTogaGVhZC5s
aW5lLCBjaDogcG9zfSwge2xpbmU6IGhlYWQubGluZSwgY2g6IHBvcysxfSwgc3R5bGUpLAorICAg
ICAgICAgIHR3byA9IGZvdW5kLnBvcyAhPSBudWxsICYmIG1hcmtUZXh0KHtsaW5lOiBpLCBjaDog
Zm91bmQucG9zfSwge2xpbmU6IGksIGNoOiBmb3VuZC5wb3MgKyAxfSwgc3R5bGUpOworICAgICAg
dmFyIGNsZWFyID0gb3BlcmF0aW9uKGZ1bmN0aW9uKCl7b25lLmNsZWFyKCk7IHR3byAmJiB0d28u
Y2xlYXIoKTt9KTsKKyAgICAgIGlmIChhdXRvY2xlYXIpIHNldFRpbWVvdXQoY2xlYXIsIDgwMCk7
CisgICAgICBlbHNlIGJyYWNrZXRIaWdobGlnaHRlZCA9IGNsZWFyOworICAgIH0KKworICAgIC8v
IEZpbmRzIHRoZSBsaW5lIHRvIHN0YXJ0IHdpdGggd2hlbiBzdGFydGluZyBhIHBhcnNlLiBUcmll
cyB0bworICAgIC8vIGZpbmQgYSBsaW5lIHdpdGggYSBzdGF0ZUFmdGVyLCBzbyB0aGF0IGl0IGNh
biBzdGFydCB3aXRoIGEKKyAgICAvLyB2YWxpZCBzdGF0ZS4gSWYgdGhhdCBmYWlscywgaXQgcmV0
dXJucyB0aGUgbGluZSB3aXRoIHRoZQorICAgIC8vIHNtYWxsZXN0IGluZGVudGF0aW9uLCB3aGlj
aCB0ZW5kcyB0byBuZWVkIHRoZSBsZWFzdCBjb250ZXh0IHRvCisgICAgLy8gcGFyc2UgY29ycmVj
dGx5LgorICAgIGZ1bmN0aW9uIGZpbmRTdGFydExpbmUobikgeworICAgICAgdmFyIG1pbmluZGVu
dCwgbWlubGluZTsKKyAgICAgIGZvciAodmFyIHNlYXJjaCA9IG4sIGxpbSA9IG4gLSA0MDsgc2Vh
cmNoID4gbGltOyAtLXNlYXJjaCkgeworICAgICAgICBpZiAoc2VhcmNoID09IDApIHJldHVybiAw
OworICAgICAgICB2YXIgbGluZSA9IGdldExpbmUoc2VhcmNoLTEpOworICAgICAgICBpZiAobGlu
ZS5zdGF0ZUFmdGVyKSByZXR1cm4gc2VhcmNoOworICAgICAgICB2YXIgaW5kZW50ZWQgPSBsaW5l
LmluZGVudGF0aW9uKG9wdGlvbnMudGFiU2l6ZSk7CisgICAgICAgIGlmIChtaW5saW5lID09IG51
bGwgfHwgbWluaW5kZW50ID4gaW5kZW50ZWQpIHsKKyAgICAgICAgICBtaW5saW5lID0gc2VhcmNo
IC0gMTsKKyAgICAgICAgICBtaW5pbmRlbnQgPSBpbmRlbnRlZDsKKyAgICAgICAgfQorICAgICAg
fQorICAgICAgcmV0dXJuIG1pbmxpbmU7CisgICAgfQorICAgIGZ1bmN0aW9uIGdldFN0YXRlQmVm
b3JlKG4pIHsKKyAgICAgIHZhciBzdGFydCA9IGZpbmRTdGFydExpbmUobiksIHN0YXRlID0gc3Rh
cnQgJiYgZ2V0TGluZShzdGFydC0xKS5zdGF0ZUFmdGVyOworICAgICAgaWYgKCFzdGF0ZSkgc3Rh
dGUgPSBzdGFydFN0YXRlKG1vZGUpOworICAgICAgZWxzZSBzdGF0ZSA9IGNvcHlTdGF0ZShtb2Rl
LCBzdGF0ZSk7CisgICAgICBkb2MuaXRlcihzdGFydCwgbiwgZnVuY3Rpb24obGluZSkgeworICAg
ICAgICBsaW5lLmhpZ2hsaWdodChtb2RlLCBzdGF0ZSwgb3B0aW9ucy50YWJTaXplKTsKKyAgICAg
ICAgbGluZS5zdGF0ZUFmdGVyID0gY29weVN0YXRlKG1vZGUsIHN0YXRlKTsKKyAgICAgIH0pOwor
ICAgICAgaWYgKHN0YXJ0IDwgbikgY2hhbmdlcy5wdXNoKHtmcm9tOiBzdGFydCwgdG86IG59KTsK
KyAgICAgIGlmIChuIDwgZG9jLnNpemUgJiYgIWdldExpbmUobikuc3RhdGVBZnRlcikgd29yay5w
dXNoKG4pOworICAgICAgcmV0dXJuIHN0YXRlOworICAgIH0KKyAgICBmdW5jdGlvbiBoaWdobGln
aHRMaW5lcyhzdGFydCwgZW5kKSB7CisgICAgICB2YXIgc3RhdGUgPSBnZXRTdGF0ZUJlZm9yZShz
dGFydCk7CisgICAgICBkb2MuaXRlcihzdGFydCwgZW5kLCBmdW5jdGlvbihsaW5lKSB7CisgICAg
ICAgIGxpbmUuaGlnaGxpZ2h0KG1vZGUsIHN0YXRlLCBvcHRpb25zLnRhYlNpemUpOworICAgICAg
ICBsaW5lLnN0YXRlQWZ0ZXIgPSBjb3B5U3RhdGUobW9kZSwgc3RhdGUpOworICAgICAgfSk7Cisg
ICAgfQorICAgIGZ1bmN0aW9uIGhpZ2hsaWdodFdvcmtlcigpIHsKKyAgICAgIHZhciBlbmQgPSAr
bmV3IERhdGUgKyBvcHRpb25zLndvcmtUaW1lOworICAgICAgdmFyIGZvdW5kV29yayA9IHdvcmsu
bGVuZ3RoOworICAgICAgd2hpbGUgKHdvcmsubGVuZ3RoKSB7CisgICAgICAgIGlmICghZ2V0TGlu
ZShzaG93aW5nRnJvbSkuc3RhdGVBZnRlcikgdmFyIHRhc2sgPSBzaG93aW5nRnJvbTsKKyAgICAg
ICAgZWxzZSB2YXIgdGFzayA9IHdvcmsucG9wKCk7CisgICAgICAgIGlmICh0YXNrID49IGRvYy5z
aXplKSBjb250aW51ZTsKKyAgICAgICAgdmFyIHN0YXJ0ID0gZmluZFN0YXJ0TGluZSh0YXNrKSwg
c3RhdGUgPSBzdGFydCAmJiBnZXRMaW5lKHN0YXJ0LTEpLnN0YXRlQWZ0ZXI7CisgICAgICAgIGlm
IChzdGF0ZSkgc3RhdGUgPSBjb3B5U3RhdGUobW9kZSwgc3RhdGUpOworICAgICAgICBlbHNlIHN0
YXRlID0gc3RhcnRTdGF0ZShtb2RlKTsKKworICAgICAgICB2YXIgdW5jaGFuZ2VkID0gMCwgY29t
cGFyZSA9IG1vZGUuY29tcGFyZVN0YXRlcywgcmVhbENoYW5nZSA9IGZhbHNlLAorICAgICAgICAg
ICAgaSA9IHN0YXJ0LCBiYWlsID0gZmFsc2U7CisgICAgICAgIGRvYy5pdGVyKGksIGRvYy5zaXpl
LCBmdW5jdGlvbihsaW5lKSB7CisgICAgICAgICAgdmFyIGhhZFN0YXRlID0gbGluZS5zdGF0ZUFm
dGVyOworICAgICAgICAgIGlmICgrbmV3IERhdGUgPiBlbmQpIHsKKyAgICAgICAgICAgIHdvcmsu
cHVzaChpKTsKKyAgICAgICAgICAgIHN0YXJ0V29ya2VyKG9wdGlvbnMud29ya0RlbGF5KTsKKyAg
ICAgICAgICAgIGlmIChyZWFsQ2hhbmdlKSBjaGFuZ2VzLnB1c2goe2Zyb206IHRhc2ssIHRvOiBp
ICsgMX0pOworICAgICAgICAgICAgcmV0dXJuIChiYWlsID0gdHJ1ZSk7CisgICAgICAgICAgfQor
ICAgICAgICAgIHZhciBjaGFuZ2VkID0gbGluZS5oaWdobGlnaHQobW9kZSwgc3RhdGUsIG9wdGlv
bnMudGFiU2l6ZSk7CisgICAgICAgICAgaWYgKGNoYW5nZWQpIHJlYWxDaGFuZ2UgPSB0cnVlOwor
ICAgICAgICAgIGxpbmUuc3RhdGVBZnRlciA9IGNvcHlTdGF0ZShtb2RlLCBzdGF0ZSk7CisgICAg
ICAgICAgdmFyIGRvbmUgPSBudWxsOworICAgICAgICAgIGlmIChjb21wYXJlKSB7CisgICAgICAg
ICAgICB2YXIgc2FtZSA9IGhhZFN0YXRlICYmIGNvbXBhcmUoaGFkU3RhdGUsIHN0YXRlKTsKKyAg
ICAgICAgICAgIGlmIChzYW1lICE9IFBhc3MpIGRvbmUgPSAhIXNhbWU7CisgICAgICAgICAgfQor
ICAgICAgICAgIGlmIChkb25lID09IG51bGwpIHsKKyAgICAgICAgICAgIGlmIChjaGFuZ2VkICE9
PSBmYWxzZSB8fCAhaGFkU3RhdGUpIHVuY2hhbmdlZCA9IDA7CisgICAgICAgICAgICBlbHNlIGlm
ICgrK3VuY2hhbmdlZCA+IDMgJiYgKCFtb2RlLmluZGVudCB8fCBtb2RlLmluZGVudChoYWRTdGF0
ZSwgIiIpID09IG1vZGUuaW5kZW50KHN0YXRlLCAiIikpKQorICAgICAgICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKGRvbmUpIHJldHVybiB0cnVlOworICAg
ICAgICAgICsraTsKKyAgICAgICAgfSk7CisgICAgICAgIGlmIChiYWlsKSByZXR1cm47CisgICAg
ICAgIGlmIChyZWFsQ2hhbmdlKSBjaGFuZ2VzLnB1c2goe2Zyb206IHRhc2ssIHRvOiBpICsgMX0p
OworICAgICAgfQorICAgICAgaWYgKGZvdW5kV29yayAmJiBvcHRpb25zLm9uSGlnaGxpZ2h0Q29t
cGxldGUpCisgICAgICAgIG9wdGlvbnMub25IaWdobGlnaHRDb21wbGV0ZShpbnN0YW5jZSk7Cisg
ICAgfQorICAgIGZ1bmN0aW9uIHN0YXJ0V29ya2VyKHRpbWUpIHsKKyAgICAgIGlmICghd29yay5s
ZW5ndGgpIHJldHVybjsKKyAgICAgIGhpZ2hsaWdodC5zZXQodGltZSwgb3BlcmF0aW9uKGhpZ2hs
aWdodFdvcmtlcikpOworICAgIH0KKworICAgIC8vIE9wZXJhdGlvbnMgYXJlIHVzZWQgdG8gd3Jh
cCBjaGFuZ2VzIGluIHN1Y2ggYSB3YXkgdGhhdCBlYWNoCisgICAgLy8gY2hhbmdlIHdvbid0IGhh
dmUgdG8gdXBkYXRlIHRoZSBjdXJzb3IgYW5kIGRpc3BsYXkgKHdoaWNoIHdvdWxkCisgICAgLy8g
YmUgYXdrd2FyZCwgc2xvdywgYW5kIGVycm9yLXByb25lKSwgYnV0IGluc3RlYWQgdXBkYXRlcyBh
cmUKKyAgICAvLyBiYXRjaGVkIGFuZCB0aGVuIGFsbCBjb21iaW5lZCBhbmQgZXhlY3V0ZWQgYXQg
b25jZS4KKyAgICBmdW5jdGlvbiBzdGFydE9wZXJhdGlvbigpIHsKKyAgICAgIHVwZGF0ZUlucHV0
ID0gdXNlclNlbENoYW5nZSA9IHRleHRDaGFuZ2VkID0gbnVsbDsKKyAgICAgIGNoYW5nZXMgPSBb
XTsgc2VsZWN0aW9uQ2hhbmdlZCA9IGZhbHNlOyBjYWxsYmFja3MgPSBbXTsKKyAgICB9CisgICAg
ZnVuY3Rpb24gZW5kT3BlcmF0aW9uKCkgeworICAgICAgaWYgKHVwZGF0ZU1heExpbmUpIGNvbXB1
dGVNYXhMZW5ndGgoKTsKKyAgICAgIGlmIChtYXhMaW5lQ2hhbmdlZCAmJiAhb3B0aW9ucy5saW5l
V3JhcHBpbmcpIHsKKyAgICAgICAgdmFyIGN1cnNvcldpZHRoID0gd2lkdGhGb3JjZXIub2Zmc2V0
V2lkdGgsIGxlZnQgPSBtZWFzdXJlTGluZShtYXhMaW5lLCBtYXhMaW5lLnRleHQubGVuZ3RoKS5s
ZWZ0OworICAgICAgICB3aWR0aEZvcmNlci5zdHlsZS5sZWZ0ID0gbGVmdCArICJweCI7CisgICAg
ICAgIGxpbmVTcGFjZS5zdHlsZS5taW5XaWR0aCA9IChsZWZ0ICsgY3Vyc29yV2lkdGgpICsgInB4
IjsKKyAgICAgICAgbWF4TGluZUNoYW5nZWQgPSBmYWxzZTsKKyAgICAgIH0KKyAgICAgIHZhciBu
ZXdTY3JvbGxQb3MsIHVwZGF0ZWQ7CisgICAgICBpZiAoc2VsZWN0aW9uQ2hhbmdlZCkgeworICAg
ICAgICB2YXIgY29vcmRzID0gY2FsY3VsYXRlQ3Vyc29yQ29vcmRzKCk7CisgICAgICAgIG5ld1Nj
cm9sbFBvcyA9IGNhbGN1bGF0ZVNjcm9sbFBvcyhjb29yZHMueCwgY29vcmRzLnksIGNvb3Jkcy54
LCBjb29yZHMueUJvdCk7CisgICAgICB9CisgICAgICBpZiAoY2hhbmdlcy5sZW5ndGggfHwgbmV3
U2Nyb2xsUG9zICYmIG5ld1Njcm9sbFBvcy5zY3JvbGxUb3AgIT0gbnVsbCkKKyAgICAgICAgdXBk
YXRlZCA9IHVwZGF0ZURpc3BsYXkoY2hhbmdlcywgdHJ1ZSwgbmV3U2Nyb2xsUG9zICYmIG5ld1Nj
cm9sbFBvcy5zY3JvbGxUb3ApOworICAgICAgaWYgKCF1cGRhdGVkKSB7CisgICAgICAgIGlmIChz
ZWxlY3Rpb25DaGFuZ2VkKSB1cGRhdGVTZWxlY3Rpb24oKTsKKyAgICAgICAgaWYgKGd1dHRlckRp
cnR5KSB1cGRhdGVHdXR0ZXIoKTsKKyAgICAgIH0KKyAgICAgIGlmIChuZXdTY3JvbGxQb3MpIHNj
cm9sbEN1cnNvckludG9WaWV3KCk7CisgICAgICBpZiAoc2VsZWN0aW9uQ2hhbmdlZCkge3Njcm9s
bEVkaXRvckludG9WaWV3KCk7IHJlc3RhcnRCbGluaygpO30KKworICAgICAgaWYgKGZvY3VzZWQg
JiYgIWxlYXZlSW5wdXRBbG9uZSAmJgorICAgICAgICAgICh1cGRhdGVJbnB1dCA9PT0gdHJ1ZSB8
fCAodXBkYXRlSW5wdXQgIT09IGZhbHNlICYmIHNlbGVjdGlvbkNoYW5nZWQpKSkKKyAgICAgICAg
cmVzZXRJbnB1dCh1c2VyU2VsQ2hhbmdlKTsKKworICAgICAgaWYgKHNlbGVjdGlvbkNoYW5nZWQg
JiYgb3B0aW9ucy5tYXRjaEJyYWNrZXRzKQorICAgICAgICBzZXRUaW1lb3V0KG9wZXJhdGlvbihm
dW5jdGlvbigpIHsKKyAgICAgICAgICBpZiAoYnJhY2tldEhpZ2hsaWdodGVkKSB7YnJhY2tldEhp
Z2hsaWdodGVkKCk7IGJyYWNrZXRIaWdobGlnaHRlZCA9IG51bGw7fQorICAgICAgICAgIGlmIChw
b3NFcShzZWwuZnJvbSwgc2VsLnRvKSkgbWF0Y2hCcmFja2V0cyhmYWxzZSk7CisgICAgICAgIH0p
LCAyMCk7CisgICAgICB2YXIgc2MgPSBzZWxlY3Rpb25DaGFuZ2VkLCBjYnMgPSBjYWxsYmFja3M7
IC8vIHRoZXNlIGNhbiBiZSByZXNldCBieSBjYWxsYmFja3MKKyAgICAgIGlmICh0ZXh0Q2hhbmdl
ZCAmJiBvcHRpb25zLm9uQ2hhbmdlICYmIGluc3RhbmNlKQorICAgICAgICBvcHRpb25zLm9uQ2hh
bmdlKGluc3RhbmNlLCB0ZXh0Q2hhbmdlZCk7CisgICAgICBpZiAoc2MgJiYgb3B0aW9ucy5vbkN1
cnNvckFjdGl2aXR5KQorICAgICAgICBvcHRpb25zLm9uQ3Vyc29yQWN0aXZpdHkoaW5zdGFuY2Up
OworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYnMubGVuZ3RoOyArK2kpIGNic1tpXShpbnN0
YW5jZSk7CisgICAgICBpZiAodXBkYXRlZCAmJiBvcHRpb25zLm9uVXBkYXRlKSBvcHRpb25zLm9u
VXBkYXRlKGluc3RhbmNlKTsKKyAgICB9CisgICAgdmFyIG5lc3RlZE9wZXJhdGlvbiA9IDA7Cisg
ICAgZnVuY3Rpb24gb3BlcmF0aW9uKGYpIHsKKyAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAg
ICAgICAgaWYgKCFuZXN0ZWRPcGVyYXRpb24rKykgc3RhcnRPcGVyYXRpb24oKTsKKyAgICAgICAg
dHJ5IHt2YXIgcmVzdWx0ID0gZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO30KKyAgICAgICAgZmlu
YWxseSB7aWYgKCEtLW5lc3RlZE9wZXJhdGlvbikgZW5kT3BlcmF0aW9uKCk7fQorICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgICAgfTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjb21wb3VuZENo
YW5nZShmKSB7CisgICAgICBoaXN0b3J5LnN0YXJ0Q29tcG91bmQoKTsKKyAgICAgIHRyeSB7IHJl
dHVybiBmKCk7IH0gZmluYWxseSB7IGhpc3RvcnkuZW5kQ29tcG91bmQoKTsgfQorICAgIH0KKwor
ICAgIGZvciAodmFyIGV4dCBpbiBleHRlbnNpb25zKQorICAgICAgaWYgKGV4dGVuc2lvbnMucHJv
cGVydHlJc0VudW1lcmFibGUoZXh0KSAmJgorICAgICAgICAgICFpbnN0YW5jZS5wcm9wZXJ0eUlz
RW51bWVyYWJsZShleHQpKQorICAgICAgICBpbnN0YW5jZVtleHRdID0gZXh0ZW5zaW9uc1tleHRd
OworICAgIHJldHVybiBpbnN0YW5jZTsKKyAgfSAvLyAoZW5kIG9mIGZ1bmN0aW9uIENvZGVNaXJy
b3IpCisKKyAgLy8gVGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBvcHRpb25zLgorICBDb2RlTWly
cm9yLmRlZmF1bHRzID0geworICAgIHZhbHVlOiAiIiwKKyAgICBtb2RlOiBudWxsLAorICAgIHRo
ZW1lOiAiZGVmYXVsdCIsCisgICAgaW5kZW50VW5pdDogMiwKKyAgICBpbmRlbnRXaXRoVGFiczog
ZmFsc2UsCisgICAgc21hcnRJbmRlbnQ6IHRydWUsCisgICAgdGFiU2l6ZTogNCwKKyAgICBrZXlN
YXA6ICJkZWZhdWx0IiwKKyAgICBleHRyYUtleXM6IG51bGwsCisgICAgZWxlY3RyaWNDaGFyczog
dHJ1ZSwKKyAgICBhdXRvQ2xlYXJFbXB0eUxpbmVzOiBmYWxzZSwKKyAgICBvbktleUV2ZW50OiBu
dWxsLAorICAgIG9uRHJhZ0V2ZW50OiBudWxsLAorICAgIGxpbmVXcmFwcGluZzogZmFsc2UsCisg
ICAgbGluZU51bWJlcnM6IGZhbHNlLAorICAgIGd1dHRlcjogZmFsc2UsCisgICAgZml4ZWRHdXR0
ZXI6IGZhbHNlLAorICAgIGZpcnN0TGluZU51bWJlcjogMSwKKyAgICByZWFkT25seTogZmFsc2Us
CisgICAgZHJhZ0Ryb3A6IHRydWUsCisgICAgb25DaGFuZ2U6IG51bGwsCisgICAgb25DdXJzb3JB
Y3Rpdml0eTogbnVsbCwKKyAgICBvbkd1dHRlckNsaWNrOiBudWxsLAorICAgIG9uSGlnaGxpZ2h0
Q29tcGxldGU6IG51bGwsCisgICAgb25VcGRhdGU6IG51bGwsCisgICAgb25Gb2N1czogbnVsbCwg
b25CbHVyOiBudWxsLCBvblNjcm9sbDogbnVsbCwKKyAgICBtYXRjaEJyYWNrZXRzOiBmYWxzZSwK
KyAgICB3b3JrVGltZTogMTAwLAorICAgIHdvcmtEZWxheTogMjAwLAorICAgIHBvbGxJbnRlcnZh
bDogMTAwLAorICAgIHVuZG9EZXB0aDogNDAsCisgICAgdGFiaW5kZXg6IG51bGwsCisgICAgYXV0
b2ZvY3VzOiBudWxsLAorICAgIGxpbmVOdW1iZXJGb3JtYXR0ZXI6IGZ1bmN0aW9uKGludGVnZXIp
IHsgcmV0dXJuIGludGVnZXI7IH0KKyAgfTsKKworICB2YXIgaW9zID0gL0FwcGxlV2ViS2l0Ly50
ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmIC9Nb2JpbGVcL1x3Ky8udGVzdChuYXZpZ2F0b3Iu
dXNlckFnZW50KTsKKyAgdmFyIG1hYyA9IGlvcyB8fCAvTWFjLy50ZXN0KG5hdmlnYXRvci5wbGF0
Zm9ybSk7CisgIHZhciB3aW4gPSAvV2luLy50ZXN0KG5hdmlnYXRvci5wbGF0Zm9ybSk7CisKKyAg
Ly8gS25vd24gbW9kZXMsIGJ5IG5hbWUgYW5kIGJ5IE1JTUUKKyAgdmFyIG1vZGVzID0gQ29kZU1p
cnJvci5tb2RlcyA9IHt9LCBtaW1lTW9kZXMgPSBDb2RlTWlycm9yLm1pbWVNb2RlcyA9IHt9Owor
ICBDb2RlTWlycm9yLmRlZmluZU1vZGUgPSBmdW5jdGlvbihuYW1lLCBtb2RlKSB7CisgICAgaWYg
KCFDb2RlTWlycm9yLmRlZmF1bHRzLm1vZGUgJiYgbmFtZSAhPSAibnVsbCIpIENvZGVNaXJyb3Iu
ZGVmYXVsdHMubW9kZSA9IG5hbWU7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKSB7Cisg
ICAgICBtb2RlLmRlcGVuZGVuY2llcyA9IFtdOworICAgICAgZm9yICh2YXIgaSA9IDI7IGkgPCBh
cmd1bWVudHMubGVuZ3RoOyArK2kpIG1vZGUuZGVwZW5kZW5jaWVzLnB1c2goYXJndW1lbnRzW2ld
KTsKKyAgICB9CisgICAgbW9kZXNbbmFtZV0gPSBtb2RlOworICB9OworICBDb2RlTWlycm9yLmRl
ZmluZU1JTUUgPSBmdW5jdGlvbihtaW1lLCBzcGVjKSB7CisgICAgbWltZU1vZGVzW21pbWVdID0g
c3BlYzsKKyAgfTsKKyAgQ29kZU1pcnJvci5yZXNvbHZlTW9kZSA9IGZ1bmN0aW9uKHNwZWMpIHsK
KyAgICBpZiAodHlwZW9mIHNwZWMgPT0gInN0cmluZyIgJiYgbWltZU1vZGVzLmhhc093blByb3Bl
cnR5KHNwZWMpKQorICAgICAgc3BlYyA9IG1pbWVNb2Rlc1tzcGVjXTsKKyAgICBlbHNlIGlmICh0
eXBlb2Ygc3BlYyA9PSAic3RyaW5nIiAmJiAvXltcd1wtXStcL1tcd1wtXStcK3htbCQvLnRlc3Qo
c3BlYykpCisgICAgICByZXR1cm4gQ29kZU1pcnJvci5yZXNvbHZlTW9kZSgiYXBwbGljYXRpb24v
eG1sIik7CisgICAgaWYgKHR5cGVvZiBzcGVjID09ICJzdHJpbmciKSByZXR1cm4ge25hbWU6IHNw
ZWN9OworICAgIGVsc2UgcmV0dXJuIHNwZWMgfHwge25hbWU6ICJudWxsIn07CisgIH07CisgIENv
ZGVNaXJyb3IuZ2V0TW9kZSA9IGZ1bmN0aW9uKG9wdGlvbnMsIHNwZWMpIHsKKyAgICB2YXIgc3Bl
YyA9IENvZGVNaXJyb3IucmVzb2x2ZU1vZGUoc3BlYyk7CisgICAgdmFyIG1mYWN0b3J5ID0gbW9k
ZXNbc3BlYy5uYW1lXTsKKyAgICBpZiAoIW1mYWN0b3J5KSByZXR1cm4gQ29kZU1pcnJvci5nZXRN
b2RlKG9wdGlvbnMsICJ0ZXh0L3BsYWluIik7CisgICAgcmV0dXJuIG1mYWN0b3J5KG9wdGlvbnMs
IHNwZWMpOworICB9OworICBDb2RlTWlycm9yLmxpc3RNb2RlcyA9IGZ1bmN0aW9uKCkgeworICAg
IHZhciBsaXN0ID0gW107CisgICAgZm9yICh2YXIgbSBpbiBtb2RlcykKKyAgICAgIGlmIChtb2Rl
cy5wcm9wZXJ0eUlzRW51bWVyYWJsZShtKSkgbGlzdC5wdXNoKG0pOworICAgIHJldHVybiBsaXN0
OworICB9OworICBDb2RlTWlycm9yLmxpc3RNSU1FcyA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBs
aXN0ID0gW107CisgICAgZm9yICh2YXIgbSBpbiBtaW1lTW9kZXMpCisgICAgICBpZiAobWltZU1v
ZGVzLnByb3BlcnR5SXNFbnVtZXJhYmxlKG0pKSBsaXN0LnB1c2goe21pbWU6IG0sIG1vZGU6IG1p
bWVNb2Rlc1ttXX0pOworICAgIHJldHVybiBsaXN0OworICB9OworCisgIHZhciBleHRlbnNpb25z
ID0gQ29kZU1pcnJvci5leHRlbnNpb25zID0ge307CisgIENvZGVNaXJyb3IuZGVmaW5lRXh0ZW5z
aW9uID0gZnVuY3Rpb24obmFtZSwgZnVuYykgeworICAgIGV4dGVuc2lvbnNbbmFtZV0gPSBmdW5j
OworICB9OworCisgIHZhciBjb21tYW5kcyA9IENvZGVNaXJyb3IuY29tbWFuZHMgPSB7CisgICAg
c2VsZWN0QWxsOiBmdW5jdGlvbihjbSkge2NtLnNldFNlbGVjdGlvbih7bGluZTogMCwgY2g6IDB9
LCB7bGluZTogY20ubGluZUNvdW50KCkgLSAxfSk7fSwKKyAgICBraWxsTGluZTogZnVuY3Rpb24o
Y20pIHsKKyAgICAgIHZhciBmcm9tID0gY20uZ2V0Q3Vyc29yKHRydWUpLCB0byA9IGNtLmdldEN1
cnNvcihmYWxzZSksIHNlbCA9ICFwb3NFcShmcm9tLCB0byk7CisgICAgICBpZiAoIXNlbCAmJiBj
bS5nZXRMaW5lKGZyb20ubGluZSkubGVuZ3RoID09IGZyb20uY2gpIGNtLnJlcGxhY2VSYW5nZSgi
IiwgZnJvbSwge2xpbmU6IGZyb20ubGluZSArIDEsIGNoOiAwfSk7CisgICAgICBlbHNlIGNtLnJl
cGxhY2VSYW5nZSgiIiwgZnJvbSwgc2VsID8gdG8gOiB7bGluZTogZnJvbS5saW5lfSk7CisgICAg
fSwKKyAgICBkZWxldGVMaW5lOiBmdW5jdGlvbihjbSkge3ZhciBsID0gY20uZ2V0Q3Vyc29yKCku
bGluZTsgY20ucmVwbGFjZVJhbmdlKCIiLCB7bGluZTogbCwgY2g6IDB9LCB7bGluZTogbH0pO30s
CisgICAgdW5kbzogZnVuY3Rpb24oY20pIHtjbS51bmRvKCk7fSwKKyAgICByZWRvOiBmdW5jdGlv
bihjbSkge2NtLnJlZG8oKTt9LAorICAgIGdvRG9jU3RhcnQ6IGZ1bmN0aW9uKGNtKSB7Y20uc2V0
Q3Vyc29yKDAsIDAsIHRydWUpO30sCisgICAgZ29Eb2NFbmQ6IGZ1bmN0aW9uKGNtKSB7Y20uc2V0
U2VsZWN0aW9uKHtsaW5lOiBjbS5saW5lQ291bnQoKSAtIDF9LCBudWxsLCB0cnVlKTt9LAorICAg
IGdvTGluZVN0YXJ0OiBmdW5jdGlvbihjbSkge2NtLnNldEN1cnNvcihjbS5nZXRDdXJzb3IoKS5s
aW5lLCAwLCB0cnVlKTt9LAorICAgIGdvTGluZVN0YXJ0U21hcnQ6IGZ1bmN0aW9uKGNtKSB7Cisg
ICAgICB2YXIgY3VyID0gY20uZ2V0Q3Vyc29yKCk7CisgICAgICB2YXIgdGV4dCA9IGNtLmdldExp
bmUoY3VyLmxpbmUpLCBmaXJzdE5vbldTID0gTWF0aC5tYXgoMCwgdGV4dC5zZWFyY2goL1xTLykp
OworICAgICAgY20uc2V0Q3Vyc29yKGN1ci5saW5lLCBjdXIuY2ggPD0gZmlyc3ROb25XUyAmJiBj
dXIuY2ggPyAwIDogZmlyc3ROb25XUywgdHJ1ZSk7CisgICAgfSwKKyAgICBnb0xpbmVFbmQ6IGZ1
bmN0aW9uKGNtKSB7Y20uc2V0U2VsZWN0aW9uKHtsaW5lOiBjbS5nZXRDdXJzb3IoKS5saW5lfSwg
bnVsbCwgdHJ1ZSk7fSwKKyAgICBnb0xpbmVVcDogZnVuY3Rpb24oY20pIHtjbS5tb3ZlVigtMSwg
ImxpbmUiKTt9LAorICAgIGdvTGluZURvd246IGZ1bmN0aW9uKGNtKSB7Y20ubW92ZVYoMSwgImxp
bmUiKTt9LAorICAgIGdvUGFnZVVwOiBmdW5jdGlvbihjbSkge2NtLm1vdmVWKC0xLCAicGFnZSIp
O30sCisgICAgZ29QYWdlRG93bjogZnVuY3Rpb24oY20pIHtjbS5tb3ZlVigxLCAicGFnZSIpO30s
CisgICAgZ29DaGFyTGVmdDogZnVuY3Rpb24oY20pIHtjbS5tb3ZlSCgtMSwgImNoYXIiKTt9LAor
ICAgIGdvQ2hhclJpZ2h0OiBmdW5jdGlvbihjbSkge2NtLm1vdmVIKDEsICJjaGFyIik7fSwKKyAg
ICBnb0NvbHVtbkxlZnQ6IGZ1bmN0aW9uKGNtKSB7Y20ubW92ZUgoLTEsICJjb2x1bW4iKTt9LAor
ICAgIGdvQ29sdW1uUmlnaHQ6IGZ1bmN0aW9uKGNtKSB7Y20ubW92ZUgoMSwgImNvbHVtbiIpO30s
CisgICAgZ29Xb3JkTGVmdDogZnVuY3Rpb24oY20pIHtjbS5tb3ZlSCgtMSwgIndvcmQiKTt9LAor
ICAgIGdvV29yZFJpZ2h0OiBmdW5jdGlvbihjbSkge2NtLm1vdmVIKDEsICJ3b3JkIik7fSwKKyAg
ICBkZWxDaGFyTGVmdDogZnVuY3Rpb24oY20pIHtjbS5kZWxldGVIKC0xLCAiY2hhciIpO30sCisg
ICAgZGVsQ2hhclJpZ2h0OiBmdW5jdGlvbihjbSkge2NtLmRlbGV0ZUgoMSwgImNoYXIiKTt9LAor
ICAgIGRlbFdvcmRMZWZ0OiBmdW5jdGlvbihjbSkge2NtLmRlbGV0ZUgoLTEsICJ3b3JkIik7fSwK
KyAgICBkZWxXb3JkUmlnaHQ6IGZ1bmN0aW9uKGNtKSB7Y20uZGVsZXRlSCgxLCAid29yZCIpO30s
CisgICAgaW5kZW50QXV0bzogZnVuY3Rpb24oY20pIHtjbS5pbmRlbnRTZWxlY3Rpb24oInNtYXJ0
Iik7fSwKKyAgICBpbmRlbnRNb3JlOiBmdW5jdGlvbihjbSkge2NtLmluZGVudFNlbGVjdGlvbigi
YWRkIik7fSwKKyAgICBpbmRlbnRMZXNzOiBmdW5jdGlvbihjbSkge2NtLmluZGVudFNlbGVjdGlv
bigic3VidHJhY3QiKTt9LAorICAgIGluc2VydFRhYjogZnVuY3Rpb24oY20pIHtjbS5yZXBsYWNl
U2VsZWN0aW9uKCJcdCIsICJlbmQiKTt9LAorICAgIGRlZmF1bHRUYWI6IGZ1bmN0aW9uKGNtKSB7
CisgICAgICBpZiAoY20uc29tZXRoaW5nU2VsZWN0ZWQoKSkgY20uaW5kZW50U2VsZWN0aW9uKCJh
ZGQiKTsKKyAgICAgIGVsc2UgY20ucmVwbGFjZVNlbGVjdGlvbigiXHQiLCAiZW5kIik7CisgICAg
fSwKKyAgICB0cmFuc3Bvc2VDaGFyczogZnVuY3Rpb24oY20pIHsKKyAgICAgIHZhciBjdXIgPSBj
bS5nZXRDdXJzb3IoKSwgbGluZSA9IGNtLmdldExpbmUoY3VyLmxpbmUpOworICAgICAgaWYgKGN1
ci5jaCA+IDAgJiYgY3VyLmNoIDwgbGluZS5sZW5ndGggLSAxKQorICAgICAgICBjbS5yZXBsYWNl
UmFuZ2UobGluZS5jaGFyQXQoY3VyLmNoKSArIGxpbmUuY2hhckF0KGN1ci5jaCAtIDEpLAorICAg
ICAgICAgICAgICAgICAgICAgICAge2xpbmU6IGN1ci5saW5lLCBjaDogY3VyLmNoIC0gMX0sIHts
aW5lOiBjdXIubGluZSwgY2g6IGN1ci5jaCArIDF9KTsKKyAgICB9LAorICAgIG5ld2xpbmVBbmRJ
bmRlbnQ6IGZ1bmN0aW9uKGNtKSB7CisgICAgICBjbS5yZXBsYWNlU2VsZWN0aW9uKCJcbiIsICJl
bmQiKTsKKyAgICAgIGNtLmluZGVudExpbmUoY20uZ2V0Q3Vyc29yKCkubGluZSk7CisgICAgfSwK
KyAgICB0b2dnbGVPdmVyd3JpdGU6IGZ1bmN0aW9uKGNtKSB7Y20udG9nZ2xlT3ZlcndyaXRlKCk7
fQorICB9OworCisgIHZhciBrZXlNYXAgPSBDb2RlTWlycm9yLmtleU1hcCA9IHt9OworICBrZXlN
YXAuYmFzaWMgPSB7CisgICAgIkxlZnQiOiAiZ29DaGFyTGVmdCIsICJSaWdodCI6ICJnb0NoYXJS
aWdodCIsICJVcCI6ICJnb0xpbmVVcCIsICJEb3duIjogImdvTGluZURvd24iLAorICAgICJFbmQi
OiAiZ29MaW5lRW5kIiwgIkhvbWUiOiAiZ29MaW5lU3RhcnRTbWFydCIsICJQYWdlVXAiOiAiZ29Q
YWdlVXAiLCAiUGFnZURvd24iOiAiZ29QYWdlRG93biIsCisgICAgIkRlbGV0ZSI6ICJkZWxDaGFy
UmlnaHQiLCAiQmFja3NwYWNlIjogImRlbENoYXJMZWZ0IiwgIlRhYiI6ICJkZWZhdWx0VGFiIiwg
IlNoaWZ0LVRhYiI6ICJpbmRlbnRBdXRvIiwKKyAgICAiRW50ZXIiOiAibmV3bGluZUFuZEluZGVu
dCIsICJJbnNlcnQiOiAidG9nZ2xlT3ZlcndyaXRlIgorICB9OworICAvLyBOb3RlIHRoYXQgdGhl
IHNhdmUgYW5kIGZpbmQtcmVsYXRlZCBjb21tYW5kcyBhcmVuJ3QgZGVmaW5lZCBieQorICAvLyBk
ZWZhdWx0LiBVbmtub3duIGNvbW1hbmRzIGFyZSBzaW1wbHkgaWdub3JlZC4KKyAga2V5TWFwLnBj
RGVmYXVsdCA9IHsKKyAgICAiQ3RybC1BIjogInNlbGVjdEFsbCIsICJDdHJsLUQiOiAiZGVsZXRl
TGluZSIsICJDdHJsLVoiOiAidW5kbyIsICJTaGlmdC1DdHJsLVoiOiAicmVkbyIsICJDdHJsLVki
OiAicmVkbyIsCisgICAgIkN0cmwtSG9tZSI6ICJnb0RvY1N0YXJ0IiwgIkFsdC1VcCI6ICJnb0Rv
Y1N0YXJ0IiwgIkN0cmwtRW5kIjogImdvRG9jRW5kIiwgIkN0cmwtRG93biI6ICJnb0RvY0VuZCIs
CisgICAgIkN0cmwtTGVmdCI6ICJnb1dvcmRMZWZ0IiwgIkN0cmwtUmlnaHQiOiAiZ29Xb3JkUmln
aHQiLCAiQWx0LUxlZnQiOiAiZ29MaW5lU3RhcnQiLCAiQWx0LVJpZ2h0IjogImdvTGluZUVuZCIs
CisgICAgIkN0cmwtQmFja3NwYWNlIjogImRlbFdvcmRMZWZ0IiwgIkN0cmwtRGVsZXRlIjogImRl
bFdvcmRSaWdodCIsICJDdHJsLVMiOiAic2F2ZSIsICJDdHJsLUYiOiAiZmluZCIsCisgICAgIkN0
cmwtRyI6ICJmaW5kTmV4dCIsICJTaGlmdC1DdHJsLUciOiAiZmluZFByZXYiLCAiU2hpZnQtQ3Ry
bC1GIjogInJlcGxhY2UiLCAiU2hpZnQtQ3RybC1SIjogInJlcGxhY2VBbGwiLAorICAgICJDdHJs
LVsiOiAiaW5kZW50TGVzcyIsICJDdHJsLV0iOiAiaW5kZW50TW9yZSIsCisgICAgZmFsbHRocm91
Z2g6ICJiYXNpYyIKKyAgfTsKKyAga2V5TWFwLm1hY0RlZmF1bHQgPSB7CisgICAgIkNtZC1BIjog
InNlbGVjdEFsbCIsICJDbWQtRCI6ICJkZWxldGVMaW5lIiwgIkNtZC1aIjogInVuZG8iLCAiU2hp
ZnQtQ21kLVoiOiAicmVkbyIsICJDbWQtWSI6ICJyZWRvIiwKKyAgICAiQ21kLVVwIjogImdvRG9j
U3RhcnQiLCAiQ21kLUVuZCI6ICJnb0RvY0VuZCIsICJDbWQtRG93biI6ICJnb0RvY0VuZCIsICJB
bHQtTGVmdCI6ICJnb1dvcmRMZWZ0IiwKKyAgICAiQWx0LVJpZ2h0IjogImdvV29yZFJpZ2h0Iiwg
IkNtZC1MZWZ0IjogImdvTGluZVN0YXJ0IiwgIkNtZC1SaWdodCI6ICJnb0xpbmVFbmQiLCAiQWx0
LUJhY2tzcGFjZSI6ICJkZWxXb3JkTGVmdCIsCisgICAgIkN0cmwtQWx0LUJhY2tzcGFjZSI6ICJk
ZWxXb3JkUmlnaHQiLCAiQWx0LURlbGV0ZSI6ICJkZWxXb3JkUmlnaHQiLCAiQ21kLVMiOiAic2F2
ZSIsICJDbWQtRiI6ICJmaW5kIiwKKyAgICAiQ21kLUciOiAiZmluZE5leHQiLCAiU2hpZnQtQ21k
LUciOiAiZmluZFByZXYiLCAiQ21kLUFsdC1GIjogInJlcGxhY2UiLCAiU2hpZnQtQ21kLUFsdC1G
IjogInJlcGxhY2VBbGwiLAorICAgICJDbWQtWyI6ICJpbmRlbnRMZXNzIiwgIkNtZC1dIjogImlu
ZGVudE1vcmUiLAorICAgIGZhbGx0aHJvdWdoOiBbImJhc2ljIiwgImVtYWNzeSJdCisgIH07Cisg
IGtleU1hcFsiZGVmYXVsdCJdID0gbWFjID8ga2V5TWFwLm1hY0RlZmF1bHQgOiBrZXlNYXAucGNE
ZWZhdWx0OworICBrZXlNYXAuZW1hY3N5ID0geworICAgICJDdHJsLUYiOiAiZ29DaGFyUmlnaHQi
LCAiQ3RybC1CIjogImdvQ2hhckxlZnQiLCAiQ3RybC1QIjogImdvTGluZVVwIiwgIkN0cmwtTiI6
ICJnb0xpbmVEb3duIiwKKyAgICAiQWx0LUYiOiAiZ29Xb3JkUmlnaHQiLCAiQWx0LUIiOiAiZ29X
b3JkTGVmdCIsICJDdHJsLUEiOiAiZ29MaW5lU3RhcnQiLCAiQ3RybC1FIjogImdvTGluZUVuZCIs
CisgICAgIkN0cmwtViI6ICJnb1BhZ2VVcCIsICJTaGlmdC1DdHJsLVYiOiAiZ29QYWdlRG93biIs
ICJDdHJsLUQiOiAiZGVsQ2hhclJpZ2h0IiwgIkN0cmwtSCI6ICJkZWxDaGFyTGVmdCIsCisgICAg
IkFsdC1EIjogImRlbFdvcmRSaWdodCIsICJBbHQtQmFja3NwYWNlIjogImRlbFdvcmRMZWZ0Iiwg
IkN0cmwtSyI6ICJraWxsTGluZSIsICJDdHJsLVQiOiAidHJhbnNwb3NlQ2hhcnMiCisgIH07CisK
KyAgZnVuY3Rpb24gZ2V0S2V5TWFwKHZhbCkgeworICAgIGlmICh0eXBlb2YgdmFsID09ICJzdHJp
bmciKSByZXR1cm4ga2V5TWFwW3ZhbF07CisgICAgZWxzZSByZXR1cm4gdmFsOworICB9CisgIGZ1
bmN0aW9uIGxvb2t1cEtleShuYW1lLCBleHRyYU1hcCwgbWFwLCBoYW5kbGUsIHN0b3ApIHsKKyAg
ICBmdW5jdGlvbiBsb29rdXAobWFwKSB7CisgICAgICBtYXAgPSBnZXRLZXlNYXAobWFwKTsKKyAg
ICAgIHZhciBmb3VuZCA9IG1hcFtuYW1lXTsKKyAgICAgIGlmIChmb3VuZCA9PT0gZmFsc2UpIHsK
KyAgICAgICAgaWYgKHN0b3ApIHN0b3AoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9
CisgICAgICBpZiAoZm91bmQgIT0gbnVsbCAmJiBoYW5kbGUoZm91bmQpKSByZXR1cm4gdHJ1ZTsK
KyAgICAgIGlmIChtYXAubm9mYWxsdGhyb3VnaCkgeworICAgICAgICBpZiAoc3RvcCkgc3RvcCgp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIHZhciBmYWxsdGhyb3VnaCA9
IG1hcC5mYWxsdGhyb3VnaDsKKyAgICAgIGlmIChmYWxsdGhyb3VnaCA9PSBudWxsKSByZXR1cm4g
ZmFsc2U7CisgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGZhbGx0aHJv
dWdoKSAhPSAiW29iamVjdCBBcnJheV0iKQorICAgICAgICByZXR1cm4gbG9va3VwKGZhbGx0aHJv
dWdoKTsKKyAgICAgIGZvciAodmFyIGkgPSAwLCBlID0gZmFsbHRocm91Z2gubGVuZ3RoOyBpIDwg
ZTsgKytpKSB7CisgICAgICAgIGlmIChsb29rdXAoZmFsbHRocm91Z2hbaV0pKSByZXR1cm4gdHJ1
ZTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKGV4dHJhTWFw
ICYmIGxvb2t1cChleHRyYU1hcCkpIHJldHVybiB0cnVlOworICAgIHJldHVybiBsb29rdXAobWFw
KTsKKyAgfQorICBmdW5jdGlvbiBpc01vZGlmaWVyS2V5KGV2ZW50KSB7CisgICAgdmFyIG5hbWUg
PSBrZXlOYW1lc1tlX3Byb3AoZXZlbnQsICJrZXlDb2RlIildOworICAgIHJldHVybiBuYW1lID09
ICJDdHJsIiB8fCBuYW1lID09ICJBbHQiIHx8IG5hbWUgPT0gIlNoaWZ0IiB8fCBuYW1lID09ICJN
b2QiOworICB9CisKKyAgQ29kZU1pcnJvci5mcm9tVGV4dEFyZWEgPSBmdW5jdGlvbih0ZXh0YXJl
YSwgb3B0aW9ucykgeworICAgIGlmICghb3B0aW9ucykgb3B0aW9ucyA9IHt9OworICAgIG9wdGlv
bnMudmFsdWUgPSB0ZXh0YXJlYS52YWx1ZTsKKyAgICBpZiAoIW9wdGlvbnMudGFiaW5kZXggJiYg
dGV4dGFyZWEudGFiaW5kZXgpCisgICAgICBvcHRpb25zLnRhYmluZGV4ID0gdGV4dGFyZWEudGFi
aW5kZXg7CisgICAgaWYgKG9wdGlvbnMuYXV0b2ZvY3VzID09IG51bGwgJiYgdGV4dGFyZWEuZ2V0
QXR0cmlidXRlKCJhdXRvZm9jdXMiKSAhPSBudWxsKQorICAgICAgb3B0aW9ucy5hdXRvZm9jdXMg
PSB0cnVlOworCisgICAgZnVuY3Rpb24gc2F2ZSgpIHt0ZXh0YXJlYS52YWx1ZSA9IGluc3RhbmNl
LmdldFZhbHVlKCk7fQorICAgIGlmICh0ZXh0YXJlYS5mb3JtKSB7CisgICAgICAvLyBEZXBsb3Jh
YmxlIGhhY2sgdG8gbWFrZSB0aGUgc3VibWl0IG1ldGhvZCBkbyB0aGUgcmlnaHQgdGhpbmcuCisg
ICAgICB2YXIgcm1TdWJtaXQgPSBjb25uZWN0KHRleHRhcmVhLmZvcm0sICJzdWJtaXQiLCBzYXZl
LCB0cnVlKTsKKyAgICAgIGlmICh0eXBlb2YgdGV4dGFyZWEuZm9ybS5zdWJtaXQgPT0gImZ1bmN0
aW9uIikgeworICAgICAgICB2YXIgcmVhbFN1Ym1pdCA9IHRleHRhcmVhLmZvcm0uc3VibWl0Owor
ICAgICAgICB0ZXh0YXJlYS5mb3JtLnN1Ym1pdCA9IGZ1bmN0aW9uIHdyYXBwZWRTdWJtaXQoKSB7
CisgICAgICAgICAgc2F2ZSgpOworICAgICAgICAgIHRleHRhcmVhLmZvcm0uc3VibWl0ID0gcmVh
bFN1Ym1pdDsKKyAgICAgICAgICB0ZXh0YXJlYS5mb3JtLnN1Ym1pdCgpOworICAgICAgICAgIHRl
eHRhcmVhLmZvcm0uc3VibWl0ID0gd3JhcHBlZFN1Ym1pdDsKKyAgICAgICAgfTsKKyAgICAgIH0K
KyAgICB9CisKKyAgICB0ZXh0YXJlYS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworICAgIHZhciBp
bnN0YW5jZSA9IENvZGVNaXJyb3IoZnVuY3Rpb24obm9kZSkgeworICAgICAgdGV4dGFyZWEucGFy
ZW50Tm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgdGV4dGFyZWEubmV4dFNpYmxpbmcpOworICAgIH0s
IG9wdGlvbnMpOworICAgIGluc3RhbmNlLnNhdmUgPSBzYXZlOworICAgIGluc3RhbmNlLmdldFRl
eHRBcmVhID0gZnVuY3Rpb24oKSB7IHJldHVybiB0ZXh0YXJlYTsgfTsKKyAgICBpbnN0YW5jZS50
b1RleHRBcmVhID0gZnVuY3Rpb24oKSB7CisgICAgICBzYXZlKCk7CisgICAgICB0ZXh0YXJlYS5w
YXJlbnROb2RlLnJlbW92ZUNoaWxkKGluc3RhbmNlLmdldFdyYXBwZXJFbGVtZW50KCkpOworICAg
ICAgdGV4dGFyZWEuc3R5bGUuZGlzcGxheSA9ICIiOworICAgICAgaWYgKHRleHRhcmVhLmZvcm0p
IHsKKyAgICAgICAgcm1TdWJtaXQoKTsKKyAgICAgICAgaWYgKHR5cGVvZiB0ZXh0YXJlYS5mb3Jt
LnN1Ym1pdCA9PSAiZnVuY3Rpb24iKQorICAgICAgICAgIHRleHRhcmVhLmZvcm0uc3VibWl0ID0g
cmVhbFN1Ym1pdDsKKyAgICAgIH0KKyAgICB9OworICAgIHJldHVybiBpbnN0YW5jZTsKKyAgfTsK
KworICB2YXIgZ2Vja28gPSAvZ2Vja29cL1xkezd9L2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50
KTsKKyAgdmFyIGllID0gL01TSUUgXGQvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CisgIHZh
ciBpZV9sdDggPSAvTVNJRSBbMS03XVxiLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOworICB2
YXIgaWVfbHQ5ID0gL01TSUUgWzEtOF1cYi8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTsKKyAg
dmFyIHF1aXJrc01vZGUgPSBpZSAmJiBkb2N1bWVudC5kb2N1bWVudE1vZGUgPT0gNTsKKyAgdmFy
IHdlYmtpdCA9IC9XZWJLaXRcLy8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTsKKyAgdmFyIGNo
cm9tZSA9IC9DaHJvbWVcLy8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTsKKyAgdmFyIG9wZXJh
ID0gL09wZXJhXC8vLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CisgIHZhciBzYWZhcmkgPSAv
QXBwbGUgQ29tcHV0ZXIvLnRlc3QobmF2aWdhdG9yLnZlbmRvcik7CisgIHZhciBraHRtbCA9IC9L
SFRNTFwvLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOworICB2YXIgbWFjX2dlTGlvbiA9IC9N
YWMgT1MgWCAxMFxEKFs3LTldfFxkXGQpXEQvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CisK
KyAgLy8gVXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBzdGF0ZS4gRXhwb3J0ZWQg
YmVjYXVzZSBtb2RlcworICAvLyBzb21ldGltZXMgbmVlZCB0byBkbyB0aGlzLgorICBmdW5jdGlv
biBjb3B5U3RhdGUobW9kZSwgc3RhdGUpIHsKKyAgICBpZiAoc3RhdGUgPT09IHRydWUpIHJldHVy
biBzdGF0ZTsKKyAgICBpZiAobW9kZS5jb3B5U3RhdGUpIHJldHVybiBtb2RlLmNvcHlTdGF0ZShz
dGF0ZSk7CisgICAgdmFyIG5zdGF0ZSA9IHt9OworICAgIGZvciAodmFyIG4gaW4gc3RhdGUpIHsK
KyAgICAgIHZhciB2YWwgPSBzdGF0ZVtuXTsKKyAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBBcnJh
eSkgdmFsID0gdmFsLmNvbmNhdChbXSk7CisgICAgICBuc3RhdGVbbl0gPSB2YWw7CisgICAgfQor
ICAgIHJldHVybiBuc3RhdGU7CisgIH0KKyAgQ29kZU1pcnJvci5jb3B5U3RhdGUgPSBjb3B5U3Rh
dGU7CisgIGZ1bmN0aW9uIHN0YXJ0U3RhdGUobW9kZSwgYTEsIGEyKSB7CisgICAgcmV0dXJuIG1v
ZGUuc3RhcnRTdGF0ZSA/IG1vZGUuc3RhcnRTdGF0ZShhMSwgYTIpIDogdHJ1ZTsKKyAgfQorICBD
b2RlTWlycm9yLnN0YXJ0U3RhdGUgPSBzdGFydFN0YXRlOworCisgIC8vIFRoZSBjaGFyYWN0ZXIg
c3RyZWFtIHVzZWQgYnkgYSBtb2RlJ3MgcGFyc2VyLgorICBmdW5jdGlvbiBTdHJpbmdTdHJlYW0o
c3RyaW5nLCB0YWJTaXplKSB7CisgICAgdGhpcy5wb3MgPSB0aGlzLnN0YXJ0ID0gMDsKKyAgICB0
aGlzLnN0cmluZyA9IHN0cmluZzsKKyAgICB0aGlzLnRhYlNpemUgPSB0YWJTaXplIHx8IDg7Cisg
IH0KKyAgU3RyaW5nU3RyZWFtLnByb3RvdHlwZSA9IHsKKyAgICBlb2w6IGZ1bmN0aW9uKCkge3Jl
dHVybiB0aGlzLnBvcyA+PSB0aGlzLnN0cmluZy5sZW5ndGg7fSwKKyAgICBzb2w6IGZ1bmN0aW9u
KCkge3JldHVybiB0aGlzLnBvcyA9PSAwO30sCisgICAgcGVlazogZnVuY3Rpb24oKSB7cmV0dXJu
IHRoaXMuc3RyaW5nLmNoYXJBdCh0aGlzLnBvcyk7fSwKKyAgICBuZXh0OiBmdW5jdGlvbigpIHsK
KyAgICAgIGlmICh0aGlzLnBvcyA8IHRoaXMuc3RyaW5nLmxlbmd0aCkKKyAgICAgICAgcmV0dXJu
IHRoaXMuc3RyaW5nLmNoYXJBdCh0aGlzLnBvcysrKTsKKyAgICB9LAorICAgIGVhdDogZnVuY3Rp
b24obWF0Y2gpIHsKKyAgICAgIHZhciBjaCA9IHRoaXMuc3RyaW5nLmNoYXJBdCh0aGlzLnBvcyk7
CisgICAgICBpZiAodHlwZW9mIG1hdGNoID09ICJzdHJpbmciKSB2YXIgb2sgPSBjaCA9PSBtYXRj
aDsKKyAgICAgIGVsc2UgdmFyIG9rID0gY2ggJiYgKG1hdGNoLnRlc3QgPyBtYXRjaC50ZXN0KGNo
KSA6IG1hdGNoKGNoKSk7CisgICAgICBpZiAob2spIHsrK3RoaXMucG9zOyByZXR1cm4gY2g7fQor
ICAgIH0sCisgICAgZWF0V2hpbGU6IGZ1bmN0aW9uKG1hdGNoKSB7CisgICAgICB2YXIgc3RhcnQg
PSB0aGlzLnBvczsKKyAgICAgIHdoaWxlICh0aGlzLmVhdChtYXRjaCkpe30KKyAgICAgIHJldHVy
biB0aGlzLnBvcyA+IHN0YXJ0OworICAgIH0sCisgICAgZWF0U3BhY2U6IGZ1bmN0aW9uKCkgewor
ICAgICAgdmFyIHN0YXJ0ID0gdGhpcy5wb3M7CisgICAgICB3aGlsZSAoL1tcc1x1MDBhMF0vLnRl
c3QodGhpcy5zdHJpbmcuY2hhckF0KHRoaXMucG9zKSkpICsrdGhpcy5wb3M7CisgICAgICByZXR1
cm4gdGhpcy5wb3MgPiBzdGFydDsKKyAgICB9LAorICAgIHNraXBUb0VuZDogZnVuY3Rpb24oKSB7
dGhpcy5wb3MgPSB0aGlzLnN0cmluZy5sZW5ndGg7fSwKKyAgICBza2lwVG86IGZ1bmN0aW9uKGNo
KSB7CisgICAgICB2YXIgZm91bmQgPSB0aGlzLnN0cmluZy5pbmRleE9mKGNoLCB0aGlzLnBvcyk7
CisgICAgICBpZiAoZm91bmQgPiAtMSkge3RoaXMucG9zID0gZm91bmQ7IHJldHVybiB0cnVlO30K
KyAgICB9LAorICAgIGJhY2tVcDogZnVuY3Rpb24obikge3RoaXMucG9zIC09IG47fSwKKyAgICBj
b2x1bW46IGZ1bmN0aW9uKCkge3JldHVybiBjb3VudENvbHVtbih0aGlzLnN0cmluZywgdGhpcy5z
dGFydCwgdGhpcy50YWJTaXplKTt9LAorICAgIGluZGVudGF0aW9uOiBmdW5jdGlvbigpIHtyZXR1
cm4gY291bnRDb2x1bW4odGhpcy5zdHJpbmcsIG51bGwsIHRoaXMudGFiU2l6ZSk7fSwKKyAgICBt
YXRjaDogZnVuY3Rpb24ocGF0dGVybiwgY29uc3VtZSwgY2FzZUluc2Vuc2l0aXZlKSB7CisgICAg
ICBpZiAodHlwZW9mIHBhdHRlcm4gPT0gInN0cmluZyIpIHsKKyAgICAgICAgdmFyIGNhc2VkID0g
ZnVuY3Rpb24oc3RyKSB7cmV0dXJuIGNhc2VJbnNlbnNpdGl2ZSA/IHN0ci50b0xvd2VyQ2FzZSgp
IDogc3RyO307CisgICAgICAgIGlmIChjYXNlZCh0aGlzLnN0cmluZykuaW5kZXhPZihjYXNlZChw
YXR0ZXJuKSwgdGhpcy5wb3MpID09IHRoaXMucG9zKSB7CisgICAgICAgICAgaWYgKGNvbnN1bWUg
IT09IGZhbHNlKSB0aGlzLnBvcyArPSBwYXR0ZXJuLmxlbmd0aDsKKyAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIG1hdGNoID0gdGhp
cy5zdHJpbmcuc2xpY2UodGhpcy5wb3MpLm1hdGNoKHBhdHRlcm4pOworICAgICAgICBpZiAobWF0
Y2ggJiYgY29uc3VtZSAhPT0gZmFsc2UpIHRoaXMucG9zICs9IG1hdGNoWzBdLmxlbmd0aDsKKyAg
ICAgICAgcmV0dXJuIG1hdGNoOworICAgICAgfQorICAgIH0sCisgICAgY3VycmVudDogZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5zdHJpbmcuc2xpY2UodGhpcy5zdGFydCwgdGhpcy5wb3MpO30KKyAg
fTsKKyAgQ29kZU1pcnJvci5TdHJpbmdTdHJlYW0gPSBTdHJpbmdTdHJlYW07CisKKyAgZnVuY3Rp
b24gTWFya2VkVGV4dChmcm9tLCB0bywgY2xhc3NOYW1lLCBtYXJrZXIpIHsKKyAgICB0aGlzLmZy
b20gPSBmcm9tOyB0aGlzLnRvID0gdG87IHRoaXMuc3R5bGUgPSBjbGFzc05hbWU7IHRoaXMubWFy
a2VyID0gbWFya2VyOworICB9CisgIE1hcmtlZFRleHQucHJvdG90eXBlID0geworICAgIGF0dGFj
aDogZnVuY3Rpb24obGluZSkgeyB0aGlzLm1hcmtlci5zZXQucHVzaChsaW5lKTsgfSwKKyAgICBk
ZXRhY2g6IGZ1bmN0aW9uKGxpbmUpIHsKKyAgICAgIHZhciBpeCA9IGluZGV4T2YodGhpcy5tYXJr
ZXIuc2V0LCBsaW5lKTsKKyAgICAgIGlmIChpeCA+IC0xKSB0aGlzLm1hcmtlci5zZXQuc3BsaWNl
KGl4LCAxKTsKKyAgICB9LAorICAgIHNwbGl0OiBmdW5jdGlvbihwb3MsIGxlbkJlZm9yZSkgewor
ICAgICAgaWYgKHRoaXMudG8gPD0gcG9zICYmIHRoaXMudG8gIT0gbnVsbCkgcmV0dXJuIG51bGw7
CisgICAgICB2YXIgZnJvbSA9IHRoaXMuZnJvbSA8IHBvcyB8fCB0aGlzLmZyb20gPT0gbnVsbCA/
IG51bGwgOiB0aGlzLmZyb20gLSBwb3MgKyBsZW5CZWZvcmU7CisgICAgICB2YXIgdG8gPSB0aGlz
LnRvID09IG51bGwgPyBudWxsIDogdGhpcy50byAtIHBvcyArIGxlbkJlZm9yZTsKKyAgICAgIHJl
dHVybiBuZXcgTWFya2VkVGV4dChmcm9tLCB0bywgdGhpcy5zdHlsZSwgdGhpcy5tYXJrZXIpOwor
ICAgIH0sCisgICAgZHVwOiBmdW5jdGlvbigpIHsgcmV0dXJuIG5ldyBNYXJrZWRUZXh0KG51bGws
IG51bGwsIHRoaXMuc3R5bGUsIHRoaXMubWFya2VyKTsgfSwKKyAgICBjbGlwVG86IGZ1bmN0aW9u
KGZyb21PcGVuLCBmcm9tLCB0b09wZW4sIHRvLCBkaWZmKSB7CisgICAgICBpZiAoZnJvbU9wZW4g
JiYgdG8gPiB0aGlzLmZyb20gJiYgKHRvIDwgdGhpcy50byB8fCB0aGlzLnRvID09IG51bGwpKQor
ICAgICAgICB0aGlzLmZyb20gPSBudWxsOworICAgICAgZWxzZSBpZiAodGhpcy5mcm9tICE9IG51
bGwgJiYgdGhpcy5mcm9tID49IGZyb20pCisgICAgICAgIHRoaXMuZnJvbSA9IE1hdGgubWF4KHRv
LCB0aGlzLmZyb20pICsgZGlmZjsKKyAgICAgIGlmICh0b09wZW4gJiYgKGZyb20gPCB0aGlzLnRv
IHx8IHRoaXMudG8gPT0gbnVsbCkgJiYgKGZyb20gPiB0aGlzLmZyb20gfHwgdGhpcy5mcm9tID09
IG51bGwpKQorICAgICAgICB0aGlzLnRvID0gbnVsbDsKKyAgICAgIGVsc2UgaWYgKHRoaXMudG8g
IT0gbnVsbCAmJiB0aGlzLnRvID4gZnJvbSkKKyAgICAgICAgdGhpcy50byA9IHRvIDwgdGhpcy50
byA/IHRoaXMudG8gKyBkaWZmIDogZnJvbTsKKyAgICB9LAorICAgIGlzRGVhZDogZnVuY3Rpb24o
KSB7IHJldHVybiB0aGlzLmZyb20gIT0gbnVsbCAmJiB0aGlzLnRvICE9IG51bGwgJiYgdGhpcy5m
cm9tID49IHRoaXMudG87IH0sCisgICAgc2FtZVNldDogZnVuY3Rpb24oeCkgeyByZXR1cm4gdGhp
cy5tYXJrZXIgPT0geC5tYXJrZXI7IH0KKyAgfTsKKworICBmdW5jdGlvbiBCb29rbWFyayhwb3Mp
IHsKKyAgICB0aGlzLmZyb20gPSBwb3M7IHRoaXMudG8gPSBwb3M7IHRoaXMubGluZSA9IG51bGw7
CisgIH0KKyAgQm9va21hcmsucHJvdG90eXBlID0geworICAgIGF0dGFjaDogZnVuY3Rpb24obGlu
ZSkgeyB0aGlzLmxpbmUgPSBsaW5lOyB9LAorICAgIGRldGFjaDogZnVuY3Rpb24obGluZSkgeyBp
ZiAodGhpcy5saW5lID09IGxpbmUpIHRoaXMubGluZSA9IG51bGw7IH0sCisgICAgc3BsaXQ6IGZ1
bmN0aW9uKHBvcywgbGVuQmVmb3JlKSB7CisgICAgICBpZiAocG9zIDwgdGhpcy5mcm9tKSB7Cisg
ICAgICAgIHRoaXMuZnJvbSA9IHRoaXMudG8gPSAodGhpcy5mcm9tIC0gcG9zKSArIGxlbkJlZm9y
ZTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICB9CisgICAgfSwKKyAgICBpc0RlYWQ6IGZ1
bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5mcm9tID4gdGhpcy50bzsgfSwKKyAgICBjbGlwVG86IGZ1
bmN0aW9uKGZyb21PcGVuLCBmcm9tLCB0b09wZW4sIHRvLCBkaWZmKSB7CisgICAgICBpZiAoKGZy
b21PcGVuIHx8IGZyb20gPCB0aGlzLmZyb20pICYmICh0b09wZW4gfHwgdG8gPiB0aGlzLnRvKSkg
eworICAgICAgICB0aGlzLmZyb20gPSAwOyB0aGlzLnRvID0gLTE7CisgICAgICB9IGVsc2UgaWYg
KHRoaXMuZnJvbSA+IGZyb20pIHsKKyAgICAgICAgdGhpcy5mcm9tID0gdGhpcy50byA9IE1hdGgu
bWF4KHRvLCB0aGlzLmZyb20pICsgZGlmZjsKKyAgICAgIH0KKyAgICB9LAorICAgIHNhbWVTZXQ6
IGZ1bmN0aW9uKHgpIHsgcmV0dXJuIGZhbHNlOyB9LAorICAgIGZpbmQ6IGZ1bmN0aW9uKCkgewor
ICAgICAgaWYgKCF0aGlzLmxpbmUgfHwgIXRoaXMubGluZS5wYXJlbnQpIHJldHVybiBudWxsOwor
ICAgICAgcmV0dXJuIHtsaW5lOiBsaW5lTm8odGhpcy5saW5lKSwgY2g6IHRoaXMuZnJvbX07Cisg
ICAgfSwKKyAgICBjbGVhcjogZnVuY3Rpb24oKSB7CisgICAgICBpZiAodGhpcy5saW5lKSB7Cisg
ICAgICAgIHZhciBmb3VuZCA9IGluZGV4T2YodGhpcy5saW5lLm1hcmtlZCwgdGhpcyk7CisgICAg
ICAgIGlmIChmb3VuZCAhPSAtMSkgdGhpcy5saW5lLm1hcmtlZC5zcGxpY2UoZm91bmQsIDEpOwor
ICAgICAgICB0aGlzLmxpbmUgPSBudWxsOworICAgICAgfQorICAgIH0KKyAgfTsKKworICAvLyBX
aGVuIG1lYXN1cmluZyB0aGUgcG9zaXRpb24gb2YgdGhlIGVuZCBvZiBhIGxpbmUsIGRpZmZlcmVu
dAorICAvLyBicm93c2VycyByZXF1aXJlIGRpZmZlcmVudCBhcHByb2FjaGVzLiBJZiBhbiBlbXB0
eSBzcGFuIGlzIGFkZGVkLAorICAvLyBtYW55IGJyb3dzZXJzIHJlcG9ydCBib2d1cyBvZmZzZXRz
LiBPZiB0aG9zZSwgc29tZSAoV2Via2l0LAorICAvLyByZWNlbnQgSUUpIHdpbGwgYWNjZXB0IGEg
c3BhY2Ugd2l0aG91dCBtb3ZpbmcgdGhlIHdob2xlIHNwYW4gdG8KKyAgLy8gdGhlIG5leHQgbGlu
ZSB3aGVuIHdyYXBwaW5nIGl0LCBvdGhlcnMgd29yayB3aXRoIGEgemVyby13aWR0aAorICAvLyBz
cGFjZS4KKyAgdmFyIGVvbFNwYW5Db250ZW50ID0gIiAiOworICBpZiAoZ2Vja28gfHwgKGllICYm
ICFpZV9sdDgpKSBlb2xTcGFuQ29udGVudCA9ICJcdTIwMGIiOworICBlbHNlIGlmIChvcGVyYSkg
ZW9sU3BhbkNvbnRlbnQgPSAiIjsKKworICAvLyBMaW5lIG9iamVjdHMuIFRoZXNlIGhvbGQgc3Rh
dGUgcmVsYXRlZCB0byBhIGxpbmUsIGluY2x1ZGluZworICAvLyBoaWdobGlnaHRpbmcgaW5mbyAo
dGhlIHN0eWxlcyBhcnJheSkuCisgIGZ1bmN0aW9uIExpbmUodGV4dCwgc3R5bGVzKSB7CisgICAg
dGhpcy5zdHlsZXMgPSBzdHlsZXMgfHwgW3RleHQsIG51bGxdOworICAgIHRoaXMudGV4dCA9IHRl
eHQ7CisgICAgdGhpcy5oZWlnaHQgPSAxOworICB9CisgIExpbmUuaW5oZXJpdE1hcmtzID0gZnVu
Y3Rpb24odGV4dCwgb3JpZykgeworICAgIHZhciBsbiA9IG5ldyBMaW5lKHRleHQpLCBtayA9IG9y
aWcgJiYgb3JpZy5tYXJrZWQ7CisgICAgaWYgKG1rKSB7CisgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IG1rLmxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmIChta1tpXS50byA9PSBudWxsICYmIG1r
W2ldLnN0eWxlKSB7CisgICAgICAgICAgdmFyIG5ld21rID0gbG4ubWFya2VkIHx8IChsbi5tYXJr
ZWQgPSBbXSksIG1hcmsgPSBta1tpXTsKKyAgICAgICAgICB2YXIgbm1hcmsgPSBtYXJrLmR1cCgp
OyBuZXdtay5wdXNoKG5tYXJrKTsgbm1hcmsuYXR0YWNoKGxuKTsKKyAgICAgICAgfQorICAgICAg
fQorICAgIH0KKyAgICByZXR1cm4gbG47CisgIH07CisgIExpbmUucHJvdG90eXBlID0geworICAg
IC8vIFJlcGxhY2UgYSBwaWVjZSBvZiBhIGxpbmUsIGtlZXBpbmcgdGhlIHN0eWxlcyBhcm91bmQg
aXQgaW50YWN0LgorICAgIHJlcGxhY2U6IGZ1bmN0aW9uKGZyb20sIHRvXywgdGV4dCkgeworICAg
ICAgdmFyIHN0ID0gW10sIG1rID0gdGhpcy5tYXJrZWQsIHRvID0gdG9fID09IG51bGwgPyB0aGlz
LnRleHQubGVuZ3RoIDogdG9fOworICAgICAgY29weVN0eWxlcygwLCBmcm9tLCB0aGlzLnN0eWxl
cywgc3QpOworICAgICAgaWYgKHRleHQpIHN0LnB1c2godGV4dCwgbnVsbCk7CisgICAgICBjb3B5
U3R5bGVzKHRvLCB0aGlzLnRleHQubGVuZ3RoLCB0aGlzLnN0eWxlcywgc3QpOworICAgICAgdGhp
cy5zdHlsZXMgPSBzdDsKKyAgICAgIHRoaXMudGV4dCA9IHRoaXMudGV4dC5zbGljZSgwLCBmcm9t
KSArIHRleHQgKyB0aGlzLnRleHQuc2xpY2UodG8pOworICAgICAgdGhpcy5zdGF0ZUFmdGVyID0g
bnVsbDsKKyAgICAgIGlmIChtaykgeworICAgICAgICB2YXIgZGlmZiA9IHRleHQubGVuZ3RoIC0g
KHRvIC0gZnJvbSk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWsubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgICB2YXIgbWFyayA9IG1rW2ldOworICAgICAgICAgIG1hcmsuY2xpcFRvKGZy
b20gPT0gbnVsbCwgZnJvbSB8fCAwLCB0b18gPT0gbnVsbCwgdG8sIGRpZmYpOworICAgICAgICAg
IGlmIChtYXJrLmlzRGVhZCgpKSB7bWFyay5kZXRhY2godGhpcyk7IG1rLnNwbGljZShpLS0sIDEp
O30KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAgLy8gU3BsaXQgYSBwYXJ0IG9mZiBh
IGxpbmUsIGtlZXBpbmcgc3R5bGVzIGFuZCBtYXJrZXJzIGludGFjdC4KKyAgICBzcGxpdDogZnVu
Y3Rpb24ocG9zLCB0ZXh0QmVmb3JlKSB7CisgICAgICB2YXIgc3QgPSBbdGV4dEJlZm9yZSwgbnVs
bF0sIG1rID0gdGhpcy5tYXJrZWQ7CisgICAgICBjb3B5U3R5bGVzKHBvcywgdGhpcy50ZXh0Lmxl
bmd0aCwgdGhpcy5zdHlsZXMsIHN0KTsKKyAgICAgIHZhciB0YWtlbiA9IG5ldyBMaW5lKHRleHRC
ZWZvcmUgKyB0aGlzLnRleHQuc2xpY2UocG9zKSwgc3QpOworICAgICAgaWYgKG1rKSB7CisgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWsubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICB2YXIg
bWFyayA9IG1rW2ldOworICAgICAgICAgIHZhciBuZXdtYXJrID0gbWFyay5zcGxpdChwb3MsIHRl
eHRCZWZvcmUubGVuZ3RoKTsKKyAgICAgICAgICBpZiAobmV3bWFyaykgeworICAgICAgICAgICAg
aWYgKCF0YWtlbi5tYXJrZWQpIHRha2VuLm1hcmtlZCA9IFtdOworICAgICAgICAgICAgdGFrZW4u
bWFya2VkLnB1c2gobmV3bWFyayk7IG5ld21hcmsuYXR0YWNoKHRha2VuKTsKKyAgICAgICAgICAg
IGlmIChuZXdtYXJrID09IG1hcmspIG1rLnNwbGljZShpLS0sIDEpOworICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgfQorICAgICAgcmV0dXJuIHRha2VuOworICAgIH0sCisgICAgYXBwZW5k
OiBmdW5jdGlvbihsaW5lKSB7CisgICAgICB2YXIgbXlsZW4gPSB0aGlzLnRleHQubGVuZ3RoLCBt
ayA9IGxpbmUubWFya2VkLCBteW1rID0gdGhpcy5tYXJrZWQ7CisgICAgICB0aGlzLnRleHQgKz0g
bGluZS50ZXh0OworICAgICAgY29weVN0eWxlcygwLCBsaW5lLnRleHQubGVuZ3RoLCBsaW5lLnN0
eWxlcywgdGhpcy5zdHlsZXMpOworICAgICAgaWYgKG15bWspIHsKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBteW1rLmxlbmd0aDsgKytpKQorICAgICAgICAgIGlmIChteW1rW2ldLnRvID09
IG51bGwpIG15bWtbaV0udG8gPSBteWxlbjsKKyAgICAgIH0KKyAgICAgIGlmIChtayAmJiBtay5s
ZW5ndGgpIHsKKyAgICAgICAgaWYgKCFteW1rKSB0aGlzLm1hcmtlZCA9IG15bWsgPSBbXTsKKyAg
ICAgICAgb3V0ZXI6IGZvciAodmFyIGkgPSAwOyBpIDwgbWsubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICB2YXIgbWFyayA9IG1rW2ldOworICAgICAgICAgIGlmICghbWFyay5mcm9tKSB7CisgICAg
ICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG15bWsubGVuZ3RoOyArK2opIHsKKyAgICAgICAg
ICAgICAgdmFyIG15bWFyayA9IG15bWtbal07CisgICAgICAgICAgICAgIGlmIChteW1hcmsudG8g
PT0gbXlsZW4gJiYgbXltYXJrLnNhbWVTZXQobWFyaykpIHsKKyAgICAgICAgICAgICAgICBteW1h
cmsudG8gPSBtYXJrLnRvID09IG51bGwgPyBudWxsIDogbWFyay50byArIG15bGVuOworICAgICAg
ICAgICAgICAgIGlmIChteW1hcmsuaXNEZWFkKCkpIHsKKyAgICAgICAgICAgICAgICAgIG15bWFy
ay5kZXRhY2godGhpcyk7CisgICAgICAgICAgICAgICAgICBtay5zcGxpY2UoaS0tLCAxKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29udGludWUgb3V0ZXI7CisgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgbXltay5wdXNo
KG1hcmspOworICAgICAgICAgIG1hcmsuYXR0YWNoKHRoaXMpOworICAgICAgICAgIG1hcmsuZnJv
bSArPSBteWxlbjsKKyAgICAgICAgICBpZiAobWFyay50byAhPSBudWxsKSBtYXJrLnRvICs9IG15
bGVuOworICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICBmaXhNYXJrRW5kczogZnVuY3Rp
b24ob3RoZXIpIHsKKyAgICAgIHZhciBtayA9IHRoaXMubWFya2VkLCBvbWsgPSBvdGhlci5tYXJr
ZWQ7CisgICAgICBpZiAoIW1rKSByZXR1cm47CisgICAgICBvdXRlcjogZm9yICh2YXIgaSA9IDA7
IGkgPCBtay5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgbWFyayA9IG1rW2ldLCBjbG9zZSA9
IG1hcmsudG8gPT0gbnVsbDsKKyAgICAgICAgaWYgKGNsb3NlICYmIG9taykgeworICAgICAgICAg
IGZvciAodmFyIGogPSAwOyBqIDwgb21rLmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICB2YXIg
b20gPSBvbWtbal07CisgICAgICAgICAgICBpZiAoIW9tLnNhbWVTZXQobWFyaykgfHwgb20uZnJv
bSAhPSBudWxsKSBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChtYXJrLmZyb20gPT0gdGhpcy50
ZXh0Lmxlbmd0aCAmJiBvbS50byA9PSAwKSB7CisgICAgICAgICAgICAgIG9tay5zcGxpY2Uoaiwg
MSk7CisgICAgICAgICAgICAgIG1rLnNwbGljZShpLS0sIDEpOworICAgICAgICAgICAgICBjb250
aW51ZSBvdXRlcjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIGNsb3NlID0g
ZmFsc2U7IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBpZiAoY2xvc2UpIG1hcmsudG8gPSB0aGlzLnRleHQubGVuZ3RoOworICAgICAgfQorICAg
IH0sCisgICAgZml4TWFya1N0YXJ0czogZnVuY3Rpb24oKSB7CisgICAgICB2YXIgbWsgPSB0aGlz
Lm1hcmtlZDsKKyAgICAgIGlmICghbWspIHJldHVybjsKKyAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbWsubGVuZ3RoOyArK2kpCisgICAgICAgIGlmIChta1tpXS5mcm9tID09IG51bGwpIG1rW2ld
LmZyb20gPSAwOworICAgIH0sCisgICAgYWRkTWFyazogZnVuY3Rpb24obWFyaykgeworICAgICAg
bWFyay5hdHRhY2godGhpcyk7CisgICAgICBpZiAodGhpcy5tYXJrZWQgPT0gbnVsbCkgdGhpcy5t
YXJrZWQgPSBbXTsKKyAgICAgIHRoaXMubWFya2VkLnB1c2gobWFyayk7CisgICAgICB0aGlzLm1h
cmtlZC5zb3J0KGZ1bmN0aW9uKGEsIGIpe3JldHVybiAoYS5mcm9tIHx8IDApIC0gKGIuZnJvbSB8
fCAwKTt9KTsKKyAgICB9LAorICAgIC8vIFJ1biB0aGUgZ2l2ZW4gbW9kZSdzIHBhcnNlciBvdmVy
IGEgbGluZSwgdXBkYXRlIHRoZSBzdHlsZXMKKyAgICAvLyBhcnJheSwgd2hpY2ggY29udGFpbnMg
YWx0ZXJuYXRpbmcgZnJhZ21lbnRzIG9mIHRleHQgYW5kIENTUworICAgIC8vIGNsYXNzZXMuCisg
ICAgaGlnaGxpZ2h0OiBmdW5jdGlvbihtb2RlLCBzdGF0ZSwgdGFiU2l6ZSkgeworICAgICAgdmFy
IHN0cmVhbSA9IG5ldyBTdHJpbmdTdHJlYW0odGhpcy50ZXh0LCB0YWJTaXplKSwgc3QgPSB0aGlz
LnN0eWxlcywgcG9zID0gMDsKKyAgICAgIHZhciBjaGFuZ2VkID0gZmFsc2UsIGN1cldvcmQgPSBz
dFswXSwgcHJldldvcmQ7CisgICAgICBpZiAodGhpcy50ZXh0ID09ICIiICYmIG1vZGUuYmxhbmtM
aW5lKSBtb2RlLmJsYW5rTGluZShzdGF0ZSk7CisgICAgICB3aGlsZSAoIXN0cmVhbS5lb2woKSkg
eworICAgICAgICB2YXIgc3R5bGUgPSBtb2RlLnRva2VuKHN0cmVhbSwgc3RhdGUpOworICAgICAg
ICB2YXIgc3Vic3RyID0gdGhpcy50ZXh0LnNsaWNlKHN0cmVhbS5zdGFydCwgc3RyZWFtLnBvcyk7
CisgICAgICAgIHN0cmVhbS5zdGFydCA9IHN0cmVhbS5wb3M7CisgICAgICAgIGlmIChwb3MgJiYg
c3RbcG9zLTFdID09IHN0eWxlKQorICAgICAgICAgIHN0W3Bvcy0yXSArPSBzdWJzdHI7CisgICAg
ICAgIGVsc2UgaWYgKHN1YnN0cikgeworICAgICAgICAgIGlmICghY2hhbmdlZCAmJiAoc3RbcG9z
KzFdICE9IHN0eWxlIHx8IChwb3MgJiYgc3RbcG9zLTJdICE9IHByZXZXb3JkKSkpIGNoYW5nZWQg
PSB0cnVlOworICAgICAgICAgIHN0W3BvcysrXSA9IHN1YnN0cjsgc3RbcG9zKytdID0gc3R5bGU7
CisgICAgICAgICAgcHJldldvcmQgPSBjdXJXb3JkOyBjdXJXb3JkID0gc3RbcG9zXTsKKyAgICAg
ICAgfQorICAgICAgICAvLyBHaXZlIHVwIHdoZW4gbGluZSBpcyByaWRpY3Vsb3VzbHkgbG9uZwor
ICAgICAgICBpZiAoc3RyZWFtLnBvcyA+IDUwMDApIHsKKyAgICAgICAgICBzdFtwb3MrK10gPSB0
aGlzLnRleHQuc2xpY2Uoc3RyZWFtLnBvcyk7IHN0W3BvcysrXSA9IG51bGw7CisgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGlmIChzdC5sZW5ndGggIT0gcG9zKSB7
c3QubGVuZ3RoID0gcG9zOyBjaGFuZ2VkID0gdHJ1ZTt9CisgICAgICBpZiAocG9zICYmIHN0W3Bv
cy0yXSAhPSBwcmV2V29yZCkgY2hhbmdlZCA9IHRydWU7CisgICAgICAvLyBTaG9ydCBsaW5lcyB3
aXRoIHNpbXBsZSBoaWdobGlnaHRzIHJldHVybiBudWxsLCBhbmQgYXJlCisgICAgICAvLyBjb3Vu
dGVkIGFzIGNoYW5nZWQgYnkgdGhlIGRyaXZlciBiZWNhdXNlIHRoZXkgYXJlIGxpa2VseSB0bwor
ICAgICAgLy8gaGlnaGxpZ2h0IHRoZSBzYW1lIHdheSBpbiB2YXJpb3VzIGNvbnRleHRzLgorICAg
ICAgcmV0dXJuIGNoYW5nZWQgfHwgKHN0Lmxlbmd0aCA8IDUgJiYgdGhpcy50ZXh0Lmxlbmd0aCA8
IDEwID8gbnVsbCA6IGZhbHNlKTsKKyAgICB9LAorICAgIC8vIEZldGNoIHRoZSBwYXJzZXIgdG9r
ZW4gZm9yIGEgZ2l2ZW4gY2hhcmFjdGVyLiBVc2VmdWwgZm9yIGhhY2tzCisgICAgLy8gdGhhdCB3
YW50IHRvIGluc3BlY3QgdGhlIG1vZGUgc3RhdGUgKHNheSwgZm9yIGNvbXBsZXRpb24pLgorICAg
IGdldFRva2VuQXQ6IGZ1bmN0aW9uKG1vZGUsIHN0YXRlLCBjaCkgeworICAgICAgdmFyIHR4dCA9
IHRoaXMudGV4dCwgc3RyZWFtID0gbmV3IFN0cmluZ1N0cmVhbSh0eHQpOworICAgICAgd2hpbGUg
KHN0cmVhbS5wb3MgPCBjaCAmJiAhc3RyZWFtLmVvbCgpKSB7CisgICAgICAgIHN0cmVhbS5zdGFy
dCA9IHN0cmVhbS5wb3M7CisgICAgICAgIHZhciBzdHlsZSA9IG1vZGUudG9rZW4oc3RyZWFtLCBz
dGF0ZSk7CisgICAgICB9CisgICAgICByZXR1cm4ge3N0YXJ0OiBzdHJlYW0uc3RhcnQsCisgICAg
ICAgICAgICAgIGVuZDogc3RyZWFtLnBvcywKKyAgICAgICAgICAgICAgc3RyaW5nOiBzdHJlYW0u
Y3VycmVudCgpLAorICAgICAgICAgICAgICBjbGFzc05hbWU6IHN0eWxlIHx8IG51bGwsCisgICAg
ICAgICAgICAgIHN0YXRlOiBzdGF0ZX07CisgICAgfSwKKyAgICBpbmRlbnRhdGlvbjogZnVuY3Rp
b24odGFiU2l6ZSkge3JldHVybiBjb3VudENvbHVtbih0aGlzLnRleHQsIG51bGwsIHRhYlNpemUp
O30sCisgICAgLy8gUHJvZHVjZXMgYW4gSFRNTCBmcmFnbWVudCBmb3IgdGhlIGxpbmUsIHRha2lu
ZyBzZWxlY3Rpb24sCisgICAgLy8gbWFya2luZywgYW5kIGhpZ2hsaWdodGluZyBpbnRvIGFjY291
bnQuCisgICAgZ2V0RWxlbWVudDogZnVuY3Rpb24obWFrZVRhYiwgd3JhcEF0LCB3cmFwV0JSKSB7
CisgICAgICB2YXIgZmlyc3QgPSB0cnVlLCBjb2wgPSAwLCBzcGVjaWFscyA9IC9bXHRcdTAwMDAt
XHUwMDE5XHUyMDBiXHUyMDI4XHUyMDI5XHVGRUZGXS9nOworICAgICAgdmFyIHByZSA9IGVsdCgi
cHJlIik7CisgICAgICBmdW5jdGlvbiBzcGFuXyhodG1sLCB0ZXh0LCBzdHlsZSkgeworICAgICAg
ICBpZiAoIXRleHQpIHJldHVybjsKKyAgICAgICAgLy8gV29yayBhcm91bmQgYSBidWcgd2hlcmUs
IGluIHNvbWUgY29tcGF0IG1vZGVzLCBJRSBpZ25vcmVzIGxlYWRpbmcgc3BhY2VzCisgICAgICAg
IGlmIChmaXJzdCAmJiBpZSAmJiB0ZXh0LmNoYXJBdCgwKSA9PSAiICIpIHRleHQgPSAiXHUwMGEw
IiArIHRleHQuc2xpY2UoMSk7CisgICAgICAgIGZpcnN0ID0gZmFsc2U7CisgICAgICAgIGlmICgh
c3BlY2lhbHMudGVzdCh0ZXh0KSkgeworICAgICAgICAgIGNvbCArPSB0ZXh0Lmxlbmd0aDsKKyAg
ICAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgIHZhciBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9j
dW1lbnRGcmFnbWVudCgpLCBwb3MgPSAwOworICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAg
ICAgICAgICBzcGVjaWFscy5sYXN0SW5kZXggPSBwb3M7CisgICAgICAgICAgICB2YXIgbSA9IHNw
ZWNpYWxzLmV4ZWModGV4dCk7CisgICAgICAgICAgICB2YXIgc2tpcHBlZCA9IG0gPyBtLmluZGV4
IC0gcG9zIDogdGV4dC5sZW5ndGggLSBwb3M7CisgICAgICAgICAgICBpZiAoc2tpcHBlZCkgewor
ICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KHRleHQuc2xpY2UocG9zLCBwb3MgKyBza2lwcGVkKSkpOworICAgICAgICAgICAgICBjb2wgKz0g
c2tpcHBlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghbSkgYnJlYWs7CisgICAg
ICAgICAgICBwb3MgKz0gc2tpcHBlZCArIDE7CisgICAgICAgICAgICBpZiAobVswXSA9PSAiXHQi
KSB7CisgICAgICAgICAgICAgIHZhciB0YWIgPSBtYWtlVGFiKGNvbCk7CisgICAgICAgICAgICAg
IGNvbnRlbnQuYXBwZW5kQ2hpbGQodGFiLmVsZW1lbnQuY2xvbmVOb2RlKHRydWUpKTsKKyAgICAg
ICAgICAgICAgY29sICs9IHRhYi53aWR0aDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgIHZhciB0b2tlbiA9IGVsdCgic3BhbiIsICJcdTIwMjIiLCAiY20taW52YWxpZGNoYXIi
KTsKKyAgICAgICAgICAgICAgdG9rZW4udGl0bGUgPSAiXFx1IiArIG1bMF0uY2hhckNvZGVBdCgw
KS50b1N0cmluZygxNik7CisgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQodG9rZW4p
OworICAgICAgICAgICAgICBjb2wgKz0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKHN0eWxlKSBodG1sLmFwcGVuZENoaWxkKGVsdCgic3BhbiIs
IFtjb250ZW50XSwgc3R5bGUpKTsKKyAgICAgICAgZWxzZSBodG1sLmFwcGVuZENoaWxkKGNvbnRl
bnQpOworICAgICAgfQorICAgICAgdmFyIHNwYW4gPSBzcGFuXzsKKyAgICAgIGlmICh3cmFwQXQg
IT0gbnVsbCkgeworICAgICAgICB2YXIgb3V0UG9zID0gMCwgYW5jaG9yID0gcHJlLmFuY2hvciA9
IGVsdCgic3BhbiIpOworICAgICAgICBzcGFuID0gZnVuY3Rpb24oaHRtbCwgdGV4dCwgc3R5bGUp
IHsKKyAgICAgICAgICB2YXIgbCA9IHRleHQubGVuZ3RoOworICAgICAgICAgIGlmICh3cmFwQXQg
Pj0gb3V0UG9zICYmIHdyYXBBdCA8IG91dFBvcyArIGwpIHsKKyAgICAgICAgICAgIGlmICh3cmFw
QXQgPiBvdXRQb3MpIHsKKyAgICAgICAgICAgICAgc3Bhbl8oaHRtbCwgdGV4dC5zbGljZSgwLCB3
cmFwQXQgLSBvdXRQb3MpLCBzdHlsZSk7CisgICAgICAgICAgICAgIC8vIFNlZSBjb21tZW50IGF0
IHRoZSBkZWZpbml0aW9uIG9mIHNwYW5BZmZlY3RzV3JhcHBpbmcKKyAgICAgICAgICAgICAgaWYg
KHdyYXBXQlIpIGh0bWwuYXBwZW5kQ2hpbGQoZWx0KCJ3YnIiKSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBodG1sLmFwcGVuZENoaWxkKGFuY2hvcik7CisgICAgICAgICAgICB2YXIgY3V0
ID0gd3JhcEF0IC0gb3V0UG9zOworICAgICAgICAgICAgc3Bhbl8oYW5jaG9yLCBvcGVyYSA/IHRl
eHQuc2xpY2UoY3V0LCBjdXQgKyAxKSA6IHRleHQuc2xpY2UoY3V0KSwgc3R5bGUpOworICAgICAg
ICAgICAgaWYgKG9wZXJhKSBzcGFuXyhodG1sLCB0ZXh0LnNsaWNlKGN1dCArIDEpLCBzdHlsZSk7
CisgICAgICAgICAgICB3cmFwQXQtLTsKKyAgICAgICAgICAgIG91dFBvcyArPSBsOworICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBvdXRQb3MgKz0gbDsKKyAgICAgICAgICAgIHNwYW5f
KGh0bWwsIHRleHQsIHN0eWxlKTsKKyAgICAgICAgICAgIGlmIChvdXRQb3MgPT0gd3JhcEF0ICYm
IG91dFBvcyA9PSBsZW4pIHsKKyAgICAgICAgICAgICAgc2V0VGV4dENvbnRlbnQoYW5jaG9yLCBl
b2xTcGFuQ29udGVudCk7CisgICAgICAgICAgICAgIGh0bWwuYXBwZW5kQ2hpbGQoYW5jaG9yKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIFN0b3Agb3V0cHV0dGluZyBIVE1MIHdoZW4g
Z29uZSBzdWZmaWNpZW50bHkgZmFyIGJleW9uZCBtZWFzdXJlCisgICAgICAgICAgICBlbHNlIGlm
IChvdXRQb3MgPiB3cmFwQXQgKyAxMCAmJiAvXHMvLnRlc3QodGV4dCkpIHNwYW4gPSBmdW5jdGlv
bigpe307CisgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgfQorCisgICAgICB2YXIgc3Qg
PSB0aGlzLnN0eWxlcywgYWxsVGV4dCA9IHRoaXMudGV4dCwgbWFya2VkID0gdGhpcy5tYXJrZWQ7
CisgICAgICB2YXIgbGVuID0gYWxsVGV4dC5sZW5ndGg7CisgICAgICBmdW5jdGlvbiBzdHlsZVRv
Q2xhc3Moc3R5bGUpIHsKKyAgICAgICAgaWYgKCFzdHlsZSkgcmV0dXJuIG51bGw7CisgICAgICAg
IHJldHVybiAiY20tIiArIHN0eWxlLnJlcGxhY2UoLyArL2csICIgY20tIik7CisgICAgICB9Cisg
ICAgICBpZiAoIWFsbFRleHQgJiYgd3JhcEF0ID09IG51bGwpIHsKKyAgICAgICAgc3BhbihwcmUs
ICIgIik7CisgICAgICB9IGVsc2UgaWYgKCFtYXJrZWQgfHwgIW1hcmtlZC5sZW5ndGgpIHsKKyAg
ICAgICAgZm9yICh2YXIgaSA9IDAsIGNoID0gMDsgY2ggPCBsZW47IGkrPTIpIHsKKyAgICAgICAg
ICB2YXIgc3RyID0gc3RbaV0sIHN0eWxlID0gc3RbaSsxXSwgbCA9IHN0ci5sZW5ndGg7CisgICAg
ICAgICAgaWYgKGNoICsgbCA+IGxlbikgc3RyID0gc3RyLnNsaWNlKDAsIGxlbiAtIGNoKTsKKyAg
ICAgICAgICBjaCArPSBsOworICAgICAgICAgIHNwYW4ocHJlLCBzdHIsIHN0eWxlVG9DbGFzcyhz
dHlsZSkpOworICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICB2YXIgcG9zID0gMCwg
aSA9IDAsIHRleHQgPSAiIiwgc3R5bGUsIHNnID0gMDsKKyAgICAgICAgdmFyIG5leHRDaGFuZ2Ug
PSBtYXJrZWRbMF0uZnJvbSB8fCAwLCBtYXJrcyA9IFtdLCBtYXJrcG9zID0gMDsKKyAgICAgICAg
dmFyIGFkdmFuY2VNYXJrcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgIHZhciBtOworICAgICAg
ICAgIHdoaWxlIChtYXJrcG9zIDwgbWFya2VkLmxlbmd0aCAmJgorICAgICAgICAgICAgICAgICAo
KG0gPSBtYXJrZWRbbWFya3Bvc10pLmZyb20gPT0gcG9zIHx8IG0uZnJvbSA9PSBudWxsKSkgewor
ICAgICAgICAgICAgaWYgKG0uc3R5bGUgIT0gbnVsbCkgbWFya3MucHVzaChtKTsKKyAgICAgICAg
ICAgICsrbWFya3BvczsKKyAgICAgICAgICB9CisgICAgICAgICAgbmV4dENoYW5nZSA9IG1hcmtw
b3MgPCBtYXJrZWQubGVuZ3RoID8gbWFya2VkW21hcmtwb3NdLmZyb20gOiBJbmZpbml0eTsKKyAg
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hcmtzLmxlbmd0aDsgKytpKSB7CisgICAgICAg
ICAgICB2YXIgdG8gPSBtYXJrc1tpXS50bzsKKyAgICAgICAgICAgIGlmICh0byA9PSBudWxsKSB0
byA9IEluZmluaXR5OworICAgICAgICAgICAgaWYgKHRvID09IHBvcykgbWFya3Muc3BsaWNlKGkt
LSwgMSk7CisgICAgICAgICAgICBlbHNlIG5leHRDaGFuZ2UgPSBNYXRoLm1pbih0bywgbmV4dENo
YW5nZSk7CisgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICB2YXIgbSA9IDA7CisgICAg
ICAgIHdoaWxlIChwb3MgPCBsZW4pIHsKKyAgICAgICAgICBpZiAobmV4dENoYW5nZSA9PSBwb3Mp
IGFkdmFuY2VNYXJrcygpOworICAgICAgICAgIHZhciB1cHRvID0gTWF0aC5taW4obGVuLCBuZXh0
Q2hhbmdlKTsKKyAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgaWYgKHRleHQp
IHsKKyAgICAgICAgICAgICAgdmFyIGVuZCA9IHBvcyArIHRleHQubGVuZ3RoOworICAgICAgICAg
ICAgICB2YXIgYXBwbGllZFN0eWxlID0gc3R5bGU7CisgICAgICAgICAgICAgIGZvciAodmFyIGog
PSAwOyBqIDwgbWFya3MubGVuZ3RoOyArK2opCisgICAgICAgICAgICAgICAgYXBwbGllZFN0eWxl
ID0gKGFwcGxpZWRTdHlsZSA/IGFwcGxpZWRTdHlsZSArICIgIiA6ICIiKSArIG1hcmtzW2pdLnN0
eWxlOworICAgICAgICAgICAgICBzcGFuKHByZSwgZW5kID4gdXB0byA/IHRleHQuc2xpY2UoMCwg
dXB0byAtIHBvcykgOiB0ZXh0LCBhcHBsaWVkU3R5bGUpOworICAgICAgICAgICAgICBpZiAoZW5k
ID49IHVwdG8pIHt0ZXh0ID0gdGV4dC5zbGljZSh1cHRvIC0gcG9zKTsgcG9zID0gdXB0bzsgYnJl
YWs7fQorICAgICAgICAgICAgICBwb3MgPSBlbmQ7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICB0ZXh0ID0gc3RbaSsrXTsgc3R5bGUgPSBzdHlsZVRvQ2xhc3Moc3RbaSsrXSk7CisgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICByZXR1cm4gcHJlOworICAgIH0sCisgICAg
Y2xlYW5VcDogZnVuY3Rpb24oKSB7CisgICAgICB0aGlzLnBhcmVudCA9IG51bGw7CisgICAgICBp
ZiAodGhpcy5tYXJrZWQpCisgICAgICAgIGZvciAodmFyIGkgPSAwLCBlID0gdGhpcy5tYXJrZWQu
bGVuZ3RoOyBpIDwgZTsgKytpKSB0aGlzLm1hcmtlZFtpXS5kZXRhY2godGhpcyk7CisgICAgfQor
ICB9OworICAvLyBVdGlsaXR5IHVzZWQgYnkgcmVwbGFjZSBhbmQgc3BsaXQgYWJvdmUKKyAgZnVu
Y3Rpb24gY29weVN0eWxlcyhmcm9tLCB0bywgc291cmNlLCBkZXN0KSB7CisgICAgZm9yICh2YXIg
aSA9IDAsIHBvcyA9IDAsIHN0YXRlID0gMDsgcG9zIDwgdG87IGkrPTIpIHsKKyAgICAgIHZhciBw
YXJ0ID0gc291cmNlW2ldLCBlbmQgPSBwb3MgKyBwYXJ0Lmxlbmd0aDsKKyAgICAgIGlmIChzdGF0
ZSA9PSAwKSB7CisgICAgICAgIGlmIChlbmQgPiBmcm9tKSBkZXN0LnB1c2gocGFydC5zbGljZShm
cm9tIC0gcG9zLCBNYXRoLm1pbihwYXJ0Lmxlbmd0aCwgdG8gLSBwb3MpKSwgc291cmNlW2krMV0p
OworICAgICAgICBpZiAoZW5kID49IGZyb20pIHN0YXRlID0gMTsKKyAgICAgIH0gZWxzZSBpZiAo
c3RhdGUgPT0gMSkgeworICAgICAgICBpZiAoZW5kID4gdG8pIGRlc3QucHVzaChwYXJ0LnNsaWNl
KDAsIHRvIC0gcG9zKSwgc291cmNlW2krMV0pOworICAgICAgICBlbHNlIGRlc3QucHVzaChwYXJ0
LCBzb3VyY2VbaSsxXSk7CisgICAgICB9CisgICAgICBwb3MgPSBlbmQ7CisgICAgfQorICB9CisK
KyAgLy8gRGF0YSBzdHJ1Y3R1cmUgdGhhdCBob2xkcyB0aGUgc2VxdWVuY2Ugb2YgbGluZXMuCisg
IGZ1bmN0aW9uIExlYWZDaHVuayhsaW5lcykgeworICAgIHRoaXMubGluZXMgPSBsaW5lczsKKyAg
ICB0aGlzLnBhcmVudCA9IG51bGw7CisgICAgZm9yICh2YXIgaSA9IDAsIGUgPSBsaW5lcy5sZW5n
dGgsIGhlaWdodCA9IDA7IGkgPCBlOyArK2kpIHsKKyAgICAgIGxpbmVzW2ldLnBhcmVudCA9IHRo
aXM7CisgICAgICBoZWlnaHQgKz0gbGluZXNbaV0uaGVpZ2h0OworICAgIH0KKyAgICB0aGlzLmhl
aWdodCA9IGhlaWdodDsKKyAgfQorICBMZWFmQ2h1bmsucHJvdG90eXBlID0geworICAgIGNodW5r
U2l6ZTogZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLmxpbmVzLmxlbmd0aDsgfSwKKyAgICByZW1v
dmU6IGZ1bmN0aW9uKGF0LCBuLCBjYWxsYmFja3MpIHsKKyAgICAgIGZvciAodmFyIGkgPSBhdCwg
ZSA9IGF0ICsgbjsgaSA8IGU7ICsraSkgeworICAgICAgICB2YXIgbGluZSA9IHRoaXMubGluZXNb
aV07CisgICAgICAgIHRoaXMuaGVpZ2h0IC09IGxpbmUuaGVpZ2h0OworICAgICAgICBsaW5lLmNs
ZWFuVXAoKTsKKyAgICAgICAgaWYgKGxpbmUuaGFuZGxlcnMpCisgICAgICAgICAgZm9yICh2YXIg
aiA9IDA7IGogPCBsaW5lLmhhbmRsZXJzLmxlbmd0aDsgKytqKSBjYWxsYmFja3MucHVzaChsaW5l
LmhhbmRsZXJzW2pdKTsKKyAgICAgIH0KKyAgICAgIHRoaXMubGluZXMuc3BsaWNlKGF0LCBuKTsK
KyAgICB9LAorICAgIGNvbGxhcHNlOiBmdW5jdGlvbihsaW5lcykgeworICAgICAgbGluZXMuc3Bs
aWNlLmFwcGx5KGxpbmVzLCBbbGluZXMubGVuZ3RoLCAwXS5jb25jYXQodGhpcy5saW5lcykpOwor
ICAgIH0sCisgICAgaW5zZXJ0SGVpZ2h0OiBmdW5jdGlvbihhdCwgbGluZXMsIGhlaWdodCkgewor
ICAgICAgdGhpcy5oZWlnaHQgKz0gaGVpZ2h0OworICAgICAgdGhpcy5saW5lcyA9IHRoaXMubGlu
ZXMuc2xpY2UoMCwgYXQpLmNvbmNhdChsaW5lcykuY29uY2F0KHRoaXMubGluZXMuc2xpY2UoYXQp
KTsKKyAgICAgIGZvciAodmFyIGkgPSAwLCBlID0gbGluZXMubGVuZ3RoOyBpIDwgZTsgKytpKSBs
aW5lc1tpXS5wYXJlbnQgPSB0aGlzOworICAgIH0sCisgICAgaXRlck46IGZ1bmN0aW9uKGF0LCBu
LCBvcCkgeworICAgICAgZm9yICh2YXIgZSA9IGF0ICsgbjsgYXQgPCBlOyArK2F0KQorICAgICAg
ICBpZiAob3AodGhpcy5saW5lc1thdF0pKSByZXR1cm4gdHJ1ZTsKKyAgICB9CisgIH07CisgIGZ1
bmN0aW9uIEJyYW5jaENodW5rKGNoaWxkcmVuKSB7CisgICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxk
cmVuOworICAgIHZhciBzaXplID0gMCwgaGVpZ2h0ID0gMDsKKyAgICBmb3IgKHZhciBpID0gMCwg
ZSA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IGU7ICsraSkgeworICAgICAgdmFyIGNoID0gY2hpbGRy
ZW5baV07CisgICAgICBzaXplICs9IGNoLmNodW5rU2l6ZSgpOyBoZWlnaHQgKz0gY2guaGVpZ2h0
OworICAgICAgY2gucGFyZW50ID0gdGhpczsKKyAgICB9CisgICAgdGhpcy5zaXplID0gc2l6ZTsK
KyAgICB0aGlzLmhlaWdodCA9IGhlaWdodDsKKyAgICB0aGlzLnBhcmVudCA9IG51bGw7CisgIH0K
KyAgQnJhbmNoQ2h1bmsucHJvdG90eXBlID0geworICAgIGNodW5rU2l6ZTogZnVuY3Rpb24oKSB7
IHJldHVybiB0aGlzLnNpemU7IH0sCisgICAgcmVtb3ZlOiBmdW5jdGlvbihhdCwgbiwgY2FsbGJh
Y2tzKSB7CisgICAgICB0aGlzLnNpemUgLT0gbjsKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dGhpcy5jaGlsZHJlbi5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgY2hpbGQgPSB0aGlzLmNo
aWxkcmVuW2ldLCBzeiA9IGNoaWxkLmNodW5rU2l6ZSgpOworICAgICAgICBpZiAoYXQgPCBzeikg
eworICAgICAgICAgIHZhciBybSA9IE1hdGgubWluKG4sIHN6IC0gYXQpLCBvbGRIZWlnaHQgPSBj
aGlsZC5oZWlnaHQ7CisgICAgICAgICAgY2hpbGQucmVtb3ZlKGF0LCBybSwgY2FsbGJhY2tzKTsK
KyAgICAgICAgICB0aGlzLmhlaWdodCAtPSBvbGRIZWlnaHQgLSBjaGlsZC5oZWlnaHQ7CisgICAg
ICAgICAgaWYgKHN6ID09IHJtKSB7IHRoaXMuY2hpbGRyZW4uc3BsaWNlKGktLSwgMSk7IGNoaWxk
LnBhcmVudCA9IG51bGw7IH0KKyAgICAgICAgICBpZiAoKG4gLT0gcm0pID09IDApIGJyZWFrOwor
ICAgICAgICAgIGF0ID0gMDsKKyAgICAgICAgfSBlbHNlIGF0IC09IHN6OworICAgICAgfQorICAg
ICAgaWYgKHRoaXMuc2l6ZSAtIG4gPCAyNSkgeworICAgICAgICB2YXIgbGluZXMgPSBbXTsKKyAg
ICAgICAgdGhpcy5jb2xsYXBzZShsaW5lcyk7CisgICAgICAgIHRoaXMuY2hpbGRyZW4gPSBbbmV3
IExlYWZDaHVuayhsaW5lcyldOworICAgICAgICB0aGlzLmNoaWxkcmVuWzBdLnBhcmVudCA9IHRo
aXM7CisgICAgICB9CisgICAgfSwKKyAgICBjb2xsYXBzZTogZnVuY3Rpb24obGluZXMpIHsKKyAg
ICAgIGZvciAodmFyIGkgPSAwLCBlID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkgPCBlOyArK2kp
IHRoaXMuY2hpbGRyZW5baV0uY29sbGFwc2UobGluZXMpOworICAgIH0sCisgICAgaW5zZXJ0OiBm
dW5jdGlvbihhdCwgbGluZXMpIHsKKyAgICAgIHZhciBoZWlnaHQgPSAwOworICAgICAgZm9yICh2
YXIgaSA9IDAsIGUgPSBsaW5lcy5sZW5ndGg7IGkgPCBlOyArK2kpIGhlaWdodCArPSBsaW5lc1tp
XS5oZWlnaHQ7CisgICAgICB0aGlzLmluc2VydEhlaWdodChhdCwgbGluZXMsIGhlaWdodCk7Cisg
ICAgfSwKKyAgICBpbnNlcnRIZWlnaHQ6IGZ1bmN0aW9uKGF0LCBsaW5lcywgaGVpZ2h0KSB7Cisg
ICAgICB0aGlzLnNpemUgKz0gbGluZXMubGVuZ3RoOworICAgICAgdGhpcy5oZWlnaHQgKz0gaGVp
Z2h0OworICAgICAgZm9yICh2YXIgaSA9IDAsIGUgPSB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgaSA8
IGU7ICsraSkgeworICAgICAgICB2YXIgY2hpbGQgPSB0aGlzLmNoaWxkcmVuW2ldLCBzeiA9IGNo
aWxkLmNodW5rU2l6ZSgpOworICAgICAgICBpZiAoYXQgPD0gc3opIHsKKyAgICAgICAgICBjaGls
ZC5pbnNlcnRIZWlnaHQoYXQsIGxpbmVzLCBoZWlnaHQpOworICAgICAgICAgIGlmIChjaGlsZC5s
aW5lcyAmJiBjaGlsZC5saW5lcy5sZW5ndGggPiA1MCkgeworICAgICAgICAgICAgd2hpbGUgKGNo
aWxkLmxpbmVzLmxlbmd0aCA+IDUwKSB7CisgICAgICAgICAgICAgIHZhciBzcGlsbGVkID0gY2hp
bGQubGluZXMuc3BsaWNlKGNoaWxkLmxpbmVzLmxlbmd0aCAtIDI1LCAyNSk7CisgICAgICAgICAg
ICAgIHZhciBuZXdsZWFmID0gbmV3IExlYWZDaHVuayhzcGlsbGVkKTsKKyAgICAgICAgICAgICAg
Y2hpbGQuaGVpZ2h0IC09IG5ld2xlYWYuaGVpZ2h0OworICAgICAgICAgICAgICB0aGlzLmNoaWxk
cmVuLnNwbGljZShpICsgMSwgMCwgbmV3bGVhZik7CisgICAgICAgICAgICAgIG5ld2xlYWYucGFy
ZW50ID0gdGhpczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMubWF5YmVTcGlsbCgp
OworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBhdCAt
PSBzejsKKyAgICAgIH0KKyAgICB9LAorICAgIG1heWJlU3BpbGw6IGZ1bmN0aW9uKCkgeworICAg
ICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoIDw9IDEwKSByZXR1cm47CisgICAgICB2YXIgbWUg
PSB0aGlzOworICAgICAgZG8geworICAgICAgICB2YXIgc3BpbGxlZCA9IG1lLmNoaWxkcmVuLnNw
bGljZShtZS5jaGlsZHJlbi5sZW5ndGggLSA1LCA1KTsKKyAgICAgICAgdmFyIHNpYmxpbmcgPSBu
ZXcgQnJhbmNoQ2h1bmsoc3BpbGxlZCk7CisgICAgICAgIGlmICghbWUucGFyZW50KSB7IC8vIEJl
Y29tZSB0aGUgcGFyZW50IG5vZGUKKyAgICAgICAgICB2YXIgY29weSA9IG5ldyBCcmFuY2hDaHVu
ayhtZS5jaGlsZHJlbik7CisgICAgICAgICAgY29weS5wYXJlbnQgPSBtZTsKKyAgICAgICAgICBt
ZS5jaGlsZHJlbiA9IFtjb3B5LCBzaWJsaW5nXTsKKyAgICAgICAgICBtZSA9IGNvcHk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgbWUuc2l6ZSAtPSBzaWJsaW5nLnNpemU7CisgICAgICAg
ICAgbWUuaGVpZ2h0IC09IHNpYmxpbmcuaGVpZ2h0OworICAgICAgICAgIHZhciBteUluZGV4ID0g
aW5kZXhPZihtZS5wYXJlbnQuY2hpbGRyZW4sIG1lKTsKKyAgICAgICAgICBtZS5wYXJlbnQuY2hp
bGRyZW4uc3BsaWNlKG15SW5kZXggKyAxLCAwLCBzaWJsaW5nKTsKKyAgICAgICAgfQorICAgICAg
ICBzaWJsaW5nLnBhcmVudCA9IG1lLnBhcmVudDsKKyAgICAgIH0gd2hpbGUgKG1lLmNoaWxkcmVu
Lmxlbmd0aCA+IDEwKTsKKyAgICAgIG1lLnBhcmVudC5tYXliZVNwaWxsKCk7CisgICAgfSwKKyAg
ICBpdGVyOiBmdW5jdGlvbihmcm9tLCB0bywgb3ApIHsgdGhpcy5pdGVyTihmcm9tLCB0byAtIGZy
b20sIG9wKTsgfSwKKyAgICBpdGVyTjogZnVuY3Rpb24oYXQsIG4sIG9wKSB7CisgICAgICBmb3Ig
KHZhciBpID0gMCwgZSA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgZTsgKytpKSB7CisgICAg
ICAgIHZhciBjaGlsZCA9IHRoaXMuY2hpbGRyZW5baV0sIHN6ID0gY2hpbGQuY2h1bmtTaXplKCk7
CisgICAgICAgIGlmIChhdCA8IHN6KSB7CisgICAgICAgICAgdmFyIHVzZWQgPSBNYXRoLm1pbihu
LCBzeiAtIGF0KTsKKyAgICAgICAgICBpZiAoY2hpbGQuaXRlck4oYXQsIHVzZWQsIG9wKSkgcmV0
dXJuIHRydWU7CisgICAgICAgICAgaWYgKChuIC09IHVzZWQpID09IDApIGJyZWFrOworICAgICAg
ICAgIGF0ID0gMDsKKyAgICAgICAgfSBlbHNlIGF0IC09IHN6OworICAgICAgfQorICAgIH0KKyAg
fTsKKworICBmdW5jdGlvbiBnZXRMaW5lQXQoY2h1bmssIG4pIHsKKyAgICB3aGlsZSAoIWNodW5r
LmxpbmVzKSB7CisgICAgICBmb3IgKHZhciBpID0gMDs7ICsraSkgeworICAgICAgICB2YXIgY2hp
bGQgPSBjaHVuay5jaGlsZHJlbltpXSwgc3ogPSBjaGlsZC5jaHVua1NpemUoKTsKKyAgICAgICAg
aWYgKG4gPCBzeikgeyBjaHVuayA9IGNoaWxkOyBicmVhazsgfQorICAgICAgICBuIC09IHN6Owor
ICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gY2h1bmsubGluZXNbbl07CisgIH0KKyAgZnVuY3Rp
b24gbGluZU5vKGxpbmUpIHsKKyAgICBpZiAobGluZS5wYXJlbnQgPT0gbnVsbCkgcmV0dXJuIG51
bGw7CisgICAgdmFyIGN1ciA9IGxpbmUucGFyZW50LCBubyA9IGluZGV4T2YoY3VyLmxpbmVzLCBs
aW5lKTsKKyAgICBmb3IgKHZhciBjaHVuayA9IGN1ci5wYXJlbnQ7IGNodW5rOyBjdXIgPSBjaHVu
aywgY2h1bmsgPSBjaHVuay5wYXJlbnQpIHsKKyAgICAgIGZvciAodmFyIGkgPSAwLCBlID0gY2h1
bmsuY2hpbGRyZW4ubGVuZ3RoOyA7ICsraSkgeworICAgICAgICBpZiAoY2h1bmsuY2hpbGRyZW5b
aV0gPT0gY3VyKSBicmVhazsKKyAgICAgICAgbm8gKz0gY2h1bmsuY2hpbGRyZW5baV0uY2h1bmtT
aXplKCk7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBubzsKKyAgfQorICBmdW5jdGlvbiBs
aW5lQXRIZWlnaHQoY2h1bmssIGgpIHsKKyAgICB2YXIgbiA9IDA7CisgICAgb3V0ZXI6IGRvIHsK
KyAgICAgIGZvciAodmFyIGkgPSAwLCBlID0gY2h1bmsuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgZTsg
KytpKSB7CisgICAgICAgIHZhciBjaGlsZCA9IGNodW5rLmNoaWxkcmVuW2ldLCBjaCA9IGNoaWxk
LmhlaWdodDsKKyAgICAgICAgaWYgKGggPCBjaCkgeyBjaHVuayA9IGNoaWxkOyBjb250aW51ZSBv
dXRlcjsgfQorICAgICAgICBoIC09IGNoOworICAgICAgICBuICs9IGNoaWxkLmNodW5rU2l6ZSgp
OworICAgICAgfQorICAgICAgcmV0dXJuIG47CisgICAgfSB3aGlsZSAoIWNodW5rLmxpbmVzKTsK
KyAgICBmb3IgKHZhciBpID0gMCwgZSA9IGNodW5rLmxpbmVzLmxlbmd0aDsgaSA8IGU7ICsraSkg
eworICAgICAgdmFyIGxpbmUgPSBjaHVuay5saW5lc1tpXSwgbGggPSBsaW5lLmhlaWdodDsKKyAg
ICAgIGlmIChoIDwgbGgpIGJyZWFrOworICAgICAgaCAtPSBsaDsKKyAgICB9CisgICAgcmV0dXJu
IG4gKyBpOworICB9CisgIGZ1bmN0aW9uIGhlaWdodEF0TGluZShjaHVuaywgbikgeworICAgIHZh
ciBoID0gMDsKKyAgICBvdXRlcjogZG8geworICAgICAgZm9yICh2YXIgaSA9IDAsIGUgPSBjaHVu
ay5jaGlsZHJlbi5sZW5ndGg7IGkgPCBlOyArK2kpIHsKKyAgICAgICAgdmFyIGNoaWxkID0gY2h1
bmsuY2hpbGRyZW5baV0sIHN6ID0gY2hpbGQuY2h1bmtTaXplKCk7CisgICAgICAgIGlmIChuIDwg
c3opIHsgY2h1bmsgPSBjaGlsZDsgY29udGludWUgb3V0ZXI7IH0KKyAgICAgICAgbiAtPSBzejsK
KyAgICAgICAgaCArPSBjaGlsZC5oZWlnaHQ7CisgICAgICB9CisgICAgICByZXR1cm4gaDsKKyAg
ICB9IHdoaWxlICghY2h1bmsubGluZXMpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytp
KSBoICs9IGNodW5rLmxpbmVzW2ldLmhlaWdodDsKKyAgICByZXR1cm4gaDsKKyAgfQorCisgIC8v
IFRoZSBoaXN0b3J5IG9iamVjdCAnY2h1bmtzJyBjaGFuZ2VzIHRoYXQgYXJlIG1hZGUgY2xvc2Ug
dG9nZXRoZXIKKyAgLy8gYW5kIGF0IGFsbW9zdCB0aGUgc2FtZSB0aW1lIGludG8gYmlnZ2VyIHVu
ZG9hYmxlIHVuaXRzLgorICBmdW5jdGlvbiBIaXN0b3J5KCkgeworICAgIHRoaXMudGltZSA9IDA7
CisgICAgdGhpcy5kb25lID0gW107IHRoaXMudW5kb25lID0gW107CisgICAgdGhpcy5jb21wb3Vu
ZCA9IDA7CisgICAgdGhpcy5jbG9zZWQgPSBmYWxzZTsKKyAgfQorICBIaXN0b3J5LnByb3RvdHlw
ZSA9IHsKKyAgICBhZGRDaGFuZ2U6IGZ1bmN0aW9uKHN0YXJ0LCBhZGRlZCwgb2xkKSB7CisgICAg
ICB0aGlzLnVuZG9uZS5sZW5ndGggPSAwOworICAgICAgdmFyIHRpbWUgPSArbmV3IERhdGUsIGN1
ciA9IHRoaXMuZG9uZVt0aGlzLmRvbmUubGVuZ3RoIC0gMV0sIGxhc3QgPSBjdXIgJiYgY3VyW2N1
ci5sZW5ndGggLSAxXTsKKyAgICAgIHZhciBkdGltZSA9IHRpbWUgLSB0aGlzLnRpbWU7CisKKyAg
ICAgIGlmICh0aGlzLmNvbXBvdW5kICYmIGN1ciAmJiAhdGhpcy5jbG9zZWQpIHsKKyAgICAgICAg
Y3VyLnB1c2goe3N0YXJ0OiBzdGFydCwgYWRkZWQ6IGFkZGVkLCBvbGQ6IG9sZH0pOworICAgICAg
fSBlbHNlIGlmIChkdGltZSA+IDQwMCB8fCAhbGFzdCB8fCB0aGlzLmNsb3NlZCB8fAorICAgICAg
ICAgICAgICAgICBsYXN0LnN0YXJ0ID4gc3RhcnQgKyBvbGQubGVuZ3RoIHx8IGxhc3Quc3RhcnQg
KyBsYXN0LmFkZGVkIDwgc3RhcnQpIHsKKyAgICAgICAgdGhpcy5kb25lLnB1c2goW3tzdGFydDog
c3RhcnQsIGFkZGVkOiBhZGRlZCwgb2xkOiBvbGR9XSk7CisgICAgICAgIHRoaXMuY2xvc2VkID0g
ZmFsc2U7CisgICAgICB9IGVsc2UgeworICAgICAgICB2YXIgc3RhcnRCZWZvcmUgPSBNYXRoLm1h
eCgwLCBsYXN0LnN0YXJ0IC0gc3RhcnQpLAorICAgICAgICAgICAgZW5kQWZ0ZXIgPSBNYXRoLm1h
eCgwLCAoc3RhcnQgKyBvbGQubGVuZ3RoKSAtIChsYXN0LnN0YXJ0ICsgbGFzdC5hZGRlZCkpOwor
ICAgICAgICBmb3IgKHZhciBpID0gc3RhcnRCZWZvcmU7IGkgPiAwOyAtLWkpIGxhc3Qub2xkLnVu
c2hpZnQob2xkW2kgLSAxXSk7CisgICAgICAgIGZvciAodmFyIGkgPSBlbmRBZnRlcjsgaSA+IDA7
IC0taSkgbGFzdC5vbGQucHVzaChvbGRbb2xkLmxlbmd0aCAtIGldKTsKKyAgICAgICAgaWYgKHN0
YXJ0QmVmb3JlKSBsYXN0LnN0YXJ0ID0gc3RhcnQ7CisgICAgICAgIGxhc3QuYWRkZWQgKz0gYWRk
ZWQgLSAob2xkLmxlbmd0aCAtIHN0YXJ0QmVmb3JlIC0gZW5kQWZ0ZXIpOworICAgICAgfQorICAg
ICAgdGhpcy50aW1lID0gdGltZTsKKyAgICB9LAorICAgIHN0YXJ0Q29tcG91bmQ6IGZ1bmN0aW9u
KCkgeworICAgICAgaWYgKCF0aGlzLmNvbXBvdW5kKyspIHRoaXMuY2xvc2VkID0gdHJ1ZTsKKyAg
ICB9LAorICAgIGVuZENvbXBvdW5kOiBmdW5jdGlvbigpIHsKKyAgICAgIGlmICghLS10aGlzLmNv
bXBvdW5kKSB0aGlzLmNsb3NlZCA9IHRydWU7CisgICAgfQorICB9OworCisgIGZ1bmN0aW9uIHN0
b3BNZXRob2QoKSB7ZV9zdG9wKHRoaXMpO30KKyAgLy8gRW5zdXJlIGFuIGV2ZW50IGhhcyBhIHN0
b3AgbWV0aG9kLgorICBmdW5jdGlvbiBhZGRTdG9wKGV2ZW50KSB7CisgICAgaWYgKCFldmVudC5z
dG9wKSBldmVudC5zdG9wID0gc3RvcE1ldGhvZDsKKyAgICByZXR1cm4gZXZlbnQ7CisgIH0KKwor
ICBmdW5jdGlvbiBlX3ByZXZlbnREZWZhdWx0KGUpIHsKKyAgICBpZiAoZS5wcmV2ZW50RGVmYXVs
dCkgZS5wcmV2ZW50RGVmYXVsdCgpOworICAgIGVsc2UgZS5yZXR1cm5WYWx1ZSA9IGZhbHNlOwor
ICB9CisgIGZ1bmN0aW9uIGVfc3RvcFByb3BhZ2F0aW9uKGUpIHsKKyAgICBpZiAoZS5zdG9wUHJv
cGFnYXRpb24pIGUuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgZWxzZSBlLmNhbmNlbEJ1YmJsZSA9
IHRydWU7CisgIH0KKyAgZnVuY3Rpb24gZV9zdG9wKGUpIHtlX3ByZXZlbnREZWZhdWx0KGUpOyBl
X3N0b3BQcm9wYWdhdGlvbihlKTt9CisgIENvZGVNaXJyb3IuZV9zdG9wID0gZV9zdG9wOworICBD
b2RlTWlycm9yLmVfcHJldmVudERlZmF1bHQgPSBlX3ByZXZlbnREZWZhdWx0OworICBDb2RlTWly
cm9yLmVfc3RvcFByb3BhZ2F0aW9uID0gZV9zdG9wUHJvcGFnYXRpb247CisKKyAgZnVuY3Rpb24g
ZV90YXJnZXQoZSkge3JldHVybiBlLnRhcmdldCB8fCBlLnNyY0VsZW1lbnQ7fQorICBmdW5jdGlv
biBlX2J1dHRvbihlKSB7CisgICAgdmFyIGIgPSBlLndoaWNoOworICAgIGlmIChiID09IG51bGwp
IHsKKyAgICAgIGlmIChlLmJ1dHRvbiAmIDEpIGIgPSAxOworICAgICAgZWxzZSBpZiAoZS5idXR0
b24gJiAyKSBiID0gMzsKKyAgICAgIGVsc2UgaWYgKGUuYnV0dG9uICYgNCkgYiA9IDI7CisgICAg
fQorICAgIGlmIChtYWMgJiYgZS5jdHJsS2V5ICYmIGIgPT0gMSkgYiA9IDM7CisgICAgcmV0dXJu
IGI7CisgIH0KKworICAvLyBBbGxvdyAzcmQtcGFydHkgY29kZSB0byBvdmVycmlkZSBldmVudCBw
cm9wZXJ0aWVzIGJ5IGFkZGluZyBhbiBvdmVycmlkZQorICAvLyBvYmplY3QgdG8gYW4gZXZlbnQg
b2JqZWN0LgorICBmdW5jdGlvbiBlX3Byb3AoZSwgcHJvcCkgeworICAgIHZhciBvdmVycmlkZGVu
ID0gZS5vdmVycmlkZSAmJiBlLm92ZXJyaWRlLmhhc093blByb3BlcnR5KHByb3ApOworICAgIHJl
dHVybiBvdmVycmlkZGVuID8gZS5vdmVycmlkZVtwcm9wXSA6IGVbcHJvcF07CisgIH0KKworICAv
LyBFdmVudCBoYW5kbGVyIHJlZ2lzdHJhdGlvbi4gSWYgZGlzY29ubmVjdCBpcyB0cnVlLCBpdCds
bCByZXR1cm4gYQorICAvLyBmdW5jdGlvbiB0aGF0IHVucmVnaXN0ZXJzIHRoZSBoYW5kbGVyLgor
ICBmdW5jdGlvbiBjb25uZWN0KG5vZGUsIHR5cGUsIGhhbmRsZXIsIGRpc2Nvbm5lY3QpIHsKKyAg
ICBpZiAodHlwZW9mIG5vZGUuYWRkRXZlbnRMaXN0ZW5lciA9PSAiZnVuY3Rpb24iKSB7CisgICAg
ICBub2RlLmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgaGFuZGxlciwgZmFsc2UpOworICAgICAgaWYg
KGRpc2Nvbm5lY3QpIHJldHVybiBmdW5jdGlvbigpIHtub2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIo
dHlwZSwgaGFuZGxlciwgZmFsc2UpO307CisgICAgfSBlbHNlIHsKKyAgICAgIHZhciB3cmFwSGFu
ZGxlciA9IGZ1bmN0aW9uKGV2ZW50KSB7aGFuZGxlcihldmVudCB8fCB3aW5kb3cuZXZlbnQpO307
CisgICAgICBub2RlLmF0dGFjaEV2ZW50KCJvbiIgKyB0eXBlLCB3cmFwSGFuZGxlcik7CisgICAg
ICBpZiAoZGlzY29ubmVjdCkgcmV0dXJuIGZ1bmN0aW9uKCkge25vZGUuZGV0YWNoRXZlbnQoIm9u
IiArIHR5cGUsIHdyYXBIYW5kbGVyKTt9OworICAgIH0KKyAgfQorICBDb2RlTWlycm9yLmNvbm5l
Y3QgPSBjb25uZWN0OworCisgIGZ1bmN0aW9uIERlbGF5ZWQoKSB7dGhpcy5pZCA9IG51bGw7fQor
ICBEZWxheWVkLnByb3RvdHlwZSA9IHtzZXQ6IGZ1bmN0aW9uKG1zLCBmKSB7Y2xlYXJUaW1lb3V0
KHRoaXMuaWQpOyB0aGlzLmlkID0gc2V0VGltZW91dChmLCBtcyk7fX07CisKKyAgdmFyIFBhc3Mg
PSBDb2RlTWlycm9yLlBhc3MgPSB7dG9TdHJpbmc6IGZ1bmN0aW9uKCl7cmV0dXJuICJDb2RlTWly
cm9yLlBhc3MiO319OworCisgIC8vIERldGVjdCBkcmFnLWFuZC1kcm9wCisgIHZhciBkcmFnQW5k
RHJvcCA9IGZ1bmN0aW9uKCkgeworICAgIC8vIFRoZXJlIGlzICpzb21lKiBraW5kIG9mIGRyYWct
YW5kLWRyb3Agc3VwcG9ydCBpbiBJRTYtOCwgYnV0IEkKKyAgICAvLyBjb3VsZG4ndCBnZXQgaXQg
dG8gd29yayB5ZXQuCisgICAgaWYgKGllX2x0OSkgcmV0dXJuIGZhbHNlOworICAgIHZhciBkaXYg
PSBlbHQoJ2RpdicpOworICAgIHJldHVybiAiZHJhZ2dhYmxlIiBpbiBkaXYgfHwgImRyYWdEcm9w
IiBpbiBkaXY7CisgIH0oKTsKKworICAvLyBGZWF0dXJlLWRldGVjdCB3aGV0aGVyIG5ld2xpbmVz
IGluIHRleHRhcmVhcyBhcmUgY29udmVydGVkIHRvIFxyXG4KKyAgdmFyIGxpbmVTZXAgPSBmdW5j
dGlvbiAoKSB7CisgICAgdmFyIHRlID0gZWx0KCJ0ZXh0YXJlYSIpOworICAgIHRlLnZhbHVlID0g
ImZvb1xuYmFyIjsKKyAgICBpZiAodGUudmFsdWUuaW5kZXhPZigiXHIiKSA+IC0xKSByZXR1cm4g
IlxyXG4iOworICAgIHJldHVybiAiXG4iOworICB9KCk7CisKKyAgLy8gRm9yIGEgcmVhc29uIEkg
aGF2ZSB5ZXQgdG8gZmlndXJlIG91dCwgc29tZSBicm93c2VycyBkaXNhbGxvdworICAvLyB3b3Jk
IHdyYXBwaW5nIGJldHdlZW4gY2VydGFpbiBjaGFyYWN0ZXJzICpvbmx5KiBpZiBhIG5ldyBpbmxp
bmUKKyAgLy8gZWxlbWVudCBpcyBzdGFydGVkIGJldHdlZW4gdGhlbS4gVGhpcyBtYWtlcyBpdCBo
YXJkIHRvIHJlbGlhYmx5CisgIC8vIG1lYXN1cmUgdGhlIHBvc2l0aW9uIG9mIHRoaW5ncywgc2lu
Y2UgdGhhdCByZXF1aXJlcyBpbnNlcnRpbmcgYW4KKyAgLy8gZXh0cmEgc3Bhbi4gVGhpcyB0ZXJy
aWJseSBmcmFnaWxlIHNldCBvZiByZWdleHBzIG1hdGNoZXMgdGhlCisgIC8vIGNoYXJhY3RlciBj
b21iaW5hdGlvbnMgdGhhdCBzdWZmZXIgZnJvbSB0aGlzIHBoZW5vbWVub24gb24gdGhlCisgIC8v
IHZhcmlvdXMgYnJvd3NlcnMuCisgIHZhciBzcGFuQWZmZWN0c1dyYXBwaW5nID0gL14kLzsgLy8g
V29uJ3QgbWF0Y2ggYW55IHR3by1jaGFyYWN0ZXIgc3RyaW5nCisgIGlmIChnZWNrbykgc3BhbkFm
ZmVjdHNXcmFwcGluZyA9IC8kJy87CisgIGVsc2UgaWYgKHNhZmFyaSkgc3BhbkFmZmVjdHNXcmFw
cGluZyA9IC9cLVteIFwtP118XD9bXiAhJ1wiXCksLlwtXC86O1w/XF1cfV0vOworICBlbHNlIGlm
IChjaHJvbWUpIHNwYW5BZmZlY3RzV3JhcHBpbmcgPSAvXC1bXiBcLVwuP118XD9bXiBcLVwuP1xd
XH06OyEnXCJcKSxcL118W1wuIVwiIyYlXCkqKyw6Oz0+XF18XH1+XVtcKFx7XFs8XXxcJCcvOwor
CisgIC8vIENvdW50cyB0aGUgY29sdW1uIG9mZnNldCBpbiBhIHN0cmluZywgdGFraW5nIHRhYnMg
aW50byBhY2NvdW50LgorICAvLyBVc2VkIG1vc3RseSB0byBmaW5kIGluZGVudGF0aW9uLgorICBm
dW5jdGlvbiBjb3VudENvbHVtbihzdHJpbmcsIGVuZCwgdGFiU2l6ZSkgeworICAgIGlmIChlbmQg
PT0gbnVsbCkgeworICAgICAgZW5kID0gc3RyaW5nLnNlYXJjaCgvW15cc1x1MDBhMF0vKTsKKyAg
ICAgIGlmIChlbmQgPT0gLTEpIGVuZCA9IHN0cmluZy5sZW5ndGg7CisgICAgfQorICAgIGZvciAo
dmFyIGkgPSAwLCBuID0gMDsgaSA8IGVuZDsgKytpKSB7CisgICAgICBpZiAoc3RyaW5nLmNoYXJB
dChpKSA9PSAiXHQiKSBuICs9IHRhYlNpemUgLSAobiAlIHRhYlNpemUpOworICAgICAgZWxzZSAr
K247CisgICAgfQorICAgIHJldHVybiBuOworICB9CisKKyAgZnVuY3Rpb24gY29tcHV0ZWRTdHls
ZShlbHQpIHsKKyAgICBpZiAoZWx0LmN1cnJlbnRTdHlsZSkgcmV0dXJuIGVsdC5jdXJyZW50U3R5
bGU7CisgICAgcmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsdCwgbnVsbCk7CisgIH0K
KworICBmdW5jdGlvbiBlbHRPZmZzZXQobm9kZSwgc2NyZWVuKSB7CisgICAgLy8gVGFrZSB0aGUg
cGFydHMgb2YgYm91bmRpbmcgY2xpZW50IHJlY3QgdGhhdCB3ZSBhcmUgaW50ZXJlc3RlZCBpbiBz
byB3ZSBhcmUgYWJsZSB0byBlZGl0IGlmIG5lZWQgYmUsCisgICAgLy8gc2luY2UgdGhlIHJldHVy
bmVkIHZhbHVlIGNhbm5vdCBiZSBjaGFuZ2VkIGV4dGVybmFsbHkgKHRoZXkgYXJlIGtlcHQgaW4g
c3luYyBhcyB0aGUgZWxlbWVudCBtb3ZlcyB3aXRoaW4gdGhlIHBhZ2UpCisgICAgdHJ5IHsgdmFy
IGJveCA9IG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7IGJveCA9IHsgdG9wOiBib3gudG9w
LCBsZWZ0OiBib3gubGVmdCB9OyB9CisgICAgY2F0Y2goZSkgeyBib3ggPSB7dG9wOiAwLCBsZWZ0
OiAwfTsgfQorICAgIGlmICghc2NyZWVuKSB7CisgICAgICAvLyBHZXQgdGhlIHRvcGxldmVsIHNj
cm9sbCwgd29ya2luZyBhcm91bmQgYnJvd3NlciBkaWZmZXJlbmNlcy4KKyAgICAgIGlmICh3aW5k
b3cucGFnZVlPZmZzZXQgPT0gbnVsbCkgeworICAgICAgICB2YXIgdCA9IGRvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudCB8fCBkb2N1bWVudC5ib2R5LnBhcmVudE5vZGU7CisgICAgICAgIGlmICh0LnNj
cm9sbFRvcCA9PSBudWxsKSB0ID0gZG9jdW1lbnQuYm9keTsKKyAgICAgICAgYm94LnRvcCArPSB0
LnNjcm9sbFRvcDsgYm94LmxlZnQgKz0gdC5zY3JvbGxMZWZ0OworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgYm94LnRvcCArPSB3aW5kb3cucGFnZVlPZmZzZXQ7IGJveC5sZWZ0ICs9IHdpbmRvdy5w
YWdlWE9mZnNldDsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGJveDsKKyAgfQorCisgIC8v
IEdldCBhIG5vZGUncyB0ZXh0IGNvbnRlbnQuCisgIGZ1bmN0aW9uIGVsdFRleHQobm9kZSkgewor
ICAgIHJldHVybiBub2RlLnRleHRDb250ZW50IHx8IG5vZGUuaW5uZXJUZXh0IHx8IG5vZGUubm9k
ZVZhbHVlIHx8ICIiOworICB9CisgIGZ1bmN0aW9uIHNlbGVjdElucHV0KG5vZGUpIHsKKyAgICBp
ZiAoaW9zKSB7IC8vIE1vYmlsZSBTYWZhcmkgYXBwYXJlbnRseSBoYXMgYSBidWcgd2hlcmUgc2Vs
ZWN0KCkgaXMgYnJva2VuLgorICAgICAgbm9kZS5zZWxlY3Rpb25TdGFydCA9IDA7CisgICAgICBu
b2RlLnNlbGVjdGlvbkVuZCA9IG5vZGUudmFsdWUubGVuZ3RoOworICAgIH0gZWxzZSBub2RlLnNl
bGVjdCgpOworICB9CisKKyAgLy8gT3BlcmF0aW9ucyBvbiB7bGluZSwgY2h9IG9iamVjdHMuCisg
IGZ1bmN0aW9uIHBvc0VxKGEsIGIpIHtyZXR1cm4gYS5saW5lID09IGIubGluZSAmJiBhLmNoID09
IGIuY2g7fQorICBmdW5jdGlvbiBwb3NMZXNzKGEsIGIpIHtyZXR1cm4gYS5saW5lIDwgYi5saW5l
IHx8IChhLmxpbmUgPT0gYi5saW5lICYmIGEuY2ggPCBiLmNoKTt9CisgIGZ1bmN0aW9uIGNvcHlQ
b3MoeCkge3JldHVybiB7bGluZTogeC5saW5lLCBjaDogeC5jaH07fQorCisgIGZ1bmN0aW9uIGVs
dCh0YWcsIGNvbnRlbnQsIGNsYXNzTmFtZSwgc3R5bGUpIHsKKyAgICB2YXIgZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQodGFnKTsKKyAgICBpZiAoY2xhc3NOYW1lKSBlLmNsYXNzTmFtZSA9IGNs
YXNzTmFtZTsKKyAgICBpZiAoc3R5bGUpIGUuc3R5bGUuY3NzVGV4dCA9IHN0eWxlOworICAgIGlm
ICh0eXBlb2YgY29udGVudCA9PSAic3RyaW5nIikgc2V0VGV4dENvbnRlbnQoZSwgY29udGVudCk7
CisgICAgZWxzZSBpZiAoY29udGVudCkgZm9yICh2YXIgaSA9IDA7IGkgPCBjb250ZW50Lmxlbmd0
aDsgKytpKSBlLmFwcGVuZENoaWxkKGNvbnRlbnRbaV0pOworICAgIHJldHVybiBlOworICB9Cisg
IGZ1bmN0aW9uIHJlbW92ZUNoaWxkcmVuKGUpIHsKKyAgICBlLmlubmVySFRNTCA9ICIiOworICAg
IHJldHVybiBlOworICB9CisgIGZ1bmN0aW9uIHJlbW92ZUNoaWxkcmVuQW5kQWRkKHBhcmVudCwg
ZSkgeworICAgIHJlbW92ZUNoaWxkcmVuKHBhcmVudCkuYXBwZW5kQ2hpbGQoZSk7CisgIH0KKyAg
ZnVuY3Rpb24gc2V0VGV4dENvbnRlbnQoZSwgc3RyKSB7CisgICAgaWYgKGllX2x0OSkgeworICAg
ICAgZS5pbm5lckhUTUwgPSAiIjsKKyAgICAgIGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoc3RyKSk7CisgICAgfSBlbHNlIGUudGV4dENvbnRlbnQgPSBzdHI7CisgIH0KKyAg
Q29kZU1pcnJvci5zZXRUZXh0Q29udGVudCA9IHNldFRleHRDb250ZW50OworCisgIC8vIFVzZWQg
dG8gcG9zaXRpb24gdGhlIGN1cnNvciBhZnRlciBhbiB1bmRvL3JlZG8gYnkgZmluZGluZyB0aGUK
KyAgLy8gbGFzdCBlZGl0ZWQgY2hhcmFjdGVyLgorICBmdW5jdGlvbiBlZGl0RW5kKGZyb20sIHRv
KSB7CisgICAgaWYgKCF0bykgcmV0dXJuIDA7CisgICAgaWYgKCFmcm9tKSByZXR1cm4gdG8ubGVu
Z3RoOworICAgIGZvciAodmFyIGkgPSBmcm9tLmxlbmd0aCwgaiA9IHRvLmxlbmd0aDsgaSA+PSAw
ICYmIGogPj0gMDsgLS1pLCAtLWopCisgICAgICBpZiAoZnJvbS5jaGFyQXQoaSkgIT0gdG8uY2hh
ckF0KGopKSBicmVhazsKKyAgICByZXR1cm4gaiArIDE7CisgIH0KKworICBmdW5jdGlvbiBpbmRl
eE9mKGNvbGxlY3Rpb24sIGVsdCkgeworICAgIGlmIChjb2xsZWN0aW9uLmluZGV4T2YpIHJldHVy
biBjb2xsZWN0aW9uLmluZGV4T2YoZWx0KTsKKyAgICBmb3IgKHZhciBpID0gMCwgZSA9IGNvbGxl
Y3Rpb24ubGVuZ3RoOyBpIDwgZTsgKytpKQorICAgICAgaWYgKGNvbGxlY3Rpb25baV0gPT0gZWx0
KSByZXR1cm4gaTsKKyAgICByZXR1cm4gLTE7CisgIH0KKyAgZnVuY3Rpb24gaXNXb3JkQ2hhcihj
aCkgeworICAgIHJldHVybiAvXHcvLnRlc3QoY2gpIHx8IGNoLnRvVXBwZXJDYXNlKCkgIT0gY2gu
dG9Mb3dlckNhc2UoKTsKKyAgfQorCisgIC8vIFNlZSBpZiAiIi5zcGxpdCBpcyB0aGUgYnJva2Vu
IElFIHZlcnNpb24sIGlmIHNvLCBwcm92aWRlIGFuCisgIC8vIGFsdGVybmF0aXZlIHdheSB0byBz
cGxpdCBsaW5lcy4KKyAgdmFyIHNwbGl0TGluZXMgPSAiXG5cbmIiLnNwbGl0KC9cbi8pLmxlbmd0
aCAhPSAzID8gZnVuY3Rpb24oc3RyaW5nKSB7CisgICAgdmFyIHBvcyA9IDAsIHJlc3VsdCA9IFtd
LCBsID0gc3RyaW5nLmxlbmd0aDsKKyAgICB3aGlsZSAocG9zIDw9IGwpIHsKKyAgICAgIHZhciBu
bCA9IHN0cmluZy5pbmRleE9mKCJcbiIsIHBvcyk7CisgICAgICBpZiAobmwgPT0gLTEpIG5sID0g
c3RyaW5nLmxlbmd0aDsKKyAgICAgIHZhciBsaW5lID0gc3RyaW5nLnNsaWNlKHBvcywgc3RyaW5n
LmNoYXJBdChubCAtIDEpID09ICJcciIgPyBubCAtIDEgOiBubCk7CisgICAgICB2YXIgcnQgPSBs
aW5lLmluZGV4T2YoIlxyIik7CisgICAgICBpZiAocnQgIT0gLTEpIHsKKyAgICAgICAgcmVzdWx0
LnB1c2gobGluZS5zbGljZSgwLCBydCkpOworICAgICAgICBwb3MgKz0gcnQgKyAxOworICAgICAg
fSBlbHNlIHsKKyAgICAgICAgcmVzdWx0LnB1c2gobGluZSk7CisgICAgICAgIHBvcyA9IG5sICsg
MTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfSA6IGZ1bmN0aW9uKHN0
cmluZyl7cmV0dXJuIHN0cmluZy5zcGxpdCgvXHJcbj98XG4vKTt9OworICBDb2RlTWlycm9yLnNw
bGl0TGluZXMgPSBzcGxpdExpbmVzOworCisgIHZhciBoYXNTZWxlY3Rpb24gPSB3aW5kb3cuZ2V0
U2VsZWN0aW9uID8gZnVuY3Rpb24odGUpIHsKKyAgICB0cnkgeyByZXR1cm4gdGUuc2VsZWN0aW9u
U3RhcnQgIT0gdGUuc2VsZWN0aW9uRW5kOyB9CisgICAgY2F0Y2goZSkgeyByZXR1cm4gZmFsc2U7
IH0KKyAgfSA6IGZ1bmN0aW9uKHRlKSB7CisgICAgdHJ5IHt2YXIgcmFuZ2UgPSB0ZS5vd25lckRv
Y3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO30KKyAgICBjYXRjaChlKSB7fQorICAgIGlm
ICghcmFuZ2UgfHwgcmFuZ2UucGFyZW50RWxlbWVudCgpICE9IHRlKSByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIHJhbmdlLmNvbXBhcmVFbmRQb2ludHMoIlN0YXJ0VG9FbmQiLCByYW5nZSkgIT0g
MDsKKyAgfTsKKworICBDb2RlTWlycm9yLmRlZmluZU1vZGUoIm51bGwiLCBmdW5jdGlvbigpIHsK
KyAgICByZXR1cm4ge3Rva2VuOiBmdW5jdGlvbihzdHJlYW0pIHtzdHJlYW0uc2tpcFRvRW5kKCk7
fX07CisgIH0pOworICBDb2RlTWlycm9yLmRlZmluZU1JTUUoInRleHQvcGxhaW4iLCAibnVsbCIp
OworCisgIHZhciBrZXlOYW1lcyA9IHszOiAiRW50ZXIiLCA4OiAiQmFja3NwYWNlIiwgOTogIlRh
YiIsIDEzOiAiRW50ZXIiLCAxNjogIlNoaWZ0IiwgMTc6ICJDdHJsIiwgMTg6ICJBbHQiLAorICAg
ICAgICAgICAgICAgICAgMTk6ICJQYXVzZSIsIDIwOiAiQ2Fwc0xvY2siLCAyNzogIkVzYyIsIDMy
OiAiU3BhY2UiLCAzMzogIlBhZ2VVcCIsIDM0OiAiUGFnZURvd24iLCAzNTogIkVuZCIsCisgICAg
ICAgICAgICAgICAgICAzNjogIkhvbWUiLCAzNzogIkxlZnQiLCAzODogIlVwIiwgMzk6ICJSaWdo
dCIsIDQwOiAiRG93biIsIDQ0OiAiUHJpbnRTY3JuIiwgNDU6ICJJbnNlcnQiLAorICAgICAgICAg
ICAgICAgICAgNDY6ICJEZWxldGUiLCA1OTogIjsiLCA5MTogIk1vZCIsIDkyOiAiTW9kIiwgOTM6
ICJNb2QiLCAxMDk6ICItIiwgMTA3OiAiPSIsIDEyNzogIkRlbGV0ZSIsCisgICAgICAgICAgICAg
ICAgICAxODY6ICI7IiwgMTg3OiAiPSIsIDE4ODogIiwiLCAxODk6ICItIiwgMTkwOiAiLiIsIDE5
MTogIi8iLCAxOTI6ICJgIiwgMjE5OiAiWyIsIDIyMDogIlxcIiwKKyAgICAgICAgICAgICAgICAg
IDIyMTogIl0iLCAyMjI6ICInIiwgNjMyNzY6ICJQYWdlVXAiLCA2MzI3NzogIlBhZ2VEb3duIiwg
NjMyNzU6ICJFbmQiLCA2MzI3MzogIkhvbWUiLAorICAgICAgICAgICAgICAgICAgNjMyMzQ6ICJM
ZWZ0IiwgNjMyMzI6ICJVcCIsIDYzMjM1OiAiUmlnaHQiLCA2MzIzMzogIkRvd24iLCA2MzMwMjog
Ikluc2VydCIsIDYzMjcyOiAiRGVsZXRlIn07CisgIENvZGVNaXJyb3Iua2V5TmFtZXMgPSBrZXlO
YW1lczsKKyAgKGZ1bmN0aW9uKCkgeworICAgIC8vIE51bWJlciBrZXlzCisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDsgaSsrKSBrZXlOYW1lc1tpICsgNDhdID0gU3RyaW5nKGkpOworICAgIC8v
IEFscGhhYmV0aWMga2V5cworICAgIGZvciAodmFyIGkgPSA2NTsgaSA8PSA5MDsgaSsrKSBrZXlO
YW1lc1tpXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoaSk7CisgICAgLy8gRnVuY3Rpb24ga2V5cwor
ICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IDEyOyBpKyspIGtleU5hbWVzW2kgKyAxMTFdID0ga2V5
TmFtZXNbaSArIDYzMjM1XSA9ICJGIiArIGk7CisgIH0pKCk7CisKKyAgcmV0dXJuIENvZGVNaXJy
b3I7Cit9KSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9jc3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2Nzcy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42YmIzYmNkMTk2ZGY3NmM0MjY3MmJhMTg3ZDUxYjVmZDZhOGJiZmIyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9jc3MuanMKQEAg
LTAsMCArMSwxNzQgQEAKK0NvZGVNaXJyb3IuZGVmaW5lTW9kZSgiY3NzIiwgZnVuY3Rpb24oY29u
ZmlnKSB7CisgIHZhciBpbmRlbnRVbml0ID0gY29uZmlnLmluZGVudFVuaXQsIHR5cGU7CisKKyAg
dmFyIGtleXdvcmRzID0ga2V5U2V0KFsiYWJvdmUiLCAiYWJzb2x1dGUiLCAiYWN0aXZlYm9yZGVy
IiwgImFjdGl2ZWNhcHRpb24iLCAiYWZhciIsICJhZnRlci13aGl0ZS1zcGFjZSIsICJhaGVhZCIs
ICJhbGlhcyIsICJhbGwiLCAiYWxsLXNjcm9sbCIsCisgICAgImFsdGVybmF0ZSIsICJhbHdheXMi
LCAiYW1oYXJpYyIsICJhbWhhcmljLWFiZWdlZGUiLCAiYW50aWFsaWFzZWQiLCAiYXBwd29ya3Nw
YWNlIiwgImFyYWJpYy1pbmRpYyIsICJhcm1lbmlhbiIsICJhc3Rlcmlza3MiLAorICAgICJhdXRv
IiwgImF2b2lkIiwgImJhY2tncm91bmQiLCAiYmFja3dhcmRzIiwgImJhc2VsaW5lIiwgImJlbG93
IiwgImJpZGktb3ZlcnJpZGUiLCAiYmluYXJ5IiwgImJlbmdhbGkiLCAiYmxpbmsiLAorICAgICJi
bG9jayIsICJibG9jay1heGlzIiwgImJvbGQiLCAiYm9sZGVyIiwgImJvcmRlciIsICJib3JkZXIt
Ym94IiwgImJvdGgiLCAiYm90dG9tIiwgImJyZWFrLWFsbCIsICJicmVhay13b3JkIiwgImJ1dHRv
biIsCisgICAgImJ1dHRvbi1iZXZlbCIsICJidXR0b25mYWNlIiwgImJ1dHRvbmhpZ2hsaWdodCIs
ICJidXR0b25zaGFkb3ciLCAiYnV0dG9udGV4dCIsICJjYW1ib2RpYW4iLCAiY2FwaXRhbGl6ZSIs
ICJjYXBzLWxvY2staW5kaWNhdG9yIiwKKyAgICAiY2FwdGlvbiIsICJjYXB0aW9udGV4dCIsICJj
YXJldCIsICJjZWxsIiwgImNlbnRlciIsICJjaGVja2JveCIsICJjaXJjbGUiLCAiY2prLWVhcnRo
bHktYnJhbmNoIiwgImNqay1oZWF2ZW5seS1zdGVtIiwgImNqay1pZGVvZ3JhcGhpYyIsCisgICAg
ImNsZWFyIiwgImNsaXAiLCAiY2xvc2UtcXVvdGUiLCAiY29sLXJlc2l6ZSIsICJjb2xsYXBzZSIs
ICJjb21wYWN0IiwgImNvbmRlbnNlZCIsICJjb250YWluIiwgImNvbnRlbnQiLCAiY29udGVudC1i
b3giLCAiY29udGV4dC1tZW51IiwKKyAgICAiY29udGludW91cyIsICJjb3B5IiwgImNvdmVyIiwg
ImNyb3AiLCAiY3Jvc3MiLCAiY3Jvc3NoYWlyIiwgImN1cnJlbnRjb2xvciIsICJjdXJzaXZlIiwg
ImRhc2hlZCIsICJkZWNpbWFsIiwgImRlY2ltYWwtbGVhZGluZy16ZXJvIiwgImRlZmF1bHQiLAor
ICAgICJkZWZhdWx0LWJ1dHRvbiIsICJkZXN0aW5hdGlvbi1hdG9wIiwgImRlc3RpbmF0aW9uLWlu
IiwgImRlc3RpbmF0aW9uLW91dCIsICJkZXN0aW5hdGlvbi1vdmVyIiwgImRldmFuYWdhcmkiLCAi
ZGlzYyIsICJkaXNjYXJkIiwgImRvY3VtZW50IiwKKyAgICAiZG90LWRhc2giLCAiZG90LWRvdC1k
YXNoIiwgImRvdHRlZCIsICJkb3VibGUiLCAiZG93biIsICJlLXJlc2l6ZSIsICJlYXNlIiwgImVh
c2UtaW4iLCAiZWFzZS1pbi1vdXQiLCAiZWFzZS1vdXQiLCAiZWxlbWVudCIsCisgICAgImVsbGlw
c2lzIiwgImVtYmVkIiwgImVuZCIsICJldGhpb3BpYyIsICJldGhpb3BpYy1hYmVnZWRlIiwgImV0
aGlvcGljLWFiZWdlZGUtYW0tZXQiLCAiZXRoaW9waWMtYWJlZ2VkZS1nZXoiLAorICAgICJldGhp
b3BpYy1hYmVnZWRlLXRpLWVyIiwgImV0aGlvcGljLWFiZWdlZGUtdGktZXQiLCAiZXRoaW9waWMt
aGFsZWhhbWUtYWEtZXIiLCAiZXRoaW9waWMtaGFsZWhhbWUtYWEtZXQiLAorICAgICJldGhpb3Bp
Yy1oYWxlaGFtZS1hbS1ldCIsICJldGhpb3BpYy1oYWxlaGFtZS1nZXoiLCAiZXRoaW9waWMtaGFs
ZWhhbWUtb20tZXQiLCAiZXRoaW9waWMtaGFsZWhhbWUtc2lkLWV0IiwKKyAgICAiZXRoaW9waWMt
aGFsZWhhbWUtc28tZXQiLCAiZXRoaW9waWMtaGFsZWhhbWUtdGktZXIiLCAiZXRoaW9waWMtaGFs
ZWhhbWUtdGktZXQiLCAiZXRoaW9waWMtaGFsZWhhbWUtdGlnIiwgImV3LXJlc2l6ZSIsICJleHBh
bmRlZCIsCisgICAgImV4dHJhLWNvbmRlbnNlZCIsICJleHRyYS1leHBhbmRlZCIsICJmYW50YXN5
IiwgImZhc3QiLCAiZmlsbCIsICJmaXhlZCIsICJmbGF0IiwgImZvb3Rub3RlcyIsICJmb3J3YXJk
cyIsICJmcm9tIiwgImdlb21ldHJpY1ByZWNpc2lvbiIsCisgICAgImdlb3JnaWFuIiwgImdyYXl0
ZXh0IiwgImdyb292ZSIsICJndWphcmF0aSIsICJndXJtdWtoaSIsICJoYW5kIiwgImhhbmd1bCIs
ICJoYW5ndWwtY29uc29uYW50IiwgImhlYnJldyIsICJoZWxwIiwKKyAgICAiaGlkZGVuIiwgImhp
ZGUiLCAiaGlnaGVyIiwgImhpZ2hsaWdodCIsICJoaWdobGlnaHR0ZXh0IiwgImhpcmFnYW5hIiwg
ImhpcmFnYW5hLWlyb2hhIiwgImhvcml6b250YWwiLCAiaHNsIiwgImhzbGEiLCAiaWNvbiIsICJp
Z25vcmUiLAorICAgICJpbmFjdGl2ZWJvcmRlciIsICJpbmFjdGl2ZWNhcHRpb24iLCAiaW5hY3Rp
dmVjYXB0aW9udGV4dCIsICJpbmZpbml0ZSIsICJpbmZvYmFja2dyb3VuZCIsICJpbmZvdGV4dCIs
ICJpbmhlcml0IiwgImluaXRpYWwiLCAiaW5saW5lIiwKKyAgICAiaW5saW5lLWF4aXMiLCAiaW5s
aW5lLWJsb2NrIiwgImlubGluZS10YWJsZSIsICJpbnNldCIsICJpbnNpZGUiLCAiaW50cmluc2lj
IiwgImludmVydCIsICJpdGFsaWMiLCAianVzdGlmeSIsICJrYW5uYWRhIiwgImthdGFrYW5hIiwK
KyAgICAia2F0YWthbmEtaXJvaGEiLCAia2htZXIiLCAibGFuZHNjYXBlIiwgImxhbyIsICJsYXJn
ZSIsICJsYXJnZXIiLCAibGVmdCIsICJsZXZlbCIsICJsaWdodGVyIiwgImxpbmUtdGhyb3VnaCIs
ICJsaW5lYXIiLCAibGluZXMiLAorICAgICJsaXN0LWl0ZW0iLCAibGlzdGJveCIsICJsaXN0aXRl
bSIsICJsb2NhbCIsICJsb2dpY2FsIiwgImxvdWQiLCAibG93ZXIiLCAibG93ZXItYWxwaGEiLCAi
bG93ZXItYXJtZW5pYW4iLCAibG93ZXItZ3JlZWsiLAorICAgICJsb3dlci1oZXhhZGVjaW1hbCIs
ICJsb3dlci1sYXRpbiIsICJsb3dlci1ub3J3ZWdpYW4iLCAibG93ZXItcm9tYW4iLCAibG93ZXJj
YXNlIiwgImx0ciIsICJtYWxheWFsYW0iLCAibWF0Y2giLCAibWVkaWEtY29udHJvbHMtYmFja2dy
b3VuZCIsCisgICAgIm1lZGlhLWN1cnJlbnQtdGltZS1kaXNwbGF5IiwgIm1lZGlhLWZ1bGxzY3Jl
ZW4tYnV0dG9uIiwgIm1lZGlhLW11dGUtYnV0dG9uIiwgIm1lZGlhLXBsYXktYnV0dG9uIiwgIm1l
ZGlhLXJldHVybi10by1yZWFsdGltZS1idXR0b24iLAorICAgICJtZWRpYS1yZXdpbmQtYnV0dG9u
IiwgIm1lZGlhLXNlZWstYmFjay1idXR0b24iLCAibWVkaWEtc2Vlay1mb3J3YXJkLWJ1dHRvbiIs
ICJtZWRpYS1zbGlkZXIiLCAibWVkaWEtc2xpZGVydGh1bWIiLCAibWVkaWEtdGltZS1yZW1haW5p
bmctZGlzcGxheSIsCisgICAgIm1lZGlhLXZvbHVtZS1zbGlkZXIiLCAibWVkaWEtdm9sdW1lLXNs
aWRlci1jb250YWluZXIiLCAibWVkaWEtdm9sdW1lLXNsaWRlcnRodW1iIiwgIm1lZGl1bSIsICJt
ZW51IiwgIm1lbnVsaXN0IiwgIm1lbnVsaXN0LWJ1dHRvbiIsCisgICAgIm1lbnVsaXN0LXRleHQi
LCAibWVudWxpc3QtdGV4dGZpZWxkIiwgIm1lbnV0ZXh0IiwgIm1lc3NhZ2UtYm94IiwgIm1pZGRs
ZSIsICJtaW4taW50cmluc2ljIiwgIm1peCIsICJtb25nb2xpYW4iLCAibW9ub3NwYWNlIiwgIm1v
dmUiLCAibXVsdGlwbGUiLAorICAgICJteWFubWFyIiwgIm4tcmVzaXplIiwgIm5hcnJvd2VyIiwg
Im5hdnkiLCAibmUtcmVzaXplIiwgIm5lc3ctcmVzaXplIiwgIm5vLWNsb3NlLXF1b3RlIiwgIm5v
LWRyb3AiLCAibm8tb3Blbi1xdW90ZSIsICJuby1yZXBlYXQiLCAibm9uZSIsCisgICAgIm5vcm1h
bCIsICJub3QtYWxsb3dlZCIsICJub3dyYXAiLCAibnMtcmVzaXplIiwgIm53LXJlc2l6ZSIsICJu
d3NlLXJlc2l6ZSIsICJvYmxpcXVlIiwgIm9jdGFsIiwgIm9wZW4tcXVvdGUiLCAib3B0aW1pemVM
ZWdpYmlsaXR5IiwKKyAgICAib3B0aW1pemVTcGVlZCIsICJvcml5YSIsICJvcm9tbyIsICJvdXRz
ZXQiLCAib3V0c2lkZSIsICJvdmVybGF5IiwgIm92ZXJsaW5lIiwgInBhZGRpbmciLCAicGFkZGlu
Zy1ib3giLCAicGFpbnRlZCIsICJwYXVzZWQiLAorICAgICJwZXJzaWFuIiwgInBsdXMtZGFya2Vy
IiwgInBsdXMtbGlnaHRlciIsICJwb2ludGVyIiwgInBvcnRyYWl0IiwgInByZSIsICJwcmUtbGlu
ZSIsICJwcmUtd3JhcCIsICJwcmVzZXJ2ZS0zZCIsICJwcm9ncmVzcyIsCisgICAgInB1c2gtYnV0
dG9uIiwgInJhZGlvIiwgInJlYWQtb25seSIsICJyZWFkLXdyaXRlIiwgInJlYWQtd3JpdGUtcGxh
aW50ZXh0LW9ubHkiLCAicmVsYXRpdmUiLCAicmVwZWF0IiwgInJlcGVhdC14IiwKKyAgICAicmVw
ZWF0LXkiLCAicmVzZXQiLCAicmV2ZXJzZSIsICJyZ2IiLCAicmdiYSIsICJyaWRnZSIsICJyaWdo
dCIsICJyb3VuZCIsICJyb3ctcmVzaXplIiwgInJ0bCIsICJydW4taW4iLCAicnVubmluZyIsICJz
LXJlc2l6ZSIsICJzYW5zLXNlcmlmIiwKKyAgICAic2Nyb2xsIiwgInNjcm9sbGJhciIsICJzZS1y
ZXNpemUiLCAic2VhcmNoZmllbGQiLCAic2VhcmNoZmllbGQtY2FuY2VsLWJ1dHRvbiIsICJzZWFy
Y2hmaWVsZC1kZWNvcmF0aW9uIiwgInNlYXJjaGZpZWxkLXJlc3VsdHMtYnV0dG9uIiwKKyAgICAi
c2VhcmNoZmllbGQtcmVzdWx0cy1kZWNvcmF0aW9uIiwgInNlbWktY29uZGVuc2VkIiwgInNlbWkt
ZXhwYW5kZWQiLCAic2VwYXJhdGUiLCAic2VyaWYiLCAic2hvdyIsICJzaWRhbWEiLCAic2luZ2xl
IiwKKyAgICAic2tpcC13aGl0ZS1zcGFjZSIsICJzbGlkZSIsICJzbGlkZXItaG9yaXpvbnRhbCIs
ICJzbGlkZXItdmVydGljYWwiLCAic2xpZGVydGh1bWItaG9yaXpvbnRhbCIsICJzbGlkZXJ0aHVt
Yi12ZXJ0aWNhbCIsICJzbG93IiwKKyAgICAic21hbGwiLCAic21hbGwtY2FwcyIsICJzbWFsbC1j
YXB0aW9uIiwgInNtYWxsZXIiLCAic29saWQiLCAic29tYWxpIiwgInNvdXJjZS1hdG9wIiwgInNv
dXJjZS1pbiIsICJzb3VyY2Utb3V0IiwgInNvdXJjZS1vdmVyIiwKKyAgICAic3BhY2UiLCAic3F1
YXJlIiwgInNxdWFyZS1idXR0b24iLCAic3RhcnQiLCAic3RhdGljIiwgInN0YXR1cy1iYXIiLCAi
c3RyZXRjaCIsICJzdHJva2UiLCAic3ViIiwgInN1YnBpeGVsLWFudGlhbGlhc2VkIiwgInN1cGVy
IiwKKyAgICAic3ctcmVzaXplIiwgInRhYmxlIiwgInRhYmxlLWNhcHRpb24iLCAidGFibGUtY2Vs
bCIsICJ0YWJsZS1jb2x1bW4iLCAidGFibGUtY29sdW1uLWdyb3VwIiwgInRhYmxlLWZvb3Rlci1n
cm91cCIsICJ0YWJsZS1oZWFkZXItZ3JvdXAiLAorICAgICJ0YWJsZS1yb3ciLCAidGFibGUtcm93
LWdyb3VwIiwgInRlbHVndSIsICJ0ZXh0IiwgInRleHQtYm90dG9tIiwgInRleHQtdG9wIiwgInRl
eHRhcmVhIiwgInRleHRmaWVsZCIsICJ0aGFpIiwgInRoaWNrIiwgInRoaW4iLAorICAgICJ0aHJl
ZWRkYXJrc2hhZG93IiwgInRocmVlZGZhY2UiLCAidGhyZWVkaGlnaGxpZ2h0IiwgInRocmVlZGxp
Z2h0c2hhZG93IiwgInRocmVlZHNoYWRvdyIsICJ0aWJldGFuIiwgInRpZ3JlIiwgInRpZ3Jpbnlh
LWVyIiwgInRpZ3JpbnlhLWVyLWFiZWdlZGUiLAorICAgICJ0aWdyaW55YS1ldCIsICJ0aWdyaW55
YS1ldC1hYmVnZWRlIiwgInRvIiwgInRvcCIsICJ0cmFuc3BhcmVudCIsICJ1bHRyYS1jb25kZW5z
ZWQiLCAidWx0cmEtZXhwYW5kZWQiLCAidW5kZXJsaW5lIiwgInVwIiwgInVwcGVyLWFscGhhIiwg
InVwcGVyLWFybWVuaWFuIiwKKyAgICAidXBwZXItZ3JlZWsiLCAidXBwZXItaGV4YWRlY2ltYWwi
LCAidXBwZXItbGF0aW4iLCAidXBwZXItbm9yd2VnaWFuIiwgInVwcGVyLXJvbWFuIiwgInVwcGVy
Y2FzZSIsICJ1cmR1IiwgInVybCIsICJ2ZXJ0aWNhbCIsICJ2ZXJ0aWNhbC10ZXh0IiwgInZpc2li
bGUiLAorICAgICJ2aXNpYmxlRmlsbCIsICJ2aXNpYmxlUGFpbnRlZCIsICJ2aXNpYmxlU3Ryb2tl
IiwgInZpc3VhbCIsICJ3LXJlc2l6ZSIsICJ3YWl0IiwgIndhdmUiLCAid2hpdGUiLCAid2lkZXIi
LCAid2luZG93IiwgIndpbmRvd2ZyYW1lIiwgIndpbmRvd3RleHQiLAorICAgICJ4LWxhcmdlIiwg
Ingtc21hbGwiLCAieG9yIiwgInh4LWxhcmdlIiwgInh4LXNtYWxsIiwgInllbGxvdyIsICItd2Fw
LW1hcnF1ZWUiLCAiLXdlYmtpdC1hY3RpdmVsaW5rIiwgIi13ZWJraXQtYXV0byIsICItd2Via2l0
LWJhc2VsaW5lLW1pZGRsZSIsCisgICAgIi13ZWJraXQtYm9keSIsICItd2Via2l0LWJveCIsICIt
d2Via2l0LWNlbnRlciIsICItd2Via2l0LWNvbnRyb2wiLCAiLXdlYmtpdC1mb2N1cy1yaW5nLWNv
bG9yIiwgIi13ZWJraXQtZ3JhYiIsICItd2Via2l0LWdyYWJiaW5nIiwKKyAgICAiLXdlYmtpdC1n
cmFkaWVudCIsICItd2Via2l0LWlubGluZS1ib3giLCAiLXdlYmtpdC1sZWZ0IiwgIi13ZWJraXQt
bGluayIsICItd2Via2l0LW1hcnF1ZWUiLCAiLXdlYmtpdC1taW5pLWNvbnRyb2wiLCAiLXdlYmtp
dC1ub3dyYXAiLCAiLXdlYmtpdC1waWN0b2dyYXBoIiwKKyAgICAiLXdlYmtpdC1yaWdodCIsICIt
d2Via2l0LXNtYWxsLWNvbnRyb2wiLCAiLXdlYmtpdC10ZXh0IiwgIi13ZWJraXQteHh4LWxhcmdl
IiwgIi13ZWJraXQtem9vbS1pbiIsICItd2Via2l0LXpvb20tb3V0Il0pOworCisgIGZ1bmN0aW9u
IGtleVNldChhcnJheSkgeyB2YXIga2V5cyA9IHt9OyBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5
Lmxlbmd0aDsgKytpKSBrZXlzW2FycmF5W2ldXSA9IHRydWU7IHJldHVybiBrZXlzOyB9CisgIGZ1
bmN0aW9uIHJldChzdHlsZSwgdHApIHt0eXBlID0gdHA7IHJldHVybiBzdHlsZTt9CisKKyAgZnVu
Y3Rpb24gdG9rZW5CYXNlKHN0cmVhbSwgc3RhdGUpIHsKKyAgICB2YXIgY2ggPSBzdHJlYW0ubmV4
dCgpOworICAgIGlmIChjaCA9PSAiQCIpIHtzdHJlYW0uZWF0V2hpbGUoL1tcd1xcXC1dLyk7IHJl
dHVybiByZXQoIm1ldGEiLCBzdHJlYW0uY3VycmVudCgpKTt9CisgICAgZWxzZSBpZiAoY2ggPT0g
Ii8iICYmIHN0cmVhbS5lYXQoIioiKSkgeworICAgICAgc3RhdGUudG9rZW5pemUgPSB0b2tlbkND
b21tZW50OworICAgICAgcmV0dXJuIHRva2VuQ0NvbW1lbnQoc3RyZWFtLCBzdGF0ZSk7CisgICAg
fQorICAgIGVsc2UgaWYgKGNoID09ICI8IiAmJiBzdHJlYW0uZWF0KCIhIikpIHsKKyAgICAgIHN0
YXRlLnRva2VuaXplID0gdG9rZW5TR01MQ29tbWVudDsKKyAgICAgIHJldHVybiB0b2tlblNHTUxD
b21tZW50KHN0cmVhbSwgc3RhdGUpOworICAgIH0KKyAgICBlbHNlIGlmIChjaCA9PSAiPSIpIHJl
dChudWxsLCAiY29tcGFyZSIpOworICAgIGVsc2UgaWYgKChjaCA9PSAifiIgfHwgY2ggPT0gInwi
KSAmJiBzdHJlYW0uZWF0KCI9IikpIHJldHVybiByZXQobnVsbCwgImNvbXBhcmUiKTsKKyAgICBl
bHNlIGlmIChjaCA9PSAiXCIiIHx8IGNoID09ICInIikgeworICAgICAgc3RhdGUudG9rZW5pemUg
PSB0b2tlblN0cmluZyhjaCk7CisgICAgICByZXR1cm4gc3RhdGUudG9rZW5pemUoc3RyZWFtLCBz
dGF0ZSk7CisgICAgfQorICAgIGVsc2UgaWYgKGNoID09ICIjIikgeworICAgICAgc3RyZWFtLmVh
dFdoaWxlKC9bXHdcXFwtXS8pOworICAgICAgcmV0dXJuIHJldCgiYXRvbSIsICJoYXNoIik7Cisg
ICAgfQorICAgIGVsc2UgaWYgKGNoID09ICIhIikgeworICAgICAgc3RyZWFtLm1hdGNoKC9eXHMq
XHcqLyk7CisgICAgICByZXR1cm4gcmV0KCJrZXl3b3JkIiwgImltcG9ydGFudCIpOworICAgIH0K
KyAgICBlbHNlIGlmICgvXGQvLnRlc3QoY2gpKSB7CisgICAgICBzdHJlYW0uZWF0V2hpbGUoL1tc
dy4lXS8pOworICAgICAgcmV0dXJuIHJldCgibnVtYmVyIiwgInVuaXQiKTsKKyAgICB9CisgICAg
ZWxzZSBpZiAoL1ssLis+KlwvXS8udGVzdChjaCkpIHsKKyAgICAgIHJldHVybiByZXQobnVsbCwg
InNlbGVjdC1vcCIpOworICAgIH0KKyAgICBlbHNlIGlmICgvWzt7fTpcW1xdXS8udGVzdChjaCkp
IHsKKyAgICAgIHJldHVybiByZXQobnVsbCwgY2gpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAg
IHN0cmVhbS5lYXRXaGlsZSgvW1x3XFxcLV0vKTsKKyAgICAgIHJldHVybiByZXQoInZhcmlhYmxl
IiwgInZhcmlhYmxlIik7CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24gdG9rZW5DQ29tbWVudChz
dHJlYW0sIHN0YXRlKSB7CisgICAgdmFyIG1heWJlRW5kID0gZmFsc2UsIGNoOworICAgIHdoaWxl
ICgoY2ggPSBzdHJlYW0ubmV4dCgpKSAhPSBudWxsKSB7CisgICAgICBpZiAobWF5YmVFbmQgJiYg
Y2ggPT0gIi8iKSB7CisgICAgICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5CYXNlOworICAgICAg
ICBicmVhazsKKyAgICAgIH0KKyAgICAgIG1heWJlRW5kID0gKGNoID09ICIqIik7CisgICAgfQor
ICAgIHJldHVybiByZXQoImNvbW1lbnQiLCAiY29tbWVudCIpOworICB9CisKKyAgZnVuY3Rpb24g
dG9rZW5TR01MQ29tbWVudChzdHJlYW0sIHN0YXRlKSB7CisgICAgdmFyIGRhc2hlcyA9IDAsIGNo
OworICAgIHdoaWxlICgoY2ggPSBzdHJlYW0ubmV4dCgpKSAhPSBudWxsKSB7CisgICAgICBpZiAo
ZGFzaGVzID49IDIgJiYgY2ggPT0gIj4iKSB7CisgICAgICAgIHN0YXRlLnRva2VuaXplID0gdG9r
ZW5CYXNlOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGRhc2hlcyA9IChjaCA9PSAi
LSIpID8gZGFzaGVzICsgMSA6IDA7CisgICAgfQorICAgIHJldHVybiByZXQoImNvbW1lbnQiLCAi
Y29tbWVudCIpOworICB9CisKKyAgZnVuY3Rpb24gdG9rZW5TdHJpbmcocXVvdGUpIHsKKyAgICBy
ZXR1cm4gZnVuY3Rpb24oc3RyZWFtLCBzdGF0ZSkgeworICAgICAgdmFyIGVzY2FwZWQgPSBmYWxz
ZSwgY2g7CisgICAgICB3aGlsZSAoKGNoID0gc3RyZWFtLm5leHQoKSkgIT0gbnVsbCkgeworICAg
ICAgICBpZiAoY2ggPT0gcXVvdGUgJiYgIWVzY2FwZWQpCisgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGVzY2FwZWQgPSAhZXNjYXBlZCAmJiBjaCA9PSAiXFwiOworICAgICAgfQorICAgICAgaWYg
KCFlc2NhcGVkKSBzdGF0ZS50b2tlbml6ZSA9IHRva2VuQmFzZTsKKyAgICAgIHJldHVybiByZXQo
InN0cmluZyIsICJzdHJpbmciKTsKKyAgICB9OworICB9CisKKyAgcmV0dXJuIHsKKyAgICBzdGFy
dFN0YXRlOiBmdW5jdGlvbihiYXNlKSB7CisgICAgICByZXR1cm4ge3Rva2VuaXplOiB0b2tlbkJh
c2UsCisgICAgICAgICAgICAgIGJhc2VJbmRlbnQ6IGJhc2UgfHwgMCwKKyAgICAgICAgICAgICAg
c3RhY2s6IFtdfTsKKyAgICB9LAorCisgICAgdG9rZW46IGZ1bmN0aW9uKHN0cmVhbSwgc3RhdGUp
IHsKKyAgICAgIGlmIChzdHJlYW0uZWF0U3BhY2UoKSkgcmV0dXJuIG51bGw7CisgICAgICB2YXIg
c3R5bGUgPSBzdGF0ZS50b2tlbml6ZShzdHJlYW0sIHN0YXRlKTsKKworICAgICAgdmFyIGNvbnRl
eHQgPSBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV07CisgICAgICBpZiAodHlwZSA9
PSAiaGFzaCIgJiYgY29udGV4dCAhPSAicnVsZSIpIHN0eWxlID0gInN0cmluZy0yIjsKKyAgICAg
IGVsc2UgaWYgKHN0eWxlID09ICJ2YXJpYWJsZSIpIHsKKyAgICAgICAgaWYgKGNvbnRleHQgPT0g
InJ1bGUiKSBzdHlsZSA9IGtleXdvcmRzW3N0cmVhbS5jdXJyZW50KCldID8gImtleXdvcmQiIDog
Im51bWJlciI7CisgICAgICAgIGVsc2UgaWYgKCFjb250ZXh0IHx8IGNvbnRleHQgPT0gIkBtZWRp
YXsiKSBzdHlsZSA9ICJ0YWciOworICAgICAgfQorCisgICAgICBpZiAoY29udGV4dCA9PSAicnVs
ZSIgJiYgL15bXHtcfTtdJC8udGVzdCh0eXBlKSkKKyAgICAgICAgc3RhdGUuc3RhY2sucG9wKCk7
CisgICAgICBpZiAodHlwZSA9PSAieyIpIHsKKyAgICAgICAgaWYgKGNvbnRleHQgPT0gIkBtZWRp
YSIpIHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9ICJAbWVkaWF7IjsKKyAgICAg
ICAgZWxzZSBzdGF0ZS5zdGFjay5wdXNoKCJ7Iik7CisgICAgICB9CisgICAgICBlbHNlIGlmICh0
eXBlID09ICJ9Iikgc3RhdGUuc3RhY2sucG9wKCk7CisgICAgICBlbHNlIGlmICh0eXBlID09ICJA
bWVkaWEiKSBzdGF0ZS5zdGFjay5wdXNoKCJAbWVkaWEiKTsKKyAgICAgIGVsc2UgaWYgKGNvbnRl
eHQgPT0gInsiICYmIHR5cGUgIT0gImNvbW1lbnQiKSBzdGF0ZS5zdGFjay5wdXNoKCJydWxlIik7
CisgICAgICByZXR1cm4gc3R5bGU7CisgICAgfSwKKworICAgIGluZGVudDogZnVuY3Rpb24oc3Rh
dGUsIHRleHRBZnRlcikgeworICAgICAgdmFyIG4gPSBzdGF0ZS5zdGFjay5sZW5ndGg7CisgICAg
ICBpZiAoL15cfS8udGVzdCh0ZXh0QWZ0ZXIpKQorICAgICAgICBuIC09IHN0YXRlLnN0YWNrW3N0
YXRlLnN0YWNrLmxlbmd0aC0xXSA9PSAicnVsZSIgPyAyIDogMTsKKyAgICAgIHJldHVybiBzdGF0
ZS5iYXNlSW5kZW50ICsgbiAqIGluZGVudFVuaXQ7CisgICAgfSwKKworICAgIGVsZWN0cmljQ2hh
cnM6ICJ9IgorICB9OworfSk7CisKK0NvZGVNaXJyb3IuZGVmaW5lTUlNRSgidGV4dC9jc3MiLCAi
Y3NzIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2h0
bWxtaXhlZC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaHRtbG1peGVk
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM0N2NhYTcxNzNlZWVhNGY4ZGUxNzU0N2IwNWFhNzE1NDFmMWU4MGQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2h0
bWxtaXhlZC5qcwpAQCAtMCwwICsxLDg1IEBACitDb2RlTWlycm9yLmRlZmluZU1vZGUoImh0bWxt
aXhlZCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CisgIHZhciBodG1sTW9kZSA9
IENvZGVNaXJyb3IuZ2V0TW9kZShjb25maWcsIHtuYW1lOiAieG1sIiwgaHRtbE1vZGU6IHRydWV9
KTsKKyAgdmFyIGpzTW9kZSA9IENvZGVNaXJyb3IuZ2V0TW9kZShjb25maWcsICJqYXZhc2NyaXB0
Iik7CisgIHZhciBjc3NNb2RlID0gQ29kZU1pcnJvci5nZXRNb2RlKGNvbmZpZywgImNzcyIpOwor
CisgIGZ1bmN0aW9uIGh0bWwoc3RyZWFtLCBzdGF0ZSkgeworICAgIHZhciBzdHlsZSA9IGh0bWxN
b2RlLnRva2VuKHN0cmVhbSwgc3RhdGUuaHRtbFN0YXRlKTsKKyAgICBpZiAoc3R5bGUgPT0gInRh
ZyIgJiYgc3RyZWFtLmN1cnJlbnQoKSA9PSAiPiIgJiYgc3RhdGUuaHRtbFN0YXRlLmNvbnRleHQp
IHsKKyAgICAgIGlmICgvXnNjcmlwdCQvaS50ZXN0KHN0YXRlLmh0bWxTdGF0ZS5jb250ZXh0LnRh
Z05hbWUpKSB7CisgICAgICAgIHN0YXRlLnRva2VuID0gamF2YXNjcmlwdDsKKyAgICAgICAgc3Rh
dGUubG9jYWxTdGF0ZSA9IGpzTW9kZS5zdGFydFN0YXRlKGh0bWxNb2RlLmluZGVudChzdGF0ZS5o
dG1sU3RhdGUsICIiKSk7CisgICAgICAgIHN0YXRlLm1vZGUgPSAiamF2YXNjcmlwdCI7CisgICAg
ICB9CisgICAgICBlbHNlIGlmICgvXnN0eWxlJC9pLnRlc3Qoc3RhdGUuaHRtbFN0YXRlLmNvbnRl
eHQudGFnTmFtZSkpIHsKKyAgICAgICAgc3RhdGUudG9rZW4gPSBjc3M7CisgICAgICAgIHN0YXRl
LmxvY2FsU3RhdGUgPSBjc3NNb2RlLnN0YXJ0U3RhdGUoaHRtbE1vZGUuaW5kZW50KHN0YXRlLmh0
bWxTdGF0ZSwgIiIpKTsKKyAgICAgICAgc3RhdGUubW9kZSA9ICJjc3MiOworICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gc3R5bGU7CisgIH0KKyAgZnVuY3Rpb24gbWF5YmVCYWNrdXAoc3RyZWFt
LCBwYXQsIHN0eWxlKSB7CisgICAgdmFyIGN1ciA9IHN0cmVhbS5jdXJyZW50KCk7CisgICAgdmFy
IGNsb3NlID0gY3VyLnNlYXJjaChwYXQpOworICAgIGlmIChjbG9zZSA+IC0xKSBzdHJlYW0uYmFj
a1VwKGN1ci5sZW5ndGggLSBjbG9zZSk7CisgICAgcmV0dXJuIHN0eWxlOworICB9CisgIGZ1bmN0
aW9uIGphdmFzY3JpcHQoc3RyZWFtLCBzdGF0ZSkgeworICAgIGlmIChzdHJlYW0ubWF0Y2goL148
XC9ccypzY3JpcHRccyo+L2ksIGZhbHNlKSkgeworICAgICAgc3RhdGUudG9rZW4gPSBodG1sOwor
ICAgICAgc3RhdGUubG9jYWxTdGF0ZSA9IG51bGw7CisgICAgICBzdGF0ZS5tb2RlID0gImh0bWwi
OworICAgICAgcmV0dXJuIGh0bWwoc3RyZWFtLCBzdGF0ZSk7CisgICAgfQorICAgIHJldHVybiBt
YXliZUJhY2t1cChzdHJlYW0sIC88XC9ccypzY3JpcHRccyo+LywKKyAgICAgICAgICAgICAgICAg
ICAgICAganNNb2RlLnRva2VuKHN0cmVhbSwgc3RhdGUubG9jYWxTdGF0ZSkpOworICB9CisgIGZ1
bmN0aW9uIGNzcyhzdHJlYW0sIHN0YXRlKSB7CisgICAgaWYgKHN0cmVhbS5tYXRjaCgvXjxcL1xz
KnN0eWxlXHMqPi9pLCBmYWxzZSkpIHsKKyAgICAgIHN0YXRlLnRva2VuID0gaHRtbDsKKyAgICAg
IHN0YXRlLmxvY2FsU3RhdGUgPSBudWxsOworICAgICAgc3RhdGUubW9kZSA9ICJodG1sIjsKKyAg
ICAgIHJldHVybiBodG1sKHN0cmVhbSwgc3RhdGUpOworICAgIH0KKyAgICByZXR1cm4gbWF5YmVC
YWNrdXAoc3RyZWFtLCAvPFwvXHMqc3R5bGVccyo+LywKKyAgICAgICAgICAgICAgICAgICAgICAg
Y3NzTW9kZS50b2tlbihzdHJlYW0sIHN0YXRlLmxvY2FsU3RhdGUpKTsKKyAgfQorCisgIHJldHVy
biB7CisgICAgc3RhcnRTdGF0ZTogZnVuY3Rpb24oKSB7CisgICAgICB2YXIgc3RhdGUgPSBodG1s
TW9kZS5zdGFydFN0YXRlKCk7CisgICAgICByZXR1cm4ge3Rva2VuOiBodG1sLCBsb2NhbFN0YXRl
OiBudWxsLCBtb2RlOiAiaHRtbCIsIGh0bWxTdGF0ZTogc3RhdGV9OworICAgIH0sCisKKyAgICBj
b3B5U3RhdGU6IGZ1bmN0aW9uKHN0YXRlKSB7CisgICAgICBpZiAoc3RhdGUubG9jYWxTdGF0ZSkK
KyAgICAgICAgdmFyIGxvY2FsID0gQ29kZU1pcnJvci5jb3B5U3RhdGUoc3RhdGUudG9rZW4gPT0g
Y3NzID8gY3NzTW9kZSA6IGpzTW9kZSwgc3RhdGUubG9jYWxTdGF0ZSk7CisgICAgICByZXR1cm4g
e3Rva2VuOiBzdGF0ZS50b2tlbiwgbG9jYWxTdGF0ZTogbG9jYWwsIG1vZGU6IHN0YXRlLm1vZGUs
CisgICAgICAgICAgICAgIGh0bWxTdGF0ZTogQ29kZU1pcnJvci5jb3B5U3RhdGUoaHRtbE1vZGUs
IHN0YXRlLmh0bWxTdGF0ZSl9OworICAgIH0sCisKKyAgICB0b2tlbjogZnVuY3Rpb24oc3RyZWFt
LCBzdGF0ZSkgeworICAgICAgcmV0dXJuIHN0YXRlLnRva2VuKHN0cmVhbSwgc3RhdGUpOworICAg
IH0sCisKKyAgICBpbmRlbnQ6IGZ1bmN0aW9uKHN0YXRlLCB0ZXh0QWZ0ZXIpIHsKKyAgICAgIGlm
IChzdGF0ZS50b2tlbiA9PSBodG1sIHx8IC9eXHMqPFwvLy50ZXN0KHRleHRBZnRlcikpCisgICAg
ICAgIHJldHVybiBodG1sTW9kZS5pbmRlbnQoc3RhdGUuaHRtbFN0YXRlLCB0ZXh0QWZ0ZXIpOwor
ICAgICAgZWxzZSBpZiAoc3RhdGUudG9rZW4gPT0gamF2YXNjcmlwdCkKKyAgICAgICAgcmV0dXJu
IGpzTW9kZS5pbmRlbnQoc3RhdGUubG9jYWxTdGF0ZSwgdGV4dEFmdGVyKTsKKyAgICAgIGVsc2UK
KyAgICAgICAgcmV0dXJuIGNzc01vZGUuaW5kZW50KHN0YXRlLmxvY2FsU3RhdGUsIHRleHRBZnRl
cik7CisgICAgfSwKKworICAgIGNvbXBhcmVTdGF0ZXM6IGZ1bmN0aW9uKGEsIGIpIHsKKyAgICAg
IGlmIChhLm1vZGUgIT0gYi5tb2RlKSByZXR1cm4gZmFsc2U7CisgICAgICBpZiAoYS5sb2NhbFN0
YXRlKSByZXR1cm4gQ29kZU1pcnJvci5QYXNzOworICAgICAgcmV0dXJuIGh0bWxNb2RlLmNvbXBh
cmVTdGF0ZXMoYS5odG1sU3RhdGUsIGIuaHRtbFN0YXRlKTsKKyAgICB9LAorCisgICAgZWxlY3Ry
aWNDaGFyczogIi97fToiCisgIH07Cit9LCAieG1sIiwgImphdmFzY3JpcHQiLCAiY3NzIik7CisK
K0NvZGVNaXJyb3IuZGVmaW5lTUlNRSgidGV4dC9odG1sIiwgImh0bWxtaXhlZCIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXgg
MDVmN2ExZDg2OTI5ZGQ3YWE2OTc1ZGU1ODIwZTFlMjhhNzQzNTMzYi4uZTlhMjZjNGVkMDJlZjUw
NzJjZjcwZjE5NTFmNDBlN2I0ZTFiYTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xMjAsNiArMTIwLDEyIEBAIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iTmV0d29ya1BhbmVs
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJU
ZXh0RWRpdG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJEZWZhdWx0VGV4dEVkaXRvci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ29kZU1pcnJvclRleHRFZGl0b3IuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImNvZGVtaXJyb3IuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImNzcy5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iamF2
YXNjcmlwdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0ieG1sLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJodG1sbWl4ZWQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IlNvdXJjZUZyYW1lLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJVSVNvdXJjZUNvZGVGcmFtZS5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUmVzb3VyY2VWaWV3Lmpz
Ij48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvamF2YXNjcmlwdC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvamF2
YXNjcmlwdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTNjMzI2ZGYyMzMyZDdmNTNkYmRlNmE1NjA5OWE1NjYy
MmQzMzdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9qYXZhc2NyaXB0LmpzCkBAIC0wLDAgKzEsMzYxIEBACitDb2RlTWlycm9yLmRlZmluZU1v
ZGUoImphdmFzY3JpcHQiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgeworICB2YXIg
aW5kZW50VW5pdCA9IGNvbmZpZy5pbmRlbnRVbml0OworICB2YXIganNvbk1vZGUgPSBwYXJzZXJD
b25maWcuanNvbjsKKworICAvLyBUb2tlbml6ZXIKKworICB2YXIga2V5d29yZHMgPSBmdW5jdGlv
bigpeworICAgIGZ1bmN0aW9uIGt3KHR5cGUpIHtyZXR1cm4ge3R5cGU6IHR5cGUsIHN0eWxlOiAi
a2V5d29yZCJ9O30KKyAgICB2YXIgQSA9IGt3KCJrZXl3b3JkIGEiKSwgQiA9IGt3KCJrZXl3b3Jk
IGIiKSwgQyA9IGt3KCJrZXl3b3JkIGMiKTsKKyAgICB2YXIgb3BlcmF0b3IgPSBrdygib3BlcmF0
b3IiKSwgYXRvbSA9IHt0eXBlOiAiYXRvbSIsIHN0eWxlOiAiYXRvbSJ9OworICAgIHJldHVybiB7
CisgICAgICAiaWYiOiBBLCAid2hpbGUiOiBBLCAid2l0aCI6IEEsICJlbHNlIjogQiwgImRvIjog
QiwgInRyeSI6IEIsICJmaW5hbGx5IjogQiwKKyAgICAgICJyZXR1cm4iOiBDLCAiYnJlYWsiOiBD
LCAiY29udGludWUiOiBDLCAibmV3IjogQywgImRlbGV0ZSI6IEMsICJ0aHJvdyI6IEMsCisgICAg
ICAidmFyIjoga3coInZhciIpLCAiY29uc3QiOiBrdygidmFyIiksICJsZXQiOiBrdygidmFyIiks
CisgICAgICAiZnVuY3Rpb24iOiBrdygiZnVuY3Rpb24iKSwgImNhdGNoIjoga3coImNhdGNoIiks
CisgICAgICAiZm9yIjoga3coImZvciIpLCAic3dpdGNoIjoga3coInN3aXRjaCIpLCAiY2FzZSI6
IGt3KCJjYXNlIiksICJkZWZhdWx0Ijoga3coImRlZmF1bHQiKSwKKyAgICAgICJpbiI6IG9wZXJh
dG9yLCAidHlwZW9mIjogb3BlcmF0b3IsICJpbnN0YW5jZW9mIjogb3BlcmF0b3IsCisgICAgICAi
dHJ1ZSI6IGF0b20sICJmYWxzZSI6IGF0b20sICJudWxsIjogYXRvbSwgInVuZGVmaW5lZCI6IGF0
b20sICJOYU4iOiBhdG9tLCAiSW5maW5pdHkiOiBhdG9tCisgICAgfTsKKyAgfSgpOworCisgIHZh
ciBpc09wZXJhdG9yQ2hhciA9IC9bK1wtKiYlPTw+IT98XS87CisKKyAgZnVuY3Rpb24gY2hhaW4o
c3RyZWFtLCBzdGF0ZSwgZikgeworICAgIHN0YXRlLnRva2VuaXplID0gZjsKKyAgICByZXR1cm4g
ZihzdHJlYW0sIHN0YXRlKTsKKyAgfQorCisgIGZ1bmN0aW9uIG5leHRVbnRpbFVuZXNjYXBlZChz
dHJlYW0sIGVuZCkgeworICAgIHZhciBlc2NhcGVkID0gZmFsc2UsIG5leHQ7CisgICAgd2hpbGUg
KChuZXh0ID0gc3RyZWFtLm5leHQoKSkgIT0gbnVsbCkgeworICAgICAgaWYgKG5leHQgPT0gZW5k
ICYmICFlc2NhcGVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICBlc2NhcGVkID0gIWVz
Y2FwZWQgJiYgbmV4dCA9PSAiXFwiOworICAgIH0KKyAgICByZXR1cm4gZXNjYXBlZDsKKyAgfQor
CisgIC8vIFVzZWQgYXMgc2NyYXRjaCB2YXJpYWJsZXMgdG8gY29tbXVuaWNhdGUgbXVsdGlwbGUg
dmFsdWVzIHdpdGhvdXQKKyAgLy8gY29uc2luZyB1cCB0b25zIG9mIG9iamVjdHMuCisgIHZhciB0
eXBlLCBjb250ZW50OworICBmdW5jdGlvbiByZXQodHAsIHN0eWxlLCBjb250KSB7CisgICAgdHlw
ZSA9IHRwOyBjb250ZW50ID0gY29udDsKKyAgICByZXR1cm4gc3R5bGU7CisgIH0KKworICBmdW5j
dGlvbiBqc1Rva2VuQmFzZShzdHJlYW0sIHN0YXRlKSB7CisgICAgdmFyIGNoID0gc3RyZWFtLm5l
eHQoKTsKKyAgICBpZiAoY2ggPT0gJyInIHx8IGNoID09ICInIikKKyAgICAgIHJldHVybiBjaGFp
bihzdHJlYW0sIHN0YXRlLCBqc1Rva2VuU3RyaW5nKGNoKSk7CisgICAgZWxzZSBpZiAoL1tcW1xd
e31cKFwpLDtcOlwuXS8udGVzdChjaCkpCisgICAgICByZXR1cm4gcmV0KGNoKTsKKyAgICBlbHNl
IGlmIChjaCA9PSAiMCIgJiYgc3RyZWFtLmVhdCgveC9pKSkgeworICAgICAgc3RyZWFtLmVhdFdo
aWxlKC9bXGRhLWZdL2kpOworICAgICAgcmV0dXJuIHJldCgibnVtYmVyIiwgIm51bWJlciIpOwor
ICAgIH0KKyAgICBlbHNlIGlmICgvXGQvLnRlc3QoY2gpIHx8IGNoID09ICItIiAmJiBzdHJlYW0u
ZWF0KC9cZC8pKSB7CisgICAgICBzdHJlYW0ubWF0Y2goL15cZCooPzpcLlxkKik/KD86W2VFXVsr
XC1dP1xkKyk/Lyk7CisgICAgICByZXR1cm4gcmV0KCJudW1iZXIiLCAibnVtYmVyIik7CisgICAg
fQorICAgIGVsc2UgaWYgKGNoID09ICIvIikgeworICAgICAgaWYgKHN0cmVhbS5lYXQoIioiKSkg
eworICAgICAgICByZXR1cm4gY2hhaW4oc3RyZWFtLCBzdGF0ZSwganNUb2tlbkNvbW1lbnQpOwor
ICAgICAgfQorICAgICAgZWxzZSBpZiAoc3RyZWFtLmVhdCgiLyIpKSB7CisgICAgICAgIHN0cmVh
bS5za2lwVG9FbmQoKTsKKyAgICAgICAgcmV0dXJuIHJldCgiY29tbWVudCIsICJjb21tZW50Iik7
CisgICAgICB9CisgICAgICBlbHNlIGlmIChzdGF0ZS5yZUFsbG93ZWQpIHsKKyAgICAgICAgbmV4
dFVudGlsVW5lc2NhcGVkKHN0cmVhbSwgIi8iKTsKKyAgICAgICAgc3RyZWFtLmVhdFdoaWxlKC9b
Z2lteV0vKTsgLy8gJ3knIGlzICJzdGlja3kiIG9wdGlvbiBpbiBNb3ppbGxhCisgICAgICAgIHJl
dHVybiByZXQoInJlZ2V4cCIsICJzdHJpbmctMiIpOworICAgICAgfQorICAgICAgZWxzZSB7Cisg
ICAgICAgIHN0cmVhbS5lYXRXaGlsZShpc09wZXJhdG9yQ2hhcik7CisgICAgICAgIHJldHVybiBy
ZXQoIm9wZXJhdG9yIiwgbnVsbCwgc3RyZWFtLmN1cnJlbnQoKSk7CisgICAgICB9CisgICAgfQor
ICAgIGVsc2UgaWYgKGNoID09ICIjIikgeworICAgICAgICBzdHJlYW0uc2tpcFRvRW5kKCk7Cisg
ICAgICAgIHJldHVybiByZXQoImVycm9yIiwgImVycm9yIik7CisgICAgfQorICAgIGVsc2UgaWYg
KGlzT3BlcmF0b3JDaGFyLnRlc3QoY2gpKSB7CisgICAgICBzdHJlYW0uZWF0V2hpbGUoaXNPcGVy
YXRvckNoYXIpOworICAgICAgcmV0dXJuIHJldCgib3BlcmF0b3IiLCBudWxsLCBzdHJlYW0uY3Vy
cmVudCgpKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBzdHJlYW0uZWF0V2hpbGUoL1tcd1wk
X10vKTsKKyAgICAgIHZhciB3b3JkID0gc3RyZWFtLmN1cnJlbnQoKSwga25vd24gPSBrZXl3b3Jk
cy5wcm9wZXJ0eUlzRW51bWVyYWJsZSh3b3JkKSAmJiBrZXl3b3Jkc1t3b3JkXTsKKyAgICAgIHJl
dHVybiAoa25vd24gJiYgc3RhdGUua3dBbGxvd2VkKSA/IHJldChrbm93bi50eXBlLCBrbm93bi5z
dHlsZSwgd29yZCkgOgorICAgICAgICAgICAgICAgICAgICAgcmV0KCJ2YXJpYWJsZSIsICJ2YXJp
YWJsZSIsIHdvcmQpOworICAgIH0KKyAgfQorCisgIGZ1bmN0aW9uIGpzVG9rZW5TdHJpbmcocXVv
dGUpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24oc3RyZWFtLCBzdGF0ZSkgeworICAgICAgaWYgKCFu
ZXh0VW50aWxVbmVzY2FwZWQoc3RyZWFtLCBxdW90ZSkpCisgICAgICAgIHN0YXRlLnRva2VuaXpl
ID0ganNUb2tlbkJhc2U7CisgICAgICByZXR1cm4gcmV0KCJzdHJpbmciLCAic3RyaW5nIik7Cisg
ICAgfTsKKyAgfQorCisgIGZ1bmN0aW9uIGpzVG9rZW5Db21tZW50KHN0cmVhbSwgc3RhdGUpIHsK
KyAgICB2YXIgbWF5YmVFbmQgPSBmYWxzZSwgY2g7CisgICAgd2hpbGUgKGNoID0gc3RyZWFtLm5l
eHQoKSkgeworICAgICAgaWYgKGNoID09ICIvIiAmJiBtYXliZUVuZCkgeworICAgICAgICBzdGF0
ZS50b2tlbml6ZSA9IGpzVG9rZW5CYXNlOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAg
IG1heWJlRW5kID0gKGNoID09ICIqIik7CisgICAgfQorICAgIHJldHVybiByZXQoImNvbW1lbnQi
LCAiY29tbWVudCIpOworICB9CisKKyAgLy8gUGFyc2VyCisKKyAgdmFyIGF0b21pY1R5cGVzID0g
eyJhdG9tIjogdHJ1ZSwgIm51bWJlciI6IHRydWUsICJ2YXJpYWJsZSI6IHRydWUsICJzdHJpbmci
OiB0cnVlLCAicmVnZXhwIjogdHJ1ZX07CisKKyAgZnVuY3Rpb24gSlNMZXhpY2FsKGluZGVudGVk
LCBjb2x1bW4sIHR5cGUsIGFsaWduLCBwcmV2LCBpbmZvKSB7CisgICAgdGhpcy5pbmRlbnRlZCA9
IGluZGVudGVkOworICAgIHRoaXMuY29sdW1uID0gY29sdW1uOworICAgIHRoaXMudHlwZSA9IHR5
cGU7CisgICAgdGhpcy5wcmV2ID0gcHJldjsKKyAgICB0aGlzLmluZm8gPSBpbmZvOworICAgIGlm
IChhbGlnbiAhPSBudWxsKSB0aGlzLmFsaWduID0gYWxpZ247CisgIH0KKworICBmdW5jdGlvbiBp
blNjb3BlKHN0YXRlLCB2YXJuYW1lKSB7CisgICAgZm9yICh2YXIgdiA9IHN0YXRlLmxvY2FsVmFy
czsgdjsgdiA9IHYubmV4dCkKKyAgICAgIGlmICh2Lm5hbWUgPT0gdmFybmFtZSkgcmV0dXJuIHRy
dWU7CisgIH0KKworICBmdW5jdGlvbiBwYXJzZUpTKHN0YXRlLCBzdHlsZSwgdHlwZSwgY29udGVu
dCwgc3RyZWFtKSB7CisgICAgdmFyIGNjID0gc3RhdGUuY2M7CisgICAgLy8gQ29tbXVuaWNhdGUg
b3VyIGNvbnRleHQgdG8gdGhlIGNvbWJpbmF0b3JzLgorICAgIC8vIChMZXNzIHdhc3RlZnVsIHRo
YW4gY29uc2luZyB1cCBhIGh1bmRyZWQgY2xvc3VyZXMgb24gZXZlcnkgY2FsbC4pCisgICAgY3gu
c3RhdGUgPSBzdGF0ZTsgY3guc3RyZWFtID0gc3RyZWFtOyBjeC5tYXJrZWQgPSBudWxsLCBjeC5j
YyA9IGNjOworCisgICAgaWYgKCFzdGF0ZS5sZXhpY2FsLmhhc093blByb3BlcnR5KCJhbGlnbiIp
KQorICAgICAgc3RhdGUubGV4aWNhbC5hbGlnbiA9IHRydWU7CisKKyAgICB3aGlsZSh0cnVlKSB7
CisgICAgICB2YXIgY29tYmluYXRvciA9IGNjLmxlbmd0aCA/IGNjLnBvcCgpIDoganNvbk1vZGUg
PyBleHByZXNzaW9uIDogc3RhdGVtZW50OworICAgICAgaWYgKGNvbWJpbmF0b3IodHlwZSwgY29u
dGVudCkpIHsKKyAgICAgICAgd2hpbGUoY2MubGVuZ3RoICYmIGNjW2NjLmxlbmd0aCAtIDFdLmxl
eCkKKyAgICAgICAgICBjYy5wb3AoKSgpOworICAgICAgICBpZiAoY3gubWFya2VkKSByZXR1cm4g
Y3gubWFya2VkOworICAgICAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiICYmIGluU2NvcGUoc3Rh
dGUsIGNvbnRlbnQpKSByZXR1cm4gInZhcmlhYmxlLTIiOworICAgICAgICByZXR1cm4gc3R5bGU7
CisgICAgICB9CisgICAgfQorICB9CisKKyAgLy8gQ29tYmluYXRvciB1dGlscworCisgIHZhciBj
eCA9IHtzdGF0ZTogbnVsbCwgY29sdW1uOiBudWxsLCBtYXJrZWQ6IG51bGwsIGNjOiBudWxsfTsK
KyAgZnVuY3Rpb24gcGFzcygpIHsKKyAgICBmb3IgKHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCAt
IDE7IGkgPj0gMDsgaS0tKSBjeC5jYy5wdXNoKGFyZ3VtZW50c1tpXSk7CisgIH0KKyAgZnVuY3Rp
b24gY29udCgpIHsKKyAgICBwYXNzLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7CisgICAgcmV0dXJu
IHRydWU7CisgIH0KKyAgZnVuY3Rpb24gcmVnaXN0ZXIodmFybmFtZSkgeworICAgIHZhciBzdGF0
ZSA9IGN4LnN0YXRlOworICAgIGlmIChzdGF0ZS5jb250ZXh0KSB7CisgICAgICBjeC5tYXJrZWQg
PSAiZGVmIjsKKyAgICAgIGZvciAodmFyIHYgPSBzdGF0ZS5sb2NhbFZhcnM7IHY7IHYgPSB2Lm5l
eHQpCisgICAgICAgIGlmICh2Lm5hbWUgPT0gdmFybmFtZSkgcmV0dXJuOworICAgICAgc3RhdGUu
bG9jYWxWYXJzID0ge25hbWU6IHZhcm5hbWUsIG5leHQ6IHN0YXRlLmxvY2FsVmFyc307CisgICAg
fQorICB9CisKKyAgLy8gQ29tYmluYXRvcnMKKworICB2YXIgZGVmYXVsdFZhcnMgPSB7bmFtZTog
InRoaXMiLCBuZXh0OiB7bmFtZTogImFyZ3VtZW50cyJ9fTsKKyAgZnVuY3Rpb24gcHVzaGNvbnRl
eHQoKSB7CisgICAgaWYgKCFjeC5zdGF0ZS5jb250ZXh0KSBjeC5zdGF0ZS5sb2NhbFZhcnMgPSBk
ZWZhdWx0VmFyczsKKyAgICBjeC5zdGF0ZS5jb250ZXh0ID0ge3ByZXY6IGN4LnN0YXRlLmNvbnRl
eHQsIHZhcnM6IGN4LnN0YXRlLmxvY2FsVmFyc307CisgIH0KKyAgZnVuY3Rpb24gcG9wY29udGV4
dCgpIHsKKyAgICBjeC5zdGF0ZS5sb2NhbFZhcnMgPSBjeC5zdGF0ZS5jb250ZXh0LnZhcnM7Cisg
ICAgY3guc3RhdGUuY29udGV4dCA9IGN4LnN0YXRlLmNvbnRleHQucHJldjsKKyAgfQorICBmdW5j
dGlvbiBwdXNobGV4KHR5cGUsIGluZm8pIHsKKyAgICB2YXIgcmVzdWx0ID0gZnVuY3Rpb24oKSB7
CisgICAgICB2YXIgc3RhdGUgPSBjeC5zdGF0ZTsKKyAgICAgIHN0YXRlLmxleGljYWwgPSBuZXcg
SlNMZXhpY2FsKHN0YXRlLmluZGVudGVkLCBjeC5zdHJlYW0uY29sdW1uKCksIHR5cGUsIG51bGws
IHN0YXRlLmxleGljYWwsIGluZm8pOworICAgIH07CisgICAgcmVzdWx0LmxleCA9IHRydWU7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorICBmdW5jdGlvbiBwb3BsZXgoKSB7CisgICAgdmFyIHN0
YXRlID0gY3guc3RhdGU7CisgICAgaWYgKHN0YXRlLmxleGljYWwucHJldikgeworICAgICAgaWYg
KHN0YXRlLmxleGljYWwudHlwZSA9PSAiKSIpCisgICAgICAgIHN0YXRlLmluZGVudGVkID0gc3Rh
dGUubGV4aWNhbC5pbmRlbnRlZDsKKyAgICAgIHN0YXRlLmxleGljYWwgPSBzdGF0ZS5sZXhpY2Fs
LnByZXY7CisgICAgfQorICB9CisgIHBvcGxleC5sZXggPSB0cnVlOworCisgIGZ1bmN0aW9uIGV4
cGVjdCh3YW50ZWQpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24gZXhwZWN0aW5nKHR5cGUpIHsKKyAg
ICAgIGlmICh0eXBlID09IHdhbnRlZCkgcmV0dXJuIGNvbnQoKTsKKyAgICAgIGVsc2UgaWYgKHdh
bnRlZCA9PSAiOyIpIHJldHVybiBwYXNzKCk7CisgICAgICBlbHNlIHJldHVybiBjb250KGFyZ3Vt
ZW50cy5jYWxsZWUpOworICAgIH07CisgIH0KKworICBmdW5jdGlvbiBzdGF0ZW1lbnQodHlwZSkg
eworICAgIGlmICh0eXBlID09ICJ2YXIiKSByZXR1cm4gY29udChwdXNobGV4KCJ2YXJkZWYiKSwg
dmFyZGVmMSwgZXhwZWN0KCI7IiksIHBvcGxleCk7CisgICAgaWYgKHR5cGUgPT0gImtleXdvcmQg
YSIpIHJldHVybiBjb250KHB1c2hsZXgoImZvcm0iKSwgZXhwcmVzc2lvbiwgc3RhdGVtZW50LCBw
b3BsZXgpOworICAgIGlmICh0eXBlID09ICJrZXl3b3JkIGIiKSByZXR1cm4gY29udChwdXNobGV4
KCJmb3JtIiksIHN0YXRlbWVudCwgcG9wbGV4KTsKKyAgICBpZiAodHlwZSA9PSAieyIpIHJldHVy
biBjb250KHB1c2hsZXgoIn0iKSwgYmxvY2ssIHBvcGxleCk7CisgICAgaWYgKHR5cGUgPT0gIjsi
KSByZXR1cm4gY29udCgpOworICAgIGlmICh0eXBlID09ICJmdW5jdGlvbiIpIHJldHVybiBjb250
KGZ1bmN0aW9uZGVmKTsKKyAgICBpZiAodHlwZSA9PSAiZm9yIikgcmV0dXJuIGNvbnQocHVzaGxl
eCgiZm9ybSIpLCBleHBlY3QoIigiKSwgcHVzaGxleCgiKSIpLCBmb3JzcGVjMSwgZXhwZWN0KCIp
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcGxleCwgc3RhdGVt
ZW50LCBwb3BsZXgpOworICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIHJldHVybiBjb250KHB1
c2hsZXgoInN0YXQiKSwgbWF5YmVsYWJlbCk7CisgICAgaWYgKHR5cGUgPT0gInN3aXRjaCIpIHJl
dHVybiBjb250KHB1c2hsZXgoImZvcm0iKSwgZXhwcmVzc2lvbiwgcHVzaGxleCgifSIsICJzd2l0
Y2giKSwgZXhwZWN0KCJ7IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJsb2NrLCBwb3BsZXgsIHBvcGxleCk7CisgICAgaWYgKHR5cGUgPT0gImNhc2UiKSByZXR1
cm4gY29udChleHByZXNzaW9uLCBleHBlY3QoIjoiKSk7CisgICAgaWYgKHR5cGUgPT0gImRlZmF1
bHQiKSByZXR1cm4gY29udChleHBlY3QoIjoiKSk7CisgICAgaWYgKHR5cGUgPT0gImNhdGNoIikg
cmV0dXJuIGNvbnQocHVzaGxleCgiZm9ybSIpLCBwdXNoY29udGV4dCwgZXhwZWN0KCIoIiksIGZ1
bmFyZywgZXhwZWN0KCIpIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGVtZW50LCBwb3BsZXgsIHBvcGNvbnRleHQpOworICAgIHJldHVybiBwYXNzKHB1c2hs
ZXgoInN0YXQiKSwgZXhwcmVzc2lvbiwgZXhwZWN0KCI7IiksIHBvcGxleCk7CisgIH0KKyAgZnVu
Y3Rpb24gZXhwcmVzc2lvbih0eXBlKSB7CisgICAgaWYgKGF0b21pY1R5cGVzLmhhc093blByb3Bl
cnR5KHR5cGUpKSByZXR1cm4gY29udChtYXliZW9wZXJhdG9yKTsKKyAgICBpZiAodHlwZSA9PSAi
ZnVuY3Rpb24iKSByZXR1cm4gY29udChmdW5jdGlvbmRlZik7CisgICAgaWYgKHR5cGUgPT0gImtl
eXdvcmQgYyIpIHJldHVybiBjb250KG1heWJlZXhwcmVzc2lvbik7CisgICAgaWYgKHR5cGUgPT0g
IigiKSByZXR1cm4gY29udChwdXNobGV4KCIpIiksIG1heWJlZXhwcmVzc2lvbiwgZXhwZWN0KCIp
IiksIHBvcGxleCwgbWF5YmVvcGVyYXRvcik7CisgICAgaWYgKHR5cGUgPT0gIm9wZXJhdG9yIikg
cmV0dXJuIGNvbnQoZXhwcmVzc2lvbik7CisgICAgaWYgKHR5cGUgPT0gIlsiKSByZXR1cm4gY29u
dChwdXNobGV4KCJdIiksIGNvbW1hc2VwKGV4cHJlc3Npb24sICJdIiksIHBvcGxleCwgbWF5YmVv
cGVyYXRvcik7CisgICAgaWYgKHR5cGUgPT0gInsiKSByZXR1cm4gY29udChwdXNobGV4KCJ9Iiks
IGNvbW1hc2VwKG9ianByb3AsICJ9IiksIHBvcGxleCwgbWF5YmVvcGVyYXRvcik7CisgICAgcmV0
dXJuIGNvbnQoKTsKKyAgfQorICBmdW5jdGlvbiBtYXliZWV4cHJlc3Npb24odHlwZSkgeworICAg
IGlmICh0eXBlLm1hdGNoKC9bO1x9XClcXSxdLykpIHJldHVybiBwYXNzKCk7CisgICAgcmV0dXJu
IHBhc3MoZXhwcmVzc2lvbik7CisgIH0KKworICBmdW5jdGlvbiBtYXliZW9wZXJhdG9yKHR5cGUs
IHZhbHVlKSB7CisgICAgaWYgKHR5cGUgPT0gIm9wZXJhdG9yIiAmJiAvXCtcK3wtLS8udGVzdCh2
YWx1ZSkpIHJldHVybiBjb250KG1heWJlb3BlcmF0b3IpOworICAgIGlmICh0eXBlID09ICJvcGVy
YXRvciIgJiYgdmFsdWUgPT0gIj8iKSByZXR1cm4gY29udChleHByZXNzaW9uLCBleHBlY3QoIjoi
KSwgZXhwcmVzc2lvbik7CisgICAgaWYgKHR5cGUgPT0gIjsiKSByZXR1cm47CisgICAgaWYgKHR5
cGUgPT0gIigiKSByZXR1cm4gY29udChwdXNobGV4KCIpIiksIGNvbW1hc2VwKGV4cHJlc3Npb24s
ICIpIiksIHBvcGxleCwgbWF5YmVvcGVyYXRvcik7CisgICAgaWYgKHR5cGUgPT0gIi4iKSByZXR1
cm4gY29udChwcm9wZXJ0eSwgbWF5YmVvcGVyYXRvcik7CisgICAgaWYgKHR5cGUgPT0gIlsiKSBy
ZXR1cm4gY29udChwdXNobGV4KCJdIiksIGV4cHJlc3Npb24sIGV4cGVjdCgiXSIpLCBwb3BsZXgs
IG1heWJlb3BlcmF0b3IpOworICB9CisgIGZ1bmN0aW9uIG1heWJlbGFiZWwodHlwZSkgeworICAg
IGlmICh0eXBlID09ICI6IikgcmV0dXJuIGNvbnQocG9wbGV4LCBzdGF0ZW1lbnQpOworICAgIHJl
dHVybiBwYXNzKG1heWJlb3BlcmF0b3IsIGV4cGVjdCgiOyIpLCBwb3BsZXgpOworICB9CisgIGZ1
bmN0aW9uIHByb3BlcnR5KHR5cGUpIHsKKyAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiKSB7Y3gu
bWFya2VkID0gInByb3BlcnR5IjsgcmV0dXJuIGNvbnQoKTt9CisgIH0KKyAgZnVuY3Rpb24gb2Jq
cHJvcCh0eXBlKSB7CisgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikgY3gubWFya2VkID0gInBy
b3BlcnR5IjsKKyAgICBpZiAoYXRvbWljVHlwZXMuaGFzT3duUHJvcGVydHkodHlwZSkpIHJldHVy
biBjb250KGV4cGVjdCgiOiIpLCBleHByZXNzaW9uKTsKKyAgfQorICBmdW5jdGlvbiBjb21tYXNl
cCh3aGF0LCBlbmQpIHsKKyAgICBmdW5jdGlvbiBwcm9jZWVkKHR5cGUpIHsKKyAgICAgIGlmICh0
eXBlID09ICIsIikgcmV0dXJuIGNvbnQod2hhdCwgcHJvY2VlZCk7CisgICAgICBpZiAodHlwZSA9
PSBlbmQpIHJldHVybiBjb250KCk7CisgICAgICByZXR1cm4gY29udChleHBlY3QoZW5kKSk7Cisg
ICAgfQorICAgIHJldHVybiBmdW5jdGlvbiBjb21tYVNlcGFyYXRlZCh0eXBlKSB7CisgICAgICBp
ZiAodHlwZSA9PSBlbmQpIHJldHVybiBjb250KCk7CisgICAgICBlbHNlIHJldHVybiBwYXNzKHdo
YXQsIHByb2NlZWQpOworICAgIH07CisgIH0KKyAgZnVuY3Rpb24gYmxvY2sodHlwZSkgeworICAg
IGlmICh0eXBlID09ICJ9IikgcmV0dXJuIGNvbnQoKTsKKyAgICByZXR1cm4gcGFzcyhzdGF0ZW1l
bnQsIGJsb2NrKTsKKyAgfQorICBmdW5jdGlvbiB2YXJkZWYxKHR5cGUsIHZhbHVlKSB7CisgICAg
aWYgKHR5cGUgPT0gInZhcmlhYmxlIil7cmVnaXN0ZXIodmFsdWUpOyByZXR1cm4gY29udCh2YXJk
ZWYyKTt9CisgICAgcmV0dXJuIGNvbnQoKTsKKyAgfQorICBmdW5jdGlvbiB2YXJkZWYyKHR5cGUs
IHZhbHVlKSB7CisgICAgaWYgKHZhbHVlID09ICI9IikgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbiwg
dmFyZGVmMik7CisgICAgaWYgKHR5cGUgPT0gIiwiKSByZXR1cm4gY29udCh2YXJkZWYxKTsKKyAg
fQorICBmdW5jdGlvbiBmb3JzcGVjMSh0eXBlKSB7CisgICAgaWYgKHR5cGUgPT0gInZhciIpIHJl
dHVybiBjb250KHZhcmRlZjEsIGZvcnNwZWMyKTsKKyAgICBpZiAodHlwZSA9PSAiOyIpIHJldHVy
biBwYXNzKGZvcnNwZWMyKTsKKyAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiKSByZXR1cm4gY29u
dChmb3JtYXliZWluKTsKKyAgICByZXR1cm4gcGFzcyhmb3JzcGVjMik7CisgIH0KKyAgZnVuY3Rp
b24gZm9ybWF5YmVpbih0eXBlLCB2YWx1ZSkgeworICAgIGlmICh2YWx1ZSA9PSAiaW4iKSByZXR1
cm4gY29udChleHByZXNzaW9uKTsKKyAgICByZXR1cm4gY29udChtYXliZW9wZXJhdG9yLCBmb3Jz
cGVjMik7CisgIH0KKyAgZnVuY3Rpb24gZm9yc3BlYzIodHlwZSwgdmFsdWUpIHsKKyAgICBpZiAo
dHlwZSA9PSAiOyIpIHJldHVybiBjb250KGZvcnNwZWMzKTsKKyAgICBpZiAodmFsdWUgPT0gImlu
IikgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbik7CisgICAgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbiwg
ZXhwZWN0KCI7IiksIGZvcnNwZWMzKTsKKyAgfQorICBmdW5jdGlvbiBmb3JzcGVjMyh0eXBlKSB7
CisgICAgaWYgKHR5cGUgIT0gIikiKSBjb250KGV4cHJlc3Npb24pOworICB9CisgIGZ1bmN0aW9u
IGZ1bmN0aW9uZGVmKHR5cGUsIHZhbHVlKSB7CisgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikg
e3JlZ2lzdGVyKHZhbHVlKTsgcmV0dXJuIGNvbnQoZnVuY3Rpb25kZWYpO30KKyAgICBpZiAodHlw
ZSA9PSAiKCIpIHJldHVybiBjb250KHB1c2hsZXgoIikiKSwgcHVzaGNvbnRleHQsIGNvbW1hc2Vw
KGZ1bmFyZywgIikiKSwgcG9wbGV4LCBzdGF0ZW1lbnQsIHBvcGNvbnRleHQpOworICB9CisgIGZ1
bmN0aW9uIGZ1bmFyZyh0eXBlLCB2YWx1ZSkgeworICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIp
IHtyZWdpc3Rlcih2YWx1ZSk7IHJldHVybiBjb250KCk7fQorICB9CisKKyAgLy8gSW50ZXJmYWNl
CisKKyAgcmV0dXJuIHsKKyAgICBzdGFydFN0YXRlOiBmdW5jdGlvbihiYXNlY29sdW1uKSB7Cisg
ICAgICByZXR1cm4geworICAgICAgICB0b2tlbml6ZToganNUb2tlbkJhc2UsCisgICAgICAgIHJl
QWxsb3dlZDogdHJ1ZSwKKyAgICAgICAga3dBbGxvd2VkOiB0cnVlLAorICAgICAgICBjYzogW10s
CisgICAgICAgIGxleGljYWw6IG5ldyBKU0xleGljYWwoKGJhc2Vjb2x1bW4gfHwgMCkgLSBpbmRl
bnRVbml0LCAwLCAiYmxvY2siLCBmYWxzZSksCisgICAgICAgIGxvY2FsVmFyczogcGFyc2VyQ29u
ZmlnLmxvY2FsVmFycywKKyAgICAgICAgY29udGV4dDogcGFyc2VyQ29uZmlnLmxvY2FsVmFycyAm
JiB7dmFyczogcGFyc2VyQ29uZmlnLmxvY2FsVmFyc30sCisgICAgICAgIGluZGVudGVkOiAwCisg
ICAgICB9OworICAgIH0sCisKKyAgICB0b2tlbjogZnVuY3Rpb24oc3RyZWFtLCBzdGF0ZSkgewor
ICAgICAgaWYgKHN0cmVhbS5zb2woKSkgeworICAgICAgICBpZiAoIXN0YXRlLmxleGljYWwuaGFz
T3duUHJvcGVydHkoImFsaWduIikpCisgICAgICAgICAgc3RhdGUubGV4aWNhbC5hbGlnbiA9IGZh
bHNlOworICAgICAgICBzdGF0ZS5pbmRlbnRlZCA9IHN0cmVhbS5pbmRlbnRhdGlvbigpOworICAg
ICAgfQorICAgICAgaWYgKHN0cmVhbS5lYXRTcGFjZSgpKSByZXR1cm4gbnVsbDsKKyAgICAgIHZh
ciBzdHlsZSA9IHN0YXRlLnRva2VuaXplKHN0cmVhbSwgc3RhdGUpOworICAgICAgaWYgKHR5cGUg
PT0gImNvbW1lbnQiKSByZXR1cm4gc3R5bGU7CisgICAgICBzdGF0ZS5yZUFsbG93ZWQgPSAhISh0
eXBlID09ICJvcGVyYXRvciIgfHwgdHlwZSA9PSAia2V5d29yZCBjIiB8fCB0eXBlLm1hdGNoKC9e
W1xbe31cKCw7Ol0kLykpOworICAgICAgc3RhdGUua3dBbGxvd2VkID0gdHlwZSAhPSAnLic7Cisg
ICAgICByZXR1cm4gcGFyc2VKUyhzdGF0ZSwgc3R5bGUsIHR5cGUsIGNvbnRlbnQsIHN0cmVhbSk7
CisgICAgfSwKKworICAgIGluZGVudDogZnVuY3Rpb24oc3RhdGUsIHRleHRBZnRlcikgeworICAg
ICAgaWYgKHN0YXRlLnRva2VuaXplICE9IGpzVG9rZW5CYXNlKSByZXR1cm4gMDsKKyAgICAgIHZh
ciBmaXJzdENoYXIgPSB0ZXh0QWZ0ZXIgJiYgdGV4dEFmdGVyLmNoYXJBdCgwKSwgbGV4aWNhbCA9
IHN0YXRlLmxleGljYWw7CisgICAgICBpZiAobGV4aWNhbC50eXBlID09ICJzdGF0IiAmJiBmaXJz
dENoYXIgPT0gIn0iKSBsZXhpY2FsID0gbGV4aWNhbC5wcmV2OworICAgICAgdmFyIHR5cGUgPSBs
ZXhpY2FsLnR5cGUsIGNsb3NpbmcgPSBmaXJzdENoYXIgPT0gdHlwZTsKKyAgICAgIGlmICh0eXBl
ID09ICJ2YXJkZWYiKSByZXR1cm4gbGV4aWNhbC5pbmRlbnRlZCArIDQ7CisgICAgICBlbHNlIGlm
ICh0eXBlID09ICJmb3JtIiAmJiBmaXJzdENoYXIgPT0gInsiKSByZXR1cm4gbGV4aWNhbC5pbmRl
bnRlZDsKKyAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInN0YXQiIHx8IHR5cGUgPT0gImZvcm0iKSBy
ZXR1cm4gbGV4aWNhbC5pbmRlbnRlZCArIGluZGVudFVuaXQ7CisgICAgICBlbHNlIGlmIChsZXhp
Y2FsLmluZm8gPT0gInN3aXRjaCIgJiYgIWNsb3NpbmcpCisgICAgICAgIHJldHVybiBsZXhpY2Fs
LmluZGVudGVkICsgKC9eKD86Y2FzZXxkZWZhdWx0KVxiLy50ZXN0KHRleHRBZnRlcikgPyBpbmRl
bnRVbml0IDogMiAqIGluZGVudFVuaXQpOworICAgICAgZWxzZSBpZiAobGV4aWNhbC5hbGlnbikg
cmV0dXJuIGxleGljYWwuY29sdW1uICsgKGNsb3NpbmcgPyAwIDogMSk7CisgICAgICBlbHNlIHJl
dHVybiBsZXhpY2FsLmluZGVudGVkICsgKGNsb3NpbmcgPyAwIDogaW5kZW50VW5pdCk7CisgICAg
fSwKKworICAgIGVsZWN0cmljQ2hhcnM6ICI6e30iCisgIH07Cit9KTsKKworQ29kZU1pcnJvci5k
ZWZpbmVNSU1FKCJ0ZXh0L2phdmFzY3JpcHQiLCAiamF2YXNjcmlwdCIpOworQ29kZU1pcnJvci5k
ZWZpbmVNSU1FKCJhcHBsaWNhdGlvbi9qc29uIiwge25hbWU6ICJqYXZhc2NyaXB0IiwganNvbjog
dHJ1ZX0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC94
bWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3htbC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jMGY0MzUxZmE1MWM5YjFhODYwMzZjYmM2ZjVhYzM5NWZmMTg0NzBkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC94bWwuanMKQEAgLTAs
MCArMSwzMjYgQEAKK0NvZGVNaXJyb3IuZGVmaW5lTW9kZSgieG1sIiwgZnVuY3Rpb24oY29uZmln
LCBwYXJzZXJDb25maWcpIHsKKyAgdmFyIGluZGVudFVuaXQgPSBjb25maWcuaW5kZW50VW5pdDsK
KyAgdmFyIEtsdWRnZXMgPSBwYXJzZXJDb25maWcuaHRtbE1vZGUgPyB7CisgICAgYXV0b1NlbGZD
bG9zZXJzOiB7J2FyZWEnOiB0cnVlLCAnYmFzZSc6IHRydWUsICdicic6IHRydWUsICdjb2wnOiB0
cnVlLCAnY29tbWFuZCc6IHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgJ2VtYmVkJzogdHJ1
ZSwgJ2ZyYW1lJzogdHJ1ZSwgJ2hyJzogdHJ1ZSwgJ2ltZyc6IHRydWUsICdpbnB1dCc6IHRydWUs
CisgICAgICAgICAgICAgICAgICAgICAgJ2tleWdlbic6IHRydWUsICdsaW5rJzogdHJ1ZSwgJ21l
dGEnOiB0cnVlLCAncGFyYW0nOiB0cnVlLCAnc291cmNlJzogdHJ1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAndHJhY2snOiB0cnVlLCAnd2JyJzogdHJ1ZX0sCisgICAgaW1wbGljaXRseUNsb3Nl
ZDogeydkZCc6IHRydWUsICdsaSc6IHRydWUsICdvcHRncm91cCc6IHRydWUsICdvcHRpb24nOiB0
cnVlLCAncCc6IHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICdycCc6IHRydWUsICdydCc6
IHRydWUsICd0Ym9keSc6IHRydWUsICd0ZCc6IHRydWUsICd0Zm9vdCc6IHRydWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICd0aCc6IHRydWUsICd0cic6IHRydWV9LAorICAgIGNvbnRleHRHcmFi
YmVyczogeworICAgICAgJ2RkJzogeydkZCc6IHRydWUsICdkdCc6IHRydWV9LAorICAgICAgJ2R0
JzogeydkZCc6IHRydWUsICdkdCc6IHRydWV9LAorICAgICAgJ2xpJzogeydsaSc6IHRydWV9LAor
ICAgICAgJ29wdGlvbic6IHsnb3B0aW9uJzogdHJ1ZSwgJ29wdGdyb3VwJzogdHJ1ZX0sCisgICAg
ICAnb3B0Z3JvdXAnOiB7J29wdGdyb3VwJzogdHJ1ZX0sCisgICAgICAncCc6IHsnYWRkcmVzcyc6
IHRydWUsICdhcnRpY2xlJzogdHJ1ZSwgJ2FzaWRlJzogdHJ1ZSwgJ2Jsb2NrcXVvdGUnOiB0cnVl
LCAnZGlyJzogdHJ1ZSwKKyAgICAgICAgICAgICdkaXYnOiB0cnVlLCAnZGwnOiB0cnVlLCAnZmll
bGRzZXQnOiB0cnVlLCAnZm9vdGVyJzogdHJ1ZSwgJ2Zvcm0nOiB0cnVlLAorICAgICAgICAgICAg
J2gxJzogdHJ1ZSwgJ2gyJzogdHJ1ZSwgJ2gzJzogdHJ1ZSwgJ2g0JzogdHJ1ZSwgJ2g1JzogdHJ1
ZSwgJ2g2JzogdHJ1ZSwKKyAgICAgICAgICAgICdoZWFkZXInOiB0cnVlLCAnaGdyb3VwJzogdHJ1
ZSwgJ2hyJzogdHJ1ZSwgJ21lbnUnOiB0cnVlLCAnbmF2JzogdHJ1ZSwgJ29sJzogdHJ1ZSwKKyAg
ICAgICAgICAgICdwJzogdHJ1ZSwgJ3ByZSc6IHRydWUsICdzZWN0aW9uJzogdHJ1ZSwgJ3RhYmxl
JzogdHJ1ZSwgJ3VsJzogdHJ1ZX0sCisgICAgICAncnAnOiB7J3JwJzogdHJ1ZSwgJ3J0JzogdHJ1
ZX0sCisgICAgICAncnQnOiB7J3JwJzogdHJ1ZSwgJ3J0JzogdHJ1ZX0sCisgICAgICAndGJvZHkn
OiB7J3Rib2R5JzogdHJ1ZSwgJ3Rmb290JzogdHJ1ZX0sCisgICAgICAndGQnOiB7J3RkJzogdHJ1
ZSwgJ3RoJzogdHJ1ZX0sCisgICAgICAndGZvb3QnOiB7J3Rib2R5JzogdHJ1ZX0sCisgICAgICAn
dGgnOiB7J3RkJzogdHJ1ZSwgJ3RoJzogdHJ1ZX0sCisgICAgICAndGhlYWQnOiB7J3Rib2R5Jzog
dHJ1ZSwgJ3Rmb290JzogdHJ1ZX0sCisgICAgICAndHInOiB7J3RyJzogdHJ1ZX0KKyAgICB9LAor
ICAgIGRvTm90SW5kZW50OiB7InByZSI6IHRydWV9LAorICAgIGFsbG93VW5xdW90ZWQ6IHRydWUs
CisgICAgYWxsb3dNaXNzaW5nOiB0cnVlCisgIH0gOiB7CisgICAgYXV0b1NlbGZDbG9zZXJzOiB7
fSwKKyAgICBpbXBsaWNpdGx5Q2xvc2VkOiB7fSwKKyAgICBjb250ZXh0R3JhYmJlcnM6IHt9LAor
ICAgIGRvTm90SW5kZW50OiB7fSwKKyAgICBhbGxvd1VucXVvdGVkOiBmYWxzZSwKKyAgICBhbGxv
d01pc3Npbmc6IGZhbHNlCisgIH07CisgIHZhciBhbGlnbkNEQVRBID0gcGFyc2VyQ29uZmlnLmFs
aWduQ0RBVEE7CisKKyAgLy8gUmV0dXJuIHZhcmlhYmxlcyBmb3IgdG9rZW5pemVycworICB2YXIg
dGFnTmFtZSwgdHlwZTsKKworICBmdW5jdGlvbiBpblRleHQoc3RyZWFtLCBzdGF0ZSkgeworICAg
IGZ1bmN0aW9uIGNoYWluKHBhcnNlcikgeworICAgICAgc3RhdGUudG9rZW5pemUgPSBwYXJzZXI7
CisgICAgICByZXR1cm4gcGFyc2VyKHN0cmVhbSwgc3RhdGUpOworICAgIH0KKworICAgIHZhciBj
aCA9IHN0cmVhbS5uZXh0KCk7CisgICAgaWYgKGNoID09ICI8IikgeworICAgICAgaWYgKHN0cmVh
bS5lYXQoIiEiKSkgeworICAgICAgICBpZiAoc3RyZWFtLmVhdCgiWyIpKSB7CisgICAgICAgICAg
aWYgKHN0cmVhbS5tYXRjaCgiQ0RBVEFbIikpIHJldHVybiBjaGFpbihpbkJsb2NrKCJhdG9tIiwg
Il1dPiIpKTsKKyAgICAgICAgICBlbHNlIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICAg
IGVsc2UgaWYgKHN0cmVhbS5tYXRjaCgiLS0iKSkgcmV0dXJuIGNoYWluKGluQmxvY2soImNvbW1l
bnQiLCAiLS0+IikpOworICAgICAgICBlbHNlIGlmIChzdHJlYW0ubWF0Y2goIkRPQ1RZUEUiLCB0
cnVlLCB0cnVlKSkgeworICAgICAgICAgIHN0cmVhbS5lYXRXaGlsZSgvW1x3XC5fXC1dLyk7Cisg
ICAgICAgICAgcmV0dXJuIGNoYWluKGRvY3R5cGUoMSkpOworICAgICAgICB9CisgICAgICAgIGVs
c2UgcmV0dXJuIG51bGw7CisgICAgICB9CisgICAgICBlbHNlIGlmIChzdHJlYW0uZWF0KCI/Iikp
IHsKKyAgICAgICAgc3RyZWFtLmVhdFdoaWxlKC9bXHdcLl9cLV0vKTsKKyAgICAgICAgc3RhdGUu
dG9rZW5pemUgPSBpbkJsb2NrKCJtZXRhIiwgIj8+Iik7CisgICAgICAgIHJldHVybiAibWV0YSI7
CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdHlwZSA9IHN0cmVhbS5lYXQoIi8iKSA/
ICJjbG9zZVRhZyIgOiAib3BlblRhZyI7CisgICAgICAgIHN0cmVhbS5lYXRTcGFjZSgpOworICAg
ICAgICB0YWdOYW1lID0gIiI7CisgICAgICAgIHZhciBjOworICAgICAgICB3aGlsZSAoKGMgPSBz
dHJlYW0uZWF0KC9bXlxzXHUwMGEwPTw+XCJcJ1wvP10vKSkpIHRhZ05hbWUgKz0gYzsKKyAgICAg
ICAgc3RhdGUudG9rZW5pemUgPSBpblRhZzsKKyAgICAgICAgcmV0dXJuICJ0YWciOworICAgICAg
fQorICAgIH0KKyAgICBlbHNlIGlmIChjaCA9PSAiJiIpIHsKKyAgICAgIHZhciBvazsKKyAgICAg
IGlmIChzdHJlYW0uZWF0KCIjIikpIHsKKyAgICAgICAgaWYgKHN0cmVhbS5lYXQoIngiKSkgewor
ICAgICAgICAgIG9rID0gc3RyZWFtLmVhdFdoaWxlKC9bYS1mQS1GXGRdLykgJiYgc3RyZWFtLmVh
dCgiOyIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIG9rID0gc3RyZWFtLmVhdFdoaWxl
KC9bXGRdLykgJiYgc3RyZWFtLmVhdCgiOyIpOworICAgICAgICB9CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBvayA9IHN0cmVhbS5lYXRXaGlsZSgvW1x3XC5cLTpdLykgJiYgc3RyZWFtLmVhdCgi
OyIpOworICAgICAgfQorICAgICAgcmV0dXJuIG9rID8gImF0b20iIDogImVycm9yIjsKKyAgICB9
CisgICAgZWxzZSB7CisgICAgICBzdHJlYW0uZWF0V2hpbGUoL1teJjxdLyk7CisgICAgICByZXR1
cm4gbnVsbDsKKyAgICB9CisgIH0KKworICBmdW5jdGlvbiBpblRhZyhzdHJlYW0sIHN0YXRlKSB7
CisgICAgdmFyIGNoID0gc3RyZWFtLm5leHQoKTsKKyAgICBpZiAoY2ggPT0gIj4iIHx8IChjaCA9
PSAiLyIgJiYgc3RyZWFtLmVhdCgiPiIpKSkgeworICAgICAgc3RhdGUudG9rZW5pemUgPSBpblRl
eHQ7CisgICAgICB0eXBlID0gY2ggPT0gIj4iID8gImVuZFRhZyIgOiAic2VsZmNsb3NlVGFnIjsK
KyAgICAgIHJldHVybiAidGFnIjsKKyAgICB9CisgICAgZWxzZSBpZiAoY2ggPT0gIj0iKSB7Cisg
ICAgICB0eXBlID0gImVxdWFscyI7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgZWxz
ZSBpZiAoL1tcJ1wiXS8udGVzdChjaCkpIHsKKyAgICAgIHN0YXRlLnRva2VuaXplID0gaW5BdHRy
aWJ1dGUoY2gpOworICAgICAgcmV0dXJuIHN0YXRlLnRva2VuaXplKHN0cmVhbSwgc3RhdGUpOwor
ICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHN0cmVhbS5lYXRXaGlsZSgvW15cc1x1MDBhMD08Plwi
XCdcLz9dLyk7CisgICAgICByZXR1cm4gIndvcmQiOworICAgIH0KKyAgfQorCisgIGZ1bmN0aW9u
IGluQXR0cmlidXRlKHF1b3RlKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uKHN0cmVhbSwgc3RhdGUp
IHsKKyAgICAgIHdoaWxlICghc3RyZWFtLmVvbCgpKSB7CisgICAgICAgIGlmIChzdHJlYW0ubmV4
dCgpID09IHF1b3RlKSB7CisgICAgICAgICAgc3RhdGUudG9rZW5pemUgPSBpblRhZzsKKyAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgcmV0dXJuICJzdHJpbmciOwor
ICAgIH07CisgIH0KKworICBmdW5jdGlvbiBpbkJsb2NrKHN0eWxlLCB0ZXJtaW5hdG9yKSB7Cisg
ICAgcmV0dXJuIGZ1bmN0aW9uKHN0cmVhbSwgc3RhdGUpIHsKKyAgICAgIHdoaWxlICghc3RyZWFt
LmVvbCgpKSB7CisgICAgICAgIGlmIChzdHJlYW0ubWF0Y2godGVybWluYXRvcikpIHsKKyAgICAg
ICAgICBzdGF0ZS50b2tlbml6ZSA9IGluVGV4dDsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBzdHJlYW0ubmV4dCgpOworICAgICAgfQorICAgICAgcmV0dXJuIHN0eWxlOwor
ICAgIH07CisgIH0KKyAgZnVuY3Rpb24gZG9jdHlwZShkZXB0aCkgeworICAgIHJldHVybiBmdW5j
dGlvbihzdHJlYW0sIHN0YXRlKSB7CisgICAgICB2YXIgY2g7CisgICAgICB3aGlsZSAoKGNoID0g
c3RyZWFtLm5leHQoKSkgIT0gbnVsbCkgeworICAgICAgICBpZiAoY2ggPT0gIjwiKSB7CisgICAg
ICAgICAgc3RhdGUudG9rZW5pemUgPSBkb2N0eXBlKGRlcHRoICsgMSk7CisgICAgICAgICAgcmV0
dXJuIHN0YXRlLnRva2VuaXplKHN0cmVhbSwgc3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNo
ID09ICI+IikgeworICAgICAgICAgIGlmIChkZXB0aCA9PSAxKSB7CisgICAgICAgICAgICBzdGF0
ZS50b2tlbml6ZSA9IGluVGV4dDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBzdGF0ZS50b2tlbml6ZSA9IGRvY3R5cGUoZGVwdGggLSAxKTsKKyAg
ICAgICAgICAgIHJldHVybiBzdGF0ZS50b2tlbml6ZShzdHJlYW0sIHN0YXRlKTsKKyAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHJldHVybiAibWV0YSI7CisgICAgfTsKKyAg
fQorCisgIHZhciBjdXJTdGF0ZSwgc2V0U3R5bGU7CisgIGZ1bmN0aW9uIHBhc3MoKSB7CisgICAg
Zm9yICh2YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgY3VyU3RhdGUu
Y2MucHVzaChhcmd1bWVudHNbaV0pOworICB9CisgIGZ1bmN0aW9uIGNvbnQoKSB7CisgICAgcGFz
cy5hcHBseShudWxsLCBhcmd1bWVudHMpOworICAgIHJldHVybiB0cnVlOworICB9CisKKyAgZnVu
Y3Rpb24gcHVzaENvbnRleHQodGFnTmFtZSwgc3RhcnRPZkxpbmUpIHsKKyAgICB2YXIgbm9JbmRl
bnQgPSBLbHVkZ2VzLmRvTm90SW5kZW50Lmhhc093blByb3BlcnR5KHRhZ05hbWUpIHx8IChjdXJT
dGF0ZS5jb250ZXh0ICYmIGN1clN0YXRlLmNvbnRleHQubm9JbmRlbnQpOworICAgIGN1clN0YXRl
LmNvbnRleHQgPSB7CisgICAgICBwcmV2OiBjdXJTdGF0ZS5jb250ZXh0LAorICAgICAgdGFnTmFt
ZTogdGFnTmFtZSwKKyAgICAgIGluZGVudDogY3VyU3RhdGUuaW5kZW50ZWQsCisgICAgICBzdGFy
dE9mTGluZTogc3RhcnRPZkxpbmUsCisgICAgICBub0luZGVudDogbm9JbmRlbnQKKyAgICB9Owor
ICB9CisgIGZ1bmN0aW9uIHBvcENvbnRleHQoKSB7CisgICAgaWYgKGN1clN0YXRlLmNvbnRleHQp
IGN1clN0YXRlLmNvbnRleHQgPSBjdXJTdGF0ZS5jb250ZXh0LnByZXY7CisgIH0KKworICBmdW5j
dGlvbiBlbGVtZW50KHR5cGUpIHsKKyAgICBpZiAodHlwZSA9PSAib3BlblRhZyIpIHsKKyAgICAg
IGN1clN0YXRlLnRhZ05hbWUgPSB0YWdOYW1lOworICAgICAgcmV0dXJuIGNvbnQoYXR0cmlidXRl
cywgZW5kdGFnKGN1clN0YXRlLnN0YXJ0T2ZMaW5lKSk7CisgICAgfSBlbHNlIGlmICh0eXBlID09
ICJjbG9zZVRhZyIpIHsKKyAgICAgIHZhciBlcnIgPSBmYWxzZTsKKyAgICAgIGlmIChjdXJTdGF0
ZS5jb250ZXh0KSB7CisgICAgICAgIGlmIChjdXJTdGF0ZS5jb250ZXh0LnRhZ05hbWUgIT0gdGFn
TmFtZSkgeworICAgICAgICAgIGlmIChLbHVkZ2VzLmltcGxpY2l0bHlDbG9zZWQuaGFzT3duUHJv
cGVydHkoY3VyU3RhdGUuY29udGV4dC50YWdOYW1lLnRvTG93ZXJDYXNlKCkpKSB7CisgICAgICAg
ICAgICBwb3BDb250ZXh0KCk7CisgICAgICAgICAgfQorICAgICAgICAgIGVyciA9ICFjdXJTdGF0
ZS5jb250ZXh0IHx8IGN1clN0YXRlLmNvbnRleHQudGFnTmFtZSAhPSB0YWdOYW1lOworICAgICAg
ICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBlcnIgPSB0cnVlOworICAgICAgfQorICAgICAg
aWYgKGVycikgc2V0U3R5bGUgPSAiZXJyb3IiOworICAgICAgcmV0dXJuIGNvbnQoZW5kY2xvc2V0
YWcoZXJyKSk7CisgICAgfQorICAgIHJldHVybiBjb250KCk7CisgIH0KKyAgZnVuY3Rpb24gZW5k
dGFnKHN0YXJ0T2ZMaW5lKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uKHR5cGUpIHsKKyAgICAgIGlm
ICh0eXBlID09ICJzZWxmY2xvc2VUYWciIHx8CisgICAgICAgICAgKHR5cGUgPT0gImVuZFRhZyIg
JiYgS2x1ZGdlcy5hdXRvU2VsZkNsb3NlcnMuaGFzT3duUHJvcGVydHkoY3VyU3RhdGUudGFnTmFt
ZS50b0xvd2VyQ2FzZSgpKSkpIHsKKyAgICAgICAgbWF5YmVQb3BDb250ZXh0KGN1clN0YXRlLnRh
Z05hbWUudG9Mb3dlckNhc2UoKSk7CisgICAgICAgIHJldHVybiBjb250KCk7CisgICAgICB9Cisg
ICAgICBpZiAodHlwZSA9PSAiZW5kVGFnIikgeworICAgICAgICBtYXliZVBvcENvbnRleHQoY3Vy
U3RhdGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpKTsKKyAgICAgICAgcHVzaENvbnRleHQoY3VyU3Rh
dGUudGFnTmFtZSwgc3RhcnRPZkxpbmUpOworICAgICAgICByZXR1cm4gY29udCgpOworICAgICAg
fQorICAgICAgcmV0dXJuIGNvbnQoKTsKKyAgICB9OworICB9CisgIGZ1bmN0aW9uIGVuZGNsb3Nl
dGFnKGVycikgeworICAgIHJldHVybiBmdW5jdGlvbih0eXBlKSB7CisgICAgICBpZiAoZXJyKSBz
ZXRTdHlsZSA9ICJlcnJvciI7CisgICAgICBpZiAodHlwZSA9PSAiZW5kVGFnIikgeyBwb3BDb250
ZXh0KCk7IHJldHVybiBjb250KCk7IH0KKyAgICAgIHNldFN0eWxlID0gImVycm9yIjsKKyAgICAg
IHJldHVybiBjb250KGFyZ3VtZW50cy5jYWxsZWUpOworICAgIH07CisgIH0KKyAgZnVuY3Rpb24g
bWF5YmVQb3BDb250ZXh0KG5leHRUYWdOYW1lKSB7CisgICAgdmFyIHBhcmVudFRhZ05hbWU7Cisg
ICAgd2hpbGUgKHRydWUpIHsKKyAgICAgIGlmICghY3VyU3RhdGUuY29udGV4dCkgeworICAgICAg
ICByZXR1cm47CisgICAgICB9CisgICAgICBwYXJlbnRUYWdOYW1lID0gY3VyU3RhdGUuY29udGV4
dC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7CisgICAgICBpZiAoIUtsdWRnZXMuY29udGV4dEdyYWJi
ZXJzLmhhc093blByb3BlcnR5KHBhcmVudFRhZ05hbWUpIHx8CisgICAgICAgICAgIUtsdWRnZXMu
Y29udGV4dEdyYWJiZXJzW3BhcmVudFRhZ05hbWVdLmhhc093blByb3BlcnR5KG5leHRUYWdOYW1l
KSkgeworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgICBwb3BDb250ZXh0KCk7CisgICAg
fQorICB9CisKKyAgZnVuY3Rpb24gYXR0cmlidXRlcyh0eXBlKSB7CisgICAgaWYgKHR5cGUgPT0g
IndvcmQiKSB7c2V0U3R5bGUgPSAiYXR0cmlidXRlIjsgcmV0dXJuIGNvbnQoYXR0cmlidXRlLCBh
dHRyaWJ1dGVzKTt9CisgICAgaWYgKHR5cGUgPT0gImVuZFRhZyIgfHwgdHlwZSA9PSAic2VsZmNs
b3NlVGFnIikgcmV0dXJuIHBhc3MoKTsKKyAgICBzZXRTdHlsZSA9ICJlcnJvciI7CisgICAgcmV0
dXJuIGNvbnQoYXR0cmlidXRlcyk7CisgIH0KKyAgZnVuY3Rpb24gYXR0cmlidXRlKHR5cGUpIHsK
KyAgICBpZiAodHlwZSA9PSAiZXF1YWxzIikgcmV0dXJuIGNvbnQoYXR0dmFsdWUsIGF0dHJpYnV0
ZXMpOworICAgIGlmICghS2x1ZGdlcy5hbGxvd01pc3NpbmcpIHNldFN0eWxlID0gImVycm9yIjsK
KyAgICByZXR1cm4gKHR5cGUgPT0gImVuZFRhZyIgfHwgdHlwZSA9PSAic2VsZmNsb3NlVGFnIikg
PyBwYXNzKCkgOiBjb250KCk7CisgIH0KKyAgZnVuY3Rpb24gYXR0dmFsdWUodHlwZSkgeworICAg
IGlmICh0eXBlID09ICJzdHJpbmciKSByZXR1cm4gY29udChhdHR2YWx1ZW1heWJlKTsKKyAgICBp
ZiAodHlwZSA9PSAid29yZCIgJiYgS2x1ZGdlcy5hbGxvd1VucXVvdGVkKSB7c2V0U3R5bGUgPSAi
c3RyaW5nIjsgcmV0dXJuIGNvbnQoKTt9CisgICAgc2V0U3R5bGUgPSAiZXJyb3IiOworICAgIHJl
dHVybiAodHlwZSA9PSAiZW5kVGFnIiB8fCB0eXBlID09ICJzZWxmQ2xvc2VUYWciKSA/IHBhc3Mo
KSA6IGNvbnQoKTsKKyAgfQorICBmdW5jdGlvbiBhdHR2YWx1ZW1heWJlKHR5cGUpIHsKKyAgICBp
ZiAodHlwZSA9PSAic3RyaW5nIikgcmV0dXJuIGNvbnQoYXR0dmFsdWVtYXliZSk7CisgICAgZWxz
ZSByZXR1cm4gcGFzcygpOworICB9CisKKyAgcmV0dXJuIHsKKyAgICBzdGFydFN0YXRlOiBmdW5j
dGlvbigpIHsKKyAgICAgIHJldHVybiB7dG9rZW5pemU6IGluVGV4dCwgY2M6IFtdLCBpbmRlbnRl
ZDogMCwgc3RhcnRPZkxpbmU6IHRydWUsIHRhZ05hbWU6IG51bGwsIGNvbnRleHQ6IG51bGx9Owor
ICAgIH0sCisKKyAgICB0b2tlbjogZnVuY3Rpb24oc3RyZWFtLCBzdGF0ZSkgeworICAgICAgaWYg
KHN0cmVhbS5zb2woKSkgeworICAgICAgICBzdGF0ZS5zdGFydE9mTGluZSA9IHRydWU7CisgICAg
ICAgIHN0YXRlLmluZGVudGVkID0gc3RyZWFtLmluZGVudGF0aW9uKCk7CisgICAgICB9CisgICAg
ICBpZiAoc3RyZWFtLmVhdFNwYWNlKCkpIHJldHVybiBudWxsOworCisgICAgICBzZXRTdHlsZSA9
IHR5cGUgPSB0YWdOYW1lID0gbnVsbDsKKyAgICAgIHZhciBzdHlsZSA9IHN0YXRlLnRva2VuaXpl
KHN0cmVhbSwgc3RhdGUpOworICAgICAgc3RhdGUudHlwZSA9IHR5cGU7CisgICAgICBpZiAoKHN0
eWxlIHx8IHR5cGUpICYmIHN0eWxlICE9ICJjb21tZW50IikgeworICAgICAgICBjdXJTdGF0ZSA9
IHN0YXRlOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgIHZhciBjb21iID0gc3Rh
dGUuY2MucG9wKCkgfHwgZWxlbWVudDsKKyAgICAgICAgICBpZiAoY29tYih0eXBlIHx8IHN0eWxl
KSkgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHN0YXRlLnN0YXJ0T2ZMaW5lID0g
ZmFsc2U7CisgICAgICByZXR1cm4gc2V0U3R5bGUgfHwgc3R5bGU7CisgICAgfSwKKworICAgIGlu
ZGVudDogZnVuY3Rpb24oc3RhdGUsIHRleHRBZnRlciwgZnVsbExpbmUpIHsKKyAgICAgIHZhciBj
b250ZXh0ID0gc3RhdGUuY29udGV4dDsKKyAgICAgIGlmICgoc3RhdGUudG9rZW5pemUgIT0gaW5U
YWcgJiYgc3RhdGUudG9rZW5pemUgIT0gaW5UZXh0KSB8fAorICAgICAgICAgIGNvbnRleHQgJiYg
Y29udGV4dC5ub0luZGVudCkKKyAgICAgICAgcmV0dXJuIGZ1bGxMaW5lID8gZnVsbExpbmUubWF0
Y2goL14oXHMqKS8pWzBdLmxlbmd0aCA6IDA7CisgICAgICBpZiAoYWxpZ25DREFUQSAmJiAvPCFc
W0NEQVRBXFsvLnRlc3QodGV4dEFmdGVyKSkgcmV0dXJuIDA7CisgICAgICBpZiAoY29udGV4dCAm
JiAvXjxcLy8udGVzdCh0ZXh0QWZ0ZXIpKQorICAgICAgICBjb250ZXh0ID0gY29udGV4dC5wcmV2
OworICAgICAgd2hpbGUgKGNvbnRleHQgJiYgIWNvbnRleHQuc3RhcnRPZkxpbmUpCisgICAgICAg
IGNvbnRleHQgPSBjb250ZXh0LnByZXY7CisgICAgICBpZiAoY29udGV4dCkgcmV0dXJuIGNvbnRl
eHQuaW5kZW50ICsgaW5kZW50VW5pdDsKKyAgICAgIGVsc2UgcmV0dXJuIDA7CisgICAgfSwKKwor
ICAgIGNvbXBhcmVTdGF0ZXM6IGZ1bmN0aW9uKGEsIGIpIHsKKyAgICAgIGlmIChhLmluZGVudGVk
ICE9IGIuaW5kZW50ZWQgfHwgYS50b2tlbml6ZSAhPSBiLnRva2VuaXplKSByZXR1cm4gZmFsc2U7
CisgICAgICBmb3IgKHZhciBjYSA9IGEuY29udGV4dCwgY2IgPSBiLmNvbnRleHQ7IDsgY2EgPSBj
YS5wcmV2LCBjYiA9IGNiLnByZXYpIHsKKyAgICAgICAgaWYgKCFjYSB8fCAhY2IpIHJldHVybiBj
YSA9PSBjYjsKKyAgICAgICAgaWYgKGNhLnRhZ05hbWUgIT0gY2IudGFnTmFtZSB8fCBjYS5pbmRl
bnQgIT0gY2IuaW5kZW50KSByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgfSwKKworICAgIGVs
ZWN0cmljQ2hhcnM6ICIvIgorICB9OworfSk7CisKK0NvZGVNaXJyb3IuZGVmaW5lTUlNRSgidGV4
dC94bWwiLCAieG1sIik7CitDb2RlTWlycm9yLmRlZmluZU1JTUUoImFwcGxpY2F0aW9uL3htbCIs
ICJ4bWwiKTsKK2lmICghQ29kZU1pcnJvci5taW1lTW9kZXMuaGFzT3duUHJvcGVydHkoInRleHQv
aHRtbCIpKQorICBDb2RlTWlycm9yLmRlZmluZU1JTUUoInRleHQvaHRtbCIsIHtuYW1lOiAieG1s
IiwgaHRtbE1vZGU6IHRydWV9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>157412</attachid>
            <date>2012-08-09 01:02:57 -0700</date>
            <delta_ts>2012-08-09 01:02:57 -0700</delta_ts>
            <desc>Archive of layout-test-results from gce-cr-linux-02</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>217184</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">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
QwJsUp6eRKM8jtXvcDVska/fDmsQhvk6hxSrVFYBfCampalP4dVHwAMZY5Rbr9Xjnp/tbAAldA2x
+R8k4SppyPgO2FHprs7DiLi6REEDKU4/HegziGURKOOz+zYY5akjGoLsGfNa620gmh4UtyIqF2F5
o8ykJijjtMxEypBHyyEU6og5BHIwag7hROig92YRYRCbhhSA9GhygHVQwdMM7qsUu12qGLp6SUOZ
fGdNa+eigL0F6c1QzrR3CY2WpEsG8JkNGfgRgocHuiDhLhQqHjz4Q6IhWZDEsNjvKZmvWiFPOHMJ
bgz7OTC1BW1N3TrrGqQpD2H/Nnp5fnjgAvtDYm7zV/tOPW88E/+dJnRJ2SwPxRLtdG3q6iuVJ0W8
qsOBcrIJPXPkLh/k7YJ1n/A0NVPKGpBcTkgsfXh8OeSRsgwk5GcSyVJPdfrdWEG5vJ6X62OxrEpy
2LWSu+OPJFvxyA3WN3B3CZYrOGBUAYmZOyOxuunkChPeldsKV7QRcR2p07eJLVd8+8EP6X//1/8D
UEsDBAoAAAAAAPIyCUEAAAAAAAAAAAAAAAAdABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvY3Nz
My9VVAkAA2dXI1DXaiNQdXgLAAEE6AMAAAToAwAAUEsDBAoAAAAAAPIyCUEAAAAAAAAAAAAAAAAl
ABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvY3NzMy9maWx0ZXJzL1VUCQADZ1cjUNdqI1B1eAsA
AQToAwAABOgDAABQSwMECgAAAAAA8jIJQQAAAAAAAAAAAAAAACwAHAB0bXAvbGF5b3V0LXRlc3Qt
cmVzdWx0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL1VUCQADZ1cjUNdqI1B1eAsAAQToAwAABOgDAABQ
SwMEFAACAAgAgD0JQf0CyLyKAAAAkwAAAGIAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9jc3Mz
L2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItY3NzLWtleXdvcmQtYXMtcGFyYW1ldGVyLW5h
bWUtc3RkZXJyLnR4dFVUCQADP2ojUGdXI1B1eAsAAQToAwAABOgDAAAlx0ELgjAYgOF7v+I71kXc
RMvdRlh0aMYIOkTI3D51MGds69C/T+jy8rxPSuuiYv8WtCZVSfaHMs8pa6RsJRsdRtrp2XQG9WIw
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
4Sw8cz/CnBbhV3m8BrlG3hq1Jcc8IYGOIbmHdd8BlHQw38+mjS2glPusqFtDeEDCgd5Yyven/j5x
qr89TtYjlZcjQAC4KVAEmBeAVzElRynQ8AjMBuCax4/FL4LDTV7KALqWCrNQQd2CgyZt+Y3vQ6eH
M+bePjSu7/MIkNOZ19cZ1P4I5BYB/RR+lfkEsG8dTtffFJEsV+ATWLRuLQU6aC6c9K6Bqny6vvj5
p+ufP23Q58319YcfNkuzDy2W6LcixpWmmBuoUhshNG4ucFFwSzilgBuAAASeQsxOEU9RUTHmzoHo
gHX+0bS0AbbTtZt2a/+zH2UGN5jnXfmsGycv8ODZsAc/fNr8erNENwAtYAUpCfSZv/PoKyAEfbz5
/OkK2pENI7pg/NH1z/9T/OwFik+HFf8/weo8TBJCppgP/v8CUEsDBAoAAgAAAGEzCUHW0dp5LgAA
AC4AAAA/ABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9sb2FkZXIvbG9hZEluUHJvZ3Jl
c3MtZXhwZWN0ZWQudHh0VVQJAAM2WCNQNlgjUHV4CwABBOgDAAAE6AMAAEFMRVJUOiBUZXN0IHBh
c3NlZDogW29iamVjdCBIVE1MRm9ybUVsZW1lbnRdCgpQSwMEFAACAAgAYTMJQWyjKvK+AAAA8AAA
AD0AHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2xvYWRlci9sb2FkSW5Qcm9ncmVzcy13
ZGlmZi5odG1sVVQJAAM2WCNQNlgjUHV4CwABBOgDAAAE6AMAAF2OMU/DMBSE9/yKkxi6NTPGRKoq
F4aUSiRMiOHVfmkB17aenSFC/HdcdWM76e67O31mcp3OZfHcrR17/OBI9vskcQ5O4W4iesAv1uTc
f4umq6XbG6zbW1WSqnOiAOsp58cKdtvDy3DoDfZmGDZPRsF/Bsa9wluwNJ/OBeOS2IhEUdhSCLEg
c0GSmFjKglUWu0KcEGbv62Kt75pNb15HhZFzTdYprqfe4/GLbcHzuO93US7G84VD+Wga3V6f/QFQ
SwMEFAACAAgAYTMJQSkmd2l0AAAAfQAAAD0AHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0
L2xvYWRlci9sb2FkSW5Qcm9ncmVzcy1hY3R1YWwudHh0VVQJAAM2WCNQNlgjUHV4CwABBOgDAAAE
6AMAAA3KOw7CMBAFwD6neF3OgLsoMlA4RMKmQhTGLD85Xmu9KXJ7mHrG+eRnZzFZ74eDNcifQtgZ
XEqK6+utCFslK8JiMMZSWNFIUYUriW7om6Qe/ERZc+4GZ8/BIFD7l9gaPQyufP9SUhzD5PYsi820
UNFb1/0AUEsDBBQAAgAIAGEzCUE0XQbmxQAAABoBAAA7ABwAdG1wL2xheW91dC10ZXN0LXJlc3Vs
dHMvZmFzdC9sb2FkZXIvbG9hZEluUHJvZ3Jlc3MtZGlmZi50eHRVVAkAAzZYI1A2WCNQdXgLAAEE
6AMAAAToAwAAnY+9TsMwFEZ3P8W3dUhNVJjwlKoyP1JKEQkTYjDJ7Q9ybOv6WmrengjegOkMn3T0
Ha01aplS7d0ci2ihLJopFy+5ProstY9uJP7Fc3jleFrWrOmaaBAab+QqUFVV/cviBinO/zmaBnqz
vkW1Wd+haVS1O7x0h9Zib7tu+2gN/CUQ7g3ew+DK6Szo50SWObLBzoUQBZkEiWMilhmrzMMK8YhQ
vFfYtvatN+iXb0guZxoNPuLX99KBp37fPkSerKeJgnwqqB9QSwMECgAAAAAAgTMJQQAAAAAAAAAA
AAAAACEAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L3hzbC9VVAkAA3JYI1DXaiNQdXgL
AAEE6AMAAAToAwAAUEsDBBQAAgAIAIEzCUGBSnetSwAAAKwAAABMABwAdG1wL2xheW91dC10ZXN0
LXJlc3VsdHMvZmFzdC94c2wveHNsdC10cmFuc2Zvcm0tdG8tZnJhZ21lbnQtY3Jhc2gtc3RkZXJy
LnR4dFVUCQADclgjUHJYI1B1eAsAAQToAwAABOgDAAC1zLENgDAMRNE+U9wKtGzjwAVZcmxkLOZH
omAD6q/3t5inmpSGg5mRK4YaAVMnFtA46YVbUqUbW3LnUNdXxMBh0cW+juJVbfvl+gBQSwMEFAAC
AAgAgTMJQVBdSDeMAAAA+AAAADgAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L3hzbC94
c2x0LWRvYy1lbmMtc3RkZXJyLnR4dFVUCQADcVgjUHFYI1B1eAsAAQToAwAABOgDAACtjsENwzAM
A/+dQgu4evSXGfrsAoqjNEJlK5BlpN2+SbNCPwTJAwhmK6sohVgFdjcfYBblnwyIWGrgUwI3Hl8S
KS9uRXpJvDW808d6PLhFw5la4LspOjfrnrkdKdJIU5KymkfqLte9A5XKcANWLlwDTnrZyXBaGKBX
GvcTYaBG0z/OVGs9L8cQBalevlBLAwQUAAIACACBMwlBUF1IN4wAAAD4AAAAPwAcAHRtcC9sYXlv
dXQtdGVzdC1yZXN1bHRzL2Zhc3QveHNsL3hzbHQtYmFkLWltcG9ydC11cmktc3RkZXJyLnR4dFVU
CQADcVgjUHFYI1B1eAsAAQToAwAABOgDAACtjsENwzAMA/+dQgu4evSXGfrsAoqjNEJlK5BlpN2+
SbNCPwTJAwhmK6sohVgFdjcfYBblnwyIWGrgUwI3Hl8SKS9uRXpJvDW808d6PLhFw5la4LspOjfr
nrkdKdJIU5KymkfqLte9A5XKcANWLlwDTnrZyXBaGKBXGvcTYaBG0z/OVGs9L8cQBalevlBLAwQU
AAIACACBMwlBbUfUXoUAAADxAAAAPQAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QveHNs
L3RyYW5zZm9ybS14aHItZG9jLXN0ZGVyci50eHRVVAkAA3FYI1BxWCNQdXgLAAEE6AMAAAToAwAA
rY6xDcMwDAR7T8EFFBbpNEPKLCDLdExEEg2Sgp3t7cQrpHk8/ou7LHXlkpylAamKRpi50C8iItbm
+GLHjcY3e8iLSuVeA22Gj/SR7k8yN5yTOe5WUMmkaybDfdEwSb6dKxRuBHegQpWaA9dV1IfziVeF
CL2l8QS7QJE0/VEgXAiavibDAVBLAwQKAAAAAAAqMwlBAAAAAAAAAAAAAAAAJAAcAHRtcC9sYXlv
dXQtdGVzdC1yZXN1bHRzL2Zhc3QvY2FudmFzL1VUCQAD0FcjUNdqI1B1eAsAAQToAwAABOgDAABQ
SwMECgAAAAAAtz0JQQAAAAAAAAAAAAAAACoAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0
L2NhbnZhcy93ZWJnbC9VVAkAA6pqI1DXaiNQdXgLAAEE6AMAAAToAwAAUEsDBBQAAgAIALg9CUFd
r6t/xgAAAOABAABKABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wv
c2hhZGVyLXByZWNpc2lvbi1mb3JtYXQtZGlmZi50eHRVVAkAA6xqI1CsaiNQdXgLAAEE6AMAAATo
AwAArc+/asMwEMfxXU9xu3pRKS2dAg7BnRpqsF/gIp8Tg/wH3al13r6hJvUS2gxZNH1/n0OICE67
0QU6DUlRWRQjSwoqriFR56n/JHFfvD8EJ0eqOeIY2bfSDj02Q+xIkaeRvXK90knBWGvvgZLXRGEm
swzw5fHhGez5fYUsM1BsyhLmbXGZvv0sV5H6A+/aHtbr68XTkrQCGhPf4NH0r3dObvF+v/oHuDQX
0c5i8p5FmhTCqaAoXC8nja3ysoLtx654z6vcWPMNUEsDBBQAAgAIALg9CUEfGWN5+wEAAA4MAABO
ABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVyLXByZWNp
c2lvbi1mb3JtYXQtZXhwZWN0ZWQudHh0VVQJAAOsaiNQrGojUHV4CwABBOgDAAAE6AMAAL2WUWvi
QBDH3/spBp+uUKQtReTAg3BGDSQqmtZ7kzWOSe7WXdnd1Prtb5LW84TEy/YwLyGQmfn/9r+7M1ng
auiDTtgaFewURqlOpYCNVFtmwKA27ZubiQCdRRFqfQcHmcE+5Rw0IjB6qhQ1yA20ps583oItRbEY
KXIjOZd7XMPqAK3QnYfwfRJMfTd0W1QzpNIaTEIqi5xhXiBMjwSDd4CIM62BiTXEaMpD9lL9onpF
wfd6laEKTaYE1bskKVc/McpXna8HYt6uKveFvr24s9D9sZyPnL47u8uj/cliOfAnTngLqdCGiQjJ
nAt6KbmgMvykXOD2veegScWRNxw1qZcb6o2btbMxvcLMK6kNZs4wcMdhY6ezTPDa57NM87ontMrW
Bnfxuqe00tJP6NXpyiZRcp83eUClpKLpYhKSeWU8XcOOKbZFg0rX7MhH0gL77MLdEoJAxQyNJHzb
UZOnFxp+hepX8MYvju/1l+74OWj/DX5hmcSY0fRjCmkQCp2uOB4xdVlCWzERY5AK+NaDh/NduZTA
3monnGY4ZXTrS3wwPVlDPVlTPdzbYnUebbHqZZxjdWyxurZUXTuoXg+srbIx92MH7xug6lhTdf6D
yuZn0CR0eanH0EsqYsBXVAeIGOc1bzIJl0Y8nkJslv6vchRi60tFvVPMH9t+A1BLAwQUAAIACAC3
PQlB9HrrZM0AAACoAQAAPgAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvY2FudmFzL3dl
YmdsL2lzLW9iamVjdC1zdGRlcnIudHh0VVQJAAOqaiNQqmojUHV4CwABBOgDAAAE6AMAAMWOwWrC
QBRF9/2Kt2w3YhImmtmlbQyBNJbB6kIkPN+MycA4kZmp4N8b6lbBXTeHe+HCPds4ziLGb0xGzljG
siRJGS+EWAreGeXjlo6ylYoGqdyE6JVFUfK2g7KGvxHwsm6rZp3X1Wc78qcADp1511bmITi9rwfC
oAfLobJnNFoC9eiQgnIv2/sGszR9wuC7EIul+MqbjwI2uWiqpuRw+/wNCqagPUjtcW+UnMCqH2uP
Hrzu7EET2gAn5Q6DO6IlNWaLJlweKc3T+b8pXQFQSwMEFAACAAgAtz0JQdf+j4GnAAAA3wIAAFEA
HAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC12ZXJ0ZXgtYXR0
cmliLXplcm8taXNzdWVzLXN0ZGVyci50eHRVVAkAA6lqI1DRVyNQdXgLAAEE6AMAAAToAwAAzc69
CsIwGIXh3av4Rl1Kms9Y7VakioOtBMFBpKRJ2gb6I0kcvHsDru52eTlne+6U7mKWfouhCdsi2TBK
0pzzkqdtrx2t5KAqpeWktI2kXLI4xtUDLjk/lPycFfscbhkvTsUxhcx7a+qX10DAOFDGibrXKoJr
F24nHDjTjo2RYvTw1LaZ7CBGqcMeRe/fi/svEiWh8yIhRcR5kdaYYDIvEmOExn8jfQBQSwMEFAAC
AAgAtz0JQUkBiq7bAAAAOAEAAEUAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2NhbnZh
cy93ZWJnbC9pbmRleC12YWxpZGF0aW9uLXN0ZGVyci50eHRVVAkAA6pqI1DSVyNQdXgLAAEE6AMA
AAToAwAAjY8xa8MwFIT3/Iob2yXETkxibaJxjcG1iwjtEIJR5GdHYMtBemnpv6/b0q1Dl+PuuOG7
YxynUSJ+dD3rNkk3q90u2YpMqVqJfqAQN2Zsm5bM1JJfGnOXRNH6/oTnTD3W6klWDxlepaqKKheQ
zN6eb0xYwQa0NujzQO0Sh8scLzog2N511mjHuJLvJj9qZ2j2Tg/8sTj+iZTGm+gfSHmJ7xFEXjZF
9SLLYt/UM6g8FHUFgX7Ye/2eDTSS4yCgmWm8MniCNoZCwHRjTB28dj3hjTzbuYZ1X9PfZ4tPUEsD
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
5UBmxQAQAGHyJQbmBeCVVIpBAjQ8iFC+RmIAtLOiA5EipXdQ7JEGkJ8oKYE7aiRLRAMJMgbnjprH
1V4XXe6P6Gt833N1vffgUOj1WlPUBcdrvBZSE4CMcjdDvxDYNRKXy+kQogMTlo1pQAwnTAKBvlx+
+OHpyTMh+OAi8KgDEIB+rvB7knu3t90zrnZTCFALL7E9BxIFbn25c6NTnBt9gXNoc9Q5mPLvOHd1
inNX/8i5CssHvNvN6XFPf9SdrHHG5dIO74fiNPwDkR4Fv5t0MIzf5KEoFqeEcnwslGUUgWImJaVb
sFFAz/5fROarMcP4lKBM+oPyf8fDtN/154enZ+/u1/cffn54fvhbZf+Vbbz+d9LT+tBqChqn/+Xu
L1BLAwQUAAIACAC2PQlBNS4e+MkAAABeBgAATgAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zh
c3QvY2FudmFzL3dlYmdsL2RyYXctYXJyYXlzLW91dC1vZi1ib3VuZHMtc3RkZXJyLnR4dFVUCQAD
qGojUNBXI1B1eAsAAQToAwAABOgDAADN1LEKwjAQBuDdp7hRFzFJkzTZCpVSKFaKuIiUmMZSsFbS
qPj2Vl19gFv+4fiHj4O7A6WKcP1LNqXkklAexUSvq6qsdHtxI61t39SNs0Pj/NLaOSeELY6QFfAt
gc6KOt/skyJP63K7rpJdXm5AQ3tJvXkm3pvXqMGE4PpbgDCAsdaNIwz3AMMZvLm2Dh7Oh24aQ3f9
VH13ugcHq9nhLzEWhCInKkolbiIjQnLkRLqKBHYikzFuYsSnk8ZOVEIhJwqGfotCKDxP5w1QSwME
FAACAAgAuT0JQdAMCfmJAAAAkwAAAFMAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2Nh
bnZhcy93ZWJnbC91bmlmb3JtLWxvY2F0aW9uLWxlbmd0aC1saW1pdHMtc3RkZXJyLnR4dFVUCQAD
rmojUNZXI1B1eAsAAQToAwAABOgDAAAlx7EKwjAUQNHdr3ijLsU2xtZsRaI4mEoQHERKmry2gTSV
JA7+vQWXw73PojjklP0li+WekHJX0YpxKRvJBoexaPVkWoN6Nhgyrdc0z8nmBTcuT4281uLI4VFL
cRFnBnVKwXafhLAFG8HYqDqHJoP7uOyoIkQ7+N5q5RO8MfRzmJTXuLRXLn1XP1BLAwQUAAIACAC2
PQlBq32B+4sAAAABAQAARAAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvY2FudmFzL3dl
YmdsL2Vycm9yLXJlcG9ydGluZy1zdGRlcnIudHh0VVQJAAOoaiNQ0FcjUHV4CwABBOgDAAAE6AMA
AIs2MrI0NLWCkMZA0tzU3NTQyNTI1Mo1KMg/yCo9J7XYKD45NyU+JTU5PyW1SC85WcPU0NBYM1bB
3UcBrEjByt0n3tMvzNHH0yUeSIa6KlgppOe4p5Y4JpdklqU6lpQUZSZZKWTmpaRWKOSXlijkpykU
Jealp3JFY7Xf2NTMiIr2h+ZlpuUX5WJ1AABQSwMEFAACAAgAuD0JQTlpxroMAgAAPQwAAEwAHAB0
bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItcHJlY2lzaW9u
LWZvcm1hdC1hY3R1YWwudHh0VVQJAAOsaiNQrGojUHV4CwABBOgDAAAE6AMAAL2WUWviQBDH3/0U
g09XKNKWInLgQTijBhIVk9Z7kzWOSe7Wjexuav32N4kVKyRetod5kYAz8//tf3dndoGrkQsqZmuU
sJMYJipJBWxSuWUaNCrdabWmAlQWhqjUPRzSDPYJ56AQgdGvTFBBuoH2zPL9NmwpikVIkZuU83SP
a1gdoB3YfgA/p97MtQO7TTUDKq1Ax6SyyBn8AmF2IhgeAULOlAIm1hChLg/Zp/IP1SsKHutVhkrU
mRRU75pkuvqNYb7qfD0Q8U5VuW/036s9D+xfS39sDez5fR7tThfLoTu1gjtIhNJMhEjmXNFLyAWZ
4RflPHvgvHhNKo6d0bhJvdxQZ9KsnY3pFWbeSG04t0aePQkaO51lgrc+n2Watz2hVbY2uIu3PaWV
ln5Br05X1rFM93mTB5QylTRddEwyb4wna9gxybaoUaqaHflEWmBfXLg7QhAomaaRhO87avL0QcOv
UP0OzuTVcp3B0p68eJ3P4FeWSYwZTT8mkQahUMmK4wlTlSV0JBMReomAH314vNyVawnsvXbCeYZT
Rq++xAfTszHUszHV44MpVvfJFKtexiVW1xSrZ0rVM4Pq98HYKhNzP3bwoQGqrjFV9z+oTB6DOqbL
Sz2GPhIRAb6hPEDIOK95k0m4NOLpHGKy9H+VoxBTXyrqnWMuCx5f+puM88OMSUVN8mzr51d8q/UX
UEsDBBQAAgAIALY9CUFeO0kWAwEAANUJAABQABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFz
dC9jYW52YXMvd2ViZ2wvZHJhdy1lbGVtZW50cy1vdXQtb2YtYm91bmRzLXN0ZGVyci50eHRVVAkA
A6hqI1DQVyNQdXgLAAEE6AMAAAToAwAAzdY9a8MwEAbgvb/ixmYp+rQlbYGYYDBJMaVLKMaWZWOw
rSLL7d+v29AtY0NvuUHc8KBXd+jCmKbSXCvfaipTxiRVzGRleS5NP7qFVXZqq9ZZ37rwZO2jpJTv
3uBYwE8TmGNR5afXfZEfqvNzVu5f8vMJDPTjIdSf2egmN8fFQKjn3oFfI/gOGr/O7QKdD9CsXefC
w+U2RiUSDSbhguLBaKrQYJQmKRqMZozgwUiG5gFzooVGg6EcT0wbJeX3wNQxuuk9QvRQW+uW5Rd2
VX64EIftGIb5uzUMzRodkNtIwYVEE5/gSlL0NybYffbS3yIVEeiRkin8A5KQBM3XRSQp/w/MF1BL
AwQUAAIACAC5PQlBV1Iu7ToBAAChDAAASQAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3R5cGUtY29udmVyc2lvbi10ZXN0LXN0ZGVyci50eHRVVAkAA65qI1DWVyNQ
dXgLAAEE6AMAAAToAwAAzdTPS8MwFAfwu3/FO+plNL+T3orWMpidFKeHIaVLsy7QpdJmov+91V0V
epA1l0cCgXzCe99sMVaIxedKxio4QVwgwuO0KNZF3LRmwKU+1mVtdFebfqH1NUOI3LzCY1rcr4uH
JL9N4SUp8mWexZB439vdyRuIwA5Q26HataZewNNh3B6qAQbbuL3VlfPwZvp91x8rp824dlXrP6+2
v5MIF8GRlAqNRCmbQMpW8HMI4mxVLvPnZLW8K8e6SSGGps2MT7S37+asjMG62nxAd/LQ7aGvXGP+
ul9E/B/v3zj7/fDpAEEkJWH1RNAI8eBIFAdH4nLGyRUUs2jOyZUsuMmVPEIqOJLkoZHQpMm5LEmI
0EgY4RnzLTkReM58KyYUDasniqlJf+4lSTwiJDgSY8GRJJoxTIpjfqkwfQFQSwMEFAACAAgAuD0J
QWWTmR9bAgAA3QwAAEwAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2NhbnZhcy93ZWJn
bC9zaGFkZXItcHJlY2lzaW9uLWZvcm1hdC13ZGlmZi5odG1sVVQJAAOsaiNQ1FcjUHV4CwABBOgD
AAAE6AMAAL1X72viQBD97l8xeHBcocS2FJE2CnJGKxgVTdv7Jmsy+XFdE9nd1Eq5//0mCZL2Tj2T
w3wJITvz3tu3uzNZ3UfmdHSpthw7moMc3mHJ7BdPRHHo3MEXl7F7+AUac5w/h5ibDOmNLFlvZFBr
gZ1nXA5GIH3moAD6YAcyiEJwI7FiChRKpdVqkxBkbNso5SVsoxg2AecgEYHRUwQoIXKhPu3O53VY
URTzkCLdiPNogw4st1C3jLkF3yfmdGRYRp0wLYKWoHxiSTXMUwnTnYJ+JsDmTEpgoQMeqv0hm0i8
EF4KmOEdDBWoYhES3jHKaPkT7WTWyXzA49ohuG809mTMLOPHYv7Q7RmzyyR6NHle9EeTrnUBQSgV
C20kc47wBeSCiLEknWn0ho9mlYwPw8FDlXyJocNxtXZWxpeaeSa2/qw7MI2xVdnu3Ed47v25j/O8
O/SQrRWu4nl36UFLS/CdUpWVL6JNUuQBhYgEdRflE80r44EDaybYChUKeWJF3ilNZX86cBckIUTB
FLUkfFtTkacXan4p6x0Mx0/d0bC3MMaPpvZR+JFpksaYuh8TSI0wlMGS406m3JegCRZ6aAYhfPXU
fRuuPy/MsRz2ViQn7+RZUut0olzcbRl1t2XkXV+V0Ne8KaHvtKS/9DVL6GuVkNcqpq7dhjLOFbE7
X9mrarQ1y2hr/oe2In+OyqeTTgWJXoLQA3xFsQWbcX7isSfivRE3eUiR2f8LjkKK+nIAL4/ZAepy
TSU7/UFv05WjkxFk1wQ35nw7ZUJShc1t/ngFoLsIpXdqNb2RXEN+A1BLAwQUAAIACAC3PQlBCsdL
DqkAAACUAgAAVAAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvY2FudmFzL3dlYmdsL2lu
ZGV4LXZhbGlkYXRpb24tY29waWVzLWluZGljZXMtc3RkZXJyLnR4dFVUCQADqmojUNJXI1B1eAsA
AQToAwAABOgDAADNzs0KgkAUhuF9V3GWtYlxxqGcnaCIIBoSbSRkGk8i+BMzx7r9rLZdgJtv8fEu
norzwJPqt2LZgww8T/hcqLgsi1K1PTpem6GpGzRTg3ZvzFYuye4KSQbfCFSS1Wl+CbM0qotTXIbn
tMhBQdtHVr/iHgccySnQRDg8CGgCbQw6B9NMMN3B6rFFeKKlbrmhGz+p7W4zIbBN9RfpM8HXj5S+
t3qkZEe2IuQbUEsDBBQAAgAIALc9CUFlvUz1nQAAAEoBAABfABwAdG1wL2xheW91dC10ZXN0LXJl
c3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi12ZXJpZmllcy10b28tbWFu
eS1pbmRpY2VzLXN0ZGVyci50eHRVVAkAA6pqI1DSVyNQdXgLAAEE6AMAAAToAwAAzY6xCsIwFAB3
v+KNuohNDZJshZZSKK0EcSkSYvoshbaR5FV/36qrH+Byw3HDNYyJiMsv44UHLphgXAiZKVUr2Q0Y
mLZjq1u0rkW/tXbNoyjeXCAv4ROBzEtdVOekLFJdHzOVnIq6AgndkHrzzAYccaIgwRDheCcgB8Za
DAHcTOBu4M3UITzQU79o6Kd36vvrTAi7VfNzMo72/zT5AlBLAwQUAAIACAC3PQlBuLgfRZcAAAAC
AgAARAAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvY2FudmFzL3dlYmdsL2dldC1hY3Rp
dmUtdGVzdC1zdGRlcnIudHh0VVQJAAOpaiNQ0FcjUHV4CwABBOgDAAAE6AMAAMWOQQuCMBhA7/2K
71iXcJM53W2giCAFgl0kRm2fMlAHa0U/P6lrlyDq8k4P3usozQgTL8YLOeNJSiKWiqJp9o0YRrxQ
pSejDGpn0G+1XjNC4s0RyhqeEoiyVtXuIOsqVwvbAgQMY4lB6mBv2M62d34SYGeDd3DXAK4Hf5oH
XHXvB7I0+utAkjD6xQEZgrfnD/qccvKb/gNQSwMEFAACAAgAtz0JQaFYj2GVAAAAJgEAAFEAHAB0
bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1iaW5kLWF0dHJpYi1s
b2NhdGlvbi10ZXN0LXN0ZGVyci50eHRVVAkAA6lqI1DRVyNQdXgLAAEE6AMAAAToAwAAxY6xDoIw
FAB3v+KNuhALlmo3QtA4CKYxcSCGlPYBTaCYtg7+vSSu7i6Xu+3qOD4Qyr9MFjLKGN3vKOOFEJXg
/Yg+btSkG41q1ugipdaUkGTzgGshjpW4ZGVewD0T5bk8cchCcKZ9BYQtGA/aeNmOqCO4DUsO0oM3
ve2MkjbAE103u0lahYtbOYb3qv61lJKUpn9b+gBQSwMEFAACAAgAKzMJQRiurkrNAAAAqAEAAEoA
HAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbnZhbGlkLXBhc3Nl
ZC1wYXJhbXMtc3RkZXJyLnR4dFVUCQAD0lcjUNJXI1B1eAsAAQToAwAABOgDAADNzjFvwjAUBOCd
X/HGsqAmdiD1FmgaRUpDZZV2QCh6PJvEknEq21Ti3xOVtUPHLqc76YZvn3CeM3FPlubLJ5bxnPNs
JUopt1L0Voe0o7PqlKZRab8gesiShM0P8FbKl618LdpNCZ+FbOu2ElDE6M3xEjU8ggmgTMCj1WoB
78M0BwwQTO9OhtBF+NL+NPozOtJTd2jjdbb/nbRkyT8j5SnjfyBVDfycQFRNV7cfRVM/d1PuShDQ
27Vx6g5sRsJoRiegdt9ojQIa0CNF7Wc3UEsDBBQAAgAIALg9CUHD8+DxWAAAAGEAAABKABwAdG1w
L2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wvbnVsbC1vYmplY3QtYmVoYXZp
b3VyLXN0ZGVyci50eHRVVAkAA6tqI1DSVyNQdXgLAAEE6AMAAAToAwAAizYysjQ0tYKQxkDS3NTS
zNzI0MDQyjUoyD/IKj0ntdgoPjk3JT4lNTk/JbVILzlZw9TQ0FgzVsHdRwGsSMHK3Sfe0y/M0cfT
Jd4/wDXIMcTT30/BCgi5AFBLAwQKAAAAAABFMwlBAAAAAAAAAAAAAAAAKAAcAHRtcC9sYXlvdXQt
dGVzdC1yZXN1bHRzL2Zhc3QvZmlsZXN5c3RlbS9VVAkAAwJYI1DXaiNQdXgLAAEE6AMAAAToAwAA
UEsDBBQAAgAIAEUzCUFmN3+mZwAAAHEAAAA6ABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFz
dC9maWxlc3lzdGVtL29wLWNvcHktc3RkZXJyLnR4dFVUCQADAlgjUAJYI1B1eAsAAQToAwAABOgD
AACLNjQxNTCzgpDGRhZmlhbGxiYm5sYmVq5BQf5BVmmZOanxxZXFJam58SmZRanJJflFlfEpiSWJ
SYnFqXrJyRoWpqaasQrOiXnqJQpFqbn5ZakKiQpwpQrlmSUZCskZmTkpRal5elwAUEsDBBQAAgAI
AEUzCUG5YOfNZwAAAHEAAAA6ABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9maWxlc3lz
dGVtL29wLW1vdmUtc3RkZXJyLnR4dFVUCQADAlgjUAJYI1B1eAsAAQToAwAABOgDAACLNjQxNTCz
gpDGRhZmlhbGphaWZobGVq5BQf5BVmmZOanxxZXFJam58SmZRanJJflFlfEpiSWJSYnFqXrJyRoW
pqaasQrOiXnqJQpFqbn5ZakKiQpwpQrlmSUZCskZmTkpRal5elwAUEsDBBQAAgAIAEUzCUHMiaEO
ZwAAAHEAAAA8ABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9maWxlc3lzdGVtL29wLXJl
bW92ZS1zdGRlcnIudHh0VVQJAAMCWCNQAlgjUHV4CwABBOgDAAAE6AMAAIs2NDE1MLOCkMZGFmaW
FsZmpsbGJgZWrkFB/kFWaZk5qfHFlcUlqbnxKZlFqckl+UWV8SmJJYlJicWpesnJGhamppqxCs6J
eeolCkWpufllqQqJCnClCuWZJRkKyRmZOSlFqXl6XABQSwMECgAAAAAAVz0JQQAAAAAAAAAAAAAA
AEMAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9weXdlYnNvY2tldC53cy5sb2ctMDlBdWcyMDEy
LTA3NDI0NS1vdXQudHh0VVQJAAP1aSNQ9WkjUHV4CwABBOgDAAAE6AMAAFBLAwQUAAIACADHPQlB
yjedMSK7AACq6wgAJgAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2FjY2Vzc19sb2cudHh0VVQJ
AAPFaiNQG1cjUHV4CwABBOgDAAAE6AMAAOxd/2/bOJb//f6KYoH0lzs2IilR0gBBMdPp7BbY2ym2
ucMBh0MhS7StqSxpJDmJ769fUpIT2yJlWqRkp3ULBI5i6PO+kXx87/ERIvedxf7DN4D9/1/Lv/15
vbhFFkQ/WeQnhH5C8M2/W+zf/735y18/3r+5DfI8DMIlvQ1mWVGB+jPI0ih7TJMsiOJ0AVZBGs9p
WQHbst8tq1Xy5m/3959v4Tv4lzfIst5AbPn/BgcDF7TM1kVIS1UStr/skMEev7GhpUFFEDIKSvAQ
B6CgUVzQsHqXL/MdDGy5b4AZPgVYIrlCgkfDEwixxnSmRMRMbToiDYugXILHJU1BGjzEi6DixhI8
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
1x5HU/Z+aESVAq8/h5PlbSR2lbC1t0WjihPy+xaZrSS3Tfczjbq+68nRbaXoPyaHlBNRPda6PbJd
sTrcm82HvjrUy/NxlQeqKG9XJnVkmlWCzKSXSGjOBViTc8sItSMVDSodZnT1GClEsacPGBufScf+
Urqgi9N2p9v8hxL5tc5f6xKJ9IAhK8eaUEz4xYSijRepypvK/dtY2lkmtHP7nrd48zCLjLG9rH/2
+J3s07l9O5y570MT1Xi3RK2OEtKTjUl88fUt6nQucoaLGULrC9GRJzfRQDTNIkmHFuLr2bYGLIGl
NbK0tG58euHJcldb7s53Bv15BkhedVEWPuS0ZeeTxfwfUEsDBAoAAAAAAHAzCUEAAAAAAAAAAAAA
AAAhABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0vVVQJAANUWCNQ12ojUHV4CwAB
BOgDAAAE6AMAAFBLAwQKAAAAAADEMwlBAAAAAAAAAAAAAAAAKgAcAHRtcC9sYXlvdXQtdGVzdC1y
ZXN1bHRzL3BsYXRmb3JtL2Nocm9taXVtL1VUCQAD71gjUNdqI1B1eAsAAQToAwAABOgDAABQSwME
CgAAAAAAxDMJQQAAAAAAAAAAAAAAADIAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9wbGF0Zm9y
bS9jaHJvbWl1bS92aXJ0dWFsL1VUCQAD71gjUNdqI1B1eAsAAQToAwAABOgDAABQSwMECgAAAAAA
xDMJQQAAAAAAAAAAAAAAADYAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJv
bWl1bS92aXJ0dWFsL2dwdS9VVAkAA+9YI1DXaiNQdXgLAAEE6AMAAAToAwAAUEsDBAoAAAAAAMQz
CUEAAAAAAAAAAAAAAAA7ABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21p
dW0vdmlydHVhbC9ncHUvZmFzdC9VVAkAA+9YI1DXaiNQdXgLAAEE6AMAAAToAwAAUEsDBAoAAAAA
AMQzCUEAAAAAAAAAAAAAAABCABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hy
b21pdW0vdmlydHVhbC9ncHUvZmFzdC9jYW52YXMvVVQJAAPvWCNQ12ojUHV4CwABBOgDAAAE6AMA
AFBLAwQKAAAAAADIMwlBAAAAAAAAAAAAAAAASAAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Bs
YXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2Zhc3QvY2FudmFzL3dlYmdsL1VUCQAD91gjUNdq
I1B1eAsAAQToAwAABOgDAABQSwMEFAACAAgAxTMJQS2aaSvYAAAAHAIAAGgAHAB0bXAvbGF5b3V0
LXRlc3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL2dwdS9mYXN0L2NhbnZhcy93
ZWJnbC9zaGFkZXItcHJlY2lzaW9uLWZvcm1hdC1kaWZmLnR4dFVUCQAD8lgjUPJYI1B1eAsAAQTo
AwAABOgDAAC1j7FOwzAQhnc/hXfjHkIgpkpBKExUREpe4HAuqSUnsXznkr49LVHJgqALy03f9/06
a60GGSIEPE5ZrBCLTcQ5CEMMKN2UBnD7NA0+D3DwSTIG6GOGDlnA4XhAhg967wPwHltKNiZynv00
2rOMYmmO5ITajcyilTHm/yfRnaVlsCi0fbi9udfmdB91UShdPdW1Xtzqor58mZuEY087P+rt9mfi
bkU8a0mZrujh/GfvhFzT+371l+DKXIpmKWbniLnLIRwrTEztOqlMU9aNfn7bVa9lUyqjPgFQSwME
FAACAAgAxTMJQR8ZY3n7AQAADgwAAGwAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9wbGF0Zm9y
bS9jaHJvbWl1bS92aXJ0dWFsL2dwdS9mYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItcHJlY2lzaW9u
LWZvcm1hdC1leHBlY3RlZC50eHRVVAkAA/JYI1DyWCNQdXgLAAEE6AMAAAToAwAAvZZRa+JAEMff
+ykGn65QpC1F5MCDcEYNJCqa1nuTNY5J7tZd2d3U+u1vktbzhMTL9jAvIZCZ+f/2v7szWeBq6INO
2BoV7BRGqU6lgI1UW2bAoDbtm5uJAJ1FEWp9BweZwT7lHDQiMHqqFDXIDbSmznzegi1FsRgpciM5
l3tcw+oArdCdh/B9Ekx9N3RbVDOk0hpMQiqLnGFeIEyPBIN3gIgzrYGJNcRoykP2Uv2iekXB93qV
oQpNpgTVuyQpVz8xyledrwdi3q4q94W+vbiz0P2xnI+cvju7y6P9yWI58CdOeAup0IaJCMmcC3op
uaAy/KRc4Pa956BJxZE3HDWplxvqjZu1szG9wswrqQ1mzjBwx2Fjp7NM8Nrns0zzuie0ytYGd/G6
p7TS0k/o1enKJlFynzd5QKWkouliEpJ5ZTxdw44ptkWDStfsyEfSAvvswt0SgkDFDI0kfNtRk6cX
Gn6F6lfwxi+O7/WX7vg5aP8NfmGZxJjR9GMKaRAKna44HjF1WUJbMRFjkAr41oOH8125lMDeaiec
ZjhldOtLfDA9WUM9WVM93NtidR5tseplnGN1bLG6tlRdO6heD6ytsjH3YwfvG6DqWFN1/oPK5mfQ
JHR5qcfQSypiwFdUB4gY5zVvMgmXRjyeQmyW/q9yFGLrS0W9U8wf234DUEsDBBQAAgAIAMQzCUH7
zxumqgAAAN8CAABvABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21pdW0v
dmlydHVhbC9ncHUvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtdmVydGV4LWF0dHJpYi16ZXJvLWlzc3Vl
cy1zdGRlcnIudHh0VVQJAAPwWCNQ8FgjUHV4CwABBOgDAAAE6AMAAM3OvQ6CMBiF4d2r+EZdCP0o
UNiIQeMgmMbEwRhS2gJN+DG0Dt69JK7uspy8Z3vuhFGk6XcDZDGizxKGyNKc85Knba8tVnJQldJy
Unr2pNyGhAS7B1xyfij5OSv2OdwyXpyKYwqZc7OpX06DD8aCMlbUvVYeXLvldsKCNe3YGClGB089
N9M8iFHqpUfRu/fm/oOUEMLQXxcJMWHxukgBjfxwXSQaYUj/RvoAUEsDBBQAAgAIAMUzCUHE/7jF
2wAAADgBAABjABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21pdW0vdmly
dHVhbC9ncHUvZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi1zdGRlcnIudHh0VVQJ
AAPxWCNQ8VgjUHV4CwABBOgDAAAE6AMAAI2PPWvDMBiE9/yKG9sl+Csk0WYaxxgcu4jQDiEYRX7t
CGw5SG9a+u/rtnTr0OW4O2547hRukigRPxpHm3UUhdtgHcRbkUlZS9EP5KNGj23Tkp5ackutH1Zh
GD+e8ZzJfS0PafWU4TWVVVHlAimzM5c7EwIYj9Z4dRmoXeJ4neNVeXjT285oZRk3ct3kRmU1zd6q
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
ypTIp9B+uvskYk5KAA2P7y8zKUuxCEP0DW2DNWNrWFQSoXJDj4WURCL89o8K8104DqbBjX0JclIE
38TlCvbV+6289s4xS7CvYojfQe5vACUVzPvppLEElLKfFVVrCD+QcKA3EuL+2t0nrtW3x/EqlHkZ
AgLATb7EwLwAvIpKEQIsJHT8eRhncLkmVR5uCJcVouG6rMIUSDqMUbFBIgRSWtNQZEhVQ6CCWMPL
V4sR3GBjtSiQUORAq3FbmcbHpOvDGX3JHxpXl38PDoVOsCOirj9e66OREgCqKpyE/lywbzOuV7MR
+A4EVi0xoI0zhKB8X6++/Pjy4hkXfHEeeNYOCKC6rvFnUnj39/0SN3sRAsTDK2zPgTCCWb/fuPE5
xo1/h3Foe9I4EPlzjLs5x7ib/8q4GstHrNvLDJinf5pGNhjlemWnD11xHv6BZk+C3wkddeNfikiU
y3NcOTnlyiqOoZ6mFaU70FFAR/+/8MwfxgyTc5wyHXbK/zseZsOmvz69vHoPv37+8vPT69N/lPZ/
sI63f054Oj+61kKN0/+u929QSwMEFAACAAgAxDMJQeKQ+hjJAAAAXgYAAGwAHAB0bXAvbGF5b3V0
LXRlc3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL2dwdS9mYXN0L2NhbnZhcy93
ZWJnbC9kcmF3LWFycmF5cy1vdXQtb2YtYm91bmRzLXN0ZGVyci50eHRVVAkAA+9YI1DvWCNQdXgL
AAEE6AMAAAToAwAAzdS/CsIwEAbw3ae4URdpcmkasxVapFCsFHERKTGNpaBW0qj49v5bfYBbbji+
4cd3cDumBBf6N5GrhLNFwrjiUud1XdW6O7mRN/bcNq2zQ+v83NppzBjO9rAs4RsCvSybYrVNyyJr
qnVep5uiWoGG7pR580i9N89RgwnBna8BwgDGWjeOMNwCDEfw5tI5uDsf+vca+ssn6vvDLTiIJru/
REwWSJwohKBOlDJSxIlJpBh1YowxbSK+L028ReQoBXWiUpw4EVHRed0vUEsDBBQAAgAIAMQzCUHQ
s10xjAAAAAEBAABiABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21pdW0v
dmlydHVhbC9ncHUvZmFzdC9jYW52YXMvd2ViZ2wvZXJyb3ItcmVwb3J0aW5nLXN0ZGVyci50eHRV
VAkAA+9YI1DvWCNQdXgLAAEE6AMAAAToAwAAiza0MDEysYKQxkYW5kZGBgbmBmZm5lauQUH+QVbp
OanFRvHJuSnxKanJ+SmpRXrJyRqmhobGmrEK7j4KYEUKVu4+8Z5+YY4+ni7xQDLUVcFKIT3HPbXE
MbkksyzVsaSkKDPJSiEzLyW1QiG/tEQhP02hKDEvPZUrGqv9hpYGhlS0PzQvMy2/KBerAwBQSwME
FAACAAgAxTMJQTlpxroMAgAAPQwAAGoAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9wbGF0Zm9y
bS9jaHJvbWl1bS92aXJ0dWFsL2dwdS9mYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItcHJlY2lzaW9u
LWZvcm1hdC1hY3R1YWwudHh0VVQJAAPyWCNQ8lgjUHV4CwABBOgDAAAE6AMAAL2WUWviQBDH3/0U
g09XKNKWInLgQTijBhIVk9Z7kzWOSe7Wjexuav32N4kVKyRetod5kYAz8//tf3dndoGrkQsqZmuU
sJMYJipJBWxSuWUaNCrdabWmAlQWhqjUPRzSDPYJ56AQgdGvTFBBuoH2zPL9NmwpikVIkZuU83SP
a1gdoB3YfgA/p97MtQO7TTUDKq1Ax6SyyBn8AmF2IhgeAULOlAIm1hChLg/Zp/IP1SsKHutVhkrU
mRRU75pkuvqNYb7qfD0Q8U5VuW/036s9D+xfS39sDez5fR7tThfLoTu1gjtIhNJMhEjmXNFLyAWZ
4RflPHvgvHhNKo6d0bhJvdxQZ9KsnY3pFWbeSG04t0aePQkaO51lgrc+n2Watz2hVbY2uIu3PaWV
ln5Br05X1rFM93mTB5QylTRddEwyb4wna9gxybaoUaqaHflEWmBfXLg7QhAomaaRhO87avL0QcOv
UP0OzuTVcp3B0p68eJ3P4FeWSYwZTT8mkQahUMmK4wlTlSV0JBMReomAH314vNyVawnsvXbCeYZT
Rq++xAfTszHUszHV44MpVvfJFKtexiVW1xSrZ0rVM4Pq98HYKhNzP3bwoQGqrjFV9z+oTB6DOqbL
Sz2GPhIRAb6hPEDIOK95k0m4NOLpHGKy9H+VoxBTXyrqnWMuCx5f+puM88OMSUVN8mzr51d8q/UX
UEsDBBQAAgAIAMgzCUH7LratigAAAJMAAABoABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxh
dGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUvZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtY29tcG9z
aXRlLW1vZGVzLXN0ZGVyci50eHRVVAkAA/dYI1D3WCNQdXgLAAEE6AMAAAToAwAAJcdBC4IwGIDh
e7/iO9ZFck7U3YZYdEhjBB0iZG6fOpgztnXo3yd0eXneZ1pSQtm/GSkLQoqKVnlWsEaITrDJYiC9
WnSvUa0afaLUPk/T7PCCWyNOnbjytm7gwUV7ac8MeIzeDJ+IcAQTQJsgB4s6gfu87SwDBDO50Sjp
IrzRj6tfpFO42Ukbv7sfUEsDBBQAAgAIAMQzCUGuHqA2BAEAANUJAABuABwAdG1wL2xheW91dC10
ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUvZmFzdC9jYW52YXMvd2Vi
Z2wvZHJhdy1lbGVtZW50cy1vdXQtb2YtYm91bmRzLXN0ZGVyci50eHRVVAkAA+9YI1DvWCNQdXgL
AAEE6AMAAAToAwAAzdY9a4RAEAbgPr9iylwT9tNdtzs4OQQ5g4Q0RxBdVxHUDeua/P2YHOmuDZlm
imGKh2FemCvVgglzq5xpxWiqVKqJMFlVlZUZJrey2s5d3TnrOxeerH2UlPLDG5wL+BkCcy7q/PJ6
LPJTXT5n1fElLy9gYJhOofnMJje7Ja4GQrMMDvwWwffQ+m3pVuh9gHbrexcervcwmiim0GAoTzga
DCOpRIMRVFI8mIThwUgi8aQpkYqgwSii8BywStM/iXYTo5vfI0QPjbVuXX9hN+WHC3Hc2zAu36Nh
bLfogNxFakIJTZBsbMckmqHfGGNE4kcqqtEjOeP4AyJIwtAEROz/wj9gvgBQSwMEFAACAAgAxzMJ
Qc4j0Cs6AQAAoQwAAGcAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJvbWl1
bS92aXJ0dWFsL2dwdS9mYXN0L2NhbnZhcy93ZWJnbC90eXBlLWNvbnZlcnNpb24tdGVzdC1zdGRl
cnIudHh0VVQJAAP1WCNQ9VgjUHV4CwABBOgDAAAE6AMAAM3WTUvDMBgH8Luf4jnqZeT9pbeitQxm
J8XpYUjp0qwLdKm0mei3t7qrggexuYQEAs8v5PmTbLFihCXnkRIlCeFKCiRQkpXlukzazo6kMsem
aqzpGzssjLnkGNOrZ7jPytt1eZcW1xk8pWWxLPIE0hAGtzsFCwjcCI0b611nmwU8HKbloR5hdK3f
O1P7AC922PfDsfbGTnNfd+H9Yvs9iUgdG4liEh2J41+Q8hV8bYIkX1XL4jFdLW+qadxkkEDb5Tak
JrhXe1Ym4Hxj36A/Bej3MNS+tT/VF5z9Yf2Nd58H/z1AUapYXHeiKGc0OpLQ0ZG0mLFzFZVczdm5
mkkdWedqThCOjcSQio3EFYqNJLSMjaTwnC+TFpjgGfOtkcA4rjBNpCngsZEkjo6kKImNpOf85mkk
KeH/FKYPUEsDBBQAAgAIAMUzCUGqJjmIzgAAAKgBAABsABwAdG1wL2xheW91dC10ZXN0LXJlc3Vs
dHMvcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUvZmFzdC9jYW52YXMvd2ViZ2wvb2JqZWN0
LWRlbGV0aW9uLWJlaGF2aW91ci1zdGRlcnIudHh0VVQJAAPxWCNQ8VgjUHV4CwABBOgDAAAE6AMA
AMWOMWvDMBSE9/6KNyZLiGSX2NqcxDUG1ykiSYdQzMuTYgsUuUhqof++pllT6NYbjjs4uO/EspSn
4uYJz1Z8Ur5c5akopdxJ0VsdeEdX1SlNo9J+QTR7ZCyZv0HVwM8IRNV0dXssmnrbTX4oQUBv18ap
IkZvzs1IGM3oBNTuE61RQAN6pKj9w+kuAeNZ/geCl1I+7eRz0W5KeC1kW7eVgNvnR9SwBBNAmYBn
q9UC9sNUBwwQTO8uhtBFeNf+MvorOtJTdmjj129ISc7+DekbUEsDBBQAAgAIAMUzCUFlk5kfWwIA
AN0MAABqABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21pdW0vdmlydHVh
bC9ncHUvZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVyLXByZWNpc2lvbi1mb3JtYXQtd2RpZmYuaHRt
bFVUCQAD8lgjUPJYI1B1eAsAAQToAwAABOgDAAC9V+9r4kAQ/e5fMXhwXKHEthSRNgpyRisYFU3b
+yZrMvlxXRPZ3dRKuf/9JgmS9k49k8N8CSE7897bt7szWd1H5nR0qbYcO5qDHN5hyewXT0Rx6NzB
F5exe/gFGnOcP4eYmwzpjSxZb2RQa4GdZ1wORiB95qAA+mAHMohCcCOxYgoUSqXVapMQZGzbKOUl
bKMYNgHnIBGB0VMEKCFyoT7tzud1WFEU85Ai3YjzaIMOLLdQt4y5Bd8n5nRkWEadMC2ClqB8Ykk1
zFMJ052CfibA5kxKYKEDHqr9IZtIvBBeCpjhHQwVqGIREt4xymj5E+1k1sl8wOPaIbhvNPZkzCzj
x2L+0O0Zs8skejR5XvRHk651AUEoFQttJHOO8AXkgoixJJ1p9IaPZpWMD8PBQ5V8iaHDcbV2VsaX
mnkmtv6sOzCNsVXZ7txHeO79uY/zvDv0kK0VruJ5d+lBS0vwnVKVlS+iTVLkAYWIBHUX5RPNK+OB
A2sm2AoVCnliRd4pTWV/OnAXJCFEwRS1JHxbU5GnF2p+KesdDMdP3dGwtzDGj6b2UfiRaZLGmLof
E0iNMJTBkuNOptyXoAkWemgGIXz11H0brj8vzLEc9lYkJ+/kWVLrdKJc3G0Zdbdl5F1fldDXvCmh
77Skv/Q1S+hrlZDXKqau3YYyzhWxO1/Zq2q0Nctoa/6HtiJ/jsqnk04FiV6C0AN8RbEFm3F+4rEn
4r0RN3lIkdn/C45CivpyAC+P2QHqck0lO/1Bb9OVo5MRZNcEN+Z8O2VCUoXNbf54BaC7CKV3ajW9
kVxDfgNQSwMEFAACAAgAxTMJQWDxbE+rAAAAlAIAAHIAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0
cy9wbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL2dwdS9mYXN0L2NhbnZhcy93ZWJnbC9pbmRleC12
YWxpZGF0aW9uLWNvcGllcy1pbmRpY2VzLXN0ZGVyci50eHRVVAkAA/FYI1DxWCNQdXgLAAEE6AMA
AAToAwAAzc67CsIwGIbh3av4R13EHHowW6GlFEorQVxEQkx/S6EHSVK9fU+rF9DlGz7e4TmTmFMu
fstoHFFKIk5iEopMylqKtkdHlRka1aCZGrRbY9YBIWxzgbyEbwQiL1VRnZKySFV9yGRyLOoKBLR9
avUz63HA0TsB2nsc7h78BNoYdA6m2cN0A6vHFuGB1nfvG7rxk9ruOnuE3er8F0lDFi0eyWjAFo/k
lO0XhHwBUEsDBBQAAgAIAMUzCUHvik1+oAAAAEoBAAB9ABwAdG1wL2xheW91dC10ZXN0LXJlc3Vs
dHMvcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUvZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgt
dmFsaWRhdGlvbi12ZXJpZmllcy10b28tbWFueS1pbmRpY2VzLXN0ZGVyci50eHRVVAkAA/FYI1Dx
WCNQdXgLAAEE6AMAAAToAwAAzY67CsIwFEB3v+KOuohJH9ZshZZSKK0EcREJMb2WQttIcqu/72v1
A1zOcDjDObEk5KH4MuDJlnOWMJ7EkcilbKToBvRcmbFVLRrbolsbs4wYC1ZnKCr4RCCKSpX1Ma3K
TDX7XKaHsqlBQDdkTj/yAUecyAvQRDjeCMiCNga9BzsT2Cs4PXUId3TUvzT00zt1/WUmhM3i9HMy
iHfxH00+AVBLAwQUAAIACADEMwlB0TtTPJgAAAACAgAAYgAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1
bHRzL3BsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2Zhc3QvY2FudmFzL3dlYmdsL2dldC1h
Y3RpdmUtdGVzdC1zdGRlcnIudHh0VVQJAAPvWCNQ71gjUHV4CwABBOgDAAAE6AMAAMWOvQrCMBgA
d5/iG3WR5g/TbIWWUigKhboUCZp8LYG2gRjFx1d0dRFEl5sO7joiOeXqRUblhtKEspRIoYqm2TVq
GPFMtZmstmi8xbA2ZikIYasDlDU8JVBlravtPqurXD/YFqBgGEuMmYnuiu3seh8mBW62eAN/ieB7
CMd5wEX3fkCS9J8DnAuRfHEgizG40wd9kRD2m/4dUEsDBBQAAgAIAMQzCUFHNrtVlgAAACYBAABv
ABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUv
ZmFzdC9jYW52YXMvd2ViZ2wvZ2wtYmluZC1hdHRyaWItbG9jYXRpb24tdGVzdC1zdGRlcnIudHh0
VVQJAAPvWCNQ71gjUHV4CwABBOgDAAAE6AMAAMWOsQrCMBQAd7/ijbqUJK01ZgtSxcFWguBQpKRJ
2gbaVJI4+PcWXN1djrvtakwzkrEvU0J3hCBCKcIpK4SoBOtHE0ijJt1oo2ZtfKLUeotxunnAtRDH
Slx4eSjgzkV5Lk8MeIzetq9oAIENoG2Q7Wh0ArdhyUEGCLZ3nVXSRXga381+kk6ZxZ0c43tV/1ra
E5Tnf1v6AFBLAwQUAAIACADFMwlBjpbWsFoAAABhAAAAaAAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1
bHRzL3BsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2Zhc3QvY2FudmFzL3dlYmdsL251bGwt
b2JqZWN0LWJlaGF2aW91ci1zdGRlcnIudHh0VVQJAAPxWCNQ8VgjUHV4CwABBOgDAAAE6AMAAIs2
tDAxMrGCkMZGFuZGRkaGpsamZmZWrkFB/kFW6TmpxUbxybkp8SmpyfkpqUV6yckapoaGxpqxCu4+
CmBFClbuPvGefmGOPp4u8f4BrkGOIZ7+fgpWQMgFAFBLAwQKAAAAAABwMwlBAAAAAAAAAAAAAAAA
LwAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvVVQJAANU
WCNQ12ojUHV4CwABBOgDAAAE6AMAAFBLAwQKAAAAAABwMwlBAAAAAAAAAAAAAAAANQAcAHRtcC9s
YXlvdXQtdGVzdC1yZXN1bHRzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvVVQJAANUWCNQ
12ojUHV4CwABBOgDAAAE6AMAAFBLAwQKAAAAAABwMwlBAAAAAAAAAAAAAAAAPgAcAHRtcC9sYXlv
dXQtdGVzdC1yZXN1bHRzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvc2VjdXJpdHkvVVQJ
AANUWCNQ12ojUHV4CwABBOgDAAAE6AMAAFBLAwQKAAAAAABwMwlBAAAAAAAAAAAAAAAASwAcAHRt
cC9sYXlvdXQtdGVzdC1yZXN1bHRzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvc2VjdXJp
dHkvbWl4ZWRDb250ZW50L1VUCQADVFgjUNdqI1B1eAsAAQToAwAABOgDAABQSwMEFAACAAgAcDMJ
Qf0pEvduAAAAcgAAAHsAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1pZnJhbWUtaW4tbWFp
bi1mcmFtZS1hbGxvd2VkLXN0ZGVyci50eHRVVAkAA1RYI1BUWCNQdXgLAAEE6AMAAAToAwAAizY0
M7IwtTI0MzY0tDI2sjA3MDOxNDKxsDC0cg0K8g+ySk4tKokvSy3KTKuMLyjKT47PKy7WS07WMDcx
0YxVcHYNCokP8PaMCAOrcAYqVkjLL1IwNDLXMwBCQ4W0xMyc1BSF1KIiW10LQwtDLgBQSwMEFAAC
AAgAxz0JQSNeMNrMBgAA3iIAACYAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy90ZXN0c19ydW4w
LnR4dFVUCQADxWojUB1XI1B1eAsAAQToAwAABOgDAACtWtGW2ygMfd9/YTJNe87uL/Rtz9n9AWzL
Ng0GCjgZ79evBHaSSTAhzry0aXKvkIV0kXB7783Og/Nux42ped3DjlfaehY+M60afVJS80aojg1c
iRbB7Mf7j7feD/KPPsWva3COHQVnFhphofZvpjdJbG2569mpB8UUP4qOe1qHn/jEPH1Z8fqwvlKN
9kF5wSUbrczgJiukFDWixDqqgRYsWmRwRKOONSDBAzonJDDLhSPXvBjAvmajmJ0DOm/1hMjW8gFy
QE9/N0w8AooW18ZVmbaiE+q81yUUh//MG3e8ktBkELoeBzJ1sgLjRTiGoQtf7TfR1kkwGD8VPF/L
hcQCYKNpOBrflyJzOCnzGd1qC6JT7DFSKAdYpp8idRK+vxTp/gXyOlXqGsut1spngzxwzCELTo+2
xo3BKs9hZ4/JKvKozoR3INsCjuE2X1Rn5CJGucDcgQugIXAxqVos83XGrcJFVYhCy70nEwyjZqzu
MHKZ8tdtK4VCUlDaDE4F2JJMTPIJbDZYMwM98yBFLg8WL3HTRsyFjCZaoPMj9/ugj3Mccqg5l0q2
8Q68DnViMLlN89pEkWXf1kGzRDx4hKNoQK//fA46ZpRsam4zMTtZjVnkUCq4H21WnG6g68CP3rJF
f5YA3qHnA5WrGiRrRsomRvJHToTDvIhh4cilwJgJVE03YhrjQd6sUI2+Lt4O7rqJK1ioxToeeW6s
lsdwaYrDzTWIvHZnxYkrYww+jLDR92/PwfcFcIom1oNlXjMF/qTtoYRleRdkXISOqBWJirxnDaP0
AtMfZcd52iG3QqLcqHQzZX4+cjuxHnizuvJ/YDWToDrcI2QkUOrI3c6gLIrlOwc1poyf3hrLTz8H
3sFbhG1li/DnU2RD4mzVsjCKvPzHT/I1K9TAHeB1O9iQphS9zISFVL9SyNXObaPGLXgxjNHI5ihi
CYBfo5yg6uRuboRrCVxRa4LaOFCN3LO0Pghw2I2O2OWy36P2KCooKSNEQXIwCLQgU+oyc385UjbG
FeoWUGfmDXaUcmIRsMo7V/D8xSownnMLLIpSSnLT8IF/sGTdnOGqu3n0e6xzOxwtUR9Y2Dw2j5VJ
YEgv1MKGzvBk/xBQiCmwFVAGp1p3OUfqqZZpH1vsQnFllEdn66xh7JUOjKwvA86nTZf6tLCZ6wFC
c4fznbZfYSxpY+DuUBAQC63EGNCJVMhwPae51FGhxWcZRh/PNIPh1Hh82LH2T3Lv4HHuDWfT9WdW
8YYNOHkzPxkoZs1DSiCxGr1IlfwaGXRbjo3DPm9RmVAvtCv3kcaX2QBGCPV4KKaGuCvK5bmrmueL
tUbsoZ1iBvYKfqTOv4mfE7KzRh2tpFnHimr0D6L0ga0whSWxcqii+U6j4GkVpukXmqOWDKz7HJL0
GEEDITdiF09aVkldhRC0Vg8MG06evLgilpvQ3QFdnwfEy3ePKNTdySMkL7vaUUqHzoC6+rjcANze
AT3HdhS8FWKPsdd22oUpdM5WHa4VGaZC1wEJRDWlr/s+kYManptdLGqFp9JNc78Q4hkyH+MWjCRN
n39kuvqVSvmFu8CWmR0VLhzMNl7R2VWi0SaUBG4YbkT014Bq4tjzeyTwKvky276/01JooWfvuDBW
aINDTDlpX0r6/v7tsTvf3/cloO8loD8fg7AZOt/s0X1TOGcuYdjG37/Ir4CGY5bsRVIWqF2kGXQQ
/knfr5n7zcxn/d0Y6I3xPdO4o6uJrYvO7NfW3hypzcQey3TrIwfu/gXuZq8XCd3o+ELfv0Z/yv0B
PE8I6XO8EoeDb1H4w0WU12Ge2z9NuSMIhccsSRGXu9ihtKhNLhuHa04YHUbf/kXDRSGSUDcHRxro
4cPngEaiEvXwwehSytN8egt2BuOt7S4e5UsThpNXwtUzVg8G+x3LsAMRBneLG5OaXFKM+eIrMlgD
1ZjnKWymsClsGJmQEDqBIkIJ6LpBmZ9c6q579CyRfblgpPa1xCm6ppvto/ZNqn6Ok0FjGoByoUuK
V4CuDDxfcK7f0ydZowPsAFPvny5woai/o7kz5ggWy1p3ek0Kn5a9iF36uStuNL3VytAHjeBp3taI
ZnZMjAUXyhIAQzO56Hrsvc2jHLt6rWZpyD1iuFPT9Arj8Qad4TidYhx8Hn2CCsuqPqDcxbCl7zjO
BNSCcL9xKQOckSzjtgsdl6M3qdHQpfn+CmvxPdMTljDtF5Xd5g/Nm//MN45/aynqiSbA+hBGiZ/0
1uzI5ReY+lcMoEdfYIlGzoo7HNRwJinBf3rBXkTABhS/oAulwjVuK7URLvny65Jxl/9qMn9YCnZ5
Jzun6/9QSwMEFAACAAgA0D0JQbeaoZvwJAAAg50AACQAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0
cy9yZXN1bHRzLmh0bWxVVAkAA9dqI1CKWSNQdXgLAAEE6AMAAAToAwAAzT1rd9u4sd/9KxBlW0q1
JNvZx91atnJcx9m4zevE3nb3enN9KImSGFOkSlJ+dOv/fmcGAPEkJSXpPXdPm0QgMBgMBjODwWBw
9OTFu9PLX9+fsXm5SIY7R0X5kETDHfzFft9h8N88imfz8pAd7O//YbDzuDPKJg/i0yLMZ3F6yPYH
9HOapWVvGi7i5OGQvYqS26iMx2GXFWFa9Iooj6davSL+VwRAD5YlL5zExTIJoWHvLhrdxAAoie75
J72kN4nzaFzGGXQ7zpLVIh14seRoDtmfDFR7STSFSt8tBWRRWmZLUQgN5weiiY7mdxJNvcVB//to
QW2WZi+jrCyzBdCl/62oUOaHaVa2+3lUrJKy6OXZXYeVE9Hsbh6XUa9YhmPoK83u8nDZ1OpwGudF
2cumvfJhGflh5Isw4TAmBMNs0xGNyui+7JU5zM8UWhyyJLuL8nFYRKKpqLYMJ5M4ncGIl/cVncr5
YbRYlg9dxIj+ZdfeF/VEuZzGFbACsEMC04iYppGY5UX2L983ANEfw1REMBv4dxinUW6BRM4A7MQU
wQxIdhCcmd1G+RQGd8jCVZlxmEAVSTtgpCw/ZLM8fHA4tABCJlHO22gTIZqOwvHNLM9W6aQnoNBE
uNXjaR4uoi4zCxczOX3xBAjKftzfl7wph/ADL7LgXU3CMuxF98swnUST49Y0TIqo9VFAqxZTRcKn
ZZYlo1ASbpkVMV9E0/g+mgzMiavWB7H5M/kr5whVv4l7wiSeARj6NqghST4bhe1n33/fZeqP/f6P
33dEgyyfRDnnriJL4gkrYhAeuf61l4eTeFWoZdrnY++NVrDW0nWzoZEYRI5F4YNqRC4miicqmsZp
AizYGyXZ+GZgykH2LTTcl1yniJxHSVjGtwKR8SovELdJNA1hPgWLr/IcWNzkyBynRv/qHzWnkN3G
qNrDyXImPxzBKFeSQDTbPSG0sIBLywO54Emk9qdJOKtlM6pDVWbRxF+Xk4+jWECXy2jSy1dpCpzX
i8I8eegtoqIIZ5ExukMiLZ+Tp5N9XePciWkcZclk7VRVPP6tuagc0dIAo4lLJCt8VwveEgT6l0oa
yB7EMGEtoCZN5GIDqvFFnS1xHosNZJGsCsRNV1Yv1Tg8Kk6ujIpuz6QK4BDue8U8nKBkxQ/y/09/
/PFHU3eTkhFcl4GSikFd9J8VriBBnhs0sqkQQwqJjYedhKMosedXTCzO1TyeTKJUJ9Eyi0Hz5L3o
FlZfoasrMQip5fo6bEEsYW18KxGt4VZb2dSNSgpF7G0JUjvp/SvLFg7jekU7Tea+vqr3DaH45x/+
YPLvwb4z86rIsdWAD+wvqM2r4noy1g/TI/uf7W8iqHWmBFnMvoc6pIH2Qevw//X/C3VPLSGV2agN
0DQy5PjMUhetURLaWqJiXGWVcMZbz85+dPsFyAaQovECpGYDP5hayN+7VJJkRutK8jtlhtR0N9QE
WKOK8fEhBwY6DuhH3CYpjwt4AYuDOsrDgqvLp0LFgForysI2PL93NLxE/mhPbHD4RofFYDqtUtCU
YHACNCpsDataUG2cx8tyuHMLptPsuihDHMl0ldIWhM2SbBQmF1ja7uxwLOIpaz8RVaWdjf+JInas
lZGqh0HNL3EYh+zqY9f4BqO8eXgfFkXN93lYvCrLpfhKNqBT4Rwp+zKMkxUonLpKlyCBG+ss4qIA
2n7gFqiLSS4//P5ofijm2SqZXGazWRIRKlCnzFcW+Cn0DeBrhkmT/I+4nF+UwB65p0K8iLJVWdNc
TbBByqrO4476M4/KVZ6qqQZeq2b75MWL6w9nFz+/vrxox+lyVcopN9hAWukw0VRJsJ3gI8lRrMjH
YLWvkuRa1O9/KrKUeM+qOlQYFCUUnN3DXqiAn22ki8QBGTSG1XMP/WI5KKSiPMeCd9N20A+ErS3G
RzWK1QgBpjOUjNS2Yw54EZbjeVRc0H4sy9tpNgHDpRA/dYbHL32+Yt+YjTo7ikWo6/qq7QryYMeE
DMJ2I7BuPR2mPrRliPb0u+kl7IZrxgViFyQEfQSaEnze6i38U1/ZiOYaUnWsxVKhPHB5L10liYls
Hi1AWhNMiZyFTp9XOQWUJ7yeCQG292fheE6fXsdF2YVFn05gXyvhneSgP/vLPCszdBD0RYM+iPrE
08rGDzn4nAzbNjC2BLq3x16e//Lm7JDBvh623pM4Y2U4KxAddvLzi/N3fGk/rzgYbAe5js8FMwO8
fiz5+LX6Ljkam6XQ8aBiGQfIk2PWO9BnDNug1MvDsd0D6JixYM9+ls+CDm89MNou8wiMK2gqgTxn
dsO9fr+/F7BDFgSqLeIJrUTzXepZrUIH712mD3gv6CdROivnYuCPLAIxbY0KV/0LUCg69QxJ0IPO
y/JBUk/RzGhHBDN4dj1gHaQYqD0+HcQuO5AD2akmErjjLW/adjroL1OcDo4bUpzvpIjGYHkEmtCQ
YGDq6JMaCkBlu1D6HB1eYXlc3peBIRmDo0l8y8bQc3Fs79CG2jey94cBDIPGClN1tAdfh0dYJPuH
Ui7oAz7ZWIAi3qoz5E0Dc1WVqDOBbqQ125xn5MraEtkW352QkYWqviV6PEKLjVcJU/gKKpJ6Y+Rd
4l0S8hX9KtalcUDzBtyjM1K7Ie3A2iAKYWNl6CvuoXgdpzcw4eK7Wsbqa59QrGbUdWxoE2zCVCD+
uYryh0o8B30fEI2DtJb47ZQ7IJH5gl2nN3OcVUvB3rhKqwZg0ifhsojqm+hkXFdb0LIOWcR1oFEb
RLiy4T5kdyiKdD2o4HRBnqErJ+g4hNOckHLFc4LZ0BWVVkvgJxwEOSu5neTW73K70yKBr22OleNC
FlaLIrvrF1F5UoK4gXmN2oHhJA2MNhxzDp14/lIst0uwJfO2hUW4XMLW5NXlm9dCs+MBiWMAxWkR
5eXJ5FM4BqJibUWDmgrtYBSBKIrOUsSPoHq4RjSGVY1tUIBhTRPFZlbUVl2+buJzXbXyepfk+zsm
EiurYyPeoqabcJEClqKWQPb9bfVs/+BbwcO1XM7rN7KipiU3ZUbcpGgajUtc3VxT1kd0xwc8ycYr
lGH9cR5hH1yitTWK8qqaPINB6qQY6EBPoyRpgjrRoGLdPoiLCxiWmCeD5CdgxlELYUMMlM7l/SNd
i9qW0lkJC+RG5w60f3Q1hRBoFUvXVs7atDOB8v0B/HWkdydxYfHurm2eJVyCa7Wv4o+mFca/WXaM
T2KT3gOD0dp5+5DHWR94drb4ydDH1NHMlTZcQQYdjXUezcVsADVMZ4I5BwBSE+F/uujh89wVrTqD
ig2FCSXYizcRmwHepiOdeWpJWrVwmYhufUuE16iWxVbSs76eJpZgNv4eF/EoiU4MU0RbAA1CxD4P
QzRbH1nfMGt0ffWkpj+dScZJFObn6Lm8DZO2ucs3uEHW0SZ9g9q4q1xJf68rYzRv0gY9a2iXmrOl
vTVKoEGrIeuQuuzZ/v5+ZbIb2rF4SMdt/NllYT4r5LQCqEvumWnLum1AlOEPZL/koY0EEI0G7LGL
njqLeW75JNEWqJ0ty+vKwtW5R7khj5lRif373xUDqdnP0uThYp7d/Vy5hqT3q91xXAsVLJ9IxaXE
T+klpE7gU+Gbwgr8wz+rlF9heBq3Goh/IdWOg9UYyXVjawBfA8m1X6C2YcL4twsoqX2E8WmdLgMt
Y+wFNL0D+gj+zRWQkrjEzq491WVXGhBQRx9rzPX/P4PwbSDWDoO7bH8uInRtmCwnZvqJ1+PZ5w6M
a/LpXE9iWntPkmxM/YLAueB+gI7ytkzjJDrc2+Pb+n1rDwlgsHfHzTkKi+h9WGoWnw9j26DIIyR2
hlT0Yy8rKIEpO0IrbV6WS8DUdg95Ku8eq76es3awB9TO8pI2/fJDB50WeyNQXLAhqAESQGer9GbP
cAHprh8fnhtODOzf92y/Ryg8AViLDD2Gpgj3XSi8aFr4/j/Qfh3thcOjAo1PDoRO/rN0nMTjGzxi
wd/tch4XndaQgVn/w58Pjvawvu05EFXxD33O+Qy/RKiGhYlkeRvexrMQRA3FG2BJ29jdYKna0HY1
WB0/x+FRA1+SfyF5ZXBgRS9ttGZURjVsjxdEkKC2MYnG4a6gjSSRILRaDT7/a/X1PZmgMM7VlP4W
0VOFM4LQdB1Zc65AofOKYNG8O84hs6ZgDNmpZA5mzXNcCEV1JtRNW+odMAfG5SpMjJONQlYzbHRc
+7wyOYYu/nb+PrDXvQRLHm4uQul3v1gmMWyjmO63xAYcoKzOf3kr+3Y3WuO63Y3Zz9/DZBVV/VBD
Y6OjOaTUMCoBqsEQnlH2xz8abfG/msbBy5Pz19KjCrLaacd0+ETh8zcnP50F0Aezv1ye/XLp/UBN
dulzxzoHobHpM6st7JqDOVXdOs/Js3FUFD8p8fcStgjImO9Gn6C+zkwks/gpGf/YN88PtA+wSbgu
6NCxU2dGm2eT/eWqmOv9iq2S2Ug/t3WEtvERNCid1VVzhnpI6csdk5nMUfGygelb0ZaRqlmVQnfB
+5OLi0BRw69RVkVUXEeaZLtGVa6IpAE3ZniDZa95YeWogI3enF9cnL/9yVje6nxpEd5EIKPyiJXz
sMR9MMaUVcFHRMpiGcOfoAcZiN6eWNflfckQc1zMOlze5A7mlYme5RF3v4YRzBNyDx+s2eUJhKqJ
ZvLoSS0q9ZHmqOMebJkomeEDn4sSkZ86REwqVnkiS+2jUKOGEBjAV34+ooAWYZhEaQi28MSWlWZD
z2F+w8Aetxji6YeTi1dBPTVVoMYXUfLy/M3Zu58vGzrSoxk27qpa5RYLaIEVHljumY10G+jKVzrH
mjZ4XkdL1RoPndZBqCoGjVsgjo1/92Op/lg4kHgTx39IIbHHGoJGDa4J7kvHm1hJMzFUi13dNiw4
4dPPG1i6Hcv6eDYoMGlyKqIxJSUXnobaPsYNULGw/1JkKmvKQsfjJUJEPih3rnWiSS5AvHWi+3xF
na7eEZ7YdukQkH4jHjumW9VqqSQ9tuO/1reaxNOpbIP/Nk4H/bIMjQV+un69xHAQpQ1pYLs1I+NN
eIdYEXvkZWyLju+w7oY93hl93Rm9CDvLPV8qUTh/yO5Mo8owLvjJUnDEd1pfaEEgMNwFyyNs3FS0
/WbFc40dKOKCeLMVeE26uLgGVU3xOtdAEb61czqVVUSNY9xzyA2zqDM8KvOhjDqQhUflxNiuebeS
mtXZ4fsjbKVZc1jpugoy8UR96RAGLgLWgVqDcbihYTioNVO4Yb/OErFCDJ2DFoG9LSI0OnQcRefD
hoKKfOiIDqyd8rVHvtyFt7p84WFL+rZvLSiBlAAkiG+AaTD7lJ3rjEGbIj2oyMvfaIpeU59W6NmW
yFPMFq9thwz5+8Qp/LwuhbA1O3u0lheulCNttfhIyG3OTXjSiI2tmLJ5lKbksDTuxmzWk5AqMQxV
KqlD4len9zZ0RE2sKbo1NoI7xpqhbbeK9FH5BvPoIGFOjhs2/Fn4oGorKmTkObCFio8s241WkFzZ
JIPtga2bPW016EYsjtCU2TTKayy/Xkb5uDr32opoEg8C30aNRv8CZfWHTtBxDb3/E3lGI+t8yaKA
v9h6AROstbj8xgtuc2u38a6RIW0FoSF2v7D3+g4qQttdaKPOh/AH2m1D81wAqnhDicnNLsKBu3Tk
WuZRxP/lWvb4TZzM0j9r/QHkCdCij6QNpMCSj0oOoNoi3kQPLE6pH3sXmEZ37yUYAeI5a6tARjqY
gfZ4JgN/mYwoF6IEfgU1Pvq8uYpjSY+ImgPnHoNmueH5v8RtYEWmEF1rfBpuOIl3Tiokuqob7/E9
KEJ1fEx92kcFVNYvskVUHeTzNYqn+fJMkPsplX+WPXrDQBDJJC5gT7pKS+VokBHqTR4CcTJVYJQr
NMaznCqugErsqdejAowjIapN4u3Wdv9jJ6eyXWFyw2an7XKqFRTo/nODCJzD9s+DHughRTR6yzFg
gqyixIhbOqYASMIZAp5H4STK7ejCUvi0jbANg/aqnZwA5e8hFiAQ2tRyjrSm1jgQNDcTNWeCAqxx
+ucZHt+5FeUrQvMVmA4CY+f4bH5A0pV/pVjvtn6uZ3GrPMzrHLKjUByzPW1px6W9MEnU2aGksjgw
pPNUqEDnrHvY88CLtRwlR6rLd+3nVYisXMh52e5o+03heKFwctpnU3iUIxTQ/ysAknOXn4z0qCig
kHx1pGnvxvGqHQ975+0x7F0PLK8nO2ktalbpLeX4DycTVs4jpeKmfEGK5CCkIJCuWIfOfXBCClzM
26hW7WIBxx79gEsYaVTI0TueF8AZBwC7lfkQewb1OqcfNqr8wx6v7Sg27WyRT15DzKSpg7C2x+dZ
f/ZlYU9iw5R/n2eOGHANd06NP2ctmzV4e4zOyEWjeUT0jw1zCV2Yx+3QTXNsgI+A9lbVx0Pm0LwU
00xb3/U/tHE5FLmB5r9s/bEp++pd1zqCaoHSGQk/b/vSQXFQSTaT46ICBgVrhyYOUEw8LJtNiRBU
6mDejZPVJJI3SYVNvkebHnmhcx7l1NddJD5DOzxUpDNFWQkXrgTCF2wNaU1Pl48K3nOsOkbzWPC8
kV6PhGh1YafZ3ZtRsEB198/SfvZ9wQK0VmTeFrSPl/J40eY3wSxYvBDEyTIJx1F773+ufit+uw/3
P+7+u/rXN3sYwiNiBmHu/roCORbS3SvKeUR0H+NVzUWYwi6RTEi6tX2Jg74AjUdW4O+PsBq1ov41
NLwLcwyNEN7r4nbG6P73cYvfhqfEB+IqOf67NTxaZsnDDMMOMLEBSLP97j47wD++7x7st2RzEIPJ
4dPxeEzXem9nJAqMzvGy/9fo/YC6P8D+t+keDYFocipDdY6VzSXthxARs+aLykink0LHeeXVdZOy
U1Wg6jRvRt98N8DV/am8D2HgALuWV4blRXYfNOelTZHhqpYe861K7TNrHSrtytxqKhTpJMnh68OH
6BYsZXJfqOb8ageyf1/Y5EU7yEVN252DPTvg3BAZL3RxJ7gWtrNnqIUEJpQfjNcxpoEwNxD+D4Od
jUfiztlnE+DRuhThH7PZoc2f5ujUZgQlLN2E4BamvVMWn2tu31zxRh9NEj16liXA8C8GvP0hOcXa
dhEQfVnMolJcF/rLwznNMr8wIVSido+HQJMLXMh9BdA3lHm1aZNr8pTb28cSVOUBU4tJv3PER7dZ
Z3z/2lE+K7GDqWgTdtnIigt6h0o9jWB1lhkrVkuMwGVJdB+Ps1keLufxmLAmtZHCdJkRgJc8MqCO
H7BDNWbLfzBa13hU09gIa+JKieMY/RPdg7cYUVew0QO34VHz9R0ZJmYBI4Y4GsccH2/8Id8nkx+q
aaT71moUg1zfduS2JQ+xanusALliT6yo/YEvd4ICcqQh8xzDpapsPJbHHPvOvUJWwQSSHYkZfM4Q
lH7z33OLy9tOx+Gx07ChI1bW93PGblgsCP2aFjaALZ0rrYwVqPnEsOTtajEydWi1JLeQFTVS4Erv
Q+w1HVlmyAALc+6uPEWnh456VIdv1C/DHHBVWl3Jd7xqkFTXxBE9b7DUVvhRhUarZAOrxujADJlQ
RoRPT9XbEFLuSsuxAvScNViYh6zW9h1YylJdNz5mDUajrpgqfPRRejWbV50R7XFc7zEo8L+zbKFM
dq0Izwbv3qUvooQCtLnvT/9+jfmxXobIp/D9hwEHesO3W/9AoxqKf8Qcglr5K7KwsT5+4F8I3sRs
Z4D5E6vpd+ACqDowO2wA4Q6KTkJPNad2xZWrPKm7Dld3f1jzfSv3sXEzmfKMWWm+jDCVuCR7Azrv
07l1e++3Xvvqf37rffxT5zc8c9vrXB18tFie56LYCC+qauJERYH+WReQFkwUyHhRvU2YdpzR6k0J
mL08Y5vgGyBttjGx96dOC3y9conAw/TaOmgRnwdENwpxz9e/k1zqsi5sx5b3gdtkXvGlh1vrGvFE
dzgiK9Vd4KWBTmd+iNs0E2ZjfUrsS5QkMYxVwqfFu0QMlVKKhAZmGgShW9RloYEV21b6khmYCRMI
+xfxdNp8oz68wiOAb45buExaH50kCF9nBfvyBdrcJp3/drlxQVgkVHHGog1EC7ZQ4yHXnA3I9ltX
p7xOzab404F2nuVjozXSUzsBNgM5Ol8TshZ+0HFD2HxGock/fvPw89AyIYMdyXMNSAu14jInO8DY
WotGR5M8vEOO7riLET/pK9Ba2HaIuQw6PvUfZrZ5KqeBu0T+gtkyC7c5MA99Ao4CAxOG9gEAWbKU
xBmmosScUxZEIU732DPWMwctAmt+AfXtitpOrdgss6WvGyGC6/v51e6Hi2fVkY/yJ5Q9RF283+Kg
fZs0o3gK7/TtMgO3899kqyJ6tyq9cpkuj/QpS2k0uSRJTDdOzKK+ntzr/OWHkzdnHjtfHhOeT+32
LC4YzzpwFwW3EVsgShPy4WdTOiesKNMsjG2fo1fWamJQy1ugsCUflr6+6sn2BqqadGOKbsYMLGR1
kX2hY2a0kDkZmttoUUh1SrJmyDWz8VUIaWWt0RV9hZmuAqv8Ojoo9lzt6UUb2BnVjtIFoKURsfHA
K+9WmVeM2R5oD3fUcEjDVSOeQg/xfi1u3Ws75mZx6BdvRNUxVf4FZJMJm8RmB8SWVUxSsx7qrzrU
X12oICQ9QLmM1JjyiaKJRcqavaLtA2tkf54IxZe9xPFTNdmf7ciO4OxiJuWOz6fldVptDLzmNliD
qq7WXziZnGFibvQ4RAg3IGog4wWmbLekkcrYtg4WELEeFOgDBYmf2ekRPNWpnRHWA2ssMtSInBqz
mng4AQtl5krp0nPDhGagI0T4Evb4aPfJcf5b9EBDNGTxrZbakPQYFvQXURlCdRQKvKCYx9PSKBmX
eQIFNTKzuIsxHLzNM2f0p3m2OJ2H+SnuaUV78dMQKPiECwvi4NBgM3Mw18U4z5LkMnuJL8NQhJTF
liNgt5uBBfTTZkDfws57Y5g3m8F8j9kzgGE2hptsBvd1uMX4o2aYPJnDqeK6jYCOm4HKLC7bgi2b
wfILn9sCnW4J9CVfWA2wH92V5jKnz5TFhWa3i0p9QPuaMVLTgzX+elQkm/gwkRnrnMhHzVRoxjTR
dnugEw++IuJyLW5GQldimtHrm0qRKjKnedxrOt/9qpTQJch/lBq2SPk6xPg6bKGBFV6drdlZ+OGo
ylUz0h/XoHCm5+t1EBEdNY+g3dkwu6+LiCOufUh4MqtuMp52x09+V5j7OvWm/v2Cbh257OvUk7Do
a3YpVEEdx5WKI9dNeGPyJwmny+8kqAzS1pGaMPmCThVVJiICL/kBu7Q/ecR4GpTsJs3uWJg+lHOw
xlg4wo0CQUHjjJ2XoipmoxmFo+SBjSmmG0MBM6YokDOECmYwwenv+MdhRJ3Ab8raacSvW7QTTt+q
rrMqqsxeQYcf7+H5yMC8UauB11NKVjCtGJqKhk3h99KuvpJYfgQ0D2qy2Pu6krE+nt4mMLwy2qhT
Y6tsNuDHti+1Zl7Z6Var42UNAyTyKLtvOms3XrMx3AsuHNt5rtXY8qBKvDDjtO7HdCVPR8o5Pahv
qx0bB0fzZ0O56IlcR3tQcrTM+cs7xrBbMmXY2SSWgapQUQ/drvdQ+1DRb7x8henQXCzWXlGESN9E
Dzy/m8F+8m6LVlTdv6jO8aNlmIutbi1SsFHupdEdPkYHOMG+Lxrf8NwHv6UUB88CpysxVmNSDEw+
ZXHarroXKG1EF90dJrzb4vEvuw9h0wKihCa+/RV4jTTDFrKlHxkT25jbVSN2xPZlHi1eMDxmurnt
5EkVaciU19JAa0Orp3LsqU+aH1YVesSc+Frd2Vrr0qiGJhp8NsJ+vEjS20jJgEcKv6g3uddYHJrH
chvNT7JRtWvwOOfZ3QdxIaaq3uwJ3dhP7bxKK0UFWBKy27jAm6Pc1wlQs3xSsHbcj/rVa2xoGtzG
0R1GKGJyygzvF3zC8Pa7MCXDAe84YeoyPD2Cn3hEId8D5VSunlvrW2fBchKWdOeCo0SHUD32bN8z
a/X3G0/nYdpgupkMV08xxUPKjetbH55jnGxldjOKxmjv8MfrKCV6VOq0qVi7v1GyZDxp8nO/MhjV
/f7P3A4bIaowGdliuXKMFxt/Jy1+ndTbSFRwwSeDc3XiKyB38BlfKQD7P8PT0WzWDtYABj4Pumt6
7yhvT4O/GNQoqP2icMCZ3lfNY6zumDRNsLmjrFez6jVAEQGplO3AujaN+KiuROY/vlKq/t7RA6T/
yGMK0wxvq1ieKsm+hWfN8yf+0WwyDFLOQccK129cC+p8LFC5IX+33vtlj/J5K2089u1u30ZtrZRp
q1BAnXzyIMAg6TXe/MdTPivdY0+8/BrYDXAO6sSYfE+3MVGdeEsJ3/bToxEwNkVgWJ+8TnSwUfY6
Xlc1Mu5yYm9X/AOY6x+rWopV1UEQhcVeAPoUiBCV52W0aDtE7LK/Xrx72+eXseLpQxu7EFtjozIl
7q+jID5iiFJG73JW16WuBrCh+0wLEJy3MoRczcmnmAEaBli0RdQmoPZ8TFAj0+DsdIE4pQ0meDyx
MiCJRyCNAHcsqozzYz5PMEH6fPiG5q55/fvmoRvmg8eCSbW79BxlWMsc0SwdC3Hlpmvg8o2n4Pm5
iN6Kvcd6ybbh1trbEc/1s50MNR9x8VPTruOkFufdN23AuDurJ5MImSttXfYiPE/WCr1OF/5J58oN
Jpy2ypQ74qlIk8Mj9jtMZZW4srLZfewwJ/yQ0oTjQ+OXmaTVK5GFpGIekdfFznklEsXUZVFsyr/0
2DHzaf+HRhsvZldFPt5suEYQYqfuscUNkK2LjNT6fpuldveKjlvSxk7B2tyNyuMiX2g208Y3zrJ4
r8hsWWWJ983v43YvBsHa+2AG0Rivnwpk+Ktr1ZuRlG74J7q+73ne1RfHww7FI6zmKx6bMMZLUd1C
SV0TsR6JRUmzyjEirx5r+oDR3RwtCs80NY6KtDeDVr8JOt64oTo6+m7Q67BV2Oo3ZqiS/uKqHT4t
6Fz3cKDufa69IVqHcD8DPpMuLO9E2FfoKTdmpzkl7fp1+DnTXIUz0yRuFMG80bBNjNqb5KGjJ0dq
WjUlnHv0ZIYW1sgbMCwM/UmWRoPe1C0SCR//bUSqt+0SfHKFtvaiXeU/1Et9dgSFFL3I7qzA0id1
4X1PTfx4xKmImIt5AhJZgzOv645uHrEZke+gvy50CnbiadC1B6dtf1ViJi3XN926ksmA6PZLFyxf
gyB6OhnHBRro93xSut2XTd0NG4Wta448niL4lXmjYLNcNtoJkA4Gc2XomYfF/UddKD6R5VoOGVMa
1g9gd9fZRszlVUOeDsl8Ms7JiaQl/hF5oI7dNEiClloNLUmwkfOIX1TS8iKJ1Ed0XoJt4ol4fFdm
F8qNNEqBkW7I/kJQUPZK30aPo9Qait/1rXjUt92Mx+0bjb84e6FGJRyMyI5oJEuqy6Kkdx7zXDD0
BkJNRhqrJwHJHIdeR+RYqRI1GRlUZBYwk3s9aVcedwxDB1Y60Od9qO139HR+3odN6nJ3Cb5zHNP8
LWiYxjLLklFos4z2UDQY0FFrCNs9cqXGXfapy24YyB6WYHJEdELLk3GQKPC/MZbwCAmqJuMWuvRr
il/xNEiM3uhWZkH7FN6GxRiUd3l4m8WTdqel0qDVvArXGsoueUo0tj3k2sfaWkP5aXvoQGJdWdhP
QRkqtDUUVbELd0I0UKRh+QRp6sNow9vxR8mPuCMDV63rzWwxzNdzTJtXPAaVrgrpCThurfFrtoaU
W0FBVsu/ehN9HVrGVnpTjHwOgtZQ7Ns5qDUocEV43EL2lkepLE5B3YYTvPxBmYSIxcWRaCRPMrm+
ahmk1c5jtxuC4Uzhi00COtqjDix24G+1S/mxRrzG+HhnvloaSlAmgWodLQUjBUWZLZfIF6s0xX10
FObJAzBWUeDucYjCB4NcovsY55i+9o/2lsNWHQLa+yi2UaEnFKMshXUtwR7jp+r0jA+V08PdvsRi
UkAL2K71U/8SSlcRV+sOa9BU35d7dAdlj6c/p/cRuszNnrJV/+b7QH4M5sCHacbslYXZakVAETBK
B3ExvB8NT0QYb8lsOS16W3Ni8AtdmUJUvNnW6hGy3svaFiezedchH89+h7gtV1o6vM9lGuMFJW3S
XuIHkey0LRkHNOYUz/0YrClSf5RjD8UAWgn5A82cxyD53HTTsFVZ/zjSlgT2gKiIXPElKnUYM4M9
rRgjJdc2MgrWDkp/30zfOqtEdcshvnIGyn2Mpg+m/NNypvLCa5EYsDU0f/P8qEuPBpBAgRlgP2LC
pDIF0vhZQTQ2CmYokh5fM6/sPlteb5pqRSfKxulZ3N0jWR54iurPtqJ2kNXZsTehTHvf3m59fhZQ
Yw++1RFsV2Z+cIONZERRA47W8yMmUvUOf3ej5ByjBms7Nt6YsF1ptX37tluNnW9OXuscYwvKPrqu
XPe813MERLEZ8szGPUvkzt+jPW5LD3eOnvR67NXJ6d8O2d08SulM8VqQgp6K638qeGAN5eycdGE1
hxjLwzD6DqiAW9JVWlRJf4v+zjm/95thEM4y5iIMP/OXcXlEm9S2XHeA2s/JdfnQZ70eYMXRY0U+
Pm5B1WyVg+DZq9Yhx4tSLcpxUI6JLEXsjlvmTg/rUa7Onf8FUEsDBAoAAAAAAMQzCUEAAAAAAAAA
AAAAAAAgABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGx1Z2lucy9VVAkAA+9YI1DXaiNQdXgL
AAEE6AMAAAToAwAAUEsDBBQAAgAIAMQzCUHUhneQ8AAAAFkBAABEABwAdG1wL2xheW91dC10ZXN0
LXJlc3VsdHMvcGx1Z2lucy9udWxsLW5wcC1nZXR2YWx1ZS1wb2ludGVyLXN0ZGVyci50eHRVVAkA
A+9YI1DvWCNQdXgLAAEE6AMAAAToAwAAbVC7boNAEOz9FdfFLsKZQ8ZwUuTCTpEmiUiRwooQ3K1g
5XvJLCLK1+cw7pJmRxrtjGbmnOai2MnlZqLYC7HNsn2+K+RzVb1VcoI2mLFDV2sw0DUENdpg6o4u
iVLrVJSbL/bqic0sWHAEml2hUX1EdKz13rBockGS0oUmoJSf0L7fPE93y5eojTQ67SfQxygnWD7W
GzbdabbkYO1IkaPeR/wG24JO2AcA64mC5Fx5DUnnfWcgUd7ywFV/9RZHy3EYRhi4BmrQHFA/ZYUQ
5er8/wZluv2zwVxyri3yufbRj0a7h9jdIWFj8AduIR/RrX4BUEsDBBQAAgAIAMk9CUFw3wzKxAIA
ACkKAAApABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZnVsbF9yZXN1bHRzLmpzb25VVAkAA8lq
I1DXaiNQdXgLAAEE6AMAAAToAwAArVbLbtswEPwXnlrAjJs+ktY9BUhQGEjaoHaA3gSaWkmsRZHg
rvxAkH/vkpaS9NKWTk+WyeVwOTPc5cXlZfH9anF3vVy8uhcESChm96Ih8vH3ccB06EGTC/HPFlYS
nV4DySooCxJCcOGkIdvGadjFUCjFTNxeLBZiIpSmXvGcWM5vrr7dLcXDRHRAWxfW0geoWlM3JJ0n
4zrMxNGN6mqQ5pAJBp25PgC6PmiQjQqyAVVCyE6Bs3YtyEeoxAe+JBGG3HAizEcmCuwIurgO5chw
gNIEXpqJNEg+MlsFZ2VpqgoCdCRLZ5XpsiF/piiJOhjP7nFBumDqbKCRcV0yU9a3cJRzBpBdE2Tr
as6ilgr3Xa6DrGNa9lIHhzjwIkPfwrFnSjgHWkbyh/SOdZRXEYXynf3MTcddDeW9VrqBuGL8Hg9l
VWeqWGCyMH9T//jj9AhB1ezkbJWsNy2E0cKWT5WvzBPKQaABRZaw6uuX2zib0FEi75Dk1lAj0xBf
1H41ughPfOP/AnozXyzmX7/wkMHCGkROpjCWiRYzCj3wXmmLsSTJGuh/wD6VK64o0KlVG3HuIzes
OC1A98HQ/ta1Ru/lquXmhRKB5jwdNqp9YR0rDWoVynzh/pjc0lhwfa5BuQBJZBqYHO6okFtZS0Vq
pfCotaMT2YVyBVzcYXgfdGpjakW53ewh6loppCSl6jYKh+dHnTCwiSUpviC0ibc69hOr/o2wqx+H
DXgHXBvvY9Tph7P37/hl0tsiQM2+T6VCzN5+jJKzU0LvE1z03CFuMCPHTESr9ixXkd5MBfubt5na
jqa1oSnnvDYkdcNd1PRWwhan1yl+mZ5YEzG0ezEbMvAKEXjzT2fnp3xrzA7aAfrR34c0GoUFU0C0
5zWkm3G8MrsYl451PoBWrVrvxezNRHD9Y6REUBIGi8q08BxzG5v9cL9ef/4FUEsDBAoAAAAAAFc9
CUEAAAAAAAAAAAAAAABDABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcHl3ZWJzb2NrZXQud3Mu
bG9nLTA5QXVnMjAxMi0wNzQyNDUtZXJyLnR4dFVUCQAD9WkjUPVpI1B1eAsAAQToAwAABOgDAABQ
SwMEFAACAAgAVj0JQZHsZoEaJAAAb2EAACIAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRw
ZC5jb25mVVQJAAP0aSNQ9GkjUHV4CwABBOgDAAAE6AMAAK1ce3PbyJH/359iji6XJBcJWrK9cZQ9
X8l67CqWJZ8kx5fs7ulAYEhiBQI4DChKvst99utfdw9epL3aSpzUigRnenp6+t09ePr0ydOnZl5V
RRxEeTY1o5E5KMJobs2P19cfjbPlnS0NfkpmyzKskjwz0yS1NO3JE5ps3oXOxmZZ0POKZp0fXh18
fZYzeZnMkixM0wczeTCX+cR8iA7zPA0Y2PU8cYb+D0iLMMk8Ll8FGBhzWuF5RaN5HkHpDouT0kZV
cmfxc1iZGX3kBRRoUtGSmavKZYTxjjAxV9aa7z9dnu2DMvvjsRAoZGSCvJyN4zxy47dmmpcmtrR2
SjRIMvq6kEXDSb6sCBDWaRCQTR7l5vzi2rhkURAVShvGPKyNA30xc1tas0qqOUEyyyy2pavCLE6y
GcFYYSc068HEOdHgmj5t0XCek2cENnRmnmQVCE5LLBKeD2pNzUO+NCGNW2ZuWSq93DJleJicZIQz
7S8wf6WR85DINbE2M6uwzGxMMHgXB9OKiFfhwHAQOLWizCPriB2GbfqukjQ1aZ7fMrVoB34cARkX
ZXIXVnZsq2gs5N0bu3IhvIixBCjbPCyMAIRHEqRlRtzleG+McU5Ll0kcW2ZLJ5Q0l9blyzKyh8wh
WGCcl9gMw9KnLYYBPT1n2q/zFag5K/NlwVxQ5bRkSRw0CV0SERnkTPcJitkNzFGPH8G8ZZ4K9Qur
0PMpP+jyvxIOhxsCGv1bzXMi/jbGbs3SfBKmxmZ3SZlnC5tVWzvgZrO3vmpspzhnzCvCMlxYOk3n
V92C7G2BdbZoXEi8saUoDOtlk2hOjOVI7mMCmdPn/15aVyl4oki2VdFRZDFEg0Q9NIRVtST85rmr
AoVzzWfTJmXqcuzzLomt0cXNXZgSbOYfYayqIjFwCoOQJn3SAc9CbF4GJMgylOd2Rgx1DzQ1X5nP
dtLaQU4MT6tkJBK5LhIn0ykxAz06/WjCOC7B6CxdgJYRAR3zKzMfIblo713UEv45Grj5UIXNDjss
BoBpPmP54iX2Ib8gAR7JouB4V9gomT7wJhdh9kCA9CRljS1Xc5lo4YklJSwiMRgPzDbNG8QkY3af
vgHK5yR7ubczVMzbkrx0Vo7Y3hdpEiUV8U81F83SxSzOzfMsr57LalBaup6oBz5U4HnF0C/zvBIl
YgtL2iqGKSJeGBAB3Hia5wF9GHgorTnEDTixwXjpynGaR2GqKmIgCE+gWom7CXDVPg7dFMnS+tRx
Z1EcDdk7mAUWZbO7b34QWTtuZK1WEy1uTjLRkKoDTEhMFKmipcXBth2RF86AkLkleFMsYbZcTAhT
+p1OMVqWzIY1t9IJRGGm7AaGXLEVSGB+8APJecxGboM5lp2xwfP03Oc9VHnhWUi2k5dENyg1tkQq
O20O69vdoSEFnJdDz8TKeVCVt7aohN3JDh7/S22UcExQ+aQA0jCyQjoWA3N+csVcmtOS5SohHsxs
tcrL2x2CssiXGY6WV3hwFQkfm40iteScNBb2LI9uTyBLZN2WODJGlABsh3dkwsMJ/USM3Tb8q9Vq
zewv8ngc5WQY5tUifUpsc4uF3+78iSBhG8x1DnqAvpXOpqSfiAIVE5SsBC2D3bdYmBlw8KTmoAZR
z0rgcqfamtifTYw1fm0IZYxz9w4TwUlw4IuCPRMWGZuAdubT1fHNyeH59dnN1fHl6cHZ6d+Oj24O
Dg+PP14btoU84Ozi8P36gEActBZW5Jykscng97BLRzjZKal/MB94rqPBA94c+3V0Jg5MSEcaEeeS
fpiBkeH9TXVrrN8b5qOfwAR61kNyn7LIdqnw4dPVtXl3bK6uLy6Pj8zFuTkwtJGDMzhdp1fvZf2P
p0eetRmVnm2ldcJllcOPi3hPYaH6iG1BW8UF8ITqsxqMq0UxJkPyPqnUYQRmeqwfkxijRLrEYcrW
pMjTk/aclyK0ja9EBjGrkilhxfKrSoEPnShHvmHJZu+JrrQJnyKJFZ0rMPC7PCwVq5Oai4i1HBFc
lSZ56msEatxcWNlz4l/osbCM5klFh0U+pWPtREfHIky24R25sMlU5IGkjwZs0+ctmnabkfWd2Cik
xZm83p/0uttExCuVZ2/IV7n0bL4jco6HzxdLR6bGsk/LBoqgZSQmq5wwvsuFaq5RskTrsNRAAEbZ
gSITUEQCC0hoh0ibCNpM8tKbLCz563LMjd4m/c9+0sROQVo6XyveDqk78jPgQdFEQzOxrgIxL1+8
EKjvrS0OUphn83luWYxJcMi24rTEgSEr4hJSfRk7lJn6nGZ7kQs5oObyzHqzgfGtgTvsKbEZvZhO
B/gQ2xAyTqQHSjUG5iITnD6E9/XDS7VF+yrg98liuWhtv+1ZMbqQ7GUJoQ83Y17j86LZIpkB8vKT
RQJuCFkRgAE/Mz3zxQK2A6xAWv9OjYeiME9m86F6R4IbLcpcTDoE29u0GbO7Rv76dM/XTpawXIUk
h95Hzex9baPNtMwX3usAr0Vpgu1qyCyPmq23ye1ZYfd1206PCoqYSQN+wdZny1SE0ZjLkHkDx007
vQV9QZDZEnI7JxKqc9iVaHUiMwu1qsIRP5CC8wowDgs5O9G2YSzOhbM0c0ReGruDCXnUtP+qTCyP
hW5FUE4imS9n8/U1WZ2q1wLA3rHBAkOy3UsSDzO1K/JuIagyn0H7SWWYuYQ9L8HKFcktVIsNZsHQ
LMjuJOQCINCmj2FGhHQNK/KZhDAjM2QzzDkZ2CgsKGor8xUttiMeymkl+orZiXxHYpwkj5UyRKmI
qexpW2MJjMEPEq1z4OuXrl1lGoJhtEV/Zh+S7AqblVMWgor6gwEI6YiUGn0YtZRDLLsgXL6wau9w
ZvgNFhzPppI56IdZAEjHNCF/6MFcvBe5oSCHaFWJy9jD0+w+6S1rlF3bclIfH5sqUspEHaYiWEgN
H+n7UH0D9sbIxU4J7C1oCM9S1DLmN0vzQmdQCyxQeUUmK1tbl4xGRodBJA0sMUdaj6/1tARNIpoO
cTV7z23mwYmLmDLO7KkQVwgs+mDvGArhT4xBPFzDUlMGpwp+yadrHAtbbdk20kHwW46vzfXFBY37
HAjrwR9ip5g0HgRKEjsh8Wh4CyedXGlbgGTLLFyFnv1U37ACUJdF3WJ2BGndkMMGkhcKQWCQV1kQ
qB48VKR3X7+oFb1XiR9teThP0ni/F5bUQoWdk1TQkJY/BdaFAhfnwj9XU8iSzxOIJ50ypDxgstl7
IApVEYr5uMsTBk7ssSBScBaKvqZ5NkMeEpmexg8mzz4D5R4mVgUgTYh2rKMILo12O7AXt2ZhF/Ay
fYiB1AZnioDSRab8z0R0Qz52drGR46DjBhdDfeLQJ6StRW9t+xjuKk9pSVopziU/QJab2RsrMyDh
wxq3wJyIGaHdUChUwVRBlMUkQqIJA1I7Kek7mCkyVE+Busv/BJUmOQ8czAvaFynJxm42Yde++PIS
hbOKgz9BTnW6jC3zVcj2vj7bUBN+1ouupjTMV3wK2YS9DxekhIeQlrDHGqLHXQ2HxE1B1yBxfLsv
KBqeODwh8zBA9MioDWrchmKQ5N+KRYqToBF8BJzAbg2wylfkrbmW5Crf93lc6PrCqxc4KPvmAHws
5hJJIkTWymg4F87CJFE3Q1TnGIu8ZEwzAkXGykfXonsDTjlz8gtPv/+LpKp+JLZ7W4dBtOdulggx
r7oWksNHyLfggBvJPU7ksLtq0vABbkRlNTf2kZAxb169egkVQ45wPIpyKBlRDPCcmJ1rdwbFgKte
BoEYE+LPDstToRBc1hdP9PPu3h+CF/S/3f03L95sekrLi/+Wyk8gKUkf0e/uFZ88ffgOqeNiNAmj
24aoImXJjOJOywq3cS/fEAJCFPIOYvpDMl5yFkETBj69D3o5ivAny5kLVnZyS5yAEJ9U8uqGHgbR
LPm3JP7Xl3/YffGK5pyc/scHLzSTEoLLhPnh+v3oyNJ4RvhwTisny8XoLMmW99iNlBNgsSCSS1LW
wi/TMEmdGCBmxEwz1CS+D+Q33Uv2hAMsi3MxUO/sliPG8lHygmBhqlsWzF4mKYhiPm/OLn+KEoG6
LwmXD0TdIPMcOjCUHsxP+/u7v+y/YWXSe/Rm7RGOTooZ4iiaK0RTsbmY/Ar0to+uLnbMlWAlgRHn
VFnr0S4kiUhUWGasK0ieqwdO5JKmjZcI/zg0XhE/TpZJWonZI6iQPfYb72yTKKIoTFPR2N5/nZEz
+IHBbDFlneFiCeiscaAROWtLlvNVJM7hs5GEcxVBDGF26wzRjViuGym/cCHFsWI1H3v5Jo5jv1lB
il3OWST1sZibpZ7kpITEcLDthUWeJHELPl2EwP8lEj9Kt2ophRxJOhw4wNNn4o1oP9uuqjMaRJNb
8BSzCdzslJjLNVvc0UPg/CVidlEuAJdkYfmgRiSvNJ2Rl0gJ1vkMPxmkgV8OghKoBXghzOD/HuUw
nJz4seqgCIyJRaDni172niwKnUN8l0Sq+Y7FnKCW0pwy7T+/Ub4hG2rvbYQk3Q3yt3AdWiPvkK2/
IXYLnZ8hyd9kUheWFH8G0RrfB2WzOw/C//smKBrfB5HmsxvRqTWkb4JoxvchLShOvFmEsyR6HKRm
PCCtAeps6zcB9UBkdpaTEYecPYrGrfH9bYFpl66DzzdByfg+FGSsfs+eML63J/WLWlB+AwIP7yOC
xCIqsfcNnG+Cqcf3AZHW+l28R+N7GyLr9rsg0PgehNAl7vdQFeP7VCUOtIuweDRZdXwfE0l2PZ5N
dMIatxWWVOOsDefb3Cbj+2DgcfQO6JtgdHx/U20d9Zg9eR3VglHaVUle/6Mx0fF9TJbV/MsNK8JH
6ZZm/Ab+n/8ulsF4rqKvQcpIuXTB/TYkTFqTpMmiB+cRgGjSukTObItAj5BIjO9Docjo/uGRh07P
eHgfRmRL0rvkRDySNPX4NQN3X5Bz5B7NPTq+xz1z8kTIA380FB2/SaiqkqKAR+6qHr/J5sJ/y1xj
K3/T6PoJa1hlCYUeN0n8WKz8+DXVQ259dpdMH8uGfvwaG4aPd0roGQ3vHZdz6e+yCzR+jYltmT5W
ysHENLyHRDEvXv8eCDS8j8R86m7CglzFR55MPb4PaJJnv5IL/Gj+1fEA0+kZ2Ns3Wx+4rWZTM9tj
mgeQ/qEAsu6dcFKwk4YG7dmpk/vDDS06SFD/ZpsOQehkH6RTKNEKg/Tr+ETxhl4d7rRBto7W6sLx
4VUp+ZMFxbPahCSJBE2C+eLbUyRbNEvSbRHCTBRlQ8xxWPtrCw0ltyaUQLTrgWnC2zcS1RnaVteY
xlQEod02RIMQYgrica994hyFnLCTIsKZhTITFWNFhQ81I2DIatAonygW0nHE5ZsTpxSJbrlW+xFn
+aVTT9u3ynxWhgvNe81owW3JcUtFdbBarQb9rBMQ2nKcumS8dtohHbr+ojBDOvDXpUNO8A4L15vQ
Rqe8sBICc1ZFCp7YInbOYSyfLZcoUJuV3D5xThKbo/MrGQsiS4AJb8H3gcQcHjYtj1oXHpLLeSvD
NZdDoeGCeNORoq8kWSIQBB5nNYW976SuMEMOA2kKj8CQorhKe0CbrJ1v+2NKMGv4dIP0HCI5QKKC
SX6G1pw02N/dexm8eh1894fgzR/HOyINFGIPNeROlOEWSOITOsLaKNfypohjkcQl1ka6gebJ4dSJ
M98ge334cUxIc9/SepZsSGeNhA22GcsgIfJfQR90zWjuSKN/FOKxM+5XYZ2S1NurTwZ5G18+r8ok
qlJpOuMKHNBAgpHLurTR2N5ROF+g0WZYizwgNDvRBidldu6pqDtjWJrqoZpt0sadplGpaRBBxoDY
WySs6cMBLOYJ8KROpw29e/BaYMjtC02aG0UJOpjMp1brhhdahBOP0LEPi0meJhGnUkQe2P9W7TRp
eikKCuA4ay9lBZ+Acv+kRG6bIGYwPuMKwgOaFISIYz/AaYPCMSo0rZauXAmmpzpHno2ZfMjlr0nT
9er7iGBRaDaE0k8GkZNIFcPUhtIDwvkzLfxIFpwWdkgwxT4F2enw4VoNhMotJ/5pYt0Ot9l8f1SP
G79tesXZFsAMEaKDc1KJg6EZkOGgP9xsjBrAAlkr32E3OEU8bd0AtoG+cJzuMOskB65XD4sznCme
HN/b6PCHU4E1+IB68l8Su3KDRluKGW3/Vis7Ebznvk0yfXjOVcPBRSGyDiyZJ0VJcVt6wqxCJ4wV
4Gr4wYq16SJpmnWNImv8lp40RNLeT6enlStMMFswr1SnSXtekpkW6cECSCKLVbSBOSSWqMn9TTIr
4kxYgnyaTXP6DJofUAQlfD8QhTjg4u1Ad8wllgtdEd+eeEnxe5DCLAydq5bTaUtORY/UtOOUInPg
kCz6QwNei/8E+/txzVdvZSFpBQfOUED7jV3Lm/5WHFLd0Y4Wh45Q+YK/0NU33nbbpp50l2nOoWkC
nPJRS5kPOeyitGyH+0fGexG35I44gd04LqtMvF9BftsVd8v1p4qFUH+Jo3M69i++K7KF8bC2fI5l
WKUa2yTvdFkiey9leyx2yM04ev3BWcU/r3vAyKbRPoDgXeISIpm0BVitBueoeOPmAvr6eyg3Nxgk
eyxN8l1aNu2J4YRYF4KOdm7uC8vF6Mo67aKBgGt3/B8Qn6NpKEWlR/tSYb3EBfK1XcKvCJ1bCTH4
Y17G3K+QWm6/aBl8ctUq6f/NHRJoZmVTvvny/Qmfx/+ZwX/+HGz/9OP8l5+uq1/+96ej+Jefrtwv
N/jPzuDt19n6iD40XI0nV3RwbvrAEvT9mOF7Di8KSXZJtbLVNav4aWffE4/WoHRl9M9YvaXEsdfg
+c/BzwHrSSLe7T+yQl+KD2HNzjWxbGOygm6/Y/PrHnzERoOPZThbhPsmy0eRbx1Hyyx9brkNouxR
k8pqyL6HBFkqpy3aYF9tlSWP1UlWp47MnG/ci6RwPG/6kQPzKZNONnaiqjUt4A2o862SE0uuaeLb
rLEQ1LYPZ1ptF+uLiQuygVBCwU/OHiJhhpqRaEKzjf4jsPlu8HLHmM8gkepd6Tggu58xSYbchKH9
MEpqVJRZ0HHdiG86sZubTkel5dgmAohPl2fkCPAfpjb/5jhSEo+j5S/io4iws9rvDBBgkx2Y0vq+
Qjs843CCy98EDAqOsBhEfqcDcUI3bS6fTmu2AWRcOtIypr8Csl8wXL2b5dv8UJylT7EQhTxCx549
R9PaHUNaQq4GOHN1fPmX48ub84MPx3ym+v3jxeU1TA1MvIvKpJDz659S3Z55/VDY+kKTxYwJGIPD
Ma4co25TYZBYNDTXo2eXAjTCeUfaduQizDSnUOyf5K8+efr96dSXmnz5KHorzRttnDde+WqQJjhj
D0hF/khEG0B8hOTj/A+nREzMW7uXhhOU7jwvFjB8U71UAUFtbhyg9F4usD/yM4e1BWBC+JZwY+8r
RG56j9CHo03KR+4pop2IQqcKTaK0+o/XH84auSSXCT+Mi5TGDrSByszyPPZt9IDLHUm5wlelY6TI
HyJQ8eghqaU94066hLiK4pqQjK2xGrdBa/g4jypbjUhWbbhoUgjct8l9Z9opqSSoygfWATmUFOH+
oKj4ix84Eu4E9XVzMBjtE1zRPrtm73KuP6pwnZHDtSxIjZ/lohrFELd69mhvnLCgH5Oy04VDYCRA
797nIK7PdjBt78Wr4Lu9YHfvj8Huyz16PJ3yzbl2dySr96nvVUdaJvYpo5DVbYVMQtP/y95OYfOC
20vnTDmOstFx+sC6UtvdJWBitSm3Giy6H/VKhDRwabAk/XWiVnxHE/MxbZNxzMzBtTk7Pri65vxQ
yjRrNT9pSotJVzvLPQqbi+lUg0X0oBC5xQuumyfUE+YOlfpqT8Pu6DeB5PhbaeSse0At3wwGljMd
/V6nOn2nN4iIAs6BY2kb6HQWHmMl28nMqdHjVMQMvYDsytX+4vM4f+6TUoRRjTxrP1EB38CEl9Os
GU9tjKyups24Wcx7b9zIf1hl1rST+wfy6wi/juTU3ZgxuuH7cdKuls/OkHzZ92FTr1+zpqjHPW8O
FGCkQ0zMlE/2akl7n2g4WaKPlqKDIfZKgf+Q7wbXN77I2FRDtmu2JFfLLmwJkE88Wjx6U6DTSvLq
SXH3soQhhozcrcg8iLXUO72sHA9J7PNFl8G2EVBwQ8mOLn4icAbP5uZZap4tzbPK/Dx4Vv48MM/e
OvNsgm//c8neSPn3hB7jO5nYcnQwI5HDo4FGujZ+FEQevqBwqj24WcKM3ppnnwbi5ZCz1BnFC4ey
8MDwh4ZotTByykXmqFxqvOR5e/uQMQBT8HdZYGddXmvheOiBcI8SVskFd4VCRZC5MCwTmNGhDwIh
kE2euKC9dtP4PRyG0u8f+kxpX9pZ/hKhh1w79fWTpqLwD8tiw2dfF0bBm6XRH77cJJBtF3zW9c2D
+pik+09Tb3zY4tMra7SjcdxYPFQu7B+rxMa4KuNb7NalSxz/378VYXvejKR39HoI2hOZcMoNPnZR
rwcxj+fUtsZWOySxP19roV3jMiztqmD1tC1auuUZnVx/bGUM0e+G+s2QL4H69h9eyPfxIO1QoJes
igJpGwWrw4tuFqvh70hzqFyEOv4QJulArh+hW187o0M04qdVvs+5X686JcI4QDmiBQMmOJ/ucwf5
/8Ks0n8ZbJ3kvkpmmVh/77gfSB553xzEIj/wnPhuic8wh819HbPNbJPl0sq8E6hCZXVArO/hmSky
2iA2Sj74gKRDxxOX/hFyxduONbkAWSwdhbx2IDheas2iV+yqLMmkd8akfbEmreYefVrc3idcWeqW
u8i4soInB83KYalqou2jO9IH1eur6os/6ssbtuwm6SRUZKXZOnAclcjNfrOnPI1Hny5PcdmG/p75
Et9RnQRA/BGs0c9HMpyckATkU5zhWZjNlsTN/cKgOkfctumHcANskwzQQpzC4quOkGrv7Lf65gCR
E8ihd8pxB0FvmYb1AgpJb4w3BTa806ONNme2d8Xrc8vpNLlvbgj4UtikdXdSyzj1PhTMrX1AMkzv
iOX+JRwNTxByH3MS4jnxMf+ecbxBGOEapkKpoaJDnd8QkO5I3IKJPm5pU7pITVDkLLoKQ26NsHEk
LTZbIl+5kgjfqpL2G+U0ni3TJspeo8yeUEavNqCEyMlyaV4lu7TkgqTWBmiPFFZXnvbs0EQsx1gb
11OjeViSWaMz2/Jb2CLxmZT2Tk83YdL70+N7wFxsyzfBOMSlh/JhS+jFGWq+/M9PhwrkmKIhs3UU
ZouwvB3Ht1uspUl34hnRdRyHWxt2/nLfnEq+i6vpxK9bafVly6zITUzyVDZtzeXJIUqISyc3POVt
KEDRn4cmHyn84KvB4jvTLrd8AZSL2mR7tjhLQ8ci5chMCtyNRBifO0LrSxXydstptPuH774jbUCh
E7+bqLsT2aHZjsMdMzJHy4r00naW4ssxmWT+zWb8lUxklpCobFu7o7NPsBqNmJYY8YPFJVKCZfkb
7fN2RErBlpiT+jmnuLCCYaSiadh7UmX4dssgzvNyZWf8c5Z3H5w/ZBRp3NIPmQeFzNVyhqz6dsHA
zpb3dkG6tpzZPHHPzTYdiB98VehWcc1pZK5WpOPw1d3h6yERLMWyERPi8IuN5tuRa1YSUhRMmXdl
+CXhTQgGS0VhNOFN/JmC6owf/Rp6AJdLiiAAv1zutA6gLalxaIL4du1xRgKcpWuPSf8FNlt/XNFj
u/Z4WppgWq4vaWnJ9dEUlQR2fUkukdWjD4mF0dFxenUxevPm9R9Hb0yQuFw+rs0lNRsk1drjX2nP
v4abQO692Nsb/fkj/Zy4tWm3tJ3b8qvT3l8yKqPb9R1nRLZsnWzkNARZvvZYlOdXd7wnyxTrpCpo
u0W14TGxCH6hP2s/Eq+aIF2uPY+IRlG4fkiODmmdNO7OBO5uHQiNjgh+tD6jXJqgXF/2y3x0/dkE
9Kda9SnwLpm9rlviAv8tIGvyuj/08+n50cXnq9Hu3utdWr7gD/1Bhx/fkI7y8KKCvn2V6FiKyd7g
7Me8vzh9M7r0YG7z5M1ojUk+HV7Rufkxy8jtbRrxqj3i1dqI6xPi9npENX2jno7x1PtYJjkXAruO
DrslBd54ELOa1guMtVl33qxltU0hi5FY/4KADd5OV53/GSk/vvnS9kGklG1xe5qtkNwvIeBFbTEC
XD2DO6OA+BI1kkL8iq20mIcTWyVfJLZcaCz7Vw7h9HK0z5zWtcik4y50HcT2BiIpdeHfGvlIy5Fa
JBVo8eIA6CvSTaRLSG/c4qUPkFCSNZErYmTIEMkLapJ3Rvm2kxzvOaScZO250Cu+AtuUBPwNnPr6
ExmOShKSXPGvck8zVFMjW3IBWXIF4hv6Z+otd9S/YNBKNN+PKvINgmr2ZQ3b44zcGHYjOhizF+rX
qPPQS1TPCvgNNVM1r+TTQt00fQi00c2/uqSer9fo2gdpjigcSdSv4QjKUaSF+7zVw7AXYBO6zztv
j9O7vrir612WHCFN7XqehFn0wL0dzOockmsBvvNSNNSxe0SsCXM/8ps2wd82/Dr7khQmmH0R+rbJ
q2/sag/vL8pNPFqStPGIeGJYv3NFodTSoJfZ6zfLwaFvyiHYOu4fIgIzC+KnUHhjv43SZubo7+8r
w7ob7TPSj9zjWvb4aBEWHfbtITyQztgS7UIaSWj+aZlxNlqiWczEZgLtj9XOKX3jklxg1PcC+qyI
gkPeOY59a5U0M/Dp+4RUK4vZP7u6k0JjIP8OIfTNaLbCsbQi20Enhx+8Y8ixjaQa4nbHz1BkSKvd
a00oXc17Leu2SpL7XR71NI9myUhGGFyrJW8gfbIJkqaBCpicWKpirFM2qA+uEvHVycDhT3/JLigd
01nz0zc2yikKeQWFVHy3uGM3HnGVn9+Myi9BFUhawNm8d5024mYA8us2nmIrku0i7m88+XYS9PR2
5cWvQyOLEbMwfVijrm6Ga6D0u6/+JbN51eahr8DGtBGwuAvLJ5sTRHEvPaK9VHJRHO8u40SzqIaW
9GtLhbzpwUbLCikMZZVWCwGSblXE7zzwLxvFVVa8jZQzQhbprwzvSdHimzYn4V2CLKScyOF3pzUV
hHxajTgfBQZmsPpiAoq52pkh3QVjPWYKjhuGHvtE/PoE1R0jthqbp+gbNmwVHiXlfh0Wu8barL2E
r+5n11YE/4o/pEAJTsfkacuUKCWxznWzVxwnksIVdtZrN1L097lO7lcAA/uMblMkf/JUsTa4PN/s
44qzKP2t1G+wbGdZ6h+6aeMNGwn8egLdBBigjT7eZoK9JV1ct4Rs163KD6lFG7b2o0XwP7k6gLzE
NA3vcuxcmhB2dwwXn1nDaPWtzv29fvHCDK6b1PYi5IzwJMebC3J+6WgWTAIjil4T/ERZbG17gLRV
eev0BSyAz2/4qVNrSG1Iutojs7ejfdW+S9z1MXr14pUZLxKHxfgqOW8zrydIFhQg0FLTG7kBFNh0
kmR+4I0yMTQ2AT4P3gX1BYHOGrXUdpopNAWkOg0GaOQtU+D3+HKHjS6/au4b29zzzfWIHgLuyhhp
CZvOc4w3hDACuHXMF3g9MQTnD8ig+8J189JOaLSEO6roSFweSU9XbYz926oBp1Nv9y82bb0XAIEN
91woJVQHfkTzl9YH2q+C/qb90bdjea0915uBSsj99T4auQnoG2l4zfo9ZlxZ4Kigab/j8fvP39Zv
TdG2OzTcDf0r2vRft/euftzqpA2Qwx/FOa4g4TR0uU5XXtsgHfO+xtrMJmU48Jm+tQYKabwb7JrB
X5Jwf+B1k/fItwcnyzQdQIW5DXWmP5nBO37xIt57ncs7hVPI1SwHfID0EOs8WbdcI4UartlgJfrD
AHULDYUJFBP3K7aWlTP0jzZ6DjmK4iTmN52sfb/PTNv28IuPyLhfD93+O2106qdmUDdOEWePy2U2
5qMetMZd4b1xr1sPfohOcQvmjgTwVevxh/D+mK90mr3247PQVcR5UO7xSYjjNbif0QzQZh6dq7+c
54dCixab4BYvy7E+svHS/ErKMJiFJbk9Ixemltmp2+1V+xwiE+3Xqz/pFWX4ZqAG2+xt0QNuDms1
KiKHXOCOHbml9CuOBx98w/E3glYuHY8wCRMeN3ASVo8ZOJK3TwkmPtMiTdzc+CVvtWFVxO6bvCUA
K+BSBpLoK++dSndh55WmyqH1pA3ZClxIb2UpaknmYFVnsvvdA9JPPNAPN2RhZ3zvVjtn8qz7EwWO
ZXWTFza7qegr/dwB00XM31FX5C7l6zFeIctF1NbDw5zO8tn/XB7/+6fjq+ubD8fXP14c/d385/Xl
weFxe+AlgAfPzcj8dPJLb/FWT4J5zi++kYU3XlLiH67OGmy+H3caJv4fUEsDBAoAAAAAAM4yCUEA
AAAAAAAAAAAAAAAdABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC9VVAkAAyNXI1DXaiNQ
dXgLAAEE6AMAAAToAwAAUEsDBAoAAAAAADozCUEAAAAAAAAAAAAAAAAjABwAdG1wL2xheW91dC10
ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9VVAkAA/BXI1DXaiNQdXgLAAEE6AMAAAToAwAAUEsDBAoA
AAAAAM4yCUEAAAAAAAAAAAAAAAApABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0
cy9jYWNoZS9VVAkAAyRXI1DXaiNQdXgLAAEE6AMAAAToAwAAUEsDBBQAAgAIAFo9CUH+waUdQAEA
AFoCAABFABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9jYWNoZS9wb3N0LXJl
ZGlyZWN0LWdldC1hY3R1YWwudHh0VVQJAAP8aSNQ/GkjUHV4CwABBOgDAAAE6AMAAI3RXUvDMBQG
4Pv9isO8mMLoso9+MBBhOlBRBjoUryRNTte4mIwkXVuH/93MWYfCYFchh+c9OUkkrdEAdXBKuuQM
rPhASAipIkJaAA+oOJongeUBIo+IT6RmS9hcz+/vPg/SX6x5DZvJ7OplZ5Nu8mPjZFSFyejbNnqO
lYPNifPL/9ZxHFX9uOEAWwOmUHtWCu7yrRtD+8Z1LKy0tSKVCJn2dwJbMIbWZoUEg2sqBadOaAVO
A6OFRcA1Kme3+0wYBFsrlhutdGFlHcCzr+S6kFx1HDBDbQ4iA60QdAYu1/sG1umVb5Nj+9C0/TBs
5h1GxM8rNeUBPCJC7tzKjnu9tFjYoMR0KVygzaLnzy5ffTFgC3Eh+Hk8iKNBAO1j349U5A+dvqfI
OfJZ+obMh2aT2+nlfJfyM3UHTXDo/7QfktYXUEsDBAoAAgAAAFo9CUGc6ad1BgAAAAYAAABHABwA
dG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9jYWNoZS9wb3N0LXJlZGlyZWN0LWdl
dC1leHBlY3RlZC50eHRVVAkAA/xpI1D8aSNQdXgLAAEE6AMAAAToAwAAUEFTUwoKUEsDBBQAAgAI
AFo9CUFXNUJbmQEAABcDAABDABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9j
YWNoZS9wb3N0LXJlZGlyZWN0LWdldC1kaWZmLnR4dFVUCQAD/GkjUPxpI1B1eAsAAQToAwAABOgD
AAClklFv0zAQx9/zKU7lYaDEidOtTTQJUQqTADEV0QrEE3LsS2PmxVV8XlOqfXccSjeBVGkST7bP
v/v7f+djjEFGt5vMiJ31xAgdsQ6dN+SyhmiTDRGXSSEbzDb2963SHUpiaySG/SZsUaXUE0RxHP+X
mpDkhTlozWbA8mQMcZ7kHGaziH16vVxGLIqDOHYgCJ7zhL8Ap38ilJz3U86jGOAztgq7Lxq3p5gn
CcyNlTewf7e6/nh/mn2grdrBfr54++0Al0n5By7Ki35SXhzgI77CUOL+GYXlX/GimPZ58cADDBB0
vn3ktlpRM4CXMHpPZw5CJ52uDEJtQ13gvJToXO0NdHgnjFaCtG2BLEjhHQLeYUtuONeh+eB2rWw6
21rvzC6FryHSWG9Ue0YgO+Ea0DXYFsHWQI19FHBkN0GmwdFJu/lkcjR8PuXBsLFCpbBEhGEg3GWW
VX7t0i1WN5pS262z8Pj2ewimcq1fafWyGBfTcQqjJ7eQ9/xv9uq2QqVQLaofYdRgv5h/uHqzOqQF
V8n4mHkefjaf8OgXUEsDBBQAAgAIAFo9CUG5x48m2x8AAKgrAABFABwAdG1wL2xheW91dC10ZXN0
LXJlc3VsdHMvaHR0cC90ZXN0cy9jYWNoZS9wb3N0LXJlZGlyZWN0LWdldC1hY3R1YWwucG5nVVQJ
AAP8aSNQI1cjUHV4CwABBOgDAAAE6AMAAO16aVSTV7t2rLW2otBWxQoibQVRELAyCQixReUNCBQZ
giBERcQwypSAIWBVSgsqGgVkCDgwCDFEhhDCFCdAQEETIkMYZAjIkDAHSEhy7rTvedf51vp+nN9n
NQsWK8l+nr33PVzDfvjzV0fbTRvUNiAQiE2ofx05gUCs/R6B+Mzjy8/gk61bturAn72RRz0ifS/4
+QZGRAUjTIzOnPXdb25kZHzQyM/3J6Oz50wOGJ/38zU1Mjf29TtgFPGDOhOB+B6BOvKza3S2oI9w
y5VPNptZq7vx6vc/7jE7+qvzYT7p9N6zpiVL9ieqG9n3m0uy+rjUV1OXDB0a9A1TW9KEng+//tb3
nZZewC9fow97H2kw6Vc9XvvD/e+/nzhyK/nqxo0vY+QHp3mhoUvjOTtHm47Or6xGjWZz2mNyBuaz
ORhCZqlNZsFXCESYhXBCGYGIff+lBwLx/PN9iMunP1NFHN6/Rgnx/b3L6xBfH3/2GeLL3afXID7f
/BSBuPLVf4ZtXeueKKeOfHp65iXuYpOuxeC1zSStDJPAD4OJmj5xFWzZqbdv33b6EIJpPnWXFiei
xsj4Y6JwMxdiXrBuj2hv/RHTq4JxmxClqV8alKZu2Sh3c/tQJHJZMe+cRBwxmLDtvNPH8nZrSxQp
bLhxa07zjRs3UKTrO8wPSGZfKBn2YuuK8xPcvfqxoT/Sr5fO/KubHrqB6kPEe3ExGy2fFmPX6evr
z4+1O5FGUtE+WCx2r7knP8HSlhUnDZfsP/3sco8E93KT2Zts8wipeFHFevnjD4k7vu153me/eLuy
6AKvkGu/MM7xTzfUreSFROu5XToypcvDpwd3l/Eb1UN3WOKm0vS92MbBAQHVq3OtNTiBuFkn95yO
sYkJOXroz85TEQ4uLhzcQrHUrdi4xH36E9nUMlhtuMS7+T9rLCnWYBtTv2VZRC7LdVx7+rVNQ/tP
odHo/kQ7ScSmHQdnyPj+7kBaHe7werwh17an4GFwrrvh+4mvSu1D0g0/ej8UOTPo1jWD1IrN7lFZ
FYVItE8Mf4kll15VsT6IIjlZr4xUcBwJ/FR0mQ0286aayQRzLGfyA5XnKHRbVA1gPcIvvF02v+Ty
OHLxlz9xDDfvR6Ljsze9dlo+KKbHrZ98azbwJHKPA+eGutkXizqF9F6RJV6YLZmDxdXJZRJL8bEk
fUcBem/3v/OJXfyW6/S4bLXSJijQpMdc70HSnDN6go3r0Jlw3/CE7ejBperudCSI59+Gxs1DCN9U
EkRTKzUDUiHsszkuViJg2N5Q4xZEbuVSJvQ7uuaUq7czCNctBx0eUNGGBu9xbzrHPjW7xFVIWx+l
FfYqx7q7yi9TLr5498CmfL7dcrp2aPNux2wPNBr/fN22u2YmcPczL3/X93h6+tUf3ywuLqocmjk8
+z5RM67KKdcaJhsYab5DqXAv8x99k2Hz+8a9C4IM/5ztpkEeKTuthNWTJXPWoT0V414DYvd0A++b
1uJPDcnb0lWoeV/yvTOhxr+x3fETlp0nXRqQt2Jk4SilpX7C9P2fr4p6I9plUskAcamPz9Ubj52l
JzG8PD1LmKOZRFF3IcyNlI47UabeaDhTjlKMx7V52mRDTUIz1789h0y/RbxLfH90mx8ybnW2iZm6
N/e5sUP8Us2ARtirbwjTdUsdRS5KxD3xMbNzetgH7Cd1822WTTsJQYyQvri5O7l3N1JjfxoraTzL
5Dj3t9vx9XMfTSSXO3ANQnUZn2k/Kgkfq6RbN9hT9ltSS3LncEk1d6mJWqj6efJ0HvbSeH76eaRj
lqk+PjxCZw+KpG2fdn27UYEXIwQp6W4PJ6RaVuvaP14d6dGpa6myli5w5q5ssZx4/AiqNjtYPmrG
Yk6VtZYJMKtD2xr6Al1u67kVUXfp+/zCx0cuSkrZlvaZZoV8TrrkcRHxesaLh/rx/1KlEMkVFkpu
LV5xi6RvudYYZn4XOfcQ3zYwRtUNpUZH8sMpnq2H3NGBz+zm+69yjAX9dZIyv9YCp1yfuEi5dMmJ
dG5upHmyk4apjhyvChveGTNye+qdvWFd5FyzDoCOoiV7/XOJOXHicTtq6tQ4jxE6azX/bK1KUG9V
2OxQQ5MGvtdGxcqV3U6h1YtlkunQgABFcrGFZHdiJNN7oq8GT9IyOv/mtX7bz+s1KmJX5kZHR2Pm
R6MEPXTu0D6vyicXG44mq26tDK1b/KAp/WSbZRqcecCvBQqh+O8U6+3E5lvfdcKsdLXS6gEFAdEI
nAIHbKapmVmKhqUpQeU19fjKxrYMozE9zEoLO9++s8SbwHEw2ypCx8SglJjlaeT9Z15cg1UBVpWj
aT58F85ER/pr8s25OHfd0JXrFdUHA2m4lYxU3V8PTejihbiOwlhcwEmkdlJNB5s9tzrfrqJpvTqc
gnTkRPIqg9fvjP54ZZ2S7iZ9/JUyI5jMEjrFmigeERU72O9Z+ju/LRTnoVzZeO75t5mpwU739p9Z
nhmkoGmOnAVN2aBmEqa/4Ed08QkvW0/pzZDFuDfev2H7s9OcMMLyh40/qd6tpY7gChwm87gnH0c6
uVVfalYPuzGf6pXUt9rswn9LYe+naN3oyQ1nugXT3akBoc/ULCI/QTdmZWW1qvjltm6Ny0bGy84k
aqQFa8avzram6bdWFh7PCB+5beseQD3XXuCQFT5Zf3HwxftHtulT7fXEjCIajWZd3WtgYmLi5jmb
UVBQQBAy/TseO5uo6jBy1q5XPlWDC24OjMCP3nzMfehWHTKLi5G3NuUQFqfj5ZL45ZeabGOikDlW
UiOsHkpPd93N25PzHCImA5hoq+ykeqFjmXaGhqEPxE+C+6rpXC8KO2BfmqUGV3Ky1tt6F9WgrYfi
HXc+f8OWJWoLuUZjcW8uWa3TqXTOwBvfFyUX0+SZBeMcJ6RVSG+Vrk0r+f6QERDIPR7FVP+BXf7j
MLZSYksTtxgKSyoYkAVnFtin7cuwiJrQZ/SGT1IZBdhLU6VNlVhvt3G3B3bBGthFy2ou9JRRZaxj
hOZr/tLpG777Hi9Unnjyd9DzaxvCW31aY4nCnEPcgdrwxJPa2A7Z3VZqAIUe4EZY+2GO32pYO/Pi
+dX1SPnqPBdT79ea1ka29OeRLaJ6qsJ8K/u6ujy6MP2eKzm95rwyP3uRNn1ImnA+cLt3vgFEGJtp
ALj65t5PZn2RHF4oy9s3LHySCUh0l2WK9xf+0eNaYcdjSg27MwiL23yif5D4NS3PDo+15+YK3kC1
HwNELYtXdytjiVuTGYEZdPdE96LbCtQiIFv987gNJwn0iPagqLRAVkRgkZN+cjH3h3Q8dpydD0Dd
XRnMixkjo5dHWKKsx2k+dOxX9PERXcYZYVVxIBa73To2OiJi/oZZ//J4YW7JKWb4s8trAj88WUlm
LScPcSofvRZoYil/Y5JRJdfcQa/3Kh2JoODpHlkb2BP7KhYFBdz10YLQopqVO4XiXu4JxlCes8Ql
RDJa6ibY5JHBjBhT3nFw/xI/QRLcTNLedez660ogLpPgnoqgmgcPBl9tdnrS7zkLgSMsctFKA4/3
TGmaBLgOXsPIxZ1cW3SRvdsxq+iZj1PIzg9PTrr4hpG0YEteZywl9+nQ3YC3+jFuwjbdXcWlF1LF
v9o/K45cHHyZaHiq6iI0YYIVsMJA1fJQMiZ6MCGIANoloc01PkbMKqzingyMusBF++7GW+gultfW
Zgxtx0aFffAR9BoFXn/vJuwdEnlRnfTTA6NeM70tAMGna6br46TirboZBGrvV8WlaLrhA12dzgPj
DcFpKRS3dG9c95sMI8O6BfZUk1H7oXkaVDKteqKYNLilMnBfuMS2Z0KjjriGAlGkWF/z0vANKU+1
4HyIOtF1clwYwuE5UJzvixgdiraPq2hkjPfmOUs96a702MvBJ35SraioOCf/Nlq2utI98Lwnot1q
7G0Wek7pihZqZ9zyILDtNGMgjrm2aihJzzSo62kAt9jFyYr+rmEsNz7u3f2fDeuXz9rY2IT9aBAK
mJC0VY+kdbL07NHMAu8aHPmAn52v7/BQQ3KK+ei9KaUN3V9Ns+RxmQWdmHgpMHNnV9fBqIkO2FN5
XqgeuuQ4aYSLxlDZ+VPZdvGnC2xTdnIKnTD0AC7ww/tS36Z2a8mT2GXtl+Pd5WNT3eUAmlnSb5hA
84VYi7jVZfOIUdhM7eIHrwQWkVRjhD9CVaWey+MT9xh4oohJTT5FOcjl5yrK5iO31EOqHtj5bUgH
fEkBTXFts+OydDp+oKsrmuuG1kaxGaEDdgn6+1hDquH++pKC18VuFLax9ONVFdgdM9yvuWOL4agd
pdRDGDkiMsIntY49Fg8FudBb25+4/jbkjGZF8Fxzh9a53yP3dDr9HJJ+/s09Z1BE0sVOf6S7mufK
5/qY+tqLo7aaxLvkk/3/hh8/tr2wjBTGHWLJJlnKoISLXAr/lgI1R2bNg/XDQ1J7jNlDYfz+99T+
FOb0PmaEpzWR+Rfq7DlZkWDrV2pKvePu/6CF5yDkKmkHTP6FPH/zuJ2aiTVf143O9aQXn31mJ2MY
O0DmhiAJeGEvU7tQujqGnAZef/Xn5gj1DGPsCSJRennNWjsZuQ8+Iix8eg8hGVp/JCZQm5AkKT/9
/ArkAzfRgQVVl2Il8kAxOMZ94EDMx7I5sG6ghM452petNXc1rGaerY2wNwbuFIvFvjfNz/dVR738
fVPNaGZgi6HzgWxLYdWjwM4SjJidnrbv5IFzr29lGPkXYHvevbvYsrewg8u9sdNKnM5a9cOdF7b1
fsP1qQhSpLTIJr8UXTzmFVqXqoUSqYvtUlEt5/zrRT2BiRo4D7lMmgv6H0SFcVZT7wvVNMwNIPBb
lhUVQf9WZrd57b17Df5bmSHLT6xLsvWWtgW7EFt0GPfTFl16HWPSM7OyJicnB0DykQJTg9KdfhVm
8OtaNLxTte96JXnurssjk8LysRa4qa65zC2BISE7958+7OvrKxoGU6J88OPlIdW/ga6Z0jL9STf9
9Uh9eV7qWEW0OHz6eU+Tx2MUc47NrXf0JCdMUFMxVkvj6NZY7VyGjtPKe8+co6gERaNS3elpMU9C
mmQJDGQ7cuzLIzHAkCE1gkqonkg0XqtrW9Spp/OCSpTvell7jrqaGkmr2fri2gsUkEjx8qV41lyL
Hj7K9grRuWmd5YAw2xh3Wqi3avgQ337hq6m2Yzd3MEFd/CVqXZz6uMQ/F45qbJv6tiaC3eWA9FiL
WF7t+Y314+eI5Xmt/4/3/F9a1H+G/TVMwKRYImZW7hSMlwg/CwbHlOjdt042tfy50v3gPEq7hktj
m87pNRW/MSba925ucvzrwnmNfZcR4LlBBS1nhdYzsZyCkL5qjagO50IyznOsjczraTPpPHVHqzmY
0ec+LDMlu9jvEoyPCHHeXQmf77ss6qmNmc9D3fH09DQABsmxItSDUQYtvczJlS3g45fwluXqBAEd
XTkrrJkGs3pHvpwirzKiKW+BNfdMAnvLlodTmlI0B8A1aaEawYiCfCIP3ADcNTMz00EdiJkbIccv
kp/5o2NvfumBECyOZoXuRoW//iHxrmYPyAQgL/lYvEzHgfOTb2N21IeTGpa447Kl0Bpd6WggQAFL
zKV9oHrhG7f7b5lub5NLWHKJwiDm5/NrwVnNvd51R2tFiGd5HcwMdkVppVqIZps05SIGy5sZzof7
X1oSSuk0YvDrWz+4Wbj0lyYbVF8QL4zXEZZkWayVrLqlfsul7LnfzExNZRNolhh243Rw8NrJ8vN8
1bxVOv/o5b5rhsy1FZ1gOUhae1U2o0hvyJb4/toY/+ywRti/dWh/LciND/1TvgB14C/J4S17W9MN
DZEKr5KiiawvLQ1rvL69QaLEzBOPWcECNeWzmgpXQ2X0X1rhp8cvvLdVsVr4VZ+8tzJynF3eZhG4
MsdX4OaNXW97FLYJpsnZWn4sNQlRk3153TsfN9nnz/RotdDL7201rcJHXmuhfMAb9mR510aHiXpc
HM3zVz+VNu20vPjxmRYKiPndB2X0eBdSPo9cmuqOADOtYr18mqSVGyfGwqw48XihJtQMirTPs+Kx
SHZOx19+8L4ITS//8umwImfcR7YpeXuSt7T2L9fACvPt03sjiq+VO2SZAhvC5ku8a9I0qTTaAITg
L6XEwy0wTzSNvs3Cd3rjTYyNY4fVB/YIfRbbtkzC1d7e3jA3UXQylWP3RQ75FBqdLvn5tLZg32dT
B+uvwv5eJqrEi7r90/W90ohqrk9AbgEHBAcEtMy9spZM3RFMd5UOwySKH5Djdm8/dHZC/lR91Ckn
mnJi55rBLy9SQ4Px/mrq6kvg9ae0+bZ6m2rfyaCQkpe21Z8YVRfG1v9VjenxK+m0OlEPGIl+Goa1
0+pSLeg2+UquvBve6pVUnQWHEjHWJh3WlN8jvgoHjX/esBs/QOx8crL8bENSgtI29wDRzEuVXLBD
gXAnqD5GEdK7OrK7AusCLxHqRImdxmRHEQfCgVz+eDVVDx2C8c+5NFEEPQINEvnp3dyj1C+sQT6l
Y+JWFkH+AN4mLTFM0CteJ6d2ryZ9fb9uYnKStVQ3rRE783yzjuPqoEr8MiDyJjXjT1eUDP5FGoE3
GtB5oHsUzLbZ6dAsBSMNEJFoREGgAr6B6yK7ziS6BYielLepHbz4EVav4CDTxTGIjwBWB2SP5mfb
aUjEnSwfDCZ+gLgEiQvC+EOzzH96lKIMc8G1ukhP7EdF6T9fr7kKMnrjd/vv//7DC2HJVbnV5sOC
Q0aUL1cW9jhwIBSVJSXCNK+QryY65VxAs64vHmzIPb3m6WRf9PANEKpvIB6KExgt1Beb1CoohM8F
Q5YeCAC+qyoy/B9KBlWnRVPdAGzRTTc1EjduDwdia6ycHtbDHXDacNl0fmQ19nZJ18pfuApF8w+/
/HXY+0GRV+TqDK7Sx3fX27dv0T4xfu05VooKNxuILbdJVLYUJwkWAMxVS0jB09mTlW75Pm+zzSMA
HpmG5oPXNuMupCfZo4PGtlzc5ujy4CmUvtXQH7vA5xoHdDxep6R6d4e+u32owtgo+8FsQC0gZwxY
q3PQOjugPJ2sFl0pY/798XIp2AUGfrqfMFVqW6nD0EB43nZXHOrq2gZ2AFu4q2MvXLhnGtyjOMyh
YZBE8YKNsnmeVaegk4aR1PQVo+7sJk4TBvT6+807gyl2dRsyegUup6rPWhZernlpTI5kozRhPpi9
wCnX+uyrP3T9P4RLToGXB9v8S0REhGj44dHk35U1MoPlM4nI7EMxc0BP4C0WQX/KoYMex4HZoKBp
sPCFZMP6rt5eIMNRXQHiV++GJjy0rmQgKQA78s5GpQ/s9mATGkOkW3VSIxuGyALNTtCyirZQDU28
q3cq34fL5mkYZw+x6XR7AcPyOAdgIDc4CKjBPt3Are1JPgPW+vNsCrglCb3TJytYzmNJvc7IYcbG
mxpe0lVjB/kETTbBYEmDm7XDeWvuVwekTN9iPHRXXxk1Y60AwDDkv7iVLDeqh27BqYaiGYB9jY2N
c1JIct2lRfECx8m+0qbFbfwhj3qCVrxUKdKlo8KY7LLnwuxP5a1r3Z8r5F68dBJDi3P0Iki4tLgo
IDG+xCy0vxeCMDHWnmVG+1qmW9ShjNAOkJIkoXHzWfVEiWiCO1mIlGLPjBnGzSY/v7p+Gta/9ouN
9w6GnT0jXxjnJCpr9FC9GOs1Y59y0wqPZ8zNtRrmEoTM6dp5x+YHBQUFofES3uLiIphwj7JzqFSy
dn/MGBm0fgFhSQjo7ETSUrhFkpaGReRyo1m9c60USFhxHAZ2T8M8/Bw4uUJHsueFM+w8FNxnYKUN
vwHzpV6s/Wh+uo8asBuQrncZWatZ8SAidnkGMGUJCrxNdG4gbO+AT9XFQaBCHtCUkmHtxckP1FQD
z+8cRT0UWr0Frx9qtCZqEieXLmFw3X7divXape6ddnsO5OJoMZ73S9MGjHhvyYmYmNZtLwFeYbfi
O7mrI5fXKn9ndP54/hrVdD38U+3N6QSmGsW5X6C7DssxTt0y0xNIE0CdDdQT40XluW6X3ISMImG9
RKhQaasXVgQuMmrRlaEvOiFyFwdfgF1KW5p/qYI8BAGxx6VlI8OGXj1Ksb4E1qqvBs8SVPLC7dN5
ygjz4mu0F+/Tge1H7jgpntjccbJmgvM9JF3gdMuuKltcAOkAJTE/+nayhx5YGdGWbY5ZaUGnGXhX
4wQ9WSHVRWLtDdarMy+9Qph8kGI+YMfPjEGkiRACMxOTt5kmkxUcR0pZeR5v8+7jHjU4AexasjDu
ciBtSCBdGkCiSM13dIAb40AIDDfeIIzcti2zgUViKoO6oRxaJXJD+ZwhSJvAFRxJS+XQzDNou22G
PrG9YU1WC+9ssJkGXpVP3r2A5tzAU9gUXLj7wyn0UTcDhWBaEvAYDx78ICmFCTSJC87Qoe7UiU7a
gE5u7ImiA8w63S1nGpK2pp8KbxYwBnLoveA8X+TrOZwSnv303wfBe7LTLJ8NhaeqmOKHwg3R9ia6
WLnx1hqw/vELjzSDeyqwLXf3Xv1iU/FC8dCL82pqaiVVQ0lBNcufRH3WGeBPfSLfH2UmKrK1NBDP
Eq9IxYtZAICKbRicOgg8DWM+dCkj+AEbPJo041fL/FrLBHtdCnbEjNxOiMjMzASqynF+dGxr7qqI
F+rPg5oL5Fi+qo6abAPUwMjm0rtTuvGlRlDMbrhRHAG+B9G7r/tkbV3YcOOQdH6sHTn19GWZAFjT
MecQc8b741mFXrQ3rHOt9+7teJGgZJuy05vPhhtkmQbbcRag8tWtY6Mp2xw4CyR7A+ZSP4FjTOSn
oi0iP+0HBW7sEMqSiiZLakrs/IoXAqCRdtnejIXvN+gE9VQUcS+n1nzXwtK/+5+w6VLr3CnOKElh
Udez39ZCB3qVla+6NSS87QVch4y0VCanVI6JmJ8eJu8EEJ5TfHYJtu1pFQ/CdU9QO9j0kde3TSrX
HmZmfuYO/bthwCY0KGiqlxlRWXf6+RUQ+72RHMWycIMjUJxB3WX5tbfVQI4T1u+4eLjSu+rX0l4y
s8+gv63vZFmdX2vaL8OgqlkzL5TWq+xcXZ1v32ZWD14HKpKVn59/rqa2qLq6WjddAlaA0KrPCOqt
mn2QuFPxcGAx+fxO4sJ7o/ZDRg4cBRihT4U17C3MJhWMO9tqQFWEuhUdT/VxuLd/EKCLFhmX/yel
4ju7NkPN0yhmy/osr8d26YF0tdSK+MykrYkkXV9DWjs0DJlH6eUVpjndZ4T0XXq2Zj3I1JI8oyyz
UB8Q4TE6re3T3eVjv29SLxOATk7dV2gnQNyiFFw2ARoFm+bH27Rpk05O9NnKv84ZWZXlrEd3BLX/
88wQRdoiq8PnU0CgWSVogt6MAE28rcSrSz6JkVe3tPWGFNLXPXkh6SZp29vJulchtOuVd3jU+kOB
KxB1BYcqp9WLJ9JZq/wXMuCLrZXlAauzKfE7LHFB3t59g4maMlBwrqwL5zkFDoqnbXCj3zduLwMW
BOBvgxS+ufdTwuZwPZd8NDazP04iMOu9aDPr5rnJI1XVpnmFv3bfXvTK6Yixx2y+J/WYtjPn7jiX
0gki2x43Wl+cZ227I+xICK3nkmTLGyCXX7OvpKWl2bH26yPlU+XtBgZRYT9RKtYeLklaEwgtjSKd
G2BEy1bG1m9SWxhKNjQ1Nr6uiYxTHD2aA0PfsyaKi90owqrhmzc1LOMgFNjMOHBOOtkXXygeEAAZ
UkqqdVEkWLr75M+kDi63L6rTOxfswASXEj9zVXN13Cm+RdkbBMBSHx7j6zvcUeRSnqKnK9jnUR8b
A77FEGMt/vRIC+VeciqjYDyHIDQHbze17XgDD0Xic8/MIhBKBor/BYDy2apuGuRBD+AWFeZ4Ztv/
j7PQBgEGnFjCQY9acgFWwVzHM9hdXVXRs0OK0y0QTN0ycNlt8CvooeP7Y/xJWlLJkhNn4Y9dN/fI
Dezzk1Wz42Urj47dEEOmsgvGtQHq3v283iH7YOlFYwYAYEvxAmSuACsGR7IMCN7m2LbbSqJ2Kiw1
iW/wO7iL3Sh2R4frQWrsZW2+7vYgRTWLFOkR5BacHW5KyTXyd7S3b/UKrYsCE+6qRgg707pVM3hS
4HLxrUnnFrlVgrFDVlZWOQYD7RUFzhWQN3xxHvxaN7A/a7ZRHcyYBjIudnDyEpe35nt0w2W3Ocs/
/tysc17uWrzspHv83v4H9fWye743T0JrPD3zUvFcNUiueEoOFmRxekD+p07OQWACTVCGxg560pVs
LZSqvmfky01mwHfDoKp8QCgMvoPmUQCmI9nixk6r6pnJP/8GhHpoEsjgADB6WpCOfDq3fNN3+z8C
4xuEjI0h5TFLwj6l6W6gJntO5MzH54Aa7aItoYXY6v/nXLL7lhG+N8wWUsRayDf002S8yTYHfAAf
WP+uDnbu1/xo9aH2UcLH39ZPTEy403zIBeO7Ug6xAftBr7oaokNoSXp3pIS6O44WRSDyUnXd2Tfm
Gm7VTTxbq7Iv28X6GSk8dWMl+xXfpyQtwJUtw+qWHLOxeQnAcwKNNgNmf4Ff34pxO/BwQa5fODf+
L71ea6riIRvwYtKS4iAEdZsUWpiam1swPtJ8Z4kHUAlYt+zzuOMm8o91vx5NrJgwO1Q/YxHZtW5r
tHSxE03zIQ79qQPZZ7PnQCZe17A0lTRKt73c5nuZZ5Zk2Ni15kIhclLeHWFjY6Oo9jxcAWBiRDNJ
u7tJH+o5ejTDvw18Gbk3UWMi+adnAvWGbb5TiApObtSzFhkmtBvzQ0+GsHa+TUF10R9/I1vidwLb
zvFbleIfzSWfSVd5moZs7S6G6ww0LRE1V5FLmG8+Q1yTlMs+V0Kctv36n2O/f4b9M+yfYf8M+2fY
P8P+7w+Tahal9a45cPhVFAJeqKOOR0p+OX3lvwBQSwMEFAACAAgAWj0JQY2lfIqPAQAA6AIAAEUA
HAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL2NhY2hlL3Bvc3QtcmVkaXJlY3Qt
Z2V0LXdkaWZmLmh0bWxVVAkAA/xpI1AjVyNQdXgLAAEE6AMAAAToAwAAjZJfT9swFMXf+RRX5YEh
VYlbaBN1oRPdkNi0qROtQHuaHPumMfXsyNehySq++5yVgkCqxJPte3/n+PhPViKX04x8q3EaSdSw
hZyL9crZ2sgJHBecf4RHiLiUb1u86FpZvBNn8c6qcmFOFTcgNCe6CJ7Tn5eLReBC8VUreE41b9EB
9/CB9dkpkPqLkDLWjBk7ArhBI9HdKtwcQN4jn2kr1rC9Xv74/ngQfYatbGE7m3/5tWPTfvrEJul5
M0rP/7N7eomNh+2xD8Nb6yQZN4NkjwN0DLjavGAbJX3ZcRPoffUnBJUlUrlGKGw4E1AtBBIVtQaH
D1wryb2yBrwFwWtCwAc0nrp1oRwCtUaUzhpbk24juAuV0tZamhMPwnEqQRVgDYItwJf2xYC8rYJN
ib1DaQej0T7v2ZiFvNpyGcECEUrvK5rEcV6vKNpgvlY+sm4Vh703v0MxEiv1ScmLZJiMhxH03nt/
rGGv0Ks/OUqJcp7fowii+ezb1eflThUy9Yd74Vl408GIPf23oyzufuQ/UEsDBAoAAgAAAFo9CUGc
6ad1BgAAAAYAAABTABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9jYWNoZS9w
b3N0LXdpdGgtY2FjaGVkLXN1YnJlc291cmNlcy1leHBlY3RlZC50eHRVVAkAA/xpI1D8aSNQdXgL
AAEE6AMAAAToAwAAUEFTUwoKUEsDBBQAAgAIAFo9CUHV9h1ikAgAABsfAABXABwAdG1wL2xheW91
dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9jYWNoZS9wb3N0LXdpdGgtY2FjaGVkLXN1YnJlc291
cmNlcy1wcmV0dHktZGlmZi5odG1sVVQJAAP8aSNQJFcjUHV4CwABBOgDAAAE6AMAANVZa2/bRhb9
7l8xsJG6LUyKsiRbj8RF4we6Rbsp1sEu9pMxJIfixCRHnRnaUrL973vnRZEUKbnYAO42aETO4865
7zPM21Tm2dXR25TgGH6E3GTk6mie0eLxDM2fqKCSxOjLEYL/JFlLLyYR41hSVsxRwQqy0FMh4zHh
XsikZPkcDVdrFMMziRdHfxwZcVZIxDLG5+gkGM30nH9HM3JDk8TOhzh6XHJWFrHnliZT9ad+kDlB
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
z5+AvsX6g5limBEuBUGasAn1nlBOkNgUUcpZAZQ72/joXzCSsjKLi1OJIo5FChds4J3APROgnGwr
QACjUiyUGCyvaMzpnzbmcDJx5hxdBM6cQKFiH90Tghw5Csul8M2Vxmd8OQDTPD/AoB8t6Q80fnd5
fnlx7qNXt8Dsf06JYP2aNWkYvEyBW1gexyT+EH4Csoa+fHj/8+31R6MLOPLs3KkzgjI7nAQHaUaN
PCtSoqfra7c/mqcCcdT/Jv5fUEsDBBQAAgAIAFo9CUGNpXyKjwEAAOgCAABRABwAdG1wL2xheW91
dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9jYWNoZS9wb3N0LXdpdGgtY2FjaGVkLXN1YnJlc291
cmNlcy13ZGlmZi5odG1sVVQJAAP8aSNQJFcjUHV4CwABBOgDAAAE6AMAAI2SX0/bMBTF3/kUV+WB
IVWJW2gTdaET3ZDYtKkTrUB7mhz7pjH17MjXockqvvuclYJAqsST7Xt/5/j4T1Yil9OMfKtxGknU
sIWci/XK2drICRwXnH+ER4i4lG9bvOhaWbwTZ/HOqnJhThU3IDQnugie05+Xi0XgQvFVK3hONW/R
AffwgfXZKZD6i5Ay1owZOwK4QSPR3SrcHEDeI59pK9awvV7++P54EH2GrWxhO5t/+bVj0376xCbp
eTNKz/+ze3qJjYftsQ/DW+skGTeDZI8DdAy42rxgGyV92XET6H31JwSVJVK5RihsOBNQLQQSFbUG
hw9cK8m9sga8BcFrQsAHNJ66daEcArVGlM4aW5NuI7gLldLWWpoTD8JxKkEVYA2CLcCX9sWAvK2C
TYm9Q2kHo9E+79mYhbzachnBAhFK7yuaxHFeryjaYL5WPrJuFYe9N79DMRIr9UnJi2SYjIcR9N57
f6xhr9CrPzlKiXKe36MIovns29Xn5U4VMvWHe+FZeNPBiD39t6Ms7n7kP1BLAwQUAAIACABaPQlB
ucePJtsfAACoKwAAUQAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvY2FjaGUv
cG9zdC13aXRoLWNhY2hlZC1zdWJyZXNvdXJjZXMtYWN0dWFsLnBuZ1VUCQAD/GkjUCRXI1B1eAsA
AQToAwAABOgDAADtemlUk1e7dqy1tqLQVsUKIm0FURCwMgkIsUXlDQgUGYIgREXEMMqUgCFgVUoL
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
5AP/m726LVFKlKvyh/+5sF8tP1y92RzKvKtoeqw89y+bznjwC1BLAwQUAAIACABaPQlB/sGlHUAB
AABaAgAAUQAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC13
aXRoLWNhY2hlZC1zdWJyZXNvdXJjZXMtYWN0dWFsLnR4dFVUCQAD/GkjUPxpI1B1eAsAAQToAwAA
BOgDAACN0V1LwzAUBuD7/YrDvJjC6LKPfjAQYTpQUQY6FK8kTU7XuJiMJF1bh//dzFmHwmBXIYfn
PTlJJK3RAHVwSrrkDKz4QEgIqSJCWgAPqDiaJ4HlASKPiE+kZkvYXM/v7z4P0l+seQ2byezqZWeT
bvJj42RUhcno2zZ6jpWDzYnzy//WcRxV/bjhAFsDplB7Vgru8q0bQ/vGdSystLUilQiZ9ncCWzCG
1maFBINrKgWnTmgFTgOjhUXANSpnt/tMGARbK5YbrXRhZR3As6/kupBcdRwwQ20OIgOtEHQGLtf7
BtbplW+TY/vQtP0wbOYdRsTPKzXlATwiQu7cyo57vbRY2KDEdClcoM2i588uX30xYAtxIfh5PIij
QQDtY9+PVOQPnb6nyDnyWfqGzIdmk9vp5XyX8jN1B01w6P+0H5LWF1BLAwQKAAAAAAAhMwlBAAAA
AAAAAAAAAAAAKAAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvbWlzYy9VVAkA
A75XI1DXaiNQdXgLAAEE6AMAAAToAwAAUEsDBBQAAgAIACEzCUEVNTWSegAAALwAAABCABwAdG1w
L2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9taXNjL3hzbHQtYmFkLWltcG9ydC1zdGRl
cnIudHh0VVQJAAO+VyNQvlcjUHV4CwABBOgDAAAE6AMAAI2OQQ7DIAwE73mFP0Ag7aEVvyHEVSwZ
jIyR+vwS5QPVXlY7h9kspREnI6mAqqIRPsQIp1mL3m+P1xpmtvgOIfhCPXvFLkMzdv/tbG5Ph6PS
RM0NpXVuwFQRnoCMBavBTZdJ4l0hwqhpnxoTYEnHf7oqfeTzupcsMS8/UEsDBBQAAgAIABMzCUHO
a0AkbgAAAHIAAABHABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9taXNjL2Ru
cy1wcmVmZXRjaC1jb250cm9sLXN0ZGVyci50eHRVVAkAA6ZXI1CmVyNQdXgLAAEE6AMAAAToAwAA
izY0MTE3tzI0Mbc0sjI2sjCzsDQwNTY0MLa0cg0K8g+ySk4tKokvSy3KTKuMLyjKT47PKy7WS07W
MDcx0YxVcHYNCokP8PaMCAOrcAYqVkjLL1IwNDLXMwBCQ4W0xMyc1BSF1KIiW10LQwtDLgBQSwME
CgAAAAAAQTMJQQAAAAAAAAAAAAAAACwAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L1VUCQAD+lcjUNdqI1B1eAsAAQToAwAABOgDAABQSwMEFAACAAgAOjMJQVZw
UmliAAAAjgAAAFUAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3hzcy1ERU5JRUQteG1sLWV4dGVybmFsLWVudGl0eS1zdGRlcnIudHh0VVQJAAPwVyNQ8FcjUHV4
CwABBOgDAAAE6AMAAI3MMQrDMAwF0N2n+FuWguhqOvYG3QvC+Q4B2zKKAuntS2/QA7xX98YsIowi
V29SNLTZlu8ZU/2gg+7myHhaOTtHYD/APuOT0jvVv/kr1AOhG3hNluB6w/JYMCxQ7Rzrr/sCUEsD
BBQAAgAIADozCUFgS2YQkQAAAPsBAABdABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXhzbC1kb2N1bWVudC1zZWN1cml0eU9yaWdpbi1zdGRl
cnIudHh0VVQJAAPwVyNQ8FcjUHV4CwABBOgDAAAE6AMAAO2OMQ6DMAxFd07hC4QEllaZYejSngEF
UyKZJLKdCm5fOvQGHau/vq/3Qt5KpEljToDMmT0skRBW1eKt7fpL6851/uqcs4KhctTD7iJmGO+3
cTC7kJlzqBsmNV/gwfEZU7tvBBQTQg9I+CFA9CCUFVGb8+lfyHK6PeREB3StgwUnrYwCEyNILSWz
4tyEf+iPQ99QSwMECgAAAAAAQTMJQQAAAAAAAAAAAAAAAEIAHAB0bXAvbGF5b3V0LXRlc3QtcmVz
dWx0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9VVAkAA/pXI1DX
aiNQdXgLAAEE6AMAAAToAwAAUEsDBBQAAgAIAEEzCUFjqqxsggAAAKgAAABqABwAdG1wL2xheW91
dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kv
eHNsLXVuYWZmZWN0ZWQtYnktc3R5bGUtc3JjLTItc3RkZXJyLnR4dFVUCQAD+lcjUPpXI1B1eAsA
AQToAwAABOgDAAAtjUEKwzAMBO95hV4QO72k+BWFviC4G2JQLCMppf59TSl7WobZzXK2wpsXqQRV
0UR7YdDh3lIIy22d48iS7jHGYMiXFu8hS3VUf/77Q7jkHhQml2ZYMO+M+WNMXCpoJTDOIdAP2AH4
NGh6Q21cJ5LKnZY50o7NrzFEm4Lsak3U8Zq+UEsDBBQAAgAIAEEzCUFjqqxsggAAAKgAAABYABwA
dG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kveHNsLWFsbG93ZWQtc3RkZXJyLnR4dFVUCQAD+lcjUPpXI1B1eAsAAQToAwAABOgD
AAAtjUEKwzAMBO95hV4QO72k+BWFviC4G2JQLCMppf59TSl7WobZzXK2wpsXqQRV0UR7YdDh3lII
y22d48iS7jHGYMiXFu8hS3VUf/77Q7jkHhQml2ZYMO+M+WNMXCpoJTDOIdAP2AH4NGh6Q21cJ5LK
nZY50o7NrzFEm4Lsak3U8Zq+UEsDBAoAAAAAAAs0CUEAAAAAAAAAAAAAAAAgABwAdG1wL2xheW91
dC10ZXN0LXJlc3VsdHMvcmV0cmllcy9VVAkAA3VZI1DXaiNQdXgLAAEE6AMAAAToAwAAUEsDBBQA
AgAIABQ0CUFwk+ar0gAAAJUBAAAuABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcmV0cmllcy90
ZXN0c19ydW4wLnR4dFVUCQADiFkjUHVZI1B1eAsAAQToAwAABOgDAACVUDFyxDAI7PMXondcly9g
CUuaINAJ5Mvk9ZGdxjOpUsHOLuxCce/BydzCV+Oy0KDnXDh801BgkuwFBllXMXov3vhtx0VHlAMt
vGjLHKxgogFrNlarKrDraOg3OR0kyyNV6+ixQCMzzATmo0qGhI439TluAadr1NaZnED3HV51ZUm0
42SHA3kSJCUDUYfIhOO+YuDyWDFjoQQXgqhTnO4q1jP4VR7yMTSvS+0vP+VsrqugqzngptNhY5TP
X3Vn9JMOsQxtdbZw1OETOeQ+wz8/9gNQSwECHgMKAAAAAADQPQlBAAAAAAAAAAAAAAAAGAAYAAAA
AAAAABAA7UEAAAAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvVVQFAAPXaiNQdXgLAAEE6AMAAATo
AwAAUEsBAh4DFAACAAgAUD0JQeayz1s/NgAAwpECADQAGAAAAAAAAQAAAKSBUgAAAHRtcC9sYXlv
dXQtdGVzdC1yZXN1bHRzL3dlYmtpdF91bml0X3Rlc3RzX291dHB1dC54bWxVVAUAA+hpI1B1eAsA
AQToAwAABOgDAABQSwECHgMKAAAAAADyMglBAAAAAAAAAAAAAAAAHQAYAAAAAAAAABAA7UH/NgAA
dG1wL2xheW91dC10ZXN0LXJlc3VsdHMvY3NzMy9VVAUAA2dXI1B1eAsAAQToAwAABOgDAABQSwEC
HgMKAAAAAADyMglBAAAAAAAAAAAAAAAAJQAYAAAAAAAAABAA7UFWNwAAdG1wL2xheW91dC10ZXN0
LXJlc3VsdHMvY3NzMy9maWx0ZXJzL1VUBQADZ1cjUHV4CwABBOgDAAAE6AMAAFBLAQIeAwoAAAAA
APIyCUEAAAAAAAAAAAAAAAAsABgAAAAAAAAAEADtQbU3AAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0
cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL1VUBQADZ1cjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAI
AIA9CUH9Asi8igAAAJMAAABiABgAAAAAAAEAAACkgRs4AAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0
cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItY3NzLWtleXdvcmQtYXMtcGFyYW1l
dGVyLW5hbWUtc3RkZXJyLnR4dFVUBQADP2ojUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAMc9
CUHhg0krRFYAAJ+xAgAmABgAAAAAAAEAAACkgUE5AAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy90
ZXN0c19ydW4xLnR4dFVUBQADxmojUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAMc9CUH1LicL
gEEAAF/0AQAmABgAAAAAAAEAAACkgeWPAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy90ZXN0c19y
dW4yLnR4dFVUBQADxWojUHV4CwABBOgDAAAE6AMAAFBLAQIeAwoAAAAAAIEzCUEAAAAAAAAAAAAA
AAAdABgAAAAAAAAAEADtQcXRAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L1VUBQADcVgj
UHV4CwABBOgDAAAE6AMAAFBLAQIeAwoAAAAAAGEzCUEAAAAAAAAAAAAAAAAkABgAAAAAAAAAEADt
QRzSAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2xvYWRlci9VVAUAAzZYI1B1eAsAAQTo
AwAABOgDAABQSwECHgMUAAIACABhMwlBQTp/05oHAAD4FwAAQwAYAAAAAAABAAAApIF60gAAdG1w
L2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9sb2FkZXIvbG9hZEluUHJvZ3Jlc3MtcHJldHR5LWRp
ZmYuaHRtbFVUBQADNlgjUHV4CwABBOgDAAAE6AMAAFBLAQIeAwoAAgAAAGEzCUHW0dp5LgAAAC4A
AAA/ABgAAAAAAAEAAACkgZHaAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2xvYWRlci9s
b2FkSW5Qcm9ncmVzcy1leHBlY3RlZC50eHRVVAUAAzZYI1B1eAsAAQToAwAABOgDAABQSwECHgMU
AAIACABhMwlBbKMq8r4AAADwAAAAPQAYAAAAAAABAAAApIE42wAAdG1wL2xheW91dC10ZXN0LXJl
c3VsdHMvZmFzdC9sb2FkZXIvbG9hZEluUHJvZ3Jlc3Mtd2RpZmYuaHRtbFVUBQADNlgjUHV4CwAB
BOgDAAAE6AMAAFBLAQIeAxQAAgAIAGEzCUEpJndpdAAAAH0AAAA9ABgAAAAAAAEAAACkgW3cAAB0
bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2xvYWRlci9sb2FkSW5Qcm9ncmVzcy1hY3R1YWwu
dHh0VVQFAAM2WCNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAYTMJQTRdBubFAAAAGgEAADsA
GAAAAAAAAQAAAKSBWN0AAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvbG9hZGVyL2xvYWRJ
blByb2dyZXNzLWRpZmYudHh0VVQFAAM2WCNQdXgLAAEE6AMAAAToAwAAUEsBAh4DCgAAAAAAgTMJ
QQAAAAAAAAAAAAAAACEAGAAAAAAAAAAQAO1Bkt4AAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zh
c3QveHNsL1VUBQADclgjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAIEzCUGBSnetSwAAAKwA
AABMABgAAAAAAAEAAACkge3eAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L3hzbC94c2x0
LXRyYW5zZm9ybS10by1mcmFnbWVudC1jcmFzaC1zdGRlcnIudHh0VVQFAANyWCNQdXgLAAEE6AMA
AAToAwAAUEsBAh4DFAACAAgAgTMJQVBdSDeMAAAA+AAAADgAGAAAAAAAAQAAAKSBvt8AAHRtcC9s
YXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QveHNsL3hzbHQtZG9jLWVuYy1zdGRlcnIudHh0VVQFAANx
WCNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAgTMJQVBdSDeMAAAA+AAAAD8AGAAAAAAAAQAA
AKSBvOAAAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QveHNsL3hzbHQtYmFkLWltcG9ydC11
cmktc3RkZXJyLnR4dFVUBQADcVgjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAIEzCUFtR9Re
hQAAAPEAAAA9ABgAAAAAAAEAAACkgcHhAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L3hz
bC90cmFuc2Zvcm0teGhyLWRvYy1zdGRlcnIudHh0VVQFAANxWCNQdXgLAAEE6AMAAAToAwAAUEsB
Ah4DCgAAAAAAKjMJQQAAAAAAAAAAAAAAACQAGAAAAAAAAAAQAO1BveIAAHRtcC9sYXlvdXQtdGVz
dC1yZXN1bHRzL2Zhc3QvY2FudmFzL1VUBQAD0FcjUHV4CwABBOgDAAAE6AMAAFBLAQIeAwoAAAAA
ALc9CUEAAAAAAAAAAAAAAAAqABgAAAAAAAAAEADtQRvjAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0
cy9mYXN0L2NhbnZhcy93ZWJnbC9VVAUAA6pqI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACAC4
PQlBXa+rf8YAAADgAQAASgAYAAAAAAABAAAApIF/4wAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVyLXByZWNpc2lvbi1mb3JtYXQtZGlmZi50eHRVVAUAA6xq
I1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACAC4PQlBHxljefsBAAAODAAATgAYAAAAAAABAAAA
pIHJ5AAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVyLXBy
ZWNpc2lvbi1mb3JtYXQtZXhwZWN0ZWQudHh0VVQFAAOsaiNQdXgLAAEE6AMAAAToAwAAUEsBAh4D
FAACAAgAtz0JQfR662TNAAAAqAEAAD4AGAAAAAAAAQAAAKSBTOcAAHRtcC9sYXlvdXQtdGVzdC1y
ZXN1bHRzL2Zhc3QvY2FudmFzL3dlYmdsL2lzLW9iamVjdC1zdGRlcnIudHh0VVQFAAOqaiNQdXgL
AAEE6AMAAAToAwAAUEsBAh4DFAACAAgAtz0JQdf+j4GnAAAA3wIAAFEAGAAAAAAAAQAAAKSBkegA
AHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLXZlcnRleC1hdHRy
aWItemVyby1pc3N1ZXMtc3RkZXJyLnR4dFVUBQADqWojUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQA
AgAIALc9CUFJAYqu2wAAADgBAABFABgAAAAAAAEAAACkgcPpAAB0bXAvbGF5b3V0LXRlc3QtcmVz
dWx0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmRleC12YWxpZGF0aW9uLXN0ZGVyci50eHRVVAUAA6pq
I1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACAC4PQlBGUuLE7UHAADBGwAAUgAYAAAAAAABAAAA
pIEd6wAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVyLXBy
ZWNpc2lvbi1mb3JtYXQtcHJldHR5LWRpZmYuaHRtbFVUBQADrGojUHV4CwABBOgDAAAE6AMAAFBL
AQIeAxQAAgAIALY9CUE1Lh74yQAAAF4GAABOABgAAAAAAAEAAACkgV7zAAB0bXAvbGF5b3V0LXRl
c3QtcmVzdWx0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3LWFycmF5cy1vdXQtb2YtYm91bmRzLXN0
ZGVyci50eHRVVAUAA6hqI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACAC5PQlB0AwJ+YkAAACT
AAAAUwAYAAAAAAABAAAApIGv9AAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMv
d2ViZ2wvdW5pZm9ybS1sb2NhdGlvbi1sZW5ndGgtbGltaXRzLXN0ZGVyci50eHRVVAUAA65qI1B1
eAsAAQToAwAABOgDAABQSwECHgMUAAIACAC2PQlBq32B+4sAAAABAQAARAAYAAAAAAABAAAApIHF
9QAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wvZXJyb3ItcmVwb3J0
aW5nLXN0ZGVyci50eHRVVAUAA6hqI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACAC4PQlBOWnG
ugwCAAA9DAAATAAYAAAAAAABAAAApIHO9gAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9j
YW52YXMvd2ViZ2wvc2hhZGVyLXByZWNpc2lvbi1mb3JtYXQtYWN0dWFsLnR4dFVUBQADrGojUHV4
CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIALY9CUFeO0kWAwEAANUJAABQABgAAAAAAAEAAACkgWD5
AAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3LWVsZW1lbnRz
LW91dC1vZi1ib3VuZHMtc3RkZXJyLnR4dFVUBQADqGojUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQA
AgAIALk9CUFXUi7tOgEAAKEMAABJABgAAAAAAAEAAACkge36AAB0bXAvbGF5b3V0LXRlc3QtcmVz
dWx0cy9mYXN0L2NhbnZhcy93ZWJnbC90eXBlLWNvbnZlcnNpb24tdGVzdC1zdGRlcnIudHh0VVQF
AAOuaiNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAuD0JQWWTmR9bAgAA3QwAAEwAGAAAAAAA
AQAAAKSBqvwAAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvY2FudmFzL3dlYmdsL3NoYWRl
ci1wcmVjaXNpb24tZm9ybWF0LXdkaWZmLmh0bWxVVAUAA6xqI1B1eAsAAQToAwAABOgDAABQSwEC
HgMUAAIACAC3PQlBCsdLDqkAAACUAgAAVAAYAAAAAAABAAAApIGL/wAAdG1wL2xheW91dC10ZXN0
LXJlc3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi1jb3BpZXMtaW5kaWNl
cy1zdGRlcnIudHh0VVQFAAOqaiNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAtz0JQWW9TPWd
AAAASgEAAF8AGAAAAAAAAQAAAKSBwgABAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvY2Fu
dmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24tdmVyaWZpZXMtdG9vLW1hbnktaW5kaWNlcy1zdGRl
cnIudHh0VVQFAAOqaiNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAtz0JQbi4H0WXAAAAAgIA
AEQAGAAAAAAAAQAAAKSB+AEBAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvY2FudmFzL3dl
YmdsL2dldC1hY3RpdmUtdGVzdC1zdGRlcnIudHh0VVQFAAOpaiNQdXgLAAEE6AMAAAToAwAAUEsB
Ah4DFAACAAgAtz0JQaFYj2GVAAAAJgEAAFEAGAAAAAAAAQAAAKSBDQMBAHRtcC9sYXlvdXQtdGVz
dC1yZXN1bHRzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWJpbmQtYXR0cmliLWxvY2F0aW9uLXRlc3Qt
c3RkZXJyLnR4dFVUBQADqWojUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIACszCUEYrq5KzQAA
AKgBAABKABgAAAAAAAEAAACkgS0EAQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2NhbnZh
cy93ZWJnbC9pbnZhbGlkLXBhc3NlZC1wYXJhbXMtc3RkZXJyLnR4dFVUBQAD0lcjUHV4CwABBOgD
AAAE6AMAAFBLAQIeAxQAAgAIALg9CUHD8+DxWAAAAGEAAABKABgAAAAAAAEAAACkgX4FAQB0bXAv
bGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2NhbnZhcy93ZWJnbC9udWxsLW9iamVjdC1iZWhhdmlv
dXItc3RkZXJyLnR4dFVUBQADq2ojUHV4CwABBOgDAAAE6AMAAFBLAQIeAwoAAAAAAEUzCUEAAAAA
AAAAAAAAAAAoABgAAAAAAAAAEADtQVoGAQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2Zp
bGVzeXN0ZW0vVVQFAAMCWCNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgARTMJQWY3f6ZnAAAA
cQAAADoAGAAAAAAAAQAAAKSBvAYBAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvZmlsZXN5
c3RlbS9vcC1jb3B5LXN0ZGVyci50eHRVVAUAAwJYI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIA
CABFMwlBuWDnzWcAAABxAAAAOgAYAAAAAAABAAAApIGXBwEAdG1wL2xheW91dC10ZXN0LXJlc3Vs
dHMvZmFzdC9maWxlc3lzdGVtL29wLW1vdmUtc3RkZXJyLnR4dFVUBQADAlgjUHV4CwABBOgDAAAE
6AMAAFBLAQIeAxQAAgAIAEUzCUHMiaEOZwAAAHEAAAA8ABgAAAAAAAEAAACkgXIIAQB0bXAvbGF5
b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtcmVtb3ZlLXN0ZGVyci50eHRVVAUA
AwJYI1B1eAsAAQToAwAABOgDAABQSwECHgMKAAAAAABXPQlBAAAAAAAAAAAAAAAAQwAYAAAAAAAA
AAAApIFPCQEAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcHl3ZWJzb2NrZXQud3MubG9nLTA5QXVn
MjAxMi0wNzQyNDUtb3V0LnR4dFVUBQAD9WkjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAMc9
CUHKN50xIrsAAKrrCAAmABgAAAAAAAEAAACkgcwJAQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9h
Y2Nlc3NfbG9nLnR4dFVUBQADxWojUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAMc9CUFyYbNc
dkQAAI/9AQAmABgAAAAAAAEAAACkgU7FAQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy90ZXN0c19y
dW4zLnR4dFVUBQADxmojUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAMc9CUGSOfDxsh4AAOwO
AwAlABgAAAAAAAEAAACkgSQKAgB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9lcnJvcl9sb2cudHh0
VVQFAAPGaiNQdXgLAAEE6AMAAAToAwAAUEsBAh4DCgAAAAAAcDMJQQAAAAAAAAAAAAAAACEAGAAA
AAAAAAAQAO1BNSkCAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3BsYXRmb3JtL1VUBQADVFgjUHV4
CwABBOgDAAAE6AMAAFBLAQIeAwoAAAAAAMQzCUEAAAAAAAAAAAAAAAAqABgAAAAAAAAAEADtQZAp
AgB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJvbWl1bS9VVAUAA+9YI1B1eAsA
AQToAwAABOgDAABQSwECHgMKAAAAAADEMwlBAAAAAAAAAAAAAAAAMgAYAAAAAAAAABAA7UH0KQIA
dG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9VVAUAA+9Y
I1B1eAsAAQToAwAABOgDAABQSwECHgMKAAAAAADEMwlBAAAAAAAAAAAAAAAANgAYAAAAAAAAABAA
7UFgKgIAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9n
cHUvVVQFAAPvWCNQdXgLAAEE6AMAAAToAwAAUEsBAh4DCgAAAAAAxDMJQQAAAAAAAAAAAAAAADsA
GAAAAAAAAAAQAO1B0CoCAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3BsYXRmb3JtL2Nocm9taXVt
L3ZpcnR1YWwvZ3B1L2Zhc3QvVVQFAAPvWCNQdXgLAAEE6AMAAAToAwAAUEsBAh4DCgAAAAAAxDMJ
QQAAAAAAAAAAAAAAAEIAGAAAAAAAAAAQAO1BRSsCAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Bs
YXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2Zhc3QvY2FudmFzL1VUBQAD71gjUHV4CwABBOgD
AAAE6AMAAFBLAQIeAwoAAAAAAMgzCUEAAAAAAAAAAAAAAABIABgAAAAAAAAAEADtQcErAgB0bXAv
bGF5b3V0LXRlc3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL2dwdS9mYXN0L2Nh
bnZhcy93ZWJnbC9VVAUAA/dYI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACADFMwlBLZppK9gA
AAAcAgAAaAAYAAAAAAABAAAApIFDLAIAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0v
Y2hyb21pdW0vdmlydHVhbC9ncHUvZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVyLXByZWNpc2lvbi1m
b3JtYXQtZGlmZi50eHRVVAUAA/JYI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACADFMwlBHxlj
efsBAAAODAAAbAAYAAAAAAABAAAApIG9LQIAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZv
cm0vY2hyb21pdW0vdmlydHVhbC9ncHUvZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVyLXByZWNpc2lv
bi1mb3JtYXQtZXhwZWN0ZWQudHh0VVQFAAPyWCNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgA
xDMJQfvPG6aqAAAA3wIAAG8AGAAAAAAAAQAAAKSBXjACAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRz
L3BsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2Zhc3QvY2FudmFzL3dlYmdsL2dsLXZlcnRl
eC1hdHRyaWItemVyby1pc3N1ZXMtc3RkZXJyLnR4dFVUBQAD8FgjUHV4CwABBOgDAAAE6AMAAFBL
AQIeAxQAAgAIAMUzCUHE/7jF2wAAADgBAABjABgAAAAAAAEAAACkgbExAgB0bXAvbGF5b3V0LXRl
c3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL2dwdS9mYXN0L2NhbnZhcy93ZWJn
bC9pbmRleC12YWxpZGF0aW9uLXN0ZGVyci50eHRVVAUAA/FYI1B1eAsAAQToAwAABOgDAABQSwEC
HgMUAAIACADFMwlBdTYwi80HAADfGwAAcAAYAAAAAAABAAAApIEpMwIAdG1wL2xheW91dC10ZXN0
LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUvZmFzdC9jYW52YXMvd2ViZ2wv
c2hhZGVyLXByZWNpc2lvbi1mb3JtYXQtcHJldHR5LWRpZmYuaHRtbFVUBQAD8lgjUHV4CwABBOgD
AAAE6AMAAFBLAQIeAxQAAgAIAMQzCUHikPoYyQAAAF4GAABsABgAAAAAAAEAAACkgaA7AgB0bXAv
bGF5b3V0LXRlc3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL2dwdS9mYXN0L2Nh
bnZhcy93ZWJnbC9kcmF3LWFycmF5cy1vdXQtb2YtYm91bmRzLXN0ZGVyci50eHRVVAUAA+9YI1B1
eAsAAQToAwAABOgDAABQSwECHgMUAAIACADEMwlB0LNdMYwAAAABAQAAYgAYAAAAAAABAAAApIEP
PQIAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUv
ZmFzdC9jYW52YXMvd2ViZ2wvZXJyb3ItcmVwb3J0aW5nLXN0ZGVyci50eHRVVAUAA+9YI1B1eAsA
AQToAwAABOgDAABQSwECHgMUAAIACADFMwlBOWnGugwCAAA9DAAAagAYAAAAAAABAAAApIE3PgIA
dG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUvZmFz
dC9jYW52YXMvd2ViZ2wvc2hhZGVyLXByZWNpc2lvbi1mb3JtYXQtYWN0dWFsLnR4dFVUBQAD8lgj
UHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAMgzCUH7LratigAAAJMAAABoABgAAAAAAAEAAACk
gedAAgB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL2dw
dS9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC1jb21wb3NpdGUtbW9kZXMtc3RkZXJyLnR4dFVUBQAD
91gjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAMQzCUGuHqA2BAEAANUJAABuABgAAAAAAAEA
AACkgRNCAgB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFs
L2dwdS9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3LWVsZW1lbnRzLW91dC1vZi1ib3VuZHMtc3RkZXJy
LnR4dFVUBQAD71gjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAMczCUHOI9ArOgEAAKEMAABn
ABgAAAAAAAEAAACkgb9DAgB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJvbWl1
bS92aXJ0dWFsL2dwdS9mYXN0L2NhbnZhcy93ZWJnbC90eXBlLWNvbnZlcnNpb24tdGVzdC1zdGRl
cnIudHh0VVQFAAP1WCNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAxTMJQaomOYjOAAAAqAEA
AGwAGAAAAAAAAQAAAKSBmkUCAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3BsYXRmb3JtL2Nocm9t
aXVtL3ZpcnR1YWwvZ3B1L2Zhc3QvY2FudmFzL3dlYmdsL29iamVjdC1kZWxldGlvbi1iZWhhdmlv
dXItc3RkZXJyLnR4dFVUBQAD8VgjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAMUzCUFlk5kf
WwIAAN0MAABqABgAAAAAAAEAAACkgQ5HAgB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9wbGF0Zm9y
bS9jaHJvbWl1bS92aXJ0dWFsL2dwdS9mYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItcHJlY2lzaW9u
LWZvcm1hdC13ZGlmZi5odG1sVVQFAAPyWCNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAxTMJ
QWDxbE+rAAAAlAIAAHIAGAAAAAAAAQAAAKSBDUoCAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Bs
YXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlk
YXRpb24tY29waWVzLWluZGljZXMtc3RkZXJyLnR4dFVUBQAD8VgjUHV4CwABBOgDAAAE6AMAAFBL
AQIeAxQAAgAIAMUzCUHvik1+oAAAAEoBAAB9ABgAAAAAAAEAAACkgWRLAgB0bXAvbGF5b3V0LXRl
c3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL2dwdS9mYXN0L2NhbnZhcy93ZWJn
bC9pbmRleC12YWxpZGF0aW9uLXZlcmlmaWVzLXRvby1tYW55LWluZGljZXMtc3RkZXJyLnR4dFVU
BQAD8VgjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAMQzCUHRO1M8mAAAAAICAABiABgAAAAA
AAEAAACkgbtMAgB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJvbWl1bS92aXJ0
dWFsL2dwdS9mYXN0L2NhbnZhcy93ZWJnbC9nZXQtYWN0aXZlLXRlc3Qtc3RkZXJyLnR4dFVUBQAD
71gjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAMQzCUFHNrtVlgAAACYBAABvABgAAAAAAAEA
AACkge9NAgB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFs
L2dwdS9mYXN0L2NhbnZhcy93ZWJnbC9nbC1iaW5kLWF0dHJpYi1sb2NhdGlvbi10ZXN0LXN0ZGVy
ci50eHRVVAUAA+9YI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACADFMwlBjpbWsFoAAABhAAAA
aAAYAAAAAAABAAAApIEuTwIAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21p
dW0vdmlydHVhbC9ncHUvZmFzdC9jYW52YXMvd2ViZ2wvbnVsbC1vYmplY3QtYmVoYXZpb3VyLXN0
ZGVyci50eHRVVAUAA/FYI1B1eAsAAQToAwAABOgDAABQSwECHgMKAAAAAABwMwlBAAAAAAAAAAAA
AAAALwAYAAAAAAAAABAA7UEqUAIAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hy
b21pdW0vaHR0cC9VVAUAA1RYI1B1eAsAAQToAwAABOgDAABQSwECHgMKAAAAAABwMwlBAAAAAAAA
AAAAAAAANQAYAAAAAAAAABAA7UGTUAIAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0v
Y2hyb21pdW0vaHR0cC90ZXN0cy9VVAUAA1RYI1B1eAsAAQToAwAABOgDAABQSwECHgMKAAAAAABw
MwlBAAAAAAAAAAAAAAAAPgAYAAAAAAAAABAA7UECUQIAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMv
cGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1cml0eS9VVAUAA1RYI1B1eAsAAQToAwAA
BOgDAABQSwECHgMKAAAAAABwMwlBAAAAAAAAAAAAAAAASwAYAAAAAAAAABAA7UF6UQIAdG1wL2xh
eW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1cml0eS9t
aXhlZENvbnRlbnQvVVQFAANUWCNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAcDMJQf0pEvdu
AAAAcgAAAHsAGAAAAAAAAQAAAKSB/1ECAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3BsYXRmb3Jt
L2Nocm9taXVtL2h0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLWlmcmFt
ZS1pbi1tYWluLWZyYW1lLWFsbG93ZWQtc3RkZXJyLnR4dFVUBQADVFgjUHV4CwABBOgDAAAE6AMA
AFBLAQIeAxQAAgAIAMc9CUEjXjDazAYAAN4iAAAmABgAAAAAAAEAAACkgSJTAgB0bXAvbGF5b3V0
LXRlc3QtcmVzdWx0cy90ZXN0c19ydW4wLnR4dFVUBQADxWojUHV4CwABBOgDAAAE6AMAAFBLAQIe
AxQAAgAIANA9CUG3mqGb8CQAAIOdAAAkABgAAAAAAAEAAACkgU5aAgB0bXAvbGF5b3V0LXRlc3Qt
cmVzdWx0cy9yZXN1bHRzLmh0bWxVVAUAA9dqI1B1eAsAAQToAwAABOgDAABQSwECHgMKAAAAAADE
MwlBAAAAAAAAAAAAAAAAIAAYAAAAAAAAABAA7UGcfwIAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMv
cGx1Z2lucy9VVAUAA+9YI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACADEMwlB1IZ3kPAAAABZ
AQAARAAYAAAAAAABAAAApIH2fwIAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGx1Z2lucy9udWxs
LW5wcC1nZXR2YWx1ZS1wb2ludGVyLXN0ZGVyci50eHRVVAUAA+9YI1B1eAsAAQToAwAABOgDAABQ
SwECHgMUAAIACADJPQlBcN8MysQCAAApCgAAKQAYAAAAAAABAAAApIFkgQIAdG1wL2xheW91dC10
ZXN0LXJlc3VsdHMvZnVsbF9yZXN1bHRzLmpzb25VVAUAA8lqI1B1eAsAAQToAwAABOgDAABQSwEC
HgMKAAAAAABXPQlBAAAAAAAAAAAAAAAAQwAYAAAAAAAAAAAApIGLhAIAdG1wL2xheW91dC10ZXN0
LXJlc3VsdHMvcHl3ZWJzb2NrZXQud3MubG9nLTA5QXVnMjAxMi0wNzQyNDUtZXJyLnR4dFVUBQAD
9WkjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAFY9CUGR7GaBGiQAAG9hAAAiABgAAAAAAAEA
AACkgQiFAgB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwZC5jb25mVVQFAAP0aSNQdXgLAAEE
6AMAAAToAwAAUEsBAh4DCgAAAAAAzjIJQQAAAAAAAAAAAAAAAB0AGAAAAAAAAAAQAO1BfqkCAHRt
cC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvVVQFAAMjVyNQdXgLAAEE6AMAAAToAwAAUEsBAh4D
CgAAAAAAOjMJQQAAAAAAAAAAAAAAACMAGAAAAAAAAAAQAO1B1akCAHRtcC9sYXlvdXQtdGVzdC1y
ZXN1bHRzL2h0dHAvdGVzdHMvVVQFAAPwVyNQdXgLAAEE6AMAAAToAwAAUEsBAh4DCgAAAAAAzjIJ
QQAAAAAAAAAAAAAAACkAGAAAAAAAAAAQAO1BMqoCAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0
dHAvdGVzdHMvY2FjaGUvVVQFAAMkVyNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAWj0JQf7B
pR1AAQAAWgIAAEUAGAAAAAAAAQAAAKSBlaoCAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAv
dGVzdHMvY2FjaGUvcG9zdC1yZWRpcmVjdC1nZXQtYWN0dWFsLnR4dFVUBQAD/GkjUHV4CwABBOgD
AAAE6AMAAFBLAQIeAwoAAgAAAFo9CUGc6ad1BgAAAAYAAABHABgAAAAAAAEAAACkgVSsAgB0bXAv
bGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL2NhY2hlL3Bvc3QtcmVkaXJlY3QtZ2V0LWV4
cGVjdGVkLnR4dFVUBQAD/GkjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAFo9CUFXNUJbmQEA
ABcDAABDABgAAAAAAAEAAACkgdusAgB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3Rz
L2NhY2hlL3Bvc3QtcmVkaXJlY3QtZ2V0LWRpZmYudHh0VVQFAAP8aSNQdXgLAAEE6AMAAAToAwAA
UEsBAh4DFAACAAgAWj0JQbnHjybbHwAAqCsAAEUAGAAAAAAAAAAAAKSB8a4CAHRtcC9sYXlvdXQt
dGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC1yZWRpcmVjdC1nZXQtYWN0dWFsLnBu
Z1VUBQAD/GkjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAFo9CUGNpXyKjwEAAOgCAABFABgA
AAAAAAEAAACkgUvPAgB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL2NhY2hlL3Bv
c3QtcmVkaXJlY3QtZ2V0LXdkaWZmLmh0bWxVVAUAA/xpI1B1eAsAAQToAwAABOgDAABQSwECHgMK
AAIAAABaPQlBnOmndQYAAAAGAAAAUwAYAAAAAAABAAAApIFZ0QIAdG1wL2xheW91dC10ZXN0LXJl
c3VsdHMvaHR0cC90ZXN0cy9jYWNoZS9wb3N0LXdpdGgtY2FjaGVkLXN1YnJlc291cmNlcy1leHBl
Y3RlZC50eHRVVAUAA/xpI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACABaPQlB1fYdYpAIAAAb
HwAAVwAYAAAAAAABAAAApIHs0QIAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9j
YWNoZS9wb3N0LXdpdGgtY2FjaGVkLXN1YnJlc291cmNlcy1wcmV0dHktZGlmZi5odG1sVVQFAAP8
aSNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAWj0JQY2lfIqPAQAA6AIAAFEAGAAAAAAAAQAA
AKSBDdsCAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC13aXRo
LWNhY2hlZC1zdWJyZXNvdXJjZXMtd2RpZmYuaHRtbFVUBQAD/GkjUHV4CwABBOgDAAAE6AMAAFBL
AQIeAxQAAgAIAFo9CUG5x48m2x8AAKgrAABRABgAAAAAAAAAAACkgSfdAgB0bXAvbGF5b3V0LXRl
c3QtcmVzdWx0cy9odHRwL3Rlc3RzL2NhY2hlL3Bvc3Qtd2l0aC1jYWNoZWQtc3VicmVzb3VyY2Vz
LWFjdHVhbC5wbmdVVAUAA/xpI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACABaPQlBnEKPLYkI
AAAPHwAASwAYAAAAAAABAAAApIGN/QIAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0
cy9jYWNoZS9wb3N0LXJlZGlyZWN0LWdldC1wcmV0dHktZGlmZi5odG1sVVQFAAP8aSNQdXgLAAEE
6AMAAAToAwAAUEsBAh4DFAACAAgAWj0JQdsolAOhAQAALwMAAE8AGAAAAAAAAQAAAKSBmwYDAHRt
cC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC13aXRoLWNhY2hlZC1z
dWJyZXNvdXJjZXMtZGlmZi50eHRVVAUAA/xpI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACABa
PQlB/sGlHUABAABaAgAAUQAYAAAAAAABAAAApIHFCAMAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMv
aHR0cC90ZXN0cy9jYWNoZS9wb3N0LXdpdGgtY2FjaGVkLXN1YnJlc291cmNlcy1hY3R1YWwudHh0
VVQFAAP8aSNQdXgLAAEE6AMAAAToAwAAUEsBAh4DCgAAAAAAITMJQQAAAAAAAAAAAAAAACgAGAAA
AAAAAAAQAO1BkAoDAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvbWlzYy9VVAUA
A75XI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACAAhMwlBFTU1knoAAAC8AAAAQgAYAAAAAAAB
AAAApIHyCgMAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9taXNjL3hzbHQtYmFk
LWltcG9ydC1zdGRlcnIudHh0VVQFAAO+VyNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAEzMJ
Qc5rQCRuAAAAcgAAAEcAGAAAAAAAAQAAAKSB6AsDAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0
dHAvdGVzdHMvbWlzYy9kbnMtcHJlZmV0Y2gtY29udHJvbC1zdGRlcnIudHh0VVQFAAOmVyNQdXgL
AAEE6AMAAAToAwAAUEsBAh4DCgAAAAAAQTMJQQAAAAAAAAAAAAAAACwAGAAAAAAAAAAQAO1B1wwD
AHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvc2VjdXJpdHkvVVQFAAP6VyNQdXgL
AAEE6AMAAAToAwAAUEsBAh4DFAACAAgAOjMJQVZwUmliAAAAjgAAAFUAGAAAAAAAAQAAAKSBPQ0D
AHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC14
bWwtZXh0ZXJuYWwtZW50aXR5LXN0ZGVyci50eHRVVAUAA/BXI1B1eAsAAQToAwAABOgDAABQSwEC
HgMUAAIACAA6MwlBYEtmEJEAAAD7AQAAXQAYAAAAAAABAAAApIEuDgMAdG1wL2xheW91dC10ZXN0
LXJlc3VsdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXhzbC1kb2N1bWVudC1zZWN1
cml0eU9yaWdpbi1zdGRlcnIudHh0VVQFAAPwVyNQdXgLAAEE6AMAAAToAwAAUEsBAh4DCgAAAAAA
QTMJQQAAAAAAAAAAAAAAAEIAGAAAAAAAAAAQAO1BVg8DAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L1VUBQAD+lcjUHV4CwAB
BOgDAAAE6AMAAFBLAQIeAxQAAgAIAEEzCUFjqqxsggAAAKgAAABqABgAAAAAAAEAAACkgdIPAwB0
bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS94c2wtdW5hZmZlY3RlZC1ieS1zdHlsZS1zcmMtMi1zdGRlcnIudHh0VVQFAAP6VyNQ
dXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAQTMJQWOqrGyCAAAAqAAAAFgAGAAAAAAAAQAAAKSB
+BADAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L3hzbC1hbGxvd2VkLXN0ZGVyci50eHRVVAUAA/pXI1B1eAsAAQToAwAABOgD
AABQSwECHgMKAAAAAAALNAlBAAAAAAAAAAAAAAAAIAAYAAAAAAAAABAA7UEMEgMAdG1wL2xheW91
dC10ZXN0LXJlc3VsdHMvcmV0cmllcy9VVAUAA3VZI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIA
CAAUNAlBcJPmq9IAAACVAQAALgAYAAAAAAABAAAApIFmEgMAdG1wL2xheW91dC10ZXN0LXJlc3Vs
dHMvcmV0cmllcy90ZXN0c19ydW4wLnR4dFVUBQADiFkjUHV4CwABBOgDAAAE6AMAAFBLBQYAAAAA
cABwAKo8AACgEwMAAAA=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157413</attachid>
            <date>2012-08-09 01:06:39 -0700</date>
            <delta_ts>2012-08-09 11:34:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92769-20120809010612.patch</filename>
            <type>text/plain</type>
            <size>222935</size>
            <attacher name="Jan Keromnes">janx</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MDg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWU5ZjIyMDY0YzAxYjZj
YWFkNzgwOTNkYWNiNjc3YjMzZmEzMjUzNS4uNTc0Njc2NWU5NjFiNTUyZjkyY2RjMmJhYTc5MzBl
ODdhOWY5MDAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NCBAQAorMjAxMi0wOC0wOCAgSmFu
IEtlcm9tbmVzICA8amFueEBsaW51eC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVw
bGFjZSB0aGUgV2ViIEluc3BlY3RvciBlZGl0b3Igd2l0aCBDb2RlTWlycm9yCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mjc2OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludGVncmF0aW5nIENvZGVNaXJy
b3IgYXMgYSBkZXZ0b29scyBleHBlcmltZW50LiBDdXJyZW50bHkgc3VwcG9ydGluZworICAgICAg
ICBiYXNpYyBlZGl0aW5nLCBzZWFyY2gvcmVwbGFjaW5nLCBhbmQgc2F2aW5nLiBNaXNzaW5nIHBy
b3BlciBicmVha3BvaW50cworICAgICAgICB3aXJpbmcsIGRlYnVnZ2luZywgbWVzc2FnZSBidWJi
bGVzLCBwb3BvdmVycyBhbmQgY29udGV4dCBtZW51cy4gV0lQLgorCisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAg
ICAqIGluc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NvZGVNaXJyb3JUZXh0RWRpdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci50aGlzLl9jb2RlTWlycm9yLkNvZGVNaXJyb3Ip
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuc2V0IG1pbWVUeXBl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUu
c2V0UmVhZE9ubHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9y
LnByb3RvdHlwZS5yZWFkT25seSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRl
eHRFZGl0b3IucHJvdG90eXBlLmRlZmF1bHRGb2N1c2VkRWxlbWVudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLmZvY3VzKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUucmV2ZWFsTGluZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLmFk
ZERlY29yYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9y
LnByb3RvdHlwZS5yZW1vdmVEZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2Rl
TWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUubWFya0FuZFJldmVhbFJhbmdlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuaGlnaGxpZ2h0TGlu
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBl
LmNsZWFyTGluZUhpZ2hsaWdodCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRl
eHRFZGl0b3IucHJvdG90eXBlLmZyZWVDYWNoZWRFbGVtZW50cyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLmVsZW1lbnRzVG9SZXN0b3JlU2Ny
b2xsUG9zaXRpb25zRm9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVk
aXRvci5wcm90b3R5cGUuaW5oZXJpdFNjcm9sbFBvc2l0aW9ucyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLmJlZ2luVXBkYXRlcyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLmVuZFVwZGF0
ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlw
ZS5vblJlc2l6ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3Iu
cHJvdG90eXBlLmVkaXRSYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRl
eHRFZGl0b3IucHJvdG90eXBlLl9vbkNoYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29k
ZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLl9jb21taXRFZGl0aW5nKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuc2Nyb2xsVG9MaW5lKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuc2Vs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90
b3R5cGUubGFzdFNlbGVjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRl
eHRFZGl0b3IucHJvdG90eXBlLnNldFNlbGVjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLnNldFRleHQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZS50ZXh0KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUucmFuZ2UpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZS5saW5lKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuZ2V0IGxp
bmVzQ291bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnBy
b3RvdHlwZS5zZXRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JU
ZXh0RWRpdG9yLnByb3RvdHlwZS5nZXRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZS53YXNTaG93bik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLndp
bGxIaWRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90
b3R5cGUuX3RleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4
dEVkaXRvci5wcm90b3R5cGUuX3RvUG9zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWly
cm9yVGV4dEVkaXRvci5wcm90b3R5cGUuX3RvUmFuZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvU2V0dGluZ3MuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXhwZXJpbWVudHNT
ZXR0aW5ncyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZSk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvY21k
ZXZ0b29scy5jc3M6IEFkZGVkLgorICAgICAgICAoLkNvZGVNaXJyb3Itc2Nyb2xsKToKKyAgICAg
ICAgKC5Db2RlTWlycm9yKToKKyAgICAgICAgKC5jbS1zLXdlYi1pbnNwZWN0b3ItanMgc3Bhbi5j
bS1rZXl3b3JkKToKKyAgICAgICAgKC5jbS1zLXdlYi1pbnNwZWN0b3ItanMgc3Bhbi5jbS1udW1i
ZXIpOgorICAgICAgICAoLmNtLXMtd2ViLWluc3BlY3Rvci1qcyBzcGFuLmNtLWNvbW1lbnQpOgor
ICAgICAgICAoLmNtLXMtd2ViLWluc3BlY3Rvci1qcyBzcGFuLmNtLXN0cmluZyk6CisgICAgICAg
ICguY20tcy13ZWItaW5zcGVjdG9yLWpzIHNwYW4uY20tc3RyaW5nLTIpOgorICAgICAgICAoLmNt
LXMtd2ViLWluc3BlY3Rvci1jc3Mgc3Bhbi5jbS1rZXl3b3JkKToKKyAgICAgICAgKC5jbS1zLXdl
Yi1pbnNwZWN0b3ItY3NzIHNwYW4uY20tbnVtYmVyKToKKyAgICAgICAgKC5jbS1zLXdlYi1pbnNw
ZWN0b3ItY3NzIHNwYW4uY20tY29tbWVudCk6CisgICAgICAgICguY20tcy13ZWItaW5zcGVjdG9y
LWNzcyBzcGFuLmNtLXN0cmluZyk6CisgICAgICAgICguY20tcy13ZWItaW5zcGVjdG9yLWNzcyBz
cGFuLmNtLXN0cmluZy0yKToKKyAgICAgICAgKC5jbS1zLXdlYi1pbnNwZWN0b3ItY3NzIHNwYW4u
Y20tbGluayk6CisgICAgICAgICguY20tcy13ZWItaW5zcGVjdG9yLWNzcyBzcGFuLmNtLXZhcmlh
YmxlKToKKyAgICAgICAgKC5jbS1zLXdlYi1pbnNwZWN0b3ItaHRtbCBzcGFuLmNtLW1ldGEpOgor
ICAgICAgICAoLmNtLXMtd2ViLWluc3BlY3Rvci1odG1sIHNwYW4uY20tY29tbWVudCk6CisgICAg
ICAgICguY20tcy13ZWItaW5zcGVjdG9yLWh0bWwgc3Bhbi5jbS1zdHJpbmcpOgorICAgICAgICAo
LmNtLXMtd2ViLWluc3BlY3Rvci1odG1sIHNwYW4uY20tdGFnKToKKyAgICAgICAgKC5jbS1zLXdl
Yi1pbnNwZWN0b3ItaHRtbCBzcGFuLmNtLWF0dHJpYnV0ZSk6CisgICAgICAgICguY20tcy13ZWIt
aW5zcGVjdG9yLWh0bWwgc3Bhbi5jbS1saW5rKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL2NvZGVtaXJyb3IuY3NzOiBBZGRlZC4KKyAgICAgICAgKC5Db2RlTWlycm9yKToKKyAgICAg
ICAgKC5Db2RlTWlycm9yLXNjcm9sbCk6CisgICAgICAgICguQ29kZU1pcnJvci1zY3JvbGxiYXIp
OgorICAgICAgICAoLkNvZGVNaXJyb3Itc2Nyb2xsYmFyLWlubmVyKToKKyAgICAgICAgKC5Db2Rl
TWlycm9yLXNjcm9sbGJhci5jbS1zYi1vdmVybGFwKToKKyAgICAgICAgKC5Db2RlTWlycm9yLXNj
cm9sbGJhci5jbS1zYi1ub25vdmVybGFwKToKKyAgICAgICAgKC5Db2RlTWlycm9yLXNjcm9sbGJh
ci5jbS1zYi1pZTcpOgorICAgICAgICAoLkNvZGVNaXJyb3ItZ3V0dGVyKToKKyAgICAgICAgKC5D
b2RlTWlycm9yLWd1dHRlci10ZXh0KToKKyAgICAgICAgKC5Db2RlTWlycm9yLWxpbmVzKToKKyAg
ICAgICAgKC5Db2RlTWlycm9yIHByZSk6CisgICAgICAgICguQ29kZU1pcnJvci13cmFwIHByZSk6
CisgICAgICAgICguQ29kZU1pcnJvci13cmFwIC5Db2RlTWlycm9yLXNjcm9sbCk6CisgICAgICAg
ICguQ29kZU1pcnJvciB0ZXh0YXJlYSk6CisgICAgICAgICguQ29kZU1pcnJvciBwcmUuQ29kZU1p
cnJvci1jdXJzb3IpOgorICAgICAgICAoLmNtLWtleW1hcC1mYXQtY3Vyc29yIHByZS5Db2RlTWly
cm9yLWN1cnNvcik6CisgICAgICAgICguY20ta2V5bWFwLWZhdC1jdXJzb3IgcHJlLkNvZGVNaXJy
b3ItY3Vyc29yOm5vdCgjbm9uc2Vuc2VfaWQpKToKKyAgICAgICAgKC5Db2RlTWlycm9yIHByZS5D
b2RlTWlycm9yLWN1cnNvci5Db2RlTWlycm9yLW92ZXJ3cml0ZSk6CisgICAgICAgICguQ29kZU1p
cnJvci1mb2N1c2VkIHByZS5Db2RlTWlycm9yLWN1cnNvcik6CisgICAgICAgIChkaXYuQ29kZU1p
cnJvci1zZWxlY3RlZCk6CisgICAgICAgICguQ29kZU1pcnJvci1mb2N1c2VkIGRpdi5Db2RlTWly
cm9yLXNlbGVjdGVkKToKKyAgICAgICAgKC5Db2RlTWlycm9yLXNlYXJjaGluZyk6CisgICAgICAg
ICguY20tcy1kZWZhdWx0IHNwYW4uY20ta2V5d29yZCk6CisgICAgICAgICguY20tcy1kZWZhdWx0
IHNwYW4uY20tYXRvbSk6CisgICAgICAgICguY20tcy1kZWZhdWx0IHNwYW4uY20tbnVtYmVyKToK
KyAgICAgICAgKC5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1kZWYpOgorICAgICAgICAoLmNtLXMtZGVm
YXVsdCBzcGFuLmNtLXZhcmlhYmxlKToKKyAgICAgICAgKC5jbS1zLWRlZmF1bHQgc3Bhbi5jbS12
YXJpYWJsZS0yKToKKyAgICAgICAgKC5jbS1zLWRlZmF1bHQgc3Bhbi5jbS12YXJpYWJsZS0zKToK
KyAgICAgICAgKC5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1wcm9wZXJ0eSk6CisgICAgICAgICguY20t
cy1kZWZhdWx0IHNwYW4uY20tb3BlcmF0b3IpOgorICAgICAgICAoLmNtLXMtZGVmYXVsdCBzcGFu
LmNtLWNvbW1lbnQpOgorICAgICAgICAoLmNtLXMtZGVmYXVsdCBzcGFuLmNtLXN0cmluZyk6Cisg
ICAgICAgICguY20tcy1kZWZhdWx0IHNwYW4uY20tc3RyaW5nLTIpOgorICAgICAgICAoLmNtLXMt
ZGVmYXVsdCBzcGFuLmNtLW1ldGEpOgorICAgICAgICAoLmNtLXMtZGVmYXVsdCBzcGFuLmNtLWVy
cm9yKToKKyAgICAgICAgKC5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1xdWFsaWZpZXIpOgorICAgICAg
ICAoLmNtLXMtZGVmYXVsdCBzcGFuLmNtLWJ1aWx0aW4pOgorICAgICAgICAoLmNtLXMtZGVmYXVs
dCBzcGFuLmNtLWJyYWNrZXQpOgorICAgICAgICAoLmNtLXMtZGVmYXVsdCBzcGFuLmNtLXRhZyk6
CisgICAgICAgICguY20tcy1kZWZhdWx0IHNwYW4uY20tYXR0cmlidXRlKToKKyAgICAgICAgKC5j
bS1zLWRlZmF1bHQgc3Bhbi5jbS1oZWFkZXIpOgorICAgICAgICAoLmNtLXMtZGVmYXVsdCBzcGFu
LmNtLXF1b3RlKToKKyAgICAgICAgKC5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1ocik6CisgICAgICAg
ICguY20tcy1kZWZhdWx0IHNwYW4uY20tbGluayk6CisgICAgICAgIChzcGFuLmNtLWhlYWRlciwg
c3Bhbi5jbS1zdHJvbmcpOgorICAgICAgICAoc3Bhbi5jbS1lbSk6CisgICAgICAgIChzcGFuLmNt
LWVtc3Ryb25nKToKKyAgICAgICAgKHNwYW4uY20tbGluayk6CisgICAgICAgIChzcGFuLmNtLWlu
dmFsaWRjaGFyKToKKyAgICAgICAgKGRpdi5Db2RlTWlycm9yIHNwYW4uQ29kZU1pcnJvci1tYXRj
aGluZ2JyYWNrZXQpOgorICAgICAgICAoZGl2LkNvZGVNaXJyb3Igc3Bhbi5Db2RlTWlycm9yLW5v
bm1hdGNoaW5nYnJhY2tldCk6CisgICAgICAgIChAbWVkaWEgcHJpbnQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvY29kZW1pcnJvci5qczogQWRkZWQuCisgICAgICAgIChDb2RlTWly
cm9yLik6CisgICAgICAgIChDb2RlTWlycm9yKToKKyAgICAgICAgKC4pOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvY3NzLmpzOiBBZGRlZC4KKyAgICAgICAgKENvZGVNaXJyb3IuZGVm
aW5lTW9kZSk6CisgICAgICAgIChDb2RlTWlycm9yLmRlZmluZU1vZGUuKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL2h0bWxtaXhlZC5qczogQWRkZWQuCisgICAgICAgIChDb2RlTWly
cm9yLmRlZmluZU1vZGUpOgorICAgICAgICAoQ29kZU1pcnJvci5kZWZpbmVNb2RlLik6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL2phdmFzY3JpcHQuanM6IEFkZGVkLgorICAgICAgICAoQ29kZU1pcnJv
ci5kZWZpbmVNb2RlLik6CisgICAgICAgIChDb2RlTWlycm9yLmRlZmluZU1vZGUpOgorICAgICAg
ICAobWF5YmVvcGVyYXRvcik6CisgICAgICAgIChtYXliZWxhYmVsKToKKyAgICAgICAgKHByb3Bl
cnR5KToKKyAgICAgICAgKG9ianByb3ApOgorICAgICAgICAoY29tbWFzZXAucHJvY2VlZCk6Cisg
ICAgICAgIChjb21tYXNlcC5yZXR1cm4uY29tbWFTZXBhcmF0ZWQpOgorICAgICAgICAoY29tbWFz
ZXApOgorICAgICAgICAoYmxvY2spOgorICAgICAgICAodmFyZGVmMSk6CisgICAgICAgICh2YXJk
ZWYyKToKKyAgICAgICAgKGZvcnNwZWMxKToKKyAgICAgICAgKGZvcm1heWJlaW4pOgorICAgICAg
ICAoZm9yc3BlYzIpOgorICAgICAgICAoZm9yc3BlYzMpOgorICAgICAgICAoZnVuY3Rpb25kZWYp
OgorICAgICAgICAoZnVuYXJnKToKKyAgICAgICAgKHJldHVybi5zdGFydFN0YXRlKToKKyAgICAg
ICAgKHJldHVybi50b2tlbik6CisgICAgICAgIChyZXR1cm4pOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQveG1sLmpzOiBBZGRlZC4KKyAgICAgICAgKENvZGVNaXJyb3IuZGVmaW5lTW9k
ZS4pOgorICAgICAgICAoQ29kZU1pcnJvci5kZWZpbmVNb2RlKToKKwogMjAxMi0wOC0wNyAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
T25seSB1c2UgcHVibGljIFBsYXRmb3JtIEFQSSBpbiBOb25Db21wb3NpdGVkQ29udGVudEhvc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCBhNjJiYThiNjVhYTdiNjU3ZGY5MDcyZDY3YjYwOWNjMWQ0ZGUw
NWIwLi40ODViN2Q4ZGUzOWRiN2U0MTk0YTEwNDgzYmQxYzcyN2I0ZWIwODQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC02MjUzLDYgKzYyNTMsMTIgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJhclBhbmUuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanMnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ2hlY2tib3guanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9u
dC1lbmQvQ29kZU1pcnJvclRleHRFZGl0b3IuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvY29kZW1pcnJvci5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9jc3MuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvamF2YXNjcmlwdC5q
cycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC94bWwuanMnLAorICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvaHRtbG1peGVkLmpzJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL0NvbG9yLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9Db25zb2xlTWVzc2FnZS5qcycsCkBAIC02NDQxLDYgKzY0NDcsOCBAQAogICAgICAg
ICBdLAogICAgICAgICAnd2ViaW5zcGVjdG9yX3N0YW5kYWxvbmVfY3NzX2ZpbGVzJzogWwogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvYXVkaXRzUGFuZWwuY3NzJywKKyAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL2NvZGVtaXJyb3IuY3NzJywKKyAgICAgICAgICAgICdp
bnNwZWN0b3IvZnJvbnQtZW5kL2NtZGV2dG9vbHMuY3NzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL2RhdGFHcmlkLmNzcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9lbGVtZW50c1BhbmVsLmNzcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9maWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cuY3NzJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNmRlNDg5OWE4ZWNlYzlmZTc4MWMxMTc4
OTIxZWFhNGM0MDE5NTVkZC4uYzdkZDAxMDkzYjU3M2RiZjIwYjA3ZDE2Mzk0M2UyYTU5MzU2MTMx
MiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAg
LTc1NDE4LDYgKzc1NDE4LDIyIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXENvZGVNaXJyb3JUZXh0RWRp
dG9yLmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxjb2RlbWlycm9yLmpzIgorCQkJCQk+CisJCQkJPC9G
aWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVu
ZFxjb2RlbWlycm9yLmNzcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcY21kZXZ0b29scy5jc3MiCisJCQkJ
CT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0
b3JcZnJvbnQtZW5kXENvbG9yLmpzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5IGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CmluZGV4IGU2YjQ5OGVlYmFmZjlk
Y2EzNmNlOGM4Y2ZhMThiNDI0NjAwZGFjNTMuLjA5YjFkMzRlZjk4YzAxOGUxOTNhMDUyM2E4NDJm
N2Y4MWVhZmIyNmUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxl
LWZyb250LWVuZC5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9u
dC1lbmQucHkKQEAgLTExNiw2ICsxMTYsNyBAQCBtb2R1bGVzID0gWwogICAgICAgICAic291cmNl
cyI6IFsKICAgICAgICAgICAgICJBZHZhbmNlZFNlYXJjaENvbnRyb2xsZXIuanMiLAogICAgICAg
ICAgICAgIkNoZWNrYm94LmpzIiwKKyAgICAgICAgICAgICJDb2RlTWlycm9yVGV4dEVkaXRvci5q
cyIsCiAgICAgICAgICAgICAiQ29udGV4dE1lbnUuanMiLAogICAgICAgICAgICAgIkNvb2tpZXNU
YWJsZS5qcyIsCiAgICAgICAgICAgICAiRE9NU3ludGF4SGlnaGxpZ2h0ZXIuanMiLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db2RlTWlycm9yVGV4dEVk
aXRvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29kZU1pcnJvclRl
eHRFZGl0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY1Y2ExN2MxZTBmMjdiNjZhNmM4NDY5YTVhNWE4MDU3
MDI0OTY1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQ29kZU1pcnJvclRleHRFZGl0b3IuanMKQEAgLTAsMCArMSwzNTMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBj
b25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5WaWV3fQorICogQGltcGxlbWVu
dHMge1dlYkluc3BlY3Rvci5UZXh0RWRpdG9yfQorICogQHBhcmFtIHs/c3RyaW5nfSB1cmwKKyAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JEZWxlZ2F0ZX0gZGVsZWdhdGUKKyAqLwor
V2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yID0gZnVuY3Rpb24odXJsLCBkZWxlZ2F0
ZSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOworICAgIHRoaXMuX2RlbGVn
YXRlID0gZGVsZWdhdGU7CisgICAgdGhpcy5fdXJsID0gdXJsOworCisgICAgdGhpcy5yZWdpc3Rl
clJlcXVpcmVkQ1NTKCJjb2RlbWlycm9yLmNzcyIpOworICAgIHRoaXMucmVnaXN0ZXJSZXF1aXJl
ZENTUygiY21kZXZ0b29scy5jc3MiKTsKKworICAgIHRoaXMuX2NvZGVNaXJyb3IgPSBDb2RlTWly
cm9yKHRoaXMuZWxlbWVudCwgeworICAgICAgICBsaW5lTnVtYmVyczogdHJ1ZSwKKyAgICAgICAg
Zml4ZWRHdXR0ZXI6IHRydWUsCisgICAgICAgIG9uQ2hhbmdlOiB0aGlzLl9vbkNoYW5nZS5iaW5k
KHRoaXMpLAorICAgICAgICBleHRyYUtleXM6IHsgIkN0cmwtUyI6IHRoaXMuX2NvbW1pdEVkaXRp
bmcuYmluZCh0aGlzKSB9CisgICAgfSk7CisKKyAgICB0aGlzLl9sYXN0UmFuZ2UgPSB0aGlzLnJh
bmdlKCk7CisKKyAgICB0aGlzLmVsZW1lbnQuZmlyc3RDaGlsZC5hZGRTdHlsZUNsYXNzKCJzb3Vy
Y2UtY29kZSIpOworICAgIHRoaXMuZWxlbWVudC5maXJzdENoaWxkLmFkZFN0eWxlQ2xhc3MoImZp
bGwiKTsKK30KKworV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZSA9
IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWltZVR5cGUKKyAgICAgKi8KKyAg
ICBzZXQgbWltZVR5cGUobWltZVR5cGUpCisgICAgeworICAgICAgICB0aGlzLl9jb2RlTWlycm9y
LnNldE9wdGlvbigibW9kZSIsIG1pbWVUeXBlKTsKKyAgICAgICAgc3dpdGNoKG1pbWVUeXBlKSB7
CisgICAgICAgICAgICBjYXNlICJ0ZXh0L2h0bWwiOiB0aGlzLl9jb2RlTWlycm9yLnNldE9wdGlv
bigidGhlbWUiLCAid2ViLWluc3BlY3Rvci1odG1sIik7IGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSAidGV4dC9jc3MiOiB0aGlzLl9jb2RlTWlycm9yLnNldE9wdGlvbigidGhlbWUiLCAid2ViLWlu
c3BlY3Rvci1jc3MiKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJ0ZXh0L2phdmFzY3JpcHQi
OiB0aGlzLl9jb2RlTWlycm9yLnNldE9wdGlvbigidGhlbWUiLCAid2ViLWluc3BlY3Rvci1qcyIp
OyBicmVhazsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Jv
b2xlYW59IHJlYWRPbmx5CisgICAgICovCisgICAgc2V0UmVhZE9ubHk6IGZ1bmN0aW9uKHJlYWRP
bmx5KQorICAgIHsKKyAgICAgICAgdGhpcy5fY29kZU1pcnJvci5zZXRPcHRpb24oInJlYWRPbmx5
IiwgcmVhZE9ubHkpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtib29sZWFu
fQorICAgICAqLworICAgIHJlYWRPbmx5OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fY29kZU1pcnJvci5nZXRPcHRpb24oInJlYWRPbmx5Iik7CisgICAgfSwKKworICAg
IC8qKgorICAgICAqIEByZXR1cm4ge0VsZW1lbnR9CisgICAgICovCisgICAgZGVmYXVsdEZvY3Vz
ZWRFbGVtZW50OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50
LmZpcnN0Q2hpbGQ7CisgICAgfSwKKworICAgIGZvY3VzOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICB0aGlzLl9jb2RlTWlycm9yLmZvY3VzKCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCisgICAgICovCisgICAgcmV2ZWFsTGluZTogZnVu
Y3Rpb24obGluZU51bWJlcikKKyAgICB7CisgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iuc2V0Q3Vy
c29yKHsgbGluZTogbGluZU51bWJlciwgY2g6IDAgfSk7CisgICAgICAgIHZhciBjb29yZHMgPSB0
aGlzLl9jb2RlTWlycm9yLmN1cnNvckNvb3JkcygpOworICAgICAgICB0aGlzLl9jb2RlTWlycm9y
LnNjcm9sbFRvKGNvb3Jkcy54LCBjb29yZHMueSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCisgICAgICogQHBhcmFtIHtzdHJpbmd8RWxlbWVu
dH0gZGVjb3JhdGlvbgorICAgICAqLworICAgIGFkZERlY29yYXRpb246IGZ1bmN0aW9uKGxpbmVO
dW1iZXIsIGRlY29yYXRpb24pCisgICAgeworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gbGluZU51bWJlcgorICAgICAqIEBwYXJhbSB7c3RyaW5nfEVsZW1lbnR9IGRl
Y29yYXRpb24KKyAgICAgKi8KKyAgICByZW1vdmVEZWNvcmF0aW9uOiBmdW5jdGlvbihsaW5lTnVt
YmVyLCBkZWNvcmF0aW9uKQorICAgIHsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfSByYW5nZQorICAgICAqLworICAgIG1hcmtBbmRSZXZl
YWxSYW5nZTogZnVuY3Rpb24ocmFuZ2UpCisgICAgeworICAgICAgICBpZiAocmFuZ2UpCisgICAg
ICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihyYW5nZSk7CisgICAgfSwKKworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCisgICAgICovCisgICAgaGlnaGxpZ2h0TGlu
ZTogZnVuY3Rpb24obGluZU51bWJlcikKKyAgICB7CisgICAgICAgIHZhciBsaW5lID0gdGhpcy5f
Y29kZU1pcnJvci5nZXRMaW5lKGxpbmVOdW1iZXIpOworICAgICAgICB2YXIgbWFyayA9IHRoaXMu
X2NvZGVNaXJyb3IubWFya1RleHQoeyBsaW5lOiBsaW5lTnVtYmVyLCBjaDogMCB9LCB7IGxpbmU6
IGxpbmVOdW1iZXIsIGNoOiBsaW5lLmxlbmd0aCB9LCAiQ29kZU1pcnJvci1zZWFyY2hpbmciKTsK
KyAgICAgICAgZnVuY3Rpb24gY2xlYXJNYXJrKCkKKyAgICAgICAgeworICAgICAgICAgICAgbWFy
ay5jbGVhcigpOworICAgICAgICB9OworICAgICAgICBzZXRUaW1lb3V0KGNsZWFyTWFyaywgMTAw
MCk7CisgICAgfSwKKworICAgIGNsZWFyTGluZUhpZ2hsaWdodDogZnVuY3Rpb24oKQorICAgIHsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7QXJyYXkuPEVsZW1lbnQ+fQorICAg
ICAqLworICAgIGVsZW1lbnRzVG9SZXN0b3JlU2Nyb2xsUG9zaXRpb25zRm9yOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICByZXR1cm4gW107CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLlRleHRFZGl0b3J9IHRleHRFZGl0b3IKKyAgICAgKi8KKyAgICBp
bmhlcml0U2Nyb2xsUG9zaXRpb25zOiBmdW5jdGlvbih0ZXh0RWRpdG9yKQorICAgIHsKKyAgICB9
LAorCisgICAgb25SZXNpemU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2NvZGVN
aXJyb3IucmVmcmVzaCgpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5UZXh0UmFuZ2V9IHJhbmdlCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQKKyAg
ICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfQorICAgICAqLworICAgIGVkaXRS
YW5nZTogZnVuY3Rpb24ocmFuZ2UsIHRleHQpCisgICAgeworICAgICAgICB0aGlzLl9kZWxlZ2F0
ZS5iZWZvcmVUZXh0Q2hhbmdlZCgpOworCisgICAgICAgIHZhciBwb3MgPSB0aGlzLl90b1Bvcyhy
YW5nZSk7CisgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IucmVwbGFjZVJhbmdlKHRleHQsIHBvcy5z
dGFydCwgcG9zLmVuZCk7CisgICAgICAgIHZhciBuZXdSYW5nZSA9IHRoaXMuX3RvUmFuZ2UocG9z
LnN0YXJ0LCB0aGlzLl9jb2RlTWlycm9yLnBvc0Zyb21JbmRleCh0aGlzLl9jb2RlTWlycm9yLmlu
ZGV4RnJvbVBvcyhwb3Muc3RhcnQpICsgdGV4dC5sZW5ndGgpKTsKKworICAgICAgICB0aGlzLl9k
ZWxlZ2F0ZS5hZnRlclRleHRDaGFuZ2VkKHJhbmdlLCBuZXdSYW5nZSk7CisKKyAgICAgICAgcmV0
dXJuIG5ld1JhbmdlOworICAgIH0sCisKKyAgICBfb25DaGFuZ2U6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHRoaXMuX2RlbGVnYXRlLmJlZm9yZVRleHRDaGFuZ2VkKCk7CisgICAgICAgIHZh
ciBuZXdSYW5nZSA9IHRoaXMucmFuZ2UoKTsKKyAgICAgICAgdGhpcy5fZGVsZWdhdGUuYWZ0ZXJU
ZXh0Q2hhbmdlZCh0aGlzLl9sYXN0UmFuZ2UsIG5ld1JhbmdlKTsKKyAgICAgICAgdGhpcy5fbGFz
dFJhbmdlID0gbmV3UmFuZ2U7CisgICAgfSwKKworICAgIF9jb21taXRFZGl0aW5nOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICBpZiAodGhpcy5yZWFkT25seSgpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIHRoaXMuX2RlbGVnYXRlLmNvbW1pdEVkaXRpbmcoKTsKKyAg
ICAgICAgaWYgKHRoaXMuX3VybCAmJiBXZWJJbnNwZWN0b3IuZmlsZU1hbmFnZXIuaXNVUkxTYXZl
ZCh0aGlzLl91cmwpKQorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZpbGVNYW5hZ2VyLnNhdmUo
dGhpcy5fdXJsLCB0aGlzLnRleHQoKSwgZmFsc2UpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9LAorCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51bWJlcgorICAg
ICAqLworICAgIHNjcm9sbFRvTGluZTogZnVuY3Rpb24obGluZU51bWJlcikKKyAgICB7CisgICAg
ICAgIHRoaXMuX2NvZGVNaXJyb3Iuc2V0Q3Vyc29yKHtsaW5lOmxpbmVOdW1iZXIsIGNoOjB9KTsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlRleHRSYW5n
ZX0KKyAgICAgKi8KKyAgICBzZWxlY3Rpb246IGZ1bmN0aW9uKHRleHRSYW5nZSkKKyAgICB7Cisg
ICAgICAgIHZhciBzdGFydCA9IHRoaXMuX2NvZGVNaXJyb3IuY3Vyc29yQ29vcmRzKHRydWUpOwor
ICAgICAgICB2YXIgZW5kID0gdGhpcy5fY29kZU1pcnJvci5jdXJzb3JDb29yZHMoZmFsc2UpOwor
CisgICAgICAgIGlmIChzdGFydC5saW5lID4gZW5kLmxpbmUgfHwgKHN0YXJ0LmxpbmUgPT0gZW5k
LmxpbmUgJiYgc3RhcnQuY2ggPiBlbmQuY2gpKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Rv
UmFuZ2UoZW5kLCBzdGFydCk7CisKKyAgICAgICAgcmV0dXJuIHRoaXMuX3RvUmFuZ2Uoc3RhcnQs
IGVuZCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5U
ZXh0UmFuZ2U/fQorICAgICAqLworICAgIGxhc3RTZWxlY3Rpb246IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl9sYXN0U2VsZWN0aW9uOworICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9IHRleHRSYW5nZQorICAgICAq
LworICAgIHNldFNlbGVjdGlvbjogZnVuY3Rpb24odGV4dFJhbmdlKQorICAgIHsKKyAgICAgICAg
dGhpcy5fbGFzdFNlbGVjdGlvbiA9IHRleHRSYW5nZTsKKyAgICAgICAgdmFyIHBvcyA9IHRoaXMu
X3RvUG9zKHRleHRSYW5nZSk7CisgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iuc2V0U2VsZWN0aW9u
KHBvcy5zdGFydCwgcG9zLmVuZCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
c3RyaW5nfSB0ZXh0CisgICAgICovCisgICAgc2V0VGV4dDogZnVuY3Rpb24odGV4dCkKKyAgICB7
CisgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iuc2V0VmFsdWUodGV4dCk7CisgICAgfSwKKworICAg
IC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICB0ZXh0OiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY29kZU1pcnJvci5nZXRWYWx1ZSgpOwor
ICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdl
fQorICAgICAqLworICAgIHJhbmdlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgbGlu
ZUNvdW50ID0gdGhpcy5saW5lc0NvdW50OworICAgICAgICB2YXIgbGFzdExpbmUgPSB0aGlzLl9j
b2RlTWlycm9yLmdldExpbmUobGluZUNvdW50IC0gMSk7CisgICAgICAgIHJldHVybiB0aGlzLl90
b1JhbmdlKHsgbGluZTogMCwgY2g6IDAgfSwgeyBsaW5lOiBsaW5lQ291bnQgLSAxLCBjaDogbGFz
dExpbmUubGVuZ3RoIH0pOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gbGluZU51bWJlcgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBsaW5l
OiBmdW5jdGlvbihsaW5lTnVtYmVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVN
aXJyb3IuZ2V0TGluZShsaW5lTnVtYmVyKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJl
dHVybiB7bnVtYmVyfQorICAgICAqLworICAgIGdldCBsaW5lc0NvdW50KCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9jb2RlTWlycm9yLmxpbmVDb3VudCgpOworICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBu
YW1lCisgICAgICogQHBhcmFtIHtPYmplY3Q/fSB2YWx1ZQorICAgICAqLworICAgIHNldEF0dHJp
YnV0ZTogZnVuY3Rpb24obGluZSwgbmFtZSwgdmFsdWUpCisgICAgeworICAgICAgICB2YXIgaGFu
ZGxlID0gdGhpcy5fY29kZU1pcnJvci5nZXRMaW5lSGFuZGxlKGxpbmUpOworICAgICAgICBpZiAo
aGFuZGxlLmF0dHJpYnV0ZXMgPT09IHVuZGVmaW5lZCkgaGFuZGxlLmF0dHJpYnV0ZXMgPSB7fTsK
KyAgICAgICAgaGFuZGxlLmF0dHJpYnV0ZXNbbmFtZV0gPSB2YWx1ZTsKKyAgICB9LAorCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30g
bmFtZQorICAgICAqIEByZXR1cm4ge09iamVjdHxudWxsfSB2YWx1ZQorICAgICAqLworICAgIGdl
dEF0dHJpYnV0ZTogZnVuY3Rpb24obGluZSwgbmFtZSkKKyAgICB7CisgICAgICAgIHZhciBoYW5k
bGUgPSB0aGlzLl9jb2RlTWlycm9yLmdldExpbmVIYW5kbGUobGluZSk7CisgICAgICAgIHJldHVy
biBoYW5kbGUuYXR0cmlidXRlcyAmJiBoYW5kbGUuYXR0cmlidXRlc1tuYW1lXSAhPT0gdW5kZWZp
bmVkID8gaGFuZGxlLmF0dHJpYnV0ZXNbbmFtZV0gOiBudWxsOworICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1l
CisgICAgICovCisgICAgcmVtb3ZlQXR0cmlidXRlOiBmdW5jdGlvbihsaW5lLCBuYW1lKQorICAg
IHsKKyAgICAgICAgdmFyIGhhbmRsZSA9IHRoaXMuX2NvZGVNaXJyb3IuZ2V0TGluZUhhbmRsZShs
aW5lKTsKKyAgICAgICAgaWYgKGhhbmRsZS5hdHRyaWJ1dGVzKQorICAgICAgICAgICAgZGVsZXRl
IGhhbmRsZS5hdHRyaWJ1dGVzW25hbWVdOworICAgIH0sCisKKyAgICB3YXNTaG93bjogZnVuY3Rp
b24oKQorICAgIHsKKyAgICB9LAorCisgICAgd2lsbEhpZGU6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgfSwKKworICAgIF90b1BvczogZnVuY3Rpb24ocmFuZ2UpCisgICAgeworICAgICAgICByZXR1
cm4geworICAgICAgICAgICAgc3RhcnQ6IHtsaW5lOiByYW5nZS5zdGFydExpbmUsIGNoOiByYW5n
ZS5zdGFydENvbHVtbn0sCisgICAgICAgICAgICBlbmQ6IHtsaW5lOiByYW5nZS5lbmRMaW5lLCBj
aDogcmFuZ2UuZW5kQ29sdW1ufQorICAgICAgICB9CisgICAgfSwKKworICAgIF90b1JhbmdlOiBm
dW5jdGlvbihzdGFydCwgZW5kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0
b3IuVGV4dFJhbmdlKHN0YXJ0LmxpbmUsIHN0YXJ0LmNoLCBlbmQubGluZSwgZW5kLmNoKTsKKyAg
ICB9Cit9CisKK1dlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuX19w
cm90b19fID0gV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMKaW5kZXgg
MzIyNDFlNDM2NDEyYjI4MmExNzQ3YTExNThkMGY0ZmYyM2VmNzg0Yi4uMTk1YjE1NDQ1NDRjMTAw
YjZjNTVjZWU3OTQ5MjFlMTk3YTNjMTEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCkBAIC0xNDEsOCArMTQx
LDEwIEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAg
ICovCiAgICAgYWRkRGVjb3JhdGlvbjogZnVuY3Rpb24obGluZU51bWJlciwgZGVjb3JhdGlvbikK
ICAgICB7CisgICAgICAgIHRoaXMuX2JlZ2luVXBkYXRlcygpOwogICAgICAgICB0aGlzLl9tYWlu
UGFuZWwuYWRkRGVjb3JhdGlvbihsaW5lTnVtYmVyLCBkZWNvcmF0aW9uKTsKICAgICAgICAgdGhp
cy5fZ3V0dGVyUGFuZWwuYWRkRGVjb3JhdGlvbihsaW5lTnVtYmVyLCBkZWNvcmF0aW9uKTsKKyAg
ICAgICAgdGhpcy5fZW5kVXBkYXRlcygpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTE1MSw4ICsx
NTMsMTAgQEAgV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAg
ICAgKi8KICAgICByZW1vdmVEZWNvcmF0aW9uOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBkZWNvcmF0
aW9uKQogICAgIHsKKyAgICAgICAgdGhpcy5fYmVnaW5VcGRhdGVzKCk7CiAgICAgICAgIHRoaXMu
X21haW5QYW5lbC5yZW1vdmVEZWNvcmF0aW9uKGxpbmVOdW1iZXIsIGRlY29yYXRpb24pOwogICAg
ICAgICB0aGlzLl9ndXR0ZXJQYW5lbC5yZW1vdmVEZWNvcmF0aW9uKGxpbmVOdW1iZXIsIGRlY29y
YXRpb24pOworICAgICAgICB0aGlzLl9lbmRVcGRhdGVzKCk7CiAgICAgfSwKIAogICAgIC8qKgpA
QCAtMjA1LDE2ICsyMDksMTYgQEAgV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9yLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5fbWFpblBhbmVsLmVsZW1lbnQuX3Njcm9sbExlZnQgPSB0
ZXh0RWRpdG9yLl9tYWluUGFuZWwuZWxlbWVudC5zY3JvbGxMZWZ0OwogICAgIH0sCiAKLSAgICBi
ZWdpblVwZGF0ZXM6IGZ1bmN0aW9uKCkKKyAgICBfYmVnaW5VcGRhdGVzOiBmdW5jdGlvbigpCiAg
ICAgewotICAgICAgICB0aGlzLl9tYWluUGFuZWwuYmVnaW5VcGRhdGVzKCk7Ci0gICAgICAgIHRo
aXMuX2d1dHRlclBhbmVsLmJlZ2luVXBkYXRlcygpOworICAgICAgICB0aGlzLl9tYWluUGFuZWwu
X2JlZ2luVXBkYXRlcygpOworICAgICAgICB0aGlzLl9ndXR0ZXJQYW5lbC5fYmVnaW5VcGRhdGVz
KCk7CiAgICAgfSwKIAotICAgIGVuZFVwZGF0ZXM6IGZ1bmN0aW9uKCkKKyAgICBfZW5kVXBkYXRl
czogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fbWFpblBhbmVsLmVuZFVwZGF0ZXMo
KTsKLSAgICAgICAgdGhpcy5fZ3V0dGVyUGFuZWwuZW5kVXBkYXRlcygpOworICAgICAgICB0aGlz
Ll9tYWluUGFuZWwuX2VuZFVwZGF0ZXMoKTsKKyAgICAgICAgdGhpcy5fZ3V0dGVyUGFuZWwuX2Vu
ZFVwZGF0ZXMoKTsKICAgICAgICAgdGhpcy5fdXBkYXRlUGFuZWxPZmZzZXRzKCk7CiAgICAgfSwK
IApAQCAtNTE5LDYgKzUyMyw4IEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvci5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlbGVjdGlv
bmNoYW5nZSIsIHRoaXMuX2JvdW5kU2VsZWN0aW9uQ2hhbmdlTGlzdGVuZXIsIGZhbHNlKTsKICAg
ICAgICAgZGVsZXRlIHRoaXMuX2JvdW5kU2VsZWN0aW9uQ2hhbmdlTGlzdGVuZXI7CiAKKyAgICAg
ICAgdGhpcy5mcmVlQ2FjaGVkRWxlbWVudHMoKTsKKwogICAgICAgICBpZiAoIXRoaXMucmVhZE9u
bHkoKSkKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5tYXJrQmVpbmdFZGl0ZWQodGhpcy5lbGVt
ZW50LCBmYWxzZSk7CiAgICAgfQpAQCAtNjAwLDcgKzYwNiw3IEBAIFdlYkluc3BlY3Rvci5UZXh0
RWRpdG9yQ2h1bmtlZFBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9idWlsZENodW5rczogZnVu
Y3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5iZWdpbkRvbVVwZGF0ZXMoKTsKKyAgICAgICAg
dGhpcy5fYmVnaW5Eb21VcGRhdGVzKCk7CiAKICAgICAgICAgdGhpcy5fY29udGFpbmVyLnJlbW92
ZUNoaWxkcmVuKCk7CiAKQEAgLTYxMyw3ICs2MTksNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ckNodW5rZWRQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fcmVwYWludEFsbCgp
OwogCi0gICAgICAgIHRoaXMuZW5kRG9tVXBkYXRlcygpOworICAgICAgICB0aGlzLl9lbmREb21V
cGRhdGVzKCk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtNjQyLDcgKzY0OCw3IEBAIFdlYkluc3Bl
Y3Rvci5UZXh0RWRpdG9yQ2h1bmtlZFBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBf
c3BsaXRDaHVua09uQUxpbmU6IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNodW5rTnVtYmVyLCBjcmVh
dGVTdWZmaXhDaHVuaykKICAgICB7Ci0gICAgICAgIHRoaXMuYmVnaW5Eb21VcGRhdGVzKCk7Cisg
ICAgICAgIHRoaXMuX2JlZ2luRG9tVXBkYXRlcygpOwogCiAgICAgICAgIHZhciBvbGRDaHVuayA9
IHRoaXMuX3RleHRDaHVua3NbY2h1bmtOdW1iZXJdOwogICAgICAgICB2YXIgd2FzRXhwYW5kZWQg
PSBvbGRDaHVuay5leHBhbmRlZDsKQEAgLTY4NSw3ICs2OTEsNyBAQCBXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvckNodW5rZWRQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgc3VmZml4
Q2h1bmsuZXhwYW5kZWQgPSB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5lbmREb21V
cGRhdGVzKCk7CisgICAgICAgIHRoaXMuX2VuZERvbVVwZGF0ZXMoKTsKIAogICAgICAgICByZXR1
cm4gbGluZUNodW5rOwogICAgIH0sCkBAIC03MDQsMjQgKzcxMCwyNCBAQCBXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvckNodW5rZWRQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3JlcGFp
bnRBbGxUaW1lciA9IHNldFRpbWVvdXQodGhpcy5fcmVwYWludEFsbC5iaW5kKHRoaXMpLCA1MCk7
CiAgICAgfSwKIAotICAgIGJlZ2luVXBkYXRlczogZnVuY3Rpb24oKQorICAgIF9iZWdpblVwZGF0
ZXM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3BhaW50Q29hbGVzY2luZ0xldmVs
Kys7CiAgICAgfSwKIAotICAgIGVuZFVwZGF0ZXM6IGZ1bmN0aW9uKCkKKyAgICBfZW5kVXBkYXRl
czogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5fcGFpbnRDb2FsZXNjaW5nTGV2ZWwt
LTsKICAgICAgICAgaWYgKCF0aGlzLl9wYWludENvYWxlc2NpbmdMZXZlbCkKICAgICAgICAgICAg
IHRoaXMuX3JlcGFpbnRBbGwoKTsKICAgICB9LAogCi0gICAgYmVnaW5Eb21VcGRhdGVzOiBmdW5j
dGlvbigpCisgICAgX2JlZ2luRG9tVXBkYXRlczogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAg
dGhpcy5fZG9tVXBkYXRlQ29hbGVzY2luZ0xldmVsKys7CiAgICAgfSwKIAotICAgIGVuZERvbVVw
ZGF0ZXM6IGZ1bmN0aW9uKCkKKyAgICBfZW5kRG9tVXBkYXRlczogZnVuY3Rpb24oKQogICAgIHsK
ICAgICAgICAgdGhpcy5fZG9tVXBkYXRlQ29hbGVzY2luZ0xldmVsLS07CiAgICAgfSwKQEAgLTkw
Myw3ICs5MDksNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckd1dHRlclBhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgKi8KICAgICB0ZXh0Q2hhbmdlZDogZnVuY3Rpb24ob2xkUmFuZ2UsIG5ld1Jh
bmdlKQogICAgIHsKLSAgICAgICAgdGhpcy5iZWdpbkRvbVVwZGF0ZXMoKTsKKyAgICAgICAgdGhp
cy5fYmVnaW5Eb21VcGRhdGVzKCk7CiAKICAgICAgICAgdmFyIGxpbmVzRGlmZiA9IG5ld1Jhbmdl
LmxpbmVzQ291bnQgLSBvbGRSYW5nZS5saW5lc0NvdW50OwogICAgICAgICBpZiAobGluZXNEaWZm
KSB7CkBAIC05NjYsNyArOTcyLDcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JHdXR0ZXJQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICB0aGlz
LmVuZERvbVVwZGF0ZXMoKTsKKyAgICAgICAgdGhpcy5fZW5kRG9tVXBkYXRlcygpOwogICAgIH0s
CiAKICAgICAvKioKQEAgLTEwNTUsMTAgKzEwNjEsMTAgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JHdXR0ZXJDaHVuay5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgYWRkRGVjb3JhdGlvbjog
ZnVuY3Rpb24oZGVjb3JhdGlvbikKICAgICB7Ci0gICAgICAgIHRoaXMuX3RleHRFZGl0b3IuYmVn
aW5Eb21VcGRhdGVzKCk7CisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuX2JlZ2luRG9tVXBkYXRl
cygpOwogICAgICAgICBpZiAodHlwZW9mIGRlY29yYXRpb24gPT09ICJzdHJpbmciKQogICAgICAg
ICAgICAgdGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoZGVjb3JhdGlvbik7Ci0gICAgICAgIHRo
aXMuX3RleHRFZGl0b3IuZW5kRG9tVXBkYXRlcygpOworICAgICAgICB0aGlzLl90ZXh0RWRpdG9y
Ll9lbmREb21VcGRhdGVzKCk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTA2NiwxMCArMTA3Miwx
MCBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckd1dHRlckNodW5rLnByb3RvdHlwZSA9IHsKICAg
ICAgKi8KICAgICByZW1vdmVEZWNvcmF0aW9uOiBmdW5jdGlvbihkZWNvcmF0aW9uKQogICAgIHsK
LSAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5iZWdpbkRvbVVwZGF0ZXMoKTsKKyAgICAgICAgdGhp
cy5fdGV4dEVkaXRvci5fYmVnaW5Eb21VcGRhdGVzKCk7CiAgICAgICAgIGlmICh0eXBlb2YgZGVj
b3JhdGlvbiA9PT0gInN0cmluZyIpCiAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlU3R5
bGVDbGFzcyhkZWNvcmF0aW9uKTsKLSAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5lbmREb21VcGRh
dGVzKCk7CisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuX2VuZERvbVVwZGF0ZXMoKTsKICAgICB9
LAogCiAgICAgLyoqCkBAIC0xMDkzLDcgKzEwOTksNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ckd1dHRlckNodW5rLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRoaXMubGluZXNDb3VudCA9
PT0gMSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmJl
Z2luRG9tVXBkYXRlcygpOworICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLl9iZWdpbkRvbVVwZGF0
ZXMoKTsKIAogICAgICAgICBpZiAoZXhwYW5kZWQpIHsKICAgICAgICAgICAgIHRoaXMuX2V4cGFu
ZGVkTGluZVJvd3MgPSBbXTsKQEAgLTExMjIsNyArMTEyOCw3IEBAIFdlYkluc3BlY3Rvci5UZXh0
RWRpdG9yR3V0dGVyQ2h1bmsucHJvdG90eXBlID0gewogICAgICAgICAgICAgZGVsZXRlIHRoaXMu
X2V4cGFuZGVkTGluZVJvd3M7CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl90ZXh0RWRpdG9y
LmVuZERvbVVwZGF0ZXMoKTsKKyAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5fZW5kRG9tVXBkYXRl
cygpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTEyMjMsNyArMTIyOSw3IEBAIFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRoaXMuX3Jl
YWRPbmx5ID09PSByZWFkT25seSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlz
LmJlZ2luRG9tVXBkYXRlcygpOworICAgICAgICB0aGlzLl9iZWdpbkRvbVVwZGF0ZXMoKTsKICAg
ICAgICAgdGhpcy5fcmVhZE9ubHkgPSByZWFkT25seTsKICAgICAgICAgaWYgKHRoaXMuX3JlYWRP
bmx5KQogICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLnJlbW92ZVN0eWxlQ2xhc3MoInRleHQt
ZWRpdG9yLWVkaXRhYmxlIik7CkBAIC0xMjMyLDcgKzEyMzgsNyBAQCBXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAocmVxdWVzdEZv
Y3VzKQogICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGlvbk9uU3RhcnRFZGl0aW5n
KCk7CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy5lbmREb21VcGRhdGVzKCk7CisgICAgICAgIHRo
aXMuX2VuZERvbVVwZGF0ZXMoKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xMjg2LDcgKzEyOTIs
NyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICovCiAgICAgc2V0RWRpdGFibGVSYW5nZTogZnVuY3Rpb24oc3RhcnRMaW5lLCBlbmRMaW5lKQog
ICAgIHsKLSAgICAgICAgdGhpcy5iZWdpbkRvbVVwZGF0ZXMoKTsKKyAgICAgICAgdGhpcy5fYmVn
aW5Eb21VcGRhdGVzKCk7CiAKICAgICAgICAgdmFyIGZpcnN0Q2h1bmtOdW1iZXIgPSB0aGlzLl9j
aHVua051bWJlckZvckxpbmUoc3RhcnRMaW5lKTsKICAgICAgICAgdmFyIGZpcnN0Q2h1bmsgPSB0
aGlzLl90ZXh0Q2h1bmtzW2ZpcnN0Q2h1bmtOdW1iZXJdOwpAQCAtMTMxMiw3ICsxMzE4LDcgQEAg
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBm
b3IgKHZhciBjaHVua051bWJlciA9IGxhc3RDaHVua051bWJlcjsgY2h1bmtOdW1iZXIgPCB0aGlz
Ll90ZXh0Q2h1bmtzLmxlbmd0aDsgKytjaHVua051bWJlcikKICAgICAgICAgICAgIHRoaXMuX3Rl
eHRDaHVua3NbY2h1bmtOdW1iZXJdLnJlYWRPbmx5ID0gdHJ1ZTsKIAotICAgICAgICB0aGlzLmVu
ZERvbVVwZGF0ZXMoKTsKKyAgICAgICAgdGhpcy5fZW5kRG9tVXBkYXRlcygpOwogICAgIH0sCiAK
ICAgICBjbGVhckVkaXRhYmxlUmFuZ2U6IGZ1bmN0aW9uKCkKQEAgLTEzMzEsMTMgKzEzMzcsMTMg
QEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgZGVsZXRlIHRoaXMuX3JhbmdlVG9NYXJrOwogICAgICAgICAgICAgLy8gUmVtb3ZlIHRo
ZSBtYXJrZWQgcmVnaW9uIGltbWVkaWF0ZWx5LgogICAgICAgICAgICAgaWYgKCF0aGlzLl9kaXJ0
eUxpbmVzKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5iZWdpbkRvbVVwZGF0ZXMoKTsKKyAgICAg
ICAgICAgICAgICB0aGlzLl9iZWdpbkRvbVVwZGF0ZXMoKTsKICAgICAgICAgICAgICAgICB2YXIg
Y2h1bmsgPSB0aGlzLmNodW5rRm9yTGluZShtYXJrZWRMaW5lKTsKICAgICAgICAgICAgICAgICB2
YXIgd2FzRXhwYW5kZWQgPSBjaHVuay5leHBhbmRlZDsKICAgICAgICAgICAgICAgICBjaHVuay5l
eHBhbmRlZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGNodW5rLnVwZGF0ZUNvbGxhcHNlZExp
bmVSb3coKTsKICAgICAgICAgICAgICAgICBjaHVuay5leHBhbmRlZCA9IHdhc0V4cGFuZGVkOwot
ICAgICAgICAgICAgICAgIHRoaXMuZW5kRG9tVXBkYXRlcygpOworICAgICAgICAgICAgICAgIHRo
aXMuX2VuZERvbVVwZGF0ZXMoKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAg
IHRoaXMuX3BhaW50TGluZXMobWFya2VkTGluZSwgbWFya2VkTGluZSArIDEpOwogICAgICAgICB9
CkBAIC0xMzkxLDcgKzEzOTcsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLl9kaXJ0eUxpbmVzKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHRoaXMuYmVnaW5VcGRhdGVzKCk7CisgICAgICAgIHRo
aXMuX2JlZ2luVXBkYXRlcygpOwogCiAgICAgICAgIGZ1bmN0aW9uIGJlZm9yZSgpCiAgICAgICAg
IHsKQEAgLTE0MDUsNyArMTQxMSw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVs
LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgcmFuZ2UgPSByZWRvID8gdGhpcy5fdGV4dE1v
ZGVsLnJlZG8oYmVmb3JlLmJpbmQodGhpcyksIGFmdGVyLmJpbmQodGhpcykpIDogdGhpcy5fdGV4
dE1vZGVsLnVuZG8oYmVmb3JlLmJpbmQodGhpcyksIGFmdGVyLmJpbmQodGhpcykpOwogCi0gICAg
ICAgIHRoaXMuZW5kVXBkYXRlcygpOworICAgICAgICB0aGlzLl9lbmRVcGRhdGVzKCk7CiAKICAg
ICAgICAgLy8gUmVzdG9yZSBsb2NhdGlvbiBwb3N0LXJlcGFpbnQuCiAgICAgICAgIGlmIChyYW5n
ZSkKQEAgLTE0MjgsNyArMTQzNCw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVs
LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgcmFuZ2UgPSBzZWxlY3Rpb24ubm9ybWFsaXpl
KCk7CiAKLSAgICAgICAgdGhpcy5iZWdpblVwZGF0ZXMoKTsKKyAgICAgICAgdGhpcy5fYmVnaW5V
cGRhdGVzKCk7CiAgICAgICAgIHRoaXMuX2VudGVyVGV4dENoYW5nZU1vZGUoKTsKIAogICAgICAg
ICB2YXIgbmV3UmFuZ2U7CkBAIC0xNDQzLDcgKzE0NDksNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVk
aXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9l
eGl0VGV4dENoYW5nZU1vZGUocmFuZ2UsIG5ld1JhbmdlKTsKLSAgICAgICAgdGhpcy5lbmRVcGRh
dGVzKCk7CisgICAgICAgIHRoaXMuX2VuZFVwZGF0ZXMoKTsKICAgICAgICAgaWYgKHJhbmdlV2Fz
RW1wdHkpCiAgICAgICAgICAgICBuZXdSYW5nZS5zdGFydENvbHVtbiA9IG5ld1JhbmdlLmVuZENv
bHVtbjsKICAgICAgICAgdGhpcy5fcmVzdG9yZVNlbGVjdGlvbihuZXdSYW5nZSwgdHJ1ZSk7CkBA
IC0xNTQ4LDcgKzE1NTQsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGlmICghaW5kZW50KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgICAgIHRoaXMuYmVnaW5VcGRhdGVzKCk7CisgICAgICAgIHRoaXMuX2JlZ2luVXBk
YXRlcygpOwogICAgICAgICB0aGlzLl9lbnRlclRleHRDaGFuZ2VNb2RlKCk7CiAKICAgICAgICAg
dmFyIGxpbmVCcmVhayA9IHRoaXMuX3RleHRNb2RlbC5saW5lQnJlYWs7CkBAIC0xNTY2LDcgKzE1
NzIsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICBuZXdSYW5nZSA9IHRoaXMuX2VkaXRSYW5nZShyYW5nZSwgbGluZUJyZWFrICsg
aW5kZW50KTsKIAogICAgICAgICB0aGlzLl9leGl0VGV4dENoYW5nZU1vZGUocmFuZ2UsIG5ld1Jh
bmdlKTsKLSAgICAgICAgdGhpcy5lbmRVcGRhdGVzKCk7CisgICAgICAgIHRoaXMuX2VuZFVwZGF0
ZXMoKTsKICAgICAgICAgdGhpcy5fcmVzdG9yZVNlbGVjdGlvbihuZXdSYW5nZS5jb2xsYXBzZVRv
RW5kKCksIHRydWUpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTU4NSw5ICsxNTkxLDkg
QEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICByZXR1cm4gY2h1bms7CiAgICAgfSwKIAotICAgIGJlZ2luRG9tVXBkYXRlczogZnVuY3Rpb24o
KQorICAgIF9iZWdpbkRvbVVwZGF0ZXM6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIFdlYklu
c3BlY3Rvci5UZXh0RWRpdG9yQ2h1bmtlZFBhbmVsLnByb3RvdHlwZS5iZWdpbkRvbVVwZGF0ZXMu
Y2FsbCh0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwu
cHJvdG90eXBlLl9iZWdpbkRvbVVwZGF0ZXMuY2FsbCh0aGlzKTsKICAgICAgICAgaWYgKHRoaXMu
X2RvbVVwZGF0ZUNvYWxlc2NpbmdMZXZlbCA9PT0gMSkgewogICAgICAgICAgICAgdGhpcy5fY29u
dGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNoYXJhY3RlckRhdGFNb2RpZmllZCIsIHRo
aXMuX2hhbmRsZURPTVVwZGF0ZXNDYWxsYmFjaywgZmFsc2UpOwogICAgICAgICAgICAgdGhpcy5f
Y29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTU5vZGVJbnNlcnRlZCIsIHRoaXMuX2hh
bmRsZURPTVVwZGF0ZXNDYWxsYmFjaywgZmFsc2UpOwpAQCAtMTU5NSw5ICsxNjAxLDkgQEAgV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAg
ICAgfSwKIAotICAgIGVuZERvbVVwZGF0ZXM6IGZ1bmN0aW9uKCkKKyAgICBfZW5kRG9tVXBkYXRl
czogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVu
a2VkUGFuZWwucHJvdG90eXBlLmVuZERvbVVwZGF0ZXMuY2FsbCh0aGlzKTsKKyAgICAgICAgV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJvdG90eXBlLl9lbmREb21VcGRhdGVz
LmNhbGwodGhpcyk7CiAgICAgICAgIGlmICh0aGlzLl9kb21VcGRhdGVDb2FsZXNjaW5nTGV2ZWwg
PT09IDApIHsKICAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJE
T01DaGFyYWN0ZXJEYXRhTW9kaWZpZWQiLCB0aGlzLl9oYW5kbGVET01VcGRhdGVzQ2FsbGJhY2ss
IGZhbHNlKTsKICAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJE
T01Ob2RlSW5zZXJ0ZWQiLCB0aGlzLl9oYW5kbGVET01VcGRhdGVzQ2FsbGJhY2ssIGZhbHNlKTsK
QEAgLTE4MTQsNyArMTgyMCw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHRo
aXMuYmVnaW5Eb21VcGRhdGVzKCk7CisgICAgICAgIHRoaXMuX2JlZ2luRG9tVXBkYXRlcygpOwog
ICAgICAgICB0cnkgewogICAgICAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZFBhaW50TGluZXMg
fHwgdGhpcy5fcGFpbnRMaW5lc09wZXJhdGlvbnNDcmVkaXQgPCAwKSB7CiAgICAgICAgICAgICAg
ICAgdGhpcy5fc2NoZWR1bGVQYWludExpbmVzKGxpbmVOdW1iZXIsIGxpbmVOdW1iZXIgKyAxKTsK
QEAgLTE4NjMsNyArMTg2OSw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgIGlmICh0aGlzLl9y
YW5nZVRvTWFyayAmJiB0aGlzLl9yYW5nZVRvTWFyay5zdGFydExpbmUgPT09IGxpbmVOdW1iZXIp
CiAgICAgICAgICAgICAgICAgdGhpcy5fbWFya2VkUmFuZ2VFbGVtZW50ID0gV2ViSW5zcGVjdG9y
LmhpZ2hsaWdodFNlYXJjaFJlc3VsdChsaW5lUm93LCB0aGlzLl9yYW5nZVRvTWFyay5zdGFydENv
bHVtbiwgdGhpcy5fcmFuZ2VUb01hcmsuZW5kQ29sdW1uIC0gdGhpcy5fcmFuZ2VUb01hcmsuc3Rh
cnRDb2x1bW4pOwotICAgICAgICAgICAgdGhpcy5lbmREb21VcGRhdGVzKCk7CisgICAgICAgICAg
ICB0aGlzLl9lbmREb21VcGRhdGVzKCk7CiAgICAgICAgIH0KICAgICB9LAogCkBAIC0yMjkwLDEx
ICsyMjk2LDExIEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgKi8KICAgICB0ZXh0Q2hhbmdlZDogZnVuY3Rpb24ob2xkUmFuZ2UsIG5ld1Jhbmdl
KQogICAgIHsKLSAgICAgICAgdGhpcy5iZWdpbkRvbVVwZGF0ZXMoKTsKKyAgICAgICAgdGhpcy5f
YmVnaW5Eb21VcGRhdGVzKCk7CiAgICAgICAgIHRoaXMuX3JlbW92ZURlY29yYXRpb25zSW5SYW5n
ZShvbGRSYW5nZSk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUNodW5rc0ZvclJhbmdlcyhvbGRSYW5n
ZSwgbmV3UmFuZ2UpOwogICAgICAgICB0aGlzLl91cGRhdGVIaWdobGlnaHRzRm9yUmFuZ2UobmV3
UmFuZ2UpOwotICAgICAgICB0aGlzLmVuZERvbVVwZGF0ZXMoKTsKKyAgICAgICAgdGhpcy5fZW5k
RG9tVXBkYXRlcygpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTI1MTEsNyArMjUxNyw3IEBAIFdl
Ykluc3BlY3Rvci5UZXh0RWRpdG9yTWFpbkNodW5rID0gZnVuY3Rpb24oY2h1bmtlZFBhbmVsLCBz
dGFydExpbmUsIGVuZExpbmUpCiBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5DaHVuay5wcm90
b3R5cGUgPSB7CiAgICAgYWRkRGVjb3JhdGlvbjogZnVuY3Rpb24oZGVjb3JhdGlvbikKICAgICB7
Ci0gICAgICAgIHRoaXMuX2NodW5rZWRQYW5lbC5iZWdpbkRvbVVwZGF0ZXMoKTsKKyAgICAgICAg
dGhpcy5fY2h1bmtlZFBhbmVsLl9iZWdpbkRvbVVwZGF0ZXMoKTsKICAgICAgICAgaWYgKHR5cGVv
ZiBkZWNvcmF0aW9uID09PSAic3RyaW5nIikKICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRT
dHlsZUNsYXNzKGRlY29yYXRpb24pOwogICAgICAgICBlbHNlIHsKQEAgLTI1MjIsNyArMjUyOCw3
IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpbkNodW5rLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5kZWNvcmF0aW9uc0VsZW1lbnQuYXBw
ZW5kQ2hpbGQoZGVjb3JhdGlvbik7CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy5fY2h1bmtlZFBh
bmVsLmVuZERvbVVwZGF0ZXMoKTsKKyAgICAgICAgdGhpcy5fY2h1bmtlZFBhbmVsLl9lbmREb21V
cGRhdGVzKCk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMjUzMCwyMyArMjUzNiwyMyBAQCBXZWJJ
bnNwZWN0b3IuVGV4dEVkaXRvck1haW5DaHVuay5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAg
cmVtb3ZlRGVjb3JhdGlvbjogZnVuY3Rpb24oZGVjb3JhdGlvbikKICAgICB7Ci0gICAgICAgIHRo
aXMuX2NodW5rZWRQYW5lbC5iZWdpbkRvbVVwZGF0ZXMoKTsKKyAgICAgICAgdGhpcy5fY2h1bmtl
ZFBhbmVsLl9iZWdpbkRvbVVwZGF0ZXMoKTsKICAgICAgICAgaWYgKHR5cGVvZiBkZWNvcmF0aW9u
ID09PSAic3RyaW5nIikKICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVTdHlsZUNsYXNz
KGRlY29yYXRpb24pOwogICAgICAgICBlbHNlIGlmICh0aGlzLmVsZW1lbnQuZGVjb3JhdGlvbnNF
bGVtZW50KQogICAgICAgICAgICAgdGhpcy5lbGVtZW50LmRlY29yYXRpb25zRWxlbWVudC5yZW1v
dmVDaGlsZChkZWNvcmF0aW9uKTsKLSAgICAgICAgdGhpcy5fY2h1bmtlZFBhbmVsLmVuZERvbVVw
ZGF0ZXMoKTsKKyAgICAgICAgdGhpcy5fY2h1bmtlZFBhbmVsLl9lbmREb21VcGRhdGVzKCk7CiAg
ICAgfSwKIAogICAgIHJlbW92ZUFsbERlY29yYXRpb25zOiBmdW5jdGlvbigpCiAgICAgewotICAg
ICAgICB0aGlzLl9jaHVua2VkUGFuZWwuYmVnaW5Eb21VcGRhdGVzKCk7CisgICAgICAgIHRoaXMu
X2NodW5rZWRQYW5lbC5fYmVnaW5Eb21VcGRhdGVzKCk7CiAgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc05hbWUgPSAid2Via2l0LWxpbmUtY29udGVudCI7CiAgICAgICAgIGlmICh0aGlzLmVsZW1l
bnQuZGVjb3JhdGlvbnNFbGVtZW50KSB7CiAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3Zl
Q2hpbGQodGhpcy5lbGVtZW50LmRlY29yYXRpb25zRWxlbWVudCk7CiAgICAgICAgICAgICBkZWxl
dGUgdGhpcy5lbGVtZW50LmRlY29yYXRpb25zRWxlbWVudDsKICAgICAgICAgfQotICAgICAgICB0
aGlzLl9jaHVua2VkUGFuZWwuZW5kRG9tVXBkYXRlcygpOworICAgICAgICB0aGlzLl9jaHVua2Vk
UGFuZWwuX2VuZERvbVVwZGF0ZXMoKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0yNTk2LDcgKzI2
MDIsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5DaHVuay5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl9jaHVua2VkUGFu
ZWwuYmVnaW5Eb21VcGRhdGVzKCk7CisgICAgICAgIHRoaXMuX2NodW5rZWRQYW5lbC5fYmVnaW5E
b21VcGRhdGVzKCk7CiAKICAgICAgICAgaWYgKGV4cGFuZGVkKSB7CiAgICAgICAgICAgICB0aGlz
Ll9leHBhbmRlZExpbmVSb3dzID0gW107CkBAIC0yNjMwLDcgKzI2MzYsNyBAQCBXZWJJbnNwZWN0
b3IuVGV4dEVkaXRvck1haW5DaHVuay5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBkZWxldGUg
dGhpcy5fZXhwYW5kZWRMaW5lUm93czsKICAgICAgICAgfQogCi0gICAgICAgIHRoaXMuX2NodW5r
ZWRQYW5lbC5lbmREb21VcGRhdGVzKCk7CisgICAgICAgIHRoaXMuX2NodW5rZWRQYW5lbC5fZW5k
RG9tVXBkYXRlcygpOwogICAgIH0sCiAKICAgICBzZXQgcmVhZE9ubHkocmVhZE9ubHkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTb3Vy
Y2VGcmFtZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlw
dFNvdXJjZUZyYW1lLmpzCmluZGV4IDdjMGFlOGNkNDk1N2ZiNmEwZDUzNDE1MzczMzJjZDBhNjI5
NWNmOTEuLmE0YzJmYTk5ODExODFjMTAzYWY3NWIzMWJlYjcxNjZhODQ2NDU1ZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdFNvdXJjZUZy
YW1lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlw
dFNvdXJjZUZyYW1lLmpzCkBAIC0zMzUsNyArMzM1LDYgQEAgV2ViSW5zcGVjdG9yLkphdmFTY3Jp
cHRTb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH07CiAgICAgICAgIHRoaXMudGV4
dEVkaXRvci5zZXRBdHRyaWJ1dGUobGluZU51bWJlciwgImJyZWFrcG9pbnQiLCBicmVha3BvaW50
KTsKIAotICAgICAgICB0aGlzLnRleHRFZGl0b3IuYmVnaW5VcGRhdGVzKCk7CiAgICAgICAgIHRo
aXMudGV4dEVkaXRvci5hZGREZWNvcmF0aW9uKGxpbmVOdW1iZXIsICJ3ZWJraXQtYnJlYWtwb2lu
dCIpOwogICAgICAgICBpZiAoIWVuYWJsZWQgfHwgKG11dGVkV2hpbGVFZGl0aW5nICYmICF0aGlz
Ll9qYXZhU2NyaXB0U291cmNlLnN1cHBvcnRzRW5hYmxlZEJyZWFrcG9pbnRzV2hpbGVFZGl0aW5n
KCkpKQogICAgICAgICAgICAgdGhpcy50ZXh0RWRpdG9yLmFkZERlY29yYXRpb24obGluZU51bWJl
ciwgIndlYmtpdC1icmVha3BvaW50LWRpc2FibGVkIik7CkBAIC0zNDUsMTcgKzM0NCwxNCBAQCBX
ZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHRoaXMudGV4dEVkaXRvci5hZGREZWNvcmF0aW9uKGxpbmVOdW1iZXIsICJ3ZWJraXQtYnJl
YWtwb2ludC1jb25kaXRpb25hbCIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLnRl
eHRFZGl0b3IucmVtb3ZlRGVjb3JhdGlvbihsaW5lTnVtYmVyLCAid2Via2l0LWJyZWFrcG9pbnQt
Y29uZGl0aW9uYWwiKTsKLSAgICAgICAgdGhpcy50ZXh0RWRpdG9yLmVuZFVwZGF0ZXMoKTsKICAg
ICB9LAogCiAgICAgX3JlbW92ZUJyZWFrcG9pbnREZWNvcmF0aW9uOiBmdW5jdGlvbihsaW5lTnVt
YmVyKQogICAgIHsKICAgICAgICAgdGhpcy50ZXh0RWRpdG9yLnJlbW92ZUF0dHJpYnV0ZShsaW5l
TnVtYmVyLCAiYnJlYWtwb2ludCIpOwotICAgICAgICB0aGlzLnRleHRFZGl0b3IuYmVnaW5VcGRh
dGVzKCk7CiAgICAgICAgIHRoaXMudGV4dEVkaXRvci5yZW1vdmVEZWNvcmF0aW9uKGxpbmVOdW1i
ZXIsICJ3ZWJraXQtYnJlYWtwb2ludCIpOwogICAgICAgICB0aGlzLnRleHRFZGl0b3IucmVtb3Zl
RGVjb3JhdGlvbihsaW5lTnVtYmVyLCAid2Via2l0LWJyZWFrcG9pbnQtZGlzYWJsZWQiKTsKICAg
ICAgICAgdGhpcy50ZXh0RWRpdG9yLnJlbW92ZURlY29yYXRpb24obGluZU51bWJlciwgIndlYmtp
dC1icmVha3BvaW50LWNvbmRpdGlvbmFsIik7Ci0gICAgICAgIHRoaXMudGV4dEVkaXRvci5lbmRV
cGRhdGVzKCk7CiAgICAgfSwKIAogICAgIF9vbk1vdXNlRG93bjogZnVuY3Rpb24oZXZlbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwppbmRleCAx
ZWMyYzU0MmNhZWM2MTk1N2UwNzMyODljM2I5YWNhNzhlMWIzMjY2Li4xMjk5NTdhMDY3NTc2ODNj
YmY4NTZlNjQ2OWI0ZDVmNGU2MzU0OGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2V0dGluZ3MuanMKQEAgLTE5Myw2ICsxOTMsNyBAQCBXZWJJbnNwZWN0b3Iu
RXhwZXJpbWVudHNTZXR0aW5ncyA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLmdlb2xvY2F0aW9uT3Zl
cnJpZGUgPSB0aGlzLl9jcmVhdGVFeHBlcmltZW50KCJnZW9sb2NhdGlvbk92ZXJyaWRlIiwgIk92
ZXJyaWRlIERldmljZSBHZW9sb2NhdGlvbiIpOwogICAgIHRoaXMuZGV2aWNlT3JpZW50YXRpb25P
dmVycmlkZSA9IHRoaXMuX2NyZWF0ZUV4cGVyaW1lbnQoImRldmljZU9yaWVudGF0aW9uT3ZlcnJp
ZGUiLCAiT3ZlcnJpZGUgRGV2aWNlIE9yaWVudGF0aW9uIik7CiAgICAgdGhpcy5zYXNzID0gdGhp
cy5fY3JlYXRlRXhwZXJpbWVudCgic2FzcyIsICJTdXBwb3J0IGZvciBTQVNTIik7CisgICAgdGhp
cy5jb2RlbWlycm9yID0gdGhpcy5fY3JlYXRlRXhwZXJpbWVudCgiQ29kZU1pcnJvciIsICJVc2Ug
Q29kZU1pcnJvciBhcyBlZGl0b3IiKTsKIAogICAgIHRoaXMuX2NsZWFuVXBTZXR0aW5nKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZy
YW1lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5q
cwppbmRleCAyNzU4OWM3MGM4ZGRhYmUwYTFjMzcyMjdjNmIyNWE4ODg4NGE2MDQyLi42NzI5MmY0
YWRiNThmMTMyNzQ0Yzg2YzJlMDBhMjU4YmY2YWQxOGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMKQEAgLTQyLDcgKzQyLDExIEBA
IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZSA9IGZ1bmN0aW9uKGNvbnRlbnRQcm92aWRlcikKICAg
ICB0aGlzLl9jb250ZW50UHJvdmlkZXIgPSBjb250ZW50UHJvdmlkZXI7CiAKICAgICB2YXIgdGV4
dEVkaXRvckRlbGVnYXRlID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yRGVsZWdhdGVGb3JT
b3VyY2VGcmFtZSh0aGlzKTsKLSAgICB0aGlzLl90ZXh0RWRpdG9yID0gbmV3IFdlYkluc3BlY3Rv
ci5EZWZhdWx0VGV4dEVkaXRvcih0aGlzLl91cmwsIHRleHRFZGl0b3JEZWxlZ2F0ZSk7CisKKyAg
ICBpZiAoV2ViSW5zcGVjdG9yLmV4cGVyaW1lbnRzU2V0dGluZ3MuY29kZW1pcnJvci5pc0VuYWJs
ZWQoKSkKKyAgICAgICAgdGhpcy5fdGV4dEVkaXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29kZU1p
cnJvclRleHRFZGl0b3IodGhpcy5fdXJsLCB0ZXh0RWRpdG9yRGVsZWdhdGUpOworICAgIGVsc2UK
KyAgICAgICAgdGhpcy5fdGV4dEVkaXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuRGVmYXVsdFRleHRF
ZGl0b3IodGhpcy5fdXJsLCB0ZXh0RWRpdG9yRGVsZWdhdGUpOwogCiAgICAgdGhpcy5fY3VycmVu
dFNlYXJjaFJlc3VsdEluZGV4ID0gLTE7CiAgICAgdGhpcy5fc2VhcmNoUmVzdWx0cyA9IFtdOwpA
QCAtOTQsOCArOTgsNiBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlID0gewog
ICAgIHdpbGxIaWRlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuVmll
dy5wcm90b3R5cGUud2lsbEhpZGUuY2FsbCh0aGlzKTsKLSAgICAgICAgaWYgKHRoaXMubG9hZGVk
KQotICAgICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5mcmVlQ2FjaGVkRWxlbWVudHMoKTsKIAog
ICAgICAgICB0aGlzLl9jbGVhckxpbmVIaWdobGlnaHQoKTsKICAgICAgICAgdGhpcy5fY2xlYXJM
aW5lVG9SZXZlYWwoKTsKQEAgLTI5NCw4ICsyOTYsNiBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJh
bWUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9sb2FkZWQgPSB0cnVlOwogICAgICAgICB0
aGlzLl90ZXh0RWRpdG9yLnNldFRleHQoY29udGVudCB8fCAiIik7CiAKLSAgICAgICAgdGhpcy5f
dGV4dEVkaXRvci5iZWdpblVwZGF0ZXMoKTsKLQogICAgICAgICB0aGlzLl9zZXRUZXh0RWRpdG9y
RGVjb3JhdGlvbnMoKTsKIAogICAgICAgICB0aGlzLl93YXNTaG93bk9yTG9hZGVkKCk7CkBAIC0z
MDYsOCArMzA2LDYgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfQogCiAgICAgICAgIHRoaXMub25UZXh0RWRpdG9yQ29udGVudExvYWRlZCgpOwotCi0g
ICAgICAgIHRoaXMuX3RleHRFZGl0b3IuZW5kVXBkYXRlcygpOwogICAgIH0sCiAKICAgICBvblRl
eHRFZGl0b3JDb250ZW50TG9hZGVkOiBmdW5jdGlvbigpIHt9LApAQCAtMzE3LDEzICszMTUsOSBA
QCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9y
b3dNZXNzYWdlcyA9IHt9OwogICAgICAgICB0aGlzLl9tZXNzYWdlQnViYmxlcyA9IHt9OwogCi0g
ICAgICAgIHRoaXMuX3RleHRFZGl0b3IuYmVnaW5VcGRhdGVzKCk7Ci0KICAgICAgICAgdGhpcy5f
YWRkRXhpc3RpbmdNZXNzYWdlc1RvU291cmNlKCk7CiAKICAgICAgICAgdGhpcy5fdGV4dEVkaXRv
ci5kb1Jlc2l6ZSgpOwotCi0gICAgICAgIHRoaXMuX3RleHRFZGl0b3IuZW5kVXBkYXRlcygpOwog
ICAgIH0sCiAKICAgICAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvVGV4dEVkaXRvci5qcwppbmRleCBmNjhlOWI2YzVmNzg5NTQ5YmMyMzBkYjU4Yjk5ZWJlMDUz
YjU0YmE0Li40Y2Y5MTFjYjI2ZDNlZmQ4MWRiODRiNmIzNzMxYTYwOGZkZDljYjdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3IuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9yLmpzCkBAIC05
NywxMCArOTcsNiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAg
ICovCiAgICAgaW5oZXJpdFNjcm9sbFBvc2l0aW9uczogZnVuY3Rpb24odGV4dEVkaXRvcikgeyB9
LAogCi0gICAgYmVnaW5VcGRhdGVzOiBmdW5jdGlvbigpIHsgfSwKLQotICAgIGVuZFVwZGF0ZXM6
IGZ1bmN0aW9uKCkgeyB9LAotCiAgICAgb25SZXNpemU6IGZ1bmN0aW9uKCkgeyB9LAogCiAgICAg
LyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktp
dC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5k
ZXggMmQwYTIxNWEyNzJkMjk1NjcxM2MxM2MyMGFjMTQyYTQ3OTQzZTIwOS4uMWJmZjIxOGVjYmZk
YjI3NjRkZGUzZDk0MzYwMzhmNDBmMTNmZjlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtMTUsNiArMTUsNyBAQAogICAgIDxmaWxlPkJy
ZWFrcG9pbnRzU2lkZWJhclBhbmUuanM8L2ZpbGU+CiAgICAgPGZpbGU+Q2FsbFN0YWNrU2lkZWJh
clBhbmUuanM8L2ZpbGU+CiAgICAgPGZpbGU+Q2hlY2tib3guanM8L2ZpbGU+CisgICAgPGZpbGU+
Q29kZU1pcnJvclRleHRFZGl0b3IuanM8L2ZpbGU+CiAgICAgPGZpbGU+Q29sb3IuanM8L2ZpbGU+
CiAgICAgPGZpbGU+Q29tcGlsZXJTY3JpcHRNYXBwaW5nLmpzPC9maWxlPgogICAgIDxmaWxlPkNv
bnNvbGVNZXNzYWdlLmpzPC9maWxlPgpAQCAtMTk3LDcgKzE5OCw5IEBACiAgICAgPGZpbGU+V29y
a3NwYWNlLmpzPC9maWxlPgogICAgIDxmaWxlPlVnbGlmeUpTL3BhcnNlLWpzLmpzPC9maWxlPgog
ICAgIDxmaWxlPmF1ZGl0c1BhbmVsLmNzczwvZmlsZT4KKyAgICA8ZmlsZT5jb2RlbWlycm9yLmNz
czwvZmlsZT4KICAgICA8ZmlsZT5kYXRhR3JpZC5jc3M8L2ZpbGU+CisgICAgPGZpbGU+Y21kZXZ0
b29scy5jc3M8L2ZpbGU+CiAgICAgPGZpbGU+ZGlhbG9nLmNzczwvZmlsZT4KICAgICA8ZmlsZT5l
bGVtZW50c1BhbmVsLmNzczwvZmlsZT4KICAgICA8ZmlsZT5maWx0ZXJlZEl0ZW1TZWxlY3Rpb25E
aWFsb2cuY3NzPC9maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9jbWRldnRvb2xzLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvY21kZXZ0b29scy5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzYyNjhkZjMxM2U4ZGU1OGYwMzhjZTM3YmI1
NjVjMGU4MDk0NTNlNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvY21kZXZ0b29scy5jc3MKQEAgLTAsMCArMSwyNiBAQAorLkNvZGVNaXJyb3It
c2Nyb2xsIHsKKyAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7Cit9CisuQ29kZU1pcnJvciB7Cisg
IGxpbmUtaGVpZ2h0OiAxLjFlbTsKK30KKy5jbS1zLXdlYi1pbnNwZWN0b3ItanMgc3Bhbi5jbS1r
ZXl3b3JkIHtjb2xvcjogcmdiKDE3MCwgMTMsIDE0NSk7fQorLmNtLXMtd2ViLWluc3BlY3Rvci1q
cyBzcGFuLmNtLW51bWJlciB7Y29sb3I6IHJnYigyOCwgMCwgMjA3KTt9CisuY20tcy13ZWItaW5z
cGVjdG9yLWpzIHNwYW4uY20tY29tbWVudCB7Y29sb3I6IHJnYigwLCAxMTYsIDApO30KKy5jbS1z
LXdlYi1pbnNwZWN0b3ItanMgc3Bhbi5jbS1zdHJpbmcge2NvbG9yOiByZ2IoMTk2LCAyNiwgMjIp
O30KKy5jbS1zLXdlYi1pbnNwZWN0b3ItanMgc3Bhbi5jbS1zdHJpbmctMiB7Y29sb3I6IHJnYigx
OTYsIDI2LCAyMik7fQorCisuY20tcy13ZWItaW5zcGVjdG9yLWNzcyBzcGFuLmNtLWtleXdvcmQg
eyBjb2xvcjogcmdiKDcsIDE0NCwgMTU0KTt9CisuY20tcy13ZWItaW5zcGVjdG9yLWNzcyBzcGFu
LmNtLW51bWJlciB7Y29sb3I6IHJnYig1MCwgMCwgMjU1KTt9CisuY20tcy13ZWItaW5zcGVjdG9y
LWNzcyBzcGFuLmNtLWNvbW1lbnQge2NvbG9yOiByZ2IoMCwgMTE2LCAwKTt9CisuY20tcy13ZWIt
aW5zcGVjdG9yLWNzcyBzcGFuLmNtLXN0cmluZyB7Y29sb3I6IHJnYig3LCAxNDQsIDE1NCk7fQor
LmNtLXMtd2ViLWluc3BlY3Rvci1jc3Mgc3Bhbi5jbS1zdHJpbmctMiB7Y29sb3I6IHJnYig3LCAx
NDQsIDE1NCk7fQorLmNtLXMtd2ViLWluc3BlY3Rvci1jc3Mgc3Bhbi5jbS1saW5rIHtjb2xvcjog
cmdiKDcsIDE0NCwgMTU0KTt9CisuY20tcy13ZWItaW5zcGVjdG9yLWNzcyBzcGFuLmNtLXZhcmlh
YmxlIHtjb2xvcjogcmdiKDIwMCwgMCwgMCk7fQorCisuY20tcy13ZWItaW5zcGVjdG9yLWh0bWwg
c3Bhbi5jbS1tZXRhIHtjb2xvcjogcmdiKDE5MiwgMTkyLCAxOTIpO30KKy5jbS1zLXdlYi1pbnNw
ZWN0b3ItaHRtbCBzcGFuLmNtLWNvbW1lbnQge2NvbG9yOiByZ2IoMzUsIDExMCwgMzcpO30KKy5j
bS1zLXdlYi1pbnNwZWN0b3ItaHRtbCBzcGFuLmNtLXN0cmluZyB7Y29sb3I6IHJnYigyNiwgMjYs
IDE2Nik7fQorLmNtLXMtd2ViLWluc3BlY3Rvci1odG1sIHNwYW4uY20tdGFnIHtjb2xvcjogcmdi
KDEzNiwgMTgsIDEyOCk7fQorLmNtLXMtd2ViLWluc3BlY3Rvci1odG1sIHNwYW4uY20tYXR0cmli
dXRlIHtjb2xvcjogcmdiKDE1MywgNjksIDApO30KKy5jbS1zLXdlYi1pbnNwZWN0b3ItaHRtbCBz
cGFuLmNtLWxpbmsge2NvbG9yOiAjMDBlO30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvY29kZW1pcnJvci5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2NvZGVtaXJyb3IuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwZTkxYjJkNzMzYTExZmZk
YTFiMGUyZmYzYjUwYTRiMzBiNWJhYzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2NvZGVtaXJyb3IuY3NzCkBAIC0wLDAgKzEsMTczIEBACisu
Q29kZU1pcnJvciB7CisgIGxpbmUtaGVpZ2h0OiAxZW07CisgIGZvbnQtZmFtaWx5OiBtb25vc3Bh
Y2U7CisKKyAgLyogTmVjZXNzYXJ5IHNvIHRoZSBzY3JvbGxiYXIgY2FuIGJlIGFic29sdXRlbHkg
cG9zaXRpb25lZCB3aXRoaW4gdGhlIHdyYXBwZXIgb24gTGlvbi4gKi8KKyAgcG9zaXRpb246IHJl
bGF0aXZlOworICAvKiBUaGlzIHByZXZlbnRzIHVud2FudGVkIHNjcm9sbGJhcnMgZnJvbSBzaG93
aW5nIHVwIG9uIHRoZSBib2R5IGFuZCB3cmFwcGVyIGluIElFLiAqLworICBvdmVyZmxvdzogaGlk
ZGVuOworfQorCisuQ29kZU1pcnJvci1zY3JvbGwgeworICBvdmVyZmxvdzogYXV0bzsKKyAgaGVp
Z2h0OiAzMDBweDsKKyAgLyogVGhpcyBpcyBuZWVkZWQgdG8gcHJldmVudCBhbiBJRVs2N10gYnVn
IHdoZXJlIHRoZSBzY3JvbGxlZCBjb250ZW50CisgICAgIGlzIHZpc2libGUgb3V0c2lkZSBvZiB0
aGUgc2Nyb2xsaW5nIGJveC4gKi8KKyAgcG9zaXRpb246IHJlbGF0aXZlOworICBvdXRsaW5lOiBu
b25lOworfQorCisvKiBWZXJ0aWNhbCBzY3JvbGxiYXIgKi8KKy5Db2RlTWlycm9yLXNjcm9sbGJh
ciB7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgcmlnaHQ6IDA7IHRvcDogMDsKKyAgb3ZlcmZs
b3cteDogaGlkZGVuOworICBvdmVyZmxvdy15OiBzY3JvbGw7CisgIHotaW5kZXg6IDU7Cit9Cisu
Q29kZU1pcnJvci1zY3JvbGxiYXItaW5uZXIgeworICAvKiBUaGlzIG5lZWRzIHRvIGhhdmUgYSBu
b256ZXJvIHdpZHRoIGluIG9yZGVyIGZvciB0aGUgc2Nyb2xsYmFyIHRvIGFwcGVhcgorICAgICBp
biBGaXJlZm94IGFuZCBJRTkuICovCisgIHdpZHRoOiAxcHg7Cit9CisuQ29kZU1pcnJvci1zY3Jv
bGxiYXIuY20tc2Itb3ZlcmxhcCB7CisgIC8qIEVuc3VyZSB0aGF0IHRoZSBzY3JvbGxiYXIgYXBw
ZWFycyBpbiBMaW9uLCBhbmQgdGhhdCBpdCBvdmVybGFwcyB0aGUgY29udGVudAorICAgICByYXRo
ZXIgdGhhbiBzaXR0aW5nIHRvIHRoZSByaWdodCBvZiBpdC4gKi8KKyAgcG9zaXRpb246IGFic29s
dXRlOworICB6LWluZGV4OiAxOworICBmbG9hdDogbm9uZTsKKyAgcmlnaHQ6IDA7CisgIG1pbi13
aWR0aDogMTJweDsKK30KKy5Db2RlTWlycm9yLXNjcm9sbGJhci5jbS1zYi1ub25vdmVybGFwIHsK
KyAgbWluLXdpZHRoOiAxMnB4OworfQorLkNvZGVNaXJyb3Itc2Nyb2xsYmFyLmNtLXNiLWllNyB7
CisgIG1pbi13aWR0aDogMThweDsKK30KKworLkNvZGVNaXJyb3ItZ3V0dGVyIHsKKyAgcG9zaXRp
b246IGFic29sdXRlOyBsZWZ0OiAwOyB0b3A6IDA7CisgIHotaW5kZXg6IDEwOworICBiYWNrZ3Jv
dW5kLWNvbG9yOiAjZjdmN2Y3OworICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZWVlOworICBt
aW4td2lkdGg6IDJlbTsKKyAgaGVpZ2h0OiAxMDAlOworfQorLkNvZGVNaXJyb3ItZ3V0dGVyLXRl
eHQgeworICBjb2xvcjogI2FhYTsKKyAgdGV4dC1hbGlnbjogcmlnaHQ7CisgIHBhZGRpbmc6IC40
ZW0gLjJlbSAuNGVtIC40ZW07CisgIHdoaXRlLXNwYWNlOiBwcmUgIWltcG9ydGFudDsKKyAgY3Vy
c29yOiBkZWZhdWx0OworfQorLkNvZGVNaXJyb3ItbGluZXMgeworICBwYWRkaW5nOiAuNGVtOwor
ICB3aGl0ZS1zcGFjZTogcHJlOworICBjdXJzb3I6IHRleHQ7Cit9CisKKy5Db2RlTWlycm9yIHBy
ZSB7CisgIC1tb3otYm9yZGVyLXJhZGl1czogMDsKKyAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAw
OworICAtby1ib3JkZXItcmFkaXVzOiAwOworICBib3JkZXItcmFkaXVzOiAwOworICBib3JkZXIt
d2lkdGg6IDA7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7
CisgIGZvbnQtZmFtaWx5OiBpbmhlcml0OworICBmb250LXNpemU6IGluaGVyaXQ7CisgIHBhZGRp
bmc6IDA7IG1hcmdpbjogMDsKKyAgd2hpdGUtc3BhY2U6IHByZTsKKyAgd29yZC13cmFwOiBub3Jt
YWw7CisgIGxpbmUtaGVpZ2h0OiBpbmhlcml0OworICBjb2xvcjogaW5oZXJpdDsKK30KKworLkNv
ZGVNaXJyb3Itd3JhcCBwcmUgeworICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CisgIHdoaXRlLXNw
YWNlOiBwcmUtd3JhcDsKKyAgd29yZC1icmVhazogbm9ybWFsOworfQorLkNvZGVNaXJyb3Itd3Jh
cCAuQ29kZU1pcnJvci1zY3JvbGwgeworICBvdmVyZmxvdy14OiBoaWRkZW47Cit9CisKKy5Db2Rl
TWlycm9yIHRleHRhcmVhIHsKKyAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50OworfQorCisuQ29k
ZU1pcnJvciBwcmUuQ29kZU1pcnJvci1jdXJzb3IgeworICB6LWluZGV4OiAxMDsKKyAgcG9zaXRp
b246IGFic29sdXRlOworICB2aXNpYmlsaXR5OiBoaWRkZW47CisgIGJvcmRlci1sZWZ0OiAxcHgg
c29saWQgYmxhY2s7CisgIGJvcmRlci1yaWdodDogbm9uZTsKKyAgd2lkdGg6IDA7Cit9CisuY20t
a2V5bWFwLWZhdC1jdXJzb3IgcHJlLkNvZGVNaXJyb3ItY3Vyc29yIHsKKyAgd2lkdGg6IGF1dG87
CisgIGJvcmRlcjogMDsKKyAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CisgIGJhY2tncm91bmQ6
IHJnYmEoMCwgMjAwLCAwLCAuNCk7CisgIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0u
TWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9IzY2MDBjODAwLCBlbmRDb2xvcnN0cj0j
NGMwMGM4MDApOworfQorLyogS2x1ZGdlIHRvIHR1cm4gb2ZmIGZpbHRlciBpbiBpZTkrLCB3aGlj
aCBhbHNvIGFjY2VwdHMgcmdiYSAqLworLmNtLWtleW1hcC1mYXQtY3Vyc29yIHByZS5Db2RlTWly
cm9yLWN1cnNvcjpub3QoI25vbnNlbnNlX2lkKSB7CisgIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VU
cmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGVuYWJsZWQ9ZmFsc2UpOworfQorLkNvZGVNaXJy
b3IgcHJlLkNvZGVNaXJyb3ItY3Vyc29yLkNvZGVNaXJyb3Itb3ZlcndyaXRlIHt9CisuQ29kZU1p
cnJvci1mb2N1c2VkIHByZS5Db2RlTWlycm9yLWN1cnNvciB7CisgIHZpc2liaWxpdHk6IHZpc2li
bGU7Cit9CisKK2Rpdi5Db2RlTWlycm9yLXNlbGVjdGVkIHsgYmFja2dyb3VuZDogI2Q5ZDlkOTsg
fQorLkNvZGVNaXJyb3ItZm9jdXNlZCBkaXYuQ29kZU1pcnJvci1zZWxlY3RlZCB7IGJhY2tncm91
bmQ6ICNkN2Q0ZjA7IH0KKworLkNvZGVNaXJyb3Itc2VhcmNoaW5nIHsKKyAgYmFja2dyb3VuZDog
I2ZmYTsKKyAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMCwgLjQpOworfQorCisvKiBEZWZh
dWx0IHRoZW1lICovCisKKy5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1rZXl3b3JkIHtjb2xvcjogIzcw
ODt9CisuY20tcy1kZWZhdWx0IHNwYW4uY20tYXRvbSB7Y29sb3I6ICMyMTk7fQorLmNtLXMtZGVm
YXVsdCBzcGFuLmNtLW51bWJlciB7Y29sb3I6ICMxNjQ7fQorLmNtLXMtZGVmYXVsdCBzcGFuLmNt
LWRlZiB7Y29sb3I6ICMwMGY7fQorLmNtLXMtZGVmYXVsdCBzcGFuLmNtLXZhcmlhYmxlIHtjb2xv
cjogYmxhY2s7fQorLmNtLXMtZGVmYXVsdCBzcGFuLmNtLXZhcmlhYmxlLTIge2NvbG9yOiAjMDVh
O30KKy5jbS1zLWRlZmF1bHQgc3Bhbi5jbS12YXJpYWJsZS0zIHtjb2xvcjogIzA4NTt9CisuY20t
cy1kZWZhdWx0IHNwYW4uY20tcHJvcGVydHkge2NvbG9yOiBibGFjazt9CisuY20tcy1kZWZhdWx0
IHNwYW4uY20tb3BlcmF0b3Ige2NvbG9yOiBibGFjazt9CisuY20tcy1kZWZhdWx0IHNwYW4uY20t
Y29tbWVudCB7Y29sb3I6ICNhNTA7fQorLmNtLXMtZGVmYXVsdCBzcGFuLmNtLXN0cmluZyB7Y29s
b3I6ICNhMTE7fQorLmNtLXMtZGVmYXVsdCBzcGFuLmNtLXN0cmluZy0yIHtjb2xvcjogI2Y1MDt9
CisuY20tcy1kZWZhdWx0IHNwYW4uY20tbWV0YSB7Y29sb3I6ICM1NTU7fQorLmNtLXMtZGVmYXVs
dCBzcGFuLmNtLWVycm9yIHtjb2xvcjogI2YwMDt9CisuY20tcy1kZWZhdWx0IHNwYW4uY20tcXVh
bGlmaWVyIHtjb2xvcjogIzU1NTt9CisuY20tcy1kZWZhdWx0IHNwYW4uY20tYnVpbHRpbiB7Y29s
b3I6ICMzMGE7fQorLmNtLXMtZGVmYXVsdCBzcGFuLmNtLWJyYWNrZXQge2NvbG9yOiAjY2M3O30K
Ky5jbS1zLWRlZmF1bHQgc3Bhbi5jbS10YWcge2NvbG9yOiAjMTcwO30KKy5jbS1zLWRlZmF1bHQg
c3Bhbi5jbS1hdHRyaWJ1dGUge2NvbG9yOiAjMDBjO30KKy5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1o
ZWFkZXIge2NvbG9yOiBibHVlO30KKy5jbS1zLWRlZmF1bHQgc3Bhbi5jbS1xdW90ZSB7Y29sb3I6
ICMwOTA7fQorLmNtLXMtZGVmYXVsdCBzcGFuLmNtLWhyIHtjb2xvcjogIzk5OTt9CisuY20tcy1k
ZWZhdWx0IHNwYW4uY20tbGluayB7Y29sb3I6ICMwMGM7fQorCitzcGFuLmNtLWhlYWRlciwgc3Bh
bi5jbS1zdHJvbmcge2ZvbnQtd2VpZ2h0OiBib2xkO30KK3NwYW4uY20tZW0ge2ZvbnQtc3R5bGU6
IGl0YWxpYzt9CitzcGFuLmNtLWVtc3Ryb25nIHtmb250LXN0eWxlOiBpdGFsaWM7IGZvbnQtd2Vp
Z2h0OiBib2xkO30KK3NwYW4uY20tbGluayB7dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7fQor
CitzcGFuLmNtLWludmFsaWRjaGFyIHtjb2xvcjogI2YwMDt9CisKK2Rpdi5Db2RlTWlycm9yIHNw
YW4uQ29kZU1pcnJvci1tYXRjaGluZ2JyYWNrZXQge2NvbG9yOiAjMGYwO30KK2Rpdi5Db2RlTWly
cm9yIHNwYW4uQ29kZU1pcnJvci1ub25tYXRjaGluZ2JyYWNrZXQge2NvbG9yOiAjZjIyO30KKwor
QG1lZGlhIHByaW50IHsKKworICAvKiBIaWRlIHRoZSBjdXJzb3Igd2hlbiBwcmludGluZyAqLwor
ICAuQ29kZU1pcnJvciBwcmUuQ29kZU1pcnJvci1jdXJzb3IgeworICAgIHZpc2liaWxpdHk6IGhp
ZGRlbjsKKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9jb2RlbWlycm9yLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9jb2RlbWlycm9yLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZm
N2M0NTcyMjE3ZmRkMDI0OWQ1NTk1MmYwY2RhNTEyNjFlNzllYzkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2NvZGVtaXJyb3IuanMKQEAgLTAs
MCArMSwzMjIwIEBACisvLyBBbGwgZnVuY3Rpb25zIHRoYXQgbmVlZCBhY2Nlc3MgdG8gdGhlIGVk
aXRvcidzIHN0YXRlIGxpdmUgaW5zaWRlCisvLyB0aGUgQ29kZU1pcnJvciBmdW5jdGlvbi4gQmVs
b3cgdGhhdCwgYXQgdGhlIGJvdHRvbSBvZiB0aGUgZmlsZSwKKy8vIHNvbWUgdXRpbGl0aWVzIGFy
ZSBkZWZpbmVkLgorCisvLyBDb2RlTWlycm9yIGlzIHRoZSBvbmx5IGdsb2JhbCB2YXIgd2UgY2xh
aW0KK3ZhciBDb2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgeworICAidXNlIHN0cmljdCI7CisgIC8v
IFRoaXMgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgcHJvZHVjZXMgYW4gZWRpdG9yIGluc3RhbmNlLiBJ
dHMKKyAgLy8gY2xvc3VyZSBpcyB1c2VkIHRvIHN0b3JlIHRoZSBlZGl0b3Igc3RhdGUuCisgIGZ1
bmN0aW9uIENvZGVNaXJyb3IocGxhY2UsIGdpdmVuT3B0aW9ucykgeworICAgIC8vIERldGVybWlu
ZSBlZmZlY3RpdmUgb3B0aW9ucyBiYXNlZCBvbiBnaXZlbiB2YWx1ZXMgYW5kIGRlZmF1bHRzLgor
ICAgIHZhciBvcHRpb25zID0ge30sIGRlZmF1bHRzID0gQ29kZU1pcnJvci5kZWZhdWx0czsKKyAg
ICBmb3IgKHZhciBvcHQgaW4gZGVmYXVsdHMpCisgICAgICBpZiAoZGVmYXVsdHMuaGFzT3duUHJv
cGVydHkob3B0KSkKKyAgICAgICAgb3B0aW9uc1tvcHRdID0gKGdpdmVuT3B0aW9ucyAmJiBnaXZl
bk9wdGlvbnMuaGFzT3duUHJvcGVydHkob3B0KSA/IGdpdmVuT3B0aW9ucyA6IGRlZmF1bHRzKVtv
cHRdOworCisgICAgdmFyIGlucHV0ID0gZWx0KCJ0ZXh0YXJlYSIsIG51bGwsIG51bGwsICJwb3Np
dGlvbjogYWJzb2x1dGU7IHBhZGRpbmc6IDA7IHdpZHRoOiAxcHg7IGhlaWdodDogMWVtIik7Cisg
ICAgaW5wdXQuc2V0QXR0cmlidXRlKCJ3cmFwIiwgIm9mZiIpOyBpbnB1dC5zZXRBdHRyaWJ1dGUo
ImF1dG9jb3JyZWN0IiwgIm9mZiIpOyBpbnB1dC5zZXRBdHRyaWJ1dGUoImF1dG9jYXBpdGFsaXpl
IiwgIm9mZiIpOworICAgIC8vIFdyYXBzIGFuZCBoaWRlcyBpbnB1dCB0ZXh0YXJlYQorICAgIHZh
ciBpbnB1dERpdiA9IGVsdCgiZGl2IiwgW2lucHV0XSwgbnVsbCwgIm92ZXJmbG93OiBoaWRkZW47
IHBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDNweDsgaGVpZ2h0OiAwcHg7Iik7CisgICAgLy8g
VGhlIGVtcHR5IHNjcm9sbGJhciBjb250ZW50LCB1c2VkIHNvbGVseSBmb3IgbWFuYWdpbmcgdGhl
IHNjcm9sbGJhciB0aHVtYi4KKyAgICB2YXIgc2Nyb2xsYmFySW5uZXIgPSBlbHQoImRpdiIsIG51
bGwsICJDb2RlTWlycm9yLXNjcm9sbGJhci1pbm5lciIpOworICAgIC8vIFRoZSB2ZXJ0aWNhbCBz
Y3JvbGxiYXIuIEhvcml6b250YWwgc2Nyb2xsaW5nIGlzIGhhbmRsZWQgYnkgdGhlIHNjcm9sbGVy
IGl0c2VsZi4KKyAgICB2YXIgc2Nyb2xsYmFyID0gZWx0KCJkaXYiLCBbc2Nyb2xsYmFySW5uZXJd
LCAiQ29kZU1pcnJvci1zY3JvbGxiYXIiKTsKKyAgICAvLyBESVZzIGNvbnRhaW5pbmcgdGhlIHNl
bGVjdGlvbiBhbmQgdGhlIGFjdHVhbCBjb2RlCisgICAgdmFyIGxpbmVEaXYgPSBlbHQoImRpdiIp
LCBzZWxlY3Rpb25EaXYgPSBlbHQoImRpdiIsIG51bGwsIG51bGwsICJwb3NpdGlvbjogcmVsYXRp
dmU7IHotaW5kZXg6IC0xIik7CisgICAgLy8gQmxpbmt5IGN1cnNvciwgYW5kIGVsZW1lbnQgdXNl
ZCB0byBlbnN1cmUgY3Vyc29yIGZpdHMgYXQgdGhlIGVuZCBvZiBhIGxpbmUKKyAgICB2YXIgY3Vy
c29yID0gZWx0KCJwcmUiLCAiXHUwMGEwIiwgIkNvZGVNaXJyb3ItY3Vyc29yIiksIHdpZHRoRm9y
Y2VyID0gZWx0KCJwcmUiLCAiXHUwMGEwIiwgIkNvZGVNaXJyb3ItY3Vyc29yIiwgInZpc2liaWxp
dHk6IGhpZGRlbiIpOworICAgIC8vIFVzZWQgdG8gbWVhc3VyZSB0ZXh0IHNpemUKKyAgICB2YXIg
bWVhc3VyZSA9IGVsdCgiZGl2IiwgbnVsbCwgbnVsbCwgInBvc2l0aW9uOiBhYnNvbHV0ZTsgd2lk
dGg6IDEwMCU7IGhlaWdodDogMHB4OyBvdmVyZmxvdzogaGlkZGVuOyB2aXNpYmlsaXR5OiBoaWRk
ZW47Iik7CisgICAgdmFyIGxpbmVTcGFjZSA9IGVsdCgiZGl2IiwgW21lYXN1cmUsIGN1cnNvciwg
d2lkdGhGb3JjZXIsIHNlbGVjdGlvbkRpdiwgbGluZURpdl0sIG51bGwsICJwb3NpdGlvbjogcmVs
YXRpdmU7IHotaW5kZXg6IDAiKTsKKyAgICB2YXIgZ3V0dGVyVGV4dCA9IGVsdCgiZGl2IiwgbnVs
bCwgIkNvZGVNaXJyb3ItZ3V0dGVyLXRleHQiKSwgZ3V0dGVyID0gZWx0KCJkaXYiLCBbZ3V0dGVy
VGV4dF0sICJDb2RlTWlycm9yLWd1dHRlciIpOworICAgIC8vIE1vdmVkIGFyb3VuZCBpdHMgcGFy
ZW50IHRvIGNvdmVyIHZpc2libGUgdmlldworICAgIHZhciBtb3ZlciA9IGVsdCgiZGl2IiwgW2d1
dHRlciwgZWx0KCJkaXYiLCBbbGluZVNwYWNlXSwgIkNvZGVNaXJyb3ItbGluZXMiKV0sIG51bGws
ICJwb3NpdGlvbjogcmVsYXRpdmUiKTsKKyAgICAvLyBTZXQgdG8gdGhlIGhlaWdodCBvZiB0aGUg
dGV4dCwgY2F1c2VzIHNjcm9sbGluZworICAgIHZhciBzaXplciA9IGVsdCgiZGl2IiwgW21vdmVy
XSwgbnVsbCwgInBvc2l0aW9uOiByZWxhdGl2ZSIpOworICAgIC8vIFByb3ZpZGVzIHNjcm9sbGlu
ZworICAgIHZhciBzY3JvbGxlciA9IGVsdCgiZGl2IiwgW3NpemVyXSwgIkNvZGVNaXJyb3Itc2Ny
b2xsIik7CisgICAgc2Nyb2xsZXIuc2V0QXR0cmlidXRlKCJ0YWJJbmRleCIsICItMSIpOworICAg
IC8vIFRoZSBlbGVtZW50IGluIHdoaWNoIHRoZSBlZGl0b3IgbGl2ZXMuCisgICAgdmFyIHdyYXBw
ZXIgPSBlbHQoImRpdiIsIFtpbnB1dERpdiwgc2Nyb2xsYmFyLCBzY3JvbGxlcl0sICJDb2RlTWly
cm9yIiArIChvcHRpb25zLmxpbmVXcmFwcGluZyA/ICIgQ29kZU1pcnJvci13cmFwIiA6ICIiKSk7
CisgICAgaWYgKHBsYWNlLmFwcGVuZENoaWxkKSBwbGFjZS5hcHBlbmRDaGlsZCh3cmFwcGVyKTsg
ZWxzZSBwbGFjZSh3cmFwcGVyKTsKKworICAgIHRoZW1lQ2hhbmdlZCgpOyBrZXlNYXBDaGFuZ2Vk
KCk7CisgICAgLy8gTmVlZGVkIHRvIGhpZGUgYmlnIGJsdWUgYmxpbmtpbmcgY3Vyc29yIG9uIE1v
YmlsZSBTYWZhcmkKKyAgICBpZiAoaW9zKSBpbnB1dC5zdHlsZS53aWR0aCA9ICIwcHgiOworICAg
IGlmICghd2Via2l0KSBzY3JvbGxlci5kcmFnZ2FibGUgPSB0cnVlOworICAgIGxpbmVTcGFjZS5z
dHlsZS5vdXRsaW5lID0gIm5vbmUiOworICAgIGlmIChvcHRpb25zLnRhYmluZGV4ICE9IG51bGwp
IGlucHV0LnRhYkluZGV4ID0gb3B0aW9ucy50YWJpbmRleDsKKyAgICBpZiAob3B0aW9ucy5hdXRv
Zm9jdXMpIGZvY3VzSW5wdXQoKTsKKyAgICBpZiAoIW9wdGlvbnMuZ3V0dGVyICYmICFvcHRpb25z
LmxpbmVOdW1iZXJzKSBndXR0ZXIuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICAvLyBOZWVk
ZWQgdG8gaGFuZGxlIFRhYiBrZXkgaW4gS0hUTUwKKyAgICBpZiAoa2h0bWwpIGlucHV0RGl2LnN0
eWxlLmhlaWdodCA9ICIxcHgiLCBpbnB1dERpdi5zdHlsZS5wb3NpdGlvbiA9ICJhYnNvbHV0ZSI7
CisKKyAgICAvLyBDaGVjayBmb3IgT1MgWCA+PSAxMC43LiBJZiBzbywgd2UgbmVlZCB0byBmb3Jj
ZSBhIHdpZHRoIG9uIHRoZSBzY3JvbGxiYXIsIGFuZAorICAgIC8vIG1ha2UgaXQgb3ZlcmxhcCB0
aGUgY29udGVudC4gKEJ1dCB3ZSBvbmx5IGRvIHRoaXMgaWYgdGhlIHNjcm9sbGJhciBkb2Vzbid0
IGFscmVhZHkKKyAgICAvLyBoYXZlIGEgbmF0dXJhbCB3aWR0aC4gSWYgdGhlIG1vdXNlIGlzIHBs
dWdnZWQgaW4gb3IgdGhlIHVzZXIgc2V0cyB0aGUgc3lzdGVtIHByZWYKKyAgICAvLyB0byBhbHdh
eXMgc2hvdyBzY3JvbGxiYXJzLCB0aGUgc2Nyb2xsYmFyIHNob3VsZG4ndCBvdmVybGFwLikKKyAg
ICBpZiAobWFjX2dlTGlvbikgeworICAgICAgc2Nyb2xsYmFyLmNsYXNzTmFtZSArPSAob3Zlcmxh
cFNjcm9sbGJhcnMoKSA/ICIgY20tc2Itb3ZlcmxhcCIgOiAiIGNtLXNiLW5vbm92ZXJsYXAiKTsK
KyAgICB9IGVsc2UgaWYgKGllX2x0OCkgeworICAgICAgLy8gTmVlZCB0byBzZXQgYSBtaW5pbXVt
IHdpZHRoIHRvIHNlZSB0aGUgc2Nyb2xsYmFyIG9uIElFNyAoYnV0IG11c3Qgbm90IHNldCBpdCBv
biBJRTgpLgorICAgICAgc2Nyb2xsYmFyLmNsYXNzTmFtZSArPSAiIGNtLXNiLWllNyI7CisgICAg
fQorCisgICAgLy8gQ2hlY2sgZm9yIHByb2JsZW0gd2l0aCBJRSBpbm5lckhUTUwgbm90IHdvcmtp
bmcgd2hlbiB3ZSBoYXZlIGEKKyAgICAvLyBQIChvciBzaW1pbGFyKSBwYXJlbnQgbm9kZS4KKyAg
ICB0cnkgeyBjaGFyV2lkdGgoKTsgfQorICAgIGNhdGNoIChlKSB7CisgICAgICBpZiAoZS5tZXNz
YWdlLm1hdGNoKC9ydW50aW1lL2kpKQorICAgICAgICBlID0gbmV3IEVycm9yKCJBIENvZGVNaXJy
b3IgaW5zaWRlIGEgUC1zdHlsZSBlbGVtZW50IGRvZXMgbm90IHdvcmsgaW4gSW50ZXJuZXQgRXhw
bG9yZXIuIChpbm5lckhUTUwgYnVnKSIpOworICAgICAgdGhyb3cgZTsKKyAgICB9CisKKyAgICAv
LyBEZWxheWVkIG9iamVjdCB3cmFwIHRpbWVvdXRzLCBtYWtpbmcgc3VyZSBvbmx5IG9uZSBpcyBh
Y3RpdmUuIGJsaW5rZXIgaG9sZHMgYW4gaW50ZXJ2YWwuCisgICAgdmFyIHBvbGwgPSBuZXcgRGVs
YXllZCgpLCBoaWdobGlnaHQgPSBuZXcgRGVsYXllZCgpLCBibGlua2VyOworCisgICAgLy8gbW9k
ZSBob2xkcyBhIG1vZGUgQVBJIG9iamVjdC4gZG9jIGlzIHRoZSB0cmVlIG9mIExpbmUgb2JqZWN0
cywKKyAgICAvLyB3b3JrIGFuIGFycmF5IG9mIGxpbmVzIHRoYXQgc2hvdWxkIGJlIHBhcnNlZCwg
YW5kIGhpc3RvcnkgdGhlCisgICAgLy8gdW5kbyBoaXN0b3J5IChpbnN0YW5jZSBvZiBIaXN0b3J5
IGNvbnN0cnVjdG9yKS4KKyAgICB2YXIgbW9kZSwgZG9jID0gbmV3IEJyYW5jaENodW5rKFtuZXcg
TGVhZkNodW5rKFtuZXcgTGluZSgiIildKV0pLCB3b3JrLCBmb2N1c2VkOworICAgIGxvYWRNb2Rl
KCk7CisgICAgLy8gVGhlIHNlbGVjdGlvbi4gVGhlc2UgYXJlIGFsd2F5cyBtYWludGFpbmVkIHRv
IHBvaW50IGF0IHZhbGlkCisgICAgLy8gcG9zaXRpb25zLiBJbnZlcnRlZCBpcyB1c2VkIHRvIHJl
bWVtYmVyIHRoYXQgdGhlIHVzZXIgaXMKKyAgICAvLyBzZWxlY3RpbmcgYm90dG9tLXRvLXRvcC4K
KyAgICB2YXIgc2VsID0ge2Zyb206IHtsaW5lOiAwLCBjaDogMH0sIHRvOiB7bGluZTogMCwgY2g6
IDB9LCBpbnZlcnRlZDogZmFsc2V9OworICAgIC8vIFNlbGVjdGlvbi1yZWxhdGVkIGZsYWdzLiBz
aGlmdFNlbGVjdGluZyBvYnZpb3VzbHkgdHJhY2tzCisgICAgLy8gd2hldGhlciB0aGUgdXNlciBp
cyBob2xkaW5nIHNoaWZ0LgorICAgIHZhciBzaGlmdFNlbGVjdGluZywgbGFzdENsaWNrLCBsYXN0
RG91YmxlQ2xpY2ssIGxhc3RTY3JvbGxUb3AgPSAwLCBkcmFnZ2luZ1RleHQsCisgICAgICAgIG92
ZXJ3cml0ZSA9IGZhbHNlLCBzdXBwcmVzc0VkaXRzID0gZmFsc2U7CisgICAgLy8gVmFyaWFibGVz
IHVzZWQgYnkgc3RhcnRPcGVyYXRpb24vZW5kT3BlcmF0aW9uIHRvIHRyYWNrIHdoYXQKKyAgICAv
LyBoYXBwZW5lZCBkdXJpbmcgdGhlIG9wZXJhdGlvbi4KKyAgICB2YXIgdXBkYXRlSW5wdXQsIHVz
ZXJTZWxDaGFuZ2UsIGNoYW5nZXMsIHRleHRDaGFuZ2VkLCBzZWxlY3Rpb25DaGFuZ2VkLCBsZWF2
ZUlucHV0QWxvbmUsCisgICAgICAgIGd1dHRlckRpcnR5LCBjYWxsYmFja3M7CisgICAgLy8gQ3Vy
cmVudCB2aXNpYmxlIHJhbmdlIChtYXkgYmUgYmlnZ2VyIHRoYW4gdGhlIHZpZXcgd2luZG93KS4K
KyAgICB2YXIgZGlzcGxheU9mZnNldCA9IDAsIHNob3dpbmdGcm9tID0gMCwgc2hvd2luZ1RvID0g
MCwgbGFzdFNpemVDID0gMDsKKyAgICAvLyBicmFja2V0SGlnaGxpZ2h0ZWQgaXMgdXNlZCB0byBy
ZW1lbWJlciB0aGF0IGEgYnJhY2tldCBoYXMgYmVlbgorICAgIC8vIG1hcmtlZC4KKyAgICB2YXIg
YnJhY2tldEhpZ2hsaWdodGVkOworICAgIC8vIFRyYWNrcyB0aGUgbWF4aW11bSBsaW5lIGxlbmd0
aCBzbyB0aGF0IHRoZSBob3Jpem9udGFsIHNjcm9sbGJhcgorICAgIC8vIGNhbiBiZSBrZXB0IHN0
YXRpYyB3aGVuIHNjcm9sbGluZy4KKyAgICB2YXIgbWF4TGluZSA9IGdldExpbmUoMCksIHVwZGF0
ZU1heExpbmUgPSBmYWxzZSwgbWF4TGluZUNoYW5nZWQgPSB0cnVlOworICAgIHZhciB0YWJDYWNo
ZSA9IHt9OworICAgIHZhciBwb2xsaW5nRmFzdCA9IGZhbHNlOyAvLyBFbnN1cmVzIHNsb3dQb2xs
IGRvZXNuJ3QgY2FuY2VsIGZhc3RQb2xsCisgICAgdmFyIGdvYWxDb2x1bW4gPSBudWxsOworCisg
ICAgLy8gSW5pdGlhbGl6ZSB0aGUgY29udGVudC4KKyAgICBvcGVyYXRpb24oZnVuY3Rpb24oKXtz
ZXRWYWx1ZShvcHRpb25zLnZhbHVlIHx8ICIiKTsgdXBkYXRlSW5wdXQgPSBmYWxzZTt9KSgpOwor
ICAgIHZhciBoaXN0b3J5ID0gbmV3IEhpc3RvcnkoKTsKKworICAgIC8vIFJlZ2lzdGVyIG91ciBl
dmVudCBoYW5kbGVycy4KKyAgICBjb25uZWN0KHNjcm9sbGVyLCAibW91c2Vkb3duIiwgb3BlcmF0
aW9uKG9uTW91c2VEb3duKSk7CisgICAgY29ubmVjdChzY3JvbGxlciwgImRibGNsaWNrIiwgb3Bl
cmF0aW9uKG9uRG91YmxlQ2xpY2spKTsKKyAgICBjb25uZWN0KGxpbmVTcGFjZSwgInNlbGVjdHN0
YXJ0IiwgZV9wcmV2ZW50RGVmYXVsdCk7CisgICAgLy8gR2Vja28gYnJvd3NlcnMgZmlyZSBjb250
ZXh0bWVudSAqYWZ0ZXIqIG9wZW5pbmcgdGhlIG1lbnUsIGF0CisgICAgLy8gd2hpY2ggcG9pbnQg
d2UgY2FuJ3QgbWVzcyB3aXRoIGl0IGFueW1vcmUuIENvbnRleHQgbWVudSBpcworICAgIC8vIGhh
bmRsZWQgaW4gb25Nb3VzZURvd24gZm9yIEdlY2tvLgorICAgIGlmICghZ2Vja28pIGNvbm5lY3Qo
c2Nyb2xsZXIsICJjb250ZXh0bWVudSIsIG9uQ29udGV4dE1lbnUpOworICAgIGNvbm5lY3Qoc2Ny
b2xsZXIsICJzY3JvbGwiLCBvblNjcm9sbE1haW4pOworICAgIGNvbm5lY3Qoc2Nyb2xsYmFyLCAi
c2Nyb2xsIiwgb25TY3JvbGxCYXIpOworICAgIGNvbm5lY3Qoc2Nyb2xsYmFyLCAibW91c2Vkb3du
IiwgZnVuY3Rpb24oKSB7aWYgKGZvY3VzZWQpIHNldFRpbWVvdXQoZm9jdXNJbnB1dCwgMCk7fSk7
CisgICAgY29ubmVjdCh3aW5kb3csICJyZXNpemUiLCBmdW5jdGlvbigpIHt1cGRhdGVEaXNwbGF5
KHRydWUpO30pOworICAgIGNvbm5lY3QoaW5wdXQsICJrZXl1cCIsIG9wZXJhdGlvbihvbktleVVw
KSk7CisgICAgY29ubmVjdChpbnB1dCwgImlucHV0IiwgZmFzdFBvbGwpOworICAgIGNvbm5lY3Qo
aW5wdXQsICJrZXlkb3duIiwgb3BlcmF0aW9uKG9uS2V5RG93bikpOworICAgIGNvbm5lY3QoaW5w
dXQsICJrZXlwcmVzcyIsIG9wZXJhdGlvbihvbktleVByZXNzKSk7CisgICAgY29ubmVjdChpbnB1
dCwgImZvY3VzIiwgb25Gb2N1cyk7CisgICAgY29ubmVjdChpbnB1dCwgImJsdXIiLCBvbkJsdXIp
OworCisgICAgZnVuY3Rpb24gZHJhZ18oZSkgeworICAgICAgaWYgKG9wdGlvbnMub25EcmFnRXZl
bnQgJiYgb3B0aW9ucy5vbkRyYWdFdmVudChpbnN0YW5jZSwgYWRkU3RvcChlKSkpIHJldHVybjsK
KyAgICAgIGVfc3RvcChlKTsKKyAgICB9CisgICAgaWYgKG9wdGlvbnMuZHJhZ0Ryb3ApIHsKKyAg
ICAgIGNvbm5lY3Qoc2Nyb2xsZXIsICJkcmFnc3RhcnQiLCBvbkRyYWdTdGFydCk7CisgICAgICBj
b25uZWN0KHNjcm9sbGVyLCAiZHJhZ2VudGVyIiwgZHJhZ18pOworICAgICAgY29ubmVjdChzY3Jv
bGxlciwgImRyYWdvdmVyIiwgZHJhZ18pOworICAgICAgY29ubmVjdChzY3JvbGxlciwgImRyb3Ai
LCBvcGVyYXRpb24ob25Ecm9wKSk7CisgICAgfQorICAgIGNvbm5lY3Qoc2Nyb2xsZXIsICJwYXN0
ZSIsIGZ1bmN0aW9uKCl7Zm9jdXNJbnB1dCgpOyBmYXN0UG9sbCgpO30pOworICAgIGNvbm5lY3Qo
aW5wdXQsICJwYXN0ZSIsIGZhc3RQb2xsKTsKKyAgICBjb25uZWN0KGlucHV0LCAiY3V0Iiwgb3Bl
cmF0aW9uKGZ1bmN0aW9uKCl7CisgICAgICBpZiAoIW9wdGlvbnMucmVhZE9ubHkpIHJlcGxhY2VT
ZWxlY3Rpb24oIiIpOworICAgIH0pKTsKKworICAgIC8vIE5lZWRlZCB0byBoYW5kbGUgVGFiIGtl
eSBpbiBLSFRNTAorICAgIGlmIChraHRtbCkgY29ubmVjdChzaXplciwgIm1vdXNldXAiLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gaW5wdXQpIGlu
cHV0LmJsdXIoKTsKKyAgICAgICAgZm9jdXNJbnB1dCgpOworICAgIH0pOworCisgICAgLy8gSUUg
dGhyb3dzIHVuc3BlY2lmaWVkIGVycm9yIGluIGNlcnRhaW4gY2FzZXMsIHdoZW4KKyAgICAvLyB0
cnlpbmcgdG8gYWNjZXNzIGFjdGl2ZUVsZW1lbnQgYmVmb3JlIG9ubG9hZAorICAgIHZhciBoYXNG
b2N1czsgdHJ5IHsgaGFzRm9jdXMgPSAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBpbnB1dCk7
IH0gY2F0Y2goZSkgeyB9CisgICAgaWYgKGhhc0ZvY3VzIHx8IG9wdGlvbnMuYXV0b2ZvY3VzKSBz
ZXRUaW1lb3V0KG9uRm9jdXMsIDIwKTsKKyAgICBlbHNlIG9uQmx1cigpOworCisgICAgZnVuY3Rp
b24gaXNMaW5lKGwpIHtyZXR1cm4gbCA+PSAwICYmIGwgPCBkb2Muc2l6ZTt9CisgICAgLy8gVGhl
IGluc3RhbmNlIG9iamVjdCB0aGF0IHdlJ2xsIHJldHVybi4gTW9zdGx5IGNhbGxzIG91dCB0bwor
ICAgIC8vIGxvY2FsIGZ1bmN0aW9ucyBpbiB0aGUgQ29kZU1pcnJvciBmdW5jdGlvbi4gU29tZSBk
byBzb21lIGV4dHJhCisgICAgLy8gcmFuZ2UgY2hlY2tpbmcgYW5kL29yIGNsaXBwaW5nLiBvcGVy
YXRpb24gaXMgdXNlZCB0byB3cmFwIHRoZQorICAgIC8vIGNhbGwgc28gdGhhdCBjaGFuZ2VzIGl0
IG1ha2VzIGFyZSB0cmFja2VkLCBhbmQgdGhlIGRpc3BsYXkgaXMKKyAgICAvLyB1cGRhdGVkIGFm
dGVyd2FyZHMuCisgICAgdmFyIGluc3RhbmNlID0gd3JhcHBlci5Db2RlTWlycm9yID0geworICAg
ICAgZ2V0VmFsdWU6IGdldFZhbHVlLAorICAgICAgc2V0VmFsdWU6IG9wZXJhdGlvbihzZXRWYWx1
ZSksCisgICAgICBnZXRTZWxlY3Rpb246IGdldFNlbGVjdGlvbiwKKyAgICAgIHJlcGxhY2VTZWxl
Y3Rpb246IG9wZXJhdGlvbihyZXBsYWNlU2VsZWN0aW9uKSwKKyAgICAgIGZvY3VzOiBmdW5jdGlv
bigpe3dpbmRvdy5mb2N1cygpOyBmb2N1c0lucHV0KCk7IG9uRm9jdXMoKTsgZmFzdFBvbGwoKTt9
LAorICAgICAgc2V0T3B0aW9uOiBmdW5jdGlvbihvcHRpb24sIHZhbHVlKSB7CisgICAgICAgIHZh
ciBvbGRWYWwgPSBvcHRpb25zW29wdGlvbl07CisgICAgICAgIG9wdGlvbnNbb3B0aW9uXSA9IHZh
bHVlOworICAgICAgICBpZiAob3B0aW9uID09ICJtb2RlIiB8fCBvcHRpb24gPT0gImluZGVudFVu
aXQiKSBsb2FkTW9kZSgpOworICAgICAgICBlbHNlIGlmIChvcHRpb24gPT0gInJlYWRPbmx5IiAm
JiB2YWx1ZSA9PSAibm9jdXJzb3IiKSB7b25CbHVyKCk7IGlucHV0LmJsdXIoKTt9CisgICAgICAg
IGVsc2UgaWYgKG9wdGlvbiA9PSAicmVhZE9ubHkiICYmICF2YWx1ZSkge3Jlc2V0SW5wdXQodHJ1
ZSk7fQorICAgICAgICBlbHNlIGlmIChvcHRpb24gPT0gInRoZW1lIikgdGhlbWVDaGFuZ2VkKCk7
CisgICAgICAgIGVsc2UgaWYgKG9wdGlvbiA9PSAibGluZVdyYXBwaW5nIiAmJiBvbGRWYWwgIT0g
dmFsdWUpIG9wZXJhdGlvbih3cmFwcGluZ0NoYW5nZWQpKCk7CisgICAgICAgIGVsc2UgaWYgKG9w
dGlvbiA9PSAidGFiU2l6ZSIpIHVwZGF0ZURpc3BsYXkodHJ1ZSk7CisgICAgICAgIGVsc2UgaWYg
KG9wdGlvbiA9PSAia2V5TWFwIikga2V5TWFwQ2hhbmdlZCgpOworICAgICAgICBpZiAob3B0aW9u
ID09ICJsaW5lTnVtYmVycyIgfHwgb3B0aW9uID09ICJndXR0ZXIiIHx8IG9wdGlvbiA9PSAiZmly
c3RMaW5lTnVtYmVyIiB8fAorICAgICAgICAgICAgb3B0aW9uID09ICJ0aGVtZSIgfHwgb3B0aW9u
ID09ICJsaW5lTnVtYmVyRm9ybWF0dGVyIikgeworICAgICAgICAgIGd1dHRlckNoYW5nZWQoKTsK
KyAgICAgICAgICB1cGRhdGVEaXNwbGF5KHRydWUpOworICAgICAgICB9CisgICAgICB9LAorICAg
ICAgZ2V0T3B0aW9uOiBmdW5jdGlvbihvcHRpb24pIHtyZXR1cm4gb3B0aW9uc1tvcHRpb25dO30s
CisgICAgICB1bmRvOiBvcGVyYXRpb24odW5kbyksCisgICAgICByZWRvOiBvcGVyYXRpb24ocmVk
byksCisgICAgICBpbmRlbnRMaW5lOiBvcGVyYXRpb24oZnVuY3Rpb24obiwgZGlyKSB7CisgICAg
ICAgIGlmICh0eXBlb2YgZGlyICE9ICJzdHJpbmciKSB7CisgICAgICAgICAgaWYgKGRpciA9PSBu
dWxsKSBkaXIgPSBvcHRpb25zLnNtYXJ0SW5kZW50ID8gInNtYXJ0IiA6ICJwcmV2IjsKKyAgICAg
ICAgICBlbHNlIGRpciA9IGRpciA/ICJhZGQiIDogInN1YnRyYWN0IjsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoaXNMaW5lKG4pKSBpbmRlbnRMaW5lKG4sIGRpcik7CisgICAgICB9KSwKKyAgICAg
IGluZGVudFNlbGVjdGlvbjogb3BlcmF0aW9uKGluZGVudFNlbGVjdGVkKSwKKyAgICAgIGhpc3Rv
cnlTaXplOiBmdW5jdGlvbigpIHtyZXR1cm4ge3VuZG86IGhpc3RvcnkuZG9uZS5sZW5ndGgsIHJl
ZG86IGhpc3RvcnkudW5kb25lLmxlbmd0aH07fSwKKyAgICAgIGNsZWFySGlzdG9yeTogZnVuY3Rp
b24oKSB7aGlzdG9yeSA9IG5ldyBIaXN0b3J5KCk7fSwKKyAgICAgIHNldEhpc3Rvcnk6IGZ1bmN0
aW9uKGhpc3REYXRhKSB7CisgICAgICAgIGhpc3RvcnkgPSBuZXcgSGlzdG9yeSgpOworICAgICAg
ICBoaXN0b3J5LmRvbmUgPSBoaXN0RGF0YS5kb25lOworICAgICAgICBoaXN0b3J5LnVuZG9uZSA9
IGhpc3REYXRhLnVuZG9uZTsKKyAgICAgIH0sCisgICAgICBnZXRIaXN0b3J5OiBmdW5jdGlvbigp
IHsKKyAgICAgICAgaGlzdG9yeS50aW1lID0gMDsKKyAgICAgICAgcmV0dXJuIHtkb25lOiBoaXN0
b3J5LmRvbmUuY29uY2F0KFtdKSwgdW5kb25lOiBoaXN0b3J5LnVuZG9uZS5jb25jYXQoW10pfTsK
KyAgICAgIH0sCisgICAgICBtYXRjaEJyYWNrZXRzOiBvcGVyYXRpb24oZnVuY3Rpb24oKXttYXRj
aEJyYWNrZXRzKHRydWUpO30pLAorICAgICAgZ2V0VG9rZW5BdDogb3BlcmF0aW9uKGZ1bmN0aW9u
KHBvcykgeworICAgICAgICBwb3MgPSBjbGlwUG9zKHBvcyk7CisgICAgICAgIHJldHVybiBnZXRM
aW5lKHBvcy5saW5lKS5nZXRUb2tlbkF0KG1vZGUsIGdldFN0YXRlQmVmb3JlKHBvcy5saW5lKSwg
cG9zLmNoKTsKKyAgICAgIH0pLAorICAgICAgZ2V0U3RhdGVBZnRlcjogZnVuY3Rpb24obGluZSkg
eworICAgICAgICBsaW5lID0gY2xpcExpbmUobGluZSA9PSBudWxsID8gZG9jLnNpemUgLSAxOiBs
aW5lKTsKKyAgICAgICAgcmV0dXJuIGdldFN0YXRlQmVmb3JlKGxpbmUgKyAxKTsKKyAgICAgIH0s
CisgICAgICBjdXJzb3JDb29yZHM6IGZ1bmN0aW9uKHN0YXJ0LCBtb2RlKSB7CisgICAgICAgIGlm
IChzdGFydCA9PSBudWxsKSBzdGFydCA9IHNlbC5pbnZlcnRlZDsKKyAgICAgICAgcmV0dXJuIHRo
aXMuY2hhckNvb3JkcyhzdGFydCA/IHNlbC5mcm9tIDogc2VsLnRvLCBtb2RlKTsKKyAgICAgIH0s
CisgICAgICBjaGFyQ29vcmRzOiBmdW5jdGlvbihwb3MsIG1vZGUpIHsKKyAgICAgICAgcG9zID0g
Y2xpcFBvcyhwb3MpOworICAgICAgICBpZiAobW9kZSA9PSAibG9jYWwiKSByZXR1cm4gbG9jYWxD
b29yZHMocG9zLCBmYWxzZSk7CisgICAgICAgIGlmIChtb2RlID09ICJkaXYiKSByZXR1cm4gbG9j
YWxDb29yZHMocG9zLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIHBhZ2VDb29yZHMocG9zKTsKKyAg
ICAgIH0sCisgICAgICBjb29yZHNDaGFyOiBmdW5jdGlvbihjb29yZHMpIHsKKyAgICAgICAgdmFy
IG9mZiA9IGVsdE9mZnNldChsaW5lU3BhY2UpOworICAgICAgICByZXR1cm4gY29vcmRzQ2hhcihj
b29yZHMueCAtIG9mZi5sZWZ0LCBjb29yZHMueSAtIG9mZi50b3ApOworICAgICAgfSwKKyAgICAg
IG1hcmtUZXh0OiBvcGVyYXRpb24obWFya1RleHQpLAorICAgICAgc2V0Qm9va21hcms6IHNldEJv
b2ttYXJrLAorICAgICAgZmluZE1hcmtzQXQ6IGZpbmRNYXJrc0F0LAorICAgICAgc2V0TWFya2Vy
OiBvcGVyYXRpb24oYWRkR3V0dGVyTWFya2VyKSwKKyAgICAgIGNsZWFyTWFya2VyOiBvcGVyYXRp
b24ocmVtb3ZlR3V0dGVyTWFya2VyKSwKKyAgICAgIHNldExpbmVDbGFzczogb3BlcmF0aW9uKHNl
dExpbmVDbGFzcyksCisgICAgICBoaWRlTGluZTogb3BlcmF0aW9uKGZ1bmN0aW9uKGgpIHtyZXR1
cm4gc2V0TGluZUhpZGRlbihoLCB0cnVlKTt9KSwKKyAgICAgIHNob3dMaW5lOiBvcGVyYXRpb24o
ZnVuY3Rpb24oaCkge3JldHVybiBzZXRMaW5lSGlkZGVuKGgsIGZhbHNlKTt9KSwKKyAgICAgIG9u
RGVsZXRlTGluZTogZnVuY3Rpb24obGluZSwgZikgeworICAgICAgICBpZiAodHlwZW9mIGxpbmUg
PT0gIm51bWJlciIpIHsKKyAgICAgICAgICBpZiAoIWlzTGluZShsaW5lKSkgcmV0dXJuIG51bGw7
CisgICAgICAgICAgbGluZSA9IGdldExpbmUobGluZSk7CisgICAgICAgIH0KKyAgICAgICAgKGxp
bmUuaGFuZGxlcnMgfHwgKGxpbmUuaGFuZGxlcnMgPSBbXSkpLnB1c2goZik7CisgICAgICAgIHJl
dHVybiBsaW5lOworICAgICAgfSwKKyAgICAgIGxpbmVJbmZvOiBsaW5lSW5mbywKKyAgICAgIGFk
ZFdpZGdldDogZnVuY3Rpb24ocG9zLCBub2RlLCBzY3JvbGwsIHZlcnQsIGhvcml6KSB7CisgICAg
ICAgIHBvcyA9IGxvY2FsQ29vcmRzKGNsaXBQb3MocG9zKSk7CisgICAgICAgIHZhciB0b3AgPSBw
b3MueUJvdCwgbGVmdCA9IHBvcy54OworICAgICAgICBub2RlLnN0eWxlLnBvc2l0aW9uID0gImFi
c29sdXRlIjsKKyAgICAgICAgc2l6ZXIuYXBwZW5kQ2hpbGQobm9kZSk7CisgICAgICAgIGlmICh2
ZXJ0ID09ICJvdmVyIikgdG9wID0gcG9zLnk7CisgICAgICAgIGVsc2UgaWYgKHZlcnQgPT0gIm5l
YXIiKSB7CisgICAgICAgICAgdmFyIHZzcGFjZSA9IE1hdGgubWF4KHNjcm9sbGVyLm9mZnNldEhl
aWdodCwgZG9jLmhlaWdodCAqIHRleHRIZWlnaHQoKSksCisgICAgICAgICAgICAgIGhzcGFjZSA9
IE1hdGgubWF4KHNpemVyLmNsaWVudFdpZHRoLCBsaW5lU3BhY2UuY2xpZW50V2lkdGgpIC0gcGFk
ZGluZ0xlZnQoKTsKKyAgICAgICAgICBpZiAocG9zLnlCb3QgKyBub2RlLm9mZnNldEhlaWdodCA+
IHZzcGFjZSAmJiBwb3MueSA+IG5vZGUub2Zmc2V0SGVpZ2h0KQorICAgICAgICAgICAgdG9wID0g
cG9zLnkgLSBub2RlLm9mZnNldEhlaWdodDsKKyAgICAgICAgICBpZiAobGVmdCArIG5vZGUub2Zm
c2V0V2lkdGggPiBoc3BhY2UpCisgICAgICAgICAgICBsZWZ0ID0gaHNwYWNlIC0gbm9kZS5vZmZz
ZXRXaWR0aDsKKyAgICAgICAgfQorICAgICAgICBub2RlLnN0eWxlLnRvcCA9ICh0b3AgKyBwYWRk
aW5nVG9wKCkpICsgInB4IjsKKyAgICAgICAgbm9kZS5zdHlsZS5sZWZ0ID0gbm9kZS5zdHlsZS5y
aWdodCA9ICIiOworICAgICAgICBpZiAoaG9yaXogPT0gInJpZ2h0IikgeworICAgICAgICAgIGxl
ZnQgPSBzaXplci5jbGllbnRXaWR0aCAtIG5vZGUub2Zmc2V0V2lkdGg7CisgICAgICAgICAgbm9k
ZS5zdHlsZS5yaWdodCA9ICIwcHgiOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGlmICho
b3JpeiA9PSAibGVmdCIpIGxlZnQgPSAwOworICAgICAgICAgIGVsc2UgaWYgKGhvcml6ID09ICJt
aWRkbGUiKSBsZWZ0ID0gKHNpemVyLmNsaWVudFdpZHRoIC0gbm9kZS5vZmZzZXRXaWR0aCkgLyAy
OworICAgICAgICAgIG5vZGUuc3R5bGUubGVmdCA9IChsZWZ0ICsgcGFkZGluZ0xlZnQoKSkgKyAi
cHgiOworICAgICAgICB9CisgICAgICAgIGlmIChzY3JvbGwpCisgICAgICAgICAgc2Nyb2xsSW50
b1ZpZXcobGVmdCwgdG9wLCBsZWZ0ICsgbm9kZS5vZmZzZXRXaWR0aCwgdG9wICsgbm9kZS5vZmZz
ZXRIZWlnaHQpOworICAgICAgfSwKKworICAgICAgbGluZUNvdW50OiBmdW5jdGlvbigpIHtyZXR1
cm4gZG9jLnNpemU7fSwKKyAgICAgIGNsaXBQb3M6IGNsaXBQb3MsCisgICAgICBnZXRDdXJzb3I6
IGZ1bmN0aW9uKHN0YXJ0KSB7CisgICAgICAgIGlmIChzdGFydCA9PSBudWxsKSBzdGFydCA9IHNl
bC5pbnZlcnRlZDsKKyAgICAgICAgcmV0dXJuIGNvcHlQb3Moc3RhcnQgPyBzZWwuZnJvbSA6IHNl
bC50byk7CisgICAgICB9LAorICAgICAgc29tZXRoaW5nU2VsZWN0ZWQ6IGZ1bmN0aW9uKCkge3Jl
dHVybiAhcG9zRXEoc2VsLmZyb20sIHNlbC50byk7fSwKKyAgICAgIHNldEN1cnNvcjogb3BlcmF0
aW9uKGZ1bmN0aW9uKGxpbmUsIGNoLCB1c2VyKSB7CisgICAgICAgIGlmIChjaCA9PSBudWxsICYm
IHR5cGVvZiBsaW5lLmxpbmUgPT0gIm51bWJlciIpIHNldEN1cnNvcihsaW5lLmxpbmUsIGxpbmUu
Y2gsIHVzZXIpOworICAgICAgICBlbHNlIHNldEN1cnNvcihsaW5lLCBjaCwgdXNlcik7CisgICAg
ICB9KSwKKyAgICAgIHNldFNlbGVjdGlvbjogb3BlcmF0aW9uKGZ1bmN0aW9uKGZyb20sIHRvLCB1
c2VyKSB7CisgICAgICAgICh1c2VyID8gc2V0U2VsZWN0aW9uVXNlciA6IHNldFNlbGVjdGlvbiko
Y2xpcFBvcyhmcm9tKSwgY2xpcFBvcyh0byB8fCBmcm9tKSk7CisgICAgICB9KSwKKyAgICAgIGdl
dExpbmU6IGZ1bmN0aW9uKGxpbmUpIHtpZiAoaXNMaW5lKGxpbmUpKSByZXR1cm4gZ2V0TGluZShs
aW5lKS50ZXh0O30sCisgICAgICBnZXRMaW5lSGFuZGxlOiBmdW5jdGlvbihsaW5lKSB7aWYgKGlz
TGluZShsaW5lKSkgcmV0dXJuIGdldExpbmUobGluZSk7fSwKKyAgICAgIHNldExpbmU6IG9wZXJh
dGlvbihmdW5jdGlvbihsaW5lLCB0ZXh0KSB7CisgICAgICAgIGlmIChpc0xpbmUobGluZSkpIHJl
cGxhY2VSYW5nZSh0ZXh0LCB7bGluZTogbGluZSwgY2g6IDB9LCB7bGluZTogbGluZSwgY2g6IGdl
dExpbmUobGluZSkudGV4dC5sZW5ndGh9KTsKKyAgICAgIH0pLAorICAgICAgcmVtb3ZlTGluZTog
b3BlcmF0aW9uKGZ1bmN0aW9uKGxpbmUpIHsKKyAgICAgICAgaWYgKGlzTGluZShsaW5lKSkgcmVw
bGFjZVJhbmdlKCIiLCB7bGluZTogbGluZSwgY2g6IDB9LCBjbGlwUG9zKHtsaW5lOiBsaW5lKzEs
IGNoOiAwfSkpOworICAgICAgfSksCisgICAgICByZXBsYWNlUmFuZ2U6IG9wZXJhdGlvbihyZXBs
YWNlUmFuZ2UpLAorICAgICAgZ2V0UmFuZ2U6IGZ1bmN0aW9uKGZyb20sIHRvLCBsaW5lU2VwKSB7
cmV0dXJuIGdldFJhbmdlKGNsaXBQb3MoZnJvbSksIGNsaXBQb3ModG8pLCBsaW5lU2VwKTt9LAor
CisgICAgICB0cmlnZ2VyT25LZXlEb3duOiBvcGVyYXRpb24ob25LZXlEb3duKSwKKyAgICAgIGV4
ZWNDb21tYW5kOiBmdW5jdGlvbihjbWQpIHtyZXR1cm4gY29tbWFuZHNbY21kXShpbnN0YW5jZSk7
fSwKKyAgICAgIC8vIFN0dWZmIHVzZWQgYnkgY29tbWFuZHMsIHByb2JhYmx5IG5vdCBtdWNoIHVz
ZSB0byBvdXRzaWRlIGNvZGUuCisgICAgICBtb3ZlSDogb3BlcmF0aW9uKG1vdmVIKSwKKyAgICAg
IGRlbGV0ZUg6IG9wZXJhdGlvbihkZWxldGVIKSwKKyAgICAgIG1vdmVWOiBvcGVyYXRpb24obW92
ZVYpLAorICAgICAgdG9nZ2xlT3ZlcndyaXRlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYob3Zl
cndyaXRlKXsKKyAgICAgICAgICBvdmVyd3JpdGUgPSBmYWxzZTsKKyAgICAgICAgICBjdXJzb3Iu
Y2xhc3NOYW1lID0gY3Vyc29yLmNsYXNzTmFtZS5yZXBsYWNlKCIgQ29kZU1pcnJvci1vdmVyd3Jp
dGUiLCAiIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgb3ZlcndyaXRlID0gdHJ1ZTsK
KyAgICAgICAgICBjdXJzb3IuY2xhc3NOYW1lICs9ICIgQ29kZU1pcnJvci1vdmVyd3JpdGUiOwor
ICAgICAgICB9CisgICAgICB9LAorCisgICAgICBwb3NGcm9tSW5kZXg6IGZ1bmN0aW9uKG9mZikg
eworICAgICAgICB2YXIgbGluZU5vID0gMCwgY2g7CisgICAgICAgIGRvYy5pdGVyKDAsIGRvYy5z
aXplLCBmdW5jdGlvbihsaW5lKSB7CisgICAgICAgICAgdmFyIHN6ID0gbGluZS50ZXh0Lmxlbmd0
aCArIDE7CisgICAgICAgICAgaWYgKHN6ID4gb2ZmKSB7IGNoID0gb2ZmOyByZXR1cm4gdHJ1ZTsg
fQorICAgICAgICAgIG9mZiAtPSBzejsKKyAgICAgICAgICArK2xpbmVObzsKKyAgICAgICAgfSk7
CisgICAgICAgIHJldHVybiBjbGlwUG9zKHtsaW5lOiBsaW5lTm8sIGNoOiBjaH0pOworICAgICAg
fSwKKyAgICAgIGluZGV4RnJvbVBvczogZnVuY3Rpb24gKGNvb3JkcykgeworICAgICAgICBpZiAo
Y29vcmRzLmxpbmUgPCAwIHx8IGNvb3Jkcy5jaCA8IDApIHJldHVybiAwOworICAgICAgICB2YXIg
aW5kZXggPSBjb29yZHMuY2g7CisgICAgICAgIGRvYy5pdGVyKDAsIGNvb3Jkcy5saW5lLCBmdW5j
dGlvbiAobGluZSkgeworICAgICAgICAgIGluZGV4ICs9IGxpbmUudGV4dC5sZW5ndGggKyAxOwor
ICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIGluZGV4OworICAgICAgfSwKKyAgICAgIHNjcm9s
bFRvOiBmdW5jdGlvbih4LCB5KSB7CisgICAgICAgIGlmICh4ICE9IG51bGwpIHNjcm9sbGVyLnNj
cm9sbExlZnQgPSB4OworICAgICAgICBpZiAoeSAhPSBudWxsKSBzY3JvbGxiYXIuc2Nyb2xsVG9w
ID0gc2Nyb2xsZXIuc2Nyb2xsVG9wID0geTsKKyAgICAgICAgdXBkYXRlRGlzcGxheShbXSk7Cisg
ICAgICB9LAorICAgICAgZ2V0U2Nyb2xsSW5mbzogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVy
biB7eDogc2Nyb2xsZXIuc2Nyb2xsTGVmdCwgeTogc2Nyb2xsYmFyLnNjcm9sbFRvcCwKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IHNjcm9sbGJhci5zY3JvbGxIZWlnaHQsIHdpZHRoOiBzY3JvbGxl
ci5zY3JvbGxXaWR0aH07CisgICAgICB9LAorICAgICAgc2V0U2l6ZTogZnVuY3Rpb24od2lkdGgs
IGhlaWdodCkgeworICAgICAgICBmdW5jdGlvbiBpbnRlcnByZXQodmFsKSB7CisgICAgICAgICAg
dmFsID0gU3RyaW5nKHZhbCk7CisgICAgICAgICAgcmV0dXJuIC9eXGQrJC8udGVzdCh2YWwpID8g
dmFsICsgInB4IiA6IHZhbDsKKyAgICAgICAgfQorICAgICAgICBpZiAod2lkdGggIT0gbnVsbCkg
d3JhcHBlci5zdHlsZS53aWR0aCA9IGludGVycHJldCh3aWR0aCk7CisgICAgICAgIGlmIChoZWln
aHQgIT0gbnVsbCkgc2Nyb2xsZXIuc3R5bGUuaGVpZ2h0ID0gaW50ZXJwcmV0KGhlaWdodCk7Cisg
ICAgICAgIGluc3RhbmNlLnJlZnJlc2goKTsKKyAgICAgIH0sCisKKyAgICAgIG9wZXJhdGlvbjog
ZnVuY3Rpb24oZil7cmV0dXJuIG9wZXJhdGlvbihmKSgpO30sCisgICAgICBjb21wb3VuZENoYW5n
ZTogZnVuY3Rpb24oZil7cmV0dXJuIGNvbXBvdW5kQ2hhbmdlKGYpO30sCisgICAgICByZWZyZXNo
OiBmdW5jdGlvbigpeworICAgICAgICB1cGRhdGVEaXNwbGF5KHRydWUsIG51bGwsIGxhc3RTY3Jv
bGxUb3ApOworICAgICAgICBpZiAoc2Nyb2xsYmFyLnNjcm9sbEhlaWdodCA+IGxhc3RTY3JvbGxU
b3ApCisgICAgICAgICAgc2Nyb2xsYmFyLnNjcm9sbFRvcCA9IGxhc3RTY3JvbGxUb3A7CisgICAg
ICB9LAorICAgICAgZ2V0SW5wdXRGaWVsZDogZnVuY3Rpb24oKXtyZXR1cm4gaW5wdXQ7fSwKKyAg
ICAgIGdldFdyYXBwZXJFbGVtZW50OiBmdW5jdGlvbigpe3JldHVybiB3cmFwcGVyO30sCisgICAg
ICBnZXRTY3JvbGxlckVsZW1lbnQ6IGZ1bmN0aW9uKCl7cmV0dXJuIHNjcm9sbGVyO30sCisgICAg
ICBnZXRHdXR0ZXJFbGVtZW50OiBmdW5jdGlvbigpe3JldHVybiBndXR0ZXI7fQorICAgIH07CisK
KyAgICBmdW5jdGlvbiBnZXRMaW5lKG4pIHsgcmV0dXJuIGdldExpbmVBdChkb2MsIG4pOyB9Cisg
ICAgZnVuY3Rpb24gdXBkYXRlTGluZUhlaWdodChsaW5lLCBoZWlnaHQpIHsKKyAgICAgIGd1dHRl
ckRpcnR5ID0gdHJ1ZTsKKyAgICAgIHZhciBkaWZmID0gaGVpZ2h0IC0gbGluZS5oZWlnaHQ7Cisg
ICAgICBmb3IgKHZhciBuID0gbGluZTsgbjsgbiA9IG4ucGFyZW50KSBuLmhlaWdodCArPSBkaWZm
OworICAgIH0KKworICAgIGZ1bmN0aW9uIHNldFZhbHVlKGNvZGUpIHsKKyAgICAgIHZhciB0b3Ag
PSB7bGluZTogMCwgY2g6IDB9OworICAgICAgdXBkYXRlTGluZXModG9wLCB7bGluZTogZG9jLnNp
emUgLSAxLCBjaDogZ2V0TGluZShkb2Muc2l6ZS0xKS50ZXh0Lmxlbmd0aH0sCisgICAgICAgICAg
ICAgICAgICBzcGxpdExpbmVzKGNvZGUpLCB0b3AsIHRvcCk7CisgICAgICB1cGRhdGVJbnB1dCA9
IHRydWU7CisgICAgfQorICAgIGZ1bmN0aW9uIGdldFZhbHVlKGxpbmVTZXApIHsKKyAgICAgIHZh
ciB0ZXh0ID0gW107CisgICAgICBkb2MuaXRlcigwLCBkb2Muc2l6ZSwgZnVuY3Rpb24obGluZSkg
eyB0ZXh0LnB1c2gobGluZS50ZXh0KTsgfSk7CisgICAgICByZXR1cm4gdGV4dC5qb2luKGxpbmVT
ZXAgfHwgIlxuIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gb25TY3JvbGxCYXIoZSkgeworICAg
ICAgaWYgKHNjcm9sbGJhci5zY3JvbGxUb3AgIT0gbGFzdFNjcm9sbFRvcCkgeworICAgICAgICBs
YXN0U2Nyb2xsVG9wID0gc2Nyb2xsZXIuc2Nyb2xsVG9wID0gc2Nyb2xsYmFyLnNjcm9sbFRvcDsK
KyAgICAgICAgdXBkYXRlRGlzcGxheShbXSk7CisgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rp
b24gb25TY3JvbGxNYWluKGUpIHsKKyAgICAgIGlmIChvcHRpb25zLmZpeGVkR3V0dGVyICYmIGd1
dHRlci5zdHlsZS5sZWZ0ICE9IHNjcm9sbGVyLnNjcm9sbExlZnQgKyAicHgiKQorICAgICAgICBn
dXR0ZXIuc3R5bGUubGVmdCA9IHNjcm9sbGVyLnNjcm9sbExlZnQgKyAicHgiOworICAgICAgaWYg
KHNjcm9sbGVyLnNjcm9sbFRvcCAhPSBsYXN0U2Nyb2xsVG9wKSB7CisgICAgICAgIGxhc3RTY3Jv
bGxUb3AgPSBzY3JvbGxlci5zY3JvbGxUb3A7CisgICAgICAgIGlmIChzY3JvbGxiYXIuc2Nyb2xs
VG9wICE9IGxhc3RTY3JvbGxUb3ApCisgICAgICAgICAgc2Nyb2xsYmFyLnNjcm9sbFRvcCA9IGxh
c3RTY3JvbGxUb3A7CisgICAgICAgIHVwZGF0ZURpc3BsYXkoW10pOworICAgICAgfQorICAgICAg
aWYgKG9wdGlvbnMub25TY3JvbGwpIG9wdGlvbnMub25TY3JvbGwoaW5zdGFuY2UpOworICAgIH0K
KworICAgIGZ1bmN0aW9uIG9uTW91c2VEb3duKGUpIHsKKyAgICAgIHNldFNoaWZ0KGVfcHJvcChl
LCAic2hpZnRLZXkiKSk7CisgICAgICAvLyBDaGVjayB3aGV0aGVyIHRoaXMgaXMgYSBjbGljayBp
biBhIHdpZGdldAorICAgICAgZm9yICh2YXIgbiA9IGVfdGFyZ2V0KGUpOyBuICE9IHdyYXBwZXI7
IG4gPSBuLnBhcmVudE5vZGUpCisgICAgICAgIGlmIChuLnBhcmVudE5vZGUgPT0gc2l6ZXIgJiYg
biAhPSBtb3ZlcikgcmV0dXJuOworCisgICAgICAvLyBTZWUgaWYgdGhpcyBpcyBhIGNsaWNrIGlu
IHRoZSBndXR0ZXIKKyAgICAgIGZvciAodmFyIG4gPSBlX3RhcmdldChlKTsgbiAhPSB3cmFwcGVy
OyBuID0gbi5wYXJlbnROb2RlKQorICAgICAgICBpZiAobi5wYXJlbnROb2RlID09IGd1dHRlclRl
eHQpIHsKKyAgICAgICAgICBpZiAob3B0aW9ucy5vbkd1dHRlckNsaWNrKQorICAgICAgICAgICAg
b3B0aW9ucy5vbkd1dHRlckNsaWNrKGluc3RhbmNlLCBpbmRleE9mKGd1dHRlclRleHQuY2hpbGRO
b2RlcywgbikgKyBzaG93aW5nRnJvbSwgZSk7CisgICAgICAgICAgcmV0dXJuIGVfcHJldmVudERl
ZmF1bHQoZSk7CisgICAgICAgIH0KKworICAgICAgdmFyIHN0YXJ0ID0gcG9zRnJvbU1vdXNlKGUp
OworCisgICAgICBzd2l0Y2ggKGVfYnV0dG9uKGUpKSB7CisgICAgICBjYXNlIDM6CisgICAgICAg
IGlmIChnZWNrbykgb25Db250ZXh0TWVudShlKTsKKyAgICAgICAgcmV0dXJuOworICAgICAgY2Fz
ZSAyOgorICAgICAgICBpZiAoc3RhcnQpIHNldEN1cnNvcihzdGFydC5saW5lLCBzdGFydC5jaCwg
dHJ1ZSk7CisgICAgICAgIHNldFRpbWVvdXQoZm9jdXNJbnB1dCwgMjApOworICAgICAgICBlX3By
ZXZlbnREZWZhdWx0KGUpOworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgICAvLyBGb3Ig
YnV0dG9uIDEsIGlmIGl0IHdhcyBjbGlja2VkIGluc2lkZSB0aGUgZWRpdG9yCisgICAgICAvLyAo
cG9zRnJvbU1vdXNlIHJldHVybmluZyBub24tbnVsbCksIHdlIGhhdmUgdG8gYWRqdXN0IHRoZQor
ICAgICAgLy8gc2VsZWN0aW9uLgorICAgICAgaWYgKCFzdGFydCkge2lmIChlX3RhcmdldChlKSA9
PSBzY3JvbGxlcikgZV9wcmV2ZW50RGVmYXVsdChlKTsgcmV0dXJuO30KKworICAgICAgaWYgKCFm
b2N1c2VkKSBvbkZvY3VzKCk7CisKKyAgICAgIHZhciBub3cgPSArbmV3IERhdGUsIHR5cGUgPSAi
c2luZ2xlIjsKKyAgICAgIGlmIChsYXN0RG91YmxlQ2xpY2sgJiYgbGFzdERvdWJsZUNsaWNrLnRp
bWUgPiBub3cgLSA0MDAgJiYgcG9zRXEobGFzdERvdWJsZUNsaWNrLnBvcywgc3RhcnQpKSB7Cisg
ICAgICAgIHR5cGUgPSAidHJpcGxlIjsKKyAgICAgICAgZV9wcmV2ZW50RGVmYXVsdChlKTsKKyAg
ICAgICAgc2V0VGltZW91dChmb2N1c0lucHV0LCAyMCk7CisgICAgICAgIHNlbGVjdExpbmUoc3Rh
cnQubGluZSk7CisgICAgICB9IGVsc2UgaWYgKGxhc3RDbGljayAmJiBsYXN0Q2xpY2sudGltZSA+
IG5vdyAtIDQwMCAmJiBwb3NFcShsYXN0Q2xpY2sucG9zLCBzdGFydCkpIHsKKyAgICAgICAgdHlw
ZSA9ICJkb3VibGUiOworICAgICAgICBsYXN0RG91YmxlQ2xpY2sgPSB7dGltZTogbm93LCBwb3M6
IHN0YXJ0fTsKKyAgICAgICAgZV9wcmV2ZW50RGVmYXVsdChlKTsKKyAgICAgICAgdmFyIHdvcmQg
PSBmaW5kV29yZEF0KHN0YXJ0KTsKKyAgICAgICAgc2V0U2VsZWN0aW9uVXNlcih3b3JkLmZyb20s
IHdvcmQudG8pOworICAgICAgfSBlbHNlIHsgbGFzdENsaWNrID0ge3RpbWU6IG5vdywgcG9zOiBz
dGFydH07IH0KKworICAgICAgZnVuY3Rpb24gZHJhZ0VuZChlMikgeworICAgICAgICBpZiAod2Vi
a2l0KSBzY3JvbGxlci5kcmFnZ2FibGUgPSBmYWxzZTsKKyAgICAgICAgZHJhZ2dpbmdUZXh0ID0g
ZmFsc2U7CisgICAgICAgIHVwKCk7IGRyb3AoKTsKKyAgICAgICAgaWYgKE1hdGguYWJzKGUuY2xp
ZW50WCAtIGUyLmNsaWVudFgpICsgTWF0aC5hYnMoZS5jbGllbnRZIC0gZTIuY2xpZW50WSkgPCAx
MCkgeworICAgICAgICAgIGVfcHJldmVudERlZmF1bHQoZTIpOworICAgICAgICAgIHNldEN1cnNv
cihzdGFydC5saW5lLCBzdGFydC5jaCwgdHJ1ZSk7CisgICAgICAgICAgZm9jdXNJbnB1dCgpOwor
ICAgICAgICB9CisgICAgICB9CisgICAgICB2YXIgbGFzdCA9IHN0YXJ0LCBnb2luZzsKKyAgICAg
IGlmIChvcHRpb25zLmRyYWdEcm9wICYmIGRyYWdBbmREcm9wICYmICFvcHRpb25zLnJlYWRPbmx5
ICYmICFwb3NFcShzZWwuZnJvbSwgc2VsLnRvKSAmJgorICAgICAgICAgICFwb3NMZXNzKHN0YXJ0
LCBzZWwuZnJvbSkgJiYgIXBvc0xlc3Moc2VsLnRvLCBzdGFydCkgJiYgdHlwZSA9PSAic2luZ2xl
IikgeworICAgICAgICAvLyBMZXQgdGhlIGRyYWcgaGFuZGxlciBoYW5kbGUgdGhpcy4KKyAgICAg
ICAgaWYgKHdlYmtpdCkgc2Nyb2xsZXIuZHJhZ2dhYmxlID0gdHJ1ZTsKKyAgICAgICAgdmFyIHVw
ID0gY29ubmVjdChkb2N1bWVudCwgIm1vdXNldXAiLCBvcGVyYXRpb24oZHJhZ0VuZCksIHRydWUp
OworICAgICAgICB2YXIgZHJvcCA9IGNvbm5lY3Qoc2Nyb2xsZXIsICJkcm9wIiwgb3BlcmF0aW9u
KGRyYWdFbmQpLCB0cnVlKTsKKyAgICAgICAgZHJhZ2dpbmdUZXh0ID0gdHJ1ZTsKKyAgICAgICAg
Ly8gSUUncyBhcHByb2FjaCB0byBkcmFnZ2FibGUKKyAgICAgICAgaWYgKHNjcm9sbGVyLmRyYWdE
cm9wKSBzY3JvbGxlci5kcmFnRHJvcCgpOworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAg
ICBlX3ByZXZlbnREZWZhdWx0KGUpOworICAgICAgaWYgKHR5cGUgPT0gInNpbmdsZSIpIHNldEN1
cnNvcihzdGFydC5saW5lLCBzdGFydC5jaCwgdHJ1ZSk7CisKKyAgICAgIHZhciBzdGFydHN0YXJ0
ID0gc2VsLmZyb20sIHN0YXJ0ZW5kID0gc2VsLnRvOworCisgICAgICBmdW5jdGlvbiBkb1NlbGVj
dChjdXIpIHsKKyAgICAgICAgaWYgKHR5cGUgPT0gInNpbmdsZSIpIHsKKyAgICAgICAgICBzZXRT
ZWxlY3Rpb25Vc2VyKHN0YXJ0LCBjdXIpOworICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gImRv
dWJsZSIpIHsKKyAgICAgICAgICB2YXIgd29yZCA9IGZpbmRXb3JkQXQoY3VyKTsKKyAgICAgICAg
ICBpZiAocG9zTGVzcyhjdXIsIHN0YXJ0c3RhcnQpKSBzZXRTZWxlY3Rpb25Vc2VyKHdvcmQuZnJv
bSwgc3RhcnRlbmQpOworICAgICAgICAgIGVsc2Ugc2V0U2VsZWN0aW9uVXNlcihzdGFydHN0YXJ0
LCB3b3JkLnRvKTsKKyAgICAgICAgfSBlbHNlIGlmICh0eXBlID09ICJ0cmlwbGUiKSB7CisgICAg
ICAgICAgaWYgKHBvc0xlc3MoY3VyLCBzdGFydHN0YXJ0KSkgc2V0U2VsZWN0aW9uVXNlcihzdGFy
dGVuZCwgY2xpcFBvcyh7bGluZTogY3VyLmxpbmUsIGNoOiAwfSkpOworICAgICAgICAgIGVsc2Ug
c2V0U2VsZWN0aW9uVXNlcihzdGFydHN0YXJ0LCBjbGlwUG9zKHtsaW5lOiBjdXIubGluZSArIDEs
IGNoOiAwfSkpOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIGV4dGVuZChl
KSB7CisgICAgICAgIHZhciBjdXIgPSBwb3NGcm9tTW91c2UoZSwgdHJ1ZSk7CisgICAgICAgIGlm
IChjdXIgJiYgIXBvc0VxKGN1ciwgbGFzdCkpIHsKKyAgICAgICAgICBpZiAoIWZvY3VzZWQpIG9u
Rm9jdXMoKTsKKyAgICAgICAgICBsYXN0ID0gY3VyOworICAgICAgICAgIGRvU2VsZWN0KGN1cik7
CisgICAgICAgICAgdXBkYXRlSW5wdXQgPSBmYWxzZTsKKyAgICAgICAgICB2YXIgdmlzaWJsZSA9
IHZpc2libGVMaW5lcygpOworICAgICAgICAgIGlmIChjdXIubGluZSA+PSB2aXNpYmxlLnRvIHx8
IGN1ci5saW5lIDwgdmlzaWJsZS5mcm9tKQorICAgICAgICAgICAgZ29pbmcgPSBzZXRUaW1lb3V0
KG9wZXJhdGlvbihmdW5jdGlvbigpe2V4dGVuZChlKTt9KSwgMTUwKTsKKyAgICAgICAgfQorICAg
ICAgfQorCisgICAgICBmdW5jdGlvbiBkb25lKGUpIHsKKyAgICAgICAgY2xlYXJUaW1lb3V0KGdv
aW5nKTsKKyAgICAgICAgdmFyIGN1ciA9IHBvc0Zyb21Nb3VzZShlKTsKKyAgICAgICAgaWYgKGN1
cikgZG9TZWxlY3QoY3VyKTsKKyAgICAgICAgZV9wcmV2ZW50RGVmYXVsdChlKTsKKyAgICAgICAg
Zm9jdXNJbnB1dCgpOworICAgICAgICB1cGRhdGVJbnB1dCA9IHRydWU7CisgICAgICAgIG1vdmUo
KTsgdXAoKTsKKyAgICAgIH0KKyAgICAgIHZhciBtb3ZlID0gY29ubmVjdChkb2N1bWVudCwgIm1v
dXNlbW92ZSIsIG9wZXJhdGlvbihmdW5jdGlvbihlKSB7CisgICAgICAgIGNsZWFyVGltZW91dChn
b2luZyk7CisgICAgICAgIGVfcHJldmVudERlZmF1bHQoZSk7CisgICAgICAgIGlmICghaWUgJiYg
IWVfYnV0dG9uKGUpKSBkb25lKGUpOworICAgICAgICBlbHNlIGV4dGVuZChlKTsKKyAgICAgIH0p
LCB0cnVlKTsKKyAgICAgIHZhciB1cCA9IGNvbm5lY3QoZG9jdW1lbnQsICJtb3VzZXVwIiwgb3Bl
cmF0aW9uKGRvbmUpLCB0cnVlKTsKKyAgICB9CisgICAgZnVuY3Rpb24gb25Eb3VibGVDbGljayhl
KSB7CisgICAgICBmb3IgKHZhciBuID0gZV90YXJnZXQoZSk7IG4gIT0gd3JhcHBlcjsgbiA9IG4u
cGFyZW50Tm9kZSkKKyAgICAgICAgaWYgKG4ucGFyZW50Tm9kZSA9PSBndXR0ZXJUZXh0KSByZXR1
cm4gZV9wcmV2ZW50RGVmYXVsdChlKTsKKyAgICAgIGVfcHJldmVudERlZmF1bHQoZSk7CisgICAg
fQorICAgIGZ1bmN0aW9uIG9uRHJvcChlKSB7CisgICAgICBpZiAob3B0aW9ucy5vbkRyYWdFdmVu
dCAmJiBvcHRpb25zLm9uRHJhZ0V2ZW50KGluc3RhbmNlLCBhZGRTdG9wKGUpKSkgcmV0dXJuOwor
ICAgICAgZV9wcmV2ZW50RGVmYXVsdChlKTsKKyAgICAgIHZhciBwb3MgPSBwb3NGcm9tTW91c2Uo
ZSwgdHJ1ZSksIGZpbGVzID0gZS5kYXRhVHJhbnNmZXIuZmlsZXM7CisgICAgICBpZiAoIXBvcyB8
fCBvcHRpb25zLnJlYWRPbmx5KSByZXR1cm47CisgICAgICBpZiAoZmlsZXMgJiYgZmlsZXMubGVu
Z3RoICYmIHdpbmRvdy5GaWxlUmVhZGVyICYmIHdpbmRvdy5GaWxlKSB7CisgICAgICAgIHZhciBu
ID0gZmlsZXMubGVuZ3RoLCB0ZXh0ID0gQXJyYXkobiksIHJlYWQgPSAwOworICAgICAgICB2YXIg
bG9hZEZpbGUgPSBmdW5jdGlvbihmaWxlLCBpKSB7CisgICAgICAgICAgdmFyIHJlYWRlciA9IG5l
dyBGaWxlUmVhZGVyOworICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIHRleHRbaV0gPSByZWFkZXIucmVzdWx0OworICAgICAgICAgICAgaWYgKCsrcmVh
ZCA9PSBuKSB7CisgICAgICAgICAgICAgIHBvcyA9IGNsaXBQb3MocG9zKTsKKyAgICAgICAgICAg
ICAgb3BlcmF0aW9uKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHZhciBlbmQgPSByZXBs
YWNlUmFuZ2UodGV4dC5qb2luKCIiKSwgcG9zLCBwb3MpOworICAgICAgICAgICAgICAgIHNldFNl
bGVjdGlvblVzZXIocG9zLCBlbmQpOworICAgICAgICAgICAgICB9KSgpOworICAgICAgICAgICAg
fQorICAgICAgICAgIH07CisgICAgICAgICAgcmVhZGVyLnJlYWRBc1RleHQoZmlsZSk7CisgICAg
ICAgIH07CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSBsb2FkRmlsZShmaWxl
c1tpXSwgaSk7CisgICAgICB9IGVsc2UgeworICAgICAgICAvLyBEb24ndCBkbyBhIHJlcGxhY2Ug
aWYgdGhlIGRyb3AgaGFwcGVuZWQgaW5zaWRlIG9mIHRoZSBzZWxlY3RlZCB0ZXh0LgorICAgICAg
ICBpZiAoZHJhZ2dpbmdUZXh0ICYmICEocG9zTGVzcyhwb3MsIHNlbC5mcm9tKSB8fCBwb3NMZXNz
KHNlbC50bywgcG9zKSkpIHJldHVybjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICB2YXIgdGV4
dCA9IGUuZGF0YVRyYW5zZmVyLmdldERhdGEoIlRleHQiKTsKKyAgICAgICAgICBpZiAodGV4dCkg
eworICAgICAgICAgICAgY29tcG91bmRDaGFuZ2UoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
IHZhciBjdXJGcm9tID0gc2VsLmZyb20sIGN1clRvID0gc2VsLnRvOworICAgICAgICAgICAgICBz
ZXRTZWxlY3Rpb25Vc2VyKHBvcywgcG9zKTsKKyAgICAgICAgICAgICAgaWYgKGRyYWdnaW5nVGV4
dCkgcmVwbGFjZVJhbmdlKCIiLCBjdXJGcm9tLCBjdXJUbyk7CisgICAgICAgICAgICAgIHJlcGxh
Y2VTZWxlY3Rpb24odGV4dCk7CisgICAgICAgICAgICAgIGZvY3VzSW5wdXQoKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXRjaChlKXt9CisgICAg
ICB9CisgICAgfQorICAgIGZ1bmN0aW9uIG9uRHJhZ1N0YXJ0KGUpIHsKKyAgICAgIHZhciB0eHQg
PSBnZXRTZWxlY3Rpb24oKTsKKyAgICAgIGUuZGF0YVRyYW5zZmVyLnNldERhdGEoIlRleHQiLCB0
eHQpOworCisgICAgICAvLyBVc2UgZHVtbXkgaW1hZ2UgaW5zdGVhZCBvZiBkZWZhdWx0IGJyb3dz
ZXJzIGltYWdlLgorICAgICAgaWYgKGdlY2tvIHx8IGNocm9tZSB8fCBvcGVyYSkgeworICAgICAg
ICB2YXIgaW1nID0gZWx0KCdpbWcnKTsKKyAgICAgICAgaW1nLnNjciA9ICdkYXRhOmltYWdlL2dp
ZjtiYXNlNjQsUjBsR09EZGhBZ0FDQUlBQUFBQUFBUC8vL3l3QUFBQUFBZ0FDQUFBQ0FvUlJBRHM9
JzsgLy8xeDEgaW1hZ2UKKyAgICAgICAgZS5kYXRhVHJhbnNmZXIuc2V0RHJhZ0ltYWdlKGltZywg
MCwgMCk7CisgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gZG9IYW5kbGVCaW5kaW5nKGJv
dW5kLCBkcm9wU2hpZnQpIHsKKyAgICAgIGlmICh0eXBlb2YgYm91bmQgPT0gInN0cmluZyIpIHsK
KyAgICAgICAgYm91bmQgPSBjb21tYW5kc1tib3VuZF07CisgICAgICAgIGlmICghYm91bmQpIHJl
dHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICAgIHZhciBwcmV2U2hpZnQgPSBzaGlmdFNlbGVjdGlu
ZzsKKyAgICAgIHRyeSB7CisgICAgICAgIGlmIChvcHRpb25zLnJlYWRPbmx5KSBzdXBwcmVzc0Vk
aXRzID0gdHJ1ZTsKKyAgICAgICAgaWYgKGRyb3BTaGlmdCkgc2hpZnRTZWxlY3RpbmcgPSBudWxs
OworICAgICAgICBib3VuZChpbnN0YW5jZSk7CisgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAg
aWYgKGUgIT0gUGFzcykgdGhyb3cgZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfSBm
aW5hbGx5IHsKKyAgICAgICAgc2hpZnRTZWxlY3RpbmcgPSBwcmV2U2hpZnQ7CisgICAgICAgIHN1
cHByZXNzRWRpdHMgPSBmYWxzZTsKKyAgICAgIH0KKyAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICB2YXIgbWF5YmVUcmFuc2l0aW9uOworICAgIGZ1bmN0aW9uIGhhbmRsZUtleUJpbmRpbmco
ZSkgeworICAgICAgLy8gSGFuZGxlIGF1dG8ga2V5bWFwIHRyYW5zaXRpb25zCisgICAgICB2YXIg
c3RhcnRNYXAgPSBnZXRLZXlNYXAob3B0aW9ucy5rZXlNYXApLCBuZXh0ID0gc3RhcnRNYXAuYXV0
bzsKKyAgICAgIGNsZWFyVGltZW91dChtYXliZVRyYW5zaXRpb24pOworICAgICAgaWYgKG5leHQg
JiYgIWlzTW9kaWZpZXJLZXkoZSkpIG1heWJlVHJhbnNpdGlvbiA9IHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7CisgICAgICAgIGlmIChnZXRLZXlNYXAob3B0aW9ucy5rZXlNYXApID09IHN0YXJ0TWFw
KSB7CisgICAgICAgICAgb3B0aW9ucy5rZXlNYXAgPSAobmV4dC5jYWxsID8gbmV4dC5jYWxsKG51
bGwsIGluc3RhbmNlKSA6IG5leHQpOworICAgICAgICB9CisgICAgICB9LCA1MCk7CisKKyAgICAg
IHZhciBuYW1lID0ga2V5TmFtZXNbZV9wcm9wKGUsICJrZXlDb2RlIildLCBoYW5kbGVkID0gZmFs
c2U7CisgICAgICBpZiAobmFtZSA9PSBudWxsIHx8IGUuYWx0R3JhcGhLZXkpIHJldHVybiBmYWxz
ZTsKKyAgICAgIGlmIChlX3Byb3AoZSwgImFsdEtleSIpKSBuYW1lID0gIkFsdC0iICsgbmFtZTsK
KyAgICAgIGlmIChlX3Byb3AoZSwgImN0cmxLZXkiKSkgbmFtZSA9ICJDdHJsLSIgKyBuYW1lOwor
ICAgICAgaWYgKGVfcHJvcChlLCAibWV0YUtleSIpKSBuYW1lID0gIkNtZC0iICsgbmFtZTsKKwor
ICAgICAgdmFyIHN0b3BwZWQgPSBmYWxzZTsKKyAgICAgIGZ1bmN0aW9uIHN0b3AoKSB7IHN0b3Bw
ZWQgPSB0cnVlOyB9CisKKyAgICAgIGlmIChlX3Byb3AoZSwgInNoaWZ0S2V5IikpIHsKKyAgICAg
ICAgaGFuZGxlZCA9IGxvb2t1cEtleSgiU2hpZnQtIiArIG5hbWUsIG9wdGlvbnMuZXh0cmFLZXlz
LCBvcHRpb25zLmtleU1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihi
KSB7cmV0dXJuIGRvSGFuZGxlQmluZGluZyhiLCB0cnVlKTt9LCBzdG9wKQorICAgICAgICAgICAg
ICAgfHwgbG9va3VwS2V5KG5hbWUsIG9wdGlvbnMuZXh0cmFLZXlzLCBvcHRpb25zLmtleU1hcCwg
ZnVuY3Rpb24oYikgeworICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGIgPT0gInN0cmluZyIg
JiYgL15nb1tBLVpdLy50ZXN0KGIpKSByZXR1cm4gZG9IYW5kbGVCaW5kaW5nKGIpOworICAgICAg
ICAgICAgICAgfSwgc3RvcCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBoYW5kbGVkID0gbG9v
a3VwS2V5KG5hbWUsIG9wdGlvbnMuZXh0cmFLZXlzLCBvcHRpb25zLmtleU1hcCwgZG9IYW5kbGVC
aW5kaW5nLCBzdG9wKTsKKyAgICAgIH0KKyAgICAgIGlmIChzdG9wcGVkKSBoYW5kbGVkID0gZmFs
c2U7CisgICAgICBpZiAoaGFuZGxlZCkgeworICAgICAgICBlX3ByZXZlbnREZWZhdWx0KGUpOwor
ICAgICAgICByZXN0YXJ0QmxpbmsoKTsKKyAgICAgICAgaWYgKGllKSB7IGUub2xkS2V5Q29kZSA9
IGUua2V5Q29kZTsgZS5rZXlDb2RlID0gMDsgfQorICAgICAgfQorICAgICAgcmV0dXJuIGhhbmRs
ZWQ7CisgICAgfQorICAgIGZ1bmN0aW9uIGhhbmRsZUNoYXJCaW5kaW5nKGUsIGNoKSB7CisgICAg
ICB2YXIgaGFuZGxlZCA9IGxvb2t1cEtleSgiJyIgKyBjaCArICInIiwgb3B0aW9ucy5leHRyYUtl
eXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmtleU1hcCwgZnVuY3Rp
b24oYikgeyByZXR1cm4gZG9IYW5kbGVCaW5kaW5nKGIsIHRydWUpOyB9KTsKKyAgICAgIGlmICho
YW5kbGVkKSB7CisgICAgICAgIGVfcHJldmVudERlZmF1bHQoZSk7CisgICAgICAgIHJlc3RhcnRC
bGluaygpOworICAgICAgfQorICAgICAgcmV0dXJuIGhhbmRsZWQ7CisgICAgfQorCisgICAgdmFy
IGxhc3RTdG9wcGVkS2V5ID0gbnVsbDsKKyAgICBmdW5jdGlvbiBvbktleURvd24oZSkgeworICAg
ICAgaWYgKCFmb2N1c2VkKSBvbkZvY3VzKCk7CisgICAgICBpZiAoaWUgJiYgZS5rZXlDb2RlID09
IDI3KSB7IGUucmV0dXJuVmFsdWUgPSBmYWxzZTsgfQorICAgICAgaWYgKHBvbGxpbmdGYXN0KSB7
IGlmIChyZWFkSW5wdXQoKSkgcG9sbGluZ0Zhc3QgPSBmYWxzZTsgfQorICAgICAgaWYgKG9wdGlv
bnMub25LZXlFdmVudCAmJiBvcHRpb25zLm9uS2V5RXZlbnQoaW5zdGFuY2UsIGFkZFN0b3AoZSkp
KSByZXR1cm47CisgICAgICB2YXIgY29kZSA9IGVfcHJvcChlLCAia2V5Q29kZSIpOworICAgICAg
Ly8gSUUgZG9lcyBzdHJhbmdlIHRoaW5ncyB3aXRoIGVzY2FwZS4KKyAgICAgIHNldFNoaWZ0KGNv
ZGUgPT0gMTYgfHwgZV9wcm9wKGUsICJzaGlmdEtleSIpKTsKKyAgICAgIC8vIEZpcnN0IGdpdmUg
b25LZXlFdmVudCBvcHRpb24gYSBjaGFuY2UgdG8gaGFuZGxlIHRoaXMuCisgICAgICB2YXIgaGFu
ZGxlZCA9IGhhbmRsZUtleUJpbmRpbmcoZSk7CisgICAgICBpZiAob3BlcmEpIHsKKyAgICAgICAg
bGFzdFN0b3BwZWRLZXkgPSBoYW5kbGVkID8gY29kZSA6IG51bGw7CisgICAgICAgIC8vIE9wZXJh
IGhhcyBubyBjdXQgZXZlbnQuLi4gd2UgdHJ5IHRvIGF0IGxlYXN0IGNhdGNoIHRoZSBrZXkgY29t
Ym8KKyAgICAgICAgaWYgKCFoYW5kbGVkICYmIGNvZGUgPT0gODggJiYgZV9wcm9wKGUsIG1hYyA/
ICJtZXRhS2V5IiA6ICJjdHJsS2V5IikpCisgICAgICAgICAgcmVwbGFjZVNlbGVjdGlvbigiIik7
CisgICAgICB9CisgICAgfQorICAgIGZ1bmN0aW9uIG9uS2V5UHJlc3MoZSkgeworICAgICAgaWYg
KHBvbGxpbmdGYXN0KSByZWFkSW5wdXQoKTsKKyAgICAgIGlmIChvcHRpb25zLm9uS2V5RXZlbnQg
JiYgb3B0aW9ucy5vbktleUV2ZW50KGluc3RhbmNlLCBhZGRTdG9wKGUpKSkgcmV0dXJuOworICAg
ICAgdmFyIGtleUNvZGUgPSBlX3Byb3AoZSwgImtleUNvZGUiKSwgY2hhckNvZGUgPSBlX3Byb3Ao
ZSwgImNoYXJDb2RlIik7CisgICAgICBpZiAob3BlcmEgJiYga2V5Q29kZSA9PSBsYXN0U3RvcHBl
ZEtleSkge2xhc3RTdG9wcGVkS2V5ID0gbnVsbDsgZV9wcmV2ZW50RGVmYXVsdChlKTsgcmV0dXJu
O30KKyAgICAgIGlmICgoKG9wZXJhICYmICghZS53aGljaCB8fCBlLndoaWNoIDwgMTApKSB8fCBr
aHRtbCkgJiYgaGFuZGxlS2V5QmluZGluZyhlKSkgcmV0dXJuOworICAgICAgdmFyIGNoID0gU3Ry
aW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSA9PSBudWxsID8ga2V5Q29kZSA6IGNoYXJDb2RlKTsK
KyAgICAgIGlmIChvcHRpb25zLmVsZWN0cmljQ2hhcnMgJiYgbW9kZS5lbGVjdHJpY0NoYXJzICYm
IG9wdGlvbnMuc21hcnRJbmRlbnQgJiYgIW9wdGlvbnMucmVhZE9ubHkpIHsKKyAgICAgICAgaWYg
KG1vZGUuZWxlY3RyaWNDaGFycy5pbmRleE9mKGNoKSA+IC0xKQorICAgICAgICAgIHNldFRpbWVv
dXQob3BlcmF0aW9uKGZ1bmN0aW9uKCkge2luZGVudExpbmUoc2VsLnRvLmxpbmUsICJzbWFydCIp
O30pLCA3NSk7CisgICAgICB9CisgICAgICBpZiAoaGFuZGxlQ2hhckJpbmRpbmcoZSwgY2gpKSBy
ZXR1cm47CisgICAgICBmYXN0UG9sbCgpOworICAgIH0KKyAgICBmdW5jdGlvbiBvbktleVVwKGUp
IHsKKyAgICAgIGlmIChvcHRpb25zLm9uS2V5RXZlbnQgJiYgb3B0aW9ucy5vbktleUV2ZW50KGlu
c3RhbmNlLCBhZGRTdG9wKGUpKSkgcmV0dXJuOworICAgICAgaWYgKGVfcHJvcChlLCAia2V5Q29k
ZSIpID09IDE2KSBzaGlmdFNlbGVjdGluZyA9IG51bGw7CisgICAgfQorCisgICAgZnVuY3Rpb24g
b25Gb2N1cygpIHsKKyAgICAgIGlmIChvcHRpb25zLnJlYWRPbmx5ID09ICJub2N1cnNvciIpIHJl
dHVybjsKKyAgICAgIGlmICghZm9jdXNlZCkgeworICAgICAgICBpZiAob3B0aW9ucy5vbkZvY3Vz
KSBvcHRpb25zLm9uRm9jdXMoaW5zdGFuY2UpOworICAgICAgICBmb2N1c2VkID0gdHJ1ZTsKKyAg
ICAgICAgaWYgKHNjcm9sbGVyLmNsYXNzTmFtZS5zZWFyY2goL1xiQ29kZU1pcnJvci1mb2N1c2Vk
XGIvKSA9PSAtMSkKKyAgICAgICAgICBzY3JvbGxlci5jbGFzc05hbWUgKz0gIiBDb2RlTWlycm9y
LWZvY3VzZWQiOworICAgICAgICBpZiAoIWxlYXZlSW5wdXRBbG9uZSkgcmVzZXRJbnB1dCh0cnVl
KTsKKyAgICAgIH0KKyAgICAgIHNsb3dQb2xsKCk7CisgICAgICByZXN0YXJ0QmxpbmsoKTsKKyAg
ICB9CisgICAgZnVuY3Rpb24gb25CbHVyKCkgeworICAgICAgaWYgKGZvY3VzZWQpIHsKKyAgICAg
ICAgaWYgKG9wdGlvbnMub25CbHVyKSBvcHRpb25zLm9uQmx1cihpbnN0YW5jZSk7CisgICAgICAg
IGZvY3VzZWQgPSBmYWxzZTsKKyAgICAgICAgaWYgKGJyYWNrZXRIaWdobGlnaHRlZCkKKyAgICAg
ICAgICBvcGVyYXRpb24oZnVuY3Rpb24oKXsKKyAgICAgICAgICAgIGlmIChicmFja2V0SGlnaGxp
Z2h0ZWQpIHsgYnJhY2tldEhpZ2hsaWdodGVkKCk7IGJyYWNrZXRIaWdobGlnaHRlZCA9IG51bGw7
IH0KKyAgICAgICAgICB9KSgpOworICAgICAgICBzY3JvbGxlci5jbGFzc05hbWUgPSBzY3JvbGxl
ci5jbGFzc05hbWUucmVwbGFjZSgiIENvZGVNaXJyb3ItZm9jdXNlZCIsICIiKTsKKyAgICAgIH0K
KyAgICAgIGNsZWFySW50ZXJ2YWwoYmxpbmtlcik7CisgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkge2lmICghZm9jdXNlZCkgc2hpZnRTZWxlY3RpbmcgPSBudWxsO30sIDE1MCk7CisgICAgfQor
CisgICAgLy8gUmVwbGFjZSB0aGUgcmFuZ2UgZnJvbSBmcm9tIHRvIHRvIGJ5IHRoZSBzdHJpbmdz
IGluIG5ld1RleHQuCisgICAgLy8gQWZ0ZXJ3YXJkcywgc2V0IHRoZSBzZWxlY3Rpb24gdG8gc2Vs
RnJvbSwgc2VsVG8uCisgICAgZnVuY3Rpb24gdXBkYXRlTGluZXMoZnJvbSwgdG8sIG5ld1RleHQs
IHNlbEZyb20sIHNlbFRvKSB7CisgICAgICBpZiAoc3VwcHJlc3NFZGl0cykgcmV0dXJuOworICAg
ICAgaWYgKGhpc3RvcnkpIHsKKyAgICAgICAgdmFyIG9sZCA9IFtdOworICAgICAgICBkb2MuaXRl
cihmcm9tLmxpbmUsIHRvLmxpbmUgKyAxLCBmdW5jdGlvbihsaW5lKSB7IG9sZC5wdXNoKGxpbmUu
dGV4dCk7IH0pOworICAgICAgICBoaXN0b3J5LmFkZENoYW5nZShmcm9tLmxpbmUsIG5ld1RleHQu
bGVuZ3RoLCBvbGQpOworICAgICAgICB3aGlsZSAoaGlzdG9yeS5kb25lLmxlbmd0aCA+IG9wdGlv
bnMudW5kb0RlcHRoKSBoaXN0b3J5LmRvbmUuc2hpZnQoKTsKKyAgICAgIH0KKyAgICAgIHVwZGF0
ZUxpbmVzTm9VbmRvKGZyb20sIHRvLCBuZXdUZXh0LCBzZWxGcm9tLCBzZWxUbyk7CisgICAgfQor
ICAgIGZ1bmN0aW9uIHVucmVkb0hlbHBlcihmcm9tLCB0bykgeworICAgICAgaWYgKCFmcm9tLmxl
bmd0aCkgcmV0dXJuOworICAgICAgdmFyIHNldCA9IGZyb20ucG9wKCksIG91dCA9IFtdOworICAg
ICAgZm9yICh2YXIgaSA9IHNldC5sZW5ndGggLSAxOyBpID49IDA7IGkgLT0gMSkgeworICAgICAg
ICB2YXIgY2hhbmdlID0gc2V0W2ldOworICAgICAgICB2YXIgcmVwbGFjZWQgPSBbXSwgZW5kID0g
Y2hhbmdlLnN0YXJ0ICsgY2hhbmdlLmFkZGVkOworICAgICAgICBkb2MuaXRlcihjaGFuZ2Uuc3Rh
cnQsIGVuZCwgZnVuY3Rpb24obGluZSkgeyByZXBsYWNlZC5wdXNoKGxpbmUudGV4dCk7IH0pOwor
ICAgICAgICBvdXQucHVzaCh7c3RhcnQ6IGNoYW5nZS5zdGFydCwgYWRkZWQ6IGNoYW5nZS5vbGQu
bGVuZ3RoLCBvbGQ6IHJlcGxhY2VkfSk7CisgICAgICAgIHZhciBwb3MgPSB7bGluZTogY2hhbmdl
LnN0YXJ0ICsgY2hhbmdlLm9sZC5sZW5ndGggLSAxLAorICAgICAgICAgICAgICAgICAgIGNoOiBl
ZGl0RW5kKHJlcGxhY2VkW3JlcGxhY2VkLmxlbmd0aC0xXSwgY2hhbmdlLm9sZFtjaGFuZ2Uub2xk
Lmxlbmd0aC0xXSl9OworICAgICAgICB1cGRhdGVMaW5lc05vVW5kbyh7bGluZTogY2hhbmdlLnN0
YXJ0LCBjaDogMH0sIHtsaW5lOiBlbmQgLSAxLCBjaDogZ2V0TGluZShlbmQtMSkudGV4dC5sZW5n
dGh9LCBjaGFuZ2Uub2xkLCBwb3MsIHBvcyk7CisgICAgICB9CisgICAgICB1cGRhdGVJbnB1dCA9
IHRydWU7CisgICAgICB0by5wdXNoKG91dCk7CisgICAgfQorICAgIGZ1bmN0aW9uIHVuZG8oKSB7
dW5yZWRvSGVscGVyKGhpc3RvcnkuZG9uZSwgaGlzdG9yeS51bmRvbmUpO30KKyAgICBmdW5jdGlv
biByZWRvKCkge3VucmVkb0hlbHBlcihoaXN0b3J5LnVuZG9uZSwgaGlzdG9yeS5kb25lKTt9CisK
KyAgICBmdW5jdGlvbiB1cGRhdGVMaW5lc05vVW5kbyhmcm9tLCB0bywgbmV3VGV4dCwgc2VsRnJv
bSwgc2VsVG8pIHsKKyAgICAgIGlmIChzdXBwcmVzc0VkaXRzKSByZXR1cm47CisgICAgICB2YXIg
cmVjb21wdXRlTWF4TGVuZ3RoID0gZmFsc2UsIG1heExpbmVMZW5ndGggPSBtYXhMaW5lLnRleHQu
bGVuZ3RoOworICAgICAgaWYgKCFvcHRpb25zLmxpbmVXcmFwcGluZykKKyAgICAgICAgZG9jLml0
ZXIoZnJvbS5saW5lLCB0by5saW5lICsgMSwgZnVuY3Rpb24obGluZSkgeworICAgICAgICAgIGlm
ICghbGluZS5oaWRkZW4gJiYgbGluZS50ZXh0Lmxlbmd0aCA9PSBtYXhMaW5lTGVuZ3RoKSB7cmVj
b21wdXRlTWF4TGVuZ3RoID0gdHJ1ZTsgcmV0dXJuIHRydWU7fQorICAgICAgICB9KTsKKyAgICAg
IGlmIChmcm9tLmxpbmUgIT0gdG8ubGluZSB8fCBuZXdUZXh0Lmxlbmd0aCA+IDEpIGd1dHRlckRp
cnR5ID0gdHJ1ZTsKKworICAgICAgdmFyIG5saW5lcyA9IHRvLmxpbmUgLSBmcm9tLmxpbmUsIGZp
cnN0TGluZSA9IGdldExpbmUoZnJvbS5saW5lKSwgbGFzdExpbmUgPSBnZXRMaW5lKHRvLmxpbmUp
OworICAgICAgLy8gRmlyc3QgYWRqdXN0IHRoZSBsaW5lIHN0cnVjdHVyZSwgdGFraW5nIHNvbWUg
Y2FyZSB0byBsZWF2ZSBoaWdobGlnaHRpbmcgaW50YWN0LgorICAgICAgaWYgKGZyb20uY2ggPT0g
MCAmJiB0by5jaCA9PSAwICYmIG5ld1RleHRbbmV3VGV4dC5sZW5ndGggLSAxXSA9PSAiIikgewor
ICAgICAgICAvLyBUaGlzIGlzIGEgd2hvbGUtbGluZSByZXBsYWNlLiBUcmVhdGVkIHNwZWNpYWxs
eSB0byBtYWtlCisgICAgICAgIC8vIHN1cmUgbGluZSBvYmplY3RzIG1vdmUgdGhlIHdheSB0aGV5
IGFyZSBzdXBwb3NlZCB0by4KKyAgICAgICAgdmFyIGFkZGVkID0gW10sIHByZXZMaW5lID0gbnVs
bDsKKyAgICAgICAgaWYgKGZyb20ubGluZSkgeworICAgICAgICAgIHByZXZMaW5lID0gZ2V0TGlu
ZShmcm9tLmxpbmUgLSAxKTsKKyAgICAgICAgICBwcmV2TGluZS5maXhNYXJrRW5kcyhsYXN0TGlu
ZSk7CisgICAgICAgIH0gZWxzZSBsYXN0TGluZS5maXhNYXJrU3RhcnRzKCk7CisgICAgICAgIGZv
ciAodmFyIGkgPSAwLCBlID0gbmV3VGV4dC5sZW5ndGggLSAxOyBpIDwgZTsgKytpKQorICAgICAg
ICAgIGFkZGVkLnB1c2goTGluZS5pbmhlcml0TWFya3MobmV3VGV4dFtpXSwgcHJldkxpbmUpKTsK
KyAgICAgICAgaWYgKG5saW5lcykgZG9jLnJlbW92ZShmcm9tLmxpbmUsIG5saW5lcywgY2FsbGJh
Y2tzKTsKKyAgICAgICAgaWYgKGFkZGVkLmxlbmd0aCkgZG9jLmluc2VydChmcm9tLmxpbmUsIGFk
ZGVkKTsKKyAgICAgIH0gZWxzZSBpZiAoZmlyc3RMaW5lID09IGxhc3RMaW5lKSB7CisgICAgICAg
IGlmIChuZXdUZXh0Lmxlbmd0aCA9PSAxKQorICAgICAgICAgIGZpcnN0TGluZS5yZXBsYWNlKGZy
b20uY2gsIHRvLmNoLCBuZXdUZXh0WzBdKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgbGFz
dExpbmUgPSBmaXJzdExpbmUuc3BsaXQodG8uY2gsIG5ld1RleHRbbmV3VGV4dC5sZW5ndGgtMV0p
OworICAgICAgICAgIGZpcnN0TGluZS5yZXBsYWNlKGZyb20uY2gsIG51bGwsIG5ld1RleHRbMF0p
OworICAgICAgICAgIGZpcnN0TGluZS5maXhNYXJrRW5kcyhsYXN0TGluZSk7CisgICAgICAgICAg
dmFyIGFkZGVkID0gW107CisgICAgICAgICAgZm9yICh2YXIgaSA9IDEsIGUgPSBuZXdUZXh0Lmxl
bmd0aCAtIDE7IGkgPCBlOyArK2kpCisgICAgICAgICAgICBhZGRlZC5wdXNoKExpbmUuaW5oZXJp
dE1hcmtzKG5ld1RleHRbaV0sIGZpcnN0TGluZSkpOworICAgICAgICAgIGFkZGVkLnB1c2gobGFz
dExpbmUpOworICAgICAgICAgIGRvYy5pbnNlcnQoZnJvbS5saW5lICsgMSwgYWRkZWQpOworICAg
ICAgICB9CisgICAgICB9IGVsc2UgaWYgKG5ld1RleHQubGVuZ3RoID09IDEpIHsKKyAgICAgICAg
Zmlyc3RMaW5lLnJlcGxhY2UoZnJvbS5jaCwgbnVsbCwgbmV3VGV4dFswXSk7CisgICAgICAgIGxh
c3RMaW5lLnJlcGxhY2UobnVsbCwgdG8uY2gsICIiKTsKKyAgICAgICAgZmlyc3RMaW5lLmFwcGVu
ZChsYXN0TGluZSk7CisgICAgICAgIGRvYy5yZW1vdmUoZnJvbS5saW5lICsgMSwgbmxpbmVzLCBj
YWxsYmFja3MpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIGFkZGVkID0gW107CisgICAg
ICAgIGZpcnN0TGluZS5yZXBsYWNlKGZyb20uY2gsIG51bGwsIG5ld1RleHRbMF0pOworICAgICAg
ICBsYXN0TGluZS5yZXBsYWNlKG51bGwsIHRvLmNoLCBuZXdUZXh0W25ld1RleHQubGVuZ3RoLTFd
KTsKKyAgICAgICAgZmlyc3RMaW5lLmZpeE1hcmtFbmRzKGxhc3RMaW5lKTsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDEsIGUgPSBuZXdUZXh0Lmxlbmd0aCAtIDE7IGkgPCBlOyArK2kpCisgICAgICAg
ICAgYWRkZWQucHVzaChMaW5lLmluaGVyaXRNYXJrcyhuZXdUZXh0W2ldLCBmaXJzdExpbmUpKTsK
KyAgICAgICAgaWYgKG5saW5lcyA+IDEpIGRvYy5yZW1vdmUoZnJvbS5saW5lICsgMSwgbmxpbmVz
IC0gMSwgY2FsbGJhY2tzKTsKKyAgICAgICAgZG9jLmluc2VydChmcm9tLmxpbmUgKyAxLCBhZGRl
ZCk7CisgICAgICB9CisgICAgICBpZiAob3B0aW9ucy5saW5lV3JhcHBpbmcpIHsKKyAgICAgICAg
dmFyIHBlckxpbmUgPSBNYXRoLm1heCg1LCBzY3JvbGxlci5jbGllbnRXaWR0aCAvIGNoYXJXaWR0
aCgpIC0gMyk7CisgICAgICAgIGRvYy5pdGVyKGZyb20ubGluZSwgZnJvbS5saW5lICsgbmV3VGV4
dC5sZW5ndGgsIGZ1bmN0aW9uKGxpbmUpIHsKKyAgICAgICAgICBpZiAobGluZS5oaWRkZW4pIHJl
dHVybjsKKyAgICAgICAgICB2YXIgZ3Vlc3MgPSBNYXRoLmNlaWwobGluZS50ZXh0Lmxlbmd0aCAv
IHBlckxpbmUpIHx8IDE7CisgICAgICAgICAgaWYgKGd1ZXNzICE9IGxpbmUuaGVpZ2h0KSB1cGRh
dGVMaW5lSGVpZ2h0KGxpbmUsIGd1ZXNzKTsKKyAgICAgICAgfSk7CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBkb2MuaXRlcihmcm9tLmxpbmUsIGZyb20ubGluZSArIG5ld1RleHQubGVuZ3RoLCBm
dW5jdGlvbihsaW5lKSB7CisgICAgICAgICAgdmFyIGwgPSBsaW5lLnRleHQ7CisgICAgICAgICAg
aWYgKCFsaW5lLmhpZGRlbiAmJiBsLmxlbmd0aCA+IG1heExpbmVMZW5ndGgpIHsKKyAgICAgICAg
ICAgIG1heExpbmUgPSBsaW5lOyBtYXhMaW5lTGVuZ3RoID0gbC5sZW5ndGg7IG1heExpbmVDaGFu
Z2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJlY29tcHV0ZU1heExlbmd0aCA9IGZhbHNlOworICAg
ICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIGlmIChyZWNvbXB1dGVNYXhMZW5ndGgpIHVw
ZGF0ZU1heExpbmUgPSB0cnVlOworICAgICAgfQorCisgICAgICAvLyBBZGQgdGhlc2UgbGluZXMg
dG8gdGhlIHdvcmsgYXJyYXksIHNvIHRoYXQgdGhleSB3aWxsIGJlCisgICAgICAvLyBoaWdobGln
aHRlZC4gQWRqdXN0IHdvcmsgbGluZXMgaWYgbGluZXMgd2VyZSBhZGRlZC9yZW1vdmVkLgorICAg
ICAgdmFyIG5ld1dvcmsgPSBbXSwgbGVuZGlmZiA9IG5ld1RleHQubGVuZ3RoIC0gbmxpbmVzIC0g
MTsKKyAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gd29yay5sZW5ndGg7IGkgPCBsOyArK2kpIHsK
KyAgICAgICAgdmFyIHRhc2sgPSB3b3JrW2ldOworICAgICAgICBpZiAodGFzayA8IGZyb20ubGlu
ZSkgbmV3V29yay5wdXNoKHRhc2spOworICAgICAgICBlbHNlIGlmICh0YXNrID4gdG8ubGluZSkg
bmV3V29yay5wdXNoKHRhc2sgKyBsZW5kaWZmKTsKKyAgICAgIH0KKyAgICAgIHZhciBobEVuZCA9
IGZyb20ubGluZSArIE1hdGgubWluKG5ld1RleHQubGVuZ3RoLCA1MDApOworICAgICAgaGlnaGxp
Z2h0TGluZXMoZnJvbS5saW5lLCBobEVuZCk7CisgICAgICBuZXdXb3JrLnB1c2goaGxFbmQpOwor
ICAgICAgd29yayA9IG5ld1dvcms7CisgICAgICBzdGFydFdvcmtlcigxMDApOworICAgICAgLy8g
UmVtZW1iZXIgdGhhdCB0aGVzZSBsaW5lcyBjaGFuZ2VkLCBmb3IgdXBkYXRpbmcgdGhlIGRpc3Bs
YXkKKyAgICAgIGNoYW5nZXMucHVzaCh7ZnJvbTogZnJvbS5saW5lLCB0bzogdG8ubGluZSArIDEs
IGRpZmY6IGxlbmRpZmZ9KTsKKyAgICAgIHZhciBjaGFuZ2VPYmogPSB7ZnJvbTogZnJvbSwgdG86
IHRvLCB0ZXh0OiBuZXdUZXh0fTsKKyAgICAgIGlmICh0ZXh0Q2hhbmdlZCkgeworICAgICAgICBm
b3IgKHZhciBjdXIgPSB0ZXh0Q2hhbmdlZDsgY3VyLm5leHQ7IGN1ciA9IGN1ci5uZXh0KSB7fQor
ICAgICAgICBjdXIubmV4dCA9IGNoYW5nZU9iajsKKyAgICAgIH0gZWxzZSB0ZXh0Q2hhbmdlZCA9
IGNoYW5nZU9iajsKKworICAgICAgLy8gVXBkYXRlIHRoZSBzZWxlY3Rpb24KKyAgICAgIGZ1bmN0
aW9uIHVwZGF0ZUxpbmUobikge3JldHVybiBuIDw9IE1hdGgubWluKHRvLmxpbmUsIHRvLmxpbmUg
KyBsZW5kaWZmKSA/IG4gOiBuICsgbGVuZGlmZjt9CisgICAgICBzZXRTZWxlY3Rpb24oY2xpcFBv
cyhzZWxGcm9tKSwgY2xpcFBvcyhzZWxUbyksCisgICAgICAgICAgICAgICAgICAgdXBkYXRlTGlu
ZShzZWwuZnJvbS5saW5lKSwgdXBkYXRlTGluZShzZWwudG8ubGluZSkpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIG5lZWRzU2Nyb2xsYmFyKCkgeworICAgICAgdmFyIHJlYWxIZWlnaHQgPSBkb2Mu
aGVpZ2h0ICogdGV4dEhlaWdodCgpICsgMiAqIHBhZGRpbmdUb3AoKTsKKyAgICAgIHJldHVybiBy
ZWFsSGVpZ2h0IC0gMSA+IHNjcm9sbGVyLm9mZnNldEhlaWdodCA/IHJlYWxIZWlnaHQgOiBmYWxz
ZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB1cGRhdGVWZXJ0aWNhbFNjcm9sbChzY3JvbGxUb3Ap
IHsKKyAgICAgIHZhciBzY3JvbGxIZWlnaHQgPSBuZWVkc1Njcm9sbGJhcigpOworICAgICAgc2Ny
b2xsYmFyLnN0eWxlLmRpc3BsYXkgPSBzY3JvbGxIZWlnaHQgPyAiYmxvY2siIDogIm5vbmUiOwor
ICAgICAgaWYgKHNjcm9sbEhlaWdodCkgeworICAgICAgICBzY3JvbGxiYXJJbm5lci5zdHlsZS5o
ZWlnaHQgPSBzaXplci5zdHlsZS5taW5IZWlnaHQgPSBzY3JvbGxIZWlnaHQgKyAicHgiOworICAg
ICAgICBzY3JvbGxiYXIuc3R5bGUuaGVpZ2h0ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0ICsgInB4
IjsKKyAgICAgICAgaWYgKHNjcm9sbFRvcCAhPSBudWxsKSBzY3JvbGxiYXIuc2Nyb2xsVG9wID0g
c2Nyb2xsZXIuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
c2l6ZXIuc3R5bGUubWluSGVpZ2h0ID0gIiI7CisgICAgICB9CisgICAgICAvLyBQb3NpdGlvbiB0
aGUgbW92ZXIgZGl2IHRvIGFsaWduIHdpdGggdGhlIGN1cnJlbnQgdmlydHVhbCBzY3JvbGwgcG9z
aXRpb24KKyAgICAgIG1vdmVyLnN0eWxlLnRvcCA9IGRpc3BsYXlPZmZzZXQgKiB0ZXh0SGVpZ2h0
KCkgKyAicHgiOworICAgIH0KKworICAgIC8vIE9uIE1hYyBPUyBYIExpb24gYW5kIHVwLCBkZXRl
Y3Qgd2hldGhlciB0aGUgbW91c2UgaXMgcGx1Z2dlZCBpbiBieSBtZWFzdXJpbmcKKyAgICAvLyB0
aGUgd2lkdGggb2YgYSBkaXYgd2l0aCBhIHNjcm9sbGJhciBpbiBpdC4gSWYgdGhlIHdpZHRoIGlz
IDw9IDEsIHRoZW4KKyAgICAvLyB0aGUgbW91c2UgaXNuJ3QgcGx1Z2dlZCBpbiBhbmQgc2Nyb2xs
YmFycyBzaG91bGQgb3ZlcmxhcCB0aGUgY29udGVudC4KKyAgICBmdW5jdGlvbiBvdmVybGFwU2Ny
b2xsYmFycygpIHsKKyAgICAgIHZhciB0bXBTYklubmVyID0gZWx0KCJkaXYiLCBudWxsLCAiQ29k
ZU1pcnJvci1zY3JvbGxiYXItaW5uZXIiLCAiaGVpZ2h0OiAyMDBweCIpOworICAgICAgdmFyIHRt
cFNiID0gZWx0KCJkaXYiLCBbdG1wU2JJbm5lcl0sICJDb2RlTWlycm9yLXNjcm9sbGJhciIsICJw
b3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IC05OTk5cHg7IGhlaWdodDogMTAwcHg7Iik7CisgICAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRtcFNiKTsKKyAgICAgIHZhciByZXN1bHQgPSAo
dG1wU2Iub2Zmc2V0V2lkdGggPD0gMSk7CisgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxk
KHRtcFNiKTsKKyAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgZnVuY3Rpb24gY29t
cHV0ZU1heExlbmd0aCgpIHsKKyAgICAgIG1heExpbmUgPSBnZXRMaW5lKDApOyBtYXhMaW5lQ2hh
bmdlZCA9IHRydWU7CisgICAgICB2YXIgbWF4TGluZUxlbmd0aCA9IG1heExpbmUudGV4dC5sZW5n
dGg7CisgICAgICBkb2MuaXRlcigxLCBkb2Muc2l6ZSwgZnVuY3Rpb24obGluZSkgeworICAgICAg
ICB2YXIgbCA9IGxpbmUudGV4dDsKKyAgICAgICAgaWYgKCFsaW5lLmhpZGRlbiAmJiBsLmxlbmd0
aCA+IG1heExpbmVMZW5ndGgpIHsKKyAgICAgICAgICBtYXhMaW5lTGVuZ3RoID0gbC5sZW5ndGg7
IG1heExpbmUgPSBsaW5lOworICAgICAgICB9CisgICAgICB9KTsKKyAgICAgIHVwZGF0ZU1heExp
bmUgPSBmYWxzZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiByZXBsYWNlUmFuZ2UoY29kZSwgZnJv
bSwgdG8pIHsKKyAgICAgIGZyb20gPSBjbGlwUG9zKGZyb20pOworICAgICAgaWYgKCF0bykgdG8g
PSBmcm9tOyBlbHNlIHRvID0gY2xpcFBvcyh0byk7CisgICAgICBjb2RlID0gc3BsaXRMaW5lcyhj
b2RlKTsKKyAgICAgIGZ1bmN0aW9uIGFkanVzdFBvcyhwb3MpIHsKKyAgICAgICAgaWYgKHBvc0xl
c3MocG9zLCBmcm9tKSkgcmV0dXJuIHBvczsKKyAgICAgICAgaWYgKCFwb3NMZXNzKHRvLCBwb3Mp
KSByZXR1cm4gZW5kOworICAgICAgICB2YXIgbGluZSA9IHBvcy5saW5lICsgY29kZS5sZW5ndGgg
LSAodG8ubGluZSAtIGZyb20ubGluZSkgLSAxOworICAgICAgICB2YXIgY2ggPSBwb3MuY2g7Cisg
ICAgICAgIGlmIChwb3MubGluZSA9PSB0by5saW5lKQorICAgICAgICAgIGNoICs9IGNvZGVbY29k
ZS5sZW5ndGgtMV0ubGVuZ3RoIC0gKHRvLmNoIC0gKHRvLmxpbmUgPT0gZnJvbS5saW5lID8gZnJv
bS5jaCA6IDApKTsKKyAgICAgICAgcmV0dXJuIHtsaW5lOiBsaW5lLCBjaDogY2h9OworICAgICAg
fQorICAgICAgdmFyIGVuZDsKKyAgICAgIHJlcGxhY2VSYW5nZTEoY29kZSwgZnJvbSwgdG8sIGZ1
bmN0aW9uKGVuZDEpIHsKKyAgICAgICAgZW5kID0gZW5kMTsKKyAgICAgICAgcmV0dXJuIHtmcm9t
OiBhZGp1c3RQb3Moc2VsLmZyb20pLCB0bzogYWRqdXN0UG9zKHNlbC50byl9OworICAgICAgfSk7
CisgICAgICByZXR1cm4gZW5kOworICAgIH0KKyAgICBmdW5jdGlvbiByZXBsYWNlU2VsZWN0aW9u
KGNvZGUsIGNvbGxhcHNlKSB7CisgICAgICByZXBsYWNlUmFuZ2UxKHNwbGl0TGluZXMoY29kZSks
IHNlbC5mcm9tLCBzZWwudG8sIGZ1bmN0aW9uKGVuZCkgeworICAgICAgICBpZiAoY29sbGFwc2Ug
PT0gImVuZCIpIHJldHVybiB7ZnJvbTogZW5kLCB0bzogZW5kfTsKKyAgICAgICAgZWxzZSBpZiAo
Y29sbGFwc2UgPT0gInN0YXJ0IikgcmV0dXJuIHtmcm9tOiBzZWwuZnJvbSwgdG86IHNlbC5mcm9t
fTsKKyAgICAgICAgZWxzZSByZXR1cm4ge2Zyb206IHNlbC5mcm9tLCB0bzogZW5kfTsKKyAgICAg
IH0pOworICAgIH0KKyAgICBmdW5jdGlvbiByZXBsYWNlUmFuZ2UxKGNvZGUsIGZyb20sIHRvLCBj
b21wdXRlU2VsKSB7CisgICAgICB2YXIgZW5kY2ggPSBjb2RlLmxlbmd0aCA9PSAxID8gY29kZVsw
XS5sZW5ndGggKyBmcm9tLmNoIDogY29kZVtjb2RlLmxlbmd0aC0xXS5sZW5ndGg7CisgICAgICB2
YXIgbmV3U2VsID0gY29tcHV0ZVNlbCh7bGluZTogZnJvbS5saW5lICsgY29kZS5sZW5ndGggLSAx
LCBjaDogZW5kY2h9KTsKKyAgICAgIHVwZGF0ZUxpbmVzKGZyb20sIHRvLCBjb2RlLCBuZXdTZWwu
ZnJvbSwgbmV3U2VsLnRvKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBnZXRSYW5nZShmcm9tLCB0
bywgbGluZVNlcCkgeworICAgICAgdmFyIGwxID0gZnJvbS5saW5lLCBsMiA9IHRvLmxpbmU7Cisg
ICAgICBpZiAobDEgPT0gbDIpIHJldHVybiBnZXRMaW5lKGwxKS50ZXh0LnNsaWNlKGZyb20uY2gs
IHRvLmNoKTsKKyAgICAgIHZhciBjb2RlID0gW2dldExpbmUobDEpLnRleHQuc2xpY2UoZnJvbS5j
aCldOworICAgICAgZG9jLml0ZXIobDEgKyAxLCBsMiwgZnVuY3Rpb24obGluZSkgeyBjb2RlLnB1
c2gobGluZS50ZXh0KTsgfSk7CisgICAgICBjb2RlLnB1c2goZ2V0TGluZShsMikudGV4dC5zbGlj
ZSgwLCB0by5jaCkpOworICAgICAgcmV0dXJuIGNvZGUuam9pbihsaW5lU2VwIHx8ICJcbiIpOwor
ICAgIH0KKyAgICBmdW5jdGlvbiBnZXRTZWxlY3Rpb24obGluZVNlcCkgeworICAgICAgcmV0dXJu
IGdldFJhbmdlKHNlbC5mcm9tLCBzZWwudG8sIGxpbmVTZXApOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHNsb3dQb2xsKCkgeworICAgICAgaWYgKHBvbGxpbmdGYXN0KSByZXR1cm47CisgICAgICBw
b2xsLnNldChvcHRpb25zLnBvbGxJbnRlcnZhbCwgZnVuY3Rpb24oKSB7CisgICAgICAgIHN0YXJ0
T3BlcmF0aW9uKCk7CisgICAgICAgIHJlYWRJbnB1dCgpOworICAgICAgICBpZiAoZm9jdXNlZCkg
c2xvd1BvbGwoKTsKKyAgICAgICAgZW5kT3BlcmF0aW9uKCk7CisgICAgICB9KTsKKyAgICB9Cisg
ICAgZnVuY3Rpb24gZmFzdFBvbGwoKSB7CisgICAgICB2YXIgbWlzc2VkID0gZmFsc2U7CisgICAg
ICBwb2xsaW5nRmFzdCA9IHRydWU7CisgICAgICBmdW5jdGlvbiBwKCkgeworICAgICAgICBzdGFy
dE9wZXJhdGlvbigpOworICAgICAgICB2YXIgY2hhbmdlZCA9IHJlYWRJbnB1dCgpOworICAgICAg
ICBpZiAoIWNoYW5nZWQgJiYgIW1pc3NlZCkge21pc3NlZCA9IHRydWU7IHBvbGwuc2V0KDYwLCBw
KTt9CisgICAgICAgIGVsc2Uge3BvbGxpbmdGYXN0ID0gZmFsc2U7IHNsb3dQb2xsKCk7fQorICAg
ICAgICBlbmRPcGVyYXRpb24oKTsKKyAgICAgIH0KKyAgICAgIHBvbGwuc2V0KDIwLCBwKTsKKyAg
ICB9CisKKyAgICAvLyBQcmV2aW5wdXQgaXMgYSBoYWNrIHRvIHdvcmsgd2l0aCBJTUUuIElmIHdl
IHJlc2V0IHRoZSB0ZXh0YXJlYQorICAgIC8vIG9uIGV2ZXJ5IGNoYW5nZSwgdGhhdCBicmVha3Mg
SU1FLiBTbyB3ZSBsb29rIGZvciBjaGFuZ2VzCisgICAgLy8gY29tcGFyZWQgdG8gdGhlIHByZXZp
b3VzIGNvbnRlbnQgaW5zdGVhZC4gKE1vZGVybiBicm93c2VycyBoYXZlCisgICAgLy8gZXZlbnRz
IHRoYXQgaW5kaWNhdGUgSU1FIHRha2luZyBwbGFjZSwgYnV0IHRoZXNlIGFyZSBub3Qgd2lkZWx5
CisgICAgLy8gc3VwcG9ydGVkIG9yIGNvbXBhdGlibGUgZW5vdWdoIHlldCB0byByZWx5IG9uLikK
KyAgICB2YXIgcHJldklucHV0ID0gIiI7CisgICAgZnVuY3Rpb24gcmVhZElucHV0KCkgeworICAg
ICAgaWYgKGxlYXZlSW5wdXRBbG9uZSB8fCAhZm9jdXNlZCB8fCBoYXNTZWxlY3Rpb24oaW5wdXQp
IHx8IG9wdGlvbnMucmVhZE9ubHkpIHJldHVybiBmYWxzZTsKKyAgICAgIHZhciB0ZXh0ID0gaW5w
dXQudmFsdWU7CisgICAgICBpZiAodGV4dCA9PSBwcmV2SW5wdXQpIHJldHVybiBmYWxzZTsKKyAg
ICAgIHNoaWZ0U2VsZWN0aW5nID0gbnVsbDsKKyAgICAgIHZhciBzYW1lID0gMCwgbCA9IE1hdGgu
bWluKHByZXZJbnB1dC5sZW5ndGgsIHRleHQubGVuZ3RoKTsKKyAgICAgIHdoaWxlIChzYW1lIDwg
bCAmJiBwcmV2SW5wdXRbc2FtZV0gPT0gdGV4dFtzYW1lXSkgKytzYW1lOworICAgICAgaWYgKHNh
bWUgPCBwcmV2SW5wdXQubGVuZ3RoKQorICAgICAgICBzZWwuZnJvbSA9IHtsaW5lOiBzZWwuZnJv
bS5saW5lLCBjaDogc2VsLmZyb20uY2ggLSAocHJldklucHV0Lmxlbmd0aCAtIHNhbWUpfTsKKyAg
ICAgIGVsc2UgaWYgKG92ZXJ3cml0ZSAmJiBwb3NFcShzZWwuZnJvbSwgc2VsLnRvKSkKKyAgICAg
ICAgc2VsLnRvID0ge2xpbmU6IHNlbC50by5saW5lLCBjaDogTWF0aC5taW4oZ2V0TGluZShzZWwu
dG8ubGluZSkudGV4dC5sZW5ndGgsIHNlbC50by5jaCArICh0ZXh0Lmxlbmd0aCAtIHNhbWUpKX07
CisgICAgICByZXBsYWNlU2VsZWN0aW9uKHRleHQuc2xpY2Uoc2FtZSksICJlbmQiKTsKKyAgICAg
IGlmICh0ZXh0Lmxlbmd0aCA+IDEwMDApIHsgaW5wdXQudmFsdWUgPSBwcmV2SW5wdXQgPSAiIjsg
fQorICAgICAgZWxzZSBwcmV2SW5wdXQgPSB0ZXh0OworICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIGZ1bmN0aW9uIHJlc2V0SW5wdXQodXNlcikgeworICAgICAgaWYgKCFwb3NFcShzZWwu
ZnJvbSwgc2VsLnRvKSkgeworICAgICAgICBwcmV2SW5wdXQgPSAiIjsKKyAgICAgICAgaW5wdXQu
dmFsdWUgPSBnZXRTZWxlY3Rpb24oKTsKKyAgICAgICAgc2VsZWN0SW5wdXQoaW5wdXQpOworICAg
ICAgfSBlbHNlIGlmICh1c2VyKSBwcmV2SW5wdXQgPSBpbnB1dC52YWx1ZSA9ICIiOworICAgIH0K
KworICAgIGZ1bmN0aW9uIGZvY3VzSW5wdXQoKSB7CisgICAgICBpZiAob3B0aW9ucy5yZWFkT25s
eSAhPSAibm9jdXJzb3IiKSBpbnB1dC5mb2N1cygpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNj
cm9sbEVkaXRvckludG9WaWV3KCkgeworICAgICAgdmFyIHJlY3QgPSBjdXJzb3IuZ2V0Qm91bmRp
bmdDbGllbnRSZWN0KCk7CisgICAgICAvLyBJRSByZXR1cm5zIGJvZ3VzIGNvb3JkaW5hdGVzIHdo
ZW4gdGhlIGluc3RhbmNlIHNpdHMgaW5zaWRlIG9mIGFuIGlmcmFtZSBhbmQgdGhlIGN1cnNvciBp
cyBoaWRkZW4KKyAgICAgIGlmIChpZSAmJiByZWN0LnRvcCA9PSByZWN0LmJvdHRvbSkgcmV0dXJu
OworICAgICAgdmFyIHdpbkggPSB3aW5kb3cuaW5uZXJIZWlnaHQgfHwgTWF0aC5tYXgoZG9jdW1l
bnQuYm9keS5vZmZzZXRIZWlnaHQsIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vZmZzZXRIZWln
aHQpOworICAgICAgaWYgKHJlY3QudG9wIDwgMCB8fCByZWN0LmJvdHRvbSA+IHdpbkgpIHNjcm9s
bEN1cnNvckludG9WaWV3KCk7CisgICAgfQorICAgIGZ1bmN0aW9uIHNjcm9sbEN1cnNvckludG9W
aWV3KCkgeworICAgICAgdmFyIGNvb3JkcyA9IGNhbGN1bGF0ZUN1cnNvckNvb3JkcygpOworICAg
ICAgc2Nyb2xsSW50b1ZpZXcoY29vcmRzLngsIGNvb3Jkcy55LCBjb29yZHMueCwgY29vcmRzLnlC
b3QpOworICAgIH0KKyAgICBmdW5jdGlvbiBjYWxjdWxhdGVDdXJzb3JDb29yZHMoKSB7CisgICAg
ICB2YXIgY3Vyc29yID0gbG9jYWxDb29yZHMoc2VsLmludmVydGVkID8gc2VsLmZyb20gOiBzZWwu
dG8pOworICAgICAgdmFyIHggPSBvcHRpb25zLmxpbmVXcmFwcGluZyA/IE1hdGgubWluKGN1cnNv
ci54LCBsaW5lU3BhY2Uub2Zmc2V0V2lkdGgpIDogY3Vyc29yLng7CisgICAgICByZXR1cm4ge3g6
IHgsIHk6IGN1cnNvci55LCB5Qm90OiBjdXJzb3IueUJvdH07CisgICAgfQorICAgIGZ1bmN0aW9u
IHNjcm9sbEludG9WaWV3KHgxLCB5MSwgeDIsIHkyKSB7CisgICAgICB2YXIgc2Nyb2xsUG9zID0g
Y2FsY3VsYXRlU2Nyb2xsUG9zKHgxLCB5MSwgeDIsIHkyKTsKKyAgICAgIGlmIChzY3JvbGxQb3Mu
c2Nyb2xsTGVmdCAhPSBudWxsKSB7c2Nyb2xsZXIuc2Nyb2xsTGVmdCA9IHNjcm9sbFBvcy5zY3Jv
bGxMZWZ0O30KKyAgICAgIGlmIChzY3JvbGxQb3Muc2Nyb2xsVG9wICE9IG51bGwpIHtzY3JvbGxi
YXIuc2Nyb2xsVG9wID0gc2Nyb2xsZXIuc2Nyb2xsVG9wID0gc2Nyb2xsUG9zLnNjcm9sbFRvcDt9
CisgICAgfQorICAgIGZ1bmN0aW9uIGNhbGN1bGF0ZVNjcm9sbFBvcyh4MSwgeTEsIHgyLCB5Mikg
eworICAgICAgdmFyIHBsID0gcGFkZGluZ0xlZnQoKSwgcHQgPSBwYWRkaW5nVG9wKCk7CisgICAg
ICB5MSArPSBwdDsgeTIgKz0gcHQ7IHgxICs9IHBsOyB4MiArPSBwbDsKKyAgICAgIHZhciBzY3Jl
ZW4gPSBzY3JvbGxlci5jbGllbnRIZWlnaHQsIHNjcmVlbnRvcCA9IHNjcm9sbGJhci5zY3JvbGxU
b3AsIHJlc3VsdCA9IHt9OworICAgICAgdmFyIGRvY0JvdHRvbSA9IG5lZWRzU2Nyb2xsYmFyKCkg
fHwgSW5maW5pdHk7CisgICAgICB2YXIgYXRUb3AgPSB5MSA8IHB0ICsgMTAsIGF0Qm90dG9tID0g
eTIgKyBwdCA+IGRvY0JvdHRvbSAtIDEwOworICAgICAgaWYgKHkxIDwgc2NyZWVudG9wKSByZXN1
bHQuc2Nyb2xsVG9wID0gYXRUb3AgPyAwIDogTWF0aC5tYXgoMCwgeTEpOworICAgICAgZWxzZSBp
ZiAoeTIgPiBzY3JlZW50b3AgKyBzY3JlZW4pIHJlc3VsdC5zY3JvbGxUb3AgPSAoYXRCb3R0b20g
PyBkb2NCb3R0b20gOiB5MikgLSBzY3JlZW47CisKKyAgICAgIHZhciBzY3JlZW53ID0gc2Nyb2xs
ZXIuY2xpZW50V2lkdGgsIHNjcmVlbmxlZnQgPSBzY3JvbGxlci5zY3JvbGxMZWZ0OworICAgICAg
dmFyIGd1dHRlcncgPSBvcHRpb25zLmZpeGVkR3V0dGVyID8gZ3V0dGVyLmNsaWVudFdpZHRoIDog
MDsKKyAgICAgIHZhciBhdExlZnQgPSB4MSA8IGd1dHRlcncgKyBwbCArIDEwOworICAgICAgaWYg
KHgxIDwgc2NyZWVubGVmdCArIGd1dHRlcncgfHwgYXRMZWZ0KSB7CisgICAgICAgIGlmIChhdExl
ZnQpIHgxID0gMDsKKyAgICAgICAgcmVzdWx0LnNjcm9sbExlZnQgPSBNYXRoLm1heCgwLCB4MSAt
IDEwIC0gZ3V0dGVydyk7CisgICAgICB9IGVsc2UgaWYgKHgyID4gc2NyZWVudyArIHNjcmVlbmxl
ZnQgLSAzKSB7CisgICAgICAgIHJlc3VsdC5zY3JvbGxMZWZ0ID0geDIgKyAxMCAtIHNjcmVlbnc7
CisgICAgICB9CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGZ1bmN0aW9uIHZp
c2libGVMaW5lcyhzY3JvbGxUb3ApIHsKKyAgICAgIHZhciBsaCA9IHRleHRIZWlnaHQoKSwgdG9w
ID0gKHNjcm9sbFRvcCAhPSBudWxsID8gc2Nyb2xsVG9wIDogc2Nyb2xsYmFyLnNjcm9sbFRvcCkg
LSBwYWRkaW5nVG9wKCk7CisgICAgICB2YXIgZnJvbUhlaWdodCA9IE1hdGgubWF4KDAsIE1hdGgu
Zmxvb3IodG9wIC8gbGgpKTsKKyAgICAgIHZhciB0b0hlaWdodCA9IE1hdGguY2VpbCgodG9wICsg
c2Nyb2xsZXIuY2xpZW50SGVpZ2h0KSAvIGxoKTsKKyAgICAgIHJldHVybiB7ZnJvbTogbGluZUF0
SGVpZ2h0KGRvYywgZnJvbUhlaWdodCksCisgICAgICAgICAgICAgIHRvOiBsaW5lQXRIZWlnaHQo
ZG9jLCB0b0hlaWdodCl9OworICAgIH0KKyAgICAvLyBVc2VzIGEgc2V0IG9mIGNoYW5nZXMgcGx1
cyB0aGUgY3VycmVudCBzY3JvbGwgcG9zaXRpb24gdG8KKyAgICAvLyBkZXRlcm1pbmUgd2hpY2gg
RE9NIHVwZGF0ZXMgaGF2ZSB0byBiZSBtYWRlLCBhbmQgbWFrZXMgdGhlCisgICAgLy8gdXBkYXRl
cy4KKyAgICBmdW5jdGlvbiB1cGRhdGVEaXNwbGF5KGNoYW5nZXMsIHN1cHByZXNzQ2FsbGJhY2ss
IHNjcm9sbFRvcCkgeworICAgICAgaWYgKCFzY3JvbGxlci5jbGllbnRXaWR0aCkgeworICAgICAg
ICBzaG93aW5nRnJvbSA9IHNob3dpbmdUbyA9IGRpc3BsYXlPZmZzZXQgPSAwOworICAgICAgICBy
ZXR1cm47CisgICAgICB9CisgICAgICAvLyBDb21wdXRlIHRoZSBuZXcgdmlzaWJsZSB3aW5kb3cK
KyAgICAgIC8vIElmIHNjcm9sbFRvcCBpcyBzcGVjaWZpZWQsIHVzZSB0aGF0IHRvIGRldGVybWlu
ZSB3aGljaCBsaW5lcworICAgICAgLy8gdG8gcmVuZGVyIGluc3RlYWQgb2YgdGhlIGN1cnJlbnQg
c2Nyb2xsYmFyIHBvc2l0aW9uLgorICAgICAgdmFyIHZpc2libGUgPSB2aXNpYmxlTGluZXMoc2Ny
b2xsVG9wKTsKKyAgICAgIC8vIEJhaWwgb3V0IGlmIHRoZSB2aXNpYmxlIGFyZWEgaXMgYWxyZWFk
eSByZW5kZXJlZCBhbmQgbm90aGluZyBjaGFuZ2VkLgorICAgICAgaWYgKGNoYW5nZXMgIT09IHRy
dWUgJiYgY2hhbmdlcy5sZW5ndGggPT0gMCAmJiB2aXNpYmxlLmZyb20gPiBzaG93aW5nRnJvbSAm
JiB2aXNpYmxlLnRvIDwgc2hvd2luZ1RvKSB7CisgICAgICAgIHVwZGF0ZVZlcnRpY2FsU2Nyb2xs
KHNjcm9sbFRvcCk7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAgICAgIHZhciBmcm9tID0g
TWF0aC5tYXgodmlzaWJsZS5mcm9tIC0gMTAwLCAwKSwgdG8gPSBNYXRoLm1pbihkb2Muc2l6ZSwg
dmlzaWJsZS50byArIDEwMCk7CisgICAgICBpZiAoc2hvd2luZ0Zyb20gPCBmcm9tICYmIGZyb20g
LSBzaG93aW5nRnJvbSA8IDIwKSBmcm9tID0gc2hvd2luZ0Zyb207CisgICAgICBpZiAoc2hvd2lu
Z1RvID4gdG8gJiYgc2hvd2luZ1RvIC0gdG8gPCAyMCkgdG8gPSBNYXRoLm1pbihkb2Muc2l6ZSwg
c2hvd2luZ1RvKTsKKworICAgICAgLy8gQ3JlYXRlIGEgcmFuZ2Ugb2YgdGhlb3JldGljYWxseSBp
bnRhY3QgbGluZXMsIGFuZCBwdW5jaCBob2xlcworICAgICAgLy8gaW4gdGhhdCB1c2luZyB0aGUg
Y2hhbmdlIGluZm8uCisgICAgICB2YXIgaW50YWN0ID0gY2hhbmdlcyA9PT0gdHJ1ZSA/IFtdIDoK
KyAgICAgICAgY29tcHV0ZUludGFjdChbe2Zyb206IHNob3dpbmdGcm9tLCB0bzogc2hvd2luZ1Rv
LCBkb21TdGFydDogMH1dLCBjaGFuZ2VzKTsKKyAgICAgIC8vIENsaXAgb2ZmIHRoZSBwYXJ0cyB0
aGF0IHdvbid0IGJlIHZpc2libGUKKyAgICAgIHZhciBpbnRhY3RMaW5lcyA9IDA7CisgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGludGFjdC5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgcmFu
Z2UgPSBpbnRhY3RbaV07CisgICAgICAgIGlmIChyYW5nZS5mcm9tIDwgZnJvbSkge3JhbmdlLmRv
bVN0YXJ0ICs9IChmcm9tIC0gcmFuZ2UuZnJvbSk7IHJhbmdlLmZyb20gPSBmcm9tO30KKyAgICAg
ICAgaWYgKHJhbmdlLnRvID4gdG8pIHJhbmdlLnRvID0gdG87CisgICAgICAgIGlmIChyYW5nZS5m
cm9tID49IHJhbmdlLnRvKSBpbnRhY3Quc3BsaWNlKGktLSwgMSk7CisgICAgICAgIGVsc2UgaW50
YWN0TGluZXMgKz0gcmFuZ2UudG8gLSByYW5nZS5mcm9tOworICAgICAgfQorICAgICAgaWYgKGlu
dGFjdExpbmVzID09IHRvIC0gZnJvbSAmJiBmcm9tID09IHNob3dpbmdGcm9tICYmIHRvID09IHNo
b3dpbmdUbykgeworICAgICAgICB1cGRhdGVWZXJ0aWNhbFNjcm9sbChzY3JvbGxUb3ApOworICAg
ICAgICByZXR1cm47CisgICAgICB9CisgICAgICBpbnRhY3Quc29ydChmdW5jdGlvbihhLCBiKSB7
cmV0dXJuIGEuZG9tU3RhcnQgLSBiLmRvbVN0YXJ0O30pOworCisgICAgICB2YXIgdGggPSB0ZXh0
SGVpZ2h0KCksIGd1dHRlckRpc3BsYXkgPSBndXR0ZXIuc3R5bGUuZGlzcGxheTsKKyAgICAgIGxp
bmVEaXYuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICAgIHBhdGNoRGlzcGxheShmcm9tLCB0
bywgaW50YWN0KTsKKyAgICAgIGxpbmVEaXYuc3R5bGUuZGlzcGxheSA9IGd1dHRlci5zdHlsZS5k
aXNwbGF5ID0gIiI7CisKKyAgICAgIHZhciBkaWZmZXJlbnQgPSBmcm9tICE9IHNob3dpbmdGcm9t
IHx8IHRvICE9IHNob3dpbmdUbyB8fCBsYXN0U2l6ZUMgIT0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0
ICsgdGg7CisgICAgICAvLyBUaGlzIGlzIGp1c3QgYSBib2d1cyBmb3JtdWxhIHRoYXQgZGV0ZWN0
cyB3aGVuIHRoZSBlZGl0b3IgaXMKKyAgICAgIC8vIHJlc2l6ZWQgb3IgdGhlIGZvbnQgc2l6ZSBj
aGFuZ2VzLgorICAgICAgaWYgKGRpZmZlcmVudCkgbGFzdFNpemVDID0gc2Nyb2xsZXIuY2xpZW50
SGVpZ2h0ICsgdGg7CisgICAgICBzaG93aW5nRnJvbSA9IGZyb207IHNob3dpbmdUbyA9IHRvOwor
ICAgICAgZGlzcGxheU9mZnNldCA9IGhlaWdodEF0TGluZShkb2MsIGZyb20pOworCisgICAgICAv
LyBTaW5jZSB0aGlzIGlzIGFsbCByYXRoZXIgZXJyb3IgcHJvbmUsIGl0IGlzIGhvbm91cmVkIHdp
dGggdGhlCisgICAgICAvLyBvbmx5IGFzc2VydGlvbiBpbiB0aGUgd2hvbGUgZmlsZS4KKyAgICAg
IGlmIChsaW5lRGl2LmNoaWxkTm9kZXMubGVuZ3RoICE9IHNob3dpbmdUbyAtIHNob3dpbmdGcm9t
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJBRCBQQVRDSCEgIiArIEpTT04uc3RyaW5naWZ5
KGludGFjdCkgKyAiIHNpemU9IiArIChzaG93aW5nVG8gLSBzaG93aW5nRnJvbSkgKworICAgICAg
ICAgICAgICAgICAgICAgICAgIiBub2Rlcz0iICsgbGluZURpdi5jaGlsZE5vZGVzLmxlbmd0aCk7
CisKKyAgICAgIGZ1bmN0aW9uIGNoZWNrSGVpZ2h0cygpIHsKKyAgICAgICAgdmFyIGN1ck5vZGUg
PSBsaW5lRGl2LmZpcnN0Q2hpbGQsIGhlaWdodENoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgZG9j
Lml0ZXIoc2hvd2luZ0Zyb20sIHNob3dpbmdUbywgZnVuY3Rpb24obGluZSkgeworICAgICAgICAg
IC8vIFdvcmsgYXJvdW5kIGJpemFycm8gSUU3IGJ1ZyB3aGVyZSwgc29tZXRpbWVzLCBvdXIgY3Vy
Tm9kZQorICAgICAgICAgIC8vIGlzIG1hZ2ljYWxseSByZXBsYWNlZCB3aXRoIGEgbmV3IG5vZGUg
aW4gdGhlIERPTSwgbGVhdmluZworICAgICAgICAgIC8vIHVzIHdpdGggYSByZWZlcmVuY2UgdG8g
YW4gb3JwaGFuIChuZXh0U2libGluZy1sZXNzKSBub2RlLgorICAgICAgICAgIGlmICghY3VyTm9k
ZSkgcmV0dXJuOworICAgICAgICAgIGlmICghbGluZS5oaWRkZW4pIHsKKyAgICAgICAgICAgIHZh
ciBoZWlnaHQgPSBNYXRoLnJvdW5kKGN1ck5vZGUub2Zmc2V0SGVpZ2h0IC8gdGgpIHx8IDE7Cisg
ICAgICAgICAgICBpZiAobGluZS5oZWlnaHQgIT0gaGVpZ2h0KSB7CisgICAgICAgICAgICAgIHVw
ZGF0ZUxpbmVIZWlnaHQobGluZSwgaGVpZ2h0KTsKKyAgICAgICAgICAgICAgZ3V0dGVyRGlydHkg
PSBoZWlnaHRDaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAg
ICAgICAgY3VyTm9kZSA9IGN1ck5vZGUubmV4dFNpYmxpbmc7CisgICAgICAgIH0pOworICAgICAg
ICByZXR1cm4gaGVpZ2h0Q2hhbmdlZDsKKyAgICAgIH0KKworICAgICAgaWYgKG9wdGlvbnMubGlu
ZVdyYXBwaW5nKSB7CisgICAgICAgIGNoZWNrSGVpZ2h0cygpOworICAgICAgICB2YXIgc2Nyb2xs
SGVpZ2h0ID0gbmVlZHNTY3JvbGxiYXIoKTsKKyAgICAgICAgdmFyIHNob3VsZEhhdmVTY3JvbGxi
YXIgPSBzY3JvbGxIZWlnaHQgPyAiYmxvY2siIDogIm5vbmUiOworICAgICAgICBpZiAoc2Nyb2xs
YmFyLnN0eWxlLmRpc3BsYXkgIT0gc2hvdWxkSGF2ZVNjcm9sbGJhcikgeworICAgICAgICAgIHNj
cm9sbGJhci5zdHlsZS5kaXNwbGF5ID0gc2hvdWxkSGF2ZVNjcm9sbGJhcjsKKyAgICAgICAgICBp
ZiAoc2Nyb2xsSGVpZ2h0KSBzY3JvbGxiYXJJbm5lci5zdHlsZS5oZWlnaHQgPSBzY3JvbGxIZWln
aHQgKyAicHgiOworICAgICAgICAgIGNoZWNrSGVpZ2h0cygpOworICAgICAgICB9CisgICAgICB9
CisKKyAgICAgIGd1dHRlci5zdHlsZS5kaXNwbGF5ID0gZ3V0dGVyRGlzcGxheTsKKyAgICAgIGlm
IChkaWZmZXJlbnQgfHwgZ3V0dGVyRGlydHkpIHsKKyAgICAgICAgLy8gSWYgdGhlIGd1dHRlciBn
cmV3IGluIHNpemUsIHJlLWNoZWNrIGhlaWdodHMuIElmIHRob3NlIGNoYW5nZWQsIHJlLWRyYXcg
Z3V0dGVyLgorICAgICAgICB1cGRhdGVHdXR0ZXIoKSAmJiBvcHRpb25zLmxpbmVXcmFwcGluZyAm
JiBjaGVja0hlaWdodHMoKSAmJiB1cGRhdGVHdXR0ZXIoKTsKKyAgICAgIH0KKyAgICAgIHVwZGF0
ZVZlcnRpY2FsU2Nyb2xsKHNjcm9sbFRvcCk7CisgICAgICB1cGRhdGVTZWxlY3Rpb24oKTsKKyAg
ICAgIGlmICghc3VwcHJlc3NDYWxsYmFjayAmJiBvcHRpb25zLm9uVXBkYXRlKSBvcHRpb25zLm9u
VXBkYXRlKGluc3RhbmNlKTsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGZ1bmN0
aW9uIGNvbXB1dGVJbnRhY3QoaW50YWN0LCBjaGFuZ2VzKSB7CisgICAgICBmb3IgKHZhciBpID0g
MCwgbCA9IGNoYW5nZXMubGVuZ3RoIHx8IDA7IGkgPCBsOyArK2kpIHsKKyAgICAgICAgdmFyIGNo
YW5nZSA9IGNoYW5nZXNbaV0sIGludGFjdDIgPSBbXSwgZGlmZiA9IGNoYW5nZS5kaWZmIHx8IDA7
CisgICAgICAgIGZvciAodmFyIGogPSAwLCBsMiA9IGludGFjdC5sZW5ndGg7IGogPCBsMjsgKytq
KSB7CisgICAgICAgICAgdmFyIHJhbmdlID0gaW50YWN0W2pdOworICAgICAgICAgIGlmIChjaGFu
Z2UudG8gPD0gcmFuZ2UuZnJvbSAmJiBjaGFuZ2UuZGlmZikKKyAgICAgICAgICAgIGludGFjdDIu
cHVzaCh7ZnJvbTogcmFuZ2UuZnJvbSArIGRpZmYsIHRvOiByYW5nZS50byArIGRpZmYsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvbVN0YXJ0OiByYW5nZS5kb21TdGFydH0pOworICAgICAg
ICAgIGVsc2UgaWYgKGNoYW5nZS50byA8PSByYW5nZS5mcm9tIHx8IGNoYW5nZS5mcm9tID49IHJh
bmdlLnRvKQorICAgICAgICAgICAgaW50YWN0Mi5wdXNoKHJhbmdlKTsKKyAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIGlmIChjaGFuZ2UuZnJvbSA+IHJhbmdlLmZyb20pCisgICAgICAgICAg
ICAgIGludGFjdDIucHVzaCh7ZnJvbTogcmFuZ2UuZnJvbSwgdG86IGNoYW5nZS5mcm9tLCBkb21T
dGFydDogcmFuZ2UuZG9tU3RhcnR9KTsKKyAgICAgICAgICAgIGlmIChjaGFuZ2UudG8gPCByYW5n
ZS50bykKKyAgICAgICAgICAgICAgaW50YWN0Mi5wdXNoKHtmcm9tOiBjaGFuZ2UudG8gKyBkaWZm
LCB0bzogcmFuZ2UudG8gKyBkaWZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbVN0
YXJ0OiByYW5nZS5kb21TdGFydCArIChjaGFuZ2UudG8gLSByYW5nZS5mcm9tKX0pOworICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBpbnRhY3QgPSBpbnRhY3QyOworICAgICAgfQorICAg
ICAgcmV0dXJuIGludGFjdDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwYXRjaERpc3BsYXkoZnJv
bSwgdG8sIGludGFjdCkgeworICAgICAgZnVuY3Rpb24ga2lsbE5vZGUobm9kZSkgeworICAgICAg
ICB2YXIgdG1wID0gbm9kZS5uZXh0U2libGluZzsKKyAgICAgICAgbm9kZS5wYXJlbnROb2RlLnJl
bW92ZUNoaWxkKG5vZGUpOworICAgICAgICByZXR1cm4gdG1wOworICAgICAgfQorICAgICAgLy8g
VGhlIGZpcnN0IHBhc3MgcmVtb3ZlcyB0aGUgRE9NIG5vZGVzIHRoYXQgYXJlbid0IGludGFjdC4K
KyAgICAgIGlmICghaW50YWN0Lmxlbmd0aCkgcmVtb3ZlQ2hpbGRyZW4obGluZURpdik7CisgICAg
ICBlbHNlIHsKKyAgICAgICAgdmFyIGRvbVBvcyA9IDAsIGN1ck5vZGUgPSBsaW5lRGl2LmZpcnN0
Q2hpbGQsIG47CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW50YWN0Lmxlbmd0aDsgKytp
KSB7CisgICAgICAgICAgdmFyIGN1ciA9IGludGFjdFtpXTsKKyAgICAgICAgICB3aGlsZSAoY3Vy
LmRvbVN0YXJ0ID4gZG9tUG9zKSB7Y3VyTm9kZSA9IGtpbGxOb2RlKGN1ck5vZGUpOyBkb21Qb3Mr
Kzt9CisgICAgICAgICAgZm9yICh2YXIgaiA9IDAsIGUgPSBjdXIudG8gLSBjdXIuZnJvbTsgaiA8
IGU7ICsraikge2N1ck5vZGUgPSBjdXJOb2RlLm5leHRTaWJsaW5nOyBkb21Qb3MrKzt9CisgICAg
ICAgIH0KKyAgICAgICAgd2hpbGUgKGN1ck5vZGUpIGN1ck5vZGUgPSBraWxsTm9kZShjdXJOb2Rl
KTsKKyAgICAgIH0KKyAgICAgIC8vIFRoaXMgcGFzcyBmaWxscyBpbiB0aGUgbGluZXMgdGhhdCBh
Y3R1YWxseSBjaGFuZ2VkLgorICAgICAgdmFyIG5leHRJbnRhY3QgPSBpbnRhY3Quc2hpZnQoKSwg
Y3VyTm9kZSA9IGxpbmVEaXYuZmlyc3RDaGlsZCwgaiA9IGZyb207CisgICAgICBkb2MuaXRlcihm
cm9tLCB0bywgZnVuY3Rpb24obGluZSkgeworICAgICAgICBpZiAobmV4dEludGFjdCAmJiBuZXh0
SW50YWN0LnRvID09IGopIG5leHRJbnRhY3QgPSBpbnRhY3Quc2hpZnQoKTsKKyAgICAgICAgaWYg
KCFuZXh0SW50YWN0IHx8IG5leHRJbnRhY3QuZnJvbSA+IGopIHsKKyAgICAgICAgICBpZiAobGlu
ZS5oaWRkZW4pIHZhciBsaW5lRWxlbWVudCA9IGVsdCgicHJlIik7CisgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICB2YXIgbGluZUVsZW1lbnQgPSBsaW5lLmdldEVsZW1lbnQobWFrZVRhYik7
CisgICAgICAgICAgICBpZiAobGluZS5jbGFzc05hbWUpIGxpbmVFbGVtZW50LmNsYXNzTmFtZSA9
IGxpbmUuY2xhc3NOYW1lOworICAgICAgICAgICAgLy8gS2x1ZGdlIHRvIG1ha2Ugc3VyZSB0aGUg
c3R5bGVkIGVsZW1lbnQgbGllcyBiZWhpbmQgdGhlIHNlbGVjdGlvbiAoYnkgei1pbmRleCkKKyAg
ICAgICAgICAgIGlmIChsaW5lLmJnQ2xhc3NOYW1lKSB7CisgICAgICAgICAgICAgIHZhciBwcmUg
PSBlbHQoInByZSIsICJcdTAwYTAiLCBsaW5lLmJnQ2xhc3NOYW1lLCAicG9zaXRpb246IGFic29s
dXRlOyBsZWZ0OiAwOyByaWdodDogMDsgdG9wOiAwOyBib3R0b206IDA7IHotaW5kZXg6IC0yIik7
CisgICAgICAgICAgICAgIGxpbmVFbGVtZW50ID0gZWx0KCJkaXYiLCBbcHJlLCBsaW5lRWxlbWVu
dF0sIG51bGwsICJwb3NpdGlvbjogcmVsYXRpdmUiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICB9CisgICAgICAgICAgbGluZURpdi5pbnNlcnRCZWZvcmUobGluZUVsZW1lbnQsIGN1ck5vZGUp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGN1ck5vZGUgPSBjdXJOb2RlLm5leHRTaWJs
aW5nOworICAgICAgICB9CisgICAgICAgICsrajsKKyAgICAgIH0pOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHVwZGF0ZUd1dHRlcigpIHsKKyAgICAgIGlmICghb3B0aW9ucy5ndXR0ZXIgJiYgIW9w
dGlvbnMubGluZU51bWJlcnMpIHJldHVybjsKKyAgICAgIHZhciBoVGV4dCA9IG1vdmVyLm9mZnNl
dEhlaWdodCwgaEVkaXRvciA9IHNjcm9sbGVyLmNsaWVudEhlaWdodDsKKyAgICAgIGd1dHRlci5z
dHlsZS5oZWlnaHQgPSAoaFRleHQgLSBoRWRpdG9yIDwgMiA/IGhFZGl0b3IgOiBoVGV4dCkgKyAi
cHgiOworICAgICAgdmFyIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVu
dCgpLCBpID0gc2hvd2luZ0Zyb20sIG5vcm1hbE5vZGU7CisgICAgICBkb2MuaXRlcihzaG93aW5n
RnJvbSwgTWF0aC5tYXgoc2hvd2luZ1RvLCBzaG93aW5nRnJvbSArIDEpLCBmdW5jdGlvbihsaW5l
KSB7CisgICAgICAgIGlmIChsaW5lLmhpZGRlbikgeworICAgICAgICAgIGZyYWdtZW50LmFwcGVu
ZENoaWxkKGVsdCgicHJlIikpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHZhciBtYXJr
ZXIgPSBsaW5lLmd1dHRlck1hcmtlcjsKKyAgICAgICAgICB2YXIgdGV4dCA9IG9wdGlvbnMubGlu
ZU51bWJlcnMgPyBvcHRpb25zLmxpbmVOdW1iZXJGb3JtYXR0ZXIoaSArIG9wdGlvbnMuZmlyc3RM
aW5lTnVtYmVyKSA6IG51bGw7CisgICAgICAgICAgaWYgKG1hcmtlciAmJiBtYXJrZXIudGV4dCkK
KyAgICAgICAgICAgIHRleHQgPSBtYXJrZXIudGV4dC5yZXBsYWNlKCIlTiUiLCB0ZXh0ICE9IG51
bGwgPyB0ZXh0IDogIiIpOworICAgICAgICAgIGVsc2UgaWYgKHRleHQgPT0gbnVsbCkKKyAgICAg
ICAgICAgIHRleHQgPSAiXHUwMGEwIjsKKyAgICAgICAgICB2YXIgbWFya2VyRWxlbWVudCA9IGZy
YWdtZW50LmFwcGVuZENoaWxkKGVsdCgicHJlIiwgbnVsbCwgbWFya2VyICYmIG1hcmtlci5zdHls
ZSkpOworICAgICAgICAgIG1hcmtlckVsZW1lbnQuaW5uZXJIVE1MID0gdGV4dDsKKyAgICAgICAg
ICBmb3IgKHZhciBqID0gMTsgaiA8IGxpbmUuaGVpZ2h0OyArK2opIHsKKyAgICAgICAgICAgIG1h
cmtlckVsZW1lbnQuYXBwZW5kQ2hpbGQoZWx0KCJiciIpKTsKKyAgICAgICAgICAgIG1hcmtlckVs
ZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlx1MDBhMCIpKTsKKyAg
ICAgICAgICB9CisgICAgICAgICAgaWYgKCFtYXJrZXIpIG5vcm1hbE5vZGUgPSBpOworICAgICAg
ICB9CisgICAgICAgICsraTsKKyAgICAgIH0pOworICAgICAgZ3V0dGVyLnN0eWxlLmRpc3BsYXkg
PSAibm9uZSI7CisgICAgICByZW1vdmVDaGlsZHJlbkFuZEFkZChndXR0ZXJUZXh0LCBmcmFnbWVu
dCk7CisgICAgICAvLyBNYWtlIHN1cmUgc2Nyb2xsaW5nIGRvZXNuJ3QgY2F1c2UgbnVtYmVyIGd1
dHRlciBzaXplIHRvIHBvcAorICAgICAgaWYgKG5vcm1hbE5vZGUgIT0gbnVsbCAmJiBvcHRpb25z
LmxpbmVOdW1iZXJzKSB7CisgICAgICAgIHZhciBub2RlID0gZ3V0dGVyVGV4dC5jaGlsZE5vZGVz
W25vcm1hbE5vZGUgLSBzaG93aW5nRnJvbV07CisgICAgICAgIHZhciBtaW53aWR0aCA9IFN0cmlu
Zyhkb2Muc2l6ZSkubGVuZ3RoLCB2YWwgPSBlbHRUZXh0KG5vZGUuZmlyc3RDaGlsZCksIHBhZCA9
ICIiOworICAgICAgICB3aGlsZSAodmFsLmxlbmd0aCArIHBhZC5sZW5ndGggPCBtaW53aWR0aCkg
cGFkICs9ICJcdTAwYTAiOworICAgICAgICBpZiAocGFkKSBub2RlLmluc2VydEJlZm9yZShkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZShwYWQpLCBub2RlLmZpcnN0Q2hpbGQpOworICAgICAgfQorICAg
ICAgZ3V0dGVyLnN0eWxlLmRpc3BsYXkgPSAiIjsKKyAgICAgIHZhciByZXNpemVkID0gTWF0aC5h
YnMoKHBhcnNlSW50KGxpbmVTcGFjZS5zdHlsZS5tYXJnaW5MZWZ0KSB8fCAwKSAtIGd1dHRlci5v
ZmZzZXRXaWR0aCkgPiAyOworICAgICAgbGluZVNwYWNlLnN0eWxlLm1hcmdpbkxlZnQgPSBndXR0
ZXIub2Zmc2V0V2lkdGggKyAicHgiOworICAgICAgZ3V0dGVyRGlydHkgPSBmYWxzZTsKKyAgICAg
IHJldHVybiByZXNpemVkOworICAgIH0KKyAgICBmdW5jdGlvbiB1cGRhdGVTZWxlY3Rpb24oKSB7
CisgICAgICB2YXIgY29sbGFwc2VkID0gcG9zRXEoc2VsLmZyb20sIHNlbC50byk7CisgICAgICB2
YXIgZnJvbVBvcyA9IGxvY2FsQ29vcmRzKHNlbC5mcm9tLCB0cnVlKTsKKyAgICAgIHZhciB0b1Bv
cyA9IGNvbGxhcHNlZCA/IGZyb21Qb3MgOiBsb2NhbENvb3JkcyhzZWwudG8sIHRydWUpOworICAg
ICAgdmFyIGhlYWRQb3MgPSBzZWwuaW52ZXJ0ZWQgPyBmcm9tUG9zIDogdG9Qb3MsIHRoID0gdGV4
dEhlaWdodCgpOworICAgICAgdmFyIHdyYXBPZmYgPSBlbHRPZmZzZXQod3JhcHBlciksIGxpbmVP
ZmYgPSBlbHRPZmZzZXQobGluZURpdik7CisgICAgICBpbnB1dERpdi5zdHlsZS50b3AgPSBNYXRo
Lm1heCgwLCBNYXRoLm1pbihzY3JvbGxlci5vZmZzZXRIZWlnaHQsIGhlYWRQb3MueSArIGxpbmVP
ZmYudG9wIC0gd3JhcE9mZi50b3ApKSArICJweCI7CisgICAgICBpbnB1dERpdi5zdHlsZS5sZWZ0
ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oc2Nyb2xsZXIub2Zmc2V0V2lkdGgsIGhlYWRQb3MueCAr
IGxpbmVPZmYubGVmdCAtIHdyYXBPZmYubGVmdCkpICsgInB4IjsKKyAgICAgIGlmIChjb2xsYXBz
ZWQpIHsKKyAgICAgICAgY3Vyc29yLnN0eWxlLnRvcCA9IGhlYWRQb3MueSArICJweCI7CisgICAg
ICAgIGN1cnNvci5zdHlsZS5sZWZ0ID0gKG9wdGlvbnMubGluZVdyYXBwaW5nID8gTWF0aC5taW4o
aGVhZFBvcy54LCBsaW5lU3BhY2Uub2Zmc2V0V2lkdGgpIDogaGVhZFBvcy54KSArICJweCI7Cisg
ICAgICAgIGN1cnNvci5zdHlsZS5kaXNwbGF5ID0gIiI7CisgICAgICAgIHNlbGVjdGlvbkRpdi5z
dHlsZS5kaXNwbGF5ID0gIm5vbmUiOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIHNhbWVM
aW5lID0gZnJvbVBvcy55ID09IHRvUG9zLnksIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9j
dW1lbnRGcmFnbWVudCgpOworICAgICAgICB2YXIgY2xpZW50V2lkdGggPSBsaW5lU3BhY2UuY2xp
ZW50V2lkdGggfHwgbGluZVNwYWNlLm9mZnNldFdpZHRoOworICAgICAgICB2YXIgY2xpZW50SGVp
Z2h0ID0gbGluZVNwYWNlLmNsaWVudEhlaWdodCB8fCBsaW5lU3BhY2Uub2Zmc2V0SGVpZ2h0Owor
ICAgICAgICB2YXIgYWRkID0gZnVuY3Rpb24obGVmdCwgdG9wLCByaWdodCwgaGVpZ2h0KSB7Cisg
ICAgICAgICAgdmFyIHJzdHlsZSA9IHF1aXJrc01vZGUgPyAid2lkdGg6ICIgKyAoIXJpZ2h0ID8g
Y2xpZW50V2lkdGggOiBjbGllbnRXaWR0aCAtIHJpZ2h0IC0gbGVmdCkgKyAicHgiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAicmlnaHQ6ICIgKyByaWdodCArICJweCI7Cisg
ICAgICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZWx0KCJkaXYiLCBudWxsLCAiQ29kZU1pcnJv
ci1zZWxlY3RlZCIsICJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6ICIgKyBsZWZ0ICsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB4OyB0b3A6ICIgKyB0b3AgKyAicHg7ICIg
KyByc3R5bGUgKyAiOyBoZWlnaHQ6ICIgKyBoZWlnaHQgKyAicHgiKSk7CisgICAgICAgIH07Cisg
ICAgICAgIGlmIChzZWwuZnJvbS5jaCAmJiBmcm9tUG9zLnkgPj0gMCkgeworICAgICAgICAgIHZh
ciByaWdodCA9IHNhbWVMaW5lID8gY2xpZW50V2lkdGggLSB0b1Bvcy54IDogMDsKKyAgICAgICAg
ICBhZGQoZnJvbVBvcy54LCBmcm9tUG9zLnksIHJpZ2h0LCB0aCk7CisgICAgICAgIH0KKyAgICAg
ICAgdmFyIG1pZGRsZVN0YXJ0ID0gTWF0aC5tYXgoMCwgZnJvbVBvcy55ICsgKHNlbC5mcm9tLmNo
ID8gdGggOiAwKSk7CisgICAgICAgIHZhciBtaWRkbGVIZWlnaHQgPSBNYXRoLm1pbih0b1Bvcy55
LCBjbGllbnRIZWlnaHQpIC0gbWlkZGxlU3RhcnQ7CisgICAgICAgIGlmIChtaWRkbGVIZWlnaHQg
PiAwLjIgKiB0aCkKKyAgICAgICAgICBhZGQoMCwgbWlkZGxlU3RhcnQsIDAsIG1pZGRsZUhlaWdo
dCk7CisgICAgICAgIGlmICgoIXNhbWVMaW5lIHx8ICFzZWwuZnJvbS5jaCkgJiYgdG9Qb3MueSA8
IGNsaWVudEhlaWdodCAtIC41ICogdGgpCisgICAgICAgICAgYWRkKDAsIHRvUG9zLnksIGNsaWVu
dFdpZHRoIC0gdG9Qb3MueCwgdGgpOworICAgICAgICByZW1vdmVDaGlsZHJlbkFuZEFkZChzZWxl
Y3Rpb25EaXYsIGZyYWdtZW50KTsKKyAgICAgICAgY3Vyc29yLnN0eWxlLmRpc3BsYXkgPSAibm9u
ZSI7CisgICAgICAgIHNlbGVjdGlvbkRpdi5zdHlsZS5kaXNwbGF5ID0gIiI7CisgICAgICB9Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gc2V0U2hpZnQodmFsKSB7CisgICAgICBpZiAodmFsKSBzaGlm
dFNlbGVjdGluZyA9IHNoaWZ0U2VsZWN0aW5nIHx8IChzZWwuaW52ZXJ0ZWQgPyBzZWwudG8gOiBz
ZWwuZnJvbSk7CisgICAgICBlbHNlIHNoaWZ0U2VsZWN0aW5nID0gbnVsbDsKKyAgICB9CisgICAg
ZnVuY3Rpb24gc2V0U2VsZWN0aW9uVXNlcihmcm9tLCB0bykgeworICAgICAgdmFyIHNoID0gc2hp
ZnRTZWxlY3RpbmcgJiYgY2xpcFBvcyhzaGlmdFNlbGVjdGluZyk7CisgICAgICBpZiAoc2gpIHsK
KyAgICAgICAgaWYgKHBvc0xlc3Moc2gsIGZyb20pKSBmcm9tID0gc2g7CisgICAgICAgIGVsc2Ug
aWYgKHBvc0xlc3ModG8sIHNoKSkgdG8gPSBzaDsKKyAgICAgIH0KKyAgICAgIHNldFNlbGVjdGlv
bihmcm9tLCB0byk7CisgICAgICB1c2VyU2VsQ2hhbmdlID0gdHJ1ZTsKKyAgICB9CisgICAgLy8g
VXBkYXRlIHRoZSBzZWxlY3Rpb24uIExhc3QgdHdvIGFyZ3MgYXJlIG9ubHkgdXNlZCBieQorICAg
IC8vIHVwZGF0ZUxpbmVzLCBzaW5jZSB0aGV5IGhhdmUgdG8gYmUgZXhwcmVzc2VkIGluIHRoZSBs
aW5lCisgICAgLy8gbnVtYmVycyBiZWZvcmUgdGhlIHVwZGF0ZS4KKyAgICBmdW5jdGlvbiBzZXRT
ZWxlY3Rpb24oZnJvbSwgdG8sIG9sZEZyb20sIG9sZFRvKSB7CisgICAgICBnb2FsQ29sdW1uID0g
bnVsbDsKKyAgICAgIGlmIChvbGRGcm9tID09IG51bGwpIHtvbGRGcm9tID0gc2VsLmZyb20ubGlu
ZTsgb2xkVG8gPSBzZWwudG8ubGluZTt9CisgICAgICBpZiAocG9zRXEoc2VsLmZyb20sIGZyb20p
ICYmIHBvc0VxKHNlbC50bywgdG8pKSByZXR1cm47CisgICAgICBpZiAocG9zTGVzcyh0bywgZnJv
bSkpIHt2YXIgdG1wID0gdG87IHRvID0gZnJvbTsgZnJvbSA9IHRtcDt9CisKKyAgICAgIC8vIFNr
aXAgb3ZlciBoaWRkZW4gbGluZXMuCisgICAgICBpZiAoZnJvbS5saW5lICE9IG9sZEZyb20pIHsK
KyAgICAgICAgdmFyIGZyb20xID0gc2tpcEhpZGRlbihmcm9tLCBvbGRGcm9tLCBzZWwuZnJvbS5j
aCk7CisgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIG5vbi1oaWRkZW4gbGluZSBsZWZ0LCBmb3Jj
ZSB2aXNpYmlsaXR5IG9uIGN1cnJlbnQgbGluZQorICAgICAgICBpZiAoIWZyb20xKSBzZXRMaW5l
SGlkZGVuKGZyb20ubGluZSwgZmFsc2UpOworICAgICAgICBlbHNlIGZyb20gPSBmcm9tMTsKKyAg
ICAgIH0KKyAgICAgIGlmICh0by5saW5lICE9IG9sZFRvKSB0byA9IHNraXBIaWRkZW4odG8sIG9s
ZFRvLCBzZWwudG8uY2gpOworCisgICAgICBpZiAocG9zRXEoZnJvbSwgdG8pKSBzZWwuaW52ZXJ0
ZWQgPSBmYWxzZTsKKyAgICAgIGVsc2UgaWYgKHBvc0VxKGZyb20sIHNlbC50bykpIHNlbC5pbnZl
cnRlZCA9IGZhbHNlOworICAgICAgZWxzZSBpZiAocG9zRXEodG8sIHNlbC5mcm9tKSkgc2VsLmlu
dmVydGVkID0gdHJ1ZTsKKworICAgICAgaWYgKG9wdGlvbnMuYXV0b0NsZWFyRW1wdHlMaW5lcyAm
JiBwb3NFcShzZWwuZnJvbSwgc2VsLnRvKSkgeworICAgICAgICB2YXIgaGVhZCA9IHNlbC5pbnZl
cnRlZCA/IGZyb20gOiB0bzsKKyAgICAgICAgaWYgKGhlYWQubGluZSAhPSBzZWwuZnJvbS5saW5l
ICYmIHNlbC5mcm9tLmxpbmUgPCBkb2Muc2l6ZSkgeworICAgICAgICAgIHZhciBvbGRMaW5lID0g
Z2V0TGluZShzZWwuZnJvbS5saW5lKTsKKyAgICAgICAgICBpZiAoL15ccyskLy50ZXN0KG9sZExp
bmUudGV4dCkpCisgICAgICAgICAgICBzZXRUaW1lb3V0KG9wZXJhdGlvbihmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgaWYgKG9sZExpbmUucGFyZW50ICYmIC9eXHMrJC8udGVzdChvbGRMaW5l
LnRleHQpKSB7CisgICAgICAgICAgICAgICAgdmFyIG5vID0gbGluZU5vKG9sZExpbmUpOworICAg
ICAgICAgICAgICAgIHJlcGxhY2VSYW5nZSgiIiwge2xpbmU6IG5vLCBjaDogMH0sIHtsaW5lOiBu
bywgY2g6IG9sZExpbmUudGV4dC5sZW5ndGh9KTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSwgMTApKTsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICBzZWwuZnJvbSA9IGZyb207
IHNlbC50byA9IHRvOworICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7CisgICAgfQorICAg
IGZ1bmN0aW9uIHNraXBIaWRkZW4ocG9zLCBvbGRMaW5lLCBvbGRDaCkgeworICAgICAgZnVuY3Rp
b24gZ2V0Tm9uSGlkZGVuKGRpcikgeworICAgICAgICB2YXIgbE5vID0gcG9zLmxpbmUgKyBkaXIs
IGVuZCA9IGRpciA9PSAxID8gZG9jLnNpemUgOiAtMTsKKyAgICAgICAgd2hpbGUgKGxObyAhPSBl
bmQpIHsKKyAgICAgICAgICB2YXIgbGluZSA9IGdldExpbmUobE5vKTsKKyAgICAgICAgICBpZiAo
IWxpbmUuaGlkZGVuKSB7CisgICAgICAgICAgICB2YXIgY2ggPSBwb3MuY2g7CisgICAgICAgICAg
ICBpZiAodG9FbmQgfHwgY2ggPiBvbGRDaCB8fCBjaCA+IGxpbmUudGV4dC5sZW5ndGgpIGNoID0g
bGluZS50ZXh0Lmxlbmd0aDsKKyAgICAgICAgICAgIHJldHVybiB7bGluZTogbE5vLCBjaDogY2h9
OworICAgICAgICAgIH0KKyAgICAgICAgICBsTm8gKz0gZGlyOworICAgICAgICB9CisgICAgICB9
CisgICAgICB2YXIgbGluZSA9IGdldExpbmUocG9zLmxpbmUpOworICAgICAgdmFyIHRvRW5kID0g
cG9zLmNoID09IGxpbmUudGV4dC5sZW5ndGggJiYgcG9zLmNoICE9IG9sZENoOworICAgICAgaWYg
KCFsaW5lLmhpZGRlbikgcmV0dXJuIHBvczsKKyAgICAgIGlmIChwb3MubGluZSA+PSBvbGRMaW5l
KSByZXR1cm4gZ2V0Tm9uSGlkZGVuKDEpIHx8IGdldE5vbkhpZGRlbigtMSk7CisgICAgICBlbHNl
IHJldHVybiBnZXROb25IaWRkZW4oLTEpIHx8IGdldE5vbkhpZGRlbigxKTsKKyAgICB9CisgICAg
ZnVuY3Rpb24gc2V0Q3Vyc29yKGxpbmUsIGNoLCB1c2VyKSB7CisgICAgICB2YXIgcG9zID0gY2xp
cFBvcyh7bGluZTogbGluZSwgY2g6IGNoIHx8IDB9KTsKKyAgICAgICh1c2VyID8gc2V0U2VsZWN0
aW9uVXNlciA6IHNldFNlbGVjdGlvbikocG9zLCBwb3MpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IGNsaXBMaW5lKG4pIHtyZXR1cm4gTWF0aC5tYXgoMCwgTWF0aC5taW4obiwgZG9jLnNpemUtMSkp
O30KKyAgICBmdW5jdGlvbiBjbGlwUG9zKHBvcykgeworICAgICAgaWYgKHBvcy5saW5lIDwgMCkg
cmV0dXJuIHtsaW5lOiAwLCBjaDogMH07CisgICAgICBpZiAocG9zLmxpbmUgPj0gZG9jLnNpemUp
IHJldHVybiB7bGluZTogZG9jLnNpemUtMSwgY2g6IGdldExpbmUoZG9jLnNpemUtMSkudGV4dC5s
ZW5ndGh9OworICAgICAgdmFyIGNoID0gcG9zLmNoLCBsaW5lbGVuID0gZ2V0TGluZShwb3MubGlu
ZSkudGV4dC5sZW5ndGg7CisgICAgICBpZiAoY2ggPT0gbnVsbCB8fCBjaCA+IGxpbmVsZW4pIHJl
dHVybiB7bGluZTogcG9zLmxpbmUsIGNoOiBsaW5lbGVufTsKKyAgICAgIGVsc2UgaWYgKGNoIDwg
MCkgcmV0dXJuIHtsaW5lOiBwb3MubGluZSwgY2g6IDB9OworICAgICAgZWxzZSByZXR1cm4gcG9z
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmRQb3NIKGRpciwgdW5pdCkgeworICAgICAgdmFy
IGVuZCA9IHNlbC5pbnZlcnRlZCA/IHNlbC5mcm9tIDogc2VsLnRvLCBsaW5lID0gZW5kLmxpbmUs
IGNoID0gZW5kLmNoOworICAgICAgdmFyIGxpbmVPYmogPSBnZXRMaW5lKGxpbmUpOworICAgICAg
ZnVuY3Rpb24gZmluZE5leHRMaW5lKCkgeworICAgICAgICBmb3IgKHZhciBsID0gbGluZSArIGRp
ciwgZSA9IGRpciA8IDAgPyAtMSA6IGRvYy5zaXplOyBsICE9IGU7IGwgKz0gZGlyKSB7CisgICAg
ICAgICAgdmFyIGxvID0gZ2V0TGluZShsKTsKKyAgICAgICAgICBpZiAoIWxvLmhpZGRlbikgeyBs
aW5lID0gbDsgbGluZU9iaiA9IGxvOyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB9CisgICAgICB9
CisgICAgICBmdW5jdGlvbiBtb3ZlT25jZShib3VuZFRvTGluZSkgeworICAgICAgICBpZiAoY2gg
PT0gKGRpciA8IDAgPyAwIDogbGluZU9iai50ZXh0Lmxlbmd0aCkpIHsKKyAgICAgICAgICBpZiAo
IWJvdW5kVG9MaW5lICYmIGZpbmROZXh0TGluZSgpKSBjaCA9IGRpciA8IDAgPyBsaW5lT2JqLnRl
eHQubGVuZ3RoIDogMDsKKyAgICAgICAgICBlbHNlIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBl
bHNlIGNoICs9IGRpcjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9CisgICAgICBpZiAo
dW5pdCA9PSAiY2hhciIpIG1vdmVPbmNlKCk7CisgICAgICBlbHNlIGlmICh1bml0ID09ICJjb2x1
bW4iKSBtb3ZlT25jZSh0cnVlKTsKKyAgICAgIGVsc2UgaWYgKHVuaXQgPT0gIndvcmQiKSB7Cisg
ICAgICAgIHZhciBzYXdXb3JkID0gZmFsc2U7CisgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAg
ICBpZiAoZGlyIDwgMCkgaWYgKCFtb3ZlT25jZSgpKSBicmVhazsKKyAgICAgICAgICBpZiAoaXNX
b3JkQ2hhcihsaW5lT2JqLnRleHQuY2hhckF0KGNoKSkpIHNhd1dvcmQgPSB0cnVlOworICAgICAg
ICAgIGVsc2UgaWYgKHNhd1dvcmQpIHtpZiAoZGlyIDwgMCkge2RpciA9IDE7IG1vdmVPbmNlKCk7
fSBicmVhazt9CisgICAgICAgICAgaWYgKGRpciA+IDApIGlmICghbW92ZU9uY2UoKSkgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHJldHVybiB7bGluZTogbGluZSwgY2g6IGNofTsK
KyAgICB9CisgICAgZnVuY3Rpb24gbW92ZUgoZGlyLCB1bml0KSB7CisgICAgICB2YXIgcG9zID0g
ZGlyIDwgMCA/IHNlbC5mcm9tIDogc2VsLnRvOworICAgICAgaWYgKHNoaWZ0U2VsZWN0aW5nIHx8
IHBvc0VxKHNlbC5mcm9tLCBzZWwudG8pKSBwb3MgPSBmaW5kUG9zSChkaXIsIHVuaXQpOworICAg
ICAgc2V0Q3Vyc29yKHBvcy5saW5lLCBwb3MuY2gsIHRydWUpOworICAgIH0KKyAgICBmdW5jdGlv
biBkZWxldGVIKGRpciwgdW5pdCkgeworICAgICAgaWYgKCFwb3NFcShzZWwuZnJvbSwgc2VsLnRv
KSkgcmVwbGFjZVJhbmdlKCIiLCBzZWwuZnJvbSwgc2VsLnRvKTsKKyAgICAgIGVsc2UgaWYgKGRp
ciA8IDApIHJlcGxhY2VSYW5nZSgiIiwgZmluZFBvc0goZGlyLCB1bml0KSwgc2VsLnRvKTsKKyAg
ICAgIGVsc2UgcmVwbGFjZVJhbmdlKCIiLCBzZWwuZnJvbSwgZmluZFBvc0goZGlyLCB1bml0KSk7
CisgICAgICB1c2VyU2VsQ2hhbmdlID0gdHJ1ZTsKKyAgICB9CisgICAgZnVuY3Rpb24gbW92ZVYo
ZGlyLCB1bml0KSB7CisgICAgICB2YXIgZGlzdCA9IDAsIHBvcyA9IGxvY2FsQ29vcmRzKHNlbC5p
bnZlcnRlZCA/IHNlbC5mcm9tIDogc2VsLnRvLCB0cnVlKTsKKyAgICAgIGlmIChnb2FsQ29sdW1u
ICE9IG51bGwpIHBvcy54ID0gZ29hbENvbHVtbjsKKyAgICAgIGlmICh1bml0ID09ICJwYWdlIikg
ZGlzdCA9IE1hdGgubWluKHNjcm9sbGVyLmNsaWVudEhlaWdodCwgd2luZG93LmlubmVySGVpZ2h0
IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpOworICAgICAgZWxzZSBp
ZiAodW5pdCA9PSAibGluZSIpIGRpc3QgPSB0ZXh0SGVpZ2h0KCk7CisgICAgICB2YXIgdGFyZ2V0
ID0gY29vcmRzQ2hhcihwb3MueCwgcG9zLnkgKyBkaXN0ICogZGlyICsgMik7CisgICAgICBpZiAo
dW5pdCA9PSAicGFnZSIpIHNjcm9sbGJhci5zY3JvbGxUb3AgKz0gbG9jYWxDb29yZHModGFyZ2V0
LCB0cnVlKS55IC0gcG9zLnk7CisgICAgICBzZXRDdXJzb3IodGFyZ2V0LmxpbmUsIHRhcmdldC5j
aCwgdHJ1ZSk7CisgICAgICBnb2FsQ29sdW1uID0gcG9zLng7CisgICAgfQorCisgICAgZnVuY3Rp
b24gZmluZFdvcmRBdChwb3MpIHsKKyAgICAgIHZhciBsaW5lID0gZ2V0TGluZShwb3MubGluZSku
dGV4dDsKKyAgICAgIHZhciBzdGFydCA9IHBvcy5jaCwgZW5kID0gcG9zLmNoOworICAgICAgaWYg
KGxpbmUpIHsKKyAgICAgICAgaWYgKHBvcy5hZnRlciA9PT0gZmFsc2UgfHwgZW5kID09IGxpbmUu
bGVuZ3RoKSAtLXN0YXJ0OyBlbHNlICsrZW5kOworICAgICAgICB2YXIgc3RhcnRDaGFyID0gbGlu
ZS5jaGFyQXQoc3RhcnQpOworICAgICAgICB2YXIgY2hlY2sgPSBpc1dvcmRDaGFyKHN0YXJ0Q2hh
cikgPyBpc1dvcmRDaGFyIDoKKyAgICAgICAgICAgICAgICAgICAgL1xzLy50ZXN0KHN0YXJ0Q2hh
cikgPyBmdW5jdGlvbihjaCkge3JldHVybiAvXHMvLnRlc3QoY2gpO30gOgorICAgICAgICAgICAg
ICAgICAgICBmdW5jdGlvbihjaCkge3JldHVybiAhL1xzLy50ZXN0KGNoKSAmJiAhaXNXb3JkQ2hh
cihjaCk7fTsKKyAgICAgICAgd2hpbGUgKHN0YXJ0ID4gMCAmJiBjaGVjayhsaW5lLmNoYXJBdChz
dGFydCAtIDEpKSkgLS1zdGFydDsKKyAgICAgICAgd2hpbGUgKGVuZCA8IGxpbmUubGVuZ3RoICYm
IGNoZWNrKGxpbmUuY2hhckF0KGVuZCkpKSArK2VuZDsKKyAgICAgIH0KKyAgICAgIHJldHVybiB7
ZnJvbToge2xpbmU6IHBvcy5saW5lLCBjaDogc3RhcnR9LCB0bzoge2xpbmU6IHBvcy5saW5lLCBj
aDogZW5kfX07CisgICAgfQorICAgIGZ1bmN0aW9uIHNlbGVjdExpbmUobGluZSkgeworICAgICAg
c2V0U2VsZWN0aW9uVXNlcih7bGluZTogbGluZSwgY2g6IDB9LCBjbGlwUG9zKHtsaW5lOiBsaW5l
ICsgMSwgY2g6IDB9KSk7CisgICAgfQorICAgIGZ1bmN0aW9uIGluZGVudFNlbGVjdGVkKG1vZGUp
IHsKKyAgICAgIGlmIChwb3NFcShzZWwuZnJvbSwgc2VsLnRvKSkgcmV0dXJuIGluZGVudExpbmUo
c2VsLmZyb20ubGluZSwgbW9kZSk7CisgICAgICB2YXIgZSA9IHNlbC50by5saW5lIC0gKHNlbC50
by5jaCA/IDAgOiAxKTsKKyAgICAgIGZvciAodmFyIGkgPSBzZWwuZnJvbS5saW5lOyBpIDw9IGU7
ICsraSkgaW5kZW50TGluZShpLCBtb2RlKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBpbmRlbnRM
aW5lKG4sIGhvdykgeworICAgICAgaWYgKCFob3cpIGhvdyA9ICJhZGQiOworICAgICAgaWYgKGhv
dyA9PSAic21hcnQiKSB7CisgICAgICAgIGlmICghbW9kZS5pbmRlbnQpIGhvdyA9ICJwcmV2IjsK
KyAgICAgICAgZWxzZSB2YXIgc3RhdGUgPSBnZXRTdGF0ZUJlZm9yZShuKTsKKyAgICAgIH0KKwor
ICAgICAgdmFyIGxpbmUgPSBnZXRMaW5lKG4pLCBjdXJTcGFjZSA9IGxpbmUuaW5kZW50YXRpb24o
b3B0aW9ucy50YWJTaXplKSwKKyAgICAgICAgICBjdXJTcGFjZVN0cmluZyA9IGxpbmUudGV4dC5t
YXRjaCgvXlxzKi8pWzBdLCBpbmRlbnRhdGlvbjsKKyAgICAgIGlmIChob3cgPT0gInNtYXJ0Iikg
eworICAgICAgICBpbmRlbnRhdGlvbiA9IG1vZGUuaW5kZW50KHN0YXRlLCBsaW5lLnRleHQuc2xp
Y2UoY3VyU3BhY2VTdHJpbmcubGVuZ3RoKSwgbGluZS50ZXh0KTsKKyAgICAgICAgaWYgKGluZGVu
dGF0aW9uID09IFBhc3MpIGhvdyA9ICJwcmV2IjsKKyAgICAgIH0KKyAgICAgIGlmIChob3cgPT0g
InByZXYiKSB7CisgICAgICAgIGlmIChuKSBpbmRlbnRhdGlvbiA9IGdldExpbmUobi0xKS5pbmRl
bnRhdGlvbihvcHRpb25zLnRhYlNpemUpOworICAgICAgICBlbHNlIGluZGVudGF0aW9uID0gMDsK
KyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKGhvdyA9PSAiYWRkIikgaW5kZW50YXRpb24gPSBjdXJT
cGFjZSArIG9wdGlvbnMuaW5kZW50VW5pdDsKKyAgICAgIGVsc2UgaWYgKGhvdyA9PSAic3VidHJh
Y3QiKSBpbmRlbnRhdGlvbiA9IGN1clNwYWNlIC0gb3B0aW9ucy5pbmRlbnRVbml0OworICAgICAg
aW5kZW50YXRpb24gPSBNYXRoLm1heCgwLCBpbmRlbnRhdGlvbik7CisgICAgICB2YXIgZGlmZiA9
IGluZGVudGF0aW9uIC0gY3VyU3BhY2U7CisKKyAgICAgIHZhciBpbmRlbnRTdHJpbmcgPSAiIiwg
cG9zID0gMDsKKyAgICAgIGlmIChvcHRpb25zLmluZGVudFdpdGhUYWJzKQorICAgICAgICBmb3Ig
KHZhciBpID0gTWF0aC5mbG9vcihpbmRlbnRhdGlvbiAvIG9wdGlvbnMudGFiU2l6ZSk7IGk7IC0t
aSkge3BvcyArPSBvcHRpb25zLnRhYlNpemU7IGluZGVudFN0cmluZyArPSAiXHQiO30KKyAgICAg
IHdoaWxlIChwb3MgPCBpbmRlbnRhdGlvbikgeysrcG9zOyBpbmRlbnRTdHJpbmcgKz0gIiAiO30K
KworICAgICAgcmVwbGFjZVJhbmdlKGluZGVudFN0cmluZywge2xpbmU6IG4sIGNoOiAwfSwge2xp
bmU6IG4sIGNoOiBjdXJTcGFjZVN0cmluZy5sZW5ndGh9KTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBsb2FkTW9kZSgpIHsKKyAgICAgIG1vZGUgPSBDb2RlTWlycm9yLmdldE1vZGUob3B0aW9ucywg
b3B0aW9ucy5tb2RlKTsKKyAgICAgIGRvYy5pdGVyKDAsIGRvYy5zaXplLCBmdW5jdGlvbihsaW5l
KSB7IGxpbmUuc3RhdGVBZnRlciA9IG51bGw7IH0pOworICAgICAgd29yayA9IFswXTsKKyAgICAg
IHN0YXJ0V29ya2VyKCk7CisgICAgfQorICAgIGZ1bmN0aW9uIGd1dHRlckNoYW5nZWQoKSB7Cisg
ICAgICB2YXIgdmlzaWJsZSA9IG9wdGlvbnMuZ3V0dGVyIHx8IG9wdGlvbnMubGluZU51bWJlcnM7
CisgICAgICBndXR0ZXIuc3R5bGUuZGlzcGxheSA9IHZpc2libGUgPyAiIiA6ICJub25lIjsKKyAg
ICAgIGlmICh2aXNpYmxlKSBndXR0ZXJEaXJ0eSA9IHRydWU7CisgICAgICBlbHNlIGxpbmVEaXYu
cGFyZW50Tm9kZS5zdHlsZS5tYXJnaW5MZWZ0ID0gMDsKKyAgICB9CisgICAgZnVuY3Rpb24gd3Jh
cHBpbmdDaGFuZ2VkKGZyb20sIHRvKSB7CisgICAgICBpZiAob3B0aW9ucy5saW5lV3JhcHBpbmcp
IHsKKyAgICAgICAgd3JhcHBlci5jbGFzc05hbWUgKz0gIiBDb2RlTWlycm9yLXdyYXAiOworICAg
ICAgICB2YXIgcGVyTGluZSA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gY2hhcldpZHRoKCkgLSAz
OworICAgICAgICBkb2MuaXRlcigwLCBkb2Muc2l6ZSwgZnVuY3Rpb24obGluZSkgeworICAgICAg
ICAgIGlmIChsaW5lLmhpZGRlbikgcmV0dXJuOworICAgICAgICAgIHZhciBndWVzcyA9IE1hdGgu
Y2VpbChsaW5lLnRleHQubGVuZ3RoIC8gcGVyTGluZSkgfHwgMTsKKyAgICAgICAgICBpZiAoZ3Vl
c3MgIT0gMSkgdXBkYXRlTGluZUhlaWdodChsaW5lLCBndWVzcyk7CisgICAgICAgIH0pOworICAg
ICAgICBsaW5lU3BhY2Uuc3R5bGUubWluV2lkdGggPSB3aWR0aEZvcmNlci5zdHlsZS5sZWZ0ID0g
IiI7CisgICAgICB9IGVsc2UgeworICAgICAgICB3cmFwcGVyLmNsYXNzTmFtZSA9IHdyYXBwZXIu
Y2xhc3NOYW1lLnJlcGxhY2UoIiBDb2RlTWlycm9yLXdyYXAiLCAiIik7CisgICAgICAgIGNvbXB1
dGVNYXhMZW5ndGgoKTsKKyAgICAgICAgZG9jLml0ZXIoMCwgZG9jLnNpemUsIGZ1bmN0aW9uKGxp
bmUpIHsKKyAgICAgICAgICBpZiAobGluZS5oZWlnaHQgIT0gMSAmJiAhbGluZS5oaWRkZW4pIHVw
ZGF0ZUxpbmVIZWlnaHQobGluZSwgMSk7CisgICAgICAgIH0pOworICAgICAgfQorICAgICAgY2hh
bmdlcy5wdXNoKHtmcm9tOiAwLCB0bzogZG9jLnNpemV9KTsKKyAgICB9CisgICAgZnVuY3Rpb24g
bWFrZVRhYihjb2wpIHsKKyAgICAgIHZhciB3ID0gb3B0aW9ucy50YWJTaXplIC0gY29sICUgb3B0
aW9ucy50YWJTaXplLCBjYWNoZWQgPSB0YWJDYWNoZVt3XTsKKyAgICAgIGlmIChjYWNoZWQpIHJl
dHVybiBjYWNoZWQ7CisgICAgICBmb3IgKHZhciBzdHIgPSAiIiwgaSA9IDA7IGkgPCB3OyArK2kp
IHN0ciArPSAiICI7CisgICAgICB2YXIgc3BhbiA9IGVsdCgic3BhbiIsIHN0ciwgImNtLXRhYiIp
OworICAgICAgcmV0dXJuICh0YWJDYWNoZVt3XSA9IHtlbGVtZW50OiBzcGFuLCB3aWR0aDogd30p
OworICAgIH0KKyAgICBmdW5jdGlvbiB0aGVtZUNoYW5nZWQoKSB7CisgICAgICBzY3JvbGxlci5j
bGFzc05hbWUgPSBzY3JvbGxlci5jbGFzc05hbWUucmVwbGFjZSgvXHMqY20tcy1cUysvZywgIiIp
ICsKKyAgICAgICAgb3B0aW9ucy50aGVtZS5yZXBsYWNlKC8oXnxccylccyovZywgIiBjbS1zLSIp
OworICAgIH0KKyAgICBmdW5jdGlvbiBrZXlNYXBDaGFuZ2VkKCkgeworICAgICAgdmFyIHN0eWxl
ID0ga2V5TWFwW29wdGlvbnMua2V5TWFwXS5zdHlsZTsKKyAgICAgIHdyYXBwZXIuY2xhc3NOYW1l
ID0gd3JhcHBlci5jbGFzc05hbWUucmVwbGFjZSgvXHMqY20ta2V5bWFwLVxTKy9nLCAiIikgKwor
ICAgICAgICAoc3R5bGUgPyAiIGNtLWtleW1hcC0iICsgc3R5bGUgOiAiIik7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gVGV4dE1hcmtlcigpIHsgdGhpcy5zZXQgPSBbXTsgfQorICAgIFRleHRNYXJr
ZXIucHJvdG90eXBlLmNsZWFyID0gb3BlcmF0aW9uKGZ1bmN0aW9uKCkgeworICAgICAgdmFyIG1p
biA9IEluZmluaXR5LCBtYXggPSAtSW5maW5pdHk7CisgICAgICBmb3IgKHZhciBpID0gMCwgZSA9
IHRoaXMuc2V0Lmxlbmd0aDsgaSA8IGU7ICsraSkgeworICAgICAgICB2YXIgbGluZSA9IHRoaXMu
c2V0W2ldLCBtayA9IGxpbmUubWFya2VkOworICAgICAgICBpZiAoIW1rIHx8ICFsaW5lLnBhcmVu
dCkgY29udGludWU7CisgICAgICAgIHZhciBsaW5lTiA9IGxpbmVObyhsaW5lKTsKKyAgICAgICAg
bWluID0gTWF0aC5taW4obWluLCBsaW5lTik7IG1heCA9IE1hdGgubWF4KG1heCwgbGluZU4pOwor
ICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1rLmxlbmd0aDsgKytqKQorICAgICAgICAgIGlm
IChta1tqXS5tYXJrZXIgPT0gdGhpcykgbWsuc3BsaWNlKGotLSwgMSk7CisgICAgICB9CisgICAg
ICBpZiAobWluICE9IEluZmluaXR5KQorICAgICAgICBjaGFuZ2VzLnB1c2goe2Zyb206IG1pbiwg
dG86IG1heCArIDF9KTsKKyAgICB9KTsKKyAgICBUZXh0TWFya2VyLnByb3RvdHlwZS5maW5kID0g
ZnVuY3Rpb24oKSB7CisgICAgICB2YXIgZnJvbSwgdG87CisgICAgICBmb3IgKHZhciBpID0gMCwg
ZSA9IHRoaXMuc2V0Lmxlbmd0aDsgaSA8IGU7ICsraSkgeworICAgICAgICB2YXIgbGluZSA9IHRo
aXMuc2V0W2ldLCBtayA9IGxpbmUubWFya2VkOworICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8
IG1rLmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgdmFyIG1hcmsgPSBta1tqXTsKKyAgICAgICAg
ICBpZiAobWFyay5tYXJrZXIgPT0gdGhpcykgeworICAgICAgICAgICAgaWYgKG1hcmsuZnJvbSAh
PSBudWxsIHx8IG1hcmsudG8gIT0gbnVsbCkgeworICAgICAgICAgICAgICB2YXIgZm91bmQgPSBs
aW5lTm8obGluZSk7CisgICAgICAgICAgICAgIGlmIChmb3VuZCAhPSBudWxsKSB7CisgICAgICAg
ICAgICAgICAgaWYgKG1hcmsuZnJvbSAhPSBudWxsKSBmcm9tID0ge2xpbmU6IGZvdW5kLCBjaDog
bWFyay5mcm9tfTsKKyAgICAgICAgICAgICAgICBpZiAobWFyay50byAhPSBudWxsKSB0byA9IHts
aW5lOiBmb3VuZCwgY2g6IG1hcmsudG99OworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICByZXR1cm4ge2Zyb206IGZy
b20sIHRvOiB0b307CisgICAgfTsKKworICAgIGZ1bmN0aW9uIG1hcmtUZXh0KGZyb20sIHRvLCBj
bGFzc05hbWUpIHsKKyAgICAgIGZyb20gPSBjbGlwUG9zKGZyb20pOyB0byA9IGNsaXBQb3ModG8p
OworICAgICAgdmFyIHRtID0gbmV3IFRleHRNYXJrZXIoKTsKKyAgICAgIGlmICghcG9zTGVzcyhm
cm9tLCB0bykpIHJldHVybiB0bTsKKyAgICAgIGZ1bmN0aW9uIGFkZChsaW5lLCBmcm9tLCB0bywg
Y2xhc3NOYW1lKSB7CisgICAgICAgIGdldExpbmUobGluZSkuYWRkTWFyayhuZXcgTWFya2VkVGV4
dChmcm9tLCB0bywgY2xhc3NOYW1lLCB0bSkpOworICAgICAgfQorICAgICAgaWYgKGZyb20ubGlu
ZSA9PSB0by5saW5lKSBhZGQoZnJvbS5saW5lLCBmcm9tLmNoLCB0by5jaCwgY2xhc3NOYW1lKTsK
KyAgICAgIGVsc2UgeworICAgICAgICBhZGQoZnJvbS5saW5lLCBmcm9tLmNoLCBudWxsLCBjbGFz
c05hbWUpOworICAgICAgICBmb3IgKHZhciBpID0gZnJvbS5saW5lICsgMSwgZSA9IHRvLmxpbmU7
IGkgPCBlOyArK2kpCisgICAgICAgICAgYWRkKGksIG51bGwsIG51bGwsIGNsYXNzTmFtZSk7Cisg
ICAgICAgIGFkZCh0by5saW5lLCBudWxsLCB0by5jaCwgY2xhc3NOYW1lKTsKKyAgICAgIH0KKyAg
ICAgIGNoYW5nZXMucHVzaCh7ZnJvbTogZnJvbS5saW5lLCB0bzogdG8ubGluZSArIDF9KTsKKyAg
ICAgIHJldHVybiB0bTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZXRCb29rbWFyayhwb3MpIHsK
KyAgICAgIHBvcyA9IGNsaXBQb3MocG9zKTsKKyAgICAgIHZhciBibSA9IG5ldyBCb29rbWFyayhw
b3MuY2gpOworICAgICAgZ2V0TGluZShwb3MubGluZSkuYWRkTWFyayhibSk7CisgICAgICByZXR1
cm4gYm07CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluZE1hcmtzQXQocG9zKSB7CisgICAgICBw
b3MgPSBjbGlwUG9zKHBvcyk7CisgICAgICB2YXIgbWFya2VycyA9IFtdLCBtYXJrZWQgPSBnZXRM
aW5lKHBvcy5saW5lKS5tYXJrZWQ7CisgICAgICBpZiAoIW1hcmtlZCkgcmV0dXJuIG1hcmtlcnM7
CisgICAgICBmb3IgKHZhciBpID0gMCwgZSA9IG1hcmtlZC5sZW5ndGg7IGkgPCBlOyArK2kpIHsK
KyAgICAgICAgdmFyIG0gPSBtYXJrZWRbaV07CisgICAgICAgIGlmICgobS5mcm9tID09IG51bGwg
fHwgbS5mcm9tIDw9IHBvcy5jaCkgJiYKKyAgICAgICAgICAgIChtLnRvID09IG51bGwgfHwgbS50
byA+PSBwb3MuY2gpKQorICAgICAgICAgIG1hcmtlcnMucHVzaChtLm1hcmtlciB8fCBtKTsKKyAg
ICAgIH0KKyAgICAgIHJldHVybiBtYXJrZXJzOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZEd1
dHRlck1hcmtlcihsaW5lLCB0ZXh0LCBjbGFzc05hbWUpIHsKKyAgICAgIGlmICh0eXBlb2YgbGlu
ZSA9PSAibnVtYmVyIikgbGluZSA9IGdldExpbmUoY2xpcExpbmUobGluZSkpOworICAgICAgbGlu
ZS5ndXR0ZXJNYXJrZXIgPSB7dGV4dDogdGV4dCwgc3R5bGU6IGNsYXNzTmFtZX07CisgICAgICBn
dXR0ZXJEaXJ0eSA9IHRydWU7CisgICAgICByZXR1cm4gbGluZTsKKyAgICB9CisgICAgZnVuY3Rp
b24gcmVtb3ZlR3V0dGVyTWFya2VyKGxpbmUpIHsKKyAgICAgIGlmICh0eXBlb2YgbGluZSA9PSAi
bnVtYmVyIikgbGluZSA9IGdldExpbmUoY2xpcExpbmUobGluZSkpOworICAgICAgbGluZS5ndXR0
ZXJNYXJrZXIgPSBudWxsOworICAgICAgZ3V0dGVyRGlydHkgPSB0cnVlOworICAgIH0KKworICAg
IGZ1bmN0aW9uIGNoYW5nZUxpbmUoaGFuZGxlLCBvcCkgeworICAgICAgdmFyIG5vID0gaGFuZGxl
LCBsaW5lID0gaGFuZGxlOworICAgICAgaWYgKHR5cGVvZiBoYW5kbGUgPT0gIm51bWJlciIpIGxp
bmUgPSBnZXRMaW5lKGNsaXBMaW5lKGhhbmRsZSkpOworICAgICAgZWxzZSBubyA9IGxpbmVObyho
YW5kbGUpOworICAgICAgaWYgKG5vID09IG51bGwpIHJldHVybiBudWxsOworICAgICAgaWYgKG9w
KGxpbmUsIG5vKSkgY2hhbmdlcy5wdXNoKHtmcm9tOiBubywgdG86IG5vICsgMX0pOworICAgICAg
ZWxzZSByZXR1cm4gbnVsbDsKKyAgICAgIHJldHVybiBsaW5lOworICAgIH0KKyAgICBmdW5jdGlv
biBzZXRMaW5lQ2xhc3MoaGFuZGxlLCBjbGFzc05hbWUsIGJnQ2xhc3NOYW1lKSB7CisgICAgICBy
ZXR1cm4gY2hhbmdlTGluZShoYW5kbGUsIGZ1bmN0aW9uKGxpbmUpIHsKKyAgICAgICAgaWYgKGxp
bmUuY2xhc3NOYW1lICE9IGNsYXNzTmFtZSB8fCBsaW5lLmJnQ2xhc3NOYW1lICE9IGJnQ2xhc3NO
YW1lKSB7CisgICAgICAgICAgbGluZS5jbGFzc05hbWUgPSBjbGFzc05hbWU7CisgICAgICAgICAg
bGluZS5iZ0NsYXNzTmFtZSA9IGJnQ2xhc3NOYW1lOworICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisgICAgICB9KTsKKyAgICB9CisgICAgZnVuY3Rpb24gc2V0TGluZUhpZGRlbiho
YW5kbGUsIGhpZGRlbikgeworICAgICAgcmV0dXJuIGNoYW5nZUxpbmUoaGFuZGxlLCBmdW5jdGlv
bihsaW5lLCBubykgeworICAgICAgICBpZiAobGluZS5oaWRkZW4gIT0gaGlkZGVuKSB7CisgICAg
ICAgICAgbGluZS5oaWRkZW4gPSBoaWRkZW47CisgICAgICAgICAgaWYgKCFvcHRpb25zLmxpbmVX
cmFwcGluZykgeworICAgICAgICAgICAgaWYgKGhpZGRlbiAmJiBsaW5lLnRleHQubGVuZ3RoID09
IG1heExpbmUudGV4dC5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgdXBkYXRlTWF4TGluZSA9IHRy
dWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCFoaWRkZW4gJiYgbGluZS50ZXh0Lmxlbmd0aCA+
IG1heExpbmUudGV4dC5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgbWF4TGluZSA9IGxpbmU7IHVw
ZGF0ZU1heExpbmUgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAg
ICAgdXBkYXRlTGluZUhlaWdodChsaW5lLCBoaWRkZW4gPyAwIDogMSk7CisgICAgICAgICAgdmFy
IGZsaW5lID0gc2VsLmZyb20ubGluZSwgdGxpbmUgPSBzZWwudG8ubGluZTsKKyAgICAgICAgICBp
ZiAoaGlkZGVuICYmIChmbGluZSA9PSBubyB8fCB0bGluZSA9PSBubykpIHsKKyAgICAgICAgICAg
IHZhciBmcm9tID0gZmxpbmUgPT0gbm8gPyBza2lwSGlkZGVuKHtsaW5lOiBmbGluZSwgY2g6IDB9
LCBmbGluZSwgMCkgOiBzZWwuZnJvbTsKKyAgICAgICAgICAgIHZhciB0byA9IHRsaW5lID09IG5v
ID8gc2tpcEhpZGRlbih7bGluZTogdGxpbmUsIGNoOiAwfSwgdGxpbmUsIDApIDogc2VsLnRvOwor
ICAgICAgICAgICAgLy8gQ2FuJ3QgaGlkZSB0aGUgbGFzdCB2aXNpYmxlIGxpbmUsIHdlJ2QgaGF2
ZSBubyBwbGFjZSB0byBwdXQgdGhlIGN1cnNvcgorICAgICAgICAgICAgaWYgKCF0bykgcmV0dXJu
OworICAgICAgICAgICAgc2V0U2VsZWN0aW9uKGZyb20sIHRvKTsKKyAgICAgICAgICB9CisgICAg
ICAgICAgcmV0dXJuIChndXR0ZXJEaXJ0eSA9IHRydWUpOworICAgICAgICB9CisgICAgICB9KTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBsaW5lSW5mbyhsaW5lKSB7CisgICAgICBpZiAodHlwZW9m
IGxpbmUgPT0gIm51bWJlciIpIHsKKyAgICAgICAgaWYgKCFpc0xpbmUobGluZSkpIHJldHVybiBu
dWxsOworICAgICAgICB2YXIgbiA9IGxpbmU7CisgICAgICAgIGxpbmUgPSBnZXRMaW5lKGxpbmUp
OworICAgICAgICBpZiAoIWxpbmUpIHJldHVybiBudWxsOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgdmFyIG4gPSBsaW5lTm8obGluZSk7CisgICAgICAgIGlmIChuID09IG51bGwpIHJldHVybiBu
dWxsOworICAgICAgfQorICAgICAgdmFyIG1hcmtlciA9IGxpbmUuZ3V0dGVyTWFya2VyOworICAg
ICAgcmV0dXJuIHtsaW5lOiBuLCBoYW5kbGU6IGxpbmUsIHRleHQ6IGxpbmUudGV4dCwgbWFya2Vy
VGV4dDogbWFya2VyICYmIG1hcmtlci50ZXh0LAorICAgICAgICAgICAgICBtYXJrZXJDbGFzczog
bWFya2VyICYmIG1hcmtlci5zdHlsZSwgbGluZUNsYXNzOiBsaW5lLmNsYXNzTmFtZSwgYmdDbGFz
czogbGluZS5iZ0NsYXNzTmFtZX07CisgICAgfQorCisgICAgLy8gVGhlc2UgYXJlIHVzZWQgdG8g
Z28gZnJvbSBwaXhlbCBwb3NpdGlvbnMgdG8gY2hhcmFjdGVyCisgICAgLy8gcG9zaXRpb25zLCB0
YWtpbmcgdmFyeWluZyBjaGFyYWN0ZXIgd2lkdGhzIGludG8gYWNjb3VudC4KKyAgICBmdW5jdGlv
biBjaGFyRnJvbVgobGluZSwgeCkgeworICAgICAgaWYgKHggPD0gMCkgcmV0dXJuIDA7CisgICAg
ICB2YXIgbGluZU9iaiA9IGdldExpbmUobGluZSksIHRleHQgPSBsaW5lT2JqLnRleHQ7CisgICAg
ICBmdW5jdGlvbiBnZXRYKGxlbikgeworICAgICAgICByZXR1cm4gbWVhc3VyZUxpbmUobGluZU9i
aiwgbGVuKS5sZWZ0OworICAgICAgfQorICAgICAgdmFyIGZyb20gPSAwLCBmcm9tWCA9IDAsIHRv
ID0gdGV4dC5sZW5ndGgsIHRvWDsKKyAgICAgIC8vIEd1ZXNzIGEgc3VpdGFibGUgdXBwZXIgYm91
bmQgZm9yIG91ciBzZWFyY2guCisgICAgICB2YXIgZXN0aW1hdGVkID0gTWF0aC5taW4odG8sIE1h
dGguY2VpbCh4IC8gY2hhcldpZHRoKCkpKTsKKyAgICAgIGZvciAoOzspIHsKKyAgICAgICAgdmFy
IGVzdFggPSBnZXRYKGVzdGltYXRlZCk7CisgICAgICAgIGlmIChlc3RYIDw9IHggJiYgZXN0aW1h
dGVkIDwgdG8pIGVzdGltYXRlZCA9IE1hdGgubWluKHRvLCBNYXRoLmNlaWwoZXN0aW1hdGVkICog
MS4yKSk7CisgICAgICAgIGVsc2Uge3RvWCA9IGVzdFg7IHRvID0gZXN0aW1hdGVkOyBicmVhazt9
CisgICAgICB9CisgICAgICBpZiAoeCA+IHRvWCkgcmV0dXJuIHRvOworICAgICAgLy8gVHJ5IHRv
IGd1ZXNzIGEgc3VpdGFibGUgbG93ZXIgYm91bmQgYXMgd2VsbC4KKyAgICAgIGVzdGltYXRlZCA9
IE1hdGguZmxvb3IodG8gKiAwLjgpOyBlc3RYID0gZ2V0WChlc3RpbWF0ZWQpOworICAgICAgaWYg
KGVzdFggPCB4KSB7ZnJvbSA9IGVzdGltYXRlZDsgZnJvbVggPSBlc3RYO30KKyAgICAgIC8vIERv
IGEgYmluYXJ5IHNlYXJjaCBiZXR3ZWVuIHRoZXNlIGJvdW5kcy4KKyAgICAgIGZvciAoOzspIHsK
KyAgICAgICAgaWYgKHRvIC0gZnJvbSA8PSAxKSByZXR1cm4gKHRvWCAtIHggPiB4IC0gZnJvbVgp
ID8gZnJvbSA6IHRvOworICAgICAgICB2YXIgbWlkZGxlID0gTWF0aC5jZWlsKChmcm9tICsgdG8p
IC8gMiksIG1pZGRsZVggPSBnZXRYKG1pZGRsZSk7CisgICAgICAgIGlmIChtaWRkbGVYID4geCkg
e3RvID0gbWlkZGxlOyB0b1ggPSBtaWRkbGVYO30KKyAgICAgICAgZWxzZSB7ZnJvbSA9IG1pZGRs
ZTsgZnJvbVggPSBtaWRkbGVYO30KKyAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBtZWFz
dXJlTGluZShsaW5lLCBjaCkgeworICAgICAgaWYgKGNoID09IDApIHJldHVybiB7dG9wOiAwLCBs
ZWZ0OiAwfTsKKyAgICAgIHZhciB3YnIgPSBvcHRpb25zLmxpbmVXcmFwcGluZyAmJiBjaCA8IGxp
bmUudGV4dC5sZW5ndGggJiYKKyAgICAgICAgICAgICAgICBzcGFuQWZmZWN0c1dyYXBwaW5nLnRl
c3QobGluZS50ZXh0LnNsaWNlKGNoIC0gMSwgY2ggKyAxKSk7CisgICAgICB2YXIgcHJlID0gbGlu
ZS5nZXRFbGVtZW50KG1ha2VUYWIsIGNoLCB3YnIpOworICAgICAgcmVtb3ZlQ2hpbGRyZW5BbmRB
ZGQobWVhc3VyZSwgcHJlKTsKKyAgICAgIHZhciBhbmNob3IgPSBwcmUuYW5jaG9yOworICAgICAg
dmFyIHRvcCA9IGFuY2hvci5vZmZzZXRUb3AsIGxlZnQgPSBhbmNob3Iub2Zmc2V0TGVmdDsKKyAg
ICAgIC8vIE9sZGVyIElFcyByZXBvcnQgemVybyBvZmZzZXRzIGZvciBzcGFucyBkaXJlY3RseSBh
ZnRlciBhIHdyYXAKKyAgICAgIGlmIChpZSAmJiB0b3AgPT0gMCAmJiBsZWZ0ID09IDApIHsKKyAg
ICAgICAgdmFyIGJhY2t1cCA9IGVsdCgic3BhbiIsICJ4Iik7CisgICAgICAgIGFuY2hvci5wYXJl
bnROb2RlLmluc2VydEJlZm9yZShiYWNrdXAsIGFuY2hvci5uZXh0U2libGluZyk7CisgICAgICAg
IHRvcCA9IGJhY2t1cC5vZmZzZXRUb3A7CisgICAgICB9CisgICAgICByZXR1cm4ge3RvcDogdG9w
LCBsZWZ0OiBsZWZ0fTsKKyAgICB9CisgICAgZnVuY3Rpb24gbG9jYWxDb29yZHMocG9zLCBpbkxp
bmVXcmFwKSB7CisgICAgICB2YXIgeCwgbGggPSB0ZXh0SGVpZ2h0KCksIHkgPSBsaCAqIChoZWln
aHRBdExpbmUoZG9jLCBwb3MubGluZSkgLSAoaW5MaW5lV3JhcCA/IGRpc3BsYXlPZmZzZXQgOiAw
KSk7CisgICAgICBpZiAocG9zLmNoID09IDApIHggPSAwOworICAgICAgZWxzZSB7CisgICAgICAg
IHZhciBzcCA9IG1lYXN1cmVMaW5lKGdldExpbmUocG9zLmxpbmUpLCBwb3MuY2gpOworICAgICAg
ICB4ID0gc3AubGVmdDsKKyAgICAgICAgaWYgKG9wdGlvbnMubGluZVdyYXBwaW5nKSB5ICs9IE1h
dGgubWF4KDAsIHNwLnRvcCk7CisgICAgICB9CisgICAgICByZXR1cm4ge3g6IHgsIHk6IHksIHlC
b3Q6IHkgKyBsaH07CisgICAgfQorICAgIC8vIENvb3JkcyBtdXN0IGJlIGxpbmVTcGFjZS1sb2Nh
bAorICAgIGZ1bmN0aW9uIGNvb3Jkc0NoYXIoeCwgeSkgeworICAgICAgaWYgKHkgPCAwKSByZXR1
cm4ge2xpbmU6IDAsIGNoOiAwfTsKKyAgICAgIHZhciB0aCA9IHRleHRIZWlnaHQoKSwgY3cgPSBj
aGFyV2lkdGgoKSwgaGVpZ2h0UG9zID0gZGlzcGxheU9mZnNldCArIE1hdGguZmxvb3IoeSAvIHRo
KTsKKyAgICAgIHZhciBsaW5lTm8gPSBsaW5lQXRIZWlnaHQoZG9jLCBoZWlnaHRQb3MpOworICAg
ICAgaWYgKGxpbmVObyA+PSBkb2Muc2l6ZSkgcmV0dXJuIHtsaW5lOiBkb2Muc2l6ZSAtIDEsIGNo
OiBnZXRMaW5lKGRvYy5zaXplIC0gMSkudGV4dC5sZW5ndGh9OworICAgICAgdmFyIGxpbmVPYmog
PSBnZXRMaW5lKGxpbmVObyksIHRleHQgPSBsaW5lT2JqLnRleHQ7CisgICAgICB2YXIgdHcgPSBv
cHRpb25zLmxpbmVXcmFwcGluZywgaW5uZXJPZmYgPSB0dyA/IGhlaWdodFBvcyAtIGhlaWdodEF0
TGluZShkb2MsIGxpbmVObykgOiAwOworICAgICAgaWYgKHggPD0gMCAmJiBpbm5lck9mZiA9PSAw
KSByZXR1cm4ge2xpbmU6IGxpbmVObywgY2g6IDB9OworICAgICAgdmFyIHdyb25nTGluZSA9IGZh
bHNlOworICAgICAgZnVuY3Rpb24gZ2V0WChsZW4pIHsKKyAgICAgICAgdmFyIHNwID0gbWVhc3Vy
ZUxpbmUobGluZU9iaiwgbGVuKTsKKyAgICAgICAgaWYgKHR3KSB7CisgICAgICAgICAgdmFyIG9m
ZiA9IE1hdGgucm91bmQoc3AudG9wIC8gdGgpOworICAgICAgICAgIHdyb25nTGluZSA9IG9mZiAh
PSBpbm5lck9mZjsKKyAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoMCwgc3AubGVmdCArIChvZmYg
LSBpbm5lck9mZikgKiBzY3JvbGxlci5jbGllbnRXaWR0aCk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIHNwLmxlZnQ7CisgICAgICB9CisgICAgICB2YXIgZnJvbSA9IDAsIGZyb21YID0gMCwg
dG8gPSB0ZXh0Lmxlbmd0aCwgdG9YOworICAgICAgLy8gR3Vlc3MgYSBzdWl0YWJsZSB1cHBlciBi
b3VuZCBmb3Igb3VyIHNlYXJjaC4KKyAgICAgIHZhciBlc3RpbWF0ZWQgPSBNYXRoLm1pbih0bywg
TWF0aC5jZWlsKCh4ICsgaW5uZXJPZmYgKiBzY3JvbGxlci5jbGllbnRXaWR0aCAqIC45KSAvIGN3
KSk7CisgICAgICBmb3IgKDs7KSB7CisgICAgICAgIHZhciBlc3RYID0gZ2V0WChlc3RpbWF0ZWQp
OworICAgICAgICBpZiAoZXN0WCA8PSB4ICYmIGVzdGltYXRlZCA8IHRvKSBlc3RpbWF0ZWQgPSBN
YXRoLm1pbih0bywgTWF0aC5jZWlsKGVzdGltYXRlZCAqIDEuMikpOworICAgICAgICBlbHNlIHt0
b1ggPSBlc3RYOyB0byA9IGVzdGltYXRlZDsgYnJlYWs7fQorICAgICAgfQorICAgICAgaWYgKHgg
PiB0b1gpIHJldHVybiB7bGluZTogbGluZU5vLCBjaDogdG99OworICAgICAgLy8gVHJ5IHRvIGd1
ZXNzIGEgc3VpdGFibGUgbG93ZXIgYm91bmQgYXMgd2VsbC4KKyAgICAgIGVzdGltYXRlZCA9IE1h
dGguZmxvb3IodG8gKiAwLjgpOyBlc3RYID0gZ2V0WChlc3RpbWF0ZWQpOworICAgICAgaWYgKGVz
dFggPCB4KSB7ZnJvbSA9IGVzdGltYXRlZDsgZnJvbVggPSBlc3RYO30KKyAgICAgIC8vIERvIGEg
YmluYXJ5IHNlYXJjaCBiZXR3ZWVuIHRoZXNlIGJvdW5kcy4KKyAgICAgIGZvciAoOzspIHsKKyAg
ICAgICAgaWYgKHRvIC0gZnJvbSA8PSAxKSB7CisgICAgICAgICAgdmFyIGFmdGVyID0geCAtIGZy
b21YIDwgdG9YIC0geDsKKyAgICAgICAgICByZXR1cm4ge2xpbmU6IGxpbmVObywgY2g6IGFmdGVy
ID8gZnJvbSA6IHRvLCBhZnRlcjogYWZ0ZXJ9OworICAgICAgICB9CisgICAgICAgIHZhciBtaWRk
bGUgPSBNYXRoLmNlaWwoKGZyb20gKyB0bykgLyAyKSwgbWlkZGxlWCA9IGdldFgobWlkZGxlKTsK
KyAgICAgICAgaWYgKG1pZGRsZVggPiB4KSB7dG8gPSBtaWRkbGU7IHRvWCA9IG1pZGRsZVg7IGlm
ICh3cm9uZ0xpbmUpIHRvWCArPSAxMDAwOyB9CisgICAgICAgIGVsc2Uge2Zyb20gPSBtaWRkbGU7
IGZyb21YID0gbWlkZGxlWDt9CisgICAgICB9CisgICAgfQorICAgIGZ1bmN0aW9uIHBhZ2VDb29y
ZHMocG9zKSB7CisgICAgICB2YXIgbG9jYWwgPSBsb2NhbENvb3Jkcyhwb3MsIHRydWUpLCBvZmYg
PSBlbHRPZmZzZXQobGluZVNwYWNlKTsKKyAgICAgIHJldHVybiB7eDogb2ZmLmxlZnQgKyBsb2Nh
bC54LCB5OiBvZmYudG9wICsgbG9jYWwueSwgeUJvdDogb2ZmLnRvcCArIGxvY2FsLnlCb3R9Owor
ICAgIH0KKworICAgIHZhciBjYWNoZWRIZWlnaHQsIGNhY2hlZEhlaWdodEZvciwgbWVhc3VyZVBy
ZTsKKyAgICBmdW5jdGlvbiB0ZXh0SGVpZ2h0KCkgeworICAgICAgaWYgKG1lYXN1cmVQcmUgPT0g
bnVsbCkgeworICAgICAgICBtZWFzdXJlUHJlID0gZWx0KCJwcmUiKTsKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCA0OTsgKytpKSB7CisgICAgICAgICAgbWVhc3VyZVByZS5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgieCIpKTsKKyAgICAgICAgICBtZWFzdXJlUHJlLmFw
cGVuZENoaWxkKGVsdCgiYnIiKSk7CisgICAgICAgIH0KKyAgICAgICAgbWVhc3VyZVByZS5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgieCIpKTsKKyAgICAgIH0KKyAgICAgIHZh
ciBvZmZzZXRIZWlnaHQgPSBsaW5lRGl2LmNsaWVudEhlaWdodDsKKyAgICAgIGlmIChvZmZzZXRI
ZWlnaHQgPT0gY2FjaGVkSGVpZ2h0Rm9yKSByZXR1cm4gY2FjaGVkSGVpZ2h0OworICAgICAgY2Fj
aGVkSGVpZ2h0Rm9yID0gb2Zmc2V0SGVpZ2h0OworICAgICAgcmVtb3ZlQ2hpbGRyZW5BbmRBZGQo
bWVhc3VyZSwgbWVhc3VyZVByZS5jbG9uZU5vZGUodHJ1ZSkpOworICAgICAgY2FjaGVkSGVpZ2h0
ID0gbWVhc3VyZS5maXJzdENoaWxkLm9mZnNldEhlaWdodCAvIDUwIHx8IDE7CisgICAgICByZW1v
dmVDaGlsZHJlbihtZWFzdXJlKTsKKyAgICAgIHJldHVybiBjYWNoZWRIZWlnaHQ7CisgICAgfQor
ICAgIHZhciBjYWNoZWRXaWR0aCwgY2FjaGVkV2lkdGhGb3IgPSAwOworICAgIGZ1bmN0aW9uIGNo
YXJXaWR0aCgpIHsKKyAgICAgIGlmIChzY3JvbGxlci5jbGllbnRXaWR0aCA9PSBjYWNoZWRXaWR0
aEZvcikgcmV0dXJuIGNhY2hlZFdpZHRoOworICAgICAgY2FjaGVkV2lkdGhGb3IgPSBzY3JvbGxl
ci5jbGllbnRXaWR0aDsKKyAgICAgIHZhciBhbmNob3IgPSBlbHQoInNwYW4iLCAieCIpOworICAg
ICAgdmFyIHByZSA9IGVsdCgicHJlIiwgW2FuY2hvcl0pOworICAgICAgcmVtb3ZlQ2hpbGRyZW5B
bmRBZGQobWVhc3VyZSwgcHJlKTsKKyAgICAgIHJldHVybiAoY2FjaGVkV2lkdGggPSBhbmNob3Iu
b2Zmc2V0V2lkdGggfHwgMTApOworICAgIH0KKyAgICBmdW5jdGlvbiBwYWRkaW5nVG9wKCkge3Jl
dHVybiBsaW5lU3BhY2Uub2Zmc2V0VG9wO30KKyAgICBmdW5jdGlvbiBwYWRkaW5nTGVmdCgpIHty
ZXR1cm4gbGluZVNwYWNlLm9mZnNldExlZnQ7fQorCisgICAgZnVuY3Rpb24gcG9zRnJvbU1vdXNl
KGUsIGxpYmVyYWwpIHsKKyAgICAgIHZhciBvZmZXID0gZWx0T2Zmc2V0KHNjcm9sbGVyLCB0cnVl
KSwgeCwgeTsKKyAgICAgIC8vIEZhaWxzIHVucHJlZGljdGFibHkgb24gSUVbNjddIHdoZW4gbW91
c2UgaXMgZHJhZ2dlZCBhcm91bmQgcXVpY2tseS4KKyAgICAgIHRyeSB7IHggPSBlLmNsaWVudFg7
IHkgPSBlLmNsaWVudFk7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIG51bGw7IH0KKyAgICAgIC8vIFRo
aXMgaXMgYSBtZXNzIG9mIGEgaGV1cmlzdGljIHRvIHRyeSBhbmQgZGV0ZXJtaW5lIHdoZXRoZXIg
YQorICAgICAgLy8gc2Nyb2xsLWJhciB3YXMgY2xpY2tlZCBvciBub3QsIGFuZCB0byByZXR1cm4g
bnVsbCBpZiBvbmUgd2FzCisgICAgICAvLyAoYW5kICFsaWJlcmFsKS4KKyAgICAgIGlmICghbGli
ZXJhbCAmJiAoeCAtIG9mZlcubGVmdCA+IHNjcm9sbGVyLmNsaWVudFdpZHRoIHx8IHkgLSBvZmZX
LnRvcCA+IHNjcm9sbGVyLmNsaWVudEhlaWdodCkpCisgICAgICAgIHJldHVybiBudWxsOworICAg
ICAgdmFyIG9mZkwgPSBlbHRPZmZzZXQobGluZVNwYWNlLCB0cnVlKTsKKyAgICAgIHJldHVybiBj
b29yZHNDaGFyKHggLSBvZmZMLmxlZnQsIHkgLSBvZmZMLnRvcCk7CisgICAgfQorICAgIGZ1bmN0
aW9uIG9uQ29udGV4dE1lbnUoZSkgeworICAgICAgdmFyIHBvcyA9IHBvc0Zyb21Nb3VzZShlKSwg
c2Nyb2xsUG9zID0gc2Nyb2xsYmFyLnNjcm9sbFRvcDsKKyAgICAgIGlmICghcG9zIHx8IG9wZXJh
KSByZXR1cm47IC8vIE9wZXJhIGlzIGRpZmZpY3VsdC4KKyAgICAgIGlmIChwb3NFcShzZWwuZnJv
bSwgc2VsLnRvKSB8fCBwb3NMZXNzKHBvcywgc2VsLmZyb20pIHx8ICFwb3NMZXNzKHBvcywgc2Vs
LnRvKSkKKyAgICAgICAgb3BlcmF0aW9uKHNldEN1cnNvcikocG9zLmxpbmUsIHBvcy5jaCk7CisK
KyAgICAgIHZhciBvbGRDU1MgPSBpbnB1dC5zdHlsZS5jc3NUZXh0OworICAgICAgaW5wdXREaXYu
c3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiOworICAgICAgaW5wdXQuc3R5bGUuY3NzVGV4dCA9
ICJwb3NpdGlvbjogZml4ZWQ7IHdpZHRoOiAzMHB4OyBoZWlnaHQ6IDMwcHg7IHRvcDogIiArIChl
LmNsaWVudFkgLSA1KSArCisgICAgICAgICJweDsgbGVmdDogIiArIChlLmNsaWVudFggLSA1KSAr
ICJweDsgei1pbmRleDogMTAwMDsgYmFja2dyb3VuZDogd2hpdGU7ICIgKworICAgICAgICAiYm9y
ZGVyLXdpZHRoOiAwOyBvdXRsaW5lOiBub25lOyBvdmVyZmxvdzogaGlkZGVuOyBvcGFjaXR5OiAu
MDU7IGZpbHRlcjogYWxwaGEob3BhY2l0eT01KTsiOworICAgICAgbGVhdmVJbnB1dEFsb25lID0g
dHJ1ZTsKKyAgICAgIHZhciB2YWwgPSBpbnB1dC52YWx1ZSA9IGdldFNlbGVjdGlvbigpOworICAg
ICAgZm9jdXNJbnB1dCgpOworICAgICAgc2VsZWN0SW5wdXQoaW5wdXQpOworICAgICAgZnVuY3Rp
b24gcmVoaWRlKCkgeworICAgICAgICB2YXIgbmV3VmFsID0gc3BsaXRMaW5lcyhpbnB1dC52YWx1
ZSkuam9pbigiXG4iKTsKKyAgICAgICAgaWYgKG5ld1ZhbCAhPSB2YWwgJiYgIW9wdGlvbnMucmVh
ZE9ubHkpIG9wZXJhdGlvbihyZXBsYWNlU2VsZWN0aW9uKShuZXdWYWwsICJlbmQiKTsKKyAgICAg
ICAgaW5wdXREaXYuc3R5bGUucG9zaXRpb24gPSAicmVsYXRpdmUiOworICAgICAgICBpbnB1dC5z
dHlsZS5jc3NUZXh0ID0gb2xkQ1NTOworICAgICAgICBpZiAoaWVfbHQ5KSBzY3JvbGxiYXIuc2Ny
b2xsVG9wID0gc2Nyb2xsUG9zOworICAgICAgICBsZWF2ZUlucHV0QWxvbmUgPSBmYWxzZTsKKyAg
ICAgICAgcmVzZXRJbnB1dCh0cnVlKTsKKyAgICAgICAgc2xvd1BvbGwoKTsKKyAgICAgIH0KKwor
ICAgICAgaWYgKGdlY2tvKSB7CisgICAgICAgIGVfc3RvcChlKTsKKyAgICAgICAgdmFyIG1vdXNl
dXAgPSBjb25uZWN0KHdpbmRvdywgIm1vdXNldXAiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICBt
b3VzZXVwKCk7CisgICAgICAgICAgc2V0VGltZW91dChyZWhpZGUsIDIwKTsKKyAgICAgICAgfSwg
dHJ1ZSk7CisgICAgICB9IGVsc2UgeworICAgICAgICBzZXRUaW1lb3V0KHJlaGlkZSwgNTApOwor
ICAgICAgfQorICAgIH0KKworICAgIC8vIEN1cnNvci1ibGlua2luZworICAgIGZ1bmN0aW9uIHJl
c3RhcnRCbGluaygpIHsKKyAgICAgIGNsZWFySW50ZXJ2YWwoYmxpbmtlcik7CisgICAgICB2YXIg
b24gPSB0cnVlOworICAgICAgY3Vyc29yLnN0eWxlLnZpc2liaWxpdHkgPSAiIjsKKyAgICAgIGJs
aW5rZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgY3Vyc29yLnN0eWxlLnZp
c2liaWxpdHkgPSAob24gPSAhb24pID8gIiIgOiAiaGlkZGVuIjsKKyAgICAgIH0sIDY1MCk7Cisg
ICAgfQorCisgICAgdmFyIG1hdGNoaW5nID0geyIoIjogIik+IiwgIikiOiAiKDwiLCAiWyI6ICJd
PiIsICJdIjogIls8IiwgInsiOiAifT4iLCAifSI6ICJ7PCJ9OworICAgIGZ1bmN0aW9uIG1hdGNo
QnJhY2tldHMoYXV0b2NsZWFyKSB7CisgICAgICB2YXIgaGVhZCA9IHNlbC5pbnZlcnRlZCA/IHNl
bC5mcm9tIDogc2VsLnRvLCBsaW5lID0gZ2V0TGluZShoZWFkLmxpbmUpLCBwb3MgPSBoZWFkLmNo
IC0gMTsKKyAgICAgIHZhciBtYXRjaCA9IChwb3MgPj0gMCAmJiBtYXRjaGluZ1tsaW5lLnRleHQu
Y2hhckF0KHBvcyldKSB8fCBtYXRjaGluZ1tsaW5lLnRleHQuY2hhckF0KCsrcG9zKV07CisgICAg
ICBpZiAoIW1hdGNoKSByZXR1cm47CisgICAgICB2YXIgY2ggPSBtYXRjaC5jaGFyQXQoMCksIGZv
cndhcmQgPSBtYXRjaC5jaGFyQXQoMSkgPT0gIj4iLCBkID0gZm9yd2FyZCA/IDEgOiAtMSwgc3Qg
PSBsaW5lLnN0eWxlczsKKyAgICAgIGZvciAodmFyIG9mZiA9IHBvcyArIDEsIGkgPSAwLCBlID0g
c3QubGVuZ3RoOyBpIDwgZTsgaSs9MikKKyAgICAgICAgaWYgKChvZmYgLT0gc3RbaV0ubGVuZ3Ro
KSA8PSAwKSB7dmFyIHN0eWxlID0gc3RbaSsxXTsgYnJlYWs7fQorCisgICAgICB2YXIgc3RhY2sg
PSBbbGluZS50ZXh0LmNoYXJBdChwb3MpXSwgcmUgPSAvWygpe31bXF1dLzsKKyAgICAgIGZ1bmN0
aW9uIHNjYW4obGluZSwgZnJvbSwgdG8pIHsKKyAgICAgICAgaWYgKCFsaW5lLnRleHQpIHJldHVy
bjsKKyAgICAgICAgdmFyIHN0ID0gbGluZS5zdHlsZXMsIHBvcyA9IGZvcndhcmQgPyAwIDogbGlu
ZS50ZXh0Lmxlbmd0aCAtIDEsIGN1cjsKKyAgICAgICAgZm9yICh2YXIgaSA9IGZvcndhcmQgPyAw
IDogc3QubGVuZ3RoIC0gMiwgZSA9IGZvcndhcmQgPyBzdC5sZW5ndGggOiAtMjsgaSAhPSBlOyBp
ICs9IDIqZCkgeworICAgICAgICAgIHZhciB0ZXh0ID0gc3RbaV07CisgICAgICAgICAgaWYgKHN0
W2krMV0gIT0gc3R5bGUpIHtwb3MgKz0gZCAqIHRleHQubGVuZ3RoOyBjb250aW51ZTt9CisgICAg
ICAgICAgZm9yICh2YXIgaiA9IGZvcndhcmQgPyAwIDogdGV4dC5sZW5ndGggLSAxLCB0ZSA9IGZv
cndhcmQgPyB0ZXh0Lmxlbmd0aCA6IC0xOyBqICE9IHRlOyBqICs9IGQsIHBvcys9ZCkgeworICAg
ICAgICAgICAgaWYgKHBvcyA+PSBmcm9tICYmIHBvcyA8IHRvICYmIHJlLnRlc3QoY3VyID0gdGV4
dC5jaGFyQXQoaikpKSB7CisgICAgICAgICAgICAgIHZhciBtYXRjaCA9IG1hdGNoaW5nW2N1cl07
CisgICAgICAgICAgICAgIGlmIChtYXRjaC5jaGFyQXQoMSkgPT0gIj4iID09IGZvcndhcmQpIHN0
YWNrLnB1c2goY3VyKTsKKyAgICAgICAgICAgICAgZWxzZSBpZiAoc3RhY2sucG9wKCkgIT0gbWF0
Y2guY2hhckF0KDApKSByZXR1cm4ge3BvczogcG9zLCBtYXRjaDogZmFsc2V9OworICAgICAgICAg
ICAgICBlbHNlIGlmICghc3RhY2subGVuZ3RoKSByZXR1cm4ge3BvczogcG9zLCBtYXRjaDogdHJ1
ZX07CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAg
ICBmb3IgKHZhciBpID0gaGVhZC5saW5lLCBlID0gZm9yd2FyZCA/IE1hdGgubWluKGkgKyAxMDAs
IGRvYy5zaXplKSA6IE1hdGgubWF4KC0xLCBpIC0gMTAwKTsgaSAhPSBlOyBpKz1kKSB7CisgICAg
ICAgIHZhciBsaW5lID0gZ2V0TGluZShpKSwgZmlyc3QgPSBpID09IGhlYWQubGluZTsKKyAgICAg
ICAgdmFyIGZvdW5kID0gc2NhbihsaW5lLCBmaXJzdCAmJiBmb3J3YXJkID8gcG9zICsgMSA6IDAs
IGZpcnN0ICYmICFmb3J3YXJkID8gcG9zIDogbGluZS50ZXh0Lmxlbmd0aCk7CisgICAgICAgIGlm
IChmb3VuZCkgYnJlYWs7CisgICAgICB9CisgICAgICBpZiAoIWZvdW5kKSBmb3VuZCA9IHtwb3M6
IG51bGwsIG1hdGNoOiBmYWxzZX07CisgICAgICB2YXIgc3R5bGUgPSBmb3VuZC5tYXRjaCA/ICJD
b2RlTWlycm9yLW1hdGNoaW5nYnJhY2tldCIgOiAiQ29kZU1pcnJvci1ub25tYXRjaGluZ2JyYWNr
ZXQiOworICAgICAgdmFyIG9uZSA9IG1hcmtUZXh0KHtsaW5lOiBoZWFkLmxpbmUsIGNoOiBwb3N9
LCB7bGluZTogaGVhZC5saW5lLCBjaDogcG9zKzF9LCBzdHlsZSksCisgICAgICAgICAgdHdvID0g
Zm91bmQucG9zICE9IG51bGwgJiYgbWFya1RleHQoe2xpbmU6IGksIGNoOiBmb3VuZC5wb3N9LCB7
bGluZTogaSwgY2g6IGZvdW5kLnBvcyArIDF9LCBzdHlsZSk7CisgICAgICB2YXIgY2xlYXIgPSBv
cGVyYXRpb24oZnVuY3Rpb24oKXtvbmUuY2xlYXIoKTsgdHdvICYmIHR3by5jbGVhcigpO30pOwor
ICAgICAgaWYgKGF1dG9jbGVhcikgc2V0VGltZW91dChjbGVhciwgODAwKTsKKyAgICAgIGVsc2Ug
YnJhY2tldEhpZ2hsaWdodGVkID0gY2xlYXI7CisgICAgfQorCisgICAgLy8gRmluZHMgdGhlIGxp
bmUgdG8gc3RhcnQgd2l0aCB3aGVuIHN0YXJ0aW5nIGEgcGFyc2UuIFRyaWVzIHRvCisgICAgLy8g
ZmluZCBhIGxpbmUgd2l0aCBhIHN0YXRlQWZ0ZXIsIHNvIHRoYXQgaXQgY2FuIHN0YXJ0IHdpdGgg
YQorICAgIC8vIHZhbGlkIHN0YXRlLiBJZiB0aGF0IGZhaWxzLCBpdCByZXR1cm5zIHRoZSBsaW5l
IHdpdGggdGhlCisgICAgLy8gc21hbGxlc3QgaW5kZW50YXRpb24sIHdoaWNoIHRlbmRzIHRvIG5l
ZWQgdGhlIGxlYXN0IGNvbnRleHQgdG8KKyAgICAvLyBwYXJzZSBjb3JyZWN0bHkuCisgICAgZnVu
Y3Rpb24gZmluZFN0YXJ0TGluZShuKSB7CisgICAgICB2YXIgbWluaW5kZW50LCBtaW5saW5lOwor
ICAgICAgZm9yICh2YXIgc2VhcmNoID0gbiwgbGltID0gbiAtIDQwOyBzZWFyY2ggPiBsaW07IC0t
c2VhcmNoKSB7CisgICAgICAgIGlmIChzZWFyY2ggPT0gMCkgcmV0dXJuIDA7CisgICAgICAgIHZh
ciBsaW5lID0gZ2V0TGluZShzZWFyY2gtMSk7CisgICAgICAgIGlmIChsaW5lLnN0YXRlQWZ0ZXIp
IHJldHVybiBzZWFyY2g7CisgICAgICAgIHZhciBpbmRlbnRlZCA9IGxpbmUuaW5kZW50YXRpb24o
b3B0aW9ucy50YWJTaXplKTsKKyAgICAgICAgaWYgKG1pbmxpbmUgPT0gbnVsbCB8fCBtaW5pbmRl
bnQgPiBpbmRlbnRlZCkgeworICAgICAgICAgIG1pbmxpbmUgPSBzZWFyY2ggLSAxOworICAgICAg
ICAgIG1pbmluZGVudCA9IGluZGVudGVkOworICAgICAgICB9CisgICAgICB9CisgICAgICByZXR1
cm4gbWlubGluZTsKKyAgICB9CisgICAgZnVuY3Rpb24gZ2V0U3RhdGVCZWZvcmUobikgeworICAg
ICAgdmFyIHN0YXJ0ID0gZmluZFN0YXJ0TGluZShuKSwgc3RhdGUgPSBzdGFydCAmJiBnZXRMaW5l
KHN0YXJ0LTEpLnN0YXRlQWZ0ZXI7CisgICAgICBpZiAoIXN0YXRlKSBzdGF0ZSA9IHN0YXJ0U3Rh
dGUobW9kZSk7CisgICAgICBlbHNlIHN0YXRlID0gY29weVN0YXRlKG1vZGUsIHN0YXRlKTsKKyAg
ICAgIGRvYy5pdGVyKHN0YXJ0LCBuLCBmdW5jdGlvbihsaW5lKSB7CisgICAgICAgIGxpbmUuaGln
aGxpZ2h0KG1vZGUsIHN0YXRlLCBvcHRpb25zLnRhYlNpemUpOworICAgICAgICBsaW5lLnN0YXRl
QWZ0ZXIgPSBjb3B5U3RhdGUobW9kZSwgc3RhdGUpOworICAgICAgfSk7CisgICAgICBpZiAoc3Rh
cnQgPCBuKSBjaGFuZ2VzLnB1c2goe2Zyb206IHN0YXJ0LCB0bzogbn0pOworICAgICAgaWYgKG4g
PCBkb2Muc2l6ZSAmJiAhZ2V0TGluZShuKS5zdGF0ZUFmdGVyKSB3b3JrLnB1c2gobik7CisgICAg
ICByZXR1cm4gc3RhdGU7CisgICAgfQorICAgIGZ1bmN0aW9uIGhpZ2hsaWdodExpbmVzKHN0YXJ0
LCBlbmQpIHsKKyAgICAgIHZhciBzdGF0ZSA9IGdldFN0YXRlQmVmb3JlKHN0YXJ0KTsKKyAgICAg
IGRvYy5pdGVyKHN0YXJ0LCBlbmQsIGZ1bmN0aW9uKGxpbmUpIHsKKyAgICAgICAgbGluZS5oaWdo
bGlnaHQobW9kZSwgc3RhdGUsIG9wdGlvbnMudGFiU2l6ZSk7CisgICAgICAgIGxpbmUuc3RhdGVB
ZnRlciA9IGNvcHlTdGF0ZShtb2RlLCBzdGF0ZSk7CisgICAgICB9KTsKKyAgICB9CisgICAgZnVu
Y3Rpb24gaGlnaGxpZ2h0V29ya2VyKCkgeworICAgICAgdmFyIGVuZCA9ICtuZXcgRGF0ZSArIG9w
dGlvbnMud29ya1RpbWU7CisgICAgICB2YXIgZm91bmRXb3JrID0gd29yay5sZW5ndGg7CisgICAg
ICB3aGlsZSAod29yay5sZW5ndGgpIHsKKyAgICAgICAgaWYgKCFnZXRMaW5lKHNob3dpbmdGcm9t
KS5zdGF0ZUFmdGVyKSB2YXIgdGFzayA9IHNob3dpbmdGcm9tOworICAgICAgICBlbHNlIHZhciB0
YXNrID0gd29yay5wb3AoKTsKKyAgICAgICAgaWYgKHRhc2sgPj0gZG9jLnNpemUpIGNvbnRpbnVl
OworICAgICAgICB2YXIgc3RhcnQgPSBmaW5kU3RhcnRMaW5lKHRhc2spLCBzdGF0ZSA9IHN0YXJ0
ICYmIGdldExpbmUoc3RhcnQtMSkuc3RhdGVBZnRlcjsKKyAgICAgICAgaWYgKHN0YXRlKSBzdGF0
ZSA9IGNvcHlTdGF0ZShtb2RlLCBzdGF0ZSk7CisgICAgICAgIGVsc2Ugc3RhdGUgPSBzdGFydFN0
YXRlKG1vZGUpOworCisgICAgICAgIHZhciB1bmNoYW5nZWQgPSAwLCBjb21wYXJlID0gbW9kZS5j
b21wYXJlU3RhdGVzLCByZWFsQ2hhbmdlID0gZmFsc2UsCisgICAgICAgICAgICBpID0gc3RhcnQs
IGJhaWwgPSBmYWxzZTsKKyAgICAgICAgZG9jLml0ZXIoaSwgZG9jLnNpemUsIGZ1bmN0aW9uKGxp
bmUpIHsKKyAgICAgICAgICB2YXIgaGFkU3RhdGUgPSBsaW5lLnN0YXRlQWZ0ZXI7CisgICAgICAg
ICAgaWYgKCtuZXcgRGF0ZSA+IGVuZCkgeworICAgICAgICAgICAgd29yay5wdXNoKGkpOworICAg
ICAgICAgICAgc3RhcnRXb3JrZXIob3B0aW9ucy53b3JrRGVsYXkpOworICAgICAgICAgICAgaWYg
KHJlYWxDaGFuZ2UpIGNoYW5nZXMucHVzaCh7ZnJvbTogdGFzaywgdG86IGkgKyAxfSk7CisgICAg
ICAgICAgICByZXR1cm4gKGJhaWwgPSB0cnVlKTsKKyAgICAgICAgICB9CisgICAgICAgICAgdmFy
IGNoYW5nZWQgPSBsaW5lLmhpZ2hsaWdodChtb2RlLCBzdGF0ZSwgb3B0aW9ucy50YWJTaXplKTsK
KyAgICAgICAgICBpZiAoY2hhbmdlZCkgcmVhbENoYW5nZSA9IHRydWU7CisgICAgICAgICAgbGlu
ZS5zdGF0ZUFmdGVyID0gY29weVN0YXRlKG1vZGUsIHN0YXRlKTsKKyAgICAgICAgICB2YXIgZG9u
ZSA9IG51bGw7CisgICAgICAgICAgaWYgKGNvbXBhcmUpIHsKKyAgICAgICAgICAgIHZhciBzYW1l
ID0gaGFkU3RhdGUgJiYgY29tcGFyZShoYWRTdGF0ZSwgc3RhdGUpOworICAgICAgICAgICAgaWYg
KHNhbWUgIT0gUGFzcykgZG9uZSA9ICEhc2FtZTsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYg
KGRvbmUgPT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKGNoYW5nZWQgIT09IGZhbHNlIHx8ICFo
YWRTdGF0ZSkgdW5jaGFuZ2VkID0gMDsKKyAgICAgICAgICAgIGVsc2UgaWYgKCsrdW5jaGFuZ2Vk
ID4gMyAmJiAoIW1vZGUuaW5kZW50IHx8IG1vZGUuaW5kZW50KGhhZFN0YXRlLCAiIikgPT0gbW9k
ZS5pbmRlbnQoc3RhdGUsICIiKSkpCisgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAg
ICAgIH0KKyAgICAgICAgICBpZiAoZG9uZSkgcmV0dXJuIHRydWU7CisgICAgICAgICAgKytpOwor
ICAgICAgICB9KTsKKyAgICAgICAgaWYgKGJhaWwpIHJldHVybjsKKyAgICAgICAgaWYgKHJlYWxD
aGFuZ2UpIGNoYW5nZXMucHVzaCh7ZnJvbTogdGFzaywgdG86IGkgKyAxfSk7CisgICAgICB9Cisg
ICAgICBpZiAoZm91bmRXb3JrICYmIG9wdGlvbnMub25IaWdobGlnaHRDb21wbGV0ZSkKKyAgICAg
ICAgb3B0aW9ucy5vbkhpZ2hsaWdodENvbXBsZXRlKGluc3RhbmNlKTsKKyAgICB9CisgICAgZnVu
Y3Rpb24gc3RhcnRXb3JrZXIodGltZSkgeworICAgICAgaWYgKCF3b3JrLmxlbmd0aCkgcmV0dXJu
OworICAgICAgaGlnaGxpZ2h0LnNldCh0aW1lLCBvcGVyYXRpb24oaGlnaGxpZ2h0V29ya2VyKSk7
CisgICAgfQorCisgICAgLy8gT3BlcmF0aW9ucyBhcmUgdXNlZCB0byB3cmFwIGNoYW5nZXMgaW4g
c3VjaCBhIHdheSB0aGF0IGVhY2gKKyAgICAvLyBjaGFuZ2Ugd29uJ3QgaGF2ZSB0byB1cGRhdGUg
dGhlIGN1cnNvciBhbmQgZGlzcGxheSAod2hpY2ggd291bGQKKyAgICAvLyBiZSBhd2t3YXJkLCBz
bG93LCBhbmQgZXJyb3ItcHJvbmUpLCBidXQgaW5zdGVhZCB1cGRhdGVzIGFyZQorICAgIC8vIGJh
dGNoZWQgYW5kIHRoZW4gYWxsIGNvbWJpbmVkIGFuZCBleGVjdXRlZCBhdCBvbmNlLgorICAgIGZ1
bmN0aW9uIHN0YXJ0T3BlcmF0aW9uKCkgeworICAgICAgdXBkYXRlSW5wdXQgPSB1c2VyU2VsQ2hh
bmdlID0gdGV4dENoYW5nZWQgPSBudWxsOworICAgICAgY2hhbmdlcyA9IFtdOyBzZWxlY3Rpb25D
aGFuZ2VkID0gZmFsc2U7IGNhbGxiYWNrcyA9IFtdOworICAgIH0KKyAgICBmdW5jdGlvbiBlbmRP
cGVyYXRpb24oKSB7CisgICAgICBpZiAodXBkYXRlTWF4TGluZSkgY29tcHV0ZU1heExlbmd0aCgp
OworICAgICAgaWYgKG1heExpbmVDaGFuZ2VkICYmICFvcHRpb25zLmxpbmVXcmFwcGluZykgewor
ICAgICAgICB2YXIgY3Vyc29yV2lkdGggPSB3aWR0aEZvcmNlci5vZmZzZXRXaWR0aCwgbGVmdCA9
IG1lYXN1cmVMaW5lKG1heExpbmUsIG1heExpbmUudGV4dC5sZW5ndGgpLmxlZnQ7CisgICAgICAg
IHdpZHRoRm9yY2VyLnN0eWxlLmxlZnQgPSBsZWZ0ICsgInB4IjsKKyAgICAgICAgbGluZVNwYWNl
LnN0eWxlLm1pbldpZHRoID0gKGxlZnQgKyBjdXJzb3JXaWR0aCkgKyAicHgiOworICAgICAgICBt
YXhMaW5lQ2hhbmdlZCA9IGZhbHNlOworICAgICAgfQorICAgICAgdmFyIG5ld1Njcm9sbFBvcywg
dXBkYXRlZDsKKyAgICAgIGlmIChzZWxlY3Rpb25DaGFuZ2VkKSB7CisgICAgICAgIHZhciBjb29y
ZHMgPSBjYWxjdWxhdGVDdXJzb3JDb29yZHMoKTsKKyAgICAgICAgbmV3U2Nyb2xsUG9zID0gY2Fs
Y3VsYXRlU2Nyb2xsUG9zKGNvb3Jkcy54LCBjb29yZHMueSwgY29vcmRzLngsIGNvb3Jkcy55Qm90
KTsKKyAgICAgIH0KKyAgICAgIGlmIChjaGFuZ2VzLmxlbmd0aCB8fCBuZXdTY3JvbGxQb3MgJiYg
bmV3U2Nyb2xsUG9zLnNjcm9sbFRvcCAhPSBudWxsKQorICAgICAgICB1cGRhdGVkID0gdXBkYXRl
RGlzcGxheShjaGFuZ2VzLCB0cnVlLCBuZXdTY3JvbGxQb3MgJiYgbmV3U2Nyb2xsUG9zLnNjcm9s
bFRvcCk7CisgICAgICBpZiAoIXVwZGF0ZWQpIHsKKyAgICAgICAgaWYgKHNlbGVjdGlvbkNoYW5n
ZWQpIHVwZGF0ZVNlbGVjdGlvbigpOworICAgICAgICBpZiAoZ3V0dGVyRGlydHkpIHVwZGF0ZUd1
dHRlcigpOworICAgICAgfQorICAgICAgaWYgKG5ld1Njcm9sbFBvcykgc2Nyb2xsQ3Vyc29ySW50
b1ZpZXcoKTsKKyAgICAgIGlmIChzZWxlY3Rpb25DaGFuZ2VkKSB7c2Nyb2xsRWRpdG9ySW50b1Zp
ZXcoKTsgcmVzdGFydEJsaW5rKCk7fQorCisgICAgICBpZiAoZm9jdXNlZCAmJiAhbGVhdmVJbnB1
dEFsb25lICYmCisgICAgICAgICAgKHVwZGF0ZUlucHV0ID09PSB0cnVlIHx8ICh1cGRhdGVJbnB1
dCAhPT0gZmFsc2UgJiYgc2VsZWN0aW9uQ2hhbmdlZCkpKQorICAgICAgICByZXNldElucHV0KHVz
ZXJTZWxDaGFuZ2UpOworCisgICAgICBpZiAoc2VsZWN0aW9uQ2hhbmdlZCAmJiBvcHRpb25zLm1h
dGNoQnJhY2tldHMpCisgICAgICAgIHNldFRpbWVvdXQob3BlcmF0aW9uKGZ1bmN0aW9uKCkgewor
ICAgICAgICAgIGlmIChicmFja2V0SGlnaGxpZ2h0ZWQpIHticmFja2V0SGlnaGxpZ2h0ZWQoKTsg
YnJhY2tldEhpZ2hsaWdodGVkID0gbnVsbDt9CisgICAgICAgICAgaWYgKHBvc0VxKHNlbC5mcm9t
LCBzZWwudG8pKSBtYXRjaEJyYWNrZXRzKGZhbHNlKTsKKyAgICAgICAgfSksIDIwKTsKKyAgICAg
IHZhciBzYyA9IHNlbGVjdGlvbkNoYW5nZWQsIGNicyA9IGNhbGxiYWNrczsgLy8gdGhlc2UgY2Fu
IGJlIHJlc2V0IGJ5IGNhbGxiYWNrcworICAgICAgaWYgKHRleHRDaGFuZ2VkICYmIG9wdGlvbnMu
b25DaGFuZ2UgJiYgaW5zdGFuY2UpCisgICAgICAgIG9wdGlvbnMub25DaGFuZ2UoaW5zdGFuY2Us
IHRleHRDaGFuZ2VkKTsKKyAgICAgIGlmIChzYyAmJiBvcHRpb25zLm9uQ3Vyc29yQWN0aXZpdHkp
CisgICAgICAgIG9wdGlvbnMub25DdXJzb3JBY3Rpdml0eShpbnN0YW5jZSk7CisgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGNicy5sZW5ndGg7ICsraSkgY2JzW2ldKGluc3RhbmNlKTsKKyAgICAg
IGlmICh1cGRhdGVkICYmIG9wdGlvbnMub25VcGRhdGUpIG9wdGlvbnMub25VcGRhdGUoaW5zdGFu
Y2UpOworICAgIH0KKyAgICB2YXIgbmVzdGVkT3BlcmF0aW9uID0gMDsKKyAgICBmdW5jdGlvbiBv
cGVyYXRpb24oZikgeworICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAoIW5l
c3RlZE9wZXJhdGlvbisrKSBzdGFydE9wZXJhdGlvbigpOworICAgICAgICB0cnkge3ZhciByZXN1
bHQgPSBmLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7fQorICAgICAgICBmaW5hbGx5IHtpZiAoIS0t
bmVzdGVkT3BlcmF0aW9uKSBlbmRPcGVyYXRpb24oKTt9CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICB9OworICAgIH0KKworICAgIGZ1bmN0aW9uIGNvbXBvdW5kQ2hhbmdlKGYpIHsKKyAg
ICAgIGhpc3Rvcnkuc3RhcnRDb21wb3VuZCgpOworICAgICAgdHJ5IHsgcmV0dXJuIGYoKTsgfSBm
aW5hbGx5IHsgaGlzdG9yeS5lbmRDb21wb3VuZCgpOyB9CisgICAgfQorCisgICAgZm9yICh2YXIg
ZXh0IGluIGV4dGVuc2lvbnMpCisgICAgICBpZiAoZXh0ZW5zaW9ucy5wcm9wZXJ0eUlzRW51bWVy
YWJsZShleHQpICYmCisgICAgICAgICAgIWluc3RhbmNlLnByb3BlcnR5SXNFbnVtZXJhYmxlKGV4
dCkpCisgICAgICAgIGluc3RhbmNlW2V4dF0gPSBleHRlbnNpb25zW2V4dF07CisgICAgcmV0dXJu
IGluc3RhbmNlOworICB9IC8vIChlbmQgb2YgZnVuY3Rpb24gQ29kZU1pcnJvcikKKworICAvLyBU
aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIG9wdGlvbnMuCisgIENvZGVNaXJyb3IuZGVmYXVsdHMg
PSB7CisgICAgdmFsdWU6ICIiLAorICAgIG1vZGU6IG51bGwsCisgICAgdGhlbWU6ICJkZWZhdWx0
IiwKKyAgICBpbmRlbnRVbml0OiAyLAorICAgIGluZGVudFdpdGhUYWJzOiBmYWxzZSwKKyAgICBz
bWFydEluZGVudDogdHJ1ZSwKKyAgICB0YWJTaXplOiA0LAorICAgIGtleU1hcDogImRlZmF1bHQi
LAorICAgIGV4dHJhS2V5czogbnVsbCwKKyAgICBlbGVjdHJpY0NoYXJzOiB0cnVlLAorICAgIGF1
dG9DbGVhckVtcHR5TGluZXM6IGZhbHNlLAorICAgIG9uS2V5RXZlbnQ6IG51bGwsCisgICAgb25E
cmFnRXZlbnQ6IG51bGwsCisgICAgbGluZVdyYXBwaW5nOiBmYWxzZSwKKyAgICBsaW5lTnVtYmVy
czogZmFsc2UsCisgICAgZ3V0dGVyOiBmYWxzZSwKKyAgICBmaXhlZEd1dHRlcjogZmFsc2UsCisg
ICAgZmlyc3RMaW5lTnVtYmVyOiAxLAorICAgIHJlYWRPbmx5OiBmYWxzZSwKKyAgICBkcmFnRHJv
cDogdHJ1ZSwKKyAgICBvbkNoYW5nZTogbnVsbCwKKyAgICBvbkN1cnNvckFjdGl2aXR5OiBudWxs
LAorICAgIG9uR3V0dGVyQ2xpY2s6IG51bGwsCisgICAgb25IaWdobGlnaHRDb21wbGV0ZTogbnVs
bCwKKyAgICBvblVwZGF0ZTogbnVsbCwKKyAgICBvbkZvY3VzOiBudWxsLCBvbkJsdXI6IG51bGws
IG9uU2Nyb2xsOiBudWxsLAorICAgIG1hdGNoQnJhY2tldHM6IGZhbHNlLAorICAgIHdvcmtUaW1l
OiAxMDAsCisgICAgd29ya0RlbGF5OiAyMDAsCisgICAgcG9sbEludGVydmFsOiAxMDAsCisgICAg
dW5kb0RlcHRoOiA0MCwKKyAgICB0YWJpbmRleDogbnVsbCwKKyAgICBhdXRvZm9jdXM6IG51bGws
CisgICAgbGluZU51bWJlckZvcm1hdHRlcjogZnVuY3Rpb24oaW50ZWdlcikgeyByZXR1cm4gaW50
ZWdlcjsgfQorICB9OworCisgIHZhciBpb3MgPSAvQXBwbGVXZWJLaXQvLnRlc3QobmF2aWdhdG9y
LnVzZXJBZ2VudCkgJiYgL01vYmlsZVwvXHcrLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOwor
ICB2YXIgbWFjID0gaW9zIHx8IC9NYWMvLnRlc3QobmF2aWdhdG9yLnBsYXRmb3JtKTsKKyAgdmFy
IHdpbiA9IC9XaW4vLnRlc3QobmF2aWdhdG9yLnBsYXRmb3JtKTsKKworICAvLyBLbm93biBtb2Rl
cywgYnkgbmFtZSBhbmQgYnkgTUlNRQorICB2YXIgbW9kZXMgPSBDb2RlTWlycm9yLm1vZGVzID0g
e30sIG1pbWVNb2RlcyA9IENvZGVNaXJyb3IubWltZU1vZGVzID0ge307CisgIENvZGVNaXJyb3Iu
ZGVmaW5lTW9kZSA9IGZ1bmN0aW9uKG5hbWUsIG1vZGUpIHsKKyAgICBpZiAoIUNvZGVNaXJyb3Iu
ZGVmYXVsdHMubW9kZSAmJiBuYW1lICE9ICJudWxsIikgQ29kZU1pcnJvci5kZWZhdWx0cy5tb2Rl
ID0gbmFtZTsKKyAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpIHsKKyAgICAgIG1vZGUuZGVw
ZW5kZW5jaWVzID0gW107CisgICAgICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3VtZW50cy5sZW5n
dGg7ICsraSkgbW9kZS5kZXBlbmRlbmNpZXMucHVzaChhcmd1bWVudHNbaV0pOworICAgIH0KKyAg
ICBtb2Rlc1tuYW1lXSA9IG1vZGU7CisgIH07CisgIENvZGVNaXJyb3IuZGVmaW5lTUlNRSA9IGZ1
bmN0aW9uKG1pbWUsIHNwZWMpIHsKKyAgICBtaW1lTW9kZXNbbWltZV0gPSBzcGVjOworICB9Owor
ICBDb2RlTWlycm9yLnJlc29sdmVNb2RlID0gZnVuY3Rpb24oc3BlYykgeworICAgIGlmICh0eXBl
b2Ygc3BlYyA9PSAic3RyaW5nIiAmJiBtaW1lTW9kZXMuaGFzT3duUHJvcGVydHkoc3BlYykpCisg
ICAgICBzcGVjID0gbWltZU1vZGVzW3NwZWNdOworICAgIGVsc2UgaWYgKHR5cGVvZiBzcGVjID09
ICJzdHJpbmciICYmIC9eW1x3XC1dK1wvW1x3XC1dK1wreG1sJC8udGVzdChzcGVjKSkKKyAgICAg
IHJldHVybiBDb2RlTWlycm9yLnJlc29sdmVNb2RlKCJhcHBsaWNhdGlvbi94bWwiKTsKKyAgICBp
ZiAodHlwZW9mIHNwZWMgPT0gInN0cmluZyIpIHJldHVybiB7bmFtZTogc3BlY307CisgICAgZWxz
ZSByZXR1cm4gc3BlYyB8fCB7bmFtZTogIm51bGwifTsKKyAgfTsKKyAgQ29kZU1pcnJvci5nZXRN
b2RlID0gZnVuY3Rpb24ob3B0aW9ucywgc3BlYykgeworICAgIHZhciBzcGVjID0gQ29kZU1pcnJv
ci5yZXNvbHZlTW9kZShzcGVjKTsKKyAgICB2YXIgbWZhY3RvcnkgPSBtb2Rlc1tzcGVjLm5hbWVd
OworICAgIGlmICghbWZhY3RvcnkpIHJldHVybiBDb2RlTWlycm9yLmdldE1vZGUob3B0aW9ucywg
InRleHQvcGxhaW4iKTsKKyAgICByZXR1cm4gbWZhY3Rvcnkob3B0aW9ucywgc3BlYyk7CisgIH07
CisgIENvZGVNaXJyb3IubGlzdE1vZGVzID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGxpc3QgPSBb
XTsKKyAgICBmb3IgKHZhciBtIGluIG1vZGVzKQorICAgICAgaWYgKG1vZGVzLnByb3BlcnR5SXNF
bnVtZXJhYmxlKG0pKSBsaXN0LnB1c2gobSk7CisgICAgcmV0dXJuIGxpc3Q7CisgIH07CisgIENv
ZGVNaXJyb3IubGlzdE1JTUVzID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGxpc3QgPSBbXTsKKyAg
ICBmb3IgKHZhciBtIGluIG1pbWVNb2RlcykKKyAgICAgIGlmIChtaW1lTW9kZXMucHJvcGVydHlJ
c0VudW1lcmFibGUobSkpIGxpc3QucHVzaCh7bWltZTogbSwgbW9kZTogbWltZU1vZGVzW21dfSk7
CisgICAgcmV0dXJuIGxpc3Q7CisgIH07CisKKyAgdmFyIGV4dGVuc2lvbnMgPSBDb2RlTWlycm9y
LmV4dGVuc2lvbnMgPSB7fTsKKyAgQ29kZU1pcnJvci5kZWZpbmVFeHRlbnNpb24gPSBmdW5jdGlv
bihuYW1lLCBmdW5jKSB7CisgICAgZXh0ZW5zaW9uc1tuYW1lXSA9IGZ1bmM7CisgIH07CisKKyAg
dmFyIGNvbW1hbmRzID0gQ29kZU1pcnJvci5jb21tYW5kcyA9IHsKKyAgICBzZWxlY3RBbGw6IGZ1
bmN0aW9uKGNtKSB7Y20uc2V0U2VsZWN0aW9uKHtsaW5lOiAwLCBjaDogMH0sIHtsaW5lOiBjbS5s
aW5lQ291bnQoKSAtIDF9KTt9LAorICAgIGtpbGxMaW5lOiBmdW5jdGlvbihjbSkgeworICAgICAg
dmFyIGZyb20gPSBjbS5nZXRDdXJzb3IodHJ1ZSksIHRvID0gY20uZ2V0Q3Vyc29yKGZhbHNlKSwg
c2VsID0gIXBvc0VxKGZyb20sIHRvKTsKKyAgICAgIGlmICghc2VsICYmIGNtLmdldExpbmUoZnJv
bS5saW5lKS5sZW5ndGggPT0gZnJvbS5jaCkgY20ucmVwbGFjZVJhbmdlKCIiLCBmcm9tLCB7bGlu
ZTogZnJvbS5saW5lICsgMSwgY2g6IDB9KTsKKyAgICAgIGVsc2UgY20ucmVwbGFjZVJhbmdlKCIi
LCBmcm9tLCBzZWwgPyB0byA6IHtsaW5lOiBmcm9tLmxpbmV9KTsKKyAgICB9LAorICAgIGRlbGV0
ZUxpbmU6IGZ1bmN0aW9uKGNtKSB7dmFyIGwgPSBjbS5nZXRDdXJzb3IoKS5saW5lOyBjbS5yZXBs
YWNlUmFuZ2UoIiIsIHtsaW5lOiBsLCBjaDogMH0sIHtsaW5lOiBsfSk7fSwKKyAgICB1bmRvOiBm
dW5jdGlvbihjbSkge2NtLnVuZG8oKTt9LAorICAgIHJlZG86IGZ1bmN0aW9uKGNtKSB7Y20ucmVk
bygpO30sCisgICAgZ29Eb2NTdGFydDogZnVuY3Rpb24oY20pIHtjbS5zZXRDdXJzb3IoMCwgMCwg
dHJ1ZSk7fSwKKyAgICBnb0RvY0VuZDogZnVuY3Rpb24oY20pIHtjbS5zZXRTZWxlY3Rpb24oe2xp
bmU6IGNtLmxpbmVDb3VudCgpIC0gMX0sIG51bGwsIHRydWUpO30sCisgICAgZ29MaW5lU3RhcnQ6
IGZ1bmN0aW9uKGNtKSB7Y20uc2V0Q3Vyc29yKGNtLmdldEN1cnNvcigpLmxpbmUsIDAsIHRydWUp
O30sCisgICAgZ29MaW5lU3RhcnRTbWFydDogZnVuY3Rpb24oY20pIHsKKyAgICAgIHZhciBjdXIg
PSBjbS5nZXRDdXJzb3IoKTsKKyAgICAgIHZhciB0ZXh0ID0gY20uZ2V0TGluZShjdXIubGluZSks
IGZpcnN0Tm9uV1MgPSBNYXRoLm1heCgwLCB0ZXh0LnNlYXJjaCgvXFMvKSk7CisgICAgICBjbS5z
ZXRDdXJzb3IoY3VyLmxpbmUsIGN1ci5jaCA8PSBmaXJzdE5vbldTICYmIGN1ci5jaCA/IDAgOiBm
aXJzdE5vbldTLCB0cnVlKTsKKyAgICB9LAorICAgIGdvTGluZUVuZDogZnVuY3Rpb24oY20pIHtj
bS5zZXRTZWxlY3Rpb24oe2xpbmU6IGNtLmdldEN1cnNvcigpLmxpbmV9LCBudWxsLCB0cnVlKTt9
LAorICAgIGdvTGluZVVwOiBmdW5jdGlvbihjbSkge2NtLm1vdmVWKC0xLCAibGluZSIpO30sCisg
ICAgZ29MaW5lRG93bjogZnVuY3Rpb24oY20pIHtjbS5tb3ZlVigxLCAibGluZSIpO30sCisgICAg
Z29QYWdlVXA6IGZ1bmN0aW9uKGNtKSB7Y20ubW92ZVYoLTEsICJwYWdlIik7fSwKKyAgICBnb1Bh
Z2VEb3duOiBmdW5jdGlvbihjbSkge2NtLm1vdmVWKDEsICJwYWdlIik7fSwKKyAgICBnb0NoYXJM
ZWZ0OiBmdW5jdGlvbihjbSkge2NtLm1vdmVIKC0xLCAiY2hhciIpO30sCisgICAgZ29DaGFyUmln
aHQ6IGZ1bmN0aW9uKGNtKSB7Y20ubW92ZUgoMSwgImNoYXIiKTt9LAorICAgIGdvQ29sdW1uTGVm
dDogZnVuY3Rpb24oY20pIHtjbS5tb3ZlSCgtMSwgImNvbHVtbiIpO30sCisgICAgZ29Db2x1bW5S
aWdodDogZnVuY3Rpb24oY20pIHtjbS5tb3ZlSCgxLCAiY29sdW1uIik7fSwKKyAgICBnb1dvcmRM
ZWZ0OiBmdW5jdGlvbihjbSkge2NtLm1vdmVIKC0xLCAid29yZCIpO30sCisgICAgZ29Xb3JkUmln
aHQ6IGZ1bmN0aW9uKGNtKSB7Y20ubW92ZUgoMSwgIndvcmQiKTt9LAorICAgIGRlbENoYXJMZWZ0
OiBmdW5jdGlvbihjbSkge2NtLmRlbGV0ZUgoLTEsICJjaGFyIik7fSwKKyAgICBkZWxDaGFyUmln
aHQ6IGZ1bmN0aW9uKGNtKSB7Y20uZGVsZXRlSCgxLCAiY2hhciIpO30sCisgICAgZGVsV29yZExl
ZnQ6IGZ1bmN0aW9uKGNtKSB7Y20uZGVsZXRlSCgtMSwgIndvcmQiKTt9LAorICAgIGRlbFdvcmRS
aWdodDogZnVuY3Rpb24oY20pIHtjbS5kZWxldGVIKDEsICJ3b3JkIik7fSwKKyAgICBpbmRlbnRB
dXRvOiBmdW5jdGlvbihjbSkge2NtLmluZGVudFNlbGVjdGlvbigic21hcnQiKTt9LAorICAgIGlu
ZGVudE1vcmU6IGZ1bmN0aW9uKGNtKSB7Y20uaW5kZW50U2VsZWN0aW9uKCJhZGQiKTt9LAorICAg
IGluZGVudExlc3M6IGZ1bmN0aW9uKGNtKSB7Y20uaW5kZW50U2VsZWN0aW9uKCJzdWJ0cmFjdCIp
O30sCisgICAgaW5zZXJ0VGFiOiBmdW5jdGlvbihjbSkge2NtLnJlcGxhY2VTZWxlY3Rpb24oIlx0
IiwgImVuZCIpO30sCisgICAgZGVmYXVsdFRhYjogZnVuY3Rpb24oY20pIHsKKyAgICAgIGlmIChj
bS5zb21ldGhpbmdTZWxlY3RlZCgpKSBjbS5pbmRlbnRTZWxlY3Rpb24oImFkZCIpOworICAgICAg
ZWxzZSBjbS5yZXBsYWNlU2VsZWN0aW9uKCJcdCIsICJlbmQiKTsKKyAgICB9LAorICAgIHRyYW5z
cG9zZUNoYXJzOiBmdW5jdGlvbihjbSkgeworICAgICAgdmFyIGN1ciA9IGNtLmdldEN1cnNvcigp
LCBsaW5lID0gY20uZ2V0TGluZShjdXIubGluZSk7CisgICAgICBpZiAoY3VyLmNoID4gMCAmJiBj
dXIuY2ggPCBsaW5lLmxlbmd0aCAtIDEpCisgICAgICAgIGNtLnJlcGxhY2VSYW5nZShsaW5lLmNo
YXJBdChjdXIuY2gpICsgbGluZS5jaGFyQXQoY3VyLmNoIC0gMSksCisgICAgICAgICAgICAgICAg
ICAgICAgICB7bGluZTogY3VyLmxpbmUsIGNoOiBjdXIuY2ggLSAxfSwge2xpbmU6IGN1ci5saW5l
LCBjaDogY3VyLmNoICsgMX0pOworICAgIH0sCisgICAgbmV3bGluZUFuZEluZGVudDogZnVuY3Rp
b24oY20pIHsKKyAgICAgIGNtLnJlcGxhY2VTZWxlY3Rpb24oIlxuIiwgImVuZCIpOworICAgICAg
Y20uaW5kZW50TGluZShjbS5nZXRDdXJzb3IoKS5saW5lKTsKKyAgICB9LAorICAgIHRvZ2dsZU92
ZXJ3cml0ZTogZnVuY3Rpb24oY20pIHtjbS50b2dnbGVPdmVyd3JpdGUoKTt9CisgIH07CisKKyAg
dmFyIGtleU1hcCA9IENvZGVNaXJyb3Iua2V5TWFwID0ge307CisgIGtleU1hcC5iYXNpYyA9IHsK
KyAgICAiTGVmdCI6ICJnb0NoYXJMZWZ0IiwgIlJpZ2h0IjogImdvQ2hhclJpZ2h0IiwgIlVwIjog
ImdvTGluZVVwIiwgIkRvd24iOiAiZ29MaW5lRG93biIsCisgICAgIkVuZCI6ICJnb0xpbmVFbmQi
LCAiSG9tZSI6ICJnb0xpbmVTdGFydFNtYXJ0IiwgIlBhZ2VVcCI6ICJnb1BhZ2VVcCIsICJQYWdl
RG93biI6ICJnb1BhZ2VEb3duIiwKKyAgICAiRGVsZXRlIjogImRlbENoYXJSaWdodCIsICJCYWNr
c3BhY2UiOiAiZGVsQ2hhckxlZnQiLCAiVGFiIjogImRlZmF1bHRUYWIiLCAiU2hpZnQtVGFiIjog
ImluZGVudEF1dG8iLAorICAgICJFbnRlciI6ICJuZXdsaW5lQW5kSW5kZW50IiwgIkluc2VydCI6
ICJ0b2dnbGVPdmVyd3JpdGUiCisgIH07CisgIC8vIE5vdGUgdGhhdCB0aGUgc2F2ZSBhbmQgZmlu
ZC1yZWxhdGVkIGNvbW1hbmRzIGFyZW4ndCBkZWZpbmVkIGJ5CisgIC8vIGRlZmF1bHQuIFVua25v
d24gY29tbWFuZHMgYXJlIHNpbXBseSBpZ25vcmVkLgorICBrZXlNYXAucGNEZWZhdWx0ID0gewor
ICAgICJDdHJsLUEiOiAic2VsZWN0QWxsIiwgIkN0cmwtRCI6ICJkZWxldGVMaW5lIiwgIkN0cmwt
WiI6ICJ1bmRvIiwgIlNoaWZ0LUN0cmwtWiI6ICJyZWRvIiwgIkN0cmwtWSI6ICJyZWRvIiwKKyAg
ICAiQ3RybC1Ib21lIjogImdvRG9jU3RhcnQiLCAiQWx0LVVwIjogImdvRG9jU3RhcnQiLCAiQ3Ry
bC1FbmQiOiAiZ29Eb2NFbmQiLCAiQ3RybC1Eb3duIjogImdvRG9jRW5kIiwKKyAgICAiQ3RybC1M
ZWZ0IjogImdvV29yZExlZnQiLCAiQ3RybC1SaWdodCI6ICJnb1dvcmRSaWdodCIsICJBbHQtTGVm
dCI6ICJnb0xpbmVTdGFydCIsICJBbHQtUmlnaHQiOiAiZ29MaW5lRW5kIiwKKyAgICAiQ3RybC1C
YWNrc3BhY2UiOiAiZGVsV29yZExlZnQiLCAiQ3RybC1EZWxldGUiOiAiZGVsV29yZFJpZ2h0Iiwg
IkN0cmwtUyI6ICJzYXZlIiwgIkN0cmwtRiI6ICJmaW5kIiwKKyAgICAiQ3RybC1HIjogImZpbmRO
ZXh0IiwgIlNoaWZ0LUN0cmwtRyI6ICJmaW5kUHJldiIsICJTaGlmdC1DdHJsLUYiOiAicmVwbGFj
ZSIsICJTaGlmdC1DdHJsLVIiOiAicmVwbGFjZUFsbCIsCisgICAgIkN0cmwtWyI6ICJpbmRlbnRM
ZXNzIiwgIkN0cmwtXSI6ICJpbmRlbnRNb3JlIiwKKyAgICBmYWxsdGhyb3VnaDogImJhc2ljIgor
ICB9OworICBrZXlNYXAubWFjRGVmYXVsdCA9IHsKKyAgICAiQ21kLUEiOiAic2VsZWN0QWxsIiwg
IkNtZC1EIjogImRlbGV0ZUxpbmUiLCAiQ21kLVoiOiAidW5kbyIsICJTaGlmdC1DbWQtWiI6ICJy
ZWRvIiwgIkNtZC1ZIjogInJlZG8iLAorICAgICJDbWQtVXAiOiAiZ29Eb2NTdGFydCIsICJDbWQt
RW5kIjogImdvRG9jRW5kIiwgIkNtZC1Eb3duIjogImdvRG9jRW5kIiwgIkFsdC1MZWZ0IjogImdv
V29yZExlZnQiLAorICAgICJBbHQtUmlnaHQiOiAiZ29Xb3JkUmlnaHQiLCAiQ21kLUxlZnQiOiAi
Z29MaW5lU3RhcnQiLCAiQ21kLVJpZ2h0IjogImdvTGluZUVuZCIsICJBbHQtQmFja3NwYWNlIjog
ImRlbFdvcmRMZWZ0IiwKKyAgICAiQ3RybC1BbHQtQmFja3NwYWNlIjogImRlbFdvcmRSaWdodCIs
ICJBbHQtRGVsZXRlIjogImRlbFdvcmRSaWdodCIsICJDbWQtUyI6ICJzYXZlIiwgIkNtZC1GIjog
ImZpbmQiLAorICAgICJDbWQtRyI6ICJmaW5kTmV4dCIsICJTaGlmdC1DbWQtRyI6ICJmaW5kUHJl
diIsICJDbWQtQWx0LUYiOiAicmVwbGFjZSIsICJTaGlmdC1DbWQtQWx0LUYiOiAicmVwbGFjZUFs
bCIsCisgICAgIkNtZC1bIjogImluZGVudExlc3MiLCAiQ21kLV0iOiAiaW5kZW50TW9yZSIsCisg
ICAgZmFsbHRocm91Z2g6IFsiYmFzaWMiLCAiZW1hY3N5Il0KKyAgfTsKKyAga2V5TWFwWyJkZWZh
dWx0Il0gPSBtYWMgPyBrZXlNYXAubWFjRGVmYXVsdCA6IGtleU1hcC5wY0RlZmF1bHQ7CisgIGtl
eU1hcC5lbWFjc3kgPSB7CisgICAgIkN0cmwtRiI6ICJnb0NoYXJSaWdodCIsICJDdHJsLUIiOiAi
Z29DaGFyTGVmdCIsICJDdHJsLVAiOiAiZ29MaW5lVXAiLCAiQ3RybC1OIjogImdvTGluZURvd24i
LAorICAgICJBbHQtRiI6ICJnb1dvcmRSaWdodCIsICJBbHQtQiI6ICJnb1dvcmRMZWZ0IiwgIkN0
cmwtQSI6ICJnb0xpbmVTdGFydCIsICJDdHJsLUUiOiAiZ29MaW5lRW5kIiwKKyAgICAiQ3RybC1W
IjogImdvUGFnZVVwIiwgIlNoaWZ0LUN0cmwtViI6ICJnb1BhZ2VEb3duIiwgIkN0cmwtRCI6ICJk
ZWxDaGFyUmlnaHQiLCAiQ3RybC1IIjogImRlbENoYXJMZWZ0IiwKKyAgICAiQWx0LUQiOiAiZGVs
V29yZFJpZ2h0IiwgIkFsdC1CYWNrc3BhY2UiOiAiZGVsV29yZExlZnQiLCAiQ3RybC1LIjogImtp
bGxMaW5lIiwgIkN0cmwtVCI6ICJ0cmFuc3Bvc2VDaGFycyIKKyAgfTsKKworICBmdW5jdGlvbiBn
ZXRLZXlNYXAodmFsKSB7CisgICAgaWYgKHR5cGVvZiB2YWwgPT0gInN0cmluZyIpIHJldHVybiBr
ZXlNYXBbdmFsXTsKKyAgICBlbHNlIHJldHVybiB2YWw7CisgIH0KKyAgZnVuY3Rpb24gbG9va3Vw
S2V5KG5hbWUsIGV4dHJhTWFwLCBtYXAsIGhhbmRsZSwgc3RvcCkgeworICAgIGZ1bmN0aW9uIGxv
b2t1cChtYXApIHsKKyAgICAgIG1hcCA9IGdldEtleU1hcChtYXApOworICAgICAgdmFyIGZvdW5k
ID0gbWFwW25hbWVdOworICAgICAgaWYgKGZvdW5kID09PSBmYWxzZSkgeworICAgICAgICBpZiAo
c3RvcCkgc3RvcCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIGlmIChm
b3VuZCAhPSBudWxsICYmIGhhbmRsZShmb3VuZCkpIHJldHVybiB0cnVlOworICAgICAgaWYgKG1h
cC5ub2ZhbGx0aHJvdWdoKSB7CisgICAgICAgIGlmIChzdG9wKSBzdG9wKCk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgfQorICAgICAgdmFyIGZhbGx0aHJvdWdoID0gbWFwLmZhbGx0aHJv
dWdoOworICAgICAgaWYgKGZhbGx0aHJvdWdoID09IG51bGwpIHJldHVybiBmYWxzZTsKKyAgICAg
IGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZmFsbHRocm91Z2gpICE9ICJbb2Jq
ZWN0IEFycmF5XSIpCisgICAgICAgIHJldHVybiBsb29rdXAoZmFsbHRocm91Z2gpOworICAgICAg
Zm9yICh2YXIgaSA9IDAsIGUgPSBmYWxsdGhyb3VnaC5sZW5ndGg7IGkgPCBlOyArK2kpIHsKKyAg
ICAgICAgaWYgKGxvb2t1cChmYWxsdGhyb3VnaFtpXSkpIHJldHVybiB0cnVlOworICAgICAgfQor
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAoZXh0cmFNYXAgJiYgbG9va3VwKGV4
dHJhTWFwKSkgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGxvb2t1cChtYXApOworICB9CisgIGZ1
bmN0aW9uIGlzTW9kaWZpZXJLZXkoZXZlbnQpIHsKKyAgICB2YXIgbmFtZSA9IGtleU5hbWVzW2Vf
cHJvcChldmVudCwgImtleUNvZGUiKV07CisgICAgcmV0dXJuIG5hbWUgPT0gIkN0cmwiIHx8IG5h
bWUgPT0gIkFsdCIgfHwgbmFtZSA9PSAiU2hpZnQiIHx8IG5hbWUgPT0gIk1vZCI7CisgIH0KKwor
ICBDb2RlTWlycm9yLmZyb21UZXh0QXJlYSA9IGZ1bmN0aW9uKHRleHRhcmVhLCBvcHRpb25zKSB7
CisgICAgaWYgKCFvcHRpb25zKSBvcHRpb25zID0ge307CisgICAgb3B0aW9ucy52YWx1ZSA9IHRl
eHRhcmVhLnZhbHVlOworICAgIGlmICghb3B0aW9ucy50YWJpbmRleCAmJiB0ZXh0YXJlYS50YWJp
bmRleCkKKyAgICAgIG9wdGlvbnMudGFiaW5kZXggPSB0ZXh0YXJlYS50YWJpbmRleDsKKyAgICBp
ZiAob3B0aW9ucy5hdXRvZm9jdXMgPT0gbnVsbCAmJiB0ZXh0YXJlYS5nZXRBdHRyaWJ1dGUoImF1
dG9mb2N1cyIpICE9IG51bGwpCisgICAgICBvcHRpb25zLmF1dG9mb2N1cyA9IHRydWU7CisKKyAg
ICBmdW5jdGlvbiBzYXZlKCkge3RleHRhcmVhLnZhbHVlID0gaW5zdGFuY2UuZ2V0VmFsdWUoKTt9
CisgICAgaWYgKHRleHRhcmVhLmZvcm0pIHsKKyAgICAgIC8vIERlcGxvcmFibGUgaGFjayB0byBt
YWtlIHRoZSBzdWJtaXQgbWV0aG9kIGRvIHRoZSByaWdodCB0aGluZy4KKyAgICAgIHZhciBybVN1
Ym1pdCA9IGNvbm5lY3QodGV4dGFyZWEuZm9ybSwgInN1Ym1pdCIsIHNhdmUsIHRydWUpOworICAg
ICAgaWYgKHR5cGVvZiB0ZXh0YXJlYS5mb3JtLnN1Ym1pdCA9PSAiZnVuY3Rpb24iKSB7CisgICAg
ICAgIHZhciByZWFsU3VibWl0ID0gdGV4dGFyZWEuZm9ybS5zdWJtaXQ7CisgICAgICAgIHRleHRh
cmVhLmZvcm0uc3VibWl0ID0gZnVuY3Rpb24gd3JhcHBlZFN1Ym1pdCgpIHsKKyAgICAgICAgICBz
YXZlKCk7CisgICAgICAgICAgdGV4dGFyZWEuZm9ybS5zdWJtaXQgPSByZWFsU3VibWl0OworICAg
ICAgICAgIHRleHRhcmVhLmZvcm0uc3VibWl0KCk7CisgICAgICAgICAgdGV4dGFyZWEuZm9ybS5z
dWJtaXQgPSB3cmFwcGVkU3VibWl0OworICAgICAgICB9OworICAgICAgfQorICAgIH0KKworICAg
IHRleHRhcmVhLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CisgICAgdmFyIGluc3RhbmNlID0gQ29k
ZU1pcnJvcihmdW5jdGlvbihub2RlKSB7CisgICAgICB0ZXh0YXJlYS5wYXJlbnROb2RlLmluc2Vy
dEJlZm9yZShub2RlLCB0ZXh0YXJlYS5uZXh0U2libGluZyk7CisgICAgfSwgb3B0aW9ucyk7Cisg
ICAgaW5zdGFuY2Uuc2F2ZSA9IHNhdmU7CisgICAgaW5zdGFuY2UuZ2V0VGV4dEFyZWEgPSBmdW5j
dGlvbigpIHsgcmV0dXJuIHRleHRhcmVhOyB9OworICAgIGluc3RhbmNlLnRvVGV4dEFyZWEgPSBm
dW5jdGlvbigpIHsKKyAgICAgIHNhdmUoKTsKKyAgICAgIHRleHRhcmVhLnBhcmVudE5vZGUucmVt
b3ZlQ2hpbGQoaW5zdGFuY2UuZ2V0V3JhcHBlckVsZW1lbnQoKSk7CisgICAgICB0ZXh0YXJlYS5z
dHlsZS5kaXNwbGF5ID0gIiI7CisgICAgICBpZiAodGV4dGFyZWEuZm9ybSkgeworICAgICAgICBy
bVN1Ym1pdCgpOworICAgICAgICBpZiAodHlwZW9mIHRleHRhcmVhLmZvcm0uc3VibWl0ID09ICJm
dW5jdGlvbiIpCisgICAgICAgICAgdGV4dGFyZWEuZm9ybS5zdWJtaXQgPSByZWFsU3VibWl0Owor
ICAgICAgfQorICAgIH07CisgICAgcmV0dXJuIGluc3RhbmNlOworICB9OworCisgIHZhciBnZWNr
byA9IC9nZWNrb1wvXGR7N30vaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOworICB2YXIgaWUg
PSAvTVNJRSBcZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTsKKyAgdmFyIGllX2x0OCA9IC9N
U0lFIFsxLTddXGIvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CisgIHZhciBpZV9sdDkgPSAv
TVNJRSBbMS04XVxiLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOworICB2YXIgcXVpcmtzTW9k
ZSA9IGllICYmIGRvY3VtZW50LmRvY3VtZW50TW9kZSA9PSA1OworICB2YXIgd2Via2l0ID0gL1dl
YktpdFwvLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOworICB2YXIgY2hyb21lID0gL0Nocm9t
ZVwvLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOworICB2YXIgb3BlcmEgPSAvT3BlcmFcLy8u
dGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTsKKyAgdmFyIHNhZmFyaSA9IC9BcHBsZSBDb21wdXRl
ci8udGVzdChuYXZpZ2F0b3IudmVuZG9yKTsKKyAgdmFyIGtodG1sID0gL0tIVE1MXC8vLnRlc3Qo
bmF2aWdhdG9yLnVzZXJBZ2VudCk7CisgIHZhciBtYWNfZ2VMaW9uID0gL01hYyBPUyBYIDEwXEQo
WzctOV18XGRcZClcRC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTsKKworICAvLyBVdGlsaXR5
IGZ1bmN0aW9ucyBmb3Igd29ya2luZyB3aXRoIHN0YXRlLiBFeHBvcnRlZCBiZWNhdXNlIG1vZGVz
CisgIC8vIHNvbWV0aW1lcyBuZWVkIHRvIGRvIHRoaXMuCisgIGZ1bmN0aW9uIGNvcHlTdGF0ZSht
b2RlLCBzdGF0ZSkgeworICAgIGlmIChzdGF0ZSA9PT0gdHJ1ZSkgcmV0dXJuIHN0YXRlOworICAg
IGlmIChtb2RlLmNvcHlTdGF0ZSkgcmV0dXJuIG1vZGUuY29weVN0YXRlKHN0YXRlKTsKKyAgICB2
YXIgbnN0YXRlID0ge307CisgICAgZm9yICh2YXIgbiBpbiBzdGF0ZSkgeworICAgICAgdmFyIHZh
bCA9IHN0YXRlW25dOworICAgICAgaWYgKHZhbCBpbnN0YW5jZW9mIEFycmF5KSB2YWwgPSB2YWwu
Y29uY2F0KFtdKTsKKyAgICAgIG5zdGF0ZVtuXSA9IHZhbDsKKyAgICB9CisgICAgcmV0dXJuIG5z
dGF0ZTsKKyAgfQorICBDb2RlTWlycm9yLmNvcHlTdGF0ZSA9IGNvcHlTdGF0ZTsKKyAgZnVuY3Rp
b24gc3RhcnRTdGF0ZShtb2RlLCBhMSwgYTIpIHsKKyAgICByZXR1cm4gbW9kZS5zdGFydFN0YXRl
ID8gbW9kZS5zdGFydFN0YXRlKGExLCBhMikgOiB0cnVlOworICB9CisgIENvZGVNaXJyb3Iuc3Rh
cnRTdGF0ZSA9IHN0YXJ0U3RhdGU7CisKKyAgLy8gVGhlIGNoYXJhY3RlciBzdHJlYW0gdXNlZCBi
eSBhIG1vZGUncyBwYXJzZXIuCisgIGZ1bmN0aW9uIFN0cmluZ1N0cmVhbShzdHJpbmcsIHRhYlNp
emUpIHsKKyAgICB0aGlzLnBvcyA9IHRoaXMuc3RhcnQgPSAwOworICAgIHRoaXMuc3RyaW5nID0g
c3RyaW5nOworICAgIHRoaXMudGFiU2l6ZSA9IHRhYlNpemUgfHwgODsKKyAgfQorICBTdHJpbmdT
dHJlYW0ucHJvdG90eXBlID0geworICAgIGVvbDogZnVuY3Rpb24oKSB7cmV0dXJuIHRoaXMucG9z
ID49IHRoaXMuc3RyaW5nLmxlbmd0aDt9LAorICAgIHNvbDogZnVuY3Rpb24oKSB7cmV0dXJuIHRo
aXMucG9zID09IDA7fSwKKyAgICBwZWVrOiBmdW5jdGlvbigpIHtyZXR1cm4gdGhpcy5zdHJpbmcu
Y2hhckF0KHRoaXMucG9zKTt9LAorICAgIG5leHQ6IGZ1bmN0aW9uKCkgeworICAgICAgaWYgKHRo
aXMucG9zIDwgdGhpcy5zdHJpbmcubGVuZ3RoKQorICAgICAgICByZXR1cm4gdGhpcy5zdHJpbmcu
Y2hhckF0KHRoaXMucG9zKyspOworICAgIH0sCisgICAgZWF0OiBmdW5jdGlvbihtYXRjaCkgewor
ICAgICAgdmFyIGNoID0gdGhpcy5zdHJpbmcuY2hhckF0KHRoaXMucG9zKTsKKyAgICAgIGlmICh0
eXBlb2YgbWF0Y2ggPT0gInN0cmluZyIpIHZhciBvayA9IGNoID09IG1hdGNoOworICAgICAgZWxz
ZSB2YXIgb2sgPSBjaCAmJiAobWF0Y2gudGVzdCA/IG1hdGNoLnRlc3QoY2gpIDogbWF0Y2goY2gp
KTsKKyAgICAgIGlmIChvaykgeysrdGhpcy5wb3M7IHJldHVybiBjaDt9CisgICAgfSwKKyAgICBl
YXRXaGlsZTogZnVuY3Rpb24obWF0Y2gpIHsKKyAgICAgIHZhciBzdGFydCA9IHRoaXMucG9zOwor
ICAgICAgd2hpbGUgKHRoaXMuZWF0KG1hdGNoKSl7fQorICAgICAgcmV0dXJuIHRoaXMucG9zID4g
c3RhcnQ7CisgICAgfSwKKyAgICBlYXRTcGFjZTogZnVuY3Rpb24oKSB7CisgICAgICB2YXIgc3Rh
cnQgPSB0aGlzLnBvczsKKyAgICAgIHdoaWxlICgvW1xzXHUwMGEwXS8udGVzdCh0aGlzLnN0cmlu
Zy5jaGFyQXQodGhpcy5wb3MpKSkgKyt0aGlzLnBvczsKKyAgICAgIHJldHVybiB0aGlzLnBvcyA+
IHN0YXJ0OworICAgIH0sCisgICAgc2tpcFRvRW5kOiBmdW5jdGlvbigpIHt0aGlzLnBvcyA9IHRo
aXMuc3RyaW5nLmxlbmd0aDt9LAorICAgIHNraXBUbzogZnVuY3Rpb24oY2gpIHsKKyAgICAgIHZh
ciBmb3VuZCA9IHRoaXMuc3RyaW5nLmluZGV4T2YoY2gsIHRoaXMucG9zKTsKKyAgICAgIGlmIChm
b3VuZCA+IC0xKSB7dGhpcy5wb3MgPSBmb3VuZDsgcmV0dXJuIHRydWU7fQorICAgIH0sCisgICAg
YmFja1VwOiBmdW5jdGlvbihuKSB7dGhpcy5wb3MgLT0gbjt9LAorICAgIGNvbHVtbjogZnVuY3Rp
b24oKSB7cmV0dXJuIGNvdW50Q29sdW1uKHRoaXMuc3RyaW5nLCB0aGlzLnN0YXJ0LCB0aGlzLnRh
YlNpemUpO30sCisgICAgaW5kZW50YXRpb246IGZ1bmN0aW9uKCkge3JldHVybiBjb3VudENvbHVt
bih0aGlzLnN0cmluZywgbnVsbCwgdGhpcy50YWJTaXplKTt9LAorICAgIG1hdGNoOiBmdW5jdGlv
bihwYXR0ZXJuLCBjb25zdW1lLCBjYXNlSW5zZW5zaXRpdmUpIHsKKyAgICAgIGlmICh0eXBlb2Yg
cGF0dGVybiA9PSAic3RyaW5nIikgeworICAgICAgICB2YXIgY2FzZWQgPSBmdW5jdGlvbihzdHIp
IHtyZXR1cm4gY2FzZUluc2Vuc2l0aXZlID8gc3RyLnRvTG93ZXJDYXNlKCkgOiBzdHI7fTsKKyAg
ICAgICAgaWYgKGNhc2VkKHRoaXMuc3RyaW5nKS5pbmRleE9mKGNhc2VkKHBhdHRlcm4pLCB0aGlz
LnBvcykgPT0gdGhpcy5wb3MpIHsKKyAgICAgICAgICBpZiAoY29uc3VtZSAhPT0gZmFsc2UpIHRo
aXMucG9zICs9IHBhdHRlcm4ubGVuZ3RoOworICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgICB9IGVsc2UgeworICAgICAgICB2YXIgbWF0Y2ggPSB0aGlzLnN0cmluZy5zbGlj
ZSh0aGlzLnBvcykubWF0Y2gocGF0dGVybik7CisgICAgICAgIGlmIChtYXRjaCAmJiBjb25zdW1l
ICE9PSBmYWxzZSkgdGhpcy5wb3MgKz0gbWF0Y2hbMF0ubGVuZ3RoOworICAgICAgICByZXR1cm4g
bWF0Y2g7CisgICAgICB9CisgICAgfSwKKyAgICBjdXJyZW50OiBmdW5jdGlvbigpe3JldHVybiB0
aGlzLnN0cmluZy5zbGljZSh0aGlzLnN0YXJ0LCB0aGlzLnBvcyk7fQorICB9OworICBDb2RlTWly
cm9yLlN0cmluZ1N0cmVhbSA9IFN0cmluZ1N0cmVhbTsKKworICBmdW5jdGlvbiBNYXJrZWRUZXh0
KGZyb20sIHRvLCBjbGFzc05hbWUsIG1hcmtlcikgeworICAgIHRoaXMuZnJvbSA9IGZyb207IHRo
aXMudG8gPSB0bzsgdGhpcy5zdHlsZSA9IGNsYXNzTmFtZTsgdGhpcy5tYXJrZXIgPSBtYXJrZXI7
CisgIH0KKyAgTWFya2VkVGV4dC5wcm90b3R5cGUgPSB7CisgICAgYXR0YWNoOiBmdW5jdGlvbihs
aW5lKSB7IHRoaXMubWFya2VyLnNldC5wdXNoKGxpbmUpOyB9LAorICAgIGRldGFjaDogZnVuY3Rp
b24obGluZSkgeworICAgICAgdmFyIGl4ID0gaW5kZXhPZih0aGlzLm1hcmtlci5zZXQsIGxpbmUp
OworICAgICAgaWYgKGl4ID4gLTEpIHRoaXMubWFya2VyLnNldC5zcGxpY2UoaXgsIDEpOworICAg
IH0sCisgICAgc3BsaXQ6IGZ1bmN0aW9uKHBvcywgbGVuQmVmb3JlKSB7CisgICAgICBpZiAodGhp
cy50byA8PSBwb3MgJiYgdGhpcy50byAhPSBudWxsKSByZXR1cm4gbnVsbDsKKyAgICAgIHZhciBm
cm9tID0gdGhpcy5mcm9tIDwgcG9zIHx8IHRoaXMuZnJvbSA9PSBudWxsID8gbnVsbCA6IHRoaXMu
ZnJvbSAtIHBvcyArIGxlbkJlZm9yZTsKKyAgICAgIHZhciB0byA9IHRoaXMudG8gPT0gbnVsbCA/
IG51bGwgOiB0aGlzLnRvIC0gcG9zICsgbGVuQmVmb3JlOworICAgICAgcmV0dXJuIG5ldyBNYXJr
ZWRUZXh0KGZyb20sIHRvLCB0aGlzLnN0eWxlLCB0aGlzLm1hcmtlcik7CisgICAgfSwKKyAgICBk
dXA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbmV3IE1hcmtlZFRleHQobnVsbCwgbnVsbCwgdGhpcy5z
dHlsZSwgdGhpcy5tYXJrZXIpOyB9LAorICAgIGNsaXBUbzogZnVuY3Rpb24oZnJvbU9wZW4sIGZy
b20sIHRvT3BlbiwgdG8sIGRpZmYpIHsKKyAgICAgIGlmIChmcm9tT3BlbiAmJiB0byA+IHRoaXMu
ZnJvbSAmJiAodG8gPCB0aGlzLnRvIHx8IHRoaXMudG8gPT0gbnVsbCkpCisgICAgICAgIHRoaXMu
ZnJvbSA9IG51bGw7CisgICAgICBlbHNlIGlmICh0aGlzLmZyb20gIT0gbnVsbCAmJiB0aGlzLmZy
b20gPj0gZnJvbSkKKyAgICAgICAgdGhpcy5mcm9tID0gTWF0aC5tYXgodG8sIHRoaXMuZnJvbSkg
KyBkaWZmOworICAgICAgaWYgKHRvT3BlbiAmJiAoZnJvbSA8IHRoaXMudG8gfHwgdGhpcy50byA9
PSBudWxsKSAmJiAoZnJvbSA+IHRoaXMuZnJvbSB8fCB0aGlzLmZyb20gPT0gbnVsbCkpCisgICAg
ICAgIHRoaXMudG8gPSBudWxsOworICAgICAgZWxzZSBpZiAodGhpcy50byAhPSBudWxsICYmIHRo
aXMudG8gPiBmcm9tKQorICAgICAgICB0aGlzLnRvID0gdG8gPCB0aGlzLnRvID8gdGhpcy50byAr
IGRpZmYgOiBmcm9tOworICAgIH0sCisgICAgaXNEZWFkOiBmdW5jdGlvbigpIHsgcmV0dXJuIHRo
aXMuZnJvbSAhPSBudWxsICYmIHRoaXMudG8gIT0gbnVsbCAmJiB0aGlzLmZyb20gPj0gdGhpcy50
bzsgfSwKKyAgICBzYW1lU2V0OiBmdW5jdGlvbih4KSB7IHJldHVybiB0aGlzLm1hcmtlciA9PSB4
Lm1hcmtlcjsgfQorICB9OworCisgIGZ1bmN0aW9uIEJvb2ttYXJrKHBvcykgeworICAgIHRoaXMu
ZnJvbSA9IHBvczsgdGhpcy50byA9IHBvczsgdGhpcy5saW5lID0gbnVsbDsKKyAgfQorICBCb29r
bWFyay5wcm90b3R5cGUgPSB7CisgICAgYXR0YWNoOiBmdW5jdGlvbihsaW5lKSB7IHRoaXMubGlu
ZSA9IGxpbmU7IH0sCisgICAgZGV0YWNoOiBmdW5jdGlvbihsaW5lKSB7IGlmICh0aGlzLmxpbmUg
PT0gbGluZSkgdGhpcy5saW5lID0gbnVsbDsgfSwKKyAgICBzcGxpdDogZnVuY3Rpb24ocG9zLCBs
ZW5CZWZvcmUpIHsKKyAgICAgIGlmIChwb3MgPCB0aGlzLmZyb20pIHsKKyAgICAgICAgdGhpcy5m
cm9tID0gdGhpcy50byA9ICh0aGlzLmZyb20gLSBwb3MpICsgbGVuQmVmb3JlOworICAgICAgICBy
ZXR1cm4gdGhpczsKKyAgICAgIH0KKyAgICB9LAorICAgIGlzRGVhZDogZnVuY3Rpb24oKSB7IHJl
dHVybiB0aGlzLmZyb20gPiB0aGlzLnRvOyB9LAorICAgIGNsaXBUbzogZnVuY3Rpb24oZnJvbU9w
ZW4sIGZyb20sIHRvT3BlbiwgdG8sIGRpZmYpIHsKKyAgICAgIGlmICgoZnJvbU9wZW4gfHwgZnJv
bSA8IHRoaXMuZnJvbSkgJiYgKHRvT3BlbiB8fCB0byA+IHRoaXMudG8pKSB7CisgICAgICAgIHRo
aXMuZnJvbSA9IDA7IHRoaXMudG8gPSAtMTsKKyAgICAgIH0gZWxzZSBpZiAodGhpcy5mcm9tID4g
ZnJvbSkgeworICAgICAgICB0aGlzLmZyb20gPSB0aGlzLnRvID0gTWF0aC5tYXgodG8sIHRoaXMu
ZnJvbSkgKyBkaWZmOworICAgICAgfQorICAgIH0sCisgICAgc2FtZVNldDogZnVuY3Rpb24oeCkg
eyByZXR1cm4gZmFsc2U7IH0sCisgICAgZmluZDogZnVuY3Rpb24oKSB7CisgICAgICBpZiAoIXRo
aXMubGluZSB8fCAhdGhpcy5saW5lLnBhcmVudCkgcmV0dXJuIG51bGw7CisgICAgICByZXR1cm4g
e2xpbmU6IGxpbmVObyh0aGlzLmxpbmUpLCBjaDogdGhpcy5mcm9tfTsKKyAgICB9LAorICAgIGNs
ZWFyOiBmdW5jdGlvbigpIHsKKyAgICAgIGlmICh0aGlzLmxpbmUpIHsKKyAgICAgICAgdmFyIGZv
dW5kID0gaW5kZXhPZih0aGlzLmxpbmUubWFya2VkLCB0aGlzKTsKKyAgICAgICAgaWYgKGZvdW5k
ICE9IC0xKSB0aGlzLmxpbmUubWFya2VkLnNwbGljZShmb3VuZCwgMSk7CisgICAgICAgIHRoaXMu
bGluZSA9IG51bGw7CisgICAgICB9CisgICAgfQorICB9OworCisgIC8vIFdoZW4gbWVhc3VyaW5n
IHRoZSBwb3NpdGlvbiBvZiB0aGUgZW5kIG9mIGEgbGluZSwgZGlmZmVyZW50CisgIC8vIGJyb3dz
ZXJzIHJlcXVpcmUgZGlmZmVyZW50IGFwcHJvYWNoZXMuIElmIGFuIGVtcHR5IHNwYW4gaXMgYWRk
ZWQsCisgIC8vIG1hbnkgYnJvd3NlcnMgcmVwb3J0IGJvZ3VzIG9mZnNldHMuIE9mIHRob3NlLCBz
b21lIChXZWJraXQsCisgIC8vIHJlY2VudCBJRSkgd2lsbCBhY2NlcHQgYSBzcGFjZSB3aXRob3V0
IG1vdmluZyB0aGUgd2hvbGUgc3BhbiB0bworICAvLyB0aGUgbmV4dCBsaW5lIHdoZW4gd3JhcHBp
bmcgaXQsIG90aGVycyB3b3JrIHdpdGggYSB6ZXJvLXdpZHRoCisgIC8vIHNwYWNlLgorICB2YXIg
ZW9sU3BhbkNvbnRlbnQgPSAiICI7CisgIGlmIChnZWNrbyB8fCAoaWUgJiYgIWllX2x0OCkpIGVv
bFNwYW5Db250ZW50ID0gIlx1MjAwYiI7CisgIGVsc2UgaWYgKG9wZXJhKSBlb2xTcGFuQ29udGVu
dCA9ICIiOworCisgIC8vIExpbmUgb2JqZWN0cy4gVGhlc2UgaG9sZCBzdGF0ZSByZWxhdGVkIHRv
IGEgbGluZSwgaW5jbHVkaW5nCisgIC8vIGhpZ2hsaWdodGluZyBpbmZvICh0aGUgc3R5bGVzIGFy
cmF5KS4KKyAgZnVuY3Rpb24gTGluZSh0ZXh0LCBzdHlsZXMpIHsKKyAgICB0aGlzLnN0eWxlcyA9
IHN0eWxlcyB8fCBbdGV4dCwgbnVsbF07CisgICAgdGhpcy50ZXh0ID0gdGV4dDsKKyAgICB0aGlz
LmhlaWdodCA9IDE7CisgIH0KKyAgTGluZS5pbmhlcml0TWFya3MgPSBmdW5jdGlvbih0ZXh0LCBv
cmlnKSB7CisgICAgdmFyIGxuID0gbmV3IExpbmUodGV4dCksIG1rID0gb3JpZyAmJiBvcmlnLm1h
cmtlZDsKKyAgICBpZiAobWspIHsKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWsubGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgaWYgKG1rW2ldLnRvID09IG51bGwgJiYgbWtbaV0uc3R5bGUpIHsK
KyAgICAgICAgICB2YXIgbmV3bWsgPSBsbi5tYXJrZWQgfHwgKGxuLm1hcmtlZCA9IFtdKSwgbWFy
ayA9IG1rW2ldOworICAgICAgICAgIHZhciBubWFyayA9IG1hcmsuZHVwKCk7IG5ld21rLnB1c2go
bm1hcmspOyBubWFyay5hdHRhY2gobG4pOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICAg
IHJldHVybiBsbjsKKyAgfTsKKyAgTGluZS5wcm90b3R5cGUgPSB7CisgICAgLy8gUmVwbGFjZSBh
IHBpZWNlIG9mIGEgbGluZSwga2VlcGluZyB0aGUgc3R5bGVzIGFyb3VuZCBpdCBpbnRhY3QuCisg
ICAgcmVwbGFjZTogZnVuY3Rpb24oZnJvbSwgdG9fLCB0ZXh0KSB7CisgICAgICB2YXIgc3QgPSBb
XSwgbWsgPSB0aGlzLm1hcmtlZCwgdG8gPSB0b18gPT0gbnVsbCA/IHRoaXMudGV4dC5sZW5ndGgg
OiB0b187CisgICAgICBjb3B5U3R5bGVzKDAsIGZyb20sIHRoaXMuc3R5bGVzLCBzdCk7CisgICAg
ICBpZiAodGV4dCkgc3QucHVzaCh0ZXh0LCBudWxsKTsKKyAgICAgIGNvcHlTdHlsZXModG8sIHRo
aXMudGV4dC5sZW5ndGgsIHRoaXMuc3R5bGVzLCBzdCk7CisgICAgICB0aGlzLnN0eWxlcyA9IHN0
OworICAgICAgdGhpcy50ZXh0ID0gdGhpcy50ZXh0LnNsaWNlKDAsIGZyb20pICsgdGV4dCArIHRo
aXMudGV4dC5zbGljZSh0byk7CisgICAgICB0aGlzLnN0YXRlQWZ0ZXIgPSBudWxsOworICAgICAg
aWYgKG1rKSB7CisgICAgICAgIHZhciBkaWZmID0gdGV4dC5sZW5ndGggLSAodG8gLSBmcm9tKTsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtay5sZW5ndGg7ICsraSkgeworICAgICAgICAg
IHZhciBtYXJrID0gbWtbaV07CisgICAgICAgICAgbWFyay5jbGlwVG8oZnJvbSA9PSBudWxsLCBm
cm9tIHx8IDAsIHRvXyA9PSBudWxsLCB0bywgZGlmZik7CisgICAgICAgICAgaWYgKG1hcmsuaXNE
ZWFkKCkpIHttYXJrLmRldGFjaCh0aGlzKTsgbWsuc3BsaWNlKGktLSwgMSk7fQorICAgICAgICB9
CisgICAgICB9CisgICAgfSwKKyAgICAvLyBTcGxpdCBhIHBhcnQgb2ZmIGEgbGluZSwga2VlcGlu
ZyBzdHlsZXMgYW5kIG1hcmtlcnMgaW50YWN0LgorICAgIHNwbGl0OiBmdW5jdGlvbihwb3MsIHRl
eHRCZWZvcmUpIHsKKyAgICAgIHZhciBzdCA9IFt0ZXh0QmVmb3JlLCBudWxsXSwgbWsgPSB0aGlz
Lm1hcmtlZDsKKyAgICAgIGNvcHlTdHlsZXMocG9zLCB0aGlzLnRleHQubGVuZ3RoLCB0aGlzLnN0
eWxlcywgc3QpOworICAgICAgdmFyIHRha2VuID0gbmV3IExpbmUodGV4dEJlZm9yZSArIHRoaXMu
dGV4dC5zbGljZShwb3MpLCBzdCk7CisgICAgICBpZiAobWspIHsKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBtay5sZW5ndGg7ICsraSkgeworICAgICAgICAgIHZhciBtYXJrID0gbWtbaV07
CisgICAgICAgICAgdmFyIG5ld21hcmsgPSBtYXJrLnNwbGl0KHBvcywgdGV4dEJlZm9yZS5sZW5n
dGgpOworICAgICAgICAgIGlmIChuZXdtYXJrKSB7CisgICAgICAgICAgICBpZiAoIXRha2VuLm1h
cmtlZCkgdGFrZW4ubWFya2VkID0gW107CisgICAgICAgICAgICB0YWtlbi5tYXJrZWQucHVzaChu
ZXdtYXJrKTsgbmV3bWFyay5hdHRhY2godGFrZW4pOworICAgICAgICAgICAgaWYgKG5ld21hcmsg
PT0gbWFyaykgbWsuc3BsaWNlKGktLSwgMSk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICB9CisgICAgICByZXR1cm4gdGFrZW47CisgICAgfSwKKyAgICBhcHBlbmQ6IGZ1bmN0aW9uKGxp
bmUpIHsKKyAgICAgIHZhciBteWxlbiA9IHRoaXMudGV4dC5sZW5ndGgsIG1rID0gbGluZS5tYXJr
ZWQsIG15bWsgPSB0aGlzLm1hcmtlZDsKKyAgICAgIHRoaXMudGV4dCArPSBsaW5lLnRleHQ7Cisg
ICAgICBjb3B5U3R5bGVzKDAsIGxpbmUudGV4dC5sZW5ndGgsIGxpbmUuc3R5bGVzLCB0aGlzLnN0
eWxlcyk7CisgICAgICBpZiAobXltaykgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG15
bWsubGVuZ3RoOyArK2kpCisgICAgICAgICAgaWYgKG15bWtbaV0udG8gPT0gbnVsbCkgbXlta1tp
XS50byA9IG15bGVuOworICAgICAgfQorICAgICAgaWYgKG1rICYmIG1rLmxlbmd0aCkgeworICAg
ICAgICBpZiAoIW15bWspIHRoaXMubWFya2VkID0gbXltayA9IFtdOworICAgICAgICBvdXRlcjog
Zm9yICh2YXIgaSA9IDA7IGkgPCBtay5sZW5ndGg7ICsraSkgeworICAgICAgICAgIHZhciBtYXJr
ID0gbWtbaV07CisgICAgICAgICAgaWYgKCFtYXJrLmZyb20pIHsKKyAgICAgICAgICAgIGZvciAo
dmFyIGogPSAwOyBqIDwgbXltay5sZW5ndGg7ICsraikgeworICAgICAgICAgICAgICB2YXIgbXlt
YXJrID0gbXlta1tqXTsKKyAgICAgICAgICAgICAgaWYgKG15bWFyay50byA9PSBteWxlbiAmJiBt
eW1hcmsuc2FtZVNldChtYXJrKSkgeworICAgICAgICAgICAgICAgIG15bWFyay50byA9IG1hcmsu
dG8gPT0gbnVsbCA/IG51bGwgOiBtYXJrLnRvICsgbXlsZW47CisgICAgICAgICAgICAgICAgaWYg
KG15bWFyay5pc0RlYWQoKSkgeworICAgICAgICAgICAgICAgICAgbXltYXJrLmRldGFjaCh0aGlz
KTsKKyAgICAgICAgICAgICAgICAgIG1rLnNwbGljZShpLS0sIDEpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBjb250aW51ZSBvdXRlcjsKKyAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBteW1rLnB1c2gobWFyayk7CisgICAg
ICAgICAgbWFyay5hdHRhY2godGhpcyk7CisgICAgICAgICAgbWFyay5mcm9tICs9IG15bGVuOwor
ICAgICAgICAgIGlmIChtYXJrLnRvICE9IG51bGwpIG1hcmsudG8gKz0gbXlsZW47CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICB9LAorICAgIGZpeE1hcmtFbmRzOiBmdW5jdGlvbihvdGhlcikgewor
ICAgICAgdmFyIG1rID0gdGhpcy5tYXJrZWQsIG9tayA9IG90aGVyLm1hcmtlZDsKKyAgICAgIGlm
ICghbWspIHJldHVybjsKKyAgICAgIG91dGVyOiBmb3IgKHZhciBpID0gMDsgaSA8IG1rLmxlbmd0
aDsgKytpKSB7CisgICAgICAgIHZhciBtYXJrID0gbWtbaV0sIGNsb3NlID0gbWFyay50byA9PSBu
dWxsOworICAgICAgICBpZiAoY2xvc2UgJiYgb21rKSB7CisgICAgICAgICAgZm9yICh2YXIgaiA9
IDA7IGogPCBvbWsubGVuZ3RoOyArK2opIHsKKyAgICAgICAgICAgIHZhciBvbSA9IG9ta1tqXTsK
KyAgICAgICAgICAgIGlmICghb20uc2FtZVNldChtYXJrKSB8fCBvbS5mcm9tICE9IG51bGwpIGNv
bnRpbnVlOworICAgICAgICAgICAgaWYgKG1hcmsuZnJvbSA9PSB0aGlzLnRleHQubGVuZ3RoICYm
IG9tLnRvID09IDApIHsKKyAgICAgICAgICAgICAgb21rLnNwbGljZShqLCAxKTsKKyAgICAgICAg
ICAgICAgbWsuc3BsaWNlKGktLSwgMSk7CisgICAgICAgICAgICAgIGNvbnRpbnVlIG91dGVyOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgY2xvc2UgPSBmYWxzZTsgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChjbG9z
ZSkgbWFyay50byA9IHRoaXMudGV4dC5sZW5ndGg7CisgICAgICB9CisgICAgfSwKKyAgICBmaXhN
YXJrU3RhcnRzOiBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBtayA9IHRoaXMubWFya2VkOworICAg
ICAgaWYgKCFtaykgcmV0dXJuOworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtay5sZW5ndGg7
ICsraSkKKyAgICAgICAgaWYgKG1rW2ldLmZyb20gPT0gbnVsbCkgbWtbaV0uZnJvbSA9IDA7Cisg
ICAgfSwKKyAgICBhZGRNYXJrOiBmdW5jdGlvbihtYXJrKSB7CisgICAgICBtYXJrLmF0dGFjaCh0
aGlzKTsKKyAgICAgIGlmICh0aGlzLm1hcmtlZCA9PSBudWxsKSB0aGlzLm1hcmtlZCA9IFtdOwor
ICAgICAgdGhpcy5tYXJrZWQucHVzaChtYXJrKTsKKyAgICAgIHRoaXMubWFya2VkLnNvcnQoZnVu
Y3Rpb24oYSwgYil7cmV0dXJuIChhLmZyb20gfHwgMCkgLSAoYi5mcm9tIHx8IDApO30pOworICAg
IH0sCisgICAgLy8gUnVuIHRoZSBnaXZlbiBtb2RlJ3MgcGFyc2VyIG92ZXIgYSBsaW5lLCB1cGRh
dGUgdGhlIHN0eWxlcworICAgIC8vIGFycmF5LCB3aGljaCBjb250YWlucyBhbHRlcm5hdGluZyBm
cmFnbWVudHMgb2YgdGV4dCBhbmQgQ1NTCisgICAgLy8gY2xhc3Nlcy4KKyAgICBoaWdobGlnaHQ6
IGZ1bmN0aW9uKG1vZGUsIHN0YXRlLCB0YWJTaXplKSB7CisgICAgICB2YXIgc3RyZWFtID0gbmV3
IFN0cmluZ1N0cmVhbSh0aGlzLnRleHQsIHRhYlNpemUpLCBzdCA9IHRoaXMuc3R5bGVzLCBwb3Mg
PSAwOworICAgICAgdmFyIGNoYW5nZWQgPSBmYWxzZSwgY3VyV29yZCA9IHN0WzBdLCBwcmV2V29y
ZDsKKyAgICAgIGlmICh0aGlzLnRleHQgPT0gIiIgJiYgbW9kZS5ibGFua0xpbmUpIG1vZGUuYmxh
bmtMaW5lKHN0YXRlKTsKKyAgICAgIHdoaWxlICghc3RyZWFtLmVvbCgpKSB7CisgICAgICAgIHZh
ciBzdHlsZSA9IG1vZGUudG9rZW4oc3RyZWFtLCBzdGF0ZSk7CisgICAgICAgIHZhciBzdWJzdHIg
PSB0aGlzLnRleHQuc2xpY2Uoc3RyZWFtLnN0YXJ0LCBzdHJlYW0ucG9zKTsKKyAgICAgICAgc3Ry
ZWFtLnN0YXJ0ID0gc3RyZWFtLnBvczsKKyAgICAgICAgaWYgKHBvcyAmJiBzdFtwb3MtMV0gPT0g
c3R5bGUpCisgICAgICAgICAgc3RbcG9zLTJdICs9IHN1YnN0cjsKKyAgICAgICAgZWxzZSBpZiAo
c3Vic3RyKSB7CisgICAgICAgICAgaWYgKCFjaGFuZ2VkICYmIChzdFtwb3MrMV0gIT0gc3R5bGUg
fHwgKHBvcyAmJiBzdFtwb3MtMl0gIT0gcHJldldvcmQpKSkgY2hhbmdlZCA9IHRydWU7CisgICAg
ICAgICAgc3RbcG9zKytdID0gc3Vic3RyOyBzdFtwb3MrK10gPSBzdHlsZTsKKyAgICAgICAgICBw
cmV2V29yZCA9IGN1cldvcmQ7IGN1cldvcmQgPSBzdFtwb3NdOworICAgICAgICB9CisgICAgICAg
IC8vIEdpdmUgdXAgd2hlbiBsaW5lIGlzIHJpZGljdWxvdXNseSBsb25nCisgICAgICAgIGlmIChz
dHJlYW0ucG9zID4gNTAwMCkgeworICAgICAgICAgIHN0W3BvcysrXSA9IHRoaXMudGV4dC5zbGlj
ZShzdHJlYW0ucG9zKTsgc3RbcG9zKytdID0gbnVsbDsKKyAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgfQorICAgICAgaWYgKHN0Lmxlbmd0aCAhPSBwb3MpIHtzdC5sZW5ndGggPSBw
b3M7IGNoYW5nZWQgPSB0cnVlO30KKyAgICAgIGlmIChwb3MgJiYgc3RbcG9zLTJdICE9IHByZXZX
b3JkKSBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgIC8vIFNob3J0IGxpbmVzIHdpdGggc2ltcGxlIGhp
Z2hsaWdodHMgcmV0dXJuIG51bGwsIGFuZCBhcmUKKyAgICAgIC8vIGNvdW50ZWQgYXMgY2hhbmdl
ZCBieSB0aGUgZHJpdmVyIGJlY2F1c2UgdGhleSBhcmUgbGlrZWx5IHRvCisgICAgICAvLyBoaWdo
bGlnaHQgdGhlIHNhbWUgd2F5IGluIHZhcmlvdXMgY29udGV4dHMuCisgICAgICByZXR1cm4gY2hh
bmdlZCB8fCAoc3QubGVuZ3RoIDwgNSAmJiB0aGlzLnRleHQubGVuZ3RoIDwgMTAgPyBudWxsIDog
ZmFsc2UpOworICAgIH0sCisgICAgLy8gRmV0Y2ggdGhlIHBhcnNlciB0b2tlbiBmb3IgYSBnaXZl
biBjaGFyYWN0ZXIuIFVzZWZ1bCBmb3IgaGFja3MKKyAgICAvLyB0aGF0IHdhbnQgdG8gaW5zcGVj
dCB0aGUgbW9kZSBzdGF0ZSAoc2F5LCBmb3IgY29tcGxldGlvbikuCisgICAgZ2V0VG9rZW5BdDog
ZnVuY3Rpb24obW9kZSwgc3RhdGUsIGNoKSB7CisgICAgICB2YXIgdHh0ID0gdGhpcy50ZXh0LCBz
dHJlYW0gPSBuZXcgU3RyaW5nU3RyZWFtKHR4dCk7CisgICAgICB3aGlsZSAoc3RyZWFtLnBvcyA8
IGNoICYmICFzdHJlYW0uZW9sKCkpIHsKKyAgICAgICAgc3RyZWFtLnN0YXJ0ID0gc3RyZWFtLnBv
czsKKyAgICAgICAgdmFyIHN0eWxlID0gbW9kZS50b2tlbihzdHJlYW0sIHN0YXRlKTsKKyAgICAg
IH0KKyAgICAgIHJldHVybiB7c3RhcnQ6IHN0cmVhbS5zdGFydCwKKyAgICAgICAgICAgICAgZW5k
OiBzdHJlYW0ucG9zLAorICAgICAgICAgICAgICBzdHJpbmc6IHN0cmVhbS5jdXJyZW50KCksCisg
ICAgICAgICAgICAgIGNsYXNzTmFtZTogc3R5bGUgfHwgbnVsbCwKKyAgICAgICAgICAgICAgc3Rh
dGU6IHN0YXRlfTsKKyAgICB9LAorICAgIGluZGVudGF0aW9uOiBmdW5jdGlvbih0YWJTaXplKSB7
cmV0dXJuIGNvdW50Q29sdW1uKHRoaXMudGV4dCwgbnVsbCwgdGFiU2l6ZSk7fSwKKyAgICAvLyBQ
cm9kdWNlcyBhbiBIVE1MIGZyYWdtZW50IGZvciB0aGUgbGluZSwgdGFraW5nIHNlbGVjdGlvbiwK
KyAgICAvLyBtYXJraW5nLCBhbmQgaGlnaGxpZ2h0aW5nIGludG8gYWNjb3VudC4KKyAgICBnZXRF
bGVtZW50OiBmdW5jdGlvbihtYWtlVGFiLCB3cmFwQXQsIHdyYXBXQlIpIHsKKyAgICAgIHZhciBm
aXJzdCA9IHRydWUsIGNvbCA9IDAsIHNwZWNpYWxzID0gL1tcdFx1MDAwMC1cdTAwMTlcdTIwMGJc
dTIwMjhcdTIwMjlcdUZFRkZdL2c7CisgICAgICB2YXIgcHJlID0gZWx0KCJwcmUiKTsKKyAgICAg
IGZ1bmN0aW9uIHNwYW5fKGh0bWwsIHRleHQsIHN0eWxlKSB7CisgICAgICAgIGlmICghdGV4dCkg
cmV0dXJuOworICAgICAgICAvLyBXb3JrIGFyb3VuZCBhIGJ1ZyB3aGVyZSwgaW4gc29tZSBjb21w
YXQgbW9kZXMsIElFIGlnbm9yZXMgbGVhZGluZyBzcGFjZXMKKyAgICAgICAgaWYgKGZpcnN0ICYm
IGllICYmIHRleHQuY2hhckF0KDApID09ICIgIikgdGV4dCA9ICJcdTAwYTAiICsgdGV4dC5zbGlj
ZSgxKTsKKyAgICAgICAgZmlyc3QgPSBmYWxzZTsKKyAgICAgICAgaWYgKCFzcGVjaWFscy50ZXN0
KHRleHQpKSB7CisgICAgICAgICAgY29sICs9IHRleHQubGVuZ3RoOworICAgICAgICAgIHZhciBj
b250ZW50ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50
KCksIHBvcyA9IDA7CisgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIHNwZWNp
YWxzLmxhc3RJbmRleCA9IHBvczsKKyAgICAgICAgICAgIHZhciBtID0gc3BlY2lhbHMuZXhlYyh0
ZXh0KTsKKyAgICAgICAgICAgIHZhciBza2lwcGVkID0gbSA/IG0uaW5kZXggLSBwb3MgOiB0ZXh0
Lmxlbmd0aCAtIHBvczsKKyAgICAgICAgICAgIGlmIChza2lwcGVkKSB7CisgICAgICAgICAgICAg
IGNvbnRlbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dC5zbGljZShw
b3MsIHBvcyArIHNraXBwZWQpKSk7CisgICAgICAgICAgICAgIGNvbCArPSBza2lwcGVkOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFtKSBicmVhazsKKyAgICAgICAgICAgIHBvcyAr
PSBza2lwcGVkICsgMTsKKyAgICAgICAgICAgIGlmIChtWzBdID09ICJcdCIpIHsKKyAgICAgICAg
ICAgICAgdmFyIHRhYiA9IG1ha2VUYWIoY29sKTsKKyAgICAgICAgICAgICAgY29udGVudC5hcHBl
bmRDaGlsZCh0YWIuZWxlbWVudC5jbG9uZU5vZGUodHJ1ZSkpOworICAgICAgICAgICAgICBjb2wg
Kz0gdGFiLndpZHRoOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgdmFyIHRv
a2VuID0gZWx0KCJzcGFuIiwgIlx1MjAyMiIsICJjbS1pbnZhbGlkY2hhciIpOworICAgICAgICAg
ICAgICB0b2tlbi50aXRsZSA9ICJcXHUiICsgbVswXS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2
KTsKKyAgICAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZCh0b2tlbik7CisgICAgICAgICAg
ICAgIGNvbCArPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBpZiAoc3R5bGUpIGh0bWwuYXBwZW5kQ2hpbGQoZWx0KCJzcGFuIiwgW2NvbnRlbnRdLCBz
dHlsZSkpOworICAgICAgICBlbHNlIGh0bWwuYXBwZW5kQ2hpbGQoY29udGVudCk7CisgICAgICB9
CisgICAgICB2YXIgc3BhbiA9IHNwYW5fOworICAgICAgaWYgKHdyYXBBdCAhPSBudWxsKSB7Cisg
ICAgICAgIHZhciBvdXRQb3MgPSAwLCBhbmNob3IgPSBwcmUuYW5jaG9yID0gZWx0KCJzcGFuIik7
CisgICAgICAgIHNwYW4gPSBmdW5jdGlvbihodG1sLCB0ZXh0LCBzdHlsZSkgeworICAgICAgICAg
IHZhciBsID0gdGV4dC5sZW5ndGg7CisgICAgICAgICAgaWYgKHdyYXBBdCA+PSBvdXRQb3MgJiYg
d3JhcEF0IDwgb3V0UG9zICsgbCkgeworICAgICAgICAgICAgaWYgKHdyYXBBdCA+IG91dFBvcykg
eworICAgICAgICAgICAgICBzcGFuXyhodG1sLCB0ZXh0LnNsaWNlKDAsIHdyYXBBdCAtIG91dFBv
cyksIHN0eWxlKTsKKyAgICAgICAgICAgICAgLy8gU2VlIGNvbW1lbnQgYXQgdGhlIGRlZmluaXRp
b24gb2Ygc3BhbkFmZmVjdHNXcmFwcGluZworICAgICAgICAgICAgICBpZiAod3JhcFdCUikgaHRt
bC5hcHBlbmRDaGlsZChlbHQoIndiciIpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGh0
bWwuYXBwZW5kQ2hpbGQoYW5jaG9yKTsKKyAgICAgICAgICAgIHZhciBjdXQgPSB3cmFwQXQgLSBv
dXRQb3M7CisgICAgICAgICAgICBzcGFuXyhhbmNob3IsIG9wZXJhID8gdGV4dC5zbGljZShjdXQs
IGN1dCArIDEpIDogdGV4dC5zbGljZShjdXQpLCBzdHlsZSk7CisgICAgICAgICAgICBpZiAob3Bl
cmEpIHNwYW5fKGh0bWwsIHRleHQuc2xpY2UoY3V0ICsgMSksIHN0eWxlKTsKKyAgICAgICAgICAg
IHdyYXBBdC0tOworICAgICAgICAgICAgb3V0UG9zICs9IGw7CisgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIG91dFBvcyArPSBsOworICAgICAgICAgICAgc3Bhbl8oaHRtbCwgdGV4dCwg
c3R5bGUpOworICAgICAgICAgICAgaWYgKG91dFBvcyA9PSB3cmFwQXQgJiYgb3V0UG9zID09IGxl
bikgeworICAgICAgICAgICAgICBzZXRUZXh0Q29udGVudChhbmNob3IsIGVvbFNwYW5Db250ZW50
KTsKKyAgICAgICAgICAgICAgaHRtbC5hcHBlbmRDaGlsZChhbmNob3IpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLy8gU3RvcCBvdXRwdXR0aW5nIEhUTUwgd2hlbiBnb25lIHN1ZmZpY2ll
bnRseSBmYXIgYmV5b25kIG1lYXN1cmUKKyAgICAgICAgICAgIGVsc2UgaWYgKG91dFBvcyA+IHdy
YXBBdCArIDEwICYmIC9ccy8udGVzdCh0ZXh0KSkgc3BhbiA9IGZ1bmN0aW9uKCl7fTsKKyAgICAg
ICAgICB9CisgICAgICAgIH07CisgICAgICB9CisKKyAgICAgIHZhciBzdCA9IHRoaXMuc3R5bGVz
LCBhbGxUZXh0ID0gdGhpcy50ZXh0LCBtYXJrZWQgPSB0aGlzLm1hcmtlZDsKKyAgICAgIHZhciBs
ZW4gPSBhbGxUZXh0Lmxlbmd0aDsKKyAgICAgIGZ1bmN0aW9uIHN0eWxlVG9DbGFzcyhzdHlsZSkg
eworICAgICAgICBpZiAoIXN0eWxlKSByZXR1cm4gbnVsbDsKKyAgICAgICAgcmV0dXJuICJjbS0i
ICsgc3R5bGUucmVwbGFjZSgvICsvZywgIiBjbS0iKTsKKyAgICAgIH0KKyAgICAgIGlmICghYWxs
VGV4dCAmJiB3cmFwQXQgPT0gbnVsbCkgeworICAgICAgICBzcGFuKHByZSwgIiAiKTsKKyAgICAg
IH0gZWxzZSBpZiAoIW1hcmtlZCB8fCAhbWFya2VkLmxlbmd0aCkgeworICAgICAgICBmb3IgKHZh
ciBpID0gMCwgY2ggPSAwOyBjaCA8IGxlbjsgaSs9MikgeworICAgICAgICAgIHZhciBzdHIgPSBz
dFtpXSwgc3R5bGUgPSBzdFtpKzFdLCBsID0gc3RyLmxlbmd0aDsKKyAgICAgICAgICBpZiAoY2gg
KyBsID4gbGVuKSBzdHIgPSBzdHIuc2xpY2UoMCwgbGVuIC0gY2gpOworICAgICAgICAgIGNoICs9
IGw7CisgICAgICAgICAgc3BhbihwcmUsIHN0ciwgc3R5bGVUb0NsYXNzKHN0eWxlKSk7CisgICAg
ICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHZhciBwb3MgPSAwLCBpID0gMCwgdGV4dCA9
ICIiLCBzdHlsZSwgc2cgPSAwOworICAgICAgICB2YXIgbmV4dENoYW5nZSA9IG1hcmtlZFswXS5m
cm9tIHx8IDAsIG1hcmtzID0gW10sIG1hcmtwb3MgPSAwOworICAgICAgICB2YXIgYWR2YW5jZU1h
cmtzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgdmFyIG07CisgICAgICAgICAgd2hpbGUgKG1h
cmtwb3MgPCBtYXJrZWQubGVuZ3RoICYmCisgICAgICAgICAgICAgICAgICgobSA9IG1hcmtlZFtt
YXJrcG9zXSkuZnJvbSA9PSBwb3MgfHwgbS5mcm9tID09IG51bGwpKSB7CisgICAgICAgICAgICBp
ZiAobS5zdHlsZSAhPSBudWxsKSBtYXJrcy5wdXNoKG0pOworICAgICAgICAgICAgKyttYXJrcG9z
OworICAgICAgICAgIH0KKyAgICAgICAgICBuZXh0Q2hhbmdlID0gbWFya3BvcyA8IG1hcmtlZC5s
ZW5ndGggPyBtYXJrZWRbbWFya3Bvc10uZnJvbSA6IEluZmluaXR5OworICAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgbWFya3MubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciB0byA9
IG1hcmtzW2ldLnRvOworICAgICAgICAgICAgaWYgKHRvID09IG51bGwpIHRvID0gSW5maW5pdHk7
CisgICAgICAgICAgICBpZiAodG8gPT0gcG9zKSBtYXJrcy5zcGxpY2UoaS0tLCAxKTsKKyAgICAg
ICAgICAgIGVsc2UgbmV4dENoYW5nZSA9IE1hdGgubWluKHRvLCBuZXh0Q2hhbmdlKTsKKyAgICAg
ICAgICB9CisgICAgICAgIH07CisgICAgICAgIHZhciBtID0gMDsKKyAgICAgICAgd2hpbGUgKHBv
cyA8IGxlbikgeworICAgICAgICAgIGlmIChuZXh0Q2hhbmdlID09IHBvcykgYWR2YW5jZU1hcmtz
KCk7CisgICAgICAgICAgdmFyIHVwdG8gPSBNYXRoLm1pbihsZW4sIG5leHRDaGFuZ2UpOworICAg
ICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBpZiAodGV4dCkgeworICAgICAgICAg
ICAgICB2YXIgZW5kID0gcG9zICsgdGV4dC5sZW5ndGg7CisgICAgICAgICAgICAgIHZhciBhcHBs
aWVkU3R5bGUgPSBzdHlsZTsKKyAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBtYXJr
cy5sZW5ndGg7ICsraikKKyAgICAgICAgICAgICAgICBhcHBsaWVkU3R5bGUgPSAoYXBwbGllZFN0
eWxlID8gYXBwbGllZFN0eWxlICsgIiAiIDogIiIpICsgbWFya3Nbal0uc3R5bGU7CisgICAgICAg
ICAgICAgIHNwYW4ocHJlLCBlbmQgPiB1cHRvID8gdGV4dC5zbGljZSgwLCB1cHRvIC0gcG9zKSA6
IHRleHQsIGFwcGxpZWRTdHlsZSk7CisgICAgICAgICAgICAgIGlmIChlbmQgPj0gdXB0bykge3Rl
eHQgPSB0ZXh0LnNsaWNlKHVwdG8gLSBwb3MpOyBwb3MgPSB1cHRvOyBicmVhazt9CisgICAgICAg
ICAgICAgIHBvcyA9IGVuZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRleHQgPSBzdFtp
KytdOyBzdHlsZSA9IHN0eWxlVG9DbGFzcyhzdFtpKytdKTsKKyAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICAgIHJldHVybiBwcmU7CisgICAgfSwKKyAgICBjbGVhblVwOiBmdW5j
dGlvbigpIHsKKyAgICAgIHRoaXMucGFyZW50ID0gbnVsbDsKKyAgICAgIGlmICh0aGlzLm1hcmtl
ZCkKKyAgICAgICAgZm9yICh2YXIgaSA9IDAsIGUgPSB0aGlzLm1hcmtlZC5sZW5ndGg7IGkgPCBl
OyArK2kpIHRoaXMubWFya2VkW2ldLmRldGFjaCh0aGlzKTsKKyAgICB9CisgIH07CisgIC8vIFV0
aWxpdHkgdXNlZCBieSByZXBsYWNlIGFuZCBzcGxpdCBhYm92ZQorICBmdW5jdGlvbiBjb3B5U3R5
bGVzKGZyb20sIHRvLCBzb3VyY2UsIGRlc3QpIHsKKyAgICBmb3IgKHZhciBpID0gMCwgcG9zID0g
MCwgc3RhdGUgPSAwOyBwb3MgPCB0bzsgaSs9MikgeworICAgICAgdmFyIHBhcnQgPSBzb3VyY2Vb
aV0sIGVuZCA9IHBvcyArIHBhcnQubGVuZ3RoOworICAgICAgaWYgKHN0YXRlID09IDApIHsKKyAg
ICAgICAgaWYgKGVuZCA+IGZyb20pIGRlc3QucHVzaChwYXJ0LnNsaWNlKGZyb20gLSBwb3MsIE1h
dGgubWluKHBhcnQubGVuZ3RoLCB0byAtIHBvcykpLCBzb3VyY2VbaSsxXSk7CisgICAgICAgIGlm
IChlbmQgPj0gZnJvbSkgc3RhdGUgPSAxOworICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PSAxKSB7
CisgICAgICAgIGlmIChlbmQgPiB0bykgZGVzdC5wdXNoKHBhcnQuc2xpY2UoMCwgdG8gLSBwb3Mp
LCBzb3VyY2VbaSsxXSk7CisgICAgICAgIGVsc2UgZGVzdC5wdXNoKHBhcnQsIHNvdXJjZVtpKzFd
KTsKKyAgICAgIH0KKyAgICAgIHBvcyA9IGVuZDsKKyAgICB9CisgIH0KKworICAvLyBEYXRhIHN0
cnVjdHVyZSB0aGF0IGhvbGRzIHRoZSBzZXF1ZW5jZSBvZiBsaW5lcy4KKyAgZnVuY3Rpb24gTGVh
ZkNodW5rKGxpbmVzKSB7CisgICAgdGhpcy5saW5lcyA9IGxpbmVzOworICAgIHRoaXMucGFyZW50
ID0gbnVsbDsKKyAgICBmb3IgKHZhciBpID0gMCwgZSA9IGxpbmVzLmxlbmd0aCwgaGVpZ2h0ID0g
MDsgaSA8IGU7ICsraSkgeworICAgICAgbGluZXNbaV0ucGFyZW50ID0gdGhpczsKKyAgICAgIGhl
aWdodCArPSBsaW5lc1tpXS5oZWlnaHQ7CisgICAgfQorICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0
OworICB9CisgIExlYWZDaHVuay5wcm90b3R5cGUgPSB7CisgICAgY2h1bmtTaXplOiBmdW5jdGlv
bigpIHsgcmV0dXJuIHRoaXMubGluZXMubGVuZ3RoOyB9LAorICAgIHJlbW92ZTogZnVuY3Rpb24o
YXQsIG4sIGNhbGxiYWNrcykgeworICAgICAgZm9yICh2YXIgaSA9IGF0LCBlID0gYXQgKyBuOyBp
IDwgZTsgKytpKSB7CisgICAgICAgIHZhciBsaW5lID0gdGhpcy5saW5lc1tpXTsKKyAgICAgICAg
dGhpcy5oZWlnaHQgLT0gbGluZS5oZWlnaHQ7CisgICAgICAgIGxpbmUuY2xlYW5VcCgpOworICAg
ICAgICBpZiAobGluZS5oYW5kbGVycykKKyAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxp
bmUuaGFuZGxlcnMubGVuZ3RoOyArK2opIGNhbGxiYWNrcy5wdXNoKGxpbmUuaGFuZGxlcnNbal0p
OworICAgICAgfQorICAgICAgdGhpcy5saW5lcy5zcGxpY2UoYXQsIG4pOworICAgIH0sCisgICAg
Y29sbGFwc2U6IGZ1bmN0aW9uKGxpbmVzKSB7CisgICAgICBsaW5lcy5zcGxpY2UuYXBwbHkobGlu
ZXMsIFtsaW5lcy5sZW5ndGgsIDBdLmNvbmNhdCh0aGlzLmxpbmVzKSk7CisgICAgfSwKKyAgICBp
bnNlcnRIZWlnaHQ6IGZ1bmN0aW9uKGF0LCBsaW5lcywgaGVpZ2h0KSB7CisgICAgICB0aGlzLmhl
aWdodCArPSBoZWlnaHQ7CisgICAgICB0aGlzLmxpbmVzID0gdGhpcy5saW5lcy5zbGljZSgwLCBh
dCkuY29uY2F0KGxpbmVzKS5jb25jYXQodGhpcy5saW5lcy5zbGljZShhdCkpOworICAgICAgZm9y
ICh2YXIgaSA9IDAsIGUgPSBsaW5lcy5sZW5ndGg7IGkgPCBlOyArK2kpIGxpbmVzW2ldLnBhcmVu
dCA9IHRoaXM7CisgICAgfSwKKyAgICBpdGVyTjogZnVuY3Rpb24oYXQsIG4sIG9wKSB7CisgICAg
ICBmb3IgKHZhciBlID0gYXQgKyBuOyBhdCA8IGU7ICsrYXQpCisgICAgICAgIGlmIChvcCh0aGlz
LmxpbmVzW2F0XSkpIHJldHVybiB0cnVlOworICAgIH0KKyAgfTsKKyAgZnVuY3Rpb24gQnJhbmNo
Q2h1bmsoY2hpbGRyZW4pIHsKKyAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47CisgICAgdmFy
IHNpemUgPSAwLCBoZWlnaHQgPSAwOworICAgIGZvciAodmFyIGkgPSAwLCBlID0gY2hpbGRyZW4u
bGVuZ3RoOyBpIDwgZTsgKytpKSB7CisgICAgICB2YXIgY2ggPSBjaGlsZHJlbltpXTsKKyAgICAg
IHNpemUgKz0gY2guY2h1bmtTaXplKCk7IGhlaWdodCArPSBjaC5oZWlnaHQ7CisgICAgICBjaC5w
YXJlbnQgPSB0aGlzOworICAgIH0KKyAgICB0aGlzLnNpemUgPSBzaXplOworICAgIHRoaXMuaGVp
Z2h0ID0gaGVpZ2h0OworICAgIHRoaXMucGFyZW50ID0gbnVsbDsKKyAgfQorICBCcmFuY2hDaHVu
ay5wcm90b3R5cGUgPSB7CisgICAgY2h1bmtTaXplOiBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMu
c2l6ZTsgfSwKKyAgICByZW1vdmU6IGZ1bmN0aW9uKGF0LCBuLCBjYWxsYmFja3MpIHsKKyAgICAg
IHRoaXMuc2l6ZSAtPSBuOworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVu
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBjaGlsZCA9IHRoaXMuY2hpbGRyZW5baV0sIHN6
ID0gY2hpbGQuY2h1bmtTaXplKCk7CisgICAgICAgIGlmIChhdCA8IHN6KSB7CisgICAgICAgICAg
dmFyIHJtID0gTWF0aC5taW4obiwgc3ogLSBhdCksIG9sZEhlaWdodCA9IGNoaWxkLmhlaWdodDsK
KyAgICAgICAgICBjaGlsZC5yZW1vdmUoYXQsIHJtLCBjYWxsYmFja3MpOworICAgICAgICAgIHRo
aXMuaGVpZ2h0IC09IG9sZEhlaWdodCAtIGNoaWxkLmhlaWdodDsKKyAgICAgICAgICBpZiAoc3og
PT0gcm0pIHsgdGhpcy5jaGlsZHJlbi5zcGxpY2UoaS0tLCAxKTsgY2hpbGQucGFyZW50ID0gbnVs
bDsgfQorICAgICAgICAgIGlmICgobiAtPSBybSkgPT0gMCkgYnJlYWs7CisgICAgICAgICAgYXQg
PSAwOworICAgICAgICB9IGVsc2UgYXQgLT0gc3o7CisgICAgICB9CisgICAgICBpZiAodGhpcy5z
aXplIC0gbiA8IDI1KSB7CisgICAgICAgIHZhciBsaW5lcyA9IFtdOworICAgICAgICB0aGlzLmNv
bGxhcHNlKGxpbmVzKTsKKyAgICAgICAgdGhpcy5jaGlsZHJlbiA9IFtuZXcgTGVhZkNodW5rKGxp
bmVzKV07CisgICAgICAgIHRoaXMuY2hpbGRyZW5bMF0ucGFyZW50ID0gdGhpczsKKyAgICAgIH0K
KyAgICB9LAorICAgIGNvbGxhcHNlOiBmdW5jdGlvbihsaW5lcykgeworICAgICAgZm9yICh2YXIg
aSA9IDAsIGUgPSB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGU7ICsraSkgdGhpcy5jaGlsZHJl
bltpXS5jb2xsYXBzZShsaW5lcyk7CisgICAgfSwKKyAgICBpbnNlcnQ6IGZ1bmN0aW9uKGF0LCBs
aW5lcykgeworICAgICAgdmFyIGhlaWdodCA9IDA7CisgICAgICBmb3IgKHZhciBpID0gMCwgZSA9
IGxpbmVzLmxlbmd0aDsgaSA8IGU7ICsraSkgaGVpZ2h0ICs9IGxpbmVzW2ldLmhlaWdodDsKKyAg
ICAgIHRoaXMuaW5zZXJ0SGVpZ2h0KGF0LCBsaW5lcywgaGVpZ2h0KTsKKyAgICB9LAorICAgIGlu
c2VydEhlaWdodDogZnVuY3Rpb24oYXQsIGxpbmVzLCBoZWlnaHQpIHsKKyAgICAgIHRoaXMuc2l6
ZSArPSBsaW5lcy5sZW5ndGg7CisgICAgICB0aGlzLmhlaWdodCArPSBoZWlnaHQ7CisgICAgICBm
b3IgKHZhciBpID0gMCwgZSA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgZTsgKytpKSB7Cisg
ICAgICAgIHZhciBjaGlsZCA9IHRoaXMuY2hpbGRyZW5baV0sIHN6ID0gY2hpbGQuY2h1bmtTaXpl
KCk7CisgICAgICAgIGlmIChhdCA8PSBzeikgeworICAgICAgICAgIGNoaWxkLmluc2VydEhlaWdo
dChhdCwgbGluZXMsIGhlaWdodCk7CisgICAgICAgICAgaWYgKGNoaWxkLmxpbmVzICYmIGNoaWxk
LmxpbmVzLmxlbmd0aCA+IDUwKSB7CisgICAgICAgICAgICB3aGlsZSAoY2hpbGQubGluZXMubGVu
Z3RoID4gNTApIHsKKyAgICAgICAgICAgICAgdmFyIHNwaWxsZWQgPSBjaGlsZC5saW5lcy5zcGxp
Y2UoY2hpbGQubGluZXMubGVuZ3RoIC0gMjUsIDI1KTsKKyAgICAgICAgICAgICAgdmFyIG5ld2xl
YWYgPSBuZXcgTGVhZkNodW5rKHNwaWxsZWQpOworICAgICAgICAgICAgICBjaGlsZC5oZWlnaHQg
LT0gbmV3bGVhZi5oZWlnaHQ7CisgICAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4uc3BsaWNlKGkg
KyAxLCAwLCBuZXdsZWFmKTsKKyAgICAgICAgICAgICAgbmV3bGVhZi5wYXJlbnQgPSB0aGlzOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5tYXliZVNwaWxsKCk7CisgICAgICAgICAg
fQorICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGF0IC09IHN6OworICAgICAg
fQorICAgIH0sCisgICAgbWF5YmVTcGlsbDogZnVuY3Rpb24oKSB7CisgICAgICBpZiAodGhpcy5j
aGlsZHJlbi5sZW5ndGggPD0gMTApIHJldHVybjsKKyAgICAgIHZhciBtZSA9IHRoaXM7CisgICAg
ICBkbyB7CisgICAgICAgIHZhciBzcGlsbGVkID0gbWUuY2hpbGRyZW4uc3BsaWNlKG1lLmNoaWxk
cmVuLmxlbmd0aCAtIDUsIDUpOworICAgICAgICB2YXIgc2libGluZyA9IG5ldyBCcmFuY2hDaHVu
ayhzcGlsbGVkKTsKKyAgICAgICAgaWYgKCFtZS5wYXJlbnQpIHsgLy8gQmVjb21lIHRoZSBwYXJl
bnQgbm9kZQorICAgICAgICAgIHZhciBjb3B5ID0gbmV3IEJyYW5jaENodW5rKG1lLmNoaWxkcmVu
KTsKKyAgICAgICAgICBjb3B5LnBhcmVudCA9IG1lOworICAgICAgICAgIG1lLmNoaWxkcmVuID0g
W2NvcHksIHNpYmxpbmddOworICAgICAgICAgIG1lID0gY29weTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICBtZS5zaXplIC09IHNpYmxpbmcuc2l6ZTsKKyAgICAgICAgICBtZS5oZWlnaHQg
LT0gc2libGluZy5oZWlnaHQ7CisgICAgICAgICAgdmFyIG15SW5kZXggPSBpbmRleE9mKG1lLnBh
cmVudC5jaGlsZHJlbiwgbWUpOworICAgICAgICAgIG1lLnBhcmVudC5jaGlsZHJlbi5zcGxpY2Uo
bXlJbmRleCArIDEsIDAsIHNpYmxpbmcpOworICAgICAgICB9CisgICAgICAgIHNpYmxpbmcucGFy
ZW50ID0gbWUucGFyZW50OworICAgICAgfSB3aGlsZSAobWUuY2hpbGRyZW4ubGVuZ3RoID4gMTAp
OworICAgICAgbWUucGFyZW50Lm1heWJlU3BpbGwoKTsKKyAgICB9LAorICAgIGl0ZXI6IGZ1bmN0
aW9uKGZyb20sIHRvLCBvcCkgeyB0aGlzLml0ZXJOKGZyb20sIHRvIC0gZnJvbSwgb3ApOyB9LAor
ICAgIGl0ZXJOOiBmdW5jdGlvbihhdCwgbiwgb3ApIHsKKyAgICAgIGZvciAodmFyIGkgPSAwLCBl
ID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkgPCBlOyArK2kpIHsKKyAgICAgICAgdmFyIGNoaWxk
ID0gdGhpcy5jaGlsZHJlbltpXSwgc3ogPSBjaGlsZC5jaHVua1NpemUoKTsKKyAgICAgICAgaWYg
KGF0IDwgc3opIHsKKyAgICAgICAgICB2YXIgdXNlZCA9IE1hdGgubWluKG4sIHN6IC0gYXQpOwor
ICAgICAgICAgIGlmIChjaGlsZC5pdGVyTihhdCwgdXNlZCwgb3ApKSByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICBpZiAoKG4gLT0gdXNlZCkgPT0gMCkgYnJlYWs7CisgICAgICAgICAgYXQgPSAwOwor
ICAgICAgICB9IGVsc2UgYXQgLT0gc3o7CisgICAgICB9CisgICAgfQorICB9OworCisgIGZ1bmN0
aW9uIGdldExpbmVBdChjaHVuaywgbikgeworICAgIHdoaWxlICghY2h1bmsubGluZXMpIHsKKyAg
ICAgIGZvciAodmFyIGkgPSAwOzsgKytpKSB7CisgICAgICAgIHZhciBjaGlsZCA9IGNodW5rLmNo
aWxkcmVuW2ldLCBzeiA9IGNoaWxkLmNodW5rU2l6ZSgpOworICAgICAgICBpZiAobiA8IHN6KSB7
IGNodW5rID0gY2hpbGQ7IGJyZWFrOyB9CisgICAgICAgIG4gLT0gc3o7CisgICAgICB9CisgICAg
fQorICAgIHJldHVybiBjaHVuay5saW5lc1tuXTsKKyAgfQorICBmdW5jdGlvbiBsaW5lTm8obGlu
ZSkgeworICAgIGlmIChsaW5lLnBhcmVudCA9PSBudWxsKSByZXR1cm4gbnVsbDsKKyAgICB2YXIg
Y3VyID0gbGluZS5wYXJlbnQsIG5vID0gaW5kZXhPZihjdXIubGluZXMsIGxpbmUpOworICAgIGZv
ciAodmFyIGNodW5rID0gY3VyLnBhcmVudDsgY2h1bms7IGN1ciA9IGNodW5rLCBjaHVuayA9IGNo
dW5rLnBhcmVudCkgeworICAgICAgZm9yICh2YXIgaSA9IDAsIGUgPSBjaHVuay5jaGlsZHJlbi5s
ZW5ndGg7IDsgKytpKSB7CisgICAgICAgIGlmIChjaHVuay5jaGlsZHJlbltpXSA9PSBjdXIpIGJy
ZWFrOworICAgICAgICBubyArPSBjaHVuay5jaGlsZHJlbltpXS5jaHVua1NpemUoKTsKKyAgICAg
IH0KKyAgICB9CisgICAgcmV0dXJuIG5vOworICB9CisgIGZ1bmN0aW9uIGxpbmVBdEhlaWdodChj
aHVuaywgaCkgeworICAgIHZhciBuID0gMDsKKyAgICBvdXRlcjogZG8geworICAgICAgZm9yICh2
YXIgaSA9IDAsIGUgPSBjaHVuay5jaGlsZHJlbi5sZW5ndGg7IGkgPCBlOyArK2kpIHsKKyAgICAg
ICAgdmFyIGNoaWxkID0gY2h1bmsuY2hpbGRyZW5baV0sIGNoID0gY2hpbGQuaGVpZ2h0OworICAg
ICAgICBpZiAoaCA8IGNoKSB7IGNodW5rID0gY2hpbGQ7IGNvbnRpbnVlIG91dGVyOyB9CisgICAg
ICAgIGggLT0gY2g7CisgICAgICAgIG4gKz0gY2hpbGQuY2h1bmtTaXplKCk7CisgICAgICB9Cisg
ICAgICByZXR1cm4gbjsKKyAgICB9IHdoaWxlICghY2h1bmsubGluZXMpOworICAgIGZvciAodmFy
IGkgPSAwLCBlID0gY2h1bmsubGluZXMubGVuZ3RoOyBpIDwgZTsgKytpKSB7CisgICAgICB2YXIg
bGluZSA9IGNodW5rLmxpbmVzW2ldLCBsaCA9IGxpbmUuaGVpZ2h0OworICAgICAgaWYgKGggPCBs
aCkgYnJlYWs7CisgICAgICBoIC09IGxoOworICAgIH0KKyAgICByZXR1cm4gbiArIGk7CisgIH0K
KyAgZnVuY3Rpb24gaGVpZ2h0QXRMaW5lKGNodW5rLCBuKSB7CisgICAgdmFyIGggPSAwOworICAg
IG91dGVyOiBkbyB7CisgICAgICBmb3IgKHZhciBpID0gMCwgZSA9IGNodW5rLmNoaWxkcmVuLmxl
bmd0aDsgaSA8IGU7ICsraSkgeworICAgICAgICB2YXIgY2hpbGQgPSBjaHVuay5jaGlsZHJlbltp
XSwgc3ogPSBjaGlsZC5jaHVua1NpemUoKTsKKyAgICAgICAgaWYgKG4gPCBzeikgeyBjaHVuayA9
IGNoaWxkOyBjb250aW51ZSBvdXRlcjsgfQorICAgICAgICBuIC09IHN6OworICAgICAgICBoICs9
IGNoaWxkLmhlaWdodDsKKyAgICAgIH0KKyAgICAgIHJldHVybiBoOworICAgIH0gd2hpbGUgKCFj
aHVuay5saW5lcyk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIGggKz0gY2h1bmsu
bGluZXNbaV0uaGVpZ2h0OworICAgIHJldHVybiBoOworICB9CisKKyAgLy8gVGhlIGhpc3Rvcnkg
b2JqZWN0ICdjaHVua3MnIGNoYW5nZXMgdGhhdCBhcmUgbWFkZSBjbG9zZSB0b2dldGhlcgorICAv
LyBhbmQgYXQgYWxtb3N0IHRoZSBzYW1lIHRpbWUgaW50byBiaWdnZXIgdW5kb2FibGUgdW5pdHMu
CisgIGZ1bmN0aW9uIEhpc3RvcnkoKSB7CisgICAgdGhpcy50aW1lID0gMDsKKyAgICB0aGlzLmRv
bmUgPSBbXTsgdGhpcy51bmRvbmUgPSBbXTsKKyAgICB0aGlzLmNvbXBvdW5kID0gMDsKKyAgICB0
aGlzLmNsb3NlZCA9IGZhbHNlOworICB9CisgIEhpc3RvcnkucHJvdG90eXBlID0geworICAgIGFk
ZENoYW5nZTogZnVuY3Rpb24oc3RhcnQsIGFkZGVkLCBvbGQpIHsKKyAgICAgIHRoaXMudW5kb25l
Lmxlbmd0aCA9IDA7CisgICAgICB2YXIgdGltZSA9ICtuZXcgRGF0ZSwgY3VyID0gdGhpcy5kb25l
W3RoaXMuZG9uZS5sZW5ndGggLSAxXSwgbGFzdCA9IGN1ciAmJiBjdXJbY3VyLmxlbmd0aCAtIDFd
OworICAgICAgdmFyIGR0aW1lID0gdGltZSAtIHRoaXMudGltZTsKKworICAgICAgaWYgKHRoaXMu
Y29tcG91bmQgJiYgY3VyICYmICF0aGlzLmNsb3NlZCkgeworICAgICAgICBjdXIucHVzaCh7c3Rh
cnQ6IHN0YXJ0LCBhZGRlZDogYWRkZWQsIG9sZDogb2xkfSk7CisgICAgICB9IGVsc2UgaWYgKGR0
aW1lID4gNDAwIHx8ICFsYXN0IHx8IHRoaXMuY2xvc2VkIHx8CisgICAgICAgICAgICAgICAgIGxh
c3Quc3RhcnQgPiBzdGFydCArIG9sZC5sZW5ndGggfHwgbGFzdC5zdGFydCArIGxhc3QuYWRkZWQg
PCBzdGFydCkgeworICAgICAgICB0aGlzLmRvbmUucHVzaChbe3N0YXJ0OiBzdGFydCwgYWRkZWQ6
IGFkZGVkLCBvbGQ6IG9sZH1dKTsKKyAgICAgICAgdGhpcy5jbG9zZWQgPSBmYWxzZTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIHZhciBzdGFydEJlZm9yZSA9IE1hdGgubWF4KDAsIGxhc3Quc3Rh
cnQgLSBzdGFydCksCisgICAgICAgICAgICBlbmRBZnRlciA9IE1hdGgubWF4KDAsIChzdGFydCAr
IG9sZC5sZW5ndGgpIC0gKGxhc3Quc3RhcnQgKyBsYXN0LmFkZGVkKSk7CisgICAgICAgIGZvciAo
dmFyIGkgPSBzdGFydEJlZm9yZTsgaSA+IDA7IC0taSkgbGFzdC5vbGQudW5zaGlmdChvbGRbaSAt
IDFdKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IGVuZEFmdGVyOyBpID4gMDsgLS1pKSBsYXN0Lm9s
ZC5wdXNoKG9sZFtvbGQubGVuZ3RoIC0gaV0pOworICAgICAgICBpZiAoc3RhcnRCZWZvcmUpIGxh
c3Quc3RhcnQgPSBzdGFydDsKKyAgICAgICAgbGFzdC5hZGRlZCArPSBhZGRlZCAtIChvbGQubGVu
Z3RoIC0gc3RhcnRCZWZvcmUgLSBlbmRBZnRlcik7CisgICAgICB9CisgICAgICB0aGlzLnRpbWUg
PSB0aW1lOworICAgIH0sCisgICAgc3RhcnRDb21wb3VuZDogZnVuY3Rpb24oKSB7CisgICAgICBp
ZiAoIXRoaXMuY29tcG91bmQrKykgdGhpcy5jbG9zZWQgPSB0cnVlOworICAgIH0sCisgICAgZW5k
Q29tcG91bmQ6IGZ1bmN0aW9uKCkgeworICAgICAgaWYgKCEtLXRoaXMuY29tcG91bmQpIHRoaXMu
Y2xvc2VkID0gdHJ1ZTsKKyAgICB9CisgIH07CisKKyAgZnVuY3Rpb24gc3RvcE1ldGhvZCgpIHtl
X3N0b3AodGhpcyk7fQorICAvLyBFbnN1cmUgYW4gZXZlbnQgaGFzIGEgc3RvcCBtZXRob2QuCisg
IGZ1bmN0aW9uIGFkZFN0b3AoZXZlbnQpIHsKKyAgICBpZiAoIWV2ZW50LnN0b3ApIGV2ZW50LnN0
b3AgPSBzdG9wTWV0aG9kOworICAgIHJldHVybiBldmVudDsKKyAgfQorCisgIGZ1bmN0aW9uIGVf
cHJldmVudERlZmF1bHQoZSkgeworICAgIGlmIChlLnByZXZlbnREZWZhdWx0KSBlLnByZXZlbnRE
ZWZhdWx0KCk7CisgICAgZWxzZSBlLnJldHVyblZhbHVlID0gZmFsc2U7CisgIH0KKyAgZnVuY3Rp
b24gZV9zdG9wUHJvcGFnYXRpb24oZSkgeworICAgIGlmIChlLnN0b3BQcm9wYWdhdGlvbikgZS5z
dG9wUHJvcGFnYXRpb24oKTsKKyAgICBlbHNlIGUuY2FuY2VsQnViYmxlID0gdHJ1ZTsKKyAgfQor
ICBmdW5jdGlvbiBlX3N0b3AoZSkge2VfcHJldmVudERlZmF1bHQoZSk7IGVfc3RvcFByb3BhZ2F0
aW9uKGUpO30KKyAgQ29kZU1pcnJvci5lX3N0b3AgPSBlX3N0b3A7CisgIENvZGVNaXJyb3IuZV9w
cmV2ZW50RGVmYXVsdCA9IGVfcHJldmVudERlZmF1bHQ7CisgIENvZGVNaXJyb3IuZV9zdG9wUHJv
cGFnYXRpb24gPSBlX3N0b3BQcm9wYWdhdGlvbjsKKworICBmdW5jdGlvbiBlX3RhcmdldChlKSB7
cmV0dXJuIGUudGFyZ2V0IHx8IGUuc3JjRWxlbWVudDt9CisgIGZ1bmN0aW9uIGVfYnV0dG9uKGUp
IHsKKyAgICB2YXIgYiA9IGUud2hpY2g7CisgICAgaWYgKGIgPT0gbnVsbCkgeworICAgICAgaWYg
KGUuYnV0dG9uICYgMSkgYiA9IDE7CisgICAgICBlbHNlIGlmIChlLmJ1dHRvbiAmIDIpIGIgPSAz
OworICAgICAgZWxzZSBpZiAoZS5idXR0b24gJiA0KSBiID0gMjsKKyAgICB9CisgICAgaWYgKG1h
YyAmJiBlLmN0cmxLZXkgJiYgYiA9PSAxKSBiID0gMzsKKyAgICByZXR1cm4gYjsKKyAgfQorCisg
IC8vIEFsbG93IDNyZC1wYXJ0eSBjb2RlIHRvIG92ZXJyaWRlIGV2ZW50IHByb3BlcnRpZXMgYnkg
YWRkaW5nIGFuIG92ZXJyaWRlCisgIC8vIG9iamVjdCB0byBhbiBldmVudCBvYmplY3QuCisgIGZ1
bmN0aW9uIGVfcHJvcChlLCBwcm9wKSB7CisgICAgdmFyIG92ZXJyaWRkZW4gPSBlLm92ZXJyaWRl
ICYmIGUub3ZlcnJpZGUuaGFzT3duUHJvcGVydHkocHJvcCk7CisgICAgcmV0dXJuIG92ZXJyaWRk
ZW4gPyBlLm92ZXJyaWRlW3Byb3BdIDogZVtwcm9wXTsKKyAgfQorCisgIC8vIEV2ZW50IGhhbmRs
ZXIgcmVnaXN0cmF0aW9uLiBJZiBkaXNjb25uZWN0IGlzIHRydWUsIGl0J2xsIHJldHVybiBhCisg
IC8vIGZ1bmN0aW9uIHRoYXQgdW5yZWdpc3RlcnMgdGhlIGhhbmRsZXIuCisgIGZ1bmN0aW9uIGNv
bm5lY3Qobm9kZSwgdHlwZSwgaGFuZGxlciwgZGlzY29ubmVjdCkgeworICAgIGlmICh0eXBlb2Yg
bm9kZS5hZGRFdmVudExpc3RlbmVyID09ICJmdW5jdGlvbiIpIHsKKyAgICAgIG5vZGUuYWRkRXZl
bnRMaXN0ZW5lcih0eXBlLCBoYW5kbGVyLCBmYWxzZSk7CisgICAgICBpZiAoZGlzY29ubmVjdCkg
cmV0dXJuIGZ1bmN0aW9uKCkge25vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBoYW5kbGVy
LCBmYWxzZSk7fTsKKyAgICB9IGVsc2UgeworICAgICAgdmFyIHdyYXBIYW5kbGVyID0gZnVuY3Rp
b24oZXZlbnQpIHtoYW5kbGVyKGV2ZW50IHx8IHdpbmRvdy5ldmVudCk7fTsKKyAgICAgIG5vZGUu
YXR0YWNoRXZlbnQoIm9uIiArIHR5cGUsIHdyYXBIYW5kbGVyKTsKKyAgICAgIGlmIChkaXNjb25u
ZWN0KSByZXR1cm4gZnVuY3Rpb24oKSB7bm9kZS5kZXRhY2hFdmVudCgib24iICsgdHlwZSwgd3Jh
cEhhbmRsZXIpO307CisgICAgfQorICB9CisgIENvZGVNaXJyb3IuY29ubmVjdCA9IGNvbm5lY3Q7
CisKKyAgZnVuY3Rpb24gRGVsYXllZCgpIHt0aGlzLmlkID0gbnVsbDt9CisgIERlbGF5ZWQucHJv
dG90eXBlID0ge3NldDogZnVuY3Rpb24obXMsIGYpIHtjbGVhclRpbWVvdXQodGhpcy5pZCk7IHRo
aXMuaWQgPSBzZXRUaW1lb3V0KGYsIG1zKTt9fTsKKworICB2YXIgUGFzcyA9IENvZGVNaXJyb3Iu
UGFzcyA9IHt0b1N0cmluZzogZnVuY3Rpb24oKXtyZXR1cm4gIkNvZGVNaXJyb3IuUGFzcyI7fX07
CisKKyAgLy8gRGV0ZWN0IGRyYWctYW5kLWRyb3AKKyAgdmFyIGRyYWdBbmREcm9wID0gZnVuY3Rp
b24oKSB7CisgICAgLy8gVGhlcmUgaXMgKnNvbWUqIGtpbmQgb2YgZHJhZy1hbmQtZHJvcCBzdXBw
b3J0IGluIElFNi04LCBidXQgSQorICAgIC8vIGNvdWxkbid0IGdldCBpdCB0byB3b3JrIHlldC4K
KyAgICBpZiAoaWVfbHQ5KSByZXR1cm4gZmFsc2U7CisgICAgdmFyIGRpdiA9IGVsdCgnZGl2Jyk7
CisgICAgcmV0dXJuICJkcmFnZ2FibGUiIGluIGRpdiB8fCAiZHJhZ0Ryb3AiIGluIGRpdjsKKyAg
fSgpOworCisgIC8vIEZlYXR1cmUtZGV0ZWN0IHdoZXRoZXIgbmV3bGluZXMgaW4gdGV4dGFyZWFz
IGFyZSBjb252ZXJ0ZWQgdG8gXHJcbgorICB2YXIgbGluZVNlcCA9IGZ1bmN0aW9uICgpIHsKKyAg
ICB2YXIgdGUgPSBlbHQoInRleHRhcmVhIik7CisgICAgdGUudmFsdWUgPSAiZm9vXG5iYXIiOwor
ICAgIGlmICh0ZS52YWx1ZS5pbmRleE9mKCJcciIpID4gLTEpIHJldHVybiAiXHJcbiI7CisgICAg
cmV0dXJuICJcbiI7CisgIH0oKTsKKworICAvLyBGb3IgYSByZWFzb24gSSBoYXZlIHlldCB0byBm
aWd1cmUgb3V0LCBzb21lIGJyb3dzZXJzIGRpc2FsbG93CisgIC8vIHdvcmQgd3JhcHBpbmcgYmV0
d2VlbiBjZXJ0YWluIGNoYXJhY3RlcnMgKm9ubHkqIGlmIGEgbmV3IGlubGluZQorICAvLyBlbGVt
ZW50IGlzIHN0YXJ0ZWQgYmV0d2VlbiB0aGVtLiBUaGlzIG1ha2VzIGl0IGhhcmQgdG8gcmVsaWFi
bHkKKyAgLy8gbWVhc3VyZSB0aGUgcG9zaXRpb24gb2YgdGhpbmdzLCBzaW5jZSB0aGF0IHJlcXVp
cmVzIGluc2VydGluZyBhbgorICAvLyBleHRyYSBzcGFuLiBUaGlzIHRlcnJpYmx5IGZyYWdpbGUg
c2V0IG9mIHJlZ2V4cHMgbWF0Y2hlcyB0aGUKKyAgLy8gY2hhcmFjdGVyIGNvbWJpbmF0aW9ucyB0
aGF0IHN1ZmZlciBmcm9tIHRoaXMgcGhlbm9tZW5vbiBvbiB0aGUKKyAgLy8gdmFyaW91cyBicm93
c2Vycy4KKyAgdmFyIHNwYW5BZmZlY3RzV3JhcHBpbmcgPSAvXiQvOyAvLyBXb24ndCBtYXRjaCBh
bnkgdHdvLWNoYXJhY3RlciBzdHJpbmcKKyAgaWYgKGdlY2tvKSBzcGFuQWZmZWN0c1dyYXBwaW5n
ID0gLyQnLzsKKyAgZWxzZSBpZiAoc2FmYXJpKSBzcGFuQWZmZWN0c1dyYXBwaW5nID0gL1wtW14g
XC0/XXxcP1teICEnXCJcKSwuXC1cLzo7XD9cXVx9XS87CisgIGVsc2UgaWYgKGNocm9tZSkgc3Bh
bkFmZmVjdHNXcmFwcGluZyA9IC9cLVteIFwtXC4/XXxcP1teIFwtXC4/XF1cfTo7ISdcIlwpLFwv
XXxbXC4hXCIjJiVcKSorLDo7PT5cXXxcfX5dW1woXHtcWzxdfFwkJy87CisKKyAgLy8gQ291bnRz
IHRoZSBjb2x1bW4gb2Zmc2V0IGluIGEgc3RyaW5nLCB0YWtpbmcgdGFicyBpbnRvIGFjY291bnQu
CisgIC8vIFVzZWQgbW9zdGx5IHRvIGZpbmQgaW5kZW50YXRpb24uCisgIGZ1bmN0aW9uIGNvdW50
Q29sdW1uKHN0cmluZywgZW5kLCB0YWJTaXplKSB7CisgICAgaWYgKGVuZCA9PSBudWxsKSB7Cisg
ICAgICBlbmQgPSBzdHJpbmcuc2VhcmNoKC9bXlxzXHUwMGEwXS8pOworICAgICAgaWYgKGVuZCA9
PSAtMSkgZW5kID0gc3RyaW5nLmxlbmd0aDsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDAsIG4g
PSAwOyBpIDwgZW5kOyArK2kpIHsKKyAgICAgIGlmIChzdHJpbmcuY2hhckF0KGkpID09ICJcdCIp
IG4gKz0gdGFiU2l6ZSAtIChuICUgdGFiU2l6ZSk7CisgICAgICBlbHNlICsrbjsKKyAgICB9Cisg
ICAgcmV0dXJuIG47CisgIH0KKworICBmdW5jdGlvbiBjb21wdXRlZFN0eWxlKGVsdCkgeworICAg
IGlmIChlbHQuY3VycmVudFN0eWxlKSByZXR1cm4gZWx0LmN1cnJlbnRTdHlsZTsKKyAgICByZXR1
cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWx0LCBudWxsKTsKKyAgfQorCisgIGZ1bmN0aW9u
IGVsdE9mZnNldChub2RlLCBzY3JlZW4pIHsKKyAgICAvLyBUYWtlIHRoZSBwYXJ0cyBvZiBib3Vu
ZGluZyBjbGllbnQgcmVjdCB0aGF0IHdlIGFyZSBpbnRlcmVzdGVkIGluIHNvIHdlIGFyZSBhYmxl
IHRvIGVkaXQgaWYgbmVlZCBiZSwKKyAgICAvLyBzaW5jZSB0aGUgcmV0dXJuZWQgdmFsdWUgY2Fu
bm90IGJlIGNoYW5nZWQgZXh0ZXJuYWxseSAodGhleSBhcmUga2VwdCBpbiBzeW5jIGFzIHRoZSBl
bGVtZW50IG1vdmVzIHdpdGhpbiB0aGUgcGFnZSkKKyAgICB0cnkgeyB2YXIgYm94ID0gbm9kZS5n
ZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsgYm94ID0geyB0b3A6IGJveC50b3AsIGxlZnQ6IGJveC5s
ZWZ0IH07IH0KKyAgICBjYXRjaChlKSB7IGJveCA9IHt0b3A6IDAsIGxlZnQ6IDB9OyB9CisgICAg
aWYgKCFzY3JlZW4pIHsKKyAgICAgIC8vIEdldCB0aGUgdG9wbGV2ZWwgc2Nyb2xsLCB3b3JraW5n
IGFyb3VuZCBicm93c2VyIGRpZmZlcmVuY2VzLgorICAgICAgaWYgKHdpbmRvdy5wYWdlWU9mZnNl
dCA9PSBudWxsKSB7CisgICAgICAgIHZhciB0ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50IHx8
IGRvY3VtZW50LmJvZHkucGFyZW50Tm9kZTsKKyAgICAgICAgaWYgKHQuc2Nyb2xsVG9wID09IG51
bGwpIHQgPSBkb2N1bWVudC5ib2R5OworICAgICAgICBib3gudG9wICs9IHQuc2Nyb2xsVG9wOyBi
b3gubGVmdCArPSB0LnNjcm9sbExlZnQ7CisgICAgICB9IGVsc2UgeworICAgICAgICBib3gudG9w
ICs9IHdpbmRvdy5wYWdlWU9mZnNldDsgYm94LmxlZnQgKz0gd2luZG93LnBhZ2VYT2Zmc2V0Owor
ICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gYm94OworICB9CisKKyAgLy8gR2V0IGEgbm9kZSdz
IHRleHQgY29udGVudC4KKyAgZnVuY3Rpb24gZWx0VGV4dChub2RlKSB7CisgICAgcmV0dXJuIG5v
ZGUudGV4dENvbnRlbnQgfHwgbm9kZS5pbm5lclRleHQgfHwgbm9kZS5ub2RlVmFsdWUgfHwgIiI7
CisgIH0KKyAgZnVuY3Rpb24gc2VsZWN0SW5wdXQobm9kZSkgeworICAgIGlmIChpb3MpIHsgLy8g
TW9iaWxlIFNhZmFyaSBhcHBhcmVudGx5IGhhcyBhIGJ1ZyB3aGVyZSBzZWxlY3QoKSBpcyBicm9r
ZW4uCisgICAgICBub2RlLnNlbGVjdGlvblN0YXJ0ID0gMDsKKyAgICAgIG5vZGUuc2VsZWN0aW9u
RW5kID0gbm9kZS52YWx1ZS5sZW5ndGg7CisgICAgfSBlbHNlIG5vZGUuc2VsZWN0KCk7CisgIH0K
KworICAvLyBPcGVyYXRpb25zIG9uIHtsaW5lLCBjaH0gb2JqZWN0cy4KKyAgZnVuY3Rpb24gcG9z
RXEoYSwgYikge3JldHVybiBhLmxpbmUgPT0gYi5saW5lICYmIGEuY2ggPT0gYi5jaDt9CisgIGZ1
bmN0aW9uIHBvc0xlc3MoYSwgYikge3JldHVybiBhLmxpbmUgPCBiLmxpbmUgfHwgKGEubGluZSA9
PSBiLmxpbmUgJiYgYS5jaCA8IGIuY2gpO30KKyAgZnVuY3Rpb24gY29weVBvcyh4KSB7cmV0dXJu
IHtsaW5lOiB4LmxpbmUsIGNoOiB4LmNofTt9CisKKyAgZnVuY3Rpb24gZWx0KHRhZywgY29udGVu
dCwgY2xhc3NOYW1lLCBzdHlsZSkgeworICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCh0YWcpOworICAgIGlmIChjbGFzc05hbWUpIGUuY2xhc3NOYW1lID0gY2xhc3NOYW1lOworICAg
IGlmIChzdHlsZSkgZS5zdHlsZS5jc3NUZXh0ID0gc3R5bGU7CisgICAgaWYgKHR5cGVvZiBjb250
ZW50ID09ICJzdHJpbmciKSBzZXRUZXh0Q29udGVudChlLCBjb250ZW50KTsKKyAgICBlbHNlIGlm
IChjb250ZW50KSBmb3IgKHZhciBpID0gMDsgaSA8IGNvbnRlbnQubGVuZ3RoOyArK2kpIGUuYXBw
ZW5kQ2hpbGQoY29udGVudFtpXSk7CisgICAgcmV0dXJuIGU7CisgIH0KKyAgZnVuY3Rpb24gcmVt
b3ZlQ2hpbGRyZW4oZSkgeworICAgIGUuaW5uZXJIVE1MID0gIiI7CisgICAgcmV0dXJuIGU7Cisg
IH0KKyAgZnVuY3Rpb24gcmVtb3ZlQ2hpbGRyZW5BbmRBZGQocGFyZW50LCBlKSB7CisgICAgcmVt
b3ZlQ2hpbGRyZW4ocGFyZW50KS5hcHBlbmRDaGlsZChlKTsKKyAgfQorICBmdW5jdGlvbiBzZXRU
ZXh0Q29udGVudChlLCBzdHIpIHsKKyAgICBpZiAoaWVfbHQ5KSB7CisgICAgICBlLmlubmVySFRN
TCA9ICIiOworICAgICAgZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIp
KTsKKyAgICB9IGVsc2UgZS50ZXh0Q29udGVudCA9IHN0cjsKKyAgfQorICBDb2RlTWlycm9yLnNl
dFRleHRDb250ZW50ID0gc2V0VGV4dENvbnRlbnQ7CisKKyAgLy8gVXNlZCB0byBwb3NpdGlvbiB0
aGUgY3Vyc29yIGFmdGVyIGFuIHVuZG8vcmVkbyBieSBmaW5kaW5nIHRoZQorICAvLyBsYXN0IGVk
aXRlZCBjaGFyYWN0ZXIuCisgIGZ1bmN0aW9uIGVkaXRFbmQoZnJvbSwgdG8pIHsKKyAgICBpZiAo
IXRvKSByZXR1cm4gMDsKKyAgICBpZiAoIWZyb20pIHJldHVybiB0by5sZW5ndGg7CisgICAgZm9y
ICh2YXIgaSA9IGZyb20ubGVuZ3RoLCBqID0gdG8ubGVuZ3RoOyBpID49IDAgJiYgaiA+PSAwOyAt
LWksIC0taikKKyAgICAgIGlmIChmcm9tLmNoYXJBdChpKSAhPSB0by5jaGFyQXQoaikpIGJyZWFr
OworICAgIHJldHVybiBqICsgMTsKKyAgfQorCisgIGZ1bmN0aW9uIGluZGV4T2YoY29sbGVjdGlv
biwgZWx0KSB7CisgICAgaWYgKGNvbGxlY3Rpb24uaW5kZXhPZikgcmV0dXJuIGNvbGxlY3Rpb24u
aW5kZXhPZihlbHQpOworICAgIGZvciAodmFyIGkgPSAwLCBlID0gY29sbGVjdGlvbi5sZW5ndGg7
IGkgPCBlOyArK2kpCisgICAgICBpZiAoY29sbGVjdGlvbltpXSA9PSBlbHQpIHJldHVybiBpOwor
ICAgIHJldHVybiAtMTsKKyAgfQorICBmdW5jdGlvbiBpc1dvcmRDaGFyKGNoKSB7CisgICAgcmV0
dXJuIC9cdy8udGVzdChjaCkgfHwgY2gudG9VcHBlckNhc2UoKSAhPSBjaC50b0xvd2VyQ2FzZSgp
OworICB9CisKKyAgLy8gU2VlIGlmICIiLnNwbGl0IGlzIHRoZSBicm9rZW4gSUUgdmVyc2lvbiwg
aWYgc28sIHByb3ZpZGUgYW4KKyAgLy8gYWx0ZXJuYXRpdmUgd2F5IHRvIHNwbGl0IGxpbmVzLgor
ICB2YXIgc3BsaXRMaW5lcyA9ICJcblxuYiIuc3BsaXQoL1xuLykubGVuZ3RoICE9IDMgPyBmdW5j
dGlvbihzdHJpbmcpIHsKKyAgICB2YXIgcG9zID0gMCwgcmVzdWx0ID0gW10sIGwgPSBzdHJpbmcu
bGVuZ3RoOworICAgIHdoaWxlIChwb3MgPD0gbCkgeworICAgICAgdmFyIG5sID0gc3RyaW5nLmlu
ZGV4T2YoIlxuIiwgcG9zKTsKKyAgICAgIGlmIChubCA9PSAtMSkgbmwgPSBzdHJpbmcubGVuZ3Ro
OworICAgICAgdmFyIGxpbmUgPSBzdHJpbmcuc2xpY2UocG9zLCBzdHJpbmcuY2hhckF0KG5sIC0g
MSkgPT0gIlxyIiA/IG5sIC0gMSA6IG5sKTsKKyAgICAgIHZhciBydCA9IGxpbmUuaW5kZXhPZigi
XHIiKTsKKyAgICAgIGlmIChydCAhPSAtMSkgeworICAgICAgICByZXN1bHQucHVzaChsaW5lLnNs
aWNlKDAsIHJ0KSk7CisgICAgICAgIHBvcyArPSBydCArIDE7CisgICAgICB9IGVsc2UgeworICAg
ICAgICByZXN1bHQucHVzaChsaW5lKTsKKyAgICAgICAgcG9zID0gbmwgKyAxOworICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworICB9IDogZnVuY3Rpb24oc3RyaW5nKXtyZXR1cm4g
c3RyaW5nLnNwbGl0KC9cclxuP3xcbi8pO307CisgIENvZGVNaXJyb3Iuc3BsaXRMaW5lcyA9IHNw
bGl0TGluZXM7CisKKyAgdmFyIGhhc1NlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24gPyBm
dW5jdGlvbih0ZSkgeworICAgIHRyeSB7IHJldHVybiB0ZS5zZWxlY3Rpb25TdGFydCAhPSB0ZS5z
ZWxlY3Rpb25FbmQ7IH0KKyAgICBjYXRjaChlKSB7IHJldHVybiBmYWxzZTsgfQorICB9IDogZnVu
Y3Rpb24odGUpIHsKKyAgICB0cnkge3ZhciByYW5nZSA9IHRlLm93bmVyRG9jdW1lbnQuc2VsZWN0
aW9uLmNyZWF0ZVJhbmdlKCk7fQorICAgIGNhdGNoKGUpIHt9CisgICAgaWYgKCFyYW5nZSB8fCBy
YW5nZS5wYXJlbnRFbGVtZW50KCkgIT0gdGUpIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gcmFu
Z2UuY29tcGFyZUVuZFBvaW50cygiU3RhcnRUb0VuZCIsIHJhbmdlKSAhPSAwOworICB9OworCisg
IENvZGVNaXJyb3IuZGVmaW5lTW9kZSgibnVsbCIsIGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7
dG9rZW46IGZ1bmN0aW9uKHN0cmVhbSkge3N0cmVhbS5za2lwVG9FbmQoKTt9fTsKKyAgfSk7Cisg
IENvZGVNaXJyb3IuZGVmaW5lTUlNRSgidGV4dC9wbGFpbiIsICJudWxsIik7CisKKyAgdmFyIGtl
eU5hbWVzID0gezM6ICJFbnRlciIsIDg6ICJCYWNrc3BhY2UiLCA5OiAiVGFiIiwgMTM6ICJFbnRl
ciIsIDE2OiAiU2hpZnQiLCAxNzogIkN0cmwiLCAxODogIkFsdCIsCisgICAgICAgICAgICAgICAg
ICAxOTogIlBhdXNlIiwgMjA6ICJDYXBzTG9jayIsIDI3OiAiRXNjIiwgMzI6ICJTcGFjZSIsIDMz
OiAiUGFnZVVwIiwgMzQ6ICJQYWdlRG93biIsIDM1OiAiRW5kIiwKKyAgICAgICAgICAgICAgICAg
IDM2OiAiSG9tZSIsIDM3OiAiTGVmdCIsIDM4OiAiVXAiLCAzOTogIlJpZ2h0IiwgNDA6ICJEb3du
IiwgNDQ6ICJQcmludFNjcm4iLCA0NTogIkluc2VydCIsCisgICAgICAgICAgICAgICAgICA0Njog
IkRlbGV0ZSIsIDU5OiAiOyIsIDkxOiAiTW9kIiwgOTI6ICJNb2QiLCA5MzogIk1vZCIsIDEwOTog
Ii0iLCAxMDc6ICI9IiwgMTI3OiAiRGVsZXRlIiwKKyAgICAgICAgICAgICAgICAgIDE4NjogIjsi
LCAxODc6ICI9IiwgMTg4OiAiLCIsIDE4OTogIi0iLCAxOTA6ICIuIiwgMTkxOiAiLyIsIDE5Mjog
ImAiLCAyMTk6ICJbIiwgMjIwOiAiXFwiLAorICAgICAgICAgICAgICAgICAgMjIxOiAiXSIsIDIy
MjogIiciLCA2MzI3NjogIlBhZ2VVcCIsIDYzMjc3OiAiUGFnZURvd24iLCA2MzI3NTogIkVuZCIs
IDYzMjczOiAiSG9tZSIsCisgICAgICAgICAgICAgICAgICA2MzIzNDogIkxlZnQiLCA2MzIzMjog
IlVwIiwgNjMyMzU6ICJSaWdodCIsIDYzMjMzOiAiRG93biIsIDYzMzAyOiAiSW5zZXJ0IiwgNjMy
NzI6ICJEZWxldGUifTsKKyAgQ29kZU1pcnJvci5rZXlOYW1lcyA9IGtleU5hbWVzOworICAoZnVu
Y3Rpb24oKSB7CisgICAgLy8gTnVtYmVyIGtleXMKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
OyBpKyspIGtleU5hbWVzW2kgKyA0OF0gPSBTdHJpbmcoaSk7CisgICAgLy8gQWxwaGFiZXRpYyBr
ZXlzCisgICAgZm9yICh2YXIgaSA9IDY1OyBpIDw9IDkwOyBpKyspIGtleU5hbWVzW2ldID0gU3Ry
aW5nLmZyb21DaGFyQ29kZShpKTsKKyAgICAvLyBGdW5jdGlvbiBrZXlzCisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPD0gMTI7IGkrKykga2V5TmFtZXNbaSArIDExMV0gPSBrZXlOYW1lc1tpICsgNjMy
MzVdID0gIkYiICsgaTsKKyAgfSkoKTsKKworICByZXR1cm4gQ29kZU1pcnJvcjsKK30pKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2Nzcy5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvY3NzLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiYjNi
Y2QxOTZkZjc2YzQyNjcyYmExODdkNTFiNWZkNmE4YmJmYjIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2Nzcy5qcwpAQCAtMCwwICsxLDE3NCBA
QAorQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJjc3MiLCBmdW5jdGlvbihjb25maWcpIHsKKyAgdmFy
IGluZGVudFVuaXQgPSBjb25maWcuaW5kZW50VW5pdCwgdHlwZTsKKworICB2YXIga2V5d29yZHMg
PSBrZXlTZXQoWyJhYm92ZSIsICJhYnNvbHV0ZSIsICJhY3RpdmVib3JkZXIiLCAiYWN0aXZlY2Fw
dGlvbiIsICJhZmFyIiwgImFmdGVyLXdoaXRlLXNwYWNlIiwgImFoZWFkIiwgImFsaWFzIiwgImFs
bCIsICJhbGwtc2Nyb2xsIiwKKyAgICAiYWx0ZXJuYXRlIiwgImFsd2F5cyIsICJhbWhhcmljIiwg
ImFtaGFyaWMtYWJlZ2VkZSIsICJhbnRpYWxpYXNlZCIsICJhcHB3b3Jrc3BhY2UiLCAiYXJhYmlj
LWluZGljIiwgImFybWVuaWFuIiwgImFzdGVyaXNrcyIsCisgICAgImF1dG8iLCAiYXZvaWQiLCAi
YmFja2dyb3VuZCIsICJiYWNrd2FyZHMiLCAiYmFzZWxpbmUiLCAiYmVsb3ciLCAiYmlkaS1vdmVy
cmlkZSIsICJiaW5hcnkiLCAiYmVuZ2FsaSIsICJibGluayIsCisgICAgImJsb2NrIiwgImJsb2Nr
LWF4aXMiLCAiYm9sZCIsICJib2xkZXIiLCAiYm9yZGVyIiwgImJvcmRlci1ib3giLCAiYm90aCIs
ICJib3R0b20iLCAiYnJlYWstYWxsIiwgImJyZWFrLXdvcmQiLCAiYnV0dG9uIiwKKyAgICAiYnV0
dG9uLWJldmVsIiwgImJ1dHRvbmZhY2UiLCAiYnV0dG9uaGlnaGxpZ2h0IiwgImJ1dHRvbnNoYWRv
dyIsICJidXR0b250ZXh0IiwgImNhbWJvZGlhbiIsICJjYXBpdGFsaXplIiwgImNhcHMtbG9jay1p
bmRpY2F0b3IiLAorICAgICJjYXB0aW9uIiwgImNhcHRpb250ZXh0IiwgImNhcmV0IiwgImNlbGwi
LCAiY2VudGVyIiwgImNoZWNrYm94IiwgImNpcmNsZSIsICJjamstZWFydGhseS1icmFuY2giLCAi
Y2prLWhlYXZlbmx5LXN0ZW0iLCAiY2prLWlkZW9ncmFwaGljIiwKKyAgICAiY2xlYXIiLCAiY2xp
cCIsICJjbG9zZS1xdW90ZSIsICJjb2wtcmVzaXplIiwgImNvbGxhcHNlIiwgImNvbXBhY3QiLCAi
Y29uZGVuc2VkIiwgImNvbnRhaW4iLCAiY29udGVudCIsICJjb250ZW50LWJveCIsICJjb250ZXh0
LW1lbnUiLAorICAgICJjb250aW51b3VzIiwgImNvcHkiLCAiY292ZXIiLCAiY3JvcCIsICJjcm9z
cyIsICJjcm9zc2hhaXIiLCAiY3VycmVudGNvbG9yIiwgImN1cnNpdmUiLCAiZGFzaGVkIiwgImRl
Y2ltYWwiLCAiZGVjaW1hbC1sZWFkaW5nLXplcm8iLCAiZGVmYXVsdCIsCisgICAgImRlZmF1bHQt
YnV0dG9uIiwgImRlc3RpbmF0aW9uLWF0b3AiLCAiZGVzdGluYXRpb24taW4iLCAiZGVzdGluYXRp
b24tb3V0IiwgImRlc3RpbmF0aW9uLW92ZXIiLCAiZGV2YW5hZ2FyaSIsICJkaXNjIiwgImRpc2Nh
cmQiLCAiZG9jdW1lbnQiLAorICAgICJkb3QtZGFzaCIsICJkb3QtZG90LWRhc2giLCAiZG90dGVk
IiwgImRvdWJsZSIsICJkb3duIiwgImUtcmVzaXplIiwgImVhc2UiLCAiZWFzZS1pbiIsICJlYXNl
LWluLW91dCIsICJlYXNlLW91dCIsICJlbGVtZW50IiwKKyAgICAiZWxsaXBzaXMiLCAiZW1iZWQi
LCAiZW5kIiwgImV0aGlvcGljIiwgImV0aGlvcGljLWFiZWdlZGUiLCAiZXRoaW9waWMtYWJlZ2Vk
ZS1hbS1ldCIsICJldGhpb3BpYy1hYmVnZWRlLWdleiIsCisgICAgImV0aGlvcGljLWFiZWdlZGUt
dGktZXIiLCAiZXRoaW9waWMtYWJlZ2VkZS10aS1ldCIsICJldGhpb3BpYy1oYWxlaGFtZS1hYS1l
ciIsICJldGhpb3BpYy1oYWxlaGFtZS1hYS1ldCIsCisgICAgImV0aGlvcGljLWhhbGVoYW1lLWFt
LWV0IiwgImV0aGlvcGljLWhhbGVoYW1lLWdleiIsICJldGhpb3BpYy1oYWxlaGFtZS1vbS1ldCIs
ICJldGhpb3BpYy1oYWxlaGFtZS1zaWQtZXQiLAorICAgICJldGhpb3BpYy1oYWxlaGFtZS1zby1l
dCIsICJldGhpb3BpYy1oYWxlaGFtZS10aS1lciIsICJldGhpb3BpYy1oYWxlaGFtZS10aS1ldCIs
ICJldGhpb3BpYy1oYWxlaGFtZS10aWciLCAiZXctcmVzaXplIiwgImV4cGFuZGVkIiwKKyAgICAi
ZXh0cmEtY29uZGVuc2VkIiwgImV4dHJhLWV4cGFuZGVkIiwgImZhbnRhc3kiLCAiZmFzdCIsICJm
aWxsIiwgImZpeGVkIiwgImZsYXQiLCAiZm9vdG5vdGVzIiwgImZvcndhcmRzIiwgImZyb20iLCAi
Z2VvbWV0cmljUHJlY2lzaW9uIiwKKyAgICAiZ2VvcmdpYW4iLCAiZ3JheXRleHQiLCAiZ3Jvb3Zl
IiwgImd1amFyYXRpIiwgImd1cm11a2hpIiwgImhhbmQiLCAiaGFuZ3VsIiwgImhhbmd1bC1jb25z
b25hbnQiLCAiaGVicmV3IiwgImhlbHAiLAorICAgICJoaWRkZW4iLCAiaGlkZSIsICJoaWdoZXIi
LCAiaGlnaGxpZ2h0IiwgImhpZ2hsaWdodHRleHQiLCAiaGlyYWdhbmEiLCAiaGlyYWdhbmEtaXJv
aGEiLCAiaG9yaXpvbnRhbCIsICJoc2wiLCAiaHNsYSIsICJpY29uIiwgImlnbm9yZSIsCisgICAg
ImluYWN0aXZlYm9yZGVyIiwgImluYWN0aXZlY2FwdGlvbiIsICJpbmFjdGl2ZWNhcHRpb250ZXh0
IiwgImluZmluaXRlIiwgImluZm9iYWNrZ3JvdW5kIiwgImluZm90ZXh0IiwgImluaGVyaXQiLCAi
aW5pdGlhbCIsICJpbmxpbmUiLAorICAgICJpbmxpbmUtYXhpcyIsICJpbmxpbmUtYmxvY2siLCAi
aW5saW5lLXRhYmxlIiwgImluc2V0IiwgImluc2lkZSIsICJpbnRyaW5zaWMiLCAiaW52ZXJ0Iiwg
Iml0YWxpYyIsICJqdXN0aWZ5IiwgImthbm5hZGEiLCAia2F0YWthbmEiLAorICAgICJrYXRha2Fu
YS1pcm9oYSIsICJraG1lciIsICJsYW5kc2NhcGUiLCAibGFvIiwgImxhcmdlIiwgImxhcmdlciIs
ICJsZWZ0IiwgImxldmVsIiwgImxpZ2h0ZXIiLCAibGluZS10aHJvdWdoIiwgImxpbmVhciIsICJs
aW5lcyIsCisgICAgImxpc3QtaXRlbSIsICJsaXN0Ym94IiwgImxpc3RpdGVtIiwgImxvY2FsIiwg
ImxvZ2ljYWwiLCAibG91ZCIsICJsb3dlciIsICJsb3dlci1hbHBoYSIsICJsb3dlci1hcm1lbmlh
biIsICJsb3dlci1ncmVlayIsCisgICAgImxvd2VyLWhleGFkZWNpbWFsIiwgImxvd2VyLWxhdGlu
IiwgImxvd2VyLW5vcndlZ2lhbiIsICJsb3dlci1yb21hbiIsICJsb3dlcmNhc2UiLCAibHRyIiwg
Im1hbGF5YWxhbSIsICJtYXRjaCIsICJtZWRpYS1jb250cm9scy1iYWNrZ3JvdW5kIiwKKyAgICAi
bWVkaWEtY3VycmVudC10aW1lLWRpc3BsYXkiLCAibWVkaWEtZnVsbHNjcmVlbi1idXR0b24iLCAi
bWVkaWEtbXV0ZS1idXR0b24iLCAibWVkaWEtcGxheS1idXR0b24iLCAibWVkaWEtcmV0dXJuLXRv
LXJlYWx0aW1lLWJ1dHRvbiIsCisgICAgIm1lZGlhLXJld2luZC1idXR0b24iLCAibWVkaWEtc2Vl
ay1iYWNrLWJ1dHRvbiIsICJtZWRpYS1zZWVrLWZvcndhcmQtYnV0dG9uIiwgIm1lZGlhLXNsaWRl
ciIsICJtZWRpYS1zbGlkZXJ0aHVtYiIsICJtZWRpYS10aW1lLXJlbWFpbmluZy1kaXNwbGF5IiwK
KyAgICAibWVkaWEtdm9sdW1lLXNsaWRlciIsICJtZWRpYS12b2x1bWUtc2xpZGVyLWNvbnRhaW5l
ciIsICJtZWRpYS12b2x1bWUtc2xpZGVydGh1bWIiLCAibWVkaXVtIiwgIm1lbnUiLCAibWVudWxp
c3QiLCAibWVudWxpc3QtYnV0dG9uIiwKKyAgICAibWVudWxpc3QtdGV4dCIsICJtZW51bGlzdC10
ZXh0ZmllbGQiLCAibWVudXRleHQiLCAibWVzc2FnZS1ib3giLCAibWlkZGxlIiwgIm1pbi1pbnRy
aW5zaWMiLCAibWl4IiwgIm1vbmdvbGlhbiIsICJtb25vc3BhY2UiLCAibW92ZSIsICJtdWx0aXBs
ZSIsCisgICAgIm15YW5tYXIiLCAibi1yZXNpemUiLCAibmFycm93ZXIiLCAibmF2eSIsICJuZS1y
ZXNpemUiLCAibmVzdy1yZXNpemUiLCAibm8tY2xvc2UtcXVvdGUiLCAibm8tZHJvcCIsICJuby1v
cGVuLXF1b3RlIiwgIm5vLXJlcGVhdCIsICJub25lIiwKKyAgICAibm9ybWFsIiwgIm5vdC1hbGxv
d2VkIiwgIm5vd3JhcCIsICJucy1yZXNpemUiLCAibnctcmVzaXplIiwgIm53c2UtcmVzaXplIiwg
Im9ibGlxdWUiLCAib2N0YWwiLCAib3Blbi1xdW90ZSIsICJvcHRpbWl6ZUxlZ2liaWxpdHkiLAor
ICAgICJvcHRpbWl6ZVNwZWVkIiwgIm9yaXlhIiwgIm9yb21vIiwgIm91dHNldCIsICJvdXRzaWRl
IiwgIm92ZXJsYXkiLCAib3ZlcmxpbmUiLCAicGFkZGluZyIsICJwYWRkaW5nLWJveCIsICJwYWlu
dGVkIiwgInBhdXNlZCIsCisgICAgInBlcnNpYW4iLCAicGx1cy1kYXJrZXIiLCAicGx1cy1saWdo
dGVyIiwgInBvaW50ZXIiLCAicG9ydHJhaXQiLCAicHJlIiwgInByZS1saW5lIiwgInByZS13cmFw
IiwgInByZXNlcnZlLTNkIiwgInByb2dyZXNzIiwKKyAgICAicHVzaC1idXR0b24iLCAicmFkaW8i
LCAicmVhZC1vbmx5IiwgInJlYWQtd3JpdGUiLCAicmVhZC13cml0ZS1wbGFpbnRleHQtb25seSIs
ICJyZWxhdGl2ZSIsICJyZXBlYXQiLCAicmVwZWF0LXgiLAorICAgICJyZXBlYXQteSIsICJyZXNl
dCIsICJyZXZlcnNlIiwgInJnYiIsICJyZ2JhIiwgInJpZGdlIiwgInJpZ2h0IiwgInJvdW5kIiwg
InJvdy1yZXNpemUiLCAicnRsIiwgInJ1bi1pbiIsICJydW5uaW5nIiwgInMtcmVzaXplIiwgInNh
bnMtc2VyaWYiLAorICAgICJzY3JvbGwiLCAic2Nyb2xsYmFyIiwgInNlLXJlc2l6ZSIsICJzZWFy
Y2hmaWVsZCIsICJzZWFyY2hmaWVsZC1jYW5jZWwtYnV0dG9uIiwgInNlYXJjaGZpZWxkLWRlY29y
YXRpb24iLCAic2VhcmNoZmllbGQtcmVzdWx0cy1idXR0b24iLAorICAgICJzZWFyY2hmaWVsZC1y
ZXN1bHRzLWRlY29yYXRpb24iLCAic2VtaS1jb25kZW5zZWQiLCAic2VtaS1leHBhbmRlZCIsICJz
ZXBhcmF0ZSIsICJzZXJpZiIsICJzaG93IiwgInNpZGFtYSIsICJzaW5nbGUiLAorICAgICJza2lw
LXdoaXRlLXNwYWNlIiwgInNsaWRlIiwgInNsaWRlci1ob3Jpem9udGFsIiwgInNsaWRlci12ZXJ0
aWNhbCIsICJzbGlkZXJ0aHVtYi1ob3Jpem9udGFsIiwgInNsaWRlcnRodW1iLXZlcnRpY2FsIiwg
InNsb3ciLAorICAgICJzbWFsbCIsICJzbWFsbC1jYXBzIiwgInNtYWxsLWNhcHRpb24iLCAic21h
bGxlciIsICJzb2xpZCIsICJzb21hbGkiLCAic291cmNlLWF0b3AiLCAic291cmNlLWluIiwgInNv
dXJjZS1vdXQiLCAic291cmNlLW92ZXIiLAorICAgICJzcGFjZSIsICJzcXVhcmUiLCAic3F1YXJl
LWJ1dHRvbiIsICJzdGFydCIsICJzdGF0aWMiLCAic3RhdHVzLWJhciIsICJzdHJldGNoIiwgInN0
cm9rZSIsICJzdWIiLCAic3VicGl4ZWwtYW50aWFsaWFzZWQiLCAic3VwZXIiLAorICAgICJzdy1y
ZXNpemUiLCAidGFibGUiLCAidGFibGUtY2FwdGlvbiIsICJ0YWJsZS1jZWxsIiwgInRhYmxlLWNv
bHVtbiIsICJ0YWJsZS1jb2x1bW4tZ3JvdXAiLCAidGFibGUtZm9vdGVyLWdyb3VwIiwgInRhYmxl
LWhlYWRlci1ncm91cCIsCisgICAgInRhYmxlLXJvdyIsICJ0YWJsZS1yb3ctZ3JvdXAiLCAidGVs
dWd1IiwgInRleHQiLCAidGV4dC1ib3R0b20iLCAidGV4dC10b3AiLCAidGV4dGFyZWEiLCAidGV4
dGZpZWxkIiwgInRoYWkiLCAidGhpY2siLCAidGhpbiIsCisgICAgInRocmVlZGRhcmtzaGFkb3ci
LCAidGhyZWVkZmFjZSIsICJ0aHJlZWRoaWdobGlnaHQiLCAidGhyZWVkbGlnaHRzaGFkb3ciLCAi
dGhyZWVkc2hhZG93IiwgInRpYmV0YW4iLCAidGlncmUiLCAidGlncmlueWEtZXIiLCAidGlncmlu
eWEtZXItYWJlZ2VkZSIsCisgICAgInRpZ3JpbnlhLWV0IiwgInRpZ3JpbnlhLWV0LWFiZWdlZGUi
LCAidG8iLCAidG9wIiwgInRyYW5zcGFyZW50IiwgInVsdHJhLWNvbmRlbnNlZCIsICJ1bHRyYS1l
eHBhbmRlZCIsICJ1bmRlcmxpbmUiLCAidXAiLCAidXBwZXItYWxwaGEiLCAidXBwZXItYXJtZW5p
YW4iLAorICAgICJ1cHBlci1ncmVlayIsICJ1cHBlci1oZXhhZGVjaW1hbCIsICJ1cHBlci1sYXRp
biIsICJ1cHBlci1ub3J3ZWdpYW4iLCAidXBwZXItcm9tYW4iLCAidXBwZXJjYXNlIiwgInVyZHUi
LCAidXJsIiwgInZlcnRpY2FsIiwgInZlcnRpY2FsLXRleHQiLCAidmlzaWJsZSIsCisgICAgInZp
c2libGVGaWxsIiwgInZpc2libGVQYWludGVkIiwgInZpc2libGVTdHJva2UiLCAidmlzdWFsIiwg
InctcmVzaXplIiwgIndhaXQiLCAid2F2ZSIsICJ3aGl0ZSIsICJ3aWRlciIsICJ3aW5kb3ciLCAi
d2luZG93ZnJhbWUiLCAid2luZG93dGV4dCIsCisgICAgIngtbGFyZ2UiLCAieC1zbWFsbCIsICJ4
b3IiLCAieHgtbGFyZ2UiLCAieHgtc21hbGwiLCAieWVsbG93IiwgIi13YXAtbWFycXVlZSIsICIt
d2Via2l0LWFjdGl2ZWxpbmsiLCAiLXdlYmtpdC1hdXRvIiwgIi13ZWJraXQtYmFzZWxpbmUtbWlk
ZGxlIiwKKyAgICAiLXdlYmtpdC1ib2R5IiwgIi13ZWJraXQtYm94IiwgIi13ZWJraXQtY2VudGVy
IiwgIi13ZWJraXQtY29udHJvbCIsICItd2Via2l0LWZvY3VzLXJpbmctY29sb3IiLCAiLXdlYmtp
dC1ncmFiIiwgIi13ZWJraXQtZ3JhYmJpbmciLAorICAgICItd2Via2l0LWdyYWRpZW50IiwgIi13
ZWJraXQtaW5saW5lLWJveCIsICItd2Via2l0LWxlZnQiLCAiLXdlYmtpdC1saW5rIiwgIi13ZWJr
aXQtbWFycXVlZSIsICItd2Via2l0LW1pbmktY29udHJvbCIsICItd2Via2l0LW5vd3JhcCIsICIt
d2Via2l0LXBpY3RvZ3JhcGgiLAorICAgICItd2Via2l0LXJpZ2h0IiwgIi13ZWJraXQtc21hbGwt
Y29udHJvbCIsICItd2Via2l0LXRleHQiLCAiLXdlYmtpdC14eHgtbGFyZ2UiLCAiLXdlYmtpdC16
b29tLWluIiwgIi13ZWJraXQtem9vbS1vdXQiXSk7CisKKyAgZnVuY3Rpb24ga2V5U2V0KGFycmF5
KSB7IHZhciBrZXlzID0ge307IGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kp
IGtleXNbYXJyYXlbaV1dID0gdHJ1ZTsgcmV0dXJuIGtleXM7IH0KKyAgZnVuY3Rpb24gcmV0KHN0
eWxlLCB0cCkge3R5cGUgPSB0cDsgcmV0dXJuIHN0eWxlO30KKworICBmdW5jdGlvbiB0b2tlbkJh
c2Uoc3RyZWFtLCBzdGF0ZSkgeworICAgIHZhciBjaCA9IHN0cmVhbS5uZXh0KCk7CisgICAgaWYg
KGNoID09ICJAIikge3N0cmVhbS5lYXRXaGlsZSgvW1x3XFxcLV0vKTsgcmV0dXJuIHJldCgibWV0
YSIsIHN0cmVhbS5jdXJyZW50KCkpO30KKyAgICBlbHNlIGlmIChjaCA9PSAiLyIgJiYgc3RyZWFt
LmVhdCgiKiIpKSB7CisgICAgICBzdGF0ZS50b2tlbml6ZSA9IHRva2VuQ0NvbW1lbnQ7CisgICAg
ICByZXR1cm4gdG9rZW5DQ29tbWVudChzdHJlYW0sIHN0YXRlKTsKKyAgICB9CisgICAgZWxzZSBp
ZiAoY2ggPT0gIjwiICYmIHN0cmVhbS5lYXQoIiEiKSkgeworICAgICAgc3RhdGUudG9rZW5pemUg
PSB0b2tlblNHTUxDb21tZW50OworICAgICAgcmV0dXJuIHRva2VuU0dNTENvbW1lbnQoc3RyZWFt
LCBzdGF0ZSk7CisgICAgfQorICAgIGVsc2UgaWYgKGNoID09ICI9IikgcmV0KG51bGwsICJjb21w
YXJlIik7CisgICAgZWxzZSBpZiAoKGNoID09ICJ+IiB8fCBjaCA9PSAifCIpICYmIHN0cmVhbS5l
YXQoIj0iKSkgcmV0dXJuIHJldChudWxsLCAiY29tcGFyZSIpOworICAgIGVsc2UgaWYgKGNoID09
ICJcIiIgfHwgY2ggPT0gIiciKSB7CisgICAgICBzdGF0ZS50b2tlbml6ZSA9IHRva2VuU3RyaW5n
KGNoKTsKKyAgICAgIHJldHVybiBzdGF0ZS50b2tlbml6ZShzdHJlYW0sIHN0YXRlKTsKKyAgICB9
CisgICAgZWxzZSBpZiAoY2ggPT0gIiMiKSB7CisgICAgICBzdHJlYW0uZWF0V2hpbGUoL1tcd1xc
XC1dLyk7CisgICAgICByZXR1cm4gcmV0KCJhdG9tIiwgImhhc2giKTsKKyAgICB9CisgICAgZWxz
ZSBpZiAoY2ggPT0gIiEiKSB7CisgICAgICBzdHJlYW0ubWF0Y2goL15ccypcdyovKTsKKyAgICAg
IHJldHVybiByZXQoImtleXdvcmQiLCAiaW1wb3J0YW50Iik7CisgICAgfQorICAgIGVsc2UgaWYg
KC9cZC8udGVzdChjaCkpIHsKKyAgICAgIHN0cmVhbS5lYXRXaGlsZSgvW1x3LiVdLyk7CisgICAg
ICByZXR1cm4gcmV0KCJudW1iZXIiLCAidW5pdCIpOworICAgIH0KKyAgICBlbHNlIGlmICgvWywu
Kz4qXC9dLy50ZXN0KGNoKSkgeworICAgICAgcmV0dXJuIHJldChudWxsLCAic2VsZWN0LW9wIik7
CisgICAgfQorICAgIGVsc2UgaWYgKC9bO3t9OlxbXF1dLy50ZXN0KGNoKSkgeworICAgICAgcmV0
dXJuIHJldChudWxsLCBjaCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgc3RyZWFtLmVhdFdo
aWxlKC9bXHdcXFwtXS8pOworICAgICAgcmV0dXJuIHJldCgidmFyaWFibGUiLCAidmFyaWFibGUi
KTsKKyAgICB9CisgIH0KKworICBmdW5jdGlvbiB0b2tlbkNDb21tZW50KHN0cmVhbSwgc3RhdGUp
IHsKKyAgICB2YXIgbWF5YmVFbmQgPSBmYWxzZSwgY2g7CisgICAgd2hpbGUgKChjaCA9IHN0cmVh
bS5uZXh0KCkpICE9IG51bGwpIHsKKyAgICAgIGlmIChtYXliZUVuZCAmJiBjaCA9PSAiLyIpIHsK
KyAgICAgICAgc3RhdGUudG9rZW5pemUgPSB0b2tlbkJhc2U7CisgICAgICAgIGJyZWFrOworICAg
ICAgfQorICAgICAgbWF5YmVFbmQgPSAoY2ggPT0gIioiKTsKKyAgICB9CisgICAgcmV0dXJuIHJl
dCgiY29tbWVudCIsICJjb21tZW50Iik7CisgIH0KKworICBmdW5jdGlvbiB0b2tlblNHTUxDb21t
ZW50KHN0cmVhbSwgc3RhdGUpIHsKKyAgICB2YXIgZGFzaGVzID0gMCwgY2g7CisgICAgd2hpbGUg
KChjaCA9IHN0cmVhbS5uZXh0KCkpICE9IG51bGwpIHsKKyAgICAgIGlmIChkYXNoZXMgPj0gMiAm
JiBjaCA9PSAiPiIpIHsKKyAgICAgICAgc3RhdGUudG9rZW5pemUgPSB0b2tlbkJhc2U7CisgICAg
ICAgIGJyZWFrOworICAgICAgfQorICAgICAgZGFzaGVzID0gKGNoID09ICItIikgPyBkYXNoZXMg
KyAxIDogMDsKKyAgICB9CisgICAgcmV0dXJuIHJldCgiY29tbWVudCIsICJjb21tZW50Iik7Cisg
IH0KKworICBmdW5jdGlvbiB0b2tlblN0cmluZyhxdW90ZSkgeworICAgIHJldHVybiBmdW5jdGlv
bihzdHJlYW0sIHN0YXRlKSB7CisgICAgICB2YXIgZXNjYXBlZCA9IGZhbHNlLCBjaDsKKyAgICAg
IHdoaWxlICgoY2ggPSBzdHJlYW0ubmV4dCgpKSAhPSBudWxsKSB7CisgICAgICAgIGlmIChjaCA9
PSBxdW90ZSAmJiAhZXNjYXBlZCkKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgZXNjYXBlZCA9
ICFlc2NhcGVkICYmIGNoID09ICJcXCI7CisgICAgICB9CisgICAgICBpZiAoIWVzY2FwZWQpIHN0
YXRlLnRva2VuaXplID0gdG9rZW5CYXNlOworICAgICAgcmV0dXJuIHJldCgic3RyaW5nIiwgInN0
cmluZyIpOworICAgIH07CisgIH0KKworICByZXR1cm4geworICAgIHN0YXJ0U3RhdGU6IGZ1bmN0
aW9uKGJhc2UpIHsKKyAgICAgIHJldHVybiB7dG9rZW5pemU6IHRva2VuQmFzZSwKKyAgICAgICAg
ICAgICAgYmFzZUluZGVudDogYmFzZSB8fCAwLAorICAgICAgICAgICAgICBzdGFjazogW119Owor
ICAgIH0sCisKKyAgICB0b2tlbjogZnVuY3Rpb24oc3RyZWFtLCBzdGF0ZSkgeworICAgICAgaWYg
KHN0cmVhbS5lYXRTcGFjZSgpKSByZXR1cm4gbnVsbDsKKyAgICAgIHZhciBzdHlsZSA9IHN0YXRl
LnRva2VuaXplKHN0cmVhbSwgc3RhdGUpOworCisgICAgICB2YXIgY29udGV4dCA9IHN0YXRlLnN0
YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXTsKKyAgICAgIGlmICh0eXBlID09ICJoYXNoIiAmJiBj
b250ZXh0ICE9ICJydWxlIikgc3R5bGUgPSAic3RyaW5nLTIiOworICAgICAgZWxzZSBpZiAoc3R5
bGUgPT0gInZhcmlhYmxlIikgeworICAgICAgICBpZiAoY29udGV4dCA9PSAicnVsZSIpIHN0eWxl
ID0ga2V5d29yZHNbc3RyZWFtLmN1cnJlbnQoKV0gPyAia2V5d29yZCIgOiAibnVtYmVyIjsKKyAg
ICAgICAgZWxzZSBpZiAoIWNvbnRleHQgfHwgY29udGV4dCA9PSAiQG1lZGlheyIpIHN0eWxlID0g
InRhZyI7CisgICAgICB9CisKKyAgICAgIGlmIChjb250ZXh0ID09ICJydWxlIiAmJiAvXltce1x9
O10kLy50ZXN0KHR5cGUpKQorICAgICAgICBzdGF0ZS5zdGFjay5wb3AoKTsKKyAgICAgIGlmICh0
eXBlID09ICJ7IikgeworICAgICAgICBpZiAoY29udGV4dCA9PSAiQG1lZGlhIikgc3RhdGUuc3Rh
Y2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID0gIkBtZWRpYXsiOworICAgICAgICBlbHNlIHN0YXRl
LnN0YWNrLnB1c2goInsiKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIn0iKSBz
dGF0ZS5zdGFjay5wb3AoKTsKKyAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIkBtZWRpYSIpIHN0YXRl
LnN0YWNrLnB1c2goIkBtZWRpYSIpOworICAgICAgZWxzZSBpZiAoY29udGV4dCA9PSAieyIgJiYg
dHlwZSAhPSAiY29tbWVudCIpIHN0YXRlLnN0YWNrLnB1c2goInJ1bGUiKTsKKyAgICAgIHJldHVy
biBzdHlsZTsKKyAgICB9LAorCisgICAgaW5kZW50OiBmdW5jdGlvbihzdGF0ZSwgdGV4dEFmdGVy
KSB7CisgICAgICB2YXIgbiA9IHN0YXRlLnN0YWNrLmxlbmd0aDsKKyAgICAgIGlmICgvXlx9Ly50
ZXN0KHRleHRBZnRlcikpCisgICAgICAgIG4gLT0gc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVu
Z3RoLTFdID09ICJydWxlIiA/IDIgOiAxOworICAgICAgcmV0dXJuIHN0YXRlLmJhc2VJbmRlbnQg
KyBuICogaW5kZW50VW5pdDsKKyAgICB9LAorCisgICAgZWxlY3RyaWNDaGFyczogIn0iCisgIH07
Cit9KTsKKworQ29kZU1pcnJvci5kZWZpbmVNSU1FKCJ0ZXh0L2NzcyIsICJjc3MiKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaHRtbG1peGVkLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9odG1sbWl4ZWQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzQ3Y2FhNzE3M2VlZWE0ZjhkZTE3NTQ3YjA1YWE3MTU0MWYxZTgwZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaHRtbG1peGVkLmpzCkBA
IC0wLDAgKzEsODUgQEAKK0NvZGVNaXJyb3IuZGVmaW5lTW9kZSgiaHRtbG1peGVkIiwgZnVuY3Rp
b24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKKyAgdmFyIGh0bWxNb2RlID0gQ29kZU1pcnJvci5n
ZXRNb2RlKGNvbmZpZywge25hbWU6ICJ4bWwiLCBodG1sTW9kZTogdHJ1ZX0pOworICB2YXIganNN
b2RlID0gQ29kZU1pcnJvci5nZXRNb2RlKGNvbmZpZywgImphdmFzY3JpcHQiKTsKKyAgdmFyIGNz
c01vZGUgPSBDb2RlTWlycm9yLmdldE1vZGUoY29uZmlnLCAiY3NzIik7CisKKyAgZnVuY3Rpb24g
aHRtbChzdHJlYW0sIHN0YXRlKSB7CisgICAgdmFyIHN0eWxlID0gaHRtbE1vZGUudG9rZW4oc3Ry
ZWFtLCBzdGF0ZS5odG1sU3RhdGUpOworICAgIGlmIChzdHlsZSA9PSAidGFnIiAmJiBzdHJlYW0u
Y3VycmVudCgpID09ICI+IiAmJiBzdGF0ZS5odG1sU3RhdGUuY29udGV4dCkgeworICAgICAgaWYg
KC9ec2NyaXB0JC9pLnRlc3Qoc3RhdGUuaHRtbFN0YXRlLmNvbnRleHQudGFnTmFtZSkpIHsKKyAg
ICAgICAgc3RhdGUudG9rZW4gPSBqYXZhc2NyaXB0OworICAgICAgICBzdGF0ZS5sb2NhbFN0YXRl
ID0ganNNb2RlLnN0YXJ0U3RhdGUoaHRtbE1vZGUuaW5kZW50KHN0YXRlLmh0bWxTdGF0ZSwgIiIp
KTsKKyAgICAgICAgc3RhdGUubW9kZSA9ICJqYXZhc2NyaXB0IjsKKyAgICAgIH0KKyAgICAgIGVs
c2UgaWYgKC9ec3R5bGUkL2kudGVzdChzdGF0ZS5odG1sU3RhdGUuY29udGV4dC50YWdOYW1lKSkg
eworICAgICAgICBzdGF0ZS50b2tlbiA9IGNzczsKKyAgICAgICAgc3RhdGUubG9jYWxTdGF0ZSA9
IGNzc01vZGUuc3RhcnRTdGF0ZShodG1sTW9kZS5pbmRlbnQoc3RhdGUuaHRtbFN0YXRlLCAiIikp
OworICAgICAgICBzdGF0ZS5tb2RlID0gImNzcyI7CisgICAgICB9CisgICAgfQorICAgIHJldHVy
biBzdHlsZTsKKyAgfQorICBmdW5jdGlvbiBtYXliZUJhY2t1cChzdHJlYW0sIHBhdCwgc3R5bGUp
IHsKKyAgICB2YXIgY3VyID0gc3RyZWFtLmN1cnJlbnQoKTsKKyAgICB2YXIgY2xvc2UgPSBjdXIu
c2VhcmNoKHBhdCk7CisgICAgaWYgKGNsb3NlID4gLTEpIHN0cmVhbS5iYWNrVXAoY3VyLmxlbmd0
aCAtIGNsb3NlKTsKKyAgICByZXR1cm4gc3R5bGU7CisgIH0KKyAgZnVuY3Rpb24gamF2YXNjcmlw
dChzdHJlYW0sIHN0YXRlKSB7CisgICAgaWYgKHN0cmVhbS5tYXRjaCgvXjxcL1xzKnNjcmlwdFxz
Kj4vaSwgZmFsc2UpKSB7CisgICAgICBzdGF0ZS50b2tlbiA9IGh0bWw7CisgICAgICBzdGF0ZS5s
b2NhbFN0YXRlID0gbnVsbDsKKyAgICAgIHN0YXRlLm1vZGUgPSAiaHRtbCI7CisgICAgICByZXR1
cm4gaHRtbChzdHJlYW0sIHN0YXRlKTsKKyAgICB9CisgICAgcmV0dXJuIG1heWJlQmFja3VwKHN0
cmVhbSwgLzxcL1xzKnNjcmlwdFxzKj4vLAorICAgICAgICAgICAgICAgICAgICAgICBqc01vZGUu
dG9rZW4oc3RyZWFtLCBzdGF0ZS5sb2NhbFN0YXRlKSk7CisgIH0KKyAgZnVuY3Rpb24gY3NzKHN0
cmVhbSwgc3RhdGUpIHsKKyAgICBpZiAoc3RyZWFtLm1hdGNoKC9ePFwvXHMqc3R5bGVccyo+L2ks
IGZhbHNlKSkgeworICAgICAgc3RhdGUudG9rZW4gPSBodG1sOworICAgICAgc3RhdGUubG9jYWxT
dGF0ZSA9IG51bGw7CisgICAgICBzdGF0ZS5tb2RlID0gImh0bWwiOworICAgICAgcmV0dXJuIGh0
bWwoc3RyZWFtLCBzdGF0ZSk7CisgICAgfQorICAgIHJldHVybiBtYXliZUJhY2t1cChzdHJlYW0s
IC88XC9ccypzdHlsZVxzKj4vLAorICAgICAgICAgICAgICAgICAgICAgICBjc3NNb2RlLnRva2Vu
KHN0cmVhbSwgc3RhdGUubG9jYWxTdGF0ZSkpOworICB9CisKKyAgcmV0dXJuIHsKKyAgICBzdGFy
dFN0YXRlOiBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBzdGF0ZSA9IGh0bWxNb2RlLnN0YXJ0U3Rh
dGUoKTsKKyAgICAgIHJldHVybiB7dG9rZW46IGh0bWwsIGxvY2FsU3RhdGU6IG51bGwsIG1vZGU6
ICJodG1sIiwgaHRtbFN0YXRlOiBzdGF0ZX07CisgICAgfSwKKworICAgIGNvcHlTdGF0ZTogZnVu
Y3Rpb24oc3RhdGUpIHsKKyAgICAgIGlmIChzdGF0ZS5sb2NhbFN0YXRlKQorICAgICAgICB2YXIg
bG9jYWwgPSBDb2RlTWlycm9yLmNvcHlTdGF0ZShzdGF0ZS50b2tlbiA9PSBjc3MgPyBjc3NNb2Rl
IDoganNNb2RlLCBzdGF0ZS5sb2NhbFN0YXRlKTsKKyAgICAgIHJldHVybiB7dG9rZW46IHN0YXRl
LnRva2VuLCBsb2NhbFN0YXRlOiBsb2NhbCwgbW9kZTogc3RhdGUubW9kZSwKKyAgICAgICAgICAg
ICAgaHRtbFN0YXRlOiBDb2RlTWlycm9yLmNvcHlTdGF0ZShodG1sTW9kZSwgc3RhdGUuaHRtbFN0
YXRlKX07CisgICAgfSwKKworICAgIHRva2VuOiBmdW5jdGlvbihzdHJlYW0sIHN0YXRlKSB7Cisg
ICAgICByZXR1cm4gc3RhdGUudG9rZW4oc3RyZWFtLCBzdGF0ZSk7CisgICAgfSwKKworICAgIGlu
ZGVudDogZnVuY3Rpb24oc3RhdGUsIHRleHRBZnRlcikgeworICAgICAgaWYgKHN0YXRlLnRva2Vu
ID09IGh0bWwgfHwgL15ccyo8XC8vLnRlc3QodGV4dEFmdGVyKSkKKyAgICAgICAgcmV0dXJuIGh0
bWxNb2RlLmluZGVudChzdGF0ZS5odG1sU3RhdGUsIHRleHRBZnRlcik7CisgICAgICBlbHNlIGlm
IChzdGF0ZS50b2tlbiA9PSBqYXZhc2NyaXB0KQorICAgICAgICByZXR1cm4ganNNb2RlLmluZGVu
dChzdGF0ZS5sb2NhbFN0YXRlLCB0ZXh0QWZ0ZXIpOworICAgICAgZWxzZQorICAgICAgICByZXR1
cm4gY3NzTW9kZS5pbmRlbnQoc3RhdGUubG9jYWxTdGF0ZSwgdGV4dEFmdGVyKTsKKyAgICB9LAor
CisgICAgY29tcGFyZVN0YXRlczogZnVuY3Rpb24oYSwgYikgeworICAgICAgaWYgKGEubW9kZSAh
PSBiLm1vZGUpIHJldHVybiBmYWxzZTsKKyAgICAgIGlmIChhLmxvY2FsU3RhdGUpIHJldHVybiBD
b2RlTWlycm9yLlBhc3M7CisgICAgICByZXR1cm4gaHRtbE1vZGUuY29tcGFyZVN0YXRlcyhhLmh0
bWxTdGF0ZSwgYi5odG1sU3RhdGUpOworICAgIH0sCisKKyAgICBlbGVjdHJpY0NoYXJzOiAiL3t9
OiIKKyAgfTsKK30sICJ4bWwiLCAiamF2YXNjcmlwdCIsICJjc3MiKTsKKworQ29kZU1pcnJvci5k
ZWZpbmVNSU1FKCJ0ZXh0L2h0bWwiLCAiaHRtbG1peGVkIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCAwNWY3YTFkODY5Mjlk
ZDdhYTY5NzVkZTU4MjBlMWUyOGE3NDM1MzNiLi5lOWEyNmM0ZWQwMmVmNTA3MmNmNzBmMTk1MWY0
MGU3YjRlMWJhNzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5odG1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmh0bWwKQEAgLTEyMCw2ICsxMjAsMTIgQEAgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJOZXR3b3JrUGFuZWwuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlRleHRFZGl0b3IuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRlZmF1
bHRUZXh0RWRpdG9yLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJDb2RlTWlycm9yVGV4dEVkaXRvci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iY29kZW1pcnJvci5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iY3NzLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqYXZhc2NyaXB0LmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ4bWwuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0bWxt
aXhlZC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iU291cmNlRnJhbWUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9IlVJU291cmNlQ29kZUZyYW1lLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJSZXNvdXJjZVZpZXcuanMiPjwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9qYXZhc2NyaXB0
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9qYXZhc2NyaXB0LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjlhM2MzMjZkZjIzMzJkN2Y1M2RiZGU2YTU2MDk5YTU2NjIyZDMzN2UKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2phdmFzY3Jp
cHQuanMKQEAgLTAsMCArMSwzNjEgQEAKK0NvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlw
dCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CisgIHZhciBpbmRlbnRVbml0ID0g
Y29uZmlnLmluZGVudFVuaXQ7CisgIHZhciBqc29uTW9kZSA9IHBhcnNlckNvbmZpZy5qc29uOwor
CisgIC8vIFRva2VuaXplcgorCisgIHZhciBrZXl3b3JkcyA9IGZ1bmN0aW9uKCl7CisgICAgZnVu
Y3Rpb24ga3codHlwZSkge3JldHVybiB7dHlwZTogdHlwZSwgc3R5bGU6ICJrZXl3b3JkIn07fQor
ICAgIHZhciBBID0ga3coImtleXdvcmQgYSIpLCBCID0ga3coImtleXdvcmQgYiIpLCBDID0ga3co
ImtleXdvcmQgYyIpOworICAgIHZhciBvcGVyYXRvciA9IGt3KCJvcGVyYXRvciIpLCBhdG9tID0g
e3R5cGU6ICJhdG9tIiwgc3R5bGU6ICJhdG9tIn07CisgICAgcmV0dXJuIHsKKyAgICAgICJpZiI6
IEEsICJ3aGlsZSI6IEEsICJ3aXRoIjogQSwgImVsc2UiOiBCLCAiZG8iOiBCLCAidHJ5IjogQiwg
ImZpbmFsbHkiOiBCLAorICAgICAgInJldHVybiI6IEMsICJicmVhayI6IEMsICJjb250aW51ZSI6
IEMsICJuZXciOiBDLCAiZGVsZXRlIjogQywgInRocm93IjogQywKKyAgICAgICJ2YXIiOiBrdygi
dmFyIiksICJjb25zdCI6IGt3KCJ2YXIiKSwgImxldCI6IGt3KCJ2YXIiKSwKKyAgICAgICJmdW5j
dGlvbiI6IGt3KCJmdW5jdGlvbiIpLCAiY2F0Y2giOiBrdygiY2F0Y2giKSwKKyAgICAgICJmb3Ii
OiBrdygiZm9yIiksICJzd2l0Y2giOiBrdygic3dpdGNoIiksICJjYXNlIjoga3coImNhc2UiKSwg
ImRlZmF1bHQiOiBrdygiZGVmYXVsdCIpLAorICAgICAgImluIjogb3BlcmF0b3IsICJ0eXBlb2Yi
OiBvcGVyYXRvciwgImluc3RhbmNlb2YiOiBvcGVyYXRvciwKKyAgICAgICJ0cnVlIjogYXRvbSwg
ImZhbHNlIjogYXRvbSwgIm51bGwiOiBhdG9tLCAidW5kZWZpbmVkIjogYXRvbSwgIk5hTiI6IGF0
b20sICJJbmZpbml0eSI6IGF0b20KKyAgICB9OworICB9KCk7CisKKyAgdmFyIGlzT3BlcmF0b3JD
aGFyID0gL1srXC0qJiU9PD4hP3xdLzsKKworICBmdW5jdGlvbiBjaGFpbihzdHJlYW0sIHN0YXRl
LCBmKSB7CisgICAgc3RhdGUudG9rZW5pemUgPSBmOworICAgIHJldHVybiBmKHN0cmVhbSwgc3Rh
dGUpOworICB9CisKKyAgZnVuY3Rpb24gbmV4dFVudGlsVW5lc2NhcGVkKHN0cmVhbSwgZW5kKSB7
CisgICAgdmFyIGVzY2FwZWQgPSBmYWxzZSwgbmV4dDsKKyAgICB3aGlsZSAoKG5leHQgPSBzdHJl
YW0ubmV4dCgpKSAhPSBudWxsKSB7CisgICAgICBpZiAobmV4dCA9PSBlbmQgJiYgIWVzY2FwZWQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIGVzY2FwZWQgPSAhZXNjYXBlZCAmJiBuZXh0
ID09ICJcXCI7CisgICAgfQorICAgIHJldHVybiBlc2NhcGVkOworICB9CisKKyAgLy8gVXNlZCBh
cyBzY3JhdGNoIHZhcmlhYmxlcyB0byBjb21tdW5pY2F0ZSBtdWx0aXBsZSB2YWx1ZXMgd2l0aG91
dAorICAvLyBjb25zaW5nIHVwIHRvbnMgb2Ygb2JqZWN0cy4KKyAgdmFyIHR5cGUsIGNvbnRlbnQ7
CisgIGZ1bmN0aW9uIHJldCh0cCwgc3R5bGUsIGNvbnQpIHsKKyAgICB0eXBlID0gdHA7IGNvbnRl
bnQgPSBjb250OworICAgIHJldHVybiBzdHlsZTsKKyAgfQorCisgIGZ1bmN0aW9uIGpzVG9rZW5C
YXNlKHN0cmVhbSwgc3RhdGUpIHsKKyAgICB2YXIgY2ggPSBzdHJlYW0ubmV4dCgpOworICAgIGlm
IChjaCA9PSAnIicgfHwgY2ggPT0gIiciKQorICAgICAgcmV0dXJuIGNoYWluKHN0cmVhbSwgc3Rh
dGUsIGpzVG9rZW5TdHJpbmcoY2gpKTsKKyAgICBlbHNlIGlmICgvW1xbXF17fVwoXCksO1w6XC5d
Ly50ZXN0KGNoKSkKKyAgICAgIHJldHVybiByZXQoY2gpOworICAgIGVsc2UgaWYgKGNoID09ICIw
IiAmJiBzdHJlYW0uZWF0KC94L2kpKSB7CisgICAgICBzdHJlYW0uZWF0V2hpbGUoL1tcZGEtZl0v
aSk7CisgICAgICByZXR1cm4gcmV0KCJudW1iZXIiLCAibnVtYmVyIik7CisgICAgfQorICAgIGVs
c2UgaWYgKC9cZC8udGVzdChjaCkgfHwgY2ggPT0gIi0iICYmIHN0cmVhbS5lYXQoL1xkLykpIHsK
KyAgICAgIHN0cmVhbS5tYXRjaCgvXlxkKig/OlwuXGQqKT8oPzpbZUVdWytcLV0/XGQrKT8vKTsK
KyAgICAgIHJldHVybiByZXQoIm51bWJlciIsICJudW1iZXIiKTsKKyAgICB9CisgICAgZWxzZSBp
ZiAoY2ggPT0gIi8iKSB7CisgICAgICBpZiAoc3RyZWFtLmVhdCgiKiIpKSB7CisgICAgICAgIHJl
dHVybiBjaGFpbihzdHJlYW0sIHN0YXRlLCBqc1Rva2VuQ29tbWVudCk7CisgICAgICB9CisgICAg
ICBlbHNlIGlmIChzdHJlYW0uZWF0KCIvIikpIHsKKyAgICAgICAgc3RyZWFtLnNraXBUb0VuZCgp
OworICAgICAgICByZXR1cm4gcmV0KCJjb21tZW50IiwgImNvbW1lbnQiKTsKKyAgICAgIH0KKyAg
ICAgIGVsc2UgaWYgKHN0YXRlLnJlQWxsb3dlZCkgeworICAgICAgICBuZXh0VW50aWxVbmVzY2Fw
ZWQoc3RyZWFtLCAiLyIpOworICAgICAgICBzdHJlYW0uZWF0V2hpbGUoL1tnaW15XS8pOyAvLyAn
eScgaXMgInN0aWNreSIgb3B0aW9uIGluIE1vemlsbGEKKyAgICAgICAgcmV0dXJuIHJldCgicmVn
ZXhwIiwgInN0cmluZy0yIik7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgc3RyZWFt
LmVhdFdoaWxlKGlzT3BlcmF0b3JDaGFyKTsKKyAgICAgICAgcmV0dXJuIHJldCgib3BlcmF0b3Ii
LCBudWxsLCBzdHJlYW0uY3VycmVudCgpKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAo
Y2ggPT0gIiMiKSB7CisgICAgICAgIHN0cmVhbS5za2lwVG9FbmQoKTsKKyAgICAgICAgcmV0dXJu
IHJldCgiZXJyb3IiLCAiZXJyb3IiKTsKKyAgICB9CisgICAgZWxzZSBpZiAoaXNPcGVyYXRvckNo
YXIudGVzdChjaCkpIHsKKyAgICAgIHN0cmVhbS5lYXRXaGlsZShpc09wZXJhdG9yQ2hhcik7Cisg
ICAgICByZXR1cm4gcmV0KCJvcGVyYXRvciIsIG51bGwsIHN0cmVhbS5jdXJyZW50KCkpOworICAg
IH0KKyAgICBlbHNlIHsKKyAgICAgIHN0cmVhbS5lYXRXaGlsZSgvW1x3XCRfXS8pOworICAgICAg
dmFyIHdvcmQgPSBzdHJlYW0uY3VycmVudCgpLCBrbm93biA9IGtleXdvcmRzLnByb3BlcnR5SXNF
bnVtZXJhYmxlKHdvcmQpICYmIGtleXdvcmRzW3dvcmRdOworICAgICAgcmV0dXJuIChrbm93biAm
JiBzdGF0ZS5rd0FsbG93ZWQpID8gcmV0KGtub3duLnR5cGUsIGtub3duLnN0eWxlLCB3b3JkKSA6
CisgICAgICAgICAgICAgICAgICAgICByZXQoInZhcmlhYmxlIiwgInZhcmlhYmxlIiwgd29yZCk7
CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24ganNUb2tlblN0cmluZyhxdW90ZSkgeworICAgIHJl
dHVybiBmdW5jdGlvbihzdHJlYW0sIHN0YXRlKSB7CisgICAgICBpZiAoIW5leHRVbnRpbFVuZXNj
YXBlZChzdHJlYW0sIHF1b3RlKSkKKyAgICAgICAgc3RhdGUudG9rZW5pemUgPSBqc1Rva2VuQmFz
ZTsKKyAgICAgIHJldHVybiByZXQoInN0cmluZyIsICJzdHJpbmciKTsKKyAgICB9OworICB9CisK
KyAgZnVuY3Rpb24ganNUb2tlbkNvbW1lbnQoc3RyZWFtLCBzdGF0ZSkgeworICAgIHZhciBtYXli
ZUVuZCA9IGZhbHNlLCBjaDsKKyAgICB3aGlsZSAoY2ggPSBzdHJlYW0ubmV4dCgpKSB7CisgICAg
ICBpZiAoY2ggPT0gIi8iICYmIG1heWJlRW5kKSB7CisgICAgICAgIHN0YXRlLnRva2VuaXplID0g
anNUb2tlbkJhc2U7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgbWF5YmVFbmQgPSAo
Y2ggPT0gIioiKTsKKyAgICB9CisgICAgcmV0dXJuIHJldCgiY29tbWVudCIsICJjb21tZW50Iik7
CisgIH0KKworICAvLyBQYXJzZXIKKworICB2YXIgYXRvbWljVHlwZXMgPSB7ImF0b20iOiB0cnVl
LCAibnVtYmVyIjogdHJ1ZSwgInZhcmlhYmxlIjogdHJ1ZSwgInN0cmluZyI6IHRydWUsICJyZWdl
eHAiOiB0cnVlfTsKKworICBmdW5jdGlvbiBKU0xleGljYWwoaW5kZW50ZWQsIGNvbHVtbiwgdHlw
ZSwgYWxpZ24sIHByZXYsIGluZm8pIHsKKyAgICB0aGlzLmluZGVudGVkID0gaW5kZW50ZWQ7Cisg
ICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47CisgICAgdGhpcy50eXBlID0gdHlwZTsKKyAgICB0aGlz
LnByZXYgPSBwcmV2OworICAgIHRoaXMuaW5mbyA9IGluZm87CisgICAgaWYgKGFsaWduICE9IG51
bGwpIHRoaXMuYWxpZ24gPSBhbGlnbjsKKyAgfQorCisgIGZ1bmN0aW9uIGluU2NvcGUoc3RhdGUs
IHZhcm5hbWUpIHsKKyAgICBmb3IgKHZhciB2ID0gc3RhdGUubG9jYWxWYXJzOyB2OyB2ID0gdi5u
ZXh0KQorICAgICAgaWYgKHYubmFtZSA9PSB2YXJuYW1lKSByZXR1cm4gdHJ1ZTsKKyAgfQorCisg
IGZ1bmN0aW9uIHBhcnNlSlMoc3RhdGUsIHN0eWxlLCB0eXBlLCBjb250ZW50LCBzdHJlYW0pIHsK
KyAgICB2YXIgY2MgPSBzdGF0ZS5jYzsKKyAgICAvLyBDb21tdW5pY2F0ZSBvdXIgY29udGV4dCB0
byB0aGUgY29tYmluYXRvcnMuCisgICAgLy8gKExlc3Mgd2FzdGVmdWwgdGhhbiBjb25zaW5nIHVw
IGEgaHVuZHJlZCBjbG9zdXJlcyBvbiBldmVyeSBjYWxsLikKKyAgICBjeC5zdGF0ZSA9IHN0YXRl
OyBjeC5zdHJlYW0gPSBzdHJlYW07IGN4Lm1hcmtlZCA9IG51bGwsIGN4LmNjID0gY2M7CisKKyAg
ICBpZiAoIXN0YXRlLmxleGljYWwuaGFzT3duUHJvcGVydHkoImFsaWduIikpCisgICAgICBzdGF0
ZS5sZXhpY2FsLmFsaWduID0gdHJ1ZTsKKworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBj
b21iaW5hdG9yID0gY2MubGVuZ3RoID8gY2MucG9wKCkgOiBqc29uTW9kZSA/IGV4cHJlc3Npb24g
OiBzdGF0ZW1lbnQ7CisgICAgICBpZiAoY29tYmluYXRvcih0eXBlLCBjb250ZW50KSkgeworICAg
ICAgICB3aGlsZShjYy5sZW5ndGggJiYgY2NbY2MubGVuZ3RoIC0gMV0ubGV4KQorICAgICAgICAg
IGNjLnBvcCgpKCk7CisgICAgICAgIGlmIChjeC5tYXJrZWQpIHJldHVybiBjeC5tYXJrZWQ7Cisg
ICAgICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIgJiYgaW5TY29wZShzdGF0ZSwgY29udGVudCkp
IHJldHVybiAidmFyaWFibGUtMiI7CisgICAgICAgIHJldHVybiBzdHlsZTsKKyAgICAgIH0KKyAg
ICB9CisgIH0KKworICAvLyBDb21iaW5hdG9yIHV0aWxzCisKKyAgdmFyIGN4ID0ge3N0YXRlOiBu
dWxsLCBjb2x1bW46IG51bGwsIG1hcmtlZDogbnVsbCwgY2M6IG51bGx9OworICBmdW5jdGlvbiBw
YXNzKCkgeworICAgIGZvciAodmFyIGkgPSBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBp
LS0pIGN4LmNjLnB1c2goYXJndW1lbnRzW2ldKTsKKyAgfQorICBmdW5jdGlvbiBjb250KCkgewor
ICAgIHBhc3MuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQor
ICBmdW5jdGlvbiByZWdpc3Rlcih2YXJuYW1lKSB7CisgICAgdmFyIHN0YXRlID0gY3guc3RhdGU7
CisgICAgaWYgKHN0YXRlLmNvbnRleHQpIHsKKyAgICAgIGN4Lm1hcmtlZCA9ICJkZWYiOworICAg
ICAgZm9yICh2YXIgdiA9IHN0YXRlLmxvY2FsVmFyczsgdjsgdiA9IHYubmV4dCkKKyAgICAgICAg
aWYgKHYubmFtZSA9PSB2YXJuYW1lKSByZXR1cm47CisgICAgICBzdGF0ZS5sb2NhbFZhcnMgPSB7
bmFtZTogdmFybmFtZSwgbmV4dDogc3RhdGUubG9jYWxWYXJzfTsKKyAgICB9CisgIH0KKworICAv
LyBDb21iaW5hdG9ycworCisgIHZhciBkZWZhdWx0VmFycyA9IHtuYW1lOiAidGhpcyIsIG5leHQ6
IHtuYW1lOiAiYXJndW1lbnRzIn19OworICBmdW5jdGlvbiBwdXNoY29udGV4dCgpIHsKKyAgICBp
ZiAoIWN4LnN0YXRlLmNvbnRleHQpIGN4LnN0YXRlLmxvY2FsVmFycyA9IGRlZmF1bHRWYXJzOwor
ICAgIGN4LnN0YXRlLmNvbnRleHQgPSB7cHJldjogY3guc3RhdGUuY29udGV4dCwgdmFyczogY3gu
c3RhdGUubG9jYWxWYXJzfTsKKyAgfQorICBmdW5jdGlvbiBwb3Bjb250ZXh0KCkgeworICAgIGN4
LnN0YXRlLmxvY2FsVmFycyA9IGN4LnN0YXRlLmNvbnRleHQudmFyczsKKyAgICBjeC5zdGF0ZS5j
b250ZXh0ID0gY3guc3RhdGUuY29udGV4dC5wcmV2OworICB9CisgIGZ1bmN0aW9uIHB1c2hsZXgo
dHlwZSwgaW5mbykgeworICAgIHZhciByZXN1bHQgPSBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBz
dGF0ZSA9IGN4LnN0YXRlOworICAgICAgc3RhdGUubGV4aWNhbCA9IG5ldyBKU0xleGljYWwoc3Rh
dGUuaW5kZW50ZWQsIGN4LnN0cmVhbS5jb2x1bW4oKSwgdHlwZSwgbnVsbCwgc3RhdGUubGV4aWNh
bCwgaW5mbyk7CisgICAgfTsKKyAgICByZXN1bHQubGV4ID0gdHJ1ZTsKKyAgICByZXR1cm4gcmVz
dWx0OworICB9CisgIGZ1bmN0aW9uIHBvcGxleCgpIHsKKyAgICB2YXIgc3RhdGUgPSBjeC5zdGF0
ZTsKKyAgICBpZiAoc3RhdGUubGV4aWNhbC5wcmV2KSB7CisgICAgICBpZiAoc3RhdGUubGV4aWNh
bC50eXBlID09ICIpIikKKyAgICAgICAgc3RhdGUuaW5kZW50ZWQgPSBzdGF0ZS5sZXhpY2FsLmlu
ZGVudGVkOworICAgICAgc3RhdGUubGV4aWNhbCA9IHN0YXRlLmxleGljYWwucHJldjsKKyAgICB9
CisgIH0KKyAgcG9wbGV4LmxleCA9IHRydWU7CisKKyAgZnVuY3Rpb24gZXhwZWN0KHdhbnRlZCkg
eworICAgIHJldHVybiBmdW5jdGlvbiBleHBlY3RpbmcodHlwZSkgeworICAgICAgaWYgKHR5cGUg
PT0gd2FudGVkKSByZXR1cm4gY29udCgpOworICAgICAgZWxzZSBpZiAod2FudGVkID09ICI7Iikg
cmV0dXJuIHBhc3MoKTsKKyAgICAgIGVsc2UgcmV0dXJuIGNvbnQoYXJndW1lbnRzLmNhbGxlZSk7
CisgICAgfTsKKyAgfQorCisgIGZ1bmN0aW9uIHN0YXRlbWVudCh0eXBlKSB7CisgICAgaWYgKHR5
cGUgPT0gInZhciIpIHJldHVybiBjb250KHB1c2hsZXgoInZhcmRlZiIpLCB2YXJkZWYxLCBleHBl
Y3QoIjsiKSwgcG9wbGV4KTsKKyAgICBpZiAodHlwZSA9PSAia2V5d29yZCBhIikgcmV0dXJuIGNv
bnQocHVzaGxleCgiZm9ybSIpLCBleHByZXNzaW9uLCBzdGF0ZW1lbnQsIHBvcGxleCk7CisgICAg
aWYgKHR5cGUgPT0gImtleXdvcmQgYiIpIHJldHVybiBjb250KHB1c2hsZXgoImZvcm0iKSwgc3Rh
dGVtZW50LCBwb3BsZXgpOworICAgIGlmICh0eXBlID09ICJ7IikgcmV0dXJuIGNvbnQocHVzaGxl
eCgifSIpLCBibG9jaywgcG9wbGV4KTsKKyAgICBpZiAodHlwZSA9PSAiOyIpIHJldHVybiBjb250
KCk7CisgICAgaWYgKHR5cGUgPT0gImZ1bmN0aW9uIikgcmV0dXJuIGNvbnQoZnVuY3Rpb25kZWYp
OworICAgIGlmICh0eXBlID09ICJmb3IiKSByZXR1cm4gY29udChwdXNobGV4KCJmb3JtIiksIGV4
cGVjdCgiKCIpLCBwdXNobGV4KCIpIiksIGZvcnNwZWMxLCBleHBlY3QoIikiKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9wbGV4LCBzdGF0ZW1lbnQsIHBvcGxleCk7
CisgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikgcmV0dXJuIGNvbnQocHVzaGxleCgic3RhdCIp
LCBtYXliZWxhYmVsKTsKKyAgICBpZiAodHlwZSA9PSAic3dpdGNoIikgcmV0dXJuIGNvbnQocHVz
aGxleCgiZm9ybSIpLCBleHByZXNzaW9uLCBwdXNobGV4KCJ9IiwgInN3aXRjaCIpLCBleHBlY3Qo
InsiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2ssIHBv
cGxleCwgcG9wbGV4KTsKKyAgICBpZiAodHlwZSA9PSAiY2FzZSIpIHJldHVybiBjb250KGV4cHJl
c3Npb24sIGV4cGVjdCgiOiIpKTsKKyAgICBpZiAodHlwZSA9PSAiZGVmYXVsdCIpIHJldHVybiBj
b250KGV4cGVjdCgiOiIpKTsKKyAgICBpZiAodHlwZSA9PSAiY2F0Y2giKSByZXR1cm4gY29udChw
dXNobGV4KCJmb3JtIiksIHB1c2hjb250ZXh0LCBleHBlY3QoIigiKSwgZnVuYXJnLCBleHBlY3Qo
IikiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQs
IHBvcGxleCwgcG9wY29udGV4dCk7CisgICAgcmV0dXJuIHBhc3MocHVzaGxleCgic3RhdCIpLCBl
eHByZXNzaW9uLCBleHBlY3QoIjsiKSwgcG9wbGV4KTsKKyAgfQorICBmdW5jdGlvbiBleHByZXNz
aW9uKHR5cGUpIHsKKyAgICBpZiAoYXRvbWljVHlwZXMuaGFzT3duUHJvcGVydHkodHlwZSkpIHJl
dHVybiBjb250KG1heWJlb3BlcmF0b3IpOworICAgIGlmICh0eXBlID09ICJmdW5jdGlvbiIpIHJl
dHVybiBjb250KGZ1bmN0aW9uZGVmKTsKKyAgICBpZiAodHlwZSA9PSAia2V5d29yZCBjIikgcmV0
dXJuIGNvbnQobWF5YmVleHByZXNzaW9uKTsKKyAgICBpZiAodHlwZSA9PSAiKCIpIHJldHVybiBj
b250KHB1c2hsZXgoIikiKSwgbWF5YmVleHByZXNzaW9uLCBleHBlY3QoIikiKSwgcG9wbGV4LCBt
YXliZW9wZXJhdG9yKTsKKyAgICBpZiAodHlwZSA9PSAib3BlcmF0b3IiKSByZXR1cm4gY29udChl
eHByZXNzaW9uKTsKKyAgICBpZiAodHlwZSA9PSAiWyIpIHJldHVybiBjb250KHB1c2hsZXgoIl0i
KSwgY29tbWFzZXAoZXhwcmVzc2lvbiwgIl0iKSwgcG9wbGV4LCBtYXliZW9wZXJhdG9yKTsKKyAg
ICBpZiAodHlwZSA9PSAieyIpIHJldHVybiBjb250KHB1c2hsZXgoIn0iKSwgY29tbWFzZXAob2Jq
cHJvcCwgIn0iKSwgcG9wbGV4LCBtYXliZW9wZXJhdG9yKTsKKyAgICByZXR1cm4gY29udCgpOwor
ICB9CisgIGZ1bmN0aW9uIG1heWJlZXhwcmVzc2lvbih0eXBlKSB7CisgICAgaWYgKHR5cGUubWF0
Y2goL1s7XH1cKVxdLF0vKSkgcmV0dXJuIHBhc3MoKTsKKyAgICByZXR1cm4gcGFzcyhleHByZXNz
aW9uKTsKKyAgfQorCisgIGZ1bmN0aW9uIG1heWJlb3BlcmF0b3IodHlwZSwgdmFsdWUpIHsKKyAg
ICBpZiAodHlwZSA9PSAib3BlcmF0b3IiICYmIC9cK1wrfC0tLy50ZXN0KHZhbHVlKSkgcmV0dXJu
IGNvbnQobWF5YmVvcGVyYXRvcik7CisgICAgaWYgKHR5cGUgPT0gIm9wZXJhdG9yIiAmJiB2YWx1
ZSA9PSAiPyIpIHJldHVybiBjb250KGV4cHJlc3Npb24sIGV4cGVjdCgiOiIpLCBleHByZXNzaW9u
KTsKKyAgICBpZiAodHlwZSA9PSAiOyIpIHJldHVybjsKKyAgICBpZiAodHlwZSA9PSAiKCIpIHJl
dHVybiBjb250KHB1c2hsZXgoIikiKSwgY29tbWFzZXAoZXhwcmVzc2lvbiwgIikiKSwgcG9wbGV4
LCBtYXliZW9wZXJhdG9yKTsKKyAgICBpZiAodHlwZSA9PSAiLiIpIHJldHVybiBjb250KHByb3Bl
cnR5LCBtYXliZW9wZXJhdG9yKTsKKyAgICBpZiAodHlwZSA9PSAiWyIpIHJldHVybiBjb250KHB1
c2hsZXgoIl0iKSwgZXhwcmVzc2lvbiwgZXhwZWN0KCJdIiksIHBvcGxleCwgbWF5YmVvcGVyYXRv
cik7CisgIH0KKyAgZnVuY3Rpb24gbWF5YmVsYWJlbCh0eXBlKSB7CisgICAgaWYgKHR5cGUgPT0g
IjoiKSByZXR1cm4gY29udChwb3BsZXgsIHN0YXRlbWVudCk7CisgICAgcmV0dXJuIHBhc3MobWF5
YmVvcGVyYXRvciwgZXhwZWN0KCI7IiksIHBvcGxleCk7CisgIH0KKyAgZnVuY3Rpb24gcHJvcGVy
dHkodHlwZSkgeworICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIHtjeC5tYXJrZWQgPSAicHJv
cGVydHkiOyByZXR1cm4gY29udCgpO30KKyAgfQorICBmdW5jdGlvbiBvYmpwcm9wKHR5cGUpIHsK
KyAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiKSBjeC5tYXJrZWQgPSAicHJvcGVydHkiOworICAg
IGlmIChhdG9taWNUeXBlcy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgcmV0dXJuIGNvbnQoZXhwZWN0
KCI6IiksIGV4cHJlc3Npb24pOworICB9CisgIGZ1bmN0aW9uIGNvbW1hc2VwKHdoYXQsIGVuZCkg
eworICAgIGZ1bmN0aW9uIHByb2NlZWQodHlwZSkgeworICAgICAgaWYgKHR5cGUgPT0gIiwiKSBy
ZXR1cm4gY29udCh3aGF0LCBwcm9jZWVkKTsKKyAgICAgIGlmICh0eXBlID09IGVuZCkgcmV0dXJu
IGNvbnQoKTsKKyAgICAgIHJldHVybiBjb250KGV4cGVjdChlbmQpKTsKKyAgICB9CisgICAgcmV0
dXJuIGZ1bmN0aW9uIGNvbW1hU2VwYXJhdGVkKHR5cGUpIHsKKyAgICAgIGlmICh0eXBlID09IGVu
ZCkgcmV0dXJuIGNvbnQoKTsKKyAgICAgIGVsc2UgcmV0dXJuIHBhc3Mod2hhdCwgcHJvY2VlZCk7
CisgICAgfTsKKyAgfQorICBmdW5jdGlvbiBibG9jayh0eXBlKSB7CisgICAgaWYgKHR5cGUgPT0g
In0iKSByZXR1cm4gY29udCgpOworICAgIHJldHVybiBwYXNzKHN0YXRlbWVudCwgYmxvY2spOwor
ICB9CisgIGZ1bmN0aW9uIHZhcmRlZjEodHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodHlwZSA9PSAi
dmFyaWFibGUiKXtyZWdpc3Rlcih2YWx1ZSk7IHJldHVybiBjb250KHZhcmRlZjIpO30KKyAgICBy
ZXR1cm4gY29udCgpOworICB9CisgIGZ1bmN0aW9uIHZhcmRlZjIodHlwZSwgdmFsdWUpIHsKKyAg
ICBpZiAodmFsdWUgPT0gIj0iKSByZXR1cm4gY29udChleHByZXNzaW9uLCB2YXJkZWYyKTsKKyAg
ICBpZiAodHlwZSA9PSAiLCIpIHJldHVybiBjb250KHZhcmRlZjEpOworICB9CisgIGZ1bmN0aW9u
IGZvcnNwZWMxKHR5cGUpIHsKKyAgICBpZiAodHlwZSA9PSAidmFyIikgcmV0dXJuIGNvbnQodmFy
ZGVmMSwgZm9yc3BlYzIpOworICAgIGlmICh0eXBlID09ICI7IikgcmV0dXJuIHBhc3MoZm9yc3Bl
YzIpOworICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIHJldHVybiBjb250KGZvcm1heWJlaW4p
OworICAgIHJldHVybiBwYXNzKGZvcnNwZWMyKTsKKyAgfQorICBmdW5jdGlvbiBmb3JtYXliZWlu
KHR5cGUsIHZhbHVlKSB7CisgICAgaWYgKHZhbHVlID09ICJpbiIpIHJldHVybiBjb250KGV4cHJl
c3Npb24pOworICAgIHJldHVybiBjb250KG1heWJlb3BlcmF0b3IsIGZvcnNwZWMyKTsKKyAgfQor
ICBmdW5jdGlvbiBmb3JzcGVjMih0eXBlLCB2YWx1ZSkgeworICAgIGlmICh0eXBlID09ICI7Iikg
cmV0dXJuIGNvbnQoZm9yc3BlYzMpOworICAgIGlmICh2YWx1ZSA9PSAiaW4iKSByZXR1cm4gY29u
dChleHByZXNzaW9uKTsKKyAgICByZXR1cm4gY29udChleHByZXNzaW9uLCBleHBlY3QoIjsiKSwg
Zm9yc3BlYzMpOworICB9CisgIGZ1bmN0aW9uIGZvcnNwZWMzKHR5cGUpIHsKKyAgICBpZiAodHlw
ZSAhPSAiKSIpIGNvbnQoZXhwcmVzc2lvbik7CisgIH0KKyAgZnVuY3Rpb24gZnVuY3Rpb25kZWYo
dHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiKSB7cmVnaXN0ZXIodmFs
dWUpOyByZXR1cm4gY29udChmdW5jdGlvbmRlZik7fQorICAgIGlmICh0eXBlID09ICIoIikgcmV0
dXJuIGNvbnQocHVzaGxleCgiKSIpLCBwdXNoY29udGV4dCwgY29tbWFzZXAoZnVuYXJnLCAiKSIp
LCBwb3BsZXgsIHN0YXRlbWVudCwgcG9wY29udGV4dCk7CisgIH0KKyAgZnVuY3Rpb24gZnVuYXJn
KHR5cGUsIHZhbHVlKSB7CisgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikge3JlZ2lzdGVyKHZh
bHVlKTsgcmV0dXJuIGNvbnQoKTt9CisgIH0KKworICAvLyBJbnRlcmZhY2UKKworICByZXR1cm4g
eworICAgIHN0YXJ0U3RhdGU6IGZ1bmN0aW9uKGJhc2Vjb2x1bW4pIHsKKyAgICAgIHJldHVybiB7
CisgICAgICAgIHRva2VuaXplOiBqc1Rva2VuQmFzZSwKKyAgICAgICAgcmVBbGxvd2VkOiB0cnVl
LAorICAgICAgICBrd0FsbG93ZWQ6IHRydWUsCisgICAgICAgIGNjOiBbXSwKKyAgICAgICAgbGV4
aWNhbDogbmV3IEpTTGV4aWNhbCgoYmFzZWNvbHVtbiB8fCAwKSAtIGluZGVudFVuaXQsIDAsICJi
bG9jayIsIGZhbHNlKSwKKyAgICAgICAgbG9jYWxWYXJzOiBwYXJzZXJDb25maWcubG9jYWxWYXJz
LAorICAgICAgICBjb250ZXh0OiBwYXJzZXJDb25maWcubG9jYWxWYXJzICYmIHt2YXJzOiBwYXJz
ZXJDb25maWcubG9jYWxWYXJzfSwKKyAgICAgICAgaW5kZW50ZWQ6IDAKKyAgICAgIH07CisgICAg
fSwKKworICAgIHRva2VuOiBmdW5jdGlvbihzdHJlYW0sIHN0YXRlKSB7CisgICAgICBpZiAoc3Ry
ZWFtLnNvbCgpKSB7CisgICAgICAgIGlmICghc3RhdGUubGV4aWNhbC5oYXNPd25Qcm9wZXJ0eSgi
YWxpZ24iKSkKKyAgICAgICAgICBzdGF0ZS5sZXhpY2FsLmFsaWduID0gZmFsc2U7CisgICAgICAg
IHN0YXRlLmluZGVudGVkID0gc3RyZWFtLmluZGVudGF0aW9uKCk7CisgICAgICB9CisgICAgICBp
ZiAoc3RyZWFtLmVhdFNwYWNlKCkpIHJldHVybiBudWxsOworICAgICAgdmFyIHN0eWxlID0gc3Rh
dGUudG9rZW5pemUoc3RyZWFtLCBzdGF0ZSk7CisgICAgICBpZiAodHlwZSA9PSAiY29tbWVudCIp
IHJldHVybiBzdHlsZTsKKyAgICAgIHN0YXRlLnJlQWxsb3dlZCA9ICEhKHR5cGUgPT0gIm9wZXJh
dG9yIiB8fCB0eXBlID09ICJrZXl3b3JkIGMiIHx8IHR5cGUubWF0Y2goL15bXFt7fVwoLDs6XSQv
KSk7CisgICAgICBzdGF0ZS5rd0FsbG93ZWQgPSB0eXBlICE9ICcuJzsKKyAgICAgIHJldHVybiBw
YXJzZUpTKHN0YXRlLCBzdHlsZSwgdHlwZSwgY29udGVudCwgc3RyZWFtKTsKKyAgICB9LAorCisg
ICAgaW5kZW50OiBmdW5jdGlvbihzdGF0ZSwgdGV4dEFmdGVyKSB7CisgICAgICBpZiAoc3RhdGUu
dG9rZW5pemUgIT0ganNUb2tlbkJhc2UpIHJldHVybiAwOworICAgICAgdmFyIGZpcnN0Q2hhciA9
IHRleHRBZnRlciAmJiB0ZXh0QWZ0ZXIuY2hhckF0KDApLCBsZXhpY2FsID0gc3RhdGUubGV4aWNh
bDsKKyAgICAgIGlmIChsZXhpY2FsLnR5cGUgPT0gInN0YXQiICYmIGZpcnN0Q2hhciA9PSAifSIp
IGxleGljYWwgPSBsZXhpY2FsLnByZXY7CisgICAgICB2YXIgdHlwZSA9IGxleGljYWwudHlwZSwg
Y2xvc2luZyA9IGZpcnN0Q2hhciA9PSB0eXBlOworICAgICAgaWYgKHR5cGUgPT0gInZhcmRlZiIp
IHJldHVybiBsZXhpY2FsLmluZGVudGVkICsgNDsKKyAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImZv
cm0iICYmIGZpcnN0Q2hhciA9PSAieyIpIHJldHVybiBsZXhpY2FsLmluZGVudGVkOworICAgICAg
ZWxzZSBpZiAodHlwZSA9PSAic3RhdCIgfHwgdHlwZSA9PSAiZm9ybSIpIHJldHVybiBsZXhpY2Fs
LmluZGVudGVkICsgaW5kZW50VW5pdDsKKyAgICAgIGVsc2UgaWYgKGxleGljYWwuaW5mbyA9PSAi
c3dpdGNoIiAmJiAhY2xvc2luZykKKyAgICAgICAgcmV0dXJuIGxleGljYWwuaW5kZW50ZWQgKyAo
L14oPzpjYXNlfGRlZmF1bHQpXGIvLnRlc3QodGV4dEFmdGVyKSA/IGluZGVudFVuaXQgOiAyICog
aW5kZW50VW5pdCk7CisgICAgICBlbHNlIGlmIChsZXhpY2FsLmFsaWduKSByZXR1cm4gbGV4aWNh
bC5jb2x1bW4gKyAoY2xvc2luZyA/IDAgOiAxKTsKKyAgICAgIGVsc2UgcmV0dXJuIGxleGljYWwu
aW5kZW50ZWQgKyAoY2xvc2luZyA/IDAgOiBpbmRlbnRVbml0KTsKKyAgICB9LAorCisgICAgZWxl
Y3RyaWNDaGFyczogIjp7fSIKKyAgfTsKK30pOworCitDb2RlTWlycm9yLmRlZmluZU1JTUUoInRl
eHQvamF2YXNjcmlwdCIsICJqYXZhc2NyaXB0Iik7CitDb2RlTWlycm9yLmRlZmluZU1JTUUoImFw
cGxpY2F0aW9uL2pzb24iLCB7bmFtZTogImphdmFzY3JpcHQiLCBqc29uOiB0cnVlfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3htbC5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQveG1sLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwZjQzNTFm
YTUxYzliMWE4NjAzNmNiYzZmNWFjMzk1ZmYxODQ3MGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3htbC5qcwpAQCAtMCwwICsxLDMyNiBAQAor
Q29kZU1pcnJvci5kZWZpbmVNb2RlKCJ4bWwiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZp
ZykgeworICB2YXIgaW5kZW50VW5pdCA9IGNvbmZpZy5pbmRlbnRVbml0OworICB2YXIgS2x1ZGdl
cyA9IHBhcnNlckNvbmZpZy5odG1sTW9kZSA/IHsKKyAgICBhdXRvU2VsZkNsb3NlcnM6IHsnYXJl
YSc6IHRydWUsICdiYXNlJzogdHJ1ZSwgJ2JyJzogdHJ1ZSwgJ2NvbCc6IHRydWUsICdjb21tYW5k
JzogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAnZW1iZWQnOiB0cnVlLCAnZnJhbWUnOiB0
cnVlLCAnaHInOiB0cnVlLCAnaW1nJzogdHJ1ZSwgJ2lucHV0JzogdHJ1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAna2V5Z2VuJzogdHJ1ZSwgJ2xpbmsnOiB0cnVlLCAnbWV0YSc6IHRydWUsICdw
YXJhbSc6IHRydWUsICdzb3VyY2UnOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICd0cmFj
ayc6IHRydWUsICd3YnInOiB0cnVlfSwKKyAgICBpbXBsaWNpdGx5Q2xvc2VkOiB7J2RkJzogdHJ1
ZSwgJ2xpJzogdHJ1ZSwgJ29wdGdyb3VwJzogdHJ1ZSwgJ29wdGlvbic6IHRydWUsICdwJzogdHJ1
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgJ3JwJzogdHJ1ZSwgJ3J0JzogdHJ1ZSwgJ3Rib2R5
JzogdHJ1ZSwgJ3RkJzogdHJ1ZSwgJ3Rmb290JzogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgJ3RoJzogdHJ1ZSwgJ3RyJzogdHJ1ZX0sCisgICAgY29udGV4dEdyYWJiZXJzOiB7CisgICAg
ICAnZGQnOiB7J2RkJzogdHJ1ZSwgJ2R0JzogdHJ1ZX0sCisgICAgICAnZHQnOiB7J2RkJzogdHJ1
ZSwgJ2R0JzogdHJ1ZX0sCisgICAgICAnbGknOiB7J2xpJzogdHJ1ZX0sCisgICAgICAnb3B0aW9u
JzogeydvcHRpb24nOiB0cnVlLCAnb3B0Z3JvdXAnOiB0cnVlfSwKKyAgICAgICdvcHRncm91cCc6
IHsnb3B0Z3JvdXAnOiB0cnVlfSwKKyAgICAgICdwJzogeydhZGRyZXNzJzogdHJ1ZSwgJ2FydGlj
bGUnOiB0cnVlLCAnYXNpZGUnOiB0cnVlLCAnYmxvY2txdW90ZSc6IHRydWUsICdkaXInOiB0cnVl
LAorICAgICAgICAgICAgJ2Rpdic6IHRydWUsICdkbCc6IHRydWUsICdmaWVsZHNldCc6IHRydWUs
ICdmb290ZXInOiB0cnVlLCAnZm9ybSc6IHRydWUsCisgICAgICAgICAgICAnaDEnOiB0cnVlLCAn
aDInOiB0cnVlLCAnaDMnOiB0cnVlLCAnaDQnOiB0cnVlLCAnaDUnOiB0cnVlLCAnaDYnOiB0cnVl
LAorICAgICAgICAgICAgJ2hlYWRlcic6IHRydWUsICdoZ3JvdXAnOiB0cnVlLCAnaHInOiB0cnVl
LCAnbWVudSc6IHRydWUsICduYXYnOiB0cnVlLCAnb2wnOiB0cnVlLAorICAgICAgICAgICAgJ3An
OiB0cnVlLCAncHJlJzogdHJ1ZSwgJ3NlY3Rpb24nOiB0cnVlLCAndGFibGUnOiB0cnVlLCAndWwn
OiB0cnVlfSwKKyAgICAgICdycCc6IHsncnAnOiB0cnVlLCAncnQnOiB0cnVlfSwKKyAgICAgICdy
dCc6IHsncnAnOiB0cnVlLCAncnQnOiB0cnVlfSwKKyAgICAgICd0Ym9keSc6IHsndGJvZHknOiB0
cnVlLCAndGZvb3QnOiB0cnVlfSwKKyAgICAgICd0ZCc6IHsndGQnOiB0cnVlLCAndGgnOiB0cnVl
fSwKKyAgICAgICd0Zm9vdCc6IHsndGJvZHknOiB0cnVlfSwKKyAgICAgICd0aCc6IHsndGQnOiB0
cnVlLCAndGgnOiB0cnVlfSwKKyAgICAgICd0aGVhZCc6IHsndGJvZHknOiB0cnVlLCAndGZvb3Qn
OiB0cnVlfSwKKyAgICAgICd0cic6IHsndHInOiB0cnVlfQorICAgIH0sCisgICAgZG9Ob3RJbmRl
bnQ6IHsicHJlIjogdHJ1ZX0sCisgICAgYWxsb3dVbnF1b3RlZDogdHJ1ZSwKKyAgICBhbGxvd01p
c3Npbmc6IHRydWUKKyAgfSA6IHsKKyAgICBhdXRvU2VsZkNsb3NlcnM6IHt9LAorICAgIGltcGxp
Y2l0bHlDbG9zZWQ6IHt9LAorICAgIGNvbnRleHRHcmFiYmVyczoge30sCisgICAgZG9Ob3RJbmRl
bnQ6IHt9LAorICAgIGFsbG93VW5xdW90ZWQ6IGZhbHNlLAorICAgIGFsbG93TWlzc2luZzogZmFs
c2UKKyAgfTsKKyAgdmFyIGFsaWduQ0RBVEEgPSBwYXJzZXJDb25maWcuYWxpZ25DREFUQTsKKwor
ICAvLyBSZXR1cm4gdmFyaWFibGVzIGZvciB0b2tlbml6ZXJzCisgIHZhciB0YWdOYW1lLCB0eXBl
OworCisgIGZ1bmN0aW9uIGluVGV4dChzdHJlYW0sIHN0YXRlKSB7CisgICAgZnVuY3Rpb24gY2hh
aW4ocGFyc2VyKSB7CisgICAgICBzdGF0ZS50b2tlbml6ZSA9IHBhcnNlcjsKKyAgICAgIHJldHVy
biBwYXJzZXIoc3RyZWFtLCBzdGF0ZSk7CisgICAgfQorCisgICAgdmFyIGNoID0gc3RyZWFtLm5l
eHQoKTsKKyAgICBpZiAoY2ggPT0gIjwiKSB7CisgICAgICBpZiAoc3RyZWFtLmVhdCgiISIpKSB7
CisgICAgICAgIGlmIChzdHJlYW0uZWF0KCJbIikpIHsKKyAgICAgICAgICBpZiAoc3RyZWFtLm1h
dGNoKCJDREFUQVsiKSkgcmV0dXJuIGNoYWluKGluQmxvY2soImF0b20iLCAiXV0+IikpOworICAg
ICAgICAgIGVsc2UgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoc3Ry
ZWFtLm1hdGNoKCItLSIpKSByZXR1cm4gY2hhaW4oaW5CbG9jaygiY29tbWVudCIsICItLT4iKSk7
CisgICAgICAgIGVsc2UgaWYgKHN0cmVhbS5tYXRjaCgiRE9DVFlQRSIsIHRydWUsIHRydWUpKSB7
CisgICAgICAgICAgc3RyZWFtLmVhdFdoaWxlKC9bXHdcLl9cLV0vKTsKKyAgICAgICAgICByZXR1
cm4gY2hhaW4oZG9jdHlwZSgxKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSByZXR1cm4gbnVs
bDsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHN0cmVhbS5lYXQoIj8iKSkgeworICAgICAgICBz
dHJlYW0uZWF0V2hpbGUoL1tcd1wuX1wtXS8pOworICAgICAgICBzdGF0ZS50b2tlbml6ZSA9IGlu
QmxvY2soIm1ldGEiLCAiPz4iKTsKKyAgICAgICAgcmV0dXJuICJtZXRhIjsKKyAgICAgIH0KKyAg
ICAgIGVsc2UgeworICAgICAgICB0eXBlID0gc3RyZWFtLmVhdCgiLyIpID8gImNsb3NlVGFnIiA6
ICJvcGVuVGFnIjsKKyAgICAgICAgc3RyZWFtLmVhdFNwYWNlKCk7CisgICAgICAgIHRhZ05hbWUg
PSAiIjsKKyAgICAgICAgdmFyIGM7CisgICAgICAgIHdoaWxlICgoYyA9IHN0cmVhbS5lYXQoL1te
XHNcdTAwYTA9PD5cIlwnXC8/XS8pKSkgdGFnTmFtZSArPSBjOworICAgICAgICBzdGF0ZS50b2tl
bml6ZSA9IGluVGFnOworICAgICAgICByZXR1cm4gInRhZyI7CisgICAgICB9CisgICAgfQorICAg
IGVsc2UgaWYgKGNoID09ICImIikgeworICAgICAgdmFyIG9rOworICAgICAgaWYgKHN0cmVhbS5l
YXQoIiMiKSkgeworICAgICAgICBpZiAoc3RyZWFtLmVhdCgieCIpKSB7CisgICAgICAgICAgb2sg
PSBzdHJlYW0uZWF0V2hpbGUoL1thLWZBLUZcZF0vKSAmJiBzdHJlYW0uZWF0KCI7Iik7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgb2sgPSBzdHJlYW0uZWF0V2hpbGUoL1tcZF0vKSAmJiBz
dHJlYW0uZWF0KCI7Iik7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIG9rID0g
c3RyZWFtLmVhdFdoaWxlKC9bXHdcLlwtOl0vKSAmJiBzdHJlYW0uZWF0KCI7Iik7CisgICAgICB9
CisgICAgICByZXR1cm4gb2sgPyAiYXRvbSIgOiAiZXJyb3IiOworICAgIH0KKyAgICBlbHNlIHsK
KyAgICAgIHN0cmVhbS5lYXRXaGlsZSgvW14mPF0vKTsKKyAgICAgIHJldHVybiBudWxsOworICAg
IH0KKyAgfQorCisgIGZ1bmN0aW9uIGluVGFnKHN0cmVhbSwgc3RhdGUpIHsKKyAgICB2YXIgY2gg
PSBzdHJlYW0ubmV4dCgpOworICAgIGlmIChjaCA9PSAiPiIgfHwgKGNoID09ICIvIiAmJiBzdHJl
YW0uZWF0KCI+IikpKSB7CisgICAgICBzdGF0ZS50b2tlbml6ZSA9IGluVGV4dDsKKyAgICAgIHR5
cGUgPSBjaCA9PSAiPiIgPyAiZW5kVGFnIiA6ICJzZWxmY2xvc2VUYWciOworICAgICAgcmV0dXJu
ICJ0YWciOworICAgIH0KKyAgICBlbHNlIGlmIChjaCA9PSAiPSIpIHsKKyAgICAgIHR5cGUgPSAi
ZXF1YWxzIjsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICBlbHNlIGlmICgvW1wnXCJd
Ly50ZXN0KGNoKSkgeworICAgICAgc3RhdGUudG9rZW5pemUgPSBpbkF0dHJpYnV0ZShjaCk7Cisg
ICAgICByZXR1cm4gc3RhdGUudG9rZW5pemUoc3RyZWFtLCBzdGF0ZSk7CisgICAgfQorICAgIGVs
c2UgeworICAgICAgc3RyZWFtLmVhdFdoaWxlKC9bXlxzXHUwMGEwPTw+XCJcJ1wvP10vKTsKKyAg
ICAgIHJldHVybiAid29yZCI7CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24gaW5BdHRyaWJ1dGUo
cXVvdGUpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24oc3RyZWFtLCBzdGF0ZSkgeworICAgICAgd2hp
bGUgKCFzdHJlYW0uZW9sKCkpIHsKKyAgICAgICAgaWYgKHN0cmVhbS5uZXh0KCkgPT0gcXVvdGUp
IHsKKyAgICAgICAgICBzdGF0ZS50b2tlbml6ZSA9IGluVGFnOworICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICB9CisgICAgICByZXR1cm4gInN0cmluZyI7CisgICAgfTsKKyAgfQor
CisgIGZ1bmN0aW9uIGluQmxvY2soc3R5bGUsIHRlcm1pbmF0b3IpIHsKKyAgICByZXR1cm4gZnVu
Y3Rpb24oc3RyZWFtLCBzdGF0ZSkgeworICAgICAgd2hpbGUgKCFzdHJlYW0uZW9sKCkpIHsKKyAg
ICAgICAgaWYgKHN0cmVhbS5tYXRjaCh0ZXJtaW5hdG9yKSkgeworICAgICAgICAgIHN0YXRlLnRv
a2VuaXplID0gaW5UZXh0OworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHN0
cmVhbS5uZXh0KCk7CisgICAgICB9CisgICAgICByZXR1cm4gc3R5bGU7CisgICAgfTsKKyAgfQor
ICBmdW5jdGlvbiBkb2N0eXBlKGRlcHRoKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uKHN0cmVhbSwg
c3RhdGUpIHsKKyAgICAgIHZhciBjaDsKKyAgICAgIHdoaWxlICgoY2ggPSBzdHJlYW0ubmV4dCgp
KSAhPSBudWxsKSB7CisgICAgICAgIGlmIChjaCA9PSAiPCIpIHsKKyAgICAgICAgICBzdGF0ZS50
b2tlbml6ZSA9IGRvY3R5cGUoZGVwdGggKyAxKTsKKyAgICAgICAgICByZXR1cm4gc3RhdGUudG9r
ZW5pemUoc3RyZWFtLCBzdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gIj4iKSB7Cisg
ICAgICAgICAgaWYgKGRlcHRoID09IDEpIHsKKyAgICAgICAgICAgIHN0YXRlLnRva2VuaXplID0g
aW5UZXh0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIHN0YXRlLnRva2VuaXplID0gZG9jdHlwZShkZXB0aCAtIDEpOworICAgICAgICAgICAgcmV0
dXJuIHN0YXRlLnRva2VuaXplKHN0cmVhbSwgc3RhdGUpOworICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgfQorICAgICAgcmV0dXJuICJtZXRhIjsKKyAgICB9OworICB9CisKKyAgdmFyIGN1
clN0YXRlLCBzZXRTdHlsZTsKKyAgZnVuY3Rpb24gcGFzcygpIHsKKyAgICBmb3IgKHZhciBpID0g
YXJndW1lbnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBjdXJTdGF0ZS5jYy5wdXNoKGFyZ3Vt
ZW50c1tpXSk7CisgIH0KKyAgZnVuY3Rpb24gY29udCgpIHsKKyAgICBwYXNzLmFwcGx5KG51bGws
IGFyZ3VtZW50cyk7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKworICBmdW5jdGlvbiBwdXNoQ29u
dGV4dCh0YWdOYW1lLCBzdGFydE9mTGluZSkgeworICAgIHZhciBub0luZGVudCA9IEtsdWRnZXMu
ZG9Ob3RJbmRlbnQuaGFzT3duUHJvcGVydHkodGFnTmFtZSkgfHwgKGN1clN0YXRlLmNvbnRleHQg
JiYgY3VyU3RhdGUuY29udGV4dC5ub0luZGVudCk7CisgICAgY3VyU3RhdGUuY29udGV4dCA9IHsK
KyAgICAgIHByZXY6IGN1clN0YXRlLmNvbnRleHQsCisgICAgICB0YWdOYW1lOiB0YWdOYW1lLAor
ICAgICAgaW5kZW50OiBjdXJTdGF0ZS5pbmRlbnRlZCwKKyAgICAgIHN0YXJ0T2ZMaW5lOiBzdGFy
dE9mTGluZSwKKyAgICAgIG5vSW5kZW50OiBub0luZGVudAorICAgIH07CisgIH0KKyAgZnVuY3Rp
b24gcG9wQ29udGV4dCgpIHsKKyAgICBpZiAoY3VyU3RhdGUuY29udGV4dCkgY3VyU3RhdGUuY29u
dGV4dCA9IGN1clN0YXRlLmNvbnRleHQucHJldjsKKyAgfQorCisgIGZ1bmN0aW9uIGVsZW1lbnQo
dHlwZSkgeworICAgIGlmICh0eXBlID09ICJvcGVuVGFnIikgeworICAgICAgY3VyU3RhdGUudGFn
TmFtZSA9IHRhZ05hbWU7CisgICAgICByZXR1cm4gY29udChhdHRyaWJ1dGVzLCBlbmR0YWcoY3Vy
U3RhdGUuc3RhcnRPZkxpbmUpKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gImNsb3NlVGFnIikg
eworICAgICAgdmFyIGVyciA9IGZhbHNlOworICAgICAgaWYgKGN1clN0YXRlLmNvbnRleHQpIHsK
KyAgICAgICAgaWYgKGN1clN0YXRlLmNvbnRleHQudGFnTmFtZSAhPSB0YWdOYW1lKSB7CisgICAg
ICAgICAgaWYgKEtsdWRnZXMuaW1wbGljaXRseUNsb3NlZC5oYXNPd25Qcm9wZXJ0eShjdXJTdGF0
ZS5jb250ZXh0LnRhZ05hbWUudG9Mb3dlckNhc2UoKSkpIHsKKyAgICAgICAgICAgIHBvcENvbnRl
eHQoKTsKKyAgICAgICAgICB9CisgICAgICAgICAgZXJyID0gIWN1clN0YXRlLmNvbnRleHQgfHwg
Y3VyU3RhdGUuY29udGV4dC50YWdOYW1lICE9IHRhZ05hbWU7CisgICAgICAgIH0KKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIGVyciA9IHRydWU7CisgICAgICB9CisgICAgICBpZiAoZXJyKSBzZXRT
dHlsZSA9ICJlcnJvciI7CisgICAgICByZXR1cm4gY29udChlbmRjbG9zZXRhZyhlcnIpKTsKKyAg
ICB9CisgICAgcmV0dXJuIGNvbnQoKTsKKyAgfQorICBmdW5jdGlvbiBlbmR0YWcoc3RhcnRPZkxp
bmUpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24odHlwZSkgeworICAgICAgaWYgKHR5cGUgPT0gInNl
bGZjbG9zZVRhZyIgfHwKKyAgICAgICAgICAodHlwZSA9PSAiZW5kVGFnIiAmJiBLbHVkZ2VzLmF1
dG9TZWxmQ2xvc2Vycy5oYXNPd25Qcm9wZXJ0eShjdXJTdGF0ZS50YWdOYW1lLnRvTG93ZXJDYXNl
KCkpKSkgeworICAgICAgICBtYXliZVBvcENvbnRleHQoY3VyU3RhdGUudGFnTmFtZS50b0xvd2Vy
Q2FzZSgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnQoKTsKKyAgICAgIH0KKyAgICAgIGlmICh0eXBl
ID09ICJlbmRUYWciKSB7CisgICAgICAgIG1heWJlUG9wQ29udGV4dChjdXJTdGF0ZS50YWdOYW1l
LnRvTG93ZXJDYXNlKCkpOworICAgICAgICBwdXNoQ29udGV4dChjdXJTdGF0ZS50YWdOYW1lLCBz
dGFydE9mTGluZSk7CisgICAgICAgIHJldHVybiBjb250KCk7CisgICAgICB9CisgICAgICByZXR1
cm4gY29udCgpOworICAgIH07CisgIH0KKyAgZnVuY3Rpb24gZW5kY2xvc2V0YWcoZXJyKSB7Cisg
ICAgcmV0dXJuIGZ1bmN0aW9uKHR5cGUpIHsKKyAgICAgIGlmIChlcnIpIHNldFN0eWxlID0gImVy
cm9yIjsKKyAgICAgIGlmICh0eXBlID09ICJlbmRUYWciKSB7IHBvcENvbnRleHQoKTsgcmV0dXJu
IGNvbnQoKTsgfQorICAgICAgc2V0U3R5bGUgPSAiZXJyb3IiOworICAgICAgcmV0dXJuIGNvbnQo
YXJndW1lbnRzLmNhbGxlZSk7CisgICAgfTsKKyAgfQorICBmdW5jdGlvbiBtYXliZVBvcENvbnRl
eHQobmV4dFRhZ05hbWUpIHsKKyAgICB2YXIgcGFyZW50VGFnTmFtZTsKKyAgICB3aGlsZSAodHJ1
ZSkgeworICAgICAgaWYgKCFjdXJTdGF0ZS5jb250ZXh0KSB7CisgICAgICAgIHJldHVybjsKKyAg
ICAgIH0KKyAgICAgIHBhcmVudFRhZ05hbWUgPSBjdXJTdGF0ZS5jb250ZXh0LnRhZ05hbWUudG9M
b3dlckNhc2UoKTsKKyAgICAgIGlmICghS2x1ZGdlcy5jb250ZXh0R3JhYmJlcnMuaGFzT3duUHJv
cGVydHkocGFyZW50VGFnTmFtZSkgfHwKKyAgICAgICAgICAhS2x1ZGdlcy5jb250ZXh0R3JhYmJl
cnNbcGFyZW50VGFnTmFtZV0uaGFzT3duUHJvcGVydHkobmV4dFRhZ05hbWUpKSB7CisgICAgICAg
IHJldHVybjsKKyAgICAgIH0KKyAgICAgIHBvcENvbnRleHQoKTsKKyAgICB9CisgIH0KKworICBm
dW5jdGlvbiBhdHRyaWJ1dGVzKHR5cGUpIHsKKyAgICBpZiAodHlwZSA9PSAid29yZCIpIHtzZXRT
dHlsZSA9ICJhdHRyaWJ1dGUiOyByZXR1cm4gY29udChhdHRyaWJ1dGUsIGF0dHJpYnV0ZXMpO30K
KyAgICBpZiAodHlwZSA9PSAiZW5kVGFnIiB8fCB0eXBlID09ICJzZWxmY2xvc2VUYWciKSByZXR1
cm4gcGFzcygpOworICAgIHNldFN0eWxlID0gImVycm9yIjsKKyAgICByZXR1cm4gY29udChhdHRy
aWJ1dGVzKTsKKyAgfQorICBmdW5jdGlvbiBhdHRyaWJ1dGUodHlwZSkgeworICAgIGlmICh0eXBl
ID09ICJlcXVhbHMiKSByZXR1cm4gY29udChhdHR2YWx1ZSwgYXR0cmlidXRlcyk7CisgICAgaWYg
KCFLbHVkZ2VzLmFsbG93TWlzc2luZykgc2V0U3R5bGUgPSAiZXJyb3IiOworICAgIHJldHVybiAo
dHlwZSA9PSAiZW5kVGFnIiB8fCB0eXBlID09ICJzZWxmY2xvc2VUYWciKSA/IHBhc3MoKSA6IGNv
bnQoKTsKKyAgfQorICBmdW5jdGlvbiBhdHR2YWx1ZSh0eXBlKSB7CisgICAgaWYgKHR5cGUgPT0g
InN0cmluZyIpIHJldHVybiBjb250KGF0dHZhbHVlbWF5YmUpOworICAgIGlmICh0eXBlID09ICJ3
b3JkIiAmJiBLbHVkZ2VzLmFsbG93VW5xdW90ZWQpIHtzZXRTdHlsZSA9ICJzdHJpbmciOyByZXR1
cm4gY29udCgpO30KKyAgICBzZXRTdHlsZSA9ICJlcnJvciI7CisgICAgcmV0dXJuICh0eXBlID09
ICJlbmRUYWciIHx8IHR5cGUgPT0gInNlbGZDbG9zZVRhZyIpID8gcGFzcygpIDogY29udCgpOwor
ICB9CisgIGZ1bmN0aW9uIGF0dHZhbHVlbWF5YmUodHlwZSkgeworICAgIGlmICh0eXBlID09ICJz
dHJpbmciKSByZXR1cm4gY29udChhdHR2YWx1ZW1heWJlKTsKKyAgICBlbHNlIHJldHVybiBwYXNz
KCk7CisgIH0KKworICByZXR1cm4geworICAgIHN0YXJ0U3RhdGU6IGZ1bmN0aW9uKCkgeworICAg
ICAgcmV0dXJuIHt0b2tlbml6ZTogaW5UZXh0LCBjYzogW10sIGluZGVudGVkOiAwLCBzdGFydE9m
TGluZTogdHJ1ZSwgdGFnTmFtZTogbnVsbCwgY29udGV4dDogbnVsbH07CisgICAgfSwKKworICAg
IHRva2VuOiBmdW5jdGlvbihzdHJlYW0sIHN0YXRlKSB7CisgICAgICBpZiAoc3RyZWFtLnNvbCgp
KSB7CisgICAgICAgIHN0YXRlLnN0YXJ0T2ZMaW5lID0gdHJ1ZTsKKyAgICAgICAgc3RhdGUuaW5k
ZW50ZWQgPSBzdHJlYW0uaW5kZW50YXRpb24oKTsKKyAgICAgIH0KKyAgICAgIGlmIChzdHJlYW0u
ZWF0U3BhY2UoKSkgcmV0dXJuIG51bGw7CisKKyAgICAgIHNldFN0eWxlID0gdHlwZSA9IHRhZ05h
bWUgPSBudWxsOworICAgICAgdmFyIHN0eWxlID0gc3RhdGUudG9rZW5pemUoc3RyZWFtLCBzdGF0
ZSk7CisgICAgICBzdGF0ZS50eXBlID0gdHlwZTsKKyAgICAgIGlmICgoc3R5bGUgfHwgdHlwZSkg
JiYgc3R5bGUgIT0gImNvbW1lbnQiKSB7CisgICAgICAgIGN1clN0YXRlID0gc3RhdGU7CisgICAg
ICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgdmFyIGNvbWIgPSBzdGF0ZS5jYy5wb3AoKSB8
fCBlbGVtZW50OworICAgICAgICAgIGlmIChjb21iKHR5cGUgfHwgc3R5bGUpKSBicmVhazsKKyAg
ICAgICAgfQorICAgICAgfQorICAgICAgc3RhdGUuc3RhcnRPZkxpbmUgPSBmYWxzZTsKKyAgICAg
IHJldHVybiBzZXRTdHlsZSB8fCBzdHlsZTsKKyAgICB9LAorCisgICAgaW5kZW50OiBmdW5jdGlv
bihzdGF0ZSwgdGV4dEFmdGVyLCBmdWxsTGluZSkgeworICAgICAgdmFyIGNvbnRleHQgPSBzdGF0
ZS5jb250ZXh0OworICAgICAgaWYgKChzdGF0ZS50b2tlbml6ZSAhPSBpblRhZyAmJiBzdGF0ZS50
b2tlbml6ZSAhPSBpblRleHQpIHx8CisgICAgICAgICAgY29udGV4dCAmJiBjb250ZXh0Lm5vSW5k
ZW50KQorICAgICAgICByZXR1cm4gZnVsbExpbmUgPyBmdWxsTGluZS5tYXRjaCgvXihccyopLylb
MF0ubGVuZ3RoIDogMDsKKyAgICAgIGlmIChhbGlnbkNEQVRBICYmIC88IVxbQ0RBVEFcWy8udGVz
dCh0ZXh0QWZ0ZXIpKSByZXR1cm4gMDsKKyAgICAgIGlmIChjb250ZXh0ICYmIC9ePFwvLy50ZXN0
KHRleHRBZnRlcikpCisgICAgICAgIGNvbnRleHQgPSBjb250ZXh0LnByZXY7CisgICAgICB3aGls
ZSAoY29udGV4dCAmJiAhY29udGV4dC5zdGFydE9mTGluZSkKKyAgICAgICAgY29udGV4dCA9IGNv
bnRleHQucHJldjsKKyAgICAgIGlmIChjb250ZXh0KSByZXR1cm4gY29udGV4dC5pbmRlbnQgKyBp
bmRlbnRVbml0OworICAgICAgZWxzZSByZXR1cm4gMDsKKyAgICB9LAorCisgICAgY29tcGFyZVN0
YXRlczogZnVuY3Rpb24oYSwgYikgeworICAgICAgaWYgKGEuaW5kZW50ZWQgIT0gYi5pbmRlbnRl
ZCB8fCBhLnRva2VuaXplICE9IGIudG9rZW5pemUpIHJldHVybiBmYWxzZTsKKyAgICAgIGZvciAo
dmFyIGNhID0gYS5jb250ZXh0LCBjYiA9IGIuY29udGV4dDsgOyBjYSA9IGNhLnByZXYsIGNiID0g
Y2IucHJldikgeworICAgICAgICBpZiAoIWNhIHx8ICFjYikgcmV0dXJuIGNhID09IGNiOworICAg
ICAgICBpZiAoY2EudGFnTmFtZSAhPSBjYi50YWdOYW1lIHx8IGNhLmluZGVudCAhPSBjYi5pbmRl
bnQpIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICB9LAorCisgICAgZWxlY3RyaWNDaGFyczog
Ii8iCisgIH07Cit9KTsKKworQ29kZU1pcnJvci5kZWZpbmVNSU1FKCJ0ZXh0L3htbCIsICJ4bWwi
KTsKK0NvZGVNaXJyb3IuZGVmaW5lTUlNRSgiYXBwbGljYXRpb24veG1sIiwgInhtbCIpOworaWYg
KCFDb2RlTWlycm9yLm1pbWVNb2Rlcy5oYXNPd25Qcm9wZXJ0eSgidGV4dC9odG1sIikpCisgIENv
ZGVNaXJyb3IuZGVmaW5lTUlNRSgidGV4dC9odG1sIiwge25hbWU6ICJ4bWwiLCBodG1sTW9kZTog
dHJ1ZX0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>157486</attachid>
            <date>2012-08-09 10:43:19 -0700</date>
            <delta_ts>2012-08-09 10:43:19 -0700</delta_ts>
            <desc>Archive of layout-test-results from gce-cr-linux-06</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>230370</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">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
kab6d7gadsjX74Y1iONiXUCKlVCV/56IbUnqOrzmCHigYoxqy/X4mOdnNxtAGV1DbP5vknGdNGR9
B+xD6a5Ow8i4ukJBAylPPj3oM0hV8Sfrc/suGNVpIxqC6hn7GutdINoeEHciqpBheauspDYoY1Fl
IeXIo+UQCnXEHAJ5GDWHcDJsMHuziDCITcPRv/gwKcA5qORpBndVyt0uXQRdv6KhTb63po1zUcRe
I3E9VDPtbUaTJemTAXyicBf8CMHDPV2QeBdLFQ8e+iHJkCxIZlkCvk7mq07IE858glvDvl/FuYJ2
ittkYQMheAx7uMnz0/09l/hvknNbvx518+s/6rbP5XSX0SVlsyKWS7T65fHxC7+1Il414UA52Yye
OG7vjXWXcSF8KHUApJYUCsscHJ8PeaQtw/KdtLbITyRRpZ5w9StR+uiJLwEuB3JplRWwc6V2yB9I
vuKJH6yv4PIyD7argeTsnZNU33aqxfzsFhPelNtKV7SRsR1xqe+Rbz/4Qfz3f/0/UEsDBAoAAAAA
AM2FCUEAAAAAAAAAAAAAAAAdABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvY3NzMy9VVAkAA2Hp
I1Dp8iNQdXgLAAEE6AMAAAToAwAAUEsDBAoAAAAAAM2FCUEAAAAAAAAAAAAAAAAlABwAdG1wL2xh
eW91dC10ZXN0LXJlc3VsdHMvY3NzMy9maWx0ZXJzL1VUCQADYekjUOnyI1B1eAsAAQToAwAABOgD
AABQSwMECgAAAAAAzYUJQQAAAAAAAAAAAAAAACwAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9j
c3MzL2ZpbHRlcnMvY3VzdG9tL1VUCQADYekjUOnyI1B1eAsAAQToAwAABOgDAABQSwMEFAACAAgA
EIsJQW2BQNOIAAAAkQAAAGIAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9jc3MzL2ZpbHRlcnMv
Y3VzdG9tL2N1c3RvbS1maWx0ZXItY3NzLWtleXdvcmQtYXMtcGFyYW1ldGVyLW5hbWUtc3RkZXJy
LnR4dFVUCQADUPIjUGHpI1B1eAsAAQToAwAABOgDAAAdx0ELwiAYgOF7v+I71mWkS2jeZFh0yIUE
HSKG02+bsLlQO/TvG11envdJGWP8n7KkpCJHyig9VFxq3Wg+TJhoa2fXOrSLw1hYu2WElLsX3KQ+
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
1eorvqXPYcNDF5Tvk0WT/ca5x6Uatm0twzGiRHFAjKOm1yZy2PIUeqZyBFVwJQT1cYqRJXbMCgH3
fvNd2Gbe8oNAzQ3OdeYwvWEZsvOuJdtx5l339+qF6QMMk6ZQoRk1LkuiEyHZRh2B//7/UEsDBAoA
AAAAAFqGCUEAAAAAAAAAAAAAAAAdABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9VVAkA
A2zqI1Dp8iNQdXgLAAEE6AMAAAToAwAAUEsDBAoAAAAAACeGCUEAAAAAAAAAAAAAAAAjABwAdG1w
L2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9mb3Jtcy9VVAkAAwnqI1Dp8iNQdXgLAAEE6AMAAATo
AwAAUEsDBAoAAAAAACeGCUEAAAAAAAAAAAAAAAApABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMv
ZmFzdC9mb3Jtcy9yYW5nZS9VVAkAAwnqI1Dp8iNQdXgLAAEE6AMAAAToAwAAUEsDBBQAAgAIACeG
CUGIdonjdAAAAOEAAABHABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9mb3Jtcy9yYW5n
ZS9zbGlkZXItb25jaGFuZ2UtZXZlbnQtZGlmZi50eHRVVAkAAwnqI1AJ6iNQdXgLAAEE6AMAAATo
AwAApcwxCsMwDEDR3afQrqhaDF19FeMobcCxjSWX9PYlGAqdOz74fCICtqNxju86jEzUqIuObMpb
VOOt9kO5x/IQ1ryv0qmW9LxM8pJiJGeTZLLe7DRwiPj3MSYbMc9fCEB+8YB+uUMIDmbpYC9t2Jc4
ib8E9wFQSwMEFAACAAgAJ4YJQW44QF/KAAAASAEAAFYAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0
cy9mYXN0L2Zvcm1zL3JhbmdlL3NsaWRlci1kZWxldGUtd2hpbGUtZHJhZ2dpbmctdGh1bWItd2Rp
ZmYuaHRtbFVUCQADCeojUAnqI1B1eAsAAQToAwAABOgDAABdj01OxDAMhfc5xUMs2LV7CDkFF3AT
N40mTarEmdEIcXfSlpGAjf8++9nWC5Mzuso9shkcR3xiInvxJbfkXvE8E73hCwM59x/RvCM9nsN6
PKW2wuZjCRXCVbpdSMBXTj12Ob0IbE4SUmNIhlDxLCDUGByX3t3WCWFGEHSJfg8LO9yWEBmukPch
+QEK6pH8TKo1t8prvrLSdaMEG6nW9y5gDuLyLfVLOzF/GvpbJqStyQOqY+cvYWVjsJe9MDWRnNTp
cJSflNLj/vE3UEsDBBQAAgAIACeGCUGhUopzdwAAANoAAABJABwAdG1wL2xheW91dC10ZXN0LXJl
c3VsdHMvZmFzdC9mb3Jtcy9yYW5nZS9zbGlkZXItbW91c2UtZXZlbnRzLWV4cGVjdGVkLnR4dFVU
CQADCeojUAnqI1B1eAsAAQToAwAABOgDAAB1zEEKAjEMQNF9TpEDFCmiN5kLFBucQicpTVrx9lYr
gwtnE8InecuaFI3UxlyDoeYUqeJN2KpkxTsZbtKUojzYzXWTTg4Tl2YOA8dZW0HqxAN6p1KlUM1P
1AGkEXvIjU4AuwA7C/6nflj4inDxfx/m0fXw7ewBXlBLAwQUAAIACAAnhglBNlUZ5V0AAACUAAAA
SQAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLW9uY2hh
bmdlLWV2ZW50LWFjdHVhbC50eHRVVAkAAwnqI1AJ6iNQdXgLAAEE6AMAAAToAwAAhYzBDYAwCEXv
TMEETuHFg/HiAk2LlqShpqDzS+0AJoTk/f9gz6xopOY7B0MtnKhhrGKtFsWTzAvCKjEHOQnpITEM
kobPPor6ZYf5ZZfnbV3kum3IEwB3gvHhF+AFUEsDBBQAAgAIACeGCUHjpUUcowAAAAcBAABJABwA
dG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9mb3Jtcy9yYW5nZS9zbGlkZXItb25jaGFuZ2Ut
ZXZlbnQtd2RpZmYuaHRtbFVUCQADCeojUAnqI1B1eAsAAQToAwAABOgDAABljsEKAjEMRO/9ioD3
3bvWnrx4EC/+QGyz22JplyYriPjvtvakQggk82YY7Qmd0SyPSGZwFOEJV7S3ueQ1uS1sJsQdvGBA
534lnJqkx27WY49aCpmLDwxCLHV7FOAYHBWwOUnJkWEmqQJBTtZjmgnoTkkAk+t8qMPAn98k1dng
w/l0TMsqHR6UCu1SPeH70LxgAhuReV+Lm3+ytq6IUUqPrfAbUEsDBBQAAgAIACeGCUH4DY2hcAAA
AKgAAABHABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9mb3Jtcy9yYW5nZS9zbGlkZXIt
bW91c2UtZXZlbnRzLWFjdHVhbC50eHRVVAkAAwnqI1AJ6iNQdXgLAAEE6AMAAAToAwAAZYxBCsMw
DATveoUeYIIp6U/yAVOLxOBIxpJd+vs4Teill91lFmbZkqKR2sgtGGpOkSq+hK1KVlzJcJemFOXN
7pq7dHKYuDRzGDhetBWkTjxEJypVCtX8QR2CNGAPudEE8DPAVwD+7tn/Xc+7Hx7gAFBLAwQUAAIA
CAAnhglBtNtAf3YAAAC0AAAAVgAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvZm9ybXMv
cmFuZ2Uvc2xpZGVyLWRlbGV0ZS13aGlsZS1kcmFnZ2luZy10aHVtYi1hY3R1YWwudHh0VVQJAAMJ
6iNQCeojUHV4CwABBOgDAAAE6AMAAE1MSQ7CMBC7zyvMiRuv4QNpMyQj0glKnPJ9QgGJizfZvmbr
oHZOzIHQXX3qWP1MrNVpPhSsYGhJiYBeLGqb7bEtsBuMmBdRi1IjntmKIraQknm6QCA/813KVkfX
re4q5o9BkWP7V5C12Hp/B8sgq8uHcMQnkRdQSwMEFAACAAgAJ4YJQWgJvRl3AAAAuAAAAFgAHAB0
bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2Zvcm1zL3JhbmdlL3NsaWRlci1kZWxldGUtd2hp
bGUtZHJhZ2dpbmctdGh1bWItZXhwZWN0ZWQudHh0VVQJAAMJ6iNQCeojUHV4CwABBOgDAAAE6AMA
AE1MSQ7DIAy8+xXTU299TT9AwCVWwJbAJN8vTVqpl9k0M89VOpy7T1yDg3fWqZPp3RFNXXQw3OCh
ZXYE9CKJ22yPukBeEMe8SFzYOeFYpTBSCzmL5gcI9DPfJVUbnavtfKlkhxKd+78SxSJx+wTLcDel
i3DGN6I3UEsDBBQAAgAIACeGCUFVUGnubAcAAFkaAABPABwAdG1wL2xheW91dC10ZXN0LXJlc3Vs
dHMvZmFzdC9mb3Jtcy9yYW5nZS9zbGlkZXItb25jaGFuZ2UtZXZlbnQtcHJldHR5LWRpZmYuaHRt
bFVUCQADCeojUAnqI1B1eAsAAQToAwAABOgDAAC1WVtv2zYUfs+vEBJ0AYpItmM7je3Uw5oL9rAN
A9L3gJIoiw0laiTlxNn233d4kyVZsl00W7Fa4uXwO+d850L1JpUZXZ7cpBjF8CPkhuLlyZyS/PnC
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
4+vXhzdQSwMEFAACAAgAJ4YJQUsxotHQAAAAsQEAAEUAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0
cy9mYXN0L2Zvcm1zL3JhbmdlL3NsaWRlci1tb3VzZS1ldmVudHMtZGlmZi50eHRVVAkAAwnqI1AJ
6iNQdXgLAAEE6AMAAAToAwAApc1NbgIxDAXgvU/hfcYEWpBYziF6gWjGwEiZJIqdKdy+6aSlP2LH
xrKcl+8REVqdk/XuFouSsihlluJV7MmJ2lPMs9jswpmt+GnkTHMswsQLBxXia+JBedzoVRGMMU96
btDifNP6HmnX7Y5o6nzFvgd8u0yCn2qdF6fYCBxi0By94JkVV2+M76Fr6xwX7nAKqWiHLoztWhK2
yvWUckyc/Q2lAlM9Ls4X3gDCjwF0l8GsHOD2ezP77e9oq/v6URJQfabH0uEePvyJ/BPwpRbAB1BL
AwQUAAIACAAnhglBSF8/A2QIAACxJgAATQAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3Qv
Zm9ybXMvcmFuZ2Uvc2xpZGVyLW1vdXNlLWV2ZW50cy1wcmV0dHktZGlmZi5odG1sVVQJAAMJ6iNQ
CeojUHV4CwABBOgDAAAE6AMAAN1aXW/bOBZ9z68QEnQCDCLZiu00tlMPdpIG+7AzWKB9LyiJsthI
opak4rgz+9/38kuWZMlWpm4x3SmmlkSKPPfr3EOhd4nI0tXZXYJRBD9cbFO8OlukJH+6chbPhBOB
I+ePMwf+E/hFuBEOKUOC0Hzh5DTHSzUUUBZh5gZUCJotHL94cSK4xtHy7L9nejmzSEhTyhbOxXgy
V2PeI0nxA4ljMx6g8GnNaJlHrp0a38o/9Y30DpymJHIuoijSYzHNhRujjKTbhZPRnPIChQZghtia
AGQfZ85YPyooGKfsYDgFi56xApT4LaSTyaRjfY5y7nLMSFwb5OQLVnvUN3VTHIuFM/Zm9nlEeJEi
WESgIMVuiNNUD2xIJBJYYDx+YzCiKCL5unpb4zPhkVfNCBnIJE8AmKimJ/QZs5ZVs9ls2edwjLUr
PBmXf8Fe3LwcpxSBKYysE9GMnpx1Dy5AJK+2ouB+IsDM8RGzjZWuWrfhqU0C1rkqjjLdNgwVO2Qf
cCjj15s46uVm2rRTxuSt9Tsk1bh40Tu8fykgxLA+mIavHE/+tC3shcdJhIOt/NtRUH9Nafj0b8SE
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
7WnKPSiHwSSc2sZr//XENw49QT65vLxsUMLJ+dXl1fyql8OgRe1Pl81m06f1kuSl2rXR5ZqhzsoQ
XkFTRzFO6OJ8fO64LWYEiy+mhfAXCj1i7l2ZXvJu5D7dvZOxoCWARsTvjzOlSrkcjfBX/BBuOd/C
ppJKnRtmbMRoJEdf/6yI2I0m4Sw8cz/CnBbhV3m8BrlG3hq1Jcc8IYGOIbmHdd8BlHQw38+mjS2g
lPusqFtDeEDCgd5Yyven/j5xqr89TtYjlZcjQAC4KVAEmBeAVzElRynQ8AjMBuCax4/FL4LDTV7K
ALqWCrNQQd2CgyZt+Y3vQ6eHM+bePjSu7/MIkNOZ19cZ1P4I5BYB/RR+lfkEsG8dTtffFJEsV+AT
WLRuLQU6aC6c9K6Bqny6vvj5p+ufP23Q58319YcfNkuzDy2W6LcixpWmmBuoUhshNG4ucFFwSzil
gBuAAASeQsxOEU9RUTHmzoHogHX+0bS0AbbTtZt2a/+zH2UGN5jnXfmsGycv8ODZsAc/fNr8erNE
NwAtYAUpCfSZv/PoKyAEfbz5/OkK2pENI7pg/NH1z/9T/OwFik+HFf8/weo8TBJCppgP/v8CUEsD
BAoAAgAAADmGCUHW0dp5LgAAAC4AAAA/ABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9s
b2FkZXIvbG9hZEluUHJvZ3Jlc3MtZXhwZWN0ZWQudHh0VVQJAAMu6iNQLuojUHV4CwABBOgDAAAE
6AMAAEFMRVJUOiBUZXN0IHBhc3NlZDogW29iamVjdCBIVE1MRm9ybUVsZW1lbnRdCgpQSwMEFAAC
AAgAOYYJQWyjKvK+AAAA8AAAAD0AHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2xvYWRl
ci9sb2FkSW5Qcm9ncmVzcy13ZGlmZi5odG1sVVQJAAMu6iNQLuojUHV4CwABBOgDAAAE6AMAAF2O
MU/DMBSE9/yKkxi6NTPGRKoqF4aUSiRMiOHVfmkB17aenSFC/HdcdWM76e67O31mcp3OZfHcrR17
/OBI9vskcQ5O4W4iesAv1uTcf4umq6XbG6zbW1WSqnOiAOsp58cKdtvDy3DoDfZmGDZPRsF/Bsa9
wluwNJ/OBeOS2IhEUdhSCLEgc0GSmFjKglUWu0KcEGbv62Kt75pNb15HhZFzTdYprqfe4/GLbcHz
uO93US7G84VD+Wga3V6f/QFQSwMEFAACAAgAOYYJQSkmd2l0AAAAfQAAAD0AHAB0bXAvbGF5b3V0
LXRlc3QtcmVzdWx0cy9mYXN0L2xvYWRlci9sb2FkSW5Qcm9ncmVzcy1hY3R1YWwudHh0VVQJAAMu
6iNQLuojUHV4CwABBOgDAAAE6AMAAA3KOw7CMBAFwD6neF3OgLsoMlA4RMKmQhTGLD85Xmu9KXJ7
mHrG+eRnZzFZ74eDNcifQtgZXEqK6+utCFslK8JiMMZSWNFIUYUriW7om6Qe/ERZc+4GZ8/BIFD7
l9gaPQyufP9SUhzD5PYsi820UNFb1/0AUEsDBBQAAgAIADmGCUE0XQbmxQAAABoBAAA7ABwAdG1w
L2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9sb2FkZXIvbG9hZEluUHJvZ3Jlc3MtZGlmZi50eHRV
VAkAAy7qI1Au6iNQdXgLAAEE6AMAAAToAwAAnY+9TsMwFEZ3P8W3dUhNVJjwlKoyP1JKEQkTYjDJ
7Q9ybOv6WmrengjegOkMn3T0Ha01aplS7d0ci2ihLJopFy+5ProstY9uJP7Fc3jleFrWrOmaaBAa
b+QqUFVV/cviBinO/zmaBnqzvkW1Wd+haVS1O7x0h9Zib7tu+2gN/CUQ7g3ew+DK6Szo50SWObLB
zoUQBZkEiWMilhmrzMMK8YhQvFfYtvatN+iXb0guZxoNPuLX99KBp37fPkSerKeJgnwqqB9QSwME
CgAAAAAAW4YJQQAAAAAAAAAAAAAAACEAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L3hz
bC9VVAkAA23qI1Dp8iNQdXgLAAEE6AMAAAToAwAAUEsDBBQAAgAIAFuGCUGBSnetSwAAAKwAAABM
ABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC94c2wveHNsdC10cmFuc2Zvcm0tdG8tZnJh
Z21lbnQtY3Jhc2gtc3RkZXJyLnR4dFVUCQADbeojUG3qI1B1eAsAAQToAwAABOgDAAC1zLENgDAM
RNE+U9wKtGzjwAVZcmxkLOZHomAD6q/3t5inmpSGg5mRK4YaAVMnFtA46YVbUqUbW3LnUNdXxMBh
0cW+juJVbfvl+gBQSwMEFAACAAgAWoYJQVBdSDeMAAAA+AAAADgAHAB0bXAvbGF5b3V0LXRlc3Qt
cmVzdWx0cy9mYXN0L3hzbC94c2x0LWRvYy1lbmMtc3RkZXJyLnR4dFVUCQADbOojUGzqI1B1eAsA
AQToAwAABOgDAACtjsENwzAMA/+dQgu4evSXGfrsAoqjNEJlK5BlpN2+SbNCPwTJAwhmK6sohVgF
djcfYBblnwyIWGrgUwI3Hl8SKS9uRXpJvDW808d6PLhFw5la4LspOjfrnrkdKdJIU5KymkfqLte9
A5XKcANWLlwDTnrZyXBaGKBXGvcTYaBG0z/OVGs9L8cQBalevlBLAwQUAAIACABahglBUF1IN4wA
AAD4AAAAPwAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QveHNsL3hzbHQtYmFkLWltcG9y
dC11cmktc3RkZXJyLnR4dFVUCQADbOojUGzqI1B1eAsAAQToAwAABOgDAACtjsENwzAMA/+dQgu4
evSXGfrsAoqjNEJlK5BlpN2+SbNCPwTJAwhmK6sohVgFdjcfYBblnwyIWGrgUwI3Hl8SKS9uRXpJ
vDW808d6PLhFw5la4LspOjfrnrkdKdJIU5KymkfqLte9A5XKcANWLlwDTnrZyXBaGKBXGvcTYaBG
0z/OVGs9L8cQBalevlBLAwQUAAIACABahglBbUfUXoUAAADxAAAAPQAcAHRtcC9sYXlvdXQtdGVz
dC1yZXN1bHRzL2Zhc3QveHNsL3RyYW5zZm9ybS14aHItZG9jLXN0ZGVyci50eHRVVAkAA2zqI1Bs
6iNQdXgLAAEE6AMAAAToAwAArY6xDcMwDAR7T8EFFBbpNEPKLCDLdExEEg2Sgp3t7cQrpHk8/ou7
LHXlkpylAamKRpi50C8iItbm+GLHjcY3e8iLSuVeA22Gj/SR7k8yN5yTOe5WUMmkaybDfdEwSb6d
KxRuBHegQpWaA9dV1IfziVeFCL2l8QS7QJE0/VEgXAiavibDAVBLAwQKAAAAAAAFhglBAAAAAAAA
AAAAAAAAJAAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvY2FudmFzL1VUCQADyukjUOny
I1B1eAsAAQToAwAABOgDAABQSwMECgAAAAAACYYJQQAAAAAAAAAAAAAAACoAHAB0bXAvbGF5b3V0
LXRlc3QtcmVzdWx0cy9mYXN0L2NhbnZhcy93ZWJnbC9VVAkAA9LpI1Dp8iNQdXgLAAEE6AMAAATo
AwAAUEsDBBQAAgAIAEqLCUFdr6t/xgAAAOABAABKABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVyLXByZWNpc2lvbi1mb3JtYXQtZGlmZi50eHRVVAkAA7zy
I1C88iNQdXgLAAEE6AMAAAToAwAArc+/asMwEMfxXU9xu3pRKS2dAg7BnRpqsF/gIp8Tg/wH3al1
3r6hJvUS2gxZNH1/n0OICE670QU6DUlRWRQjSwoqriFR56n/JHFfvD8EJ0eqOeIY2bfSDj02Q+xI
kaeRvXK90knBWGvvgZLXRGEmswzw5fHhGez5fYUsM1BsyhLmbXGZvv0sV5H6A+/aHtbr68XTkrQC
GhPf4NH0r3dObvF+v/oHuDQX0c5i8p5FmhTCqaAoXC8nja3ysoLtx654z6vcWPMNUEsDBBQAAgAI
AEqLCUEfGWN5+wEAAA4MAABOABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMv
d2ViZ2wvc2hhZGVyLXByZWNpc2lvbi1mb3JtYXQtZXhwZWN0ZWQudHh0VVQJAAO88iNQvPIjUHV4
CwABBOgDAAAE6AMAAL2WUWviQBDH3/spBp+uUKQtReTAg3BGDSQqmtZ7kzWOSe7WXdnd1Prtb5LW
84TEy/YwLyGQmfn/9r+7M1ngauiDTtgaFewURqlOpYCNVFtmwKA27ZubiQCdRRFqfQcHmcE+5Rw0
IjB6qhQ1yA20ps583oItRbEYKXIjOZd7XMPqAK3QnYfwfRJMfTd0W1QzpNIaTEIqi5xhXiBMjwSD
d4CIM62BiTXEaMpD9lL9onpFwfd6laEKTaYE1bskKVc/McpXna8HYt6uKveFvr24s9D9sZyPnL47
u8uj/cliOfAnTngLqdCGiQjJnAt6KbmgMvykXOD2veegScWRNxw1qZcb6o2btbMxvcLMK6kNZs4w
cMdhY6ezTPDa57NM87ontMrWBnfxuqe00tJP6NXpyiZRcp83eUClpKLpYhKSeWU8XcOOKbZFg0rX
7MhH0gL77MLdEoJAxQyNJHzbUZOnFxp+hepX8MYvju/1l+74OWj/DX5hmcSY0fRjCmkQCp2uOB4x
dVlCWzERY5AK+NaDh/NduZTA3monnGY4ZXTrS3wwPVlDPVlTPdzbYnUebbHqZZxjdWyxurZUXTuo
Xg+srbIx92MH7xug6lhTdf6DyuZn0CR0eanH0EsqYsBXVAeIGOc1bzIJl0Y8nkJslv6vchRi60tF
vVPMH9t+A1BLAwQUAAIACABJiwlBwVQFlKkAAADVAgAAUQAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1
bHRzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLXZlcnRleC1hdHRyaWItemVyby1pc3N1ZXMtc3RkZXJy
LnR4dFVUCQADufIjUMvpI1B1eAsAAQToAwAABOgDAADN0L0OgjAcBPDdp/iPuhDaQovdiEHjIJjG
xIEYUtoCTfgwtA6+vcTVB5Dlcrf9ciWOKeLfIATjEBNKMUOIZ0IUgre9cbhSg660UZM2c6DUNkaI
7B5wzcSxEJc0P2RwT0V+zk8cUu9nW7+8gRCsA22drHujA7h1y+ykA2fbsbFKjh6eZm6meZCjMksf
Ze/fm/IXxGhEyZpACSNsVQ/tk4isCcTCPaX0b6APUEsDBBQAAgAIAEmLCUFYCAFX2wAAADQBAABF
ABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRh
dGlvbi1zdGRlcnIudHh0VVQJAAO68iNQzOkjUHV4CwABBOgDAAAE6AMAAI2PQWuDQBSE7/kVc2wv
QV2Tlr1JY0UwWpbQHkKRzfo0C7qG3ZeW/vvaQG899DLMDHP45phstrG8iRBJEiXpgxBp9ChzpRol
h5FC0pqpazsyc0d+bczdJo7F/TtecvXcqH1WP+V4y1Rd1oVExuzt6cqECDags0GfRurWOJyXeNYB
wQ6ut0Y7xoV8P/tJO0OLd3rkr9XxD6A0EvE/gIoKtxFkUbVl/ZpV5a5tFszsUDY1JIZx5/VnPtJE
joOEZqbpwuAZ2hgKAfOVMffw2g2ED/JslxrW/Ux/f62+AVBLAwQUAAIACABKiwlBGUuLE7UHAADB
GwAAUgAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvY2FudmFzL3dlYmdsL3NoYWRlci1w
cmVjaXNpb24tZm9ybWF0LXByZXR0eS1kaWZmLmh0bWxVVAkAA7zyI1DO6SNQdXgLAAEE6AMAAATo
AwAA3Vlbb9s2FH7PrxASdAGGSrZjO4vtxsOWC/awbgWS94KSKIsNJWok5djd9t93eJMlWbK9tcOA
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
xuXSDu+H4jT8A5EeBb+bdDCM3+ShKBanhHJ8LJRlFIFiJiWlW7BRQM/+X0TmqzHD+JSgTPqD8n/H
w7Tf9eeHp2fv7tf3H35+eH74W2X/lW28/nfS0/rQagoap//l7i9QSwMEFAACAAgASIsJQYoFpzzF
AAAASgYAAE4AHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3
LWFycmF5cy1vdXQtb2YtYm91bmRzLXN0ZGVyci50eHRVVAkAA7jyI1DK6SNQdXgLAAEE6AMAAATo
AwAAzdBNCsIwEAXgvaeYpW4kmWljzK6gSKFYKeJGpMQ0loJaSaPi7f3ZeoHZDLzhLT7eHlMlze8Q
IQrERM8wScyyqsrKtGc/YO0uTd141zc+TJ0bp1LS5ACrAn4lMKuizte7rMgXdblZVtk2L9dgoD0v
gn1mIdjXYMDG6C+3CLEH65wfBujvEfoTBHttPTx8iN3nDd31Ww3d8R49iNH+HzgXmCjeQC14L0iC
eC9IpCVv4EwSY2AqPgF5A+dasQYqIsEbqDQf4BtQSwMEFAACAAgASIsJQdsxOB2LAAAA/QAAAEQA
HAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2NhbnZhcy93ZWJnbC9lcnJvci1yZXBvcnRp
bmctc3RkZXJyLnR4dFVUCQADuPIjUMrpI1B1eAsAAQToAwAABOgDAACLNjI1M7QCE8bGRkYGRkYW
ZuZGpgZWrkFB/kFW6TmpxUbxybkp8SmpyfkpqUV6yckapoaGxpqxCu4+CmBFClbuPvGefmGOPp4u
8UAy1FXBSiE9xz21xDG5JLMs1bGkpCgzyUohMy8ltUIhv7REIT9NoSgxLz2VKxqL7RaGRhZUtD00
LzMtvygXq/UAUEsDBBQAAgAIAEqLCUE5aca6DAIAAD0MAABMABwAdG1wL2xheW91dC10ZXN0LXJl
c3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVyLXByZWNpc2lvbi1mb3JtYXQtYWN0dWFsLnR4
dFVUCQADvPIjULzyI1B1eAsAAQToAwAABOgDAAC9llFr4kAQx9/9FINPVyjSliJy4EE4owYSFZPW
e5M1jknu1o3sbmr99jeJFSskXraHeZGAM/P/7X93Z3aBq5ELKmZrlLCTGCYqSQVsUrllGjQq3Wm1
pgJUFoao1D0c0gz2CeegEIHRr0xQQbqB9szy/TZsKYpFSJGblPN0j2tYHaAd2H4AP6fezLUDu001
AyqtQMekssgZ/AJhdiIYHgFCzpQCJtYQoS4P2afyD9UrCh7rVYZK1JkUVO+aZLr6jWG+6nw9EPFO
Vblv9N+rPQ/sX0t/bA3s+X0e7U4Xy6E7tYI7SITSTIRI5lzRS8gFmeEX5Tx74Lx4TSqOndG4Sb3c
UGfSrJ2N6RVm3khtOLdGnj0JGjudZYK3Pp9lmrc9oVW2NriLtz2llZZ+Qa9OV9axTPd5kweUMpU0
XXRMMm+MJ2vYMcm2qFGqmh35RFpgX1y4O0IQKJmmkYTvO2ry9EHDr1D9Ds7k1XKdwdKevHidz+BX
lkmMGU0/JpEGoVDJiuMJU5UldCQTEXqJgB99eLzclWsJ7L12wnmGU0avvsQH07Mx1LMx1eODKVb3
yRSrXsYlVtcUq2dK1TOD6vfB2CoTcz928KEBqq4xVfc/qEwegzqmy0s9hj4SEQG+oTxAyDiveZNJ
uDTi6RxisvR/laMQU18q6p1jLgseX/qbjPPDjElFTfJs6+dXfKv1F1BLAwQUAAIACABNiwlBeZwN
SYkAAACRAAAASgAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvY2FudmFzL3dlYmdsL3dl
YmdsLWNvbXBvc2l0ZS1tb2Rlcy1zdGRlcnIudHh0VVQJAAPB8iNQ0ukjUHV4CwABBOgDAAAE6AMA
AB3HTwuCMBiA8Xuf4j3WRfZHRXaTsOjQjBF0iJC5vepAZ2zr0LdPujz8nicrSir+4Zwxwkme06oq
RaNUq8Q4Y2SdWWxn0awWQ2bMvqCUH15wa9SpVddaHht41Epe5FlAnVJw/SchEHARrIu6n9FmcJ+2
nXSE6EY/OKN9gjeGYQ2L9gY3ez2n7+4HUEsDBBQAAgAIAEiLCUHWEm4BAAEAALMJAABQABwAdG1w
L2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wvZHJhdy1lbGVtZW50cy1vdXQt
b2YtYm91bmRzLXN0ZGVyci50eHRVVAkAA7jyI1DK6SNQdXgLAAEE6AMAAAToAwAAzdZNa4QwEAbg
e3/FHLuXkm9jbgsriyBrkdLLUkRjFEFNibH9+7Vbettr6VxyGObwMBPe5MqkouZ2cM4YYUwmmhBu
sqoqKzNMbmW1nbu6c9Z3LjxZ+ygp5Yc3OBdwawJzLur88nos8lNdPmfV8SUvL2BgmE6h+cwmN7sl
rgZCswwO/BbB99D6belW6H2Adut7Fx6u9ygqJUgoKZUUCyWRCgdFU80lEgqjAg1FcI2EwjVFcm21
oJJhoWj9J7nSxOjm9wjRQ2OtW9df1o/xw4U47mUYl+/WMLZbdEDuEdM9/JAsLlU0kcinpaRQ2Ikp
EciJCUM/xf1LgCRaUy3Ufzw4X1BLAwQUAAIACABLiwlBsEkqxEABAABzDAAASQAcAHRtcC9sYXlv
dXQtdGVzdC1yZXN1bHRzL2Zhc3QvY2FudmFzL3dlYmdsL3R5cGUtY29udmVyc2lvbi10ZXN0LXN0
ZGVyci50eHRVVAkAA77yI1DQ6SNQdXgLAAEE6AMAAAToAwAAzdZBS8MwFAfwu5/iHfUyXl6TNOmt
aC2D2UlxehhSujbrAl0rbSb67a3z6mEHsbmEBALvF977Q7YkJIvOSxAQIakgDDXyKMnzdR41rRmp
qI51UZuqr82wqKprwVhw8wqPSX6/zh/i7DaBlzjPllkaQezcYHcnZwDBjlDbsdy1pl7A02E6HsoR
Rtt0e1uVnYM3M+z74Vh2lZn2Xdm6z6vtLyBFYegXiKP0CyTEJaB0BedLEKWrYpk9x6vlXTGtmwQi
aNrUuLhy9t38GCOwXW0+oD856PcwlF1jfq+uUfxh9U1nvx99aXklFHnVDSWZJL9ApLRfII7BbPOq
ZIh6vnnVWiLzqBscEUP0C+TXvE4groRfIMnIL1AY0FyJ5shQz5dozpjQXiWaEfoVIEak0S8Q9+rT
MIGE4LMFiJEm+U8B+gJQSwMEFAACAAgASosJQWWTmR9bAgAA3QwAAEwAHAB0bXAvbGF5b3V0LXRl
c3QtcmVzdWx0cy9mYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItcHJlY2lzaW9uLWZvcm1hdC13ZGlm
Zi5odG1sVVQJAAO88iNQzukjUHV4CwABBOgDAAAE6AMAAL1X72viQBD97l8xeHBcocS2FJE2CnJG
KxgVTdv7Jmsy+XFdE9nd1Eq5//0mCZL2Tj2Tw3wJITvz3tu3uzNZ3UfmdHSpthw7moMc3mHJ7BdP
RHHo3MEXl7F7+AUac5w/h5ibDOmNLFlvZFBrgZ1nXA5GIH3moAD6YAcyiEJwI7FiChRKpdVqkxBk
bNso5SVsoxg2AecgEYHRUwQoIXKhPu3O53VYURTzkCLdiPNogw4st1C3jLkF3yfmdGRYRp0wLYKW
oHxiSTXMUwnTnYJ+JsDmTEpgoQMeqv0hm0i8EF4KmOEdDBWoYhES3jHKaPkT7WTWyXzA49ohuG80
9mTMLOPHYv7Q7RmzyyR6NHle9EeTrnUBQSgVC20kc47wBeSCiLEknWn0ho9mlYwPw8FDlXyJocNx
tXZWxpeaeSa2/qw7MI2xVdnu3Ed47v25j/O8O/SQrRWu4nl36UFLS/CdUpWVL6JNUuQBhYgEdRfl
E80r44EDaybYChUKeWJF3ilNZX86cBckIUTBFLUkfFtTkacXan4p6x0Mx0/d0bC3MMaPpvZR+JFp
ksaYuh8TSI0wlMGS406m3JegCRZ6aAYhfPXUfRuuPy/MsRz2ViQn7+RZUut0olzcbRl1t2XkXV+V
0Ne8KaHvtKS/9DVL6GuVkNcqpq7dhjLOFbE7X9mrarQ1y2hr/oe2In+OyqeTTgWJXoLQA3xFsQWb
cX7isSfivRE3eUiR2f8LjkKK+nIAL4/ZAepyTSU7/UFv05WjkxFk1wQ35nw7ZUJShc1t/ngFoLsI
pXdqNb2RXEN+A1BLAwQUAAIACABJiwlBQfG3f6kAAACMAgAAVAAcAHRtcC9sYXlvdXQtdGVzdC1y
ZXN1bHRzL2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24tY29waWVzLWluZGljZXMt
c3RkZXJyLnR4dFVUCQADuvIjUMzpI1B1eAsAAQToAwAABOgDAADNzs0KgkAUhuF9V3GWtQmdH8XZ
CYoIoiHRJkJsPImgTswc6/Yr112Am2/x8S6eK5OBr9bhnDGPCRnKMAxUWtdVrfoRHWv01DUdatOh
PWq9l77PDzfIClgjUFnR5OUlLvKkqU5pHZ/zqgQF/ZjY9p2OOOFMTkFLhNOTgAy0WqNzYBYC8wDb
zj3CCy0N3xuG+Zfa4b4Qgre7/iEGgkdbJ0aCb5wYRoJtiPgBUEsDBBQAAgAIAEmLCUGqsMsvngAA
AEYBAABfABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgt
dmFsaWRhdGlvbi12ZXJpZmllcy10b28tbWFueS1pbmRpY2VzLXN0ZGVyci50eHRVVAkAA7ryI1DM
6SNQdXgLAAEE6AMAAAToAwAAzY7LCoJAFED3fcVd1iac8VHOTlBEEI0h2kjINN5EUCdmrvX7les+
oM1ZHM7iNDyMmFjh+5x7PIiC0IuPIpOylqIf0fFWT13boTYd2r3W25Axf3eFvIQ1ApGXbVFdkrJI
2/qUyeRc1BUI6MfUqlc24oQzOQGKCKcHARlQWqNzYBYCcwer5h7hiZaGj4Zh/qZ2uC2E4G2aX4sH
Fv/R4htQSwMEFAACAAgASYsJQfshyJ2WAAAA+gEAAEQAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0
cy9mYXN0L2NhbnZhcy93ZWJnbC9nZXQtYWN0aXZlLXRlc3Qtc3RkZXJyLnR4dFVUCQADufIjUMvp
I1B1eAsAAQToAwAABOgDAADFzbEKwjAUQNHdr3ijLpLmNUayFSylUBQKdSkSNHktgbaBGMXPVzo7
OIgud7pwWi42iZqDyDnjyFAyyVRe14da9QNduTaj1ZaMtxTWxixFkuDqBEUF8wSqqHS5P2ZVudOv
Njko6IeCYmaiu1Mzuc6HUYGbLD3A3yL4DsJ56mnRvuOlTP/Hp1xs8Yt8FmNwl491ZOJH+hNQSwME
FAACAAgASYsJQUnOzVGTAAAAIgEAAFEAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9nbC1iaW5kLWF0dHJpYi1sb2NhdGlvbi10ZXN0LXN0ZGVyci50eHRVVAkAA7ny
I1DL6SNQdXgLAAEE6AMAAAToAwAAxY6xCsIwFAB3v+KNupQmsRWzBaniYCtBcChS0uS1DbSpJHHw
7y3O7i7H3XY1zXLCv2CM0pQyQrKcMl5IWUnejxhooyfTGNSzQZ9ovc4IYZsHXAt5rORFlIcC7kKW
5/LEQcTobfuKCCnYAMYG1Y5oErgNSw4qQLC966xWLsITfTf7STmNizs1xveq/jG0Z7vt34Y+UEsD
BBQAAgAIAEmLCUHeq/pMzAAAAKIBAABKABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9j
YW52YXMvd2ViZ2wvaW52YWxpZC1wYXNzZWQtcGFyYW1zLXN0ZGVyci50eHRVVAkAA7ryI1DM6SNQ
dXgLAAEE6AMAAAToAwAAxY5Ni8IwFEX38yvectxImxplsqtaS6FWCfOxECnPl9gGYipJZsB/b3G2
LmY3m8u9cOGcA+PzVDwiyxhL2Owt4Wm2EIWUOyk6qwNr6aJapWlQ2k+JXnmaZpMjlDU8TiDKuq2a
z7yu1u2YHwUI6OzSOJXH6M2pHgijGZyAyv2gNQqoR48UtX85POPzGf8Df1/IzU5u82ZVwFcum6op
BfwSv6OGBEwAZQKerFZTeO/H2WOAYDp3NoQuwlX78+Av6EiP3aGNt+dCc578m9AdUEsDBBQAAgAI
AEqLCUGvqz0rWQAAAF8AAABKABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMv
d2ViZ2wvbnVsbC1vYmplY3QtYmVoYXZpb3VyLXN0ZGVyci50eHRVVAkAA7vyI1DM6SNQdXgLAAEE
6AMAAAToAwAAizYyNTO0AhPGxkZGBkamBgbGRqaWVq5BQf5BVuk5qcVG8cm5KfEpqcn5KalFesnJ
GqaGhsaasQruPgpgRQpW7j7xnn5hjj6eLvH+Aa5BjiGe/n4KVkDIBQBQSwMECgAAAAAAIIYJQQAA
AAAAAAAAAAAAACgAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2ZpbGVzeXN0ZW0vVVQJ
AAP76SNQ6fIjUHV4CwABBOgDAAAE6AMAAFBLAwQUAAIACAAghglBnIrMrGUAAABtAAAAOgAcAHRt
cC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvZmlsZXN5c3RlbS9vcC1jb3B5LXN0ZGVyci50eHRV
VAkAA/vpI1D76SNQdXgLAAEE6AMAAAToAwAAi7Y0MLICYWNjQ0tzC1MTIzMDIxMr16Ag/yCrtMyc
1PjiyuKS1Nz4lMyi1OSS/KLK+JTEksSkxOJUveRkDQtTU81YBefEPPUShaLU3PyyVIVEBbhShfLM
kgyF5IzMnJSi1Dw9LgBQSwMEFAACAAgAIIYJQZVGAWNlAAAAbQAAADoAHAB0bXAvbGF5b3V0LXRl
c3QtcmVzdWx0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtbW92ZS1zdGRlcnIudHh0VVQJAAP76SNQ++kj
UHV4CwABBOgDAAAE6AMAAIu2NDCyAmFjY0NLcwtTc0NTU2MjK9egIP8gq7TMnNT44sriktTc+JTM
otTkkvyiyviUxJLEpMTiVL3kZA0LU1PNWAXnxDz1EoWi1Nz8slSFRAW4UoXyzJIMheSMzJyUotQ8
PS4AUEsDBBQAAgAIACCGCUFXTNfjZQAAAG0AAAA8ABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMv
ZmFzdC9maWxlc3lzdGVtL29wLXJlbW92ZS1zdGRlcnIudHh0VVQJAAP76SNQ++kjUHV4CwABBOgD
AAAE6AMAAIu2NDCyAmFjY0NLcwtTcwtLYxNzK9egIP8gq7TMnNT44sriktTc+JTMotTkkvyiyviU
xJLEpMTiVL3kZA0LU1PNWAXnxDz1EoWi1Nz8slSFRAW4UoXyzJIMheSMzJyUotQ8PS4AUEsDBAoA
AAAAAOmKCUEAAAAAAAAAAAAAAABDABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcHl3ZWJzb2Nr
ZXQud3MubG9nLTA5QXVnMjAxMi0xNzIzMTgtb3V0LnR4dFVUCQADBvIjUAbyI1B1eAsAAQToAwAA
BOgDAABQSwMEFAACAAgAV4sJQVH7cX/BvAAA7fQIACYAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0
cy9hY2Nlc3NfbG9nLnR4dFVUCQAD1vIjUBbpI1B1eAsAAQToAwAABOgDAADsXW2P2ziS/n6/Ilig
8+WOaZHU6wCNYCaT2Q2wtxNc+g4HHA6BLNG2ElnS6qW7fb/+SEl22xYp0yIl24knQI9bbeipN5LF
qmIRIuedQf/BN4D++x/Du/+1WtwjA6JfoP2Laf0C0Zt/Neh///vmL3/9+Pjm3s+ywA+W5N6fpXkJ
6s8gTcL0OYlTP4ySBVj5STQnRQlMw3y3LFfxm789Pn6+h+/gX94gw3gDseH9CxwMnJMirfKAFLIk
bH7ZIYM+fmNCQ4EKP6AUFOAp8kFOwignQfkuW2Y7GNhw3gA9fHKweHKFNh4NjyPEGtOaEhFTtcmI
FAsAg9wvluB5SRKQ+E/Rwi+ZsfjP/hqU7OHMD77zJOs4pgLqK5tD8c0p8QWatpyzkqCq+vNTEFDL
JkkZ+TGo8phrZjbSwiFZZeVaacQqYCiLaZ1HcRwFVEgRT0gIY02DYRdIICxsOtqxwDzNVzzOXMPQ
AhYlJaEfsvK+/ksI7n437rw/7n6Hd67BPv/2sf6J6p/WzvNf65/GIV3WiDJ4Hz2okjeS2JCy3GzN
dM39OGazkzJhziQDSN+U/SqChJTPaX66BMDnX798ORCDB3984sKUFCBJS0BeIuoOKxgOc5mxZ16Z
5YgnnT8oo+juAxWGc/fBqj//dvcBjjS5XDDHAF0pzyGZk5w6VYA8Ub+qACGJSUmoZxfFBOR+VDC/
roxWJOettpanx9mSpwJArm+P9Iypx799+vL1j09///j19z8/fvn6jz8fv378709fHkXbX+zZ4+J+
KzqIxtQSR1wPEho3iWsaX9w4hKE0tE4Wq5KfdYIwXePGVb+JcDe1+GYMXbEVZZ6uqdzmub8i3EFk
IU8JoWz2fpEQwUQqigmjOVU9VTpI82gRJduQK5cZ09GDVdBf+dw4UM8y2sEaN4wiA6fsJ0WFP4tJ
KIgZqzASpkG1YtQ/5xFdGhgAoKtE/Yi79pqWp2lfIwQeW2OnISsrrweOI19baW9fB/V6R7KpKagx
Wvhw7kcxSBNQZaFP5cU1QuhIJUqOc9EB288A1fOSOQ4S1+9yrporhvM+SFfUKsKHxtk8gAVT8GdK
WqApZYFcRSEXKwD0yU8jH1Jqol8i5QAtDRMeHpGlw/AAunIc9ZF0ZvvbRLu5yxB0TU0ctCAipwHp
wSmiVRaTd+VLBwCPzsfAUfP68k1cmzJRxX6Z5nv2FaRJQgINk8AxwMwvlw885ll8m+5A6sccEdt6
RLwfSj/cDzqOVj2qFpXc2BmTnTOMMrqJu+iBxjSJ8Y2WGy03Wm603Gi50XKj5UbLjZYbLTda+OGN
NCfRIgF9YQ5o2prCHIdggnCHZ40C18sk9iZjUWP88ADtYP95yGd93sRwrxM6SgqSl/vJveeoXL6e
suGmIxzLGxOUW0GNVKKpcRr4MaC77FKQXIMY6hkf+0ii0CN2pgHTNyq0QVkCqJVPp+MNHlj6xZKv
J6mZ2Zo63mlpWpa6UhDXkbhS+X3rqGqFmCrZ9p9FIAPNfpLY4FVxqp/N7RrGZi3KKKsdjcqCxHNu
0bBlaxKpEFV0/A6eAVh9um7RMj8XVotalqGXtQ2YaGaCSAteU8LSTTeBybjRpp5NdkZQVwIh1svT
Dt6wfJA0RwJ+4Dj8jMVN7fg2xVnzKOYua5bUmfoTeDrEFIwmZE0Oq2r2h6d+m4L2po2AX5YMnO36
szxdUAK5Rc2mp2cdOJUU0TFVmfFpC6hJ5/M4SihefQafX68ktezZU6/ptib3cV8CPa6j452NKqHq
kT0hTWplLCNJZq84vy74gM5PrqdrsOgfcZw5F2Xhzhm2k85kWpGOwDtTr0vO5Vvm6+qf1BDbSH3s
r0ku2Kph+kIFqB3GRKDCUKilBXcDmNCJp8j8YIeEzZd4a5thTs61rI87hOckTepMAfM6N9/rJAzg
WODNEHh90CGFnwhDU9EjIx3o/jDUtEZJNx4liSPB8T3XsXSOgFcw4X7G0YIXpBVrztFM6/V5yMNd
82Rs6RvQu0xVyYhsnRXo5eXlSrE2m3WwgeKOKKhnTemAiUaUPRmcuqWzLo7cfYFUpPg4Fw1Cz9Fo
y0EjAAlUY9rTYOmbgSaAWqVPbRyM64i6Bta0Ams4wOSe4wCdO0B0eESGhhxruxycXamJ4xIIInTl
4lM/Fehe7qC6/rErtkdRak6qyOpnG9DHEpqG1H5GRk1dPJED5o2GOCzpKC1DgQTxOPwI5eeMhKdX
em2ChCcy2zS1sNBCiPKx9sggqk5EmWbtjAYFvRGgHg6qWQ1TUByVGjVlJH1e1wZIIDlHRfVtMwyh
y42grWcEPpG8iNKEhK+VvN1VAEoVLB8Ha3f4rP3Ra3yRA6dnZO7EFgbEEy5MdHywre9TlGRa5JHA
xtaZhAXqmyBuBnKWKUSfAn+AGeQpCknKDdqYWM/K3iAI1/QBICvqDPpgpxqt/r2uP+uk3qHjakBo
z0jcl0wFq8w8BPGQO8RdPISpRQVqkA4jjocMzYyki6eOOhxX09ZHqHbV4bfN24DnKA4DPw/5nfX0
eNYctHFdeTlAZSHmabIARbRI/LLKheEK09DDUwdNNB24+njic4TdMTgS8qPihL8sc7A5PdiXbUfY
0eMQcwFFBxzc0SB7uuwacFpO9bkKXEbRyFtdedCRGX3V6PspVaqV1/a+Iz8JSAzCipUCARYfZRNa
fUkV/yowpAcpJ09+HNFNP/UHQVEFASEhv0ew6zhDIXdiF+U6JsWSkJJKi+N0gim5UlKYHE9KEFm6
e0hmQXheuiNVk+9NLTJPyE99sqO9kaqoZlsx8nizB/NWlGmWUYRdrrhGLbVue1OXjnr9FkcBMr9g
p/3bSN23bNHJjdvQVkfiyZFNg1XMTQjIeQxq3CmZ4I7FAfKSRXnDET+SaiOsQYI7iPwdGDZNTx2H
vVvs4ZhQg17qNOSrqQeL6H2VRP+syKfwwTYMmy5K6O2hE+n9qMAexoaLDPz2I7MjUjw8Lqt/u6PQ
Hv1BgehPBkX/14Ah9vyv//44NZ0utBC2Zak0rppKZ2QqkWl5poXMU3X+9kP9VhYlydP4YVXVC3s7
pZLJh4xte8h1DEUuNvPzIfkSKyoyLpd8b2TyTWTZroWgLPnYEJFPF+f8Rv5p5GPDg9jA1snkf879
xco/m9VcK92mabnQddHhDOi/AH9BHqAxNUF0lWEn/wX0/OzkmK7rQde0ROoaQg/6gehxbMOhGytH
aM5sTKqMtesjTrCl4t+5aJjuyEJAhoUh8qxjQhi8+pyNuLEl51mmbdq2K2U+D3cIfSEl+JCm3yNC
f5maWuSZyLa8fmrVHW01iZoepPsF++2vNUWG1kXwYgnDKvM99XE813Aawi6GLNdDHqQyExKkw836
sQl0HXbfmidydNhozfLoiY5SzsCtH7VftY0b7SeMdLpXtkzXFNBun0D85LTb1KTphIBk9zwQ86Mt
Z5s2bORYNralw1q4n4Eb/adumhF2MLLR27/71KpXaRjNIxL2cGE1kMNDoMd7fRVx+txXhCyR2kCW
ikwwnckcKC2Slq/BIkH2NRHrqGy/XGjZlmWeRi22f2pqd3ePrOohfSI5KNNNCwx+sZVjnAT3+c8v
RxJzPGQqrcNEnWFpwCXBMgWbPR4Hxbw4DJG6mEfJGrJHIf3JzCfn7/mRcTqcbI69KP28BDvnuah1
U3uO08WAeXUgDRSsQ8Hbup3TbPE1Yw0c84SToh+RogWRkgm0xiMhiImfj6SYri1SCsooiwmIEmoR
Casn4fbbwANM8VtRJ+53qp03T7KcVxluQ5m6gRNQUl7VAIJ45BVCa1D6sglhRX6zNFzzO1M7Ghis
3z7M2zs22QtejZGKNJ78fA2WxA8FnWucISOJV1u5AwQ2Jxu5pUUyxWCnAtK/ZGlS8PxwBKeFM66E
u/8jeQpikizKJaCA/Is3XFOdG4XG6t1XJ09+cZ8tozjK6kop6v6RoMojihDm/vOnFZ1P3jVf45u7
Z2qBfRcU3fUCQz3v7p7tsT1P9dURE01xvyYx3bi+y5LFgLuipBBYC7xFnlZJeIDSXN3rjab2Gp/v
Lkhlq05B3XiDranNozj+wsqH+Y6zh8eFL+hy+p30EGCOTEAZrUT3QXg2Ggs7J6zpCLe/pOGNBpoK
uqp7xliMNobda2PUxJ1R0Y+YGHRdqBm/bsfDd+TQ8LnqmcwW8X2aRwt2EyDd2yTMHZ2n+YrtNrgX
n6EhU2N9d9bOKujPCGfShQiZSGXvxj2nab+BBnbMIX5WnQVm169X7ID0P6u0JCH1ReKKNAX/BVlF
VGCxoAofwuGYu4Xj9ZNm11SfyuAut652LO4+0PaQqR+JuxeElqUDiY6bJp1fcEJGQAfCYnSEOuww
CgbdjrOwip+E1JrZlYRlBtIkXoPmC8MPul6CYsYT2zYy0z7gT5XwIsTkjm6/7o2H6+BBw4D4wTGa
3mCbYd2U/glOjkotTzezug2/6c22jSVzVyUpr/SmjpvZTmK2yeJgZ8XfSd2m2vF0UbBkS85C63Vw
A7D+54L4lSNVAM0B2G1Suk2ZLhhKZ9vn2gMwzpJYd7Un1ms1oIFZdXfcrDoajwStWXWO9dVhSjD3
Q/Zu0QUMlsw5237bVgtrDSFcsm3AqWQrvPZG8o1kPsmU4KMLDMTezzv7b1OFE68AYpLaBoiN3i6T
KnwpVNVdCM8hKMkFXKq89FIX8HruyNK8LF5bRwXrQJB+86B2mG7KRaoaRCjP3Rb976s8fnj37jQS
sIGGSnNOxw9dO6iiijzom42RgaDqGvJMZjVeaxM1v6s0JMxs/6B/eMs60bI7AR/ab/5H88UPrFvw
wEKZHqmzJAe7erxpgMuIGR9fXiC72KcKZqCm4ij5DpjVhVHB+kDvJzjZsY7WQEDdDI7d2E7yPOWW
SNnQVJXOYHI46UNXmZouYDvtxWn+sMgJSQ7r+eA4kFs+DyuIXG8StXO1bdgTa/sMSs4710Ii7zKt
yutCrvzi+3Gf25YSoXcBLren22djAhrqrXnjhluM8UjQ6q15PEufx9RtYf0y5CzQkTqCdLPAmwVK
WmCx9HPWiXXbwxasqrLp4JJRjzpNijKv+Ld/mVIV+V7v/C5E7y5gpuVpwuNsUZANdcuPLzLndBjy
RLfwDQe7n8HMD8EqWhFQrjN+MkiqsrQHbeeMyR6WX0TdJqb6GNtELRgWCKiABQWdCLtQF4ObsxJ8
8GZE1n94pM8fSvJSNi+ims+Jv7rDv90ho/36Hf79Px//AO6QAznnIPY5SsL0uQAQWfBaaK7K+fUI
+A6h2iC6bZIuhmQwT9OZn1PKNVO4O7BJOueHsqVOd0iJgVUiURTOzUnO+BDu+BCeRm3Un4E/L0kO
gjgtBDWslqGNrR2D4/aylzhugg057jJm+GAPkbuEyBRM9GGeh7vaNWPN5Tft+xP/KVrUVzcKr4yQ
ublIjtMtOodNcxIUGZdbDuXZj+hcuSQJSNIymq9BmCa8E5O2jJ3AE7UnCCVjNSiNioKTKEpSbHR/
WlYFXeDC5jO/mByZMpdHy3G2g1hfUPF+58EDAztcyCYC3r8oTirRrAXX2sO1JsPdd5vQRLjYgHtp
JKgRt6lC3VsyOLuqiQwK7wkYaxXwhTGK9xjFPy6jzunXmV8jo+beXGiqz4W7C06Vx8AvyzyaVfwD
w5a+RVSL99jH10tU1PtCzopa58tA1NwqLnQgLQfp8xiaMCaXKGHSFMvU1CrZ1IE5gdEXmgdrb0aa
ANDca4OpDJikCdBhWrZu0xISJjQvZGozrzAlxVe6n/haU9DJRCv6xCxdQPJi3zeuZ2V+qYGlB66z
BDR/4LSmkqmFOftiw4pG/Cy6b9pBgFmczuoJf56nKxD6pc9+498Wip1hcMWamuPqftODGbw+E2LZ
MjeqDcR63xTEdm5RUAZl+ouf2PoZcedxqP76xjzm7bH4qoxiTsmDN2TTvgNUBHmUlaBpMLHLVPew
v2UPmDzmVRxTDEKSnY8kJnVXxTCaz0nOPjVdJ7hTFjQHWL5sIzvT8Qwtbx/ewE788iyNEha4jNPg
+94vDebSzxNScHoi0d2Npw03ShKyWd24wxeZ+rDaNTRdrXjpUf0GWDC4PtuDN0FuoJYRa7W6rptY
bUKyacJmV0C3D4sFYUni2Rqwv/PXFFtmNCA+6m6etoPP0j5+lAj6+MkkFESwNVhdgLZtBRss/WTB
C596MuV32JTijwcJSj9fCKrvZIqcRdDN8ZG2709OspgVA7d/BOnsmyCI67hQB7s89OIAvmfUmJaC
0DcobWYhSpOibnySE7os5XxzsqVc6ONsLwlVcy+QoQCUpVkdPqY+EcVszCkjSdhcg1xvH/itujBW
0mpbo05fxXij0EtgUJHSARrSLVp3O2LrkOUWVjxA5NykU9hCI7Glf8axj3CFDTi4G6n45R3lLEmc
UUvP4vfdoLNMF0AJPtDUfBzGlDXxgafm4zBkrIkPZ2o+DiPCWvigPn6YBlU9FFnvurpy8HVW47Eo
cxf1MFzUjyvjQrpDcGdknuZN3S7XU5aaiSSQWbtB1iR5FZX9MjalIjDukLXj/aDF40TmUD9zEoo0
jdMQj6gQ2xIqNOFxTMkxIlN1dRJc/9DAEjo08QlwflFEi6NMuuOgIuXpx7RORz06CdiacY8CGpoB
l9S9O6ZSZwzMIwqV4dM5FfOodC3NqJvN5REBeyPBHpGxzHzkDYA9KmZHA/CKlD5ny8VNMdq68ZAy
niWc6JuAQL2XZUFWdn0RO7PCdfUtC54E1Vw2wXMKdlCp8p79PGziWpysteuqsDcM0tEvUf6YcPTL
M6hyFvLn8eUh7aLsQ4Ono7WN/L9lCxCtFqwCt4z8WDi2HRmHvIORBHkdnvbj+yaOO6fueHFsHjGh
rYZVn0StyrkLWOl8N6wBXUPmCJGFZCACfqt4S8risBjh4GDtFqvLDTJk7nexTBluGCe8OBDF0AWh
phOrByKLI7aLfgHsirOStZLLONs7iGVq/y37EKjI6HKR5vdtDLvNTBR5wM8RyOzqxCDbT3WGjHdC
HLlKAG3iqBC930Yy5zzE738131ZQTap+mycN05UfJXXunp+wsi8e3RFaSLrKopjdkdTkpFd+lgnO
CHuezC0WYqiQzCqWsRKp0ZBqbC9+/84s1F7e5mcUJk06bWOQThjIa6Do6ERAHGFBZxRRfR1SUyRj
XVsYZl2gNgVBPhbrYayFDjnakZot3GnMzNUiOsmmcGK0vjlc+eU9A1/53ccUrhFAcbj3aDopUtY6
muXUWVlanRMVVG3ZOpD4EzCyZCpn5FTB46gnoexIBD0s77gA+e6N1BzmncSWmBWsh5XdBH3rF2z6
9XIPU8qUMEvx2AXmKuyopdi/GMYxLrftJ+raWb7JG8erw/ug9sp1X5ad7k3He/L1vb1rGwcs9YgQ
QUMbY43ztj+kG/ZsFYxVVLD+4Ad9LeoXH8/OSBPPF1FDvqvDzNj9le3gAX6xTvi7IInqUQoGhSy1
7VYEzi1GSm/fv4yzFh3/kCJUQeEIjF/c5SJ9zLCadnZGtuGKawbHQ297cE1EjIfXhN6apGO3dTu8
AhX9mLIjL3QmKGonobljthBsDmRkhyRQBB6QYdunA3CltcUCbPcuGEXjYHVLk23oqshtBylYplsN
8Q5lW5r0s5lNt01aeZ6WcXwjdyIc3ywkyh0pDtbAltRupQ9LeR93IiPjomh7e9v5jleCsiLlMg1Z
q9+iisvdE20DTi+rIm/+RsKHMq/IYXGqfeNc0aKqguT+guWmuB0yDDg2ztWM8HHffpPPQA9SFsQU
y+dbPcw2Af85lZT4MA4F0lItXqfUmpub990G2cnFlEifCDkD4vM/2Lpa8PYT6Esb8UMqpkzkwRJG
BdKQ9TNqIkVtdiqv+IeEsYlcFaym/6UYsttxE0MVvI1fk7EOutFiWYI0E4Zjqe3K7INtic1VwGJF
7eaKLYdR+GC8DUmyfliTjjt6Euafnx8//fmPL9Kw8Dyw6G3ol+QBYtO0qGNv29jzlAg4SdbnRcfn
Ebl5HljrUNYmsqaTtXZ0wYrADgqzI5JPdKcsaNoLPRvrgBJFMzD07AlYkfVI7DE9tkFCOv3lo0bH
HClF9MTHEIZQC07mM4+iFIbhbJl4iHu61N7/syL5+jNDhw/15/9il1HAt6/P0cMQ0Qpzls9kBoo0
+E7Kxk0Td3GBEA1Aou9vXn/fNHtYrmfRkS4ujqfAECBJfYvHayKx7vNOJVw1JVRp64/uHL/l5vc8
QwcVnNzpAT38qcu18DTwPek5y55EDzlZpU+EX29l6aSA3YDQVrPKWIBM6eEwHTBCGgpacvoJMT08
Nh1Nq+Ij8nBlhr8noQ2W9PxCgiqPyvXnNI6CNWsSFHyvj8F/Yv0knnx+0x5oGFPQ8BitSFqV/L2j
J5FPgsYxElg148wvCN1eEdEmFWkB2hyqfKas8m8z+H/23rzLcRvJF/0qff/IqmnbrCTB3XPy1K11
7Jmyy8dVfaffe+eNDyVCEl0UKZNULv3pLxZqJUAGSZBSZqq7nKlUKvmLCAQCASAWRxHQUqOnHrTR
iowp3waMn2E0QR2fNYRRPg0ycZ4LoKYUgZTekQSrFSvztH2xOW1YBkk0kxU0QD5ksrRBFS8Trm06
SnD2PBI6fqwSwIZD3h6u/OFnQVUryKVXKxqgyLb9BJkfigbzVANgKmUenYx59ByYf9YDcDK1Hxl4
u6psoPiIb4PSaJwYa04q3Px6zug6JyavWlZvpGGBkWPYz0VOdYhsSw/ZTLfR2/wuWIlDyyBxuYbV
gjcm0vLkj3ic+5KvxlkrxgbB2t4T4vj5SVuMutc6Ep+IhKesZiNwvFftlgf20JJ/RYbFt8SGbSkC
2ytHLNkzGpAbacMGYG1Kgu8YLE9WxOdHjq4Yl75VB4kQyGFyWkKW4s3SVMyoC8nYaIVK617I8l8N
z4Uw6cpvn0J8j8NwsjuTkkE5Jui4AQC1fSU7/zYgeSmG34Ip2sde0tcI+YqxeG/XdSapGw+JgEd6
M97ubm8VJFh4ZGqBzitbgTHLna5p43v2Oy2ciINDAGYGoYZAlGuWr8ISMmiKaX1fVsOEXCg3Y+5X
2k4T0YqkhDW2KoW7jKmQTIUsfaCrUnpLvhbp5kBVXLEIcm6LTDizm1fMAaEyvmEBay8y4oikyxvj
RR79izaG0Ss6pp+CkGqbMKSGEPm4FGmqTaL55sAZi0vagW7OLgNTIcRqImQTnMYHaGf9mCvJqqqv
szjvvkg2UwAXRYUA78T4vtIRKHvhllWPlmVyqXh51QG+LbI7st5L43qBGtU2hcODIt2ocGo8Wk63
6vSQRXEcTWU6ZDig6dOCyQ2i8ELUVckbWSvorWXZLWaJl2SfJKljA5knTouBZKZgkxstaFTqq8Br
wycw4AwNGSrXyNGAjwYOjjK4sXVQSSWsbkMETzJXOYUg8Qxdh4nYQvF+1bVVc7lv8be+HPeyKp4E
JOR/EPAhJmErxiF7S7fdWNMLE96UI0nLeanFOBC3srEgaSvNFIjZr9xeqWQWL1fFg3xxh0R8Ig/O
F4MTQWkqcDZMbavSBKFGVIdsE2NcSEIpTV0th31H7pygtvKk+xeN7BYk/ZQgRs+H80WBDlmiV5WQ
o8BmlC1LSVREAV0PWXJaGXgpntyOOz4y1KT6Q/pj/nD+WAt1EFUQgi53pt56WCTNCTwVYPtJmRu4
ap6g4SO1YLDDIcFeEmL+1RPS8czgbMf6Iv5uhJgVQszTENLx/BaukKsM30b4jl2kdL8uNQ0o3ub2
ksKy6jx1t8MIcmnajL0RNU+cFhVu83SVPOZRiCdBpt1FYbEQ30lBQsFNNJpD1gy14Y1eusnLxdkg
QZ4rX5vbAsKgxrPpN+iiA0FI2S3TbIXfT6zmeGJthJKVyzZMC2JOLGmapHIAqay4ndplfZK93DQN
JbAOZDPXjFrmrgQ5K7KvldWChLmIkEKZpt3W191ACxTD9FQA3pfZZWUFCY1m24sDZrwOeHmZvXX9
z48U5TMH2a8hI4Kvpib343V7SUxDuw5/2lRA5c3gxZs+SIZjN3BJgT8YoqOcXeCOzRzy5N8cMkm+
m8xGhsO3NPdWnDoPCVpoi5pfh+vl8qG2k/JQvJaZraF45jmQ7ErTbcsuL9dTbv1iUXUebwhYCed1
fd8tcxD++cpSZhKLmg8Y/oBy3+GOI/l9eW+wxeEn4437ho7N+TTPMRfrgDGgDmzmwLgaUKJqqKsG
eEOMAcuv7z4NvS5aGSW3QRyFu4hJ2pGqfgsOOWJvLyA+MguMC+7prmJal62j09lJFFQEsphRH3T8
5bdlml9BrZL58ToLCYJvC8e5TFLplbEHKYPfnknJ1hKc8tWVz0RbJxHZs9ENvKTjBcCtsPR+U/2Q
jrq1VjeHoGaz5h2KQ2D2BkDnEpDvbDzDHX4AOHytkwNY4CxDHetA510OqWCX05afBqdVGWo+Hks9
91YdJFjj8ow0bBWPpzdujoNsutgbP/6GtgwK8pUlf4g7gkJOcxphS7CI3RpMiS+VBLuKL+LJrkNs
DoLhStKSdKQAYm8IOdg+h8ITR9caAFZ0JwyJkoeKkAzdQWJ43Qm7oUMSt9uzKKzNMwhS9agN4ulZ
JliWteJzXHcQsFwy0yDTwAKj1UxqH2RMWkAVQSGO+jY8yI281VSpubTKu3L+sqbDnqUCrrIcHAF3
KjbeG1XghAI2IJZTU6WyrCJ5XK9S0ibHao+2addg6m5ZD8/UzfIVLdMpXOsgl9bWcfnUamOITUd0
irgr13swcCZo4JymFhQMgQK5MiBXFZDLG72n62K1LsRoZdB2d7xJQF2CBabNndcTeS1LSFH0Wgyc
3dJWpHUYfi+MXGKVbKf7U3nYbR3RMF9N8vgZmfL81odfLJRhvmT7X2PRLddSoV4UhKX9ccxJGh7f
7VlA/9cFMrc52k63yW+yIyUbcq8uw61lsYKulGW2m/4zuA0298PM9i2D5EF6sGRDEiCaWf0XzlIt
xsm8WLwq7ov2UdvtICq+Wi+hTVnJVG0R5IvNkcT0YSoO87VttztUQvYkOPyD2KM/0gmtgClqQWaa
umqE1/y1OpmlCZPSLdm8LpfEc6An5RmekcFavFpVKxiYoOVcgrUKZ7QH7zLiIRbaNIjjSTD9Jmuw
1wOpHPxgtcIJXZYC0Sk3ciFpd836vEHjG9XVvLKquh304KhfzSbtKX4d4jh4oMGjegct8OrlFS3n
nAvhxgYSkniMsFeZbBumt1zHLBZ3v7gS+Rwudnn+03SdFOr4O74MEDSn1YfjLUqmGaa1SA7Ze7EK
isXNUPpkG92InVeGoTOd7YncGr/NYUVAVlej0u8X0nhcyv42SYg8PY4Z77Qezc2rV9f83yzIi2sW
Fby/u5pnGCcasp178h/l9gW9yvq6jSC+Qh//XOH5C/bUNwWZoMjmP3xMsxtH7zSbZPLZSJ6Zhk24
msDAgSJsbQQYBNR+EORPXmUpEWeea7MoiXJa4GOzFAi9+T5Qx33+xEFvut8HQdpTcJZmSzEgaoUn
26vWNDE82EcaENvZgT+lPRMV8oueGb/mM+PXbclvB7wGhg1DV2CTyhqx2nbjMs3IzkVoAyG36C1G
WIKsdCIR/2IV1x8GGZA9qy1p5soWv1WQ5fRGow7FgWxa7KOD62WUT/ckR54j6UHR/tFbBgq62+I7
Om0TQ02W3Cle1XRC6QC4YyOY5Gm8LniYRF6QPYV2t4iIA7cKpri6GbdRe7BtMHiYBXMtpWd1tK9M
sS0PWRclYDtWD8R9PrEg4sdAyEJKnp8v0rvfMW1vmf3cvZMoAIi5ncjW721dwJAPuSSsqh/xtvjs
oWFoq4DeElRi8UEz0x7syY7wybvwtRDTnT0Nn6sqrd/5+Sood0VP3qt2xEpM7HGSpPw4RBShC2LF
HYwVb7An+0dr89H9C92eEcNB+6wuHiZZFLKObMROLfMbWtnzxzcGMi3bca/cd8cr5bjoP7A33rI3
LsSc7bj8cI7UvSvf8HzdOHuBPRWSf3iMmjI0j+f0lLbydn/U9Z7y5rTobxjR5PsJSAgm0xBf6e9n
80X0J/l+AhLevH33/gOBJgL4+B8//fyf/OXJhsN+++unK/s9H5Pyhxe89W/xR4Lv4ijBebUy2Ghj
VZLEB+ys6OMDWZLEh/KR0PdDw/j/cO78XdAuaM1otK3Ej69eVfaGSZqwCxeyrf1B9hl+gVmNzDgR
yVtypASzziCzNNPYeRAtpE827k+CgXZ/gc6HZzl9j5alPtPCeIZaZajwgTqQyldw4uaTRZ58JT5/
N5d/0DHjXohpu/4PQ0+hjn/B/aA/3v7x7o/3f3w4D/lJqaVhEFlxY7/gMX83hn7GBKM9is0txe6Z
i/iHJ87jnu3oanmeK79bhv2zn3Y/jKn3W7lY6Dn6DNI/Ka9OSzEhfSMmsxpxOrCgKjMWncDRkZ9c
njl5Ax3Pllwbu+mjX9h+6mxvXTezi46jR8q1u105nxHThtfLQZKzfZcR7jTC4Io3tKdBdvQFC75m
61Qc0P6qaRjNIhyWKU9lJ4diuXpBCb7ZMVnJTelFHc8/6E5d21yFA2KOgrSqcIwcFoa/XbDph4JV
RAPW25+1GV2Edb+MF0WxKku0His0ni5SQTSIoaucK2ySAOSwdaVKpdZ7bT2Vk9e0U0bbReZRUYse
hXAN+7zoPfS3Db2XgzEadR13AwPTR6naTnVbNYm1K1jOEg3jiDapJYo3J2sE+1DzymUOJLhrAn1d
R9bR/sVWKqwiXbPaPW2F1WshbbWqD0uEdLVcruMiWhHJa7t1U9DNzhof03PGxzyBaC39mWCeQIVs
dAJMc3xMQN7Hk5gr2ilE+zzU1rFPINvm4jsnZ5RnX9FSFPyrFqbT9VJWKNnQna5P3/FxG4U4LZt/
rnNMnAEKt80MZ/nt6fz2BesXxT58nc7n1dKyrnUexDg9iaGFOliZpZA2JiE/iUVvoK4AnMdikaVF
ERMUVsCVOq6MxT0nkjJL8F9sPnrj0/9x3oPVijhvLH2RUnzcqcX3IOufKR4MXiSAn/FEQZzOxS2a
dcjSY4khluktpsl3Ma5rOAPocFOFkBY72Ip4W+yAU1Nm5l1vlWtb22CrYHuFDfTqxsr3AU30ZOKu
14aD7d5O+zcKUe2iZ1mwoReOCyuLvtN91pRHbHfcrhCtlJ+eW4iUnxJ2zcq3V7jvrpScssl6RhMb
Qy0LkjnP2iQwuTZdZxlRkq+RJHfTMJxhRFKnrHfBni7Y+otkRXb+pX1Yh1F6TT5wbBuRYZgQZfXl
pE6DZIpjTdpNyDEBi56h1wCk6bdIImff6Prs/VKpxTsOIdM8MsvaO4NNsPvMlWtcyanIEYStYXVi
5FXjgkmaCacx0i2jnyIIdHarjhZRR6kF62a0DENOCq8Is85pYqywdxlE6Q1p3Rwh4XBPo5Hy4i6S
tPzzvH6PJ2bygS+AZQcWWu+B+JVBEQjbUOheP6XruJIh2+moFLacFuKyZw/S5gyAItOyxx/5GAxt
KC+1jsGMZ+GL2YMcuzSxdwBT2qwN6An4hfgmfk+MQwVms0U2WQzb9wcB02iNMiLiSk68ZanEq1v+
2jpevmf2MbBD+Oq7CmRWh8XckUtxtzMVN/uwuj7+RBthMTH8AKJsY8zp2X9L7lhYyHX7S+AA/g5P
lsRtmy9ZCZVklgraeRmOr4TV/R+qML5jmUMwxx168upoDC3TdsfEMwwPsutWCIhskI+jDtAaG9DU
kTkuIAEbV6SW7YzLIRnEkZXGGc6ShnztK8/F+BmEuFmDrtbjgHkAlq7XH/9CfXW3i3R4P19xix/Q
QtMNlRVbD4oiiybrQtKAxEaD4W/qXgvrurv+ULB0uygu0G9DML0umDnGwtqnJqCvOsH0O2Gy8nPT
BT3lEwrZR5CrVVTZCed5MKf17aZZmudamC6Js6zxtzdKFUb5ivauElf+dj3lsLnsUASyA5Zj7dX1
EqFmeIqjW+GpBqArowCYuPrXf61T1txlEWS5sI0HMv2Oj6a1fsMgC2ngKSbMsJ6GZbX2vZJlrHrk
roEoM9y0Ihh5Bye5pHShbXkdqTpqcXMMTyVwPUtTUasbNKogxGzrw7E9DLuUy7zCZqlv0MFWyvWe
rstG2hqedSGjnWXexOiYDPK2Jo3NVCxTJa8C0Gr8+KBss8lEdZnq9KZJs5R701U+kYXYCsd+vVrh
bEpbD2xbTwvXIr3/bBVBCe503E5CzKfXbz//worJZsSRqelpZNpWR4AdKwdQZrUNiumphUAKIfYf
XH2s63R87PvPv7zjE/UTK1XK3Tixl+x38D7KLu00lOOo8cmusfWm9Qmyj2/8na7S+vJ//uNjSt1R
+uDNflC053SM3kMuwsLZq/x2XglGQx3BgmkUIm0V3eNY0izS7+Dt0uZXYZRp+SJdxyHzg1iVoutK
Swi/D91iipFvnJpiQ0Rx/pBMmekO6VVQjUGyIVHVQoyjicAhS6DqQokgJhxJWSn7jPHjF3FMg+F1
hdhxslN+1q9k08zoxTKf35gvwjTBlYptDhoIFTFU1CH8tBOcyeCMLnB2w7AJN++O1fHJsNH67c2X
L5IBg9gYRwBMuztudxlxFEiatYD8MKeWsSoSa4HE37khO4xJkHWJ+O4F63m2/4cxOuzPXz6LkQ17
BIa1kzD8B9IR+oGlleGbP4MfiMNEd7I3lS5NoAOwPsSsi9kV0r1qD+7hcf8YH5WOOGHXOMnc+u40
sD+eBtYYfXDpvBIiD25ICLJ2SmRNZMeMoUc5JvulRIBrdF1+15NJzHMh+fYuF3dj07sCTIMp7fXG
fRbx4u5AcgoapHYIU99/yLc685Lc0tyIoChwlmizLF1qrM8jDc8IYo31BBRuJSGhBQ0csoez5n+i
kwMHEoeNPBFTRLM0nExTmo1A2NEWURjiZKuDswjHbMcT0C5ZIuYsvxU0zy86Hj8IFcJ2u+agfLNj
u7fR3BbmaSD7hJxD7mD7cv7hH++0//xNzPspR70leCfeqZmnLqNMAOZJ1d4aXgBfFtGs+OM/f/4i
Zv+Uug+6gOnJfjClPdnq7oEc0DnVUDKwRlAB2hiY90kU8m90Nb4d2H/9R/nWHzf/+PpRO97HmIY3
vDjSBJcEiaTheae0iMrY55dUVeZvg3gtbrXomidk3FFjCiiL6fqIceHZrn9Sw2f04JY+OU8iGmWn
sToo9LUkB9VAjqFkcktBRclfBsii+CL+0tUDuzeKb3FOc18kew2kGOD1KsgLrA5mT3jpknXbqzZZ
B7r7pn6C57OeshovEkBrcgXLKH7QZmlSzAJxqpcFCaGUYOGgwB9itv/6lWz3WEdT49V9dY8C2WIe
Ywg6c/KAL7a1ZP4BFV9eDVM0lDKEXt13zVhrgWKKW896flcUGubAXaggeZCGIbi21VuTdyEeAqPi
Wz0YyDDr07thgFpq2kB3yqo0irf6rn+m/IRJrq1oElsxXbAInCwV3hibhuH1ZkEIppCZZqTXzF+5
SY9TtnxvcMjZbHTMWZpW7gKfkmjHY+4c1MU5gbp4Zy9Rdki965wsP26F5QA3cKPgvNVEMi5Yh3Te
En0bB1hG6DMHSpzK3xUSLycbcfFoZrLRiSPqxs6nu40PxZVuBkCrmhT7HX22OF8bQU6yxIJMcU60
gQX5VGJ8jM7k8vhUWSEOE7JBqXnyplDtUpZbbentRlmyvWT5swnNcOIFLuk9RbxmsybZ4QvSCCCp
JzX8STdePuSAQvxgmgdFRvVwGtJh9rpOiFlwGxEDVUYIs9MNNjtymqMSTGJxMJTjotHwTMKe1hWN
RhzS3RYd6+1OrMwipvpAfpWLGew6bfZq806j0GQkvCqKWcWOWJB4MglX2ZKXnKMHVNLUC8dVMH9E
WKKjp65zZX8DqYVkk5nMpWGooNvRhkHJ13yvKjJoXi8eyntBepZFdJnVkKLhriwjSpwB5ffmpoos
vevtvrpUQXL2hpwzV38cnM1xgrOAZZOVaRhRktOQ9IJaInFCogIV5LGm1J8yqg4VJH7BFMUtzslw
xFqQ5zgrtNLCipdVryPCjgURlniAmA8CyfUTInK/kK54wsJIZsfH9lxH5ZRuEiBZArUwXVlH/QCg
LjJZNfsBZXgVUAvGTuXpBInjSJbuhnTIFWiDTjXgaivJFgcZbm9sVgudhxTfL8TFlNzOOsw2G5M4
nX6jYTnZtMw5Fh/Ku7YymCStQ0KdDQ1HYo51zjpN8LPNzjXXmvRCAifwQoB7UTlTzDAIGYFE9jQw
QuwL36cfUs4sZG/Ko2S15lmEHba0nQ1pn4204XfVDWIPkhDf124eDcNFPR/PNidkEjEXeEJT+xYZ
nomDAlF/NW+Nahi6PQbs66+LKP+e/Au+p+uaOir+DG6D0hkim2UtL9JVmRYm3jjrXleTddi8iiww
uUQrbaPDPN+rYVbpWkX0E9/8kiZX6N0V0pFBvvya3tKXuu6Rb7pxZb7RTfLFNMmP//HL10oC1QAE
fV3jPAwezosokZR89xzI0T7iiaZUNk4PYohk1BLjdiVGN9VLpjMxpvZLkA1KCzclUUILYMa7831W
s3A92WbqCn1USLSKnPcEF7QepJZHy3UcFCkvvTlNl0sCfsMaGW0zhbWyUQFNW2tf9LArDQSsQsEL
1ocJJaEgsOIkpNjF4lxIMcgG8UxIMbOzGSBr7AGiUZ2AiQO6ROtIwjTGxG4NM3u5xUp5lwgtzaK5
+MQO5izXPpzs2+OAnUikeS4/G7QhWQpCpL2zwSCK15kkhqYvH9TF1e7zmFdL0Xjsyb0gHMjvzUcD
Zl5hzjf6csfcfBbkdLQLNXXUWcH2rjzIWltzwu51XXRZwXKy3hKkBQ07ogXNiQdPZMWqgYkvC4ze
7JSs0Jt22qmYpnsLc82trmxFOWXjYNhFp4Z+B10LaHNeYl8mmBZxnH47KhrF74Y7E769SltPlpGk
8EM7mym8fdr2VWJO1v4wVCtAuF0nJNn1HvqWoiGwrAF8V1U+Ka8UqbEAAxZGnd/Ot4VW8uhfWEvw
nAiP2QBhCKUL8k/rQ5wpqDhIxHAB0rN0OWd7p3Ob9APp9QakmZkQq1hE+SsO+IpGVLwi+vaKxVS8
mkez47kDUbdTwlQlJ1wvIUcqzc/vGErjdVYLNvybarnlzQGPtxYW0nEhFb6s+iiotpgm5FS1A6bY
qxqVPWBIhtUcRT7PME6Qrd/bOu1j3B+DcUVLsdHb3DyaJ5sonzJ/J5FIEHRftgcmXq5EuKybwx54
deWyOw/fKo2j6QM19XjOqtkGMa3rLO0lA7qJbVCUUjVKaEPoe0EKZbeCQZIGdJ3lRtZj7rtok3VR
iK81TdNXoBNtXJiuxnh7FrVaZwRQnFziot6DUsER9BK19VFgIEXvJDBhlNGlq0hpAwuySE3iIPkm
vnEwrN7MyPA67b8aOaJlabMkiGU9jyxIBcoWHO3j1SxQoPvTjrBDSJI5mWxvmQvLeNrquMkLvEKi
22xXLYYpYsTw1IJYwlzGvlNV6QhX6CZv0Xoegg7iTne3akZcbklbLlvFVODPr6Hd6I7Cj1kWmN/E
Cp6Nhns28q2ez2ZnRfw6G9/FUSJxhLp6KOWFta3rKlyGmvhAinAoH5sVoe5HNw9yYq4+vif+eMFC
o9MslPWQ6+yT7J0K7tdqrHZt6u8rqioQahkNghNX/IWcDVn1JU6365lUSn5vDGVSQnIp8XKwvHM0
w9tL4BQWTOqKV5kuIZ6s59okDR+0STD9Ns/SNb14zDsklDUBHvElqNpuK5CiuDdnf3kdVOztNhsB
8jlAUa9nSUrDhSR3QKAzs3oeMrJZS5c7GIFXg4yzRslZlX/y/DstXdE4d+o2J+tYXBobQYpuN3Cz
jaGv2QUAQEwRM/yyhxbRCKbUtqyi/Rl43/kMQgQWHOuq3ZVqOhHK5vbaJkxzUzNPaA5B7rjZPPtW
myyaVbxtosnSkciivyI+L72ESOYv6EeKaFmtYWwaFmj7Ycu4Jjt45mPwRuHCjShofGwArwdQ4gMp
y+sPBkng4LG8lkIsWe4tR0Jdx4gffdHoB6KR62JmOBPcOdO2gRmegsk7Ma/IBF6yC7C/bq4+oCvP
unqDrj7YV977K8+otLpTyF/8pPkzkXj8DNip32NgMH6KDLLT4YYp2BKjJg36iMNBmYmfDjPyyaVb
58SNA+Qm7sONcy7cfMMPcyy5t1HGCAdhgAJGHJBbIWTkdj7C1bkImdU0LM/KOjfDsuoLNB9gVKJB
/I7PXyestDVNzd31a1nRAl7i1paQyhdCoMmxn2V3FclU2ZNCZU9aKHvSXNmTImVP+lPZk74pe1Ks
7ElLZU9KlD0pVfaklbIn/aXsSZm6J+16BVYMmeCEzOhqJnNlFBfKnrRW9qRbZU+6U/ake2VPelD2
pH8pe5Kh7ElI2ZNMZU+ylD3JVvYkR9mTXGVP8pQ9yVf2JHV+mn7x+Eb2+P48Q9/xHD2+5Ax9x3P0
+LIz9B2xsifN1HliLMx73/UUxj06XQ82WBhg7Xmm4fv9XWgWUNvhwNa2FfAVP0m+ZKecpu89cr7i
J8TXbRTilJ1H0rK5verYQi54Rdlmd3hSREt6p02bwPSM0axPwJRACU/7zN7sbO/rhUGsugNK6PHq
IfKu4coeUFAUQRRa4KP2IH/mPDV5h7N5Z5VhUeyQgUylKPTYvQKDjP7jUNylW3XK1YxINbKYGQNi
iGj0hXS8DimpJFqpVY5aMPg0Eso2imON1dHbVDDIcLHOkpwFHWmsQoB8+tqQrpoNbO7nByyKYtUj
N0DMIAumCtOCVaoScmG77R++1zaTB7SQNctj1XYFibS24/Yjn8aCacWCfLnLIknmvN1ZB+gjeTNQ
GtcmdzBtSGnvhuHuX0bV1qU83C1opfC7ICok6yeChGrZ+tAciCLyWDScMCWg8xOXcZF+w0n0L+J0
hCnrPMArj66q6dd6RxClcrGgAEgE0BXhPo8LjXYtjparNBNqvglZIRvIP4Ihdi4SVSiBZGl0QarU
JUEW6o2UpPl6uqD1+QNiCCvnJ5DI0QoCK1IRZMX1pmgu95dZQm5eBEkYxJKKHq7l9sFjHjmr+ZCQ
dY8+vyyOLPIrkd6Lt+2rbQWeLWYZkCvKLbNtD8Kh3YxKbaQ2wbM0w9qExtwH2YM4J9jrA7jTlAZo
VlyDDGs1ptXsg1/mIUfzhKKVxk8wmqDYEzkMq4EpLersQQI+jx+eBLfRnFX+uA4Ssl3NaHnPSJjK
Ytpur+fvR4DkxZT2Bat4765teIpAyvI8SJyKZbiup0JabObmvK5VTQkty1HFFk985413OQlN2MSI
GIrA5zQnYUq8n3CfAqEHhEyF4mUtBWqk6xmDSbcB2od0OT1n2YpD5Nyh5CmOLTSVMDRPaW6X2HRB
vB0HwFBKdkeZrNi8AeLDaeIjX0+Y3KRFjEA20oEOD23avYpfs9f/+P3TTT2LkBS5Gmw6QpuDAHkW
NIL0cgFxWMXTFjhe4UxUNcL3xkB9XalFZ/UXaZHyA0ppdpUFWr3BzB3gSQqwOI4iRIa0rYFpEMlO
RRsziCV2uzEobvoKqZAHQlTIoNegJ7T4z+4OIF1KCvT5oB2AB5Ymg6VGRVKCyxkKzhS3JDF6wbHO
GfTIlGvHIsJZkE0XDyxbXl58znEVb3KYOYnIPi4jW9gb/UW0nBs36B5prHIWy+Ijb6Gjt+jO6Mbs
0tAONAKjKPMgcL4ULkyna3oKq21rpU7Jjo8oWrTEZCKJD0r7Qe7lZB+Di3ppO4Pz99pQzKEEVChM
NBxUlS/lYMt0nWPay1Rci1YfFK7Kn3JAuc0zQcelHbFeG4OjyW8pQKmFXbEqnPVGe0iCZTTdlG7c
/Fg2dCEznVAiPpojprPddOAJU0JL1lAq2QAdj8mZ3HRuk59hIU+VUe7TJc77UdebmZDvzwFVbGsh
xuSiaTOLegINvJk9tRxnQRyz+VmeDWRYbmn1p8EMqLbryVlJs7sgC1nZTnkZC8M1VM3UKuD27DlN
iiBKJCW6mqvq9yVAuJ9rPtMAwh6493Rqs8rlN8jWK+m2jwxxI9AipYJkTae1WUSAa9wpA+mQWW60
GE8ZvHijbqDmywQgARI5G3onOZ8T4jzVNmdIvCq9bAFybVWjyc46CN4GmobZdOxU2goxYxnWWpBr
64S8ni5kvZERcnsBLyJaBYuXb9MCfufFvFeW9Z+zJrB7qiyOK7JVKRKvNLCPt+pQzOIArcZtHgLu
mLm9aOEo2XptGs8I0BbE6sfiFcZFSJFUQSRsDtKF7RktdeO7d3N1RACr0pVJdAyZriIaNgGLpn4U
hUTDFJFrAmAQcLSbB5mYDbcX4H6FwRgXWFvR0LnqHYymCIU+vj6m1FSElAe3WPttWG54uRGJyADX
wbUwu0arrHthTfyHKpEdIgpjWWxbJU81V90gm4G6bj+bOQVcRbThtO4OXKlIm/b1JqQWsdlcK1TU
FBsUqN1n2BScGsixt+d9Qc5agQRhmGsb9yYqsNBvQ9YYoJVjR2WwtF+0RquOwrgF+cX9Yav8qgLe
hFsCB9cbA1Uwuopw4QNrukMjVrnsj/kNh1scaYSF4/XTHVqafpulUrMKG4os3z6eOMzIVcdPzQrs
oiFNeROXRnP7RDiXdauvqQ6mee2FiNQ84eoox942j+THGOUhFb2disT645u+ImbVHvzJEXcvNRa7
ka1X9Axl8lB7euGAtnxnyudOdclWJlzHWB7Gbrv9lHcV3ROTPU9F/RIdd1gRdjxJPAkzCb7blIDf
jk65yImjyHVVRmULZ4h9P0Aoi2kPt3EY9ulERnYbGYlDK0F7OTlOkmr7TYLE7TcMpPuKuKngyYNw
DR2dANV3rQFApXCO5ysbv5yfU9KJLFweQQf+bTnbA5VzadmOOi5Ll0d4WOQ4ow6e4Sljizh1tIp5
TY9B0Lnr2fBWXh3uezg1EeIugqCBYtKZAIv74nWHE1inPTs1cZ++jwbBFEdp98NaBVlOPM8uQWGg
TbUzTlBYPY/0JmCapt8iSWFzx1KkhP1vNo5QONUHzUVw8Y6/KSgKq6kakb5XGk7fKw0TtKdrGvO9
vEhedoLW/cg7pqq0wxO3M7PPUNHOWQ2QZV6G5Qxnp6/3H5aGvFrPQJdRaTcqRk8bRttmmLpBt0qr
NJG0CfdsVQLb7HD58VAJSfOZ8iIo1vkNIeUFd49vNh8lrgqjclNDqixhwUp0vS5/uJkFcY4PduWG
sgHoRQjfuLsqBgmdzyAhRYOEntwgmeczSKaiQTKf3CC5DYNkjTdIbqdBKrL14Ri56ta0PoTAUxIa
xkh+E+o5ipSRh7IuAl5TUpxyYyJVUmXbaz7UgvZHoPMet15kZWIAv40UHrL7oLAntzc7nmP3Ymev
PAoPbBafENiqZCYuBTyOrJQMfc2YW5772PhA3SMgQHxQKPLTOi5EtQqVscE3O7TgqNCyeIqmiBBR
sKt2lMoPggiKCagXZXNkDPLdofWCekCGZSgcry3Kax7kTwPO99m9+cLevkI6/Q35Rqkm32ZpHKd3
OCQvJw/kS0D+2/zNC1oedhbhODRufsV37NPZknyj79OfspT+tM5xtvsounmRBWGUzrN0vTJuZngZ
xPgF23FO0nt0kyYvcrKTnhabD0QBBwoyHBg3v6QZJs9M6uGu0DvKySKaUlbyRbqOGQeYUc/anIfs
Azih3/jbtE4wfVpKvyyinHxjwScvNvz+FKxoD/NQ5ILA7qCAqte8rhqG5alSwv2KxZvVbxV32DRB
dJFWFqxZYpFjqRaj2BZCHEava+BSQ0lAkP3wxrEf3sV+PCL74cEUv8ZwIFAY4kX5Lsp3Ga3nYypQ
x2KWF1NxUb4eyldTZAQUeOi1CXCUgyHXflyKzlmRHSgoFN2AMKt1vqBH0mQvvwrJt7y+UKvrK2KK
323WYZmgAOQ6rG1Cdc2hMmj/5o2Tvw3jpebk0vGH3E5JOYTngZyVIOuydyD7Un8cZnwQM015Tybo
FLAlS4eoFf5MRx8aU5hz6CiTamPmleUr4nCozKuzUVJt+jCVlIqxXMWMcCzNqHJjmcNAofGgRF2Q
XDUqzyuEJCkPCeaeK69AK0pQAwXStWJQNs3s3hpSAqQJD3Te+DpN+cuurtqCiaGrBX5NXzVwLe/V
SxwPWWNSULMaI907oSygp+69lUAeEe96yrSf7yXA+u85Q6hhHRGCDDHYWelwRAyiAfUU1M0G1xnf
JEFrdJ69JpTQK5ofmN027HYtR90KJ0cxLOUDWuzlfrGNdtU78fuuqDF5cYubm4j5KnHke19bmRQH
u0oEc1mzMe29i2PzbVvvTpppBjt88cGnV7uETiLV4mGFb9hPleTVYUB3zQ8JOL4vbj4GUWWyN0Mb
+gn47QJa4fe3IM8V83sIGNVokjmwZCOhaP2RRHsCVTotw4PrUjr5U3aIpUOaUetDVnPoNXCcs2rO
99NV1RNzPICusopr/MaEeD3E8sUxngex+PTAUAwmhbKQOit7DLoiQhSXeEbq2APdPnl9AXkeBtIt
ce18dcvxDujosM76W28e6HVyWQubiU6a5mw66pRCjCou6WM4Vj/Fz6dZGsccJ5gVtIIFQdPwX+vo
lmoIIWexq2IfheRrNIvIx5Ckow1k0qMRyAHuowegRbLzhDgN1uDEQMXSjxKhifYAPUAtZ1CPwlHK
FUiWg/PktuBpr5yp7ALAcyEGxVMHCtXIGkgiQWiJT7sX0uGoNZf5BByUILOWL1oOJ4Mw1g/qkLED
UPFypyvut6nR1pnaBM/o2jdJ10kYZA+iMkqgcp+oRlm2x0t1oSq+KowysYEqfi7btrv9OBr+PO1c
wStyFotXfxIc1sXQGKpAavUUUvsWJEi5zICLAYyZumBL/RGwspdDRDYF0zTEna6KYMJqrnw86DTq
H39Tg13WAtwcxKfLmqqOru6rGjQJKt3VZYW4YNLQ0Kt0tV6JU7HdobFx0j3wGcmvIsAeEuoFs8dg
k3dkQeI5wBzVrWymIpaEU7KRT1DHPDCfdeubSnk2G7pBparA0MmxaYYEeXRSiK70LavfDCincbrC
giYn4mLKrj40YrUnxZCY4r2QNzBgtRl3F8hVvJ5HSX49ZY0FtVuv7IpdXgLl4kLVltUdaS8FQYJZ
d5np6X14ZE0M9+64tIB5OuKS354aHttg6pBoDRkoXV9lNS98UwUz7K5nSSNgi/vjO6WelBPCy7q0
zDlIVistJO5tlj7QRKJAHByn9+BqvxNEjeRMSNkwU2+SnABNK91sIWded9BkFayibckrbYGDEGdi
T0GHVCVqZm6jFkigFpBCrzKEYhFlIe39WDyUBYXZ3FnRslFxNH0Qe1kdAKt1f1n5+k3l30pwsAM5
DW0GKXlaF1EcFexY6/Vfa5w9zNYJq1t2w0tplmRUnAIVQ9ck4hpTbBi+fRH10yKBjMTHNOUkVC5n
H6fKp8z00uuGb9dl3fU8SMJJeo9DSaV1pydM+QPrYxZjdvUWRrMZpj1sa0rwGjbEFW+L3FD317C7
DOwBaFml8Df+3ifyFu1Xr5HlXCuyIMkJ49oEF3eYuLJhOl0vWSlD4f2/3kH0OZ6uM6JM1/yagPfY
LaNR4oiKoHZX7ns9IPcUew+Ku+dkib+ht4U/XrMuevEizYsfPfIU0Z+zwl6y/APHUUJiLYahI6Wi
Z9HdWYPodSV8cZlTU6JG5MArVillBDimFbcJ//k618i7subVoEMFgASiJEmnVP1uI2JFhb4yJNDA
NKQcJXQ2Ez881KZ5nq1jFihU0+QPQW4epXi9x5YQ+aV4iPGraZ53GNmOdG0ffDq6JABsuulnjSDS
MbGh8nrC3AZkUqZZzpvNF3eptpBVoXV8Q43Q9lDz9YRe3Ig7mlpK4IIJceNpHRd2qSBM5EEgX+P5
cVbyk+FlWmCujWFQBGzDzuNxhBnvkJOITpj57VyOaxiqcQ8zmNj7UnRft05p44kqvFol80HMaPXZ
A+nWvoy5YuOQ26UpEQsN1wti8dkNqEB2qxm1jzjKxBIxL+bV8B+t9ThgcsJ7W9MMf3YwLN+XmRZ6
YjwXC3qVIR9lwzX0x7b6nVy4m/00ebEMxJqEdNsckILagEDT9YeDFiNC4gbaINYuwKBeVgA94qK8
y2jBuewVgaw4GG4frvbuoPjlk/b+8y8/L1f8iEhaYMRXZHb38cvjgVmaVWnQZN4j6mULBezTLbrY
6kJKXXRnmV79yJi0fVc9k7yr5P0qjqbRxkhobz59+vzf4v6gaCju2xNjeN5I8nj/4df/R3hANZwy
tKfF1BVLYxHF4TG8WC8HkwJzdI8lIOmOjUzVNmCdF+lSnD4FugJAcCx+qyGJpfB7YDVanLIbn8zo
GBZoB9kOvgxwqNZUMkCXeW3kunV/pD6IC2lW00O+hxTIBe07Y5NRcxpsQzIt2wwETgi8vFSZbVrG
kOzvwcudCEcxz7MoI0KmYYTic0pXNR79obzWEy4RA1gSATQP0KmJCzCfOBljGDZ5eK9rK1Yr6pPy
tVBbZSnZf9BQkGC6kO3SHTTU8MopqRlnZNnq5ZHe4iyLQjGgYaIhbdk+vtSYmZCSdC25Fm4BUa9p
JADaxLE2ihmZ3pBiFtEhFbcFiWnvKAXxWuXbYzEvVTFIvkIXnsncLlJanETsrlnKGa8A1y0bQ430
ai052vD0MUaawNf4pq7iSb5N7m6c5aY7qGMoJKTGqlrDyUG8ePVyxNuxL3eM0UBcN8x09fa9ilw7
1Y2h+JbMddO1Rxnt2snu+YotXEJfEwUrxEVOHEjugWnC8co0CoL422aUP88k1+OoB3SjvIWE1Age
DSKH2kmGfFDgV18R7KablHvX8tWyvwpYPC3gBNMBBSZ1kYHYb/IUM5pmIDY90CWReR4HtS35Fx4q
QQqpnPGw0jkzTWPY0PpPc2hLGYiH133Uw7uWRMbqujukRa5b+5Hl6IoXY967TXLsa7iuGl5pdHk0
TzbqucfuFl++dwftY+tZ5nE6NC5VI9/ul/Gre8HlqamE13sORrAc8R5FJTerLFpGtPK18PDHtBRq
qgi1ZkI6vq+QUXGGb6853zuAcTfQRtcUhBFoQ8PRtgMxxRXlz2V0ukXrtxGAsIwnpPtBKxR7QDHX
aAwYxRp+MK2u6my1kIDV2XDbY0zobupst1LnanYISAPsVnqmGORg0SC7+l+Cgl4+vfvy5XeajYLE
haHUsNWALW8UYZnGcCwLvQLQiQIIsCz7sal1kuAsS3c5g+ILSE83TjmPBPQfVT1QN5+asXiG/KDD
IVR6UEYqCPM+j7W3nz6/+68P78WbQF29KAmmwH83kauSqW0mTS13/iDc7YKyBWyCjiEHmz9kzzaJ
whATbaNZhPkCY0JlHiucQLt8rSSOEpaoKG6tpvcE+brJbs9xwTO2ZlGMZZVkDM/oY7lCXPBQiG31
gsOgFBGHfp+hDlOy7NCUTHwfVXfWlm4Rj6bf88uQNUkstmdAnu60TY7mB151cUNGD9gwC+ZamKUr
WMUHHbTJbeZxC9u51C2AI1ZJYp1Ef63rCkogx1LLUl3OkAcK1JWB4XwarMqeCuX0xXHI7rPEOXd+
O4387fMXMW+1wNN5VLm/6KMlM0xMBbFJOY+Y47kt4lhgUNBJ89BRROFyZ/dRRGpb84ecNmeM9sqI
1vADK23iAJZXVqdujwD6UuwYQc4AXRmH5R12ELLyEVGwC+u9Ix/Akunm9oA8KktZB16NevSc9sh1
ObZsTYE02AOwU1NczQFVPZNBUO9Gm6ZLev2oTVkDoiTHSS49RbUtSwlHKu8xmtG2nlzpX+TinYBh
mH3UL1rO9xNheaHxppJFpu/1hGQuwCwgkzjklQtYj072Tk4z32VFYC2Q7+xCfGfyuHtD10VZ5no/
/pJgyo7Wd9OX3fAtV8WDtvlUnU8CC9WXwTO90d59+dJknZEBWtXqcf4zuA2+8F1r02LgILs3XPQR
tO5YptkfimWE7iFpdwtihWPiiosXV98aAFSsIDpEkl4tEi1JDNESwwVVYOkI9noItNsoxKlGq0vh
rHESwAKLIYDctjQBWshTxWGeTRvZcyC9smvRmuMILdCGwwOteEexgzRgVOp5GX4f3CQlfkOIyTY+
nHAxlvv67hGaNVCswP8BDFnmJBX/TdVQYhi7H0xtm0JXV6IRezDl+Xu1wIMLytpuhSUqI+FZFxSG
UgYcxmRSZpLSOIZhqRmTI6wmv9R2h4HdP90VJ3N6PXD5fN2UHpo8bA1ElO8dNdK+rpk4Tsu17KHh
hbC9lmop7F1DlRrb6S/sTUUcZiRnwTes4VtJTqeNTLVwe30FxBF+vfA2IY2t9seon9U5vGbh2zfi
pfzj90/ivgyOkkl6eP1Bz4N+vL6+Lpar60/BQ7ouvuK8yK/ptQhr05QLj1zobcGu4hrrkNM1PEFO
cbmAlfW8g/gueMiHGIedZA4Rd32NXnPwyvG0MwhunM5FnQItU6E0QzwL1rFk5rpDi7NEP7E8IVrj
A+XJexrX6CjoRNc/kY76ZyzTGk21II0C+wm1j6aqkqoNiltpJ9WELNyZuBaDO7RMGfaTk6jczbVA
4ZC9RMrBTytT0B0jVKZy/bSti362k2WNZrrGs9BMQ6E0t25vHCXfxFepw2hoI7DfBfhoY0BDr1oX
hz+mlB4hL3Ged24C30E6ckymAro7gAqIz6ndQUdf3A7LPI+Br86/4QZ8nLkea0lad2Jr2aosWROS
7dqPZgXaHoUlC0zeoEcbURLRAt27y13Uo0dCM5dloE3CbnvEQY3D8ieuSWT3B93WlNqJkvem6p5p
3CzOJuyy9j9OIvHho+UilZyz+DPZPRCyhmG5DhSpUKcd1DINaUPJHMfi8hCwWKMOPDYAm3YvNnm8
QzVsZppmdP2JH7pXfGzmlTf64LkIVXuH0BCMNd27mL4S1tixMY8mqQa7IaM/Z13DjmzPVMJgEOOs
YHBV/oxeNhUX71lm9u84Du7ZLfrHTZw/efGP3z99IaxK6vfZVh/jStYlYkRZw7mDuiDia3SjPxLN
kynXrbJlUTOu66vAZYtkvnclnbL/lpIgR1tFx9+c9jbY/PhqVdmkGa41pDt1HKDjmENIUrz+jXri
i3rxtc2k0RYEr3aTA4vB9s+0MZuMrgLfs2aTtPVkQ18VT1ezAZgGK2rnyi5im5ri/Jp823SZymea
rpPiRq+YPXdcMrhIboxzoePf99oNKaaKx6cdJMVRx5rW2xfHi0D2hNauDePn377+/PnXL0I5CLBZ
NAHjnSZ43Lx6dU3+Lcn8CfYbMdPqJen89gUNPLthT7lO58exwVorOmVjNSSNDtl8mi5kSZcSehBA
eVjIIwvyhXjDC4lbqEHEd5sASrLX/TO4DUqXTdYVHhJlD4UjJpvIeCF2bZGiERciCoKzbAigrMvC
HZ7MY0X9zUALsDV6f7OevItZNUzFrPbrRtWVxxbdzUxI2ORZsMzjpViAFlnQYhxktXXaPCVsLYJc
O0AWlw62FTMmq7T3aNlaBeIUMFDw4FkxRJflkIemi7sCWKowboN4LSuoqiOjP8ymzge+n2LmNGrb
km7i+zgIZnPR3A1sTep3L6SSu7JzQYSbrQXo4ArAGbW3h20TJIldA3AnLc4JyQs8W95kdsOGdOEC
cEXtBoitPkK8p33+Pvz684f3GmGHlk/cprgsJH60Y6vhrwFaC4qCbMbEJy+gzVgXnlNJfUjPHZxn
lkdbwzMoY6Er04mscpRvj8E4Kw9ey7w91IjTw7DdZk7oiBpqFJ6dfP0m6RLq6sPwl6QJ8XqTMMjC
32qsiGsYQ4+zgJLaIfcHksgqKBYnVPcNfMNcH4r5mmLKYzC/Sf6oZR6SydiF+QzLbs8cZ3D15+D1
q9pABj4nTth0IW7m6gzNNwev59tTwzc9SiYbrP/ebLYCcc1wXQ3PRzWjxPWJ1TAW4lmU4Dr7jRAk
Z6XdSB6i1o4ggm36AKyWwUSyyiU6UsLlXil03iFCuiBYatia4+LL//mP95tQnpqS1rqa/V5Zy+NW
dJNoeYMwxXNShUyZj4upbb143j9yVy1lybeBwvMvT9EMoM8mBMS7uixlxJD0YAeUAAqxaPvdHuQ9
RG1Fc6KEozUigjgKhJtpC1RB4QysdT3SboPxIwuw+bcrhD6++fnTj1dID1YrnITvaKvtf/s7+fl7
8h89Mr/F2/fQ3/99G+w4ScOHVwQDZz99/eXTDfnllfluRf6G3fDfvJylVG1wNF8UP07SOPx34m6l
2Y8ZDl9emR8+BlG8zjD5OL2oi5I5iADz3fWK/DHB+vfr66NiXKCgMUtWG5wK5ri6l93ngfv6lRAP
IAo3DSGmiyCR7L0g9SwsEzp/wLig9rMQTvcuI9nkzVfBVFyeEBTaAWFVVDAzSYtoJnZPPFsNp0tc
LNIQZhYNA5LHfYx6rI0gDwBCeURoZRVj8D35dUE2gDmz9eLLFEvJMOVkYu+QeXDFsrghMz6OuH9+
hT4GRbq8Qm/vBSeZ4xHxZ54mlf3oiPDbGVSZMOMRkeW5eBzQkDTQuCgCXomBGgGzWpsfUleuNyye
LsWDbY3BtFTVRkYnuJUUhpEJQKcmwDwJAeLRt0eAjsk25nS6t4qDSn6qZY5hZ2hVdG0ZJNGMeL0q
reveAp/Qw65FQLaHwSRmbsmqYAcnsD2ci87HVymrS9XsAR3LUQOV4fk6pnfELcXl6+cjruPcns49
ywGKXgNbf6huKvLA84dkusjSJF3nLLNAfJukq9xQsR5+AFhTNwbgcVvzmoagNId9GrqpiIq9MlxH
uE27PGWzU06C+JhPVw8rT5mxdE/1lKoC119RQmy21cwvcfnJrpCYvyQgL5KC/PrVvTDjXVcEmO+l
B9c0gjHcPoD7IqYVdmnReAFq3i2CZrBGcGWRtfsuNdZaC3/zgc88DvZeZLgN9bgiIMcYaKxFQwzJ
loYydTR16hXaVcykHDzvFu/2uPT6Ucy2im0VKL83rF6I1AF0bVPHouyK23BNVexwEGEFCQRpTNQC
RNzgtc8S+09Wi/8zzzq7vi99ubTMQgtx8kAPlAOtCObUuWNXK0K/xlBGxB7bteTk68nmNkFKFzL0
kYRT+kJ7SfZlNpjwys48nbTaEGp46HTiox8Qu+7uWUlPRqfhj6R7QiFBCo8MJCRxuJ41qDDEHdvQ
SDIQdBvrtbzU89tmBpueP4IMpBRV5eLqY8pFqho+ekJiCSbpungbB8m37Xs80u++kMeNgLrPdoKc
Z0ESTmlgRMaqwEsIMGzHUkOBOD6HfUCb0E9oG2rEwbTmKIKI8X00FXujyHX0UWhgbVjqKDENUByC
IkripIEWfwxaxNGioG2w3QG7oXeA4YNSd7ohk2kxoc0EJF4D0kEnKZ2wpa0Xdd0dEjMWj68O8sE7
oIrHFOQLAtD2j19pYbR9Kyd2li01wPvXeMFtNKetPCkVOAO01zTNXvzvJQhFk7ssWP2Zi0pvIVsJ
BpOtPIoV1PrCcnpJFFA6wwSlBLQjgzbg5hSI636B1msZ5DSOVpM0yMLdK97oW9552wX1t5Ij8mSH
L+XPv7HSUdesvIK2jDb9eKjiLqIQ59pdkCVRIjaMoNDldoTsNO6QGF7XIxeXdrQd5XRM0+UkSrC2
XMdFtKL38vT9SHxvBqp43lkQ4Xq5okF/zI5WO+WiAXhPEnqPTyOseekBXt2lrnUR6EzyiIy9Z++H
ZERLKm/2Sy0vMhwsXwV5VLFs5mh8l7VHuvPtdibjDk9yCl7UCd/ynZGIqJHE0ETcL2N6N5Dhv9Y4
rxWHDQoGVEZJnXYMQEnZ7oRREiUxtVF19X8G0E8BBTUygBUgcrvaxgMvS6urQgqKYG8pCXZjR1N8
VkHGbm90Q2wljAFlgKeLtCyby0ppr+LX+SJdx+Ef2Tq5SdIXfzWVi29CyDeFa1+QFfiGqdsV0r+7
Mt/S/JEtMvnhZZIm+CX/Bf3HXlTOz50xRgKJkzj9JzQSUtEHQXBi6Ysv5Qz0LKR/pbsnHwBL3GHS
HXAAckl9awN07TLMsD/gfMBxN99sh/4ko7zdnWyqoAonnT209CtkyKeeLLCj1RAYN3s+CB0Beujz
kv4G7VanyoCoF0O45mk4WNsOjXj5V68LNPCh3vGzh8HcFGKk1zZ7dwnyCGbYrVJ3SsROpzEMJlfD
nB4K/Uw+lDWMggtpOqGKjhp5OLo5OB1foyWm+lAjDsdAo5FRty3z1G8F9nLS92bFXhPouiaZ6AT0
5PKuCcgfkhy5ehiOPuBKxfeGsup7pjUgzzW6OATPs3XCy1BMaemsbD0t0qxO7sgdiYYaOcDOcL1W
NGzz6vMoxLLDYwN0fu91dYm3uTYs5lJUQ3gAvpuqQiNQheQuoLVr8lCgs3Uc8zqId1EcTukdSp1n
BFqEutABJ0EfYNATmnvHHDN2JFfuUuq0AHSt3VXzOT2adE8IsjlKRFBndUDZbT2poPVV6u9O3BHG
gXVGEQzDWAKoswz2EEQAZ4E5gPSF+qfN01Rc5QR2RK6ChOYrdORZ49DSuTFgR/CmWWh67sDYRZFF
E1bApYYKyxmLirpxMEeTBS2lKylmA8v16kFFnQRAgSTtsI9ycetWZlBJsa4rwpERqJ6XHl/yVE7S
3KFlU7dk+/qpZJOkwPuvEQTG+ic1bahtv4Me7ReepoVnk5D2P4ljGp+938Fp28SpJHDXwonW0/h6
0MbpBXvCm+LGoEjHNyK+D+t51FVCdQdjDsT18FsBJ2nZkE98GuorByzLblBWCXaDbTFB3az6ElC7
uOjDEtAQEQGKVGxsXrmk8XL8bdp3cY6zqnNtGerH+ujmpWQ8DIqAGqu/buirH/fKg13f0/Cdb7QD
Ng1WSXCRT4MV/oHQHM3oBMfhC/L65rc3X778L2beouW8zpiR/wYfvjrtASXcnodMaaVOJtIdf9Il
Yliz0GgTkOI5UW3nCjps6MVgrc0xHiODZV/XMMW5xroBz2aUYZai0b3JUNvJMY9Yt8TJAz07p7fO
8qsDw/WGoIA2AmKOCE5mKW0WLKy43c4w/Pb5S7uD3Fvalo61JKqe4moD2qR5Svt3M8tU4lcbiOvW
0EZRyrpteEON+ObUgvzqoFen+NzCf5zDf9Bv8NUqmXdsMjjQ6LrOCKMr3ufZT3M+NwncHUrgaRI/
8Mr0PExHdBvleM9S6MgZUujiO1f/WUp6kJWKSZquEky7mXuk1RRdMIZcrWmiGI0II37/RgzCGAv0
HIffQf6Awy8UNGTxtPWTCdrWB5pnSDl2Gcuw6YlchlxF9AC/WJVrCsvXyyR9wiAZGKhxE5ZT9M2P
1W2YYXmQK6zOci+lwAqWla9vDiRCA8D5z7sKF5UOA95JRke8bzJOKa2TSaauLg+CFFNSQUXn6lwd
wctGSHWsm86w6JJKAIOBtrBPyD3JTCjS1SbXnfVzOKn5ABgM/RzENIZI+MUePdDNy+ri/GhcfK9j
Db3YnyDHhTDcK8Glm8R5YmldsztbH1rYJTg7/1ci2a3idLxDtvwhZ90hiV1SZ7oPNbvyKQMzWNq9
2Hn0hhxyVmxgQexNTM9FhBERTfdiyDgRgWVYQrMODUHi0TiKoxC8k5nGU2Q/j2so01ucZaxSy15O
nPgObNBZvK1fLUyDQgNqwDb7sIz3Z3EolTsSz3ZPqYWVGbpNhOyvoNsK2lfmx3UWX5nv6QOvzDd7
6Zbkp45aX4lNM89KjltaLnLcn46sDNrmikVclcL0zbOwy0pSgo+WP5YQPK4hPpQ4OmeJ708Q76lI
3Oy+LTOGlXh+KHLLMocUuauc4SORn5uchy3x0Eu1u8u5CLIy5kEebQOqHzm40AfS7u9GUGxFpUva
DjOvKhdHedFQN8oxTjvAcmerdIMUzrsR5lcv1reu4POQgcjVZrP9IgOBDL579gLg9d4elxiEhhiJ
G4eYZzwIZLv6tPVQapCrinil+49SF3uIQvef2drUbn0uK1GSf7r/nNRCIpLvnoaZNjvXID7BCDw/
7+DUHKPRON7+27B+HqvPCQVwff24mBfaF3H5VEs/K9EfqlwRTNOnqXa1/t9mcfee05Rz6U0z+fa0
x5t6bOyf3ODUuXz8rw9s0xOwTLYwRMeAVFcbc3oe+JzXz8guHTK+CorFs2b+yvz41xpnD1fm+7zI
iAY/b2kgM0jIg7JnKgXG4nPm/Rnbgy3/F5NwLJCLVdCvi0WUR3lwZb6lIqHx9kGOl9E0jdPkucuF
vM++0KYiXGF0KiAaf7oKpkrjH07l1jpit9Zzz2/XWT1TvX5m+26BBJ7ZwlYjhbNb3szzEMu5LHLm
GVxKXV+EcCbO8NkI4mI2pJK5WI5H4iefjYDO3WE2ezvMyyCepdkSh9oSF4G4y72vnpJsGqZTVpEw
KcqSgFp99ihyTfVkNFZzh1Rj7Kyuk3iNX03zSr1XfSBGa3snqFe3uzT7xkslbHse1zb18gcUdUnL
MviGtftFJqp9OIoAapurWUNRUD+zTEg3z47AuNCK5k5qDqSMVd+x36NFNPzqrct9vquWWy2tZLnW
gDzzPi2EguMUWtMbhM/N4Ar49NEgiDSPXo4KK+TRVbpFFiQ5XTZpSVVCiEDQlukOwvY64dV7y+57
zK5Tw2KMKHoZDWgkNScPL/2mJE2m9U2RBhiGY/gaw+YN4D8cw0fJbRBHIftBvK5ARGCNn2m9ibLY
L4DAuCDvnNqxPitxsA7gF4kcSuTo30VARwJi3+nedRHc8p+3u9ZHJ6xjk1eWvWvwp0FOpfUksh5f
MLncsK+diuKdUAxy7X36Auo3u4eQTyESEdLRYxRR8ci1iJm98q2yhwdzdcsDhYj8USq0fKCE/q7D
dUQRLZOUa5MgF7QFtW00mlBYY2Sh+6uPRsOMfJrWDhcXG7THo4MWsJIS4ow3KKyhsZyQ8UaGdXE7
B4nwZkNySsazItyqnQUl9ARBTogxBiFRHhCLeiveQXuj6Aevwi4pQG8YltWLiPRbRJvD5Hk0T7Qw
na6XtBSkpH2vaaoAo4uCFkz44W+QfBOekBi6AqT91anQAo2/Ly5CqqvirAjmwiqFuqMGIZoOMTH5
4/l3rVjgWcGLEu+1LCXaIUL2e65gx0MVJUk6pUp4G5Gpt+RklB8TtyVTx3mu3WVpMiesLoMoIVOv
7DVOqFvHok4IoC73tt0H/AjV1BGo84N91gxnmHYx2dgb4bAi3VaAtDVp6QoLW3t5rq4ARrWlacKb
RRm/rS8eSqyy9P99TobtXiBNTymXMnzBlYcPMnwdBSy4WfBUcFosoiw85I+dKfHYCDJTpNXDfRe1
wq+0hDk7ftc5zrSAbSzFLojvPjGOZZPINJRqcg0JonkEKhb3eOaRePI8RlUimkKPkjL815oWhxbN
Ed1WbASj5Yre5Ataf/XAoa2I//H7p+v7PNfef/j15w/vec8z+j5rgksNX5phvldgdrCu24truQqI
2Vt0DqG3VAVT8ts8zWp6Ohhmr9nTQTB3URKS9VjmdviePa5sKCG4rnGdaTpDSogoCgfXkBbjWxyL
O/yC6lYrIKJIBe8K97ywI9z+JIkHxXOHBN+Tgjj8z7YHgN/bU1IiGmYK0QldLRH7Y38gD7G/brjD
wcsNqkYLl1OfS5sugmQuaYjtm6NYkXKINiQJ91G+cwoxCWOCddMb0bhiXLPwwOy8o0osTXPJM00F
5LSQTNOy44PaKXaUD2jNQb5hjEHCerXC2ZReiAnPO/0RaBA6aZAe3F2Rm9TRd/vMDsbTr9umbfxI
/b6gc2JnPfnRtvjqzVQIvtcxJgrDGJejvk+LUPz+IDQUQTbHRSM6Mpyh5b/I8EwsfTQwtDhrxR0I
tUHVHVPlQPPa/bx9IzexmTh5whhEuwTwNVQY3jA6XrZrxDXQ3jAznOYlCSezSpWOEn71qM3WCTt8
o8v9Kl2tt40qMW9GLm5DrjvDsM4IyHAQPlBLD6DEHWYMynZcvHNmQjWQv5Ee+0TCUq5K150kLerU
Hxb62F4CbBDE5y7DzLctm9oCxytJ/1ali2rNzPaNJyHUUUwJ9c7efPr0+b+Je7YKMnodtut1W7O/
dIadu8UiKDSiRzRlJq8SJg7bsodcS3biCGv2dKbjDDQ43G0j4NtTANA4GbCuye45Glm3hZjKHcYq
XlPHo15TXMseRCR7Einp2FsGxfEJAw3OnmosghXbZ4vLlg8zCltdjaPkW+NgmEMPBqOiaShc0Bm3
jI4oT2Py5PC/0ywOr4N4u79dZWShygpJgIrnuAOBFmnxsJKBQtZHDwQ6SYmzV88j7HqlHRznrnsc
GgxtGkfTb/LO0DYoaBoIVW4XQ5wXWSr2MhTK8WCXRrPbxYdfpjJAyQaRQhf3RRezBMMNo3wVFNPF
B9kgGrCUVyBaU0SRCeoF3BKsYfoZ1iCQNVNQoaKyySfmy/LUwQTJwyyK9zM0LN36m+mqQ5jH6SSI
tdsgi4JJLBkqXZ12sDj6JtXQG+9C3AreIsqLNDsoShIQKxmuaeUo4v3FaRBqizV5vSIUiMIEPfVM
1iijoQ5ue3A53ozbhxxnxiXr5YQ486MJlac3NOE5yvDyIAkn6X3tLs4Fdaxvu/LNgigWN6lXxxyZ
ms3zHnYA2BpRPn6WqxKQGZrR9KVIV41mVN3sowGV/0F8wHWGP0iXPsP3vAH0s4KtkT9Jk7DcVQh9
RE/digXaMJmGrhowx8XXsuDQ5jhdfGHiDYjMtbp7UroPw6VftQyvxTfNyHA9ZVjHJ0Vi3tzR8Mgs
BSVHyNB2kUn0UvvgJw3fk0/xg7jNtd9hnA6lJRRnqxm25QxA1pVu/HiF0Mc3P3/6kbZo4qUJeZY0
T3XeFXqYYJyQb9Rzw+Er8ldHfrBl6iMLjhZqmOPiTUGmxWRdYOI308p3wiM0ZF/EJxBfrcoh4yIz
gczyPZUTC86/zNUmwf36RTxPzYvoGkWXhpLEMNCW8iI8ie556CK+nfii1musb17kJ5Rf3SLrmZdF
Vii0xlUWlhb6zCUnMXX+ZTcBkJ1knUXGZaGASU+sfch4xgsFDTvBd3WJhrDKtjDs/dAgUeYULKcO
NYce+z+SD6qlqEilvxPLDZnjUymMnLCM0QjhQtq9IZxvyBlPMg1R7IBiGZ1IqSrLhrh62RhmcwlC
RQTBcolczxibHuFtk+ePREZjwlnzaXMrSmrySFsmp/vqCJPmwx1RCElUNxzrdAJrGk3d8k8ntMYM
duLZDSG6qtK3TUdVaBTaSa02NdXQm4Oph5JXo9lQuOa1Flmjoul6nzlKGy3RtAYms//88pXF0VJ/
W0sTHo0YhCG7nP1UflJS+c9WQcRe0B5N4fnvqFi8XReFpNaPrqvF5EHE7yhyd1FYzTeMvYaDbEKy
gmybJMPgjyySOnKsXv7QgSj++cunn4pi9TuvagPTSaRaGFudPKRGUjBuuIHoIAyz+RqJ0GNI6Dms
KXSQoLSKH44K/7A4Rs/tAVc38vXqb+oqYEFSryPE9ExV7G8TL6dxmq8ziZvmOmr5FiHLsypt0xgL
XkPilcBRJe+NL9Bm8QPEBbfjvzQ0shgo3x5Oyzvwb/rmQNKvneyWGhsDEkPtZHe8HnQso3scvuPl
l6/36hBvjkKJZ1hf4tFFuip4YSrTPk01B2a2KiImcTrZ+Ok18bKO82gBdxVzoEMM8qO6D/Fe/SnZ
rtEwlXNfbnZqpW7Z+jicl+0zRKeMymY3Xq6KB4ZW5mrWjfnQnB8T07FWBpQGmuuSPxCTu2yeasSL
Mx47bpSw97EWrMMo1W6jEKfNE93xzEEHXUSV+OS4gyD2FlK6KVqurIOnOn8zfORZlnIJT5mzWGdE
PDSOVKfi6gnItdTj8+ap1cbMpj2UgE+7Ro0o5C3Ubn2WK5et2+PwLV+bzQEkP0ll2QGuPqCcz0TH
xpD1jnuWUlhvwXwILOrPOKNFcnXWg4K9nW26ZEVm/lzNK2cmjuGo4rIq3IaFF3TPdb4CFjO/czNr
yseAroMUcC53M5E61nckhOvl8uFVfjernEzayuUM2smY9jhylu9kkKGrJ0HWYtW0lIv5fpEBZrLd
wYgcnW/zuzcWlJalMW0/s0oJEVzQtCCI5Daq3Uz6/NvXnz//+uVv8tP1Izp4T5UdEYIOAr1ZHxdc
plxhlNEMbUoYvcCl33O4l+ANa8sl5Ml9BtAJQvPSyXCp3F+TnSxrF5of9gu1LLOjXwdq49ReaD2d
yD7KAjHJtnESRZEbaMOyzkdTRIZ9ID0Zfg05GIp8MxYXk3IxKXBlAXl5nj2eohyTNq5JOepV7ekn
sSi8qtdPOAhxVv6gLdhPrA42Pd8XV8VqN4GOWjsdoO6VTyW6WZSFxl5N51E1YHE4Ttl5vnCVs+wT
sIqM4VidY/H2xnFUYcr5fN0pBq0jo2ySi1nV1bN6iL9K82JjXySFRE+hVmg4aVOOxcJ2H9sEoqz8
QnZvwRzv3bfiJMy1ZB3HG1jRbafuqcLFcXSLswcCFkqqZntIEdb+OjW9FTiSvU6YxEhsgiz521pc
Fx5jqmIzSm6DOAo3pSyLRZbe5Rq+n+KVtB+m6aka0L0AZVpnT8uLKN5olVyhXF/9IO9Tsj8KlBbJ
GOi+IipK2a+TYDbj3YknD1pdq21PR0NCbwtkyktfe71c430KykYu8tFGgP7X5zrTchwsY4KyfaHt
F46VpMf4KgD3XOS/1oE4xtM3HhfSVohl9UOa0yvp2e6Cki1NWWxynr9Zh1GRZtdBMl2QhZwudmQ2
aHfk97uKWEhcxtJXA70TLCY07MGvE5xPgxWtTL7fCajiRxrGCDIgm9c4SjAvMM1dgeki6JHG0Eoy
9aSxQEtxKUd9bNGIBWKNQcbe2vaP3z+Jb5L8EQgRF0B2Bp4t9XMEKZojbLmmrcC2txuyWQCont2J
Y7rt0LZkvFrFr/+6uTLf0XdoYQHy3s1LwSGLzg5ZrnSj5vnbp16/vDI/VHoOKOcnD2bbS8eq422q
HjF+/iWeoOYIY7UhgA2ZdIhA4zP82OywakfJsFSPUu3ScqaTSj/5pNrJjw4XEp/8m8MpCQQflKje
ET/DQRw/aCNbFApnnljWEnxjCF4HhTrZupBPF3iJtQzHAc0aE7svEMfJaoEqtm7Wyaxb56VIaNUM
NdJSaaW7M+OoYWaapt8iemNMWwjI3GRQlZH2kouSAmf0lInILIjJS41Tc2O8YCJc4iKgIqQ3gviv
dXR7c4XQF1xo79jHyA/kt1N+LUd/tUP6ivOCf+iGlrzin7yuihGWIAERYxbkC+1uEcXU5w9CWl+f
cFZ2Mgtk1cJB6b2tBHsESi84y5y/GybifzP+Xklq9xXp0uZkPtfu0ky49UWWKqjtDkuyqTQtNIjO
VoH5dC/LrJkfuJS/8GL0tC7MO+I1vktD/G/6ve39QL6Y7Mvf/07+6nr7Z9W2pqoFxToM/vT1F/Ee
3NcHFtchPBdatJzTKnTZ9OYly8r8kWVlviTvpeTDWZqR98HifDmKFBUfr1hDnDe9JqKlhjMKr8z3
xPbxv/sUJd+4IaSLCv/NFTL5W6WNKD9PZX6FPP0K+fTX5od3/JfvroOqkGHHWd2ErOrwaGAx30iE
TN/fsfBjC9NwSqmLzak7sH04PCkbxKYiRYs9Xk5wyJb3Ka0cE2zLP4uP5G00uPfExMXIYh5RiG+u
Wd+reJHmBXc2ZxHz74KY5hCQT7H4Zy4qHhlN/IO74CEncqNC5A8TyBANK0OxBO0TSJB6Mz/SIq7X
lKQrc0Idcsf64beffv1zuozvwvf2YvIf/+chfDe//6+vd7dT9OtD8M+3+m/zm5smIUL4sdsJsf7c
1wIdidnqRJgES3zzkufI0AWd9pkiq/lqRWxa2exWu8OTb1Gh0exaLcEFu1Z6uXEIumyZtjkyV7r9
smEMPEf1GBwWPBPfzrnjjgKTZGUF2lyxv+JX7H9vEhVok9RKVPU3dU9HV+sPYbfqOrquisVuPCcT
0ShzRTZ6Fqzvy2NDQ3y4Yo8jduJTlp4Rcy65KbhCLtmYpVNiDcp1j7xT60V5rnK5oBPLxd3IxT0v
uZji/FY0hlyojrz7/+4WQUF2uNn/f+SKtxePr8iEzdJsqQXyo0pVOE1aQ+mgXjSjRHJvSn6/xMUi
DW/uubGJktW62Fi6fD1ZRsXhL5hJvCcvWCOZm5e/xZgfI9O/IN8eCE3k228///pKdNxhK1o4Z3R5
npANxDet9mrA8ZQvGesiiiPWurJ6q+ta3iCDWz3BxwntMK3t5LA5khad6h9ttAY/1W83gDS+kZWn
rukhOZBc9yeNVKKHluUKeYJtPj2LIhv9K/SO7vK333z6jxrwj9Itv+0pF2iZY9fs7TugilcDiZVT
WXpKjTsAgeQseyjJJZSFBSYfFCRdu573FExKZb04WkCv//nly/Xhgkl+WJFvP8+4nadDh/GuV0sZ
L0zXnIS3bCFf/pMM7JfSedH5k//O/oR1cCHf6FfiO9M1482XLx/ev6KQK9FEMZUP994MiaPkmzjH
cdgpopVFP5OQaF0RzR5kcwbHyyi82Z3h8kkUfM+O0Hdvf18ene811jHfHByXmx+YvMWHtqaLlEuZ
inZT1lNcCcY+nRUKdlcLba9y6g6/YV0c2skxndAbcNnm2HXM00mRk9Zrx8zNS0Ds7/Yxy/Q2Ynvp
0tfs4s3s7ab5/TodsJLcyqgh0Kg5rUaNpVI0ujd+K9yjfDfQ4HXyO9qxWprS7QU/J0Xslutq0Hv4
c4dHNK2U6p6W08o35zNS1w609+gqYrE/555crMruwlQpKGB7YRv24HLjq/v7NMHj7CtAGzUAS9uC
HXXhV2j46VzdM0hOVzfTsvxs9ZwHKRXMUROZZZphDSfTNJQUzYDlPymQ1c8ff3/zywfZFcsVcq6Q
eY/sK/Mt8gxRbIrnDimo4i6aYvaKSUsc+2w6xgkU6zAmgvoN11fI1t+0jY6o00JDlRrApCs+qHX0
k0t3ENF6Y4pWHA/gn4PeDiDaQW3CTqhh9zgV1VI92ElfIdcgUqX/N9htzNvN4n10YMV32pV76iHX
HvFqA5kL7mAiA5/mgVZlFyyZNKExztp/vP2vmpwoNLhoKHaOixtCx9GhJyfw5uqd+xkirdpJCWrF
01p2tKvh7Vx+F++Oo1iEBs7//jHksRi53PSKpI6PL6/50yoCdJUKUJ53f5LpSGgRne/StIPjA16y
ZDTpmqp5upxrZQh1/Sy1vBPM0m3UN/lm7AV7Q6frUFLbMWEcF1kGBSO0HBgadpnQqifS0THQSPq8
G5F35tUba29Mtvf9m9+4ghFwlWsRR6uMgqN+FJI00d58effzz2wYkBbiWbCOi/pdJui2pPvAHBKB
98fp+9IVJd4n+n47cRC6vvLoAexbyaRhvmeXkIxWTOhjTJujARPXzfEeDWuAuXmGYy4fENgEsvST
TqCXRHIv90TpykTodqkl1M7SfUBXHrp6866iYO7QQyX2oUbW67Maio9Xb8m/92MMRZFF028P4slh
jr3sUy/s5eGSD7thqPpikKMZb3hfDABxUDuKZiYSa1HwQBFhPCpSzRlkVHYTg54o+y7/buje5oVR
vjCszQuHv7D08rtffje6us7nMVxH4SSHI9aYAGODsv89xZEm7aJKylsDnf3PCcofnXKE712n8o65
eWfzwkWbd/zNO/rmRakg92blyc5088I+fs72r5C3+fPNX+mbDzeFvVgg+9lbBWhYg7idMyh44xzG
3tCdo4lueMdvlFL3/eOJvxkPw0BHpsD2upsPk+JM09XD3o8ba1I35s44Y16XSHSZ85A5r+tdJv95
zHnxbEeXUVdr6ZsHGw0z2MFyhTNacLX7IflpB1oYKHpNxErjf5vjRf2BfKd9bwmJyypYj2ASbVTX
4Pxd6f6xpImYr3T7elvIok6JdTS8sJ+WHu9J9zR63JBHbD42uV7pOjiW3DeGkSnZcdLeljl9IRar
/jjVFSJTfRiZysoUwu7fWslSCv36r/Jk5+VXnlHCvtAIffoR+o3XNnz598rJx0CuXENACqzD6Bkp
mjx8BbziW/owlvIykbuxtp9dU++NmupPPsXng4KcGuqnG41ZM64/gEwaC47r3knEQvwSHrTSKBVv
AKnUHySPKBGeqFwprtc6I4sGkjpE/4lNY2dB5tvGHC0LDSDY+jrcIF3zB9A1XaGu+e1EIr7/9k8i
CGX5faBSNGBBrXCSawmm3Z6TML0T5veB9rv+oDkq/ZN6QPExACaWQUzrW+BQk9ULhYV3KtEwdiN2
nWfT68MLSoMaJfNdJVFTtQjIm9oqSwueoFM22BP2GQL5bgp1aLrOi3RZUnTzT414mNpvW0ppiLqB
TMt2XM/fvFKjdydNVUe2oqlKy0uzdEpWYJoslETuC0DUt+UPY13pOG71nhL3/a7yNT/uKmmkYUBl
2Wv+vk7W4+8JtTKHWRA9LwoOMlQtG2LJ3mtlBDRr7if0jSzHOJFoj4iriDjEyYNYaKrWqiTdNzP1
qaiWbw5uasIoZ7moO6Iky9Y1na/XtSuTKqtM45cqxSXoMYK8s7ityCiX9QHgJTddUBZ2vzGi3SEe
tLKLYRTmvHMyDWi5mWDyGtP4/aMiAmT7/ZL/8HKkkgI9anhuqwpsigZS6tnrl+dRZLS57IGt+wNp
YO1m6KJ+Cspynkr92hM4vvoJlc61LkrXqyjpORs8mLq5StWNUF1WRxDGeqhCO9K3HXgbjesl3Er2
uKOaMxEUi9D0TKVDBquFbRuPwVTQIvAtKmhLSx/ZgNE09DYiFlaogXQ4gMBczK90KE1IMCloKFc4
2esdMUnDh84VTTqMKdnWrcigPuzq/R7l+8KuBbpkS4Olw0PzF0ESEopqKgyZpjm43gsTzHtJylYo
qV1utPC4AJJu1Uk++SpIgFUKjL9fmW+rYvDNsyFNcLjjWwoHqVwQJYPkQVrs9JfEQX22LtaSl2d7
LVjkTGMMBrarClubFXOAHtMQdOkmeEbyH0p9IDUhbaPdOqWiJqSraGncrNwaZm6RNk2XS0kTOtsz
B3cepvG6IDzf2PcP/5rEweLFkTexaSjHLuyObZ4xtm+zpQb9/ZgYF40mqytzGtKbB7wVlsABM+mR
+v/StIFkdqxGLGZF6IK6hj2aZGo1CFZmi6cszMo8JbdLT8gBmYFzohEO/lqnRYUB6/GMBuWhy4VZ
FwWO00SyKzZPZmUIs1fINtHlS78vf6/UkvaGUaIkpVMO51oRTLQ8pl2dWQEj8eo67EzcEsM1jB1T
XBGE1pbkBftT/oAu1bn6CFKcoueOKTiji/XtkinfRU6MUKHZ0o2T+24bV0mrlt/w9DOhzqDUoXOl
zmSyY79wBWSagyiV+IxMP9kq2Gm+QXxOo4Voam6RQJ6/0WHjnOBM254f9jVBkNpNECr3Ggm8jeZ2
TRktkKtsKKkOSCl5IemUc+UZjQFG7nCyqdQk1gxnEhXaOomkFYotZ1DJaSEWEAIV51rXaY5Ss1RB
W01VUu1c+n4MDYRIC5Jf01VaYuFYpxMO0q88f76V0aZ7+9jqFIQhc9KJwz4Jpt/Y6841tfpMyB0h
1ZZft0H2/SSdr/Mr8/31lf3uei8zkOeyve3bWbS72MJ0TaM8pW7oGUmOVjw8I8nV5yKdj9h0/azE
lhO/57EonHt6yTUmWJru4KtA16SR6+vFlW7Upizp/hASu03J5kzS5sB0RpbXNljojjwC/1vZh5t8
O1wstzeCNBuB3ZDtOkZIxWfoysVXm7tq+WesbMcpqvWSUz9VoySPiFNe1vUXbqlsNLwAd5dM79gl
EyvpT77ds9LzpUbx37yQNwH4X5r24i90o2mscj0vVxVcmZOD/kYeeaNL9pikU4BtDjwmpjjpyBtz
TI5U2zgUjmxE6Fjs+jAo67tgoB7SFAsTqUHt0LmC3vnNxtJV0ERuJ92G5HZ9JMHu9HOb2F677UXK
BcGipTIcRpnkxM70XdXCYHC0IfXrdRbfdOlbqWwlk0nb1NHftNGVQElmOug0t52SsDCfxrK/TjtF
URHnY7nD8Fpf69Sxx2d0mEEVsgc6/Ebjx2u1Y6/Wptn2xaY9c5tGK7Ghzq2A2glJCLstEndNi8R9
T/4F39Pffl8Wh7v+e6cdaHspiFtqGvbAUjCBUiC7y0pPekM5bQRyEzS+jWj4M68caAwyAJa4dtXQ
A2DtpfJXmlMhJA43nqUpPxyu7ig7aCd52nGGXJclXdFjAEMlGilY5kJLrGy6XcFqSloOs0/ZS55g
Br1L4PnehKrOI8NUPzp3UbE4vKTt3q+qxxIovS5uuCEm32yz4YoYjSA04WJgm+7JhMZEY075d1qb
nX53yu+0ojr72S9/1svvVvl3uPy9UX4vn0NLsu///ebztB47+z7j3+3yZ9vc/44cpB9+DvmHdG7e
b09vhzJ2vcfcOsXpUquJ8vKKDwYfgu1XMgxr3Q75V4N99dhXl321dp/BFnsHsa8+e4e/ttnrQLta
eyEmf+wG9Nf2TJ+RdwwjuFo7LpqSr7Y5Ie8bs8nLelcVGSOMmC1OPTRO4t0/tcExew6Olq+zLJ0H
BdZWQSRpN+qoIaTlULEF571nEoG/f298aAiy8UYQVvebG/O5LDdjLDP2MEM9DeKYBQuJdzinmQTj
nEZ0kVa6XAbCfGVIHcaektpcm/3Qqm4lvSvbio18MVGD7EBnGENwgvT7m5fGi/J+z3jZQh0oX0YT
XwMZy1mQTB9q419B2RIqZ9EVs3Ax4LpqoNU2Sm6DOAq1aZzSCCfZ/Sio44MiXWMN59+VN/6T3eVy
H8vTKZmvhzi38cGSTsLI909ir40ro17NzGHkwolsjgqz3VHF0lzQDjUWBHjZFOykygOTyJTWM6D6
Jj6isYzx5i2frd999x0VR2Xibg9DKcE//rBLrqdrSHPMmO+MIkXxsuCcQCsrkqrmYbnWsDJpirEe
wZUSyqV79Q5AbCLyBhVqfY8N46zMH6AYjaC9Rq10zWGNYZLWqSs6gXR76GqTog5rEevDus5uodbP
fqGmJQiL6JZe5SywpCKcY44p1u+JUGnGwE6gV+YbdfppDCrOnFaOowEh/N2/1jgTVyI0T2JUSwO5
DB4m+PswSOY4S9f594zM73O2eWlUyKEOR44lKD5W1U8htsO7ziYJecM6QGtK6zJKAklShutA8K3z
coBMib/9Yr96TmXZNh+bp/d6MDbPZDyb+BOXq4MtclbXKdN9m2Cdj1f7UskWoYMMi0WGsVZES5zv
dxkFJO6D4uwslQeXvGEo9PgSVNiki8SyIIrpuWVZTVB4COKC9u+WqkMQ+cnl/Y3x3SP5f3ksowdq
7nmQZ5/HECjmC1bVToFim93PC6xRTuXp72n20iYDr5WIr695wl6t0R1J0lb3UDeVBvb6u+tr8p8q
NUXjCE/7B9KRJz6JHnuJur6+wujK068CT5UUR1rFup+4jDPXr7+jM1ydcjqqxdo9UUWNAgZBsMvy
3H+9Co6yPxWJUJVXz1vN8kxGqprpmjeqy8mrmDVE14I8JyQLg7eRr2g9os1LZ1FMBKtNHlYEUZtE
c1t8YmaPbFY2gXoT68qeHcXIvdgUHqLkvtjvetopCa2TpGg9WY0fMEk6C7b0xSBJabVkaBlexcKz
OaS7qpb1KgX5n5HklkU/kcp4sxqVyRfRrPiD0Dya3uz17VwRGuhI6YawpqdlKdeYpjRG0NmnfcRo
HhOEGc6IEphiVkxQrRvhc3fpiVsEbZuqeJAbaIByA2tBknTbhZaCvZrOo+NB8foKyBxcQKZEQOY5
C+gWZ2T6aeSlhhPaSzY8op+FI5gdHk5mQDDH19tITi3IMIvrxCGZCsT7y1iOEuvge1+I22N63XF3
wgNSoJHlf7UuatrUmu6Y5MyiLK+hxgfd9Cijhti3NAnl5BgeKChXGT3FIspqyPE8e0RqBPPRdy/4
F/wL/gX/gn/Bv+CD8G/n12SDmMyxFoX8sHCFk5BvqkuShH6ibXQD28s6v51r6xxrIZ7lGqv+Qt6p
1HLuCFMQt10LwnRV/Eqzx6aZpACyr3sq+KBwAvINUJ3uo6eTPe11kOfRnO6ayXiwQYlxwAZFWskZ
ddkwUKgdI/ugcZDIUgss0JUUgCl69tfIF+xUVYA2zXNtQYelurdybauvrLZPJy+Ot4VmP4K12V0o
eCxyej4WCR4KauwoeCjvpxHWNEczTNvr9mx2ZjPFq+J6lZHX19tgrde8ZKHh2l61zozTQ/3jW7xN
ptlGUYqZ8vxuMOti5jHNFz7W8mw1srp6b1x51tV7/eqtzr767OtbJr2P7tUH++qDf3P14d3Vhw/k
VZcyzUdU3JnT6zs8WeFsdh2sVll6i8PrJLiN5qzwPQ02IVK9plxf07bVf2zK/v5B7wCE9kUHnfI7
VTp205MiLYIswbmgMpCjm6Dyyo6c0x1S+U4toO14jkKOMrxKM0GlFgRr2AIWXNVc2KDqwCC5TcgK
8+2PFfF9/njAcZzeUVWoMgSAc1UpZMbWIsL5H/g+EgetIh3UmqgvSeXv8B90mYySLYnC6QKLzVJE
EvndH9vm7DWCMlxQXVaFVG0qML1L12QskzSRHSg649JVPKzwH9Shn6XZXZAJ43wtH3TL6HaaWEyJ
/kiTNeuzJJhmsFL5bcHnGcbJ8NidhgMn66VwW4MM0L5GNT3E5yjFUw0tBN28dxqcISwuGM3ULdAd
TW9Rp3+sMnwbpeu81owir+8UBJFDP5lmyyCZYpgd9UDOkNeTLLr0sTYMQhocUABNXxr4GyCpIA90
YayeojQLsTBfzfPtnuMknDlSu+mAtFWRAKZxxP2jusrjIMvRlv8lLoID3E6NN3w1YpBbaRshux8d
yu2mIp5znN3irHboyZrpq2J+i0OLM2+ap910lRQaU1L3AFFZuuMMKypxUspZy2+dRH+t8cHKmE5o
T1KJh2Z00TY8maVJcT0rD9c1+pN2t4hi2h89kB11GjpobyUBy4nzrQULvNxCVM/sDWRBUleQXoHI
0+k3XDAR5teLh0nEo2XpVQG+pZHSiyAJY/Fq5Tu+IsxJEDKgfBF8qzlmd1xdIWC+nrDYsnRKS73s
lXwRaowHObToho2XK/Hpp+UPhkl2tlqQT6NIOLCQurMw3CgJsgeNbk/EVc5sVUBZ+g0nGj0g7RxV
AgNaz2gkV/hmSU8ItGBGQzlpWSpM58xknYuzuz3TGpwAcRtTR9Wc4f6bHArkuwKRqDgnmFhyrMkO
eD3IaSgywHCsPiSxQRrZxeRpIhYmSF/hmMzECpcMw1CLRKb75jhQS/CdtlnqxQHyhqkIfO+qa0MG
34xokTQCzLFUDWy5dv2xDFavivviuGA8aMlsJeKSN6pFRHenWJtPxQJ27YGgeZwp8X6oNVoFmUy/
LN0ZaYihJLm2M4xMxPMLckvVAm2d0MvR7QfEQbFIJaRwB2nZqmbuNF2uyNDmONz6RvKYTUgMMww1
S/NcS7NoHolNk67MOIR4FlNryJWUsqvR9PU0SWczSdqQPwj0phgjmRrkx0LsaxvI8wZBr0VFoOpN
IFSWSMGCUJJUw/cFTnLJ8uPrquS8hRF79JC6dCAcIsk5PREmc6V0eJlsxTtP1/LVwzZPUdtVjyrn
krgvCoVL1DTGybxY5BKbAFnIEdBhKPegCxoyRwPaMvJeumRX2UJwWz04zrJUvOOGlJdsCTYLolib
POzmZK4tcCA5oHZBatSNgGVwz0dZbP8gidldkaN8GRTTxW57LJeAYTjDjcGSbniCKQ3FqSNB161h
SYDIQTf1wYggS0SjFFxnUHxiUZMy61BOgw+JTutBg0QDIWeX3VHXq3lGGK5le7i5SJxOGjpMVhda
2VFsCkA7BbMT/F1GE4IBymerIqEoVmkSPxCFS79FWJBiagyI9Xoa4yCr5O9CAo5BiCyykEDccm+B
OQ5iZwySFAeELEvFE5coStbSUw4fOYoReR0srWYRM3VTMeYyyL9tPTGNVmbQ+A2S2ONVDZ+vJ7sj
9AXZSkzJeIsdJduCgDvdwHPx/YShCJFVCWj0sUEFvOB4GzZrrBDoVBsCuFzHRbSK8d6yJxapb6pG
bBpFA5mqMMnitocm2Uuo0pltYWI2J4TCdFUNH7Hqc/EZuSrRZXiKaVHgIMuCB34FIdzdWqatGHES
pxPxRhp0TgCDYueV0ntH2AUuEGp3874DrTkNN337FNDAAJFj4D9zjSLusr627xC/7jDWvCOCjDW6
6NHjF7F7Ybi6rRorXdHlPu+x0EPgcuIMH9wy1p9rWx5SClw/3Q3b9AeCu43wnTiM0FIqWpl5MUCV
4JALxZFe8pONtK0SaEajUShXbE8jtpwDIYpXBNA1GxiMB/VoRVoWbZou8PSbeEfhqMQtFlkqVkhD
dxUCiWc1pIImEIJuDuSX+K6vTjUKrdbVAnXEhEFFS+ZJFpnslBZBGoO1wBJPZE8ZQ3uhOpITQFX8
FGnKi6CtggfZquIbqkxhTXFoA9S/CIhysC2WxDio44n2fMXhrglszjLt2WotDyYh6gI5xfW6U0BY
z4O5RFchSX4w8CzWtrHtwktp0J4RCkX2cNs6pNJ0b9+yFEKWVefEfiXoNg+KxHuCkpGkGdGBeOob
oBvwVojMN5G3JjFAqbTtIGvAQBfdELDtm2UoaxFkcyxJyNSRctBNBQyy/49uJfntLlI1mP/CWVoe
PWqysmwGMlXB3aXZN5zl8Ng5z0SKoY8Dj46J+LNapsDzB2Gf2No0Ka2t/BTBBQUP9pGAgI6KEFzb
G0oG/A2xmpvDs17CVzgma51qdPDhJexaoxvjYiKq7Hu6ar0ja/BOz4jk84dkqqUrcbHD4aa9jIxq
SQMTcg5q6u1E0HCUDEq5bIV5wPk+enXMQRWPWoKDDoA9yILWkWsRCdWxdh1nINZlRxweZCvRk2eG
XV3RdOXihhz7eZD74Y4MV/Cryg0qI9+LadnhowdpqWQaShhnNFSZRyDmjbbMS3Ubsinvw7FYsX1T
NZf8u9Y+wg9Uy7ijBGBECWYAJBmti3jkyckOZBffTwzltZT8LsxWrhUSGqoih1yrDMg98LJMPe8j
Al9Yv7B+Yf3C+oX1C+sX1i+sX1i/sH5h/cL6hfUL6xfWL6xfWH9mrJe48og7F1Ikpx/TJXj1CNay
upwIljCsEdqmV4C4NCkk4lP2+AoXPDNN1CDQ63SdAMB5vWkY+i2NPC2r3IubKmDvF1Qt81Wa5FjA
XKdT8mcEUj9GhvGYMVmAGa8HR1HZjze0jYX/kbW34I0tPPYVsa82ex8d3znoT5OifD1pNA4mpM7A
GUCVT98U5iYvlgGNByk7+4pv9ZSwRssosvrStKjVwSLBKoy5bm+myPqTZsUX1r1GeD9pgUAQ0IIf
wlV7kICKWHVD08KIVTZMis+8/lP1Es5sjy0pdbvO4k2VW1oKL16keVFWuVVALLDobUc58V8aolAv
Y2BQJAi4cZSA0lYbdCIFSaVOn2sOx9VDUgT3H1i9nao47e64IrTPyQdZYR9PH25aYQl3kGK6Y80m
nl014hwSADJjivoPeZm2T2TSuRJtA0RtCX1kKRTaFklga5B9Sv3Z/P0mql+l7pQQ/BvXmF/T4uuC
2HtJfoTeHaxYRDlPoQxTTCzSIl3HoZakBXcsBF4FJM3sGO1+GVMBZ5i4nXlx/c9fPv1Efvyd//jh
npa7kVWD9XS3N95u+KJkFiVRQQump6sjR7DjsF2wLlgXrAvWBeuCdcG6YI2MFUzIvkKe9uc5jiKI
0jWc0uY2sSYL1Iad6LfAC8k7WfqwPcX9KskudXSzNzD15AWV+lWIcEq0Id8WcQtoT0stJg42cbnJ
FqKgmbo8/TpdLgOxmw/K/tiR8fm3rz9//vVLjXLKiWLbIl75Lb/54YGMdvzDvcbaM/9whfQffvjh
gf9UrQCvcPKop8/y3HFluMTFIg0JjT/89o+vP1B2j5uutSOIPGU4YizHU67oLCGa75VzLaA5kuJT
5C5HH1I5bHfn0zTLG7b4UGFOgjyaliKlU/aoD5bqhWMsFl6Q6UL+CTWHN0IQg9b93a6ERH5TZGv8
eMV0kdBlLjSP9KlYX+c4S4Il/nEV5PldmoX/+zkKY5amhIjJCalu9hKqlG/fIZ+exdF8UTBDUNJ/
Mv3+7hwEMSNm8fSSqPvMxvW8pz2XvkXHbuawSv/UJDaqzTxqKit9SHUrqJrMKgLzhAf1wCXVp/wR
rtI6el/9B+ApUQrV3gulj2/0+wOzC3j7GcmoZt06+hVfospVSAuDIpBFSBidIlO6LK11JApG1jZP
Ja/utWjGl5KCwasjRnaA5SH3Mc14OMdbH1ObBtPFtl0k62tDOxbVtOgCFXOus0W0hnOBlysWn8JM
En1Bd7w3W7LeUap+3iPq7cNPnKSqb6UNe/bLxVYnsNF5aHVcPAr9LePDLoMwBP2md0qTwa8hJPWM
jZOYjF84SY/aZCji4WTaKqX/MZkMRYPwz18+fP3p8/sz42Fcs1FES5yuxZWknS5BqJ3sxNeSijMx
DRuhjECxAkPQi9rmae/+aFuHQ8yLEgdZUSlUTN5jZLCWkETbb/QX0XJu3MwzjBPN0PV78t+rVTKn
b6ObYILZD3dBVNwYB/cDvA6mA2kfYtqPbvztsxl/kLWxFVkbSei52Z6ETlam92CpUa9BSeyvTy3J
A/kNJ6TPModUcHZxIzqpsP0BYcWIVm/ErqEI4AMS52RHM057UYc4iXAIsmE6pFv1Hg0dDQmnaHQR
iHuIOUOP9+jczslCwnqE04xveUUSH5SB23uwRdQcysKmAbmgHPcOwtihNp3K+qBT2d7yoARRmcjM
gNaKiA7rUBMBkKYrKkZCOAa69QzYJxbhgVth8cGW7RqPTApnMRfAQ7FK84pNYh9hnbceVuLF0Whp
rzvKJGXZrTnLqs3XK5oILlw9BpLN3SIqMI0C18qPbYJxxN1E/HaK+vlLa02VEyS4z3OGFwpPLKmT
imE55tBORQ1FYzgaO2eSLafbq3Kpn2X4oFJAHWWyI6d0du/zbMY2WMTLL/AN21xXIpmGnc1NNHGR
He/yrNMJaZpSO1jgY+VxhlYefsVTpzyw/lTPSHm4yC7KMz1aJoXK45oX5ZkJ6pg9M33ZpdHI94AG
rJnTEQXTNP0W4f3CL8UiykLajLcgjj77LS1JGtzTzE15zyDDNFwV6CXiuohiWlJuW8Fvtk6m1Lm8
CTGV/Tv+hxURjEICmRYf05STUJmxiudHee62LhaVeGfyHveoeBBjFNIMkX/klYVZ5a68JzmWbvwN
mY9STzpM1aFn6vOaKxfF7KeY5R6rZgEhD20PD7wGbCSLrq3rvJfparamSapN13mRLjfhnFXPQlPo
WADgrOEHXDbebpet/mW4z3W4D4+YtDi9w9k0yMX3J6Y5lh8vJWvYsVBBz4CDBTx5ci33sv+7nDwJ
dKf54Mnx0UV3LgdPAt1pPndyXOeiO8/23CnDK0wAQ3bPeBh+I6u+Zuiu8ZiDUc4nDmZ7J8aqpE3S
8EHqwMOqmTt9i3xtCRnERTopeKPsJftk4yL34eSO71dp/S215/vD8V9LzAjCyIMknKT3eNMCTB5x
ZOsD2lwxGTU3AI7vjU2NwCBb5uDjUa7OVD3SdUG+x+E0yEJxrU40okwkhNWOmX56+k45isIajb47
vlDqxmh8cgYakjUZ+Cz6F0+QlSfU20eW5M3B3/Fk315C2Lss2L3c3g4I4Y4pBAjDraVmEiVB9qDd
a7S4HRH7LErE6ui5dm+wHevIdl4R6OPtFSh4voGhLP2GE428W9ty0QaZHCg7JegW8F4QQ9Ebjud4
be9PZsWuPajIPUS+qZBDVt23TDPbzFppURBtRF6hrUjPmtH0FmdZFIoPyQ3TUcgf2VXHDwIFdbyB
QVQP1KkwRhHWKCCWgZ6GtMZg5AmplvM3/7ExQqT/anWxJhdrcrEm52dNvIs14b7cYp18YxcV6Tyj
21t8S9Oh8P0KTwscfsLJvBBfWyBXJXsbOoosSPKZMADEsPpzG6fsdDIJxceClqVyldlH0+Thv37/
TSpx+hPMYuR4L1X5vYdtKGRQReeiC9YF64J1wbpgXbAuWBes02KVSQni/G6/ne/UkPZOKyDQMHAO
SQ9qX09jHGQ3Rq8D29aoJ0Uz9JOI1Oh/kTLNUrJbKkuNl5kreZFmwVzo5Zs6qK0geGuxj75jmbcy
EfOMjJHwR8OdLvD02yHn7PXNf/+Xdr/IjkalS1jkZTguw/Esh8N8/MbqAJXmF+2yS1dZulyJOwQ7
Ki+g64MlLMM2jS6JlC343sUf01ZSwvJn7STdHJBZg19Vf9MaSs9GQOZ4OXVIy1CkbQAkSxZA4nNT
x34cZ88N7ElqIA2JKy6b5kBG0quFDHERTBe0TAMP5ULiyolOb6DdwOHpItVouyTRouA9HqAj0Qm7
x4GieqD8cECaYiEN+wPNsAa20umnlEbQfJSe21umrpKtA0DWfkq4jzAdFbytl/SWJ0yXAV+ShVCO
0QqqYXPGyu9RZRTVHew/YCyODW9zVNdZLLG/fku2IKFXrEwB22/+v1cf32XRdHF873KBvEDW6KrY
U9D1Abm7eq9f+R+v3htXnk5fv/3AviL21d57/w37etzewPIutJ2INn5FT8tA4gRn2lziiun9kcrA
0v0aqYIzPACMD2CoCDLJJgXBYg0aQO6nmBdZFUKYyO8NsVOaf+Es1WIePNGtKUITM0UW0EpjxFco
ZAVJYeHvvooF3O3NEXe8abS0Ng2SKY5p+mwwSTOxRuiWrXC49sCLtMQX1n0xVTG6ThgaY7AmNxjp
jkI2D3+hEdePkyFk1eqPTM/jwyCZk8mwzmtr5zqur1JVldxyNPL2Jo5/L3emP8l5swxXpWUxkG1I
4rFU8HTIkDALxfL6W/womaWfk9/KoLMP1P4Ppv9R8ift9C5PmvJBeTVNIMQMB9MiusWsQJN4y+iC
Tp3aIlXVG3m+oZv9RcfrftQUPnM9TxnKINP0MTxbaMye6cMtvbZq4XN/9vsPnz58/XB5vPDxP314
8/7y8MrD//u/Pn7+/PbN7xcAKcCXD29+f/fT5fHCx9c5BqwGoCarlYhcyLU+DKq/WR5yrXqf/lyc
YgA6PtsYUirGkFIxQFIRbVtsSBkG4POHpP2cnz2otjzih//j8uzK3B/C13sqjx/A30NP4OED+XlP
CWAQX++pPF609CX4Lo4STA+7d/etkaQ4odsb7vjeUN6ezYIUODsrtGQdx9sQxuPnO06r5zcc4LOg
JQmU0X+U0oRfvGDZwbMLuaZtBOG5uHIQSC0ssAaor77ayB+9O8JJWOaM84pH0is7w0XeQJhMzuJ7
JUfllFaQf3TBumBdsC5YF6wL1gXrgnViLLE/Ja3P6ThDuXAsYab8iDhAz/HsyzBesC5YF6wL1gXr
gnXBumBV/Kq8COrONT1PweHpCic8IpTVAJc6i67p9MbqdzNgPslnlwnu+D6YFtoyKFj2rdBlhoTw
N4DtNFgIW9N8w9RtvT38n7lW0DuaHe7mHULSqz8rXZ8dA1IyoQUKTZSuwCDDVChJYdcoms7FK2Jw
Qd98V6lNqo9OwxXSvyP/kX/nQIzun4NM6N9emW+u0EfyL06nQUyT68k7HsE4jzF77CRylaP/dP9s
dO/chXpA393dHXp1liN/rip5xiM7exyK9yjmxvkSd4aUnbuVq6wb5sezJxE9AhIfB5Xm+ZNoPwIi
6bfzl+Q7uhU5AzIpBVsyP31+9+bTT5+/fD0f+3hA3xnab+0MaPjuLLbW+lno88vvXp7FtgB9R/47
B904Ezvz3YE9PD+KztC0fPcITj6+4yvZ2R/Q6GdPIg1GfwSSPKAP3wfLVYxfJbg4EwmeARmPYMd2
+HjyxhaAvG57L/LoGLwMUOc7Op6Pox0Upqa1qaT1dGxvQOGWNciZiI9+dUCvqL7b4CKRScSy0TOU
CKu1V6MlRivwhmSrRyUUuZ6Yz0QmOa0fCDImlnmWUwfSZLOXRKQ6YtjPTyANpsSynuG0qbckhvPU
RXK3iApMvSzqCRFaxI0VIBUlwbOFlvatVsK11AcoHfAWrbQgDFljYxreIwyJUxDbI4Le8zcl6bDD
4NLfi4us2ro1COJOyDjX7qJioeXrCe8tICTEdYenQ4gLqaduWa1xM7xMbwPxJHJ1YxDMegkbjun3
hmVG8qD2t8hYggJKrXpjCSsz7qjhiCnoJF0nYZA9iOtAQGpLK+HJ6c9TRusrS42biSAVZ5sgqt2G
Xv91Y1qa6RzAOX9DQ2HZmukdYZkKsILwgZXQnS6oFCUViA0FQGGU0RrEB9sZJI7ZbTmhmoTIkXnT
sSxmJyk/Xl9vz1B+pCco7dpLQcPV1dGI0PUA+KIxqXUMkW8Y/Q3DuQ1ObyLdMQdHaOQM9zIuJxwX
lgoSputJLK4CaurOWZm0o78/d+s36jiK26/Y1mVNOtGoSJwE+4kMiH3aAWmCJ747cbCLmpYwDqjE
cRPODGfi3hSGjiyFYuS7kg1ex5PIswLjJf1YRzWyL0binomgknH2WJvURwVkGiMBOeq1QXjchxRI
TtAUSwtybV3MNK//YNWxNsvSJXGEV+uV2Fp4SMUE5l1+J3E60fLoX1gsR1cdUu2A+bqpdCGhi1X1
JNpwVYMgAYqnGsQcA8QaB6TaxdpG6gdF0CsbqR+VMVBswbC4ukIUZs+0JNWmiyCTdAkGnZXWA+a0
GFSQZcGDNlnPZmJHyFGxhkvsdpBPo0i09nlqeKPNnLXbCN8JGTP182TMaWYsTeT1Xl2Q41oPMkvT
Ix23dOtvJujYHED+OgnxLEpoo0nyE42HFLeHQ63gerTR1M4TSCzALApi4hxom3biEofEGYsnEylg
CtiwEpmu2RutTfVuoz9vEY09Pjzx4eWhebmYvP7w29RBdkoFDeKLLK+dCD7/9vXnz79++Vu7YwtF
c6ORzZ5HbT3hxWdK/jA6tiqbfNZgm44O2fy5UCvB8XNabukYnXbwZsE3x+6s6XkOpGP2HhXNKlZP
SGXsx5OBAu6F478ksiXe4jr5lmvb3V2B74Vz2rcMhY1xyYIeEybJ7wU9A7QzAgLXDOsN5AKB9odN
dHxhACy/Xc8Vu2Yva70muLhLs2/ysv0+xD89Btyxs3k+sUbrOCgIBj00nqbLJXHzbsIon6ZJgqcd
urK3xVwFxeLm8Fza/ZtpXoAuQBegC9AF6AJ0AboAnQZo4xAp84YELt86b2wL5UGC6uz6aPB8vVqR
55MNLvnFwUWjeK/rQy6vemDSXSZ9dUO3Ptf3gm3+OPDRMpjj6/x2/j//89unf3z5n/8RkDKSJILV
Ko6mQRGlyXWeBis5RZCIZRUUzdL0ehJkNaKxxyHEQOb12ze/n54QIpE/iESIVP5VQ4w/GjHaORGz
IeKcaLpyP5wVOcg4L3KssyLHPq/Bct+eFznvz4ucd+elyvZ5keM2kgNyWRWR4+jnJR3zvMhxzmmw
vjsb2TDnXHi5O6Z3vkrmp8JPboM4Ciu9DkbUzPOat/Z5rYj2ea2IyFNDjqWIHP+syDHfqTGyqsj5
cE7k/O/z0px356U5b8+LnDdnRY59XoOF0DnNq+vz0pyP50XO+1HIuZ1r0wwHlKDJg3a/yHhxH/Ij
DbsK8sUkDbJQHERoeb3x96I4buesDAT5Xont6q+S6xVt9KbxLnPyBnM+JB3OtlTEe1pqeTruSCy/
sQCFoj8KHuWNnk3ribDY3FgaVD3gFLw2AHWuqNVGnA39JH1I+sfZ6clhQKQ4bv0RTgBApK1hus4j
4iuLWIvGeE2vDbV0hbNAY+1Hdd0S59KoXFBr4WsKCDuOq5AK1pbykBRR3tegwrbFVWjNkYRt1wjb
Rc6grDviER6LdadOz0Dabndm3RWCQprK2rYC1t26UYcko/Rg3RPXLdRHYt2rYd120aCs+0JQSFqK
Etb9ulEHGdbOrBu6uMLhSApv6LWs+72poHvTNFknMq/fUTDIdE9el81vGB5SKM4DuOr+HrRCqa31
4PkqZLj3o2bry1wL0zu+8w6jfCWrKYscSJIcWLhbTFYyM8Rx8MACByOyr2KBXDfoBXv3xta7XGGp
o8Mu6aj0Crb1k8jDO7E8nJIOsyIPf1Q6jJIOo9qMB1ITxXbazJNPX34rN0Af2P7/8Kd8ka7jsKYe
MwKtq60oYkdIGisz+oXlP3Ei3pdT+INs90nmsT0SLb+mRSM5BqjWS0tywpDhfYryAieYLkyb8RIv
G6ZyEqYLPP3G+gXsCsFqszTTLLK7oyqdrgttkobCIsG+4fWmZ+/olodKV4AP0/5o7QNtGCnQ1HOB
GMT10vVWNPz04c37ChFJWny4j6qp3sOwyO8I6MWAhperQlb12VI4ogznsORVNYcTdP3QjtUsnlGV
fhPHv5fptz/xdgLi4gz9WabHE78F1eLJrFCHepNKFHMShSHxl5eYTJQw1/D9FK/YqYjQbljKLSkL
29GIBrPjcxxq+e1ccOlieI6tUKHYQhsRhRJAWZ43NJPi4vYKjLKIw3tRjQBXucOwjIgOUaOwjO7J
ME6DXFzpzFfJJYCGqqEYhPk8p40EZlGMG+YQsnSFAghTnBO9wtT8H9sL0PalHZvruIhoTQq6xxZ3
xVBvpGjFrNLyxziZE+e4wbsxFXjD/5e9a2tyG9fRf2VfOk+rtEjdU9WVymSSPVM7czI1ydSet5Qs
07YSWdKR5L6cX78kJbtlC7QpkVLbiR/GY7sdfQAIEiAAgq3jXtn7Gv13Dv46LONywOmuoSyLropw
3VGY/MLgpmDxeQzrgE2zo/gPKbJmmOGxtZFGtmfxctdYA1go/MC2fH86PGS7yHNs7aJm8q1dqNrM
gzFJV/uimN2ToojnRNIyBLZ2u1tfulKEJahMnpQuSfeIQdhBgr1wLxgJvrY69IU8VifMjS0l1UHo
//rj95Pgrm7wklTN2+YmMrpWpqKUDp4E/j5MNoIws7rse7Q166nOMtyycg/KoUQuHDuupz6bIPz7
sr5wj76WpOCB/kUYJ5sCHnMdk/pMyJC59g5q3eeMDs0XVsY+1Y7UqBuVqVPSQyMralPgZoK+TPcz
6UknHy13BkXL+zOvWw8d8415/EzDA5kZYZ6Xt6YJGzjzZDqtH0h9AVf/GpheKHirtpAOnUyrDYIy
QqhV9ihIs9GRBNcw+lpBIDYsrQgRgODoRLAEEXitGmaJpgyyLxDGFsRXta4ytpAXdxoYGZHZsjAO
3GvZ14ohZMXTCeMN2xz2w6hZAQIdWkfFF5hLrbz4k/ACl/Mg00RaQYQqZumEAd0Y1/O0YnBW6INH
HxnQFHvI0YoxGTewvbQCnekfpV6w/biBFNqWlJkniwKXb3uuVgzOCUtjH2gAyzVo5cYRXN3laQVR
Mv/SMLAFQFKrpiTIs1pTuJor6GweVkfMiu90031bF7/sIn/NRlSQ7HL6w25xnhmrvzE2VZy8/na4
+tD/LG28ddaIetP9uCq6wMiSUXtfTqZQlIVV0xwGWaDQ28lKank6OjKvT2N2mXeCETBlpVBreYcm
X8oRHYsoQEHMwBtvZOgvupC2hnEZwPqA0N8+Hae7/w+kxWGW0Nc3UaMkg9NX2MQjjDWHE6g7sl1n
LMipJldTdzTgUh2GFkyJhkwptG0lVSi8lcS2tIF1WGtiw7DCeDJhTTVkCNTzx0MddSgvHQ3M7Fzh
BsL9fUVTQUM7tF8//P7hy4croEZAsCz8CjcM7v/+9+OnT7+8++sKqRny84d3f73/xxVQI6CEJwo3
SzK1wXQ9Qdj7dKX83oGYQIAC4WBEvDEH7tLRJvHMfhq4v69oVzfw6nde/c4r5NUNvAS/syALUggO
yQZj+IANoCgr5NnjYXbhAoSV4Q6L/rdg3VGTyQAgfD5gW0EeHkRm5ybZ+dhFtknh9q5SUWTccxQP
cLt7FtcdAfU48x0iLHsMItpHVjsnR4NBgPcxeSDFLXmsSFrGWVoaYR4LGkL6KgitXg8hz/kBzYpU
nj/frPN3JTtddRuxEoDqKSHlihCossJCriaoVgpuH5R+PJwNutjjLbLgcxTaMFrTjaMZK5LkdIHp
yjLQJcp1WK3WCTRarq0JgvUpAJ7v62KBH9s3qhBCcS1HF0oSp98hPrA2PrZfGtEqLEpSGVHOj0o+
Qu3MRgPdVAsfhNTOJzRevq9L7R7L5Ph6hF3985aCjqvrG+j52Mcj1nUdOYct4Qrjg1JTak2j9gK+
KrJ1vFkbJUlIxKrk3pV/hMX3TS6obQz6Q9IllNvwLI2SmKTVnnM6j+traTdFcsfk8eb2dgfwxqdP
OfbPZ1lZZenrZbzYuzgXDxFMX5i6tszynP5QJYk2RVw93fJz5k1Dg0PrUx/ki1P+Y3KkRyQeMian
SJhlhaCVo0wN3wUyDJKwBjoc1U1+PAUKWrMvW+dhWb7+li+7S5bMgn/GXPagoIyKOIdb4qERtK2B
A7YvEljeC7Pr0NejhqTVmOTZdECdlVysDvbMaLsfStdCHl+PvTfYeoMOauTCPI/CaEWaKm7+3sjS
7TlntiNch2m8YBtTQc86ZJ04Yn0cuFXSKUfC9sPhmYMTo3qC/bqc9D4ODW4tqZU+8ATYTfGGHj4B
LPBYwIlG6Cp4gBDrhk1TIlonGxIeB+StXIyHFUmNNLyPl2HFlCV8CJ+Min05C6PvcK9xWwubQ/Ht
KfEFI+14L0qC6tC/PAUR1WxqheIwMahXDfd7wVo4rNtqjjtjhRjKYnoq4iSJI3bLBlx6YmmaDG0g
gbAs29OOxbpmruHOI6YWsJh6OwU7XHXL/zI3bn41b4KPN7+iG99k73/5wF8xf3Va37/jr4eNSHxn
RBm8je9UyRtJbFhZbq5muhZhkrDVSZkwb5IJpG/JfhZBSioWkuktAePPd58/dzJtPz5xrL8nzw3x
Dp8qisMTO4F9YZojXnQ+UkbxzXsqDO/mvcPf/3LzHg1ZXLA5Fcc9kaQ4NvCF8jxniWbqVDVd5Vh3
LVLRXf2K5UOLMObpSd7oC2xYGWAtXMpTYYBtI2xsa6Hjyz9++/z142+/f/j666cPn7/+89OXrx/+
9dvnL6LtrxW44+J+KzuI5tQSx0PCOVeJy88vOB2hNLV6i9V3x0DrCtM3r1wdVxH4crirMnTFVlZF
9kTlJsymIAcHSghVvfcT52tsrDIw83jByrzSysiKeBmnu5Ar3MjX04NV0o+CK9mQHjPawVIIo2iC
U/aT4jKcJYJbI5Crwsg8izZrRv1DEVPTwEtOqJXgX4G291R/CWm5iYHHHrF+yMqDdwQOatoks7cX
gjVN3o/MZNvX48Oohg+FELybR5Yam3zOrk4StBmVSZRIcNEB69aCePY4SKDf5V00V7zgJMrWVCvm
d7Wz2T9fqc6frVUD4bZWvjWS/DTyITVM9Eek0jhKx4VnjcjSYXgAXzjO9DNJ+zyqo92gGUK+rhWo
ARE5DZqiM01vKaCptjU6HwNnTet2nyauTZnYJGGVFXv6FWVpSiINi8ApwDysVncQ8yy+TXcg/GtA
xJqM/X4ovXO5nqd1HBWLSq7sjMrOC8wyuok764nGRtKyrrRcabnScqXlSsuVlistV1qutFxpudIC
hzeygsRLdvmaOMyBbFdTmOMQTBDuCJxR4I4yaQWTsSi7R0O90Q72n4d88vMmpn+Z0OyEVFHtJ/f4
0andKRv4BhmpVN9gULjnAFaATLIoTLYXZwtuBne0DOE+kij0aHnTgOmbFaNDrUO6HG/xjJXgYmZk
Sa3MaOp4J9JklrpSENeR+K4elRViqmTbfxaBDFT7SWKDF8WpfjZ3NoytWpRRVjsaVyVJFmDRsONq
EqkQVXT8Dr0AsPpy3aDlYSGsFnUcUy9rWzDRyoSwFry6hKWbbjIm40bb8GyzM4K6EoQsvTy18Ibl
g6Q5EvCDxuFnLG6441sXZ7F2a+DKZAZ6eTrEFMwm7EwOq6r2h6d+64L2uo1AWFUMnO368yJbUgLB
omY70GMH+pIiOqYqMz+xgJpssUjilOLxM/hwvZKU2cNT23RLk/u4L4EjrqMXvBhVwqHH7svR1O13
ibwJqVErqvl5xuk8NVqVKvusdNo+Q22yX2A7OZ0cpCPw9tR26QJ04dn6pxxiF6lPwici6jFnYRMp
QLUYE4EKQ6GOFtwtYMrayOZh1CJh+yPImpj25FzL+rhDeE6zlGcKmNe5/V0nYYDGAq+nwPMXHVLg
RBieih4Z6SD/h6GmUUq68ahIEguO7/meo3MGPIMJ9zOeFrwo27DmHPWyzs9DHu6aJ2NL34RuM7VJ
R2TrRYEeHx8vFGu7WTe2UOCMQnpsSgdMNKPcyeDUNZ11cQT3BVKR4tNc1AhHjkY7Hh4BSDA0tjsN
lr4VaAKodXbfxMFAR9Q3LU0WWMMBJvslDtANEZ01IkNDjrWdD05bauK4BEYYX7j41E8FnvGkuvy5
K9ZHUWrOCa4TuoNzKqFpatrPQHgiBywYDXFY0lFahgIJWuPwI5SfNxKeXuk1KQlIZK6tx+VvIET5
WHdkEFUnosryZkVDgt4IekJP5WbWXBeFlGrUlJH0eV1bIIHkPJWhb5phCF1ujFw9M/CeFOw2FzJ/
ruTtWgFk6omwNTt81v7oOb4IwNm6YwujxC4mFR0MtvN9yopMi/xyGjJK6O7cFcR5MQVxzotNjQri
jKwgZyG5+3hOMjBoY1uo/3PX1E8LjfYFxOwzLw3rZOqR5yM9YuI8CL0GDWxwBMGFw16ATXWE5hTG
LcdY53bnJmXsSzmkfWCy5X1HWJ4vtfVRGBTV6bfL2xgPcTKPwmIOd9ZztbABoKm48roAlYVYZOnS
KONlGlbsNi1BuMI29fDUQRNNVl8fTzBHlj8GR0J+PAW0x1VhbE8PHsu2Y8uztTAFAooOOPijQR7p
smuiaTnV5yqAjGKlra5O0JEZfR7Rt1MOqVZem/uOwjQiiTHfFPw29TBO2ILGL6mCrwLDepAKch8m
Md30U3/QKDdRRMgc7hHse95QyFbsYnfnMJVW7ztzNXOlNGByPClB5Fn7kMySQF6657gXIzLODz/Z
0dxIVW5mOzFCvLmDeSurLM8pQpsrUKmH2O3xS0dPaFxzM62RZk2kbsgVtZK63ZUjWwY3CZgQGOQx
9OROSQVbGmeQxzwuao7gSKqLLQ0SbCHCGz3LtgN1HPZssYdjy2xW3RPjwtOQz6oeLeO3mzT+94b8
Nr8L/AAHyMavDp3I4IcFRo5NgV59YGpEyrsvq81/39AvAvpCcegrQ6L/q7Esl779nz++TE2mZyET
O54rSye60nmUTmQFvm9it++4v3rPn8oCJUWW3K033LY3qyqZmgvX9XzsBIpMbFfoK/V9qLcQcpEX
OOrkU+tcXMnvRz5G2DJN3F95/izC5Tp8Ma25VLoD6t2YgR0crn/hoxEuyR0ypybINl2HLuBYQNAg
erwfiB7X9lwv8F3RgA2hx/+B6EEOtgJqgYQKzWalymy7POIEuyr42kXTltlyBwpC8C0T0TmFTwkB
tD9nTVwwMnG25XhUgSwp9bm7wfgzqYz3WfY9JvTD1NQGroksSu9RajU42io0Is+zHWx6r95xikyt
ZvCHJMyhzoIfeE5N2NmQxeas49iOkCAdjtYPTaAdBI7tOiIC+WzNi/iezlJg4vKvmp+65o9E++gW
xwk80/NEFsftQfz0i4FlY+r++dJRoQCOtrzYshFQf8fGSJoB6zgDQ+i3zJ+Yfuxi33OQ/er3kGr1
OpvHi5jMj3Dh1pCDg4sWUvNofOrBSxPbNBgbHgk93ZusTLKHY0XTEqkYy7ogkSgR6yFEt6qW3Y9a
2/qpqW3vHlnhQ3ZPCqPKtl0w4Horz+wF9+enzydycxAyldZhrs50NOCSaJUZ2z0egGKfHYZouJhH
yXqyx3P6ytSngPf82OwPJ5tmL6uwqIzWkS6q3VSfk2ypvlTJ0kDBOhS84h2dZsuvOevhWKRAln5E
ipZESibIGY+EKCFhMdLAdHWRUlDFeUKMOKUakbKSErDlhjVAFb+VPHffKnjefsNqWropfSzTerAH
SAGVubsIWyNbCKTTjZuEEG8oIazOb5bNn+Dm1J4GBvnTVR0oeLEXPNrCKtK4D4snY0XCuaB5jTdk
JkHllS0gY3u4EawukqkH6wtI/5JnaQm5thhNC2deCHf/IUVmJCRdViuDAsJ3b/i2OjcKvdW7j07v
w/I2X8VJnPNiKer+kWhTxBRhXoQPv63pevK6/hms7oGtBfZ1VHaXcgvpeXb3FJEbBKqPjplo6CIT
Rt+XRbZJ56/zdNm5W1cXzBNJ6JbzAEL2VqqBw86hYXdBJlvVC3XrDTaqtoiT5DOrIIYd58AaF76k
5vQ7OUKAPTIBVbwWXQkRuHgs7IKwviNgi0mZDvqWPQg0EzRWD0w8Emat2Ed1jKq4Nyr6CRVDvsxx
zV74vCMP7MjJXFQgwHogs2VymxXxkl0GSPc2KXNHF1mxZrsN8O4zHAyA49dntaxgOCPAaogwtgdo
zX7BcOeopvtfyLQ8mV50HSHxLDC7gX3Dzkj/e5NVZE59kWRD6pr/kqxjKrBEUIiP0HDMdu04/6be
NvGDGaC59bVjgVs0N8C2fiRwx4kcRwcSnTd1Or8EQkaGDoTl6Ag87DAKBt2Ps7BKmM6pNrNbCavc
yNLkyah/MPys6zkMzHhi20Vmmi/gpRJd9ffKw8+xjvwoGHV7sO20rkv/BIdHr+ZpyiG/yqmH2jax
ZNAqoatVuqrt2ahtujzYWcE7qetSO95YlCzZUrDQOg9uGKwFuiB+5WF/GEC7T+kuZbpkKJ1tnz9k
K/siiXVbe2KdDwMemFW3x82q4/FI0JpVB7SPhymNRThnzxbdweBgT1W3tYa1pAiX7BzQl2yFx547
yc6IJDtXko+QTAk+aWDYUfT+j3+R1d/RvvrvkpFDLYB2knhzPT5oZ0NS05axpso6S6omlpWkAZcq
L3XOwIAL1448K6ryuXtU9BQJ0m8B0g7TTblIVYMI5dnu0v92UyR3r1/3I8Ey8VBpLqiyUttBB6os
omOrMTYxUrUhD2TG8Rqd4PyuszlhavuR/uEV63jLrgW8a375V/3D96xh8MBCmSNSZ0kOdvt43WiX
ETM+vrxA2th9BTNwpJI4/W4wrZvHJWsFvZ/gZCclGgUxeD84dmk7KYoMLJFyka0qncHkAOlDX5ma
LmCz7CVZcbcsCEkP6/nQOJA7Pg9rlPxgkmEHR9t0Jx7tFxjkonMzJA4uRqvWYfn9tM/tqlmyS3a5
mYDO01tDF+ytFWSRULeF9cuQ00BP6gjSVQOvGiipgeUqLFgz1l0bW2O9qeoOLjn1qLO0rIoNfAGY
7SpbNTF614DZTqAJD9iiYBfplh8sMpnI6UGDK3JP98s1B+33xiycG+t4TYzqKYeTQVKVpUfQWmdM
9rDCMu72MdXH2DZEwLCMiApYUNCJLaniUSkGt2clYPB6RvI/fKHf31XksaofREe+IOH6xvrlBpvN
z2+sX//+8tHwhxzIeQliH+J0nj2UBsIOuhSaN9XicgR8gzFXiG6bpLMh2Vhk2SwsKOWaKWxPbJIt
4FC21PkRKTGwSiSKAlye5I0P4Y8PEWgcDf7eCBcVKYwoyUpBDavMjeuSbLUUDmxnb+njLmeKb+wh
giZEqmDi7LjjrhnrL7/t4J+G9/GS394ovDVC5vIi2bWmQQfYtCdBQdp08iGM6Vq5IqmRZlW8eDLm
WQqdmHRl9MTrOXqCULKlBqVxoLxJBkpSbHR/Wm1KauDm9Xu4mBzbMvdHy3HWQuR3VLxtfXHHwA4N
2UTA+ze5ySWadeA6e7jOZLj7bhOeCNcy0V4aCWnEratQ90wGsKuaSKGsPQFbWgV8Zoxae4xaPy6j
Xv8bzS+RUXtvLbTV18K2wdkUiRFWVRHPNvCBYUefEdXiPR7j6zEu+b4QsKg8X2bE9cXiQgfS8bA+
j6EOY4JECZOmllRNrYpOHaiTMbqhubP3ulJOAOjsLYHKgGmWGjpUy9WtWkLChOqFbW3qNc9I+ZXu
J75yCjqZaEWfmKULSFHu+8Z8VYZLDRw9cB0TUP8BaIAlVQvz0saGFY2EeXxbt4MwZkk24wv+osjW
xjysQvYJvjDUkokl+V248omq4/p224PZeP5OiOXKXKo2EOttXRDbuUVBGZSNX3LP7GcMruNI/fG1
eiyaY/GbKk6AkodAatMuBiqjIs4ro24w0Waqe9jfkTqLcQi1SRKKQUjaeksSwrsqzuPFghTsXd11
AlyykFSHFl+UezzeY872AlPl6XkWs5vsjSSLvu99qEFXYZGSEmhbRDcggRauFNrzyTEVpynZWjdw
+mJbH1ZjQ7P1GkqP6lfAksEd0z0UXAXZQK1i1mr1ibfJ2oZks5StrgbdPiyXhCWJZ08G+ztsU1xr
OGo7T9vBZ2mfME4FffycQJFZXoC2awUbrcJ0CYVPA5nyO9uU4g+CNKqwWAqq72SKnEXQ9fGRpu9P
QfKEFQM3fzSy2TdBENfzkQ52IfTyAP7IrLEdBaFvUZrMQpylJW98UhBqlgpYnVwZF1qC7RWhw3wU
yFQAyrOch4+pT0Qxa3XKSTqvb0Lm2we4VZdlKY1qU6NOH8V4o9Arw6QipRN0Trdo3e2Iq0OWO1jx
BJFyk3qxhUdiS/+Kg09wZZlocDdS25IenBVJcqrpefK2G3SW6QIohtrxgafm4zCmrIkPa2o+DkPG
mvjwpubjMCKshQ/qa8+zaMOnIutdxysHn1c1iEWZ66iH4eLjuBIupO0MwZ2RRVbUdbugpyy1Ekkg
s3aDrEnyOq6Oy9iWicCIEY/ZjreDjEdP5vBx5mQG0uuHeGIILTfQgyk5R2SqrnrBHZ8alswYBj3g
wrKMlyeZ9MdBxcrLj4P6o55cBFzNuCcBTc2AK+renRpSbwzMEwMqw6fVF/OkdB3NqNvN5QkBByPB
npCxxHrkOANgT4pZRqHcE8BrUoXAlgtMMbq68bA6njDsUwcE+F6WBTvZ9UXszAro6jsO6gVVXzYB
OQUtVDp4D2Exr+NaQNba91XYGwbp6ZcoPCc8/fKMNgUL+UN8BVi7KI+hof5oTQ//b/nSiNdLVoFb
xWEinNuejEPewUijgoenw+S2juMuqDtenlpHbOSqYfGTqJtq4RusdL4b1kC+KXOEyAlkICK4Vbwj
pXFHEA4O1u6wutxg8/T9LvYb05ThhnECxYEohi4IhTGhEPgIRJ7EbBf9aLArzirWSi4HtnfIOl37
DwGVOTUXWXHbxLCbzERZRHCOACMVkN07nh2DTohjXwmgSRyVoue7+PQ5j2PPf1bfRlB1qn6XJ51n
6zBOee4eTli5Eui+cIyydR4n7JaiOiu8DvNccEo3CMxABUrXSAkB5mS2YUkp0fNNqd71p4PPfIbW
F0Hs2xipGlP7/3u7ot62QSD8a9Y3dwYMiSv1YS+V9jZp+wNu6nZpGzuynXb99wNsp1HCwSUclTqp
lSY+7j4MHNx93DAZZmN6AG5kI7OWATeIIgaQiBMYgIITX/uHLwpY3z04FCUxH+jxu7GHpDR9a8R1
za2jSdyxt0ZAXouiQHL7iksmYlon4hoGOOTC5TLPnd5CIoAXYYbcK8wyp2g9ipVFalYWZ7ECMyEQ
TBw/UORg4vCKd1rXZsVXZzkeX8bAEjkxbFfMGIBbB67GPZ8LBq4MGbPXX7DJo+4ZLQ+nR2OgovxW
Jqa9kKHumzcIp+GbVf1H497JIjIAfWBfZk0MGXDrs+IH0HmBWeclO4MJd+bPksfAEHEgky7xcOsk
HIAriQ5H66a3K/n4FmcPbElZDAoVBRgzABZydcG5yoGqmUlQsy8q6WD71ZYpWB2/6+vv489j1Q/z
udKBeLxJU8y4VP/0PyMJdGW0Saywgf2/3/jd87Z+urKt/hhudeQsxz/u2u5WnZRtqvADJfImFwg3
zcNqL1rp2jfk4V22D46E9jPtcSMh8suQOJcPLw1QIgB2fd3pkdEAJdc5I8JJYwgV5WV4X2WWDVu1
4i6uRqD4YmiTsGjkksYjlEdtEJxgrIFUHBqJ04JhYuY7jXJvFcNXljJ1eOoDoDjIk6jwN9VBnvSE
eZv2weg8jAHEBNXt3MVTogiHWzJ1zOoDIKIKbH8UNoN9diqlJhD2wAHevOBsjTTi+unvkLVb8BRJ
5JzHgBGxI4LTqql1MYn4b3onCEjDsTJcASBTR3gYW6ChJliJ+CwLifKVZ9fMBWMxOESOChsS5ygZ
nD3NBauePAcwulBlDAyRn8J2RPoJnLre6/usb1cv9ZCNqwxY+csQ5UUydSB2CjDXsWHr9RQLKwcp
eD+e1Y1Vlv48mrTao1X3tBuXmLaZHPlZEuI8cgtXDWJ64TiNPeqP29lLKb4GHj501FHpl/DQ1Zv2
rXbfQErKHhhV3inDAjMCMNfhKnWEexnJxtLRxMlev6VFKVL3Y9TnCzg8LEyubliOoNvIJfyuV7tu
PXz8al/Xqw9TGb96sbVfP00R5VvlrlRneR7RB4LjPl/rRCOKqVgX/llv6nY3uMPCchHRBRoPqsQe
5DzkQRP13Vd9rTf+NRQ+8wggMkuWQUvmQpF3PRTcCs2K0wBtMpN6YcTjIa+VMo+AonLa8Vt1p7Yc
nxE9rPtV1bmTgxFCHB7I5DaRfJEFOKdV262V9tj/Mh9Ebapm/QgVsfISs1YUqWfSc8xyAy2kQOyy
CoXHmf02VpjuBYTMVaZ9A8kZZC2jOkHlTUXizf9QSwMEFAACAAgAWIsJQSt6U/D0PgAArOQBACYA
HAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy90ZXN0c19ydW4zLnR4dFVUCQAD1/IjUBjpI1B1eAsA
AQToAwAABOgDAAC1nVu3oziyoN/nv9C5EWDsx+6srnNqrerpns46c9Y6L3thI9t0YnAD3pf69aMI
CcxFEhFkzUN37bS+EEIRkkKhC1lV3LKuqKv2S5R/OV2z6iKDrsmq9lw3t6CoAlnlgXyTVfena3cr
/1c2EVB/NsXHSKD7vMtgYGwijbyX2UkG56Isi+rylLXBbZd1Kr/uWQo//yxI3RQXVfq3Njg/qhMC
foG7bNq7VOSb1OCpvt3rtuhUIb9kx7YuH6oo+pe6CnRV5VBDPaj+VWafsuGIvxfddZzBPWvgJR35
HOtHlbfwzHNZ3O8g32BKcKtzS7FPV3n6LptjnTW5JVXlYQriTCzKPDh+BpUqstLF6Ts8K6tOsu1q
S/lGL1LJSwZ1GfxeVLn80Fm5JSDft6ItjqUMctmelL6z3uTGfF40SkeBUqGy01GChaxPjxvU5VEV
+9JAzSmB0lbsc/EBVb9JtQ5Z0OtU3q/ZWTbtqanLMqjP51Z2wbWA6v4MGqx2i7LOpWoiaEqDPavc
HFV+kZVsMijSqa46aatlLCTYWVvkMqjfZHMu63dTqiU+AF3zuN3bUXfQdp+lpbzm9e5ZUelyDLXk
LJIWOWaNlrKqvJXleUjWNd0KGmahlC1Ceq8T6xM7+dEFSl9l1ih7dOi2K5RRnzLVGIPbo+0C0JZ6
SQtYXy7lilkP3Zf5a1p9RmPXIs9tD5gLo8XSnnZ8tJ8q+7w4Zdam/yTh1wcUBpUf5I8GqjGXqnZ8
Yr6u3tkfqqZ9hsEEu46iLLpP229BlG+XvRaqtTSqLZ2ycj74bMkPu67t4qon/pG3aYvbvfyBx7/L
46W0i8N/qzowfwaqlgIcRKB3KLM7S4gMe0dtu4w0g4HDpnCMCJRRKpWrf/YjzfjHVaF7fjZDFP5k
5R835YFMmq7qk5TLAk3aLXCR9U12aiy4ZfcnH2RtKxtLr3l6oJOlRnOpek49yBTnJrtJN6scs042
QX06lY8WeoisvF8z3cVxpRj8sXw07IeAkBvXY8ZzND7WH+01y+t3twj21aP8wVKyppCtRwT6hBLV
QHjAo2KUCjWlPICJoeCPqnqLS3WzDpW9jYDb+XQp+sH8np1UQ/ZJGffuOe67fMRBxPilJ+OUjsdz
lw8ylVTvohpmawaucQY+Z3All/yzym7FCVxR7YRuzYEr5+HtndskGWrwTamqRmcIbaVZE5l2bT76
WbMAqfHgd59i5e2uOn15OyoeHO/Ww5reZay9VfrpN48dZdVvtmq0Vb5D/V79YB6bxFvVNG3dtktU
d6l/yEv4sqLn8vScfiwjH2hM9VjWp+8wV1DdG4x3aIwEOf/M9YmvDtg21EycVjuua90Uv6tWplw7
MychGe/14fb2BwjTlfsrg67WsO4NG+hYpLyvW9laDhtFf+S5PqniVpj5bTAeEPwhA5/41Ba9GrFI
D8NXI3Gyt1W6rpmizwLrdrjWkrxZ8OTG0//+DTbn4BGsj/+CMAz69zguGA/U/6L1o8NOYrVZ3jOV
lWqTqmRKJnjcc+Ve+Xg19srmTaqJnrFufx9kLCJgdC5gBqamVovTdMR+RPU7pe6WaTjqpqmH6Kbq
6X+XTY2j+OobvIF+TsyeTjsiuiFqOX/Nat44mWbqZ3E2cXLU6iCjegkd1Ss/J6EM+zy5l9Rxoj4Q
6DAoG+ykJqHF9aDhVKp9u7iyNx1oI3WcYzZSZ1Xuiyr4haFx1GflLcp3rqgrlueXUvWhUunlrepx
fEnP2J9tdVV8Fnl0hxIscoqbL0QQJHTE29GUXDJmlCMLjHtp0L/x+jfJ84o6SLarIk0NAbkoJ1f6
ENTVfberl5xL3bPq7/oJ7desesvWSzYsRGC7hgCsebtK+RiEanTJrwoOM/3f3SK9yS6n0R5WL7aY
Xkq3sefkW08C2zVxM1FWOXhR85CLGv/aYAiqU0TKupVEkUUfZ6rCPvsdxC5yHPPFga7CIMwH1oIq
ss3UB3Hdc5d1ls+XLFaKO6rrZ1/lCzwsJb2rBEscZ2Hj4EZvUHdyBv6lmC/LGnCudAwyZomKYLC9
A5WdIR6nLANqjFTXqvcHZ8W9iDOQpj8ZjMfVocwE/EtES7g1a7BmWqom614j664Som/nM3q9b0X7
yEpKjU3X1DGsQrHpp3vnfoaOHrbmv0HeZO/2xapCx4LrqlWlKap+9HAEgXq8ydpr4JvxTkCwDLQi
iKQ6h6fnvKj9MjiLlQki+HEdVHn+oroIWJq2Rb8nYuqHR6lsYy6/FEMf1niy6sfO9gJjBu2nUENX
WSgnuX40J8sr4MKJ/n+Cczmm1fs5YulTqlKe1e1RdsW9LDAuI22RwLFMI8+lPNkrQQ1xjRqHvjzX
8YNxDLVtwy/HrC1OavBRU7/XrH1tJWQ2vM2IqG+30bA0TsAGMIpiT9PU2Kxa15DxMgOoxFGP+Uwo
cm+Jiuoqm6KDrmWUdsqUbeSy/+8rVoAlvVC11HTZpNBYC8UZVkfBU8iL9v6c+FiAsmi71/HquJd5
HU8t/OQscueHYbeOG3y/qonYq3LQprVUV9CNQd1BxO09a/JXMBwlc4Tnqx51qpGz0uTrvanvMP9U
Myb490ry6zm7FeXnGjXqt9zMrI6t0FvWFNl6qd5lcbmOqXsrH3kNrt51YmXm93PRtF0pu046E5/d
3SjJtGJVmfjvV2XG8wZkyBnwWlTW1gItafw2ukyo2qmuFqAq3+t1/tpzCv+NC1JrUC5PdZPN7NNK
FujKrlHzmagN7OMeqyV8Vw1+USfiT+EX8RKGL5GInvu4wC01G9nyQNdP8PISghRXSGwRirYIxVuE
ki1Cuy1C6Rah/Rahwwah8GWL0BaLCDkWccs+ttnfRHDzE6OtgvFWwWSr4G6rYLpVcL9V8LBRkGWj
E8GtlsOy1fciV44yz0x7mS3PiTbIxBtkkg0yuw0y6QaZ/QaZA1+GZXm9zAY72GJv4QY7CDfYQbjB
DsINdhBusINwgx2EG+xAbLADscEOxAY7EBvsQKzYAdsHZPt/bN+P7fexfT6268Z229guG9tdY7tq
bDdtKcDVw1rnsBTg6iHk6iHk6kFwq1Vwq1Vw2wO7TQtuexBcxQmuHgRXDxG3PURcxUVcxUVcxUVc
PURUPRA9U64Xx/XGuJ4L1wPhjtbcUXfBp0z+wOOjmMkz9RUz7SFm6itm2kPC1FfCtIeEqa8d0x52
TH3tmPaQMvWVOu3hXrf98hysbOIe10D9jTsbPP3EilycbRU8bRWUWwXPGwWTre+YHLcKbq2cJN8o
mG6UO2ytm8PWujls1f/Bq3/LXOmWNbAl8eXlxSfIFILteLDY5m5zI0KsEtEqEa8SySqxWyXSVeKw
RoSrNeaY0YwWn4uqa+BY0MlZvQ5YcOCIA8ccOOHAOw6ccuA9B7YrVrc+zqqST0KwJSK2RMyWSNgS
O7ZEypbYsyXYGnQ0VZ8EW+chW+chW+chW+chW+chWef+OZtHQHAFIq5AzBVIuALsWkq5Ar52weuj
eP0Tr2/i9Uu8PonXu7DskqpP3IEEe8Rgd7TsT7U5K7DHq3NZnLrA7Apxl8XN50yBiMnHTD5h8jsm
nzL5PZM/8HjXiOHkmQoOmQYUMvUbMvUbMvUbMvUbMvUbMvUbMvUrmPoVIZfPmAJMgxBMgxBMgxBM
gxBMgxBMgxBMgxBMg4iYBhExDSJi6jdi6jdi6jdi6jdi6jdi6jdi6jei6VffgPSSsui9tyxmf2KQ
3WGbdwsntF3d5ymJo6D76ALcddkHWZa7GvH4kHESlqn9LRpd3V8W53QorKigoxEdjelowkAzBmsP
yemjHeY2BFdFzSBBgeyVI+uz+ymYJjxpvjxjT1riSdt50uytUp8W6zK4+8+c+HZlY0MdzokVtRf8
XNZZx4q+WCT8fr9HQHAFIq5AzBVIuAI7rkDKFdhzBQ5MAYfP7RHgajr0aZpnedQ5tYuOWHTMohMW
nVJoSttitStWm2K1J1ZbYrUjjv2Bh0CNdaJAG7w3cD5cjXBHCcdGj2dcFSj5Ig1bRPCfIvhPifhP
iThPeY755SapTc8Sm54lNj0r2vQsfx3i+VZjoJiDt5FbeXs7N8zETX7JfKhuVqbc2m9wFWYi4UdN
fvwFHoKgYAr6u9F1ua3PizbKxetym2pzU01SB9EVoU3vlGwRSrcI7RlCDHMiDnS9TP2xppMNDYKz
8mkTIb0uv90wLZj50swXZtor01KZNsq0Tp6ieBZJ9L1ctGDREYuOWbRXP6SRrIdERqHs72K2/YwH
Z8dDbaQgk/Snx2QyIZM7MpmSyT2ZPFBJx8TXRpJrPiTXfEiu+dBb88MiqauUw+WDeFW3y96mFMFA
PQKCKxBxBWKuQMIV2HEFUq7AnitwYAo47NsjwFVcyFVcyFWcw/aHS54ohmplBYONGGzMYDnvtmOw
KYPdM9gDnXXZnpVl6CJk6CJk6MJhZ4Mb0V804rSygVzfW2pFBR2N6GhMRxMqiteYrL/cTY1NcGLe
BWpH6ZTd8S4rKiUI1Ohu6+FjAcQH6DG1JdI1/sdzMMKJe19Df/EikB8ZfLJkJfM+3FNe1Ft315uz
Oblwx44GJ243KbxOUl9dQ2gBLlqw6IhF28s93A2MlgITcOnWvp5LTGa6K+udWmLei4zx6Mtwb1H0
5eNWfoHf4G549XMQ/ulDL0x7KUGiIhqVkbCYRCUkakeiUhp1JGF7EnUgUWqkI2E0XYY0NYUxETsS
uRORy4mcpHEJESO+Bs2UQpothXsilhE54kvsibogmueB9lhBM2NB7JJC4lND2ssKWh8naK1H0FqP
oFmnSIlYRuSIVbcnYsTsDkSMll1EM6eIZk4RcYgjjnE09Uc09Ue0TieiWUlE02p0IGIZkSNq9UBr
rnFIxIjehiBixOwiIkarlDgmYtTsiHVMHIvjhIgRi5cQi7cjYsTH0ppPTGs+Ma35JLROLKFZe0Kz
4oRmnQnRBadpP6FpK0mJGE2pCU0NO5oadjQ17Ghq2NHUsKOpYUecCu2IGK1+dzR17WiNZkfTVkrT
ViqIGO1V04iIEbOLiRgxu4SIEbMjTpmJZpIS59bEVp3uiRgxO5rZ7Wlmtw+JGDGQIIgYMTuaFe9p
+t+nRIxYuD0RI2ZH0+vhhYjRnnqg6f9A0+uBpq9DTMSI70DrTQ47IkZ8akrEiNkRY3BEazoQrYk4
0QlfXqgcNcOQylEzFFSOmmFE5agZxlSOmmFC5agZ7qgcNcOUylEz3FM5aobUqDa1pZDj39SWQo2U
h9SWEgoqR80wonLUDGMqR80woXLUDHdUjpphSuWoGRJbCjVuTgyIh8SIeEgMYYfEGLbiiBVDjHYr
jpphQuWoGe6oHDXDlMpRM9xTOWqGVCukdsPEgLviqBlSFyyp3TAxiK84aoYRlaNmGFM5aoYJlaNm
uKNy1AxTKkfNcE/lqBkeqBx1rfuFylEzDKkcNUNB5agZUncVUFtKTN1/kGRUkPrkHTVHahOIU2qO
1DZAXIUIicsQiiM+mLhgERJXLELikkVIXLMIiYsWYULdF0I1r4RqXglxeUuBxK0wxKUVxVGLuKMW
kdi3J0RzJS7XhMT1mpC4YBMSV0UUR7QG4rqI4qgZ7qkcNUNqVRMX+EPiqoziyBkeqeCJChJbVEq0
m1RQ34U6jqYRNUfqQJrG1BypPmdK7ROpq00KpGqQuv+O2q6oS04hcc0pJC4mKY66qY/aXogLTyFx
RSkkLhWFe6qB7akGtqduFt1Td4vuqdtF9/EZwby+ffmAS7u+lPJNluLLqW7kl1Mjs07+ueua4vjo
5P/+BuFdvNrLx/9Unx6wKRsirWT4t8+7hPC2R+B6elVgAR9YbeStfpNVdpN50clb1YZUyVZ2HDFk
qzqXt+xuvssNXzpel1MiuXm1c5Nd4L8VfOu4LH7/QWmxLt3hd3E31NIgyqkmxY5MBKLXdlj9f9W1
X3qN/xX++TVru5dwRQLJ37LmImm8tiyUYrGCwUYMNmawyQoLnwPPutOV9nZTWrDoiEXHLJr3ljsW
nbLoPYs+cOjVljClWboMWboM13QJH+ugWdSTFGSS/vSYTCZk0mk9+Pd//va3X/+MH13/qz5K5K4B
By+YfMTkYyafMHlu/aRMfs/kDzze3cocPFO/IVO/IVO/IUG/93spO4Z9TnjB5CMmzy1/wuR3TD5l
8nsmf+DxFPuc8AT9Kn+BYQ0jWrDoiEXHLDph0TsWnbLodf3/5Z/02v5L1spttCDRP9dVx8t/LMF/
xroN/KXOPxklGtGCRfNKErPohEXvWHTKovcs+sChCT3RmGbpkjBK/uXRdXXFsJQJz80/YvIxk0+Y
/I7Jp0x+3W6+1iXEgdTsnlD5I1hw4IgDxxw44cA7DpxyYFY9HxgwoXWOYI4GCW3zp6LBECGjI/+p
eGPAZdEyhq0hgshABR2N6GhMRxM6mtLRPR09kFGCrQ0oXQUhXQUhXQUhXQUhXQXhjowK+msJ+msJ
+msJ+msJxmutGyG9wdJHafr4TB+Z6WMyfTSmj8P0EZjutdE9Nrq3RvfU6JEMegyjJ8k6Csk6Csk6
Csk6Csk6EmQdCbKOBFlHgqwjQdaRIOtIkHVE720EWUeCrKOIrKOIrKOIrKOIrKOIrKOIrKOIrKOI
rKOIrKOIrKOYrKOYrKOYrKOYrKOYrKOYrKOYrKOYrKOYrKOYrKOErKOErKOErKOErKOErKOErKOE
rKOErKOErKOErKMdWUc7so52ZB3tyDrakXW0I+toR9bRjqyjHVlHO7KOUrKOUrKOUrKOUrKOUrKO
UrKOUrKOUrKOUrKOUrKO9mQd7ck62pN1tCfraE/W0Z6soz1ZR3uyjvZkHe3JOjqQdXQg6+hA1tGB
rKMDWUcHso4OZB0dyDo6kHV0YMxh6ZNYeqQhpIcaQnqsIaQHG0J6tCGkhxtCerwhpAccQkbEgRNy
oGuLEXRgRB0YYQdG3IEReGBEHhihB3rsIaQHH0LBiBDRtUWPP4T0AERIj0CE9BBESI9BhPQgREiP
QoT0MERIj0OEESOgR9cWPRQR0mMRIT0YEdKjESE9HBHS4xEhPSAR0iMSIT0kEcaM+CtdW4SoxM+F
LPNvnB1nc4n1l+TtY+HtYeHtX/m5bm6ckjxpwaJ5JYlZdMKidyw6ZdF7Fn3g0ATX5OcmuzG2X01w
wcMjHh7z8ISH73h4ysP3NJzXY8wk1mv/Pxm78J4sJ9+Iwa7r8z9lljNKrOiiumwWEFyBiCsQcwUS
rsC6Ff+n+oNeRb8wu4NfmP3BL8wO4Rdmj/ALs0v4hdkn/MLsFH5h9gpT/sDjCb39lCfo95ZdOOYw
xgUPj3h4zMMTHr7j4SkP3/PwAwunWMEY52mVEJb4pbo/GMPaBGfmHvHwmIcnPHzHw1MevufhBxZO
sZkxztMq02ZCnlZDnlZDnlZDnlZDnlZDnlZDnlYFT6uCp1VCyOuX9pcqlx+MvmAqwH7CuuX8+gu9
NE92vSC/ZkfJ8LMmODP3iIevN49f5UVWDMd7ygsmHzF5QvmL6juj9CNasOiIRfPKnbDoHYtOWfSe
Ra/3SH/L7nTljOB13fxNVg9G1rLLttGCRUcset1K/lYzmuYIFhw44sDrZf77r6zDCxNc8PD1kv/9
+C954pRmwgsmzy1PzOQTJr9j8imT3zP5A48neKZTnqnfkKnfkKnfkKnfkKnfkKnfkKnfkKnfkKlf
go/693v3H039YIwicwlBkSg4Jy2nPDf/iMnHTD5h8jsmnzL5PZM/EPmWdUBzKSM2yEQbZOINMskG
md0GmXVd/iNrskuT3a/05gEit4244OERD19XxT8aRsDz/zzqbiu+/qLfTk1xZ3guU56bf8TkYyaf
MPkdk1+35G94rR+jPie8YPIRk4+ZfMLkd0yeW597Jn/g8QRPcMoz9Rsy9Rsy9Rsy9Rsy9Rsy9Rsy
9Rsy9Rsy9UvwBL91nyWjt53ggoevK/e37FjKrxnTcdRSsix/QETwRSK+SMwXSfgiO75IyhfZ80UO
bBFCB7UQ4Ws/5Gs/5Gs/5Gs/5Gs/5Gs/5Gs/5Gs/5Gtf8LUv+NoXfO0LvvYFX/uCr33B177ga1/w
tS/42o+o2q/ZHX/N7vdrdrdfs3v9mt3p1+w+v2Z3+TW7x6/ZHX7N7u9rdndfc3t7plExLYppTkxb
YhoS04qYJsS0H6bxMC2HaTbbbCbkaTXkaTXkaTXkaTXkaTXkaTXkaVXwtCp4WhU8rQqeVgVPq4Kn
VcHTquBpVfC0KnhajXhajXhajXhajXhajXhajXhajXhajXhajXhajXhajYla/Wf9zhxaRxKCLRGx
JWK2RMKW2LElUrbEni1x4EqEbJ2HbJ2HbJ2HbJ2HbJ2HbJ2HbJ2HbJ2HbJ2HbJ0Lts6pw/I3vX7G
7B1mUmKTVLRJKt4klWyS2m2SSjdJ7TdJHbZIUXuQmdQm2wg32Ua4yTbCTbYRbrKNcJNthJtsI9xk
G+Em2xCbbGNbbyM22YbYZBtik22ITbYhNtmG2GQbYpNtiE22EW2yDcpUQn50vE9bzCUEWyJiS8Rs
iYQtsWNLpGyJPVviwJWgjDAzCbbOQ7bOQ7bOQ7bOKaNJ0XEinf/F24T8X/RNyBl+jWglTwORcooo
UEyBEgrkbyyZUsrauwEi1pFoHfG/1TFr5ble1d+xzj/XEPz2Aw0SFCiiQDEFSijQjgKlFGhPgfw9
Vw4fJ1ipy7w+rRDXrP1ZZt2jkXRQUMGICsZUMKGCflXVuP155Y0NJChQRIFiCpRQoJQC7SnQgQCt
DIgGolRmSKnMkFKZIaUyV8azDvy9FSPQjCAwEYGJCcyOwKQEZk9gDuvMivI1Q6gfii5CwnuFhPcK
Ce8lCO8lCLYhCO8uCLYhCLYhCHUoCPYjCPUsCPUsCPUcEeo5ItRzRKjniFDPEaGeI0I9R4R6jgj1
HBHqOSLUc0yo55hQzzGhnmNCPceEeo4J9RwT6jkm1HNMqOeYUM8JoZ4TQj0nhHoero6HL5oX1eVL
AWf/v5yU094FWRd0VxnI/CKD+hyclIeuZk1AguifqHKYZKPz4i04F03bBadrUeZB8yglk+7U9BIm
GDaBvqBY8KyoZBO8F901eK+bPHhvsnugPx1vky1uIHa7120BsZrgVMqsuTcSKCtftbLpMNe7+jVo
79kJ3sVbwBp3FQf3TNXT4x7k9Xtlw8bpQXtq6rJs7Vzb4rtJNf0L4F9VnUtBRyM6uk7Ci3vITgal
UslRVc13VU9dHcCHqYusLD+Da5Hn0l91OgcgAlnBVVlatSoj2ZyuWaVqrJLv8ASbdKOaQVYG2lqV
hd4eZVcATLFxt7DTdHuRaeaB0j2mB2/KdooTvDtPWtcCSRp+ZD6wF6E8RZtloNSIrb44o3YDrd4M
lQR1lZtvbFHqmZulz1yWed37425BK+Hvrm5+rJxvhXy/16oPWGvOrepJTlfVlUnViZ2arAWzDXLZ
Fpfq5mgwLR6hCFTt657IqPEmu2ud2wWUkrPyMTKyTL1arvLpJEPgXDfvWbNBsPu8exqET8irRzi8
EZgGnj8aaPiWh6DFHmtV8C/pIUmcifswToLQnyz8yZEzOTzs4tiTu053Zx8d0t0+dafHL+lO7NJg
nYjWCHe6iIU4RJ63MIQ7fReFB99b7OLwJfLIp3H8omaazvT9i6ql2JMev+x2nucfhEjVLNWdHr0c
9jtfDRhCrBKetzzEcZq+eJ+iCd9T4hRu0nan7w+pp6aSl5ddmh486WKvyuBJj8TLIfGk75Ldiy89
DV9SX4swhC89UdXkS9+nkecNwyhWOXjSk138Enq0lIg4ScKDLz2NYo98tE+T1G3tSZzuRfLiSd+/
pGre6ExPRCgijw53L2Gy97X3ZLdLxMHzhukuTCKfJfeER8+patSH1JuHJtx5qBfZ7xJ3i8ve6kIN
v/X9E8YQWFnQHuQxO32/NPWjyp2ixywP7qXy7691mcvGzZX16bueEsimVf7oSbZt1nw6BU5lcce/
gtOj7erbT1mXueGZO6gmJ57qsNAe9v6J9dCW4JxgtcjHyc9rR0azH12TVbJ+tMqj6pri+OgkQdiP
5EWr6vxTTdmqlcykXtzTZVHvfS6LU4dKHlSrfi6Vv3du6htOI/0ZFugC66kNem1+vHqAl3ZVPuVJ
TUZaP6x962ORFxTuXNZZRwHBGMbzGb9MI9u6fJNt8GjKlfK2nfLTsrKG2Q7cF0pR3VzGT+OcbtYU
UV0rYu918PwNPclWNWs93f/ul4Wn1Q9w9m835Y/qdrvyYmju2QmaNNjW0HShzeqne2Rl1sm/Zc13
NUtQhqUmVn/6cKAPPa8JXl7cnWGOj1RNrj1LNTPo5K0NcjW7Uf9X39WMpvN0OX7Zc+FpG37RtgPn
nCWsDerOk/Kyv/Womm+gYi76v24h7GVOMldkJZviROron1J0+tOYmbK39q5K6cZr1ed1OFIFj2oY
RAKcCrWeLt8v6BYDFeJcEdRoGrlvFuyWhYnZj2Sgl9g25IDSuVTj9BkuwibABYKqJzyrzvC60vhH
Yjh1VQNE+3b5k/ofhbbPb60CsP5OwG51XqiBqcXQA4Hv6gBbkuruCbSisMxEFLtutDG/gFarqrrs
CH3vscyq7xR1aTn1CnOXRmVVEOR1KEW1VVdGHnHTJaK2vRRqGjvu7PTvR6FsarVKUN3Vdz+hA55v
qrQqwyKX8nyGuNCauTolyTIEsB9FdQUXdeWUwTpEZWBAbqXakdZNB/5szajr5ds+OITBOHiUm1dj
gm4O+Baqa4ZonHorlgAmOyUK1f02sBNOvQe6Zf437l8WAoThCoXNbewcq3+8UWTeirY4FmXR9fF2
jxCubcD6S6ffoav9PYIlDO99kSUdsWj3lP8mG8VlZyVjYpieglhgwYBXUAgthwRGEJiIwMQEJiEw
6Kf8G640o8BqkuSb9DxJGNtI7+odBJ+YHgQElVzh1Jyl6eivrnFvSSvZwqiDWba6CeoBwucKuIT8
01DTLFRPqWe7OG2E3lDNefsVTekWr6vR6hpAK/OZBe8ksTf+va5vHgJyil+iZBfv1Wt+rJN7CHGT
yEOaUkjdpk1PrVccTExhTVDVdZvBMubvcg0dlppgjTQ412VZv4OmP/sH0x55lOe6wfEEpxFr9GDP
np5ogQo6GtFRXcuEFraUVBX3XL7D9UC6sKmwLc/FcW9bvcxFo+2i8WbRFcETGCK4Ms0aacZG7Rfg
DoZ+m0T7vbg/dbOWTf2ALnvcx23TEbqoaiZdfqr/O63RV5gXGp+/XWGxBvV2er/HM8JHL6Kds34t
GXa4B/5Q1igbs3VFluWqoc34FVr3LrhpovXGlay44OERD495eMLDdzw85eF7Hn5g4eHLKt52JG0i
JmhYRMPWtHbLupOJCRCKOKXXSlrVLV4P652Tz1Dc8Tbb9+akVzIdRfxWdiIMPMxglKdU1bA0RMYf
LcYxcR+IdxHkuQKwXteaWqvjRt7qN9xq4Y+vaLr3gMySUMjD18qiu7n1N+s5an4RiYPudW3MWI3X
TzBBwyIaFtOwhIbtaFhKw/Y07EDCVvtDg9G0ENK0ENK0ENK0ENK0ENK0ENK0ENK0EJK0APt8syPM
O6j2PpEQbAlS/a8ELEfkM1QdCCYfMfmYySc8foV+VI3yJGSj3Gw9gqzwGBuEODdlBMRSqKwfVZ4p
B5dSnj5UDK6/b5XQ0LiDIl/MbNQoSJ4ifKwN+DC8ydsdoqEQ8ThnqqPHFehgLdjZS+vVqlUMrHkV
wr0GEIcu3vR2imC5lXks1kjlHbyBopWWzcK/d57R6DmTXoM0agg8bRgWMb63sNIEO3A9g3oj0SPS
Ex41D8Q/0IGYmCFGPfzLFsbX6bdzuB/Z3iD4NqxCrXDaHnz91ZQTRC6ChWnYB660dy06iScAqLJE
LiZyCZHbEbmUyLkHF92rDRtuWj+YD1q/4S4JN/046oVb0H6Fa1FuvSqddKeslcEh8bwR9qzra1iq
pdXoEs6MvPVIDNZ/nLVMvazSSdyG/gV6Hdx0DT/3v5qjL6XsIGxmaTnzPNriZP65eI0pei6q3ETj
bo+OhH/DzR3PWoIFKKiM3C84eoGmK9dfYiKBXeIR4tmLLXRTqQaXhlSvjdamOjh8JYwalrK6dN5H
Qrkmj50krxcZ5J/Vsop316wITo+mVXmD9SwjvmBnX+KX5BCLxbbMSZqwpu2iNLFJJVG6j9PIlrJL
9qlIbSlptE93e0tK3dyvWTV4F8OrB8fHJRJ7R8nXpcQmqWiTVGyRUm21Hpb4uux0dTHtvSzMTq3l
mScrZrwmpfT5AbQRvnSlnondJx40WwxkhsAB99S2aopf32Wj/BpoAOZ3d8Y4eMMqBHrc3VVWRsZD
m0VhPaYbVwSKBn03bHy1tAKUh/8ztduqxgYieCbEhZ7q27EAHZr4s70zcPIujJgbJZP/Vn2Ui5ie
pFl9nO/gzZMy25aGTk6viztpNfxUOnpk3XQxJ12pt6Jt77IEX6d1McZ1BwPSJ+WKFrejKTtpfGU0
zpyuJPBSm3bcakli7x41zJvNWZXzS/ZQnbFsi9/l6E9zonAU8pqzOMjak7pHUwX1+Rw8fxuBz52t
7ZdpScYpWVXcMlgaad8uQaac76z97kDHW5vL4j6asPhQSFOKgklkcbuXk0mDV64oy+B32dS4eD1u
3z6porrKpjArINDvrouUMvuOm7RwH2fd9Ns9CTLrYN0UF7DGuu6mi60+oWGlK2Sw96xph2kuSQL/
SRJRnbDMcOvy/YG28uzafWLttW6U86H+mm21/gaW783k8tWci5Zf6/uni4IDFbiHNnvutYOhKLvg
D8o9g4p3SsMuEtVR5MWjNaPm2JJuHgV7RR1C/UlvGVyLy7VU/8P+qqjUeFS4hC7wDJxEU40PGrDq
+D+8L4DQUCAXBGeOocWOfuy3kjMkSFajdHaCXWLg5vdLmf72Mg4W6DO76p1HgEMMW+K4NRhzUQ1C
8EUcEk//b34cxCWw2vliTzhuW7POHmIs5jBQlufm9oJFpzmiYJzUXleuJzGqA4FaxwPz9YdsvdIG
xnaNRXsvcjgJA491iPTuIpbMDKKD4nzPwnESFqguqs2pLJpzWb8vWJ3v1rcy+2Ewk0aaDtsIOUTK
7FOVx/VAu4zZz6eco88bHF2y1AwKis2SC8FKgqm+wZJnA0OR3kWmB4Hnr7LK3ZJaxJCqs7oodwv2
MjeBcvpPsyZKFF2ImKyCq8SeMZet+icGe8dV7KgdhvBSdlYV5mQOVunkZU9ZedourSbtm4VXBXU1
bxCZWwfsF/Nm87jnGayfF/m9LmCf9xl2rfRBSV8Tww2Cc090kiKcKZEzJXamJM6UnTMldabsnSkH
V0q/fGhJcdZB6KyD0FkHobMOQmcdhM46CJ11EDrrIHTWgXDWgXDWgXDWgXDWgXDWgXDWgXC+qXC+
T+R8n8j5PpHzfSLn+0TO94lc7xOHcZJEyVdP48PzyFl1kn3H3Q/bykXLOqYQHL47rQvZ+r0RA70G
/tN0ODJ30EdzsZK+mkRQKAfTP8g891lUqIZSfig/1CVZZjdYJGxwlBkdlLWQUMp+gaGr0UGS2Fma
i6KwuwQJbw4QYS6cD8HgIoSdj21dPmCrjZnbzWZ1CxkTVcuDyTlBh0j+WWW34hQ8Kl1h90aetQ04
BIbTUhi0A4+tNDdW+apMvecreFyvR6n8u1f8sXWxU815KVXn8KaYa1B3VzUWE/JWY6H+44rB1NES
8prAHTZTrdHrbomLRidzvHrAk6xw5ak4wnAttotG20WT7aJbqmos75VU7QhnMsaHfK6Fu3gM7egz
Dzh50HMaij77SUx/Cdm8S/C2rmcWEIdtFyGOOdrqW490/Bxjs03J4v0wHv+Fvory5lMc9XNpzFb7
54Yalyz27L37eq0fZr733OHoFIR7+IoKjiT2Jx+MH8oTEXyRiC8S20XUS+t3d7wrKOsutYa1C78+
GqieqnmMxmAIHUDlmub2PD0OS7anIUPxx2ZHzG3RtEfTPJ/lreZD7mLmOZnpN2ayeMnFoCz+v+T6
R2R6Lj5k/seWc5rlao44aELI9r1wDufK+v/9kFI1/aaocMuUvl/HO5oPIUkzOK82iSprGtUz6yVD
cNpc3Gzm7PM4zekTRDz+isb+3Md4/oIH8gQHdrH1MF6M/G2PoVc1KsTUgo50qdamtHXyWciKmFMK
u0Ht8N5UVfpGv/F76McMMR+48qSFy2DPrXTaw6o8QW7auU37Mt0CxB+SCzmTcUtcdBDcEhEy25TX
tEf4kVLZcvJkNJl8GC9i5oE5pJ/nWAltBrY7FhCa7ftC2FFct4E74uWWEFQJXSzGI3oB1xMaWepu
jdIjP9c5LtiAi3sAO2674jLdPrYUtHXh6/Pvp5iaLHq7CT3/hJf5rB8uD7a/bRZ3Ra3BOuhhwp+6
57B3+aMh5vmEprRGPt2sYLARg40ZbMJgd2R22npnAzGs6I7W177MF2ShFidHq+hizMeIbY8RzMdE
MPCUcDewanTch0Xbyhgxyxj/SBnjbWWMmWVMfqSMybYyJswy7n6kjLttZdwxy5j+SBnTbWVMmWXc
b3vMnvmYw7bHHHiPCV82PWa6uKQvRPnycv/oL0dRs1wdldLurR+2pMJtkXM3YZp0yJxpoVUMp4a4
80R7ZZ9mx44ac5XDzpCwoXpHTlbB7f5FNt8JNaX05jCzVcyNgY8hvMnuRP1ms0HHQkx2Eq3BZV1d
YDvVGqdqrMXFdzXiyjW4vqnX1AsabTlz9aw8aivQITi9vYsoovdJmTDX4BGUzQZxmsgapbe1rVPw
9ONnryvyazd1B77isK9wjUd1MfE86HeI0fB1qsluRwoIIUs4kLeY2VtpsCwIc7ewVaAiZI8CNWwC
pma/2nza+tGs23fXPG73drVF3tCLzcr7NXNDZoPgqWhOvobYY3r6E+BFbgTaVGbXrrJ5cT7L5rl0
++LrmIyMGm5gVsQgBZmMVsnrA3Y7LfYaWlnTo8x3hTlYaMxr3YOBLVtqrRytZzIw7vbs+xKYMt8p
j8DVY/MTQSUTXPDwiIfHbtzcHovV46a0SVp2kk2wf+Kj/1yW3zBT9cfXuqkcvstYojm1ngrT0E9Z
e5U5FRM0LKJhMQ1L1rC66yivoDFBwyIaFtMw4ivsVrGH/t4lCRM0LKJhMQ1LaBjxTVMatqdhhxXs
P7CPXq1eg61V7y/Q365m9oveA/91vkPagv4du+7VHP9Z5Jf1l/hWq6cSKUGiIhJlM6PnGG3Orjin
ZuZKs3CYv7kHSjM0OiddwSgwt0GcI2JhtQ81HSz0ECNYNA22UMMa3ngosnDm1rcRB1f+u+BHh1WA
vuFycWJG6dUqXPZyahHO+/rG/nG6WEmPVtLjlXRb12ZmImM32kLpkLzbrN/l8Tuco3HMiMFVmoVx
zU9i+VO0/Cle/pQsf9otf0qXP+2XPx0WP00iNOanZenDZenDZenDZenDZenDZenDRen1ujF+tAA3
3Zw+v6qf59RgnmadzMr0a2izickMhb2lp/nG7+evwvrrpApwpqMmmnXTjv8BJ2bOj2pxCt4I1d8L
2X6BU6ulvlD9lFVwBjgwSWO4nR+R1L+IxS/R4pd48Uuy+GW3+CVd/LKf/fL127d/NMUN9+z/X/yK
nfw4SfyY57zof9MbI37F5avfZNvN0v9HNvXf9QGrX2FNvhVrwCx9WAbWRxOw+5sduTCbmEbLh83U
nZ/kY0YJ3KaEO2QFlXRx91ovBsNhS9Vd2R9/KnIR3NXQUNpS5r/h5fX6utwr2Hp/jHz0ecC5yGTb
lRLV1/XAfpjF8Vzk73ezI0QZ570NMN5ZVLkakbuJJ4Rwe4e88K6NPng520yywMwMFjewLpSKw03Q
76qBXVElnNVdHrtDuoMrVV4hBKnyesX7ExdI11jmzH0SfqLJHLIG/0bCrpl+b3FV98+dnxJ0iJst
k9szMIL4URwfp+9rGt0Z4IXhqyJbSyQ/VN+3Xfz6eYeD8Jvl8Z7NzdKNhBtGoOWbJfIaO9s/T7/N
5csBumbi4x9djR6TpUmtHFK3Iajb1gM9GuhM5uc3Z5T2i81B51Y+mtLNVnV/ono+arX2o9rLtQoX
qdo0rID46uV5LNucPQ4shcXbkb8Z3fy9+lrn8q/WjkG3Y1nlQ5MkNB1cJoI+tdE7X+cHG+d4fcGI
J8yLnjeQj5LNso7+DNtw7GKyYXcELpbERmmLD47ZAbydYJXCr7QRc9TDyvjyoDln/CtVU8OxPS84
nWJ40eH+FquyZuse/Ue04VhuvyTVOmRguhvAgFCaT7UPK3QOAfBCzIe269E3pL0Fw5OM0xOso2Qd
Xyyz5rKU/1BvleWw3XP4rIRl5tGjxe/9F/7g1pTWHJvC8zD9ff9Pgccl3u9enjvoxmc781r2F5Xo
6ypc7s0il/E55V669Yh3nbIWq72fstMVDuVfpYTddS3cIGK1UuWZYM+i63G5I9DMYDt9KR5ZzgfP
NvjRnrDccewin04q7wkLuTnc2pfvMPEqT9+hfGpogKtkTB+5oECvQwcKF6YUJziABDsC7Kz2RtXU
ZuhO4WJN230LKISbbPV2u+WhGE2YUROXePXMfvjaz5SCj2zYMlCu7/+GaxnG363556N0mBf26qda
jbHzKxOeJ1GsMst7MJ5peDuENWVxbFEn3XDEMB8FgA9rgj2oJ8umykoSvYRgEtJ/BMCuDZPW+6LW
1J+WlT8k/LfqJr+aOwvs0C83WxXBAbUHbi35alXJo+osOzgxrT9zqL8e298rh3cwKavKLfbQSwx3
megvFqiuC0+/WdyqQaSo9KIoXpW+qGH8xOWrGe1fsRMc76JBpm3DV3PN1avur+HS2Vf7NEX9TwTt
Z9vJG35IoV2mR3DjiGqggRC2xMpyCcYkcXRj5zKxq7/Lqp3ciOuGbPYEDD4Br0qDbhfui8lsL4ov
eAa0cTbNFr6XeVfDfhsId5ol5bv81JeGWefhE8J0YI7HzzC8O5JM64f/82Grpyf7qOTHXc/0lz7E
6HI7+PYhdvGwhlzpyxQs9HOCKeW9/DRfHvGBtg4O07sp43ztBblk8LtwOOQ70my7Wkw6XKdqrvQb
XMDeYZzTulPAj5B8WN2OXL2C/npuoyYOdaU/32x9tSUKNw+f8bY97SebkPl0hwiKynP2KDv85jFe
UDi6D3YE6fvfXOafS+XZnfAmqTPsywAfcHTXDRxegqjXKbhlH4vVAEsGIO+buubyDTa9jAM4c+Ks
5vfm1bCObZ3A8zt9oC884eBGKjn9BpX55p21Ooq313v5aF+r7O0VHNP0kM5DpvkDHJask88ZBQTk
oIZ1Z5EtOgO3yBw0sQHjQZ3KrG0dSH/YweFlDRi+8jMU8e+HbOYWreewuCGzW0ZWdSp+Pwcm/bMN
IE9i+WHxGWAOdKNvb6l7DT2vOpt8cXtGPY+eai+ovZnLQh3gaJfouBg/IGsT8GhNA9ZBzyQtp/w6
wSwZ6dvMXNWGG0Z+y+ZDoPky2vEBy6526abBbaI6LArboufAh3FxsS2+ZU2xNG/8iB6GtowJNJNd
ShpR5qMPy9mKgVcn4xFVZBapUOtmWmkeYRpxUeHFlmQBD+jR3uQi4/n9VPb3GQloDOZLaNNNXbbr
QmpWVnQYf8jxy679F2s4gj5sfA2vnRi1E1wa8LL6nN95+HsV9gGrjxvthjMb01arZSliPkSzJmj1
bSbEHdbnHplliJ7e1C3hcq1HSQD1ue0sz/0Pxun80hWaMt/NgTXVD8x2Dy5Y/UXM/hr21Zp5fvjW
TkF9m5vi9Cg0bP9w81gE1Q3V+rr1PvwzvXiOLG4FVUXAZzj97R3CLNpA9IE5Pf7dlUrMjGoE18oj
DPAed92olkp7EnhUG4v63uCNuni3Yx8BJMi5kT4UaptsWjBrxNTC2Zw+HAtwXoXu9uwO2ilhPpBe
WC4BtYNuYOQVeiC8LwHe4FEV+CnGxtbxDwLmr1uh5jEgDCO0pf56HG6oUP1xZvPexhSuOz6/Q25h
cNW+BDejVf11Kd018zzfn50WHr4VU29TUEisGn2/Ha22npKqk+r6/ebuJylvt4LW5gR0Pp5kWEOS
tuWbJ9Q2J8ea7Ih5u2DHgJaBXo8b/ay6q4Sj6scaItAwmp6ctHdqPcbw6zq5VrsHe+A13VitGGzy
2AWietBtVHkbD/qu/Vdc0vZV07vqFpyJ+uogCFt9l592CpvR8VEoK6laD2KWVzzEvVCzmtHXT63Q
81LGJjt9V8Ph5WFvccO8694UdWMZsnCmOUz9b8WHYz1yBpp6hc1zXtCaCItLjlUuAP4mIYw723mE
y23WofkpMd1lJvFuapjNe2Vf+yp6rZSnalUNFlj1E3hTgd2HvcjuZ3DvcDfPz3XzX9WiBhXyD/Mo
vedHl3ONmm+5AqYYvpOll3hsJbqGGOQ3gfd+xX0OoRpVNq3eIqA8jtsC+fiqz9S1PxUXWM+ab2VE
Sm+iOeESCnxLx56O224g9H/CRSkvZAu1aqJ9HB2zf52udynMk9rS6iKo3zN7AnzGSwewIDLYxwWX
baiAq+C1P9UvG4x0Y12T8IrM2UuFX+gGF+/56fNnsl5hlt2wIcjucCw4azouxQaWkQuTfytKafaS
LZIhAhToFWT0ATAwVNV2ZRgcmUZeGolHwYIwTA4vdlR70p7MXmHl4dW+PWOITwX/aoe1tDkzeNyj
mLAa4nCRjsI2mdHSAh5/jt1ci/385vicG+XoCqvhZ2KVKrPmdB375i7EzPjq8nGrrH2FVhku4w2j
nhtBP3CRrHebjHa9qRdBxQZHuPpHdouurpcxy0zDUGUvoWanY2kwcsg9QqoLs7bwPn1sjcM3yR0s
XkqHeyT1NMq+o25Bm+9jjDZE/fshK0stazmzAbP/5oElGj+QyvsxcXPfK44nfQu3tYewAmybMQyg
p6boRC4XjWxMtM7MCFjPmm8yGoK48wVA3PcRPH0Kmw1oBgc3NQHGpQIPVz1uR/A5cC+VeurdSulO
Uv3b0toxnsgI2Tl5N4dnSPFaASfimeOPKN2nttesWXYgiBFCBhi3/J+/gydjW24ulZt3+gz6T0As
Tmsgg5uAnzE0jCgsFsbH4egcepMbGv0RXdtb1nza5seTGDbYic3lGkMOt3SMWL5SMEcsX1+ZIZYU
1UsOq+iebYkwtw6yEjcvdBNPIySTgkxGZDImk4mN7D8AiK3dBsCpJNgBc5VZvkg3rmtvqFVtbeID
pj8MjHsKLIiJAC2S9PfQbKuNOLd9xdmE3fkq6wvudBvGODUwwpap5Thzy6pPvczf+veg9J8VqDu9
KtvcBhfDtkHGg1s91P7mw7osM1Wr/fVlqn08Lypd0K7deia5q+99Aey7YnCxB+8FADfWubdSzeYb
NVH1HhFB7CNYX3cFyjRbnAE71ntHmGWhb5CyJmLcDBcgAwljx/xLkDMSh2FVQe7E9tRIWf0k7931
H6rfhW/9VEsnBJaiCe/fX8poHJV7VqEzAXFfjAfT+QXZmpvIHRZc58X5M3hkZljGSPe/srfMulyo
7KX3cebNbzjqV0rbJqUh2bWBx1zhOf1aKLyc/WLAsUg/Xi23HT5duNYuiyOnubLQtvJjMBxL8M3n
R+LH0KN8rjlY5pAG0xMBfYm+adi55dQeSoCH5lqhrfQ9v/D9QVCuPH03e2jnpj/UuKPBP9NxOyRu
bJR3J1S5U3odZ1AN2c0J1vABJf9Onyf8qMCvsO4BNp5iP+fWu9oEAZohePx01WnTh1TXvbHez7It
NfZfMH2FSFb7ai1Mf7wVdrJo7cPOzdaH9Z+OdDBmY6Ysz8Pl+f0yuQV2uz09Ym5VL0rwLO1bx3sU
He7OuY+ox/SlwL8uR/zhDKRjCmZm3hDkMB9mbhyEa1wEw5CB5d4id8hSi/S3XIFDO5zWc+NdccP7
QX2j5WCksz27LqyFremqdrDN4soZ9PLZqVv2JWMZ2xGQcbrZf+shZHvK7tL3DNU9qTGkKHyIYyiY
MLr1QpvzPa1VRltfcJNTVnjffXaZ/ThZ70dRVQ5G9+mAxltR1JRWPfPROIumj4xl+CE2uAYMbJ3I
Oqg72udy+e95EFF51arXuGZt0foY3VqWA3UPmTi+ntjf6rqzLN3czWInthr7lL5HRlMP1bqgE7KD
3wbuZ/Xkb8vRbGhovaGDC2rrgXoQHN7BMzBHqJ63Uj8q8MqKc7HwscbyOthgvvZsOaNgETN7GG+X
/uQuLmD1qRl+gPVD5s8S2fPBU064FwE/zzeHekdnGHqhtIuvGIxRiddhL12l/uCLTYej87Z9d6zc
w3rhbJrPRuPiIBw1MhWLEXPl073JUp/UhaXFuageT9XEy56g1/phsVragX6BfnnMfAGINSBaA2I7
sBpe7rm1PYtTzuymxH/ZwdEuFMdNGyO4/3jzcDrR2nqmrCtVZ+Cs8ycg/EBVm6CkdGe2PKBgEswO
I09BGwnTcbBfPG6kfBbnU2yooKMRHY3paEJHd1RU+dV3dPdXBCA06YI6CMXiZ2wK8FSGfcHO2nUL
OOp4xcBWzKtPjv3JqS/ZPmmaIP6qNLugh52bloA1BouCfnKAy9zzwVv1JjnOQHSmetkSXOLMUjte
WHDgiAPHHDhZwP0B9xwuiu+PuVsHmuXwNXxwDUJcOMMeIvmWEW0hD1Nw54ZaN22m9Pob89V402Hf
aZv9lH9cjn9ATsM+qtH3fVCm/eMeQs5hLNpvSQieX6xil8ia31Zt+DL7oUw2Cf+gaf0BNmXJ4ruU
d/thOU42C9EhOo1HZJdTDyCwm0SPsq4tOUwOVC2STXfRu2zDSWBLAE1fLWOCf7Dt6/Qdp1H9SWSL
DmwCdsic3c8+itYOmIVOfdp18aTL0RpnUr9n/QlSy3jzXFu1X84BN/w8I3DTLf62DlLh6HZa3lIl
dWqcLOQ7rO/PUx94odDJfsK2T7U8cXKpSea4A2V6uE+HLOaIvp0ghy9snWpXct9hLlJx35canswG
L8uWW810RWeRhv0O48NhNsDsCGxx8yQErGFxzFojo6OD1l2GAwBbbh+NXfHzg13L9OkWCjULVxqy
b2ZSZYb4Gdy7ZC0wHqOlHQi3sXPk3w/Y+2NuZHhugZljMIPsF92Ht8DAcUhHxQLF4Bvusg2OBUSs
FwRkI6vHDU+YjXYYWUHPQutw9BbWDVY5s7FgYme2xQlNd9nFNy0d73ZUhqTna1WdD7GfDycvK3TK
dFfyXJG2tZhVoVqfhP8xYWclTKRbearxi+2sAi+kWCV2Sq8UWY+kGED7ZiGVV2wb3Ma3Rva3w1iR
tcUq80UoXEV8HvmEiybuZoENj4MzpEgoHrFlZv/EQyYvKLyVeW53sG4NWEDWDQFm+jwck7LdEgen
aGFYxFUe1Uzfsta6K230LPuG+BEwnAPtcLMjOn7YA7FEnLAtYXIOazRTaddh04C0Sa9I6j2a+r7Z
lftRe5EhBirLsri3RYun4Glk/7FrGm23ATs7qnr9/XW22L+Uu1icP9lypTzzy9hYNmDZpbyQVp8+
OYYe/bUu85V3H8vYQp8W2kYMCyguh8u7zIKJLYQ8HILD7ML4Hhbm63Da9q/5RX7Nhk2l/w9QSwME
FAACAAgAWIsJQXTOBkh9HwAAeiIDACUAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9lcnJvcl9s
b2cudHh0VVQJAAPX8iNQFukjUHV4CwABBOgDAAAE6AMAAOyda3PbOJaGv++vYKU2m6R6IOvm60x2
yuM4Hdcmdip2T89Up8sFkZCImATYAKhLb+1/X4CUZMkWrSspgTrVlbYlSyDeBwfACxAEfrvzY+c8
7jjVU6d2dNY8PKtVnXq1Vv/d+a2HBfvduWJUnTm3RErKmXOBXZ84VDqMK8flrE07sSCe85tPmfnY
7efhJ5MP/v4fv72Qvk6CuuR35zwynz2oV+qVWtN5+0srZip+54Tcu5cyGL1/ExGmkz+oVk4rJw/O
109fDw4rjUod1eLkC81K7djpUeU7t7HPJWXoK1auP5lJhBxBZBxS1tH5FyEOHB4RgZXOr5yV1foo
q0QILvRPN6CEKadWP65U9X+1352PNCCOx0lKhPSp1BgOQqYOOlQd9EjrgSrk+oKHNA4R6cmDz3jA
Y3VHpJIHvlLRgUp+xVHkJhx0FnksXKLfanGhv2zeRZx5vMcCjj2dexRiRtv6a6hZbVZGL2YpaGxX
gUkW6WRRkiz63veq3/unbf2z9r1/Uk1ft8jwZ3348/DJ3/HwZ/UvuvzaRBBx5pjrnh0cjHWcnVSr
1ccsuANBg4C6KBa04qsw2EE4d5+ubu8/Xn2+vP9wc3l7f31zd3/5r6vbu10u0Mw8/5CLF85EfJhv
6KqJSFeLkMgjAVEE9XwtAQlMpQl2RUMiUA2KsQzFWN+tYrSn8DZSZIsUFBQQFBAU0IIFtE5ZaAvr
XCce+MxxfmE6Zcq0S6X6t/6Z9q2hJmhebqrRb2MaaB+J4sjDOqbqlciPHO3pA31Zp3YKKnZbRXPX
VYAG0LBHGh6zzojqcfGAJA3jACsupnN/eLJ499LGQdDC7kNmv9LcpQE96AJdUPtANagG1aAaVINq
UA2qQTWoBtWgGlSDalANqkE1qAbV25wFbXNBaIehcT5H96afzI8m+V9C9tNkQf5M+YdljPkQU4ZG
KSMfS78M+mdl/6iMxcfbbfMlhF2dcPYyjiMoOsg+ZB+yD9lfLvvHJeo05qT19wgr//0s4zXdyaC2
wCHJ7GqOocB3O/u5WvShh2Y6QmSEtaNknCWXMEvnR59bwt6wJPBGyaIAD4h4ae3w7ulPSxGAWARk
59cMnoAG0AAaQANo2AcNXSLMs+jEGz8wPaWjfpKLjk93d1/vrz7ef7n5cPXx6vLD/e3V9cXlBmXF
LHkHt8wzYcN3p4Sd5qrr+ub68v7L+d3FJ/s1lSXmQAfoAB1FtclPNUk1CIj0CVGNanNKztHcAdlw
vwrMXBIgLxbpaK6LA+olG5MgGbsuIR7xMkdma9ORcSukaj0aEZdKZ9yjgrgKdch0sdaauWRcv6DS
zzPjzdqsjJ/uDHGz4026RYynI6U1jskpEY3DGSLqRc5w6PjuYnkQ+TSg0QENcUdXGzPv0BE8Zl4l
Yp0FaspkGmm6kri6yqhBxRO4d2WSraQfy6os9bVjTudSU/bXn6ccxdx0Uc3HIKX5h2gYcaHkY+i6
Azcg+el2uUdyEl2rbVH15mJcTgqVAe+h0X5NSd9gJCPKUJKVhQRrOA/IqPaoNM7YQ7pfiEla6Z9f
YJx4Jo7TjfSjn89v7+4v/3l5fXd/9WHVkEj3T0hgTVAjEhHenm6B56KaTGri9ySlDBKN6q6T0MHN
GVu+eciCMU5vZDIY7tKO2XzAFS8sXmnU9hZUfkikwiqWaJ0WdTaLiYSnHUB9KRyTcP+IzT5zSbOo
P4Cm6tdLbQ1QAkpFUtpYNz478yble53y/WIP0r9MgOlh3fIUDlePlS4W1BiIM6en3bK+7PpGzjgP
hJkedSgcBNMBMn+jxuEI4EfU0Y6ugyIsFMVBYmfsl1/fb/lHucgvcrRKmYy0AeBisjlMa2iIo8oP
ydn9szwenVWrW8njVGvS9+cPLR6/qp2O5BMz7mkDlDF43g2B0hU0Uovs2TarFDMEI/rC2qyt6Q6p
TPb70yPA8oudKuSJHBapvLblNkZXXrTKIxnPK7RJKeCdTuaCnr1T21h/3i+dcSIr3w0ZTtbMmA1D
IVE+98y0loyDZUeyj0BIX1cfc3tFjpaLjSfK8gOTDhSKhVLfdSgXN9d3Zrbj7t9fL4tFU6vuOhuo
SVCToCZpNms/4+ERNliVyWzfpE2SwuLpXdBlas5IfaS/EdCOrxCPkhM2AANgAAyLYijyzqX+qOTu
A1HD1/6gRZ/MeM7IYqG7uD+inLGmaDx2NPe12vqSs3K77Z0XXlQwb1VUAxSBop1QVF/b0PXw6iuf
nrWoU5ZuxrLhFRrpg+FyqvHkkacvLfjAYOJd/X/FkdSfN4uNMlrv9SFJsokyXxBS01JInT9pVBik
I0sh/ZAeCfCgME7H1nJyOTOzz4WROrGUlOvH7IEU1zyd2sopyUNhmBZYRbmbnMAQgCEAQwCGAAwB
GAIwBGAIbDYEinPUoh3zxIaLReZTe3vuCAqkZLElKJCS3Z6gUFB2m4ICUdntCooEZbUtKBAU+ALw
BeALwBeALwBfAL6gNL6gWXpfMFr+ldIaX2C4kQMOCYpFIPMDtPOWYOuA6J+kMECHFgLaebu0bUA2
OKXtM7LBJG2bkg3+aOuMLLBG22YErghcEbgicEXgisAVgSsCV1QKV7T2WZpqEBXXp9XXAZQ2CkiQ
KMAuCYe7++RHxh6/WDQZe4xi0WTsMUBFk7HK+RQPxyrLUzQeq7xO0XAEZh4PizM5VasixyYHWDQc
sH5g/cD6gfUD6wfWD6wfWD+wfmD9wPqB9QPrB9YPrB9YP7B+YP3A+oH1A+sH1g+sH1g/sH5g/cD6
gfUD67cd63e0kaOHrz7ef7n5cPXx6vLD/e3V9cVlLrCSGB0dTrcpRzg89jtdK4lCEnIxAFq7Qcua
YcU0Fl3fZH5QrBlRFAnFmsFEoVBsebSoSCjWDK6KhGLTuKpYLjYNqYokY9NoqkguBRq8mWMHW+IH
rB1YO7B2YO3A2oG1A2sH1g4sC1gWsCxgWcCygGUBywKWBSwLzEYtzOl4z6ydOYJdQ3EfEOPDm7Ao
IPghP0CW2bziAVlm+bYAyC77Vzwgy6xg8YDss4XbYGSfRSyekn12sXhGNq0I3VocWbQwdEVGJ3tj
rWlbmJ0xA449pGMf6c6GKJIfGGssddFgrLHShYOxxUIXDcYa61w0GJssc/FsbLLKRdOxySIXzcYm
a1x43FhkiYtmA1YYrDBYYbDCYIXBCoMVBisMVhissJVWuFHdH8fHqKJY/yU/FvaYvPxZ2GNf8mdh
lWMpAodVJiV/IFb5kgJw2NTd5o8DeljoYaGHhR4WeljoYaGHhR4WeljoYaGHhR4WeljoYaGHhR4W
eljoYaGHhR4WeljoYaGHhR4WeljoYaGHhR4WeljoYaGHhR4WeljoYaGHhR429x62Nh/HRxoQx+NE
Oowrh/SpVGcb1r6GREH+iHXq+meXSsrZ6Ay2TMX1vXmQUFKPtLBAPeopPz8e1nisgnhY47OK4mHL
04IF8bDGexbEwyb/WRgSmzxoQVBs8qEFIbHpAcCiosQie14QEmsMa98XCMsBc8GsFsHCGqNaBAtb
TGoBLKwxqAWwsMmcFoLDJmNaABCbTGkBOGwypEVEh0VmdD6Oxl4Z0XxRWOVD80VhlQ3NGYVNLjRf
FFaZ0HxR2OZB86ZhmwXNl4dtDjRfGrYZ0JxjwzL/+SKN0/k0pCtopJw366kdaUNKEJKh+U2yGKLN
Y+1duHBiZk7LcxR3pMJqCQqzr5W8MoeEvHTwXvOkwLUbZm86yjoTNEgYqUHlh5wrdvTVSJBkhzsa
dpBJNEvXYW0LuhhnKEkGM4VqS2uSAe+h4ZsmPGbJqm9bVn1bsuY02cSjQteG1Ruq58E5ShOFRPnc
k0j/KQ7UkqOiBdJtcxFmBvL6s9K6MYllsVjqu4/l4ub67vL67v7u318vi4WzQH+/dTpQn6A+QX2C
+gT1CeoT1Kci61NzIyfGf7v8ePnt8tuqcCRxY0HVYEKF9HnvWyr9KsSdJ/dJZilZYKz9iyQBkdKJ
JXF428FOFwuajIJ1xrucek4yT9dXDlYrCXnMf8SlSjZG7xJB2wPkD1qCehW3Q4dRf1gBESACRIAI
EAEilhJxfFatgggQASJABIgAESACRIAIEAEiQMQ+i6iBCBABIkAEiAARIAJEgAgQASK2IaIOInZD
RL1a4BLuZrWJPCqQ9HkceEinlq7knruKJaTSPcAu9eooon0SzF6uYp+aTB1rL7vxOFv5scskf4+B
lTypRzwU8M6SD1umQs0TMCh9jAUJEvIu8TJ1H+6n7vW3cO3iIN6YcCZRZCQq10/2HhU8WHK9YpLi
zHTKQaC59wSO9p4A1AKoBVAL6iUI4xLEIQQSBFJugVTkY75pe6kT0uksMZwiYYt4FwJLn4jMlvWw
aB2P4DshpgHCUhKhEGfJE8ioLXBIktwuJnJWIplijwsUi/VYiWDmtYjSn3YfKq6Ui0nS/5OUdZBU
g4DooTQhKktRs1p08Smfygpv/SCuqphEKzrRSpJopUPbiwlMv46oeUgFJRlHPap8XXwvlR5oXfoZ
o6+/fPt6c3u5oYZy3EhGsYi4fLIpyGI4nqWRL4CL84tPl/fmQb1vN5/XxNDWJHzkE12xhZye/bBd
QK2aYwx+O//5y3l+Wa9ZnPXF6syMNGZp3mJPPv5tUUHjRxbNziOjbUhczFwSoFpmm1B+hUdFK2wt
pidmyR5T5i7N4/RtRLDKnr8tXotbIi1eibT4JdLSKZEWWiItP0qk5aFEWoISaQlLpIWVSAsvkZao
RFr+KJEWUSItskRaVIm0xCXS0i2Rll6JtPRLpGVQIi1/lkhLrURa6iXS0iiRlmaJtByWSMtRibQc
l0jLSYm0nJZIS5nuv1ThXhLcS4J7SXt5L+kH3BeDe0lwL2kv77+EcC8J7iXB/Ze9vC9GSqSlnZ+W
k/VP00jWgK66FvX5URfTZ2bkkmeXeySnDM9c9bvIwRx5rQ9lXMau39apY4WDYNlVon0ZKNRKTk2M
uFAoFrTSnxlK658+QsNOY+U1zXGgaISFmsj7+L3pElpgVnOcGGVdHFBv+JSEpxEic5ahhwPOMh8R
WJ9EwHmUP4lG/iQOSxgTUvEIuebptfxk72AAzJN9stAeO0b2r1gwyjpad8x0Ph7eRuZ4T9VX7840
Ese0V45psMzBtmkTy8XKp48z3KUdrChn07uFEEVQNDxWdIldAiaSS2tCeqQsQ3Hy2BTydZUIsp5q
1IgaBfYEE3mNaH8ZaY+/ovEJVNIc5Rxra/FyDJRe4OEuHLI1M6oZRwkBjcCcP0YU8kkQ6WCcOj7d
Xk0ShwT19BV5r2TKZqiZ8eRb+eQc7VWHYb6NXM4fKMlsXUpHRE4jaTYbz5EILiXignYo2x8wC4QK
cJnJJekH5mA5XrehNPs8mlHORhkk2z52eAu7D6mKWARPBiKzxJyuP5xwk6xsVMzYOGkTlSiKIw2M
SORrQ6ejB1FFwiW3oJq60CLJZ5X/7iMbPnmbH7SXLgDYNolt+W2D0h1m4zE9lzMzm6KctJW8SEyC
gxwsZRzqv7+ZfP/NqnBT7zE5h5m+g2JFA6oGyx7lHAWxboOl2Y5EeMjMEgyG/gZh1yWRQhEPqDvY
e26mVgS+bvynuT2mN48goo/bDwFIALn7IIvcEmN85LhJ7HFv58U263r8MlHm9pmnnRnzWrxPhnt+
JbqlzFRa5N5dj+WDW6QSsc6sDJ3s6DHwk1MEafBMRWnTUi1zdhUEETsk4nRHRYzrxbBxfbqN+SmI
2SsxOa+qmD9Hl4uqXNddbElTsSX13L5YX1AFSSpV85BOfm5QhosjMxEi0y1AU8M72nJ45haBjcV9
tZlJRUqYKbxkRvvlmdsNBK+OO/0FigO5TUJNIASEdpVQs76N4fkjCcoYd/X1UJe6iqYTqz9wF6fL
Vs9wQIR6++rj+dXnMwdHEWHehU8D7+075ycnPZ5n+PrVu7963I1DnValxb1BRadMxKe7L5/fv/pb
5CQ7Vb9/09aMUY/Qjq/OWjzw/urygIszXchv/vsjpkEsiGPySlnn5cv9bfEC6euy/XB5fXX5YThV
gqRwEQ4ozpxKaDa2USqG+9ZlnStFwkg5ijuSiC55vAm5mrqVBIVE+dxLa+dQXCS44tYLY5wh6WOP
95LF4VpUpIiZ2SufVEE6cYDFShqPFzojMJ3vpYya7oH+qTuN8aEPUgnThOiWe8UTAseKkpMGmbod
vv6auMuJBpS4Ph8t8tcVsBIFo1m0yuLYZl8kLTXaJWb2N9nvv1oDZMsiqwOyZZE1ANmyyJpZyA6r
gExfZJiquaM/dN007CQXAW4LcDPWjmU+3wG0ntMaz3kBMSCWEzFJgjZqBdx9IN4L3gzAvQwu06Ed
1gDcS+AaAG4ZcEBrYVpKD9zTVe/mYazs1UWALkWXXAIFVKoFxuoADaABNIAG0PYDGvhbgAbQABpA
23NoMF7fKLQ6QANoAG270JoADaABNIBWImiHAA2gATSABtAAGkADaAANoAG0PYZ2BNAA2pahNQAa
QANoAA2gATSABtDyh9YEaPoitUptuDiecabpDU9gSl4AOkAH6MqA7mQbW75QyQNzLOSvXATeAWYD
c/TD4vKnv066Or+Zm78cnm5rT5u0KH759nni1fd+tXY23FdI+VQ60udx4CXX9XGXOC1CmGMeFyde
5dXiRLKup18h0tefSo6aSsKmr4bbCo+2ykeGnMdDILgsQfPMWIeoc6Vbj1asCEraE+C4CkcIwjXg
yYkgBILrEry+BYZrM+QeROJGKEI0LsORQs+8cZDQNa9DD/rmjSKE5nATEKF33hTGrHg8PavWtgGy
HwbmbUH+iPUfFgdi5sYJI2Jyu2iz5/CvVPn/+vL5k/72tzTNTL1b2dM5pH3iXaTzYZOnfcZhOKjI
XnvFjL4wXfifl9f//N9XyX7+N9+ufr66fvV/ZgpRx4qLdS7S4wffVt6Zo0yH84rrTiqmm2l/Snbo
njzOUyeuRieRuh2aziSeLDGROJVw+mK4EThqc2EsVGZpH28luqU8jz2q+CSG2tzjxV7+fjIlq0kS
oXCnEgV/d30sdD1///M//ue//nj/unFBw87relVX//f6R03/4yxR/f71xfHNs33DxxuCa9OEKXv3
unG52wC/993G9z5ubprjU3YXjdfnzQl6Ka7X9ePRX453n1V1k5CQR9o4DhQizBx5MsnspzTa6lX9
76dxuNXrB69PqgevG//ICLV6fb8I7gey731S/94/0f+wW2T8vdHk3kygPM5CeLzz/Nrf+y3zz8s1
+tYDdlLeLvVJV2D60DfT3cBtYpUqbZ31C93/Xuh4fFvtH578Rf+vkfzvXVbvsF/cHqPr6HW9cXqc
/qxVT0a/1Ia/1JqjX47SX5rV4c/T4c9aBtDTnQE69vGbAMtbP8wh2+lt978LEuABUlhol4uoJxPH
m9xMft8i+vfkHG7t/+af/fBCtmfQrRU5Tmpzvia54VoF01tI3CZN9Hju7jODV6/PhqVzkfTDM6MN
eCzP41fqEccMU7Cr2woz/EzGgmsPNBeyDMYqoNpRSyeux8dD45COPY+PKkudmjK62ATUZJf8qdQb
WWPQ2lYPGuw1XPPxiIj2vEMH63OhTCaGo0jwLvEOGO7STrpGQ9FQ944HBkRy+fv0jfvkoBtx//Im
5kBKk+oviKpe5LSd/qg0u1qr4Wt/0KIHPmaetkT3IY4qqj9/Dm9mIm7AJUGaxxANQYz0xmt+ssQ3
amvHSTp3snKocPFAxOQpnuk7wxGKNxUsJ/PRDJNLZnGTJIzHtEd83xdIv4o4kwSkLyv9pSAaT/I9
cHqCBDDRya0IYXOt4bM8moPjkgTN4PmHXFjlUNto3I3ScTcaWY/MalC3/TjmzGKmYcSFuk18ltQo
c1G/3XOb89aeb5wn6WGmdryI7QhwlMjb5zDPl8CuRMFQ+TxPX5Yi36DcjTdmZnUGMs9xIJMqStdp
oP9v72p7EzeC8F/xt2ulLu+QBPVapQnXQ8ol0UGrq3ontNgLbGNsy2sn4d93Z/0SmwABbIKB+dBy
OGa8zzMzu7MvnpHCgwF8i9E7+AjsWWqmP5G/LQTk9BmLMuySrzNPm/sZHUpvjXgy5BXXnsXRXV9G
7buMUgIDIrIxIxPKUm9r23OYXps60e25ouL1jYlKFyqXs+PYAwShYmbpu2Nq/tmmaT+FJy7ekbLG
wVOWQ0H7LXhrHjxvwWGc9+SsdUicYUeG1oXWhdaF1oVBGAZhGIRhR4YdGXoleiV6JXoleiV6JXol
eiV6JXol2hraGtra8dka8oYRBy4zolPiwHkKU6f9njnbgIpjPYdWCArQDtAO0A7QDtAO0A7QDtAO
0A6O0g5aa1Dgsin1fJdpzDIgXV+QRkALJ1KvpllDKrjKC0xGlJsEXi4UfOqYDJLnZQS1XHYWgCt1
LDzqsdxni3O44lUjIuf0nBnkWbijtEdcZKTu5RFqBqneGRG+Ay8zMQPpKwh9UULMiEX5ePW+omYw
k3nsyrYfONOIRoXwp/LvH5LXP2zLs65+nuyTgivE97gJb/Kmeqa3U8u9ludNuGtAVTBvRkLZkBno
GWqE8ZfcLsghcogcIocnNJzgYPxO7J1ljvZNRt3c2dNdWyILs0IL5oUulXGHLyU1dFLh2S4dMyQI
CdoRQec5pHy/urvtd277g/4/952d5XyfwxqkeA/rPRJv5rCXRO9npU2ZU9ktSZTqn4yX7tY16geS
In/drj+Yngf7rHN/SqW9f2H3YmN20/nzBVSMCC/BssDK3VHkO3e+V9Ld2l+2iJFtb5MtQjDLgHR+
KmtEFlxXcf0UyZImhbuzrdoSzx7Uep7lm+ZhtaqZwxrrdCqfkn2Z1WIe5DqBBUPfpHIkS8+Emucb
UwHRNKEjT/pFJDzIB4RkIBlIBpKBZCAZSAaSgWQgGUgGkoFkIBlIBpKBZCAZSAaScYpk7HFTQErr
qCzZ0LZNkaa/yscz/UHtihBX/m8WEAHF7RqVRhHBw8X7aPM2K3jXHMH2z6Vpfg1TaQfVrYsIPFEv
UAqXspXojAxMuRBw3kmlYmfPOnNWFXxaB/6UmtJ64BxYsNWmQY3O8Kx1SfuDRtc//goP+a0tWQoL
st8wa+xNSlRwkRGVZceb4KYSSmzr3rXHksLFR8iblXYlt03Vb4N+p9cffO5cXne+Vt9rc1X+klDH
EeVKpUHgjpfN0sbGm6VJYUsJOy/4mfuoQECms/cSaHWP1QJel+9Ieuy2jCRqRKUdR3UDcAxtZPuW
saAeiKSjFh8fstRA/0PTqQ+JInrdP/udr19+0cTE9zywbMN+sl5JaLarzUjCE3WtH1pXelNb60kl
gXNcUTkmaTxgUiptxMfSgAzt3wm34LbeTXinuvHHSvlRCy8duLdcK9VK1Yb2019D3/L8n7WpbQyE
MKPrdw6zpPhypXRROn+AWKbcLNVLNVL11Q8apeqZBhUntZ4/saUWyD319EmykYRIlQgfagjK9ruy
M9Rsh7nK7cWiprYykHnWrtXb1bOdkTknv8hkBk19z0rEsnvUFQ+JUy2qRoe6Kgcc0BcUBQZnlVEv
H4GDQVAVfSkgAlWMJa7CQr4/G5Xvzxcj+Vn9/nxeCb4PWfhZCz+bc3+n4Wflzf4pboI+c7lpyn7Z
d/mCfliRU6vsl5z+525v8Kl70xlc33V6g9u7/qDzrdvrr1JoYdu8RoGdRfYBv5CuGVS+FiQ46U+e
JjBuuJSrkcnjUzmLqqIaj0GNtWKp8XCUl4vK1lEUKggVhApaU0FZdLHTtc0FvbSansrZqe8YsCZX
S69xXiAKRJEJBWJADCeEIc/do5iPETXNIdUfijrZSU/oERfiQu9D1IgaUSNqRI2oETWiRtSIGlEj
akSNqBE1okbUiPrEUVf3uwo6sl3GxxaJ2xntTc+tj673DsAL7HmxCH9b+Idn81PKLRJJJhMqJseA
f1Hz68eoPns0gh+F6eGWqq6OqiuK6t6Q9btDvcnHRd1fWtVkWSZmVDg2/7Sb38DmY/Ox+XsJ0cMY
2pJjk3CoDm/NWeoRcHQ+um+D8MZSQ14klph0xtxVZ4eLhz/QIhJyQIQU/swgYkAMiAExIIaTwPDI
XHgXnRnxC9MpHLXdBLIqaUf30+DL3XX3U7dzPeh1b686OcLyLXWFDuGdsPBqCtjFTnHd3t12Bl8u
+1efDx/Tsdgc4sgVRxNxHBeOfPvkeUzCm5lMTBjz6pVGCk7rzQlZmK+CWjozieG7wWzukZrcUIlJ
iPB1nTFjYQW3nNgR/nDKvWxsOLbw4sLKkA4pHTI0dtJw+YVvX2x7nYY3qsVmHDLeBCliDGkpw9gm
00XOmgtA1OvvuMIh7fuRirIz4SZ3ynxKx9JtYN1h7KrMUI41XsNTkjICuYLp0mW8Wclw6VMXxJaC
25Y5S7156BXedSHgP8KnUNhRvJiuPtNNtjvc+y3qvjvU+dm4SAIVUHwsytekxgaATLgV5AFdC7Ak
54EAaoMLiIwNopIDBk7/+gGx8KV0tHIZR28ue/1B52+oRti93tYkgvwJiqwEa0wQZqerojbepCop
KvFvJelgmZDGbVvW5t3DMjJieVGQYdFHPobkA7q74vBK9uKeB0vU7iiBpLg+ZJDcvkddzEVCcDoC
qG1ER5LcIJGj6hYh/2nKv1b2NcgSsvSOLOU2jC9uPEgeSMmD9V6kX80A5IjdnIXm+da28khdDgFE
W3uS0bJ8bPZADiIPVeZS2olppg3k7USN4QzgP2csI7oxcagL+Y9VOHP48GunDb+VP/xWu7FhluD/
AVBLAwQKAAAAAABNhglBAAAAAAAAAAAAAAAAIQAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Bs
YXRmb3JtL1VUCQADUuojUOnyI1B1eAsAAQToAwAABOgDAABQSwMECgAAAAAAm4YJQQAAAAAAAAAA
AAAAACoAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJvbWl1bS9VVAkAA+Xq
I1Dp8iNQdXgLAAEE6AMAAAToAwAAUEsDBAoAAAAAAJuGCUEAAAAAAAAAAAAAAAAyABwAdG1wL2xh
eW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9VVAkAA+XqI1Dp8iNQ
dXgLAAEE6AMAAAToAwAAUEsDBAoAAAAAAJuGCUEAAAAAAAAAAAAAAAA2ABwAdG1wL2xheW91dC10
ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUvVVQJAAPl6iNQ6fIjUHV4
CwABBOgDAAAE6AMAAFBLAwQKAAAAAACbhglBAAAAAAAAAAAAAAAAOwAcAHRtcC9sYXlvdXQtdGVz
dC1yZXN1bHRzL3BsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2Zhc3QvVVQJAAPl6iNQ6fIj
UHV4CwABBOgDAAAE6AMAAFBLAwQKAAAAAACbhglBAAAAAAAAAAAAAAAAQgAcAHRtcC9sYXlvdXQt
dGVzdC1yZXN1bHRzL3BsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2Zhc3QvY2FudmFzL1VU
CQAD5eojUOnyI1B1eAsAAQToAwAABOgDAABQSwMECgAAAAAAoIYJQQAAAAAAAAAAAAAAAEgAHAB0
bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL2dwdS9mYXN0
L2NhbnZhcy93ZWJnbC9VVAkAA+vqI1Dp8iNQdXgLAAEE6AMAAAToAwAAUEsDBBQAAgAIAJ2GCUEt
mmkr2AAAABwCAABoABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21pdW0v
dmlydHVhbC9ncHUvZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVyLXByZWNpc2lvbi1mb3JtYXQtZGlm
Zi50eHRVVAkAA+nqI1Dp6iNQdXgLAAEE6AMAAAToAwAAtY+xTsMwEIZ3P4V34x5CIKZKQShMVERK
XuBwLqklJ7F855K+PS1RyYKgC8tN3/f9OmutBhkiBDxOWawQi03EOQhDDCjdlAZw+zQNPg9w8Eky
Buhjhg5ZwOF4QIYPeu8D8B5bSjYmcp79NNqzjGJpjuSE2o3MopUx5v8n0Z2lZbAotH24vbnX5nQf
dVEoXT3VtV7c6qK+fJmbhGNPOz/q7fZn4m5FPGtJma7o4fxn74Rc0/t+9ZfgylyKZilm54i5yyEc
K0xM7TqpTFPWjX5+21WvZVMqoz4BUEsDBBQAAgAIAKCGCUH4UdzviQAAAJEAAABwABwAdG1wL2xh
eW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUvZmFzdC9jYW52
YXMvd2ViZ2wvdW5pZm9ybS1hcnJheS1sZW5ndGgtb3ZlcmZsb3ctc3RkZXJyLnR4dFVUCQAD6+oj
UOvqI1B1eAsAAQToAwAABOgDAAAdx7EKwjAUQNHdr3ijLqVpjNZsQao42EoQHERKmry2gTSVJA7+
vcXlcu5zW+4P/B9KizwvWMnIjlBeSdlIPjiMRasn0xrUs8GQab1mhNDNC26VPDXyKupjBQ8h60t9
5iBSCrb7JIQcbARjo+ocmgzu47KjihDt4HurlU/wxtDPYVJe42KvXPquflBLAwQUAAIACACdhglB
HxljefsBAAAODAAAbAAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3BsYXRmb3JtL2Nocm9taXVt
L3ZpcnR1YWwvZ3B1L2Zhc3QvY2FudmFzL3dlYmdsL3NoYWRlci1wcmVjaXNpb24tZm9ybWF0LWV4
cGVjdGVkLnR4dFVUCQAD6eojUOnqI1B1eAsAAQToAwAABOgDAAC9llFr4kAQx9/7KQafrlCkLUXk
wINwRg0kKprWe5M1jknu1l3Z3dT67W+S1vOExMv2MC8hkJn5//a/uzNZ4Grog07YGhXsFEapTqWA
jVRbZsCgNu2bm4kAnUURan0HB5nBPuUcNCIweqoUNcgNtKbOfN6CLUWxGClyIzmXe1zD6gCt0J2H
8H0STH03dFtUM6TSGkxCKoucYV4gTI8Eg3eAiDOtgYk1xGjKQ/ZS/aJ6RcH3epWhCk2mBNW7JClX
PzHKV52vB2Lerir3hb69uLPQ/bGcj5y+O7vLo/3JYjnwJ054C6nQhokIyZwLeim5oDL8pFzg9r3n
oEnFkTccNamXG+qNm7WzMb3CzCupDWbOMHDHYWOns0zw2uezTPO6J7TK1gZ38bqntNLST+jV6com
UXKfN3lApaSi6WISknllPF3Djim2RYNK1+zIR9IC++zC3RKCQMUMjSR821GTpxcafoXqV/DGL47v
9Zfu+Dlo/w1+YZnEmNH0YwppEAqdrjgeMXVZQlsxEWOQCvjWg4fzXbmUwN5qJ5xmOGV060t8MD1Z
Qz1ZUz3c22J1Hm2x6mWcY3Vssbq2VF07qF4PrK2yMfdjB+8boOpYU3X+g8rmZ9AkdHmpx9BLKmLA
V1QHiBjnNW8yCZdGPJ5CbJb+r3IUYutLRb1TzB/bfgNQSwMEFAACAAgAm4YJQTo9FBarAAAA1QIA
AG8AHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL2dw
dS9mYXN0L2NhbnZhcy93ZWJnbC9nbC12ZXJ0ZXgtYXR0cmliLXplcm8taXNzdWVzLXN0ZGVyci50
eHRVVAkAA+bqI1Dm6iNQdXgLAAEE6AMAAAToAwAAzdC7CsIwGAXg3af4R11KLr0k3YpUcbCVIDiI
lDRJ20Av0sTBt7e4+gB2OZyzfZx7yBKefoNSghBBLKE4wWkuRCnStjeOVGrQlTZq0mYOlNpGGNPd
Ay65OJTinBX7HG6ZKE7FMYXM+9nWL28AgXWgrZN1b3QA126ZnXTgbDs2VsnRw9PMzTQPclRm6aPs
/Xtz/wWxmDO6JhDnLAlXBOKYYLKmhzihUYz+BvoAUEsDBBQAAgAIAJyGCUEhF5O62gAAADQBAABj
ABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUv
ZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi1zdGRlcnIudHh0VVQJAAPn6iNQ5+oj
UHV4CwABBOgDAAAE6AMAAI2PPWvDMBiE9/yKG9sl+CvE0WYa1xgcu4jQDqEYRX7tCGw5SG9a+u/r
Brp16HLcHTc8d0rS7U7cJY6jIIjCNInjNBK5lI0Uw0g+avXUtR3puSO31vphE4bx4ztecvncyENW
P+V4y2Rd1oVAxuzM+caEAMajM16dR+rWOF6WeFEe3gy2N1pZxpVcP7tJWU2Lt2rkr9XpL6DdNvkH
UFHhPoIoqrasX7Oq3LfNgpkdy6aGwDDunfrMR5rIshdQzDRdGTxDaU3eY74x5h5O2YHwQY7NUsPY
n+nvr9U3UEsDBBQAAgAIAJ2GCUF1NjCLzQcAAN8bAABwABwAdG1wL2xheW91dC10ZXN0LXJlc3Vs
dHMvcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUvZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVy
LXByZWNpc2lvbi1mb3JtYXQtcHJldHR5LWRpZmYuaHRtbFVUCQAD6eojUOnqI1B1eAsAAQToAwAA
BOgDAADdWVtv4zYWfs+vEBLMBihGkh3b2dieeNHmgn3otAMk7wNKoixOKFFLUo493f3ve3iTJVmy
vdsWC2wHHUvkIXku3/nOoeZTJnO6uviUYZTAj5A7ilcXC0qKt4/eYkMEkTjxfrvw4D+Jt9JPcMw4
koQVC69gBV7qqYjxBHM/YlKyfOGNy62XwDNOlhf/ujDb2U1iRhlfeFejyVzPBc+E4keSpnY+QvHb
mrOqSHwnmt6pP82DzAmCUZJ4V0mSmLmUFdJPUU7obuHlrGCiRLFVMEd8TUDlMc69kRkqGRin7eCY
gkUbrBXKxh1NJ5NJz/4CFcIXmJO0MSnId6zPaB7qU5zKhTcKZm48IaKkCDaRKKLYjzGlZuKdJDKD
DUajD1ZHlCSkWNerjX42POqpHSGrMikyUEzW4hnbYN6xajabLYccjrFxRaDi8jOcJezilDIEpnCy
zmQ7ekrqAVyASFEfxcD9RIKZoxNmWyt9vW/LU+8ZWOfrOCq4vXNU7jV7wbGK3yBw9OI2bLqQsbh1
fgdQjcqtOeFpW0KIYX8wDX/0AvXTtXBQPUESHO3U355W9SfK4rcviMsATF2khAvpxxmhyaBj1XEv
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
Of1MnNOvWYH23g53D34CbYydZ5gWD9MNnB5bCw/rfPd5Qzd+q667Lt5CsDr/AUoRSNTAmHGKGcip
DFEvyBljHDdQxKgX/BwPUQMFFQQ3UMgINVBSydAA31BLAwQUAAIACACbhglBVaEnnYsAAAD9AAAA
YgAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3BsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1
L2Zhc3QvY2FudmFzL3dlYmdsL2Vycm9yLXJlcG9ydGluZy1zdGRlcnIudHh0VVQJAAPm6iNQ5uoj
UHV4CwABBOgDAAAE6AMAAIs2sTC3tAITxsZGBgZAZGhpaWBu5RoU5B9klZ6TWmwUn5ybEp+Smpyf
klqkl5ysYWpoaKwZq+DuowBWpGDl7hPv6Rfm6OPpEg8kQ10VrBTSc9xTSxyTSzLLUh1LSooyk6wU
MvNSUisU8ktLFPLTFIoS89JTuaIxbTcyNDIypqLtoXmZaflFuVitBwBQSwMEFAACAAgAnYYJQTlp
xroMAgAAPQwAAGoAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJvbWl1bS92
aXJ0dWFsL2dwdS9mYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItcHJlY2lzaW9uLWZvcm1hdC1hY3R1
YWwudHh0VVQJAAPp6iNQ6eojUHV4CwABBOgDAAAE6AMAAL2WUWviQBDH3/0Ug09XKNKWInLgQTij
BhIVk9Z7kzWOSe7Wjexuav32N4kVKyRetod5kYAz8//tf3dndoGrkQsqZmuUsJMYJipJBWxSuWUa
NCrdabWmAlQWhqjUPRzSDPYJ56AQgdGvTFBBuoH2zPL9NmwpikVIkZuU83SPa1gdoB3YfgA/p97M
tQO7TTUDKq1Ax6SyyBn8AmF2IhgeAULOlAIm1hChLg/Zp/IP1SsKHutVhkrUmRRU75pkuvqNYb7q
fD0Q8U5VuW/036s9D+xfS39sDez5fR7tThfLoTu1gjtIhNJMhEjmXNFLyAWZ4RflPHvgvHhNKo6d
0bhJvdxQZ9KsnY3pFWbeSG04t0aePQkaO51lgrc+n2Watz2hVbY2uIu3PaWVln5Br05X1rFM93mT
B5QylTRddEwyb4wna9gxybaoUaqaHflEWmBfXLg7QhAomaaRhO87avL0QcOvUP0OzuTVcp3B0p68
eJ3P4FeWSYwZTT8mkQahUMmK4wlTlSV0JBMReomAH314vNyVawnsvXbCeYZTRq++xAfTszHUszHV
44MpVvfJFKtexiVW1xSrZ0rVM4Pq98HYKhNzP3bwoQGqrjFV9z+oTB6DOqbLSz2GPhIRAb6hPEDI
OK95k0m4NOLpHGKy9H+VoxBTXyrqnWMuCx5f+puM88OMSUVN8mzr51d8q/UXUEsDBBQAAgAIAJyG
CUEvtA+YzgAAAKIBAABoABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21p
dW0vdmlydHVhbC9ncHUvZmFzdC9jYW52YXMvd2ViZ2wvcHJlbXVsdGlwbHlhbHBoYS10ZXN0LXN0
ZGVyci50eHRVVAkAA+jqI1Do6iNQdXgLAAEE6AMAAAToAwAAzc4xa8MwFATgPb/ije0SbNmxa21O
6hiD4xTRNkMI5uVJsQWKHCS10H9fk64dOnY57uCG75g+5QW/R5KwKGIsy1jEYl4JsRd8MMqznq6y
l4omqdyS6GEVx8njCV4qsd2LXdltKjiUomu6mkMZgtPnj6AgAu1Bao9no+QSXsd5jujB68FeNKEN
cFPuMrkrWlJzt2jC1+L4GyjJ0n8EytMiL4o/gOoW7ifgdds33XvZNs/9nG8VcBjMWlv5w2snwqAn
y6Gxn2i0BBrRIQXlFt9QSwMEFAACAAgAm4YJQduIhdYDAQAAswkAAG4AHAB0bXAvbGF5b3V0LXRl
c3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL2dwdS9mYXN0L2NhbnZhcy93ZWJn
bC9kcmF3LWVsZW1lbnRzLW91dC1vZi1ib3VuZHMtc3RkZXJyLnR4dFVUCQAD5eojUOXqI1B1eAsA
AQToAwAABOgDAADN1Ttrw0AMAOC9v0Jjs5R7+h5bICYYTFJM6RKKsc9nY/CjnM/t36+b0i1jQ7Vo
EBo+JCRdhFbGXgPnjBBqFJNUMJsWxbmw3eAXVrqxKRvv5saHJ+ceJaV89wbHHK5FYI95mZ1e93l2
KM/PabF/yc4nsNANh1B9poMf/RQXC6GaOg/zGmFuoZ7XqVmgnQPUa9v68HC5RVESCyVhXGChaKqQ
ULRWGgnFUEWxUIRIcFC4pFpjoUiNZJl5kkh+D0oVox/fI8QZKuf8svyyfowfPsR+S0M/fZeGvl6j
B3KLKLQhEke3hJEMebckYcRgJ6r7HIU/JFJmCHLiNmckR0Ruz4//A+ULUEsDBBQAAgAIAKCGCUGa
S55NOwEAAHMMAABnABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21pdW0v
dmlydHVhbC9ncHUvZmFzdC9jYW52YXMvd2ViZ2wvdHlwZS1jb252ZXJzaW9uLXRlc3Qtc3RkZXJy
LnR4dFVUCQAD6+ojUOvqI1B1eAsAAQToAwAABOgDAADNlU9Lw0AQxe9+ijnqpezO7L/kFjSGQm0l
WD0UCWmyTRfSRJKt6Le31quHHsTsZZiFhffb2feYjTA6is+FCBlDqZBJTXGa56s8blo7YlEd6qK2
VV/bYVZV15JzunmFxzS/X+UPyfI2hZckX86XWQyJ94PbHr0FBm6E2o3ltrX1DJ72p+O+HGF0Tbdz
Vdl5eLPDrh8OZVfZU9+Vrf+82vwGFKmwgDiLAgNCvAQoW8D5EsTZopgvn5PF/K441XUKMTRtZn1S
efdufxhjcF1tP6A/euh3MJRdY39XV0z/ofq6c9+PvljecKOD+g0jRRQWkDIyLCDDzHR+jTjhdH4V
SCYoewjUCsMCisgEBUSchTUhQi7CAiJUkyVakFYTbiCJggeVaImadFhAEQtrQsQQwwLiJCYLkCQh
1D8F6AtQSwMEFAACAAgAnYYJQWWTmR9bAgAA3QwAAGoAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0
cy9wbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL2dwdS9mYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXIt
cHJlY2lzaW9uLWZvcm1hdC13ZGlmZi5odG1sVVQJAAPp6iNQ6eojUHV4CwABBOgDAAAE6AMAAL1X
72viQBD97l8xeHBcocS2FJE2CnJGKxgVTdv7Jmsy+XFdE9nd1Eq5//0mCZL2Tj2Tw3wJITvz3tu3
uzNZ3UfmdHSpthw7moMc3mHJ7BdPRHHo3MEXl7F7+AUac5w/h5ibDOmNLFlvZFBrgZ1nXA5GIH3m
oAD6YAcyiEJwI7FiChRKpdVqkxBkbNso5SVsoxg2AecgEYHRUwQoIXKhPu3O53VYURTzkCLdiPNo
gw4st1C3jLkF3yfmdGRYRp0wLYKWoHxiSTXMUwnTnYJ+JsDmTEpgoQMeqv0hm0i8EF4KmOEdDBWo
YhES3jHKaPkT7WTWyXzA49ohuG809mTMLOPHYv7Q7RmzyyR6NHle9EeTrnUBQSgVC20kc47wBeSC
iLEknWn0ho9mlYwPw8FDlXyJocNxtXZWxpeaeSa2/qw7MI2xVdnu3Ed47v25j/O8O/SQrRWu4nl3
6UFLS/CdUpWVL6JNUuQBhYgEdRflE80r44EDaybYChUKeWJF3ilNZX86cBckIUTBFLUkfFtTkacX
an4p6x0Mx0/d0bC3MMaPpvZR+JFpksaYuh8TSI0wlMGS406m3JegCRZ6aAYhfPXUfRuuPy/MsRz2
ViQn7+RZUut0olzcbRl1t2XkXV+V0Ne8KaHvtKS/9DVL6GuVkNcqpq7dhjLOFbE7X9mrarQ1y2hr
/oe2In+OyqeTTgWJXoLQA3xFsQWbcX7isSfivRE3eUiR2f8LjkKK+nIAL4/ZAepyTSU7/UFv05Wj
kxFk1wQ35nw7ZUJShc1t/ngFoLsIpXdqNb2RXEN+A1BLAwQUAAIACACchglBCLWwLaoAAACMAgAA
cgAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3BsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1
L2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24tY29waWVzLWluZGljZXMtc3RkZXJy
LnR4dFVUCQAD5+ojUOfqI1B1eAsAAQToAwAABOgDAADNkL0KgzAURvc+xR3bpcTEv2YTFBFESyhd
pEgab0VQU5LYvn5b5z6Ayzd8nOFwGj+OTnwdxigh1AtjEkQhz4SoBe9HtLRVU9d2qHSH5qjUPvA8
drhBXsIKAc/LtqiuSVmkbX3ORHIp6go49GNq5DsbccLZWQ7SOZyeDpwGqRRaC3pxoB9g5NwjvNC4
4XvDMP9QM9wXh0B2zR9Fz/fZxhUpCbdekZHTlip+AFBLAwQUAAIACACchglBsSONxJ4AAABGAQAA
fQAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3BsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1
L2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24tdmVyaWZpZXMtdG9vLW1hbnktaW5k
aWNlcy1zdGRlcnIudHh0VVQJAAPn6iNQ5+ojUHV4CwABBOgDAAAE6AMAAM2OsQ6CMBRFd7/ijboY
KCDajQRCSAiYxrgQ09TyJCRATfvQ3xeZ/QCXO5x7htOEx/jE1wkC5nnMj6Mw8n2eCVEL3g3omNRj
K1vUpkW713q73MHuBnkJqwQ8L2VRXZOySGV9zkRyKeoKOHRDatU7G3DEiRwHRYTjk4AMKK3ROTAz
gXmAVVOH8EJL/YKhn76q7e8zIXib5kdixA7/lPgBUEsDBBQAAgAIAJuGCUGHR3YDlwAAAPoBAABi
ABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUv
ZmFzdC9jYW52YXMvd2ViZ2wvZ2V0LWFjdGl2ZS10ZXN0LXN0ZGVyci50eHRVVAkAA+bqI1Dm6iNQ
dXgLAAEE6AMAAAToAwAAxc1BC4IwGIDhe7/iO9Yl3OZMdxskIkiBYBeJkdunDNTBWtHPLzx36BB1
eU8vPG2c7jKxhDEaRTQiGeE8EXldH2sxjHilSk9GGdTOoN9qveaEsM0ZigqWCURRqfJwklW5V682
OQgYxgKD1MHesZlt7/wkwM4GH+BuAVwP/jIPuGrf8DRO2B/5lBP6RV6G4G33sZ6R5Ef6E1BLAwQU
AAIACACbhglByjGvSJYAAAAiAQAAbwAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3BsYXRmb3Jt
L2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2Zhc3QvY2FudmFzL3dlYmdsL2dsLWJpbmQtYXR0cmliLWxv
Y2F0aW9uLXRlc3Qtc3RkZXJyLnR4dFVUCQAD5uojUObqI1B1eAsAAQToAwAABOgDAADFjr0OgjAY
AHef4ht1IaX82o0YNA6CaUwciCGl/YAmUExbB99e4uoDuFzutmviPNuzL6KIEkIJjZM0S1nJec3Z
MKGjrZxVq1AuCm0g5TYJw2j3gGvJjzW/FNWhhHvBq3N1YlB4b3X38ggEtAOlnegmVAHcxjVH4cDp
wfRaCuPhibZf7CyMxNWNmPx70/wOJSQL878NfQBQSwMEFAACAAgAnIYJQUdXzJ5ZAAAAXwAAAGgA
HAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL2dwdS9m
YXN0L2NhbnZhcy93ZWJnbC9udWxsLW9iamVjdC1iZWhhdmlvdXItc3RkZXJyLnR4dFVUCQAD6Ooj
UOjqI1B1eAsAAQToAwAABOgDAACLNrEwt7QCE8bGRgYGRkaGBkbGppZWrkFB/kFW6TmpxUbxybkp
8SmpyfkpqUV6yckapoaGxpqxCu4+CmBFClbuPvGefmGOPp4u8f4BrkGOIZ7+fgpWQMgFAFBLAwQK
AAAAAABNhglBAAAAAAAAAAAAAAAALwAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3BsYXRmb3Jt
L2Nocm9taXVtL2h0dHAvVVQJAANS6iNQ6fIjUHV4CwABBOgDAAAE6AMAAFBLAwQKAAAAAABNhglB
AAAAAAAAAAAAAAAANQAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3BsYXRmb3JtL2Nocm9taXVt
L2h0dHAvdGVzdHMvVVQJAANS6iNQ6fIjUHV4CwABBOgDAAAE6AMAAFBLAwQKAAAAAABNhglBAAAA
AAAAAAAAAAAAPgAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3BsYXRmb3JtL2Nocm9taXVtL2h0
dHAvdGVzdHMvc2VjdXJpdHkvVVQJAANS6iNQ6fIjUHV4CwABBOgDAAAE6AMAAFBLAwQKAAAAAABN
hglBAAAAAAAAAAAAAAAASwAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3BsYXRmb3JtL2Nocm9t
aXVtL2h0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L1VUCQADUuojUOnyI1B1eAsAAQTo
AwAABOgDAABQSwMEFAACAAgATYYJQT+vnwZsAAAAcAAAAHsAHAB0bXAvbGF5b3V0LXRlc3QtcmVz
dWx0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9p
bnNlY3VyZS1pZnJhbWUtaW4tbWFpbi1mcmFtZS1hbGxvd2VkLXN0ZGVyci50eHRVVAkAA1LqI1BS
6iNQdXgLAAEE6AMAAAToAwAAizYyszSxMjI3NLQyNja0tDA3Mjc2NzC1tHINCvIPskpOLSqJL0st
ykyrjC8oyk+Ozysu1ktO1jA3MdGMVXB2DQqJD/D2jAgDq3AGKlZIyy9SMDQy1zMAQkOFtMTMnNQU
hdSiIltdC0MLQy4AUEsDBBQAAgAIAFeLCUHvo7G13QYAAAojAAAmABwAdG1wL2xheW91dC10ZXN0
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
Lh2PMAkTHjdwElaPGTiSt08JJj7TIk3c3Pglb7VhVcTum7wlACvgUgaS6CvvnUp3YeeVpsqh9aQN
2QpcSG9lKWpJ5mBVZ7L73QPSTzzQDzdkYWd871Y7Z/Ks+xMFjmV1kxc2u6noK/3cAdNFzN9RV+Qu
5esxXiHLRdTWw8OczvLZ/1we//un46vrmw/H1z9eHP3d/Of15cHhcXvgJYAHz83I/HTyS2/xVk+C
ec4vvpGFN15S4h+uzhpsvh93Gib+H1BLAwQKAAAAAACphQlBAAAAAAAAAAAAAAAAHQAcAHRtcC9s
YXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvVVQJAAMe6SNQ6fIjUHV4CwABBOgDAAAE6AMAAFBLAwQK
AAAAAAAWhglBAAAAAAAAAAAAAAAAIwAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVz
dHMvVVQJAAPs6SNQ6fIjUHV4CwABBOgDAAAE6AMAAFBLAwQKAAAAAACqhQlBAAAAAAAAAAAAAAAA
KQAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvY2FjaGUvVVQJAAMf6SNQ6fIj
UHV4CwABBOgDAAAE6AMAAFBLAwQUAAIACADtiglB/sGlHUABAABaAgAARQAcAHRtcC9sYXlvdXQt
dGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC1yZWRpcmVjdC1nZXQtYWN0dWFsLnR4
dFVUCQADDfIjUA3yI1B1eAsAAQToAwAABOgDAACN0V1LwzAUBuD7/YrDvJjC6LKPfjAQYTpQUQY6
FK8kTU7XuJiMJF1bh//dzFmHwmBXIYfnPTlJJK3RAHVwSrrkDKz4QEgIqSJCWgAPqDiaJ4HlASKP
iE+kZkvYXM/v7z4P0l+seQ2byezqZWeTbvJj42RUhcno2zZ6jpWDzYnzy//WcRxV/bjhAFsDplB7
Vgru8q0bQ/vGdSystLUilQiZ9ncCWzCG1maFBINrKgWnTmgFTgOjhUXANSpnt/tMGARbK5YbrXRh
ZR3As6/kupBcdRwwQ20OIgOtEHQGLtf7BtbplW+TY/vQtP0wbOYdRsTPKzXlATwiQu7cyo57vbRY
2KDEdClcoM2i588uX30xYAtxIfh5PIijQQDtY9+PVOQPnb6nyDnyWfqGzIdmk9vp5XyX8jN1B01w
6P+0H5LWF1BLAwQKAAIAAADtiglBnOmndQYAAAAGAAAARwAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1
bHRzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC1yZWRpcmVjdC1nZXQtZXhwZWN0ZWQudHh0VVQJAAMN
8iNQDfIjUHV4CwABBOgDAAAE6AMAAFBBU1MKClBLAwQUAAIACADtiglBVzVCW5kBAAAXAwAAQwAc
AHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC1yZWRpcmVjdC1n
ZXQtZGlmZi50eHRVVAkAAw3yI1AN8iNQdXgLAAEE6AMAAAToAwAApZJRb9MwEMff8ylO5WGgxInT
rU00CVEKkwAxFdEKxBNy7Etj5sVVfF5Tqn13HEo3gVRpEk+2z7/7+3/nY4xBRrebzIid9cQIHbEO
nTfksoZokw0Rl0khG8w29vet0h1KYmskhv0mbFGl1BNEcRz/l5qQ5IU5aM1mwPJkDHGe5Bxms4h9
er1cRiyKgzh2IAie84S/AKd/IpSc91POoxjgM7YKuy8at6eYJwnMjZU3sH+3uv54f5p9oK3awX6+
ePvtAJdJ+Qcuyot+Ul4c4CO+wlDi/hmF5V/xopj2efHAAwwQdL595LZaUTOAlzB6T2cOQiedrgxC
bUNd4LyU6FztDXR4J4xWgrRtgSxI4R0C3mFLbjjXofngdq1sOtta78wuha8h0lhvVHtGIDvhGtA1
2BbB1kCNfRRwZDdBpsHRSbv5ZHI0fD7lwbCxQqWwRIRhINxlllV+7dItVjeaUtuts/D49nsIpnKt
X2n1shgX03EKoye3kPf8b/bqtkKlUC2qH2HUYL+Yf7h6szqkBVfJ+Jh5Hn42n/DoF1BLAwQUAAIA
CADtiglBucePJtsfAACoKwAARQAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMv
Y2FjaGUvcG9zdC1yZWRpcmVjdC1nZXQtYWN0dWFsLnBuZ1VUCQADDfIjUB/pI1B1eAsAAQToAwAA
BOgDAADtemlUk1e7dqy1tqLQVsUKIm0FURCwMgkIsUXlDQgUGYIgREXEMMqUgCFgVUoLKhoFZAg4
MAgxRIYQwhQnQEBBEyJDGGQIyJAwB0hIcu6073nX+db6fpzfZzULFivJfp699z1cw37481dH200b
1DYgEIhNqH8dOYFArP0egfjM48vP4JOtW7bqwJ+9kUc9In0v+PkGRkQFI0yMzpz13W9uZGR80MjP
9yejs+dMDhif9/M1NTI39vU7YBTxgzoTgfgegTrys2t0tqCPcMuVTzabWau78er3P+4xO/qr82E+
6fTes6YlS/YnqhvZ95tLsvq41FdTlwwdGvQNU1vShJ4Pv/7W952WXsAvX6MPex9pMOlXPV77w/3v
v584civ56saNL2PkB6d5oaFL4zk7R5uOzq+sRo1mc9pjcgbmszkYQmapTWbBVwhEmIVwQhmBiH3/
pQcC8fzzfYjLpz9TRRzev0YJ8f29y+sQXx9/9hniy92n1yA+3/wUgbjy1X+GbV3rniinjnx6euYl
7mKTrsXgtc0krQyTwA+DiZo+cRVs2am3b992+hCCaT51lxYnosbI+GOicDMXYl6wbo9ob/0R06uC
cZsQpalfGpSmbtkod3P7UCRyWTHvnEQcMZiw7bzTx/J2a0sUKWy4cWtO840bN1Ck6zvMD0hmXygZ
9mLrivMT3L36saE/0q+Xzvyrmx66gepDxHtxMRstnxZj1+nr68+PtTuRRlLRPlgsdq+5Jz/B0pYV
Jw2X7D/97HKPBPdyk9mbbPMIqXhRxXr54w+JO77ted5nv3i7sugCr5BrvzDO8U831K3khUTruV06
MqXLw6cHd5fxG9VDd1jiptL0vdjGwQEB1atzrTU4gbhZJ/ecjrGJCTl66M/OUxEOLi4c3EKx1K3Y
uMR9+hPZ1DJYbbjEu/k/aywp1mAbU79lWUQuy3Vce/q1TUP7T6HR6P5EO0nEph0HZ8j4/u5AWh3u
8Hq8Ide2p+BhcK674fuJr0rtQ9INP3o/FDkz6NY1g9SKze5RWRWFSLRPDH+JJZdeVbE+iCI5Wa+M
VHAcCfxUdJkNNvOmmskEcyxn8gOV5yh0W1QNYD3CL7xdNr/k8jhy8Zc/cQw370ei47M3vXZaPiim
x62ffGs28CRyjwPnhrrZF4s6hfRekSVemC2Zg8XVyWUSS/GxJH1HAXpv97/ziV38luv0uGy10iYo
0KTHXO9B0pwzeoKN69CZcN/whO3owaXq7nQkiOffhsbNQwjfVBJEUys1A1Ih7LM5LlYiYNjeUOMW
RG7lUib0O7rmlKu3MwjXLQcdHlDRhgbvcW86xz41u8RVSFsfpRX2Kse6u8ovUy6+ePfApny+3XK6
dmjzbsdsDzQa/3zdtrtmJnD3My9/1/d4evrVH98sLi6qHJo5PPs+UTOuyinXGiYbGGm+Q6lwL/Mf
fZNh8/vGvQuCDP+c7aZBHik7rYTVkyVz1qE9FeNeA2L3dAPvm9biTw3J29JVqHlf8r0zoca/sd3x
E5adJ10akLdiZOEopaV+wvT9n6+KeiPaZVLJAHGpj8/VG4+dpScxvDw9S5ijmURRdyHMjZSOO1Gm
3mg4U45SjMe1edpkQ01CM9e/PYdMv0W8S3x/dJsfMm51tomZujf3ubFD/FLNgEbYq28I03VLHUUu
SsQ98TGzc3rYB+wndfNtlk07CUGMkL64uTu5dzdSY38aK2k8y+Q497fb8fVzH00klztwDUJ1GZ9p
PyoJH6ukWzfYU/ZbUkty53BJNXepiVqo+nnydB720nh++nmkY5apPj48QmcPiqRtn3Z9u1GBFyME
KeluDyekWlbr2j9eHenRqWupspYucOaubLGcePwIqjY7WD5qxmJOlbWWCTCrQ9sa+gJdbuu5FVF3
6fv8wsdHLkpK2Zb2mWaFfE665HER8XrGi4f68f9SpRDJFRZKbi1ecYukb7nWGGZ+Fzn3EN82MEbV
DaVGR/LDKZ6th9zRgc/s5vuvcowF/XWSMr/WAqdcn7hIuXTJiXRubqR5spOGqY4crwob3hkzcnvq
nb1hXeRcsw6AjqIle/1ziTlx4nE7aurUOI8ROms1/2ytSlBvVdjsUEOTBr7XRsXKld1OodWLZZLp
0IAARXKxhWR3YiTTe6KvBk/SMjr/5rV+28/rNSpiV+ZGR0dj5kejBD107tA+r8onFxuOJqturQyt
W/ygKf1km2UanHnArwUKofjvFOvtxOZb33XCrHS10uoBBQHRCJwCB2ymqZlZioalKUHlNfX4ysa2
DKMxPcxKCzvfvrPEm8BxMNsqQsfEoJSY5Wnk/WdeXINVAVaVo2k+fBfOREf6a/LNuTh33dCV6xXV
BwNpuJWMVN1fD03o4oW4jsJYXMBJpHZSTQebPbc6366iab06nIJ05ETyKoPX74z+eGWdku4mffyV
MiOYzBI6xZooHhEVO9jvWfo7vy0U56Fc2Xju+beZqcFO9/afWZ4ZpKBpjpwFTdmgZhKmv+BHdPEJ
L1tP6c2Qxbg33r9h+7PTnDDC8oeNP6neraWO4AocJvO4Jx9HOrlVX2pWD7sxn+qV1Lfa7MJ/S2Hv
p2jd6MkNZ7oF092pAaHP1CwiP0E3ZmVltar45bZujctGxsvOJGqkBWvGr862pum3VhYezwgfuW3r
HkA9117gkBU+WX9x8MX7R7bpU+31xIwiGo1mXd1rYGJi4uY5m1FQUEAQMv07HjubqOowctauVz5V
gwtuDozAj958zH3oVh0yi4uRtzblEBan4+WS+OWXmmxjopA5VlIjrB5KT3fdzduT8xwiJgOYaKvs
pHqhY5l2hoahD8RPgvuq6VwvCjtgX5qlBldystbbehfVoK2H4h13Pn/DliVqC7lGY3FvLlmt06l0
zsAb3xclF9PkmQXjHCekVUhvla5NK/n+kBEQyD0exVT/gV3+4zC2UmJLE7cYCksqGJAFZxbYp+3L
sIia0Gf0hk9SGQXYS1OlTZVYb7dxtwd2wRrYRctqLvSUUWWsY4Tma/7S6Ru++x4vVJ548nfQ82sb
wlt9WmOJwpxD3IHa8MST2tgO2d1WagCFHuBGWPthjt9qWDvz4vnV9Uj56jwXU+/XmtZGtvTnkS2i
eqrCfCv7uro8ujD9nis5vea8Mj97kTZ9SJpwPnC7d74BRBibaQC4+ubeT2Z9kRxeKMvbNyx8kglI
dJdlivcX/tHjWmHHY0oNuzMIi9t8on+Q+DUtzw6PtefmCt5AtR8DRC2LV3crY4lbkxmBGXT3RPei
2wrUIiBb/fO4DScJ9Ij2oKi0QFZEYJGTfnIx94d0PHacnQ9A3V0ZzIsZI6OXR1iirMdpPnTsV/Tx
EV3GGWFVcSAWu906NjoiYv6GWf/yeGFuySlm+LPLawI/PFlJZi0nD3EqH70WaGIpf2OSUSXX3EGv
9yodiaDg6R5ZG9gT+yoWBQXc9dGC0KKalTuF4l7uCcZQnrPEJUQyWuom2OSRwYwYU95xcP8SP0ES
3EzS3nXs+utKIC6T4J6KoJoHDwZfbXZ60u85C4EjLHLRSgOP90xpmgS4Dl7DyMWdXFt0kb3bMavo
mY9TyM4PT066+IaRtGBLXmcsJffp0N2At/oxbsI23V3FpRdSxb/aPyuOXBx8mWh4quoiNGGCFbDC
QNXyUDImejAhiADaJaHNNT5GzCqs4p4MjLrARfvuxlvoLpbX1mYMbcdGhX3wEfQaBV5/7ybsHRJ5
UZ300wOjXjO9LQDBp2um6+Ok4q26GQRq71fFpWi64QNdnc4D4w3BaSkUt3RvXPebDCPDugX2VJNR
+6F5GlQyrXqimDS4pTJwX7jEtmdCo464hgJRpFhf89LwDSlPteB8iDrRdXJcGMLhOVCc74sYHYq2
j6toZIz35jlLPemu9NjLwSd+Uq2oqDgn/zZatrrSPfC8J6LdauxtFnpO6YoWamfc8iCw7TRjII65
tmooSc80qOtpALfYxcmK/q5hLDc+7t39nw3rl8/a2NiE/WgQCpiQtFWPpHWy9OzRzALvGhz5gJ+d
r+/wUENyivnovSmlDd1fTbPkcZkFnZh4KTBzZ1fXwaiJDthTeV6oHrrkOGmEi8ZQ2flT2Xbxpwts
U3ZyCp0w9AAu8MP7Ut+mdmvJk9hl7Zfj3eVjU93lAJpZ0m+YQPOFWIu41WXziFHYTO3iB68EFpFU
Y4Q/QlWlnsvjE/cYeKKISU0+RTnI5ecqyuYjt9RDqh7Y+W1IB3xJAU1xbbPjsnQ6fqCrK5rrhtZG
sRmhA3YJ+vtYQ6rh/vqSgtfFbhS2sfTjVRXYHTPcr7lji+GoHaXUQxg5IjLCJ7WOPRYPBbnQW9uf
uP425IxmRfBcc4fWud8j93Q6/RySfv7NPWdQRNLFTn+ku5rnyuf6mPrai6O2msS75JP9/4YfP7a9
sIwUxh1iySZZyqCEi1wK/5YCNUdmzYP1w0NSe4zZQ2H8/vfU/hTm9D5mhKc1kfkX6uw5WZFg61dq
Sr3j7v+ghecg5CppB0z+hTx/87idmok1X9eNzvWkF599ZidjGDtA5oYgCXhhL1O7ULo6hpwGXn/1
5+YI9Qxj7AkiUXp5zVo7GbkPPiIsfHoPIRlafyQmUJuQJCk//fwK5AM30YEFVZdiJfJAMTjGfeBA
zMeyObBuoITOOdqXrTV3Naxmnq2NsDcG7hSLxb43zc/3VUe9/H1TzWhmYIuh84FsS2HVo8DOEoyY
nZ627+SBc69vZRj5F2B73r272LK3sIPLvbHTSpzOWvXDnRe29X7D9akIUqS0yCa/FF085hVal6qF
EqmL7VJRLef860U9gYkaOA+5TJoL+h9EhXFWU+8L1TTMDSDwW5YVFUH/Vma3ee29ew3+W5khy0+s
S7L1lrYFuxBbdBj30xZdeh1j0jOzsiYnJwdA8pECU4PSnX4VZvDrWjS8U7XveiV57q7LI5PC8rEW
uKmuucwtgSEhO/efPuzr6ysaBlOifPDj5SHVv4GumdIy/Uk3/fVIfXle6lhFtDh8+nlPk8djFHOO
za139CQnTFBTMVZL4+jWWO1cho7TynvPnKOoBEWjUt3paTFPQppkCQxkO3LsyyMxwJAhNYJKqJ5I
NF6ra1vUqafzgkqU73pZe466mhpJq9n64toLFJBI8fKleNZcix4+yvYK0blpneWAMNsYd1qot2r4
EN9+4auptmM3dzBBXfwlal2c+rjEPxeOamyb+rYmgt3lgPRYi1he7fmN9ePniOV5rf+P9/xfWtR/
hv01TMCkWCJmVu4UjJcIPwsGx5To3bdONrX8udL94DxKu4ZLY5vO6TUVvzEm2vdubnL868J5jX2X
EeC5QQUtZ4XWM7GcgpC+ao2oDudCMs5zrI3M62kz6Tx1R6s5mNHnPiwzJbvY7xKMjwhx3l0Jn++7
LOqpjZnPQ93x9PQ0AAbJsSLUg1EGLb3MyZUt4OOX8Jbl6gQBHV05K6yZBrN6R76cIq8yoilvgTX3
TAJ7y5aHU5pSNAfANWmhGsGIgnwiD9wA3DUzM9NBHYiZGyHHL5Kf+aNjb37pgRAsjmaF7kaFv/4h
8a5mD8gEIC/5WLxMx4Hzk29jdtSHkxqWuOOypdAaXeloIEABS8ylfaB64Ru3+2+Zbm+TS1hyicIg
5ufza8FZzb3edUdrRYhneR3MDHZFaaVaiGabNOUiBsubGc6H+19aEkrpNGLw61s/uFm49JcmG1Rf
EC+M1xGWZFmslay6pX7Lpey538xMTWUTaJYYduN0cPDayfLzfNW8VTr/6OW+a4bMtRWdYDlIWntV
NqNIb8iW+P7aGP/ssEbYv3Vofy3IjQ/9U74AdeAvyeEte1vTDQ2RCq+SoomsLy0Na7y+vUGixMwT
j1nBAjXls5oKV0Nl9F9a4afHL7y3VbFa+FWfvLcycpxd3mYRuDLHV+DmjV1vexS2CabJ2Vp+LDUJ
UZN9ed07HzfZ58/0aLXQy+9tNa3CR15roXzAG/ZkeddGh4l6XBzN81c/lTbttLz48ZkWCoj53Qdl
9HgXUj6PXJrqjgAzrWK9fJqklRsnxsKsOPF4oSbUDIq0z7PisUh2TsdffvC+CE0v//LpsCJn3Ee2
KXl7kre09i/XwArz7dN7I4qvlTtkmQIbwuZLvGvSNKk02gCE4C+lxMMtME80jb7Nwnd6402MjWOH
1Qf2CH0W27ZMwtXe3t4wN1F0MpVj90UO+RQanS75+bS2YN9nUwfrr8L+XiaqxIu6/dP1vdKIaq5P
QG4BBwQHBLTMvbKWTN0RTHeVDsMkih+Q43ZvP3R2Qv5UfdQpJ5pyYueawS8vUkOD8f5q6upL4PWn
tPm2eptq38mgkJKXttWfGFUXxtb/VY3p8SvptDpRDxiJfhqGtdPqUi3oNvlKrrwb3uqVVJ0FhxIx
1iYd1pTfI74KB41/3rAbP0DsfHKy/GxDUoLSNvcA0cxLlVywQ4FwJ6g+RhHSuzqyuwLrAi8R6kSJ
ncZkRxEHwoFc/ng1VQ8dgvHPuTRRBD0CDRL56d3co9QvrEE+pWPiVhZB/gDeJi0xTNArXiendq8m
fX2/bmJykrVUN60RO/N8s47j6qBK/DIg8iY1409XlAz+RRqBNxrQeaB7FMy22enQLAUjDRCRaERB
oAK+gesiu84kugWInpS3qR28+BFWr+Ag08UxiI8AVgdkj+Zn22lIxJ0sHwwmfoC4BIkLwvhDs8x/
epSiDHPBtbpIT+xHRek/X6+5CjJ643f77//+wwthyVW51ebDgkNGlC9XFvY4cCAUlSUlwjSvkK8m
OuVcQLOuLx5syD295ulkX/TwDRCqbyAeihMYLdQXm9QqKITPBUOWHggAvqsqMvwfSgZVp0VT3QBs
0U03NRI3bg8HYmusnB7Wwx1w2nDZdH5kNfZ2SdfKX7gKRfMPv/x12PtBkVfk6gyu0sd319u3b9E+
MX7tOVaKCjcbiC23SVS2FCcJFgDMVUtIwdPZk5Vu+T5vs80jAB6ZhuaD1zbjLqQn2aODxrZc3Obo
8uAplL7V0B+7wOcaB3Q8XqekeneHvrt9qMLYKPvBbEAtIGcMWKtz0Do7oDydrBZdKWP+/fFyKdgF
Bn66nzBValupw9BAeN52Vxzq6toGdgBbuKtjL1y4ZxrcozjMoWGQRPGCjbJ5nlWnoJOGkdT0FaPu
7CZOEwb0+vvNO4MpdnUbMnoFLqeqz1oWXq55aUyOZKM0YT6YvcAp1/rsqz90/T+ES06Blwfb/EtE
RIRo+OHR5N+VNTKD5TOJyOxDMXNAT+AtFkF/yqGDHseB2aCgabDwhWTD+q7eXiDDUV0B4lfvhiY8
tK5kICkAO/LORqUP7PZgExpDpFt1UiMbhsgCzU7Qsoq2UA1NvKt3Kt+Hy+ZpGGcPsel0ewHD8jgH
YCA3OAiowT7dwK3tST4D1vrzbAq4JQm90ycrWM5jSb3OyGHGxpsaXtJVYwf5BE02wWBJg5u1w3lr
7lcHpEzfYjx0V18ZNWOtAMAw5L+4lSw3qoduwamGohmAfY2NjXNSSHLdpUXxAsfJvtKmxW38IY96
gla8VCnSpaPCmOyy58LsT+Wta92fK+RevHQSQ4tz9CJIuLS4KCAxvsQstL8XgjAx1p5lRvtaplvU
oYzQDpCSJKFx81n1RIlogjtZiJRiz4wZxs0mP7+6fhrWv/aLjfcOhp09I18Y5yQqa/RQvRjrNWOf
ctMKj2fMzbUa5hKEzOnaecfmBwUFBaHxEt7i4iKYcI+yc6hUsnZ/zBgZtH4BYUkI6OxE0lK4RZKW
hkXkcqNZvXOtFEhYcRwGdk/DPPwcOLlCR7LnhTPsPBTcZ2ClDb8B86VerP1ofrqPGrAbkK53GVmr
WfEgInZ5BjBlCQq8TXRuIGzvgE/VxUGgQh7QlJJh7cXJD9RUA8/vHEU9FFq9Ba8farQmahInly5h
cN1+3Yr12qXunXZ7DuTiaDGe90vTBox4b8mJmJjWbS8BXmG34ju5qyOX1yp/Z3T+eP4a1XQ9/FPt
zekEphrFuV+guw7LMU7dMtMTSBNAnQ3UE+NF5blul9yEjCJhvUSoUGmrF1YELjJq0ZWhLzohchcH
X4BdSluaf6mCPAQBscelZSPDhl49SrG+BNaqrwbPElTywu3TecoI8+JrtBfv04HtR+44KZ7Y3HGy
ZoLzPSRd4HTLripbXADpACUxP/p2soceWBnRlm2OWWlBpxl4V+MEPVkh1UVi7Q3WqzMvvUKYfJBi
PmDHz4xBpIkQAjMTk7eZJpMVHEdKWXkeb/Pu4x41OAHsWrIw7nIgbUggXRpAokjNd3SAG+NACAw3
3iCM3LYts4FFYiqDuqEcWiVyQ/mcIUibwBUcSUvl0MwzaLtthj6xvWFNVgvvbLCZBl6VT969gObc
wFPYFFy4+8Mp9FE3A4VgWhLwGA8e/CAphQk0iQvO0KHu1IlO2oBObuyJogPMOt0tZxqStqafCm8W
MAZy6L3gPF/k6zmcEp799N8HwXuy0yyfDYWnqpjih8IN0fYmuli58dYasP7xC480g3sqsC139179
YlPxQvHQi/NqamolVUNJQTXLn0R91hngT30i3x9lJiqytTQQzxKvSMWLWQCAim0YnDoIPA1jPnQp
I/gBGzyaNONXy/xaywR7XQp2xIzcTojIzMwEqspxfnRsa+6qiBfqz4OaC+RYvqqOmmwD1MDI5tK7
U7rxpUZQzG64URwBvgfRu6/7ZG1d2HDjkHR+rB059fRlmQBY0zHnEHPG++NZhV60N6xzrffu7XiR
oGSbstObz4YbZJkG23EWoPLVrWOjKdscOAskewPmUj+BY0zkp6ItIj/tBwVu7BDKkoomS2pK7PyK
FwKgkXbZ3oyF7zfoBPVUFHEvp9Z818LSv/ufsOlS69wpzihJYVHXs9/WQgd6lZWvujUkvO0FXIeM
tFQmp1SOiZifHibvBBCeU3x2CbbtaRUPwnVPUDvY9JHXt00q1x5mZn7mDv27YcAmNChoqpcZUVl3
+vkVEPu9kRzFsnCDI1CcQd1l+bW31UCOE9bvuHi40rvq19JeMrPPoL+t72RZnV9r2i/DoKpZMy+U
1qvsXF2db99mVg9eByqSlZ+ff66mtqi6ulo3XQJWgNCqzwjqrZp9kLhT8XBgMfn8TuLCe6P2Q0YO
HAUYoU+FNewtzCYVjDvbakBVhLoVHU/1cbi3fxCgixYZl/8npeI7uzZDzdMoZsv6LK/HdumBdLXU
ivjMpK2JJF1fQ1o7NAyZR+nlFaY53WeE9F16tmY9yNSSPKMss1AfEOExOq3t093lY79vUi8TgE5O
3VdoJ0DcohRcNgEaBZvmx9u0aZNOTvTZyr/OGVmV5axHdwS1//PMEEXaIqvD51NAoFklaILejABN
vK3Eq0s+iZFXt7T1hhTS1z15IekmadvbybpXIbTrlXd41PpDgSsQdQWHKqfViyfSWav8FzLgi62V
5QGrsynxOyxxQd7efYOJmjJQcK6sC+c5BQ6Kp21wo983bi8DFgTgb4MUvrn3U8LmcD2XfDQ2sz9O
IjDrvWgz6+a5ySNV1aZ5hb923170yumIscdsvif1mLYz5+44l9IJItseN1pfnGdtuyPsSAit55Jk
yxsgl1+zr6Slpdmx9usj5VPl7QYGUWE/USrWHi5JWhMILY0inRtgRMtWxtZvUlsYSjY0NTa+romM
Uxw9mgND37MmiovdKMKq4Zs3NSzjIBTYzDhwTjrZF18oHhAAGVJKqnVRJFi6++TPpA4uty+q0zsX
7MAElxI/c1VzddwpvkXZGwTAUh8e4+s73FHkUp6ipyvY51EfGwO+xRBjLf70SAvlXnIqo2A8hyA0
B283te14Aw9F4nPPzCIQSgaK/wWA8tmqbhrkQQ/gFhXmeGbb/4+z0AYBBpxYwkGPWnIBVsFcxzPY
XV1V0bNDitMtEEzdMnDZbfAr6KHj+2P8SVpSyZITZ+GPXTf3yA3s85NVs+NlK4+O3RBDprILxrUB
6t79vN4h+2DpRWMGAGBL8QJkrgArBkeyDAje5ti220qidiosNYlv8Du4i90odkeH60Fq7GVtvu72
IEU1ixTpEeQWnB1uSsk18ne0t2/1Cq2LAhPuqkYIO9O6VTN4UuBy8a1J5xa5VYKxQ1ZWVjkGA+0V
Bc4VkDd8cR78WjewP2u2UR3MmAYyLnZw8hKXt+Z7dMNltznLP/7crHNe7lq87KR7/N7+B/X1snu+
N09Cazw981LxXDVIrnhKDhZkcXpA/qdOzkFgAk1QhsYOetKVbC2Uqr5n5MtNZsB3w6CqfEAoDL6D
5lEApiPZ4sZOq+qZyT//BoR6aBLI4AAwelqQjnw6t3zTd/s/AuMbhIyNIeUxS8I+peluoCZ7TuTM
x+eAGu2iLaGF2Or/51yy+5YRvjfMFlLEWsg39NNkvMk2B3wAH1j/rg527tf8aPWh9lHCx9/WT0xM
uNN8yAXju1IOsQH7Qa+6GqJDaEl6d6SEujuOFkUg8lJ13dk35hpu1U08W6uyL9vF+hkpPHVjJfsV
36ckLcCVLcPqlhyzsXkJwHMCjTYDZn+BX9+KcTvwcEGuXzg3/i+9Xmuq4iEb8GLSkuIgBHWbFFqY
mptbMD7SfGeJB1AJWLfs87jjJvKPdb8eTayYMDtUP2MR2bVua7R0sRNN8yEO/akD2Wez50AmXtew
NJU0Sre93OZ7mWeWZNjYteZCIXJS3h1hY2OjqPY8XAFgYkQzSbu7SR/qOXo0w78NfBm5N1FjIvmn
ZwL1hm2+U4gKTm7UsxYZJrQb80NPhrB2vk1BddEffyNb4ncC287xW5XiH80ln0lXeZqGbO0uhusM
NC0RNVeRS5hvPkNck5TLPldCnLb9+p9jv3+G/TPsn2H/DPtn2D/D/u8Pk2oWpfWuOXD4VRQCXqij
jkdKfjl95b8AUEsDBBQAAgAIAO2KCUGNpXyKjwEAAOgCAABFABwAdG1wL2xheW91dC10ZXN0LXJl
c3VsdHMvaHR0cC90ZXN0cy9jYWNoZS9wb3N0LXJlZGlyZWN0LWdldC13ZGlmZi5odG1sVVQJAAMN
8iNQH+kjUHV4CwABBOgDAAAE6AMAAI2SX0/bMBTF3/kUV+WBIVWJW2gTdaET3ZDYtKkTrUB7mhz7
pjH17MjXockqvvuclYJAqsST7Xt/5/j4T1Yil9OMfKtxGknUsIWci/XK2drICRwXnH+ER4i4lG9b
vOhaWbwTZ/HOqnJhThU3IDQnugie05+Xi0XgQvFVK3hONW/RAffwgfXZKZD6i5Ay1owZOwK4QSPR
3SrcHEDeI59pK9awvV7++P54EH2GrWxhO5t/+bVj0376xCbpeTNKz/+ze3qJjYftsQ/DW+skGTeD
ZI8DdAy42rxgGyV92XET6H31JwSVJVK5RihsOBNQLQQSFbUGhw9cK8m9sga8BcFrQsAHNJ66daEc
ArVGlM4aW5NuI7gLldLWWpoTD8JxKkEVYA2CLcCX9sWAvK2CTYm9Q2kHo9E+79mYhbzachnBAhFK
7yuaxHFeryjaYL5WPrJuFYe9N79DMRIr9UnJi2SYjIcR9N57f6xhr9CrPzlKiXKe36MIovns29Xn
5U4VMvWHe+FZeNPBiD39t6Ms7n7kP1BLAwQKAAIAAADtiglBnOmndQYAAAAGAAAAUwAcAHRtcC9s
YXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC13aXRoLWNhY2hlZC1zdWJy
ZXNvdXJjZXMtZXhwZWN0ZWQudHh0VVQJAAMN8iNQDfIjUHV4CwABBOgDAAAE6AMAAFBBU1MKClBL
AwQUAAIACADtiglB1fYdYpAIAAAbHwAAVwAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAv
dGVzdHMvY2FjaGUvcG9zdC13aXRoLWNhY2hlZC1zdWJyZXNvdXJjZXMtcHJldHR5LWRpZmYuaHRt
bFVUCQADDfIjUB/pI1B1eAsAAQToAwAABOgDAADVWWtv20YW/e5fMbCRui1MirIkW4/EReMHukW7
KdbBLvaTMSSH4sQkR50Z2lKy/e9750WRFCm52ADuNmhEzuPOue8zzNtU5tnV0duU4Bh+hNxk5Opo
ntHi8QzNn6igksToyxGC/yRZSy8mEeNYUlbMUcEKstBTIeMx4V7IpGT5HA1XaxTDM4kXR38cGXFW
SMQyxufoJBjN9Jx/RzNyQ5PEzoc4elxyVhax55YmU/WnfpA5QbCMxugkjmMzl7BCegnOabaZo5wV
TKxwZAHmmC8pQB6SHAVmaMVAOa0HJxlo9EQ0oHTYQjoajTrkC1wITxBOk9qkoJ+JPqN+qJeRRM5R
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
XQTOnEChYh/dE4IcOQrLpfDNlcZnfDkA0zw/wKAfLekPNH53eX55ce6jV7fA7H9OiWD9mjVpGLxM
gVtYHsck/hB+ArKGvnx4//Pt9UejCzjy7NypM4IyO5wEB2lGjTwrUqKn62u3P5qnAnHU/yb+X1BL
AwQUAAIACADtiglBjaV8io8BAADoAgAAUQAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAv
dGVzdHMvY2FjaGUvcG9zdC13aXRoLWNhY2hlZC1zdWJyZXNvdXJjZXMtd2RpZmYuaHRtbFVUCQAD
DfIjUB/pI1B1eAsAAQToAwAABOgDAACNkl9P2zAUxd/5FFflgSFViVtoE3WhE92Q2LSpE61Ae5oc
+6Yx9ezI16HJKr77nJWCQKrEk+17f+f4+E9WIpfTjHyrcRpJ1LCFnIv1ytnayAkcF5x/hEeIuJRv
W7zoWlm8E2fxzqpyYU4VNyA0J7oIntOfl4tF4ELxVSt4TjVv0QH38IH12SmQ+ouQMtaMGTsCuEEj
0d0q3BxA3iOfaSvWsL1e/vj+eBB9hq1sYTubf/m1Y9N++sQm6XkzSs//s3t6iY2H7bEPw1vrJBk3
g2SPA3QMuNq8YBslfdlxE+h99ScElSVSuUYobDgTUC0EEhW1BocPXCvJvbIGvAXBa0LABzSeunWh
HAK1RpTOGluTbiO4C5XS1lqaEw/CcSpBFWANgi3Al/bFgLytgk2JvUNpB6PRPu/ZmIW82nIZwQIR
Su8rmsRxXq8o2mC+Vj6ybhWHvTe/QzESK/VJyYtkmIyHEfTee3+sYa/Qqz85Solynt+jCKL57NvV
5+VOFTL1h3vhWXjTwYg9/bejLO5+5D9QSwMEFAACAAgA7YoJQbnHjybbHwAAqCsAAFEAHAB0bXAv
bGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL2NhY2hlL3Bvc3Qtd2l0aC1jYWNoZWQtc3Vi
cmVzb3VyY2VzLWFjdHVhbC5wbmdVVAkAAw3yI1Af6SNQdXgLAAEE6AMAAAToAwAA7XppVJNXu3as
tbai0FbFCiJtBVEQsDIJCLFF5Q0IFBmCIERFxDDKlIAhYFVKCyoaBWQIODAIMUSGEMIUJ0BAQRMi
QxhkCMiQMAdISHLutO951/nW+n6c32c1CxYryX6evfc9XMN++PNXR9tNG9Q2IBCITah/HTmBQKz9
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
LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL2NhY2hlL3Bvc3Qtd2l0aC1jYWNoZWQtc3VicmVzb3Vy
Y2VzLWFjdHVhbC50eHRVVAkAAw3yI1AN8iNQdXgLAAEE6AMAAAToAwAAjdFdS8MwFAbg+/2Kw7yY
wuiyj34wEGE6UFEGOhSvJE1O17iYjCRdW4f/3cxZh8JgVyGH5z05SSSt0QB1cEq65Ays+EBICKki
QloAD6g4mieB5QEij4hPpGZL2FzP7+8+D9JfrHkNm8ns6mVnk27yY+NkVIXJ6Ns2eo6Vg82J88v/
1nEcVf244QBbA6ZQe1YK7vKtG0P7xnUsrLS1IpUImfZ3AlswhtZmhQSDayoFp05oBU4Do4VFwDUq
Z7f7TBgEWyuWG610YWUdwLOv5LqQXHUcMENtDiIDrRB0Bi7X+wbW6ZVvk2P70LT9MGzmHUbEzys1
5QE8IkLu3MqOe720WNigxHQpXKDNoufPLl99MWALcSH4eTyIo0EA7WPfj1TkD52+p8g58ln6hsyH
ZpPb6eV8l/IzdQdNcOj/tB+S1hdQSwMECgAAAAAA+4UJQQAAAAAAAAAAAAAAACgAHAB0bXAvbGF5
b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL21pc2MvVVQJAAO66SNQ6fIjUHV4CwABBOgDAAAE
6AMAAFBLAwQUAAIACAD7hQlBFTU1knoAAAC8AAAAQgAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRz
L2h0dHAvdGVzdHMvbWlzYy94c2x0LWJhZC1pbXBvcnQtc3RkZXJyLnR4dFVUCQADuukjULrpI1B1
eAsAAQToAwAABOgDAACNjkEOwyAMBO95hT9AIO2hFb8hxFUsGYyMkfr8EuUD1V5WO4fZLKURJyOp
gKqiET7ECKdZi95vj9caZrb4DiH4Qj17xS5DM3b/7WxuT4ej0kTNDaV1bsBUEZ6AjAWrwU2XSeJd
IcKoaZ8aE2BJx3+6Kn3k87qXLDEvP1BLAwQUAAIACADvhQlB5ULiFWsAAABvAAAARwAcAHRtcC9s
YXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvbWlzYy9kbnMtcHJlZmV0Y2gtY29udHJvbC1z
dGRlcnIudHh0VVQJAAOi6SNQoukjUHV4CwABBOgDAAAE6AMAAIu2sDSzMjS0MLMyNja0NLM0M7C0
NLMwtnINCvIPskpOLSqJL0stykyrjC8oyk+Ozysu1ktO1jA3MdGMVXB2DQqJD/D2jAgDq3AGKlZI
yy9SMDQy1zMAQkOFtMTMnNQUhdSiIltdC0MLQy4AUEsDBAoAAAAAABuGCUEAAAAAAAAAAAAAAAAs
ABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9VVAkAA/XpI1Dp
8iNQdXgLAAEE6AMAAAToAwAAUEsDBBQAAgAIABaGCUFWcFJpYgAAAI4AAABVABwAdG1wL2xheW91
dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXhtbC1leHRlcm5h
bC1lbnRpdHktc3RkZXJyLnR4dFVUCQAD7OkjUOzpI1B1eAsAAQToAwAABOgDAACNzDEKwzAMBdDd
p/hbloLoajr2Bt0LwvkOAdsyigLp7Utv0AO8V/fGLCKMIldvUjS02ZbvGVP9oIPu5sh4Wjk7R2A/
wD7jk9I71b/5K9QDoRt4TZbgesPyWDAsUO0c66/7AlBLAwQUAAIACAAWhglBYEtmEJEAAAD7AQAA
XQAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklF
RC14c2wtZG9jdW1lbnQtc2VjdXJpdHlPcmlnaW4tc3RkZXJyLnR4dFVUCQAD7OkjUOzpI1B1eAsA
AQToAwAABOgDAADtjjEOgzAMRXdO4QuEBJZWmWHo0p4BBVMimSSynQpuXzr0Bh2rv76v90LeSqRJ
Y06AzJk9LJEQVtXire36S+vOdf7qnLOCoXLUw+4iZhjvt3Ewu5CZc6gbJjVf4MHxGVO7bwQUE0IP
SPghQPQglBVRm/PpX8hyuj3kRAd0rYMFJ62MAhMjSC0ls+LchH/oj0PfUEsDBAoAAAAAABuGCUEA
AAAAAAAAAAAAAABCABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvVVQJAAP16SNQ6fIjUHV4CwABBOgDAAAE6AMAAFBLAwQU
AAIACAAbhglBY6qsbIIAAACoAAAAagAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC11bmFmZmVjdGVkLWJ5LXN0eWxl
LXNyYy0yLXN0ZGVyci50eHRVVAkAA/XpI1D16SNQdXgLAAEE6AMAAAToAwAALY1BCsMwDATveYVe
EDu9pPgVhb4guBtiUCwjKaX+fU0pe1qG2c1ytsKbF6kEVdFEe2HQ4d5SCMttnePIku4xxmDIlxbv
IUt1VH/++0O45B4UJpdmWDDvjPljTFwqaCUwziHQD9gB+DRoekNtXCeSyp2WOdKOza8xRJuC7GpN
1PGavlBLAwQUAAIACAAbhglBY6qsbIIAAACoAAAAWAAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC1hbGxvd2VkLXN0
ZGVyci50eHRVVAkAA/XpI1D16SNQdXgLAAEE6AMAAAToAwAALY1BCsMwDATveYVeEDu9pPgVhb4g
uBtiUCwjKaX+fU0pe1qG2c1ytsKbF6kEVdFEe2HQ4d5SCMttnePIku4xxmDIlxbvIUt1VH/++0O4
5B4UJpdmWDDvjPljTFwqaCUwziHQD9gB+DRoekNtXCeSyp2WOdKOza8xRJuC7GpN1PGavlBLAwQK
AAAAAADohglBAAAAAAAAAAAAAAAAIAAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3JldHJpZXMv
VVQJAAN06yNQ6fIjUHV4CwABBOgDAAAE6AMAAFBLAwQUAAIACADwhglBZ4DbYusAAAAFAgAALgAc
AHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3JldHJpZXMvdGVzdHNfcnVuMC50eHRVVAkAA4TrI1B0
6yNQdXgLAAEE6AMAAAToAwAAlZFBUgQhDEX33iVyDndeIQ0ZQIFgEnp0Ti90b3phTZUr+JX380lI
Zt0Zqan7riVNJfQ1pnYPEoZCLVoCIe3clF6T1fJyw1n22HZUd6ctFqcJAwlMr8+aucGNpaJdcNqp
zYyQtaP5BJVUMRKoSW4RAhpe6GVXJ9giOS159a48lOBs85wMVMgI7ikXgiAY40qwNOr23MjNp6XP
lCsrON87R/aJAhwKPI9mJBfq42gXuAKK4A9Ev6abc16YwmtRx/HW3oXj3/XR1uXYInRWA9x4GGwF
2+dJ94K2ys4n4ZpHdXsWG1hc7MP984d+AVBLAQIeAwoAAAAAAGKLCUEAAAAAAAAAAAAAAAAYABgA
AAAAAAAAEADtQQAAAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9VVAUAA+jyI1B1eAsAAQToAwAA
BOgDAABQSwECHgMUAAIACADjiglBCiO9/zY2AADDkQIANAAYAAAAAAABAAAApIFSAAAAdG1wL2xh
eW91dC10ZXN0LXJlc3VsdHMvd2Via2l0X3VuaXRfdGVzdHNfb3V0cHV0LnhtbFVUBQAD+fEjUHV4
CwABBOgDAAAE6AMAAFBLAQIeAwoAAAAAAM2FCUEAAAAAAAAAAAAAAAAdABgAAAAAAAAAEADtQfY2
AAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9jc3MzL1VUBQADYekjUHV4CwABBOgDAAAE6AMAAFBL
AQIeAwoAAAAAAM2FCUEAAAAAAAAAAAAAAAAlABgAAAAAAAAAEADtQU03AAB0bXAvbGF5b3V0LXRl
c3QtcmVzdWx0cy9jc3MzL2ZpbHRlcnMvVVQFAANh6SNQdXgLAAEE6AMAAAToAwAAUEsBAh4DCgAA
AAAAzYUJQQAAAAAAAAAAAAAAACwAGAAAAAAAAAAQAO1BrDcAAHRtcC9sYXlvdXQtdGVzdC1yZXN1
bHRzL2NzczMvZmlsdGVycy9jdXN0b20vVVQFAANh6SNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAAC
AAgAEIsJQW2BQNOIAAAAkQAAAGIAGAAAAAAAAQAAAKSBEjgAAHRtcC9sYXlvdXQtdGVzdC1yZXN1
bHRzL2NzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1jc3Mta2V5d29yZC1hcy1wYXJh
bWV0ZXItbmFtZS1zdGRlcnIudHh0VVQFAANQ8iNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgA
WIsJQcGm/mVYWQAATcgCACYAGAAAAAAAAQAAAKSBNjkAAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRz
L3Rlc3RzX3J1bjEudHh0VVQFAAPX8iNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAWIsJQZDo
7NluRgAACQcCACYAGAAAAAAAAQAAAKSB7pIAAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3Rz
X3J1bjIudHh0VVQFAAPX8iNQdXgLAAEE6AMAAAToAwAAUEsBAh4DCgAAAAAAWoYJQQAAAAAAAAAA
AAAAAB0AGAAAAAAAAAAQAO1BvNkAAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvVVQFAANs
6iNQdXgLAAEE6AMAAAToAwAAUEsBAh4DCgAAAAAAJ4YJQQAAAAAAAAAAAAAAACMAGAAAAAAAAAAQ
AO1BE9oAAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvZm9ybXMvVVQFAAMJ6iNQdXgLAAEE
6AMAAAToAwAAUEsBAh4DCgAAAAAAJ4YJQQAAAAAAAAAAAAAAACkAGAAAAAAAAAAQAO1BcNoAAHRt
cC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvZm9ybXMvcmFuZ2UvVVQFAAMJ6iNQdXgLAAEE6AMA
AAToAwAAUEsBAh4DFAACAAgAJ4YJQYh2ieN0AAAA4QAAAEcAGAAAAAAAAQAAAKSB09oAAHRtcC9s
YXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLW9uY2hhbmdlLWV2ZW50
LWRpZmYudHh0VVQFAAMJ6iNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAJ4YJQW44QF/KAAAA
SAEAAFYAGAAAAAAAAQAAAKSByNsAAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvZm9ybXMv
cmFuZ2Uvc2xpZGVyLWRlbGV0ZS13aGlsZS1kcmFnZ2luZy10aHVtYi13ZGlmZi5odG1sVVQFAAMJ
6iNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAJ4YJQaFSinN3AAAA2gAAAEkAGAAAAAAAAQAA
AKSBIt0AAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLW1v
dXNlLWV2ZW50cy1leHBlY3RlZC50eHRVVAUAAwnqI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIA
CAAnhglBNlUZ5V0AAACUAAAASQAYAAAAAAABAAAApIEc3gAAdG1wL2xheW91dC10ZXN0LXJlc3Vs
dHMvZmFzdC9mb3Jtcy9yYW5nZS9zbGlkZXItb25jaGFuZ2UtZXZlbnQtYWN0dWFsLnR4dFVUBQAD
CeojUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIACeGCUHjpUUcowAAAAcBAABJABgAAAAAAAEA
AACkgfzeAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2Zvcm1zL3JhbmdlL3NsaWRlci1v
bmNoYW5nZS1ldmVudC13ZGlmZi5odG1sVVQFAAMJ6iNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAAC
AAgAJ4YJQfgNjaFwAAAAqAAAAEcAGAAAAAAAAQAAAKSBIuAAAHRtcC9sYXlvdXQtdGVzdC1yZXN1
bHRzL2Zhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLW1vdXNlLWV2ZW50cy1hY3R1YWwudHh0VVQFAAMJ
6iNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAJ4YJQbTbQH92AAAAtAAAAFYAGAAAAAAAAQAA
AKSBE+EAAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLWRl
bGV0ZS13aGlsZS1kcmFnZ2luZy10aHVtYi1hY3R1YWwudHh0VVQFAAMJ6iNQdXgLAAEE6AMAAATo
AwAAUEsBAh4DFAACAAgAJ4YJQWgJvRl3AAAAuAAAAFgAGAAAAAAAAQAAAKSBGeIAAHRtcC9sYXlv
dXQtdGVzdC1yZXN1bHRzL2Zhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLWRlbGV0ZS13aGlsZS1kcmFn
Z2luZy10aHVtYi1leHBlY3RlZC50eHRVVAUAAwnqI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIA
CAAnhglBVVBp7mwHAABZGgAATwAYAAAAAAABAAAApIEi4wAAdG1wL2xheW91dC10ZXN0LXJlc3Vs
dHMvZmFzdC9mb3Jtcy9yYW5nZS9zbGlkZXItb25jaGFuZ2UtZXZlbnQtcHJldHR5LWRpZmYuaHRt
bFVUBQADCeojUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIACeGCUGAxae5ugcAAFYbAABcABgA
AAAAAAEAAACkgRfrAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2Zvcm1zL3JhbmdlL3Ns
aWRlci1kZWxldGUtd2hpbGUtZHJhZ2dpbmctdGh1bWItcHJldHR5LWRpZmYuaHRtbFVUBQADCeoj
UHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIACeGCUEi5OuI0QAAAN0BAABHABgAAAAAAAEAAACk
gWfzAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2Zvcm1zL3JhbmdlL3NsaWRlci1tb3Vz
ZS1ldmVudHMtd2RpZmYuaHRtbFVUBQADCeojUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIACeG
CUF8gDltjgAAABIBAABUABgAAAAAAAEAAACkgbn0AAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9m
YXN0L2Zvcm1zL3JhbmdlL3NsaWRlci1kZWxldGUtd2hpbGUtZHJhZ2dpbmctdGh1bWItZGlmZi50
eHRVVAUAAwnqI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACAAnhglBSzGi0dAAAACxAQAARQAY
AAAAAAABAAAApIHV9QAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9mb3Jtcy9yYW5nZS9z
bGlkZXItbW91c2UtZXZlbnRzLWRpZmYudHh0VVQFAAMJ6iNQdXgLAAEE6AMAAAToAwAAUEsBAh4D
FAACAAgAJ4YJQUhfPwNkCAAAsSYAAE0AGAAAAAAAAQAAAKSBJPcAAHRtcC9sYXlvdXQtdGVzdC1y
ZXN1bHRzL2Zhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLW1vdXNlLWV2ZW50cy1wcmV0dHktZGlmZi5o
dG1sVVQFAAMJ6iNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAJ4YJQQ0k4BtcAAAAgQAAAEsA
GAAAAAAAAQAAAKSBDwABAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvZm9ybXMvcmFuZ2Uv
c2xpZGVyLW9uY2hhbmdlLWV2ZW50LWV4cGVjdGVkLnR4dFVUBQADCeojUHV4CwABBOgDAAAE6AMA
AFBLAQIeAwoAAAAAADmGCUEAAAAAAAAAAAAAAAAkABgAAAAAAAAAEADtQfAAAQB0bXAvbGF5b3V0
LXRlc3QtcmVzdWx0cy9mYXN0L2xvYWRlci9VVAUAAy7qI1B1eAsAAQToAwAABOgDAABQSwECHgMU
AAIACAA5hglBQTp/05oHAAD4FwAAQwAYAAAAAAABAAAApIFOAQEAdG1wL2xheW91dC10ZXN0LXJl
c3VsdHMvZmFzdC9sb2FkZXIvbG9hZEluUHJvZ3Jlc3MtcHJldHR5LWRpZmYuaHRtbFVUBQADLuoj
UHV4CwABBOgDAAAE6AMAAFBLAQIeAwoAAgAAADmGCUHW0dp5LgAAAC4AAAA/ABgAAAAAAAEAAACk
gWUJAQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2xvYWRlci9sb2FkSW5Qcm9ncmVzcy1l
eHBlY3RlZC50eHRVVAUAAy7qI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACAA5hglBbKMq8r4A
AADwAAAAPQAYAAAAAAABAAAApIEMCgEAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9sb2Fk
ZXIvbG9hZEluUHJvZ3Jlc3Mtd2RpZmYuaHRtbFVUBQADLuojUHV4CwABBOgDAAAE6AMAAFBLAQIe
AxQAAgAIADmGCUEpJndpdAAAAH0AAAA9ABgAAAAAAAEAAACkgUELAQB0bXAvbGF5b3V0LXRlc3Qt
cmVzdWx0cy9mYXN0L2xvYWRlci9sb2FkSW5Qcm9ncmVzcy1hY3R1YWwudHh0VVQFAAMu6iNQdXgL
AAEE6AMAAAToAwAAUEsBAh4DFAACAAgAOYYJQTRdBubFAAAAGgEAADsAGAAAAAAAAQAAAKSBLAwB
AHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvbG9hZGVyL2xvYWRJblByb2dyZXNzLWRpZmYu
dHh0VVQFAAMu6iNQdXgLAAEE6AMAAAToAwAAUEsBAh4DCgAAAAAAW4YJQQAAAAAAAAAAAAAAACEA
GAAAAAAAAAAQAO1BZg0BAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QveHNsL1VUBQADbeoj
UHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAFuGCUGBSnetSwAAAKwAAABMABgAAAAAAAEAAACk
gcENAQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L3hzbC94c2x0LXRyYW5zZm9ybS10by1m
cmFnbWVudC1jcmFzaC1zdGRlcnIudHh0VVQFAANt6iNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAAC
AAgAWoYJQVBdSDeMAAAA+AAAADgAGAAAAAAAAQAAAKSBkg4BAHRtcC9sYXlvdXQtdGVzdC1yZXN1
bHRzL2Zhc3QveHNsL3hzbHQtZG9jLWVuYy1zdGRlcnIudHh0VVQFAANs6iNQdXgLAAEE6AMAAATo
AwAAUEsBAh4DFAACAAgAWoYJQVBdSDeMAAAA+AAAAD8AGAAAAAAAAQAAAKSBkA8BAHRtcC9sYXlv
dXQtdGVzdC1yZXN1bHRzL2Zhc3QveHNsL3hzbHQtYmFkLWltcG9ydC11cmktc3RkZXJyLnR4dFVU
BQADbOojUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAFqGCUFtR9RehQAAAPEAAAA9ABgAAAAA
AAEAAACkgZUQAQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L3hzbC90cmFuc2Zvcm0teGhy
LWRvYy1zdGRlcnIudHh0VVQFAANs6iNQdXgLAAEE6AMAAAToAwAAUEsBAh4DCgAAAAAABYYJQQAA
AAAAAAAAAAAAACQAGAAAAAAAAAAQAO1BkREBAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3Qv
Y2FudmFzL1VUBQADyukjUHV4CwABBOgDAAAE6AMAAFBLAQIeAwoAAAAAAAmGCUEAAAAAAAAAAAAA
AAAqABgAAAAAAAAAEADtQe8RAQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2NhbnZhcy93
ZWJnbC9VVAUAA9LpI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACABKiwlBXa+rf8YAAADgAQAA
SgAYAAAAAAABAAAApIFTEgEAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvc2hhZGVyLXByZWNpc2lvbi1mb3JtYXQtZGlmZi50eHRVVAUAA7zyI1B1eAsAAQToAwAABOgD
AABQSwECHgMUAAIACABKiwlBHxljefsBAAAODAAATgAYAAAAAAABAAAApIGdEwEAdG1wL2xheW91
dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVyLXByZWNpc2lvbi1mb3JtYXQt
ZXhwZWN0ZWQudHh0VVQFAAO88iNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgASYsJQcFUBZSp
AAAA1QIAAFEAGAAAAAAAAQAAAKSBIBYBAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvY2Fu
dmFzL3dlYmdsL2dsLXZlcnRleC1hdHRyaWItemVyby1pc3N1ZXMtc3RkZXJyLnR4dFVUBQADufIj
UHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAEmLCUFYCAFX2wAAADQBAABFABgAAAAAAAEAAACk
gVQXAQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmRleC12YWxp
ZGF0aW9uLXN0ZGVyci50eHRVVAUAA7ryI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACABKiwlB
GUuLE7UHAADBGwAAUgAYAAAAAAABAAAApIGuGAEAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFz
dC9jYW52YXMvd2ViZ2wvc2hhZGVyLXByZWNpc2lvbi1mb3JtYXQtcHJldHR5LWRpZmYuaHRtbFVU
BQADvPIjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAEiLCUGKBac8xQAAAEoGAABOABgAAAAA
AAEAAACkge8gAQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3
LWFycmF5cy1vdXQtb2YtYm91bmRzLXN0ZGVyci50eHRVVAUAA7jyI1B1eAsAAQToAwAABOgDAABQ
SwECHgMUAAIACABIiwlB2zE4HYsAAAD9AAAARAAYAAAAAAABAAAApIE8IgEAdG1wL2xheW91dC10
ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wvZXJyb3ItcmVwb3J0aW5nLXN0ZGVyci50eHRV
VAUAA7jyI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACABKiwlBOWnGugwCAAA9DAAATAAYAAAA
AAABAAAApIFFIwEAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2hh
ZGVyLXByZWNpc2lvbi1mb3JtYXQtYWN0dWFsLnR4dFVUBQADvPIjUHV4CwABBOgDAAAE6AMAAFBL
AQIeAxQAAgAIAE2LCUF5nA1JiQAAAJEAAABKABgAAAAAAAEAAACkgdclAQB0bXAvbGF5b3V0LXRl
c3QtcmVzdWx0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC1jb21wb3NpdGUtbW9kZXMtc3RkZXJy
LnR4dFVUBQADwfIjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAEiLCUHWEm4BAAEAALMJAABQ
ABgAAAAAAAEAAACkgeQmAQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2NhbnZhcy93ZWJn
bC9kcmF3LWVsZW1lbnRzLW91dC1vZi1ib3VuZHMtc3RkZXJyLnR4dFVUBQADuPIjUHV4CwABBOgD
AAAE6AMAAFBLAQIeAxQAAgAIAEuLCUGwSSrEQAEAAHMMAABJABgAAAAAAAEAAACkgW4oAQB0bXAv
bGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2NhbnZhcy93ZWJnbC90eXBlLWNvbnZlcnNpb24tdGVz
dC1zdGRlcnIudHh0VVQFAAO+8iNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgASosJQWWTmR9b
AgAA3QwAAEwAGAAAAAAAAQAAAKSBMSoBAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvY2Fu
dmFzL3dlYmdsL3NoYWRlci1wcmVjaXNpb24tZm9ybWF0LXdkaWZmLmh0bWxVVAUAA7zyI1B1eAsA
AQToAwAABOgDAABQSwECHgMUAAIACABJiwlBQfG3f6kAAACMAgAAVAAYAAAAAAABAAAApIESLQEA
dG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlv
bi1jb3BpZXMtaW5kaWNlcy1zdGRlcnIudHh0VVQFAAO68iNQdXgLAAEE6AMAAAToAwAAUEsBAh4D
FAACAAgASYsJQaqwyy+eAAAARgEAAF8AGAAAAAAAAQAAAKSBSS4BAHRtcC9sYXlvdXQtdGVzdC1y
ZXN1bHRzL2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24tdmVyaWZpZXMtdG9vLW1h
bnktaW5kaWNlcy1zdGRlcnIudHh0VVQFAAO68iNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgA
SYsJQfshyJ2WAAAA+gEAAEQAGAAAAAAAAQAAAKSBgC8BAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRz
L2Zhc3QvY2FudmFzL3dlYmdsL2dldC1hY3RpdmUtdGVzdC1zdGRlcnIudHh0VVQFAAO58iNQdXgL
AAEE6AMAAAToAwAAUEsBAh4DFAACAAgASYsJQUnOzVGTAAAAIgEAAFEAGAAAAAAAAQAAAKSBlDAB
AHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWJpbmQtYXR0cmli
LWxvY2F0aW9uLXRlc3Qtc3RkZXJyLnR4dFVUBQADufIjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQA
AgAIAEmLCUHeq/pMzAAAAKIBAABKABgAAAAAAAEAAACkgbIxAQB0bXAvbGF5b3V0LXRlc3QtcmVz
dWx0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbnZhbGlkLXBhc3NlZC1wYXJhbXMtc3RkZXJyLnR4dFVU
BQADuvIjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAEqLCUGvqz0rWQAAAF8AAABKABgAAAAA
AAEAAACkgQIzAQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2NhbnZhcy93ZWJnbC9udWxs
LW9iamVjdC1iZWhhdmlvdXItc3RkZXJyLnR4dFVUBQADu/IjUHV4CwABBOgDAAAE6AMAAFBLAQIe
AwoAAAAAACCGCUEAAAAAAAAAAAAAAAAoABgAAAAAAAAAEADtQd8zAQB0bXAvbGF5b3V0LXRlc3Qt
cmVzdWx0cy9mYXN0L2ZpbGVzeXN0ZW0vVVQFAAP76SNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAAC
AAgAIIYJQZyKzKxlAAAAbQAAADoAGAAAAAAAAQAAAKSBQTQBAHRtcC9sYXlvdXQtdGVzdC1yZXN1
bHRzL2Zhc3QvZmlsZXN5c3RlbS9vcC1jb3B5LXN0ZGVyci50eHRVVAUAA/vpI1B1eAsAAQToAwAA
BOgDAABQSwECHgMUAAIACAAghglBlUYBY2UAAABtAAAAOgAYAAAAAAABAAAApIEaNQEAdG1wL2xh
eW91dC10ZXN0LXJlc3VsdHMvZmFzdC9maWxlc3lzdGVtL29wLW1vdmUtc3RkZXJyLnR4dFVUBQAD
++kjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIACCGCUFXTNfjZQAAAG0AAAA8ABgAAAAAAAEA
AACkgfM1AQB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtcmVtb3Zl
LXN0ZGVyci50eHRVVAUAA/vpI1B1eAsAAQToAwAABOgDAABQSwECHgMKAAAAAADpiglBAAAAAAAA
AAAAAAAAQwAYAAAAAAAAAAAApIHONgEAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcHl3ZWJzb2Nr
ZXQud3MubG9nLTA5QXVnMjAxMi0xNzIzMTgtb3V0LnR4dFVUBQADBvIjUHV4CwABBOgDAAAE6AMA
AFBLAQIeAxQAAgAIAFeLCUFR+3F/wbwAAO30CAAmABgAAAAAAAEAAACkgUs3AQB0bXAvbGF5b3V0
LXRlc3QtcmVzdWx0cy9hY2Nlc3NfbG9nLnR4dFVUBQAD1vIjUHV4CwABBOgDAAAE6AMAAFBLAQIe
AxQAAgAIAFiLCUErelPw9D4AAKzkAQAmABgAAAAAAAEAAACkgWz0AQB0bXAvbGF5b3V0LXRlc3Qt
cmVzdWx0cy90ZXN0c19ydW4zLnR4dFVUBQAD1/IjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAI
AFiLCUF0zgZIfR8AAHoiAwAlABgAAAAAAAEAAACkgcAzAgB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0
cy9lcnJvcl9sb2cudHh0VVQFAAPX8iNQdXgLAAEE6AMAAAToAwAAUEsBAh4DCgAAAAAATYYJQQAA
AAAAAAAAAAAAACEAGAAAAAAAAAAQAO1BnFMCAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3BsYXRm
b3JtL1VUBQADUuojUHV4CwABBOgDAAAE6AMAAFBLAQIeAwoAAAAAAJuGCUEAAAAAAAAAAAAAAAAq
ABgAAAAAAAAAEADtQfdTAgB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9VVAUAA+XqI1B1eAsAAQToAwAABOgDAABQSwECHgMKAAAAAACbhglBAAAAAAAAAAAAAAAAMgAY
AAAAAAAAABAA7UFbVAIAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21pdW0v
dmlydHVhbC9VVAUAA+XqI1B1eAsAAQToAwAABOgDAABQSwECHgMKAAAAAACbhglBAAAAAAAAAAAA
AAAANgAYAAAAAAAAABAA7UHHVAIAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hy
b21pdW0vdmlydHVhbC9ncHUvVVQFAAPl6iNQdXgLAAEE6AMAAAToAwAAUEsBAh4DCgAAAAAAm4YJ
QQAAAAAAAAAAAAAAADsAGAAAAAAAAAAQAO1BN1UCAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Bs
YXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2Zhc3QvVVQFAAPl6iNQdXgLAAEE6AMAAAToAwAA
UEsBAh4DCgAAAAAAm4YJQQAAAAAAAAAAAAAAAEIAGAAAAAAAAAAQAO1BrFUCAHRtcC9sYXlvdXQt
dGVzdC1yZXN1bHRzL3BsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2Zhc3QvY2FudmFzL1VU
BQAD5eojUHV4CwABBOgDAAAE6AMAAFBLAQIeAwoAAAAAAKCGCUEAAAAAAAAAAAAAAABIABgAAAAA
AAAAEADtQShWAgB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJvbWl1bS92aXJ0
dWFsL2dwdS9mYXN0L2NhbnZhcy93ZWJnbC9VVAUAA+vqI1B1eAsAAQToAwAABOgDAABQSwECHgMU
AAIACACdhglBLZppK9gAAAAcAgAAaAAYAAAAAAABAAAApIGqVgIAdG1wL2xheW91dC10ZXN0LXJl
c3VsdHMvcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUvZmFzdC9jYW52YXMvd2ViZ2wvc2hh
ZGVyLXByZWNpc2lvbi1mb3JtYXQtZGlmZi50eHRVVAUAA+nqI1B1eAsAAQToAwAABOgDAABQSwEC
HgMUAAIACACghglB+FHc74kAAACRAAAAcAAYAAAAAAABAAAApIEkWAIAdG1wL2xheW91dC10ZXN0
LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUvZmFzdC9jYW52YXMvd2ViZ2wv
dW5pZm9ybS1hcnJheS1sZW5ndGgtb3ZlcmZsb3ctc3RkZXJyLnR4dFVUBQAD6+ojUHV4CwABBOgD
AAAE6AMAAFBLAQIeAxQAAgAIAJ2GCUEfGWN5+wEAAA4MAABsABgAAAAAAAEAAACkgVdZAgB0bXAv
bGF5b3V0LXRlc3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL2dwdS9mYXN0L2Nh
bnZhcy93ZWJnbC9zaGFkZXItcHJlY2lzaW9uLWZvcm1hdC1leHBlY3RlZC50eHRVVAUAA+nqI1B1
eAsAAQToAwAABOgDAABQSwECHgMUAAIACACbhglBOj0UFqsAAADVAgAAbwAYAAAAAAABAAAApIH4
WwIAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUv
ZmFzdC9jYW52YXMvd2ViZ2wvZ2wtdmVydGV4LWF0dHJpYi16ZXJvLWlzc3Vlcy1zdGRlcnIudHh0
VVQFAAPm6iNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAnIYJQSEXk7raAAAANAEAAGMAGAAA
AAAAAQAAAKSBTF0CAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3BsYXRmb3JtL2Nocm9taXVtL3Zp
cnR1YWwvZ3B1L2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24tc3RkZXJyLnR4dFVU
BQAD5+ojUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAJ2GCUF1NjCLzQcAAN8bAABwABgAAAAA
AAEAAACkgcNeAgB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJvbWl1bS92aXJ0
dWFsL2dwdS9mYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItcHJlY2lzaW9uLWZvcm1hdC1wcmV0dHkt
ZGlmZi5odG1sVVQFAAPp6iNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAm4YJQSPQx9HIAAAA
SgYAAGwAGAAAAAAAAQAAAKSBOmcCAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3BsYXRmb3JtL2No
cm9taXVtL3ZpcnR1YWwvZ3B1L2Zhc3QvY2FudmFzL3dlYmdsL2RyYXctYXJyYXlzLW91dC1vZi1i
b3VuZHMtc3RkZXJyLnR4dFVUBQAD5eojUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAJuGCUFV
oSediwAAAP0AAABiABgAAAAAAAEAAACkgahoAgB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9wbGF0
Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL2dwdS9mYXN0L2NhbnZhcy93ZWJnbC9lcnJvci1yZXBvcnRp
bmctc3RkZXJyLnR4dFVUBQAD5uojUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAJ2GCUE5aca6
DAIAAD0MAABqABgAAAAAAAEAAACkgc9pAgB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9wbGF0Zm9y
bS9jaHJvbWl1bS92aXJ0dWFsL2dwdS9mYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItcHJlY2lzaW9u
LWZvcm1hdC1hY3R1YWwudHh0VVQFAAPp6iNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAnIYJ
QS+0D5jOAAAAogEAAGgAGAAAAAAAAQAAAKSBf2wCAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Bs
YXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2Zhc3QvY2FudmFzL3dlYmdsL3ByZW11bHRpcGx5
YWxwaGEtdGVzdC1zdGRlcnIudHh0VVQFAAPo6iNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgA
m4YJQduIhdYDAQAAswkAAG4AGAAAAAAAAQAAAKSB720CAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRz
L3BsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2Zhc3QvY2FudmFzL3dlYmdsL2RyYXctZWxl
bWVudHMtb3V0LW9mLWJvdW5kcy1zdGRlcnIudHh0VVQFAAPl6iNQdXgLAAEE6AMAAAToAwAAUEsB
Ah4DFAACAAgAoIYJQZpLnk07AQAAcwwAAGcAGAAAAAAAAQAAAKSBmm8CAHRtcC9sYXlvdXQtdGVz
dC1yZXN1bHRzL3BsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2Zhc3QvY2FudmFzL3dlYmds
L3R5cGUtY29udmVyc2lvbi10ZXN0LXN0ZGVyci50eHRVVAUAA+vqI1B1eAsAAQToAwAABOgDAABQ
SwECHgMUAAIACACdhglBZZOZH1sCAADdDAAAagAYAAAAAAABAAAApIF2cQIAdG1wL2xheW91dC10
ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUvZmFzdC9jYW52YXMvd2Vi
Z2wvc2hhZGVyLXByZWNpc2lvbi1mb3JtYXQtd2RpZmYuaHRtbFVUBQAD6eojUHV4CwABBOgDAAAE
6AMAAFBLAQIeAxQAAgAIAJyGCUEItbAtqgAAAIwCAAByABgAAAAAAAEAAACkgXV0AgB0bXAvbGF5
b3V0LXRlc3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL2dwdS9mYXN0L2NhbnZh
cy93ZWJnbC9pbmRleC12YWxpZGF0aW9uLWNvcGllcy1pbmRpY2VzLXN0ZGVyci50eHRVVAUAA+fq
I1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACACchglBsSONxJ4AAABGAQAAfQAYAAAAAAABAAAA
pIHLdQIAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9n
cHUvZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi12ZXJpZmllcy10b28tbWFueS1p
bmRpY2VzLXN0ZGVyci50eHRVVAUAA+fqI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACACbhglB
h0d2A5cAAAD6AQAAYgAYAAAAAAABAAAApIEgdwIAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxh
dGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUvZmFzdC9jYW52YXMvd2ViZ2wvZ2V0LWFjdGl2ZS10
ZXN0LXN0ZGVyci50eHRVVAUAA+bqI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACACbhglByjGv
SJYAAAAiAQAAbwAYAAAAAAABAAAApIFTeAIAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGxhdGZv
cm0vY2hyb21pdW0vdmlydHVhbC9ncHUvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtYmluZC1hdHRyaWIt
bG9jYXRpb24tdGVzdC1zdGRlcnIudHh0VVQFAAPm6iNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAAC
AAgAnIYJQUdXzJ5ZAAAAXwAAAGgAGAAAAAAAAQAAAKSBknkCAHRtcC9sYXlvdXQtdGVzdC1yZXN1
bHRzL3BsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2Zhc3QvY2FudmFzL3dlYmdsL251bGwt
b2JqZWN0LWJlaGF2aW91ci1zdGRlcnIudHh0VVQFAAPo6iNQdXgLAAEE6AMAAAToAwAAUEsBAh4D
CgAAAAAATYYJQQAAAAAAAAAAAAAAAC8AGAAAAAAAAAAQAO1BjXoCAHRtcC9sYXlvdXQtdGVzdC1y
ZXN1bHRzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvVVQFAANS6iNQdXgLAAEE6AMAAAToAwAAUEsB
Ah4DCgAAAAAATYYJQQAAAAAAAAAAAAAAADUAGAAAAAAAAAAQAO1B9noCAHRtcC9sYXlvdXQtdGVz
dC1yZXN1bHRzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvVVQFAANS6iNQdXgLAAEE6AMA
AAToAwAAUEsBAh4DCgAAAAAATYYJQQAAAAAAAAAAAAAAAD4AGAAAAAAAAAAQAO1BZXsCAHRtcC9s
YXlvdXQtdGVzdC1yZXN1bHRzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvc2VjdXJpdHkv
VVQFAANS6iNQdXgLAAEE6AMAAAToAwAAUEsBAh4DCgAAAAAATYYJQQAAAAAAAAAAAAAAAEsAGAAA
AAAAAAAQAO1B3XsCAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3BsYXRmb3JtL2Nocm9taXVtL2h0
dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L1VUBQADUuojUHV4CwABBOgDAAAE6AMAAFBL
AQIeAxQAAgAIAE2GCUE/r58GbAAAAHAAAAB7ABgAAAAAAAEAAACkgWJ8AgB0bXAvbGF5b3V0LXRl
c3QtcmVzdWx0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29u
dGVudC9pbnNlY3VyZS1pZnJhbWUtaW4tbWFpbi1mcmFtZS1hbGxvd2VkLXN0ZGVyci50eHRVVAUA
A1LqI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACABXiwlB76Oxtd0GAAAKIwAAJgAYAAAAAAAB
AAAApIGDfQIAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvdGVzdHNfcnVuMC50eHRVVAUAA9byI1B1
eAsAAQToAwAABOgDAABQSwECHgMUAAIACABiiwlBt5qhm/AkAACDnQAAJAAYAAAAAAABAAAApIHA
hAIAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcmVzdWx0cy5odG1sVVQFAAPo8iNQdXgLAAEE6AMA
AAToAwAAUEsBAh4DCgAAAAAAm4YJQQAAAAAAAAAAAAAAACAAGAAAAAAAAAAQAO1BDqoCAHRtcC9s
YXlvdXQtdGVzdC1yZXN1bHRzL3BsdWdpbnMvVVQFAAPm6iNQdXgLAAEE6AMAAAToAwAAUEsBAh4D
FAACAAgAm4YJQVIPwtLvAAAAVQEAAEQAGAAAAAAAAQAAAKSBaKoCAHRtcC9sYXlvdXQtdGVzdC1y
ZXN1bHRzL3BsdWdpbnMvbnVsbC1ucHAtZ2V0dmFsdWUtcG9pbnRlci1zdGRlcnIudHh0VVQFAAPm
6iNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAWYsJQUA18HfGAgAAKQoAACkAGAAAAAAAAQAA
AKSB1asCAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uVVQFAAPa8iNQ
dXgLAAEE6AMAAAToAwAAUEsBAh4DCgAAAAAA6YoJQQAAAAAAAAAAAAAAAEMAGAAAAAAAAAAAAKSB
/q4CAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3B5d2Vic29ja2V0LndzLmxvZy0wOUF1ZzIwMTIt
MTcyMzE4LWVyci50eHRVVAUAAwbyI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACADpiglBkexm
gRokAABvYQAAIgAYAAAAAAABAAAApIF7rwIAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cGQu
Y29uZlVUBQADBfIjUHV4CwABBOgDAAAE6AMAAFBLAQIeAwoAAAAAAKmFCUEAAAAAAAAAAAAAAAAd
ABgAAAAAAAAAEADtQfHTAgB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL1VUBQADHukjUHV4
CwABBOgDAAAE6AMAAFBLAQIeAwoAAAAAABaGCUEAAAAAAAAAAAAAAAAjABgAAAAAAAAAEADtQUjU
AgB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL1VUBQAD7OkjUHV4CwABBOgDAAAE
6AMAAFBLAQIeAwoAAAAAAKqFCUEAAAAAAAAAAAAAAAApABgAAAAAAAAAEADtQaXUAgB0bXAvbGF5
b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL2NhY2hlL1VUBQADH+kjUHV4CwABBOgDAAAE6AMA
AFBLAQIeAxQAAgAIAO2KCUH+waUdQAEAAFoCAABFABgAAAAAAAEAAACkgQjVAgB0bXAvbGF5b3V0
LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL2NhY2hlL3Bvc3QtcmVkaXJlY3QtZ2V0LWFjdHVhbC50
eHRVVAUAAw3yI1B1eAsAAQToAwAABOgDAABQSwECHgMKAAIAAADtiglBnOmndQYAAAAGAAAARwAY
AAAAAAABAAAApIHH1gIAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9jYWNoZS9w
b3N0LXJlZGlyZWN0LWdldC1leHBlY3RlZC50eHRVVAUAAw3yI1B1eAsAAQToAwAABOgDAABQSwEC
HgMUAAIACADtiglBVzVCW5kBAAAXAwAAQwAYAAAAAAABAAAApIFO1wIAdG1wL2xheW91dC10ZXN0
LXJlc3VsdHMvaHR0cC90ZXN0cy9jYWNoZS9wb3N0LXJlZGlyZWN0LWdldC1kaWZmLnR4dFVUBQAD
DfIjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAO2KCUG5x48m2x8AAKgrAABFABgAAAAAAAAA
AACkgWTZAgB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL2NhY2hlL3Bvc3QtcmVk
aXJlY3QtZ2V0LWFjdHVhbC5wbmdVVAUAAw3yI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACADt
iglBjaV8io8BAADoAgAARQAYAAAAAAABAAAApIG++QIAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMv
aHR0cC90ZXN0cy9jYWNoZS9wb3N0LXJlZGlyZWN0LWdldC13ZGlmZi5odG1sVVQFAAMN8iNQdXgL
AAEE6AMAAAToAwAAUEsBAh4DCgACAAAA7YoJQZzpp3UGAAAABgAAAFMAGAAAAAAAAQAAAKSBzPsC
AHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC13aXRoLWNhY2hl
ZC1zdWJyZXNvdXJjZXMtZXhwZWN0ZWQudHh0VVQFAAMN8iNQdXgLAAEE6AMAAAToAwAAUEsBAh4D
FAACAAgA7YoJQdX2HWKQCAAAGx8AAFcAGAAAAAAAAQAAAKSBX/wCAHRtcC9sYXlvdXQtdGVzdC1y
ZXN1bHRzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC13aXRoLWNhY2hlZC1zdWJyZXNvdXJjZXMtcHJl
dHR5LWRpZmYuaHRtbFVUBQADDfIjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAO2KCUGNpXyK
jwEAAOgCAABRABgAAAAAAAEAAACkgYAFAwB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rl
c3RzL2NhY2hlL3Bvc3Qtd2l0aC1jYWNoZWQtc3VicmVzb3VyY2VzLXdkaWZmLmh0bWxVVAUAAw3y
I1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACADtiglBucePJtsfAACoKwAAUQAYAAAAAAAAAAAA
pIGaBwMAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9jYWNoZS9wb3N0LXdpdGgt
Y2FjaGVkLXN1YnJlc291cmNlcy1hY3R1YWwucG5nVVQFAAMN8iNQdXgLAAEE6AMAAAToAwAAUEsB
Ah4DFAACAAgA7YoJQZxCjy2JCAAADx8AAEsAGAAAAAAAAQAAAKSBACgDAHRtcC9sYXlvdXQtdGVz
dC1yZXN1bHRzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC1yZWRpcmVjdC1nZXQtcHJldHR5LWRpZmYu
aHRtbFVUBQADDfIjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIAO2KCUHbKJQDoQEAAC8DAABP
ABgAAAAAAAEAAACkgQ4xAwB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL2NhY2hl
L3Bvc3Qtd2l0aC1jYWNoZWQtc3VicmVzb3VyY2VzLWRpZmYudHh0VVQFAAMN8iNQdXgLAAEE6AMA
AAToAwAAUEsBAh4DFAACAAgA7YoJQf7BpR1AAQAAWgIAAFEAGAAAAAAAAQAAAKSBODMDAHRtcC9s
YXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC13aXRoLWNhY2hlZC1zdWJy
ZXNvdXJjZXMtYWN0dWFsLnR4dFVUBQADDfIjUHV4CwABBOgDAAAE6AMAAFBLAQIeAwoAAAAAAPuF
CUEAAAAAAAAAAAAAAAAoABgAAAAAAAAAEADtQQM1AwB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9o
dHRwL3Rlc3RzL21pc2MvVVQFAAO66SNQdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgA+4UJQRU1
NZJ6AAAAvAAAAEIAGAAAAAAAAQAAAKSBZTUDAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAv
dGVzdHMvbWlzYy94c2x0LWJhZC1pbXBvcnQtc3RkZXJyLnR4dFVUBQADuukjUHV4CwABBOgDAAAE
6AMAAFBLAQIeAxQAAgAIAO+FCUHlQuIVawAAAG8AAABHABgAAAAAAAEAAACkgVs2AwB0bXAvbGF5
b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL21pc2MvZG5zLXByZWZldGNoLWNvbnRyb2wtc3Rk
ZXJyLnR4dFVUBQADoukjUHV4CwABBOgDAAAE6AMAAFBLAQIeAwoAAAAAABuGCUEAAAAAAAAAAAAA
AAAsABgAAAAAAAAAEADtQUc3AwB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L1VUBQAD9ekjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIABaGCUFWcFJpYgAAAI4A
AABVABgAAAAAAAEAAACkga03AwB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzcy1ERU5JRUQteG1sLWV4dGVybmFsLWVudGl0eS1zdGRlcnIudHh0VVQFAAPs6SNQ
dXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAFoYJQWBLZhCRAAAA+wEAAF0AGAAAAAAAAQAAAKSB
njgDAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklF
RC14c2wtZG9jdW1lbnQtc2VjdXJpdHlPcmlnaW4tc3RkZXJyLnR4dFVUBQAD7OkjUHV4CwABBOgD
AAAE6AMAAFBLAQIeAwoAAAAAABuGCUEAAAAAAAAAAAAAAABCABgAAAAAAAAAEADtQcY5AwB0bXAv
bGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS9VVAUAA/XpI1B1eAsAAQToAwAABOgDAABQSwECHgMUAAIACAAbhglBY6qsbIIAAACoAAAA
agAYAAAAAAABAAAApIFCOgMAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kveHNsLXVuYWZmZWN0ZWQtYnktc3R5bGUtc3JjLTIt
c3RkZXJyLnR4dFVUBQAD9ekjUHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIABuGCUFjqqxsggAA
AKgAAABYABgAAAAAAAEAAACkgWg7AwB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS94c2wtYWxsb3dlZC1zdGRlcnIudHh0VVQF
AAP16SNQdXgLAAEE6AMAAAToAwAAUEsBAh4DCgAAAAAA6IYJQQAAAAAAAAAAAAAAACAAGAAAAAAA
AAAQAO1BfDwDAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3JldHJpZXMvVVQFAAN06yNQdXgLAAEE
6AMAAAToAwAAUEsBAh4DFAACAAgA8IYJQWeA22LrAAAABQIAAC4AGAAAAAAAAQAAAKSB1jwDAHRt
cC9sYXlvdXQtdGVzdC1yZXN1bHRzL3JldHJpZXMvdGVzdHNfcnVuMC50eHRVVAUAA4TrI1B1eAsA
AQToAwAABOgDAABQSwUGAAAAAIAAgACjRQAAKT4DAAAA
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157497</attachid>
            <date>2012-08-09 11:35:08 -0700</date>
            <delta_ts>2012-08-09 14:01:02 -0700</delta_ts>
            <desc>[Patch] stripped away the code we are unsure of</desc>
            <filename>bug-92769-20120809223440.patch</filename>
            <type>text/plain</type>
            <size>24511</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmMzYmE1ZmI2OThmNjdj
YjIwMTFhN2QxNjY3MGRjMWM0ZDc0NDVlYS4uYTMxYWZhYzg5NzM0MzllMDQ0MGQyY2RlNDRhMWRk
NTAwYzdiMGIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTA4LTA4ICBKYW4g
S2Vyb21uZXMgIDxqYW54QGxpbnV4LmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZXBs
YWNlIHRoZSBXZWIgSW5zcGVjdG9yIGVkaXRvciB3aXRoIENvZGVNaXJyb3IKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNzY5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50ZWdyYXRpbmcgQ29kZU1pcnJv
ciBhcyBhIGRldnRvb2xzIGV4cGVyaW1lbnQuIEN1cnJlbnRseSBzdXBwb3J0aW5nCisgICAgICAg
IGJhc2ljIGVkaXRpbmcsIHNlYXJjaC9yZXBsYWNpbmcsIGFuZCBzYXZpbmcuIE1pc3NpbmcgcHJv
cGVyIGJyZWFrcG9pbnRzCisgICAgICAgIHdpcmluZywgZGVidWdnaW5nLCBtZXNzYWdlIGJ1YmJs
ZXMsIHBvcG92ZXJzIGFuZCBjb250ZXh0IG1lbnVzLiBXSVAuCisKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvQ29kZU1pcnJvclRleHRFZGl0b3IuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnRoaXMuX2NvZGVNaXJyb3IuQ29kZU1pcnJvcik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZS5zZXQgbWltZVR5cGUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZS5z
ZXRSZWFkT25seSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3Iu
cHJvdG90eXBlLnJlYWRPbmx5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4
dEVkaXRvci5wcm90b3R5cGUuZGVmYXVsdEZvY3VzZWRFbGVtZW50KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuZm9jdXMpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZS5yZXZlYWxMaW5lKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuYWRk
RGVjb3JhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3Iu
cHJvdG90eXBlLnJlbW92ZURlY29yYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVN
aXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZS5tYXJrQW5kUmV2ZWFsUmFuZ2UpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZS5oaWdobGlnaHRMaW5l
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUu
Y2xlYXJMaW5lSGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4
dEVkaXRvci5wcm90b3R5cGUuZnJlZUNhY2hlZEVsZW1lbnRzKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuZWxlbWVudHNUb1Jlc3RvcmVTY3Jv
bGxQb3NpdGlvbnNGb3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRp
dG9yLnByb3RvdHlwZS5pbmhlcml0U2Nyb2xsUG9zaXRpb25zKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuYmVnaW5VcGRhdGVzKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuZW5kVXBkYXRl
cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBl
Lm9uUmVzaXplKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5w
cm90b3R5cGUuZWRpdFJhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4
dEVkaXRvci5wcm90b3R5cGUuX29uQ2hhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2Rl
TWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuX2NvbW1pdEVkaXRpbmcpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZS5zY3JvbGxUb0xpbmUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZS5zZWxl
Y3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3Rv
dHlwZS5sYXN0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4
dEVkaXRvci5wcm90b3R5cGUuc2V0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUuc2V0VGV4dCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLnRleHQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZS5yYW5nZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLmxpbmUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlwZS5nZXQgbGlu
ZXNDb3VudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJv
dG90eXBlLnNldEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRl
eHRFZGl0b3IucHJvdG90eXBlLmdldEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlLndhc1Nob3duKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEVkaXRvci5wcm90b3R5cGUud2ls
bEhpZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3Rv
dHlwZS5fdGV4dENoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0
RWRpdG9yLnByb3RvdHlwZS5fdG9Qb3MpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJy
b3JUZXh0RWRpdG9yLnByb3RvdHlwZS5fdG9SYW5nZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9TZXR0aW5ncy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHBlcmltZW50c1Nl
dHRpbmdzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9jbWRl
dnRvb2xzLmNzczogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuaHRtbDoKKwogMjAxMi0wOC0wOSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgY29kZW1pcnJvciBsaWJyYXJ5IGFz
IGFuIGV4cGVyaW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAwYjBjMmYwZTU0MTgwMWM4OGIzOTNj
MmYzM2VjNjg5MzRlNmZlZTY5Li4yNGU3MjQzOTU2NTFlYjhmNzNkN2U0MjBkNDAzMzI4NWVjZGVm
MTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC02MjUzLDYgKzYyNTMsNyBAQAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcycsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9DYWxsU3RhY2tTaWRlYmFyUGFuZS5qcycsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9DaGVja2JveC5qcycsCisgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC9Db2RlTWlycm9yVGV4dEVkaXRvci5qcycsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Db2xvci5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9Db21waWxlclNjcmlwdE1hcHBpbmcuanMnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ29uc29sZU1lc3NhZ2UuanMnLApAQCAtNjQ0Myw2ICs2NDQ0LDcgQEAK
ICAgICAgICAgJ3dlYmluc3BlY3Rvcl9zdGFuZGFsb25lX2Nzc19maWxlcyc6IFsKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL2F1ZGl0c1BhbmVsLmNzcycsCiAgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC9jbS9jb2RlbWlycm9yLmNzcycsCisgICAgICAgICAgICAnaW5z
cGVjdG9yL2Zyb250LWVuZC9jbWRldnRvb2xzLmNzcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9kYXRhR3JpZC5jc3MnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvZWxlbWVudHNQYW5lbC5jc3MnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQv
ZmlsdGVyZWRJdGVtU2VsZWN0aW9uRGlhbG9nLmNzcycsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGFhZTBjMzMxYmE4YzhmMzJiM2RlODI1MGNj
OTgxMWJiOGUyZmQwYWEuLmYxMGQwNzMxMjI3ZjM0Y2Y0ZGY0NjM2MTQ3MDQ1YjdmNGJkYzhhMzIg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03
NTQxOCw2ICs3NTQxOCwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxDb2RlTWlycm9yVGV4dEVkaXRv
ci5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcQ29sb3IuanMiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBA
IC03NTUxMCw2ICs3NTUxNCwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxjbWRldnRvb2xzLmNzcyIK
KwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGlu
c3BlY3Rvclxmcm9udC1lbmRcRGF0YWJhc2UuanMiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvZGVNaXJyb3JUZXh0
RWRpdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db2RlTWlycm9y
VGV4dEVkaXRvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGVmZDM4YWVlMmU1ZjcxMzgxZWNjZjkwOTk5Mjk1
ZjFjNGE3ODZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Db2RlTWlycm9yVGV4dEVkaXRvci5qcwpAQCAtMCwwICsxLDM1NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICog
QGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlZpZXd9CisgKiBAaW1wbGVt
ZW50cyB7V2ViSW5zcGVjdG9yLlRleHRFZGl0b3J9CisgKiBAcGFyYW0gez9zdHJpbmd9IHVybAor
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckRlbGVnYXRlfSBkZWxlZ2F0ZQorICov
CitXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRFZGl0b3IgPSBmdW5jdGlvbih1cmwsIGRlbGVn
YXRlKQoreworICAgIFdlYkluc3BlY3Rvci5WaWV3LmNhbGwodGhpcyk7CisgICAgdGhpcy5fZGVs
ZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICB0aGlzLl91cmwgPSB1cmw7CisKKyAgICB0aGlzLl9sb2Fk
TGlicmFyaWVzKCk7CisgICAgdGhpcy5yZWdpc3RlclJlcXVpcmVkQ1NTKCJjb2RlbWlycm9yLmNz
cyIpOworICAgIHRoaXMucmVnaXN0ZXJSZXF1aXJlZENTUygiY21kZXZ0b29scy5jc3MiKTsKKwor
ICAgIHRoaXMuX2NvZGVNaXJyb3IgPSB3aW5kb3cuQ29kZU1pcnJvcih0aGlzLmVsZW1lbnQsIHsK
KyAgICAgICAgbGluZU51bWJlcnM6IHRydWUsCisgICAgICAgIGZpeGVkR3V0dGVyOiB0cnVlLAor
ICAgICAgICBvbkNoYW5nZTogdGhpcy5fb25DaGFuZ2UuYmluZCh0aGlzKSwKKyAgICB9KTsKKwor
ICAgIHRoaXMuX2xhc3RSYW5nZSA9IHRoaXMucmFuZ2UoKTsKKworICAgIHRoaXMuZWxlbWVudC5m
aXJzdENoaWxkLmFkZFN0eWxlQ2xhc3MoInNvdXJjZS1jb2RlIik7CisgICAgdGhpcy5lbGVtZW50
LmZpcnN0Q2hpbGQuYWRkU3R5bGVDbGFzcygiZmlsbCIpOworfQorCitXZWJJbnNwZWN0b3IuQ29k
ZU1pcnJvclRleHRFZGl0b3IucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBtaW1lVHlwZQorICAgICAqLworICAgIHNldCBtaW1lVHlwZShtaW1lVHlwZSkKKyAg
ICB7CisgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iuc2V0T3B0aW9uKCJtb2RlIiwgbWltZVR5cGUp
OworICAgICAgICBzd2l0Y2gobWltZVR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgInRleHQvaHRt
bCI6IHRoaXMuX2NvZGVNaXJyb3Iuc2V0T3B0aW9uKCJ0aGVtZSIsICJ3ZWItaW5zcGVjdG9yLWh0
bWwiKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJ0ZXh0L2NzcyI6IHRoaXMuX2NvZGVNaXJy
b3Iuc2V0T3B0aW9uKCJ0aGVtZSIsICJ3ZWItaW5zcGVjdG9yLWNzcyIpOyBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgInRleHQvamF2YXNjcmlwdCI6IHRoaXMuX2NvZGVNaXJyb3Iuc2V0T3B0aW9u
KCJ0aGVtZSIsICJ3ZWItaW5zcGVjdG9yLWpzIik7IGJyZWFrOworICAgICAgICB9CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmVhZE9ubHkKKyAgICAgKi8KKyAg
ICBzZXRSZWFkT25seTogZnVuY3Rpb24ocmVhZE9ubHkpCisgICAgeworICAgICAgICB0aGlzLl9j
b2RlTWlycm9yLnNldE9wdGlvbigicmVhZE9ubHkiLCByZWFkT25seSk7CisgICAgfSwKKworICAg
IC8qKgorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgcmVhZE9ubHk6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiAhIXRoaXMuX2NvZGVNaXJyb3IuZ2V0T3B0
aW9uKCJyZWFkT25seSIpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtFbGVt
ZW50fQorICAgICAqLworICAgIGRlZmF1bHRGb2N1c2VkRWxlbWVudDogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5maXJzdENoaWxkOworICAgIH0sCisKKyAg
ICBmb2N1czogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fY29kZU1pcnJvci5mb2N1
cygpOworICAgIH0sCisKKyAgICBiZWdpblVwZGF0ZXM6IGZ1bmN0aW9uKCkgeyB9LAorCisgICAg
ZW5kVXBkYXRlczogZnVuY3Rpb24oKSB7IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gbGluZU51bWJlcgorICAgICAqLworICAgIHJldmVhbExpbmU6IGZ1bmN0aW9uKGxpbmVO
dW1iZXIpCisgICAgeworICAgICAgICB0aGlzLl9jb2RlTWlycm9yLnNldEN1cnNvcih7IGxpbmU6
IGxpbmVOdW1iZXIsIGNoOiAwIH0pOworICAgICAgICB2YXIgY29vcmRzID0gdGhpcy5fY29kZU1p
cnJvci5jdXJzb3JDb29yZHMoKTsKKyAgICAgICAgdGhpcy5fY29kZU1pcnJvci5zY3JvbGxUbyhj
b29yZHMueCwgY29vcmRzLnkpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gbGluZU51bWJlcgorICAgICAqIEBwYXJhbSB7c3RyaW5nfEVsZW1lbnR9IGRlY29yYXRp
b24KKyAgICAgKi8KKyAgICBhZGREZWNvcmF0aW9uOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBkZWNv
cmF0aW9uKQorICAgIHsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGxpbmVOdW1iZXIKKyAgICAgKiBAcGFyYW0ge3N0cmluZ3xFbGVtZW50fSBkZWNvcmF0aW9uCisg
ICAgICovCisgICAgcmVtb3ZlRGVjb3JhdGlvbjogZnVuY3Rpb24obGluZU51bWJlciwgZGVjb3Jh
dGlvbikKKyAgICB7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLlRleHRSYW5nZX0gcmFuZ2UKKyAgICAgKi8KKyAgICBtYXJrQW5kUmV2ZWFsUmFuZ2U6IGZ1
bmN0aW9uKHJhbmdlKQorICAgIHsKKyAgICAgICAgaWYgKHJhbmdlKQorICAgICAgICAgICAgdGhp
cy5zZXRTZWxlY3Rpb24ocmFuZ2UpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gbGluZU51bWJlcgorICAgICAqLworICAgIGhpZ2hsaWdodExpbmU6IGZ1bmN0aW9u
KGxpbmVOdW1iZXIpCisgICAgeworICAgICAgICB2YXIgbGluZSA9IHRoaXMuX2NvZGVNaXJyb3Iu
Z2V0TGluZShsaW5lTnVtYmVyKTsKKyAgICAgICAgdmFyIG1hcmsgPSB0aGlzLl9jb2RlTWlycm9y
Lm1hcmtUZXh0KHsgbGluZTogbGluZU51bWJlciwgY2g6IDAgfSwgeyBsaW5lOiBsaW5lTnVtYmVy
LCBjaDogbGluZS5sZW5ndGggfSwgIkNvZGVNaXJyb3Itc2VhcmNoaW5nIik7CisgICAgICAgIHNl
dFRpbWVvdXQobWFyay5jbGVhci5iaW5kKG1hcmspLCAxMDAwKTsKKyAgICB9LAorCisgICAgY2xl
YXJMaW5lSGlnaGxpZ2h0OiBmdW5jdGlvbigpCisgICAgeworICAgIH0sCisKKyAgICAvKioKKyAg
ICAgKiBAcmV0dXJuIHtBcnJheS48RWxlbWVudD59CisgICAgICovCisgICAgZWxlbWVudHNUb1Jl
c3RvcmVTY3JvbGxQb3NpdGlvbnNGb3I6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBbXTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvcn0gdGV4dEVkaXRvcgorICAgICAqLworICAgIGluaGVyaXRTY3JvbGxQb3NpdGlvbnM6
IGZ1bmN0aW9uKHRleHRFZGl0b3IpCisgICAgeworICAgIH0sCisKKyAgICBvblJlc2l6ZTogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fY29kZU1pcnJvci5yZWZyZXNoKCk7CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRleHRSYW5nZX0gcmFu
Z2UKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dAorICAgICAqIEByZXR1cm4ge1dlYkluc3Bl
Y3Rvci5UZXh0UmFuZ2V9CisgICAgICovCisgICAgZWRpdFJhbmdlOiBmdW5jdGlvbihyYW5nZSwg
dGV4dCkKKyAgICB7CisgICAgICAgIHRoaXMuX2RlbGVnYXRlLmJlZm9yZVRleHRDaGFuZ2VkKCk7
CisKKyAgICAgICAgdmFyIHBvcyA9IHRoaXMuX3RvUG9zKHJhbmdlKTsKKyAgICAgICAgdGhpcy5f
Y29kZU1pcnJvci5yZXBsYWNlUmFuZ2UodGV4dCwgcG9zLnN0YXJ0LCBwb3MuZW5kKTsKKyAgICAg
ICAgdmFyIG5ld1JhbmdlID0gdGhpcy5fdG9SYW5nZShwb3Muc3RhcnQsIHRoaXMuX2NvZGVNaXJy
b3IucG9zRnJvbUluZGV4KHRoaXMuX2NvZGVNaXJyb3IuaW5kZXhGcm9tUG9zKHBvcy5zdGFydCkg
KyB0ZXh0Lmxlbmd0aCkpOworCisgICAgICAgIHRoaXMuX2RlbGVnYXRlLmFmdGVyVGV4dENoYW5n
ZWQocmFuZ2UsIG5ld1JhbmdlKTsKKworICAgICAgICByZXR1cm4gbmV3UmFuZ2U7CisgICAgfSwK
KworICAgIF9vbkNoYW5nZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fZGVsZWdh
dGUuYmVmb3JlVGV4dENoYW5nZWQoKTsKKyAgICAgICAgdmFyIG5ld1JhbmdlID0gdGhpcy5yYW5n
ZSgpOworICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5hZnRlclRleHRDaGFuZ2VkKHRoaXMuX2xhc3RS
YW5nZSwgbmV3UmFuZ2UpOworICAgICAgICB0aGlzLl9sYXN0UmFuZ2UgPSBuZXdSYW5nZTsKKyAg
ICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKKyAgICAg
Ki8KKyAgICBzY3JvbGxUb0xpbmU6IGZ1bmN0aW9uKGxpbmVOdW1iZXIpCisgICAgeworICAgICAg
ICB0aGlzLl9jb2RlTWlycm9yLnNldEN1cnNvcih7bGluZTpsaW5lTnVtYmVyLCBjaDowfSk7Cisg
ICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9
CisgICAgICovCisgICAgc2VsZWN0aW9uOiBmdW5jdGlvbih0ZXh0UmFuZ2UpCisgICAgeworICAg
ICAgICB2YXIgc3RhcnQgPSB0aGlzLl9jb2RlTWlycm9yLmN1cnNvckNvb3Jkcyh0cnVlKTsKKyAg
ICAgICAgdmFyIGVuZCA9IHRoaXMuX2NvZGVNaXJyb3IuY3Vyc29yQ29vcmRzKGZhbHNlKTsKKwor
ICAgICAgICBpZiAoc3RhcnQubGluZSA+IGVuZC5saW5lIHx8IChzdGFydC5saW5lID09IGVuZC5s
aW5lICYmIHN0YXJ0LmNoID4gZW5kLmNoKSkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl90b1Jh
bmdlKGVuZCwgc3RhcnQpOworCisgICAgICAgIHJldHVybiB0aGlzLl90b1JhbmdlKHN0YXJ0LCBl
bmQpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVGV4
dFJhbmdlP30KKyAgICAgKi8KKyAgICBsYXN0U2VsZWN0aW9uOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fbGFzdFNlbGVjdGlvbjsKKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfSB0ZXh0UmFuZ2UKKyAgICAgKi8K
KyAgICBzZXRTZWxlY3Rpb246IGZ1bmN0aW9uKHRleHRSYW5nZSkKKyAgICB7CisgICAgICAgIHRo
aXMuX2xhc3RTZWxlY3Rpb24gPSB0ZXh0UmFuZ2U7CisgICAgICAgIHZhciBwb3MgPSB0aGlzLl90
b1Bvcyh0ZXh0UmFuZ2UpOworICAgICAgICB0aGlzLl9jb2RlTWlycm9yLnNldFNlbGVjdGlvbihw
b3Muc3RhcnQsIHBvcy5lbmQpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0
cmluZ30gdGV4dAorICAgICAqLworICAgIHNldFRleHQ6IGZ1bmN0aW9uKHRleHQpCisgICAgewor
ICAgICAgICB0aGlzLl9jb2RlTWlycm9yLnNldFZhbHVlKHRleHQpOworICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgdGV4dDogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3IuZ2V0VmFsdWUoKTsKKyAg
ICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlRleHRSYW5nZX0K
KyAgICAgKi8KKyAgICByYW5nZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGxpbmVD
b3VudCA9IHRoaXMubGluZXNDb3VudDsKKyAgICAgICAgdmFyIGxhc3RMaW5lID0gdGhpcy5fY29k
ZU1pcnJvci5nZXRMaW5lKGxpbmVDb3VudCAtIDEpOworICAgICAgICByZXR1cm4gdGhpcy5fdG9S
YW5nZSh7IGxpbmU6IDAsIGNoOiAwIH0sIHsgbGluZTogbGluZUNvdW50IC0gMSwgY2g6IGxhc3RM
aW5lLmxlbmd0aCB9KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGxpbmVOdW1iZXIKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgbGluZTog
ZnVuY3Rpb24obGluZU51bWJlcikKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jb2RlTWly
cm9yLmdldExpbmUobGluZU51bWJlcik7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1
cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBnZXQgbGluZXNDb3VudCgpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5fY29kZU1pcnJvci5saW5lQ291bnQoKTsKKyAgICB9LAorCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFt
ZQorICAgICAqIEBwYXJhbSB7T2JqZWN0P30gdmFsdWUKKyAgICAgKi8KKyAgICBzZXRBdHRyaWJ1
dGU6IGZ1bmN0aW9uKGxpbmUsIG5hbWUsIHZhbHVlKQorICAgIHsKKyAgICAgICAgdmFyIGhhbmRs
ZSA9IHRoaXMuX2NvZGVNaXJyb3IuZ2V0TGluZUhhbmRsZShsaW5lKTsKKyAgICAgICAgaWYgKGhh
bmRsZS5hdHRyaWJ1dGVzID09PSB1bmRlZmluZWQpIGhhbmRsZS5hdHRyaWJ1dGVzID0ge307Cisg
ICAgICAgIGhhbmRsZS5hdHRyaWJ1dGVzW25hbWVdID0gdmFsdWU7CisgICAgfSwKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5h
bWUKKyAgICAgKiBAcmV0dXJuIHtPYmplY3R8bnVsbH0gdmFsdWUKKyAgICAgKi8KKyAgICBnZXRB
dHRyaWJ1dGU6IGZ1bmN0aW9uKGxpbmUsIG5hbWUpCisgICAgeworICAgICAgICB2YXIgaGFuZGxl
ID0gdGhpcy5fY29kZU1pcnJvci5nZXRMaW5lSGFuZGxlKGxpbmUpOworICAgICAgICByZXR1cm4g
aGFuZGxlLmF0dHJpYnV0ZXMgJiYgaGFuZGxlLmF0dHJpYnV0ZXNbbmFtZV0gIT09IHVuZGVmaW5l
ZCA/IGhhbmRsZS5hdHRyaWJ1dGVzW25hbWVdIDogbnVsbDsKKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQor
ICAgICAqLworICAgIHJlbW92ZUF0dHJpYnV0ZTogZnVuY3Rpb24obGluZSwgbmFtZSkKKyAgICB7
CisgICAgICAgIHZhciBoYW5kbGUgPSB0aGlzLl9jb2RlTWlycm9yLmdldExpbmVIYW5kbGUobGlu
ZSk7CisgICAgICAgIGlmIChoYW5kbGUuYXR0cmlidXRlcykKKyAgICAgICAgICAgIGRlbGV0ZSBo
YW5kbGUuYXR0cmlidXRlc1tuYW1lXTsKKyAgICB9LAorCisgICAgX3RvUG9zOiBmdW5jdGlvbihy
YW5nZSkKKyAgICB7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBzdGFydDoge2xpbmU6
IHJhbmdlLnN0YXJ0TGluZSwgY2g6IHJhbmdlLnN0YXJ0Q29sdW1ufSwKKyAgICAgICAgICAgIGVu
ZDoge2xpbmU6IHJhbmdlLmVuZExpbmUsIGNoOiByYW5nZS5lbmRDb2x1bW59CisgICAgICAgIH0K
KyAgICB9LAorCisgICAgX3RvUmFuZ2U6IGZ1bmN0aW9uKHN0YXJ0LCBlbmQpCisgICAgeworICAg
ICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2Uoc3RhcnQubGluZSwgc3RhcnQu
Y2gsIGVuZC5saW5lLCBlbmQuY2gpOworICAgIH0sCisKKyAgICBfbG9hZExpYnJhcmllczogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHdpbmRvdy5Db2RlTWlycm9yKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGZ1bmN0aW9uIGxvYWRMaWJyYXJ5KGZpbGUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICAgICAg
ICAgIHhoci5vcGVuKCJHRVQiLCBmaWxlLCBmYWxzZSk7CisgICAgICAgICAgICB4aHIuc2VuZChu
dWxsKTsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKHhoci5yZXNwb25zZVRleHQpOworICAgICAg
ICAgICAgd2luZG93LmV2YWwoeGhyLnJlc3BvbnNlVGV4dCk7CisgICAgICAgIH0KKworICAgICAg
ICBsb2FkTGlicmFyeSgiY29kZW1pcnJvci5qcyIpOworICAgICAgICBsb2FkTGlicmFyeSgiY3Nz
LmpzIik7CisgICAgICAgIGxvYWRMaWJyYXJ5KCJqYXZhc2NyaXB0LmpzIik7CisgICAgICAgIGxv
YWRMaWJyYXJ5KCJ4bWwuanMiKTsKKyAgICAgICAgbG9hZExpYnJhcnkoImh0bWxtaXhlZC5qcyIp
OworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yLnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcwpp
bmRleCAzMjI0MWU0MzY0MTJiMjgyYTE3NDdhMTE1OGQwZjRmZjIzZWY3ODRiLi5kNjdiMTU2YTY4
NWEyNDQ3YWJhMjY4ZTk2MTkyOWZlNTNkZTQ0ZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMKQEAgLTE4Miwx
MCArMTgyLDEwIEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvci5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuX21haW5QYW5lbC5jbGVhckxpbmVIaWdobGlnaHQoKTsKICAgICB9LAog
Ci0gICAgZnJlZUNhY2hlZEVsZW1lbnRzOiBmdW5jdGlvbigpCisgICAgX2ZyZWVDYWNoZWRFbGVt
ZW50czogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fbWFpblBhbmVsLmZyZWVDYWNo
ZWRFbGVtZW50cygpOwotICAgICAgICB0aGlzLl9ndXR0ZXJQYW5lbC5mcmVlQ2FjaGVkRWxlbWVu
dHMoKTsKKyAgICAgICAgdGhpcy5fbWFpblBhbmVsLl9mcmVlQ2FjaGVkRWxlbWVudHMoKTsKKyAg
ICAgICAgdGhpcy5fZ3V0dGVyUGFuZWwuX2ZyZWVDYWNoZWRFbGVtZW50cygpOwogICAgIH0sCiAK
ICAgICAvKioKQEAgLTUyMSw2ICs1MjEsNyBAQCBXZWJJbnNwZWN0b3IuRGVmYXVsdFRleHRFZGl0
b3IucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICghdGhpcy5yZWFkT25seSgpKQogICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLm1hcmtCZWluZ0VkaXRlZCh0aGlzLmVsZW1lbnQsIGZhbHNlKTsK
KyAgICAgICAgdGhpcy5fZnJlZUNhY2hlZEVsZW1lbnRzKCk7CiAgICAgfQogfQogCkBAIC04Nzcs
MTMgKzg3OCwxMyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckd1dHRlclBhbmVsID0gZnVuY3Rp
b24odGV4dE1vZGVsLCBzeW5jRGVjb3JhdGlvbnNGb3JMaW5lTAogCiAgICAgdGhpcy5lbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHRoaXMuX3Njcm9sbC5iaW5kKHRoaXMpLCBmYWxz
ZSk7CiAKLSAgICB0aGlzLmZyZWVDYWNoZWRFbGVtZW50cygpOworICAgIHRoaXMuX2ZyZWVDYWNo
ZWRFbGVtZW50cygpOwogICAgIHRoaXMuX2J1aWxkQ2h1bmtzKCk7CiAgICAgdGhpcy5fZGVjb3Jh
dGlvbnMgPSB7fTsKIH0KIAogV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JHdXR0ZXJQYW5lbC5wcm90
b3R5cGUgPSB7Ci0gICAgZnJlZUNhY2hlZEVsZW1lbnRzOiBmdW5jdGlvbigpCisgICAgX2ZyZWVD
YWNoZWRFbGVtZW50czogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5fY2FjaGVkUm93
cyA9IFtdOwogICAgIH0sCkBAIC0xMjAxLDcgKzEyMDIsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVk
aXRvck1haW5QYW5lbCA9IGZ1bmN0aW9uKHRleHRNb2RlbCwgdXJsLCBzeW5jU2Nyb2xsTGlzdGVu
ZXIsCiAgICAgdGhpcy5fY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoIkRPTU5vZGVJbnNlcnRl
ZCIsIHRoaXMuX2hhbmRsZURPTVVwZGF0ZXNDYWxsYmFjaywgZmFsc2UpOwogICAgIHRoaXMuX2Nv
bnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJET01TdWJ0cmVlTW9kaWZpZWQiLCB0aGlzLl9oYW5k
bGVET01VcGRhdGVzQ2FsbGJhY2ssIGZhbHNlKTsKIAotICAgIHRoaXMuZnJlZUNhY2hlZEVsZW1l
bnRzKCk7CisgICAgdGhpcy5fZnJlZUNhY2hlZEVsZW1lbnRzKCk7CiAgICAgdGhpcy5fYnVpbGRD
aHVua3MoKTsKIH0KIApAQCAtMTM3Niw3ICsxMzc3LDcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAotICAgIGZyZWVD
YWNoZWRFbGVtZW50czogZnVuY3Rpb24oKQorICAgIF9mcmVlQ2FjaGVkRWxlbWVudHM6IGZ1bmN0
aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NhY2hlZFNwYW5zID0gW107CiAgICAgICAgIHRo
aXMuX2NhY2hlZFRleHROb2RlcyA9IFtdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2V0dGluZ3MuanMKaW5kZXggMWVjMmM1NDJjYWVjNjE5NTdlMDczMjg5YzNiOWFj
YTc4ZTFiMzI2Ni4uZjJjNDUzMzViZmRiMGFkZDAzYmNmYjQ0MTI3ODBkZGE5NTkzY2E2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCkBAIC0x
OTMsNiArMTkzLDcgQEAgV2ViSW5zcGVjdG9yLkV4cGVyaW1lbnRzU2V0dGluZ3MgPSBmdW5jdGlv
bigpCiAgICAgdGhpcy5nZW9sb2NhdGlvbk92ZXJyaWRlID0gdGhpcy5fY3JlYXRlRXhwZXJpbWVu
dCgiZ2VvbG9jYXRpb25PdmVycmlkZSIsICJPdmVycmlkZSBEZXZpY2UgR2VvbG9jYXRpb24iKTsK
ICAgICB0aGlzLmRldmljZU9yaWVudGF0aW9uT3ZlcnJpZGUgPSB0aGlzLl9jcmVhdGVFeHBlcmlt
ZW50KCJkZXZpY2VPcmllbnRhdGlvbk92ZXJyaWRlIiwgIk92ZXJyaWRlIERldmljZSBPcmllbnRh
dGlvbiIpOwogICAgIHRoaXMuc2FzcyA9IHRoaXMuX2NyZWF0ZUV4cGVyaW1lbnQoInNhc3MiLCAi
U3VwcG9ydCBmb3IgU0FTUyIpOworICAgIHRoaXMuY29kZW1pcnJvciA9IHRoaXMuX2NyZWF0ZUV4
cGVyaW1lbnQoImNvZGVtaXJyb3IiLCAiVXNlIENvZGVNaXJyb3IgZWRpdG9yIik7CiAKICAgICB0
aGlzLl9jbGVhblVwU2V0dGluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMKaW5kZXggMjc1ODljNzBjOGRkYWJlMGExYzM3MjI3
YzZiMjVhODg4ODRhNjA0Mi4uYTBmZmNmYWZiOTA3ODljNzY5ZjMxNTEwZGE4OWE3OTIwZjE5NmY2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VG
cmFtZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZy
YW1lLmpzCkBAIC00Miw3ICs0MiwxMSBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUgPSBmdW5j
dGlvbihjb250ZW50UHJvdmlkZXIpCiAgICAgdGhpcy5fY29udGVudFByb3ZpZGVyID0gY29udGVu
dFByb3ZpZGVyOwogCiAgICAgdmFyIHRleHRFZGl0b3JEZWxlZ2F0ZSA9IG5ldyBXZWJJbnNwZWN0
b3IuVGV4dEVkaXRvckRlbGVnYXRlRm9yU291cmNlRnJhbWUodGhpcyk7Ci0gICAgdGhpcy5fdGV4
dEVkaXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuRGVmYXVsdFRleHRFZGl0b3IodGhpcy5fdXJsLCB0
ZXh0RWRpdG9yRGVsZWdhdGUpOworCisgICAgaWYgKFdlYkluc3BlY3Rvci5leHBlcmltZW50c1Nl
dHRpbmdzLmNvZGVtaXJyb3IuaXNFbmFibGVkKCkpCisgICAgICAgIHRoaXMuX3RleHRFZGl0b3Ig
PSBuZXcgV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yKHRoaXMuX3VybCwgdGV4dEVk
aXRvckRlbGVnYXRlKTsKKyAgICBlbHNlCisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IgPSBuZXcg
V2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9yKHRoaXMuX3VybCwgdGV4dEVkaXRvckRlbGVn
YXRlKTsKIAogICAgIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IC0xOwogICAgIHRo
aXMuX3NlYXJjaFJlc3VsdHMgPSBbXTsKQEAgLTk0LDggKzk4LDYgQEAgV2ViSW5zcGVjdG9yLlNv
dXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICB3aWxsSGlkZTogZnVuY3Rpb24oKQogICAgIHsK
ICAgICAgICAgV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLndpbGxIaWRlLmNhbGwodGhpcyk7
Ci0gICAgICAgIGlmICh0aGlzLmxvYWRlZCkKLSAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0b3Iu
ZnJlZUNhY2hlZEVsZW1lbnRzKCk7CiAKICAgICAgICAgdGhpcy5fY2xlYXJMaW5lSGlnaGxpZ2h0
KCk7CiAgICAgICAgIHRoaXMuX2NsZWFyTGluZVRvUmV2ZWFsKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3IuanMKaW5kZXggZjY4ZTliNmM1Zjc4
OTU0OWJjMjMwZGI1OGI5OWViZTA1M2I1NGJhNC4uYjkzZTRlMjYwNjRhMmIwYzM4ODA2YjY5YTBm
ZWI2M2JiNTI5YmEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9UZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvVGV4dEVkaXRvci5qcwpAQCAtODUsOCArODUsNiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ci5wcm90b3R5cGUgPSB7CiAKICAgICBjbGVhckxpbmVIaWdobGlnaHQ6IGZ1bmN0aW9uKCkgeyB9
LAogCi0gICAgZnJlZUNhY2hlZEVsZW1lbnRzOiBmdW5jdGlvbigpIHsgfSwKLQogICAgIC8qKgog
ICAgICAqIEByZXR1cm4ge0FycmF5LjxFbGVtZW50Pn0KICAgICAgKi8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCAwNTE2ODk3OTEwYjYzODU1
NmJhNDViOGJhYjk2YTU5ZWRkOWQyZTEwLi42ZTc0NWJlNmZkY2VhNmI0MDI3MDBjNWQwMTgwNDYx
NWEyOGQ3YzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1dlYktpdC5xcmMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJL
aXQucXJjCkBAIC0xNSw2ICsxNSw3IEBACiAgICAgPGZpbGU+QnJlYWtwb2ludHNTaWRlYmFyUGFu
ZS5qczwvZmlsZT4KICAgICA8ZmlsZT5DYWxsU3RhY2tTaWRlYmFyUGFuZS5qczwvZmlsZT4KICAg
ICA8ZmlsZT5DaGVja2JveC5qczwvZmlsZT4KKyAgICA8ZmlsZT5Db2RlTWlycm9yVGV4dEVkaXRv
ci5qczwvZmlsZT4KICAgICA8ZmlsZT5Db2xvci5qczwvZmlsZT4KICAgICA8ZmlsZT5Db21waWxl
clNjcmlwdE1hcHBpbmcuanM8L2ZpbGU+CiAgICAgPGZpbGU+Q29uc29sZU1lc3NhZ2UuanM8L2Zp
bGU+CkBAIC0yMDQsNiArMjA1LDcgQEAKICAgICA8ZmlsZT5VZ2xpZnlKUy9wYXJzZS1qcy5qczwv
ZmlsZT4KICAgICA8ZmlsZT5hdWRpdHNQYW5lbC5jc3M8L2ZpbGU+CiAgICAgPGZpbGU+ZGF0YUdy
aWQuY3NzPC9maWxlPgorICAgIDxmaWxlPmNtZGV2dG9vbHMuY3NzPC9maWxlPgogICAgIDxmaWxl
PmRpYWxvZy5jc3M8L2ZpbGU+CiAgICAgPGZpbGU+ZWxlbWVudHNQYW5lbC5jc3M8L2ZpbGU+CiAg
ICAgPGZpbGU+ZmlsdGVyZWRJdGVtU2VsZWN0aW9uRGlhbG9nLmNzczwvZmlsZT4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvY21kZXZ0b29scy5jc3MgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2NtZGV2dG9vbHMuY3NzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjlmMzMwYjE1YzNlZWY0NWM4ZWEzYWM5ODJkYTIwOWFkMDU4Y2M5N2QKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2NtZGV2dG9vbHMuY3Nz
CkBAIC0wLDAgKzEsMjggQEAKKy5Db2RlTWlycm9yLXNjcm9sbCB7CisgIGhlaWdodDogMTAwJSAh
aW1wb3J0YW50OworfQorCisuQ29kZU1pcnJvciB7CisgIGxpbmUtaGVpZ2h0OiAxLjJlbSAhaW1w
b3J0YW50OworfQorCisuY20tcy13ZWItaW5zcGVjdG9yLWpzIHNwYW4uY20ta2V5d29yZCB7Y29s
b3I6IHJnYigxNzAsIDEzLCAxNDUpO30KKy5jbS1zLXdlYi1pbnNwZWN0b3ItanMgc3Bhbi5jbS1u
dW1iZXIge2NvbG9yOiByZ2IoMjgsIDAsIDIwNyk7fQorLmNtLXMtd2ViLWluc3BlY3Rvci1qcyBz
cGFuLmNtLWNvbW1lbnQge2NvbG9yOiByZ2IoMCwgMTE2LCAwKTt9CisuY20tcy13ZWItaW5zcGVj
dG9yLWpzIHNwYW4uY20tc3RyaW5nIHtjb2xvcjogcmdiKDE5NiwgMjYsIDIyKTt9CisuY20tcy13
ZWItaW5zcGVjdG9yLWpzIHNwYW4uY20tc3RyaW5nLTIge2NvbG9yOiByZ2IoMTk2LCAyNiwgMjIp
O30KKworLmNtLXMtd2ViLWluc3BlY3Rvci1jc3Mgc3Bhbi5jbS1rZXl3b3JkIHsgY29sb3I6IHJn
Yig3LCAxNDQsIDE1NCk7fQorLmNtLXMtd2ViLWluc3BlY3Rvci1jc3Mgc3Bhbi5jbS1udW1iZXIg
e2NvbG9yOiByZ2IoNTAsIDAsIDI1NSk7fQorLmNtLXMtd2ViLWluc3BlY3Rvci1jc3Mgc3Bhbi5j
bS1jb21tZW50IHtjb2xvcjogcmdiKDAsIDExNiwgMCk7fQorLmNtLXMtd2ViLWluc3BlY3Rvci1j
c3Mgc3Bhbi5jbS1zdHJpbmcge2NvbG9yOiByZ2IoNywgMTQ0LCAxNTQpO30KKy5jbS1zLXdlYi1p
bnNwZWN0b3ItY3NzIHNwYW4uY20tc3RyaW5nLTIge2NvbG9yOiByZ2IoNywgMTQ0LCAxNTQpO30K
Ky5jbS1zLXdlYi1pbnNwZWN0b3ItY3NzIHNwYW4uY20tbGluayB7Y29sb3I6IHJnYig3LCAxNDQs
IDE1NCk7fQorLmNtLXMtd2ViLWluc3BlY3Rvci1jc3Mgc3Bhbi5jbS12YXJpYWJsZSB7Y29sb3I6
IHJnYigyMDAsIDAsIDApO30KKworLmNtLXMtd2ViLWluc3BlY3Rvci1odG1sIHNwYW4uY20tbWV0
YSB7Y29sb3I6IHJnYigxOTIsIDE5MiwgMTkyKTt9CisuY20tcy13ZWItaW5zcGVjdG9yLWh0bWwg
c3Bhbi5jbS1jb21tZW50IHtjb2xvcjogcmdiKDM1LCAxMTAsIDM3KTt9CisuY20tcy13ZWItaW5z
cGVjdG9yLWh0bWwgc3Bhbi5jbS1zdHJpbmcge2NvbG9yOiByZ2IoMjYsIDI2LCAxNjYpO30KKy5j
bS1zLXdlYi1pbnNwZWN0b3ItaHRtbCBzcGFuLmNtLXRhZyB7Y29sb3I6IHJnYigxMzYsIDE4LCAx
MjgpO30KKy5jbS1zLXdlYi1pbnNwZWN0b3ItaHRtbCBzcGFuLmNtLWF0dHJpYnV0ZSB7Y29sb3I6
IHJnYigxNTMsIDY5LCAwKTt9CisuY20tcy13ZWItaW5zcGVjdG9yLWh0bWwgc3Bhbi5jbS1saW5r
IHtjb2xvcjogIzAwZTt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL2V4dGVybnMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2V4
dGVybnMuanMKaW5kZXggM2YxNzk3NTFkMzg4OGQ5MmEwOGM3MjQ2NDdlYThhYzA1MWVlZWQwNC4u
NGIyZjgwNzU0NzI5YzBjNDM2MTI1OTk5ZjgzYWY0MjdjOGE4Njc0MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qcwpAQCAtMjM2LDMgKzIzNiw2IEBA
IGRpZmZsaWIuc3RyaW5nQXNMaW5lcyA9IGZ1bmN0aW9uKHRleHQpIHsgcmV0dXJuIFtdOyB9CiAv
KiogQGNvbnN0cnVjdG9yICovCiBkaWZmbGliLlNlcXVlbmNlTWF0Y2hlciA9IGZ1bmN0aW9uKGJh
c2VUZXh0LCBuZXdUZXh0KSB7IH0KIGRpZmZsaWIuU2VxdWVuY2VNYXRjaGVyLnByb3RvdHlwZS5n
ZXRfb3Bjb2RlcyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gW107IH0KKworLyoqIEBjb25zdHJ1Y3Rv
ciAqLworV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0RWRpdG9yID0gZnVuY3Rpb24odXJsLCBk
ZWxlZ2F0ZSkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5odG1sIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuaHRtbAppbmRleCAwNWY3YTFkODY5MjlkZDdhYTY5NzVkZTU4MjBlMWUyOGE3NDM1
MzNiLi43MGVhNDE1MjRhODJiNDI4Mjg2NGFlYTg0OWUyODVlYTEwNjc5YjhiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKQEAgLTEy
MCw2ICsxMjAsNyBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9Ik5ldHdvcmtQYW5lbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iVGV4dEVkaXRvci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRGVmYXVsdFRleHRFZGl0b3IuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkNvZGVNaXJyb3JUZXh0
RWRpdG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJTb3VyY2VGcmFtZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIHNyYz0iVUlTb3VyY2VDb2RlRnJhbWUuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlJlc291cmNlVmlldy5qcyI+PC9zY3JpcHQ+
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>